4.0 🚧 Befehlsverarbeitung
YouTube, Pipeline anschaulich: Steve jobs talking about the Megahertz Myth 🔗
4.1 Load-Store Architektur
[Wikipedia: Load/Store-Architektur]
Fragen
- Wann spricht man von einer Load-Store-Architektur?
- Warum sind viele RISC-Architekturen danach konstruiert?
- Welche Vor- und Nachteile hat diese Architektur?
Lösungen
- Load/Store-Architektur: Wenn Daten-Speicherzugriffe immer über Register geschehen.
- Um die Befehle kompakter zu gestalten, es ist maximal ein Register und eine Speicheradresse beteiligt. Statt wie bei CISC viele Speicheradressen.
- 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
- Welche Aufgabe hat das Leitwerk?
- Wofür steht die Abkürzung IR?
Lösungen
- Das Leitwerk dekodiert den Befehl und schaltet für die Verarbeitung die notwendigen Verbindungen zwischen den Organen der CPU, z.B. Register zu ALU.
- 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
Holen | Dekodieren | Ausführen | |
---|---|---|---|
1. Takt | |||
2. Takt | |||
3. Takt | |||
4. Takt |
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
- Unser STM32 (AVR: ATmega328P) hat einen RISC Befehlssatz.
- Wo für steht die Abkürzung RISC?
- Nennen Sie die Alternative und die Abkürzung dazu.
- Welche Vor- und Nachteile hat RISC gegenüber der Alternative?
- Warum wurde RISC eingeführt?
Lösungen
- RISC -> Reduced Instruction Set Computer
- Alternative CISC -> Complex Instruction Set Computer
- 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. - RISC wurde in Hinblick auf effizienteres Pipelining eingeführt. Weniger “Strafe” bei Sprüngen: Kurze Befehle -> kurze Pipeline -> weniger Wegwerfen bei Sprung.