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
  • 32 in 4-Bit
  • 16 in 8-Bit
  • 8 in 16-Bit
  • 4 in 32-Bit
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
  • 8 (+ 4 oder 6 Segment Reg.) (16/32-Bit)
  • 16 (+ 2 Segment Reg. GS/CS) (64-Bit)
  • 32 mit AVX-512
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
  • 15
Fest (32-Bit) Bedingungscode Bi NEON, Jazelle, VFP,
Trustzone, LPAE
Nein
Daumen/T32 32 ARMV4T-Armv8 1994 3 Register -Register RISC
  • 7 mit 16-Bit-Daumenanweisungen
  • 15 mit 32-Bit-Daumen-2-Anweisungen
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]
  • 1 im nativen Push -Stack -Modus
  • 6 in x86 Emulation +
    8 im x87/mmx -Modus +
    50 im Status umbenennen
  • 12 Ganzzahl + 48 Schatten +
    4 Debugug in Native VLIW
  • Modus[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

Anmerkungen

  1. ^ 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.
  2. ^ Teilweise RISC: Last-/Store -Architektur und einfache Adressierungsmodi, teilweise CISC: Drei Anweisungslängen und kein einzelnes Befehlszeitpunkt
  3. ^ 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.
  4. ^ 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

  1. ^ Da Cruz, Frank (18. Oktober 2004). "Der IBM Naval Ordnance Research Taschenrechner". Columbia University Computing History. Abgerufen 28. Januar, 2019.
  2. ^ "Russisches virtuelles Computermuseum - Hall of Fame - Nikolay Petrovich Brustsov".
  3. ^ 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..
  4. ^ "AMD64 Architekturprogrammierer Handbuch Band 6: 128-Bit und 256-Bit XOP- und FMA4-Anweisungen" (PDF). AMD. November 2009.
  5. ^ "Synopsys führt einen neuen 64-Bit-Bogenprozessor IP ein, der bis zu 3x Leistungssteigerungen für High-End-Embedded-Anwendungen liefert".
  6. ^ "ARMV8 -Technologievorschau" (PDF). Archiviert von das Original (PDF) Am 2018-06-10. Abgerufen 2011-10-28.
  7. ^ "Arm geht 64-Bit mit neuer ARMV8-Chip-Architektur". 27. Oktober 2011. Abgerufen 26. Mai 2012.
  8. ^ "Hot Chips 30 Konferenz; Fujitsu Briefing" (PDF). Toshio Yoshida. Archiviert von das Original (PDF) am 2020-12-05.
  9. ^ "AVR32 Architekturdokument" (PDF). Atmel. Abgerufen 2008-06-15.
  10. ^ "Blackfin -Handbuch" (PDF). analog.com.
  11. ^ "Überblick über Blackfin -Prozessorarchitektur". Analoge Geräte. Abgerufen 2009-05-10.
  12. ^ "Blackfin Memory Architecture". Analoge Geräte. Archiviert von das Original Am 2011-06-16. Abgerufen 2009-12-18.
  13. ^ a b c d e "Crusoe Exposed: Transmeta TM5xxx Architecture 2". Technologien der realen Welt.
  14. ^ a b c Alexander Klaiber (Januar 2000). "Die Technologie hinter Crusoe -Prozessoren" (PDF). Transmeta Corporation. Abgerufen 6. Dezember, 2013.
  15. ^ "Latticemico32 Architektur". Gitter -Halbleiter. Archiviert von das Original am 23. Juni 2010.
  16. ^ "Latticemico32 Open Source -Lizenzierung". Gitter -Halbleiter. Archiviert von das Original am 20. Juni 2010.
  17. ^ MIPS64 Architektur für Programmierer: Release 6
  18. ^ MIPS32 Architektur für Programmierer: Release 6
  19. ^ MIPs offen
  20. ^ "Wave Computing schließt seine MIPS Open -Initiative mit sofortiger Wirkung, Null Warnung".
  21. ^ OpenRISC -Architektur -Revisionen
  22. ^ "PDP-8-Benutzerhandbuch" (PDF). BitSavers.org. 2019-02-16.
  23. ^ a b "Power ISA Version 3.1". OpenPowerFoundation.org. 2020-05-01. Abgerufen 2021-10-20.
  24. ^ "RISC-V ISA-Spezifikationen". Abgerufen 17. Juni 2019.
  25. ^ Oracle Sparc -Prozessordokumentation
  26. ^ SPARC Architekturlizenz