Die wichtigsten Eigenschaften :

Architektur :

Der FC0-Kern wird Eigenschaften vom Mips R2000, vom CDC6600 und vom früher Apha erben : einfache und effiziente Struktur des R2000 : feste Befehlslänge, Registersatz, Core-Größe und von CDC6600 werden das Auführungsschema, das "Scoreboard" und mehrere parallel arbeitende Einheiten erben.
Doch am interessantesten sind die intelligenten Techniken zur Erstellung der Hard und Software, die hinter beiden steckt.

Befehlslänge :

Alle Befehle sind 32 Bit lang und werden später noch ausführlich beschrieben.
Von Mips R2000 übernommen.

Die F-CPU hat 64 Register :

Das Register 0 hat hierbei (wieder bei der Mips R2000 abgeguckt) den festen Wert 0.

Es gibt Allzweckregister und Spezialregister zur Steuerung von Multiprozessor / Multiuser / Multitsking umgebungen und zur Steuerung des Prozessors und zur Zugriffssicherung auf Assemblerebene.


Die F-CPU ist ein variable-size ("undefinierte Breite") processor :

Soll heißen es werden variable Befehlslängen unterstützt, die in 2 Bits der Instruktion angegeben werden können.

So wird nach folgender Tabelle die Befehlslänge angegeben :

Flags
Size in Bytes
Width in Bits
00
1
8
01
2
16
10
4
32
11
8
64

 

Stackpointer wozu ? Wir haben doch Register :

Ihr habt richtig gelesen, die F-CPU hat keinen Stackpointer, da man ja jedes beliebige Register zum Speicherzugriff nutzen kann und sich daher einen Stackpointer als Register anlegen lässt.

Auf ein Condition Code Register wurde ebenfalls verzichtet :

Alte RISC Regel besagt ein Register ist entweder null oder nicht, auf diese Entscheidung bezieht sich der Unterschied zwischen einer Branch oder Conditional (arithm. /log.) Anweisung.
Registerinhalte werden via Cache (write back) geändert, also gibt es keine Inkonsistenzen, die ein CCR für Prozesswechsel notwendig erscheinen lassen.

Speicherzugriff über Paged-Memory :

Um großen privaten linearen virtuellen Speicher für alle Anwendungen zur Verfügung zu stellen. Seitenbezogene Sicherung ist ausserdem der einfachste Weg meherere Prozesse getrennt auf gemeinsamen Speicher zugreifen zu lassen - > Multitaskingunterstüzung.

Die Seiten können verschiedenste Größen haben z.B. 4KB, 32KB, 256KB und 2048KB, um die Anzahl der Seitentabellen in Grenzen zu halten (um malloc zu beschleunigen).
Um Speicher jenseits der 2MB Grenze zu verwalten werden einige Seitentabellen (2er Potenzen z.B. für 128 MB Ram sind das 64 x 2MB Seitentabellen) benötigt.
Für zwei solch grossen Felder ist Platz auf dem Chip vorgesehen (Basisadresse und Größe).
Die Seiten könne für den Transfer zur Festplatte on the fly komprimiert werden (Besonders gut für große Seiten), was ebenfalls den Bus entlastet.
Die Cache-Bits (dirty und valid) werden für die frühe Implementierung noch benötigt, werden aber später nicht mehr benötigt, da das OS die für die Multi-CPU Systeme besser regelt (wird aber trotzdem beibehalten).

Die Internen TLBs werden durch die Software geregelt und verwenden reservierte Speziealregister (kein RAM).
Dadurch, das man die Caching-Strategie dem OS überlässt, ist sie jederzeit änderbar !!

 

zurück zur Startseite