http://www.vmware.com/fr/overview/history.html http://www.encyclopediefrancaise.com/Virtualisation_X86.html http://fr.wikipedia.org/wiki/Virtualisation_(informatique) http://fr.wikipedia.org/wiki/Jeu_d%27instruction_x86 http://en.wikipedia.org/wiki/Popek_and_Goldberg_virtualization_requirements Popek and Goldberg virtualization requirements (for a Virtual Machine Monitor) : - équivalence - contrôle des ressources efficacité Pour obtenir leurs exigences de virtualisation, Popek et Goldberg en place une classification des instructions de l'ISA en 3 groupes différents: Privileged instructions Des instructions privilégiées Those that trap if the processor is in user mode and do not trap if it is in system mode. Ceux qui piège si le processeur est en mode utilisateur et ne piège si elle est en mode système. Control sensitive instructions Sensibles à des instructions de contrôle Those that attempt to change the configuration of resources in the system. Ceux qui tentent de changer la configuration des ressources dans le système. Behavior sensitive instructions Comportement des instructions sensibles Those whose behavior or result depends on the configuration of resources (the content of the relocation register or the processor's mode). Ceux dont le comportement ou le résultat dépend de la configuration des ressources (le contenu du registre ou de la réinstallation du processeur mode). Look at isPrime example in section 3.1 (p. 3) Most code is identically translated (IDENT) - exact same instructions run But "jge prime" -> "jge [takenAddr]; jmp [fallthrAddr]" Addresses in brackets are *continuations* - what are these? Code is translated on demand When translating code, will see jumps to code not yet translated These are translated into jumps to continuation First time through, invokes translator Then patches jump so next time jump right to translated code Note: can elide [fallthrAddr] if that code next translation emitted Une comparaison de logiciels et de matériels techniques de la virtualisation x86 Keith Adams VMware kma@vmware.com Ole Agesen VMware agesen@vmware.com Jusqu'à récemment, l'architecture x86 qui n'a pas autorisé piège classique et imiter la virtualisation. Moniteurs pour la machine virtuelle x86, tels que VMware Workstation R et Virtual PC, ont plutôt utilisé binaire traduction de la guest kernel code. Cependant, Intel et AMD ont introduit des extensions à l'architecture classique de virtualisation. Nous comparer un logiciel existant, avec un nouveau VMM VMM conçu pour le nouveau support matériel. Étonnamment, le matériel souffre VMM souvent moins performant que les logiciels purs VMM. Pour déterminer la raison pour laquelle, nous étudions l'architecture au niveau des événements tels que la table des pages mises à jour, le contexte et les interrupteurs I / O, et de trouver leurs coûts très différents entre les natifs, les logiciels et le matériel VMM VMM exécution. Nous constatons que le support matériel ne parvient pas à fournir une performance sans équivoque pour deux raisons principales: d'abord, il propose pas de support pour la virtualisation MMU, le deuxième, il ne parvient pas à co-exister avec les techniques de logiciels de virtualisation pour MMU. Nous prévoyons de nouvelles techniques pour résoudre ce problème MMU virtualisation dans le contexte de la virtualisation assistée par matériel. Catégories et Subject Descriptors C.0 [général]: matériel / logiciel interface; C.4 [Performance des systèmes]: les attributs de performance; D.4.7 [Operating Systems]: Organisation et conception des Conditions Générales de performance, design Mots-clés de virtualisation, Virtual Machine Monitor, Dynamic Binary Translation, x86, VT, SVM, MMU, TLB, Nested Paging 1. Introduction Le x86 a toujours manqué de support matériel pour la virtualisation [21]. Si paravirtualisation [5, 25], ou de changer le système d'exploitation invité à autoriser la virtualisation, a produit des résultats prometteurs, ces changements ne sont pas toujours pratique ou souhaitable. La nécessité de virtualiser les systèmes d'exploitation x86 sans modification a donné lieu à des techniques de logiciels qui vont au-delà de la classique trapand-émuler Virtual Machine Monitor (VMM). Le plus connu de ces logiciels VMMs, VMware Workstation et Virtual PC, l'utilisation de la traduction binaire entièrement virtualiser x86. Le logiciel VMMs ont permis l'utilisation généralisée de la machine virtuelle x86 à la consolidation de serveurs, faute de maîtrise, de sécurité et de la gestion des ressources. Récemment, les principaux fabricants de CPU x86 ont annoncé des extensions à l'architecture de virtualisation directement dans le matériel de soutien. Le passage de logiciels que le matériel VMMs assistée VMMs fournit l'occasion d'examiner les forces et les faiblesses des deux techniques. Les principales contributions techniques de la présente étude sont (1) un examen de VMware Workstation le logiciel VMM, en mettant l'accent sur la performance des propriétés de l'exécution des instructions des machines virtuelles (2) un examen de l'émergence d'un support matériel, d'identifier la performance des compromis; ( 3) une comparaison quantitative des performances d'un logiciel et un matériel VMM. Curieusement, nous constatons que la première génération de support matériel rarement offre plus de performances techniques des logiciels existants. Nous attribuons cette situation à haut VMM / guest coûts de transition et d'un modèle de programmation rigide qui laisse peu de place pour les logiciels de souplesse dans la gestion, soit la fréquence ou le coût de ces transitions. Alors que la première série de matériel d'appui a été verrouillé, futures peuvent encore être influencé, et devrait être guidé par une compréhension des compromis entre aujourd'hui et le logiciel de virtualisation matérielle techniques. Nous espérons que nos résultats d'encourager les concepteurs de matériel pour soutenir le logiciel éprouvé techniques plutôt que de chercher à les remplacer, nous pensons que les avantages de la flexibilité du logiciel de machine virtuelle les performances et les fonctionnalités sont convaincantes. Le reste de ce document est organisé comme suit. Dans la section 2, nous passons en revue les techniques de virtualisation classique, et d'établir la terminologie. La section 3 décrit notre logiciel VMM. Section 4 résume les améliorations matérielles et décrit la manière dont le logiciel VMM a été modifiée pour exploiter le matériel de soutien. Section 5 compare les deux VMMs qualitativement et la section 6 présente les résultats expérimentaux et explique en ces termes de la VMMs leurs propriétés. Section 7 anticipe l'avenir de logiciels et de matériel à la clé des solutions de virtualisation MMU problème. Section 8 résume les travaux et met fin à la section 9. 2. Classique de virtualisation Popek et Goldberg en 1974 paper [19] établit trois caractéristiques essentielles pour le logiciel système doit être considéré comme un VMM: 1. Fidelity. Logiciels sur le VMM exécute à l'identique de son exécution sur le matériel, sauf le calendrier des effets. L'autorisation de faire des copies papier ou numérique de tout ou partie de ce travail des fins personnelles ou l'utilisation en classe est accordée sans frais à condition que les copies ne sont pas faites ou distribuées dans un but lucratif ou un avantage commercial et que les copies portent le présent avis et la citation complète de la première page . Pour copier d'autres, de republier, d'afficher sur des serveurs ou à redistribuer à des listes, nécessite au préalable l'autorisation spécifique et / ou une taxe. ASPLOS'06 Octobre 21-25, 2006, San Jose, Californie, USA. Copyright c 2006 ACM 1-59593-451-0/06/0010. . . $ 5.00 2. Représentation. Une écrasante majorité des guest instructions sont exécutées par le matériel, sans l'intervention de la VMM. 3. Sécurité. La VMM gère toutes les ressources matérielles. En 1974, une mise en œuvre VMM style, pièges andemulate, était si répandue pour être considérée comme la seule pratique   méthode de virtualisation. Bien que Popek et Goldberg n'a pas exclu l'utilisation d'autres techniques, a entraîné une certaine confusion au fil des ans de manière informelle à assimiler "virtualizability" avec la capacité d'utiliser les pièges et imiter. Pour éluder cette confusion, nous utilisons le terme classique virtualizable pour décrire une architecture qui peut être virtualisé avec piège purement et imiter. En ce sens, le x86 n'est pas classiquement virtualizable, mais il est virtualizable de Popek et Goldberg critères, en utilisant les techniques décrites dans la Section 3. Dans cette section, nous passons en revue les plus importantes idées de mise en œuvre classique VMM: de privilégier, les ombres des structures et des traces. Les lecteurs qui sont déjà familiers avec ces notions mai tiens à sauter vers l'avant à la section 3. 2.1-De privilégiant 2,4 Tracing exemple: x86 page tableaux Dans une architecture classique virtualizable, toutes les instructions que le privilège de lire ou d'écrire peut être fait état de piéger lorsqu'il est exécuté dans un contexte démunis. Parfois, les pièges de résultat de l'instruction elle-même type (par exemple, à une instruction), les pièges et parfois résulter de la VMM en protégeant les structures que les instructions d'accès (par exemple, la plage d'adresse d'une mémoire-mapped I / O device). Un classique VMM exécute systèmes d'exploitation invités directement, mais à moindre niveau de privilège. La VMM intercepte les pièges de la de-client privilégié, et émule le piégeage instruction contre l'état de la machine virtuelle. Cette technique a été largement décrite dans la littérature (par exemple, [10, 22, 23]), et il est facile de vérifier que les VMM remplit les critères de Popek et Goldberg. 2.2 primaire et de l'ombre les structures Afin de protéger l'hôte de la mémoire guest accès, généralement VMMs construire ombre page dans des tableaux à faire tourner le client. x86 précise hiérarchique matériel tables ayant parcouru la page 2, 3 ou 4 niveaux. Le matériel page tableau pointeur% CR3 registre de contrôle. VMware Workstation VMM gère la page des tableaux de son ombre comme un cache de la page guest tables. Comme le client accède à des régions auparavant intact de son espace d'adressage virtuel, du matériel de lutte contre les vecteurs des erreurs de page de la VMM. La VMM vrai distingue des erreurs de page, causé par les violations de la politique de protection de code dans les guest PTE, de défauts cachés page, causée par le manque d'ombre dans le tableau page. Certes les défauts sont transmis au client; cause des défauts cachés de la VMM pour construire une ombre PTE, et de reprendre guest exécution. La faute est «caché» car il n'a pas de guest-effet visible. La VMM utilise pour éviter les traces de son ombre PTE de devenir incohérente avec le guest PTE. La trace des défauts peuvent être eux-mêmes une source de frais généraux, de cohérence et d'autres mécanismes sont possibles. À l'autre extrême, en évitant toute utilisation de traces causes d'un grand nombre de vices cachés ou d'un contexte coûteuses prevalidate ombre passer à la page des tableaux de ce nouveau contexte. Dans notre expérience, de trouver un équilibre favorable à cette façon de trois trade-off entre les traces des coûts, cachés des erreurs de page et changer de contexte coûts est surprenant aussi bien dans sa difficulté et sa criticité de VMM performance. Les outils qui font de ce trade-off plus clémentes sont rares et précieux. 2.5 Améliorations à la virtualisation classique Par définition, les privilégiés de l'État un système virtuel diffère de celle du matériel sous-jacent. La VMM la fonction de base est de fournir un environnement d'exécution qui répond aux attentes du client en dépit de cette différence. Pour ce faire, la VMM tire guest ombre de structures au niveau des structures primaires. Le processeur privilégié État, tels que le pointeur de la page table registre ou registre d'état du processeur, est gérée trivialement: la VMM maintient l'image d'un registre des visiteurs, et se réfère à cette image dans l'émulation d'instruction en tant que guest opérations piège. Toutefois, hors-CPU privilégié de données, comme la page des tableaux, mai résident en mémoire. Dans ce cas, guest accès privilégié à l'État mai naturellement pas coïncider avec le piégeage instructions. Par exemple, les entrées de table de la page guest (PTE) sont privilégiés en raison de leur état de codage des projections et des permissions. Les dépendances de cette situation privilégiée ne sont pas accompagnés par des pièges: pièges de tous les clients de mémoire virtuelle de référence repose sur les permissions et les mappages encodés dans les PTE. Ces privilégiés en mémoire l'état peut être modifié par n'importe quel magasin dans l'instruction guest flux, ou même implicitement modifié, comme un effet secondaire d'un DMA I / O opération. Memory-mapped I / O présentent la même difficulté: lit et écrit à ce privilège de données peuvent provenir de n'importe quelle opération de la mémoire dans le flux guest instruction. 2.3 Mémoire de traces Pour maintenir la cohérence de l'ombre les structures, l'utilisation de matériel généralement VMMs page des mécanismes de protection pour le piégeage des accès à inmemory structures primaires. Par exemple, pour les guest PTE PTE ombre qui ont été construits mai être protégé en écriture. Memory-mapped dispositifs doivent généralement être protégées pour la lecture et l'écriture. Cette page de protection technique est connue sous le nom de traçage. Classique VMMs gérer une trace d'une faute de même le privilège instruction faute: par le décodage de la faulting guest instruction, l'émulation de son effet dans la structure primaire, et la propagation de la modification de la structure de l'ombre. Le type de la charge de travail de manière significative les impacts de la performance de l'approche classique de virtualisation [20]. Au cours de la première machine virtuelle boom, il est commun pour la VMM, le matériel, et tous les systèmes d'exploitation invités à être produites par une seule société. Ces entreprises verticalement intégrées ont permis aux chercheurs et aux praticiens pour affiner la virtualisation classique utilisant deux approches orthogonales. Une méthode d'exploitation de flexibilité dans la VMM / guest OS interface. Implementors cette approche de modification des systèmes d'exploitation invités à fournir des informations de niveau supérieur à la VMM [13]. Cette approche se détend Popek et Goldberg la fidélité à l'exigence de fournir des gains de performance, et, éventuellement, pour offrir des fonctionnalités de base au-delà de la simple définition de la virtualisation, telles que les VM-à-VM communication. L'autre approche pour le raffinage classique VMMs exploité la flexibilité dans le matériel / VMM interface. IBM System architecture 370 introduit exécution d'interprétation [17], un mode d'exécution du matériel pour faire fonctionner les systèmes d'exploitation invités. La VMM encode beaucoup de l'invité privilégié de matériel dans un état défini format, puis exécute l'instruction SIE à "l'interprétation d'exécution." Beaucoup d'opérations guest qui piège dans un environnement privilégié de-accéder directement à l'ombre dans l'interprétation des champs d'exécution. Alors que la VMM doit toujours disposer de certains pièges, SIE a réussi à réduire la fréquence des pièges par rapport à un seul piège andemulate-VMM. Ces deux approches ont intellectuelle héritiers dans le boom actuel de virtualisation. La tentative d'exploiter la flexibilité dans l'OS / VMM couche a été relancée sous le nom de paravirtualisation [25]. Pendant ce temps, les vendeurs sont en train d'introduire x86 matériel des installations inspirées par l'exécution d'interprétation, voir la section 4. 3. Logiciels de virtualisation Nous passons en revue les obstacles à la base classique de virtualisation de l'architecture x86, expliquer comment binaire traduction (BT) de surmonter les obstacles, et montrent que l'adaptation BT améliore l'efficacité.   3,1 obstacles à la virtualisation x86 • Adaptive. Traduit de code est ajusté en réponse à des guest-être Ignorer l'héritage "réel" et "virtuel 8086" modes de x86, même le plus récemment, l'architecture 32 - et 64-bit mode protégé ne sont pas classiquement virtualizable: • Visibilité de l'état privilégié. Le visiteur peut observer qu'il a portement des changements visant à améliorer l'efficacité globale. Pour illustrer le processus de traduction, nous travaillons à travers un petit exemple. Depuis des instructions privilégiées sont rares, même dans les noyaux OS les performances d'un système de BT est largement déterminée par la traduction des instructions ordinaire, notre exemple est un simple test de primalité: int ISPRIME (int a) (for (int i = 2; i = a? ; Sauter si oui% ecx; série% eax = a; signer étendre% esi, un i%% edx,% edx; reste est à zéro? notPrime; sauter si oui% esi; i + +% esi,% ecx; est i> = a? nexti; si aucun saut% eax, $ 1; retour valeur en% eax La sémantique des obstacles à la virtualisation x86 peuvent être surmontés si le client s'exécute sur un interprète, au lieu de directement sur un processeur physique. L'interprète peut empêcher la fuite de l'état privilégié, comme le CPL, de la physique dans la guest CPU de calcul et il peut appliquer correctement les instructions de piégeage non comme popf référencement par la quasi-CPL, quel que soit le physique CPL. En substance, l'interprète se sépare virtuel (le VCPU) de l'état physique (le CPU). Toutefois, si l'interprétation assure fidélité et de la sécurité, il ne répond pas à Popek et Goldberg Le rendement du bar: fetchdecode-exécuter le cycle de l'interprète mai graver centaines d'instructions par guest instruction. Binary traduction, toutefois, possible de combiner la précision sémantique de l'interprétation à haute performance, ce qui donne un moteur d'exécution qui répond à l'ensemble de Popek et Goldberg critères. A VMM construit autour d'un traducteur binaire approprié peut virtualiser l'architecture x86 et il est un VMM selon Popek et Goldberg. (Nous signalons en passant que l'utilisation de BT pour un moteur d'exécution de la VMM est étroitement parallèles dans d'autres systèmes de travail: JVM utilisation des compilateurs JIT [8], l'architecture des simulateurs et émulateurs comme système Shade [7] et Embra [26] l'utilisation de traducteurs combiner l'objet du code et l'analyse rapide de code dans le code cible.) Notre logiciel VMM utilise un traducteur avec ces propriétés: • Binary. L'entrée est binaire x86 code, pas de code source. • Dynamique. La traduction se passe à l'exécution, entrelacé avec l'ex - % eax,% eax,% eax = 0 Nous avons invoqué ISPRIME (49) dans une machine virtuelle, de l'exploitation forestière, tout le code traduit. Le code ci-dessus n'est pas l'entrée au traducteur, mais plutôt son binaire ( "hex") est la représentation d'entrée: 89 f9 être 02 00 00 00 39 ce 7j ... Le traducteur lit le guest de la mémoire à l'adresse indiquée par le client PC, de classer les octets comme préfixe, opcodes ou pour produire des opérandes représentation intermédiaire (IR) des objets. Chaque objet représente un IR guest instruction. Le traducteur IR accumule des objets dans une unité de traduction (TU), l'arrêt à 12 instructions ou d'une clôture de l'instruction (en général, le contrôle de flux). La taille fixe bouchon permet pile allocation de toutes les structures de données sans risque de débordement, dans la pratique, il est rarement atteint, depuis le contrôle des flux syndicats tend à mettre fin plus tôt. Ainsi, dans le cas où une commune TU est un bloc de base (BB). Le premier TU dans notre exemple: ISPRIME: mov mov jge% cmp ecx, edi%% esi, $ 2% esi,% ecx prime ecution du code généré. • Sur demande. Code est traduit seulement quand il est sur le point d'exécuter. Cette paresse côté le problème des mesures de dire le code et les données séparément. • Le système de niveau. Le traducteur ne fait pas d'hypothèses sur les guest code. Les règles sont fixées par l'ISA x86, pas par un niveau supérieur ABI. En revanche, une application de niveau traducteur comme Dynamo [4] peut supposer que «adresses de retour sont toujours produits par des appels" pour générer le code plus rapide. La VMM n'est pas: elle doit lancer un buffer overflow qui clobbers une adresse de retour, précisément comme il l'aurait géré en natif (produisant les mêmes numéros dans l'hexagone ce message d'erreur). • subdivision. Le traducteur de l'entrée est plein d'instructions x86, Traduction de x86 à x86 sous, la plupart du code peut être traduit IDENT (pour "identique"). Les trois premières instructions ci-dessus sont IDENT. jge doit être non-IDENT, depuis la traduction ne conserve pas la mise en page de code. Au lieu de cela, nous nous tournons en deux traducteur-invoquant suites, une pour chacun des successeurs (automne et pris par la succursale), ce qui donne cette traduction (crochets indiquent continuations): ISPRIME ': mov mov cmp jge jmp% ecx,% edi,% esi IDENT, $ 2% esi,% ecx [takenAddr]; CCM [fallthrAddr] y compris toutes les instructions privilégiées, la production est d'un coffre-fort sous (surtout en mode utilisateur les instructions).   Chaque traducteur invocation consomme un TU et produit un fragment de code compilé (CCF). Bien que nous montrons CCP en forme textuelle avec des labels comme ISPRIME »pour nous rappeler que l'adresse contient la traduction de ISPRIME, en réalité, le traducteur produit directement en code binaire et des voies d'entrée à la sortie de correspondance avec une table de hachage. Poursuivant notre exemple, nous avons maintenant d'exécuter le code de la traduction. Puisque nous sommes calcul ISPRIME (49), ne sont pas prises jge (est de 49% ecx), de sorte que nous procédons dans l'affaire et fallthrAddr invoquer le traducteur sur guest adresse nexti. Cette deuxième se termine par TU jz. Sa traduction est similaire à la précédente TU à la traduction de tous mais le dernier étant jz IDENT. Pour accélérer les transferts inter-CCF, le traducteur, comme de nombreux précédents [7], utilise un "chaînage" d'optimisation, permettant à un cadre de coopération pour accéder directement à une autre sans appel de la traduction cache (TC). Ces sauts de chaînage remplacer la poursuite des sauts, qui ne sont donc pas "d'exécuter une seule fois." De plus, il est souvent possible d'Elide enchaînement de sauts et de l'automne par le biais d'un cadre de coopération dans le prochain. Cette imbrication de la traduction et l'exécution se poursuit aussi longtemps que le client va, avec une proportion décroissante de la traduction, comme le TC saisit progressivement l'ensemble de travail du client. Pour ISPRIME, après une boucle dans la boucle pour assez longtemps pour détecter que 49 n'est pas premier, nous nous retrouvons avec ce code dans le TC: ISPRIME ': * mov mov mov cmp jge * CDQ idiv test jz * cmp inc jmp notPrime jl': * xor pop movzx jmp mov% ecx,% edi esi%, $ 2% esi,% ecx [takenAddr]% eax,% ecx % esi% edx,% edx notPrime '; IDENT; CCM-thru en automne prochain cadre de coopération; IDENT La plupart des registres virtuels sont liés à leurs homologues au cours de l'exécution physique du TC IDENT code pour faciliter la traduction. Une exception est le segment de registre% gs. Il offre une évasion en VMM au niveau des structures de données. Le ret traduction ci-dessus utilise un gs% override de déborder% RCX VMM en mémoire de sorte qu'il peut être utilisé comme un registre de travail dans la traduction de ret. Plus tard, bien sûr, l'invité de la valeur% RCX doit être rechargé dans le matériel% RCX. ISPRIME est atypique dans la mesure où il ne contient pas les accès mémoire. Toutefois, les accès mémoire sont communs afin de leur traduction doit rouler à des vitesses proches et ont une forme qui empêche l'accès non intentionnel de la VMM. L'exigence d'efficacité favorise l'utilisation du matériel de protection sur l'insertion de l'adresse explicite contrôles. x86 propose deux mécanismes de protection: de pagination et la segmentation. Pour BT, segmentation fonctionne le mieux. Nous avons la carte de la VMM dans la partie haute de l'espace d'adresse du client et d'utiliser la segmentation pour séparer les portions guest (basse) et VMM portions (élevé) de l'espace d'adressage. Nous avons ensuite "truncate" guest segments afin qu'ils ne se chevauchent pas la VMM. Lorsque tous les registres de segments (mais gs%) détiennent tronqué segments, une erreur survient si une tentative de traduire l'accès à l'instruction de la VMM. Ponctuellement, le traducteur insère% gs préfixes d'accéder à l'espace de la VMM. Et, inversement, à l'occasion de l'instruction que guest% gs a un préfixe, le traducteur de bandes et utilise une traduction non-IDENT. Alors que la plupart des instructions peuvent être traduites IDENT, il existe plusieurs exceptions notables: • PC-traitant relative ne peuvent pas être traduits depuis la IDENT nexti »: traducteur de sortie réside à une adresse différente de l'entrée. Le traducteur inserts de compensation afin d'assurer le bon code d'adressage. L'effet net est un petit code d'expansion et de ralentissement. • Le contrôle direct des flux. Depuis la mise en page de code lors de changements de traduction % esi% esi,% ecx nexti '; CCM [fallthrAddr3] ; CCM-thru en automne prochain cadre de coopération; IDENT tion, le contrôle de flux doit être rebranchés dans le TC. Pour les appels directs, les branches et les sauts, le traducteur peut faire la cartographie de l'adresse de guest TC adresse. Le net ralentissement est insignifiant. • indirects de contrôle de flux (jmp, call, ret) ne va pas à la fixation de tar - % eax,% eax; IDENT% r11; RET% gs: 0xff39eb8 (rip%),% ecx RCX%,%% r11b gs: 0xfc7dde0 (8% * RCX) obtenir, la prévention de la traduction en temps contraignant. Au lieu de cela, l'objectif doit être traduit calculé dynamiquement, par exemple, avec une table de recherche. Les frais généraux de la charge de travail varie, mais il est généralement un seul chiffre en pourcentage. ; Déversement% RCX • privilégiés instructions. Nous utilisons des TC pour de simples séquences d'op - Ci-dessus, il ya quatre cadres de coopération avec les principaux instruction en chacun marqués d'un astérisque. Deux suites restent parce qu'ils n'ont jamais été exécutés tandis que les deux disparu et a été remplacé par un enchaînement de saut à nexti ». Pour un plus grand exemple que ISPRIME, mais néanmoins l'un qui fonctionne exactement de la même manière, une 64 bits de Windows XP Professionnel de démarrage / arrêt traduit 229347 64-bit syndicats, 23909 32-bit syndicats, et 6680 16-bit syndicats. Depuis le 49 n'est pas un nombre premier, nous n'avons jamais traduire les BB qui retourne 1 en ISPRIME. Plus généralement, le traducteur capture de traces d'une exécution de code du client, en veillant à ce que Transports Canada a de bonnes icache code localité si la première et les exécutions de suivre des voies similaires par guest code. Erreur de manipulation et d'autres rarement exécutées guest code tend à se traduire au plus tard à la première exécution (si jamais), entraînant le placement chaud loin de la voie. Le traducteur ne cherche pas à "améliorer" la traduction du code. Nous supposons que si le code est guest performance critique, les développeurs ont optimisé OS et un binaire simple traducteur de trouver quelques opportunités. Ainsi, au lieu d'appliquer une analyse approfondie pour soutenir la manipulation de code guest, nous perturbent le moins possible. rations. Ces mai courir plus vite que les autochtones: par exemple, le climat (clear interruptions) sur un Pentium 4 prend 60 cycles alors que la traduction fonctionne dans un petit nombre de cycles ( "vcpu.flags.IF: = 0"). Les opérations complexes, comme les commutateurs contexte d'appel à l'exécution, les frais généraux mesurables provoquant à la fois à la raison et l'émulation callout travail. Enfin, bien que les détails ne sont pas à la portée de ce papier, nous observons que BT n'est pas nécessaire pour la sécurité de l'exécution de la plupart des code d'utilisateur sur la plupart des systèmes d'exploitation invités. En passant guest mode d'exécution entre BT et de l'exécution directe que les clients de basculer entre le noyau et en mode utilisateur, on peut limiter les frais généraux BT code du noyau de la demande de permis et de l'exécution de code à vitesse native. 3.3 Adaptive traduction binaire Processeurs modernes ont des pièges coûteux, de sorte que BT VMM peut surclasser un classique VMM instruction privilégiée en évitant les pièges. Pour illustrer, nous avons comparé les implémentations d'un simple privilège instruction (rdtsc) sur un Pentium 4 CPU: piège et se reproduire 2030 cycles, callout et 1254 cycles se reproduire, et l'émulation prend TC-216 cycles. Toutefois, bien que simple BT supprime des instructions privilégiées de pièges, d'autant plus fréquent reste la source: non -   4,1 extensions de l'architecture x86 Figure 1. Adaptation de IDENT à simuler. des instructions privilégiées (par exemple, les charges et les magasins) accès à des données sensibles telles que les tables de page. Nous utilisons essentiellement adaptative BT à éliminer cette dernière catégorie de pièges. L'idée de base est «innocent jusqu'à preuve du contraire." Guest instructions commencer en état des innocents, assurer l'utilisation maximale de IDENT traductions. Au cours de l'exécution de code traduit les instructions que nous détectons piège souvent et de s'adapter à leur traduction: • retraduire non-IDENT d'éviter le piège, par exemple, le traduction mai appel à un interprète. • Patch IDENT la traduction avec un saut à la transmission la nouvelle traduction. La moitié gauche de la figure 1 montre un graphe de flot de contrôle avec une traduction en IDENT ccf1, arbitraires et d'autres dans le flux de contrôle représenté par TC ccf2, ccf3 et ccf4. La moitié droite montre le résultat de l'adaptation de IDENT dans ccf1 SIMULER type de traduction dans ccf5. L'adaptation prend du temps étant donné que l'utilisation constante d'un saut dans la transmission ccf1 évite d'avoir à visiter tous les ancêtres directs du ccf1 de rediriger la sortie de contrôle de flux de ccf1 à ccf5. Après l'adaptation, nous éviter de prendre dans un piège ccf1 et plus rapidement au lieu d'exécuter un callout dans ccf5. La simuler callout continue de surveiller le comportement de la délinquance instruction. Si les changements de comportement et de l'instruction innocent devient encore une fois, nous changeons le type de traduction active à IDENT en supprimant le saut de la transmission et l'insertion d'une ccf1 opposés dans un ccf5. La VMM utilise adaptation et pas seulement dans une forme bimodale qui fait une distinction entre coupables et innocents des instructions, mais avec la capacité de s'adapter à une variété de situations, y compris l'accès à une page de table, l'accès à un appareil particulier, et l'accès à la VMM plage d'adresses. A guest instruction dont la traduction a été adaptée souffre d'une dynamique des frais généraux d'une entreprise de transport de saut pour atteindre le remplacement de la traduction. Adaptation de la statique des frais généraux, c'est-à-dire, le code de patch et perte de icache contenu, peut être contrôlé avec hystérésis pour garantir une faible fréquence d'adaptation. Nous adaptons agressive d'une traduction de piégeage à un non-piégeage plus général, mais moins agressivement vers une plus optimiste traduction. Les exportations de matériel d'un certain nombre de nouvelles primitives à l'appui d'un classique de la VMM x86. Une structure de données de mémoire, qui nous renvoie à la machine virtuelle en tant que bloc de contrôle, ou VMCB, combine le contrôle avec un sous-état de l'état d'un hôte virtuel CPU. Un nouveau mode d'exécution moins privilégiés, guest mode, appuie l'exécution directe du code client, y compris le privilège de code. Nous nous référons à l'architecture x86 précédemment environnement d'exécution en mode d'accueil. Une nouvelle instruction, vmrun, les transferts de mode d'accueil pour les invités. Lors de l'exécution de vmrun, le matériel des charges de l'Etat guest VMCB et continue l'exécution en mode guest. Guest exécution jusqu'à ce que le produit des conditions exprimées par le VMM en utilisant les bits de contrôle de la VMCB, est atteint. À ce stade, le matériel effectue une opération de sortie, qui est l'inverse d'une vmrun opération. À la sortie, le matériel d'économiser de l'état guest VMCB, VMM-charges fourni en l'état le matériel, et reprend dans les pays d'accueil mode, maintenant l'exécution de la VMM. Diagnostic dans les domaines de la VMM VMCB d'aide dans la gestion de la sortie, par exemple, les sorties en raison de guest I / O le port, la largeur, et la direction de l'I / O opération. Après l'émulation de l'effet de la sortie de l'exploitation dans le VMCB, la VMM vmrun exécute de nouveau, de retour à la guest mode. Le VMCB bits fournir une certaine souplesse dans le niveau de confiance placé dans la guest. Par exemple, un VMM comporter comme un hyperviseur pour un usage général que l'OS peut permettre à l'OS le système de périphériques, gérer les interruptions, ou de construire des tableaux de la page. Toutefois, lors de l'application du matériel d'assistance à la pure virtualisation, le client doit courir sur une courte laisse. Le matériel des programmes de la VMM VMCB guest à la sortie sur des erreurs de page, TLB vide, l'espace et l'adresse des interrupteurs afin de maintenir l'ombre page tables; sur I / O instructions pour exécuter des modèles d'émules guest périphériques et sur les accès privilégié à des structures de données tels que la page des tableaux et des dispositifs de mémoire mappée. 4.2 Matériel de mise en œuvre VMM Le matériel extensions fournir une solution complète de virtualisation, essentiellement la prescription de la structure de notre matériel VMM (ou même tout en utilisant les extensions VMM). Lors de l'exécution d'un mode protégé guest, la VMM remplit une VMCB avec l'état actuel guest et exécute vmrun. Le guest sorties, la lecture de la VMM VMCB champs décrivant les conditions de la sortie, et les vecteurs de l'émulation de code approprié. La majeure partie de cette émulation de code est partagé avec le logiciel VMM. Elle comprend les modèles d'appareils périphériques, le code pour la livraison de guest interruptions, et de nombreuses infrastructures, telles que l'exploitation forestière, la synchronisation et l'interaction avec l'OS hôte. Étant donné que la virtualisation du matériel actuel ne comporte pas de soutien explicite MMU virtualisation, le matériel VMM hérite aussi de la mise en œuvre du logiciel VMM observation de la technique décrite dans la section 2. 4.3 Exemple opération: processus de création 4. Matériel de virtualisation Dans cette section, nous discutons des dernières modifications architecturales qui permettent classique de la virtualisation x86. Le débat vaut aussi bien pour AMD SVM et Intel VT, la similitude entre les deux architectures est évident à partir de leurs manuels [2, 12]. VMware a mis en place un dispositif expérimental VMM pour exploiter ces nouvelles capacités du matériel. Nous décrivons ce matériel assistée VMM (par souci de brièveté: hardware VMM), et de le comparer avec le logiciel VMM. En expliquant la VMM BT-fondé, nous avons utilisé comme exemple ISPRIME guest programme. Sur un matériel VMM, ISPRIME est inintéressant, parce que, ne contenant que des ALU et le contrôle des opérations de débit, son exécution est identique en mode hôte et invité.