HTG pojasnjuje, kako dejansko deluje CPU?
Večina stvari v računalniku je razmeroma preprosta za razumevanje: RAM, pomnilnik, zunanje naprave in programska oprema delujejo skupaj, da omogočijo računalniško funkcijo. Toda srce vašega sistema, CPU, se zdi čarobno celo za veliko ljudi iz tehnologije. Tukaj se bomo potrudili, da ga razgradimo.
Večina raziskav za ta članek prihaja iz "Ampak kako to vem?" J. Clarka Scotta. To je fantastično branje, gre v veliko večjo globino kot ta članek, in je vredno nekaj dolarjev na Amazon.
Ena opomba, preden začnemo: sodobne procesorje so veliko bolj zapletene od tistega, ki ga opisujemo tukaj. Skoraj nemogoče je, da ena oseba razume vsako odtenek čipa z več kot milijardo tranzistorjev. Vendar pa osnovna načela o tem, kako se vsi skupaj ujemajo, ostajajo enaka in razumevanje osnov vam bo dalo boljše razumevanje sodobnih sistemov..
Začetek majhnega
Računalniki delujejo v binarni obliki. Razumejo samo dve državi: vklop in izklop. Če želite izvesti izračune v binarni obliki, uporabljajo tiste, ki se imenujejo tranzistor. Tranzistor dovoljuje le tokovni tok, ki teče skozi njega v odtok, če je tok prek vrat. V bistvu to tvori binarno stikalo, ki izklopi žico glede na drugi vhodni signal.
Sodobni računalniki za izračune uporabljajo milijarde tranzistorjev, toda na najnižjih ravneh potrebujete le peščico, da tvorite najbolj osnovne komponente, znane kot vrata.
Logična vrata
Vstavite nekaj tranzistorjev pravilno in imate tisto, kar je znano kot logična vrata. Logična vrata vzamejo dva binarna vhoda, izvajajo operacijo na njih in vrnejo izhod. Vrata OR, na primer, vrne true, če je kateri od vhodov resničen. Vrata AND preverijo, ali sta oba vhoda resnična, XOR preveri, ali je resničen samo eden od vhodov, in N-različice (NOR, NAND in XNOR) so invertne različice njihovih osnovnih vrat.
Z matematiko z Gatesom
S samo dvema vratoma lahko opravite osnovni binarni dodatek. Zgornji diagram prikazuje polovico seštevalnika, ustvarjenega z uporabo Logicly, brezplačnega spletnega igrišča za logična vrata. Vrata XOR se vklopijo, če je vključen samo en vhod, vendar ne obojega. Vrata AND se vklopita, če sta oba vhoda vklopljena, vendar ostanejo izklopljena, če ni vhoda. Torej, če sta obe vključeni, se XOR izklopi, vrata AND pa se vklopijo in pridejo do pravilnega odgovora dveh:
To nam omogoča preprosto nastavitev s tremi različnimi izhodi: nič, ena in dve. Toda en bit ne more shraniti nič več kot 1, in ta stroj ni preveč koristen, saj rešuje le eno najpreprostejših možnih matematičnih problemov. Toda to je samo polovica seštevalnika in če povežete dva od njih z drugim vhodom, dobite popolnega seštevalnika:
Celoten seštevalnik ima tri vhode - dve številki, ki jih je treba dodati, in »nosilec«. Prenos se uporablja, ko končno število preseže tisto, ki se lahko shrani v enem bitu. Polni seštevalniki bodo povezani v verigo, prenos pa bo prešel iz enega seštevalnika v drugega. Prenos se doda rezultatu vrat XOR v prvi polovici seštevalnika in obstaja dodatno ALI vrata za obravnavanje obeh primerov, ko je tako, da bi bilo treba vklopiti.
Ko sta oba vhoda vklopljena, se prenos vklopi in pošlje v naslednji polni seštevalnik v verigi:
In to je tako zapleteno, kot dodatek. Premik na več bitov v bistvu pomeni samo popolnejše seštevalnike v daljši verigi.
Večina drugih matematičnih operacij se lahko izvede z dodatkom; množenje je samo ponavljajoče se dodajanje, odštevanje je možno z nekaj fancy bitno inverzijo, delitev pa je samo ponavljajoče se odštevanje. Medtem ko imajo vsi sodobni računalniki rešitve, ki temeljijo na strojni opremi, da pospešijo bolj zapletene operacije, lahko vse to tehnično naredite s popolnim seštevalnikom.
Bus in Memory
Zdaj, naš računalnik ni nič drugega kot slab kalkulator. To je zato, ker se ničesar ne spomni in ničesar ne stori s svojimi rezultati. Zgoraj je prikazana spominska celica, ki lahko vse to počne. Pod pokrovom uporablja veliko NAND vrat in v resničnem življenju je lahko precej drugačno, odvisno od tehnike shranjevanja, vendar je njegova funkcija enaka. Dali ste mu nekaj vnosov, vklopite bit 'write' in shranili bodo vnose znotraj celice. To ni samo pomnilniška celica, saj potrebujemo tudi način za branje informacij iz njega. To naredimo s pripomočkom, ki je zbirka AND gates za vsak bit v pomnilniku, ki je povezan z drugim vhodom, "read" bit. Bita za pisanje in branje se pogosto imenujejo tudi "set" in "enable".
Ta celoten paket je ovit v tisto, kar je znano kot register. Ti registri so povezani z vodilom, ki je snop žic, ki tečejo okoli celotnega sistema in so povezane z vsako komponento. Tudi sodobni računalniki imajo avtobus, čeprav imajo lahko več avtobusov za izboljšanje delovanja večopravilnosti.
Vsak register ima še zapis za pisanje in branje, vendar sta v tej nastavitvi vhod in izhod isti. To je dejansko dobro. Na primer. Če ste želeli kopirati vsebino R1 v R2, bi vklopili bralni bit za R1, ki bi potisnil vsebino R1 v vodilo. Medtem ko je bralni bit vklopljen, bi vklopili pisalni bit za R2, ki bi kopiral vsebino vodila v R2.
Registri se uporabljajo tudi za RAM. RAM je pogosto postavljen v mrežo z žicami v dveh smereh:
Dekoderji sprejmejo binarni vhod in vklopijo ustrezno oštevilčeno žico. Na primer, “11” je 3 v binarni, najvišja 2-bitna številka, tako da bi dekoder vklopil najvišjo žico. Na vsakem križišču je register. Vsi so povezani s centralnim vodilom in centralnim vhodom za pisanje in branje. Vhod za branje in pisanje se vklopita le, če sta vključeni tudi dve žici, ki prečkajo register, kar vam omogoča, da izberete register, iz katerega lahko pišete in berete. Tudi sodoben pomnilnik je veliko bolj zapleten, vendar ta nastavitev še vedno deluje.
Ura, Stepper in dekoder
Registri se uporabljajo povsod in so osnovno orodje za premikanje podatkov in shranjevanje informacij v CPU. Torej, kaj jim pove, da premaknejo stvari okoli?
Ura je prva komponenta v jedru CPU in se bo izklopila in vklopila v nastavljenem intervalu, merjenem v hertzih, ali ciklih na sekundo. To je hitrost, ki jo vidite ob oglaševanju CPU-jev; 5 GHz čip lahko izvaja 5 milijard ciklov na sekundo. Hitrost ure je pogosto zelo dobra metrika za to, kako hitro je CPU.
Ura ima tri različna stanja: osnovno uro, omogočeno uro in nastavljeno uro. Osnovna ura bo vklopljena za pol cikla in izklopljena za drugo polovico. Omogočena ura se uporablja za vklop registrov in mora biti vključena dlje, da se prepričate, da so podatki omogočeni. Nastavljena ura mora biti vedno vklopljena hkrati z omogočeno uro ali pa se napišejo napačni podatki.
Ura je povezana s steperjem, ki se šteje od enega do največjega koraka in se vrne nazaj na eno, ko je končano. Ura je prav tako povezana z vrati AND za vsak register, na katerega lahko CPU piše:
Ta vrata AND so povezana tudi z izhodom druge komponente, dekodirnikom ukazov. Dekoder ukazov vzame navodilo, kot je "SET R2 TO R1" in ga dekodira v nekaj, kar CPU lahko razume. Ima lasten notranji register, imenovan »Instruction Register«, v katerem je shranjena trenutna operacija. Kako natančno se to zgodi, pride do sistema, na katerem se izvaja, vendar ko se dešifrira, bo vklopil pravilno nastavitev in omogočil bitov za pravilne registre, ki bodo sprožili v skladu z uro..
Programska navodila so shranjena v RAM-u (ali L1 na sodobnih sistemih, bližje CPU-ju). Ker so programski podatki shranjeni v registrih, tako kot vsaka druga spremenljivka, se lahko z njo manipulira v skokih po programu. To je način, kako programi dobijo svojo strukturo, z zankami in if izjavami. Navodilo za skok nastavi trenutno lokacijo v pomnilniku, ki jo dekodirnik navodil bere iz drugega mesta na drugo mesto.
Kako je vse skupaj
Zdaj je naša popolna poenostavitev delovanja CPE popolna. Glavni avtobus razteza celoten sistem in se poveže z vsemi registri. Polni seštevalniki, skupaj s kupom drugih operacij, so pakirani v aritmetično logično enoto ali ALU. Ta ALU bo imel povezave z vodilom in bo imel tudi lastne registre za shranjevanje druge številke, na kateri deluje.
Za izvedbo izračuna se programski podatki naložijo iz sistemskega pomnilnika v nadzorni del. Odsek za nadzor prebere dve številki iz RAM-a, naloži prvo številko v register ukazov ALU in nato naloži drugega v vodilo. Medtem pa pošlje ALU kodo z navodili, ki ji pove, kaj naj stori. ALU nato izvede vse izračune in shrani rezultat v drug register, iz katerega lahko CPU bere in nato nadaljuje postopek..
Zasluge za slike: Rost9 / Shutterstock