David Schirrmeister 6bbd1deb0f update
2024-05-22 11:25:28 +02:00

126 lines
4.1 KiB
Markdown

# Klassifikation
> Eigenschaften von Prozessoren
## Klassifizierung gemäß Operandenstruktur
### Stackarchitektur
- Stacks werden unabhängig von der jeweiligen Architektur verwendet
- bei Unterprogrammaufrufen und Prarameterübergaben
- Call-Befehl
- pusht Rücksprungadresse und ggf. Registerstati
- Return
- popt Werte wieder
- ![image_257.png](image_257.png)
![image_254.png](image_254.png)
### Akkumulator Architektur
- Ausgezeichnetes Register: Akku(mulator) (_ehem. ACC_)
- LOAD und STORE wirken nur auf Akku
- expliziter Operand, an jeder Operation beteiligt
- jede Operation braucht nur eine Adresse
- Sehr kompaktes Befehlsformat
- ![image_255.png](image_255.png)
- ![image_256.png](image_256.png)
### Register-Register-Architektur
- RISC (LOAD-STORE-Architektur)
- alle Operationen greifen nur auf Register zu
- 32-512 Register verfügbar
- **nur** LOAD und STORE greifen auf Speicher zu
- Einfaches Befehlsformat fester Länge
- ![image_258.png](image_258.png)
- alle Instruktionen brauchen in etwa gleich lange
- ![image_259.png](image_259.png)
### Register-Speicher-Architektur
- CISC (Mischung von Akkumulator- und Load-Store-Architektur)
- Operationen greifen auf Register und/oder Speicher zu
- Befehlsformat variabler Länge
- mächtige Befehle
- ![image_260.png](image_260.png)
- stark unterschiedliche Zeiten für Instruktionsausführung
- ![image_261.png](image_261.png)
## Klassifizierung gemäß Busaufbau
### [Vergleich Harvard- / von Neumann Architektur](MU6Rechner.md#vergleich-harvard-von-neumann-architektur)
### Bussysteme
- Systembus = Datenbus, Adressbus, Kontrollbus, Bus zur elektrischen Versorgung der Komponenten
- teilweise zstzl. I/O-Bus
- ![image_262.png](image_262.png)
## Klassifizierung gemäß Befehlssätzen
### Orthogonale Befehlssätze
> Wenn Opcode, Adressierungsart und Datentyp beliebig kombiniert werden können
| **Vorteile** | **Nachteile** |
|---------------------------------------------------|--------------------------------|
| Vereinfacht Nutzung der verfügbaren Instruktionen | Sehr umfangreiche Befehlssätze |
### CISC Kriterien
- Befehle unterschiedlicher Länge von 1-17 Byte
- Speichereffizienz
- komplexe Befehlskodierung
- Komplexer Befehlssatz
- Anpassung an Compiler
- Hochsprachenkonstrukte im Assembler
- Erleichterung der Assemblerprogrammierung
- Mächtige Befehle
- kurze Programme
### RISC Prinzipien
- Grundlegendes Design-Prinzip
- Einfachheit
- Befehle gleicher Länge (meist 32 Bit)
- Abarbeiten mit gleicher Taktzahl
- erlaubt Befehlspipelines
- Eingeschränkter Befehlssatz (32-128 Befehle)
- Explizite Lade/Speicher-Befehle (Load-Store-Architektur)
- [3-Adress-Befehle](#3-adress-befehle)
- Delayed Branches
## Klassifizierung gemäß Speicherorganisation
### [Little/Big Endian](MU4-5Rechner.md#speicheradressierung)
### 4-Adress-Befehle
![image_263.png](image_263.png)
- Allgemeinste Form für Befehlsformat
- next_i = Adresse des nächsten Befehls
- schwierig zu programmieren
- wird für Microcode verwendet (CISC Mikroprogramme)
### 3-Adress-Befehle
![image_264.png](image_264.png)
- Standard bei RISC Prozessoren (_bspw. ARM 32 Bit_)
- 3 Adressen benötigen Platz
- Format ist erst ab 32-Bit-Befehlssatz sinnvoll
- nächste Befehlsadresse implizit
- Sprungbefehle können implizites Verhalten ändern
### 2-Adress-Befehle
![image_265.png](image_265.png)
- Standardformat für 8 und 16-Bit-Mikroprozessoren
- Format für Intel Prozessoren
- RISC-Prozessoren mit komprimierten Befehlssatz nutzen ebenfalls das Format
- _bspw. ARM Thumb, MIPS_
### 1-Adress-Befehle
![image_266.png](image_266.png)
- Zielregister ist implizit und wird ACC genannt
- wird im [MU0-Design](MU0Rechner.md) benutzt
- Hohe Befehlsdichte
- geringe Flexibilität
### 0-Adress-Befehle
![image_267.png](image_267.png)
- Beide Operanden und das Ziel sind implizit
- Befehlssatz nur für Stackarchitektur möglich
- weitere Befehle mit Operanden zum Speichern / Laden nötig
- _verwendet in [Java Virtual Machine](12_Virtualisierung.md#anwendungsvirtualisierung)_
## Einordnung Prozessoren
![image_268.png](image_268.png)