Virtualisation mémoire et E/S
La virtualisation mémoire
Lorsqu’il est seul installé sur une machine, un OS s’occupe de l’adressage de la totalité de la mémoire vive. En d’autres termes, il décide d’en allouer une certaine quantité à chaque application, quantité qui sera comprise entre le bit d’adresse x et celui d’adresse y. Cet adressage est réalisé sur une mémoire virtuelle, dite linéaire, qui représente la totalité de la mémoire vive disponible, qu’elle soit répartie sur une ou deux barrettes, ou sur le disque dur. La correspondance entre cette mémoire linéaire et la mémoire physique est réalisée par une unité du CPU, la MMU (Memory Management Unit). La MMU maintient à jour le tableau de correspondance entre les adresses physiques et les adresses linéaires demandées par l’OS, ce qui est appelé la page de table (page table ou PT en anglais).
Sur un ordinateur où tournent plusieurs systèmes d’exploitation, chacun ne peut utiliser qu’une portion de la mémoire vive totale. Le partage est décidé par le VMM lors de la création de chaque VM. Par exemple, l’OS 1 doit utiliser les bits zéro à x, et l’OS 2 les bits x+1 à y. Malheureusement, un OS débute toujours son adressage à zéro. Pour éviter les conflits entre différents OS fonctionnant simultanément, il faut donc que l’hyperviseur bloque tous les accès des OS vers la MMU et les réinterprète. Le VMM construit alors, pour chaque OS, une fausse page de table faisant correspondre les adresses linéaires réclamées par l’OS à celles qui lui sont réservées. Ce tableau de correspondance intermédiaire est appelé Shadow Page Table (SPT). Au final, un simple accès mémoire devient une opération complexe, la machine virtuelle devant s'occuper de la gestion de la mémoire du système client, ce qui — en cas d'accès fréquents à la mémoire — ralentit fortement le système hôte dans ses propres accès.
Pour réduire le travail du VMM, Intel et AMD ont inventé les Extended Page Tables (EPT) et Rapid Virtualization Indexing (RVI) respectivement. Il s’agit dans les deux cas d’implanter les SPT en hardware. En plus de la PT de la MMU, il y a donc une EPT ou RVI par OS invité. Ces tableaux permettent en fait de dédier une partie des adresses physiques de la mémoire à chaque OS. Ceux-ci peuvent alors accéder librement à leur propre domaine d’adresses réservé, sans provoquer l’intervention du VMM. L’ensemble des adresses mémoires physiques des OS invités est ensuite recompilé dans l’EPT et la gestion de la mémoire du système client est entièrement prise en charge par le matériel, ce qui est évidemment plus rapide qu'une implémentation logicielle.
Les deux technologies sont intégrées dans les processeurs haut de gamme chez les deux constructeurs : les Opteron Barcelona (et plus) chez AMD et les processeurs basés sur Nehalem (Core i7, par exemple) chez Intel.
La virtualisation des périphériques
Dernier point à prendre en charge, la virtualisation des E/S (entrées/sorties). En effet, même si l'accès au processeur est transparent avec VT-x et AMD-V, l'accès aux périphériques reste du ressort du programme de virtualisation : chaque logiciel doit créer ses propres périphériques virtuels, des pilotes adaptées à ces derniers doivent être dévellopés et les performances sont évidemment loin d'être mirobolantes (le problème se pose essentiellement pour les cartes graphiques). De plus, les logiciels de virtualisation doivent reproduire la gestion de la mémoire des périphériques et ce n'est pas toujours suffisant : si un programme de la machine virtuelle essaye d'accéder directement au matériel, il risque tout simplement de ne pas fonctionner. Pour régler le problème, les constructeurs ont donc proposé une nouvelle technologie, connue sous le nom d'IOMMU.
VT-d et AMD-Vi, les deux technologies d'Intel et AMD, permettent donc de créer un accès virtuel aux périphériques d'E/S. Le fonctionnement est un peu différent des instructions de virtualisations : au lieu de partager un périphérique entre deux systèmes (hôte et client), la technologie permet en fait de donner un accès direct à un périphérique depuis une machine virtuelle. Il n'y a pas ici de notion de partage en tant que tel, mais bien un accès direct et exclusif : si la machine virtuelle accède à un périphérique comme une carte graphique, la machine hôte perd son accès, ce qui suppose (dans le meilleur des mondes) qu'une carte graphique dédiée à la machine virtuelle soit installée. Il est possible de partager la majorité des périphériques, des ports USB aux connecteurs PCI-Express (et donc les cartes installées), tout en gardant bien à l'esprit que l'accès est exclusif.
Contrairement à VT-x et AMD-V, qui dépendent du processeur, ces deux technologies dépendent du chipset (ou du processeur, dans le cas des modèles Intel intégrant le contrôleur PCI-Express). Actuellement, VT-d et AMD-Vi sont peu utilisés et les logiciels capables de tirer parti des technologies sont rares. De plus, certains périphériques demandent des pilotes spécifiques pour être utilisés avec VT-d ou AMD-Vi.
Dans les faits, la virtualisation des périphériques est essentiellement utilisée pour deux usages : offrir des capacités vidéo correctes à une machine virtuelle (en dédiant une carte graphique) ou — plus courant — permettre à une machine virtuelle présente sur un serveur de disposer de sa propre carte réseau. Des cartes mères dédiées à ce type d'installation (et disposant donc de plusieurs cartes réseau) existent d'ailleurs.
Pour ce qui est de la compatibilité, les chipsets de la famille Q d'Intel ainsi que les puces dédiées aux Nehalem sont généralement compatibles alors qu'AMD ne propose AMD-Vi que sur les chipsets de la famille 8xx (pas encore disponibles).

Quels ont les softs de virtualisation qui supporte vt-d ? Vmware ? (quels version de vmware) ...
Petite question :
à l'heure ou le hackintosh est devenu un viol de la propriété intellectuelle d'apple comment devons nous considérer la virtualisation?
Ce système ne profiterait donc qu'à apple ? Puisqu'il est possible d'installer windows sur un mac mais pas l'inverse... (pas de mac os x sur un pc)
Que devons nous attendre de cette avancée technologique puisqu'il ne nous ai pas permis d'installer mac os sur un pc...
Surtout que cela profiterait à bons nombres de professionnels ou même particuliers qui voudraient travailler sur mac os (adobe cs4 entre autres...)
et utiliser windows au loisirs.
Dans mon cas, la virtualisation me permet surtout d'avoir un environnement Windows avec des applis spécifiques qui tournent tout le temps, sans avoir à laisser mon PC (300W de conso) allumé !
Pour cela j'utilise mon Home Server VHS-4 Ve-hotech (45W de conso) qui intègre QEMU/KVM (+ accélération matériel), trés facile d'utilisation et performant, une fois qu'on y a goûté, on ne s'en passe plus
Intéressant ce dossier, même si j'ai remarqué qu'il s'agit surtout d'une mise à jour d'un dossier antérieur. Le sujet m'intéresse car j'ai de plus en plus souvent recours à la virtualisation malgré que je ne dispose pas encore de processeur capable de l'accélérer (j'ai des pentium 4 dépourvu de VT-x).
D'après l'article, si je passe d'un Pentium 4 à un Core i7, je n'aurais pas à choisir entre différents modèles puisque tous les Core i7 accélèrent la virtualisation, ce qui n'est pas le cas de tous les Core 2 : c'est bon à savoir
Juste une remarque à faire concernant le dossier :
Même si Windows Virtual PC, Microsoft Hyper-V et Parallels Workstation exigent effectivement des processeurs qui supportent les fonctions Intel VT-X ou AMD-V, il faut remarquer que les dernières versions de VmWare Workstation (logiciel qui reste la référence dans le domaine) et de Sun VirtualBox (une alternative gratuite) peuvent toujours fonctionner sans problème sur des processeurs plus anciens.
Quant à Windows 7, si Windows Virtual PC ne marche pas, il est toujours possible d'utiliser la version conçue pour Windows Vista.
Avec Microsoft Virtual PC 2007, vous ne pourrez pas bénéficier du XP Mode mais vous pourrez virtualiser sur une machine plus ancienne sous Windows 7. VmWare Workstation 7 et Sun VirtualBox 3.1.4 fonctionnent aussi très bien sous Windows 7 avec un proco ne supportant pas Intel VT-x ou AMD-V.
Dire que la virtualisation perce en 2006 pour faire tourner Windows sur mac, c'est quand meme restrictif. La virtualisation a surtout pris de l'importance dans les datacenter. Pour moi, les choses ont vraiment commencée avec vmware esx server, mais dans certains lieux, le mouvement avait commence avant.
Essentiellement les versions "pro" des programmes, simplement parce que VT-d reste rare. 9a devrait être de plus en plus courant dans le futur, surtout avec les Core ix qui le prennent en charge. Mais ça reste — de par les limitations — dédiés au monde professionnel.
@fricadelle59
On ne peut pas installer Mac OS sur un pc pour la simple et bonne raison que les drivers mac sont développé uniquement pour le matos qu'ils mettent dans leurs machine. On ne trouvera pas de drivers Mac pour une Radeon 5970 par exemple. Autrement dit si tu achètes un pc avec les mêmes composants qu'un mac tu pourrais installer Mac OS en théorie.