# 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 - Pipeline enthält Befehl, dass Pipeline gelöscht wird - währenddessen kann noch eine Instruktion ausgeführt werden (_kein Jump_) ## Klassifizierung gemäß Speicherorganisation ### Little/Big Endian ![image_269.png](image_269.png) ### 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)