HTG objašnjava kako procesor zapravo radi?
Većina stvari u računalu je relativno jednostavna za razumijevanje: RAM, memorija, periferni uređaji i softver rade zajedno kako bi napravili funkciju računala. Ali srce vašeg sustava, CPU, izgleda kao čarolija čak i mnogim tehnološkim ljudima. Evo, potrudit ćemo se da ga srušimo.
Većina istraživanja za ovaj članak dolazi od "Ali kako to zna?" J. Clarka Scotta. To je fantastično čitanje, ide u mnogo više dubine nego ovaj članak će, i dobro vrijedi par dolara na Amazonu.
Jedna napomena prije nego što počnemo: moderni procesori su složeniji od reda veličine od onoga što ovdje opisujemo. Gotovo je nemoguće da jedna osoba razumije svaku nijansu čipa s više od milijardu tranzistora. Međutim, osnovna načela o tome kako se svi uklapaju zajedno ostaju isti, a razumijevanje osnova će vam dati bolje razumijevanje modernih sustava.
Pokretanje male
Računala rade u binarnom obliku. Razumiju samo dvije države: uključivanje i isključivanje. Da biste izvršili izračune u binarnom obliku, oni koriste ono što se zove tranzistor. Tranzistor dopušta samo struju izvora kroz nju u odvod ako postoji struja preko vrata. U osnovi, to čini binarni prekidač koji isključuje žicu ovisno o drugom ulaznom signalu.
Moderna računala koriste milijarde tranzistora za izvođenje proračuna, ali na najnižim razinama trebate samo šačicu da formirate najosnovnije komponente, poznate kao vrata.
Logička vrata
Stog nekoliko tranzistora ispravno, i imate ono što je poznato kao logička vrata. Logička vrata uzimaju dva binarna ulaza, izvode operaciju na njima i vraćaju izlaz. Na primjer, vratilo OR vraća true ako je bilo koji od ulaza istinit. I vrata provjeravaju jesu li oba ulaza točna, XOR provjerava je li samo jedan od ulaza točan, a N-varijante (NOR, NAND i XNOR) su invertirane verzije njihovih osnovnih vrata.
Raditi matematiku s Gatesom
Sa samo dva vrata možete napraviti osnovni binarni dodatak. Ovaj dijagram pokazuje pola zbrajalo, stvoreno pomoću Logicly, besplatnog online igrališta za logička vrata. Ovdje će se XOR vrata uključiti ako je samo jedan od ulaza uključen, ali ne oboje. Vrata AND će se uključiti ako su oba ulaza uključena, ali se isključite ako nema unosa. Dakle, ako su oba uključena, XOR ostaje isključen, a vrata AND se uključuju, dolazeći do točnog odgovora dva:
To nam daje jednostavnu konfiguraciju s tri različita izlaza: nula, jedan i dva. Ali jedan bit ne može pohraniti ništa više od 1, a ovaj stroj nije previše koristan jer rješava samo jedan od najjednostavnijih mogućih matematičkih problema. Ali ovo je samo pola ljuskica, a ako spojite dva od njih s drugim ulazom, dobivate puni sabirač:
Potpuni sabirnik ima tri ulaza - dva broja za dodavanje i "nošenje". Nositelj se koristi kada konačni broj prelazi ono što se može pohraniti u jednom bitu. Potpuni sablići bit će povezani u lanac, a prijenos će se prenijeti s jednog sabirača na sljedeći. Prijenos se dodaje rezultatu XOR ulaza u prvoj polovici zbroja, a tu je i dodatni OR ulaz za obradu oba slučaja kada je tako potrebno da se uključi.
Kada su oba ulaza uključena, prijenos se uključuje i šalje ga sljedećem punom sabirniku u lancu:
I to je jednako složeno kao i dodavanje. Pomicanje na više bitova u biti znači samo puno više sabirača u dužem lancu.
Većina drugih matematičkih operacija može se obaviti dodatkom; umnožavanje se samo ponavlja dodavanje, oduzimanje može biti učinjeno s nekim fancy bit inverzije, i podjela je samo ponovio oduzimanje. I dok sva moderna računala imaju hardverska rješenja za ubrzavanje složenijih operacija, tehnički možete sve to obaviti s punim sabiranjem.
Autobus i memorija
Trenutno naše računalo nije ništa drugo nego loš kalkulator. To je zato što se ne može ništa sjetiti i ne čini ništa sa svojim rezultatima. Iznad je prikazana memorijska ćelija koja može sve to. Ispod haube koristi se mnogo NAND vrata, au stvarnom životu može biti sasvim različito ovisno o tehnici skladištenja, ali je njegova funkcija ista. Možete mu dati neke ulaze, uključite 'write' bit, i on će pohraniti ulaze unutar ćelije. Ovo nije samo memorijska stanica, jer nam je potreban i način čitanja informacija iz nje. To se radi s omogućivačem, koji je zbirka AND gatesa za svaki bit u memoriji, sve vezano za drugi ulaz, "read" bit. Bitovi pisanja i čitanja često se nazivaju i "set" i "enable".
Cijeli ovaj paket upakiran je u ono što je poznato kao registar. Ti su registri spojeni na sabirnicu, koja je snop žica koje se vrte oko cijelog sustava, spojene na svaku komponentu. Čak i moderna računala imaju autobus, iako mogu imati više autobusa kako bi se poboljšala izvedba više zadataka.
Svaki registar još uvijek ima bit pisanja i čitanja, ali u ovom postavu ulaz i izlaz su ista stvar. Ovo je zapravo dobro. Na primjer. Ako ste htjeli kopirati sadržaj R1 u R2, uključili bi bit za čitanje za R1, koji bi gurnuo sadržaj R1 u sabirnicu. Dok je bit za čitanje uključen, uključili bi bit pisanja za R2, koji bi kopirao sadržaj sabirnice u R2.
Registri se također koriste za stvaranje RAM-a. RAM se često postavlja u mrežu, a žice se odvijaju u dva smjera:
Dekoderi uzimaju binarni ulaz i uključuju odgovarajuću numeriranu žicu. Na primjer, "11" je binarno 3, najviši 2-bitni broj, tako da dekoder uključi najvišu žicu. Na svakom raskrižju postoji registar. Svi su spojeni na središnju sabirnicu i na centralni ulaz za pisanje i čitanje. I ulaz za čitanje i pisanje će se uključiti samo ako su dvije žice koje prelaze preko registra također uključene, što vam omogućuje da odaberete registar iz kojeg ćete pisati i čitati. Opet, suvremeni RAM je daleko složeniji, ali ovo podešavanje i dalje radi.
Sat, Stepper i dekoder
Registri se koriste posvuda i osnovni su alat za pomicanje podataka i pohranjivanje informacija u CPU. Dakle, ono što im govori da pokrenu stvari?
Sat je prva komponenta u jezgri CPU-a i isključit će se i uključiti u zadanom intervalu, mjereno u herc ili ciklusima u sekundi. To je brzina koju vidite oglašavane uz CPU-ove; 5 GHz čip može izvesti 5 milijardi ciklusa u sekundi. Brzina sata često je vrlo dobra metrika za brzinu procesora.
Sat ima tri različita stanja: osnovni sat, omogućeni sat i podešeni sat. Bazni sat bit će uključen pola ciklusa i isključen za drugu polovicu. Omogućeni sat koristi se za uključivanje registara i mora biti uključen dulje kako bi se osiguralo da su podaci omogućeni. Postavljeni sat uvijek mora biti uključen u isto vrijeme kao i omogućeni sat, inače bi mogli biti napisani netočni podaci.
Sat je spojen na steper, koji će se brojati od jednog do max koraka i vratiti se na onaj kada je gotov. Sat je također povezan s vratima AND za svaki registar na koji CPU može pisati:
Ovi AND vrata su također spojena na izlaz druge komponente, dekoder instrukcija. Dekoder instrukcija uzima instrukciju kao što je "SET R2 TO R1" i dekodira je u nešto što CPU može razumjeti. Ima vlastiti interni registar, nazvan “Registar uputa”, gdje se pohranjuje trenutna operacija. Kako se to radi, svodi se na sustav na kojem se izvodi, ali kada se dešifrira, uključit će ispravan skup i omogućiti bitove za ispravne registre, koji će se isključiti u skladu sa satom.
Programske upute pohranjuju se u RAM (ili L1 cache na modernim sustavima, bliže CPU-u). Budući da se programski podaci pohranjuju u registre, kao i svaka druga varijabla, njime se može upravljati u letu kako bi se skakao oko programa. Tako programi dobivaju svoju strukturu s petljama i izjavama ako. Uputa za skok postavlja trenutnu lokaciju u memoriji koju dekoder instrukcija čita s drugog mjesta.
Kako sve to dolazi zajedno
Potpuno je pojednostavljeno kako funkcionira procesor. Glavni autobus pokriva cijeli sustav i spaja se na sve registre. Potpuni sabirači, zajedno s hrpom drugih operacija, pakirani su u aritmetičku logičku jedinicu ili ALU. Ta će ALU imati veze s busom, a imat će i vlastite registre za pohranu drugog broja na kojem radi.
Za izvršenje izračuna, programski podaci se učitavaju iz RAM-a sustava u upravljački dio. Kontrolni dio čita dva broja iz RAM-a, učitava prvi u ALU-ov registar naredbi, a zatim drugi učitava u sabirnicu. U međuvremenu, šalje ALU kod s uputama koji mu govori što da radi. ALU zatim izvodi sve izračune i pohranjuje rezultat u drugi registar, iz kojeg CPU može čitati, a zatim nastaviti postupak.
Zasluge za sliku: Rost9 / Shutterstock