19.05.2013 Views

Facoltà di Ingegneria Tesi di laurea ANALISI DELLE TECNOLOGIE ...

Facoltà di Ingegneria Tesi di laurea ANALISI DELLE TECNOLOGIE ...

Facoltà di Ingegneria Tesi di laurea ANALISI DELLE TECNOLOGIE ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

3.2.2 AMD-V Tagged TLB<br />

Nei sistemi multitasking, in generale, viene impiegata una stessa TLB per la maggior parte dei<br />

processi: ciò obbliga il sistema operativo a resettare (flush) la TLB ogni volta che si cambia il<br />

contesto. Quando il nuovo processo è in esecuzione, la TLB si riempie delle sue page table<br />

entries, fino al successivo cambio <strong>di</strong> contesto, in cui la TLB viene cancellata. Questo costante<br />

reset e riempimento della TLB è molto negativo per le performance, perché è costoso in<br />

termini <strong>di</strong> tempo. Per attenuare l’impatto del context switch, ogni TLB entry ha un task ID<br />

field, un campo <strong>di</strong> identificazione che permette al sistema <strong>di</strong> mantenere l’informazione <strong>di</strong> tutti<br />

i processi nella TLB nel cambio <strong>di</strong> contesto.<br />

Per i sistemi operativi guest in esecuzione su una macchina virtuale, la situazione è analoga.<br />

Infatti, ogni guest è inconsapevole della presenza <strong>di</strong> altri guest, e assegna i task ID ai suoi<br />

processi; così, però, <strong>di</strong>verse VM possono avere processi con lo stesso ID, e si possono creare<br />

errori <strong>di</strong> in<strong>di</strong>rizzamento nella TLB. La soluzione al problema, senza l’utilizzo <strong>di</strong> AMD-V,<br />

prevede il TLB flush ogni volta che l’hypervisor passa da una macchina virtuale ad un’altra:<br />

ciò costringe i processi in esecuzione sull’altra VM a riempire la TLB con le loro page table<br />

entries ad ogni world switch. Quest’approccio ha un significativo impatto negativo sulle<br />

performance del sistema virtuale, perché molte volte si azzera la TLB anche quando non c’è<br />

la reale necessità.<br />

Per questo la tecnologia AMD-V utilizza, a partire dal processore Opteron Rev-F, una tecnica<br />

chiamata Tagged TLB, che prevede l’aggiunta alla TLB <strong>di</strong> un identificativo specifico per ogni<br />

macchina virtuale, detto Address Space Identifier (ASID). L’hypervisor assegna un valore<br />

dell’ASID univoco a ogni guest che deve funzionare sul processore; durante il controllo della<br />

TLB, il valore dell’ASID del guest attualmente in esecuzione viene confrontato con l’ASID<br />

nella TLB entry. Così le TLB entries che appartengono a <strong>di</strong>versi guest possono coesistere<br />

senza provocare address traslations sbagliate, e persistono durante i world switch, eliminando<br />

la necessità <strong>di</strong> ricorrere al TLB flush [11].<br />

3.2.3 AMD-V Nested Paging<br />

Per evitare i software overhead presenti nella tecnica dello shadow paging, i processori<br />

AMD64 Quad-Core aggiungono il Nested Paging all’hardware del page walker; questo nuovo<br />

metodo <strong>di</strong> virtualizzazione della gestione della memoria utilizza una tabella aggiuntiva, detta<br />

59

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!