Architekturen - Hardware-Zone

Direkt zum Seiteninhalt
Architekturen
Die Architektur, oft auch als Befehlssatzarchitektur (engl. Instruction Set Architecture, kurz ISA) bezeichnet, beschreibt Aufbau und Funktionsweise einer CPU aus Sicht des Programmierers. Sie bestimmt nicht nur den Befehls- und Registersatz, sondern auch wie die Adressierung des Speichers und die Behandlung von Programmunterbrechungen zu erfolgen hat. Die beiden bedeutendsten Architekturkonzepte sind CISC (Complex Instruction Set Computer) und RISC (Reduced Instruction Set Computer). Moderne CPUs basieren auf RISC-Architekturen.

CISC
(z.B. Zilog Z80, Intel 8086, Motorola 68000)
x86
(ab Intel 80386)
RISC
(IBM PowerPC, ARM)
Befehlssatz viele mächtige Befehleviele einfache und mächtige Befehlewenige einfache Befehle
Befehlsbreite (Opcode)langvariabelkurz
Anzahl Registergeringhochhoch
Adressierungsmodiviele, auch komplexerewenigewenige
Befehle pro Takt1variabelmehrere
Architekturen im Vergleich  
Befehlssatz

Der Befehlssatz stellt den "Wortschatz" eines Mikroprozessors dar. Er versteht nur Befehle, die auch in seinem Befehlssatz enthalten sind (z.B. ADD für Addiere oder SUB für Subtrahiere).
AAA
AAD
AAM
AAS
ADC
ADD
AND
CALL
CBW
CLC
CLD
CLI
CMC
CMP
CMPSB
CMPSW
CWD
DAA
DAS
DEC
DIV
HLT
IDIV
IMUL
IN
INC
INT
INTO
IRET
JA
JAE
JB
JBE
JC
JCXZ
JE
JG
JGE
JL
JLE
JMP
JNA
JNAE
JNB
JNBE
JNC
JNE
JNG
JNGE
JNL
JNLE
JNO
JNP
JNS
JNZ
JO
JP
JPE
JPO
JS
JZ
LAHF
LDS
LEA
LES
LODSB
LODSW
LOOP
LOOPE
LOOPNE
LOOPNZ
LOOPZ
MOV
MOVSB
MOVSW
MUL
NEG
NOP
NOT
OR
OUT
POP
POPA
POPF
PUSH
PUSHA
PUSHF
RCL
RCR
REP
REPE
REPNE
REPNZ
REPZ
RET
RETF
ROL
ROR
SAHF
SAL
SAR
SBB
SCASB
SCASW
SHL
SHR
STC
STD
STI
STOSB
STOSW
SUB
TEST
XCHG
XLATB
XOR
Der ursprüngliche Befehlssatz der x86-Architektur
Befehlsbreite

Gibt die Länge eines Befehls (Opcode) in Bit an. Im Zusammenhang mit der maximalen Befehlsbreite einer CPU spricht man häufig auch von n-Bit-Architektur oder -Prozessor. Ein 32-Bit-Prozessor kann z.B. einen 32 Bit langen Befehl innerhalb eines Taktes verarbeiten.

Registersatz

Der Registersatz bestimmt Art und Anzahl der Register.


Registersatz der x86-Architektur (Intel 80386SX)
a) Allzweck-Register, b) Segment-Register, c) Statusregister, d) Befehlszähler, e) Register für den geschützten Modus ("Protected-Mode")  f) Debug-Register g) Test-Register

Adressierung

Die Adressierung bestimmt, wie aus einer Programmadresse die tatsächliche Adresse im Speicher ermittelt wird. Je mehr verschiedene Algorithmen bzw. Modi zur Verfügung stehen, desto effizienter kann eine Adressierung erfolgen.


x86-Adressierungsmodi

IRQ-Behandlung

Als Unterbrechungsanforderung (IRQ = Interrupt ReQuest) bezeichnet man ein Signal, das von einem anderen Gerät oder durch ein Programm bei Auftreten eines bestimmten Ereignisses an den Prozessor gesendet wird, damit dieser sein aktuelles Programm unterbricht. Das kann im einfachsten Fall das Drücken einer Taste sein. Wie sich die CPU in diesem Fall verhält, wird ebenfalls durch die Architektur festgelegt.

CISC
Prozessoren mit CISC-Architektur waren bis Ende der 80er Jahre noch weit verbreitet. Das Ziel war eine Optimierung der Geschwindigkeit, indem man den Prozessor mit langen, mächtigen Befehlen ausstattet, damit dieser möglichst viele Daten pro Takt verarbeiten kann. CISC-Prozessoren arbeiteten in der Regel sequentiell; d. h. die Befehle wurden nacheinander einzeln abgearbeitet. Ein weiteres Merkmal von CISC-Prozessoren war das Vorhandensein eines festverdrahteten oder in einem ROM-Baustein untergebrachten Steuerprogramms.
RISC
Bei der RISC-Architektur wird eine hohe Geschwindigkeit der CPU durch Ausführung möglichst vieler einfacher, kompakter Befehle pro Takt erreicht. Durch die Einteilung der Befehlsverarbeitung in Phasen können praktisch mehrere Befehle parallel verarbeitet werden. Dazu müssen allerdings folgende Voraussetzungen erfüllt werden: Jede einzelne Phase muss in der gleichen Zeit durchlaufen und darf jeweils nur einer Verarbeitungseinheit zugeordnet werden.
x86 (IA-32)
Der größte Hersteller von Prozessoren Intel hat seine Produkte mit RISC- und CISC-Charakterzügen ausgestattet. Die modifizierte Architektur wird auch als x86-Architektur oder IA-32 (Intel Architecture 32-Bit) bezeichnet und kommt in allen CPUs ab dem 80386 vor. Der x86-Befehlssatz beinhaltet eine große Anzahl CISC-Befehle, die auch kompliziertere Funktionen ausführen können, aber mehrere Taktzyklen beanspruchen. Diese werden vor der Ausführungsphase in prozessorspezifische RISC-Mikroinstruktionen umgewandelt, um eine hohe Ausführungsgeschwindigkeit bei maximaler Kompabilität (Verträglichkeit mit älteren Programmen) zu erreichen. Die x86-Architektur wird immer wieder erweitert, um den steigenden Anforderungen gerecht zu werden.

Intel 64 (früher: Extended Memory 64 Technology) oder x86-64

Ältere x86-Prozessoren konnten nur 4 GiB Arbeitsspeicher verwalten, da sie nur 32 Adressleitungen (2^32 = 4.294.967.296 Bytes) hatten. Deshalb wurde mit den neueren Pentium-IV-Modellen die 64-Bit-Adressierung eingeführt. Außerdem wurde der Registersatz um 8 Allzweck-Register erweitert und die Registerbreite von 32 auf 64 Bit erhöht. Dadurch können auch reine 64-Bit-Programme auf x86-Prozessoren ausgeführt werden.
Befehlssatzerweiterungen
Da sich Ende der 90er Jahre rechenintensive Anwendungen aus dem Bereich der Bild- und Tonverarbeitung immer mehr durchsetzten, haben sich CPU-Hersteller und Softwareentwickler überlegt, wie man diese beschleunigen könnte, ohne eine komplett neue Archtektur für den Mikroprozessor entwerfen zu müssen. Die Entwickler untersuchten die Schlüsselfunktionen einer großen Menge angebotener Software, darunter Musiksynthese, Sprachkompression, Spracherkennung,  MPEG-Video und Bildbearbeitung. Das Ergebnis waren sog. SIMD-Befehle (Single Instruction Multiple Data), die auf der Tatsache beruhten, das bei diesen Anwendungen ein bestimmter Befehl mehrmals mit gleichartigen Daten parallel ausgeführt wird. So gibt es z.B. bei der Bildbearbeitung viele Effekte, die auf jeden einzelnen Bildpunkt denselben Befehl anwenden.

Wichtige Befehlssatzerweiterungen
Erweiterung
Einführung
Beschreibung
MMX (MultiMedia eXtensions)Pentium MMX (1997)
Erweiterte den Befehlssatz des Pentium-Prozessor um 57 SIMD-Befehle und fügte vier neue Datentypen hinzu:
  • "Packed bytes"; acht Byte, die zu einem 64-Bit-Quadwort zusammengefasst sind
  • "Packed word"; vier 16-Bit-Wörter, die zu einer 64-Bit-Quadwort zusammengefasst sind
  • "Packed doubleword"; zwei 32-Bit-Doppelwörter, die zu einem 64-Bit-Quadwort zusammengefasst sind
  • "Quadword"; Zahl einer Länge von 64-Bit (Stellen)
SSE (Streaming SIMD Extensions)Pentium III (1999)Ergänzte den Befehlssatz um weitere 72 SIMD-Befehle, darunter 52 Fließkomma-, 12 Media- und 8 Speicherbefehle. Darüber hinaus kamen 8 neue 128 Bit breite Register hinzu.
SSE2. SSE3, SSE4Pentium IV (ab 2000)
Es gibt nun sowohl Befehle mit einer Breite von 64 Bit als auch 128 Bit. Darüber hinaus werden 6 weitere Datentypen unterstützt:      
  • 128-Bit packed double-precision floating point (Gleitkommazahlen doppelter Genauigkeit, d.h. 64 Bit statt 32)
  • 128-Bit packed byte integers (8 Bit Ganzzahlen)
  • 128-Bit packed word integers
  • 128-Bit packed doubleword integers
  • 128-Bit packed quadword integers
Hinweis: 16 Bit = 1 word, 32 Bit = 1 doubleword, 64 Bit = 1 quadword
Die Erweiterungen SSE3, SSE4 und SSE4 fügten weitere Befehle hinzu.
AVX (Advanced Vector eXtensions), AVX2Core i3, i5, i7 (2011)Verdoppelt die Breite der SSE-Register auf 256 Bit und führt neue 256 Bit lange Befehle ein. Außerdem gibt es ein neues Befehlsformat mit 3 Operanden (c = a + b). Anders als beim bisher üblichen 2-Operanden-Format (a' = a + b) wird der Inhalt des Quellegisters nicht vom Ergebnis überschrieben. Dadurch entfällt das aufwändige Kopieren des Operanden in ein anderes Register.
Kurzübersicht Befehlssatzerweiterungen
Erweiterung
Einführung mit
Schwerpunkt
Anwendungen
ABM (Advanced Bit Manipulation)
Bulldozer 2. Gen.
Bit-Manipulation
Bildbearbeitung
AES-NI (Advanced Encryption Standard - New Instructions)
Sandy Bridge, Bulldozer
AES-Verschlüsselung
7-zip, OpenSSL 1.0.1, OpenBSD 4.8+, PGP Desktop 10.1.0+, TrueCrypt, Windows 7+, WinRAR
AVX (Advanced Vector eXtensions)Sandy Bridge, BulldozerVektor-BefehleBlender, OpenSSL 1.0.2
BMI (Bit Manipulation Instructions)
Haswell, Bulldozer 2. Gen.
Bit-Manipulation
Bildbearbeitung
CLMUL (CarryLess MULtiplication)
Westmere, Bulldozer
vorzeichenlose Multiplikation
Verschlüsselung, Datenkompression (PNG, zip), Prüfsummen-Berechnung (CRC)
FMA (Fused Multiply Add)
Haswell, Bulldozer
Multiply-Accumulate (MAC)
Dekodierung von Videos, Bildbearbeitung
MPX (Memory Protection eXtensions)
Skylake
Speicherschutz
Linux-Kernel 3.19
SGX (Software Guard eXtensions)SkylakeSpeicherschutzSchutz vor bösartigem Programmcode, DRM (Digitale Rechteverwaltung)
TBM (Trailing Bit Manipulation)
Bulldozer 2. Gen.
Bit-Manipulation
Bildbearbeitung
TSX (Transactional Synchronization eXtensions)
HaswellTransaktionenDatenbanken, Programme mit mehreren Threads
XOP (eXtended OPerations)
Bulldozer
Vektor-Befehle

Mikroarchitektur
Die Mikroarchitektur beschreibt im Gegensatz zur Befehlssatzarchitektur nicht das Programmiermodell eines Prozessors, sondern dessen konkrete, hardwareseitige Umsetzung. Sie bestimmt Aufbau und Funktionsweise des Prozessors (Funktionseinheiten, Daten- und Befehlsflüsse, Steuersignale) aus Sicht des Hardware-Designers. Zur vereinfachten Beschreibung einer Mikroarchitektur werden Blockdiagramme verwendet.
Die Aufteilung des Prozessor-Designs in Befehlssatz- und Mikroarchitektur ermöglicht die Entwicklung von Programmen unabhängig vom internen Aufbau der CPU. Das hat den großen Vorteil, dass ältere Programme auch auf neueren Prozessoren und (teilweise*) umgekehrt funktionieren, solange sie auf einer einheitlichen Befehlssatzarchitektur aufbauen und die Prozessorleistung noch ausreicht. Ein gutes Beispiel ist die x86-Architektur: Selbst Programme, die für einen 8086-Prozessor geschrieben wurden, funktionieren auf einem Core-i3-Prozessor. Unter den Systemvoraussetzungen bei vielen Programmen steht noch heute "x86-kompatible CPU".

*wenn das Programm nicht eine neuere Befehlssatzerweiterung benötigt, z.B. MMX-Unterstützung


Intel-Mikroarchitekturen (1993 - 2017)

In grau dargestellt sind jeweils alle Befehlssatzerweiterungen und die Architektur
P5 (1993)
  • Pentium, Pentium MMX
MMX | x86
P6 (1995)
  • Pentium Pro, Pentium II, Pentium III
SSE | MMX | x86
NetBurst (2000)
  • Pentium IV, Pentium D
SSE3 | SSE2 | SSE | MMX
x86-64
Core (2006)
  • Core 2 Duo, Core 2 Quad, Celeron
SSE4.1 | SSE3 | SSE2 | SSE
MMX | x86-64
Nehalem (2009)
  • Core i3, i5, i7
SSE4.2 | SSE4.1 SSE3 | SSE2
SSE | MMX | x86-64
Sandy Bridge (2011)
  • Core i3, i5, i7 (2. und 3. Generation)
AES-NI | CLMUL | AVX | SSE4.2
SSE4.1 | SSE3 | SSE2 | SSE | MMX
x86-64
Haswell (2013)
  • Core i3, i5, i7 (4. Generation), Celeron, Pentium
AVX2 | TSX | SGX | FMA | BMI | AES
CLMUL | AVX | SSE4.2 | SSE4.1
SSE3 | SSE2 | SSE | MMX | x86-64
Skylake (2015)
  • Core i3, i5, i7 (6., 7. und 8. Generation)
  • X-Serie (Skylake-X)
MPX | SGX | AVX2 | TSX | FMA | BMI
AES | CLMUL | AVX | SSE4.2 | SSE4.1
SSE3 | SSE2 | SSE | MMX | x86-64
AMD-Mikroarchitekturen (1996 - 2017)
K5 (1996)
    • K5
x86
K6 (1997)
  • K6, K6-2, K6-III
3DNow! | MMX | x86
K7 (1999)
  • Athlon, Athlon XP, Duron, Sempron
SSE | 3DNow! | MMX | x86
K8 (2003)
  • Athlon 64, Athlon 64 X2, Athlon X2, Athlon FX, Sempron
SSE3 | SSE2 | SSE | 3DNow! |
MMX | x86-64
K10 (2007)
  • Athlon, Athlon X2, Sempron (2. Gen.), Phenom, Phenom II,
SSE4a | SSE3 | SSE2 | SSE
3DNow! | MMX | x86-64
Bulldozer (2011)
  • Athlon X4, AMD FX (1. und 2. Gen.), AMD A-Serie (1.,2. u. 3. Gen.)
AVX | FMA | BMI | ABM | TBM | XOP
AES | CLMUL | SSE4.2 | SSE4.1 | SSE4a
SSE3 | SSE2 | SSE | MMX | x86-64
Zen (2017)
  • AMD Ryzen 3, 5, 7, TR
AVX2 | AVX | FMA | XOP | BMI | AES
CLMUL | SSE4.2 | SSE4.1 | SSE4a
SSE3 | SSE2 | SSE | MMX | x86-64
Hinweis: Der Übersicht halber werden Mikroarchitekturen, die im Wesentlichen auf ihren Vorgänger aufbauen oder nur Änderungen im Fertigungsverfahren beinhalten, nicht aufgeführt


Zurück zum Seiteninhalt