Brevet FR2882602A1 — publié le 20060901

Contexte Les dispositifs matériels informatiques sont généralement considérés comme des choses physiques tangibles. Ces dispositifs physiques comprennent souvent des registres dans lesquels des informations (par exemple, des données, des informations de commande, des informations de configuration) peuvent être lues et/ou écrites. Les registres peuvent être mis en correspondance avec des adresses de mémoire pour faciliter l'accès aux dispositifs. Par exemple, l'adresse 0x3f8 est souvent mise en correspondance avec un port de lecture/écriture sur une carte d'entrée/sortie (I/O). Ainsi, une unité centrale (CPU) ou un autre processeur peut interagir avec divers dispositifs matériels informatiques par l'intermédiaire d'adresses de mémoire qui sont mises en correspondance avec un registre de dispositif physique. Cependant, des dispositifs matériels informatiques peuvent également être virtualisés. Ainsi, des systèmes d'exploitation, des applications, etc., peuvent également interagir avec des dispositifs virtuels plutôt que des dispositifs physiques. Par exemple, un ordinateur personnel peut interagir avec un lecteur de disque qui est mis en uvre dans une mémoire vive (RAM). Comme dispositif physique, le dispositif virtuel peut également comprendre un ensemble de registres par l'intermédiaire desquels des données et/ou des informations de commande peuvent être lues et/ou écrites. Ainsi, un dispositif virtuel peut également être adressé en utilisant, par exemple, une méthode d'entrées/sorties projetée en mémoire. Un dispositif virtuel peut être réalisé, par exemple, par un logiciel, par d'autres dispositifs matériels, par des combinaisons de ceux-ci, etc. Lorsqu'il est virtualisé par logiciel, le dispositif virtuel peut être mis en uvre sur divers processeurs. Cependant, de manière classique, une diminution de performance peut être associée à une virtualisation par logiciel, même lorsqu'un dispositif virtuel ne fait pas l'objet d'un accès. Lorsqu'un dispositif est virtualisé dans un autre matériel, la diminution de performance associée à la virtualisation par logiciel peut être réduite. Cependant, une virtualisation prise en charge par un matériel classique peut nécessiter qu'un processeur soit conçu avec des fonctions de prise en charge de virtualisation par matériel, ce qui peut augmenter le coût du composant, le temps de développement, etc. Par ailleurs, une virtualisation prise en charge par matériel nécessite, de manière classique, qu'un concepteur de processeur anticipe une interaction avec un matériel de virtualisation et prévoit correctement les fonctions de prise en charge nécessaires. De plus, lorsqu'une virtualisation prise en charge par matériel est mise en uvre mais pas utilisée, les éléments de circuit qui mettent en uvre les fonctions de prise en charge de virtualisation intégrées peuvent rester en tant que surplus consommant de la puissance et générant de la chaleur. En outre, une virtualisation prise en charge par matériel nécessite généralement une virtualisation complète de l'unité centrale, ce qui limite une méthode de virtualisation à un niveau unique de privilège de virtualisation. Néanmoins, une virtualisation peut faciliter le prototypage de dispositifs, peut faciliter la réalisation de tests, peut éliminer certaines barrières physiques de systèmes informatiques, peut faciliter la segmentation de fonctions matérielles entre de multiples systèmes d'exploitation et applications, etc. Brève description des dessins Les dessins joints, qui sont incorporés dans la description et qui en font partie, illustrent divers exemples de systèmes, procédés, etc., qui illustrent divers exemples de modes de réalisation d'aspects de l'invention. On appréciera que les contours d'éléments illustrées (par exemple, des cadres, des groupes de cadres ou d'autres formes) sur les figures ne représentent qu'un exemple parmi d'autres contours. Un homme du métier appréciera qu'un élément puisse être conçu comme de multiples éléments ou que des éléments multiples puissent être conçus comme un seul élément. Un élément montré en tant que composant interne d'un autre élément peut être mis en uvre en tant que composant externe et vice versa. En outre, des éléments peuvent ne pas être dessinés à l'échelle. La figure 1 illustre un exemple de logique de virtualisation pour prendre en charge une virtualisation hors-puce par matériel, par l'intermédiaire d'un déroutement d'adresse externe. La figure 2 illustre un exemple de logique 35 de virtualisation. La figure 3 illustre un autre exemple de logique de virtualisation. La figure 4 illustre un exemple de procédé pour prendre en charge une virtualisation hors- puce par matériel, par l'intermédiaire d'un déroutement d'adresse externe. La figure 5 illustre un autre exemple de procédé pour prendre en charge une virtualisation hors-puce par matériel, par l'intermédiaire d'un déroutement d'adresse externe. La figure 6 illustre un exemple d'environnement informatique dans lequel des exemples de systèmes et de procédés illustrés dans le présent document peuvent fonctionner. La figure 7 illustre un exemple de dispositif de formation d'image dans lequel des exemples de systèmes et de procédés illustrés dans le présent document peuvent fonctionner. La figure 8 illustre un exemple d'interface de programmation d'application (API). La figure 9 illustre un exemple de processeur connecté de manière fonctionnelle à une logique de virtualisation externe. La figure 10 illustre un autre exemple de processeur connecté de manière fonctionnelle à une logique de virtualisation externe. Description détaillée Des exemples de systèmes et de procédés décrits dans le présent document concernent l'association d'un matériel de virtualisation externe à des processeurs qui peuvent ne pas avoir été conçus pour prendre en charge une virtualisation. Par exemple, un processeur peut ne pas avoir été conçu avec une prise en charge matérielle et/ou logicielle interne pour interagir avec des dispositifs d'entrée/sortie (I/O) virtuels. En utilisant un matériel de virtualisation externe comme décrit ici, un processeur peut être capable d'interagir avec des dispositifs virtuels tels que des dispositifs d'entrée/sortie sans subir la diminution de performance associée à une virtualisation par logiciel classique et sans nécessiter que la conception du processeur comprenne une virtualisation complète de l'unité centrale. Ce qui suit comprend des définitions de termes sélectionnés utilisés dans le présent document. Les définitions comprennent divers exemples et/ou formes de composants qui tombent dans l'étendue d'un terme et qui peuvent être utilisés pour la mise en oeuvre. Les exemples ne sont pas destinés à être limitatifs. Des formes à la fois uniques et diverses de termes peuvent être comprises dans les définitions. Tel qu'utilisé dans la présente demande, le terme composant informatique fait référence à une entité informatique, matérielle, micrologicielle, logicielle, une combinaison de celles-ci, ou à un logiciel en exécution. Par exemple, un composant informatique peut être, mais sans y être limité, un processus s'exécutant sur un processeur, un processeur, un objet, un exécutable, une thread d'exécution, un programme et un ordinateur. A titre d'illustration, une application s'exécutant sur un serveur et le serveur peuvent tous deux être des composants informatiques. Un ou plusieurs composants informatiques peuvent résider dans un processus et/ou une file d'exécution et un composant informatique peut être situé sur un ordinateur et/ou réparti entre deux ordinateurs ou plus. L'expression support pouvant être lu par un ordinateur , telle qu'utilisée dans le présent document, fait référence à un support qui participe directement ou indirectement à la fourniture de signaux, d'instructions et/ou de données. Un support pouvant être lu par un ordinateur peut prendre des formes comprenant, mais sans y être limité, un support non volatile, un support volatile et un support de transmission. Un support non volatile peut comprendre, par exemple, des disques optiques ou magnétiques, etc. Un support volatile peut comprendre, par exemple, des disques optiques ou magnétiques, une mémoire dynamique, et similaire. Un support de transmission peut comprendre des câbles coaxiaux, un fil de cuivre, des câbles à fibres optiques, et similaire. Un support de transmission peut également prendre la forme d'un rayonnement électromagnétique, tel que celui généré pendant des communications de données hertziennes et infrarouges, ou prendre la forme d'un ou de plusieurs groupes de signaux. Des formes communes de support pouvant être lu par un ordinateur comprennent, mais sans y être limitées, une disquette, un disque souple, un disque dur, une bande magnétique, ou un autre support magnétique, un CD-ROM, un autre support optique, des cartes perforées, une bande perforée, ou un autre support physique comportant des motifs de trous, une mémoire vive, une mémoire morte, une EPROM, une EPROM FLASH, ou une autre puce ou carte de mémoire, une carte memory stick, une onde/impulsion de porteuse, et un autre support pouvant être lu par un ordinateur, un processeur ou un autre dispositif électronique. Des signaux utilisés pour propager des instructions ou un autre logiciel sur un réseau, tel qu'Internet, peuvent être considérés comme un support pouvant être lu par un ordinateur . Le terme magasin de données , tel qu'utilisé dans le présent document, fait référence à une entité physique et/ou logique qui peut mémoriser des données. Un magasin de données peut être, par exemple, une table, un fichier, une liste, une file d'attente, un segment de mémoire, une mémoire, un registre, etc. Un magasin de données peut résider dans une entité logique et/ou physique et/ou être réparti entre deux entités logiques et/ou physiques ou plus. Le terme logique , tel qu'utilisé dans le présent document, comprend, mais sans y être limité, un matériel, un micrologiciel et/ou des combinaisons de chaque pour effectuer une ou des fonctions ou une ou des actions et/ou pour provoquer une fonction ou une action d'une autre logique, d'un procédé et/ou d'un système. Par exemple, sur la base d'une application souhaitée ou de besoins, une logique peut comprendre une logique discrète tel qu'un circuit intégré à application spécifique (ASIC) , un dispositif logique programmé, un dispositif de mémoire contenant des instructions, ou similaire. Une logique peut comprendre une ou plusieurs portes, des combinaisons de portes, ou d'autres composants de circuit. Lorsque de multiples logiques de logique sont décrites, il est possible d'incorporer les multiples logiques de logique dans une seule logique physique. De même, lorsqu'une seule logique de logique est décrite, il est possible de répartir cette logique de logique unique entre de multiples logiques physiques. Le terme connexion de fonctionnement , ou une connexion par laquelle des entités sont connectées de manière fonctionnelle , est une connexion dans laquelle des signaux, des communications physiques et/ou des communications logiques peuvent être envoyés et/ou reçus. Généralement, une connexion de fonctionnement comprend une interface physique, une interface électrique et/ou une interface de données, mais il convient de noter qu'une connexion de fonctionnement peut comprendre différentes combinaisons de celles-ci ou d'autres types de connexions suffisantes pour permettre une commande de fonctionnement. Par exemple, deux entités peuvent être connectées de manière fonctionnelle en étant capables d'échanger des signaux entre elles directement ou par l'intermédiaire d'une ou de plusieurs entités intermédiaires telles qu'un processeur, un système d'exploitation, une logique, un logiciel, ou une autre entité. Des canaux de communication logiques et/ou physiques peuvent être utilisés pour créer une connexion de fonctionnement. Le terme signal , tel qu'utilisé dans le présent document, comprend, mais sans y être limité, un ou plusieurs signaux électriques ou optiques, des signaux analogiques ou numériques, des données, une ou plusieurs instructions d'ordinateur ou de processeur, des messages, un bit ou un flot de bits, ou d'autres moyens qui peuvent être reçus, transmis et/ou détectés et qui peuvent faciliter le transfert d'informations. Le terme logiciel , tel qu'utilisé dans le présent document, comprend, mais sans y être limité, une ou plusieurs instructions d'ordinateur ou de processeur qui peuvent être lues, interprétées, compilées et/ou exécutées et qui amènent un ordinateur, un processeur, ou un autre dispositif électronique à effectuer des fonctions, des actions et/ou à se comporter d'une manière souhaitée. Les instructions peuvent être mises en uvre sous diverses formes telles que des sous-programmes, des algorithmes, des modules, des procédés, des files d'exécution et/ou des programmes comprenant des applications ou un code séparés provenant de bibliothèques liées dynamiquement et/ou statiquement. Un logiciel peut également être mis en uvre sous diverses formes exécutables et/ou chargeables comprenant, mais sans y être limitées, un programme autonome, un appel de fonction (local et/ou à distance), un servelet, un applet, des instructions mémorisées dans une mémoire, une partie d'un système d'exploitation ou d'autres types d'instructions exécutables. Un homme du métier appréciera que la forme de logiciel peut dépendre, par exemple, des spécifications d'une application souhaitée, de l'environnement dans lequel il s'exécute et/ou des souhaits d'un concepteur/programmeur ou similaire. On appréciera également que des instructions pouvant être lues par un ordinateur et/ou exécutables peuvent être situées dans une logique et/ou réparties entre deux logiques de traitement ou plus communiquant, coopérant et/ou parallèles et peuvent ainsi être chargées et/ou exécutées en série, en parallèle, massivement en parallèle et d'autres manières. Un logiciel approprié pour mettre en uvre les divers composants des exemples de systèmes et de procédés décrits dans le présent document peut être produit en utilisant des langages et des outils de programmation tels que Java, Pascal, C#, C++, C, CGI, Perl, SQL, API, SDK, assembleur, micrologiciel, microcode et/ou d'autres langages et outils. Un logiciel, qu'il s'agisse d'un système entier ou d'un composant d'un système, peut être mis en uvre en tant qu'article de fabrication et maintenu ou fourni en tant que partie d'un support pouvant être lu par un ordinateur tel que défini précédemment. Une autre forme du logiciel peut comprendre des signaux qui transmettent un code de programme du logiciel à un destinataire sur un réseau ou un autre support de communication. Ainsi, dans un exemple, un support pouvant être lu par un ordinateur a la forme de signaux qui représentent le logiciel/micrologiciel tel que téléchargé d'un serveur Web vers un utilisateur. Dans un autre exemple, le support pouvant être lu par un ordinateur a la forme du logiciel/micrologiciel tel que maintenu sur le serveur Web. D'autres formes peuvent également être utilisées. Tel qu'utilisé dans le présent document, le terme déroutement comprend une action conditionnelle non programmée effectuée automatiquement par un matériel et/ou un micrologiciel. Un déroutement peut se produire lorsqu'un événement exceptionnel provoque un transfert automatique vers un sous-programme spécial pour traiter cet événement. Certaines parties des descriptions détaillées qui suivent sont présentées en termes d'algorithmes et de représentations symboliques d'opérations sur des bits de données dans une mémoire. Ces descriptions et représentations algorithmiques sont les moyens utilisés par les hommes du métier pour transmettre la substance de leur travail à d'autres. Un algorithme est ici, et généralement, conçu pour être une séquence d'opérations qui produisent un résultat. Les opérations peuvent comprendre des manipulations physiques de quantités physiques. Généralement, bien que pas nécessairement, les quantités physiques prennent la forme de signaux électriques ou magnétiques capables d'être mémorisés, transférés, combinés, comparés et autrement manipulés dans une logique et similaire. Il s'est parfois avéré commode, principalement pour des raisons d'utilisation commune, de faire référence à ces signaux en tant que bits, valeurs, éléments, symboles, caractères, termes, nombres ou similaire. Il conviendrait de garder à l'esprit, cependant, que ces termes et des termes similaires doivent être associés aux quantités physiques appropriées et sont simplement des étiquettes commodes appliquées à ces quantités. Sauf spécification contraire, on apprécie que tout au long de la description, des termes tels que traiter, évaluer, calculer, déterminer, afficher, ou similaire, font référence à des actions et des processus d'un système informatique, d'une logique, d'un processeur, ou d'un dispositif électronique similaire qui manipule et transforme des données représentées en tant que quantités physiques (électroniques). La figure 1 illustre un exemple de logique de virtualisation 120 prenant en charge une virtualisation hors puce dans un système 100 par l'intermédiaire d'un déroutement d'adresse externe. Externe, tel qu'utilisé ici, signifie distinct logiquement et physiquement de. Par exemple, on peut dire que deux circuits intégrés qui peuvent être connectés de manière fonctionnelle sont externes l'un à l'autre. Lorsqu'ils sont connectés de manière fonctionnelle, ils restent externes l'un à l'autre. Cependant, une unité fonctionnelle située à l'intérieur d'un processeur (par exemple, une unité à virgule flottante) n'est pas, selon l'utilisation du terme dans le présent document, externe au processeur. Le système 100 comprend un processeur 110 qui n'a pas été conçu avec une capacité de virtualisation. Ainsi, de façon autonome, le processeur 110 ne serait pas capable d'interagir avec un dispositif virtuel. Dans un exemple, le processeur 110 peut être un processeur à base de liaisons avec de multiples liaisons et de multiples noyaux. Dans un autre exemple, le processeur 110 peut être un processeur à base de bus ou un processeur à noyau unique. Dans un exemple, le processeur 110 peut être configuré pour traiter une transaction telle qu'une transaction de gestion vers processeur (MPT), et similaire. Un exemple de MPT peut consister en une transaction d'interruption de gestion de plateforme (PMI) telle que celles associées à diverses architectures de processeur Intel. Une MPT peut, par exemple, faciliter la liaison d'un processeur à une mémoire de système, un pont de bus d'entrée/sortie principal, une toile de système, etc. Dans un autre exemple, le processeur 110 peut être configuré pour traiter des interruptions telles qu'une interruption non masquable (NMI), qui peut être réalisée par une transaction, par une broche physique, etc. Le processeur 110 peut disposer d'un mode sécurisé . Le mode sécurisé peut être utilisé, par exemple, dans des systèmes multipartitions. Le mode sécurisé peut comprendre la prévision d'une plage d'adresses qui n'est accessible que lorsque le processeur 110 est dans le mode sécurisé. La capacité de faire passer le processeur 110 dans le mode sécurisé et/ou hors de celui-ci peut être limitée à des instructions privilégiées. Par exemple, le code de système d'exploitation et le code d'application peuvent ne pas être capables de commander des transitions de mode sécurisé, tandis qu'un code de micrologiciel d'amorçage peut être capable de commander des transitions de mode sécurisé. Le système 100 comprend également une logique de virtualisation 120 qui est située à l'extérieur du processeur 110. La logique de virtualisation 120 ne consiste pas en des éléments de circuit qui font partie du processeur 110. La logique de virtualisation 120 est un composant séparé tel qu'un circuit intégré qui peut être connecté de manière fonctionnelle au processeur 110. Dans le système 100, la logique de virtualisation 120 a été connectée de manière fonctionnelle au processeur 110. De plus, la logique de virtualisation 120 a été positionnée entre le processeur 110 et un dispositif virtuel 130. De même, la logique de virtualisation 120 a été positionnée entre le processeur 110 et un dispositif physique 140. Ainsi, la logique de virtualisation 120 a été positionnée pour faciliter l'interception de transactions telles que des demandes d'entrée/sortie, des transactions de mémoire, etc. , provenant du processeur 110. Le processeur 110 peut être un processeur qui produit des transactions de mémoire, mais qui peut ne pas comprendre de logique de virtualisation interne. Ainsi, le processeur 110 peut être dispositif configuré dispositif logique de configuré pour interagir avec le physique 140, mais peut ne pas être initialement pour interagir avec le virtuel 130. Par conséquent, la virtualisation 120 peut intercepter des transactions processeur de mémoire provenant du 110 pour faciliter la réalisation d'une prise en charge de virtualisation externe pour le processeur 110. Par exemple, la logique de virtualisation 120 peut acheminer de manière sélective des transactions sur la base, par exemple, d'une plage d'adresses associée au dispositif virtuel 130. De plus, la logique de virtualisation 120 peut fournir un signal (par exemple, MPT) au processeur 110 pour aider le processeur 110 à invoquer un code (par exemple, un pilote de dispositif virtuel) pour interagir avec le dispositif virtuel 130. La figure 2 illustre un exemple de logique de virtualisation 230 qui est configurée pour être connectée de manière fonctionnelle à un processeur 220. Le processeur 220 est configuré pour produire une transaction de mémoire, mais n'est pas configuré avec une logique de virtualisation interne. Le processeur 220 peut être associé à un micrologiciel d'amorçage 222 qui est configuré pour informer, par exemple, un système d'exploitation 224 et/ou une mémoire de système 210, concernant des dispositifs et leurs plages d'adresses. Dans certains exemples, le micrologiciel d'amorçage 222 peut utiliser des techniques standard telles que celles associées à une interface ACPI (Advanced Configuration and Power Interface) pour communiquer avec des composants informatiques (par exemple, le système d'exploitation 224, le magasin de données d'adresses de base de dispositifs 212). Dans différents exemples, la plage d'adresses associée à un dispositif virtuel peut être, par exemple, une plage continue, de multiples régions disjointes, etc. Le processeur 220 peut être associé à un système d'exploitation 224 et un hyperviseur 226. Le système d'exploitation 224 peut commander des ressources d'utilisateur et diverses ressources physiques associées au processeur 220. L'hyperviseur 226 peut réaliser et gérer des machines virtuelles, des dispositifs virtuels, etc. Par exemple, l'hyperviseur 226 peut créer des dispositifs virtuels et les présenter au système d'exploitation 224. Des informations concernant divers dispositifs virtuels peuvent être mémorisées, par exemple, dans un magasin de données d'états de dispositifs 214 dans la mémoire de système 210. De même, des informations concernant des dispositifs virtuels et leurs plages d'adresses peuvent être mémorisées dans un magasin de données d'adresses de base de dispositifs 212 dans la mémoire de système 210. La logique de virtualisation 230 est externe au processeur 220. Par exemple, dans une architecture cellulaire, la logique de virtualisation 230 peut être située dans un contrôleur de cellules. La logique de virtualisation 230 peut comprendre un magasin de données 232 qui est configuré pour mémoriser une adresse de mémoire déroutable. Comme décrit ci- dessus, l'adresse de mémoire déroutable peut être associée à un ou des dispositifs virtuels et peut être fournie par le micrologiciel d'amorçage 222. Dans un exemple, l'adresse de mémoire déroutable peut être associée à un dispositif d'entrée/sortie virtuel. Bien qu'un dispositif d'entrée/sortie virtuel soit décrit, on doit apprécier que d'autres dispositifs virtuels (par exemple, un disque de mémoire vive) puissent être utilisés. La logique de virtualisation 230 peut être configurée pour produire un déroutement lorsqu'une transaction de mémoire fait référence à une adresse dans la ou les plages d'adresses mémorisées dans le magasin de données 232. La logique de virtualisation 230 peut également comprendre une logique de comparaison d'adresse 234 qui est configurée pour recevoir une transaction de mémoire du processeur 220 et pour produire de manière sélective un déroutement lorsque la transaction de mémoire fait référence à l'adresse de mémoire déroutable. Par exemple, lorsqu'une transaction de mémoire avec une adresse dans la plage d'adresses de mémoire déroutables est rencontrée, le matériel de virtualisation 230 peut produire un déroutement. Dans un exemple, la production du déroutement peut comprendre la génération d'une transaction MPT et sa fourniture au processeur 220. Dans un autre exemple, la production du déroutement peut comprendre la génération d'une NMI dans le processeur 220. La logique de virtualisation 230 peut recevoir, par exemple, des demandes de lecture et/ou d'écriture du système d'exploitation 224. Ainsi, la logique de comparaison d'adresse 234 peut être configurée pour fournir une réponse de report de lecture au processeur 220 et/ou au système d'exploitation 224 en réponse à la réception d'une transaction de lecture de mémoire. De même, la logique de comparaison d'adresse 234 peut être configurée pour fournir une réponse retardée au processeur 220 et/ou au système d'exploitation 224 en réponse à la réception d'une transaction d'écriture de mémoire. Bien que des réponses de 2882602 18 report de lecture et des réponses retardées d'écriture soient décrites, on doit apprécier que d'autres réponses personnalisées pour satisfaire les demandes de divers processeurs et/ou systèmes d'exploitation peuvent être fournies par la logique de virtualisation 230. La logique de virtualisation 230 peut également comprendre un magasin de données 236 qui est configuré pour mémoriser des données associées à une transaction de lecture de mémoire pour laquelle la logique de comparaison d'adresse 234 a produit un déroutement. Dans un exemple, le magasin de données 236 peut être une file d'attente qui facilite le maintien d'un ordre souhaité pour les transactions. La mémorisation de transactions de lecture de mémoire peut faciliter la fourniture par le logiciel de virtualisation 230 d'une réponse de report de lecture au processeur 220. Lorsqu'un pilote de dispositif virtuel s'exécute, il peut être capable d'accéder à des transactions de lecture de mémoire et/ou à des données connexes mémorisées dans le magasin de données 236 et de les exécuter dans l'ordre. De même, la logique de virtualisation 230 peut comprendre un magasin de données 238 qui est configuré pour mémoriser des données associées à une transaction d'écriture de mémoire pour laquelle la logique de comparaison d'adresse 234 a produit un déroutement. Dans un exemple, le magasin de données 238 peut être une file d'attente qui facilite le maintien d'un ordre souhaité pour des transactions. Bien qu'une file d'attente soit décrite en tant qu'exemple pour les magasins de données 236 et 238, on doit apprécier que d'autres magasins de données qui facilitent le maintien d'un ordre de transactions puissent être utilisés. La logique de virtualisation 230 peut également comprendre une logique de transaction 239 qui est configurée pour fournir de manière sélective un signal au processeur 220 en réponse à la production par la logique de comparaison d'adresse 234 d'un déroutement. Comme décrit ci-dessus, le signal peut être, par exemple, une MPT, une NMI, etc. Ainsi, la logique de transaction 239 peut faciliter la commande du processeur 220 pour invoquer un pilote de dispositif virtuel pour traiter une demande de mémoire dont l'adresse tombe dans la plage d'adresses déroutables mémorisée dans le magasin de données 232. Etant donné que la logique de virtualisation 230 peut fournir des signaux tels que des MPT et des NMI au processeur 220, le processeur 220 peut être configuré pour appeler un processus de gestion en réponse à la réception d'un signal de la logique de virtualisation 230. Le processus de gestion peut être configuré pour exécuter, dans l'ordre, des transactions de mémoire mémorisées dans le magasin de données 236 et/ou le magasin de données 238. Dans un exemple, le processeur 220 peut être commandé pour entrer dans un état sécurisé ou le quitter, dans lequel le processeur 220 ne peut accéder à une plage d'adresses protégée (par exemple, des adresses associées à un dispositif virtuel) que lorsqu'il est dans l'état sécurisé. Par exemple, le processeur 220 peut être commandé pour entrer dans l'état sécurisé en réponse à la réception d'une MPT ou d'une NMI. Dans un exemple, un registre associé à la commande et/ou à la configuration de la logique de virtualisation 230 peut être situé dans la logique de virtualisation 230 et avoir une adresse dans une plage d'adresses protégée par l'état sécurisé. Ainsi, la logique de virtualisation 230 peut, dans certains exemples, être configurée par l'exécution d'un code tandis que le processeur 220 est dans l'état sécurisé. La figure 2 illustre également une toile de système 240. La toile de système 240 peut être, par exemple, un support de communication intern ud uniforme qui connecte des processeurs, des dispositifs d'entrée/sortie, des interfaces de bus, etc. Bien que la logique de virtualisation 230 puisse produire un signal qui provoque la mémorisation de certaines transactions interceptées dans la logique de virtualisation 230 et leur traitement par un pilote de dispositif virtuel, d'autres transactions peuvent ne pas produire de déroutement et peuvent ainsi être acheminées de la logique de virtualisation 230 vers la toile de système 240 pour un traitement classique. Ainsi, la logique de virtualisation 230 peut faciliter la réalisation d'une prise en charge de virtualisation pour le processeur 220 sans une grande part des temps-système et des retards associés à des systèmes de prise en charge de virtualisation classiques. Comme un homme du métier peut l'apprécier, certains exemples associés à la figure 2 (par exemple, MPT, architecture cellulaire, contrôleur de cellules) peuvent comprendre 2882602 21 certains éléments qui sont spécifiques à certaines architectures telles que l'architecture Itanium. Ainsi, la figure 3 illustre une autre logique de virtualisation 330 plus générique. La figure 3 illustre une mémoire de système 310 dans laquelle des données associées à des dispositifs virtuels pour lesquels une prise en charge de virtualisation externe est prévue peuvent être mémorisées. Par exemple, des données d'adresses peuvent être mémorisées dans un magasin de données d'adresses 312. De même, un magasin de données d'états 314 peut mémoriser des données d'états associées à des dispositifs virtuels pour lesquels une prise en charge de virtualisation externe est prévue. Bien que la mémoire de système 310 soit illustrée comme étant externe au processeur 320, on doit apprécier que, dans certains exemples, la mémoire de système 310 puisse être interne au processeur 320. Le processeur 320 est associé à un micrologiciel 322 et exécute un système d'exploitation 324 et un hyperviseur 326. L'hyperviseur 326 peut présenter une copie virtuelle d'une ressource matérielle sous- jacente qu'il commande aux systèmes d'exploitation 324 exécutés par le processeur 320. Au moment de l'amorçage, ou après celuici, le micrologiciel 322 peut placer un dispositif virtualisé dans une plage d'adresses et configurer une logique de virtualisation de type matériel d'interception 330 pour intercepter des transactions d'accès à la mémoire pour cette plage d'adresses. La logique de virtualisation 330 peut comprendre une logique d'adresse 332 et un magasin de données de lecture/écriture 334. La logique d'adresse 332 peut être configurée pour intercepter des transactions d'accès à la mémoire lorsqu'elles quittent le processeur 320 et avant qu'elles n'arrivent à une destination voulue (par exemple, un emplacement dans la toile de système 340, un dispositif virtuel). La logique de virtualisation 330 peut être située, par exemple, dans un contrôleur de cellules dans une architecture cellulaire. La logique d'adresse 332 peut examiner une adresse physique associée à la transaction d'accès à la mémoire. Si l'adresse est dans une plage de virtualisation, alors la logique d'adresse 332 peut mémoriser des données associées à la transaction et fournir un signal (par exemple, MPT, NMI) à la source de la transaction interceptée (par exemple, le processeur 320). Autrement, la logique d'adresse 332 peut permettre le passage de la transaction à travers la logique de virtualisation 330 vers la toile de système 340 pour qu'elle soit traitée normalement. Etant donné que plusieurs transactions d'accès à la mémoire (par exemple, lectures, écritures) peuvent être émises avant qu'un gestionnaire ne soit exécuté par le processeur 320, la logique de virtualisation 330 peut mémoriser des données associées aux lectures et/ou écritures dans le magasin de données 334. Dans un exemple, les transactions de lectures et d'écritures réelles peuvent être mémorisées dans le magasin de données 334. Le magasin de données 334 peut être configuré pour être suffisamment grand pour mémoriser un nombre maximum d'écritures qui peuvent apparaître entre une interception de transaction et l'exécution du gestionnaire par le processeur 320. De plus, le magasin de données 334 peut être configuré pour faciliter le maintien de l'ordre de transactions. Afin d'éviter un blocage du processeur 320 sur la transaction interceptée, la logique de virtualisation 330 peut acquitter la transaction. Par exemple, la logique de virtualisation 330 peut produire une réponse de report de lecture en réponse à l'interception d'une transaction de lecture. De même, la logique de virtualisation 330 peut produire une réponse retardée en réponse à l'interception d'une transaction d'écriture. Des exemples de procédés peuvent être mieux appréciés avec référence aux organigrammes des figures 4 et 5. Bien que, par souci de simplicité de l'explication, les méthodologies illustrées soient montrées et décrites en tant que séries de blocs, on doit apprécier que les méthodologies ne sont pas limitées par l'ordre des blocs, étant donné que certains blocs peuvent apparaître dans différents ordres et/ou simultanément à d'autres blocs contrairement à ce qui est montré et décrit. De plus, un nombre de blocs moins important que celui illustré peut être nécessaire pour mettre en oeuvre un exemple de méthodologie. En outre, des méthodologies supplémentaires et/ou autres peuvent utiliser des blocs supplémentaires non illustrés. Sur les organigrammes, les blocs indiquent les blocs de traitement qui peuvent être mis en uvre avec une logique. Les blocs de traitement peuvent représenter une étape de procédé et/ou un élément de dispositif pour effectuer l'étape de procédé. Un organigramme ne représente pas une syntaxe pour un langage, une méthodologie ou un style de programmation particulier (par exemple, procédural, orienté objet). Au lieu de cela, un organigramme illustre des informations fonctionnelles pouvant être utilisées par un homme du métier pour développer une logique pour effectuer le traitement illustré. On appréciera que dans certains exemples, des éléments de programme, tels que des variables temporaires, des boucles de sous-programmes, etc., ne soient pas montrés. On appréciera, en outre, que des applications électroniques et logicielles peuvent impliquer des processus dynamiques et flexibles de sorte que les blocs illustrés puissent être effectués dans d'autres séquences qui sont différentes de celles montrées et/ou que des blocs puissent être combinés ou séparés en de multiples composants. On appréciera que les processus peuvent être mis en uvre en utilisant diverses approches de programmation, telles que des techniques à langage machine, procédurales, orientées objet et/ou à intelligence artificielle. La figure 4 illustre un exemple de procédé 400 pour prendre en charge une virtualisation hors puce par matériel par l'intermédiaire d'un déroutement d'adresse externe. Le procédé 400 comprend, en 410, l'initialisation d'une logique 2882602 25 d'interception qui est configurée pour être connectée de manière fonctionnelle à un processeur qui ne comprend pas de prise en charge de virtualisation interne. Dans un exemple, l'initialisation de la logique d'interception peut comprendre la fourniture d'une adresse associée à un dispositif virtuel à la logique d'interception. La logique d'interception peut comprendre des registres matériels dont les adresses sont situées dans une plage d'adresses sécurisée. Ainsi, les registres de logique d'interception peuvent n'être disponibles que pour un logiciel de virtualisation certifié et non pour un système d'exploitation et/ou un code de niveau application. Le procédé 400 comprend également, en 420, l'interception d'une demande d'entrée/sortie produite par le processeur. L'interception se produit après que la demande d'entrée/sortie ait quitté le processeur et avant que la demande d'entrée/sortie n'arrive à une destination voulue. Dans un exemple, l'interception d'une demande d'entrée/sortie peut comprendre la réception de la demande d'entrée/sortie, l'examen d'une adresse associée à la demande d'entrée/sortie, et l'acheminement de manière sélective de la demande d'entrée/sortie sur la base, au moins en partie, de l'adresse associée à la demande d'entrée/sortie. Par exemple, des demandes d'entrée/sortie associées à un dispositif virtuel peuvent être mémorisées dans un magasin de données tandis que des demandes d'entrée/sortie associées à un dispositif physique peuvent être fournies au dispositif physique. Dans un exemple, l'interception d'une transaction d'entrée/sortie peut également comprendre la mémorisation de la demande d'entrée/sortie à un emplacement accessible à un pilote de dispositif associé à un dispositif virtuel. Le procédé 400 comprend également, en 430, la génération et la fourniture de manière sélective d'un signal au processeur. Qu'un signal soit généré et fourni dépend, au moins en partie, du fait que la destination voulue est ou non un dispositif virtuel. Dans un exemple, la génération et la fourniture de manière sélective d'un signal au processeur peuvent comprendre la production d'une MPT. Dans un autre exemple, la génération et la fourniture de manière sélective d'un signal au processeur comprennent la production d'une interruption non masquable (NMI). Dans l'exemple de MPT, la MPT invoquera un logiciel de virtualisation et le placement d'un processeur dans un mode sécurisé. Le logiciel de virtualisation peut ensuite accéder à des transactions mémorisées et les exécuter dans l'ordre. Dans un exemple, le procédé 400 peut nécessiter un processeur qui produit des transactions interceptées pour satisfaire deux contraintes. Premièrement, qu'une MPT soit prise tandis qu'il y a une lecture en attente. Deuxièmement, que les entrées/sorties projetées en mémoire soient bien ordonnées de sorte qu'une lecture en attente bloque des lectures et des écritures subséquentes jusqu'à ce que la lecture soit satisfaite. En plus de la production d'un signal, le procédé 400 peut également comprendre la réponse à des transactions interceptées. Par exemple, l'interception d'une transaction d'entrée/sortie peut comprendre la fourniture d'une réponse (par exemple, report de lecture) à une demande de lecture provenant du processeur. De même, l'interception d'une transaction d'entrée/sortie peut comprendre la fourniture d'une réponse (par exemple, écriture retardée) à une demande d'écriture provenant du processeur. On doit apprécier que différents processeurs, systèmes d'exploitation et transactions peuvent conduire à la fourniture de différentes réponses par le procédé 400. Bien que la figure 4 illustre diverses actions se produisant en série, on doit comprendre que diverses actions illustrées sur la figure 4 pourraient se produire sensiblement en parallèle. A titre d'illustration, un premier processus pourrait initialiser une logique d'interception. De même, un deuxième processus pourrait intercepter des transactions d'entrée/sortie, tandis qu'un troisième processus pourrait générer des signaux de manière sélective. Bien que trois processus soient décrits, on doit apprécier qu'un nombre plus grand et/ou plus petit de processus pourraient être utilisés et que des processus légers, des processus normaux, des files et d'autres approches pourraient être utilisés. On doit apprécier que d'autres exemples de procédés puissent, dans certains cas, également comprendre des actions qui se produisent sensiblement en parallèle. La figure 5 illustre un procédé 500 pour la prise en charge d'une virtualisation hors puce par matériel par l'intermédiaire d'un déroutement d'adresse externe. Le procédé 500 comprend, en 510, l'initialisation d'une logique d'interception. L'initialisation d'une logique d'interception peut comprendre, par exemple, l'écriture d'une ou de valeurs dans un registre dans la logique d'interception, l'établissement d'une plage d'adresses pour laquelle la logique d'interception doit produire un déroutement, l'établissement d'un type de transaction pour lequel la logique d'interception doit produire un déroutement, etc. Le procédé 500 peut également comprendre, en 520, la réception d'une transaction. La transaction peut être, par exemple, une transaction d'accès à la mémoire, une transaction d'entrée/sortie et/ou d'autres transactions. En 530, il est déterminé si la transaction est destinée à un dispositif virtuel. La détermination peut être basée, au moins en partie, sur la plage d'adresses et/ou le type de transaction établis en 510. Si le résultat de la détermination en 530 est non, alors, en 560, la transaction peut être acheminée vers une destination telle qu'une toile de système. Mais si le résultat de la détermination en 530 est oui, alors, en 540, des données associées à la transaction peuvent être mémorisées pour un traitement subséquent par un gestionnaire de dispositif virtuel. Ensuite, en 550, un signal peut être généré et fourni au producteur de transaction. En 570, il peut être déterminé si une autre transaction doit être traitée. Si le résultat de la détermination est 2882602 29 non, alors le traitement peut se terminer. Autrement, le traitement peut retourner en 520. Dans un exemple, des méthodologies peuvent être mises en uvre en tant qu'instructions et/ou opérations exécutables par un processeur fournies sur un support pouvant être lu par un ordinateur. Ainsi, dans un exemple, un support pouvant être lu par un ordinateur peut mémoriser des instructions exécutables par un processeur qui peuvent être mises en uvre pour exécuter un procédé qui comprend l'initialisation d'une logique d'interception qui est configurée pour être connectée de manière fonctionnelle à un processeur qui ne comprend pas de prise en charge de virtualisation interne. L'initialisation de la logique de virtualisation peut comprendre la fourniture d'une adresse associée à un dispositif virtuel à la logique d'interception. Le procédé peut également comprendre l'interception d'une transaction (par exemple, demande d'entrée/sortie) produite par le processeur. L'interception peut se produire après que la demande d'entrée/sortie ait quitté le processeur et avant que la demande d'entrée/sortie n'arrive à une destination voulue. L'interception d'une demande d'entrée/sortie peut comprendre la réception de la demande d'entrée/sortie, l'examen d'une adresse associée à la demande d'entrée/sortie et l'acheminement de manière sélective de la demande d'entrée/sortie sur la base, au moins en partie, de l'adresse associée à la demande d'entrée/sortie. Le procédé peut également comprendre la mémorisation de la demande d'entrée/sortie à un emplacement accessible à un pilote de dispositif associé au dispositif virtuel. Le procédé peut également comprendre la production de manière sélective d'une MPT sur la base, au moins en partie, du fait que la destination voulue est ou non un dispositif virtuel. Le procédé peut également comprendre la notification de la fin de la transaction à un demandeur dont la transaction a été interrompue. Bien que le procédé ci-dessus soit décrit comme étant fourni sur un support pouvant être lu par un ordinateur, on doit apprécier que d'autres exemples de procédés décrits dans le présent document peuvent également être fournis sur un support pouvant être lu par un ordinateur. La figure 6 illustre un ordinateur 600 qui comprend un processeur 602, une mémoire 604 et des ports d'entrée/sortie 610 connectés de manière fonctionnelle par un bus 608. Dans un exemple, l'ordinateur 600 peut comprendre une logique de déroutement d'adresse externe 630 configurée pour faciliter la réalisation de la virtualisation pour le processeur 602 lorsque le processeur 602 n'a pas de prise en charge de virtualisation interne. Ainsi, la logique de déroutement d'adresse externe 630, qu'elle soit mise en uvre dans l'ordinateur 600 en tant que matériel ou matériel et micrologiciel, peut fournir des moyens pour accéder à une transaction de mémoire produite par un processeur qui ne comprend pas de logique de virtualisation interne. La logique de déroutement d'adresse externe 630 peut également fournir des moyens pour déterminer si la transaction de mémoire est destinée à un dispositif virtuel et des moyens pour signaler au processeur 602 d'invoquer un pilote de dispositif pour traiter la transaction de mémoire pour le dispositif virtuel. Le processeur 602 peut consister en divers processeurs comprenant un microprocesseur double et d'autres architectures multiprocesseurs. La mémoire 604 peut comprendre une mémoire volatile et/ou une mémoire non volatile. La mémoire non volatile peut comprendre, mais sans y être limitée, une ROM, une PROM, une EPROM, une EEPROM, et similaire. Une mémoire volatile peut comprendre, par exemple, une RAM, une SRAM (RAM synchrone), une DRAM (RAM dynamique), une SDRAM (DRAM synchrone), une DDR SDRAM (SDRAM à double débit de données) et une DRRAM (RAM à bus de RAM directe). Un disque 606 peut être connecté de manière fonctionnelle à l'ordinateur 600 par l'intermédiaire, par exemple, d'une interface d'entrée/sortie (par exemple, carte, dispositif) 618 et d'un port d'entrée/sortie 610. Le disque 606 peut comprendre, mais sans y être limité, des dispositifs tels qu'un lecteur de disque magnétique, un lecteur de disque à semiconducteurs, un lecteur de disquette, un lecteur de bande, un lecteur Zip, une carte de mémoire flash et/ou une carte memory stick. En outre, le disque 606 peut comprendre des lecteurs optiques tels qu'un lecteur de CDROM, un lecteur de CD-R (CD enregistrable), un lecteur de CD-RW (CD réinscriptible) et/ou un lecteur de DVD ROM (ROM vidéo numérique). La mémoire 604 peut mémoriser des processus 614 et/ou des données 616, par exemple. Le disque 606 et/ou la mémoire 604 peuvent mémoriser un système d'exploitation qui commande et alloue des ressources de l'ordinateur 600. Le bus 608 peut être une architecture d'interconnexion de bus interne unique et/ou d'autres architectures de bus ou maillées. Bien qu'un seul bus soit illustré, on doit apprécier que l'ordinateur 600 peut communiquer avec divers dispositifs, logiques et périphériques en utilisant d'autres bus qui ne sont pas illustrés (par exemple, PCIE, SATA, Infiniband, 1394, USB, Ethernet). Le bus 608 peut être de divers types comprenant, mais sans y être limités, un bus de mémoire ou un contrôleur de mémoire, un bus périphérique ou un bus externe, un commutateur crossbar et/ou un bus local. Le bus local peut être de divers types comprenant, mais sans y être limités, un bus ISA (Industrial Standard Architecture), un bus MSA (Microchannel Architecture), un bus EISA (Extended ISA), un bus PCI (Peripheral Component Interconnect), un bus USB (Universal Serial Bus) et un bus SCSI (Small Computer Systems Interface). L'ordinateur 600 peut interagir avec des dispositifs d'entrée/sortie par l'intermédiaire d'interfaces d'entrée/sortie 618 et de ports d'entrée/sortie 610. Des dispositifs d'entrée/sortie peuvent comprendre, mais sans y être limités, un clavier, un microphone, un dispositif de pointage et de sélection, des caméras, des cartes vidéo, des afficheurs, un disque 606, des dispositifs de réseau 620, et similaire. Les ports d'entrée/sortie 610 peuvent comprendre, mais sans y être limités, des ports série, des ports parallèles et des ports USB. L'ordinateur 600 peut également interagir avec divers dispositifs virtuels (non illustrés). L'ordinateur 600 peut fonctionner dans un environnement de réseau et peut ainsi être connecté à des dispositifs de réseau 620 par l'intermédiaire des interfaces d'entrée/sortie 618 et/ou des ports d'entrée/sortie 610. Par l'intermédiaire des dispositifs de réseau 620, l'ordinateur 600 peut interagir avec un réseau. Par l'intermédiaire du réseau, l'ordinateur 600 peut être connecté logiquement à des ordinateurs à distance. Les réseaux avec lesquels l'ordinateur 600 peut interagir comprennent, mais sans y être limités, un réseau local (LAN), un réseau étendu (WAN) et d'autres réseaux. Les dispositifs de réseau 620 peuvent se connecter à des technologies LAN comprenant, mais sans y être limitées, une interface FDDI (Fiber Distributed Data Interface), une interface CDDI (Copper Distributed Data Interface), Ethernet (IEEE 802.3), un anneau à jeton (IEEE 802.5), une communication informatique sans fil (IEEE 802.11), Bluetooth (IEEE 802.15. 1), Zigbee (IEEE 802.15.4) et similaire. De même, les dispositifs de réseau 620 peuvent se connecter à des technologies WAN comprenant, mais sans y être limitées, des liaisons point à point, des réseaux à commutation de circuits tels que des réseaux RNIS (réseaux numériques à intégration de services), des réseaux à commutation de paquets et des lignes d'abonnés numériques (DSL). Bien que des types de réseaux individuels soit décrits, on doit apprécier que des communications par l'intermédiaire, sur et/ou à travers un réseau peuvent comprendre des combinaisons et des mélanges de communications. La figure 7 illustre un exemple de dispositif de formation d'image 700 qui comprend une logique de déroutement d'adresse externe 710 similaire aux exemples de systèmes décrits dans le présent document. La logique de déroutement d'adresse externe 710 peut être configurée pour exécuter des procédés exécutables tels que ceux décrits dans le présent document. La logique de déroutement d'adresse externe 710 peut être fixée en permanence et/ou de manière amovible au dispositif de formation d'image 700. Le dispositif de formation d'image 700 peut recevoir des données d'impression à présenter. Ainsi, le dispositif de formation d'image 700 peut également comprendre une mémoire 720 configurée pour mémoriser des données d'impression ou destinée à être utilisée plus généralement pour le traitement d'image. Le dispositif de formation d'image 700 peut également comprendre une logique de rendu 730 configurée pour générer une image prête pour impression à partir de données d'impression. Un rendu varie en fonction du format des données impliquées et du type de dispositif de formation d'image. En général, la logique de rendu 730 convertit des données de niveau haut en une image graphique pour affichage ou impression (par exemple, l'image prête pour impression). Par exemple, une forme consiste en le lancer de rayon qui prend un modèle mathématique d'un objet ou d'une scène en trois dimensions et qui le convertit en une image bitmap. Un autre exemple est le processus de conversion de HTML 2882602 35 en une image pour affichage/impression. On doit apprécier que le dispositif de formation d'image 700 peut recevoir des données prêtes pour impression qui ne nécessitent pas de rendu, et ainsi la logique de rendu 730 peut ne pas apparaître dans certains dispositifs de formation d'image. Le dispositif de formation d'image 700 peut également comprendre un mécanisme de formation d'image 740 configuré pour générer une image sur un support d'impression à partir de l'image prête pour impression. Le mécanisme de formation d'image 740 peut varier en fonction du type du dispositif de formation d'image 700 et peut comprendre un mécanisme de formation d'image laser, d'autres mécanismes de formation d'image à base de toner, un mécanisme à jet d'encre, un mécanisme de formation d'image numérique, ou un autre moteur de reproduction d'image. Un processeur 750 peut être inclus, lequel est mis en oeuvre avec une logique pour commander le fonctionnement du dispositif de formation d'image 700. Dans un exemple, le processeur 750 comprend une logique qui est capable d'exécuter des instructions Java. D'autres composants du dispositif de formation d'image 700 ne sont pas décrits dans le présent document, mais peuvent comprendre des mécanismes de gestion et de stockage de supports, des capteurs, des contrôleurs et d'autres composants impliqués dans le processus de formation d'image. En faisant maintenant référence à la figure 8, une interface API (interface de programmation d'application) 800 est illustrée permettant un accès à un système 810 pour prendre en charge une virtualisation par matériel hors puce pour un processeur. L'interface API 800 peut être utilisée, par exemple, par un programmeur 820 et/ou un processus 830 pour obtenir un accès à un traitement effectué par le système 810. Par exemple, un programmeur 820 peut écrire un programme pour accéder au système 810 (par exemple, invoquer son fonctionnement, surveiller son fonctionnement, commander son fonctionnement) où l'écriture du programme est facilitée par la présence de l'interface API 800. Plutôt que de devoir comprendre les éléments internes du système 810, le programmeur 820 doit simplement apprendre l'interface vers le système 810. Cela facilite l'encapsulation de la fonctionnalité du système 810 tout en exposant cette fonctionnalité. De même, l'interface API 800 peut être utilisée pour fournir des valeurs de données au système 810 et/ou récupérer des valeurs de données du système 810. Par exemple, un processus 830 qui traite des accès à la mémoire virtuelle peut fournir des données d'adresse déroutable au système 810 par l'intermédiaire de l'interface API 800, par exemple, en utilisant un appel prévu dans l'interface API 800. Ainsi, dans un exemple de l'interface API 800, un ensemble d'interfaces de programmation d'application peuvent être mémorisées sur un support pouvant être lu par un ordinateur. Les interfaces peuvent être utilisées par un programmeur, un composant informatique, une logique, etc., pour obtenir un accès à unsystème 810 pour dérouter extérieurement une transaction associée à un dispositif virtuel. Les interfaces peuvent comprendre, mais sans y être limitées, une première interface 840 qui communique des données d'adresse déroutable, une deuxième interface 850 qui communique des données de noeud déroutable et une troisième interface 860 qui communique des données de transaction, où les données de transaction peuvent être identifiées en tant que transaction déroutable sur la base des données d'adresse déroutable et/ou des données de noeud déroutable associées à la transaction. La figure 9 illustre un exemple de processeur 900 connecté de manière fonctionnelle à une logique de virtualisation externe 950. Le processeur 900 peut être configuré pour produire une transaction de mémoire. Le processeur 900 peut comprendre une logique de traitement d'instruction 910 qui est configurée pour traiter des instructions exécutables par un ordinateur. La logique de traitement d'instruction 910 peut fonctionner comme une logique de traitement d'instruction classique dans une unité centrale. Le processeur 900 peut également comprendre une logique de composition de transaction 920 qui est configurée pour produire une transaction d'accès à la mémoire concernant le traitement d'une instruction exécutable par un ordinateur. De plus, le processeur 900 peut comprendre des ports (par exemple, 940, 942, 944) par l'intermédiaire desquels la transaction d'accès à la mémoire peut être fournie. Au moins l'un des ports (par exemple, 940) peut être dédié en tant que port de communication de logique de virtualisation. Bien que trois ports soient illustrés, on doit apprécier qu'un plus grand et/ou un plus petit nombre de ports peuvent être utilisés. Le processeur 900 peut également comprendre un commutateur crossbar 930 configuré pour connecter de manière fonctionnelle la logique de composition de transaction 920 aux ports. Comme les processeurs illustrés sur la figure 1 et la figure 2, le processeur 900 ne comprend pas de prise en charge de virtualisation interne. Par exemple, le processeur 900 n'est pas configuré avec une prise en charge interne pour le déroutement d'adresses associées à un dispositif virtuel. Cependant, le processeur 900 comprend la logique de composition de transaction 920, le commutateur crossbar 930 et les ports 940 à 944, qui sont agencés d'une manière qui facilite la sélection des ports par l'intermédiaire desquels diverses transactions sont fournies. Dans un exemple, toutes les transactions associées à une certaine plage d'adresses peuvent être fournies par l'intermédiaire d'un premier port (par exemple, 940), tandis que toutes les autres transactions qui ne sont pas associées à la plage d'adresses sont fournies par l'intermédiaire des autres ports (par exemple, 942, 944). Ainsi, le premier port peut être utilisé pour délivrer des transactions associées à une certaine plage d'adresses à une logique de virtualisation 950. Si la plage d'adresses est configurée d'une certaine manière, alors seules des transactions destinées à un dispositif virtuel seront fournies à la logique de virtualisation 950. La logique de virtualisation 950 peut être située à l'extérieur du processeur 900 et peut être connectée de manière fonctionnelle au processeur 900 par un port de communication de logique de virtualisation (par exemple, 940). La logique de virtualisation 950 peut comprendre un magasin de données configuré pour mémoriser une transaction de lecture de mémoire et/ou une transaction d'écriture de mémoire. La logique de virtualisation 950 peut également comprendre une logique de transaction qui est configurée pour fournir de manière sélective un signal au processeur 900 en réponse à la réception par la logique de virtualisation 950 d'une transaction d'accès à la mémoire. Le signal peut prendre diverses formes. Dans un exemple, la logique de virtualisation 950 peut fournir une MPT au processeur 900 en réponse à la réception d'une transaction de mémoire. Dans un autre exemple, la logique de virtualisation 950 peut fournir une NMI au processeur 900 en réponse à la réception d'une transaction de mémoire. Le processeur 900 peut être configuré pour appeler un processus de gestion en réponse à la réception du signal (par exemple, MPT) provenant de la logique de virtualisation 950. Le processus de gestion peut, à son tour, être configuré pour exécuter, dans l'ordre, des transactions de lecture de mémoire et d'écriture de mémoire mémorisées dans le magasin de données dans la logique de virtualisation 950. Comme décrit ci-dessus, des transactions destinées à un dispositif virtuel peuvent être fournies par l'intermédiaire du port 940 à la logique de virtualisation 950. D'autres transactions peuvent être fournies par l'intermédiaire d'autres ports (par exemple, 942, 944) à d'autres emplacements tels qu'une toile de système 960 connectée de manière fonctionnelle au processeur 900. La figure 10 illustre un processeur 1000 qui est connecté de manière fonctionnelle à une logique externe 1030. Le processeur 1000 est configuré pour produire une transaction de mémoire, mais n'a pas de prise en charge interne pour le déroutement d'adresses associées à un dispositif virtuel. Ainsi, la logique externe 1030 peut réaliser la prise en charge de virtualisation pour le processeur 1000. Le processeur 1000 comprend une logique de traitement d'instruction 1010 qui est configurée pour traiter des instructions exécutables par un ordinateur. Le processeur 1000 comprend également une logique de composition de transaction 1020 qui est configurée pour produire une transaction d'accès à la mémoire concernant le traitement d'une instruction exécutable par un ordinateur. Par exemple, une instruction exécutable par un ordinateur peut nécessiter une valeur provenant d'un emplacement en mémoire. Ainsi, la logique de composition de transaction 1020 peut produire une transaction pour récupérer cette valeur dans la mémoire. La logique de composition de transaction 1020 peut être configurée pour mapper des transactions d'accès à la mémoire associées à une première plage d'adresses vers un premier n ud et pour mapper des transactions d'accès à la mémoire associées à des adresses à l'extérieur de la première plage d'adresses vers d'autres n uds. Le mappage d'une transaction vers un n ud peut comprendre l'association de données d'adresse de n ud à une transaction. Ainsi, une relation entre une adresse de n ud et un dispositif virtuel peut être établie par la logique de composition de transaction 1020. La logique 1030 peut être située à l'extérieur du processeur 1000 et peut être connectée de manière fonctionnelle au processeur 1000. La logique 1030 peut comprendre un magasin de données (non illustré) qui est configuré pour mémoriser une adresse de n ud déroutable. La logique 1030 peut également comprendre une logique de comparaison de n ud 1040 qui est configurée pour recevoir une transaction d'accès à la mémoire du processeur 1000. La logique de comparaison de n ud 1040 peut produire de manière sélective un déroutement lorsqu'une transaction reçue fait référence à l'adresse de n ud déroutable. La logique 1030 peut également comprendre un deuxième magasin de données (non illustré) qui est configuré pour mémoriser des données associées à une transaction de lecture et/ou d'écriture de mémoire pour laquelle la logique de comparaison de n ud 1040 a produit un déroutement. La logique 1030 peut également comprendre une logique de transaction (non illustrée) qui est configurée pour fournir de manière sélective un signal au processeur 1000 en réponse à la production par la logique de comparaison de n ud 1040 du déroutement. Dans un exemple, la logique de transaction dans la logique externe 1030 peut être configurée pour fournir une transaction MPT au processeur 1000 2882602 42 en réponse à la production par la logique de comparaison de n ud 1040 d'un déroutement. Dans un autre exemple, la logique de transaction peut être configurée pour fournir une NMI au processeur 1000 en réponse à la production par la logique de comparaison de noeud 1040 d'un déroutement. Comme d'autres logiques décrites dans le présent document, la logique externe 1030 peut produire un déroutement pour certaines transactions (par exemple, celles associées à un dispositif externe, tout en permettant à d'autres transactions de passer vers d'autres destinations. Ainsi, dans un exemple, une toile de système 1050 peut être la destination pour certaines transactions non déroutées par la logique externe 1030. Bien que des exemples de systèmes, de procédés, etc. aient été illustrés en décrivant des exemples et bien que les exemples aient été décrits en détail, il n'est pas dans l'intention des demandeurs de limiter d'une quelconque manière l'étendue des revendications jointes à ces détails. Il n'est, bien entendu, pas possible de décrire chaque combinaison concevable de composants ou de méthodologies en vue de décrire les systèmes, les procédés, etc. décrits dans le présent document. Des avantages et des modifications supplémentaires seront facilement évidents aux hommes du métier. Par conséquent, l'invention n'est pas limitée aux détails spécifiques, au dispositif représentatif et aux exemples illustratifs montrés et décrits. Ainsi, cette demande est destinée à comprendre des changements, modifications et variantes qui tombent dans l'étendue des revendications jointes. En outre, la description qui précède n'est pas destinée à limiter l'étendue de l'invention. Au lieu de cela, l'étendue de l'invention doit être déterminée par les revendications jointes et leurs équivalents. Le terme comprend ou comprenant tel qu'utilisé dans la description détaillée ou dans les revendications a le même sens que le terme comprenant lorsqu'il est utilisé en tant que mot de transition dans une revendication. En outre, le terme ou tel qu'utilisé dans la description détaillée ou dans les revendications (par exemple, A ou B) signifie A ou B ou les deux . Lorsque les demandeurs souhaitent indiquer uniquement A ou B mais non les deux , alors l'expression uniquement A ou B mais non les deux est utilisée. Ainsi, l'utilisation du terme ou dans le présent document est l'utilisation inclusive et non l'utilisation exclusive. Voir, Bryan A. Garner, A Dictionary of Modern Legal Usage 624 (deuxième édition 1995). REVENDICATIONS 1. Logique de virtualisation (230) configurée pour être connectée de manière fonctionnelle à un processeur (220) configuré sans logique de virtualisation interne, comprenant. un premier magasin de données (232) configuré pour mémoriser une adresse de mémoire 10 déroutable; une logique de comparaison d'adresse (234) configurée pour recevoir une transaction de mémoire du processeur (220) et pour produire de manière sélective un déroutement lorsque la transaction fait référence à l'adresse de mémoire déroutable; un deuxième magasin de données (236) configuré pour mémoriser des données associées à une transaction de lecture de mémoire pour laquelle la logique de comparaison d'adresse (234) a produit un déroutement; un troisième magasin de données (238) configuré pour mémoriser des données associées à une transaction d'écriture de mémoire pour laquelle la logique de comparaison d'adresse (234) a produit un déroutement; et une logique de transaction (239) configurée pour fournir de manière sélective un signal au processeur (220) en réponse à la production par la logique de comparaison d'adresse (234) du déroutement. 2. Logique de virtualisation (230) selon la revendication 1, la logique de transaction (239) 35 étant configurée pour fournir une transaction de gestion vers processeur (MPT) au processeur (220) en réponse à la logique de comparaison d'adresse (234) produisant un déroutement. 3. Logique de virtualisation (230) selon la revendication 2, le processeur (220) étant configuré pour appeler un processus de gestion en réponse à la réception de la MPT de la logique de virtualisation (230), le processus de gestion étant configuré pour exécuter, dans l'ordre, des transactions de mémoire mémorisées dans l'un ou plus du deuxième magasin de données (236) et du troisième magasin de données (238). 4. Logique de virtualisation (230) selon la revendication 1, la logique de transaction (239) étant configurée pour fournir une interruption non masquable au processeur (220) en réponse à la logique de comparaison d'adresse (234) produisant un déroutement. 5. Logique de virtualisation configurée pour être connectée de (230) manière fonctionnelle à un processeur de production de transactions de mémoire (220) configuré sans logique de virtualisation interne, comprenant. un premier magasin de données (232) configuré pour mémoriser une adresse de mémoire déroutable associée à un dispositif d'entrée/sortie virtuel, où l'adresse de mémoire déroutable est écrite dans le premier magasin de données (232) par un micrologiciel d'amorçage (222) associé à l'un ou plus de l'amorçage du processeur (220) et de l'initialisation d'un système d'exploitation (224) associé au processeur (220) ; une logique de comparaison d'adresse (234) configurée pour recevoir une transaction de mémoire du processeur (220), pour produire de manière sélective un déroutement lorsque la transaction de mémoire fait référence à l'adresse de mémoire déroutable, pour fournir une réponse de report de lecture au processeur (220) en réponse à la réception d'une transaction de lecture de mémoire du processeur (220), et pour fournir une réponse retardée au processeur (220) en réponse à la réception d'une transaction d'écriture de mémoire du processeur (220) ; un deuxième magasin de données (236) configuré pour mémoriser des données associées à une transaction de lecture de mémoire pour laquelle la logique de comparaison d'adresse (234) a produit un déroutement; un troisième magasin de données (238) configuré pour mémoriser des données associées à une transaction d'écriture de mémoire pour laquelle la logique de comparaison d'adresse (234) a produit un déroutement; et une logique de transaction (239) configurée pour fournir de manière sélective une transaction de gestion vers processeur (MPT) au processeur (220) en réponse à la production par la logique de comparaison d'adresse (234) d'un déroutement; le processeur (220) étant configuré pour appeler un processus de gestion en réponse à la réception de la MPT de la logique de virtualisation (230), le processus de gestion étant configuré pour exécuter, dans l'ordre, des transactions de mémoire mémorisées dans l'un ou plus du deuxième magasin de données (236) et du troisième magasin de données (238). 6. Procédé (400), comprenant. l'initialisation (410) d'une logique d'interception qui est configurée pour être connectée de manière fonctionnelle à un processeur qui ne comprend pas de prise en charge de virtualisation interne; l'interception (420) d'une demande d'entrée/sortie produite par le processeur, où l'interception (420) se produit après que la demande d'entrée/sortie ait quitté le processeur et avant que la demande d'entrée/sortie n'arrive à une destination voulue; et la génération de manière sélective (430) et la fourniture d'un signal au processeur en fonction, au moins en partie, du fait que la destination voulue est ou non un dispositif virtuel. 7. Procédé (400) selon la revendication 6, où l'interception (420) d'une demande d'entrée/sortie comprend la réception de la demande d'entrée/sortie, l'examen d'une adresse associée à la demande d'entrée/sortie, et l'acheminement de manière sélective de la demande d'entrée/sortie sur la base, au moins en partie, de l'adresse associée à la demande d'entrée/sortie. 8. Procédé (400) selon la revendication 7, 35 où la génération de manière sélective (430) et la fourniture d'un signal au processeur comprend la production d'une transaction de gestion vers processeur (MPT). 9. Support pouvant être lu par un ordinateur mémorisant des instructions exécutables par un processeur pouvant être mis en uvre pour exécuter un procédé (500), le procédé (500) comprenant. l'initialisation (510) d'une logique d'interception qui est configurée pour être connectée de manière fonctionnelle à un processeur qui ne comprend pas de prise en charge de virtualisation interne, où l'initialisation de la logique d'interception comprend la fourniture d'une adresse associée à un dispositif virtuel à la logique d'interception; l'interception (520) d'une demande d'entrée/sortie produite par le processeur, où l'interception se produit après que la demande d'entrée/sortie ait quitté le processeur et avant que la demande d'entrée/sortie n'arrive à une destination voulue, où l'interception d'une demande d'entrée/sortie comprend la réception de la demande d'entrée/sortie, l'examen d'une adresse associée à la demande d'entrée/sortie, et l'acheminement de manière sélective (530) de la demande d'entrée/sortie sur la base, au moins en partie, de l'adresse associée à la demande d'entrée/sortie; la mémorisation (540) de la demande d'entrée/sortie à un emplacement accessible à un dispositif de pilote associé au dispositif virtuel; et la production de manière sélective (550) d'une transaction de gestion vers processeur (MPT) en fonction, au moins en partie, du fait que la destination voulue est ou non un dispositif virtuel. 10. Système, comprenant. un processeur (900) configuré pour produire une transaction de mémoire, le processeur (900) ne comportant pas de prise en charge interne pour dérouter des adresses associées à un dispositif virtuel, le processeur comprenant: une logique de traitement d'instruction (910) configurée pour traiter des instructions exécutables par un ordinateur; une logique de composition de transaction (920) configurée pour produire une transaction d'accès à la mémoire concernant le traitement d'une instruction exécutable par un ordinateur; deux ports ou plus (940, 942, 944) par l'intermédiaire desquels la transaction d'accès à la mémoire peut être fournie, où au moins l'un des ports (940, 942, 944) peut être dédié en tant que port de communication de logique de virtualisation; et un commutateur crossbar (930) configuré pour connecter de manière fonctionnelle la logique de composition de transaction (920) aux deux ports ou plus (940, 942, 944) ; et une logique de virtualisation (950) située à l'extérieur du processeur (900), la logique de virtualisation (950) étant connectée de manière fonctionnelle au processeur (900) par le port de communication de logique de virtualisation, la logique de virtualisation (950) comprenant. un magasin de données configuré pour mémoriser l'une ou plus d'une donnée associée à une transaction de lecture de mémoire et d'une donnée associée à une transaction d'écriture de mémoire; et une logique de transaction configurée pour fournir de manière sélective un signal au processeur (900) en réponse à la réception par la logique de virtualisation (950) d'une transaction d'accès à la mémoire.