DEC Alpha

von Manuel de Melo & Stefan Semmelroggen

 

Der 21164 besitzt eine 64-Bit Lade/Speicher RISC-Architektur mit Mehrprozessorunterstützung.
Er ist 4-fach superscalar, d. h. es können pro Takt 4 Befehle gleichzeitig geladen werden. Ein Befehl ist 32 Bit breit.

Der Prozessor besteht aus folgenden funktionalen Einheiten:

  1. Instruction fetch / decode / branch unit
  2. Integer execution unit
  3. Floating point unit
  4. Memory address translation unit
  5. Caches (1st, 2nd, 3rd)

 

 

instruction fetch / decode / branch unit

Hier werden die Befehle geladen, decodiert und verteilt an die integer execution-, floating point- und memory
translation unit.
Sie enthält auch einen instruction translation buffer, welcher vollassoziativ ist und 48 Einträge faßt. Er enthält
Verknüpfungen virtueller -> physikalischer Speicher zur schnelleren Zuordnung.
Die Sprungvorhersage verwendet folgende Methoden:

  1. Vorwärtssprünge werden als nicht genommen - Rückwärtssprünge als genommen vorausgesagt
  2. Im instruction cache gibt es für jeden Befehl einen 2 Bit history state
  3. Für Sprungziele, die berechnet werden müssen, gibt es unbenutzte instruction bits, die die niederwertigsten
    Bits des wahrscheinlichen Ziels anzeigen.
    Diese Funktion erfordert allerdings die Unterstützung durch den Compiler.
  4. Für Unterprozeduraufrufe verwaltet die CPU einen branch stack, um diese zu beschleunigen.

 

Integer execution unit

Sie enthält zwei 7-stufige pipelines mit zwei Addierern, einem Multiplizierer und einem Registersatz.
Sie führt auch die Adressberechnungen für den Speicherzugriff durch.

 

Floating point unit

Sie enthält einen Registersatz, eine add- und eine multiply-pipeline. Die pipelines sind jeweils 9-stufig.
Divisionen werden mit Hilfe der add-pipeline durchgeführt, sind aber nicht pipelined.
Mit Ausnahme der Division können 2 Befehle pro Taktzyklus gleichzeitig ausgeführt werden.
Die Verzögerung für add / multiply beträgt vier Taktzyklen.
Es werden folgende Fließkommaformate unterstützt:
IEEE: single, double (32/64 Bit) mit allen Rundungsmodi

 

Memory address translation unit

Sie erhält bis zu zwei virtuelle Adressen (43 Bit) von der integer execution unit.
Mit Hilfe des vollassoziativen, 64 Einträge fassenden data translation buffers wird die physikalische
Adresse (40 Bit) ermittelt.
Zudem gibt es ein miss address file, mit welchem data cache misses, die den gleichen Block im data
cache betreffen zusammengeführt. Damit ist es möglich, mehrere misses mit einem "load block" zu bedienen.

 

Caches

1st level

Befehlscache: 8k - direct mapped mit 32 byte Blöcken
Datencache: 8k - dual read ported, single write ported und direct mapped mit write-through Strategie
und 32 byte Blöcken.

2nd level

On chip, 96k, 3-Wege mengenassoziativ mit write-back - write-allocate Strategien und möglichen
Blockgrößen von 32 oder 64 byte.

3rd level

Optional, extern, direct-mapped, write-back, write-allocate, 32 oder 64 byte Blöcke.
DieGröße kann 1, 2, 4, 8, 16, 32 oder 64 MB betragen.

 

Privileged architecture library code

PALcode ist eine Art Macrosprache, mit der der Prozessor in seinem Verhalten an das
jeweilige Betriebssystem angepaßt werden kann.
So kann zum Beispiel das Verhalten der Caches und Interrupts manipuliert werden.

 

Blockdiagramm

 

 

Leistungsaufnahme

Der 366MHz Alpha 21164 hat eine Leistungsaufnahme von 28W bei 3,3V.
Für jede Taktratenerhöhung um 66MHz steigt die Leistungsaufnahme um ca. 5W.

 

Weitere Informationen

http://www.digital.com/