Porovnání architektur instrukční sady - Comparison of instruction set architectures
An architektura sady instrukcí (JE) je abstraktní model a počítač, označovaný také jako počítačová architektura. Realizace ISA se nazývá implementace. ISA umožňuje více implementací, které se mohou lišit výkon, fyzická velikost a peněžní náklady (mimo jiné); protože ISA slouží jako rozhraní mezi software a Hardware. Software, který byl napsán pro ISA, může běžet na různých implementacích stejného ISA. Toto je povoleno binární kompatibilita mezi různými generacemi počítačů, kterých lze snadno dosáhnout, a rozvoj počítačových rodin. Oba tyto vývoje pomohly snížit náklady na počítače a zvýšit jejich použitelnost. Z těchto důvodů je ISA jednou z nejdůležitějších abstrakcí v výpočetní dnes.
ISA definuje vše a jazyk stroje programátor potřebuje vědět, aby mohl programovat počítač. To, co ISA definuje, se liší mezi ISA; ISA obecně definují podporované typy dat, jaký je tam stát (např hlavní paměť a registry ) a jejich sémantika (například konzistence paměti a režimy adresování ), instrukční sada (soubor pokyny ke stroji který zahrnuje počítačový jazyk počítače) a vstup výstup Modelka.
Základna
V prvních desetiletích práce na počítači existovaly počítače, které to používaly binární, desetinný[1] a dokonce trojice.[2][3] Současné počítače jsou téměř výlučně binární.
Bity
Počítačové architektury jsou často popisovány jako n-bit architektury. Dnes n je často 8, 16, 32 nebo 64, ale byly použity jiné velikosti (včetně 6, 12, 18, 24, 30, 36, 39, 48, 60 ). Toto je vlastně zjednodušení, protože počítačová architektura často obsahuje několik více či méně „přirozených“ datových velikostí v systému Windows instrukční sada, ale jejich hardwarová implementace se může velmi lišit. Mnoho architektur instrukčních sad má instrukce, které u některých implementací architektury této instrukční sady pracují na poloviční a / nebo dvojnásobné velikosti hlavních interních datových cest procesoru. Příkladem toho je 8080, Z80, MC68000 stejně jako mnoho dalších. Na těchto typech implementací trvá dvakrát tak široká operace obvykle také dvakrát tolik hodinových cyklů (což u vysoce výkonných implementací neplatí). Například na 68000 to znamená 8 namísto 4 taktů a tento konkrétní čip lze popsat jako a 32-bit architektura s a 16-bit implementace. The IBM System / 360 architektura instrukční sady je 32bitová, ale několik modelů řady System / 360, například IBM System / 360 Model 30, mají 8bitové interní datové cesty. Šířka externí databáze se nepoužívá k určení šířky architektury; the NS32008, NS32016 a NS32032 byly v podstatě stejný 32bitový čip s různými externími datovými sběrnicemi; NS32764 měl a 64-bit sběrnice a použitý 32bitový registr. Časné 32bitové mikroprocesory měly často 24bitovou adresu, stejně jako procesory System / 360.
Operandy
Počet operandů je jedním z faktorů, které mohou udávat výkon sady instrukcí. Architektura tří operandů umožní
A: = B + C
být vypočítán v jedné instrukci.
Architektura se dvěma operandy umožní
A: = A + B
být vypočítán v jedné instrukci, takže pro simulaci jedné instrukce se třemi operandy bude třeba provést dvě instrukce.
A: = BA: = A + C
Endianness
Architektura může používat "velkou" nebo "malou" endianitu, nebo obojí, nebo může být konfigurovatelná pro použití buď. Objednávka malých procesorů endian bajtů v paměti s nejméně významným bajtem vícebajtové hodnoty v paměti s nejnižším číslem. Big endianské architektury místo toho uspořádají bajty s nejvýznamnějším bajtem na adrese s nejnižším číslem. Architektura x86 i několik 8-bit architektury jsou malý endian. Většina RISC architektury (SPARC, Power, PowerPC, MIPS) byly původně velkým endianem (ARM byl malým endianem), ale mnoho (včetně ARM) je nyní konfigurovatelných jako buď.
Endianness pouze se vztahuje na procesory, které umožňují individuální adresování jednotek dat (např bajtů ) které jsou menší než základní adresovatelné strojové slovo.
Sady instrukcí
Počet registrů je obvykle a síla dvou, např. 8, 16, 32. V některých případech je jako „součást“ zahrnut i pseudoregistr s pevným připojením k nule registrovat soubory architektur, hlavně ke zjednodušení režimů indexování. Tato tabulka počítá pouze celočíselné „registry“ použitelné obecnými pokyny v každém okamžiku. Architektury vždy obsahují registry zvláštního účelu, jako je ukazatel programu (PC). Ty se nepočítají, pokud není uvedeno. Všimněte si, že některé architektury, například SPARC, mají registrační okno; u těchto architektur počet níže udává, kolik registrů je k dispozici v okně registru. Také neregistrované registry pro přejmenování registrace se nepočítají.
Všimněte si, že běžný typ architektury, „load-store“, je synonymem pro „Register Register“ níže, což znamená, že žádné instrukce nemají přístup k paměti kromě speciálních - load to register (s) - a store from register (s) - s možným výjimky z operací atomové paměti pro zamykání.
Níže uvedená tabulka porovnává základní informace o sadách instrukcí, které mají být implementovány v architekturách CPU:
Archi- tektura | Bity | Verze | Intro- duced | Max. Počet operandy | Typ | Design | Registry (kromě FP / vektoru) | Kódování instrukcí | Větev hodnocení | Endian- ness | Rozšíření | Otevřeno | Licenční poplatek volný, uvolnit |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
6502 | 8 | 1975 | 1 | Registrovat paměť | CISC | 3 | Variabilní (8 až 32 bitů) | Registr stavu | Málo | ||||
6809 | 8 | 1978 | 1 | Registrovat paměť | CISC | 9 | Variabilní (8 až 32 bitů) | Registr stavu | Velký | ||||
680x0 | 32 | 1979 | 2 | Registrovat paměť | CISC | 8 dat a 8 adres | Variabilní | Registr stavu | Velký | ||||
8080 | 8 | 1974 | 2 | Registrovat paměť | CISC | 8 | Variabilní (8 až 24 bitů) | Registr stavu | Málo | ||||
8051 | 32 (8→32) | 1977? | 1 | Registrovat Registrovat | CISC |
| Variabilní (8bitový až 128 bajtů) | Porovnávat a větvit | Málo | ||||
x86 | 16, 32, 64 (16→32→64) | 1978 | 2 (celé číslo) 3 (AVX )[A] 4 (FMA4)[4] | Registrovat paměť | CISC |
| Variabilní (8086 ~ 80386: proměnná mezi 1 a 6 bajty / w MMU + Intel SDK, 80486: 2 až 5 bajtů s předponou, pentium a další: 2 až 4 bajty s předponou, x64: 4 bajty předpona, emulace x86 třetí strany: 1 do 15 bajtů bez předpony a MMU. SSE / MMX: 4 bajty / předpona AVX: 8 bajtů / bez předpony) | Podmínkový kód | Málo | x87, IA-32, MMX, 3DNow!, SSE, SSE2, PAE, x86-64, SSE3, SSSE3, SSE4, BMI, AVX, AES, FMA, XOP, F16C | Ne | Ne | |
Alfa | 64 | 1992 | 3 | Registrovat Registrovat | RISC | 32 (včetně „nula“) | Pevný (32 bitů) | Registr stavu | Bi | MVI, BWX, OPRAVIT, CIX | Ne | ||
OBLOUK | 16/32 | ARCv2[5] | 1996 | 3 | Registrovat Registrovat | RISC | 16 nebo 32 včetně SP uživatel může zvýšit na 60 | Variabilní (16 a 32 bitů) | Porovnávat a větvit | Bi | APEX Uživatelem definované pokyny | ||
ARM / A32 | 32 | ARMv1-v8 | 1983 | 3 | Registrovat Registrovat | RISC |
| Pevný (32 bitů) | Podmínkový kód | Bi | NEON, Jazelle, VFP, TrustZone, LPAE | Ne | |
Palec / T32 | 32 | ARMv4T-ARMv8 | 1994 | 3 | Registrovat Registrovat | RISC |
| Palec: Opraveno (16 bitů), Palec-2: Variabilní (16 a 32 bitů) | Podmínkový kód | Bi | NEON, Jazelle, VFP, TrustZone, LPAE | Ne | |
Arm64 / A64 | 64 | ARMv8-A[6] | 2011[7] | 3 | Registrovat Registrovat | RISC | 32 (včetně ukazatele zásobníku / "nulového" registru) | Pevný (32 bitů) | Podmínkový kód | Bi | SVE a SVE2 | Ne | |
AVR | 8 | 1997 | 2 | Registrovat Registrovat | RISC | 32 16 o „snížené architektuře“ | Variabilní (většinou 16bitové, čtyři instrukce jsou 32bitové) | Registr stavu, přeskočit podmíněné na I / O nebo obecný účel registrační bit, porovnat a přeskočit | Málo | ||||
AVR32 | 32 | Rev | 2006 | 2–3 | RISC | 15 | Variabilní[8] | Velký | Virtuální stroj Java | ||||
Blackfin | 32 | 2000 | 3[9] | Registrovat Registrovat | RISC[10] | 2 akumulátory 8 datových registrů 8 ukazatelů registrů 4 indexové registry 4 vyrovnávací registry | Proměnná (16 nebo 32 bitů) | Podmínkový kód | Málo[11] | ||||
CDC Horní řada 3000 | 48 | 1963 | 3 | Registrovat paměť | CISC | 48bitový reg. A, 48bitový reg. Q, 6 15bitových registrů B, různé | Variabilní (24 a 48 bitů) | Více typů skoků a přeskočení | Velký | ||||
CDC 6000 Centrální procesor (CP) | 60 | 1964 | 3 | Registrovat Registrovat | N / A[b] | 24 (8 18bitová adresa reg., 8 18-bit index reg., 8 60-bit operand reg.) | Variabilní (15, 30 a 60 bitů) | Porovnávat a větvit | n / a[C] | Porovnat / přesunout jednotku | Ne | Ne | |
CDC 6000 Periferní procesor (PP) | 12 | 1964 | 1 nebo 2 | Registrovat paměť | CISC | 1 18bitový registr A, umístění 1–63 slouží jako rejstříkové registry pro některé pokyny | Variabilní (12 a 24 bitů) | Test Registr, testovací kanál | n / a[d] | další jednotky periferního zpracování | Ne | Ne | |
Crusoe (nativní VLIW) | 32[12] | 2000 | 1 | Registrovat Registrovat[12] | VLIW[12][13] | Variabilní (64 nebo 128 bitů v nativním režimu, 15 bajtů v emulaci x86)[13] | Podmínkový kód[12] | Málo | |||||
Elbrus (nativní VLIW) | 64 | Elbrus-4S | 2014 | 1 | Registrovat Registrovat[12] | VLIW | 8–64 | 64 | Podmínkový kód | Málo | Just-in-time dynamický přenos lation: x87, IA-32, MMX, SSE, SSE2, x86-64, SSE3, AVX | Ne | Ne |
DLX | 32 | 1990 | 3 | RISC | 32 | Pevný (32 bitů) | Velký | ||||||
eSi-RISC | 16/32 | 2009 | 3 | Registrovat Registrovat | RISC | 8–72 | Variabilní (16 nebo 32 bitů) | Porovnávat a větvit a stavový registr | Bi | Uživatelem definované pokyny | Ne | Ne | |
Itanium (IA-64) | 64 | 2001 | Registrovat Registrovat | EPICKÉ | 128 | Opraveno (128bitové balíčky s 5bitovou značkou šablony a 3 pokyny, z nichž každý má 41 bitů) | Registr stavu | Bi (volitelné) | Virtualizační technologie Intel | Ne | Ne | ||
M32R | 32 | 1997 | 3 | Registrovat Registrovat | RISC | 16 | Variabilní (16 nebo 32 bitů) | Registr stavu | Bi | ||||
Mico32 | 32 | ? | 2006 | 3 | Registrovat Registrovat | RISC | 32[14] | Pevný (32 bitů) | Porovnávat a větvit | Velký | Uživatelem definované pokyny | Ano[15] | Ano |
MIPS | 64 (32→64) | 6[16][17] | 1981 | 1–3 | Registrovat Registrovat | RISC | 4–32 (včetně „nula“) | Pevný (32 bitů) | Registr stavu | Bi | MDMX, MIPS-3D | Ne | Ne[18][19] |
MMIX | 64 | ? | 1999 | 3 | Registrovat Registrovat | RISC | 256 | Pevný (32 bitů) | ? | Velký | ? | Ano | Ano |
NS320xx | 32 | 1982 | 5 | Paměť Paměť | CISC | 8 | Variabilní kódování Huffman, dlouhé až 23 bajtů | Podmínkový kód | Málo | Pokyny BitBlt | |||
OpenRISC | 32, 64 | 1.3[20] | 2010 | 3 | Registrovat Registrovat | RISC | 16 nebo 32 | Pevný | ? | ? | ? | Ano | Ano |
PA-RISC (HP / PA) | 64 (32→64) | 2.0 | 1986 | 3 | Registrovat Registrovat | RISC | 32 | Pevný (32 bitů) | Porovnávat a větvit | Velký → Bi | MAX | Ne | |
PDP-8[21] | 12 | 1966 | Registrovat paměť | CISC | 1 akumulátor 1 registr kvocientu kvocientu | Pevný (12 bitů) | Registr stavu Test a větev | EAE (Extended Arithmetic Element) | |||||
PDP-11 | 16 | 1970 | 3 | Paměť Paměť | CISC] | 8 (zahrnuje ukazatel zásobníku, ačkoli jakýkoli registr může funguje jako ukazatel zásobníku) | Pevný (16 bitů) | Podmínkový kód | Málo | Plovoucí bod, Sada komerčních pokynů | Ne | Ne | |
NAPÁJENÍ, PowerPC, Napájení ISA | 32/64 (32→64) | 3,0 B[22] | 1990 | 3 | Registrovat Registrovat | RISC | 32 | Pevný (32 bitů)Variabilní | Podmínkový kód | Velký / Bi | AltiVec, APU, VSX, Buňka | Ano | Ano |
RISC-V | 32, 64, 128 | 2.2[23] | 2010 | 3 | Registrovat Registrovat | RISC | 32 (včetně „nula“) | Variabilní | Porovnávat a větvit | Málo | ? | Ano | Ano |
RX | 64/32/16 | 2000 | 3 | Paměť Paměť | CISC | 4 celé číslo + 4 adresa | Variabilní | Porovnávat a větvit | Málo | Ne | |||
S + jádro | 16/32 | 2005 | RISC | Málo | |||||||||
SPARC | 64 (32→64) | OSA2017[24] | 1985 | 3 | Registrovat Registrovat | RISC | 32 (včetně „nula“) | Pevný (32 bitů) | Podmínkový kód | Velký → Bi | VIS | Ano | Ano[25] |
SuperH (SH) | 32 | 1994 | 2 | Registrovat Registrovat Registrovat paměť | RISC | 16 | Pevný (16 nebo 32 bitů)Variabilní | Podmínkový kód (jeden bit) | Bi | ||||
Systém / 360 Systém / 370 z / Architektura | 64 (32→64) | 1964 | 2 (většina) 3 (FMA, zřetelně operandské zařízení) 4 (některé inst. vektoru) | Registrovat paměť Paměť Paměť Registrovat Registrovat | CISC | 16 | Variabilní (16-, 32- nebo 48-bit) | Podmíněný kód, porovnání a větvení | Velký | Ne | Ne | ||
Transputer | 32 (4→64) | 1987 | 1 | Stohovací stroj | MISC | 3 (jako zásobník) | Variabilní (8 ~ 120 bajtů) | Porovnávat a větvit | Málo | ||||
VAX | 32 | 1977 | 6 | Paměť Paměť | CISC | 16 | Variabilní | Porovnávat a větvit | Málo | ||||
Z80 | 8 | 1976 | 2 | Registrovat paměť | CISC | 17 | Variabilní (8 až 32 bitů) | Registr stavu | Málo | ||||
Archi- tektura | Bity | Verze | Intro- duced | Max. Počet operandy | Typ | Design | Registry (kromě FP / vektoru) | Kódování instrukcí | Větev hodnocení | Endian- ness | Rozšíření | Otevřeno | Licenční poplatek volný, uvolnit |
Viz také
- Centrální procesorová jednotka (PROCESOR)
- Návrh CPU
- Porovnání mikroarchitektur CPU
- Sada instrukcí
- Mikroprocesor
- Srovnávací test (výpočet)
Poznámky
- ^ Pokyny LEA (8086 a novější) a IMUL-okamžité (80186 a novější) přijímají tři operandy; většina ostatních pokynů základního celého čísla ISA nepřijímá více než dva operandy.
- ^ částečně RISC: architektura načítání / ukládání a režimy jednoduchého adresování, částečně CISC: tři délky instrukcí a žádné načasování jediné instrukce
- ^ Protože paměť je pole 60bitových slov bez prostředků pro přístup k podjednotkám, nemá velký endian vs. malý endian smysl. Volitelná jednotka CMU používá sémantiku big endian.
- ^ Vzhledem k tomu, že paměť je pole 12bitových slov bez možnosti přístupu k podjednotkám, nemá velký endian vs. malý endian smysl.
Reference
- ^ da Cruz, Frank (18. října 2004). „Kalkulačka pro výzkum námořní námořní výzbroje IBM“. Historie výpočetní techniky na Kolumbijské univerzitě. Citováno 28. ledna 2019.
- ^ "Ruské muzeum virtuálních počítačů - Síň slávy - Nikolay Petrovich Brusentsov".
- ^ Trogemann, Georg; Nitussov, Alexander Y .; Ernst, Wolfgang (2001). Výpočetní technika v Rusku: odhalena historie počítačových zařízení a informačních technologií. Vieweg + Teubner Verlag. 19, 55, 57, 91, 104–107. ISBN 978-3-528-05757-2..
- ^ https://www.amd.com/system/files/TechDocs/43479.pdf
- ^ https://www.synopsys.com/designware-ip/processor-solutions/arc-processors.html
- ^ „Náhled technologie ARMv8“ (PDF). Archivovány od originál (PDF) dne 10.06.2018. Citováno 2011-10-28.
- ^ „ARM je 64bitový s novou architekturou čipu ARMv8“. Citováno 26. května 2012.
- ^ "Dokument architektury AVR32" (PDF). Atmel. Citováno 2008-06-15.
- ^ "Blackfin manual" (PDF). analog.com.
- ^ „Přehled architektury procesoru Blackfin“. Analogová zařízení. Citováno 2009-05-10.
- ^ „Blackfin memory architecture“. Analogová zařízení. Archivovány od originál dne 16.06.2011. Citováno 2009-12-18.
- ^ A b C d E F „Crusoe Exposed: Transmeta TM5xxx Architecture 2“. Technologie skutečného světa.
- ^ A b C Alexander Klaiber (leden 2000). „Technologie za procesory Crusoe“ (PDF). Transmeta Corporation. Citováno 6. prosince 2013.
- ^ „LatticeMico32 Architecture“. Lattice Semiconductor. Archivovány od originál dne 23. června 2010.
- ^ „Licencování Open Source LatticeMico32“. Lattice Semiconductor. Archivovány od originál dne 20. června 2010.
- ^ MIPS64 Architecture for Programmers: Release 6
- ^ MIPS32 Architecture for Programmers: Release 6
- ^ MIPS otevřeno
- ^ [1]
- ^ Revize architektury OpenRISC
- ^ „Uživatelská příručka PDP-8“ (PDF). bitsavers.org. 2019-02-16.
- ^ „Power ISA verze 3.0“. openpowerfoundation.org. 2016-11-30. Citováno 2017-01-06.
- ^ "Specifikace RISC-V ISA". Citováno 17. června 2019.
- ^ Dokumentace k procesoru Oracle SPARC
- ^ Licence SPARC Architecture