Procesorius dažnai vadinamas kompiuterio smegenimis, ir kaip ir žmogaus smegenys, jis susideda iš kelių dalių, kurios kartu apdoroja informaciją. Yra dalys, kurios gauna informaciją, dalys, kuriose kaupiama informacija, dalys, kurios apdoroja informaciją, dalys, kurios padeda pateikti informaciją ir kt. Šiandienos aprašyme aptarsime pagrindinius procesorius sudarančius pagrindus ir tai, kaip jie visi kartu veikia jūsų kompiuterį.

Turėtumėte žinoti, kad šis straipsnis yra mūsų Anatomijos serija Taip pat yra speciali serija, išardanti visas kompiuterio komponentų technologijas CPU dizainas Tai gilinasi į procesoriaus projektavimo procesą ir į tai, kaip viskas veikia viduje. Labai rekomenduojamas technikos skaitymas. Šiame anatomijos straipsnyje bus apžvelgti kai kurie procesorių serijos pagrindai aukštesnio lygio ir su papildomu turiniu.

Palyginti su ankstesniais mūsų anatomijos serijos straipsniais, tai neišvengiamai bus abstrakčiau. Pažvelgę ​​į kažką panašaus į maitinimo šaltinį, galite aiškiai pamatyti kondensatorius, transformatorius ir kitus komponentus. Su šiuolaikiniu procesoriumi tai neįmanoma, nes viskas yra taip maža, o „Intel“ ir „AMD“ neatskleidžia savo dizaino visuomenei. Dauguma procesoriaus dizainų yra patentuoti, todėl šiame straipsnyje aptariamos temos atspindi bendras visų procesorių charakteristikas.

TECH NAUJIENOS Kompiuterinės įrangos serijos anatomija

Stalinį kompiuterį galite turėti darbe, mokykloje ar namuose. Galite naudoti vieną apskaičiuoti mokesčių deklaracijas arba žaisti naujausius žaidimus; netgi galite pradėti kurti ir redaguoti kompiuterius. Bet kaip gerai žinote komponentus, kurie sudaro kompiuterį?




Taigi pradėkime nardyti. Kiekvienai skaitmeninei sistemai reikia kažkokio centrinio procesoriaus. Iš esmės programuotojas parašo kodą, neatsižvelgdamas į savo užduotį, o tada procesorius įvykdo tą kodą, kad gautų norimą rezultatą. Centrinis procesorius taip pat jungiasi prie kitų sistemos dalių, tokių kaip atmintis ir įvesties / išvesties išvestis, kad padėtų ją pateikti svarbiais duomenimis, tačiau šiandien jis šių sistemų neapima.




Procesoriaus planas: vienas ISA

Analizuodami bet kurį procesorių, pirmiausia susidursite Instrukcijų rinkinio architektūra (JĖZUS). Tai metaforinis metodas, kaip veikia procesorius ir kaip visos vidinės sistemos sąveikauja tarpusavyje. Kaip ir toje pačioje veislėje yra daug šunų veislių, yra daugybė skirtingų ISA tipų, ant kurių galima sukurti procesorių. Du dažniausiai pasitaikantys tipai x86 (galima staliniuose ir nešiojamuosiuose kompiuteriuose) ir KOL (galima įmontuotuose ir mobiliuosiuose įrenginiuose).

Kur kai kurie kiti Jis turi daugiau nišinių programų, tokių kaip MIPS, RISC-V ir PowerPC. ISA nustatys, kokias instrukcijas gali apdoroti procesorius, kaip jis sąveikauja su atmintimi ir talpyklomis, kaip darbas padalijamas į daugelį apdorojimo etapų ir dar daugiau.







Norėdami padengti pagrindines procesoriaus dalis, eisime keliu, kurį eis vykdant komandą. Įvairių tipų instrukcijos gali eiti skirtingais keliais ir naudoti skirtingas procesoriaus dalis, tačiau čia mes apibendrinsime, kad apimtų didžiausias dalis. Pradėsime nuo paprasčiausio vieno branduolio procesoriaus dizaino ir palaipsniui papildysime sudėtingumą, kai pasieksime modernesnį dizainą.

Valdymo blokas ir magistralė

Procesoriaus dalis galima suskirstyti į dvi: valdymo bloką ir magistralę. Pagalvokite apie traukinio vagoną. Variklis yra tai, kas judina traukinį, tačiau konduktorius traukia svirtis užkulisiuose ir valdo skirtingus variklio aspektus. Tas pats ir su procesoriumi.




Duomenų kelias yra tarsi variklis, ir, kaip rodo pavadinimas, kelias, kuriuo duomenys teka, kai jie yra apdorojami. Autobusas priima įvestis, apdoroja jas ir baigęs siunčia ją į reikiamą vietą. Valdymo blokas nurodo autobusui, kaip reikia dirbti, kaip traukinio konduktorius. Priklausomai nuo instrukcijų, magistralė nukreipia signalus į skirtingus komponentus, įjungia ir išjungia skirtingas magistralės dalis ir stebi procesoriaus būseną.




Instrukcijų ciklas - parsisiuntimas

Pirmas dalykas, kurį turi padaryti mūsų procesorius, yra išsiaiškinti, kokių instrukcijų reikia laikytis toliau, ir perkelti jas iš atminties į procesorių. Instrukcijas sugeneruoja kompiliatorius ir yra specifinės CPU ISA. ISA, pakrovimas, saugojimas, surinkimas, gavyba ir kt. Tačiau kiekvienam ISA yra daug specifinių instrukcijų tipų. Valdymo blokas žinos, kurie signalai turėtų būti nukreipti į kiekvieno tipo instrukcijas.

Pavyzdžiui, paleidus „.exe“ sistemoje „Windows“, tos programos kodas perkeliamas į atmintį ir centriniam procesoriui nurodoma, iš kurio adreso buvo paleista pirmoji komanda. Centrinis procesorius visada tvarko vidinį registrą, kuris saugo kitos vykdomos komandos atminties vietą. Tai vadinama Program Counter (PC).

Kai žino, nuo ko pradėti, pirmas instrukcijų ciklo žingsnis yra gauti tą instrukciją. Tai perkelia komandą iš atminties į procesoriaus instrukcijų registrą ir atnešti scena. Realiai, instrukcija jau bus procesoriaus talpykloje, tačiau mes šiek tiek aptarsime šią informaciją.

Komandų ciklas - dekodavimas

Jei procesorius turi nurodymą, jis turi tiksliai sužinoti, kokia tai instrukcija. Tai Dekodavimas scena. Kiekviena komanda turi tam tikrą bitų rinkinį, vadinamą „Opcode“, kuris CPU nurodo, kaip jį interpretuoti. Tai panašu į tai, kaip skirtingi failų plėtiniai naudojami nurodant kompiuteriui, kaip interpretuoti failą. Pvz., Tiek .jpg, tiek .png failai yra vaizdo failai, tačiau jie skirtingai tvarko duomenis, todėl kompiuteris turi žinoti tipą, kad juos teisingai interpretuotų.

Priklausomai nuo ISA sudėtingumo, instrukcijų dekodavimo dalis gali tapti sudėtinga. Nors ISA, pvz., RISC-V, turi tik kelias dešimtis instrukcijų, x86 gali turėti tūkstančius reikšmių. Tipiškame „Intel x86“ procesoriuje dekodavimas yra vienas sunkiausių ir užima daug vietos. Labiausiai paplitusios instrukcijos, kurias iššifruos centrinis procesorius, yra atminties, aritmetikos arba atšakos nurodymai.

3 pagrindiniai mokymo tipai

Atminties instrukcija gali būti maždaug tokia: „skaitykite 1234 reikšmę iš atminties adreso į vertę A“ arba „įrašykite vertę B į 5678 atminties adresą“. Aritmetinė komanda gali būti maždaug tokia: „Pridėkite A reikšmę prie B vertės ir išsaugokite rezultatą prie C vertės“. Filialo instrukcija gali būti maždaug tokia: „Vykdykite šį kodą, jei C vertė yra teigiama, arba vykdykite šį kodą, jei C vertė yra neigiama“. Tipiška programa gali juos sujungti grandine, kad atskleistų kažką panašaus į „pridėkite 1234 atminties adreso vertę prie 5678 atminties adreso vertės ir išsaugokite 4321, jei rezultatas teigiamas, arba 8765, jei rezultatas yra neigiamas“. .

Prieš pradėdami vykdyti iššifruotą instrukciją, turime trumpam sustoti, kad galėtume kalbėti apie įrašus.

Centrinis procesorius turi labai mažą, bet labai greitą atmintį, vadinamą registru. Kiekviename iš šių 64 bitų procesoriuje būtų 64 bitai, o branduoliui gali būti tik kelios dešimtys. Jie naudojami naudojamoms vertėms saugoti ir gali būti laikomi L0 talpykla. Aukščiau pateiktuose instrukcijų pavyzdžiuose A, B ir C reikšmės yra saugomos registruose.

ALU

Grįžkime į vykdymo etapą. Tai bus skirtinga 3 aukščiau paminėtoms instrukcijoms, todėl jas apsvarstysime atskirai.

Pradedant nuo aritmetinių nurodymų, nes juos lengviau suprasti. Tokios instrukcijos pateikiamos apdoroti aritmetinio registravimo vienete (ALU). ALU yra grandinė, kuri paprastai gauna du įėjimus su vienu valdymo signalu ir duoda vieną rezultatą.

Apsvarstykite pagrindinę skaičiuoklę, kurią naudojate vidurinėje mokykloje. Norėdami įvykdyti operaciją, įveskite du įrašo numerius ir tai, kokio tipo operaciją norite atlikti. Skaičiuoklė apskaičiuoja ir nupiešia rezultatą. Mūsų centrinio procesoriaus ALU operacijos tipas nustatomas pagal instrukcijos opkodą, o valdiklis siunčia jį į ALU. Be pagrindinės aritmetikos, ALU taip pat gali atlikti bitų operacijas, tokias kaip AND, OR, NOT ir XOR. ALU taip pat pateiks valdymo bloko būsenos informaciją apie ką tik atliktą skaičiavimą. Tai gali apimti, pavyzdžiui, ar rezultatas yra teigiamas, neigiamas, nulis ar perpildymas.

ALU dažniausiai siejamas su aritmetinėmis operacijomis, tačiau taip pat gali būti naudojamas atminties ar šakos nurodymams. Pavyzdžiui, procesoriui gali tekti apskaičiuoti atminties adresą, pateiktą dėl ankstesnės aritmetinės operacijos. Be to, gali tekti apskaičiuoti poslinkį, kurį reikia pridėti prie programos skaitiklio, kurio reikalauja filialo instrukcija. Kažkas panašaus į „Jei ankstesnis rezultatas yra neigiamas, praleiskite 20 instrukcijų“.

Atminties instrukcijos ir hierarchija

Norėdami gauti atminties instrukcijas, Atminties hierarchija. Tai rodo santykį tarp talpyklų, RAM ir pagrindinės atminties. Kai procesorius gauna atminties nurodymą duomenų rinkiniui, kuris dar nėra lokaliai surastas jo registruose, jis eina žemyn atminties hierarchija, kol jį randa. Daugumoje šiuolaikinių procesorių yra trys talpyklos lygiai: L1, L2 ir L3. Pirmiausia CPU patikrins L1 talpyklą. Tai mažiausias ir greičiausias iš trijų talpyklos lygių. L1 talpykla paprastai yra padalinta į vieną dalį duomenims ir į vieną dalį instrukcijoms. Atminkite, kad instrukcijas reikia atimti iš atminties, kaip ir duomenis.

Tipiška L1 talpykla gali būti keli šimtai KB. Jei procesorius L1 talpykloje neranda to, ko ieško, jis patikrins L2 talpyklą. Tai gali būti keli MB dydžio. Kitas žingsnis yra L3 talpykla, kuri gali būti keliasdešimt MB. Jei procesorius neranda reikiamų duomenų L3 talpykloje, jis patenka į RAM ir galiausiai į pagrindinę saugyklą. Kiekvienu žingsniu judant žemyn, naudingasis plotas padidėja apytiksliai didesne tvarka, tačiau taip pat ir vėlavimas.

Kai centrinis procesorius suras duomenis, jis iškels hierarchiją, kad prireikus ateityje būtų galima greitai pasiekti CPU. Čia yra daugybė žingsnių, tačiau tai suteikia procesoriui greitą prieigą prie reikalingų duomenų. Pavyzdžiui, procesorius gali nuskaityti iš savo vidinių registrų tik per vieną ar du ciklus, L1 per kelis ciklus, L2 per dešimt ar daugiau ciklų ir kelias dešimtis L3. Jei reikia pereiti į atmintį ar pagrindinę atmintį, tai gali užtrukti dešimtis tūkstančių ar net milijonų ciklų. Priklausomai nuo sistemos, kiekvienas branduolys turės savo dedikuotą L1 talpyklą, bendrins L2 su kitu branduoliu ir dalinsis L3 keturioms ar daugiau pagrindinių grupių. Apie daugialypius procesorius plačiau pakalbėsime vėliau šiame straipsnyje.

Filialo ir šokinėjimo instrukcijos

Paskutinis iš trijų pagrindinių nurodymų tipų yra šakinis nurodymas. Šiuolaikinės programos apeina visą laiką, o centrinis procesorius retai vykdo daugiau nei dešimtį gretimų instrukcijų be šakos. Šakos nurodymai gaunami iš programavimo elementų, tokių kaip if-teiginiai, for-ciklai ir grąžinimo sakiniai. Visi jie naudojami programos vykdymui nutraukti ir pereiti į kitą kodo sekciją. Taip pat yra šuolio instrukcijos, kurios yra šakos instrukcijos, kurios visada gaunamos.

Sąlyginiai filialai yra ypač sunkūs procesoriui, nes jie gali vienu metu vykdyti kelias instrukcijas ir gali nepavykti nustatyti filialo rezultato, kol nepradedami kitose instrukcijose.

Norėdami visiškai suprasti, kodėl tai yra problema, turime dar kartą nukreipti ir kalbėti apie vamzdynus. Kiekvienas instrukcijų ciklo žingsnis gali užtrukti kelis ciklus. Tai reiškia, kad kol gaunama instrukcija, kitaip ALU neveiks. Norėdami padidinti procesoriaus efektyvumą, kiekvieną etapą padalijame į procesą, vadinamą vamzdynu.

Klasikinis būdas tai suprasti yra pagal skalbinių analogiją. Turite atlikti dvi apkrovas, skalbti ir džiovinti, o tai trunka valandą. Įdėję pirmąją apkrovą į skalbyklę, o paskui į džiovyklę, galite pradėti antrąją apkrovą. Tai užtruks keturias valandas. Tačiau jei pertraukėte darbą ir pradėjote antrą plovimą, kol džiūvo pirmasis krovinys, abi apkrovas galite atlikti per tris valandas. Valandos sumažinimas keičiamas pagal jūsų turimų krovinių skaičių ir poveržlių ir džiovyklų skaičių. Vienai apkrovai atlikti reikia dviejų valandų, tačiau sutapimas padidina bendrą efektyvumą nuo 0,5 apkrovos per valandą iki 0,75 apkrovos per valandą.

Procesoriai naudoja tą patį metodą, kad padidintų instrukcijų efektyvumą. Šiuolaikiniame ARM arba x86 procesoriuje bet kuriame taške gali būti daugiau nei 20 vamzdynų etapų, o tai reiškia, kad branduolys vienu metu apdoroja daugiau nei 20 skirtingų instrukcijų. Kiekvienas dizainas yra unikalus, tačiau gali būti 4 kilpos, kad būtų galima paimti pavyzdinę sekciją, 6 kilpos dekodavimui, 3 kilpos vykdymui ir 7 kilpos, kad rezultatai būtų atnaujinti į atmintį.

Grįžtant prie filialų, tikimės, kad galėsite pradėti matyti problemą. Jei mes nežinome, kad komanda yra filialas iki 10 kilpos, tada mes pradedame įgyvendinti 9 naujas instrukcijas, kurios gali tapti negaliojančiomis, jei gaunamas filialas. Norėdami įveikti šią problemą, procesoriai turi labai sudėtingas struktūras, vadinamus šakos vertintojais. Jie naudoja panašias mašininio mokymosi sąvokas, norėdami nuspėti, ar reikia šakos, ar ne. Filialų nuspėjamųjų sudėtingumas gerokai nepatenka į šio straipsnio taikymo sritį, tačiau pagrindiniu lygiu jie stebi ankstesnių filialų būseną, norėdami sužinoti, ar stoti į būsimą filialą. Šiuolaikiniai šakų vertintojai gali būti 95% ar didesni.

Kai filialo rezultatas bus tikrai žinomas (užbaigtas tas dujotiekio etapas), programos skaitiklis bus atnaujintas, o procesorius ir toliau vykdys kitą instrukciją. Jei filialas atspėjamas neteisingai, procesorius atmeta visas instrukcijas, kurias jis per klaidą pradėjo vykdyti per klaidą, ir paleidžia iš reikiamos vietos.

Neįprastas vykdymas

Dabar, kai žinome, kaip įgyvendinti tris dažniausiai pasitaikančias instrukcijas, pažvelkime į kai kurias pažangesnes procesoriaus funkcijas. Beveik visi šiuolaikiniai procesoriai neatlieka instrukcijų tokia tvarka, kokia buvo gauta. Pavadinta paradigma nevykdomas pavedimas Naudojamas siekiant sumažinti prastovą laukiant, kol baigsis kitos instrukcijos.

Jei procesorius žino, kad būsimam nurodymui reikalingi duomenys, kurių nebus galima gauti laiku, jis gali pakeisti nurodymų tvarką ir laukdamas pristatyti komandą, nepriklausomą nuo kitų programos dalių. Šios instrukcijos pertvarkymas yra nepaprastai galingas įrankis, tačiau tai toli gražu ne vienintelis triukas, kurį naudoja procesoriai.

Kita našumo gerinimo funkcija vadinama išankstiniu nuskaitymu. Jei suprantate, kiek laiko užtrunka atsitiktinių nurodymų vykdymas nuo pradžios iki pabaigos, pastebėsite, kad atminties prieiga užima didžiąją laiko dalį. Prefetcheris yra procesoriaus vienetas, bandantis ieškoti būsimų instrukcijų ir kokių duomenų jam reikės. Jei jis mato gaunamą informaciją, kuriai reikalingi duomenys, kad procesorius nėra talpykloje, jis pasiekia RAM ir talpina tuos duomenis. Todėl vardą atsineškite iš anksto.

Akceleratoriai ir ateitis

Kitas svarbus bruožas, kuris pradeda būti įtrauktas į procesorius, yra konkrečios užduoties greitintuvai. Tai yra grandinės, atliekančios visą darbą kuo greičiau atliekant vieną mažą užduotį. Tai gali apimti šifravimą, medijos kodavimą arba mašininį mokymąsi.

Centrinis procesorius šiuos dalykus gali atlikti pats, tačiau daug efektyviau turėti jiems skirtą įrenginį. Puikus to pavyzdys yra vidinė grafika, palyginti su specialiu GPU. Žinoma, procesorius gali atlikti reikiamus grafikos apdorojimo skaičiavimus, tačiau turėdami tam skirtą įrenginį, galite gauti didesnius našumo užsakymus. Kylant greitintuvams, tikrasis procesoriaus branduolys gali užimti tik nedidelę lusto dalį.

Žemiau pateiktame paveikslėlyje parodytas „Intel“ procesorius prieš kelerius metus. Didžiąją dalį vietos užima branduoliai ir talpykla. Antrasis paveikslėlis pateiktas naujesniam AMD lustui. Didžiąją dalį vietos ten naudoja kiti komponentai, išskyrus branduolius.

Daugiagyslis

Paskutinis svarbus dalykas, kurį reikia aptarti, yra tai, kaip mes galime sujungti atskirų centrinių procesorių grupę, kad sudarytumėte kelių branduolių procesorių. Tai nėra taip paprasta, kaip įdėti kelias anksčiau paminėtas vieno šerdies dizaino kopijas. Kaip nėra paprasto būdo paversti vienos gijos programą kelių gijų programa, ta pati koncepcija taikoma ir aparatinei įrangai. Problemos kyla dėl priklausomybės tarp branduolių.

Pavyzdžiui, norint sukurti 4 branduolių dizainą, procesorius turi sugebėti 4 kartus greičiau išduoti instrukcijas. Jai taip pat reikia keturių atskirų sąsajų, skirtų atminčiai. Su keliomis organizacijomis, galinčiomis dirbti su tais pačiais duomenų elementais, harmonija ve nuoseklumas turi būti išspręsta. Jei abu branduoliai būtų proceso instrukcijos, naudojant tuos pačius duomenis, iš kur jie žinotų, kas turi teisingą vertę? Ką daryti, jei vienas branduolys pakeitė duomenis, bet laiku neatvyko į kitą branduolį vykdyti? Šiems konfliktams pašalinti reikia naudoti sudėtingus algoritmus ir valdiklius, nes jie turi atskiras talpyklas, kuriose galima laikyti prieštaringus duomenis.

Didėjant branduolių skaičiui procesoriuje, teisingas šakos numatymas yra nepaprastai svarbus. Kuo daugiau branduolių vykdys nurodymus vienu metu, tuo labiau tikėtina, kad vienas iš jų apdoros šakos nurodymą. Tai reiškia, kad instrukcijų srautas gali bet kada pasikeisti.

Paprastai atskiri branduoliai tvarkys instrukcijas iš skirtingų gijų. Tai padeda sumažinti priklausomybę tarp branduolių. Taigi, jei patikrinsite „Task Manager“, pamatysite, kad vienas branduolys dirba per daug, o kiti - per daug. Daugelis programų nėra skirtos keliems tikslams. Taip pat gali būti atvejų, kai branduoliui yra efektyviau atlikti darbą, o ne mokėti bendras baudas už bandymą pasidalinti darbą.

Fizinis dizainas

Didžioji šio straipsnio dalis buvo skirta centrinio procesoriaus architektūriniam dizainui, kuriame yra daugiausia sudėtingumo. Tačiau visa tai reikia sukurti realiame pasaulyje, ir tai prideda dar vieną sudėtingumo lygį.

Laikrodžio signalas naudojamas sinchronizuoti visus komponentus visame procesoriuje. Šiuolaikiniai procesoriai paprastai veikia nuo 3,0 GHz iki 5,0 GHz ir pastarąjį dešimtmetį atrodo nepakitę. Kiekviename iš šių ciklų mikroschemos viduje įsijungia ir išsijungia milijardai tranzistorių.

Laikrodžiai yra svarbūs, siekiant užtikrinti, kad visos dujotiekio etape visos vertės būtų rodomos tinkamu laiku. Laikrodis nustato, kiek komandų procesorius gali apdoroti per sekundę. Padidinus jo dažnį per įsijungus, lustas bus greitesnis, tačiau taip pat padidės energijos suvartojimas ir šilumos išmetimas.

Šiluma yra blogiausias procesoriaus priešas. Kai skaitmeninė elektronika kaista, mikroskopiniai tranzistoriai gali pradėti gesti. Jei ši šiluma nebus pašalinta, ji gali sugadinti lustą. Štai kodėl visi procesoriai yra su šilumos skleidėjais. Tikrasis silicio formos procesorius gali užimti tik 20% fizinio prietaiso paviršiaus ploto. Padidinus pėdsaką, šiluma tolygiai pasklinda po aušintuvą. Tai taip pat leidžia daugiau smeigtukų sąsajai su išoriniais komponentais.

Už šiuolaikinių procesorių gali būti tūkstantis ar daugiau įvesties ir išvesties kaiščių. Mobiliame luste gali būti tik keli šimtai smeigtukų, tačiau dauguma kompiuterio dalių lusto viduje. Nepaisant dizaino, maždaug pusė skiriama energijos paskirstymui, o likusi dalis naudojama duomenų perdavimui. Tai apima ryšį su RAM, lustų rinkiniu, saugykla, PCIe įrenginiais ir dar daugiau. Turėdami didelio našumo procesorius, kurie, esant pilnai apkrovai, ištraukia šimtą ar daugiau amperų, ​​jiems reikia šimtų kaiščių, kad tolygiai pasiskirstytų srovės stipris. Smeigtukai dažniausiai yra paauksuoti, kad padidintų elektros laidumą. Skirtingi gamintojai daugelyje produktų asortimentų naudoja skirtingus kaiščių išdėstymo būdus.

Derinant visa tai su pavyzdžiu

Greitai apžvelgsime „Intel Core 2“ procesoriaus dizainą, kad viską užbaigtume. Kadangi tai buvo dar 2006 m., Kai kurie kūriniai gali būti seni, tačiau išsamesnės informacijos apie naujesnius dizainus nėra.

Pradedant nuo viršaus, turime instrukcijų talpyklą ir ITLB. Vertimas „Lookaside Buffer“ (TLB) naudojamas tam, kad procesorius žinotų, kur eiti atmintyje, kad rastų reikiamą instrukciją. Šios instrukcijos saugomos L1 instrukcijų talpykloje ir tada siunčiamos į išankstinį dekoderį. „X86“ architektūra yra itin sudėtinga ir tanki, todėl iššifravimui reikia atlikti daugybę žingsnių. Tuo tarpu šakos įvertintojas ir išankstinis nustatytojas imasi galimų problemų, kurias sukelia gaunami nurodymai.

Iš ten instrukcijos siunčiamos į nurodymų eilę. Prisiminkite, kaip neįprastas dizainas leidžia procesoriui vykdyti instrukcijas ir pasirinkti tinkamiausią vykdyti. Šioje eilėje yra dabartinės instrukcijos, į kurias atsižvelgia procesorius. Kai tik procesorius sužino, kurią komandą geriausia vykdyti, jis taip pat išsprendžiamas atliekant mikrotransakcijas. Nors instrukcijoje gali būti sudėtinga procesoriaus užduotis, mikrooperatyvai yra išsamios užduotys, kurias procesorius gali lengviau interpretuoti.

Šios instrukcijos įveda registracijos slapyvardžio lentelę, ROB ir užsakymo stotį. Visas šių trijų komponentų funkcionalumas yra šiek tiek sudėtingas (pagalvokite apie absolventų universiteto kursus), tačiau jie naudojami neeiliniame procese, siekiant padėti valdyti priklausomybę tarp nurodymų.

Viename „branduolyje“ iš tikrųjų būtų daug ALU ir atminties prievadų. Kol ALU ar atminties prievadas nebus paruoštas naudoti, gaunamos operacijos įvedamos į rezervavimo stotį. Kai reikalingas komponentas taps prieinamas, instrukcija bus apdorojama L1 duomenų talpyklos pagalba. Išvesties rezultatai išsaugomi ir procesorius yra paruoštas veikti kitoje instrukcijoje. Tiek daug!

Nors šis straipsnis nėra galutinis vadovas, kaip tiksliai veikia kiekvienas procesorius, jis turėtų gerai suprasti jo vidinį veikimą ir sudėtingumą. Akivaizdu, kad niekas, išskyrus AMD ir „Intel“, nežino, kaip veikia jų procesoriai. Kiekvienas šio straipsnio skyrius atspindi visą tyrimų ir plėtros sritį, todėl čia pateikta informacija tik piešia paviršių.

Skaityk toliau

Jei norite sužinoti daugiau apie tai, kaip buvo sukurti įvairūs šiame straipsnyje aprašyti komponentai, patikrinkite. 2 dalis mūsų procesoriaus dizaino serija. Jei jus labiau domina sužinoti, kaip procesorius yra fiziškai sumažintas iki tranzistoriaus ir silicio lygio, 3 dalis.

Apsipirkimo spartieji klavišai: