Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické informace (manuály ap.): –ftp://ulita.ms.mff.cuni.cz/techdoc/index.html Mail:
Předehra - 32-bitový pravěk IBM 360/370/ : –tzv. všeúčelový systém (360°) –původní implementace nebyly mikroprocesorové, objevily se až později (např. 370) –velmi vlivný systém - po velmi dlouhou dobu de facto standard –množství dnes běžných „standardů“ pochází právě z těchto systémů: 8-bitový byte bytově adresovaná pamět 32-bitové slovo... –dlouhou dobu pracoval i na naší fakultě
IBM 360/370 I Paměť: –Adresování 24 bitů (16 MB) –Stránkování s klíčem - jednotné stránkovací tabulky pro všechny procesy, každý proces a každá stránka má jednoznačný identifikátor (klíč), přístup do virtuální paměti pouze při shodě klíčů –Data pevného formátu musí být v paměti zarovnána Základní jednotka: –16 univerzálních registrů 0-15 (32 bitů) - střadače, báze a indexy –4 registry reálné aritmetiky 0, 2, 4, 6 (64 bitů) - střadače –stavový registr (PSW) - čítač instrukcí, kód výsledku, délka prováděné instrukce, programová maska, systémová maska, klíč ochrany paměti, specifikace stavu programu, bližší specifikace přerušení
IBM 360/370 II Formáty dat: –Texty - obvykle EBCDIC –Celočíselná data - ve dvojkovém doplňku, big endian –BCD - rozvinuté i zhuštěné –Reálná data - krátká a dlouhá; mantisa a exponent (1 B=1b sign+7b exp posunutý o 64), mantisa je šestnáctinný rozvoj (normalizovaná=nejvýznamnější byte je nenulový)
IBM 360/370 III Instrukční soubor: –instrukce v pevném formátu (6 variant):
IBM 360/370 IV –při tvorbě adresy se báze a index uvažují jako 24-bitové binární operandy a inkrement jako kladná 12-bitová kladná hodnota. Přetečení přes 24 bitů se zanedbává –univerzální registr 0 má v adresových výrazech význam hodnoty 0 –první dva bity OP určují formát a délku instrukce –sekce bázují se bázovým registrem –některé instrukce nastavují kód podmínky –běžný instrukční repertoár
IBM 360/370 V –Operace s registry LR x LTRL x LH x LM x IC –Binární sčítání, odčítání –Binární násobení a dělení –Disjunkce, konjunkce a nonekvivalence –Binární posuvy –Přesuny –Srovnání a testování –Převody a transformace dat –Větvení programu BC –Organizace cyklu BCT –Volání podprogramu BALEX –Speciální instrukce SVCSPM –Dekadická aritmetika –Reálná aritmetika
IBM 360/370 VI Přerušení: –Pět typů: vnější přerušení programové přerušení přerušení I/O přerušení vyvoláním supervisoru přerušení chybou stroje –PSW se uloží do smluvené oblasti paměti určené typem přerušení a naplní se opět ze smluvené oblasti paměti určené typem přerušení
32-bitové mikroprocesory I - Motorola Motorola 680x0: –68010 (1982): podpora virtualizace paměti (restart instrukcí) –68020 (1984): i vnější HW rozhraní už plně 32-bitové jednoduchá 3 stupňová pipeline on-chip cache –68030 (1987): on-chip MMU (dvouúrovňové stránkování) –68040 (1991): 6 stupňová pipeline integrovaná FPU –68060 (1994): 10 stupňová pipeline; dékodování instrukcí do RISC-like formy superskalarita (2+1) skokové optimalizace (dynamická predikce skoků na základě branch cache)
32-bitové mikroprocesory II - Zilog Zilog Z8000 (1979?), Z80000 (1986): –Z8000: přechod (primárně 16-bitová architektura, ale s 32-bitovými možnostmi) bitových registrů, kombinovatelných do 8 32-bitových nebo 4 64-bitových prvních 8 registrů navíc adresovatelných i bytově ortogonální CISC jeden z prvních mikroprocesorů se speciálním módem supervisoru speciální obvody pro refresh RAM pamětí stejně jako Z80 –Z80000: rozšíření do plně 32-bitové architektury –16-bitové registry rozšířeny do 32 bitů efektivní zdvojnásobení počtu registrů on-chip MMU podpora multiprocessingu poněkud pomalejší
32-bitové mikroprocesory III - Zilog Zilog Z380 (1994) - „Resurrection“ : –pohrobek Z80 –(8-bitový) mód plné binární kompatibility se Z80 –16-bitový mód s 32-bitovou adresací –Plně 32-bitový mód –Přerušení kromě módů kompatibilních se Z80 zavádí i mód se 16-bitovým vektorem
32-bitové mikroprocesory IV - Zilog –Registrová sada Z380:
32-bitové mikroprocesory V - Intel Intel (1982): –První pokus o rozšíření 16-bitové architektury 8086 –Stále spíš 16-bitový –Zpětná kompatibilita - vynutila existenci speciálních módů činnosti („reálný“ mód kompatibilní s 8086, rozšířený „chráněný“ mód) módy se vzájemně vylučují –Podpora virtualizace paměti (on-chip MMU, ovšem jen segmentová) Intel (1985): –Plně 32-bitový následník 286 –Konečně „úplná“ on-chip MMU (stránkování, z důvodu kompatibility i segmentace) –Další módy činnosti přibyla nutnost kompatibility se 16-bitovým chráněným módem objevil se i submód umožňující lepší začlenění 16-bitového kódu) –Existovaly i oslabené (= levnější) varianty s 16-bitovým HW rozhraním
32-bitové mikroprocesory VI - Intel Intel (1989): –HW vylepšená pipeline on-chip cache (8K) integrovaná FPU –Varianty s různým taktováním jádra CPU a sběrnic (DX2, DX4) Intel Pentium (1993): –„586“ - Intel si nestihl jméno zaregistrovat –HW zdokonalení Superskalární architektura (2+1) Oddělení kódové a datové cache –Nový mód činnosti určený především pro mobilní uplatnění procesorů (SMM) –Některá rozšíření systémové architektury (např. MMU, statistické sledování výkonu procesoru, podpora multiprocessingu) –I aplikační část architektury se dočkala rozšíření - např. MMX
32-bitové mikroprocesory VII - Intel Intel PentiumPro (1995?): –Zcela přepracovaná HW architektura 14-stupňová pipeline s dekódovaním do RISC-like µ-instrukcí superskalární architektura (2+1+2 adres. + 1 mem.) out-of-order execution –Skokové optimalizace - dynamická predikce skoků založená na branch bufferu Intel Pentium II (1997), Pentium III (1999), Pentium IV (2001): –Obdobná HW architektura jako PentiumPro –Opět slabší verze („Celeron“) –Silnější verze („Xeon“) Množství klonů všech procesorů řady x86 od různých výrobců (AMD, Cyrix, NexGen,...)
32-bitové mikroprocesory - shrnutí Už standardně se jedná o dobře definované architektury Široká variabilita, často nejasná hranice mezi 16- a 32-bitovými architekturami Instrukční soubor: –neortogonální CISC –ortogonální CISC –RISC –plně 32-bitová aritmetika, obvyklé i násobení a dělení –adresace typicky 32-bitová, existují i varianty se širší adresou (např. Intel: 48 bitů) Systémová architektura –Systém přerušení: relokovatelný vektorový (typicky 8-bitový vektor, existují i 16-bitové) slouží i k obsluze výjimek a SW přerušení –Ochranné mechanismy (minimálně 2 úrovně priorit) –MMU plně podporující virtualizaci paměti obvykle on-chip typicky dvouúrovňové stránkování