FR2805371A1 - Emulation logicielle transparente comme alternative au blocage de bus materiel - Google Patents

Emulation logicielle transparente comme alternative au blocage de bus materiel Download PDF

Info

Publication number
FR2805371A1
FR2805371A1 FR0012523A FR0012523A FR2805371A1 FR 2805371 A1 FR2805371 A1 FR 2805371A1 FR 0012523 A FR0012523 A FR 0012523A FR 0012523 A FR0012523 A FR 0012523A FR 2805371 A1 FR2805371 A1 FR 2805371A1
Authority
FR
France
Prior art keywords
bus
blocking
semaphore
fault
hardware
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR0012523A
Other languages
English (en)
Other versions
FR2805371B1 (fr
Inventor
Robert J Brooks
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of FR2805371A1 publication Critical patent/FR2805371A1/fr
Application granted granted Critical
Publication of FR2805371B1 publication Critical patent/FR2805371B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

Un procédé et un dispositif pour émuler un blocage de bus matériel dans un système informatique à architectures multiples comporte un gestionnaire de défaut (50) qui fait l'acquisition d'un sémaphore (56) réservé pour le blocage de bus et d'un sémaphore (58) qui limite l'accès à une table de pages. Le gestionnaire de défaut (50) comporte un module d'émulation (60) qui positionne un bit de mode (59) pour empêcher le blocage de bus et permet une réexécution de l'instruction ayant provoqué une requête du blocage de bus matériel. En utilisant ce procédé, le gestionnaire de défaut (50) assure une interruption minimale du fonctionnement du système informatique en limitant l'accès à la quantité de ressources du système informatique la plus faible.

Description

EMULATION LOGICIELLE TRANSPARENTE COMME ALTERNATIVE<B>AU</B> <B>BLOCAGE DE BUS</B> MATERIEL Domaine technique domaine technique est celui de l'architecture des ordinateurs utilisant des mécanismes pour empêcher des conflits d'accès<B>à</B> des ressources informatiques partagées.
Contexte systèmes informatiques actuels utilisent divers moyens pour assurer une exclusivité temporaire de l'accès<B>d'</B> unité centrale de traitement (CPU) ou d'un autre agent actif du système<B>à</B> un élément de données de mémoire ou a un dispositif d'entrée/sortie. L'un de ces moyens est un blocage de bus. Un blocage de bus est un mécanisme matériel dans lequel l'agent programmé pour un accès atomique exclusif<B>à</B> l'élément de données de mémoire, le dispositif d'entrée/sortie <B>ou</B> une combinaison des deux, signale sa demande d'un accès exclusif en utilisant un signal transmis sur bus ou une interconnexion du système. Les autres agents du système sont alors empêchés d'accéder<B>à</B> l'élément ou aux éléments bloqués pendant l'intervalle durant lequel l'agent bloquant signale un accès exclusif.
Ce mécanisme de blocage de bus matériel pose des problèmes de performances importants, avec impact disproportionne1lement plus grand sur des plus grands systèmes. Ceci est<B>dû</B> au fait qu'il est généralement complexe d'une façon prohibitive de limiter la portée du blocage, en utilisant des mécanismes matériels, aux éléments particuliers auxquels il est accédé. Par exemple, des grandes portions d'un systeme ou même l'ensemble du système, peuvent être inaccessibles<B>à</B> d'autres agents pendant le blocage, provoquant des arrêts substantiels.
Même sans essayer de rétrécir portée du blocage, la mise en oeuvre d'un blocage de bus matériel dans des grands systèmes est complexe. La complexité provient du fait de devoir propager l'indication de blocage dans le système, probablement sur un grand nombre de bus ou autres interconnexions, tout en gérant des tentatives de blocage simultanées conflictuelles, de manière assurer l'avancement et l'intégrité des données. exemple, les systèmes informatiques actuels peuvent être mis en oeuvre en utilisant plusieurs bus, fonctionnant tous en parallèle. Dans un tel système, deux tentatives de blocage ou davantage peuvent se produire simultanément et un certain type de mécanisme d'arbitrage est requis pour déterminer quel agent actif fait l'acquisition du blocage de bus. Dans le cas contraire, une situation d'impasse peut se produire et le traitement du système peut être arrêté.
solution<B>à</B> ce problème consiste<B>à</B> mettre en oeuvre les circuits du système informatique de façon qu'un blocage de bus de tout le système soit disponible quelle que soit la taille du système informatique. Toutefois, cette solution est peu pratique car un processus s'exécutant sur un processeur du système informatique peut provoquer un arrêt de tout le système pendant le temps où le blocage de bus s'effectue.
Une autre solution au problème de performances de conception ci-dessus consiste<B>à</B> administrer l'exclusivité en utilisant des sémaphores pouvant être mis en antémémoire. Toutefois, ce choix n'est pas directement disponible dans cas d'un système informatique dont il est requis avoir une compatibilité ascendante avec une architecture d'héritage rendant la caractéristique de blocage de disponible d'une manière visible au logiciel.
Résumé Un module d'émulation logicielle fournit les fonctions d'un blocage de matériel sans les inconvénients associés du blocage bus matériel. Des séquences de code qui déclenchent normalement un signal de blocage de bus sont utilisees pour provoquer un défaut. Un gestionnaire de défaut fait l'acquisition d'un sémaphore pouvant être mis en antémémoire qui est réservé<B>à</B> des fins d'émulation de blocage de bus. Le gestionnaire de défaut fait également l'acquisition d'un sémaphore qui est utilisé pour assurer un accès exclusif <B>à</B> des tables de pages natives ou des mécanismes de protection d'espace d'adresse équivalents. Le modèle d'émulation logicielle provoque alors l'invalidation des entrées de table de page appropriees, purge les pages de tampon de consultation de traduction des accès de blocage et positionne un bit de mode qui fait échouer tout comportement de tentative de défaut au blocage. Le mode d'émulation insère ensuite localement toutes les entrées de traduction/protection necessaires, exécute la séquence de blocage, puis annule bit de mode. Enfin, le module d'émulation provoque la libération des sémaphores et le cours normal de<B>1</B> exécution reprend.
En utilisant le module d'émulation logicielle, la portion d'espace mémoire qui est bloquée peut être réduite, en utilisant la pagination ou un mécanisme similaire et les autres agents du système ne sont affectés que si les agents tentent d'accéder<B>à</B> la portion bloquée de l'espace de mémoire pendant un intervalle durant lequel le signal de blocage de est positionné.
Ainsi, l'invention concerne un procédé d'émulation d'un blocage de bus matériel dans un système informatique, comprenant<B>:</B> l'acquisition d'un sémaphore de blocage de bus réservé pour l'émulation de blocage de bus<B>;</B> l'acquisition d'un sémaphore de table de pages<B>;</B> l'invalidation des entrées de table pages appropriées<B>;</B> l'exécution d'une instruction<B>;</B> et la libération des sémaphores de blocage de bus et de table de pages.
Ce procédé est avantageusement complété par les différentes caractéristiques suivantes<B>:</B> il comprend en outre la purge des tampons de consultation de traduction mémorisant les entrées de table de pages appropriées<B>;</B> il comprend en outre le positionnement d'un bit de mode qui fait échouer un comportement de tentative défaut au blocage<B>;</B> la libération du bit de mode après réexécution de l'instruction<B>;</B> et l'insertion locale d'entrées de traduction/protection <B>;</B> il comprend en outre un bit de mode faisant la distinction entre le blocage de bus matériel et l'émulation de blocage de bus matériel<B>;</B> le système informatique comporte des architectures d'ordinateurs multiples, dans lequel un dispositif demandant un blocage de bus est un parmi une unité centrale de traitement et un dispositif d'entrée/sortie et dans lequel l'instruction<B>à</B> exécuter est une instruction parmi une instruction qui a demandé le blocage de bus et un sous-programme clone sans la sémantique de blocage de bus.
L'invention concerne également un procédé <B>d</B> émulation d'un blocage de bus matériel dans un système informatique, comprenant<B>:</B> la réception d'une requête de blocage de bus matériel provenant d'un dispositif du système informatique<B>;</B> la génération d'un défaut en réponse<B>à</B> la requête de blocage de bus matériel<B>;</B> l'empêchement du blocage de bus matériel<B>;</B> et le traitement du défaut dans un gestionnaire défaut.
Avantageusement, ce procédé comprend en outre<B>:</B> le positionnement d'un premier sémaphore pour émulation de blocage de bus<B>;</B> le positionnement d'un second sémaphore pour limiter l'accès de pages<B>;</B> et après l'étape de traitement, la libération du premier et du second sémaphores.
L'invention concerne également un dispositif 'émulation d'un blocage de bus matériel dans un système informatique, comprenant<B>:</B> un gestionnaire de défaut qui, en réponse<B>à</B> un dispositif demandant un blocage de bus matériel fait l'acquisition d'un sémaphore de blocage de bus d'un sémaphore de table de pages<B>;</B> et un module d'émulation couplé au gestionnaire défaut qui invalide les entrées dans une table de pages, dans lequel le gestionnaire de défaut positionne annule un bit de mode pour empêcher le blocage de bus matériel et libère les sémaphores après exécution fune instruction par le dispositif. De préférence, le sémaphore de blocage de et le sémaphore de table de pages peuvent être mis antémémoire.
Avantageusement, l'instruction est une instruction parmi une instruction d'origine ayant provoqué le défaut de bus et une instruction clone ou séquence instructions clones.
Description des dessins description détaillée se réfère aux dessins suivants, dans lesquels des numéros analogues font référence<B>à</B> des objets analogues, et dans lesquels<B>:</B> la figure<B>1</B> est un schéma synoptique d'une architecture informatique qui utilise une émulation logicielle comme alternative au blocage de bus matériel<B>;</B> figure 2 est un schéma synoptique du gestionnaire de défaut utilisé avec l'architecture informatique de la figure<B>1 ;</B> figure<B>3</B> illustre un dispositif logique utilisé avec le gestionnaire de défaut de la figure et figures 4<B>à 6</B> sont des organigrammes illustrant les processus d'émulation logicielle. Description détaillée Une alternative au mécanisme de blocage de matériel donne un accès exclusif<B>à</B> un élément de données dans une mémoire d'un système informatique, dispositif situé dans le système informatique ou un ensemble constitué de l'élément et du dispositif. Un module d'émulation logicielle fournit la fonctionnalité d'un accès exclusif<B>à</B> ces ressources de système informatique partagées, sans les inconvénients inhérents aux systèmes informatiques actuels. Le module d'émulation logicielle fait en sorte que les signaux pouvant provoquer un blocage de bus provoquent un défaut en remplacement. Un gestionnaire de défaut provoque ensuite l'exécution d'une série d'étapes fournissant un accès exclusif un élément désiré.
La figure<B>1</B> montre un système informatique<B>10</B> qui utilise une émulation logicielle d'un blocage de bus matériel. Un premier bus 20 connecte des premiers processeurs 22. Un second bus<B>30,</B> fonctionnant en parallèle avec le premier bus 20, connecte un second processeur<B>32.</B> Les premiers processeurs 22 peuvent être d'une première architecture informatique. C'est-à-dire que les premiers processeurs 22 peuvent fonctionner conformément<B>à</B> un jeu d'instructions de la première architecture informatique. Le second processeur<B>32</B> peut être d'une seconde architecture, telle que, par exemple, une architecture d'héritage. Comme alternative, le second processeur<B>32</B> peut être de la même architecture que les premiers processeurs 22. De plus, des seconds processeurs multiples<B>32</B> peuvent être connectés au second bus<B>30.</B> Enfin, le premier bus 20 et le second bus <B>30</B> peuvent être constitués de bus multiples. Par exemple, le premier bus 20 peut être constitué d'une portion d'adresse, d'une portion de données et d'une portion de contrôle. En outre, il peut<B>y</B> avoir des bus supplémentaires similaires<B>à</B> ceux qui sont représentés ou une autre hiérarchie ou agencement quelconque.
Un jeu de circuits d'entrée/sortie (E/S) 40 est couplée au premier bus 20 et au second bus<B>30.</B> Le jeu de circuits d'E/S 40 exécute un grand nombre de fonctions, telles que la réception d'interruptions générées par des dispositifs d'E/S (non représentés) et la répartition de celles-ci entre les premiers processeurs 22 et le(les) second(s) processeur(s) <B>32.</B> Le jeu de circuits d'E/S 40 peut également contrôler l'accès<B>à</B> la mémoire principale<B>55</B> et d'autres fonctions architecturales du système d'ordinateur. La mémoire principale<B>55</B> peut comporter un ou plusieurs sémaphores qui sont utilisés conjointement avec l'émulation logicielle du blocage de bus matériel. Les sémaphores peuvent être mis en antémémoire.
Un gestionnaire de défaut<B>50</B> peut être un module logiciel agissant sur un CPU. Le gestionnaire de défaut est représenté plus en détail sur la figure 2 et peut comporter un module d'émulation<B>60</B> assurant l'émulation logicielle comme alternative<B>à</B> un blocage de bus materiel.
La figure<B>3</B> illustre un dispositif logique<B>57</B> qui reçoit un bit de mode (ou un bit d'activation de défaut blocage)<B>59</B> et une indication de sémantique de blocage (ou requête d'un blocage de bus)<B>61.</B> Le bit de mode<B>59</B> est alimenté par un registre de configuration et l'indication de sémantique de blocage<B>61</B> est alimentée par une unité d'exécution. Le dispositif logique<B>57</B> délivre en sortie un défaut de blocage<B>63</B> vers une unité d'exception.
En fonctionnement, le gestionnaire de défaut <B>50</B> peut faire l'acquisition en premier d'un sémaphore pouvant être mis en antémémoire ou blocage de bus<B>56,</B> qui est réservé<B>à</B> des fins d'émulation de blocage de bus. Le sémaphore de blocage de bus<B>56</B> peut trouver dans une antémémoire ou dans la mémoire principale<B>55.</B> C'est-à-dire que le sémaphore de blocage de<B>56</B> peut se trouver dans un emplacement de mémoire défini qui est réservé ou écarté par microprogramme, par exemple, au moment de l'amorçage, de façon que le semaphore de blocage de bus<B>56</B> soit invisible pour le système d'exploitation du système informatique. Seul modèle d'émulation<B>60</B> a alors accès au sémaphore blocage de bus<B>56.</B>
Le gestionnaire de défaut<B>50</B> peut egalement acquérir un second sémaphore ou sémaphore table de pages<B>58</B> ou un mécanisme de protection d'espace d'adresse équivalent, qui est utilisé pour assurer un accès exclusif aux tables de pages natives. C'est-à-dire que le système informatique<B>10</B> peut comporter un mécanisme de traduction d'adresses et de protection qui est mis en oeuvre par une table de pages dans la mémoire principale<B>55.</B> La table de pages est utilisée pour effectuer une référence croisée des adresses virtuelles en adresses physiques et pour protéger les pages de mémoire de divers types et niveaux de privilège d'accès. La table de page est protégée par le sémaphore de table de page<B>58.</B> En conséquence, avant qu'un processeur puisse modifier la table de page, le processeur effectue d'abord l'acquisition du sémaphore de table de page<B>58.</B>
En utilisant un logiciel d'émulation<B>62</B> dans le mode d'émulation<B>60,</B> le gestionnaire de défaut<B>50</B> peut invalider des entrées de table de pages appropriées. Ceci empêche les autres processeurs d'examiner cette région bloquée de la mémoire principale <B>55</B> dans la table de pages, puis d'accéder<B>à</B> la région bloquée. La région bloquée de la mémoire principale<B>55</B> est essentiellement cachée des autres processeurs ou agents dans le système informatique<B>10.</B> Le logiciel d'émulation<B>62</B> du module d'émulation<B>60</B> est alors utilisé pour purger toutes les entrées de tables de pages dans les tampons de consultation de traduction (TLB) (non représentés sur la figure<B>1)</B> qui correspondent aux entrées de tables de pages invalidées.
Le gestionnaire de défaut<B>50</B> positionne ensuite un bit mode qui empêche tout comportement de tentative de défaut au blocage. Puis, le gestionnaire de défaut<B>50</B> insère localement toutes les entrées de traduction ou de protection nécessaires. C'est-à-dire que pour accéder<B>à</B> la région de mémoire bloquée, des entrées de protection de traduction (traduction entre les adresses virtuelles et physiques) sont écrites dans la page de table ou un TLB ou les deux. La séquence d'instruction ayant provoqué le blocage de bus est ensuite exécutée, soit en exécutant de nouveau la même séquence d'instructions celle qui a provoqué le défaut au blocage du bus, soit en exécutant un sous- programme clone effectuant la même opération, mais sans la sémantique bloquée attachée. Lorsque la séquence d'instructions de blocage bus a été exécutée, le gestionnaire de défaut<B>50</B> annule le bit de mode et libère les premier et second sémaphores. Le traitement dans le système informatique<B>10</B> revient alors au déroulement normal d'exécution.
En utilisant le gestionnaire de défaut<B>50</B> et le module d'émulation<B>60,</B> portée du mécanisme de blocage de bus peut être réduite<B>à</B> un petit espace d'adresses, en utilisant la pagination ou un mécanisme similaire, par exemple. autre processeur ou agent n'est affecté que si ce processeur tente d'accéder au même espace d'adresse pendant l'intervalle durant lequel le signal de blocage de est positionné. C'est-à-dire que lorsqu'un défaut est pris sur une tentative de blocage de bus, les données concernant le défaut sont sauvegardées et peuvent être observées par le gestionnaire de défaut<B>50.</B> Les données sauvegardées comportent l'adresse ou les adresses auxquelles il a été tenté d'accéder. Ainsi, gestionnaire de défaut<B>50</B> comporte l'adresse<B>ou</B> les adresses disponibles auxquelles il a été tenté d'accéder pendant une opération de blocage bus. Ceci permet au mode d'émulation<B>60</B> de supprimer l'accès seulement<B>à</B> une page ou deux de la mémoire, plutot que de supprimer l'accès<B>à</B> toutes les ressources système informatique ou<B>à</B> une plus grande région de la mémoire principale<B>55.</B>
L'émulation logicielle d'un blocage de bus matériel a été décrite<B>.</B> dessus en relation avec l'accès<B>à</B> la mémoire. Toutefois, le même mécanisme d'émulation logicielle peut etre utilisé dans le cas d'un accès simultané d'un dispositif d'E/S par plus d'un processeur du système informatique<B>10.</B> Dans ce cas, le dispositif d'E/S est vu par les processeurs simplement comme une autre entité de mémoire ou région de mémoire mappée.
Dans un autre cas, un processeur et un dispositif d'E/S peuvent tenter d'accéder simultanément la même région de mémoire. Le dispositif d'E/S peut comporter un TLB ou un mécanisme du type pagination, similaire<B>à</B> celui qui est associé au processeur. Dans ce cas, le fonctionnement du module d'émulation<B>60</B> et du gestionnaire de défaut<B>50</B> serait le même que dans le cas dans lequel des processeurs multiples tentent d'accéder la même région de mémoire. Si le dispositif d'E/S ne comporte pas de TLB ou de mécanisme du type pagination, alors le gestionnaire de défaut<B>50</B> peut désactiver temporairement un dispositif<B>ou</B> un ensemble de dispositifs d'E/S pour empêcher le dispositif dIE/S d'accéder<B>à</B> la région de mémoire.
Le gestionnaire de défaut<B>50</B> le module d'émulation<B>60</B> peuvent être utilisés avec des processeurs d'architectures multiples tels que les processeurs 22 et<B>32.</B> Toutefois, un<B>ou</B> plusieurs processeurs peuvent ne pas fonctionner dans un aménagement paginé ou sinon protégé. C'est-à-dire qu'un ou plusieurs des processeurs peuvent fonctionner dans un mode réel ou peuvent accéder<B>à</B> la mémoire principale<B>55</B> dans le mode réel. Avec cette alternative, une tentative de blocage en mode réel peut provoquer 'envoi d'une interruption entre processeurs vers les autres processeurs. Les autres processeurs retournent alors un signal d'acquittement d'interruption avant de positionner le blocage en mode réel. Les autres processeurs entrent dans un état d'attente et sont réveillés par une autre interruption lorsque l'opération de blocage est terminée. Toutefois, cette situation ne doit se produire que rarement.
Le système informatique<B>10</B> comporte un code de gestion de table de pages de systèmes d'exploitation (OIS) qui est restreint pour l'acquisition d'un blocage de bus lui-même. Sinon, un premier processeur ou agent peut acquérir le sémaphore de blocage de bus<B>56.</B> Puis, un second processeur opérant sur le code de gestion de table de pages d'O/S peut acquérir le sémaphore de table de pages<B>58,</B> puis tenter d'acquérir le sémaphore bloqué <B>56</B> en utilisant la séquence d'émulation. Dans ce cas, les premier et second processeurs sont en impasse car aucun ne peut acquérir<B>à</B> la fois le sémaphore de blocage de bus<B>56</B> et le sémaphore de table de pages<B>58.</B>
Comme indiqué ci-dessus, l'émulation logicielle du mécanisme de blocage de bus matériel peut être utilisée avec des architectures d'ordinateurs multiples. Un exemple est l'utilisation d'une émulation logicielle avec une architecture IA-32 et une architecture IA 64. Dans ce cas, l'architecture IA-32 peut être mise en oeuvre en utilisant un microcode. Une caractéristique de l'architecture IA-32 <B>à</B> microcode est le piégeage pas<B>à</B> pas. Un piège est une exception dont il est rendu compte immédiatement après l'exécution d'une instruction de piégeage. Une exception est générée par un processeur lorsque le processeur détecte des erreurs pendant l'exécution d'un programme d'application ou du code de l'OIS. Les pièges permettent de poursuivre l'exécution du programme d'application sans perte de continuité du programme. Une adresse de retour pour un gestionnaire de piège pointe sur l'instruction destinée <B>à</B> être exécutée après l'instruction de piégeage. Le piégeage pas<B>à</B> pas permet<B>à</B> la séquence d'instruction de blocage d'être mise en oeuvre en positionnant un indicateur pour qu'un gestionnaire de piège bloque le gestionnaire de défaut<B>50,</B> annulant le mode pas<B>à</B> pas et réexécutant la macroinstruction ayant provoqué un défaut.
Comme indiqué ci-dessus, le mécanisme émulation logicielle peut positionner un bit mode qui empêche le comportement de tentative de défaut au blocage. Dans un autre mode de réalisation, le de mode peut être un bit de mode faisant la distinction entre un blocage de bus matériel et une émulation logicielle de blocage de bus matériel. Dans ce mode de réalisation, un signal de blocage de bus peut etre positionné par un processeur, mais serait ignoré par le système informatique, par exemple par une déconnexion physique. Ainsi, le processeur, hormis le système informatique, peut supporter<B>à</B> la fois un blocage de bus matériel et une émulation logicielle du blocage bus matériel. Ceci permet d'utiliser le processeur dans un système informatique qui supporte seulement un blocage bus matériel ainsi que dans un système informatique qui supporte une émulation logicielle de blocage bus matériel.
Le fonctionnement du mécanisme d'émulation logicielle va maintenant être décrit en référence aux figures 4<B>à 6,</B> qui sont des organigrammes des processus exécutés pour mettre en oeuvre l'émulation logicielle d'un blocage de bus matériel. Sur la figure<B>.</B> le processus commence au bloc<B>100</B> avec un processeur tentant une opération de blocage de bus, par exemple, pour accéder<B>à</B> une région de mémoire désirée. Le gestionnaire de défaut<B>50</B> fait l'acquisition du sémaphore de blocage de bus<B>56</B> et fournit le sémaphore blocage de bus au processeur, tel que<B>11</B> des processeurs 22, ayant tenté le blocage de bus, bloc<B>110.</B> sémaphore de blocage de bus<B>56</B> peut être en antémémoire dans une antémémoire associée au processeur Le gestionnaire de défaut<B>50</B> fait ensuite l'acquisition du sémaphore de table de pages<B>58,</B> qui peut également être mis en antémémoire, bloc 120. Le gestionnaire de défaut<B>50</B> invalide ensuite toutes les entrées table de pages appropriées, bloc<B>130,</B> de façon<B>à</B> empêcher l'accès<B>à</B> la région de mémoire désirée. Le gestionnaire de défaut<B>50</B> purge également toutes les pages de associées<B>à</B> la région de mémoire désirée, bloc 140.
Pour exécuter le blocage de bus, le gestionnaire de défaut<B>50</B> positionne un bit de mode qui fait échouer une tentative de défaut sur blocage du processeur, bloc<B>150</B> et insère localement toutes les entrées traduct ion/protect ion nécessaires, bloc<B>160.</B> Puis, le pas unique ou le point de rupture est positionnée, bloc<B>165</B> et le processus passe<B>à</B> l'instruction de blocage d'origine, bloc<B>170.</B> Le processus passe ensuite au point d'interruption, bloc <B>175.</B>
figure<B>5</B> illustre le processus pour le sous-programme de gestion de point de rupture pas<B>à</B> pas. Le processus commence au bloc<B>177,</B> puis (bloc<B>180</B> le gestionnaire de défaut<B>50</B> annule le bit de mode positionné dans le bloc<B>150</B> (voir la figure 4). Enfin, le processeur annule le piège pas<B>à</B> pas (bloc<B>185</B> et libère le sémaphore de blocage de bus<B>56</B> et le sémaphore de table page<B>58,</B> le traitement dans le système informatique revient<B>à</B> l'exécution normale, bloc et le processus se termine, bloc 210.
figure<B>6</B> illustre un autre processus d'émulation logicielle de blocage de bus matériel dans lequel une instruction clone est exécutée. Sur la figure <B>6,</B> les blocs 220<B>à 260</B> du processus correspondent aux blocs<B>100 à</B> 140 du processus de la figure 4. Dans le bloc<B>270,</B> les entrées de traduction locale sont insérées. Dans le bloc<B>280,</B> la séquence d'instructions clones est exécutée, sans sémantique de blocage. Les blocs restants<B>290 à 310,</B> correspondent aux blocs de processus<B>190 à</B> 210 de la figure 4.
Les termes descriptions ici utilisés sont présentés<B>à</B> titre d'illustration seulement et ne sont pas destinés<B>à</B> constituer des limitations. Les hommes de l'art comprendront grand nombre de variantes sont possibles<B>à</B> l'intérieur de l'esprit et de la portée de l'invention telle que définie dans les revendications suivantes et leurs équivalents, dans lesquelles tous les termes doivent être compris dans leur sens le plus large possible, sauf indication contraire.

Claims (1)

  1. <B><U>REVENDICATIONS</U></B> <B>.</B> Procédé d'émulation d'un blocage de bus matériel dans un système informatique, comprenant: l'acquisition<B>(Il 10)</B> d'un sémaphore de blocage de bus<B>(56)</B> reservé pour l'émulation de blocage de bus<B>;</B> l'acquisition (120) d'un sémaphore de table de pages<B>(58)</B> l'invalidation<B>(130)</B> des entrées de table de pages appropriées l'exécution<B>(170)</B> d'une instruction<B>;</B> et libération<B>(190)</B> des sémaphores de blocage de bus et de table de pages. 2. Procédé selon la revendication<B>1,</B> comprenant en outre la purge (140) des tampons de consultation de traduction mémorisant les entrées de table de pages appropriées. <B>3.</B> Procédé selon la revendication<B>1,</B> comprenant en outre le positionnement<B>(150)</B> d'un bit de mode qui fait échouer un comportement de tentative de défaut au blocage<B>;</B> la libération<B>(180)</B> du bit de mode après réexécution de l'instruction et l'insertion locale<B>(160)</B> d'entrées de traduction/protection. 4. Procédé selon la revendication<B>1,</B> comprenant en outre un bit de mode<B>(59)</B> faisant la distinction entre le blocage de bus matériel et l'émulation de blocage de bus matériel. <B>5.</B> Procédé selon la revendication<B>1,</B> caractérisé en ce le système informatique comporte des architectures d'ordinateurs multiples, dans lequel un dispositif demandant un blocage de bus est un parmi unité centrale de traitement et un dispositif d'entréelsortie et dans lequel l'instruction<B>à</B> exécuter est une instruction parmi une instruction qui a demandé le blocage de bus et un sous-programme clone sans la sémantique de blocage de bus. <B>6.</B> Procédé d'émulation d'un blocage de bus matériel dans un système informatique, comprenant: la réception d'une requête de blocage de bus matériel<B>(61)</B> provenant d'un dispositif du système informatique<B>;</B> la génération d'un défaut<B>(63)</B> en réponse<B>à</B> la requête de blocage de bus matériel<B>;</B> l'empêchement du blocage de bus matériel le traitement du défaut dans un gestionnaire de défaut<B>(50)</B> le positionnement d'un premier sémaphore<B>(56)</B> pour émulation de blocage de bus<B>;</B> le positionnement d'un second sémaphore<B>(58)</B> pour limiter l'accès de pages<B>;</B> et après l'étape de traitement, la libération<B>(190)</B> du premier et du second sémaphores. <B>7.</B> Dispositif d'émulation d'un blocage de bus matériel dans un système informatique, comprenant: un gestionnaire de défaut<B>(50)</B> qui, en réponse<B>à</B> un dispositif demandant un blocage de bus matériel, fait l'acquisition d'un sémaphore de blocage bus<B>(56)</B> et d'un sémaphore de table de pages<B>(58) ;</B> et module d'émulation<B>(60)</B> couplé au gestionnaire de défaut<B>(50)</B> qui invalide les entrées dans une table de pages, dans lequel le gestionnaire de défaut positionne et annule un bit de mode<B>(59)</B> pour empêcher le blocage de bus matériel et libère<B>(190)</B> les sémaphores après exécution d'une instruction par le dispositif. Dispositif selon la revendication<B>7,</B> caractérisé en que le sémaphore de blocage de bus<B>(56)</B> et le sémaphore de table de pages<B>(58)</B> peuvent être mis en antémémoire. <B>9.</B> Dispositif selon la revendication<B>7,</B> caractérisé en ce que l'instruction est une instruction parmi une instruction d'origine ayant provoqué le défaut de bus et une instruction clone ou séquence d'instructions clones.
FR0012523A 2000-02-18 2000-10-02 Emulation logicielle transparente comme alternative au blocage de bus materiel Expired - Fee Related FR2805371B1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/504,023 US6587964B1 (en) 2000-02-18 2000-02-18 Transparent software emulation as an alternative to hardware bus lock

Publications (2)

Publication Number Publication Date
FR2805371A1 true FR2805371A1 (fr) 2001-08-24
FR2805371B1 FR2805371B1 (fr) 2006-11-17

Family

ID=24004548

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0012523A Expired - Fee Related FR2805371B1 (fr) 2000-02-18 2000-10-02 Emulation logicielle transparente comme alternative au blocage de bus materiel

Country Status (2)

Country Link
US (3) US6587964B1 (fr)
FR (1) FR2805371B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1914627A3 (fr) * 2003-05-12 2008-06-25 International Business Machines Corporation Invalidation de stockage, effacement des entrées d'une mémoire tampon

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6587964B1 (en) * 2000-02-18 2003-07-01 Hewlett-Packard Development Company, L.P. Transparent software emulation as an alternative to hardware bus lock
US7089339B2 (en) * 2001-03-16 2006-08-08 National Semiconductor Corporation Sharing of functions between an embedded controller and a host processor
FI20020210A (fi) * 2002-02-04 2003-08-05 Nokia Corp Moniprosessoriympäristöön tarkoitettu laitteistopohjainen opastin
US7398321B2 (en) * 2002-05-14 2008-07-08 The Research Foundation Of Suny Segment protection scheme for a network
US8108843B2 (en) 2002-09-17 2012-01-31 International Business Machines Corporation Hybrid mechanism for more efficient emulation and method therefor
US9043194B2 (en) * 2002-09-17 2015-05-26 International Business Machines Corporation Method and system for efficient emulation of multiprocessor memory consistency
US7953588B2 (en) * 2002-09-17 2011-05-31 International Business Machines Corporation Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host
US9454490B2 (en) 2003-05-12 2016-09-27 International Business Machines Corporation Invalidating a range of two or more translation table entries and instruction therefore
FR2881239B1 (fr) * 2005-01-24 2007-03-23 Meiosys Soc Par Actions Simpli Procede de gestion d'acces a des ressources partagees dans un environnement multi-processeurs
US8171230B2 (en) * 2007-12-03 2012-05-01 International Business Machines Corporation PCI express address translation services invalidation synchronization with TCE invalidation
US8549630B2 (en) * 2010-03-05 2013-10-01 The Regents Of The University Of California Trojan-resistant bus architecture and methods
JP5791529B2 (ja) * 2012-01-19 2015-10-07 ルネサスエレクトロニクス株式会社 メモリ制御装置及び制御方法並びに情報処理装置
US9182984B2 (en) 2012-06-15 2015-11-10 International Business Machines Corporation Local clearing control
US9524263B2 (en) 2012-06-29 2016-12-20 Intel Corporation Method and apparatus for bus lock assistance
US10402218B2 (en) * 2016-08-30 2019-09-03 Intel Corporation Detecting bus locking conditions and avoiding bus locks
US11301397B2 (en) * 2018-04-24 2022-04-12 Technion Research & Development Foundation Limited Multiple processor computing device with configurable electrical connectivity to peripherals

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0459233A2 (fr) * 1990-05-29 1991-12-04 National Semiconductor Corporation Verrouillage sélectif de positions de mémoire cachée intégrée sur la puce d'un microprocesseur
US5144551A (en) * 1989-05-19 1992-09-01 Compaq Computer Corporation Computer memory management method utilizing segmentation and protection techniques
EP0898227A1 (fr) * 1997-08-15 1999-02-24 Compaq Computer Corporation Sémaphore dans I/O espace
US5894562A (en) * 1996-10-28 1999-04-13 Motorola, Inc. Method and apparatus for controlling bus arbitration in a data processing system

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5050072A (en) * 1988-06-17 1991-09-17 Modular Computer Systems, Inc. Semaphore memory to reduce common bus contention to global memory with localized semaphores in a multiprocessor system
EP0535822B1 (fr) * 1991-09-27 1997-11-26 Sun Microsystems, Inc. Méthodes et appareil pour verrouillage d'arbitrage sur un bus à distance
JP3380827B2 (ja) * 1995-02-09 2003-02-24 三菱電機株式会社 エミュレータ装置
US6529933B1 (en) * 1995-06-07 2003-03-04 International Business Machines Corporation Method and apparatus for locking and unlocking a semaphore
US5850529A (en) * 1995-08-11 1998-12-15 Kabushiki Kaisha Toshiba Method and apparatus for detecting a resource lock on a PCI bus
US5787270A (en) * 1995-11-15 1998-07-28 Advanced Micro Devices Method and apparatus for intrusive testing of the performance-enhancing features of an advanced microprocessor
US5761659A (en) * 1996-02-29 1998-06-02 Sun Microsystems, Inc. Method, product, and structure for flexible range locking of read and write requests using shared and exclusive locks, flags, sub-locks, and counters
US5860017A (en) 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
US5859999A (en) 1996-10-03 1999-01-12 Idea Corporation System for restoring predicate registers via a mask having at least a single bit corresponding to a plurality of registers
US6076126A (en) * 1997-06-30 2000-06-13 Emc Corporation Software locking mechanism for locking shared resources in a data processing system
US5987550A (en) * 1997-06-30 1999-11-16 Emc Corporation Lock mechanism for shared resources in a data processing system
US6018807A (en) * 1997-09-25 2000-01-25 Micron Electronics, Inc. Simulation "bus contention" detection
US6295598B1 (en) * 1998-06-30 2001-09-25 Src Computers, Inc. Split directory-based cache coherency technique for a multi-processor computer system
US6430657B1 (en) * 1998-10-12 2002-08-06 Institute For The Development Of Emerging Architecture L.L.C. Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
KR20000045794A (ko) * 1998-12-30 2000-07-25 서평원 스카시 버스 장애시의 재접속 방법
US6587964B1 (en) * 2000-02-18 2003-07-01 Hewlett-Packard Development Company, L.P. Transparent software emulation as an alternative to hardware bus lock
JP2003131902A (ja) * 2001-10-24 2003-05-09 Toshiba Corp ソフトウェアデバッガ、システムレベルデバッガ、デバッグ方法、及びデバッグプログラム
FI20020210A (fi) * 2002-02-04 2003-08-05 Nokia Corp Moniprosessoriympäristöön tarkoitettu laitteistopohjainen opastin
US7856346B2 (en) * 2002-05-10 2010-12-21 Arm Limited Emulating multiple bus used within a data processing system
TW579467B (en) * 2002-07-24 2004-03-11 Via Tech Inc Method for blocking request to bus
EP1797512B1 (fr) * 2004-10-05 2010-09-08 Mentor Graphics Corporation Environnement d'emulation materielle acceleree pour systemes fondes sur un processeur

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5144551A (en) * 1989-05-19 1992-09-01 Compaq Computer Corporation Computer memory management method utilizing segmentation and protection techniques
EP0459233A2 (fr) * 1990-05-29 1991-12-04 National Semiconductor Corporation Verrouillage sélectif de positions de mémoire cachée intégrée sur la puce d'un microprocesseur
US5894562A (en) * 1996-10-28 1999-04-13 Motorola, Inc. Method and apparatus for controlling bus arbitration in a data processing system
EP0898227A1 (fr) * 1997-08-15 1999-02-24 Compaq Computer Corporation Sémaphore dans I/O espace

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1914627A3 (fr) * 2003-05-12 2008-06-25 International Business Machines Corporation Invalidation de stockage, effacement des entrées d'une mémoire tampon

Also Published As

Publication number Publication date
FR2805371B1 (fr) 2006-11-17
US6832335B2 (en) 2004-12-14
US20030196142A1 (en) 2003-10-16
US20050060614A1 (en) 2005-03-17
US6587964B1 (en) 2003-07-01

Similar Documents

Publication Publication Date Title
FR2805371A1 (fr) Emulation logicielle transparente comme alternative au blocage de bus materiel
JP5615384B2 (ja) ハードウエアトランザクショナルメモリにおける自動サスペンド及び再開
Bobba et al. Tokentm: Efficient execution of large transactions with hardware transactional memory
US8132158B2 (en) Mechanism for software transactional memory commit/abort in unmanaged runtime environment
US9195600B2 (en) Mechanisms to accelerate transactions using buffered stores
JP5105887B2 (ja) 非同期式パイプラインのためのデータ・キャッシュ・ミスをアウト・オブ・オーダ方式で処理するための装置及び方法
US7870336B2 (en) Operating system protection against side-channel attacks on secrecy
TWI236620B (en) On-die mechanism for high-reliability processor
US7730286B2 (en) Software assisted nested hardware transactions
US20200034297A1 (en) Using cache coherent fpgas to track dirty cache lines
US8719849B1 (en) Decoupled application program-operating system computing architecture
US20200034200A1 (en) Using cache coherent fpgas to accelerate remote memory write-back
KR20110044884A (ko) 가상화가능한 진보된 동기화 기능
US8943278B2 (en) Protecting large regions without operating-system support
CN112464221A (zh) 内存访问行为的监控方法及系统
TWI801603B (zh) 處理獨佔式載入指令的資料處理設備、方法及電腦程式
US20090007124A1 (en) Method and mechanism for memory access synchronization
JP6734760B2 (ja) プリフェッチ・インセンシティブのトランザクション・メモリ
CN112463287A (zh) 基于插桩的访问请求处理方法及系统
US20100122038A1 (en) Methods and apparatuses for improving speculation success in processors
US20200097292A1 (en) Managing low-level instructions and core interactions in multi-core processors
JPH04181322A (ja) リンケージデータ管理方法
Harris et al. Hardware-Supported Transactional Memory

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20080630