Centrální procesorová jednotka
Blokové schéma základní jednoprocesorové-CPU počítače. Černé čáry označují tok dat, zatímco červené čáry označují tok řízení; šipky označují směr toku.
pevně zapojený do obvodů CPU je sada základních operací, které může provádět, nazývaná sada instrukcí. Takové operace mohou zahrnovat například přidání nebo odečtení dvou čísel, porovnání dvou čísel nebo skákání do jiné části programu., Každý základní operace je zastoupena určitá kombinace bitů, známý jako stroj, jazyk opcode; při provádění instrukce ve strojovém jazyce program, CPU rozhodne, které operace provést pomocí „dekódování“ opcode. Kompletní instrukce strojového jazyka se skládá z opcode a v mnoha případech dalších bitů, které specifikují argumenty pro operaci (například čísla, která mají být shrnuta v případě operace sčítání). Když jde o stupnici složitosti, program strojového jazyka je sbírka instrukcí strojového jazyka, které CPU provede.,
skutečná matematická operace pro každou instrukci se provádí kombinačním logickým obvodem v procesoru CPU známém jako aritmetická logická jednotka nebo ALU. CPU obecně provádí instrukci načtením z paměti, použitím ALU k provedení operace a následným uložením výsledku do paměti., Vedle pokynů pro celé matematiky a logických operací, různé jiné stroje existovaly pokyny, jako jsou ty, pro načítání dat z paměti a ukládání je zpět, větvení operací a matematické operace s pohyblivou řádovou čárkou čísla, provádí CPU“s floating-point unit (FPU).
Control unitEdit
řídicí jednotka (CU) je součástí procesoru, který řídí provoz procesoru., Říká paměti počítače, aritmetické a logické jednotky a vstupní a výstupní zařízení, jak reagovat na pokyny, které byly odeslány do procesoru.
řídí provoz ostatních jednotek poskytováním časovacích a řídicích signálů. Většina počítačových zdrojů je spravována CU. Řídí tok dat mezi CPU a ostatními zařízeními. John von Neumann zahrnoval řídící jednotku jako součást architektury von Neumann., V moderních počítačových návrzích je řídicí jednotka obvykle vnitřní součástí procesoru s jeho celkovou rolí a provozem beze změny od jeho zavedení.
Aritmetické logické unitEdit
Symbolické reprezentace ALU a jeho vstupní a výstupní signály
aritmetickou logickou jednotku (ALU) je digitální obvod v procesoru, která provádí celočíselné aritmetické a bitové logické operace., Vstupy do ALU jsou datová slova, která mají být provozována (nazývaná operandy), informace o stavu z předchozích operací a kód z řídicí jednotky označující, kterou operaci provést. V závislosti na provedené instrukci mohou operandy pocházet z interních registrů CPU nebo externí paměti, nebo mohou být konstanty generované samotným ALU.
když se všechny vstupní signály usadily a šířily obvody ALU, výsledek provedené operace se objeví na výstupech ALU., Výsledek se skládá jak z datového slova, které může být uloženo v registru nebo paměti, tak ze stavových informací, které jsou obvykle uloženy ve speciálním interním registru CPU vyhrazeném pro tento účel.
Adresa generace unitEdit
Adresa generace jednotky (AGU), někdy také nazývaný adresu výpočetní jednotka (ACU), je provedení jednotky uvnitř PROCESORU, který vypočítává adresy používá CPU pro přístup k hlavní paměti., Tím, že adresa výpočty zpracovány samostatné obvody, které pracuje souběžně s ostatními CPU počet CPU cyklů, které jsou potřebné pro vykonávání různých strojových instrukcí může být snížena, přináší vylepšení výkonu.
Při provádění různých operací, Procesory potřebují pro výpočet adresy paměti potřebné pro načítání dat z paměti; například, v paměti pozice prvků pole musí být vypočtena před CPU může načítat data ze skutečné umístění paměti., Tyto výpočty generování adres zahrnují různé celočíselné aritmetické operace, jako je sčítání, odčítání, modulo operace, nebo bitové posuny. Výpočet adresy paměti často zahrnuje více než jednu univerzální strojovou instrukci, která nemusí nutně dekódovat a provádět rychle. Začleněním AGU do CPU design, společně se zavedením specializované instrukce, které používají AGU, různé adresy generace výpočty mohou být vyložen od zbytku CPU, a mohou často být provedeny rychle v jediném CPU cyklu.,
schopnosti AGU závisí na konkrétním CPU a jeho architektuře. Některé Agu tedy implementují a vystavují více operací výpočtu adresy, zatímco některé také zahrnují pokročilejší specializované pokyny, které mohou pracovat na více operandách najednou. Navíc, některé CPU architektur patří více AGUs tak více než jednu adresu-výpočet operace mohou být provedeny současně, přináší další zlepšení výkonu tím, že vydělávat na superskalárních povahu advanced CPU., Například, Intel zahrnuje více AGUs do jeho Sandy Bridge a Haswell microarchitectures, které zvyšují šířku pásma PROCESORU paměťový subsystém tím, že více paměti-přístup instrukce mají být provedeny paralelně.
Memory management unit (MMU)Upravit
Většina high-end mikroprocesorů (desktop, laptop, server, počítače), memory management unit, překládá logické adresy na fyzické adresy RAM, poskytuje ochranu paměti a stránkovacího schopnosti, užitečné pro virtuální paměť., Jednodušší procesory, zejména mikrokontroléry, obvykle nezahrnují MMU.
CacheEdit
CPU cache je hardwarové vyrovnávací paměti používané v centrální procesorové jednotky (CPU) počítače ke snížení průměrných nákladů (času nebo energie) pro přístup k datům z hlavní paměti. Cache je menší, rychlejší paměť, blíže k jádru procesoru, který ukládá kopie dat z často používaných míst hlavní paměti. Většina procesorů má různé nezávislé mezipaměti, včetně instrukcí a datových mezipamětí, kde je datová mezipaměť obvykle organizována jako hierarchie více úrovní mezipaměti (L1, L2, L3, L4 atd.,).
všechny moderní (rychlé) procesory (s několika specializovanými výjimkami) mají více úrovní mezipaměti CPU. První procesory, které používaly mezipaměť, měly pouze jednu úroveň mezipaměti; na rozdíl od pozdějších mezipamětí úrovně 1 nebyla rozdělena na L1d (pro data) a L1i (pro instrukce). Téměř všechny současné procesory s mezipamětí mají rozdělenou mezipaměť L1. Mají také mezipaměti L2 a pro větší procesory i mezipaměti L3. Mezipaměť L2 obvykle není rozdělena a funguje jako společné úložiště pro již rozdělenou mezipaměť L1. Každé jádro vícejádrového procesoru má vyhrazenou mezipaměť L2 a obvykle není sdíleno mezi jádry., Mezipaměť L3 a mezipaměti vyšší úrovně jsou sdíleny mezi jádry a nejsou rozděleny. Mezipaměť L4 je v současné době neobvyklá a je obecně na dynamické paměti s náhodným přístupem (DRAM), spíše než na statické paměti s náhodným přístupem (SRAM), na samostatné matrici nebo čipu. To byl také případ historicky s L1, zatímco větší čipy umožnily jeho integraci a obecně všechny úrovně mezipaměti, s možnou výjimkou poslední úrovně. Každá další úroveň mezipaměti má tendenci být větší a být optimalizována odlišně.,
existují jiné typy mezipaměti (které se nezapočítávají do „velikosti mezipaměti“ nejdůležitějších výše uvedených mezipamětí), jako je vyrovnávací paměť lookaside (TLB), která je součástí jednotky pro správu paměti (MMU), kterou má většina procesorů.
mezipaměti jsou obecně dimenzovány na síly dvou: 4, 8, 16 atd. KiB nebo MiB (pro větší non-L1) velikosti, ačkoli IBM Z13 má 96 KiB L1 instrukční mezipaměť.
clock rateEdit
většina procesorů jsou synchronní obvody, což znamená, že používají hodinový signál pro tempo jejich sekvenčních operací., Hodinový signál je produkován obvodem externího oscilátoru, který generuje konzistentní počet impulzů každou sekundu ve formě periodické čtvercové vlny. Frekvence taktovacích pulsů určuje rychlost, s jakou CPU provádí pokyny, a tím rychleji hodiny, tím více pokynů CPU provede každou sekundu.
pro zajištění správného fungování CPU je doba hodin delší než maximální doba potřebná pro šíření (přesun) všech signálů přes CPU., V nastavení hodin období na hodnotu no nad nejhorším případě zpoždění propagace, je možné navrhnout celý CPU a způsob, jakým se pohybuje data kolem „hrany“ stoupající a klesající hodinový signál. To má tu výhodu, že výrazně zjednodušuje CPU, a to jak z hlediska návrhu, tak z hlediska počtu komponent. Má však také tu nevýhodu, že celý procesor musí čekat na nejpomalejších prvcích, i když některé jeho části jsou mnohem rychlejší. Toto omezení bylo do značné míry kompenzováno různými způsoby zvyšování paralelismu CPU (viz níže).,
samotná architektonická vylepšení však nevyř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šší taktovací frekvence ve stále složitějších procesorech ztěžují udržení hodinového signálu ve fázi (synchronizované) po celé jednotce. To vedlo mnoho moderních Procesorů vyžadují více identických hodiny signály, které mají být poskytovány, aby se zabránilo zpoždění jednoho signálu výrazně dost způsobit CPU k poruše., Dalším velkým problémem, jak se rychlost hodin dramaticky zvyšuje,je množství tepla, které CPU rozptyluje. Neustále se měnící hodiny způsobují, že se mnoho komponent přepne bez ohledu na to, zda jsou v té době používány. Obecně platí, že součást, která přepíná, spotřebovává více energie než prvek ve statickém stavu. Proto, jak se zvyšuje rychlost hodin, tak i spotřeba energie, což způsobuje, že CPU vyžaduje větší odvod tepla ve formě chladicích řešení CPU.,
Jeden způsob řešení přepínání nepotřebné součásti se nazývá clock gating, který zahrnuje vypnutí hodinového signálu na nepotřebné součásti (efektivně zakázat jim). To je však často považováno za obtížné implementovat, a proto nevidí běžné použití mimo velmi nízkoenergetické konstrukce. Jeden pozoruhodný nedávný design CPU, který používá rozsáhlé brány hodin, je Xenon založený na IBM PowerPC používaný v Xboxu 360; tímto způsobem jsou požadavky na výkon Xbox 360 výrazně sníženy., Dalším způsobem řešení některých problémů s globálním hodinovým signálem je úplné odstranění hodinového signálu. Při odstraňování globální hodinový signál je design proces podstatně složitější, v mnoha ohledech, asynchronní (nebo clockless) vzorů nést označené výhody ve spotřebě energie a odvod tepla ve srovnání s podobnými synchronní vzory. Zatímco poněkud neobvyklé, celé asynchronní procesory byly postaveny bez použití globálního hodinového signálu. Dva pozoruhodné příklady toho jsou AMULET kompatibilní s ARM a kompatibilní MiniMIPS MIPS R3000.,
Spíše než zcela odstraní hodinový signál, některé CPU konstrukce umožňují určité části zařízení, které mají být asynchronní, jako je použití asynchronní ALUs ve spojení s superskalárních pipelining k dosažení některých aritmetický výkon zisky. I když není zcela jasné, zda zcela asynchronní návrhy mohou provádět na srovnatelné nebo lepší úrovni než jejich synchronní protějšky, Je zřejmé, že alespoň vynikají v jednodušších matematických operacích., Díky tomu jsou v kombinaci s vynikající spotřebou energie a vlastnostmi odvodu tepla velmi vhodné pro vestavěné počítače.
regulátor Napětí moduleEdit
Mnoho moderních Procesorů mají zemřít-integrovaná napájení řídící modul, který reguluje on-demand napájení CPU obvody, což umožňuje udržet rovnováhu mezi výkonem a spotřebou energie.
celočíselný rozsahedit
každý procesor reprezentuje číselné hodnoty specifickým způsobem., Například některé rané digitální počítače představovaly čísla jako známé desetinné (základní 10) číselné hodnoty systému a jiné používaly více neobvyklých reprezentací, jako je ternary (základní tři). Téměř všechny moderní procesory představují čísla v binární podobě, přičemž každá číslice je reprezentována nějakým dvouhodnotovým fyzickým množstvím, jako je“ vysoké „nebo“ nízké “ napětí.
šestibitové slovo obsahující binární kódované znázornění desetinné hodnoty 40. Většina moderních procesorů používá velikosti slov, které mají sílu dvou, například 8, 16, 32 nebo 64 bitů.,
související s číselnou reprezentací je velikost a přesnost celých čísel, která může CPU reprezentovat. V případě binární CPU, je to měřeno počtem bitů (významné číslice binární kódované číslo), které PROCESOR může zpracovat v rámci jedné operace, které se běžně nazývá slovo, rozměry, bitová šířka, datové cestě šířka, číslo, přesnost, nebo celé číslo velikosti. Celá velikost CPU určuje rozsah celočíselných hodnot, na které může přímo pracovat., Například 8bitový procesor může přímo manipulovat s celými čísly reprezentovanými osmi bity, které mají rozsah 256 (28) diskrétních celočíselných hodnot.
Integer range může také ovlivnit počet paměťových míst CPU lze přímo adresu (adresa je celočíselná hodnota představující konkrétní místo v paměti). Pokud například binární CPU používá 32 bitů k reprezentaci adresy paměti, může přímo oslovit 232 paměťových míst. K obcházení tohoto omezení a z různých jiných důvodů používají některé procesory mechanismy (například přepínání bank), které umožňují řešit další paměť.,
CPU s většími velikostmi slov vyžadují více obvodů a jsou tedy fyzicky větší, stojí více a spotřebovávají více energie (a proto generují více tepla). V důsledku toho se v moderních aplikacích běžně používají menší 4 – nebo 8-bitové mikrokontroléry, i když jsou k dispozici procesory s mnohem většími velikostmi slov (například 16, 32, 64, dokonce 128-bit). Pokud je však vyžadován vyšší výkon, výhody větší velikosti slova (větší datové rozsahy a adresní prostory) mohou převažovat nad nevýhodami. CPU může mít interní datové cesty kratší než velikost slova, aby se snížila velikost a náklady., Například, i když IBM System/360 instrukční sada byla 32-bitové instrukční sada, System/360 Model 30 Model 40 8-bitové datové cesty v aritmetické logické jednotky, tak, že 32-bit přidat požadované čtyři cykly, jeden pro každý 8 bitů operandů, a to i přesto, že Motorola 68000 série instrukční sada byla 32-bit instrukční sadu, Motorola 68000 a Motorola 68010 měl 16-bitové datové cesty v aritmetické logické jednotky, takže 32-bit přidat zapotřebí dvou cyklů.,
získat některé z výhod nabízených nižší i vyšší bitové délky, mnoho instrukční sady mají různé bitové šířky pro integer a floating-point data, což umožňuje Procesory prováděcí že instrukční sady mají různé bitové šířky pro různé části zařízení. Například IBM System/360 instrukční sada byla primárně 32 bit, ale podporuje 64-bit s plovoucí desetinnou čárkou hodnoty, usnadnit větší přesnost a rozsah čísla s plovoucí desetinnou čárkou., System/360 Model 65 měl 8-bit adder pro desetinná a pevné-bod, binární aritmetické operace, a 60-bit adder pro plovoucí-bod, aritmetika. Mnoho pozdějších návrhů CPU používá podobnou smíšenou šířku bitů, zejména pokud je procesor určen pro všeobecné použití, kde je vyžadována přiměřená rovnováha celočíselných a pohyblivých čárek.,
ParallelismEdit
Model subscalar CPU, v které trvá patnáct hodinových cyklů, aby dokončit tři instrukce
popis základní operace CPU nabídl v předchozí části popisuje nejjednodušší formě, že CPU může trvat. Tento typ PROCESORU, je obvykle označována jako subscalar, provozuje a provádí jednu instrukci na jeden nebo dva kousky dat v čase, která je menší než jedna instrukce jednoho cyklu (IPC < 1).,
tento proces vede k inherentní neúčinnosti Subskalárních procesorů. Protože pouze jedna instrukce je prováděna v době, celý PROCESOR musí počkat na instrukce k dokončení před pokračováním na další instrukce. Výsledkem je, že CPU subscalar se“ zavěsí “ na pokyny, které vyžadují dokončení více než jednoho hodinového cyklu. Dokonce i přidání druhého provedení jednotky (viz níže) není zlepšení výkonu; spíše než jednu cestu zavěsil, teď dvě cesty jsou zavěšeny a počet nevyužitých tranzistorů se zvyšuje., Tento návrh, přičemž výkonové zdroje CPU mohou pracovat pouze na jedné instrukci najednou, může dosáhnout pouze skalárního výkonu (jedna instrukce na hodinový cyklus, IPC = 1). Výkon je však téměř vždy subscalar (méně než jedna instrukce na hodinový cyklus, IPC < 1).
pokusy o dosažení skalárního a lepšího výkonu vedly k řadě metod návrhu, které způsobují, že se CPU chová méně lineárně a více paralelně., Když se odkazuje na paralelismus v procesorech, pro klasifikaci těchto konstrukčních technik se obvykle používají dva pojmy:
- paralelismus na úrovni instrukcí (ILP), který se snaží zvýšit rychlost, s jakou jsou pokyny prováděny v rámci CPU (tj.,
každá metodika se liší jak způsobem, jakým jsou implementovány,tak relativní účinností, kterou si při zvyšování výkonu CPU pro aplikaci dovolit.
Výuka-úroveň parallelismEdit
Základní pěti-stage pipeline. V nejlepším případě může tento potrubí udržet míru dokončení jedné instrukce na hodinový cyklus.,
jednou z nejjednodušších metod používaných k dosažení zvýšené paralelismu je zahájení prvních kroků načítání a dekódování instrukcí 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 moderních univerzálních procesorech. Pipelining umožňuje více než jednu instrukci, které mají být provedeny v daném okamžiku tím, že rozbije způsob provádění do diskrétních etap., Toto oddělení může být v porovnání na montážní lince, v nichž výuka je úplnější v každé fázi, až to ukončí provedení potrubí a je v důchodu.
Pipelining však zavádí možnost situace, kdy je výsledek předchozí operace potřebný k dokončení další operace; stav často nazývaný konflikt závislosti na datech. Abychom se s tím vyrovnali, je třeba věnovat další pozornost kontrole těchto podmínek a zpoždění části instrukčního potrubí, pokud k tomu dojde., Samozřejmě, že to vyžaduje další obvody, takže pipelinované procesory jsou složitější než subskalární (i když ne příliš významně). Pipeline procesoru se může stát téměř skalární, inhibována pouze potrubím stánky (instrukce utrácet více, než jednom hodinovém cyklu ve fázi).
a simple superscalar pipeline. Načtením a odesláním dvou pokynů najednou lze dokončit maximálně dva pokyny na hodinový cyklus.,
Další zlepšení na myšlence instrukční pipelining vedly k vývoji metody, která snižuje čas nečinnosti PROCESORU komponent ještě dále. Vzory, které jsou řekl, aby byl superskalárních patří dlouhé instrukční pipeline a více stejných jednotek popravy, jako je load-store units, aritmetické logické jednotky, plovoucí bod jednotky a adresy výrobních jednotek. V superskalárním potrubí se přečte několik pokynů a předá dispečerovi, který rozhodne, zda mohou být pokyny provedeny paralelně (současně)., Pokud ano, jsou odeslány do dostupných popravních jednotek, což má za následek schopnost provádět několik pokynů současně. Obecně platí, že čím více instrukcí je procesor superscalar schopen odesílat současně do čekajících prováděcích jednotek, tím více instrukcí bude dokončeno v daném cyklu.
většina obtíží při návrhu 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 tak, aby bylo co nejvíce prováděcích jednotek obsazeno. To vyžaduje, aby instrukce potrubí je vyplněn tak často, jak je to možné, a dává vzniknout třeba v superskalárních architektur pro významné množství CPU cache. To také dělá riziko-vyhnout se techniky, jako je predikce skoků, spekulativní provádění, zaregistrujte přejmenování, out-of-order execution a transakční paměti zásadní pro udržení vysoké úrovně výkonu., Pokusem předpovědět, která větev (nebo cesta) bude podmíněná instrukce trvat, může CPU minimalizovat počet případů, kdy musí celý potrubí 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. Out-of-order provedení poněkud přeskupí pořadí, ve kterém jsou pokyny provedeny ke snížení zpoždění v důsledku datových závislostí., Také v případě single instruction stream, multiple data stream—případ, kdy se spousta dat ze stejného typu musí být zpracované, moderní procesory mohou zakázat částí potrubí tak, že když jedna instrukce je prováděna mnohokrát, CPU přeskočí fetch a decode fází, a tím výrazně zvyšuje výkon v některých případech, zejména ve velmi monotónní program motory jako video, tvorba software a zpracování fotografií.,
v případě, že část CPU je superscalar a část není, část, která není trpí výkon trestu v důsledku plánování stánky. Intel Pentium P5 měl dva superskalárních ALUs, které by mohly přijmout jednu instrukci jednoho cyklu každý, ale jeho FPU nemohli přijmout jednu instrukci za hodinovém cyklu. P5 byl tedy celočíselný superskalar, ale ne superskalar s plovoucí desetinnou čárkou. Intel“s nástupcem P5 architektury, P6, přidáno superskalárních schopnosti jeho plovoucí bod funkce, a tak mají významné zvýšení floating point instrukce výkon.,
Jak jednoduché pipelining a superskalárních design zvýšit CPU“s IPK tím, že jeden procesor na kompletní provádění pokynů na sazby překonal jednu instrukci za hodinovém cyklu. Většina moderních návrhů CPU je alespoň poněkud superscalar a téměř všechny univerzální procesory navržené v posledním desetiletí jsou superscalar. V pozdějších letech některé z důrazu při navrhování high-ILP počítačů byl přesunut z hardwaru CPU a do jeho softwarového rozhraní, nebo instruction set architecture (ISA)., Strategie velmi dlouhé instrukční slovo (VLIW) způsobí, že některé ILP, aby se implikoval přímo pomocí softwaru, snížení množství práce CPU musí provést na podporu ILP a tím snížení složitosti návrhu.
paralelismedit
další strategií dosažení výkonu je paralelní provádění více vláken nebo procesů. Tato oblast výzkumu je známá jako paralelní výpočty. V taxonomii Flynn je tato strategie známá jako multiple instruction stream, multiple data stream (MIMD).,
jednou z technologií používaných pro tento účel bylo multiprocessing (MP). Počáteční chuť 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 aktuální zobrazení paměti. Vyhnout zatuchlý výhled na paměti, Procesory mohou spolupracovat na stejném programu a programy mohou migrovat z jednoho PROCESORU na jiný., Zvýšit počet spolupracujících Procesorů za hrst, režimy, jako je non-uniform memory access (NUMA) a directory-based soudržnost protokoly byly zavedeny v roce 1990. SMP systémy jsou omezeny na malý počet Procesorů, zatímco NUMA systémy byly postaveny s tisíci procesory. Zpočátku, multiprocessing byl postaven pomocí více diskrétních procesorů a desek pro implementaci propojení mezi procesory., Když jsou procesory a jejich propojení implementovány na jediném čipu, technologie je známá jako multiprocessing na úrovni čipů (CMP) a jediný čip jako vícejádrový procesor.
později bylo uznáno, že s jediným programem existuje jemnější paralelismus. JEDEN program může mít několik podprocesů (nebo funkcí), které by mohly být provedeny samostatně nebo paralelně. Některé z prvních příkladů této technologie implementována vstup/výstup zpracování jako přímý přístup do paměti jako samostatné vlákno z výpočtu vlákno., Obecnější přístup k této technologii byl představen v roce 1970, kdy byly systémy navrženy tak, aby paralelně provozovaly více výpočetních vláken. Tato technologie je známá jako multi-threading (MT). Tento přístup je považován za efektivnější než multiprocessing, protože jen malý počet komponent v rámci CPU je replikována na podporu MT oproti celé CPU v případě MP. V MT jsou realizační 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 supervizor software, jako jsou operační systémy, musí podstoupit větší změny na podporu MT. Jeden typ MT, který byl implementován, je známý jako temporální multithreading, kde je jedno vlákno provedeno, dokud není zastaveno čekání na návrat dat z externí paměti. V tomto schématu by procesor rychle přešel na jiné vlákno, které je připraveno ke spuštění, přepínač se často provádí v jednom cyklu hodin CPU, jako je Ultraparc T1., Dalším typem MT je simultánní multithreading, kde jsou pokyny z více vláken prováděny paralelně v rámci jednoho cyklu hodin CPU.
Po několik desetiletí od roku 1970 do počátku roku 2000, se zaměřují na navrhování vysoký výkon, general purpose Cpu bylo do značné míry na dosažení vysoké IPK prostřednictvím technologií, jako jsou pipeline, cache, superskalárních provedení, out-of-order execution, atd. Tento trend vyvrcholil velkými výkonnými procesory, jako je Intel Pentium 4., Na počátku roku 2000, CPU návrháři byly zmařeny od dosažení vyššího výkonu z ILP techniky vzhledem k rostoucí nepoměr mezi CPU provozní frekvence a hlavní paměti provozní frekvence, stejně jako stupňující se CPU ztrátový výkon díky více esoterické ILP techniky.
návrháři CPU pak si půjčil nápady od komerční výpočetní trzích, jako je transakční zpracování, kde celkovém výkonu více programů, také známý jako propustnost computing, byl důležitější než výkon jednoho podprocesu nebo procesu.,
o tomto obrácení důrazu svědčí proliferace dvou a více jádrových návrhů procesorů a zejména novější návrhy Intel připomínající jeho méně superscalar P6 architektury. Pozdní návrhy v několika procesor rodin vykazují CMP, včetně x86-64 Opteron a Athlon 64 X2, na architektuře SPARC UltraSPARC T1, IBM POWER4 a POWER5, stejně jako několik video herní konzole, Procesory, jako je Xbox 360″s triple-core PowerPC design a PlayStation 3″s 7-jádro Buněčné mikroprocesoru.,
Údaje parallelismEdit
méně časté, ale stále více důležité paradigma procesory (a opravdu, výpočetní techniky obecně) se zabývá datový paralelismus. Procesory diskutované dříve jsou označovány jako nějaký typ skalárního zařízení. Jak název napovídá, vektorové procesory se zabývají více kusy dat v kontextu jedné instrukce. To kontrastuje se skalárními procesory, které se zabývají jedním kusem dat pro každou instrukci., Pomocí Flynn taxonomie, tyto dvě schémata nakládání s daty jsou obecně označovány jako single instruction stream, multiple data stream (SIMD) a single instruction stream, single data stream (SISD), resp. Skvělý 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 dot product), které mají být provedeny na velkém souboru dat. Některé klasické příklady těchto typů úkolů zahrnují multimediální aplikace (obrázky, video a zvuk), stejně jako mnoho typů vědeckých a inženýrských úkolů., Zatímco skalární procesor musí dokončit celý proces načítání, dekódování a provádění každé instrukce a hodnoty v sadě dat, vektorový procesor může provádět jednu operaci na poměrně velké sadě dat s jednou instrukcí. To je možné pouze tehdy, když aplikace má tendenci vyžadovat mnoho kroků, které platí jednu operaci na velkou sadu dat.
většina raných vektorových procesorů, jako je Cray-1, byla spojena téměř výhradně s vědeckými výzkumnými a kryptografickými aplikacemi., Jelikož se však multimédia do značné míry přesunula na digitální média, stala se potřeba nějaké formy SIMD v univerzálních procesorech významná. Krátce po zařazení floating-point jednotky začaly být běžné v general-purpose procesory, specifikace a implementace SIMD jednotek popravy také začaly objevovat pro general-purpose procesory. Některé z těchto časných specifikací SIMD-jako HP multimedia Acceleration eXtensions (MAX) a Intel MMX – byly pouze celé číslo., To se ukázalo jako významná překážka pro některé vývojáře softwaru, protože mnoho aplikací, které využívají SIMD, se primárně zabývá čísly s plovoucí desetinnou čárkou. Postupně, vývojáři rafinovaný a předělaný tyto rané návrhy do některé z běžných moderní SIMD specifikace, které jsou obvykle spojeny s jedním instrukční sadu architecture (ISA). Některé pozoruhodné moderní příklady zahrnují Intel Streaming SIMD Extensions (SSE) a PowerPC související AltiVec (také známý jako VMX).