Suporte à Virtualização da Memória

Com essa nova fase do projeto, estamos acrescentando hierarquia de memória ao modelo MIPS-vt, que já possuía instruções de suporte de virtualização. Assim, como vamos acrescentar hierarquia de memória, vamos também adicionar técnicas de hardware para suporte à virtualização da memória.
As técnicas que iremos implementar são: a Tabela de Páginas Extendida (ou Extended Page Table - EPT) e o Identificador de Processador Virtual (ou Virtual Processor Identifier - VPID).

Extended Page Table - EPT

A EPT surge para substituir o sistema de Shadow Page Table utilizado inicialmente para a virtualização da memória.
Antes da EPT, o Monitor de Máquinas Virtuais (MMV) ou host mantinha uma Shadow Page Table para cada SO virtualizado ou guest. Quando SO virtualizado ou guest tinha a necessidade de traduzir um novo endreço, ele utilizada a sua Shadow Page Table para traduzir do endereço virtual do guest (gVA) para o endereço físico do guest (gPA). Então ocorria uma MV saída e o MMV passava a ter o controle da CPU e traduzia o endereço físico do guest (gPA) para o endereço físico do host (hPA). Essa tradução era guardada na TLB (Translation Look­aside Buffer). Assim, cada vez que ocorresse um TLB miss em um SO virtualizado, havia a necessidade de realizar uma MV saída e passar o controle da CPU para o MMV para que ele fizesse a tradução.

VMexit.jpg
MV saída necessária cada vez que ocorre um TLB miss utilizando Shadow Page Table


Com a EPT a tradução é feita sem a necessidade de ocorrer uma MV saída, pois a tradução é feita por hardware. A principal diferença é que com a Shadow Page Table o MMV precisava intervir e traduzir o gFA para o hPA, agora não há mais essa necessidade, pois a EPT faz isso.

EPT.jpg
Tradução utilizando a EPT

Virtual Processor Identifier - VPID

Antes do VPID, havia a necessidade de realizar um flush da TLB a cada MV saída ou MV entrada, pois o MMV não tinha como saber a qual processador virtual pertencia cada endereço traduzido na TLB, e, assim, não tinha como saber qual entrada da TLB poderia ser utilizada para um determinado processador virtual. Com o VPID, é possível identificar a qual processador pertence um determinado endereço da TLB, pois ele estará prefixado do VPID do processador virtual ao qual pertence, assim não há mais a necessidade de realizar um flush da TLB a cada troca de contexto.

VPID.jpg
Com o VPID prefixando os endereços da TLB, é possível saber qual é válido para cada processador virtual.

Last edited Oct 14, 2008 at 4:07 PM by mkferreira, version 3

Comments

No comments yet.