1.0 🚧 Rechnerarchitektur Überblick

Rechnerarchitektur MindMap
Rechnerarchitektur MindMap

Blockschaltbild

Blockschaltbild
Blockschaltbild

Ich kann Liste

  • Blockschaltbild zeichnen
  • ALU und Flags C,N,Z im PSR erklären
  • Von Neumann- und Harvard-Architektur erklären
  • Befehlszyklus und Pipeline erklären mit Beispiel
  • SP,LR,PC erklären
  • Adressbus, Datenbus, Steuerbus erklären
  • Load- / Store-Architektur erklären
  • RAM-, ROM-Bausteine erklären

Speichermodell

Speichermodell
Speichermodell

ABI Musterprüfung Beispiel

Ich bin mit der Musteraufgabe nicht glücklich, sie sollte so gestellt sein, dass auch ein 8Bit-AVR-Controller verwendet werden könnte. Den 8051 ⚰️ hab ich nie verwendet, bei dem ESP32-Zeug kenn ich den Assembler nicht. STM32 und AVR haben Pipeline sollen dazu Fragen kommen, wie sieht es mit Timing aus? Es ist eine wahnsinnige Herausforderung unter dieser Controller-Vielfalt Prüfungsaufgaben zu erstellen.

Warum nicht doch wieder Assembler (mit lokaler Forsa) im Abi zulassen und rudimentäre typische Aufgabenstellungen in C vorgeben, die dann assembliert werden sollen siehe 1.3 ALU-Funktion und Simulation mit VisUAL2?
Wenn wir uns auf RISC-Maschinen mit Pipeline einigen dann könnten wir auch viele spannende Controller übergreifende Fragen dazu stellen.

Die ABI Musteraufgabe

Meine Anmerkungen, mit Blick auf STM32 und AVR zu den Aufgaben in «Klammern»

In Ihrem C/CPP-Programm findet sich folgende Anweisung: A=B+C; Sie wird vom Compiler in folgende Maschinenprogramm-Anweisungen übersetzt und im Code-Speicher des Mikrocontrollers gespeichert:

«Mit AVR so nicht machbar, da maximal 2 Register bei Addition beteiligt sein können. Außerdem wozu erst das Laden aus dem Speicher, in der Regel liegen die Wert doch sowieso noch in Registern vor. Es geht eigentlich doch nur um die Addition»

Lade B aus Speicher in Register R0
Lade C aus Speicher in Register R1
Addiere Register R2 := R0+R1
Speichere Register R2 im Speicher
  1. Erläutern Sie allgemein den Aufbau eines Maschinenbefehls.
  2. Beschreiben Sie, wie ein Maschinenbefehl aus dem Codespeicher in das Leitwerk gelangt. Gehen Sie in Ihrer Antwort auf folgende Begriffe ein:
    • Programmcounter
    • Adressbus
    • Codespeicher
    • Datenbus
  3. Nennen Sie drei Phasen, die bei der Abarbeitung eines Maschinenbefehls zur Anwendung kommen.
    «Bei AVR sind es vier»
  4. Für die Ausführung des Maschinenbefehls: „Addiere Register R2 := R0+R1“ schaltet das Leitwerk Verbindungen zwischen den Registern R0, R1 und R2 einerseits und der Arithmetisch-Logischen-Einheit (ALU) andererseits.
    «Kann AVR so nicht, R2:=R2+R1 wäre möglich»
    Zeichnen Sie ein Blockschaltbild mit: ALU, R0, R1 und R2 und deren Verbindungen für genau diesen Befehl.
  5. Beschreiben Sie, welche Auswirkung eine Änderung des Programmcounterinhalts auf den Programmablauf hat.

Lösungsvorschlag

  1. Ein Maschinenbefehl codiert einen Assemblerbefehl in Form einer Binärzahl.
    «Ich hätte was wie OpCode und ggfs Register und Konstante usw. als Antwort erwartet»
  2. Der Programmcounter speichert die Adresse des Maschinenbefehls.
    Der Programmcounterinhalt wird über den Adressbus zum Codespeicher geleitet.
    Der ausgewählte Maschinenbefehl gelangt über den Datenbus zum Leitwerk.
    «Im PC steht die Adresse des Befehls, diese wird auf den Adressbus gelegt, der Codespeicher gibt den Befehl über den Datenbus in das Leitwerk. (Dort wird er im IR gespeichert…)
  3. Fetch – Decode – Execute
    «AVR: Fetch – Decode – Execute – WriteBack»
  4. Siehe Bild rechts «Ich hätte noch “ALU” rein geschrieben»
  5. Eine Änderung des Programmcounters bewirkt einen Sprung