HTG vysvětluje, jak funguje CPU?
Většina věcí v počítači je poměrně snadná k pochopení: paměť RAM, úložiště, periferní zařízení a software společně pracují na vytvoření funkce počítače. Ale srdce vašeho systému, CPU, se zdá být kouzlo i mnoha technickým lidem. Zde budeme dělat vše pro to, abychom to rozdělili.
Většina výzkumu pro tento článek pochází z "Ale jak to ví?" Od J. Clark Scott. Je to fantastické čtení, jde do mnohem hloubky, než tento článek bude, a stojí za to pár babek na Amazonu.
Jedna poznámka před tím, než začneme: moderní procesory jsou mnohem komplexnější než to, co zde uvádíme. Je téměř nemožné, aby jedna osoba pochopila každou nuanci čipu s více než miliardou tranzistorů. Základní principy toho, jak se dají dohromady dohromady, zůstávají stejné a pochopení základů vám umožní lépe porozumět moderním systémům.
Malé
Počítače pracují v binárních formátech. Chápou pouze dva stavy: zapnuto a vypnuto. Chcete-li provádět výpočty v binární, používají to, co se nazývá tranzistor. Tranzistor umožňuje pouze průchod zdrojem proudu do odtoku, jestliže je proud přes bránu. V podstatě se jedná o binární spínač, který v závislosti na druhém vstupním signálu vypíná kabel.
Moderní počítače používají miliardy tranzistorů k výpočtům, ale na nejnižších úrovních potřebujete pouze hrstku, abyste vytvořili nejzákladnější součásti, známé jako brány.
Logické brány
Stahujte několik tranzistorů správně a máte takzvanou logickou bránu. Logické brány vezmou dva binární vstupy, provedou na nich operaci a vrátí výstup. Brána OR například vrátí hodnotu true, pokud je jeden ze vstupů true. Hradla AND kontroluje, zda jsou obě vstupy pravdivé, XOR zkontroluje, zda je pravdivý pouze jeden ze vstupů, a N varianty (NOR, NAND a XNOR) jsou invertované verze jejich základních bran.
Dělat matematiku s branami
Pouze dvěma branami můžete provádět základní binární doplnění. Toto schéma ukazuje poloviční sčítačku vytvořenou pomocí Logicly, bezplatného online hřiště pro logické brány. XOR brána se zapne, pokud je zapnutý pouze jeden ze vstupů, ale nikoli oba. Bude-li vstupy zapnuty, zapne se brána AND, ale zůstane vypnutá, pokud nejsou žádné vstupy. Pokud jsou tedy oba zapnuté, XOR zůstane a brána AND se zapne a přejde k správné odpovědi na dvě:
To nám dává jednoduché nastavení se třemi odlišnými výstupy: nula, jedna a dvě. Jeden bit však nemůže ukládat nic víc než 1 a tento stroj není příliš užitečný, protože řeší pouze jeden z nejjednodušších matematických problémů. Ale je to jen půl sčítačka a pokud spojujete dva z nich s jiným vstupem, získáte úplný sčítač:
Celý sčítač má tři vstupy - dvě čísla, která mají být přidána, a "nést". Nosič se používá, když konečný počet překračuje to, co lze uložit v jednom bitu. Kompletní addony budou propojeny v řetězci a přenos je předán z jednoho sčítače do druhého. Nosnost je přidána k výsledku brány XOR v první polovině sčítače a je zde další OR brána pro zpracování obou případů, kdy tak bude muset být na.
Když jsou zapnuty oba vstupy, přenos se zapne a pošle je na další řádku v řetězci:
A je to tak složité, jak se dostane. Přesun na více bitů v podstatě znamená více plných aditiv v delším řetězci.
Většina ostatních matematických operací může být provedena sčítáním; násobení je jen opakované sčítání, odčítání může být provedeno s nějakou fantaziální bitovou inverzí a rozdělení je jen opakované odčítání. A zatímco všechny moderní počítače mají hardwarová řešení pro urychlení složitějších operací, můžete technicky udělat vše s plným přírůstkem.
Autobus a paměť
Právě teď náš počítač není nic jiného než špatná kalkulačka. Je to proto, že si nic nemůže vzpomenout a nedělá nic s výstupy. Nahoře je paměťová buňka, která dokáže vše. Pod kapotou se používá mnoho bran NAND a v reálném životě se může lišit v závislosti na skladovací technice, ale jeho funkce je stejná. Dáte mu nějaké vstupy, zapněte bit zápisu a uloží vstupy uvnitř buňky. Není to jen paměťová buňka, protože potřebujeme také způsob, jak číst informace z ní. To se provádí pomocí aktivačního prvku, který je sbírkou bloků AND pro každý bit v paměti, všechny jsou svázány s jiným vstupem, bit "čtení". Písma a čtecí bity se často nazývají také "set" a "enable".
Celý tento balíček je zabalen do takzvaného registru. Tyto registry jsou připojeny ke sběrnici, která je svazkem vodičů běžících po celém systému, připojených ke každému komponentu. Dokonce i moderní počítače mají autobus, ačkoli mohou mít více autobusů pro zlepšení výkonu multitaskingu.
Každý registr má stále bit pro zápis a čtení, ale v tomto nastavení je vstup a výstup stejné. To je skutečně dobré. Například. Pokud byste chtěli zkopírovat obsah R1 do R2, zapnul by se čtecí bit pro R1, který by zatlačil obsah R1 na sběrnici. Zatímco bit pro čtení je zapnutý, zapnete zápisový bit pro R2, který by zkopíroval obsah sběrnice do R2.
Registry slouží také k vytváření paměti RAM. RAM je často rozmístěna v mřížce, přičemž dráty se dělí ve dvou směrech:
Dekodéry mají binární vstup a zapnou odpovídající číslovaný drát. Například "11" je 3 v binárním, nejvyšší 2-bitové číslo, takže dekodér zapne nejvyšší vodič. Na každém křižovatku je registr. Všechny jsou připojeny k centrální sběrnici a k centrálnímu zápisu a čtení. Jak vstup pro čtení, tak pro vstup zápisu se zapíná pouze tehdy, jsou-li zapnuty také dva vodiče, které překračují rejstřík, což umožňuje efektivně vybrat registr, z něhož chcete psát a číst. Opět platí, že moderní RAM je mnohem složitější, ale toto nastavení stále funguje.
Hodiny, Stepper a Dekodér
Registry se používají všude a jsou základním nástrojem pro přesun dat a ukládání informací do CPU. Takže, co jim říká, aby věci pohybovaly?
Hodiny jsou první komponentou v jádře procesoru a vypínají a zapínají v nastaveném intervalu, měřený v hertzu, nebo v cyklech za sekundu. To je rychlost, kterou vidíte inzerovanou vedle CPU; čip 5 GHz může provádět 5 miliard cyklů za sekundu. Rychlost hodin je často velmi dobrá metrika pro to, jak rychle je CPU.
Hodiny mají tři různé stavy: základní hodiny, hodiny zapnutí a nastavené hodiny. Základní hodiny budou zapnuty na půl cyklu a na druhou polovinu budou vypnuty. Povolovací hodiny se používají k zapnutí registrů a musí být zapnuty déle, aby se ujistil, že data jsou povolena. Nastavené hodiny musí být vždy zapnuty současně s povolenými hodinami, jinak by mohly být zapsány nesprávné údaje.
Hodiny jsou připojeny k kroku, který se bude počítat od jednoho do maximálního kroku, a resetuje se zpět na jeden, když je hotovo. Hodiny jsou také připojeny k bráně AND pro každý registr, který CPU může zapisovat do:
Tyto brány AND jsou také připojeny k výstupu další komponenty, dekodéru instrukcí. Dekodér instrukcí provádí instrukce jako "SET R2 TO R1" a dekóduje jej na něco, co CPU může pochopit. Má vlastní interní registr nazvaný "Instrukční registr", kde je uložena aktuální operace. Jak přesně to funguje, jde o systém, na kterém běžíte, ale jakmile je dekódován, zapne správnou sadu a zapne bity pro správné registry, které se vypnou podle hodin.
Programové instrukce jsou uloženy v paměti RAM (nebo v mezipaměti L1 na moderních systémech, blíže k CPU). Vzhledem k tomu, že data programu jsou uložena v registrech, stejně jako každá další proměnná, může být manipulována za běhu a skákání po programu. Takové programy získají svou strukturu se smyčkami a prohlášeními. Instrukce skoku nastaví aktuální místo v paměti, které dekodér instrukce čte z jiného místa.
Jak to všechno přichází společně
Nyní je naše hrubé nadměrné zjednodušení způsobu, jak funguje procesor. Hlavní autobus překrývá celý systém a připojí se ke všem registrům. Plné přídavné jednotky spolu s dalšími operacemi jsou zabaleny do aritmetické logiky nebo ALU. Tato ALU bude mít spojení se sběrnicí a bude mít také své vlastní registry pro ukládání druhého čísla, na kterém pracuje.
Pro provedení výpočtu jsou programová data načteny z systémové paměti RAM do řídicí části. Řídicí sekce čte dvě čísla z paměti RAM, načte první do ALU instrukčního registru a načte druhou na sběrnici. Mezitím pošle ALU instrukční kód, který mu říká, co má dělat. ALU potom provádí všechny výpočty a ukládá výsledek do jiného registru, který CPU může číst a poté pokračovat v procesu.
Image Credit: Rost9 / Shutterstock