Grundlagen zu Intels Itanium (Teil II)

Speicher und Caches

Der Itanium-Prozessor besitzt eine dreistufige Hierarchie von Caches. Die L2-und L3-Caches speichern dabei sowohl Daten als auch Instruktionen Unified Cache), der L1-Cache ist geteilt in einen L1-Instruktions-und einen L1-Integer-Cache. Der L2- und der L3-Cache können über das System-Interface direkt auf den Hauptspeicher zugreifen, die L1-Caches sind mit dem L2-Cache verbunden.

Die L1- und L2-Caches sind als so genannte Prevalidated-Tag-Caches ausgeführt, um L1-Cache-Zugriffe mit nur einem Zyklus Latenzzeit zu gewährleisten. Im Tag-Ram des Cache ist nicht die physikalische Speicheradresse, sondern eine Referenz auf einen Eintrag im Translation Lookaside Buffer (TLB) gespeichert. Beim Auslesen gibt der Cache die Daten aus den verschiedenen Wegen des mehrfach assoziativen Speichers parallel aus. Gleichzeitig wird aus der virtuellen Speicheradresse über den vollassoziativen TLB ein Vektor erzeugt, der genau einen 1-Bit- und ansonsten nur 0-Werte enthält (one hot vector).

Dieser Vektor wird parallel mit allen vom Mehrwege-Tag-Ram gelieferten Tags durch bitweise and/or-Operationen verglichen und, falls vorhanden, der Cache-Weg, der das gewünschte Datum speichert, ermittelt. Ebenfalls gleichzeitig mit diesem Vorgang werden gespeicherte Datenwerte des Mehrwege-Cache parallel ausgelesen und die Daten des ermittelten Cache-Weges schließlich an die nachfolgenden Funktionseinheiten weitergeleitet.

Der wesentliche Unterschied zu herkömmlichen Caches besteht somit darin, dass das Tag-Ram nicht die physikalischen Speicheradressen, sondern eine Referenz auf einen TLB-Eintrag speichert.