Welche Konflikte können durch das in modernen Prozessorarchitekturen eingesetzte Pipelining entstehen?
Datenflusskonflikte
- Hervorgerufen durch verzögerten Speicherzugriff
- Hervorgerufen durch nicht verfügbare Ergebnisse vorhergehende Befehle
Steuerflusskonflikte
- Hervorgerufen durch Verzweigung (bedingt, unpedingt), Interrupt, UP-Aufruf / Rücksprung
Strukturkonflikte
- Entstehen wenn für die Ausführung von Befehlen notwendige Funktionseinheiten (noch) belegt sind. (Bsp.: Gleichzeitiges Lesen / Schreiben von Befehlen / Daten)
- Hervorgerufen durch verzögerten Speicherzugriff
- Hervorgerufen durch nicht verfügbare Ergebnisse vorhergehende Befehle
Steuerflusskonflikte
- Hervorgerufen durch Verzweigung (bedingt, unpedingt), Interrupt, UP-Aufruf / Rücksprung
Strukturkonflikte
- Entstehen wenn für die Ausführung von Befehlen notwendige Funktionseinheiten (noch) belegt sind. (Bsp.: Gleichzeitiges Lesen / Schreiben von Befehlen / Daten)
Welche Hardwaremaßnahmen sehen Prozessorhersteller vor um Steuerflusskonflikte zu vermeiden?
Pipeline Interlock, bis Verzweigungsziel bekannt
Static Branch Prediction
- Annahme: keine Verzweigung, nachfolgende Befehle immer ausführen und ggf. Verwerfen
- Annahme: Verzweigung, Befehle am Verzweigungsziel ausführen
Dynamic Branch Prediction
- Annahme: wiederholt auszuführende Verzweigung wird gleiches Ziel haben wie Zuletzt, Befehle ab Sprungziel spekulativ laden
- Implementierung: Prädikationstabelle für die letzten Verzweigungen (98% Trefferquote)
- Look-Ahead-Resolution: Auswertung der Sprungbedingung so früh wie möglich, nur ein Maschinenzyklus geht verloren
Static Branch Prediction
- Annahme: keine Verzweigung, nachfolgende Befehle immer ausführen und ggf. Verwerfen
- Annahme: Verzweigung, Befehle am Verzweigungsziel ausführen
Dynamic Branch Prediction
- Annahme: wiederholt auszuführende Verzweigung wird gleiches Ziel haben wie Zuletzt, Befehle ab Sprungziel spekulativ laden
- Implementierung: Prädikationstabelle für die letzten Verzweigungen (98% Trefferquote)
- Look-Ahead-Resolution: Auswertung der Sprungbedingung so früh wie möglich, nur ein Maschinenzyklus geht verloren
Nennen Sie drei unterschiedliche Multithreading-Konzepte
Cycle-By-Cycle Interleaved Multithreading (Fine Grain MT)
- In jedem Taktzyklus wird der Befehl eines anderen Threads ausgeführt
Block Interleaved Multithreading
- Immer nur ein Thread wird ausgeführt
- Muss der aktive Thread warten wird auf einen anderen gewartet
Simultaneous Multithreading
- Pro Taktzyklus werden mehrere Befehle aus unterschiedlichen Threads (superskalar) ausgeführt
- In jedem Taktzyklus wird der Befehl eines anderen Threads ausgeführt
Block Interleaved Multithreading
- Immer nur ein Thread wird ausgeführt
- Muss der aktive Thread warten wird auf einen anderen gewartet
Simultaneous Multithreading
- Pro Taktzyklus werden mehrere Befehle aus unterschiedlichen Threads (superskalar) ausgeführt
Welche Register wreden für den Zugriff auf Codebereiche eingesetzt
Die hinteren 8 Bit des CSP (Code Segment Pointers) verweisen auf eines der 255 möglichen Segmente (-> Segmentnummer)
Der 16 Bit IP (Instruction Pointer) adressiert innerhalb der 64kByte großen Segmente (-> Intra Segment Adresse)
Der 16 Bit IP (Instruction Pointer) adressiert innerhalb der 64kByte großen Segmente (-> Intra Segment Adresse)
Welche Register werden für den Zugriff auf Datenbereiche eingesetzt und wie erfolgt die Auswahl dieser Register?
Es gibt 4 Datapagepointer (DPP0 ... DPP3) die über die ersten 2 Bit adressiert werden und selbst über eine max. 10 Bit Page-Adresse verfügen. (Adressierung von 1024 Pages möglich)
Die hinteren 14 Bit der Adresse (Intra Page Adress) ergeben eine Adressierung innerhalb der 16 kByte Pages.
Die hinteren 14 Bit der Adresse (Intra Page Adress) ergeben eine Adressierung innerhalb der 16 kByte Pages.
Wie erfolgt die Auswahl einer neuen Registerbank (GPR) und wo sind diese Register immer untergebracht?
Sind stets im 2kByte Internal-RAM angelegt.
Der Context-Pointer (CP) bestimmt die Lager der Registerbank unabhängig vom DPPx.
Durch Veränderung des CP Registers, kann eine neue Lage für eine Registerbank festgelegt werden. Durch SCTXT (Switch Context) Befehl wird die aktuelle Registerbank gesichert und auf eine andere verwiesen.
Der Context-Pointer (CP) bestimmt die Lager der Registerbank unabhängig vom DPPx.
Durch Veränderung des CP Registers, kann eine neue Lage für eine Registerbank festgelegt werden. Durch SCTXT (Switch Context) Befehl wird die aktuelle Registerbank gesichert und auf eine andere verwiesen.
Wie heißen die Register zur Steuerung der OnChip Peripherie? Und wie können Sie angesprochen werden?
Special-Function-Register (SFR)
Ansprechbar über:
Isolated I/O:
- Auf Peripherie Register wird mit speziellen Befehlen (z.B. IOR, IOW) geschrieben / gelesen. Adressraum dieser Register damit vollkommen getrennt von dem des Hauptspeichers
Memory-Mapped I/O:
- Teil des Adressraums des Hauptspeichers reserviert für I/O Adressen. Der für den Hauptspeicher zur Verfügung stehende Adressraum reduziert sich um diese Größe.
- Keine speziellen Befehle zum Zugriff auf Ports nötig. Stattdessen normaler Speicher Lese-/Schreibebefehle.
Ansprechbar über:
Isolated I/O:
- Auf Peripherie Register wird mit speziellen Befehlen (z.B. IOR, IOW) geschrieben / gelesen. Adressraum dieser Register damit vollkommen getrennt von dem des Hauptspeichers
Memory-Mapped I/O:
- Teil des Adressraums des Hauptspeichers reserviert für I/O Adressen. Der für den Hauptspeicher zur Verfügung stehende Adressraum reduziert sich um diese Größe.
- Keine speziellen Befehle zum Zugriff auf Ports nötig. Stattdessen normaler Speicher Lese-/Schreibebefehle.
Weshalb arbeitet der Assembler und der Linker mit sog. Sections?
Vergabemöglichkeit fester/absoluter Adressen entsprechend der vorgegebenen Speicherverwaltung.
Aufbau einer Symboltabelle:
- Eintrag eines Symbol/Adress-Paares bei der Symboldefinition unter Verwendung eines Adresszählers für jede Sektion
Aufbau einer Symboltabelle:
- Eintrag eines Symbol/Adress-Paares bei der Symboldefinition unter Verwendung eines Adresszählers für jede Sektion
Nennen Sie verschiedene Möglichkeiten (Konfigurationen) ein Programm zu debuggen
Simulator - Simuliert Target auf Host
+ Test von Algorithmen ohne Zielhardware
- Kein Echtzeitverhalten
- Nachbildung von I/Os nur bedingt möglich
- Unterschiedliche Busbreiten, Speicheranbindungen nicht testbar
Remote-Debugger: (Monitor, JTAG, BDM, ONCE)
> Monitorprogramm muss auf Zielsystem vorhanden sein (FLASH / RAM)
> Applikation wird in RAM geladen
> Monitorprogramm bedient Debuginterface
In-Circuit-Emulator
> Target µC wird ersetzt durch ICE-POD
> Vollständiger Zugriff auf Hardware und Software möglich
> Erweiterte TRACE-Funktionalität
> Sehr gut für Echtzeitapplikationen (teuer !)
+ Test von Algorithmen ohne Zielhardware
- Kein Echtzeitverhalten
- Nachbildung von I/Os nur bedingt möglich
- Unterschiedliche Busbreiten, Speicheranbindungen nicht testbar
Remote-Debugger: (Monitor, JTAG, BDM, ONCE)
> Monitorprogramm muss auf Zielsystem vorhanden sein (FLASH / RAM)
> Applikation wird in RAM geladen
> Monitorprogramm bedient Debuginterface
In-Circuit-Emulator
> Target µC wird ersetzt durch ICE-POD
> Vollständiger Zugriff auf Hardware und Software möglich
> Erweiterte TRACE-Funktionalität
> Sehr gut für Echtzeitapplikationen (teuer !)
Nennen Sie die für die ASM-Programmierung relevanten Sektionen (sections) und geben Sie deren Verwendungszweck an
CODE-Section: Code-Sektion (ROM), Zugriff über IP (64 kByte) und ggf. CSP
DATA-Section: Daten Sektion (ROM / RAM), Zugriff über DDPx (16kByte)
BIT-Section: Bit-Sektion (bitadressierbares USER-RAM) für Bitvariablen
Eine Section stellt einen zusammenhängenden Speicherbereich für Code und/oder Daten dar.
DATA-Section: Daten Sektion (ROM / RAM), Zugriff über DDPx (16kByte)
BIT-Section: Bit-Sektion (bitadressierbares USER-RAM) für Bitvariablen
Eine Section stellt einen zusammenhängenden Speicherbereich für Code und/oder Daten dar.
Wie wird Speicher für ein Byte im RAM reserviert?
Daten-Sektionen mit DSB, DSW, DSDW werden vom Linker / Locater im RAM-Bereich gelegt. Diese Direktiven können auch in bitadressierbaren Sektionen verwendet werden
Daten DS 20 ; 20 Byte im RAM, Startadresse Daten
DatenWords DSW 20 ; 20 Words im RAM
DatenDoubleWords DSDW ; 20 Doublewords im RAM
Daten DS 20 ; 20 Byte im RAM, Startadresse Daten
DatenWords DSW 20 ; 20 Words im RAM
DatenDoubleWords DSDW ; 20 Doublewords im RAM
Welche Adressierungsarten kennt der C167
Registeradressierung:
MOV R2, R7 ; kopiere Inhalt von R7 in R2
Direkte Adressierung
> Befehl enthält
Kurze Registeradresse (8 Bit) reg, bitaddr oder
Lange Speicheradresse (16 Bit) mem
> Um den Operanden direkt anzusprechen
Registerindirekte Adressierung
MOV R1, [R2]
Base-Offset-Adressierung
[Rw + #data16] ; Rw: Basisadresse (variable)
; #data16: Offset (fest)
MOV R1, [R2 + 0x1320]
Unmittelbare Adressierung
Wert des Operanden wird unmittelbar im Befehlswort angegeben, Kennzeichnung von Konstanten mittels Doppelkreuz (#)
MOV R1, #10
MOV R2, R7 ; kopiere Inhalt von R7 in R2
Direkte Adressierung
> Befehl enthält
Kurze Registeradresse (8 Bit) reg, bitaddr oder
Lange Speicheradresse (16 Bit) mem
> Um den Operanden direkt anzusprechen
Registerindirekte Adressierung
MOV R1, [R2]
Base-Offset-Adressierung
[Rw + #data16] ; Rw: Basisadresse (variable)
; #data16: Offset (fest)
MOV R1, [R2 + 0x1320]
Unmittelbare Adressierung
Wert des Operanden wird unmittelbar im Befehlswort angegeben, Kennzeichnung von Konstanten mittels Doppelkreuz (#)
MOV R1, #10
Flashcard set info:
Author: Defqon
Main topic: Informatik
Topic: Embedded Systems
Published: 13.05.2010
Card tags:
All cards (37)
no tags