Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Programování v asembleru - historie

Podobné prezentace


Prezentace na téma: "Programování v asembleru - historie"— Transkript prezentace:

1 Programování v asembleru - historie
Jakub Yaghob

2 Rané procesory Intel Intel 4004 Intel 4040 Intel 8008 1971
4-bitový procesor 8-bitové instrukce Harvardská architektura – oddělený kód a data 4-úrovňový interní zásobník (CALL, RET) 16 4-bitových registrů spojitelných do 8-bitových 46 instrukcí 740 kHz (měl být 1 MHz) Bez podpory přerušení Intel 4040 +14 instrukcí 8-úrovňový zásobník Přerušovací systém (shadowing prvních 8 registrů) Intel 8008 1972 Podobný 4040, ale 8-bitový 14-bitová adresace

3 Intel 8080 a 8085 Intel 8080(A) 1974 Jeden z prvních 8-bitových procesorů 8-bitová data, 16-bitová adresa Little endian 78 instrukcí HW podpora zásobníku v hlavní paměti Oddělení adresového prostoru pro I/O Jednoduchý systém přerušení Intel 8085 1976 HW vylepšení Jednotné napájení Žádné podpůrné obvody (generátor hodin) Zjednodušený sériový port na čipu

4 Motorola & spol. Motorola 6800 MOS Techologies 6502 1974 Big endian
Pouze 2 střadače Silně rozšířený repertoár adresačních módů Zjednodušený systém přerušení MOS Techologies 6502 Odpadlíci z Motoroly 1975 Velmi oblíbený Atari, Apple, Commodore

5 6502 Způsoby adresace Absolutní Zkrácená absolutní (zero-page)
CMP &1900 Zkrácená absolutní (zero-page) CPY &80 Nepřímá obsahem paměti JMP (&1900) Indexovaná LDA &1900,X Zkrácená indexovaná ADD &80,Y Zkrácená předindexovaná nepřímá LDA (&80,X) Zkrácená postindexovaná nepřímá LDA (&80),Y A X Y N V . B D I Z C PC SP C Carry Z Zero I Interrupts disable D Decimal (BCD aritm.) B BRK instr. Flag V Overflow N Negative

6 Zilog Z80 Zilog Z80 RST38h Paměťové rozhraní s refresh cyklem
Odpadlíci od Intelu 1976 Binárně kompatibilní s 8080 Nové registry a módy adresace Indexované adresování Dvě sady registrů pro zrychlení obsluhy přerušení +80 instrukcí Skoky s krátkou autorelativní adresou Stringové operace s opakováním Bitové instrukce „Tajné“ instrukce Paměťové rozhraní s refresh cyklem Velmi pokročilý systém přerušení Kompatibilní s 8080 RST38h Relokovatelný vektorový Úspěch = kompatibilita s paměťový IF + CP/M ZX Spektrum Dodnes vyráběny klony

7 Z80 Systém přerušení Adresace Relokovatelný vektorový
Zařízení dodá při přerušení 8-bitovou hodnotu Ta se použije jako index do relokovatelné tabulky adres obsluh přerušení Shadowing registrů Adresace Indexace pomocí IX, IY LD A,(IX+10) A F B C D E H L S Z 0 H 0 P N CY IFF1 IFF2 A’ F’ B’ C’ D’ E’ H’ L’ I R IX IY PC SP

8 Intel MCS 51 MCS 51 8-bitový procesor pro řídící aplikace
64K adresový prostor pro kód 64K adresový prostor pro data 4K zabudované PROM 128B zabudované RAM 32 obousměrných a jednotlivě adresovatelných bitových linek Dva 16-bitové čítače/časovače Plně obousměrný UART 6-zdrojová/5-vektorová architektura přerušení Zabudovaný generátor hodin Rozšířené možnosti práce v jednobitové logice Kmitočet MHz

9 Intel MCS 51 – blokové schéma

10 Intel MCS 51 – rozdělení paměti

11 Intel MCS 51 – organizace paměti
Výřez kódové paměti Interní datová paměť

12 Intel MCS 51 – interní datová paměť

13 Intel MCS 51 – adresovací módy
Přímé adresování 8-bitová adresa v instrukci, pouze na interní datovou paměť a SFR Nepřímé adresování Registr v instrukci specifikuje adresu 8-bitová adresace pomocí R0, R1 nebo SP 16-bitová adresace pomocí DPTR Registrová adresace 3-bitový kód registru v instrukci Registrově specifické instrukce Implicitně kódované registry - neortogonalita Přímý operand Konstanta Indexové adresování V kódové paměti na čtení: DPTR+ACC Nepřímý indexovaný skok: DPTR+ACC

14 Intel 8086 a spol. 8086 1978 Jeden z prvních 16-bitových CPU Značně neortogonální instrukční soubor 16-bitová data, 20-bitová adresa Little endian Oddělení adresového prostoru paměti a I/O Vektorový systém přerušení 8088 – verze s 8-bitovým HW rozhraním IBM PC 80186 1980 Drobná vylepšení Několik nových instrukcí Technologie 80286 1982 První MMU v procesorech Intel 24-bitová adresa Chráněný režim IBM PC-AT

15 Motorola 68000 Motorola 68000 Motorola 68010 1979 Interně 32-bitový
Vnější rozhraní: 16-bitová data, 24-bitová adresa Téměř ortogonální instrukční soubor Big endian 8 univerzálních 32-bitových datových registrů Dx, využitelných i po menších častech (8 a 16 bitů) 8 téměř univerzálních 32-bitových adresových registrů Ax A7 je USP Další systémové a řídící registry (PC, příznaky, A7‘ SSP, SR) Vektorový systém přerušení User/supervisor mode Apple Macintosh Motorola 68010 1982 Podpora pro virtualizaci paměti Restart instrukce Relokovatelnost tabulky přerušení

16 Způsoby adresace Motorola 680x0
Implicitní SR, PC, USP/SSP BSR label Přímý operand ADD #10,D0 Registr MOVE D0,A0 Nepřímá adresa MOVE (A4),D0 Absolutní adresa MOVE 10,D0 Nepřímá adresa s postinkrementací MOVE (A4)+,D0 Nepřímá adresa s predekrementací MOVE -(A4),D0 Nepřímá adresa s posunutím MOVE 10(A4),D0 Nepřímá adresa s indexem MOVE 10(A4,D1.w),D0

17 IBM 360/370/390 32-bitový pravěk 1964 Tzv. všeúčelový systém (360°)
První implementace nebyly mikroprocesorové, až 370 Velmi vlivný systém – po dlouhou dobu de facto standard Některé dnešní „standardy“ pochází právě odtud 8-bitový byte Paměť adresovaná po bytech ... Dlouhou dobu pracoval na naší fakultě Dodnes vyráběny firmou IBM, pouze v mnohem menší formě, stále binárně kompatibilní S390

18 IBM 360/370/390 – paměť a základní jednotka
Adresování 24-bitové Později u bitové Stránkování s klíčem Jedna stránkovací tabulka pro všechny procesy Bezpečnost v jednom adresovém prostoru Každý proces má jednoznačný identifikátor (klíč) V každé položce stránkovací tabulky také klíč Přístup pouze při shodě klíčů Data musí být v paměti zarovnána Základní jednotka 16 univerzálních 32-bitových registrů 0-15 (střadače, báze, indexy) 4 64-bitové registry reálné aritmetiky 0,2,4,6 (střadače) Stavový registr PSW PC Kód výsledku Klíč ochrany paměti A mnoho dalších věcí

19 IBM 360/370/390 – instrukční soubor
Instrukce v pevném formátu První 2 bity OP určují formát Některé instrukce nastavují kód výsledku Běžný instrukční repertoár

20 IBM 360/370/390 – adresace a přerušení
(Báze+Index+Posunutí)24b Registr 0 má v adresových výrazech hodnotu 0 Přerušení 5 pevných 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 (pro daný typ přerušení) a z jiné smluvené oblasti se naplní

21 32-bitové CPU Motorola a Intel
68020 – 1984 I vnější HW rozhraní plně 32-bitové Jednoduchá 3-stupňová pipeline On-chip cache 68030 – 1987 On-chip MMU (dvojúrovňové stránkování) 68040 – 1991 6-stupňová pipeline On-chip FPU 68060 – 1994 10-stupňová pipeline Dekódování instrukcí do RISC-like formy Superskalarita 2+1 Skokové optimalizace (dynamická predikce skoků) Intel 80386 – 1985 Plně 32-bitový On-chip MMU (stránkování a segmentace) Další módy činnosti i486 – 1989 Integrovaná FPU On-chip cache 8K Pipeline Pentium – 1993 Superskalarita 2+1 Oddělené cache pro kód a data SMM Rozšíření systémové i uživatelské architektury (MMX) Pentium Pro – 1995 14-stupňová pipeline Dekódování instrukcí do RISC-like formy Out-of-order execution Supeskalarita 2+1+2adr+1mem

22 SPARC v8 Scalable Processor ARChitecture Obecná charakteristika 1985
Architektura instrukční sady (ISA) – RISC Load-Execute-Store Cílem je architektura pro Optimalizující překladače Snadná implementace s pipelinou Registrová okna Ponechává volnost v podarchitekturách pro I/O MMU Cache Definuje referenční Paměťové modely Nepředpokládá v implementacích identický supervisor mód Není přímá HW podpora pro zásobník

23 SPARC v8 – vlastnosti Vlastnosti 32-bitový adresový prostor
Pevný a malý instrukční formát Všechny instrukce mají 32 bitů a jsou zarovnány na 4B Existují pouze 3 základní formáty instrukcí Málo adresových módů Paměť adresována pouze reg+reg nebo reg+imm Triadická adresace registrů Většina operací res = r1 op r2 Velké množství registrů „v okně“ Oddělené registry pro plouvoucí řádovou čárku 32 4-bytových, nebo 16 8-bytových nebo 8 16-bytových nebo mix Zpoždění skoku Vždy vykonána instrukce za skokem Rychlá obsluha přerušení Tagované instrukce Instrukce pro podporu multiprocesorů Koprocesor

24 SPARC v8 – registrová okna

25 32-bitové CPU Zilog Z8000 1979 Přechod (primárně 16-bitová architektura s 32-bitovými možnostmi) 16 16-bitových registrů kombinovatelných do 8 32-bitových nebo 4 64-bitových Prvních 8 registrů adresovatelných po bytech Ortogonální CISC Jeden z prvních CPU se supervisor módem Speciální obvody pro refresh paměti Z80000 1986 Plně 32-bitová architektura Rozšíření 16-bitových registrů na 32-bitů On-chip MMU Podpora multiprocesorů Velmi pomalý Z380 1994 Pohrobek Z80 3 módy činnosti 8-bitový plně kompatibilní se Z80 16-bitový mód s 32-bitovou adresací Plně 32-bitový mód Přerušení kompatibilní se Z80 a navíc 16-bitově vektorové

26 Alpha – obecně Compaq-DEC Alpha
Jedna z prvních 64-bitových architektur – 1998 Architektura navrhovaná v souladu se strategií firmy Digital – na 25 let Kompletně nová architektura Od základů 64-bitová Bez vazby na minulé architektury Čistý RISC Jednoduché instrukce Instrukce v pevném formátu (32 bitů) Load-Execute-Store architektura Bez příznaků Podmíněné instrukce přímo porovnávají obsahy registrů Bez HW podpory zásobníku Nulaúrovňové stránkování Plně asociativní DTB a ITB se 128 položkami 8KB stránky, skupiny po 8, 64 a 512 stránkách 8-bitový ASN (address space number)

27 Alpha – registry a instrukční soubor
32 obecných 64-bitových celočíselných registrů R0-R31 Speciální význam R31 – pro čtení vždy 0 32 64-bitových registrů v řádové čárce F0-F31 Speciální význam F31 – pro čtení vždy 0.0 PC Vždy zarovnán na 4 PCC 32-bitový čítač cyklů Instrukční soubor Ortogonální 3-operandový Silně 64-bitový Omezená podpora pro jiné šířky operandů Pevný formát limituje přímé operandy Posuny v paměťových výrazech Skoky Běžný repertoár instrukcí Není dělení Podpora pro více procesorů

28 Alpha – instrukční formát

29 SPARC v9 Nová verze odvozená ze SPARC v8 Obecná charakteristika
Binární kompatibilita s předchozí verzí Obecná charakteristika 64-bitový adresový prostor a data Zvýšení výkonu Instrukce pro násobení a dělení Hinty u skoků Podmíněný přesun Skoky podle hodnoty registru Podpora pro vysoce optimalizující překladače Podpora pro pokročile superskalární implementace Podpora pokročilých OS Fault-tolerance Rychlá obsluha přerušení a změna kontextu Práce s big i little endian

30 IA-64 Obecná charakteristika: Spolupráce Intel & HP
Binárně kompatibilní s HP PA-RISC Velmi složitá architektura Zachován mód kompatibility s IA-32 Množství „okoukaných“ triků Registrová okna (SPARC) Velké pole registrů (RISC) Explicitní paralelismus na úrovni kódování instrukcí Predikce instrukcí (Acorn ARM) Silné adresové módy (postinkrementace – Motorola) Spekulativní provádění kódu na explicitní úrovni Predikce skoků SW pipelining, rotace registrů Hinty u instrukcí „Konec programátorů v asembleru“

31 IA-64 – aplikační prostředí

32 IA-64 – instrukční soubor
Jako RISC Jednoduché krátké instrukce v pevném formátu Load-Execute-Store architektura Bez podpory HW zásobníku Bez celočíselného dělení Kódování instrukcí umožňuje explicitní paralelismus Skupiny instrukcí s přísnějšími vnitřními požadavky na závislosti (např. registrové RAW, WAW zakázány) Poměrně volný paměťový model Jediným omezením je dodržení RAW, WAW a WAR závislostí při přístupu na jednu adresu Explicitní synchronizace paměťových přístupů

33 IA-64 – predikce Predikční registry
Architektura nepoužívá specializované, automaticky nastavované aritmeticko-logické příznaky Sada predikátových registrů PR0-PR63 PR0 je vždy TRUE, zápis se ignoruje Nastavovány speciálními porovnávacími instrukcemi Obvykle nastavovány dva PR zároveň v různých módech Některé módy umožňují porušit WAW závislosti uvnitř skupiny instrukcí Téměř každá instrukce je podmíněna predikátovým registrem

34 IA-64 – spekulace Spekulace Umožňuje předsunout load operace z paměti
Kódová spekulace Předsunutí čtení v podmínce Občas se udělá „navíc“ při nesplněné podmínce Datová spekulace Předsunutí čtení před zápis přes ukazatel Kontrolováno pomocí ALAT Pokud spekulace „nevyjde“, provede se skutečně na kontrolní instrukci Kódová nevyjde při výjimkách Datová nevyjde při zápisu do dané paměti mezi čtením a kontrolou a při výjimkách

35 IA-64 – systémová architektura
Definována poměrně volně pro snažší implementaci Obsluha výjimek a přerušení Správa paměti Inverzní stránkování Nulaúrovňové stránkování – přímo nastavitelné x automatické TLB 8 regionů podle nejvyšších 3 bitů VA Klíče ochrany paměti (podobně jako IBM 360), ale více Chování v prostředí s více CPU Chování RSE


Stáhnout ppt "Programování v asembleru - historie"

Podobné prezentace


Reklamy Google