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
A15
ČÍTAČ INSTRUKCÍ
•
ADRESOVÁ SBĚRNICE (16)
•
A0
STŘADAČ AA
(8)
B
(8)
C
(8) D 7
D
(8)
E
(8)
H
PAMĚŤ (M), V/V ZAŘÍZENÍ
L
(8)
UKAZOVÁTKO ZÁSOBNIKOVÉ PAMĚTI PŘÍZNAKOVÉ BITY
(8)
• •
D0
DATOVÁ SBĚRNICE (8)
PAMĚŤ, V/V ZAŘÍZENÍ
(16)
(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ů
Registry XMM, 128 bitů
MM7
XMM7
MM6
XMM6
MM5
XMM5
MM4
XMM4
MM3
XMM3
MM2
XMM2
MM1
XMM1
MM0
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ď v pamě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) s tě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é instrukce realizovaly rychleji (např dekodéry)
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ď z pamě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