centrální procesorová jednotka

Viz také: počítačová architektura a digitální obvod.

Enteros Rangeedit

způsob, jakým CPU představuje čísla, je možnost návrhu, která ovlivňuje nejzákladnější způsoby fungování zařízení. Některé z prvních digitálních kalkulaček používaly k internímu reprezentování čísel elektrický model společného systému desítkových čísel (základní deset). Některé jiné počítače používají exotičtější číslovací systémy, jako je ternární (základna tři). Téměř všechny moderny CPU představují čísla v binární podobě, kde každá číslice je reprezentována určitým fyzickým množstvím dvou hodnot, jako je „vysoké“ nebo „nízké“napětí.

mikroprocesor MOS 6502 v duálním in-line balíčku, velmi populární 8bitový design.

numerické znázornění souvisí s velikostí a přesností čísel, která může CPU reprezentovat. V případě binárního CPU se bit týká významné pozice v číslech, se kterými procesor pracuje. Počet bitů (nebo číselných pozic nebo číslic), které CPU používá k reprezentaci čísel, se často nazývá „velikost slova“, „šířka bitů“, „šířka datové cesty „nebo“ celočíselná přesnost“, když se jedná výhradně o celá čísla (na rozdíl od čísel s plovoucí desetinnou čárkou). Toto číslo se liší mezi architekturami a často v různých jednotkách stejného CPU. Například 8bitový procesor zpracovává řadu čísel, která mohou být reprezentována osmi binárními číslicemi, přičemž každá číslice má dvě možné hodnoty, a v kombinaci 8 bitů s 28 nebo 256 diskrétními čísly. Ve skutečnosti velikost celého čísla nastavuje hardwarový limit na rozsah celých čísel, které software běží a které CPU může používat přímo.

celočíselný rozsah může také ovlivnit počet paměťových pozic, které CPU může adresovat (lokalizovat). Pokud například binární procesor používá 32 bitů k reprezentaci adresy paměti a každá adresa paměti představuje jeden bajt (8 bitů), maximální množství paměti, kterou může CPU adresovat, je 232 bajtů nebo 4 GB. Jedná se o velmi jednoduchý pohled na adresový prostor CPU a mnoho návrhů moderna používá mnohem složitější adresní metody, jako je stránkování, k nalezení více paměti, než by celý rozsah umožnil s plochým adresním prostorem.

vyšší úrovně celého číselného rozsahu vyžadují více struktur pro zpracování dalších číslic, a proto větší složitost, velikost, spotřebu energie a obecně náklady. Proto není neobvyklé vidět 4-a 8-bitové mikrokontroléry používané v aplikacích moderna, i když jsou k dispozici procesory s mnohem vyšším rozsahem (16, 32, 64 a dokonce 128bitové). Jednodušší mikrokontroléry jsou obecně levnější, spotřebovávají méně energie a tím odvádějí méně tepla. To vše mohou být důležité konstrukční úvahy pro elektronická zařízení. Ve špičkových aplikacích jsou však výhody plynoucí z dalšího rozsahu (častěji z dodatečného adresního prostoru) významnější a často ovlivňují možnosti návrhu. Pro získání některých výhod poskytovaných nižšími i vyššími délkami bitů je mnoho procesorů navrženo s různými šířkami bitů pro různé jednotky zařízení. Například IBM System / 370 používal CPU, který byl většinou 32bitový, ale používal 128bitovou přesnost v rámci svých jednotek s plovoucí desetinnou čárkou, aby usnadnil větší přesnost a rozsah čísel s plovoucí desetinnou čárkou. Mnoho pozdějších návrhů CPU používá podobnou kombinaci šířky bitů, zvláště když je procesor navržen pro univerzální použití, kde je vyžadována přiměřená rovnováha mezi celočíselnou a pohyblivou řádovou čárkou.

frekvence Hodineditovat

Hlavní článek: Frekvence hodin

většina procesorů a skutečně většina sekvenčních logických zařízení je synchronní povahy. To znamená, že jsou navrženy a pracují na základě synchronizačního signálu. Tento signál, známý jako hodinový signál, má obvykle podobu periodické čtvercové vlny. Výpočtem maximální doby, po kterou se elektrické signály mohou pohybovat na různých vidlicích mnoha obvodů CPU, mohou návrháři vybrat vhodné období pro hodinový signál.

toto období by mělo být delší, než je doba potřebná pro pohyb signálu nebo šíření v nejhorším případě. Nastavením periody hodin na mnohem vyšší hodnotu při nejhorším zpoždění šíření je možné navrhnout celý procesor a způsob, jakým pohybuje data kolem „okrajů“ vzestupu a pádu hodinového signálu. To má tu výhodu, že výrazně zjednodušuje CPU, a to jak z hlediska návrhu, tak z hlediska množství komponent. To má však také tu nevýhodu, že celý procesor musí čekat na své pomalejší prvky, i když některé jeho jednotky jsou mnohem rychlejší. Toto omezení bylo do značné míry kompenzováno několika způsoby zvyšování paralelismu CPU (viz níže).

samotná architektonická vylepšení však neřeší všechny nevýhody globálně synchronních procesorů. Například hodinový signál podléhá zpoždění jakéhokoli jiného elektrického signálu. Vyšší rychlosti hodin na stále složitějších procesorech ztěžují udržování hodinového signálu ve fázi (synchronizované) v celé jednotce. To vedlo k mnoha procesorům moderna, které vyžadují více identických hodinových signálů, aby se zabránilo zpomalení jediného signálu natolik, aby došlo k poruše procesoru. Dalším velkým problémem, když se rychlost hodin dramaticky zvyšuje, je množství tepla, které je rozptýleno CPU. Hodinový signál se neustále mění, což způsobuje přepínání mnoha komponent (změna stavu) bez ohledu na to, zda jsou v té době používány. Obecně platí, že součást, která mění stav, používá více energie než prvek ve statickém stavu. Proto, jak se zvyšuje rychlost hodin, tak i odvod tepla, což způsobuje, že CPU vyžaduje účinnější řešení chlazení.

jeden způsob řešení přepínání nepotřebných součástí se nazývá hodinová brána, která zahrnuje vypnutí hodinového signálu na nepotřebné komponenty a jejich účinné vypnutí. To je však často považováno za obtížné implementovat, a proto nevidí žádné běžné použití mimo návrhy s velmi nízkým výkonem. Pozoruhodný pozdní design CPU, který používá širokou hodinovou bránu ke snížení požadavků na napájení herní konzole, je Xbox 360 založený na IBM PowerPC. Dalším způsobem řešení některých problémů globálního hodinového signálu je jeho úplné odstranění. Zatímco odstranění celkového signálu z hodin v mnoha ohledech činí proces návrhu podstatně složitější, ve srovnání s podobnými synchronními konstrukcemi mají asynchronní (nebo non-clock) návrhy výrazné výhody ve spotřebě energie a odvodu tepla. Ačkoli vzácné, plné procesory byly postaveny bez použití globálního hodinového signálu. Dva pozoruhodné příklady toho jsou AMULET, který implementuje architekturu ARM, a MiniMIPS, který podporuje MIPS R3000. Namísto úplného odstranění hodinového signálu některé návrhy CPU umožňují, aby určité jednotky zařízení byly asynchronní, například použití ALU ve spojení s superscalar pipelining k dosažení některých zisků v aritmetickém výkonu. I když není zcela jasné, zda plně asynchronní návrhy mohou fungovat na srovnatelné nebo lepší úrovni než jejich synchronní protějšky, Je zřejmé, že alespoň vynikají v nejjednodušších matematických operacích. To v kombinaci s jejich vynikající spotřebou energie a charakteristikami rozptylu tepla je činí vhodnými pro vestavěné systémy.

Parallelismedit

Hlavní článek: paralelní výpočty
Model subskalárního procesoru. Všimněte si, že dokončení tří pokynů trvá patnáct cyklů.

popis základní operace CPU nabízené v předchozí části popisuje nejjednodušší formu CPU může mít. Tento typ CPU, obvykle označovaný jako subscale, pracuje a provádí jednu instrukci s jedním nebo dvěma daty najednou.

tento proces má za následek inherentní neefektivnost procesorů subscale. Protože se provádí pouze jedna instrukce najednou, musí celý procesor počkat na dokončení této instrukce, než přistoupí k další instrukci. Výsledkem je, že subskalární procesor je „paralyzován“ v pokynech, které k dokončení provádění vyžadují více než jeden hodinový cyklus. Dokonce ani přidání druhé spouštěcí jednotky (viz níže) výrazně nezlepší výkon. Místo namrzání jedné silnice jsou nyní paralyzovány dvě silnice a zvyšuje se počet nevyužitých tranzistorů. Tento návrh, kde prostředky pro provádění CPU mohou pracovat pouze s jednou instrukcí najednou, může dosáhnout pouze skalárního výkonu (jedna instrukce na hodinový cyklus). Výkon je však téměř vždy subcale (méně než jedna instrukce na cyklus).

pokusy o dosažení skalárního a lepšího výkonu vedly k řadě metod návrhu, díky nimž se CPU chová méně lineárně a více paralelně. Pokud jde o paralelismus v procesorech, obvykle se pro klasifikaci těchto návrhových technik používají dva termíny.

  • paralelismus na úrovni instrukcí (ILP) usiluje o zvýšení rychlosti provádění instrukcí v CPU, tj.
  • rovnoběžnost úrovně podprocesu (TLP), jejímž cílem je zvýšit počet podprocesů (efektivně jednotlivé programy), které může CPU běžet současně.

každá metodika se liší jak způsobem, jakým jsou implementovány, tak relativní efektivitou, kterou produkují při zvyšování výkonu CPU pro aplikaci.

ILP: segmentace a Superscalar architectureeditovat

Hlavní články: segmentace (Elektronika) a Superscalar.
základní pětistupňové potrubí. V nejlepším případě může tato trubka udržet míru dokončení jedné instrukce na cyklus.

jednou z nejjednodušších metod zvyšování paralelismu je zahájení prvních kroků čtení a dekódování instrukce před dokončením předchozí instrukce. Jedná se o nejjednodušší formu techniky známé jako instrukční pipelining a používá se téměř ve všech procesorech moderna general purpose. Rozdělením cesty provádění do diskrétních fází umožňuje potrubí provádět více než jednu instrukci najednou. Toto oddělení lze porovnat s montážní linkou, ve které je instrukce v každém stupni úplnější, dokud neopustí prováděcí trubku a nebude z ní odstraněna.

potrubí však zavádí možnost situace, kdy je nutné ukončit výsledek předchozí operace, aby bylo možné dokončit další operaci; stav často nazývaný konflikt závislosti na datech. Abychom se s tím vyrovnali, je třeba věnovat zvláštní pozornost kontrole těchto druhů podmínek, a pokud k tomu dojde, musí být část instrukčního potrubí zpožděna. Samozřejmě, dosažení tohoto cíle vyžaduje další obvody, potrubní procesory jsou složitější než subškály, ale ne moc. Potrubní procesor se může stát téměř úplně skalárním, pouze inhibován náhlými zastávkami potrubí(instrukce trvající více než jeden hodinový cyklus ve fázi).

jednoduchá segmentace superscalar. Čtením a odesláním dvou pokynů najednou lze dokončit maximálně dva pokyny na cyklus.

další zlepšení oproti myšlence instrukčního pipeliningu vedlo k vývoji metody, která dále snižuje dobu nečinnosti komponent CPU. Návrhy, o nichž se říká, že jsou superscalary, zahrnují dlouhý instrukční potrubí a několik identických prováděcích jednotek. V superskalárním potrubí se přečte více pokynů a předá se dispečerovi, který rozhodne, zda mohou být pokyny provedeny paralelně (současně). Pokud ano, jsou odeslány do dostupných prováděcích jednotek, což má za následek možnost provést několik pokynů současně. Obecně platí, že čím více instrukcí je SUPERSCALAR CPU schopen současně odeslat do pohotovostních jednotek, tím více instrukcí bude dokončeno v daném cyklu.

většina obtíží při navrhování architektury SUPERSCALAR CPU spočívá ve vytvoření efektivního dispečera. Dispečer musí být schopen rychle a správně určit, zda lze pokyny provádět paralelně,a také je odeslat způsobem, který udržuje co nejvíce obsazených jednotek. To vyžaduje, aby instrukční potrubí bylo vyplněno co nejčastěji, a zvyšuje potřebu v superscalárních architekturách pro značné množství mezipaměti CPU. To také vytváří techniky, jak se vyhnout nebezpečím, jako je predikce vidliček, spekulativní provedení a provedení mimo objednávku, které jsou zásadní pro udržení vysoké úrovně výkonu. Pokusem předpovědět, kterou větev (nebo cestu) bude mít podmíněná instrukce, může CPU minimalizovat počet, kolikrát musí celý kanál počkat, dokud nebude dokončena podmíněná instrukce. Spekulativní provedení často poskytuje mírné zvýšení výkonu provedením částí kódu, které nemusí být nutné po dokončení podmíněné operace. Mimo příkaz k provedení nějak změní pořadí, ve kterém jsou pokyny prováděny, aby se snížilo zpoždění způsobené závislostmi dat. Také v případě jednotlivých pokynů více dat-moderní procesory, v případě, že jste zpracovali velké množství dat stejného typu, můžete deaktivovat části potrubí, takže když mnohokrát spustíte jednu větu, CPU přeskočí fáze snímání a dekódování, a tím výrazně zvyšuje výkon při určitých příležitostech, zejména v motorech programů vysoce monotónní jako software pro vytváření videa a zpracování fotografií.

v případě, že část CPU je superscalární a část není, část, která není superscalární, trpí výkonem kvůli časovým zastávkám. Původní Intel Pentium (P5) měl dva Superscalar ALUs, které by mohly přijmout, každý, jednu instrukci za hodinový cyklus, ale jeho FPU nemohl přijmout jednu instrukci za hodinový cyklus. P5 byl tedy superscalar v části celých čísel, ale nebyl superscalar čísel s plovoucí desetinnou čárkou. Nástupce architektury Pentium společnosti Intel, P6, přidal funkce superscalar ke svým funkcím s pohyblivou řádovou čárkou, a tak výrazně zvýšil výkon těchto pokynů.

jak superscalar design, tak jediný kryt zvyšují ILP CPU tím, že umožňují jedinému procesoru dokončit provádění instrukcí v poměrech, které přesahují jednu instrukci na cyklus (IPC). Většina návrhů CPU moderna je přinejmenším poněkud superscalar a v posledním desetiletí jsou téměř všechny návrhy CPU pro všeobecné použití superscalar. V posledních letech se část důrazu na vysoký design počítače ILP přesunula z hardwaru CPU do softwarového rozhraní nebo ISA. Velmi dlouhá strategie instrukčních slov, nebo VLIW, způsobuje, že některé ILP jsou implikovány přímo softwarem, což snižuje množství práce, kterou musí CPU provést, aby významně podpořilo ILP, a tím snížilo složitost návrhu.

Paralelismedit na úrovni vláken

další strategií pro dosažení výkonu je paralelní spuštění více programů nebo vláken. Tato oblast výzkumu je známá jako paralelní výpočty. Ve flynnově taxonomii je tato strategie známá jako multiple multi-data instructions nebo MIMD.

jednou z technologií používaných pro tento účel bylo multiprocessing (MP). Začátek této technologie je známý jako symetrický multiprocessing (SMP), kde malý počet procesorů sdílí koherentní pohled na jejich paměťový systém. V tomto schématu má každý procesor další hardware, který udržuje neustále aktualizovaný pohled na paměť. Aby se zabránilo zastaralým návštěvám paměti, CPU mohou spolupracovat ve stejném programu a programy mohou migrovat z jednoho procesoru na druhý. Aby se zvýšil počet spolupracujících procesorů nad několik, byla v roce 1990 zavedena schémata, jako je nerovnoměrný přístup do paměti (NUMA) a koherenční protokoly založené na adresářích. Systémy SMP jsou omezeny na malý počet procesorů, zatímco systémy NUMA byly postaveny s tisíci procesorů. Zpočátku, multiprocessing byl postaven pomocí více diskrétních procesorů a desek k implementaci propojení mezi procesory. Když byly procesory a jejich propojení implementovány na jednom křemíkovém čipu, technologie je známá jako vícejádrový procesor.

později bylo uznáno, že existuje velmi blízký paralelismus s jediným programem. JEDEN program může mít několik podprocesů (nebo funkcí), které lze spustit samostatně nebo paralelně. Některé rané příklady této technologie implementovaly vstupní / výstupní zpracování, jako je přímý přístup do paměti jako samostatné vlákno od vypočteného vlákna. V 70. letech byl zaveden obecnější přístup k této technologii, kdy byly systémy navrženy pro paralelní spouštění více výpočetních vláken. Tato technologie je známá jako multithreading (MT).

tento přístup je považován za nákladově efektivnější než multiprocesing, protože pouze malý počet komponent v CPU je replikován tak, aby podporoval MT na rozdíl od celého CPU v případě MP. V MT jsou spouštěcí jednotky a paměťový systém včetně mezipaměti sdíleny mezi více vlákny. Nevýhodou MT je, že hardwarová podpora pro multithreading je pro software viditelnější než podpora MP, a proto supervisor software a operační systémy musí projít většími změnami, aby podporovaly MT. Jeden typ MT, který byl implementován, je známý jako vícevláknový blok, kde je vlákno spuštěno, dokud není paralyzováno a čeká na návrat dat z externí paměti. V tomto schématu by CPU musel rychle přepnout na jiné vlákno, které je připraveno ke spuštění, přepínač mnohokrát provádí hodinový cyklus CPU, jako je technologie UltraSPARC. Jiný typ MT se nazývá simultánní multithreading, kde jsou vícevláknové instrukce prováděny paralelně v rámci hodinového cyklu CPU.

Data Parallelismedit

Hlavní články: vektorový procesor a SIMD.

méně běžné, ale stále důležitější paradigma CPU (a skutečně výpočetní technika obecně) se zabývá vektory. Výše uvedené procesory jsou označovány jako určitý typ skalárního zařízení. Jak název napovídá, vektorové procesory se zabývají více kusy dat v kontextu jedné instrukce, na rozdíl od skalárních procesorů, které se zabývají jedním kusem dat pro každou instrukci. Tyto dva systémy zpracování dat jsou obecně označovány jako sisd (single instruction, single data) a SIMD (single instruction, multiple data). Velký nástroj při vytváření procesorů, které se zabývají datovými vektory, spočívá v optimalizaci úkolů, které mají tendenci vyžadovat stejnou operaci, například součet nebo skalární produkt, který má být proveden na velké sadě dat. Některé klasické příklady tohoto typu úkolu jsou multimediální aplikace (obrázky, video a zvuk), stejně jako mnoho typů vědeckých a technických úkolů. Zatímco skalární CPU musí dokončit celý proces čtení, dekódování a provádění každé instrukce a hodnoty na datovém souboru, vektorový procesor může provádět jednoduchou operaci na poměrně velkém datovém souboru s jednou instrukcí. To je samozřejmě možné pouze tehdy,když aplikace má tendenci vyžadovat mnoho kroků, které aplikují jednu operaci na velkou sadu dat.

většina časných vektorových procesorů, jako je Cray-1, byla spojena téměř výhradně s vědeckým výzkumem a kryptografickými aplikacemi. Jak se však multimédia přesunula do značné míry na digitální média, potřeba nějaké formy SIMD v univerzálních procesorech se stala významnou. Brzy poté, co se stalo běžným zahrnout jednotky s plovoucí desetinnou čárkou do procesorů pro všeobecné použití, začaly se objevovat také specifikace a implementace jednotek SIMD pro univerzální procesory. Některé z těchto raných specifikací SIMD, jako je Intel MMX, byly pouze pro celá čísla. To se ukázalo jako významná překážka pro některé vývojáře softwaru, protože mnoho aplikací, které využívaly SIMD, se většinou zabývalo čísly s plovoucí desetinnou čárkou. Postupně, tyto rané návrhy byly rafinovány a přepracovány do některých běžných, SPECIFIKACE moderna SIMD, které jsou obecně spojeny s ISA. Mezi významné příklady moderny patří Intel SSE a PowerPC související AltiVec (také známý jako VMX).

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.