Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zusammenfassung von Zusammenfassung.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.37 Mб
Скачать

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

  1. Befehlsbereitstellungs-Phase (IF-Phase: Instruction Fetch)

  2. Dekodier- und Operandenbereitstellungsphase (ID/RF-Phase: Instruction Decode & Register Fetch)

  3. 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

    Ausführungsphase / Berechnung der effektiven Adresse (EX-Phase: Execution/Effective Address Calculation)
  4. Speicherzugriffsphase (MEM-Phase: memory access)

  5. 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