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