dědictví dřívějších vzorů, jako Babbage difference engine a mainframe punch card systems z roku 1970, mají významný dopad na dnešní počítačové systémy. V mém prvním článku v této historické sérii, historie počítačů a moderních počítačů pro systémoví administrátoři, jsem se zmínil několik prekurzory moderního počítače a jsou uvedeny vlastnosti, které definují, co nazýváme počítači dnes.,

v tomto článku diskutuji o centrální procesorové jednotce (CPU), včetně jejích součástí a funkčnosti. Mnoho témat se odkazuje zpět na první článek, takže si jej přečtěte, pokud jste tak již neučinili.

střední zpracování jednotku (CPU)

CPU v moderních počítačích je ztělesněním „mlýn“ v Babbage difference engine. Termín centrální procesorová jednotka vznikl v mlhách počítačového času, kdy jedna masivní skříň obsahovala obvody potřebné k interpretaci programových pokynů na úrovni stroje a provádění operací na dodaných datech., Centrální procesorová jednotka také dokončila veškeré zpracování všech připojených periferních zařízení. Periferie zahrnovaly tiskárny, čtečky karet a včasná paměťová zařízení, jako jsou bubnové a diskové jednotky. Moderní periferní zařízení mají značné množství zpracovatelského výkonu sami a vypnou některé úkoly zpracování z CPU. Tím se CPU uvolní ze vstupních / výstupních úkolů tak, aby jeho výkon byl aplikován na primární úkol.

rané počítače měly pouze jeden procesor a mohly provádět pouze jeden úkol najednou.,

zachováváme termín CPU dnes, ale nyní se odkazuje na balíček procesorů na typické základní desce. Obrázek 1 zobrazuje standardní balíček procesorů Intel.

Obrázek

Obr. 1: Intel Core i5 procesor paket (Jud McCranie via Wikimedia Commons, CC BY-SA 4.0).

zde není opravdu nic jiného než samotný balíček procesorů. Balíček procesorů je čip obsahující procesor(y) utěsněný uvnitř kovové nádoby a namontovaný na malé desce s plošnými spoji (PC)., Balíček je jednoduše vložen do zásuvky CPU na základní desce a zajištěn uspořádáním zajišťovací páky. Chladič CPU se připojí k balíčku procesoru. Existuje několik různých fyzických zásuvky s konkrétní čísla kontaktů, takže dostat správný balíček, aby se vešly na základní desky socket je nezbytné, pokud budete stavět vlastní počítače.

jak CPU funguje

podívejme se na CPU podrobněji. Obrázek 2 je koncepční diagram hypotetického CPU, takže můžete komponenty snadněji vizualizovat., RAM a systémové hodiny jsou zastíněny, protože nejsou součástí CPU a jsou zobrazeny pouze pro přehlednost. Rovněž nejsou nakreslena žádná spojení mezi hodinami CPU a řídicí jednotkou se součástmi CPU. Stačí říci, že signály z hodin a řídicí jednotky jsou nedílnou součástí každé jiné komponenty.

Obrázek

Obrázek 2: zjednodušený konceptuální schéma typické CPU.

tento design nevypadá příliš jednoduše, ale realita je ještě komplikovanější., Toto číslo je dostatečné pro naše účely, aniž by bylo příliš složité.

aritmetická logická jednotka

aritmetická logická jednotka (ALU) provádí aritmetické a logické funkce, které jsou dílem počítače. Registry a A B drží vstupní data a akumulátor obdrží výsledek operace. Registr instrukcí obsahuje instrukci, kterou má ALU provést.

například při přidávání dvou čísel je jedno číslo umístěno v registru a a druhé v registru B. Alu provádí sčítání a dává výsledek do akumulátoru., Pokud je operace logická, data, která mají být porovnána, jsou umístěna do vstupních registrů. Výsledek srovnání, a 1 nebo 0, je vložen do akumulátoru. Ať už se jedná o logickou nebo aritmetickou operaci, obsah akumulátoru je poté umístěn do umístění mezipaměti vyhrazeného programem pro výsledek.

existuje jiný typ operace prováděné ALU. Výsledkem je adresa v paměti a používá se k výpočtu nového umístění v paměti pro zahájení načítání instrukcí. Výsledek je umístěn do registru instrukčních ukazatelů.,

registr instrukcí a ukazatel

ukazatel instrukcí určuje umístění v paměti obsahující další instrukce, které má procesor provést. Když CPU dokončí provedení aktuální instrukce, další instrukce se načte do registru instrukcí z místa paměti, na které ukazuje ukazatel instrukcí.

po vložení instrukce do registru instrukcí se ukazatel registru instrukcí zvýší o jednu adresu instrukce. Incrementing umožňuje, aby byl připraven přesunout další instrukce do registru instrukcí.,

Cache

CPU nikdy přímo přistupuje k paměti RAM. Moderní procesory mají jednu nebo více vrstev mezipaměti. Schopnost CPU provádět výpočty je mnohem rychlejší než schopnost paměti RAM přenášet data do CPU. Důvody jsou mimo rozsah tohoto článku,ale v dalším článku to prozkoumám.

mezipaměť je rychlejší než systémová paměť RAM a je blíže CPU, protože je na čipu procesoru. Mezipaměť poskytuje ukládání dat a pokyny, které brání CPU čekat na data, která mají být načtena z paměti RAM., Když CPU potřebuje data—a pokyny k programu jsou také považovány za data-mezipaměť určuje, zda jsou data již v platnosti, a poskytuje je CPU.

pokud požadovaná data nejsou v mezipaměti, jsou načtena z paměti RAM a používá prediktivní algoritmy k přesunu více dat z paměti RAM do mezipaměti. Řadič mezipaměti analyzuje požadovaná data a snaží se předpovědět, jaké další údaje budou potřebné z paměti RAM. Načte předpokládaná data do mezipaměti., Udržováním některých dat blíže CPU v mezipaměti, která je rychlejší než RAM, může CPU zůstat zaneprázdněn a neztrácet cykly čekající na data.

náš jednoduchý procesor má tři úrovně mezipaměti. Úrovně 2 a 3 jsou navrženy tak, aby předpovědět, co data a programové pokyny, bude zapotřebí další, přesunout data z paměti RAM, a to přesunout ještě blíž k PROCESORU, aby byla připravena v případě potřeby. Tyto velikosti mezipaměti se obvykle pohybují od 1 MB do 32 MB, v závislosti na rychlosti a zamýšleném použití procesoru.

mezipaměť úrovně 1 je nejblíže CPU. V našem CPU existují dva typy mezipaměti L1., L1i je mezipaměť instrukcí a L1d je mezipaměť dat. Velikost mezipaměti úrovně 1 se obvykle pohybuje od 64 KB do 512 KB.

jednotka pro správu paměti

jednotka pro správu paměti (MMU) řídí tok dat mezi hlavní pamětí (RAM) a CPU. Poskytuje také ochranu paměti potřebnou v multitaskingových prostředích a konverzi mezi adresami virtuální paměti a fyzickými adresami.

hodiny CPU a řídicí jednotka

všechny komponenty CPU musí být synchronizovány, aby hladce fungovaly., Řídicí jednotka provádí tuto funkci rychlostí určenou rychlostí hodin a je zodpovědná za řízení operací ostatních jednotek pomocí časovacích signálů, které se rozprostírají v celém CPU.

paměť s náhodným přístupem (RAM)

přestože je v tomto diagramu zobrazena RAM nebo hlavní úložiště a další, není to skutečně součást CPU. Jeho funkcí je ukládat programy a data tak, aby byly připraveny k použití, když je CPU potřebuje.

jak to funguje

CPU pracují na cyklu, který je řízen řídicí jednotkou a synchronizován hodinami CPU., Tento cyklus se nazývá procesorový instrukční cyklus a skládá se z řady komponent fetch/decode/execute. Instrukce, která může obsahovat statická data nebo ukazatele na proměnná data, je načtena a umístěna do registru instrukcí. Instrukce je dekódována a všechna data jsou umístěna do datových registrů A A B. Instrukce se provádí pomocí registrů a A B, přičemž výsledek je vložen do akumulátoru. CPU pak zvyšuje hodnotu instrukčního ukazatele o délku předchozího a začíná znovu.

základní cyklus instrukcí CPU vypadá takto.,

Obrázek

Obrázek 3: základní CPU instrukční cyklus.

Potřeba rychlosti

přestože základní CPU funguje dobře, CPU, které běží na tomto jednoduchém cyklu, lze použít ještě efektivněji. Existuje několik strategií pro zvýšení výkonu CPU, a podíváme se na dva z nich zde.

Přeplňování instrukce cyklu

Jeden problém brzy návrháři CPU narazil byl ztracený čas v různých CPU komponenty., Jedna z prvních strategií pro zlepšení výkonu CPU byl překrývající se části CPU instrukční cyklus využít různé části PROCESORU více plně.

například, když byla aktuální instrukce dekódována, další je načtena a umístěna do registru instrukcí. Jakmile k tomu dojde, ukazatel instrukcí se aktualizuje s adresou paměti další instrukce. Použití překrývajících se instrukčních cyklů je znázorněno na obrázku 4.,

Obrázek

Obrázek 4: CPU instrukční cyklus s přesahem.

tento design vypadá hezky a hladce, ale faktory, jako je čekání na I/O, mohou narušit tok. Nemají správné údaje nebo pokyny v mezipaměti vyžaduje MMU najít správné a přesunout je do CPU, a to může nějakou dobu trvat. Některé pokyny také vyžadují více cyklů CPU než jiné, což narušuje hladké překrývání.

jedná se však o výkonnou strategii pro zlepšení výkonu CPU.,

Hyperthreading

Další strategií pro zlepšení výkonu CPU je hyperthreading. Hyperthreading umožňuje jediné jádro procesoru pracovat jako dva procesory tím, že poskytuje dva datové a instrukční toky. Přidání druhého instrukční ukazatel a návod zaregistrovat do naší hypotetické CPU, jak je znázorněno na Obrázku 5, způsobuje, že funkce jako dva Procesory, vykonávající dvě oddělené instrukční proudy během každý instrukční cyklus. Také, když jeden výkon proud stánky při čekání na data-opět, instrukce jsou také data – druhý výkon proud pokračuje ve zpracování., Každé jádro, které implementuje hyperthreading, je ekvivalentem dvou procesorů ve své schopnosti zpracovávat pokyny.

Obrázek

Obrázek 5: koncepční schéma CPU s technologií hyperthreading.

nezapomeňte, že se jedná o velmi zjednodušený diagram a vysvětlení našeho hypotetického CPU. Realita je mnohem složitější.

více terminologie

setkal jsem se s mnoha různými terminologiemi CPU., Chcete-li terminologii definovat trochu explicitněji, podívejme se na samotný procesor pomocí příkazu lscpu.

výše uvedený procesor Intel je balíček, který se připojuje do jediné zásuvky na základní desce. Balíček procesorů obsahuje šest jader. Každé jádro je schopné hyperthreadingu, takže každý může spustit dvě simultánní vlákna pro celkem 12 procesorů.

moje definice:

  • jádro-jádro je nejmenší fyzická hardwarová jednotka schopná plnit úkol zpracování. Obsahuje jednu ALU a jednu nebo dvě sady podpůrných registrů., Druhá sada registrů a podpůrných obvodů umožňuje hyperthreading. Jedno nebo více jader lze kombinovat do jediného fyzického balíčku.
  • CPU-logická hardwarová jednotka schopná zpracovat jedno vlákno provedení. Moderní použití termínu central processing unit se týká celkového počtu vláken, které je procesorový balíček schopen provádět současně. Jednojádrový procesor, který nepodporuje hyperthreading, je ekvivalentem jediného CPU. V tomto případě jsou CPU a jádro synonymem., HyperThreading procesor s jedním jádrem je funkční ekvivalent dvou procesorů. Procesor hyperthreading s osmi jádry je funkčním ekvivalentem 16 procesorů.
  • Package-fyzická složka, která obsahuje jedno nebo více jader, například ta, která je znázorněna na obrázku 1 výše.
  • procesor-1) zařízení, které zpracovává programové pokyny pro manipulaci s daty. 2) Často se používá jako synonymum pro balení.,
  • Socket-někdy se používá jako další synonymum pro balíček, ale přesněji se odkazuje na fyzickou zásuvku na základní desce, do které je vložen balíček procesoru.

pojmy socket, procesor a balíček se často používají zaměnitelně, což může způsobit určitý zmatek. Jak vidíme z výše uvedených výsledků příkazu lscpu, Intel nám poskytuje vlastní terminologii a domnívám se, že autoritativní zdroj., Ve skutečnosti, všichni tyto pojmy používáme různými způsoby, ale pokud si navzájem rozumíme v daném okamžiku, to je to, na čem opravdu záleží.

všimněte si, že výše uvedený procesor má dvě mezipaměti úrovně 1 po 512 KiB, jednu pro instrukce (L1i) a jednu pro data (L1d). Mezipaměť úrovně 1 je nejblíže CPU a urychluje to, aby v tomto okamžiku byly pokyny a data odděleny. Úroveň 2 a úroveň 3 mezipaměti jsou větší, ale pokyny a data koexistují v každém.

co to všechno znamená?

dobrá otázka., V prvních dnech sálových počítačů měl každý počítač pouze jeden procesor a nebyl schopen současně spouštět více než JEDEN program. Mainframe by mohl spustit výplatní listinu, pak inventární účetnictví, pak fakturaci zákazníků atd., ale najednou by mohla běžet pouze jedna aplikace. Každý program musel skončit dříve, než operátor systému mohl začít další.

některé rané pokusy o spuštění více programů najednou zaujaly jednoduchý přístup a byly zaměřeny na lepší využití jednoho procesoru., Například program1 a program2 byly načteny a program1 běžel, dokud nebyl zablokován a čekal, až dojde k i/o. V tu chvíli program2 běžel, dokud nebyl zablokován. Tento přístup byl nazván multi-processing a pomohl plně využít cenný počítačový čas.

rané pokusy o multitasking všechny zahrnovaly velmi rychlé přepínání kontextu provádění jednoho CPU mezi proudy provádění více úkolů. Tato praxe není pravda multitasking, jak ji chápeme, protože ve skutečnosti je zpracován pouze jeden podproces provedení najednou. Správněji se nazývá sdílení času.,

moderní počítače, od chytrých hodinek a tabletů po superpočítače, všechny podporují skutečné multitasking s více procesory. Více procesorů umožňuje počítačům spouštět mnoho úkolů současně. Každý procesor plní své vlastní funkce Současně se všemi ostatními CPU. Osmijádrový procesor s hyperthreadingem (tj.

Závěrečné myšlenky

podívali jsme se na konceptualizovaný a zjednodušený procesor, abychom se dozvěděli něco o strukturách. Sotva jsem skimmed povrch funkčnosti procesoru v tomto článku., Více se můžete dozvědět pomocí vložených odkazů na témata, která jsme prozkoumali.

nezapomeňte, že diagramy a popisy v tomto článku jsou čistě koncepční a nepředstavují žádný skutečný procesor.

v další části této série se podívám na RAM a diskové jednotky jako na různé typy úložiště a proč je každý nezbytný pro moderní počítače.