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 rozložili.

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 pár pár dolarů 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 všechny nuance č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.

Počáteční Malé

Počítače pracují v binárním formátu. Chápou pouze dva stavy: zapnuto a vypnuto. Chcete-li provádět výpočty v binárních, používají to, co se nazývá tranzistor. Tranzistor dovoluje, aby proudový proud protékal skrz něj do odtoku, pokud 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á vodič.

Moderní počítače používají miliardy tranzistorů k provedení výpočtů, ale na nejnižších úrovních potřebujete pouze hrstku, aby vytvořili nejzákladnější součásti, známé jako brány.

Logické brány

Nasaďte 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í true, pokud je jeden ze vstupů true. AND gate kontroluje, zda jsou oba vstupy pravdivé, XOR zkontroluje, zda je pravdivý pouze jeden ze vstupů, a N varianty (NOR, NAND a XNOR) jsou obrácené 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. Když jsou zapnuty oba vstupy, zapne se brána AND a zůstane vypnutá, pokud nejsou žádné vstupy. Pokud jsou tedy obě zapnuté, XOR zůstane a brána AND se rozsvítí a přichází 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". Nosení se používá, když konečné číslo přesáhne to, co lze uložit v jediném bitu. Kompletní addony budou propojeny v řetězci a přenos je předán z jednoho sčítače do druhého. Nosení je přidáno 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 by to mělo být zapnuto.

Když jsou zapnuty oba vstupy, přenos se zapne a pošle je k dalšímu sčítacímu prvku 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 přídavných zařízení 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í bit inverze, 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 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, což je sbírka bloků AND pro každý bit v paměti, všechny jsou svázány s jiným vstupem, čtením "číst". Psací a čtecí bity se často nazývají "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í jsou 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 tlačil obsah R1 na sběrnici. Zatímco čtecí bit 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 přijímají binární vstup a zapínají příslušný očíslovaný vodič. 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 tyto jsou připojeny k centrální sběrnici a k ​​centrálnímu zápisu a čtení vstupu. Jak vstup pro čtení, tak pro vstup zápisu se zapíná pouze tehdy, jsou-li zapnuty i dva vodiče, které překračují rejstřík, což vám umožní efektivně vybrat registr, ze kterého chcete psát a číst. Opět platí, že moderní RAM je mnohem komplikovaně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 se věci pohybovaly?

Hodiny jsou první složkou jádra 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 inzerované vedle procesorů; č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 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 delší, 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ý 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, na který CPU může zapisovat:

Tyto brány AND jsou také připojeny k výstupu další komponenty, dekodéru instrukcí. Dekodér instrukcí provádí příkaz "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 umožní bitům 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 programová data jsou uložena v registrech, stejně jako každá další proměnná, může být manipulována za běhu, aby se přeskočil celý program. Takové programy získají svou strukturu se smyčkami a prohlášeními. Instrukce skoku nastaví aktuální polohu v paměti, kterou dekodér instrukce čte z jiného místa.

Jak to všechno přichází dohromady

Nyní je naše hrubé zjednodušení, jak funguje procesor, kompletní. Hlavní autobus překrývá celý systém a připojí se ke všem registrům. Plné přídavné jednotky spolu s množstvím dalších operací jsou zabaleny do Aritmetické logické jednotky 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 poté 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 uloží výsledek do jiného registru, který CPU může číst a pokračovat v procesu.

Nejlepší Tipy:
Komentář: