- •Сmos (Complementary Metal Oxide Semiconductor)-Technologie
- •Schaltnetze
- •Laufzeiteffekte
- •Synchrone und asynchrone Schaltwerke
- •1. Ansteuergleichungen der Flipflops bestimmen.
- •2. Kodierte Ablauftabelle (Übergangstabelle) aufstellen.
- •3. Automatengraphen entwickeln. Rechnerarithmetik und Codes
- •Ieee-p 754
- •Rechnermodell Aufbau eines einfachen µP
- •Mips (Microprocessor without Interlocked Pipeline Stages) Assembler
- •Pipelining
- •Cache-Speicher
- •Speicher
- •Virtuelle Speicherverwaltung
- •Bussystems
- •Systembausteine (programmierbare Systemsteuerbausteine und Schnittstellenbausteine) in einem Mikrorechner
- •V erschiedenes
Rechnermodell Aufbau eines einfachen µP
H
R:
Hilfsregister
AC: Accumulator
BR: Befehlsregister (Hier stehen die Assembler Befehle)
AP: Adress Puffer (Hier steht die letzte berechnete Adresse)
PC: Program Counter (Befehlszähler)
ABT: Adressbus Puffer
DBP: Datenbus Puffer
Mips (Microprocessor without Interlocked Pipeline Stages) Assembler
D
er
MIPS-Prozessor ist eine typische Register-Register-Maschine mit 32
allgemein verwendbaren Registern.
Byte (8 Bit), Halbwort (16 Bit), Wort (32 Bit)
.
align
n bewirkt, dass die folgenden Daten an der nächstmöglichen Adresse
gespeichert werden, die durch 2n teilbar ist.
Textsegment: beinhaltet den ausführbaren Maschinencode.
Datensegment: beinhaltet statische und dynamische Daten:
Speicherbereiche für statische Daten werden vom Assembler allokiert.
Speicherbereiche für dynamische Daten werden vom Programm allokiert.
Stacksegment: beinhaltet lokale Daten und Rücksprungadressen für Unterprogramme.
Kernelsegmente: beinhalten betriebssystemeigene Daten und Prozeduren.
Pseudobefehle stellen eine Erweiterung der Assemblerbefehle dar. Sie werden vom Assembler in eine Folge von Maschinenbefehlen umgesetzt. Für den Assemblerprogrammierer unterscheiden sie sich nicht von den echten Maschinenbefehlen.
Assemblerdirektiven sind Anweisungen an den Assembler, die z. B. der Steuerung des Assembliervorgangs, der Platzierung vom Programmcode und Daten, der statischen Allokierung von Speicherplatz, der Wertzuweisung an Operanden und der Erzeugung von Konatanten dienen.
if (i == j) i = i + i else if (i == k) i = i + k; else i = j + k; |
bne $s1, $s2, Elseif add $s1, $s1, $s1 Elseif: bne $s1, $s3, Else add $s1, $s1, $s3 Else: add $s1, $s2, $s3
|
|
ptr = &i
i = **ptr |
la $t0, i sw $t0, ptr
lw $t0, ptr lw $t0, 0($t0) lw $t0, 0($t0) sw $t0, i |
Adresse: la $s0, vec (Marke) |
Wert aus dem Array: Lw $a0, 0($t2) (in t2 steht die Adresse des Elements) |
|
|
|
Pipelining
Pipelining: Zerlegung einer Maschinenoperation in mehrere Phasen oder Suboperationen, die dann von hintereinander geschalteten Verarbeitungseinheiten taktsynchron bearbeitet werden, wobei jede Verarbeitungseinheit genau eine spezielle Teiloperation ausführt.
DLX-Pipelinestufen
Befehlsbereitstellungs-Phase (IF-Phase: Instruction Fetch)
Dekodier- und Operandenbereitstellungsphase (ID/RF-Phase: Instruction Decode & Register Fetch)
Ausführungsphase / Berechnung der effektiven Adresse (EX-Phase: Execution/Effective Address Calculation)Datenabhängigkeiten
S1: add r1,r2,2
S2: add r4,r1,r3
S3: mul r3,r5,3
S4: mul r3,r6,3
Echte Abhängigkeit
Gegenabhängigkeit
Ausgabeabhängigkeit
S1 -> S2
S2 -> S3
S2 -> S4
S3 -> S4
Speicherzugriffsphase (MEM-Phase: memory access)
Resultatspeicherphase (WB-Phase: write back)
n Befehle werden in einer k-stufigen Pipeline in k+(n−1) Taktzyklen ausgefuhrt.
Ausgabeabhängigkeiten und Gegenabhängigkeiten können in der DLX-Pipeline NICHT zu Konflikten führen: Lesen aus Registern – 2 Stufe. Schreiben aus Reg. – 5 Stufe.
Pipeline-Konflikten |
||
Datenkonflikte |
Struktur- oder Ressourcenkonflikte |
Steuerflusskonflikte |
Wenn ein benötigter Operand in der Pipeline (noch) nicht verfügbar ist. |
Wenn zwei Pipeline-Stufen dieselbe Ressource benötigen, auf diese aber nur einmal zugegriffen werden kann. |
Treten bei Programmsteuerbefehlen auf. |
Struktur- oder Ressourcenkonflikte können bei der DLX-Pipeline NICHT auftreten, da diese entsprechend entworfen ist.
Software Lösungen |
Hardware Lösungen |
|||||
Aufgabe des Compilers |
Statische Befehlsanordnung |
Leerlauf der Pipeline |
Forwarding |
Forwarding with interlocking |
||
Erkennen von Datenkonflikten Einfügen von Leeroperationen (nop) nach jedem Befehl, der einen Konflikt verursacht. |
Instruction Scheduling, Pipeline Scheduling Umordnen der Befehle des Programms, um Leeroperationen zu eliminieren |
|
Result For. Rückführung des ALU-Ausgaberegister auf die ALU Eingaberegister |
Load For. Rückführung des ALU- Ladewertregisters auf die ALU Eingaberegister |
|
|
