Virtualisatie
Ook op het vlak van ondersteuning voor virtualisatie zijn er onder de motorkap flinke verbeteringen. Intel heeft opnieuw getracht om de overhead van het gevirtualiseerd draaien van besturingssystemen zo veel mogelijk terug te dringen. Hiervoor heeft men een aantal interessante vindingen uitgedokterd. Deze slaan voornamelijk weer op het eerder in dit artikel uitgelegde verhaal van de Translation Lookaside Buffers (TLB's).
In een gevirtualiseerde omgeving heeft iedere virtual machine immers zijn eigen set TLB informatie. Dat betekent in de praktijk dat wanneer er wordt omgeschakeld van de ene VM naar de andere, dat de hele inhoud van de TLB moet worden weggeschreven naar RAM-geheugen en daarna de TLB informatie van de andere VM moet worden ingeladen. Deze acties kosten heel wat klokslagen en zijn daarmee een groot gedeelte van de overhead bij het gevirtualiseerd draaien van besturingssystemen.
Bij de Nehalem architectuur krijgt iedere virtual machine een zogenaamd virtual processor ID toegewezen. Alle combinaties in de TLB worden vervolgens getagd met dat VPID. Op die manier weet de processor exact welk gedeelte van de TLB bij welke virtual machine hoort en hoeft de TLB nooit meer te worden weggeschreven of opnieuw ingelezen.
Hypervisor software moet hier overigens wel voor geschikt gemaakt worden, maar Intel heeft inmiddels aangekondigd dat ondermeer VMware deze processorextensies in een toekomstige versie van de ESX HyperVisor zullen ondersteunen. Ook Xen komt spoedig met een geschikte versie.
Volgens Intel is de duur van het overschakelen tussen twee VM's bij de afgelopen processorgeneraties dankzij dergelijke verbeteringen flink gedaald. Penryn schijnt al zo'n 40% minder overhead te hebben dan de eerste processors met de Core architectuur. Bij Nehalem heeft Intel de overhead opnieuw met zo'n 33% ingeperkt.
Nieuwe instructies
De nieuw instructies van de Nehalem architectuur hebben we in onze oorspronkelijke preview al uitgebreid besproken. Om het verhaal te complementeren, laten we ze graag nog eens de revue passeren. In totaal zijn er zeven nieuwe instructies, die allen vallen onder de naam SSE 4.2. Vijf van de zeven instructies zijn speciaal bedacht om het verwerken van XML te versnellen. Zo zijn er instructies die het zoeken binnen strings flink kunnen versnellen. Voor veel internet servers kan dat men juiste software voor een aardige winst zorgen.
De zesde instructie is om het aantal enen in een register te tellen. Dit schijnt handig te zijn bij zaken als patroonherkenning. De laatste nieuwe instructie kan in één klap de CRC32 hash van een stuk data bepalen. Deze instructie is ondermeer toegevoegd om de drivers van iSCSI hardware flink te versnellen.