TLBs und Virtualisation
TLB
Mit der neuen Cache-Hierarchie einher, gehen Änderungen an der TLB-Hierarchie, die sich um das Caching der virtuellen zu physikalischen Adressen kümmert.
Neu zum Einsatz kommt eine zweistufige TLB-Hierarchie, die zwischen aktiven Threads dynamisch alloziert wird. Der First-Level-TLB bedient alle Speicherzugriffe und enthält 64 Einträge für 4 KB Pages sowie 32 Einträge für 2M / 4M Pages wobei eine vierfache Assoziativität gewährleistet wird. Weiter verfügt Nehalem über einen Second-Level-Unified-TLB der 512 Einträge für Small-Pages beinhält und wiederum vierfach assoziativ ist.
Um den gesamten Cache allozieren zu können, verfügt ein jeder Kern über 576 Einträge für Small-Pages und 2304 für den kompletten Chip. Diese Anzahl TLB Einträge ermöglicht die Übersetzung von 9216 KB was mehr als genug ist, damit der gesamte 8 MB L3-Cache in Small-Pages gehalten werden kann.
VirtualisationDer TLB von Nehalem kann weiter auf VPIDs (Virtual Processor ID) zurückgreifen. Jeder TLB Eintrag speichert dabei die Übersetzung einer physikalischen zu einer virtuellen Adresse von einer Page im Speicher zwischen wobei die Übersetung spezifisch zu für einen gegebenen Prozess und eine virtuelle Maschine ist. Frühere Intel CPUs mussten den TLB jeweils leeren, wann immer von einem virtuellen Gast zur Host-Instanz gewechselt wurde. Damit setllte man sicher, dass nicht unerlaubterweise auf Speicherbereiche zugegriffen wurde. Die Latenz von Nehalem gegenüber Merom (65 nm Core 2) soll für einen Round-Trip bezüglich VM-Transition 40 Prozent betragen.
Eine weitere Verbesserung bezüglich Virtualisierung findet man in den Extended-Page-Tables, die nun viele VM-Transitionen eliminieren und nicht nur wie VPID die Latenz senken. Frühere Intel Designs benötigten jeweils einen Hypervisor der Page-Faults handhabte. Dies geschieht nun durch schlichtes Vergleichen der Page-Tables, was wiederum viele unnötige VM-Exits beseitigt.
Diesen Artikel im Forum diskutieren.