HTG vysvetľuje, ako funguje procesor?
Väčšina vecí v počítači je pomerne jednoduchá na pochopenie: pamäť RAM, pamäť, periférne zariadenia a softvér spolupracujú na vytvorení počítačovej funkcie. Ale srdce vášho systému, CPU, sa javí ako kúzlo aj mnohým technickým ľuďom. Tu sa budeme snažiť, aby sme to prelomili.
Väčšina výskumu pre tento článok pochádza z "Ale ako to vie?" Od J. Clarka Scotta. Je to fantastické čítanie, ide do oveľa väčšej hĺbky, ako tento článok bude, a stojí za pár pár dolárov na Amazone.
Jedna poznámka predtým, než začneme: moderné CPU sú príkazy oveľa zložitejšie ako to, čo tu uvádzame. Je takmer nemožné, aby jedna osoba pochopila každú nuanciu čipu s viac ako miliardou tranzistorov. Základné princípy toho, ako to všetko spoločne zapadajú, zostávajú rovnaké a pochopenie základov vám poskytne lepšie pochopenie moderných systémov.
Počnúc malým
Počítače pracujú v binárnych zariadeniach. Chápu iba dva stavy: zapnuté a vypnuté. Ak chcete vykonať výpočty v binárnom, používajú to, čo sa nazýva tranzistor. Tranzistor umožňuje len tok prúdu pretekať do odtoku, ak je prúd cez bránu. V podstate ide o binárny spínač, ktorý v závislosti od druhého vstupného signálu vypína vodič.
Moderné počítače používajú miliardy tranzistorov na vykonanie výpočtov, ale na najnižšej úrovni potrebujete iba hrstku na vytvorenie najzákladnejších komponentov, známych ako brány.
Logické brány
Zapojte niekoľko tranzistorov správne a máte to, čo je známe ako logická brána. Logické brány odoberajú dva binárne vstupy, vykonávajú operáciu a vrátia výstup. Napríklad brána OR vráti true, ak je jeden z vstupov pravdivý. Strana AND skontroluje, či sú oba vstupy pravdivé, XOR skontroluje, či je pravdivý iba jeden zo vstupov a N varianty (NOR, NAND a XNOR) sú obrátené verzie ich základných brán.
Robiť matematiku s bránami
Pomocou iba dvoch brán môžete vykonať základné binárne pridanie. Tento diagram zobrazuje polovicu rozšírenia, vytvoreného pomocou Logicly, bezplatného online ihriska pre logické brány. XOR brána sa zapne, ak je zapnutý iba jeden zo vstupov, ale nie oboje. Ak sú oba vstupy zapnuté, zapne sa brána AND a zostane vypnutá, ak nie je žiadny vstup. Takže ak sú obidve zapnuté, XOR zostane a brána AND sa zapne a príde na správnu odpoveď dvoch:
Toto nám dáva jednoduché nastavenie s tromi odlišnými výstupmi: nula, jedna a dve. Jeden bit však nemôže uložiť niečo vyššie ako 1 a tento stroj nie je príliš užitočný, pretože rieši len jeden z najjednoduchších matematických problémov. Ale je to len polovica sčítača, a ak spojíte dva z nich s iným vstupom, dostanete úplnú sčítačku:
Úplný výčap má tri vstupy - dve čísla, ktoré sa majú pridať, a "prenášať". Nosenie sa používa, keď konečné číslo presahuje to, čo môže byť uložené v jednom bit. Úplné združovače budú prepojené v reťazci a prenášanie prechádza z jedného nadstavca na druhý. Nosenie sa pripočíta k výsledku brány XOR v prvej polovici sčítača a je tu ďalšia OR brána na spracovanie obidvoch prípadov, keď to tak bude musieť byť na.
Keď sú zapnuté obidva vstupy, prenos sa zapne a pošle ho na ďalší kompletný reťazec v reťazci:
A je to tak zložité ako prírastok. Pohyb na viac bitov v podstate len znamená viac plných adries v dlhšom reťazci.
Väčšina ostatných matematických operácií môže byť vykonaná s doplnením; násobenie je len opakované pridanie, odčítanie môže byť vykonané s nejakou fantaziou bit inverzie, a rozdelenie je len opakované odčítanie. A zatiaľ čo všetky moderné počítače majú hardvérové riešenia na urýchlenie komplikovanejších operácií, môžete technicky robiť to všetko s plným rozšírením.
Autobus a pamäť
Práve teraz náš počítač nie je nič iné ako zlá kalkulačka. Je to preto, že si nič nemôže spomenúť a nerobí nič s výstupmi. Vyššie uvedená je pamäťová bunka, ktorá dokáže všetko. Pod kapotou používa veľa NAND brán a v reálnom živote môže byť úplne iná v závislosti od techniky skladovania, ale jeho funkcia je rovnaká. Môžete dať nejaké vstupy, zapnúť "write" bit, a bude ukladať vstupy vnútri bunky. Nie je to len pamäťová bunka, lebo potrebujeme aj spôsob, ako si z nej čítať informácie. To sa robí s prídavným zariadením, čo je kolekcia AND vrátiek pre každý bit v pamäti, všetko viazané na iný vstup, čítací bit. Písacie a čitateľské bity sa často nazývajú "set" a "enable".
Celý tento balík je zabalený do takzvaného registra. Tieto registre sú pripojené k zbernici, ktorá je zväzok drôtov bežiacich po celom systéme, ktorý je pripojený ku každému komponentu. Dokonca aj moderné počítače majú autobus, aj keď môžu mať viac autobusov na zlepšenie výkonu multitaskingu.
Každý register má stále zápisný a čítací bit, ale v tomto nastavení je vstup a výstup rovnaké. To je vlastne dobré. Napríklad. Ak chcete skopírovať obsah R1 do R2, zapnete čítací bit pre R1, ktorý by tlačil obsah R1 na zbernicu. Zatiaľ čo čítací bit je zapnutý, by ste zapli zápisný bit pre R2, ktorý by skopíroval obsah zbernice do R2.
Registre sa používajú na vytváranie pamäte RAM. RAM je často rozmiestnená v mriežke, pričom drôt prechádza dvomi smermi:
Dekodéry prijímajú binárny vstup a zapínajú príslušný očíslovaný vodič. Napríklad, "11" je 3 v binárnom, najvyššom 2-bitovom čísle, takže dekodér zapne najvyšší vodič. Na každom križovatke existuje register. Všetky tieto sú pripojené k centrálnej zbernici a k ústrednému vstupu na zápis a čítanie. Vstup pre čítanie aj zápis sa zapne iba vtedy, ak sú zapnuté aj dva káble prechádzajúce cez register, čo vám umožní vybrať register, z ktorého chcete zapisovať a čítať. Opäť platí, že moderná RAM je oveľa komplikovanejšia, ale toto nastavenie stále funguje.
Hodiny, krokov a dekodér
Registre sa používajú všade a sú základným nástrojom na presúvanie údajov a ukladanie informácií do procesora. Takže to, čo im povie, aby sa veci pohybovali?
Hodiny sú prvou zložkou v jadre CPU a zhasnú a zapnú v nastavenom intervale meranom v herte alebo v cykloch za sekundu. Toto je rýchlosť, ktorú vidíte inzerovanú popri procesoroch; čip 5 GHz môže vykonávať 5 miliárd cyklov za sekundu. Rýchlosť hodín je často veľmi dobrá metrika pre rýchlosť procesora.
Hodiny majú tri rôzne stavy: základné hodiny, hodiny aktivácie a nastavené hodiny. Základné hodiny budú zapnuté o polovicu cyklu a pre druhú polovicu budú vypnuté. Povolené hodiny sa používajú na zapnutie registrov a musia byť zapnuté dlhšie, aby sa ubezpečil, že sú dáta zapnuté. Nastavené hodiny musia byť vždy zapnuté v rovnakom čase ako hodiny na zapnutie alebo môžu byť zapísané nesprávne údaje.
Hodiny sa pripájajú k kroku, ktorý sa bude počítať od jedného do maximálneho kroku, a po dokončení sa vynuluje späť na jeden krok. Hodiny sú tiež spojené s bránami AND pre každý register, ktorý CPU môže zapisovať do:
Tieto brány AND sú tiež pripojené k výstupu iného komponentu, inštrukčného dekodéra. Dekodér inštrukcií prevezme inštrukciu ako "SET R2 TO R1" a dekóduje ho na niečo, čo CPU dokáže pochopiť. Má vlastný vnútorný register nazývaný "Inštrukčný register", v ktorom je uložená aktuálna operácia. Ako presne to robí, ide o systém, na ktorom bežíte, ale akonáhle je dekódovaný, zapne správnu sadu a umožní bitom pre správne registre, ktoré sa vypálijú v súlade s hodinami.
Programové pokyny sú uložené v pamäti RAM (alebo vo vyrovnávacej pamäti L1 na moderných systémoch, bližšie k CPU). Keďže sú dáta programu uložené v registroch, rovnako ako každá ďalšia premenná, môže sa manipulovať za behu za účelom skoku okolo programu. Takto sa programy dostanú do svojej štruktúry, pomocou slučiek a ak vyhlásenia. Pokyn na skok nastaví aktuálnu polohu v pamäti, ktorú dekodér inštrukcií číta od iného miesta.
Ako to všetko príde spoločne
Teraz je naše hrubé zjednodušenie spôsobu fungovania procesora úplné. Hlavný autobus prechádza celý systém a pripája sa k všetkým registrom. Úplné združovače, spolu s množstvom ďalších operácií, sú zabalené do aritmetickej logickej jednotky alebo ALU. Táto ALU bude mať pripojenie na zbernicu a bude mať aj vlastné registre na ukladanie druhého čísla, na ktorom pracuje.
Na vykonanie výpočtu sa dáta programu načítajú zo systémovej pamäte RAM do riadiacej sekcie. Riadiaca sekcia číta dve čísla z pamäte RAM, načíta prvé do registra výkazov ALU a potom načíta druhú na zbernicu. Medzitým pošle ALU inštrukčný kód s informáciou, čo má robiť. ALU potom vykoná všetky výpočty a uloží výsledok do iného registra, ktorý CPU môže čítať a potom pokračovať v procese.
Obrazový kredit: Rost9 / Shutterstock