Procesory
Historie mikroprocesorů R.1971 Intel 4004 původně jako čip pro kalkulačky I8008, i8080, i8086/88,
Mikroprocesor je především součástka Je určená pro realizaci mikropočítače Musí být doplněna dalšími obvody
Typická sestava mikropočítače Mikroprocesor v roli CPU Podpůrné obvody mikroprocesoru (hodinové obvody, budiče, řadiče sběrnice) Paměťové obvody, obvody pro řízení činnosti pamětí Stykové obvody, řadiče V/V zařízení
Realizace rychlejších mikropočítačů
Typické vstupy/výstupy mikroprocesoru
Nositelem informace (logické hodnoty) je úroveň napětí
Propojení vstupu a výstupu
Propojení vstupu a výstupu
Typický příklad
Výstupy mikroprocesorů mají obvykle logický zisk 1
Třístavový budič
3 stavový budič
Lze navzájem propojit více výstupů?
Výstupy 3 stavových budičů lze navzájem propojovat
Budiče s otevřeným kolektorem
Vzájemné propojení výstupů s otevřeným kolektorem
Vzájemně propojené výstupy s otevřeným kolektorem Logický součin (při používání pozitivní logiky) Logický součet (při používání negativní logiky)- vhodné pro řídící signály
Řídící signály
Značení řídících signálů
Časování
Příklad
Generátor hodinových impulzů
Časové jednotky činnosti mikroprocesoru
Typy strojových instrukcí Čtení operačního znaku Čtení z paměti Zápis do paměti Čtení ze vstupu Zápis na výstup Přijetí přerušení Cyklus HALT
Typický průběh strojového cyklu
Skladba řídících signálů mikroprocesoru pro práci s pamětí a V/V
Blokové schéma I8080
Programátorský model 8080 ČÍTAČ INSTRUKCÍ STŘADAČ - A A (8) A 15 A 0 ADRESOVÁ SBĚRNICE (16) PAMĚŤ (M), V/V ZAŘÍZENÍ B (8) C (8) D 7 D H (8) E (8) (8) L (8) D 0 DATOVÁ SBĚRNICE (8) PAMĚŤ, V/V ZAŘÍZENÍ UKAZOVÁTKO ZÁSOBNIKOVÉ PAMĚTI (16) PŘÍZNAKOVÉ BITY (5) ARITMETICKOLOG. JEDNOTKA ŘÍDÍCÍ SBĚRNICE INT, RESET, INTE,
Minimální konfigurace mikropočítače
Procesor INTEL 80386
Základní jednotky 80386 BIU: (Bus Interface Unit - jednotka styku se sběrnicí): Tato jednotka je branou mikroprocesoru k okolnímu světu. Všechny ostatní jednotky procesoru využívají tuto jednotku pro přenos dat mezi procesorem a okolím. Protože BIU pracuje výhradně s fyzickými adresami, je nutné, aby adresa, která je poskytována k provedení operace, byla nejprve převedena na fyzickou adresu. IPU(Instruction Prefetch Unit - jednotka předvýběru instrukcí): Tato jadnotka se stará o naplňování šestnáctibytové fronty předvybraných instrukcí pro IDU. IPU nepřetržitě požaduje po vyzvednutí instrukce z fronty IDU, aby BIU doplnila frontu z následující adresy. Instrukce jsou do fronty zapisovány po 4 bytech. V případě provedení instrukce, která způsobí skok, provede IPU vyprázdnění celé fronty a další plnění se provádí od nové adresy. IDU:(Instruction Decode Unit - jednotka pro dekódování instrukcí): Jednotka, která má podobnou funkci jako IPU. Vyzvedne z fronty naplněné IPU první byte instrukce a podle něj zjistí délku celé instrukce (může být dlouhá až 16 B). Pak vyzvedne z fronty celou instrukci (popř. požádá BIU o doplnění chybějící části) a převede ji na vnitřní formát. Takto dekódovanou instrukci umístí do své fronty dekódovaných instrukcí, která je schopna pojmout až 3 dekódované instrukce. Zde je instrukce uložena pro potřebu EU. EU: (Execution Unit - prováděcí jednotka): Jednotka, která provádí vlastní výpočty. Jejím jádrem je ALU (Arithmetic - Logic Unit), která obsahuje obvody potřebné k aritmetickým a logickým operacím a k provádění instrukcí. Obsahuje také sadu registrů procesoru. Posledním úkolem EU je informovat BIU, že výsledek je potřeba zapsat do operační paměti nebo na periferní zařízení. SU: (Segmentation Unit - jednotka segmentace): Tato jednotka má význam především v chráněném a virtuálním režimu, kdy provádí převod virtuální (logické) adresy na adresu lineární. PU: (Paging Unit - stránkovací jednotka): Jednotka, která se uplatňuje pouze v chráněném a virtuálním režimu, a to jenom při zapnutém režimu stránkování. Potom PU provádí převod lineární adresy dané SU na adresu fyzickou. Ke své činnosti využívá rychlou vyrovnávací paměť TLB.
Procesor INTEL 80486
Základní jednotky 80486 Procesor 80486 obsahuje všechny jednotky jako procesor 80386 se stejnou funkcí Kromě těchto jednotek obsahuje ještě navíc Numerický koprocesor: jednotka provádějící aritmetické výpočty 8 kb interní cache paměti: slouží k vyrovnání rychlosti mezi procesorem a externí cache pamětí
Procesor INTEL Pentium
Základní jednotky Pentium BIU: jednotka se stejnou funkcí jako u procesoru 80386 IPU: jednotka se stejnou funkcí jako u procesoru 80386 EU U: výkonná jednotka U spolu s EU V sdílí blok registrů procesoru EU V: výkonná jednotka V BTB: paměť sloužící k realizaci dynamického předvídaní větvení FPU: jednotka pro aritmetické výpočty, která ke své činnosti využívá bloku registrů 8 kb cache pro instrukce: slouží k vyrovnání rychlosti mezi pomalejší externí cache pamětí a rychlejším procesorem 8 kb cache pro data: slouží k vyrovnání rychlosti mezi pomalejší externí cache pamětí a rychlejším procesorem
Procesor INTEL Pentium Pro
Základní jednotky Pentium Pro Procesor Intel Pentium Pro obsahuje podobně jako Pentium jednotku BIU, 8 kb cache paměti pro data a pro instrukce, BTB a jednotku FPU. Kromě toho obsahuje 3 výkonné jednotky (ALU1, ALU2 a ALU3), přerovnávací buffer, který spolu s vyčkávacím stanovištěm slouží k realizaci spekulativního provádění. V rámci jednoho pouzdra je u Pentia Pro také umístěna externí cache paměť o kapacitě 256 kb nebo 512 kb společně s řadičem externí cache paměti
Klíčové znaky moderních procesorů Pentium, které výrazně ovlivňují výkon Podpora Streaming SIMD Extensions 2 (SSE2). Intel Netburst micro-architecture. Implementace vlastností architektury Intel Netburst micro-architecture do procesoru Pentium.
Sériový procesor s jedním tokem instrukcí a jedním tokem dat SISD
Řetězený procesor s jedním tokem dat a vícenásobným tokem instrukcí MISD
Maticový procesor s jedním tokem instrukcí a vícenásobným tokem dat SIMD
Multiprocesor s mnohonásobným tokem instrukcí a dat MIMD
Vývoj technologie SIMD SIMD Single Instruction Multiple Data, jeden typ instrukce se provádí na více datech. Typická operace SIMD
Typická operace SIMD Dvě skupiny operandů, každá obsahuje 4 zkomprimované datové prvky (X1, X2, X3, X4 a Y1, Y2, Y3, Y4). Takto to bylo u technologie MMX. Technologie MMX umožňovala realizovat operace SIMD na zkomprimovaných slabikách, slovech, dvouslovech (vše celá čísla) uložených v osmi 64 bitových registrech. Specielní instrukce byly šity na míru pro multimediální a komunikační aplikace.
Registry MMX, 64 bitů MM7 MM6 MM5 MM4 MM3 MM2 MM1 MM0 Registry XMM, 128 bitů XMM7 XMM6 XMM5 XMM4 XMM3 XMM2 XMM1 XMM0
Pentium III model SIMD byl změněn na Streaming SIMD Extensions (SSE). Rozdíl oproti klasickému SIMD: Operace se provádějí na operandech obsahujících čtyři komprimovaná čísla v pohyblivé řádové čárce, jednoduchá přesnost. Operandy jsou uloženy buď vpaměti nebo v osmi 128 bitových registrech (registry XMM). Specielní množina instrukcí vytvořená pro procesory MMX byla rozšířena o dalších 64 instrukcí.
Pentium 4 byl použit model Streaming SIMD Extensions 2 (SSE2) stěmito vlastnostmi: Operace se provádějí na těchto operandech: dvěčísla v pohyblivé řádové čárce, dvojnásobná přesnost, 16 zkomprimovaných slabik, 8 zkomprimovaných slov, 4 zkomprimovaná dvouslova, 2 zkomprimovaná čtyřslova (čtyři poslední alternativy čísla typu integer). Operandy mohou být v paměti nebo registrech. Podpora aritmetiky SIMD pro práci se 64 bitovými operandy typu integer. Instrukce pro konverzi mezi datovými typy (původními a novými).
V čem spočívá implementace vlastností Netburst microarchitecture v Pentiu 4 Rychlé vyrovnávací paměti integrované do čipu (on-chip cache) Hyperskalární (zřetězení instrukcí více jak 10 jednotek) a superskalární architektura (dvě fronty). Dokonalé uplatnění principů zřetězení, přičemž různé komponenty jsou synchronizovány různými frekvencemi, některé vyššími, některé nižšími frekvencemi než je frekvence procesoru. Synchronizace procesoru frekvencí vyšší než 1 GHz. Komunikace s okolím 400 MHz. Provádění instrukcí mimo pořadí. Konstrukce obvodů tak, aby se nejčastěji prováděné
on-chip cache Na rozdíl od dřívějších typů to není pouze klasická rychlá vyrovnávací paměť L1, ale: rychlá vyrovnávací paměť L1 pro data kapacity 8 kb, rychlá vyrovnávací paměť typu Execution Trace Cache kapacity 12K µop, rychlá vyrovnávací paměť L2, 8 way, kapacity 256 kb 2 MB typu Advanced Transfer Cache. Pojem Advanced Transfer Cache vyrovnávací paměť L2 (integrována do čipu procesoru), pracuje na stejném kmitočtu jako procesor, využití ECC (Error Correcting Code samoopravný kód). Trend: výrazná snaha o rozšíření pojmu rychlá vyrovnávací paměť a hledání nových možností uplatnění v architektuře PC.
Funkce Front End Sestává ze dvou bloků: Fetch/Decode Execution Trace Cache Front End má tuto funkci: čtení instrukcí, jejich dekódování a náhrada posloupnostmi mikrooperací (Intel rozlišuje tyto typy instrukcí: instruction, complex instruction, special purpose instruction). přenos dříve dekódovaných instrukcí z Execution Trace Cache, predikci výsledků instrukcí skoku
Funkce Front End Architektura moderních mikroprocesorů fy Intel usiluje o originální řešení problémů různých zpoždění, k nimž dochází při provádění instrukcí. Mezi tato zpoždění patří, např.: doba potřebná na dekódování instrukcí doba potřebné na řešení problémů větvení programu (různé typy skoků)
Funkce Front End Redukce doby potřebné na dekódování instrukcí Execution Trace Cache. Princip: Instrukce jsou rozdekódovány prostředky pro překlad (Translation Engine) do posloupnosti mikrooperací (µop). Instrukce jsou přeloženy do posloupnosti mikrooperací tyto posloupnosti se nazývají traces (kopie, obrazy) a jsou uloženy do Execution Trace Cache. Posloupnosti mikrooperací jsou uloženy tak, jak odpovídá toku programu. Instrukce skoku - v Execution Trace Cache jsou k těmto mikrooperacím uloženy do stejných řádků výsledky těchto skoků => zvyšuje se pravděpodobnost správné predikce (tvrdí fa Intel), zvyšuje se podíl kódu prováděného z Execution Trace Cache. Na předvídání výsledku skoku se podílejí Execution Trace Cache a Translation Engine. Díky tomu, že jsou cílové adresy uloženy v Execution Trace Cache, mohou se po předpovězení výsledku brát mikroinstrukce z Execution Trace Cache (pokud tam je tato část programu zavedena, jinak se musí část programu, kde se bude pokračovat, zavést z paměti nemusí to pochopitelně být operační paměť).
Pentium 4 Execution Trace Cache může uchovat až 12K µoperací a v každém cyklu může dodat až 3 µoperace je optimalizován tak, že nejčastěji prováděné instrukce jsou realizovány z Execution Trace Cache, pouze malé množství instrukcí se provádí z paměti mikroprogramů (microcode ROM) většina instrukcí má svou reprezentaci uloženou v Execution Trace Cache, pouze pro malou část je využívána paměť mikroprogramů Trend: zkrátit čas potřebný k zajištění přístupu k mikroprogramům
Jednotka Out-of-Order Core Jednotka Out-of-Order Core umí přeuspořádat provádění instrukcí tak, aby neutrpěla logika programu. Princip: pokud nemůže být některá µop provedena, protože nemá k dispozici data, provede se jiná µop => tímto způsobem je možné odstranit všechna zpoždění, která vzniknou v důsledku nedostupnosti dat. V mechanismech rozhodujících o zahájení realizace konkrétní µoperace se bere v úvahu také dostupnost potřebných hardwarových prostředků. Jednotka Out-of-Order Core je navržena tak, aby umožňovala vyšší úroveň paralelního zpracování. Výsledek: většina EU (Ececution Unit) může v každém cyklu zahájit novou µop, takže v každé frontě je ve stavu provádění více instrukcí. ALU mohou většinou zahájit dvě µop v každém cyklu, FPU jednu µop každé dva cykly změna oproti dřívějším koncepcím, kdy se mohla zahájit pouze jedna µinstrukce. Navíc, pořadí provádění mikrooperací se může modifikovat podle toho, zda jsou k dispozici hodnoty operandů pro patřičné mikrooperace a jsou volné hardwarové prostředky pro její realizaci. Trend: optimalizovat principy realizace instrukcí zpracovávaných ve frontě s cílem zkrátit jejich provádění.
Zpětné uspořádání posloupnosti instrukcí Tuto činnost provádí jednotka, kterou Intel označuje jako Retirement Section. Za ukončení mikrooperace se považuje stav poté, co je výsledek uložen do cílového registru. Jednotka Reorder Buffer (ROB) provádí zpětné uspořádání µinstrukcí tak, aby odpovídaly původní posloupnosti. Jednotka Retirement Section uchovává informaci o tom, jak dopadly skoky a předává ji do BTB (Branch Target Buffer). Podle této informace se obnovuje obsah BTB.
Předvídání výsledků skoků Předvídání výsledků skoků je velmi důležité pro procesory zpracovávající fronty instrukcí. Techniky předvídání skoků (Branch Prediction) umožňují pokračovat ve zpracování programu na správném místě předtím, než je instrukce skoku zpracována a znám výsledek skoku. Pojem Branch Delay reprezentuje zpoždění, k němuž dojde, pokud dojde při předvídání výsledku skoku k omylu. Správnápředpověď - Branch Delay je nulové. Mylnápředpověď - Branch Delay bude odpovídat délce fronty (do fronty se musí načíst instrukce z jiné adresy než bylo předpovězeno a ta se do prováděcí jednotky dostane za takový počet cyklů, který odpovídá počtu komponent podílejících se na zpracování). Architektura Intel NetBurst micro-architecture umí předpovídat tzv. krátké skoky (podmíněné a nepodmíněné skoky a návraty z..). Neumí předpovídat vzdálené skoky (?), instrukce iret a programová přerušení. Trend: v oblasti předpovídání výsledků skoků firma Intel usiluje o inovaci technik pro předpovídání výsledků skoků.
Provádění instrukcí Instrukce jsou prováděny formou posloupnosti µoperací čtené buď zpaměti µprogramů nebo z Execution Trace Cache. Plánování instrukcí zohledňuje dostupnost operandů tzn. jsou prováděny instrukce, které mají k dispozici operandy. Pro superskalární architekturu uplatňovanou v procesorech firmy Intel je typické to, že obsahuje hardwarové prostředky pro paralelní provádění µoperací, přičemž tyto prostředky rozlišují typ prováděné µoperace. Jde o principy provádění µoperací => mluvíme proto o mikroarchitektuře. Tato mikro-architektura sestává ze čtyř portů každý pro provádění jiných typů mikrooperací. Výsledek: v jednom cyklu se může současně provádět až 6 µoperací, přičemž všechny souvisejí s prováděním instrukcí zařazených do jedné fronty tzn. jde o paralelismus uplatňovaný na jiné úrovni paralelismus na úrovni prováděcí jednotky (Execution Unit)
mikro-architektura
Intel CORE
Klasický způsob (Scalar): první microop: 5x * 2 = 10 druhá microop: 5x * 3 = 15 třetí microop: 5x * 1 = 5 čtvrtá microop: 5x * 8 = 40 Vektorový způsob (SIMD - Single Instruction Multiple Data): první microop: 5x (2; 3; 1; 8) = (10; 15; 5; 40)
130 nm 90 nm