Centrální procesorová jednotka - Central processing unit


z Wikipedie, otevřené encyklopedie
Intel 80486Dx2 CPU, jak je patrné z výše uvedených
Spodní strana s Intel 80486Dx2 zobrazí jeho vývody

Centrální procesorová jednotka ( CPU ) je elektronické obvody uvnitř počítače , která provádí instrukce z A počítačového programu provedením základní aritmetiku , logika ovládání a vstupně / výstupní operace uvedené v návodu (I / O). Počítačový průmysl používal termín „centrální procesorová jednotka“ přinejmenším od počátku 1960. Tradičně, termín „CPU“ se vztahuje k procesoru , konkrétně k jeho procesorovou jednotkou a řídicí jednotkou (CU), přičemž se rozlišuje tyto základní prvky počítače z vnějších prvků, jako je hlavní pamětí a I / O obvodů.

Formulář, návrh a implementaci procesorů se měnili v průběhu svých dějin, ale jejich základní operace zůstává téměř beze změny. Hlavní komponenty procesoru patří aritmetickou logickou jednotku (ALU), který provádí aritmetické a logické operace , procesor zaregistruje , že zásobování operandů do ALU a ukládat výsledky operací ALU a řídicí jednotku, jež utváří načítání (z paměti) a provádění pokyny nasměrováním koordinované operace ALU, registry a další komponenty.

Většina moderních procesorů jsou mikroprocesory , což znamená, že jsou obsaženy v jediném integrovaném obvodu (IC) čipu. IC, který obsahuje procesor může také obsahovat paměť, periferní rozhraní, a další komponenty v počítači; Takové integrované zařízení jsou různě nazvaný mikrokontrolérů nebo systémů na čipu (SoC). Některé počítače využívají vícejádrové procesory , což je jediný čip obsahující dva nebo více procesorů nazývané „jádra“; V tomto kontextu lze hovořit o těchto jednotlivých čipů jako „zásuvek“ .

Procesory pole nebo vektorové procesory mají více procesory, které pracují paralelně, bez jednotka za ústřední. Tam také existuje koncept virtuálních procesorů , které jsou abstrakcí dynamických agregovaných výpočetních zdrojů.

Dějiny

EDVAC , jeden z prvních skladoval-počítače programu

Časné počítače, jako je například ENIAC musel být fyzicky přepojeny plnit různé úkoly, které způsobily tyto stroje se nazývá „fixní programu počítače“. Vzhledem k tomu, termín „CPU“ je obecně definován jako zařízení pro software (počítačový program) provádění, nejčasnější zařízení to mohlo správně být volán CPU šla s příchodem skladoval-počítač programu .

Myšlenka skladoval-počítač programu byl již v návrhu J. Presper Eckert a John William Mauchly ‚s ENIAC , ale byl zpočátku vynechán tak, aby mohl být dokončen dříve. Dne 30. června 1945, předtím, než byl vyroben ENIAC, matematik John von Neumann rozšiřoval noviny s názvem první návrh zprávy o EDVAC . Byl to obrys skladoval-počítač programu, který by nakonec být dokončena v srpnu 1949. EDVAC byl navržen tak, aby vykonávat určitý počet instrukcí (nebo operací) různých typů. Je příznačné, že programy napsané pro EDVAC měly být uloženy ve vysokorychlostní počítačové paměti spíše než specifikovaný fyzickým vedením počítače. To překonal vážné omezení ENIAC, který byl značný čas a úsilí potřebné k překonfigurovat počítače provést nový úkol. S von Neumann designu program, který běžel EDVAC mohlo být měněn jednoduše tím, že mění obsah paměti. EDVAC však nebyl první skladoval-počítač programu; Manchester dítě , je v malém měřítku experimentální skladoval-počítač programu, běžel svůj první program dne 21. června 1948 a Manchester Mark 1 běžel svůj první program během noci 16-17 června 1949.

Brzy procesory byly zakázkové designy používané jako součást větší a někdy výraznou počítače. Nicméně, tato metoda konstruování zakázkové procesory pro zvláštní aplikaci velmi dával cestu k vývoji víceúčelových procesorů vyráběných ve velkých množstvích. Tato normalizace začala v éře diskrétních tranzistorů sálových počítačů a minipočítačů a rychle vyrazil s popularizací z integrovaného obvodu  (IC). IC dovolil zvýšeně komplexní CPU být navrženy a vyrobeny tak, aby tolerance v řádu nanometrů . Jak miniaturizace a standardizace CPU zvýšila přítomnost digitálních zařízení v moderním životě daleko za omezené používání specializovaných výpočetních strojů. Moderní mikroprocesory se objeví v elektronických zařízeních od automobilů do mobilních telefonů, a někdy dokonce v hračkách.

Zatímco von Neumann je nejvíce často připočítán s designem skladoval-počítač programu protože jeho návrhu EDVAC a design se stal známý jako von Neumann architektuře , jiní před ním, jako Konrad Zuse , navrhl a realizovány podobné myšlenky. Takzvaný Harvardská architektura z Harvard Mark já , který byl dokončen před EDVAC, také použit design skladoval-programu pomocí vyraženou papírovou pásku spíše než elektronická paměť. Klíčový rozdíl mezi architekturou von Neumann a Harvard je, že druzí oddělí ukládání a léčbu instrukcí procesoru a dat, zatímco bývalý používá stejný paměťový prostor pro obě strany. Většina moderních procesorů je primárně von Neumann v designu, ale procesory s architekturou Harvard jsou považovány za dobře, a to zejména v oblasti vestavěných aplikací; Například, že Atmel AVR mikroprocesory jsou procesory Harvardská architektura.

Relé a elektronky (zářivky) se běžně používá jako spínací prvky; užitečný počítač vyžaduje tisíce nebo desetitisíce spínacích přístrojů. Celková rychlost systému je závislá na rychlosti spínačů. Počítače trubky jako EDVAC inklinovaly k průměru osm hodin mezi poruchami, zatímco počítače směny, jako je (pomalejší, ale dříve) Harvard Mark I selhal jen velmi zřídka. Nakonec, trubkové CPU na bázi stal dominantní, protože významné rychlostní výhody poskytované zpravidla převažuje nad problémy se spolehlivostí. Většina z těchto raných synchronních CPU běžel při nízkých rychlostí hodin ve srovnání s moderními mikroelektronických vzorů. Hodinové signálové frekvence v rozsahu od 100 kHz do 4 MHz byly velmi časté v tomto okamžiku, omezený velmi rychlostí spínacích přístrojů, které byly postaveny s.

tranzistorové procesory

604e Procesor IBM PowerPC

Design složitost procesorů zvýšil různé technologie usnadnily stavbu menší a spolehlivější elektronická zařízení. První takové zlepšení přišlo s příchodem tranzistoru . Transistorized CPU v průběhu roku 1950 a 1960 již neměla být postaven z objemných, nespolehlivých a nestabilních spínacích prvků, jako jsou elektronek a relé . S tímto zlepšením komplexnější a spolehlivé procesory byly postaveny na jedné nebo více desek s plošnými spoji , obsahující diskrétní (jednotlivé) komponenty.

V roce 1964, IBM představila IBM System / 360 architektura počítače, který byl použit v sérii počítačů schopných běhu stejné programy s různou rychlostí a výkonu. Toto bylo významné v době, kdy většina elektronických počítačů byly neslučitelné s sebou, a to i těch, které vydává stejného výrobce. S cílem usnadnit toto zlepšení, IBM používá pojem mikroprograma (často volal „mikrokód“), který ještě vidí rozšířené použití v moderních CPU. System / 360 architektura byla tak populární, že to dominovala sálového počítače trh po celá desetiletí a zanechal dědictví, které je ještě pokračovalo podobnými moderními počítači jako IBM zSeries . V roce 1965, Digital Equipment Corporation (DEC) představil jiného vlivný počítač mířil na vědecký a trhy výzkumu, na PDP-8 .

Fujitsu deska s procesory SPARC64 VIIIfx

Počítače tranzistor na bázi měl několik výrazných výhod přes jejich předchůdce. Kromě usnadnění zvýšení spolehlivosti a nižší spotřebu energie, tranzistory také dovoleno CPU pracovat při mnohem vyšších rychlostí, protože krátké spínací doby tranzistoru ve srovnání s trubkou nebo relé. Zvýšená spolehlivost a dramaticky zvýšila rychlost spínacích prvků (které byly téměř výhradně tranzistory v té době), rychlostí hodin CPU v řádu desítek megahertz byly snadno získat během tohoto období. Navíc zatímco jednotlivý tranzistor a IC CPU byli v těžkém použití, nové vysoce výkonné provedení, jako SIMD (Single Instruction Multiple dat) vektorové procesory se začaly objevovat. Tyto brzy experimentální designy později daly vzniknout do éry specializovaných superpočítačů jako ti dělali Cray Inc a Fujitsu Ltd .

Drobný integrace procesory

CPU, feritová paměť a externí sběrnice rozhraní DEC PDP-8 / I, ze středně velkých integrovaných obvodů

Během tohoto období, byla vyvinuta metoda výroby mnoho propojené tranzistorů v kompaktním prostoru. Integrovaný obvod (IC) dovolil velké množství tranzistorů, které mají být vyrobeny na jednom polovodič na bázi zemřít , nebo „čip“. Zpočátku jen velmi základní non-specializované digitální obvody, jako NOR brány byly zmenšeny do ICs. Procesory založené na těchto „stavebních bloků“, integrovaných obvodů jsou obecně označovány jako zařízení „Integrace v malém měřítku“ (SSI). SSI obvody, jako jsou ty používané v Apollo počítač vedení , obvykle obsahovaly až do několika desítek tranzistorů. Vybudovat celý procesor ven SSI obvody požadované tisíce jednotlivých čipů, ale spotřebovává mnohem méně prostoru a energie než dřívější jednotlivé tranzistorové designy.

IBM System / 370 , follow-on k System / 360, který se používá SSI obvody, spíše než Solid Logic Technology diskrétních tranzistorů modulů. DEC PDP-8 / I a KI10 PDP-10 také přepnout z jednotlivých tranzistorů použitých PDP-8 a PDP-10 na obvody SSI, a jejich velmi populárního PDP-11 linie byl původně postaven s SSI obvody, ale byl nakonec realizován LSI složky Jakmile tyto stala praktická.

Ve velkém měřítku integrace procesory

Lee Boysel publikoval vlivné články, včetně 1967 „manifestu“, který popisoval, jak sestavit ekvivalent 32bitové sálového počítače se z relativně malého počtu velkých integračních obvodů (LSI). V té době, jediný způsob, jak vytvořit LSI čipy, které jsou žetony s sto nebo více bran, bylo postavit je pomocí MOS proces (tj PMOS logika , NMOS , nebo CMOS logika ). Nicméně, některé společnosti i nadále stavět procesory z bipolárních čipů, protože bipolární tranzistory jsou tak mnohem rychlejší než MOS čipy; například Datapoint postavený procesorů z TTL (TTL) čipů až do začátku roku 1980. V té době, IC, MOS byly tak pomalé, že byly považovány za užitečné jen v několika specializovaných aplikací, které vyžaduje nízký výkon.

Vzhledem k tomu, mikroelektronické technologie postupovala, rostoucí počet tranzistorů byly umístěny na IC, snížení počtu jednotlivých integrovaných obvodů potřebných pro kompletní CPU. MSI a LSI obvody zvětšil počty tranzistoru ke stovkám a tisícům. 1968, počet integrovaných obvodů potřebných pro sestavení kompletního CPU byla snížena na 24 IC osmi různých typů, přičemž každý IC, které obsahují zhruba 1000 MOSFET. V příkrém rozporu s jeho SSI a MSI předchůdcích, první LSI realizace PDP-11 obsahoval CPU složené ze čtyř integrovaných obvodů LSI.

mikroprocesory

Die z Intel 80486Dx2 mikroprocesoru (skutečná velikost: 12 x 6,75 mm) v obalu
Intel Core i5 procesor na Vaio E series notebooku desce (vpravo pod tepelné trubice )

Od uvedení prvního komerčně dostupného mikroprocesorem Intel 4004 v roce 1970, a první široce používán mikroprocesor je Intel 8080 v roce 1974, tato třída procesorů téměř zcela předstihla všechny ostatní implementační metody jednotka. Mainframe a minipočítač výrobců době zahájila proprietárních programů rozvoje IC upgrade své starší počítačové architektury a nakonec produkoval instrukční sadu slučitelné mikroprocesory, které byly zpětně kompatibilní s jejich starším hardwarem a softwarem. V kombinaci s příchodem a eventuálním úspěchu všudypřítomného osobního počítače , termín CPU je nyní aplikováno téměř výlučně na mikroprocesory. Několik CPU (označované jádra ) mohou být kombinovány v jedné provozní čipu.

Předchozí generace procesorů byly realizovány jako jednotlivé komponenty a četné malé integrované obvody (IC) na jednom nebo více desek s plošnými spoji. Mikroprocesory, na druhou stranu, jsou procesory vyráběné na velmi malém počtu integrovaných obvodů; obvykle jen jeden. Celková menší velikost CPU, v důsledku prováděny na jednom čipu, znamená rychlejší čas, protože fyzikálních faktorů přepínání jako sníženou brány parazitní kapacity . To umožnilo synchronní mikroprocesory mít hodinové sazby v rozmezí od desítek megahertz do několika gigahertz. Navíc, schopnost budovat mimořádně malé tranzistory na IC zvýšila složitost a počet tranzistorů v jediném procesoru mnohonásobně. Tento široce pozorovat trend je popsán Moorova zákona , který se ukázal být docela přesný prediktor růstu CPU (a dalších IC) složitost až do roku 2016.

Zatímco složitost, velikost, konstrukce a obecný tvar CPU změnily enormně od roku 1950, základní design a funkce se příliš nezměnila vůbec. Téměř všechny běžné procesory dnes mohou být velmi přesně popsat jako von Neumann skladoval-programové strojů. Jako Moorův zákon není držitelem případech byly vyjádřeny obavy o limitech integrovaného obvodu technologie tranzistoru. Extrémní miniaturizace elektronických bran je příčinou účinky jevů, jako jsou electromigration a úniku podprahové , aby se stal mnohem významnější. Tyto novější znepokojení jsou mezi mnoho faktorů přimět výzkumníky, aby vyšetřoval nové metody práce na počítači takový jako kvantový počítač , stejně jako k rozšíření využití paralelismu a jiných metod, které rozšíří užitečnost klasický model Vona Neumanna.

Úkon

Základní operace většiny procesorů, bez ohledu na fyzickou formu, kterou oni vezmou, je vykonat sled uložených instrukcí , které se nazývá program. Instrukce, které mají být provedeny jsou uloženy v nějaké paměti počítače . Téměř všechny procesory sledovat vykonat, dekódovat a vykonávají kroky v jejich provozu, které jsou souhrnně označovány jako instrukční cyklus .

Po provedení instrukce, celý proces se opakuje s tím, že další instrukce cyklus obvykle načítání další, v pořadí instrukce z důvodu zvyšování hodnoty v pultě programu . Pokud byl pokyn skok proveden, bude pult programu bude upraven tak, aby obsahovat adresu instrukce, která byla skočil do a vykonávání programu pokračuje normálně. Ve složitějších procesorů, více instrukce mohou být přitažené za vlasy, dekódovat a provádět současně. Tato část popisuje, co se obecně označuje jako „ klasické RISC potrubí “, což je docela běžné u jednoduchých procesorů používaných v mnoha elektronických zařízeních (často volal mikrořadičů). To do značné míry ignoruje důležitou úlohu vyrovnávací paměti procesoru , a proto je přístup fázi plynovodu.

Některé instrukce manipulovat čítač instrukcí, spíše než k produkci dat přímo vyplývají; Tyto instrukce jsou obecně nazývány „skoky“ a usnadňují chování programu jako smyčky , podmíněné provádění programu (přes použití podmíněného skoku), a existence funkcí . V některých procesorech, některé další instrukce změně stavu bitů v „příznaky“ registru . Tyto příznaky mohou být použity k ovlivnění jak program se chová, protože často ukazují výsledky různých operací. Například, v těchto procesorech instrukce „porovnej“ vyhodnocuje dvě hodnoty a soubory nebo vymaže bitů v registru vlajek uvést, které z nich je větší, nebo zda jsou stejné; jeden z těchto příznaků by pak mohly být použity k pozdějšímu skokové instrukce za účelem stanovení toku programu.

vyzvednout

Prvním krokem, načíst, a zahrnující získání o instrukci (který je reprezentován číslem nebo sledem čísel) z programové paměti. Umístění Instrukce je (adresa) v programové paměti je určena pultě programu (PC), který ukládá číslo, které identifikuje adresu další instrukce, které mají být přitažené za vlasy. Po poučení je přitažené za vlasy, že je počítač zvýší o délce instrukce tak, že bude obsahovat adresu další instrukce v pořadí. Často instrukce být přitažené za vlasy, musí být získán z relativně pomalé paměti, působit CPU ke stánku zatímco čeká na instrukce, které mají být vráceny. Tento problém je do značné míry řeší moderních procesorů od cache a potrubních architektury (viz níže).

Dekódovat

Instrukce že procesor načte z paměti určuje, jaké CPU udělá. V dekódovací krok, prováděného obvody známé jako dekodéru instrukce , instrukce se převede na signály, které řídí jiné části CPU.

Způsob, jakým se instrukce interpretována je definován CPU instrukční sady architektury (ISA). Často, jedna skupina bitů (to znamená, že „v terénu“) v instrukci, volal operační kód, ukáže kterou operaci je třeba provést, zatímco zbývající pole obvykle poskytují doplňkové informace potřebné pro provoz, jako operandy. Tyto operandy může být určen jako konstantní hodnotu (zvanou okamžitou hodnotu), nebo jako umístění na hodnotu, která může být registr procesor nebo adresa paměti, jak je určeno nějakým adresování režimu .

V některých CPU navrhne instrukce dekodér implementován jako drátového, nezměnitelné okruhu. V jiných zemích, je mikroprogram je používán k převádění příkazů do sady konfiguračních CPU signály, které jsou aplikovány postupně v průběhu několika hodinové impulsy. V některých případech je paměť, která uchovává mikroprogram je přepisovatelné, aby bylo možné změnit způsob, jakým CPU dekóduje instrukce.

Vykonat

Po vyvolávání a dekódovat kroky, provede se provést krok. V závislosti na architektuře procesoru, může to se skládají z jedné akce nebo posloupnost akcí. Během každé akce, různé části CPU jsou elektricky spojeny tak, aby mohli vykonávat všechny nebo část požadovaného provozu a poté dokončení akce, obvykle v reakci na taktu. Velmi často výsledky jsou zapisovány do interní registru CPU pro rychlý přístup pomocí následujících pokynů. V jiných případech mohou být výsledky zapisovány do pomalejší, ale levnější a vyšší kapacitou operační paměti .

Například, v případě, že přídavek instrukce, které mají být proveden, aritmetickou logickou jednotku (ALU), vstupy jsou připojeny k dvojici zdrojů operandu (čísla se sčítají), ALU je konfigurován pro provádění adiční operaci tak, aby se součet jeho operandů vstupů se objeví na jeho výstupu a výstup ALU je připojen k úložiště (např registru nebo paměti), které obdrží částku. Dojde-li takt, bude částka převedena na skladování a v případě, že výsledná částka je příliš velký (tj je větší než výstupní velikost slova ALU), což je přetečení příznak bude nastaven.

Struktura a implementace

Blokové schéma základní jednoprocesorový CPU počítače. Černé čáry označují tok dat, zatímco červené čáry ukazují tok řízení; Šipky označují směr proudění.

Hardwired do obvodů CPU je sada základních operací je možné provádět, nazývá instrukční sadu . Takové operace mohou zahrnovat, například, přičtením nebo odečtením dvou čísel, porovnání dvou čísel, nebo skok na jinou část programu. Každá základní funkce je reprezentována konkrétní kombinace bitů , známé jako strojového jazyka operačním kódu ; Při provádění instrukcí v strojového jazyka programu CPU rozhoduje, jakou operaci provést pomocí „dekódování“ operačním kódu. Kompletní instrukce jazyka Stroj se skládá z operačního kódu a v mnoha případech další kousky, které specifikují argumenty pro provoz (například čísla, které mají být sečteny v případě operaci sčítání). Stoupá rozsah složitosti, jazykový program stroje je sbírka jazykových stroj instrukcí, které procesor vykoná.

Skutečné matematické operace pro každou instrukci se provádí pomocí kombinačních logických obvodů uvnitř procesoru CPU známý jako aritmetickou logickou jednotku nebo ALU. Obecně platí, že CPU vykoná instrukce od jeho načítání z paměti, s využitím svého ALU provést operaci, a poté uložení výsledku do paměti. Kromě návodu k celočíselné matematice a logických operací, existují různé jiné strojové instrukce, jako jsou ty, pro načítání dat z paměti a uložení zpět, větvení operace a matematických operací s pohyblivou řádovou čárkou počtu prováděných CPU matematický koprocesor (FPU ).

Řídící jednotka

Řídící jednotka CPU obsahuje obvody, které využívá elektrické signály řídit celý počítačový systém plnit uložené programové instrukce. Řídicí jednotka neprovádí programové příkazy; spíše jde řídí jiné části systému, aby tak učinily. Řídicí jednotka komunikuje s oběma ALU a paměti.

Aritmetickou logickou jednotku

Symbolické znázornění ALU a její vstupní a výstupní signály

Aritmetická logická jednotka (ALU) je digitální obvod v procesoru, který provádí celé číslo aritmetické a bitové logické operace. Vstupy do ALU jsou datová slova mají být provozována na (volali operandy ), informace o stavu z minulých operací a kód z řídicí jednotky, který indikuje operaci provést. V závislosti na prováděné instrukce, operandy mohou pocházet z vnitřních registrů CPU nebo externí paměti, nebo to mohou být konstanty generované samotným ALU.

Když jsou všechny vstupní signály se usadili a propagovány prostřednictvím obvodů ALU, zobrazí výsledek provedeného provozu na ALU výstupy. Výsledek sestává z obou datové slovo, které mohou být uloženy v registru nebo v paměti a informace o stavu, který je obvykle uložen ve speciálním vnitřním registru CPU vyhrazeném pro tento účel.

jednotka správy paměti (MMU)

Většina high-end mikroprocesory (ve stolních a přenosných počítačů, serverů počítačů) má jednotku správy paměti, že překládají z logických adres na fyzické adresy RAM, které poskytují ochranu paměti a stránkovací schopnosti, vhodné pro virtuální paměť . Jednodušší procesory, zejména mikroprocesory , obvykle neobsahují MMU.

taktovací frekvence

Většina procesorů jsou synchronní obvody , což znamená, že zaměstnat hodinový signál přecházet jejich postupné operace. Hodinový signál je produkován vnějším oscilačního obvodu , který generuje konzistentní počet pulsů za vteřinu ve formě pravidelného obdélníkovou vlnou . Frekvence hodinových pulsů určuje rychlost, kterou CPU vykonává instrukce a tím i rychlejší hodiny, tím více instrukce procesoru bude spouštět každou sekundu.

Pro zajištění správné funkce procesoru, doba hodiny delší než maximální doba potřebná pro všechny signály množit (tah) přes CPU. Při stanovení doby hodiny na hodnotu vysoko nad nejhorším případě šíření zpoždění , je možné navrhnout celý procesor a jak to pohybuje daty kolem „okrajů“ na stoupající a klesající hodinového signálu. To má tu výhodu zjednodušovat CPU významně, a to jak z hlediska designu a komponent počtu perspektivě. Nicméně, to také nese tu nevýhodu, že celý procesor musí čekat na jeho nejpomalejší elementy, i když některé části toho jsou mnohem rychlejší. Tato omezení byla do značné míry kompenzována různými metodami stoupání podobnost CPU (viz níže).

Nicméně, architektonické vylepšení samy o sobě neřeší všechny nevýhod globálně synchronních CPU. Například hodinového signálu podléhá zpoždění jakéhokoli jiného elektrického signálu. Vyšší rychlosti hodin v čím dál tím složitější CPU ztížit udržet hodinového signálu ve fázi (synchronizovat) v celé jednotky. To vedlo mnoho moderních procesorů vyžadovat více identická hodinových signálů, které mají být poskytnuty, aby nedošlo ke zpoždění jediný signál výrazně dost způsobit CPU poruchu. Další důležitou otázkou, jak hodinové sazby dramaticky zvyšovat, je množství tepla, které je odváděno CPU . Neustále se měnící hodiny způsobí mnoho komponent přejít bez ohledu na to, zda jsou používány v té době. Obecně, komponenta, která je přepínání spotřebuje více energie než prvku ve statickém stavu. Proto, jak se zvyšuje rychlosti hodin, tak se spotřeba energie, což způsobuje CPU vyžadovat větší odvod tepla v podobě chlazení procesoru řešení.

Jeden způsob řešení přepínání nepotřebných složek se nazývá hodiny hradlování , který zahrnuje vypnutí hodinového signálu na nepotřebných složek (a účinně je zakázat). Nicméně, toto je často považován za obtížně realizovatelný, a proto nevidí běžný zvyk venku velmi nízkou spotřebou energie vzorů. Jeden pozoruhodný nedávný návrh CPU, která využívá rozsáhlé hodiny hradlování je IBM PowerPC založené Xenon použit v Xbox 360 ; že způsob, požadavky na napájení z konzoly Xbox 360 jsou značně snížena. Jiný způsob řešení některých problémů s globálním signál hodinami je odstranění signálu hodin úplně. Při odstraňování globální hodinový signál je proces navrhování podstatně složitější v mnoha ohledech, asynchronní (nebo clockless) vzorů nesou označen výhody ve spotřebě energie a odvodem tepla ve srovnání s podobnými synchronními designy. Zatímco poněkud neobvyklé, celé asynchronní procesory byly postavené bez využití globální hodinový signál. Dva pozoruhodné příklady tohoto jsou ARM kompatibilní amulet a MIPS kompatibilní MiniMIPS R3000.

Spíše než zcela odstraní hodinový signál, některé designy CPU umožňují určité části zařízení být asynchronní, jako je použití asynchronních ALUs ve spojení s superskalární proudové zpracování, aby se dosáhlo určité aritmetické zvýšení výkonu. I když to není zcela jasné, zda se zcela asynchronní vzory lze provádět na srovnatelné nebo lepší úrovni než jejich protějšky synchronní, je zřejmé, že si aspoň vynikat v jednodušších matematických operací. Toto, kombinoval s jejich vynikající spotřebou energie a vlastnostmi odvádění tepla, dělá je velmi vhodný pro vložené počítače .

integer rozsah

Každý CPU reprezentuje číselné hodnoty v specifickým způsobem. Například, některé časné digitální počítače reprezentovány čísla jako obeznámeni desítkovou (základ 10) číselná soustava hodnot, a jiní zaměstnávala více neobvyklé reprezentace, jako je ternární (základně tři). Téměř všechny moderní procesory představují čísla v binární formě, s každou číslici jsou reprezentovány nějakým dvouhodnotových fyzikální veličiny, jako je „vysoký“ nebo „nízké“ napětí .

Šest-bitové slovo, obsahující binární kódovanou reprezentaci desetinných hodnota 40. Většina moderních procesorů zaměstnávat slovo velikosti mocnina dvou, například 8, 16, 32 nebo 64 bitů.

Vztahující se k číselné reprezentace je velikost a přesnost celých čísel, že CPU může reprezentovat. V případě binární CPU, měří se podle počtu bitů (platné číslice binární kódovaný celé číslo), že procesor může zpracovávat v jednom pracovním kroku, který se běžně nazývá velikost slova , bit šířka , šířka datové cesty , celé číslo přesnost nebo velikosti celé číslo . Velikost celé číslo CPU určuje rozsah celočíselné hodnoty se může přímo působit na. Například 8-bitový procesor může přímo manipulovat celá čísla reprezentované osmi bitů, které mají řadu 256 (2 8 ), oddělených celočíselné hodnoty.

Rozsah celého čísla může také ovlivnit počet paměťových míst CPU může přímo adresa (adresa je celé číslo představující konkrétní umístění v paměti). Například pokud binární procesor používá 32 bitů k reprezentaci adresu paměti pak může přímo řešit 2 32 paměťových míst. Ve snaze obejít toto omezení a pro různé jiné důvody, někteří používají procesory mechanismy (například přepínání banky ), které umožňují další paměť je třeba řešit.

CPU s větší velikostí slov vyžadovat více obvodů a v důsledku toho jsou fyzicky větší, jsou dražší a spotřebuje více energie (a tedy i generovat více tepla). V důsledku toho menší 4- nebo 8-bitové mikrokontroléry se běžně používají v moderních aplikacích, i když CPU s mnohem větší velikosti slova (jako je například 16, 32, 64, a to i 128 bitů) jsou k dispozici. Pokud je potřeba vyšší výkon, nicméně výhody větší velikosti slovo (větší rozsahy dat a adresní prostory) mohou převážit nad nevýhodami. CPU může mít vnitřní datové cesty kratší než velikost slova, jak snížit velikost a cenu. Například, přestože IBM System / 360 instrukční sada byla 32bitový instrukční sadu, Systém / 360 Model 30 a model 40 měl 8-bitové datové cesty do aritmeticko-logická jednotka, takže 32-bit add zapotřebí čtyři cykly, jeden pro každý 8 bitů operandů, a, i když Motorola 68000 série instrukční sada byla 32bitový instrukční sadu, na Motorola 68000 a Motorola 68010 mělo 16-bitové datové cesty v aritmeticko-logická jednotka, takže 32-bit přidat zapotřebí dva cykly.

Chcete-li získat některé z výhod, které nabízí nižší i vyšší bitové délky, mnoho instrukční sady mají různé bitové šířky pro celé číslo a plovoucí desetinnou čárkou dat a umožňuje CPU prováděcí že instrukční sadu mít různé bitové šířky pro různé části zařízení. Například, IBM System / 360 instrukční sada byla v první řadě 32 bitů, avšak podporované 64bitové s pohyblivou řádovou čárkou hodnoty pro usnadnění větší přesnost a rozsah v plovoucí desetinnou čárkou. Systém / 360 Model 65 měl 8-bitové výbavu pro desetinné čárky a pevným bodem binární aritmetiky a 60-bitovou sčítačku pro plovoucí desetinnou čárkou aritmetiky. Mnoho později designy CPU používají podobnou smíšenou bitovou šířku, obzvláště když procesor je určen pro použití pro všeobecné účely, kde je požadována rozumná rovnováha celého čísla a schopnosti pohyblivé čárky.

Rovnoběžnost

Model subscalar procesoru, v němž trvá patnáct hodinových cyklů dokončit tři instrukce

Popis základní operace CPU nabízené v předchozí sekci popisuje nejjednodušší formu že procesor může brát. Tento typ CPU, je obvykle označována jako subscalar , operuje a vykonává jednu instrukci na jeden nebo dva kusy dat v době, která je menší než jedna instrukce za hodinový cyklus ( IPC <1 ).

Tento postup vede ke vzniku vlastní neefektivnosti subscalar CPU. Vzhledem k tomu jen jedna instrukce je provedena v době, musí celý procesor čekat, že instrukce pro dokončení předtím, než přikročí k dalšímu pokynu. Jako výsledek, subscalar CPU dostane „visel“ na základě pokynů, které se více než jeden hodinový cyklus dokončit provedení. Dokonce i přidávání druhý prováděcí jednotku (viz níže) nezlepší výkon hodně; spíše než jedna cesta je zavěsil, nyní dvě cesty jsou zavěšeny a zvyšuje počet nevyužitých tranzistorů. Tento design, ve kterém může exekuční zdroje CPU operovat jen jednu instrukci v době, může jen možná dosáhnout skalární výkon (jedna instrukce na taktu, IPC = 1 ). Nicméně, výkon je téměř vždy subscalar (méně než jedna instrukce za takt, IPC <1 ).

Pokusy o dosažení skalární a lepší výkon vedly v různých metodologií designu, které způsobují, že CPU se chovat méně lineárně a paralelně. Když se odkazuje na podobnost v procesorech, dva termíny jsou obecně používány klasifikovat tyto techniky designu:

  • Instrukce paralelismus (IPK), která usiluje o zvýšení rychlosti, při které instrukce jsou vykonány uvnitř procesoru (to znamená, že ke zvýšení využívání zdrojů on-die provedení);
  • Úkolem paralelismus (TLP), které pro účely zvýšení počtu nití nebo procesů , které procesor může vykonat současně.

Každá metodologie se liší jak ve způsobu, jakým jsou prováděny, stejně jako relativní účinnost jejich dovolit při zvyšování výkonu CPU pro aplikace.

Instrukce paralelismus

Základní pětistupňový potrubí. V nejlepším případě je toto potrubí může udržovat míru dokončení jedné instrukce za takt.

Jeden z nejjednodušších metod používaných k dosažení větší paralelismus má začít první kroky vyzvedávání instrukcí a dekódování dříve, než předchozí instrukce dokončí provádění. Toto je nejjednodušší forma techniky známá jako proudové zpracování instrukcí , a je využit v téměř všech moderních univerzálních CPU. Zřetězení umožňuje více než jedna instrukce, které mají být provedeny v daném čase poškodí vykonání cesty do jednotlivých etap. Tato separace může být ve srovnání s montážní linky, ve které je pokyn z úplnější v každé fázi, dokud se vystupuje z provádění potrubí a je v důchodu.

Zřetězení se však zavádějí možnost pro situaci, kdy je potřeba výsledek předchozí operaci dokončit další operace; Podmínkou často nazývaný konflikt závislostí dat. Ve snaze vyrovnat se s tím musí být navíc dbát na kontrolu těchto druhů podmínek a zpoždění část návodu k potrubí , pokud k tomu dojde. Samozřejmě, že splnění těchto požadavků vyžaduje další obvody, takže pipeline procesory jsou složitější než ty subscalar (i když ne velmi významně tak). Pipeline procesor se může stát velmi téměř skalární, inhibuje pouze potrubní stánky (instrukce utrácet více než jeden hodinový cyklus ve fázi).

Jednoduchý superskalární pipeline. Tím, načítání a odesílání dvě instrukce najednou, maximálně dvou instrukcí za takt může být dokončena.

Další zlepšení na myšlence na proudové zpracování instrukcí vedla k vývoji metody, která snižuje dobu nečinnosti součástí procesoru dokonce ještě více. Vzory, které se říká, že superskalární obsahovat dlouhý instrukční potrubí a více shodných jednotek popravy , například zatížení ukládání jednotek , aritmeticko-logických jednotek , s plovoucí desetinnou čárkou jednotek a jednotek generace adresu . V superskalární potrubí, vícenásobné instrukce jsou číst a přešel na dispečera, který rozhodne, zda instrukce mohou být provedeny paralelně (současně). Pokud tomu tak je, že jsou odeslány k dostupným prováděcích jednotek, což má za následek schopnost pro některé instrukce, které mají být provedeny současně. Obecně platí, že čím více pokyny A superskalární CPU je schopen vyslat současně čekají prováděcích jednotek, tím více instrukce být dokončena v daném cyklu.

Většina z obtíží při navrhování superscalar CPU architektury spočívá ve vytvoření účinného dispečer. Dispečer musí být schopen rychle a správně určit, zda instrukce mohou být provedeny paralelně, stejně jako poseká je takovým způsobem, aby co nejvíce jednotek popravy zaneprázdněný jak je to možné. To vyžaduje, že instrukce potrubí je naplněna tak často, jak je to možné a vede k potřebě v superskalární architektury pro významné množství paměti cache procesoru . To také dělá hazard -avoiding techniky jako předvídání větvení , spekulativní provádění , přejmenování registrů , out-of-objednávat popravy a transakční paměti zásadní pro udržení vysoké úrovně výkonnosti. Tím, že pokouší předpovědět, který větev (nebo cesta) podmíněná instrukce bude trvat, CPU může minimalizovat množství časů že celé potrubí musí počkat, dokud nebude dokončen podmíněné instrukce. Spekulativní provádění často poskytuje mírné zvýšení výkonu spuštěním části kódu, které nemusí být potřeba po podmíněný dokončení operace. Out-of-order provedení poněkud přeskupí pořadí, ve kterém instrukce jsou vykonány redukovat zpoždění kvůli datových závislostí. Také v případě jediného instrukčního toku, více datového toku -a případ, kdy má velké množství dat ze stejného typu jako processed-, moderní procesory mohou zakázat částí potrubí, takže když jedna instrukce je prováděna mnohokrát, CPU přeskočí načtení a dekódování fáze a tím výrazně zvyšuje výkon při určitých příležitostech, a to zejména ve vysoce monotónních programových motory jako je software vytvoření videa a zpracování fotografií.

V případě, že část CPU je superskalární a součástí není, část, která není utrpí snížení výkonu z důvodu plánovacích stánků. Intel P5 Pentium měl dva superscalar ALUs, které by mohly přijímat jednu instrukci za takt každého, ale jeho FPU nemohl přijmout jedna instrukce na hodinovém cyklu. Tak P5 je celé číslo superskalární, ale ne s plovoucí desetinnou čárkou superskalární. Nástupce Intel na P5 architektury, P6 , přidal superskalární schopnosti svých plovoucí desetinnou čárkou funkcí, a tudíž získá významný nárůst plovoucí desetinnou čárkou výkonu instrukcí.

Oba jednoduché zřetězení a superskalární provedení zvýšit IPK CPU tím, že dovolí jediný procesor dokončit provádění pokynů při rychlostech přesahujícími jednu instrukci na hodinovém cyklu. Nejmodernější designy CPU jsou alespoň trochu superscalar, a téměř všichni užitková procesory určené v posledním desetiletí jsou superskalární. V pozdějších letech některé z důrazu při navrhování počítačů high-LDN byla přesunuta z hardwaru CPU a do jeho rozhraní softwaru nebo ISA . Strategie VLIW (VLIW) způsobí nějaký ILP stát se implikovaná přímo u softwaru, redukovat množství práce procesor musí provést posílit ILP a tím snížit složitost navrženého stroje.

Úkolem paralelismus

Další strategií, jak dosáhnout výkonu je spustit více závity nebo procesy paralelně. Tato oblast výzkumu je známá jako paralelních výpočtů . V Flynn taxonomie , tato strategie je známá jako roztroušená instrukčního toku, vícenásobného datového toku (MIMD).

Jedna technologie používaná pro tento účel byl multi-processing (MP). Počáteční chuť této technologie je známý jako symetrické připojení s více (SMP), kde malé množství procesorů sdílí ucelený přehled o jejich paměti systému. V tomto schématu, každý procesor má přídavný hardware udržovat neustále up-to-date pohled na paměti. Vyhýbáním zastaralé názory paměti, že CPU může spolupracovat na stejném programu a programy mohou migrovat z jednoho procesoru na druhý. Pro zvýšení počtu spolupracujících procesorů než hrsti, schémata, jako je nerovnoměrného přístupu do paměti (NUMA) a adresáře na bázi koherence protokolů byla zavedena v roce 1990. SMP systémy jsou omezeny na malý počet procesorů, zatímco NUMA systémy byly postaveny s tisíci procesory. Původně byl postaven vícenásobné použití více diskrétní CPU a desky pro realizaci propojení mezi procesory. Když procesory a jejich propojení jsou provedena na jediném čipu, technologie je známý jako na čipové úrovni připojení s více (CMP), a na jediném čipu, jako multi-core procesor .

Později bylo zjištěno, že jemnější zrna souběžnost existoval jednoho programu. Jediný program může mít několik závitů (nebo funkce), které by mohly být provedeny samostatně nebo paralelně. Některé z prvních příkladů této technologie implementována vstupní / výstupní zpracování, jako je přímý přístup do paměti jako samostatné vlákno z výpočetního závitu. Obecnější přístup k této technologie byla zavedena v roce 1970, kdy byly systémy navrženy tak, aby spuštění více výpočetní vlákna současně. Tato technologie je známá jako multi-threading (MT). Tento přístup je považován za efektivnější než vícenásobné zpracování, protože jen malý počet komponent uvnitř CPU je replikována na podporu MT na rozdíl od celého procesoru v případě, že MP. V MT, provedení jednotky a paměťový systém včetně cache jsou sdíleny mezi více vláken. Nevýhodou MT je, že podpora hardware pro multithreading je více vidět na software než u MP a tak supervizora software jako operační systémy mají podstoupit větší změny na podporu MT. Jeden typ MT, který byl realizován je známý jako časové multithreading , kde je jedno vlákno proveden tak, aby se zastavil čeká na data, která se vrátí z externí paměti. V tomto schématu, CPU by se pak rychle kontext přepnout na jiném vlákně, který je připraven ke spuštění, vypínač často provádí v jednom taktu procesoru, jako je UltraSPARC T1 . Dalším typem MT je simultánní multithreading , kde instrukce z různých nití jsou provedeny paralelně v rámci jednoho CPU hodinového cyklu.

Již několik desítek let od 1970 do počátku roku 2000, zaměřuje na vytváření vysoce výkonných univerzálních procesorů byl do značné míry na dosažení vysoké IPK prostřednictvím technologií jako je pipelining, cache, superskalární provedení, out-of-order provedení, atd Tento trend vyvrcholil ve velkém , síla-hladový procesory, jako je Intel Pentium 4 . Na počátku 2000s, CPU konstruktéři byly zmařeny v dosažení vyššího výkonu od ILP techniky vzhledem k rostoucí odlišnost CPU provozní frekvence a hlavní paměti provozní frekvencí, jakož i stupňující se ztrátový výkon CPU v důsledku více esoterických ILP techniky.

CPU konstruktéři pak půjčil nápady od komerčních výpočetních trhů, jako je zpracování transakcí , kdy celkový výkon většího počtu programů, také známý jako propustnost je důležitější než výkon jednoho vlákna nebo procesu na počítači,.

Tento zvrat důraz svědčí šíření dvou- a více vzorů core procesory a to zejména novější designy Intelu připomínající jeho méně superscalar P6 architektury. Pozdní návrhy v několika procesory rodiny výstavní CMP, včetně x86-64 Opteron a Athlon 64 X2 je SPARC UltraSPARC T1 , IBM POWER4 a POWER5 , stejně jako několik herní konzole CPU Stejně jako Xbox 360 triple-core procesorem PowerPC designu ‚s, a PlayStation 3 ‚s 7-core Cell mikroprocesor .

Data paralelismus

Méně časté, ale stále důležitější paradigma procesorů (a opravdu, computing obecně) se zabývá dat paralelismus. Procesory diskutované dříve, jsou označovány jako nějaký druh skalární zařízení. Jak už název napovídá, vektorové procesory vypořádat s několika kusy dat v rámci jedné instrukce. To kontrastuje s skalární procesory, které se zabývají jedním kusem dat pro každou instrukci. Použití Flynn taxonomie , tyto dvě schémata týkající se údajů o jsou obecně označovány jako jediné instrukčního toku, vícenásobné toku dat (SIMD) a jednoho instrukčního toku, jednoho datového toku (SISD), v daném pořadí. Velkou nástroj na vytváření procesory, které se zabývají vektory dat spočívá v optimalizaci úkoly, které mají tendenci vyžadovat stejnou operaci (například součet nebo skalární součin ), která má být provedena na velkém souboru dat. Některé klasické příklady těchto typů úloh zahrnují multimediálních aplikací (obrázky, video a zvukové), stejně jako mnoho druhů vědeckých a technických úkolů. Vzhledem k tomu, skalární procesor musí dokončit celý proces načítání, dekódování a provádění každé instrukce a hodnotu v souboru dat, vektor procesor může provádět jednu operaci na poměrně velkém souboru dat s jednou instrukcí. To je možné pouze tehdy, když aplikace inklinuje vyžadovat mnoho kroků, které se vztahují jednu operaci ve velkém souboru dat.

Většina vektorové procesory brzy, jako je Cray-1 , bylo spojeno téměř výhradně s vědeckým výzkumem a kryptografických aplikacích. Nicméně, jak multimédia do značné míry přesunula na digitální média, potřeba nějaké formy SIMD v procesorech pro všeobecné účely se stal významný. Krátce po zahrnutí s plovoucí desetinnou čárkou jednotek začaly být samozřejmostí v procesorech pro všeobecné účely, specifikace a realizace SIMD prováděcích jednotek také začaly objevovat pro procesory univerzální. Některé z těchto časných SIMD specifikací - jako HP Multimedia zrychlení Extensions (MAX) a Intel MMX - byly integer-only. To se ukázalo být významnou překážkou pro některé vývojáře softwaru, protože mnoho aplikací, které těží z SIMD především vypořádat s plovoucí desetinnou čárkou čísla. Postupně, vývojáři rafinovaný a přepracován tyto časné návrhy do některé z běžných moderních SIMD specifikací, které jsou obvykle spojeny s jedním ISA. Některé pozoruhodné moderní příklady zahrnují Intel SSE a PowerPC-související AltiVec (také známý jako VMX).

Virtuální procesory

Cloud computing může zahrnovat dělení provoz CPU do virtuálních centrálních procesorových jednotek ( vCPU s).

Hostitel je virtuální ekvivalent fyzického stroje, na kterém je virtuální systém pracuje. Když existuje několik fyzických strojů působí v tandemu a spravovány jako celek, seskupené výpočetní a paměťové zdroje tvoří shluk . V některých systémech je možné dynamicky přidávat a odebírat z clusteru. Prostředky k dispozici na hostitelské a clusteru úrovni lze rozdělit se do zdroje bazény s jemnou zrnitostí .

Výkon

Výkon nebo rychlost na procesoru závisí na tom, kromě mnoha jiných faktorů, hodiny sazba (obvykle uveden v násobcích hertzů ) a návod na clock (IPC), které dohromady představují faktory pro instrukcí za sekundu (IPS), že CPU může vykonávat. Mnoho hlášeny hodnoty IPS představovaly „špička“ spuštění sazby z umělých instrukčních sekvencí s několika pobočkami, zatímco reálné zátěže se skládá z kombinace příkazů a aplikací, z nichž některé trvat déle spustit než ostatní. Výkonnost paměťové hierarchie také výrazně ovlivňuje výkon procesoru, problém stěží považován ve výpočtech MIPS. Vzhledem k těmto problémům, různé standardizované testy, často nazýván „standardy“ pro tento účel, jako je SPECint , byly vyvinuty s cílem pokusit se měří skutečnou efektivní výkon v běžně používaných aplikací.

Zpracování výkonu počítačů je zvýšena použitím vícejádrové procesory , které v podstatě je připojení do elektrické sítě dvou nebo více jednotlivých procesorů (nazývané jádra v tomto smyslu) do jednoho integrovaného obvodu. V ideálním případě, dvoujádrový procesor by bylo téměř dvakrát tak silný jako jediný core procesor. V praxi nárůst výkonu je mnohem menší, jen asi 50%, vzhledem k nedokonalé softwarové algoritmy a implementace. Zvýšení počtu jader v procesoru (tj dual-core, quad-core, atd), zvyšuje zátěž, která může být zpracována. To znamená, že procesor může nyní zpracovat řadu asynchronní události, přerušení, atd, které mohou mít mýtné na CPU, když přemohl. Tato jádra mohou být považována za různých patrech ve zpracovatelském zařízení, přičemž manipulační každé patro jiný úkol. Někdy se tato jádra zpracovávat stejné úkoly jako jader sousedících s nimi, když jeden jádro nestačí zpracovat informace.

Vzhledem ke specifickým možnostem moderních procesorů, jako je Hyper-Threading a uncore , které zahrnují sdílení aktuálních prostředků procesoru a zároveň zaměřené na zvýšené využívání, sledování úrovně výkonnosti a využití hardwaru postupně stala složitější úkol. V reakci na některé procesory provádět další hardwarovou logiku, která sleduje skutečné využití různých částí procesoru a poskytuje různé čítače, které jsou přístupné softwaru; Příkladem je Intel Performance Counter Monitor technologie.

viz též

Poznámky

Reference

externí odkazy

Poslechněte si tento článek (2 díly)  · (info)
Tento zvukový soubor byl vytvořen od revize článku „ centrální procesorová jednotka “ ze dne 2006-06-13, a neodráží následné úpravy k článku. ( Audio nápověda )