Vergleich der Architekturen für den Unterrichtssatz
Ein Anweisungsset Architektur (IST EIN) ist ein abstraktes Modell von a Computer, auch bezeichnet als Rechnerarchitektur. Eine Erkenntnis eines ISA wird als eine genannt Implementierung. Eine ISA ermöglicht mehrere Implementierungen, die in unterschiedlichem Umfang variieren können Leistung, physische Größe und Geldkosten (unter anderem); Weil die ISA als die dient Schnittstelle zwischen Software und Hardware-. Software, die für einen ISA geschrieben wurde, kann auf verschiedenen Implementierungen derselben ISA ausgeführt werden. Dies hat aktiviert binäre Kompatibilität zwischen verschiedenen Generationen von Computern, die leicht zu erreichen sind, und der Entwicklung von Computerfamilien. Beide Entwicklungen haben dazu beigetragen, die Computerkosten zu senken und ihre Anwendbarkeit zu erhöhen. Aus diesen Gründen ist die ISA eine der wichtigsten Abstraktionen in Computer heute.
Ein Isa definiert alles a Maschinensprache Programmierer muss wissen, um einen Computer zu programmieren. Was ein ISA definiert, unterscheidet sich zwischen ISAs; Im Allgemeinen definieren ISAs die unterstützten Datentypen, welchen Zustand es gibt (wie die Haupterinnerung und Register) und ihre Semantik (wie die Speicherkonsistenz und Adressierungsmodi), das Befehlssatz (der Satz von Maschinenanweisungen Das umfasst die Maschinensprache eines Computers) und die Input-Output Modell.
Base
In den frühen Jahrzehnten des Computers gab es Computer, die verwendete binär, Dezimal[1] und sogar ternär.[2][3] Zeitgenössische Computer sind fast ausschließlich binär.
Bits
Computerarchitekturen werden oft beschrieben als als n-bisschen Architekturen. Heute n ist oft 8, 16, 32 oder 64, aber andere Größen wurden verwendet (einschließlich 6, 12, 18, 24, 30,, 36, 39, 48, 60). Dies ist tatsächlich eine Vereinfachung, da die Computerarchitektur oft ein paar mehr oder weniger "natürliche" Dataspen in der BefehlssatzAber die Hardware -Implementierung dieser kann sehr unterschiedlich sein. Viele Architekturen für den Anweisungssatz haben Anweisungen, die bei einigen Implementierungen dieser Architektur für den Anweisungssatz halb und/oder doppelt so groß wie die wichtigsten internen Datenaphen des Prozessors arbeiten. Beispiele hierfür sind die 8080, Z80, MC68000 sowie viele andere. Bei diesen Arten von Implementierungen dauert ein doppelt so großer Betrieb in der Regel auch etwa doppelt so viele Taktzyklen (was bei Hochleistungs -Implementierungen nicht der Fall ist). Auf dem 68000 beispielsweise bedeutet dies 8 anstelle von 4 Taktionen, und dieser bestimmte Chip kann als a beschrieben werden 32-Bit Architektur mit a 16-Bit Implementierung. Das IBM System/360 Die Architektur für die Befehlssatz ist 32-Bit, aber mehrere Modelle der System/360-Serie, wie die IBM System/360 Modell 30, haben kleinere interne Datenpfade, während andere, wie die 360/195, haben größere interne Datenpfade. Die externe Datenbusbreite wird nicht verwendet, um die Breite der Architektur zu bestimmen. das NS32008, NS32016 und NS320322 waren im Grunde der gleiche 32-Bit-Chip mit verschiedenen externen Datenbussen; Der NS32764 hatte a 64-Bit Bus und verwendet 32-Bit-Register. Frühe 32-Bit-Mikroprozessoren hatten häufig eine 24-Bit-Adresse, ebenso wie das System/360-Prozessoren.
Operanden
Die Anzahl der Operanden ist einer der Faktoren, die einen Hinweis auf die Leistung des Anweisungssatzes geben können. Eine Architektur mit drei Operand wird erlauben
A: = b + c
in einer Anweisung berechnet werden.
Eine Zwei-Operand-Architektur erlaubt es
A: = a + b
Um in einer Anweisung berechnet zu werden, müssen zwei Anweisungen ausgeführt werden, um eine einzelne Drei-Operand-Anweisung zu simulieren.
A: = b a: = a + c
Endiangess
Eine Architektur kann "Big" oder "Little" Endiangess oder beides verwenden oder konfigurierbar sind, um entweder zu verwenden. Little-Endian-Prozessoren bestellen Bytes im Gedächtnis mit dem am wenigsten signifikanten Byte eines Multi-Byte-Wertes am niedrigsten Speicherort. Big-Endian-Architekturen arrangieren stattdessen Bytes mit dem bedeutendsten Byte bei der niedrigsten Adresse. Die x86 -Architektur sowie mehrere 8 Bit Architekturen sind Little-Endian. Die meisten RISC Architekturen (SPARC, Power, Powerpc, MIPs) waren ursprünglich Big-Endian (Arm war Little-Endian), aber viele (einschließlich Arm) sind jetzt als beide konfigurierbar.
Endiangess nur gilt für Prozessoren, die die individuelle Adressierung von Dateneinheiten ermöglichen (wie z. Bytes) das sind kleiner als das grundlegende adressierbare Maschinenwort.
Anweisungssätze
Normalerweise ist die Anzahl der Register a Kraft von zwei, z.B. 8, 16, 32. In einigen Fällen ist ein festverdrahteter Pseudo-Register als "Teil" enthalten Registrieren Sie Dateien von Architekturen, hauptsächlich zur Vereinfachung der Indexierungsmodi. Diese Tabelle zählt nur die Ganzzahl "Register", die von allgemeinen Anweisungen zu jedem Zeitpunkt verwendet werden können. Architekturen umfassen immer Spezialregister wie den Programmzähler (PC). Diese werden nicht gezählt, sofern nicht erwähnt. Beachten Sie, dass einige Architekturen wie SPARC haben Registrieren Sie Windows; Für diese Architekturen gibt die unten stehende Anzahl an, wie viele Register innerhalb eines Registersfensters verfügbar sind. Auch nicht gewartete Register für Umbenennen registrieren werden nicht gezählt.
Hinweis, eine gemeinsame Architekturart ","Load -Store", ist ein Synonym für" Register - Register "unten, was bedeutet, dass keine Anweisungen zugreifen können, außer als speziell - Laden Sie die Registrierung (n) - und speichern Sie von Registern) mit den möglichen Ausnahmen von Atomspeichervorgängen für die Verriegelung.
Die folgende Tabelle vergleicht grundlegende Informationen zu Anweisungssätzen, die in den CPU -Architekturen implementiert werden sollen:
Archi- Teatur | Bits | Ausführung | Intro- geführt | Max # Operanden | Typ | Entwurf | Register (ohne FP/Vektor) | Anweisungscodierung | Zweig Auswertung | Endian- ness | Erweiterungen | Offen | Königshaus frei |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
6502 | 8 | 1975 | 1 | Register -Memory | CISC | 3 | Variable (8- bis 24-Bit) | Bedingungsregister | Wenig | ||||
6809 | 8 | 1978 | 1 | Register -Memory | CISC | 9 | Variable (8- bis 32-Bit) | Bedingungsregister | Groß | ||||
680x0 | 32 | 1979 | 2 | Register -Memory | CISC | 8 Daten und 8 Adresse | Variable | Bedingungsregister | Groß | ||||
8080 | 8 | 1974 | 2 | Register -Memory | CISC | 8 | Variable (8 bis 24 Bit) | Bedingungsregister | Wenig | ||||
8051 | 32(8 → 32) | 1977? | 1 | Register -Register | CISC |
| Variable (8-Bit bis 128 Bytes) | Vergleichen und besiegen | Wenig | ||||
x86 | 16, 32, 64 (16 → 32 → 64) | 1978 | 2 (Ganzzahl) 3 (Avx)[a] 4 (Fma4)[4] | Register -Memory | CISC |
| Variable (8086 ~ 80386: Variable zwischen 1 und 6 Bytes /W MMU + Intel SDK, 80486: 2 bis 5 Bytes mit Präfix, Pentium und weiter: 2 bis 4 Bytes mit Präfix, x64: 4 Bytes Präfix, Dritte Partei X86 Emulation: 1 Emulation 1 bis 15 Bytes mit Präfix & MMU. SSE /MMX: 4 Bytes /W Präfix AVX: 8 Bytes /W Präfix) | Bedingungscode | Wenig | x87, IA-32, MMX, 3dnow!, Sse, SSE2, Pae, x86-64, SSE3, SSSE3, SSE4, BMI, Avx, AES, Fma, XOP, F16C | Nein | Nein | |
Alpha | 64 | 1992 | 3 | Register -Register | RISC | 32 (einschließlich "Zero") | Fest (32-Bit) | Bedingungsregister | Bi | MVI, BWX, FIX, CIX | Nein | ||
BOGEN | 16/32/64 (32 → 64) | ARCV3[5] | 1996 | 3 | Register -Register | RISC | 16 oder 32 einschließlich SP Der Benutzer kann auf 60 erhöhen | Variable (16- oder 32-Bit) | Vergleichen und besiegen | Bi | Apex Benutzerdefinierte Anweisungen | ||
Arm/A32 | 32 | ARMV1 - V9 | 1983 | 3 | Register -Register | RISC |
| Fest (32-Bit) | Bedingungscode | Bi | NEON, Jazelle, VFP, Trustzone, LPAE | Nein | |
Daumen/T32 | 32 | ARMV4T-Armv8 | 1994 | 3 | Register -Register | RISC |
| Daumen: behoben (16-Bit), Thumb-2: Variable (16- oder 32-Bit) | Bedingungscode | Bi | NEON, Jazelle, VFP, Trustzone, LPAE | Nein | |
ARM64/A64 | 64 | ARMV8-A[6] | 2011[7] | 3 | Register -Register | RISC | 32 (einschließlich des Stapelzeigers/"Zero" -Registers) | Fest (32-Bit), Variabel (32-Bit oder 64-Bit für Fma4 mit 32-Bit-Präfix[8]) | Bedingungscode | Bi | SVE und SVE2 | Nein | |
Avr | 8 | 1997 | 2 | Register -Register | RISC | 32 16 auf "reduzierte Architektur" | Variable (Meistens 16-Bit, vier Anweisungen sind 32-Bit) | Bedingungsregister, Konditionierte überspringen auf einem i/o oder allgemeiner Zweck Registrieren Sie Bit, vergleichen und überspringen | Wenig | ||||
AVR32 | 32 | Rev 2 | 2006 | 2–3 | RISC | 15 | Variable[9] | Groß | Java virtuelle Maschine | ||||
Schwarz | 32 | 2000 | 3[10] | Register -Register | RISC[11] | 2 Akkumulatoren 8 Datenregister 8 Zeigerregister 4 Indexregister 4 Pufferregister | Variabel (16- oder 32-Bit)) | Bedingungscode | Wenig[12] | ||||
CDC Upper 3000 -Serie | 48 | 1963 | 3 | Register -Memory | CISC | 48-Bit A Reg., 48-Bit Q Reg., 6 15-Bit B Register, Verschiedenes | Variable (24- oder 48-Bit) | Mehrere Arten von Sprung und Überspringen | Groß | ||||
CDC 6000 Zentralprozessor (CP) | 60 | 1964 | 3 | Register -Register | n / A[b] | 24 (8 18-Bit-Adresse Reg.,, 8 18-Bit Index Reg.,, 8 60-Bit Operand Reg.) | Variable (15-, 30- oder 60-Bit) | Vergleichen und besiegen | n / A[c] | Einheit vergleichen/verschieben | Nein | Nein | |
CDC 6000 Peripherer Prozessor (PP) | 12 | 1964 | 1 oder 2 | Register -Memory | CISC | 1 18-Bit Ein Register, Standorte 1–63 dienen als Indexregister für einige Anweisungen | Variable (12- oder 24-Bit) | Testen Sie ein Register, Testkanal | n / A[d] | Zusätzliche periphere Verarbeitungseinheiten | Nein | Nein | |
Crusoe (Native VLIW) | 32[13] | 2000 | 1 | Register -Register | VLIW[13][14] | Variable (64- oder 128-Bit im nativen Modus 15 Bytes in X86 Emulation)[14] | Bedingungscode[13] | Wenig | |||||
Elbrus (Native VLIW) | 64 | Elbrus-4s | 2014 | 1 | Register -Register[13] | VLIW | 8–64 | 64 | Bedingungscode | Wenig | Just-in-Time-Dynamikübersetzung: x87, IA-32, MMX, Sse, SSE2, x86-64, SSE3, Avx | Nein | Nein |
DLX | 32 | 1990 | 3 | RISC | 32 | Fest (32-Bit) | Groß | Ja | ? | ||||
ESI-RISC | 16/32 | 2009 | 3 | Register -Register | RISC | 8–72 | Variable (16- oder 32-Bit) | Vergleichen und besiegen und Bedingungsregister | Bi | Benutzerdefinierte Anweisungen | Nein | Nein | |
Itanium (IA-64) | 64 | 2001 | Register -Register | EPOS | 128 | Fest (128-Bit-Bündel mit 5-Bit-Vorlagen-Tag und 3 Anweisungen, jeweils 41-Bit) | Bedingungsregister | Bi (wählbar) | Intel Virtualisierungstechnologie | Nein | Nein | ||
M32R | 32 | 1997 | 3 | Register -Register | RISC | 16 | Variable (16- oder 32-Bit) | Bedingungsregister | Bi | ||||
Mico32 | 32 | ? | 2006 | 3 | Register -Register | RISC | 32[15] | Fest (32-Bit) | Vergleichen und besiegen | Groß | Benutzerdefinierte Anweisungen | Ja[16] | Ja |
MIPS | 64 (32 → 64) | 6[17][18] | 1981 | 1–3 | Register -Register | RISC | 4–32 (einschließlich "Zero") | Fest (32-Bit) | Bedingungsregister | Bi | Mdmx, MIPS-3D | Nein | Nein[19][20] |
Mmix | 64 | ? | 1999 | 3 | Register -Register | RISC | 256 | Fest (32-Bit) | ? | Groß | ? | Ja | Ja |
NIOS II | 32 | 200x | 3 | Register -Register | RISC | 32 | Behoben (32-Bit) | Bedingungsregister | Wenig | Soft -Prozessor, der auf einem Altera FPGA -Gerät instanziiert werden kann | Nein | Nur auf Altera/Intel FPGA | |
NS320XX | 32 | 1982 | 5 | Speicher -Memory | CISC | 8 | Variable Huffman codiert, bis zu 23 Bytes lang | Bedingungscode | Wenig | Bitblt -Anweisungen | |||
OpenRISC | 32, 64 | 1.3[21] | 2010 | 3 | Register -Register | RISC | 16 oder 32 | Fest | ? | ? | ? | Ja | Ja |
Pa-risc (HP/PA) | 64 (32 → 64) | 2.0 | 1986 | 3 | Register -Register | RISC | 32 | Fest (32-Bit) | Vergleichen und besiegen | Big → Bi | Max | Nein | |
PDP-8[22] | 12 | 1966 | Register -Memory | CISC | 1 Akkumulator 1 Multiplikator -Quotientenregister | Fest (12-Bit) | Bedingungsregister Test und Zweig | EAE (erweitertes arithmetisches Element) | |||||
PDP-11 | 16 | 1970 | 2 | Speicher -Memory | CISC | 8 (beinhaltet Stackzeiger, Obwohl jedes Register kann fungieren als Stackzeiger) | Variable (16-, 32- oder 48-Bit) | Bedingungscode | Wenig | Schwimmender Punkt, Kommerzieller Anweisungssatz | Nein | Nein | |
ENERGIE, Powerpc, Macht ISA | 32/64(32 → 64) | 3.1[23] | 1990 | 3 | Register -Register | RISC | 32 | Fest (32-Bit), Variabel (32- oder 64-Bit mit dem 32-Bit-Präfix[23]) | Bedingungscode | Big/Bi | Altivec, Apu, VSX, Zelle | Ja | Ja |
Risc-v | 32, 64, 128 | 20191213[24] | 2010 | 3 | Register -Register | RISC | 32 (einschließlich "Zero") | Variable | Vergleichen und besiegen | Wenig | ? | Ja | Ja |
Rx | 64/32/16 | 2000 | 3 | Speicher -Memory | CISC | 4 Ganzzahl + 4 Adresse | Variable | Vergleichen und besiegen | Wenig | Nein | |||
S+Kern | 16/32 | 2005 | RISC | Wenig | |||||||||
Sparc | 64 (32 → 64) | OSA2017[25] | 1985 | 3 | Register -Register | RISC | 32 (einschließlich "Zero") | Fest (32-Bit) | Bedingungscode | Big → Bi | Vis | Ja | Ja[26] |
Superh (SCH) | 32 | 1994 | 2 | Register -Register Register -Memory | RISC | 16 | Fest (16- oder 32-Bit), Variabel | Bedingungscode (einzelnes Bit) | Bi | Ja | Ja | ||
System/360 System/370 Z/Architektur | 64 (32 → 64) | 1964 | 2 (die meisten) 3 (FMA, unterschiedlich Operandenanlage) 4 (einige Vektorinst.) | Register -Memory Speicher -Memory Register -Register | CISC | 16 General 16 Steuerung (S/370 und später) 16 Zugang (ESA/370 und später) | Variable (16-, 32- oder 48-Bit) | Bedingungscode, vergleichen und verzweigen | Groß | Nein | Nein | ||
Durchgang | 32 (4 → 64) | 1987 | 1 | Stapelmaschine | Miser | 3 (als Stack) | Variable (8 ~ 120 Bytes) | Vergleichen und besiegen | Wenig | ||||
Vax | 32 | 1977 | 6 | Speicher -Memory | CISC | 16 | Variable | Bedingungscode, vergleichen und verzweigen | Wenig | Nein | |||
Z80 | 8 | 1976 | 2 | Register -Memory | CISC | 17 | Variable (8 bis 32 Bit) | Bedingungsregister | Wenig | ||||
Archi- Teatur | Bits | Ausführung | Intro- geführt | Max # Operanden | Typ | Entwurf | Register (ohne FP/Vektor) | Anweisungscodierung | Zweig Auswertung | Endian- ness | Erweiterungen | Offen | Königshaus frei |
Siehe auch
- Zentrale Verarbeitungseinheit (ZENTRALPROZESSOR)
- CPU -Design
- Vergleich der CPU -Mikroarchitekturen
- Befehlssatz
- Mikroprozessor
- Benchmark (Computing)
Anmerkungen
- ^ Die LEA (alle Prozessoren) und IMUL-Immediate (80186 & später) akzeptieren drei Operanden; Die meisten anderen Anweisungen der Base Ganzzahl akzeptieren nicht mehr als zwei Operanden.
- ^ Teilweise RISC: Last-/Store -Architektur und einfache Adressierungsmodi, teilweise CISC: Drei Anweisungslängen und kein einzelnes Befehlszeitpunkt
- ^ Da das Gedächtnis ein Array von 60-Bit-Wörtern ist, die keinen Mittel haben, um auf Untereinheiten zuzugreifen, macht Big Endian vs. Little Endian keinen Sinn. Die optionale CMU-Einheit verwendet die Big-Endian-Semantik.
- ^ Da das Gedächtnis ein Array von 12-Bit-Wörtern ist, die keinen Mittel haben, um auf Untereinheiten zuzugreifen, macht Big Endian vs. Little Endian keinen Sinn.
Verweise
- ^ Da Cruz, Frank (18. Oktober 2004). "Der IBM Naval Ordnance Research Taschenrechner". Columbia University Computing History. Abgerufen 28. Januar, 2019.
- ^ "Russisches virtuelles Computermuseum - Hall of Fame - Nikolay Petrovich Brustsov".
- ^ TroGemann, Georg; Nitussov, Alexander Y.; Ernst, Wolfgang (2001). Computer in Russland: Die Geschichte der Computergeräte und Informationstechnologie enthüllt. ViewEG+Teubner Verlag. S. 19, 55, 57, 91, 104–107. ISBN 978-3-528-05757-2..
- ^ "AMD64 Architekturprogrammierer Handbuch Band 6: 128-Bit und 256-Bit XOP- und FMA4-Anweisungen" (PDF). AMD. November 2009.
- ^ "Synopsys führt einen neuen 64-Bit-Bogenprozessor IP ein, der bis zu 3x Leistungssteigerungen für High-End-Embedded-Anwendungen liefert".
- ^ "ARMV8 -Technologievorschau" (PDF). Archiviert von das Original (PDF) Am 2018-06-10. Abgerufen 2011-10-28.
- ^ "Arm geht 64-Bit mit neuer ARMV8-Chip-Architektur". 27. Oktober 2011. Abgerufen 26. Mai 2012.
- ^ "Hot Chips 30 Konferenz; Fujitsu Briefing" (PDF). Toshio Yoshida. Archiviert von das Original (PDF) am 2020-12-05.
- ^ "AVR32 Architekturdokument" (PDF). Atmel. Abgerufen 2008-06-15.
- ^ "Blackfin -Handbuch" (PDF). analog.com.
- ^ "Überblick über Blackfin -Prozessorarchitektur". Analoge Geräte. Abgerufen 2009-05-10.
- ^ "Blackfin Memory Architecture". Analoge Geräte. Archiviert von das Original Am 2011-06-16. Abgerufen 2009-12-18.
- ^ a b c d e "Crusoe Exposed: Transmeta TM5xxx Architecture 2". Technologien der realen Welt.
- ^ a b c Alexander Klaiber (Januar 2000). "Die Technologie hinter Crusoe -Prozessoren" (PDF). Transmeta Corporation. Abgerufen 6. Dezember, 2013.
- ^ "Latticemico32 Architektur". Gitter -Halbleiter. Archiviert von das Original am 23. Juni 2010.
- ^ "Latticemico32 Open Source -Lizenzierung". Gitter -Halbleiter. Archiviert von das Original am 20. Juni 2010.
- ^ MIPS64 Architektur für Programmierer: Release 6
- ^ MIPS32 Architektur für Programmierer: Release 6
- ^ MIPs offen
- ^ "Wave Computing schließt seine MIPS Open -Initiative mit sofortiger Wirkung, Null Warnung".
- ^ OpenRISC -Architektur -Revisionen
- ^ "PDP-8-Benutzerhandbuch" (PDF). BitSavers.org. 2019-02-16.
- ^ a b "Power ISA Version 3.1". OpenPowerFoundation.org. 2020-05-01. Abgerufen 2021-10-20.
- ^ "RISC-V ISA-Spezifikationen". Abgerufen 17. Juni 2019.
- ^ Oracle Sparc -Prozessordokumentation
- ^ SPARC Architekturlizenz