# 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 -   ### 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 -  -  ### 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 -  - alle Instruktionen brauchen in etwa gleich lange -  ### 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 -  - stark unterschiedliche Zeiten für Instruktionsausführung -  ## 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 -  ## 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  ### 4-Adress-Befehle  - 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  - 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  - 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  - Zielregister ist implizit und wird ACC genannt - wird im [MU0-Design](MU0Rechner.md) benutzt - Hohe Befehlsdichte - geringe Flexibilität ### 0-Adress-Befehle  - 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 