4.0 ­čÜž Befehlsverarbeitung

YouTube, Pipeline anschaulich: Steve jobs talking about the Megahertz Myth ­čöŚ

4.1 Load-Store Architektur

[Wikipedia: Load/Store-Architektur]

Fragen

  1. Wann spricht man von einer Load-Store-Architektur?
  2. Warum sind viele RISC-Architekturen danach konstruiert?
  3. Welche Vor- und Nachteile hat diese Architektur?
L├Âsungen
  1. Load/Store-Architektur: Wenn Daten-Speicherzugriffe immer ├╝ber Register geschehen.
  2. Um die Befehle kompakter zu gestalten, es ist maximal ein Register und eine Speicheradresse beteiligt. Statt wie bei CISC viele Speicheradressen.
  3. Vorteil: Einheitlich kompakte, gleichlange Befehle, besser f├╝r Pipelining.
    Nachteil: F├╝r den selben Effekt m├╝ssen manchmal mehr Befehle ausgef├╝hrt werden.

4.2 Steuerung / Leitwerk

[Wikipedia: Steuerwerk]

Fragen

  1. Welche Aufgabe hat das Leitwerk?
  2. Wof├╝r steht die Abk├╝rzung IR?
L├Âsungen
  1. Das Leitwerk dekodiert den Befehl und schaltet f├╝r die Verarbeitung die notwendigen Verbindungen zwischen den Organen der CPU, z.B. Register zu ALU.
  2. IR steht f├╝r Instruction Register, ist das Register in der ein Befehl zur Decodierung geladen wird.

4.3 Befehlspipeline

[Wikipedia: Pipeline (Prozessor)] [YouTube: Steve jobs talking about the Megahertz Myth]

Aufgabe 1

HolenDekodierenAusf├╝hren
1. Takt
2. Takt
3. Takt
4. Takt
Pipeline

F├╝llen Sie die Tabelle aus. Im Codespeicher steht:

mov R0,#10
mov R1,#20
add R2,R1,R0
mov R3,R2

Aufgabe 2

Berechnen Sie die Ausf├╝hrungszeit des Programms bei einer Taktfrequenz f=32MHz. Alle Instruktionen werden in einem Takt ausgef├╝hrt.
Hinweis: Wenn verzweigt wird werden ? zus├Ątzliche Takte ben├Âtigt um die Pipeline neu zu f├╝llen. Ich gehe hier von 3 Takten aus, habe allerdings schon Erkl├Ąrvideo mit weniger Takten bei bedingtem Sprung gesehen… ToDo: Video wieder finden mit Beispiel!
Warum sollten Verzweigungen in schnellen Programmen m├Âglichst vermieden werden? Bl├Âde Frage wie soll das gehen?
Welche Aufgabe hat der Programcounter?

Vorbedingungen: R0=100, R1=1
w1:
  subs R0,R1  //R0:=R0-R1, Nullanzeiger wird aktualisiert
  bne w1      //wenn 0 verzweige zu Sprungmarke w1

4.4 RISC_CISC

[Wikipedia: Reduced Instruction Set Computer]

Hinweis: Anzahl der Takte f├╝r ARM RISC stimmen f├╝r mich nicht, bzw. sind f├╝r mich noch nicht ganz nachvollziehbar.

ldr  R1,=Adresse (>=2 Takte) Wird in zwei Befehle vom Assembler umgewandelt!?
ldr  R2,[R1,0]   (2 Takte)
add  R0,R0,R2    (1 Takt)

ldr  R1,=Adresse (>=2 Takte) Wird in zwei Befehle vom Assembler umgewandelt!?
ldr  R2,[R1,0]   (2 Takte)
subs R2,#1       (1 Takt)
str  R2,[R1,0]   (2 Takte)
bne  Sprungmarke (>=1 Takte) Wie viele Takte bei Sprung und bei nicht Sprung? Gibt es Branch Pre Decision Table?

Fragen

  1. Unser STM32 (AVR: ATmega328P) hat einen RISC Befehlssatz.
    1. Wo f├╝r steht die Abk├╝rzung RISC?
    2. Nennen Sie die Alternative und die Abk├╝rzung dazu.
    3. Welche Vor- und Nachteile hat RISC gegen├╝ber der Alternative?
    4. Warum wurde RISC eingef├╝hrt?
L├Âsungen
  1. RISC -> Reduced Instruction Set Computer
  2. Alternative CISC -> Complex Instruction Set Computer
  3. Vorteil RISC: Befehle einfacher und m├Âglichst gleich lang (Bytes pro Befehl), dadurch besser f├╝r Pipelining geeignet -> weniger Stufen notwendig.
    Nachteil RISC: Teilweise mehr Befehle f├╝r Aktion notwendig, mehr Code-Speicher f├╝r selben Effekt notwendig.
  4. RISC wurde in Hinblick auf effizienteres Pipelining eingef├╝hrt. Weniger “Strafe” bei Spr├╝ngen: Kurze Befehle -> kurze Pipeline -> weniger Wegwerfen bei Sprung.