Architektur

Mit dem Begriff „Architektur“ werden die wesentlichen Merkmale eines Prozessors beschrieben:

  • die Prozessorbreite, die angibt, wie viele Bits an Daten ein Prozessor gleichzeitig pro Taktzyklus verarbeiten kann. Ein 64-Bit-Prozessor kann beispielsweise 64 Bits parallel verarbeiten. In der Fachliteratur wird sie häufig der Befehlssatzarchitektur zugeordnet.
  • die Befehlssatzarchitektur, die das Programmiermodell einer CPU definiert. Dazu gehört z.B. der Befehlssatz, der sozusagen den Wortschatz eines Prozessors darstellt.
  • die Mikroarchitektur, die den internen, funktionalen Aufbau eines Prozessors festlegt.

Prozessorbreite

Die Prozessorbreite bestimmt mehrere Eigenschaften der CPU:

  • in erster Linie die Breite bzw. Speicherkapazität der Datenregister
  • die Anzahl an Bits bzw. die größte Binärzahl, die die arithmetisch-logische Einheit (ALU) pro Taktzyklus verarbeiten kann. Eine 16-Bit-ALU kann beispielsweise pro Taktzyklus zwei Zahlen entweder ohne Vorzeichenbit im Bereich von 0 bis 2^16 – 1 (entspricht der Dezimalzahl 65.535) oder mit Vorzeichenbit im Bereich von -2^15 bis 2^15 – 1 (entspricht -32768 bis 32.767) addieren.
  • die Breite des Speicherbusses, d.h. die Anzahl der Datenleitungen zwischen CPU und Arbeitsspeicher
  • bei älteren Prozessoren ohne serielle Punkt-zu-Punkt-Verbindung die Breite des Datenbusses

Es gab in der Vergangenheit auch CPUs, deren Datenbus oder ALU aus Kostengründen nur halb so breit waren. So hatten etwa die 32-Bit-Prozessoren Motorola 68000 und Intel 80386SX nur einen 16 Bit breiten Datenbus. Der 68000er hatte außerdem nur eine 16-Bit-ALU, die aber mit 32-Bit-Zahlen rechnen konnte.

Befehlssatzarchitektur

Die Befehlssatzarchitektur (engl. Instruction Set Architecture, kurz ISA), 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 erfolgt. Die beiden bedeutendsten Architekturkonzepte sind CISC (Complex Instruction Set Computer) und RISC (Reduced Instruction Set Computer). Moderne CPUs basieren auf RISC-Architekturen.

 CISCIntel x86 (ab Intel 8086)RISC
Befehlssatz
  • Anzahl Operanden
viele mächtige Befehle
  • 1 oder 2
viele einfache und mächtige Befehle
  • 2 oder 3
viele einfache und mächtige Befehle
  • 2 oder 3
Befehlsbreitevariabelvariabelfest (32 Bit)
Anzahl Registergeringhochhoch
Adressierungsmodivielevielewenige (i.d.R. direkt und registerdirekt
Art des SpeicherzugriffsRegister-SpeicherRegister-SpeicherRegister-Register
Byte-ReihenfolgeLittle-Endian / Big-EndianLittle-EndianBig-Endian / Bi-Endian
Befehle pro Takt<1variabel>1 (Superskalarität)
Abgeleitete Befehlssatzarchitekturen
  • Intel 8080
  • MOS 6502
  • Motorola 68000
  • DEC VAX
  • Zilog Z80
  • IA-32 (Intel Architecture, 32-bit): ab Intel 80386
  • x86-64: ab AMD Athlon64, Intel Pentium 4 (F-Serie)

  • Alpha AXP

  • ARM

  • MIPS

  • PA-RISC

  • PowerPC

  • SPARC

  • SuperH

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). Moderne CPUs besitzen einen orthogonalen Befehlssatz d.h. jeder Befehl kann mit jedem Register und mit jeder Adressierungsart verwendet werden.


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


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

Art des Speicherzugriffs

Befehlssatzarchitekturen lassen sich auch nach der Art des Speicherzugriffs unterteilen in:

  • Register-Register-Architekturen (Load-/Store-Architektur): Die arithmetisch-logische Einheit (ALU) kann nur Operanden miteinander verknüpfen, die sich in den Registern befinden. Auch das Ergebnis muss zunächst in einem Register abgelegt werden. Operanden, die sich im Cache/Arbeitsspeicher befinden, müssen zuerst mit einem weiteren Befehl in die Register eingelesen (Load, „Laden“) bzw. von diesen in den RAM übertragen (Store, „Speichern“) werden. Dazu ist es notwendig, die physikalischen Speicheradressen der Operanden in logische Adressen umzuwandeln und umgekehrt. Diese Funktion übernimmt bei entsprechenden CPUs die Load-/Store-Einheit (LSU). Man bezeichnet solche Befehlssatzarchitekturen deshalb auch als Load-/Store-Architektur. Die Vermeidung direkter Speicherzugrfife verringert nicht nur Zugriffszeiten, sondern auch Datenabhängigkeiten (engl. Hazards), die bei der parallen Verarbeitung mehrerer Befehle auftreten können.
  • Register-Speicher-Architekturen: Die ALU kann in einem einzigen Befehl nicht nur Operanden verarbeiten, die in Registern abgelegt sind, sondern auch solche, die sich im Cache bzw Arbeitsspeicher befinden. Ergebnisse können direkt in den Arbeitsspeicher übertragen werden.

Rechenoperationen mit Zugriff auf den Arbeitsspeicher benötigen bei Register-Register-Architekturen neben dem eigentlichen Rechenbefehl, welcher von der arithmetisch-logischen Einheit (ALU) ausgeführt wird, z.B. „Addiere“, noch einen weiteren Befehl zum Holen/Ablegen der Operanden aus dem bzw. im Speicher (Load/Store). Bei Register-Register-Architekturen werden Zugriffe auf den langsamen Arbeitsspeicher auf ein Minimum reduziert, indem die benötigten Operanden so weit wie möglich in den schnelleren Registern zwischengespeichert werden. Aus diesem Grund verfügen Register-Register-Architekturen über einen größeren Registersatz als Register-Speicher-Architekturen. Entsprechende CPUs sind deshalb zwar wesentlich schneller, aber auch komplexer und teurer in der Herstellung.

Byte-Reihenfolge

Die Byte-Reihenfolge, in englischer Sprache als „Endianness“ bezeichnet, bestimmt die Reihenfolge, in der die einzelnen Bytes im Speicher abgelegt werden:

  • Little-Endian: Das kleinstwertige, rechts stehende Byte (Least Significant Bytem, LSR) wird an der niedrigsten Adresse im Speicher abgelegt, das nachfolgende Byte an der zweitniedrigsten Adresse usw.
  • Big-Endian: Das höchstwertige, links stehende Byte (Most Significant Byte, MSR) wird an der niedrigsten Adresse im Speicher abgelegt, das nachfolgende Byte an der zweitniedrigsten Adresse, usw.
  • Bi-Endian: Die Byte-Reihenfolge ist variabel einstellbar.

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 (Pipelining) 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.

Abgeleitete Architekturen

Alpha

Alpha-Architektur
EntwicklerDigital Equmint Corporation
EinsatzAlphachip 21x64-Serie
Registersatz
  • 32 64-Bit-Integer-Register (ganze Zahlen)
  • 32 64-Bit-Gleitkommaregister
  • 64-Bit-Befehlszähler (PC)
  • 3 Kontrollregister (werden u.a. für die Synchronisation beim Betrieb mehrerer CPUs benötigt)
Besondere Merkmale
  • Es gibt kein Statusregister; Zustandsinformationen (Flags) werden in einem Universalregister gespeichert und nur bei Bedarf ausgewertet. So kann die CPU bereits den nächsten Befehl ausführen, ohne sich um die Behandlung von Flags kümmern zu müssen.
  • keine Warteplätze bei Sprungbefehlen (branch delay slots)
  • optimiert für Mehrprozessorsysteme

ARM

ARM-Architektur
EntwicklerAdvanced RISC Machines
Einsatz (Beispiele)
  • Cortex-A-Serie (z.B. Smartphones, Tablets, Fernseher, Set-Top-Boxen)
  • Cortex-M-Serie (Steuerungschips für den industriellen Einsatz, digitale Signalprozessoren)
  • Cortex-R-Serie (v.a.für sicherheitskritische Anwendungen, z.B. medizinische Geräte, Motorsteuerungen, Airbags)
Befehlsbreite
  • abhängig vom Ausführungsmodus
AArch64:
32 Bit,
AArch32:
32 Bit, fest / 16+32 Bit, variabel
Registersatz
  • abhängig vom Ausführungsmodus
AArch64:
  • 31 64-Bit-Universalregister
  • 32 128-Bit-SIMD-Register
  • 64-Bit-Befehlszähler (PC), -Stapelregister (SPs) und -Link-Register für die Fehlerbehandlung (ELR)
AArch32:
  • 13 32-Bit-Universalregister
  • 32 64-Bit-SIMD-Register
  • 32-Bit-Befehlszähler, -Stapelregister und -Link-Register
Besondere Merkmale
  • Es gibt je nach verwendeter Software zwei Ausführungsmodi (32 oder 64 Bit).
  • der Thumb-Befehlssatz mit nur 16 Bit breiten Befehlen ermöglicht sehr kompakte Programme
  • Alle Befehle können bedingt ausgeführt werden. Dadurch werden unnötige Sprünge, die zu Pipeline-Stillständen führen können, vermieden.
Quelle: https://static.docs.arm.com/ddi0487/ea/DDI0487E_a_armv8_arm.pdf?_ga=2.4267632.2133538031.1572704124-783143061.1571499381

MIPS

MIPS-Architektur
(Microprocessor without Interlocked Pipelined Stage, "Mikroprozessor ohne verschränkte Pipeline-Stufen")
EntwicklerMIPS Technologies
EinsatzMikroprozessoren für Server, Ein-Chip-Systeme (SoCs) für Netzwerk- und Telekommunikations-infrastruktur, fortgeschrittene Fahrassistenzsysteme, autonome Fahrsysteme
Befehlsbreite
32 Bit
Registersatz
  • 32 64-Bit-Universalregister
  • 64-Bit-Befehlszähler (PC)
Besondere Merkmale
  • unterstützt Multi-Threading (MT)
  • Enhanced Virtual Addressing (EVA): erweitert den im 32-Bit-Kompatibilitätsmodus für den Anwender verfügbaren virtuellen Speicher von 2 auf 3 GB
Quelle: https://s3-eu-west-1.amazonaws.com/downloads-mips/documents/MD00083-2B-MIPS64INT-AFP-06.01.pdf

PA-RISC

PA-RISC-Architektur
(PA = Precision Architecture)
EntwicklerHewlett-Packard
EinsatzMikroprozessoren in Workstations, Servern und Großrechnern
Registersatz
  • 32 64- Bit-Universalregister
  • 7 64-Bit-Schattenregister
  • 32 64-Bit-Gleitkommaregister
Besondere Merkmale
  • Out-of-Order-Befehlsausführung
  • eine der ersten Architekturen mit SIMD-Erweiterung (MAX = Multimedia Acceleration eXtensions)
Quelle: https://www.openpa.net/pa-risc_architecture.html

PowerPC

PowerPC-Architektur
(Power = Performance optimization with enhanced RISC)
EntwicklerApple, IBM und Motorola (heute NXP Semiconductors)
Einsatz (Beispiele)Digitalreceiver, Videospielkonsolen (Nintendo GameCube/Wii), Apple Macintosh, zivile und militärische Luft- und Raumfahrt
Registersatz (Userebene)
  • 32 32-Bit-Universalregister
  • 32 64-Bit-Gleitkommaregister
  • 32-Bit-Status-, -Integer-Exception-Register und -Status-/Kontrollregister für Gleitkommaberechnungen
  • 32-Bit-Zähler- und -Link-Register
Besondere Merkmale
  • großer Registersatz (auf Anwenderebene 71 und 65 auf Administratorebene)
  • SIMD-Erweiterung: AltiVec bzw. VMX (Vector Media Extensions)
Quelle: https://www.nxp.com/docs/en/white-paper/POWRPCARCPRMRM.pdf

SPARC

SPARC-Architektur
(Scalable Processor ARChitecture)
EntwicklerSun Microsystems, Fujitsu
Einsatz (Beispiele)Workstations und Server
Registersatz (Userebene)
  • 64 - 528 64-Bit-Universalregister
  • 32 32-Bit-Gleitkommazahlen (einfache Genauigkeit)
  • 32 64-Bit-Gleitkommaregister (doppelte Genauigkeit)
  • 16 128-Bit-Gleitkommaregister (vierfache Genauigkeit)
Besondere Merkmale
  • sehr großer Registersatz (je nach Umsetzung bis zu 528 Register)
  • verschiebbares Registerfenster (je ein Satz von 24 Registern) für schnellen Prozesswechsel
  • RMO (Relaxed Memory Order): Speicherzugriffe müssen nicht in der vom Programm vorgegebenen Reihenfolge erfolgen
  • unterstützt Gleitkommazahlen mit vierfacher Genauigkeit (quad precision)
  • enthält Befehle für die Synchronisation mehrerer CPUs sowie bedingte Befehle zur Vermeidung von unnötigen Sprüngen im Programm
Quelle: https://sparc.org/technical-documents/#V9

SuperH

SuperH-Architektur
EntwicklerHitachi (heute Renesas Electronics)
Einsatz (Beispiele)Videospielkonsolen (z.B. Sega Saturn/Dreamcast), HP Jornada PDAs, eingebettete Systeme (v.a. in der Automobilbranche), digitale Signalprozessoren (DSPs)
Registersatz (Userebene)SHmedia-Modus:
  • 64 64-Bit-Universalregister
  • 64 32-Bit-Gleitkommaregister (optional)
SHcompact-Modus:
  • 16 32-Bit-Universalregister
  • 32 32-Bit-Gleitkommaregister (optional)

  • Befehlszähler
  • Kontrollregister
  • Gleitkomma-Status-/Kontrollregister
  • 8 Zielregister (nehmen Adressen von Sprungzielen auf)
Besondere Merkmale
  • 2 Ausführungsmodi: SHcompact und SHmedia
  • SHcompact: 32-Bit-Architektur mit 16 Bit breiten Befehlen (2 Operanden) für kompakten bzw. dichten Programmcode
  • SHmedia: 64-Bit-Architektur mit 32 Bit breiten Befehlen (3 Operanden) für hohe Ausführungsgeschwindigkeit
  • SIMD-Erweiterung
  • Geteilte Sprünge (Split-branch): Sprünge bestehen aus zwei Teilen: Der Sprungvorbereitung (prepare-to-branch) und dem eigentlichen Sprung (branch-to-target). In der Sprungvorbereitung wird die Adresse des (wahrscheinlichen) Sprungziels in einem der acht Sprungzielregister abgelegt. An dieser Adresse werden automatisch zwei Befehle geholt, wenn das Bit für einen Sprung mit hoher Wahrscheinlichkeit gesetzt ist. Wenn das vorbereitete Sprungziel und die Sprungvorhersage übereinstimmen, gibt es keine Verzögerung in der Ausführung des Befehls.
  • Virtueller Cache: Im Gegensatz zu einem physischen Cache erfolgt der Zugriff meistens ohne Einbeziehung des TLB (Translation Lookaside Buffer, enthält bereits übersetzte Seitenadressen), wodurch dieser beschleunigt wird.
Quelle: http://www.iuma.ulpgc.es/~nunez/procmultimedia98-00/hitachi/sh5_whitepaper.pdf