Nennen Sie vir typische CISC Merkmale
Umfangreiche Maschinenbefehlssätze (>> 150)
Viele Adressierungsarten
Viele Befehlsformate
Komplexe Mikroprogrammsteuerwerke
Wenig Register
Viele Adressierungsarten
Viele Befehlsformate
Komplexe Mikroprogrammsteuerwerke
Wenig Register
Nennen Sie vier typische RISC Merkmale
Kleine Maschinenbefehlssätze (< 150)
Wenig Adressierungsarten (<= 4)
Einheitliche Befehlsformate (<= 4, schnell dekodierbar)
Große, universelle Registersätze (>= 32)
Festverdrahtete Steuerwerke
Wenig Adressierungsarten (<= 4)
Einheitliche Befehlsformate (<= 4, schnell dekodierbar)
Große, universelle Registersätze (>= 32)
Festverdrahtete Steuerwerke
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)
Was versteht man unter Out-Of-Order-Execution
Bezeichnet die Möglichkeit, Befehle in den Ausführungseinheiten eines (meist) superskalaren Prozessors außerhalb der Programmreihenfolge auszuführen, mit dem Ziel, die Pipelines möglichst gut auszulasten
Wie können Compiler Datenflusskonflikte beheben?
Pipeline Scheduling:
Compiler sortiert Befehlsreihenfolge so um, dass nach dem Speicherzugriffsbefehl ein davon unabhängiger Befehl ausgeführt wird
Nachteile:
- Code u.U. von der Rechnerarchitektur abhängig
- Evtl. Debugging Probleme
Compiler sortiert Befehlsreihenfolge so um, dass nach dem Speicherzugriffsbefehl ein davon unabhängiger Befehl ausgeführt wird
Nachteile:
- Code u.U. von der Rechnerarchitektur abhängig
- Evtl. Debugging Probleme
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
Wie unterscheiden sich VLIW-Architekturen von Superskalaren?
Superskalar: Mehrere Instruction-Pipelines, extrem hoher Verwaltungsaufwand
VLIW: Sieht in einem Wort mehrere Befehle die dann auf verschiedene Einheiten aufgeteilt werden
VLIW: Sieht in einem Wort mehrere Befehle die dann auf verschiedene Einheiten aufgeteilt werden
Was versteht man unter EPIC
Explicitly Parallel Instruction Computing
- Verbesserung von VLIW durch
- Skalierbaren Befehlssatz
- Prädikation
- Spekulatives Laden
- Software-Pipelining durch Register-Rotating
- Verbesserung von VLIW durch
- Skalierbaren Befehlssatz
- Prädikation
- Spekulatives Laden
- Software-Pipelining durch Register-Rotating
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
Wie ist der gesamte Speicher der C16x Prozessoren unterteilt
Unterteilung in
255 Segmente
1 Segment ist 64kByte groß
1 Segment besteht aus 4 Pages
1 Page ist 16kByte groß
255 Segmente
1 Segment ist 64kByte groß
1 Segment besteht aus 4 Pages
1 Page ist 16kByte groß
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.
Durch welche Register wird der Systemstack verwaltet?
- Stack-Pointer (SP)
- Stack-Underflow (STKUN)
- Stack-Overflow (STKOV)
- Größe im SYSCON-Register (32, 64, 128, 256, 512, 1024 Words)
Stack wächst von oben nach unten!
Stack maximal 2Kbyte groß!
- Stack-Underflow (STKUN)
- Stack-Overflow (STKOV)
- Größe im SYSCON-Register (32, 64, 128, 256, 512, 1024 Words)
Stack wächst von oben nach unten!
Stack maximal 2Kbyte groß!
Zählen Sie die wichtigsten Statusflags im PSW auf
0: Negative Flag
1: Carry-Flag
2: Overflow-Flag
3: Zero-Flag
4: End-Of-Table-Flag
5: MULIP-Flag
6: User-Flag
1: Carry-Flag
2: Overflow-Flag
3: Zero-Flag
4: End-Of-Table-Flag
5: MULIP-Flag
6: User-Flag
Welches Segment im Adressraum der C16x Familie enthält die Register zu Steuerung der gesamten On-Chip-Peripherie?
Segment 0, Data-Page 3!
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.
Welche für den Programmierer wichtigen Komponenten sind im internen RAM-Bereich untergebracht?
System-Stack
GPR (General Purpose Register)
PEC-Pointer (Peripheral-Event-Controller)
GPR (General Purpose Register)
PEC-Pointer (Peripheral-Event-Controller)
Was versteht man unter XBUS
Interner Erweiterungsbus (eXtended BUS)
An den CPU Kern sind über 4 unterschiedliche Busse Peripherieeinheiten und Speicher angebunden. Bei dem C167 z.B. ein CAN-Controller und XRAM (2kByte eXtended RAM)
An den CPU Kern sind über 4 unterschiedliche Busse Peripherieeinheiten und Speicher angebunden. Bei dem C167 z.B. ein CAN-Controller und XRAM (2kByte eXtended RAM)
Nennen Sie ein Beispiel für einen durch die HW nicht gelösten Konflikt
Änderungen im ESFR werden erst im übernächsten Befehl wirksam. D.h. nach Änderung einen NOP durchführen.
Welche wichtigen Ausgaben führt der Assembler während des Übersetzungsvorgangs durch?
- Makros (@define )
- Steueranweisungen ($INCLUDE(), $PAGING, ...)
- Erzeugt aus C/C++ Programm ein ASM Programm
Ein Assembler ist ein Programm das aus Assemblerbefehlen Maschinenbefehle transformiert.
- Steueranweisungen ($INCLUDE(), $PAGING, ...)
- Erzeugt aus C/C++ Programm ein ASM Programm
Ein Assembler ist ein Programm das aus Assemblerbefehlen Maschinenbefehle transformiert.
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 !)
Was versteht man unter eine ASM-Direktive?
Befehle um Speicher zu reservieren und initialisieren, Segmente zuzuweisen, Kontanten zu definieren...
Welche Aufgabe erfüllt die Direkte EXTERN
Kennzeichnung der extern definierten Symbole in dem Modul, in dem der Zugriff erfolgt.
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.
Welchen Wert repräsentiert der Operator $
Adresspegeloperator, Symbol für den aktuellen Wert des Adresszählers:
Liste DB 1, 2, 3, 4, 5
Laenge SET ($ - Liste) ; Laenge enthält den Wert 5
Liste DB 1, 2, 3, 4, 5
Laenge SET ($ - Liste) ; Laenge enthält den Wert 5
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
Wie legt man einen nullterminierten String im Speicher ab?
Zeichenkette DB "NULL-Terminiert\0"
Geben Sie verschiedene Möglichkeiten an, um 4 Byte Speicher zu reservieren und jeweils mit FFH zu initialisieren
Daten DBFILL 4, FFH ; (Anzahl, Wert)
Daten DB FFH, FFH, FFH, FFH
Daten DB FFH, FFH, FFH, FFH
Welche Aufgaben hat der C-Präprozessor und wann wird er aktiv?
Wird vor dem Compiler / Assembler aktiv.
- Ersetzungskonstanten (#define)
- Makros
- Einbindung zusätzlicher Programmabschnitte
- Bedinge Übersetzung (#if ... #elif ... #endif)
- Ersetzungskonstanten (#define)
- Makros
- Einbindung zusätzlicher Programmabschnitte
- Bedinge Übersetzung (#if ... #elif ... #endif)
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
Können alle GP Register (R0 ... R15) über MOVB erreicht werden?
Nein, nur RL0, RH0 bis RL7, RH7
Kartensatzinfo:
Autor: Defqon
Oberthema: Informatik
Thema: Embedded Systems
Veröffentlicht: 13.05.2010
Schlagwörter Karten:
Alle Karten (37)
keine Schlagwörter