FR2833372A1 - Ressources visualisees dans un serveur partitionnable - Google Patents

Ressources visualisees dans un serveur partitionnable Download PDF

Info

Publication number
FR2833372A1
FR2833372A1 FR0215340A FR0215340A FR2833372A1 FR 2833372 A1 FR2833372 A1 FR 2833372A1 FR 0215340 A FR0215340 A FR 0215340A FR 0215340 A FR0215340 A FR 0215340A FR 2833372 A1 FR2833372 A1 FR 2833372A1
Authority
FR
France
Prior art keywords
memory
machine
physical
address
addresses
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
FR0215340A
Other languages
English (en)
Other versions
FR2833372B1 (fr
Inventor
Leith L Johnson
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 FR2833372A1 publication Critical patent/FR2833372A1/fr
Application granted granted Critical
Publication of FR2833372B1 publication Critical patent/FR2833372B1/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation

Landscapes

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

Abstract

Ce procédé pour créer un espace d'identifiant de ressources physiques dans une partition d'un système informatique partitionnable (300) incluant des emplacements de mémoire machine comportant une pluralité d'adresses de mémoire machine, consiste à réaliser un mappage entre une pluralité d'adresses de mémoire physique et au moins certaines adresses de mémoire machine, et prévoir pour un programme logiciel (324a) exécutant la partition, et l'interface pour accéder à certains des emplacements de mémoire machine en utilisant la pluralité d'adresses de mémoire physiques (210a).Application notamment à la gestion des ressources dans un système informatique à serveur partitionnable.

Description

par le procédé selon l'une des revendications 1 à 6.
La présente invention concerne la gestion de ressources dans un système informatique et plus part icul ièrement la vi sual i sat ion de ressources dans un
serveur partitionnable.
Des possesseurs et des opérateurs de systèmes informatiques cherchent en permanence à améliorer les rendements de fonctionnement d'un ordinateur et par conséquent de réduire le coût de délivrance de services de calcul. Par exemple des serveurs de différents types - tels que des serveurs de bases de données, des serveurs du réseau de la toile d'araignée mondiale dite Web, des serveurs de messagerie et des serveurs de fichiers - ont proliféré dans les entreprises ces dernières années. Une seule entreprise peut posséder ou sinon utiliser les services de nombres élevés de chacun de ces types de serveurs. Le coût d'achat (ou de location) et la maintenance de tels serveurs peuvent être élevés. C'est pourquoi il peut être avantageux de réduire le nombre de serveurs, qui doivent être utilisés par une entreprise sans
que ceci ne réduise la performance du système.
Un moyen de réduire le nombre de serveurs consiste à utiliser le procédé de la "consolidation de serveurs", selon lequel de multiples serveurs indépendants sont remplacés par un seul serveur, désigné ici comme étant un "serveur de consolidation". De façon typique un serveur de consolidation est un système informatique performant possédant des ressources de calaul importantes (comme par exemple de multiples processeurs et des quantités importantes de mémoire). Le serveur de consolidation peut être subdivisé logiquement en de multiples "partitions", dans chacune desquelles est affectée une partie des ressources du serveur. Chaque partition peut exéauter son propre système d' exploitation et ses propres applications logicielles, et sinon agissent de façon similaire à un
ordinateur physique indépendant.
Contrairement à un ensemble de serveurs indépendants, il est possible de régler de façon dynamique
les ressources disponibles pour chaque partition/applica-
tion. De nombreuses applications présentent une variation concernant la demande de charge de travail, qui dépend fréquemment de l' instant de la journce, du j our du mois, etc. Des périodes avec une demande de charge de travail élevée ne coïncide fréquemment pas. L' application de ressources disponibles à des charges de travail actuelle à demande élevée permet une utilisation améliorée des ressources, des exigences globales réduites en matière de
ressources et par conséquent un coût global réduit.
Différentes solutions doivent être développées pour affecter les ressources parmi des partitions dans un
serveur partitionnable. La description qui va suivre est
axée de façon spécifique sur l' affectation d'une mémoire à titre d'exemple. A cet effet, on va donner une brève vue d' ensemble du fonctionnement de sous-systèmes de mémoire
dans des ordinateur classiques.
En référence à la figure 1, le modèle de mémoire représentatif du type qui est associé de fa,con typique à un ordinateur classique (non représenté) est représenté sous la forme d'un schéma-bloc. Le modèle 100 inclut deux types d'espaces d'adresses: un espace d'adresse physique (ou "réel") 102 et une pluralité d'espaces d'adresses virtuelles 108a-c. D'une manière générale l'expression iespace d' adresses" se réfère à un ensemble d' adresses de mémoire ou à d'autres identifiants de ressources (qui peuvent être utilisés par un ordinateur pour accéder à des
emplacements de mémoire ou à d'autres ressources).
On va décrire tout d'abord l'espace d'adresses physiques 102. Un ordinateur inclut de fac,on typique de multiples blocs de mémoire physiques (matériel) 110a-d, qui peuvent avoir une taille variable. Chacun des blocs (qui peut par exemple correspondre à l'unité de mémoire physique telle qu'on module DIMM-Dual Inline emoy Module ou module
de mmoire double range) incluL une pluraliLd d'emplace-
menLs de mmoire, auguel l'uniLA cenLale CPU de l'ordinaLeur peuL accder en uLilisanL un ou plusieurs conLrleurG de mmoire (non repr6senL). Les blocs de mmoire physiques llOa-d sonL reprdenLs sur la figure 1 selon un agencemenE lindaire conLigu de mani@re indiguer gu'il exisLe un mappage biunivoque enLre les emplacemenLs de mmoire dans les blocs de mmoire physiques llOa-d eL une gamme d'adresses physiques 112, qui sonL numrotes squenLiellemenL en commenganL par z<ro et en se LerminanL par M-1, M ALanL le nombre global d'emplacemenLG de mmoire dans les blocG de mmoire physiques llOa-d. Par exemple, si le bloc de mmoire physique llOa comporLe 16 emplacemenLs de mmoire, les adresses (dans la game d'adresses 112) correspondanL ces emplacements de mmoire sont, de fagon typique, numrotes squentiellemenL de zro quinze. Les adresses correspondanL aux emplacemenLs de mmoire dans le bloc de mmoire physique llOb sonL, de fagon typique, num4rotes squentiellemenL en commenganL 1'adresse 16 (c'esL--dire jusLe aprds la derniAre adresse dans le bloc de mmoire physique llOa), eLc. I1 en rdsulte qu'il existe un mappage biunivoque enLre les emplacemenLs de mmoire dans les blocs de mmoire physigues llOa- d eL la gamme d'adresses 112, qui
est oomrote squenLiellement en commengant par zAro.
D'une mani@re gndrale, un espace d'adresse, qui est numrot squentiellemenL en commengant par z<ro est dsign ici co _e tanL un "espace s<quentiel l'adresse de base zro". Ce mappage d'emplacemenLs de mmoire physique avec des adresses 112 dans l'eGpace d'adresse physique 102 esL maintenu de fagon typique par un ou
plusieurs contrCleurs de mmoire (non reprdsenLAs).
Le modAle dy mmoire 100 incluL galemenL un mcanisme de conversion 104 reprdsenLA d'une mani@re générale dans le schéma-bloc de la figure 1. Le mécanisme de traduction 104 est agencé de façon typique en utilisant un ou plusieurs processeurs, des parties d'un système d'exploitation agissant sur ordinateur et un autre matériel et/ou logiciel comme cela est connu du spécialiste
ordinaire de la technique.
Le mécanisme de translation 104 sépare de façon logique des adresses 112 dans l'espace d'adresses physiques 102 en des unités logiques distinctes et contiguës désignées comme étant des pages, dont chacune contient de façon typique 1 à 4 k.octets de mémoire. Seize pages numérotées séquentiellement en commençant par la page zéro sont représentés sur la figure 1 à titre d'exemple. Par exemple les adresses physiques d' emplacements de mémoire à la page zéro s'étagent de 0 à 4095, et sur la page 1 s'étagent de 4096 à 8191, etc. L' application de programmes et d'autres processus logiciels s'appliquant à l'ordinateur n'accède pas directement à la mémoire en utilisant les adresses 112 dans l'espace d'adresses physiques 102. Au lieu de cela, une couche d' indirection est introduite par un mécanisme de conversion 104. De façon typique le mécanisme de conversion 104 affecte un "espace d'adresses virtuel" à chaque processus exécuté dans l'ordinateur. Trois espaces d'adres,ses virtuelles 108a-c, dont chacun correspond à un processus particulier mis en oeuvre sur ordinateur, sont
représentés sur la figure 3 à titre d'exemple.
De façon spécifique, lorsqu'un processus est crcé, il requiert de façon typique qu'on lui affecte une certaine quantité de mémoire. En réponse à une telle demande, le mécanisme de conversion 104 crée un espace
d'adresses virtuelles pour le processus moyennant l'affec-
tation d'une ou de plusieurs pages (éventuellement non successives) depuis l'espace d'adresses physiques 102 au processus. Par exemple, comme représenté sur la figure 1, un espace d'adresse réel 108a a été affecté aux pages 9, 3, 2 et 12. Le mécanisme de traduction 104 établit un mappage biunivoque entre des emplacements de mémoire dans l'espace d'adresse virtuelle 108a et une gamme contiguë d'adresses virtuelles 114a numérotées séquentiellement de zéro à No-1, No étant la quantité de mémoire allouée à l'espace d'adresses virtuelles 108a. Le mécanisme de traduction 104
maintient une table de conversion d'adresses virtuelles-
vers-physiques, qui met en correspondance les adresses virtuelles 114a située dans l'espace d'adresses virtuelles 108a avec des adresses physiques correspondances 112 dans l'espace d'adresses physiques 102. De façon similaire, l'espace d'adresses virtuelles 108b possède une gamme d'adresses virtuelles 114b, et un espace d'adresses virtuelles 108c possède une gamme d'adresses virtuelles 114c. Du point de vue du processus, auquel un espace d'adresses virtuelles 108a a été affecté, l'espace d'adresses virtuelles 108a apparaît sous la forme d'un seul bloc contigu de mémoire (quelquefois désigné sous l'expression imémoire virtuelle". Lorsque le processus essaie d'effectuer une lecture à partir d'un emplacement de mémoire ou d'écrire dans un emplacement de mémoire dans l'espace d'adresses virtuelles 108a, le mécanisme de translation 104 reçoit la demande et accède d'une manière transparente à l 'emplacement de mémoire physique approprié dans l'espace d'adresses physiques 102 en fonction du processus. L'utilisation du mécanisme de conversion 104 permet de concevoir chaque processus qui agit sur ordinateur pour qu'il travaille en liaison avec un espace d'adresse séquentiel à base zéro, indépendamment de adresses des emplacements de mémoire physiques actuels qui sont affectés au procédé. Ceci simplifie fortement et standardise la conception et l'exécution de processus dans
l'ordinateur, tout en fournissant d'autres avantages.
Des modèles de mémoire tels que le modèle de mémoire 100 représentés sur la figure 1 sont conçus de façon typique de manière à travailler avec des ordinateurs autonomes en faisant fonctionner un seul système d'exploi tation. Par exemple des systèmes classiques de fonctionnement, qui sont de façon typique responsable de la délivrance au moins d'une partie de la fonctionnalité du mécanisme de translation 104, sont conçus de façon typique en supposant que lespace d'adresses physiques 102 est un espace d'adresses séquentielles à base zéro. De façon typique cette hypothèse est valable pour des ordinateurs indépendants mettant en oeuvre un seul système d'exploitation. Mais, comme décrit précédemment, dans certaines circonstances, il est souhaitable de partitionner un ordinateur en une pluralité de partitions logiques, dont une ou plusieurs peuvent être affectées à un espace d'adresses qui n'est pas à base zéro et/ou n'est pas physiquement contigu. Des systèmes de fonctionnement classiques peuvent ne pas être à même de travailler dans de telles partitions sauf si des dispositions spéciales sont
prises pour leur propre fonctionnement.
Certaines tentatives ont été faites pour traiter ce problème. Par exemple dans la plupart dés systèmes de partitionnement existants, on utilise un certain type de partitionnement "logiciel" ou "virtuel". Dans un système partitionné virtuel, un système d'exploitation maître (quelquefois désigné sous le terme "hyperviseur'') reçoit de multiples systèmes d' exploitation esclaves dans le même ordinateur physique. De façon typique un tel système d'exploitation maître utilise un seul mécanisme de traduction similaire au mécanisme de traduction 104 représenté sur la figure 1. Le système d'exploitation maître commande le mécanisme de translation sur la base des systèmes d'exploitation esclaves. Cette solution présente un certain nombre d'inconvénient. Par exemple il existe de façon typique une pénalité du point de vue performance (habituellement de l'ordre de 10-15 %) en raison du temps système supplémentaire introduit par le mécanisme de tranelation. En outre le système d'exploitation maître représente un seul point de défaillance pour l 'ensemble du système; si le système d'exploitation maître est défaillant, la totalité des systèmes d'exploitation
esclaves sont de ce fait également défaillants.
En outre, dans un tel système, le matériel de l'ordinateur représente luimême un seul point de défaillance. Plus particulièrement, une défaillance dans un processeur quelconque ou dans un contrôleur de mémoire quelconque de l'ordinateur est susceptible de provoquer la défaillance du système d'exploitation maître, ce qui provoque également la défaillance de l 'ensemble des systèmes de fonctionnement esclave. Enfin un tel système requiert que les systèmes d'exploitation esclaves soient conçus spécialement pour travailler en liaison avec le système d'exploitation maître. Il en résulte que des systèmes d'exploitation classiques, qui de façon typique ne
sont pas conçus pour fonctionner en tant qu'esclaves vis-à-
vis d'un système d'exploitation maître, ne fonctionneront pas dans un tel système ou nécessiteront une modification pour fonctionner correctement. Il peut être difficile ou impossible d'exécuter de telles modifications et la pénétration profonde de systèmes d'exploitation classiques (tels que Microsoft Windows NT et différentes formes de Unix) peuvent limiter l'acceptation commerciale de serveurs, sur lesquelles les systèmes d'exploitation
classiques ne peuvent pas travailler.
Une autre solution consiste à prévoir des partitions, dans lesquelles il n'est pas garanti que l'espace d'adresse présenté à chaque système d'exploitation soit à base zaro, et dans lesquels il n'est pas garanti que des adresses augmentent séquentiellement. Cependant cette solution présente un certain nombre d'inconvénients. Par exemple elle requiert l'utilisation d'un système d'exploitation modifié étant donné que des systèmes classiques d'exploitation s'attendent à ce que l'espace d'adresses physiques commence à zéro et augmente séquentiellement. En outre le fait de prévoir un espace
d'adresses, qui n'augmente pas séquentiellement (c'est-à-
dire qui n'est pas contigu), requiert qu'une autre couche soit prévue dans le mécanisme de conversion 104, habituellement dans les tables des pages du système d' exploitation. L' introduction d'une telle couche supplémentaire réduit de façon typique la performance du
mécanisme de tranelation 104.
Par conséquent, ce qui est nécessaire, c'est un mécanisme pour prévoir des espaces d'adresses physiques séquentielles à base zéro pour chaque partition d'un
serveur partitionnable.
Un autre but d'un serveur partitionnable est de permettre le remplacement de blocs physiques de mémoire devant être remplacés dans une partition du serveur sans que ceci ne requiert que le système d'exploitation soit réinitialisé. Une raison qu'il y a d'exécuter une telle addition ou un tel retrait de blocs de mémoire physique peut être difficile à mettre en oeuvre sans réinitialisation, est que certaines pages de mémoire peuvent devenir "pointées". Des adaptateurs d'entrée/sortie communiquent de façon typique avec le système d'exploitation par l'intermédiaire de tampons adressés dans l'espace d'adresses physiques 102. De façon typique il n'est pas possible de mettre à j our les adresses physiques
de ces tampons sans réinitialiser le système.
C'est pourquoi ce qui est nécessaire c'est un mécanisme fiable pour remplacer les blocs de mémoire machine dans un serveur partitionnable, sans nécessiter une
réinitialisation de l'ordinateur.
Selon un aspect de l'invention, il est prévu un procédé mis en oeuvre par ordinateur pour créer un espace d'identifiants de ressources physiques dans une partition d'un système informatique partitionnable, qui inclut une pluralité d' emplacements de mémoire machine possédant une pluralité d'adresses de mémoire machine, le procédé comprenant les étapes consistant à: (A) établir un mappage entre une pluralité d'adresses de mémoire physiques et au moins certaines de la pluralité d'adresses de mémoire machine, la pluralité d'adresses de mémoire physiques étant numérotées séquentiellement en commençant à partir de zéro; (B) prévoir, pour un programme logiciel fonctionnant dans la partition, une interface pour accéder à au moins certains de la pluralité d' emplacements de mémoire machine en utilisant la pluralité d'adresses de
mémoire physiques.
Dans un mode de mise en oeuvre la pluralité de ressources machine comprend une pluralité d' emplacements de mémoire machine, la pluralité d'identifiants de ressources machine comprend une pluralité d'adresses de mémoire machine, l'espace d'identifiant de ressources machine comprend l'espace d'adresses de mémoire machine et la pluralité d'identifiants de ressources machine comprend une pluralité d'adresses de mémoire physiques. Les étapes (A) et (B) peuvent être exécutées pour chacune d'une pluralité
de partitions de l'ordinateur partitionnable.
L'étape (A) peut inclure une étape consistant à créer une table de conversion d'adresses, qui enregistre le mappage entre la pluralité d'adresses de mémoire physiques et au moins certains de la pluralité d'identifiants de ressources machine. L' interface peut inclure des moyens (tels qu'une mémoire associative) pour convertir un identifiant de ressource physique sélectionné parmi la pluralité d'identifiants de ressource uniques en l'un de la pluralité d'identifiants de ressource machine conformément
au mappage.
Selon un autre aspect de l 'invention, il est prévu un procédé pour accéder à l'un sélectionné d'une pluralité d' emplacements de mémoire machine spécifiés par une adresse de mémoire physique dans un système informatique partitionnable, qui inclut la pluralité d' emplacements de mémoire machine, le procédé comprenant les mémoires consistant à: (A) identifier un mappage associé à une partition dans le système informatique partitionnable, le mappage mettant en correspondance une pluralité d'adresses de mémoire physiques dans un espace d'adresses de mémoire physiques séquentielles à base zéro de la partition, avec au moins certaines d'une pluralité d'adresses de mémoire machine associces à la pluralité d'emplacements de mémoire machine; (B) convertir l'adresse de mémoire physique en une adresse de mémoire machine en utilisant le mappage, l'adresse de mémoire machine spécifiant celle qui est sélectionnce parmi la pluralité de ressources machine; et (C) amener l'une sélectionnée de la pluralité de ressources machine à déclencher l'accès à celle sélectionnée de la pluralité de ressources machine en
utilisant l'identifiant de ressource machine.
Dans un mode de mise en oeuvre, la pluralité de ressources machines comprend une pluralité d'emplacements de mémoire machine, la pluralité d'identifiants de ressources machine comprend une pluralité d'adresses de mémoire machlne, l'espace d'identifiant de ressources machine comprend l'espace d'adresses de mémoire machine et la pluralité d'identifiants de ressources machine comprend une pluralité d'adresses de mémoire physiques. L'étape (C) peut inclure une étape de lecture d'une donnée ou écrire
une donnée à l'adresse de mémoire machine.
Selon un autre aspect de l'invention, il est prévu un procédé destiné à être utilisé dans un système informatigUe partitionnable incluant une pluralitd d' emplacements de mmoire machine possdant une pluralitd d'adresse de mmoire machine, le systAme informatique parLiLionnable incluant en outre une pluralitd d' emplacements de mmoire physiques comportant une pluralitd d'adresses de mmoire physiqueG, qui ont mies en correspondance avec au moin certaine de la pluralitd d'adresses de mmoire machine, le sytme informatique partitionnable comprenant en oute une pluralit de partitions exdcutant une pluralit de programmes logiciels, le procd comprenant les tapeG consistant: (A) slectionner un premier sousensemble de la pluralitd
d'emplacements de mmoire physiques, le remier sous-
ensemble de la pluralitd d'emplacements de mmoire Atant mis en correspondance avec un premier sous-ensemble de la pluralit d'adreses de mmoire machine; et (B) remettre en correspondance le premier soosensemble de la pluralit d'emplacements de mmoire avec on second sousensemble de la pluralit d'adresses de mmoire machine sans
rdinitialiser le systme informaLique parLiLionnable.
Avant l'exAcuLion de l'ALape (B), copier le conLenu du premier sousensemble de la pluralit d'adresses
de mmoire machine au niveau de 1' ensemble du second scus-
ensemble sAlectionn de la pluralitd d'adresses de mmoire
machine.
D'autres caractristiques et avantages de la
prdsente invention ressortiront de la description donne
ci-aprds prise en rAfrence aux dessins annexs, sur lesquels: - la figure 1 est un scbma-bloc fonctionnel d'un modle de mmoire uLilis par des ordinateurs classigues; - la figure 2, qui inclut les figures 2A 2C, est un schma-bloc fonctionnel d'un module de mmoire convenant pour atre utilisA dans un serveur partitionnable 3s conformment une forme de rdalisation de la prdsente invention; - la figure 3A est un schéma-bloc fonctionnel de ressources dans un serveur partitionnable; - la figure 3B est un schéma-bloc fonctionnel d'un serveur partitionnable comportant deux partitions; - la figure 4 est un organigramme d'un procédé exéauté par le mécanisme de conversion d'une adresse physique en une adresse machine pour créer un espace de mémoire physique conformément à une forme de réalisation de la présente invention; - la figure 5 est un organigramme d'un procédé exécuté par un mécanisme de conversion d'une adresse physique en une adresse machine pour convertir une adresse de mémoire physique en une adresse de mémoire machine conformément à une forme de réalisation de la présente invention; - la figure 6 est un schéma-bloc fonctionnel d'un modèle de ressource physique généralisé convenant pour être utilisé dans un serveur partitionnable conformément à une forme de réalisation de la présente invention; - la figure 7 est un organigramme d'un procédé utilisé pour exécuter un niveau mappage d'un bloc de mémoire physique depuis une ressource de mémoire physique sur une autre dans une forme de réalisation de la présente invention; et - la figure 8 est un schéma d'une réalisation matérielle d'un mécanisme de conversion d'une adresse physique en une adresse machine conformément à une forme de
réalisation de la présente invention.
Selon un aspect de la présente invention, il est prévu un mécanisme de conversion destiné à être utilisé dans un serveur partitionnable. Le mécanisme de conversion est intercalé logiquement entre les ressources de mémoire matérielles du serveur et les processus (tels que les systèmes d' exploitation et les processus d'utilisateurs) et réalise des partitions du serveur. Pour chaque partition, le mécanisme de conversion affecte une partie des ressources de mémoire du serveur à un espace d'adresses "physiques", auquel les processus peuvent accéder dans la partition. Chaque espace d'adresses physiques de ce type est séquentiel et à base zéro. Comme cela sera décrit plus loin de façon plus détaillée, les espaces d'adresses "physiques" utilisés dans différentes formes de réalisation de la présente invention peuvent en réalité être des espaces d'adresses virtuels, mais sont désignés comme étant des espaces d'adresses "physiques" pour indiquer que des processus (tels que des systèmes d'exploitation) peuvent y accéder de la même manière que de tels processus peuvent accéder à des espaces d'adresses physiques (matérielles)
dans un ordinateur autonome classique.
Le mécanisme de conversion maintient des mises en correspondance ou mappage entre les espaces d'adresses physiques de la partition et un espace d'adresses "machine" qui réalise une mise en correspondance ou un mappage sur la mémoire réelle (matérielle) du serveur. L'espace d'adresses "machine" est. en ce sens, similaire à l'espace d'adresses "physiques" d'un ordinateur classique non partitionné, décrit précédemment en référence à la figure 1. Lorsqu'un processus (tel qu'un système d'exploitation) exéautant une partition envoie une demande classique de lecture ou d'écriture à une adresse de mémoire physique spécifiée, le mécanisme de conversion reçoit la demande, convertit de façon transparente l'adresse de mémoire physique spécifice en une adresse de mémoire machine et commande le matériel de commande de mémoire dans le serveur pour exécuter l'opération demandée de lecture ou d'écriture sur la base
du processus effectuant la demande.
Le fonctionnement du mécanisme de conversion est transparent pour les systèmes d' exploitation et d' autres processus exécutant des partitions du serveur. En particulier de tels processus peuvent accder la mmoire dans des partiLions du serveur en utilisant les mmes commandes gue celles qui peuvent tre uLilises pour accder la mmoire d'u ordinateur non partitionnable. Le mcanisme de conversion permet ainsi des sytAmes d'exploitation classigues existants de travailler dans des
partitions du serveur partitionnable sans modification.
Selon un autre aspect de la prdente invention, des techniques sont prAvues pour remettre en correspondance une gamme d'adresses de mmoire physiques partir d'une ressource de mmoire machine (mat6rielle} une autre dans un serveur partitionnable. En particulier des technigue Gont prvues pour excuter un tel remappage sans ncessiter une rdiniLialisation du serveur et sans interruption du fonctionnement du ou des systmes d'exploitation Lravaillant sur le serveur. La capacit exdeuLer un tel remapage ou remappage peuL Lre utilise par exeple pour permettre le remplacement de la mmoire machine sans
......
ncesGlter une renlÈlallsatlon du serveur.
n rAf@rence la figure 2, on y voit reprsent un modAle de mmoire 200 selon une forme de raliGation de la prsente invention sous la forme d'un schmabloc fonctionnel. Le modle 200 peut par exemple tre utilis en liaison avec les reGsources de mmoire principales (par
exemple RAM) d'un serveur de consolidation parLiLionnable.
Par exemple en rAfArence la figure 3A, un Gerveur partitionnable 300 qui contient pour atre utilis en 1iaison avec le modAle de mmoire 200 esL reprGenL sOus la forme d'un schAma-bloc gAndralisA. Le serveur 300 inclut des reGGources de Laitement 302a, des ressources de mmoire 302b, deG ressources d'inLerconnexion 302c, des ressources de puissance 302d et des ressources
d'entre/sortie (I/O) 302e.
Un matriel et/ou logiciel particulier pour mettre en oeuvre les resources 302a-e, qu'on peuL 1S utiliser, sont bien connus des spAcialiGtes ordinaires de la technique et par consquenL ne sonL pas dcriLs ici de fagon dLaille. Mais, de fagon rAsume, des ressource de traiLemenL 302a peuvent inclure un nombre eL un Lype S quelcongues de roceseurs. CependanL dans cerLains serveurs partitionnables, le nombre de processeurs peuL tre limiLd par des caracLristiques des ressources d'inLerconnexion 302c. Des serveurs de conolidaLion parLitionnables par exemple incluenL de fagon Lypique 8, 16, 32 et 64 prOceseurs, eL la limiLe actuelle pratique eGL de 128 proceGGeurs pour un mulLiprocesseur YmAtrique (CP). En outre cecLains systAmes peuvenL ncesiLer que Lous les proceGGeurs conLenus dans les reGGources de LaiLement 302a soient identiques ou au moins utilisent en
commun la mme arehiLecLure.
CeG reGGources de mmoire 102b peuvent inclure n'importe quelle quantiLA eL Lype de mmoire, comme par exemple n'importe quelle varidLA de mmoire ROM, bien que danG la praLique des serveurs acLuelG partitionnables soienL 1imiL@G de fagon Lypique environ 512 GbiLs de mmoire RM eL peuvenL ncessiLer 1'uLilisation des mmes types ou de Lypes similaires de mmoires RAM dans le serveur 300. Les serveurs de consolidation partiLionnables incluent de fagon Lypique une quanLiL suffiGanLe de mmoire RAM poursupporLer plusieurs parLiLions. Le serveur 300 a galemenL de fagon Lypique acc@s des ressources de mmoire persisLanLes Lelles qu'un rscau de zone de mmoire ). Des resources I/O 302e peuvenL inclure par exemple n'imporLe quel Lype eL un nombre queleonque de bus I/O, d'adapLaLeurs ou de bords, Lels que ceux uLilisanL les Lechnologies SCSI ou Fibre Channel. Des ressources d'inLerconnexion 302c, quelquefois d@signdes comme LanL un syL@me d'inLerconnexion, deG reGGources inLeroonnactent des ressources 302a, 302b, 302d eL 302e de mani@ce former un système informatique intégré dans l'un quelconque d'une variété de moyens, comme cela est bien connu du spécialiste ordinaire de la technique. Les ressources 302-302e du serveur 300 peuvent être affectéss d'une manière libre et dynamique entre deux ou un plus grand nombre de partitions en fonction des exigences de la charge de travail exécuté dans les partitions respectives. Par exemple, en référence à la figure 3B, on a représenté un schéma-bloc fonctionnel illustrant un exemple dans lequel le serveur 300 comprend deux partitions 322a-b. Une première partition 322a inclut des ressources de traitement 332a (qui sont un sous ensemble de ressources de traitement 302a du serveur 300) et des ressources de mémoire 326a (qui sont un sous ensemble des ressources de mémoire 302b du serveur 300). Un système d' exploitation 324a travaille dans la partition 322A. Deux processus 330a-b sont représentés comme étant exécutés dans le système d'exploitation 324a, à titre d'exemple. Il est bien connu des spécialistes de la technique qu'un processus se déroule ''à l'intérieur" d'un système d' exploitation en ce sens que le système d'exploitation produit un environnement dans lequel le processus peut se dérouler et qu'un système d' exploitation travaille "à l'intérieur" d'une partition en ce sens que la part it ion fournit un environnement dans l equel le système d' exploitation peut travailler. La partition 322a inclut également des ressources I/O 328a, qui sont un sous
ensemble des ressources I/O 302e du serveur 300.
De façon similaire, une seconde partition 322b inclut des ressources de traitement 332b, des ressources de mémoire 326b, des ressources I/O 328b et un système d'exploitation 324b (y compris les processus 330c-d) qui fonctionnent dans la partition 322b. Bien que les partitions 322a et 322b puissent également inclure et/ou avoir accès à des ressources de mémoire persistantes et à des ressources de puissance persistantes, celles-ci ne sont pas représentées sur la figure 3B. On notera que des ressources 302ae provenant du serveur 300 peuvent être affectées parmi les partitions 322a-b selon l'une quelconque d'une variété de facons. En outre, on notera que, bien que le système d' exploitation, les ressources de mémoire et la source I/O dans chaque partition soient représentés sous la forme d'éléments séparés, ces éléments peuvent dépendre les uns des autres de différentes manières. Par exemple, le système d'exploitation 324a peut
utiliser les ressources de mémoire 326a pour fonctionner.
En se référant à la figure 2A, le modèle de mémoire 200 inclut un sousmodèle 214a qui est utilisé par la partition 322a, et un sous-modèle 214b, qui est utilisé par la partition 322b. On notera que chacun des sous modèles 214a-b est similaire, du point de vue structurel,
du modèle de mémoire classique 100. Par exemple le sous-
modèle 214a inclut: (1) une pluralité d'espaces d'adresses virtuelles 208a-b, qui correspondent aux espaces d'adresses virtuelles 108a-c représentés sur la figure 1, (2) un espace d'adresses physiques séquentielles à base zéro 202a, qui correspond à l'espace d'adresses physiques 102 représenté sur la figure 1, et (3) un mécanisme de conversion virtuelle-vers-physique 204a, qui correspond au mécanisme de conversion virtuelle-vers-physique 104
représenté sur la figure 1.
Comme dans le modèle de mémoire classique, le mécanisme de conversion virtuelle-vers-physique 304a dans le sous-modèle 214a réalise une conversion transparente entre des adresses virtuelles 220a-b dans l'espace d'adresses virtuelles 208a-b et des adresses physiques 216 dans l'espace d'adresses physiques 202a. En réulité, le mécanisme de conversion virtuelle-vers-physique 204a peut être un mécanisme de conversion virtuelle-vers-physique classique tel que le mécanisme de conversion 104 représenté sur la figure 1. Il en résulte qu'un système d'exploitation classique et d'autres traitements logiciels classiques
peuvent fonctionner dans la partie 122a sans modification.
De façon similaire, le sous-modèle 214a inclut un mécanisme de conversion virtuelle-vers-physique 204b, qui réalise une conversion entre des adresses virtuelles 220c-d dans des espaces d'adresses virtuelles 208c-d et des adresses
physiques 218b dans l'espace d'adresses physiques 202b.
Cependant une différence entre l'espace d'adresses physiques 202a (figure 2A) et l'espace d'adresses physiques classique 102 (figure 1) est que des adresses 112 dans l'espace d'adresses physiques classiques 102 sont mises en correspondance directement en des emplacements de mémoire matériels, tandis que des adresses 218a dans l'espace d'adresses physiques 202a sont mises en correspondance physiquement de façon indirecte avec des emplacements de mémoire matériels. au lieu de cela, le modèle de mémoire 200 inclut un espace d'adresses additionnel 202, désigné ici comme étant un "espace d'adresses machine", qui inclut une pluralité d'adresses machine 216 qui sont mises en correspondance directement sur des emplacements de mémoire dans une pluralité de blocs de mémoire machine (matériels) 210a-e. Les blocs de mémoire machine 210a-e peuvent être identiques aux blocs de mémoire
physiques llOa-d dans le modèle de mémoire classique 100.
De façon plus générale, le terme "machine" (comme dans "mémoire machine" et "adresse machine" est utilisé ici pour désigner les ressources de mémoire réelles (matérielles) 302b du serveur 300. Les termes "machine" et "matériel"
seront utilisés ici de facon interchangeable.
Par conséquent, lorsqu'un processus (tel qu'un système d' exploitation 324a) travaillant dans une partition 322a essaie d'accéder à un emplacement de mémoire en utilisant une adresse physique dans l'espace d'adresses physiques 202a, l'adresse physique est tout d'abord convertie en une adresse mémoire machine (matérielle) avant que l'acc@ en mmoire se produise. e modle de mmoire inclut un mcanisme de conversion d'une adresse physique en une adresse machine 210 pour l'excotion tranGparente de cette conversion. La converion est s "LansparenLe" au sens oL elle est exdcute dans la connaisance du processus de demande. Une raison our laquelle la connaissance du processus de demande n'est pan requise, est que les espaces d'adreses physigues 202a-b sont sguentiels et base z6ro, comme cela est exprimA par des proceGus (tels que des systAmeG d'exploitation) qui sont conus pour travailler sur un ordinateur autonome
cl assigue.
Par exemple, Gi un systme d'exploitation classigue travaillant dans une partition 322a dlivre une demande d'accAs en mmoire qui est congue pour accder la mmoire dans l'espace dladresses physiques 102 (figure 1) dlun ordinateur portable clasGique, le mAcanisme de cooersion 210 peut convertir 1'adreGGe physique spcifie en une adreGGe machine danG l'epace d'adreGGes machine 202 et commander le matriel de commande de mmoire pour gu'il exdcute l'acc@s en mmoire demand6. I1 en rdsulte que le mcanisme de conversion 210 fournit une interface transparente entre les processus travaillant dans deG partitions du serveur 300 et leG reGGourceG de mmoire matArielle 302b du serveur. Le modle de mmoire 200 peut par consguent Atre utilisA pour raliGer chaque partition danG un serveur partitionnable avec un espace d'adresGeG G@quentielles base zAro, qui est compatible avec des systAmes d'exploitation classigueG. DeG GystAmeG d'exploi tation clasGigues non modifids peuvent par consAguent utiliser le modAle de mmoire 200 pour accder aux
reGGources de mmoire 302b du serveur partitionnable 300.
On va maintenant dcrire de fagon plus dtaille le modAle de mmoire 200. Les adreGseG 216 contenues dans 11espace dladresses machine 202 peuvent par exemple tre numérotées séquentiellement de zéro à M-1, M étant le nombre total d' emplacements de mémoire dans les blocs de mémoire machine 210a-e. On notera qu'on peut avoir un nombre quelconque et un type quelconque de blocs de mémoire machine et que, comme représenté sur la figure 2C, les blocs de mémoire machine 210a-e peuvent avoir une dimension variable, bien que de façon typique chacun d'eux possède
une taille qui est égale à une puissance de deux.
A titre d'exemple, on suppose ici que les limites d'adresses des blocs de mémoire machine 210a-e dans l'espace d'adresses machine 202 sont telles que représentées dans le tableau 1. On notera que les limites représentées dans le tableau 1 sont prévues uniquement à titre d'exemple. Dans la pratique les limites sont situées, de façon typique, à des puissances de deux, ce qui présente l'effet avantageux de réduire le temps système associé au
décodage d'adresses.
Numéro de bloc de Limite d'adresse Limite d'adresse mémoire machine inférieure supérieure
0 0 22,527
1 22,528 45,055
2 45,056 59,391
3 59,392 71,679
4 71,680 81,919
Tableau 1
Le mécanisme de conversion d'une adresse physique en une adresse machine 210 regroupe l'espace d'adresses machine 202 en une pluralité de blocs de mémoire physiques 212a-f. Bien que six blocs de mémoire physiques 212a-f soient représ-entés sur les figures 2B-2C à titre d'exemples, il existe un nombre quelconque de blocs de
mémoire physiques.
Les blocs de mémoire physiques 212a-f sont représentés directement audessus du bloc de mémoire machine 210a-e dans l'espace d'adresses machine 202 de la figure 2 pour indiquer qu'il existe un mappage biunivoque entre des emplacements de mémoire dans les blocs de mémoire physiques 212a-f et les emplacements de mémoire dans les blocs de mémoire machine 210a-e. On notera qu'un seul bloc de mémoire physique peut s'étendre sur plus d'un bloc machine, sur moins d'un bloc de mémoire machine ou exactement sur un bloc de mémoire machine. Le mappage de blocs de mémoire physiques 212a-f sur les blocs de mémoire machine 210a-e va être décrit ci-après de facon plus
détaillée en référence à la figure 8.
A titre d'exemple, on suppose ci-après que les limites d'adresses du bloc de mémoire physique 212a-f dans l'espace d'adresses machine 202 sont telles que
représentées dans le tableau 2.
Numéro de bloc de Limite d'adresse Limite d'adresse mémoire machine inférieure supérieure
0 0 16,383
1 16,384 28,671
2 28,672 45,055
3 45,056 57,343
4 57,632 69,631
69 632 81 919
Tableau 2
On notera que le mécanisme de conversion 210 peut conserver et/ou utiliser des tableaux tels que le tableau et le tableau 2 pour exécuter différentes fonctions. Par exemple le mécanisme de conversion 210 peut utiliser de tels tableaux pour déterminer quel bloc de mémoire physique et/ou quel bloc de mémoire machine contient un emplacement de mémoire spécifié par une adresse particulière dans
l'espace d'adresses machine 202.
On va maintenant décrire des espaces d'adresses physiques 202a-b de facon plus détaillée. L'espace d'adresses spécifiques 202a inclut un réseau contigu d'emplacements de mémoire numérotés séquentiellement de zéro à mo1, mO étant le nombre d'emplacements de mémoire
dans les ressources de mémoire 326a de la partition 322a.
L'espace d'adresses physique 202a est subdivisé en dix pages contiguës marquées page 0 à page 9. Contrairement aux pages représentées sur la figure 1, qui sont mises en correspondance directe avec des blocs de mémoire physiques a-d, les pages contenues dans l'espace d'adresses physiques 202a sont mises en correspondance avec des blocs de mémoire machine (en particulier les blocs de mémoire machine 212a, 212e et 212d). Un espace d'adresses physiques similaires 202b a été affecté à dix pages de mémoire moyennant l'utilisation de blocs de mémoire machine 212c,
212f et 212b.
Des espaces d'adresses virtuelles 208a-d sont affectés pour leur utilisation respectivement par les processus 330a-d (figure 3B). Les espaces d'adresses virtuelles 208a-d fonctionnent de la même manière, jusqu'à
l'adresse virtuelle classique 108a-c (figure 1).
Après avoir décrit d'une manière générale les fonctions exéautées par le modèle de mémoire 200, on va décrire ci-après différentes formes de réalisation du mécanisme de transmission d'une adresse physique en une adresse machine 210, d'une manière plus détaillée. Dans une forme de réalisation de la présente invention, le mécanisme de conversion d'une adresse physique en une adresse machine 210 conserve des mises en correspondance entre des adresses physiques 210a-b et des adresses machines 216. Un tel mappage peut être maintenu moyennant l'utilisation d'un tableau de conversion d'adresses d'une adresse physique en une adresse machine pour chacun des espaces d'adresses physique 202a-b. Par exemple, dans une forme de réalisation, le mécanisme de conversion d'une adresse physique en une adresse machine 210 conserve une table de conversion d'adresses d'une adresse physique en une adresse machine 222a pour l'espace d'adresses physiques 202a et maintient un tableau de conversion d'adresses machine 222b pour un espace d'adresses physiques 202b. L'étape de conversion d'adresses 222a-b peut être réalisée en mode matériel, en mode logiciel ou selon une combinaison
quelconque de ces modes.
Le tableau 3 représente un exemple de la table de conversion d'adresses d'une adresse physique en une adresse machine 222a pour l'espace d'adresses physiques 202a conformément à une forme de réalisation de la présente invention: Espace d'adresses physiques Espace d'adresses machine
0-16,383 0-16,383
16,384-28,671 57,344-69,631
28,674-40,959 45,056-57,343
Les mises en concordance représentées dans l table 3 peuvent être expliquées en référence à la figure 2, comme indiqué ci-après. On se rappellera que chaque page est constituée de 4 k.octets (4096 octets). Comme représenté sur la figure 2, les pages allant de la page 0 à la page 3 dans l'espace d'adresses physiques 202a possèdent les adresses physiques 0-16 383. Ces pages sont mappées sur le bloc de mémoire physique 212a, qui à son tour exécute un mappage sur des adresses machine 0-16 383 dans l'espace d'adresses machine 202, comme représenté dans la première rangée de la table 3. Les pages allant de la page 4 à la page 6 dans l'espace d'adresses physiques 202a possèdent des adresses physiques 16 384-28 671 dans l'espace d'adresses physiques 202a. Ces pages sont mappées sur le bloc de mémoire physique 212e qui à son tour réalise un mappage sur des adresses machine 57 344-69 631 dans l'espace d'adresses machine 202, comme cela est représenté sur la seconde ligne de la table 3. Enfin les pages 7 à 9 dans l'espace d'adresses physiques 202a possèdent des adresses physiques 28 674-40 959 dans l'espace d'adresses physiques 202a. Ces pages réalisent un mappage sur le bloc de mémoire physique 212d qui à son tour réalise un mappage sur les adresses machine 45 056-57 343 dans l'espace d'adresses machine 202, comme cela est représenté sur la
troisième ligne de la table 3.
Le mécanisme de conversion d'une adresse physique en une adresse machine 210 peut utiliser la table 3 pour convertir une adresse dans l'espace d'adresses physiques 202a en une adresse dans l'espace d'adresses machine 202 en utilisant des techniques qui sont bien connues des spécialistes ordinaires de la technique. On notera en outre que, bien que la table 3 mette en correspondance des adresses directement avec des adresses machine, les tables de conversion d'adresses d'une adresse physique en une adresse machine 222a-b peuvent fournir le même résultat
selon d'autres moyens, dont un exemple va être décrit ci-
après en référence à la figure 8. D'une manière plus générale, l'utilisation d'une table de conversion telle que la table 3 pour exéauter une conversion d'adresses d'une adresse physique en une adresse machine est prévue simplement dans le cadre de l'exemple et ne constitue pas
une limitation de la présente invention.
En outre, bien que l'on ait décrit ci-dessus uniquement une seule table de conversion d'adresses d'une adresse physique en une adresse machine (table 3), on notera qu'on peut avoir une pluralité de telles tables. Par exemple on peut avoir une telle table pour chaque agent (par exemple processeur ou partition) qui accède à la mémoire. Chaque table de ce type peut fournir les conversions d'adresses qui sont requises par l' agent correspondant.
Lors de l'initialisation du serveur partition-
nable 300 (comme pendant l'initialisation), le mécanisme de conversion d'une adresse physique en une adresse machine 210 peut s'initialiser luimême. Cette initialisation peut inclure par exemple la création de blocs de mémoire physiques 312a-f et le maintien d'un enregistrement des limites d'adresses physiques de tels blocs, comme décrit précédemment en référence à la table 2. Le mécanisme de conversion d'une adresse physique en une adresse machine 210 peut sélectionner le nombre de blocs de mémoire physiques et établir leurs limites d'adresses physiques selon n'importe laquelle d'une variété de façons. Par exemple, le mécanisme de conversion d'une adresse physique en une adresse machine 210 peut être préconfiguré de manière à créer des blocs de mémoire physiques d'une taille prédéterminée et peut crécr autant de blocs de mémoire physique ayant la taille prédéterminée, que ce qui est
nécessaire pour peupler l'espace d'adresses machines 202.
Les tailles des blocs de mémoire physiques peuvent être choisies de manière à être des multiples entiers de la taille d'une page (par exemple 4 k.octets). Après création des blocs de mémoire physiques 212a-f, le mécanisme de conversion d'une adresse physique en une adresse machine 210 utilise les blocs de mémoire physique 212a-f pour
affecter la mémoire à des partitions du serveur.
Par exemple, en référence à la figure 4, on y voit représenté un organigramme d'un procédé 400 qui est utilisé par le mécanisme de conversion d'une adresse physique en une adresse machine 210 pour affecter une mmoire une parLition de serveur (c'est--dire pour crer un espace d'adreses physiques) conformment un mode de mise en oeuvre de la prsenLe invention. Pour faciliLer 1'explication, on va dcrice un exemple dans lequel 1'eGpace d'adresses physiques 202a repr4Gent sur la figure
2A est crdA.
En rfrence la figure 4, le mcanisme de conversion d'une adresse physique en une adreGGe machine 210 reoit une demande pour crer un espace d'adreGGes phyGiques P comportanL m adreGGes (pas 402). DanG le cas de la parLie cenLale 122a, on a par exemple m=mO. La demande peuL aLre reque par la craLion d'une partition dans le serveur 300. On notera que la cration de la partition 322a inclut des Atapes en plus de la crdation d'un eGace d'adreGses physiques, qui ne Gont pas dcriteG ici pour faciliter 1'explication maiG qui Gont bien COnnus deG GpACialiGtes ordinaires de la technique. Par exemple, un proceGGeur de Gervice peut GLLe responsable la fois de la gesLion deG parLiLions (par exemple crdaLion eL suppression) eL de la mainLenance des Lables de converGiOn d'adreGGes d'une adreGse physique en une adrese machine 222a-. Le mcanisme de conversion d'une adreGGe physique en une adreGGe machine 210 crde et initialiGe une table de converGion d'adresses d'une adreGGe physique en une adreGGe machine pour un espace d'adresseG physiques P (paG 404). Le mcanisme de conversion d'une adreGGe physique en une adreGGe machine 210 effectue une recherche dans un bloc de mmoire physique (parmi les blocs de mmoire physiques 212a-f) qui n'eGL pas acLuellemenL affecLA un quelconque
espace d'adreGGes phyGiqueG (pas 406).
Si aucun bloc de mmoire physique non affecLd n'eGL Lrouv (paG 408), le procAd 400 renvoie une erreur (pas 410) eL s'arrte. D'auLre parL le procd 400 annexe le bloc de mmoire physique Lrouv lors du pas 406 o l'espace d'adresses physiques P par mise à j our de la table de conversion d'une adresse physiques en une adresse machine, qui a été initialisée lors du pas 404 (pas 412) et marque le bloc de mémoire physique comme étant affecté (pas 414). La table de conversion d'adresses d'une adresse physique en une adresse machine et mise à j our lors du pas 412 d'une manière qui garantit que l'espace d'adresses
physiques P est numéroté séquentiellement et à base zéro.
De façon plus spécifique, tous les blocs de mémoire physique affectés à l'espace d'adresses physiques P sont mis en correspondance avec des adresses ayant une numérotation séquentielle. En outre le premier bloc de mémoire physique affecté à l'espace d'adresses physique P (par exemple le bloc de mémoire physique 212a dans le cas de l'espace d'adresse physique 202a) est mis en correspondance avec une séquence d'adresses commençant par l'adresse zéro. Enfin chaque bloc de mémoire physique ultérieur, qui est affecté à un espace d'adresses physiques P. est mis en correspondance avec une séquence d'adresses qui commence à l'adresse qui suit le bloc de mémoire
physique précédent dans l'espace d'adresses physiques.
L'exécution du pas 412 de cette manière garantit que l'espace d'adresses physiques P est un espace d'adresses
séquentiel à base zéro.
Si l' affectation est terminée (pas 416), le procédé 400 s'achève. Le procédé 400 peut déterminer lors du pas 416 si l' affectation est terminée en déterminant si la quantité totale de mémoire dans les blocs de mémoire physiques dans la liste de blocs physiques est supérieure
ou égale à la quantité de mémoire demandée lors du pas 402.
Si l' affectation n'est pas achevée, la commande revient au pas 406 et des blocs additionnels de mémoire physiques sont
affectés, si cela est possible.
On supposera à titre d'exemple qu'au moment de la réception de demande lors du pas 402, il n'existe aucune partition dans le serveur 300 (c'està-dire que les partitions 322a et 322b n'existent pas) et que par conséquent des modèles de sous-mémoire 214a et 214b n' existent pas. On suppose en outre que la demande effectue une demande de dix pages de mémoire devant être affectées (c'est-à-dire que l'on a m = 10 x 4096 = 49 960). En réponse à la demande, le mécanisme de conversion d'une adresse physique en une adresse machine peut tout d'abord (lors des pas 412 et 414) affecter le bloc de mémoire physique 212a à l'espace d'adresses physiques 212a. Comme représenté sur la figure 2A, le bloc de mémoire physique 212a est suffisamment grand pour fournir quatre pages physiques de mémoire pour l'espace d'adresses physiques 202a. Lors d'itération successives du procédé 400, le bloc de mémoire physique 212a (fournissant trois pages) et le bloc de mémoire physique 212d (fournissant trois pages)
peuvent être affectés à l'espace d'adresses physiques 202a.
Il en résulte que la demande de dix pages de mémoire peut être satisfaite par création d'un espace d'adresses physiques séquentiel à base zéro à partir des blocs de
mémoire physiques 212a, 212e et 212d.
Avec l'exéaution;du procédé 400 représenté sur la figure 4 pour chacune des partitions 322a-b dans le serveur 300, le mécanisme de translation 210 a créé des tables de conversion d'adresses d'une adresse physique en une adresse machine 222a-b pour les partitions respectives 322a-b. Ces tables de conversion d'adresses 222a-b peuvent être utilisées ultérieurement pour convertir d'une manière transparente des adresses dans les espaces d'adresses physiques 202a-b qui sont référencés dans les demandes de lecture/écriture en mémoire par les systèmes d'exploitation 324a-b en des adresses dans l'espace d'adresses machine 202 et de ce fait ont accédé aux ressources de mémoire 302b du
serveur 300 d'une manière appropriée et transparente.
Par exemple en référence à la figure 5, on y voit repr4senLA un organigramme d'un procd 500 oi et exdeuL par le mcanisme de conversion d'une adresse physique en une adresse machine 210 dans une forme de rdalisaLion de la prdenLe invention pour converLir de fagon LansparenLe une adresse physique en une adrese machine. Le procdA 500 regoiL une demande d'acc@s un emplacemenL de mmoire ayanL une adreGe de mmoire physique spcifide dans un epace d'adreseG physiques P (pas 502). ['espace d'adresses physiques peuL par exemple CLre 1'un ou 1'auLre
des eGpaces d'adresses phyGiques202a ou 202b.
La demande peuL CLre dveloppe selon l'une queleonque d'une varidL de mani@res avanL d'ALre reque par le mcanisme de conversion 210 1O[G du pas 502. Par exemple, si l'un des poceGGus 310a-d LravaillanL sur le serveur 300 produiL une demande d'accs un emplacemenL de mmoire virLuelle dans l'un deG eGaces d'adreGes virLuelles 20Sa-d, l'un appropriA deG mcanismes de conversion d'adreseG virLuelleG en adreses physiqueG 204a peuL converLir l'adreGGe virLuelle spcifie en une adreGGe hysique dans l'un des espaces d'adreseG physiques 202a-t
eL dlivrer une demande d'acc@s l'adese phyique.
Sinon, l'un des GyL@mes d'exploiLaLion 324a-b peuL dlivrer une demande d'acc@s une adresse physique dans l'un des espaces d'adreGGes physiqueG 202a-b. DaoG Lous leG cas, la demande eGL reque de fagon LansparenLe par le mcanisme de converGion d'adreGe phyGique en adresse
machine lors du pas 502.
En rAponse la demande, le procd 500 idenLifie la Lable de converGion d'adreGGe phyGique en adreGGe machine correspondanL l'espace d'adreGGeG physiques P (pas 504). Le procd 500 converLiL 1'adrese phyGique GpCifié Gi 1'adrese machine AM dans 1'espace d'adresGes machine 202 en uLilisanL la Laille de conversion d'adresses idenLifide (paG 506). Le procd 500 commande le maLdriel de commande de mmoire pour qu'il exAcuLe 1'acc@G demand
l'adresse machine AM (pas 508) comme cela sera décrit ci-
après de façon plus détaillée en référence à la figure 8.
On notera, à partir de la description donnée ci-
dessus, que le procédé 500 permet au mécanisme 110 de conversion d'une adresse physique en une adresse machine de convertir de façon transparente des adresses physiques en des adresses machine. Le procédé 500 peut par conséquent être utilisé par exemple pour permettre à des systèmes d'exploitation classiques d'accéder à la mémoire dans des partitions d'un serveur partitionnable sans modifier de
tels systèmes d'exploitation.
Après avoir décrit d'une manière générale la manière dont le modèle de mémoire 200 peut être utilisé pour fournir des systèmes d'exploitation travaillant sur un serveur partitionnable avec des espaces d'adresses séquentielles à base zéro, on va maintenant décrire en référence à la figure 8 une forme de réalisation d'une réalisation matérielle du mécanisme 210 de conversion d'une
adresse physique en une adresse machine.
D'une manière générale, le mécanisme 210 de conversion d'une adresse physique en une adresse machine reçoit une adresse physique 804 en tant que signal d'entrce et convertit l'adresse physique 804 en une adresse machine 806 en tant que signal de sortie. Par exemple l'adresse physique 804 représentée sur la figure 8 peut être l'adresse physique Ap décrite précédemment en référence à la figure 5, et l'adresse machine représentée sur la figure 8 peut être l'adresse machine AM décrite précédemment en
référence à la figure 5.
Le mécanisme de conversion 210 focalise l'adresse machine 806 sur unecommande de lecture/d 'écriture 828 qui est utilisée pour commander le modèle 836 de commande de mémoire pour exécuter l'accès demandé en mémoire au niveau
de l'adresse machine 806.
Le modèle de commande de mémoire 836 peut être n'importe lequel d'une variété de matériels de commande de mémoire, qui peut utilisé pour accéder à la mémoire machine selon des modes qui sont bien connus du spécialiste ordinaire de la technique. Dans un ordinateur autonome classique (non partitionné), le matériel de commande de mémoire tel que le matériel 836 accède directement à la mémoire machine, sans l'utilisation du mécanisme de conversion. Dans différentes formes de réalisation de la présente invention, un mécanisme de conversion 210 est inséré avant le matériel de commande de mémoire 836 pour convertir des adresses physiques, qui sont référencées dans des demandes d'accès en mémoire classiques à des adresses de machines qui sont appropriées pour une délivrance au
matériel de commande de mémoire 836.
Dans une forme de réalisation, le matériel de commande de mémoire 836 inclut une pluralité de contrôleurs de mémoire 802a-b, dont chacun est utilisé pour commander un ou plusieurs des blocs de mémoire de machine 210a-e. Le contrôleur de mémoire 802a commande les blocs de mémoire de machine 210a-b et le contrôleur de mémoire 802b commande les blocs de mémoire de machine 210c-e. Bien que seuls deux contrôleurs de mémoire 802a-b soient représentés sur la figure 8 à titre d'exemple, on peut avoir un nombre quelconque de contrôleurs de mémoire, bien que de façon typique il existe environ autant de contrôleur de mémoire
dans le serveur 300 qu'il existe de processeurs.
Chacun des contrôleurs de mémoire 802a-b possède un numéro de module distinct de sorte qu'il peut être adressable uniquement par le macanisme 210 de conversion d'une adresse physique en une adresse machine. De façon similaire, chacun des contrôleurs de mémoire 802a-b affecte un numéro de bloc unique à chacun des blocs de mémoire machine, qu'il commande. Des emplacements de mémoire dans chacun des blocs de mémoire machine 210a-e peuvent être numérotés séquentiellement en commençant par zéro. Il en résulte que n'importe quel emplacement de mémoire dans les blocs de mémoire machine 210a-e peut être identifié de facon unique par la combinaison d'un numéro de module, d'un numéro de bloc et d'un décalage. Comme cela est représenté sur la figure 8, l'adresse machine 806 inclut une telle combinaison d'un numéro de module 806a, d'un numéro de bloc 806b et d'un décalage 806c. L'adresse machine 806 peut par exemple être un mot, dans lequel les bits de rang faible sont utilisés pour le décodage 806c, les bits de rang moyen sont utilisés pour le numéro de bloc 206b et les bits de
rang élevé sont utilisés pour le numéro de module 806a.
On notera qu'on peut se référer à des adresses machine selon d'autres moyens. Par exemple dans une forme de réalisation, chacun des contrôleurs de mémoire 802a-b effectue un mappage des emplacements de mémoire machine, qu'il commande, sur un espace d'adresses machine séquentiel à base zéro, auquel cas chacun des emplacements de mémoire machine dans les blocs de mémoire machine 210a-e peut être spécifié par une combinaison du numéro de module et de
l'adresse de machine.
Le matériel de commande de mémoire 836 inclut également un système d'interaonnexion 808 qui permet d'accéder aux blocs de mémoire machine 210a-e au moyen des contrôleurs de mémoire 802a-b. Comme cela sera décrit plus loin de façon plus détaillée, le mécanisme de conversion 210 peut accéder à un emplacement de mémoire machine en envoyant au matériel de commande de mémoire 836 une commande de lecture/d 'écriture contenant l'adresse machine de l 'emplacement de mémoire auquel l'accès est réalisé. La commande de lecture/d 'écriture est transmise par le système d'interconnexion 808 à celui, qui est approprié, des contrôleurs de mémoire 802a-b, qui exécute l'opération demandée de lecture/d 'écriture à l'adresse de mémoire
machine spécifice.
Comme décrit précédemment, lors de l'initialisation du mécanisme 210 de conversion d'adresses physiques en adresses machine, le mécanisme 210 de conversion d'adresses physiques en adresses machine peut crcer une parité de blocs de mémoire physiques 212a-f. Dans un mode de mise en oeuvre, une pluralité de blocs de mémoire physiques sont créés pour chacun des contrôleurs de mémoire 802a-b. Par exemple, des blocs de mémoire physiques 212a-c peuvent réaliser un mappage sur la mémoire machine commandée par le premier contrôleur de mémoire 802a, tandis que des blocs de mémoire physiques 212d-f peuvent réaliser un mappage sur la mémoire machine commandée par le second
contrôleur de mémoire 802b.
Bien qu'aucun des blocs de mémoire physiques 212a-f (figure 2) ne s'étende sur plus d'un des contrôleurs de mémoire 802a-b, dans la pratique chaque bloc de mémoire physique est composé de façon typique par imbrication d' emplacements de mémoire machine intercalaires à partir de multiples contrôleurs de mémoire de manière à accroître la probabilité que tous les contrôleurs de mémoire contribuent d'une manière égale aux références de mémoire produites
dans le temps.
On va maintenant décrire la conversion de l'adresse physique 804 en l'adresse machine 806 par le
mécanisme de conversion 210 dans une forme de réalisation.
Comme cela a été décrit d'une manière générale ci-dessus en référence à la table 3, le mécanisme de conversion 210 conserve des mises en correspondance entre des gammes d'adresses physiques et des gammes d'adresses machine. Dans une forme de réalisation, le mécanisme de conversion 210 inclut une mémoire associative ou adressable par le contenu (CAM) 810 qui conserve ses mises en correspondance et convertit des gammes d'adresses physiques en des gammes d'adresses machines. De façon plus spécifique, la mémoire CAM reçoit comme signal d'entrce une gamme d'adresses physiques et délivre comme signal de sortie (dans le bus de sortie 812) le nombre de modules et le nombre de blocs de
la gamme correspondante d'adresses machine.
Par exemple, comme cela est représenté sur la figure 8, l'adresse physique 804 inclut des bits supérieurs 804a et des bits inférieurs 804c. Les bits supérieurs 804a sont envoyés à la mémoire CAM 810, qui délivre le nombre de modules et le nombre de blocs des adresses machine, qui sont mis en correspondance avec la gamme d'adresses
physiques utilisant en commun des bits supérieurs 804a.
La mémoire CAM 810 exécute cette conversion de la manière suivante. La mémoire CAM inclut une pluralité d'entrées de conversion 810a-c. Bien que seules trois entrces de conversion 810a-c soient représentées sur la figure 8 à titre d'exemples, on peut avoir un nombre quelconque d'entrée de conversion (le nombre 64 est typique). En outre, bien que toutes les entrées 810a-c possèdent des composants internes similaires, seuls les composants internes de l'entrée 810a sont représentés sur
la figure 8 pour la commodité de l' illustration.
Chacune des entrées de conversion 810a-c met en concordance ou mappe une gamme approprice d'adresses physiques avec ou sur un bloc de mémoire machine correspondant (spécifié par un numéro de module et un numéro de bloc machine). La manière dont cette mise en concordance est conservée est décrite à titre d'exemple en rapport avec l'entrée 810a. Les autres entrées 810b-c
fonctionnent de facon similaire.
Les bits supérieurs 804a de l'adresse physique 804 sont envoys s à l'entrée 810a. L'entrée 810a inclut un registre d'adresses de base 814 qui spécifie la gamme
d'adresses physiques qui sont mappées par l'entrée 810a.
* L'entrce 810a inclut un comparateur 882 qui compare les bits supérieurs 804a de l'adresse physique 804 à l'adresse de base 814. S'il existe une concordance, le comparateur 822 commande un registre de conversion primaire 820, qui mmorise le numro de modnle et le numAro du bloc de mmoire machie, qui rdalise le mappage sur la gamme d'adreGGes physiques spAcifideG par les bitG supArieurs 804a. Le numAro de modue et le numro de bloc machine sont dlivrAs dans le bus de sortie 812. Comme cela va atre dAcrit ci-aprAG de fago plus dAtaille en rfArence la figure 7, l'entre de conversion 810a peut galement fournir un mappage secondaire de la gamme d'adreGGeG physiques spCifideG par le regiGLre d'adreGGes de base 814 sur ue gamme secondaire d'adreGGeG de mmoire machine. On Lel mappage Gecondaire peuL ALre fourni par un regiGLre de converGion secodaire 818, qui fonctionne de la mme maniAre que le regiGtre de conversion primaire 820. Si une concordance est identifie par le coparateur 822, le comparateur 822 commande les sorties la fois du registre de converGion primaire 820 et du registre de conversion Gecondaire 818. Le registre de conversion secondaire 818 dlivre un numro de module et un numro de bloc dans le bus de sorLie secondaire 832, dans lequel ils sonL incorpor{s dans une commande de lecLure/criLure secondaire 834. La commande de lecLure/criture secondaire 834 fonctionne de la mame maniAre que la commande de lecture/criture primaire 828 et par consquent n'est pas reprdsente de faon dtaille sur
la figure 8 et est dcrite de fagon dtaille ici.
Bien que 1'exemple Ci-deSsuG concerne uniquement 1'entre de conversion 810a, deG bits suprieurG 804a sonL envoyAs Loutes 1eG entres de coversion 810a-c, qui fonctionnent de fagon similaire. De fagon typique seule l'une des entrdes de conversion 810a-c concorde avec leG bits suprieurs 804a et dlivre un numAro de module et un numdro de bloc de machine danG le bus de sortie 812. Comme cela est en outre reprsentd sur la figure 8, leG bits infArieurs 804c de 1'adresse physique 804 sont utilisAs
pour former le dAcalage 806c de l'adreGGe machine 806.
La mémoire CAM 810 forme la commande de lecture/ d'écriture 828 par combinaison du numéro de module de sortie et du numéro de bloc avec un bit de lecture (R) 824 et un bit d'écriture (W) 826. Le bit R 824 et le bit W 826 sont mémorisés dans et délivrés par le registre de conversion primaire 820 et sont tous deux réglés sur une valeur implicite. Un bit de lecture activé 824 indique que des opérations de lecture doivent être transmises au contrôleur de mémoire correspondant. De façon similaire, un bit d'écriture positionné 826 indique que des opérations d'écriture doivent être transmises au contrôleur de mémoire correspondant. Comme décrit précédemment, les tailles de blocs physiques peuvent varier. Il en résulte que le nombre de bits nocessaires pour spécifier une gamme d'adresses physiques correspondant à un bloc physique peut varier en fonction de la taille de bloc physique. Par exemple un moins grand nombre de bits sont nécessaires pour spécifier des blocs physiques plus grands que pour spécifier des blocs physiques plus petits. Par exemple, comme représenté sur la figure 8, dans une forme de réalisation un nombre aussi élevé que 16 bits (bits 29-44 de l'adresse physique 804) sont utilisés pour spécifier l'adresse de base d'un bloc physique posséJant la taille de bloc physique minimale (indiquce par "MIN BLOCKSIZE" sur la figure 8), tandis qu'un nombre aussi faible que 13 bits (bits 32-44 de l'adresse physique 804 sont utilisés pour spécifier l'adresse de base d'un bloc physique possédant la taille de bloc physique maximale (indiquée par "MAX BLOCKSIZE"). On notera que les tailles maximale et minimale de bloc représentées sur la figure 8 sont indiquées uniquement à
titre d'exemples.
Pour autoriser une conversion d'adresse lorsque des tailles de blocs physiques variables sont autorisées, chacune des entrées de conversion 810a-c peuvent inclure une zone de masque. Par exemple, comme représenté sur la figure 8, l'entrée de conversion 810a inclut une zone de masque 816. La zone de masque d'une entrée de conversion est utilisce pour garantir que le nombre de bits comparés par l'entrée de conversion correspond à la taille du bloc physique qui est mis en correspondance par l'entrée de conversion. De façon plus spécifique, la zone de masque d'une entrce de conversion règle le nombre de bits moyens 804b de l'adresse physique 804 qui sont utilisés dans la
comparaison exécutée par l'entrée de conversion.
La zone de masque 816 peut être utilisée dans n'importe laquelle d'une variété de différentes façons. Si par exemple la taille du bloc physique mis en concordance par l'entrée de conversion 810a possède la taille de bloc minimale, alors (dans cet exemple) l 'ensemble des bits supérieurs 838 doit être comparé par le comparateur 832. Si cependant la taille du bloc physique mis en correspondance par l'entrée de conversion 810a possède la taille de bloc maximale, alors (dans cet exemple) seuls treize des seize bits supérieurs 804 doivent être comparés par le comparateur 822. La valeur mémorisce dans le registre de zones de masques 816 spécifie combien des bits supérieurs 804a doivent être utilisés dans la comparaison exécutée par le comparateur 822. La valeur mémorisée dans le registre de zones de masques 816 est prévue en tant que signal d'entrée envoyé au comparateur 822. La valeur mémorisée dans le registre de zones de masques 816 peut prendre n'importe laquelle d'une variété de formes, et le comparateur 822 peut utiliser la valeur de n'importe laquelle d'une variété de manières pour comparer le nombre correct de bits, comme cela est bien connu des spécialistes ordinaires de la technique. Dans des formes de réalisation, dans lesquelles le mécanisme de masquage que l'on vient de décrire est utilisé, les bits médians 804b de l'adresse physique sont acheminés au moyen du mécanisme de conversion 210 et sont envoyés à une porte ET 830, qui réalise une combinaison ET logique des bits moyens 804b et de la zone de masque 816 (ou d'une manière plus générale, la zone de masque de l'entrée de conversion qui correspond aux bits supérieurs 804a de l'adresse physique 804). Le signal de sortie de la porte ET 830 est utilisé pour former la partie supérieure du décalage 806c. En effet, la porte ET 830 annule des bits de décalage non utilisés pour des tailles de blocs physiques plus petites. La porte ET 830 est facultative et peut ne pas être utilisée si les contrôleurs de mémoire 802a-b sont à même d' ignorer des bits de décalage on
utilisés lorsqu'ils ne sont pas nécessaires.
Selon un autre aspect de la présente invention, des techniques sont prévues pour réaliser la remise en correspondance d'un bloc de mémoire physique d'une ressource de mémoire machine (par exemple un bloc de
mémoire machine) à un autre dans un serveur partitionnable.
Par exemple, si l'un des blocs de mémoire machine 210a-e du serveur est remplacé par un nouveau bloc de mémoire machine, les blocs de mémoire physiques, qui ont été mis en correspondance sur le bloc de mémoire machine original peuvent être remappés avec le nouveau bloc de mémoire machine. Cette remise en concordance peut être exéautée par le mécanisme 210 de conversion d'adresses physiques en adresses machine. La remise en concordance peut impliquer le copiage d'une image depuis la ressource de mémoire machine (telle que le bloc de mémoire physique remplacé) d'une autre source de mémoire machine (tel que le bloc de mémoire machine de remplacement). Ces mêmes techniques peuvent être utilisoes pour exécuter une remise en correspondance lorsque par exemple un bloc de mémoire machine est retiré du serveur 300 ou y est ajouté. En particulier on prévoit des techniques pour exéauter une 3 5 tel le remise en concordance sans réinitialiser le serveur 300 et sans interrompre le fonctionnement du ou des
systèmes d'exploitation intervenant dans le serveur.
Par exemple, en référence à la figure 7, on a représenté un organigramme d'un procédé 700 qui est utilisé par un processeur de service pour remettre en correspondance un bloc de mémoire physique P depuis une ressource de mémoire machine à une autre dans un mode de mise en oeuvre de la présente invention. Le procédé 700 recoit une demande de remise en correspondance du bloc de mémoire physique P à partir d'une ressource de mémoire machine d'origine Ms en direction d'une ressource de mémoire machine de destination MD (pas 702). Les ressources de mémoire d'origine et de destination peuvent être par exemple des blocs de mémoire machine ou des parties de tels blocs. Par exemple, en se référant à nouveau à la figure 2, si un bloc de mémoire machine 210a était remplacé par un autre bloc de mémoire machine, il serait nécessaire de remettre en correspondance le bloc de mémoire physique 212a
sur des adresses dans le nouveau bloc de mémoire machine.
Dans un tel cas, le bloc de mémoire machine 210a serait la ressource de mémoire machine d'origine Ms et le bloc de mémoire de machine de remplacement serait la ressource de
mémoire de destination MD.
Le procédé 700 copie alors le contenu du bloc de mémoire physique P provenant de la ressource de mémoire Ms à la ressource de mémoire MD. Dans une forme de
réalisation, ce copiage est exéauté de la manière suivante.
Le procédé 700 programme les registres de conversion secondaire (comme par exemple le registre de conversion secondaire 818) du mécanisme de conversion 210 avec les nombres de modules et de blocs de la ressource de mémoire MD (pas 704). Le bloc de mémoire physique P est maintenant mappé à la fois sur la ressource de mémoire Ms (mappage primaire) et sur la ressource de mémoire MD (mappage
secondaire).
Le procédé 700 active des bits d'écriture (W) des registres de conversion secondaire (pas 706). Etant donné que les bits d'écriture des registres de conversion primaire ont déjà été activés, l' activation des bits d'écriture des registres de conversion secondaire a pour effet que l 'ensemble des transactions d'écrite est dupliqué
dans les deux ressources de mémoire Ms et MD.
Le procédé 700 lit et rcécrit ensuite l' ensemble du bloc de mémoire physique P (pas 708). Etant donné que le bloc P est mappé à la fois sur la ressource de mémoire Ms et sur la source de mémoire Mp, le pas d'exécution 708 a pour effet que le contenu du bloc de mémoire physique P est copié depuis la ressource de mémoire Ms dans la ressource de mémoire Mp. Dans une forme de réalisation, l'un des processeurs du serveur exécute le pas 708 au moyen d'une écriture puis d'une réécriture en chaque emplacement de mémoire dans le bloc de mémoire physique P. La technique du pas 708 peut cependant ne pas fonctionner avec certains processeur qui ne réécrivent pas des valeurs inchangées dans la mémoire. Une solution à ce problème est d'équiper le serveur 300 d'au moins un processeur qui identifie une instructions spéciale qui commande de façon forcée des totalisations nettes dans la mémoire cache pour réaliser une réécriture dans la mémoire. Une autre solution consiste à ajouter une unité spéciale au système d'interconnexion 808 qui balaye le bloc physique P. en lisant puis en
réécrivant chaque bloc en ces emplacements de mémoire.
Le procédé 700 active les bits de lecture (A) des registres de conversion secondaire (tel que le registre de conversion secondaire 818) et active les bits lus dans les registres de conversion primaire (tels que le registre de conversion primaire 820) (pas 710). Les bits de lecture et d'écriture des registres de conversion secondaire sont maintenant activés, alors que seuls les bits d'écriture des 3 5 registres de conversion primaire sont activés. Etant donné que chaque processeur peut comporter sa propre mémoire de conversion CAM et que, de facon typique, il n'est pas possible de modifier toutes les mémoires CAM de conversion simultanément, il peut être nocessaire d'exécuter la commutation simultanément des bits de lecture primaire et secondaire. Le procédé 700 supprime les bits d'écriture des registres de conversion primaire (pas 712). Le bloc de mémoire physique P a maintenant été remappé de la ressource de mémoire MS à la ressource de mémoire MD sans qu'il soit nécessaire que le serveur 300 soit réinitialisé et sans autre opération d' interruption du serveur 300. Les registres de conversion secondaire mappent le bloc physique P sur la ressource de mémoire Mp, qui contient une réplique exacte du contenu du bloc physique P. En outre à la fois les bits de lecture et d'écriture des registres de conversion primaire sont maintenant supprimés et à la fois les bits de lecture et d'écriture de registres de conversion secondaire sont maintenant activés. Il en résulte que des accès ultérieurs à des adresses dans le bloc physique P réalisent un mappage sur des adresses correspondantes dans la ressource de mémoire MD. La ressource de mémoire MS peut être supprimée à des fins de
maintenance ou peut être utilisée dans d'autres buts.
Bien que le procédé 700 décrit précédemment en référence à la figure 7 remappe uniquement un seul bloc de mémoire physique, les spécialistes de la technique noteront comment on peut remapper des blocs de mémoire physiques multiples et des parties de blocs de mémoire physiques en utilisant des techniques similaires. Si par exemple les blocs de mémoire machine 210a et 210b (figure 2) étaient remplacés par un ou plusieurs nouveaux blocs de mémoire machine, les blocs de mémoire physiques 212a, 212b et 212c seraient remappés sur les nouveaux blocs de mémoire machine. Sinon, si un seul bloc machine 210a était remplacé par un nouveau bloc de mémoire physique, la totalité du bloc de mémoire physique 212a et seule une partie du bloc de mémoire physique 212b serait remappée sur
le nouveau bloc de mémoire machine.
Bien que les formes de réalisation particulière décrites ci-dessus décrivent l'utilisation du mécanisme 210 de conversion d'adresses physiques en adresses machine pour fournir une couche d' indirection entre les ressources de mémoire 302b du serveur 300 (figure 3A) et des processus d'exécution de partition en 322a-b du serveur 300 (figure 3B) on notera que di fférentes formes de réal i sat ion de la présente invention peuvent être utilisoes pour prévoir une couche d' indirection entre les processus et d'autres ressources du serveur 300, telles que les ressources I/O 302e. Cette couche d' indirection peut permettre avantageusement à des systèmes de fonctionnement classiques non modifiés d'exécuter des partitions 322a-b du serveur
300 pour accéder aux ressources I/O 302a du serveur.
En référence à la figure 6, un modèle de ressource physique généralisé 600 correspondant à une forme de réalisation de la présente invention est représenté sous la forme d'un schéma-bloc fonctionnel. Précisément de la même manière que le modèle 200 représenté sur la figure 2 peut être utilisé pour fournir un espace d'adresses de mémoire physique auquel l'accès peut être effectué par des processus travaillant dans des partitions du serveur 300, le modèle 600 représenté sur la figure 6 peut être utilisé d'une manière plus générale pour fournir un espace d'adresses physiques pour accéder à des ressources de l'un queleonque d'une pluralité de types, telles que les ressources de traitement 302a, les ressources de mémoire 302b, les ressources d'interaonnexion 302c, les ressources de puissance 302d ou les ressources I/O 302e. D'une manière générale, un espace d'adresses pour un ensemble de ressources est également désigné ici comme étant un "espace
d'identifiant de ressources".
Le modèle 600 inclut une pluralité de ressources 610a-g, qui peuvent être une pluralité de ressources d'un type particulier (par exemple des ressources I/O ou des ressources de traitement). Le modèle 600 inclut un espace d'adresse machine 602 qui réalise le mappage des ressources 610a-g sur une pluralité d'identifiants de ressources machines 616a-g. Par exemple, dans le cas de ressources de mémoire, les identifiants de ressources machine 616a-g peuvent être les adresses 216 (figure 2c). Dans le cas de ressources I/O, les identifiants de ressources machines peuvent être des numéros de porte ou d'autres identifiants prédéterminés quelconques que le serveur 300 utilise pour identifier les ressources I/O matérielles (machine). Un système d'exploitation travaillant dans un ordinateur non partitionné classique adresse de facon typique des ressources machines 610a-g directement en utilisant les identifiants de ressources machine 616a-g. Bien que l'espace d'adresse machine 602 représenté sur la figure 6 soit séquentiel et à base de zéro, ce n'est qu'un exemple et ceci ne constitue pas la limitation de la présente invention; Le modèle 600 inclut un mécanisme 616 de conversion d'adresses physiques en adresses machines, qui mappent des ressources machine 610a-g sur des ressources physiques 612a-g. Un exemple d'un tel mappage est le mappage entre des emplacements de mémoire dans des blocs de mémoire machine 210a-e et des emplacements de mémoire dans
le bloc de mémoire physique 212a-f (figure 2).
Le modèle 600 inclut des sous-modèles 614a et 614b, qui correspondent respectivement à des partitions 322a et 322b du serveur 300 (figure 3B). Lors de la création d'une partition, le mécanisme de conversion d'adresses physiques en adresses machines affecte une ou plusieurs des ressources physiques non affectées 612a-g à la partition. Le mécanisme 616 de conversion d'adresses physiques en adresses machine mappe les ressources physiques allouées sur un espace d'adresses physiques pour la partition. Par exemple le modèle 214a inclut un espace d'adresse physique 602a, qui inclut une pluralité d'adresses physiques 618a-c correspondant aux ressources physiques respectives 612b, 612e et 612d. De façon similaire le modèle 214b inclut un espace d'adresses physiques 602b qui inclut une pluralité d'adresses physiques 618d-f, correspondant respectivement aux ressources physiques 612f, 612a et 612c. Un exemple particulier d'un tel espace d'adresses physiques dans le cas de ressources de mémoire va être décrit ci-après en
référence à la figure 4.
Le mécanisme 610 de conversion d'adresses physiques en adresses machine est intercalé logiquement entre les ressources machines 610a-g du serveur 300 et les systèmes d'exploitation 324a-b et travaillant dans les partitions 322a-b. Le mécanisme 610 de conversion d'adresses physiques en adresses machine réalise une conversion entre des identifiants de ressources physiques 618a-f référencés par les systèmes d' exploitation 324a-b et des identifiants de ressources machine 616a-g, qui se réfèrent directement aux ressources machine 610a-g du
serveur. Il en résulte que, lorsque les systèmes d' exploi-
tation 324a-b essaient d'accéder à l'une des ressources machine 610a-g en utilisant l'un des identifiants des ressources physiques 610a-f, le mécanisme 610 de conversion d'adresses physiques en adresses machines convertit l'identifiant de ressources physiques spécifié en l'identifiant de ressources machine correspondant et exécute d'une manière transparente l'accès demandé sur la base du système d' exploitation. Le mécanisme 610 de conversion d'adresses physiques en adresses machine fournit par conséquent l' aspect de chacun des systèmes d'exploiLation 324a-b, gu'il meL en oeuvre dans un seul
ordinateur non partiLionn.
Par exemple dans une forme de ralisation, l'acc@s aux ressourceG I/O 302e 'effectue en utilisant une entre/sortie "I/O mappe en mmoire". L'expression I/O mappe en mmoire se rf@re l'utilisation des mmeG instructions et du mme bus pour communiguer la fois avec la mmoire principale (par exemple des resources de mmoire 302b) et des dispositifs I/O (par exemple des 1Q ressources I/O 302e). Ceci est l'oppos deproceseurs qui posAdent un bus I/O spard et utilisent des inGtructions spciales pour accder ce bus. Confocdment l'entrde/Gortie I/O mappe en mmoire, les dispositifs I/O Gont adresss danG certaines gammes d'adresses rserves dans le bus de mmoire principal. Ces adresses ne peuvent par consguent pas Atre utilises pour la mmoire principale. L'accAs des disposiLifs I/O de cette manire consiste babiLuellement lire et crire certain registres incorporAG. Le mcanisme 210 de conversion d'adreGGes physigues en adresses machines (tigure 2) peut tre utilis pour garantir que des demandes faites par des systmes d'exploitation 324a-d pour accder 1'un gueleonque de ces regiGtreG incorpords sont mapps Gur les emplacements de ! mmoire appropri6s dans les ressources de mmoire 302b du serveur, ce gui valide d'une maniAre transparente des entrdes/sorties I/O mappeG en mmoire, dans deG partitions
d'uo serveur partitionnable.
DanG une forme de ralisation, les technigues dcrites ci-deGGus sont uLilises pour rendre virtuelG les registreG d'inLerruptions d'uniLs centrales C[U dans les ressources de traitement 302a du serveur. Comme lment de base, l'unitd centrale cPu inclut de fagon typigue plusieurs emplacementG Gdciaux de mmoire dsign4G comme tant des registres d'interrupLion, dont chacun possde une adreGGe particulire qui peut tre utilise pour (crire dans le registre. Un effet secondaire de l'écriture d'une configuration particulière dans un registre particulier d' interruptions de l'unité centrale CPU peut appliquer une interruption à l'unité centrale CPU. Des interruptions particulières, qui sont supportées, varient entre les unités centrales CPU, comme cela est bien connu du
spécialiste ordinaire de la technique.
Il est souhaitable dans certains cas de déplacer le contexte courant dans lun des processeurs du serveur (dans les ressources de traitement 302a) vers un autre processeur. Cependant lors du cours normal d'exécution d'une opération, des adaptateurs I/O et un autre logiciel font souvent la connaissance des adresses des registres d' interruptions de l'unité centrale CPU, et il peut être difficile de reprogrammer de tels adaptateurs et d'autres logiciels pour utiliser différentes adresses du registre des interruptions. C' est pourquoi il est souhaitable que les adresses des registres d'interruptions, qui sont utilisées par les adaptateurs I/O et un autre logiciel, restent inchangées même lorsqu'une image migre d'un
processeur à un autre.
Les techniques de remappage de mémoire décrite précédemment en rapport avec la figure 7 peuvent être utilisces pour atteindre cet objectif dans une forme de réalisation de la présente invention. On va considérer un exemple dans lequel il est souhaitable de déplacer l' image utilisée dans un premier processeur vers un second processeur dans les ressources de traitement 302a du serveur. Lorsque l'unité de gestion du système décide d'effectuer cette migration, il informe de façon typique le processeur de service de ses intentions d'effectuer la migration. Le processeur de service localise une unité centrale CPU vide (parmi les ressources de traitement 302a) qui n'est pas affectée à une quelconque partition, et interrompt le premier processeur (le processeur devant être quitté). Cette interruption peut être une interruption spéciale, dont le système d'exploitation qui travaille avec le premier processeur, n'a pas connaissance. Cette interruption spéciale oriente le cours de l'exécution sur l'exéaution d'un code à niveau bas au-dessous du système d'exploitation qui est utilisé pour l'initialisation et pour masquer des détails, spécifiques à la réalisation, vis-à-vis du système d'exploitation. Un tel code est usuel dans des systèmes informatiques modernes et peut par exemple être réalisé en utilisant des séquences intégrces de microcodes et/ou d' instructions de l'unité centrale CPU, qui sont extraites d'un emplacement spécifique défini par le système. Le code à niveau bas provoque le transport du contexte depuis le premier processeur vers le second processeur, et l'exéaution reprend dans le second processeur. Cependant, comme cela a été décrit précédemment, il est souhaitable que les adresses du registre d' interruptions de l 'unité CPU reste inchangée en tant que résultat d'une commutation de contexte d'un processeur à un
autre. Les techniques de remappage de mémoire décrites ci-
dessus en rapport avec la figure 7 peuvent être utilisoes pour atteindre cet objectif. Une fois que le processeur de service a identifié la seconde unité centrale CPU, des accès aux registres d' interruptions de la première unité centrale CPU peuvent être temporairement dupliqués dans les registres d' interruption de la seconde unité centrale CPU d'une manière similaire à celle avec laquelle des inscriptions dans la mémoire principale sont temporairement dupliquces sur deux blocs de mémoire comme cela a été décrit précédemment en référence à la figure 7 et représenté sur la figure 8. Les registres d' interruption de la première unité centrale CPU jouent le rôle de la ressource de mémoire d'origine Ms (mappage primaire) décrite précédemment, tandis que les registres d'interrup tion de la seconde unité centrale CPU jouent le rôle de la ressource de mémoire de destination MD (mappage secondaire). Il en résulte que des interruptions sont envoyées aux première et seconde unités centrales CPU. Alors que le processus de déplacement de contexte est exécuté, la première unité centrale CPU continue à traiter les interruptions, alors que la seconde unité centrale CPU
collecte des interruptions, mais n'agit pas sur elles.
Lorsque le déplacement de contexte est terminé, la première unité centrale CPU s'arrête de traiter des interruptions et la seconde unité centrale CPU commence à traiter et à exécuter des interruptions. En raison de l'utilisation des techniques que l'on vient de décrire, des adaptateurs I/O et un autre logiciel peuvent continuer à accéder à des registres d' interruptions d'unités centrales CPU en utilisant les mêmes adresses que précédemment avant la commutation de contexte. Le mécanisme de conversion 210 convert it de façon transparente ces adresses en les adresses des registres d'interruption dans la seconde unité
centrale CPU.
Bien qu'il soit possible qu'une ou plusieurs interruptions puissent être traitées à de multiples reprises en utilisant ce système, de façon typique un tel traitement de duplication ne pose aucun problème étant donné que des programmes de traitement d' interruptions appellent de façon typique le dispositif d' interruption
pour déterminer s'il a besoin d'un service.
Parmi les avantages de l'invention, on peut citer
un ou plusieurs des avantages suivants.
Il est souhaitable que chaque partition dans un serveur partitionnable soit fonctionnellement équivalente à un ordinateur autonome (non partitionné). Par exemple il est souhaitable que l' interface entre un système d'exploi tation et la partition, dans laquelle il fonctionne, soit fonctionnellement équivalente à l' interface d'un système d'exploitation et le matériel d'un ordinateur autonome. Par exemple la partition présente au système d' exploitation un espace d'adresses séquentielles à base zéro. Etant donné que des systèmes d'exploitation classiques sont conçus pour travailler en liaison avec un tel espace d'adresses, une partition, qui présente de façon transparente un tel espace d'adresses peut supporter un système d'exploitation
classique sans modification.
Un avantage de différentes formes de réalisation de la présente invention réside dans le fait qu'elles fournissent des espaces d'adresses séquentiels à base zéro dans des partitions d'un serveur partitionnable. Des systèmes d'exploitation classiques sont conçus de façon typique de sorte qu'on peut supposer qu'un espace d'adresses physiques, qu'ils adressent, est numéroté séquentiellement en commençant à partir de zéro. Cette hypothèse est vraie pour des ordinateurs non partitionnés, mais pas pour des ordinateurs partitionnés. C' est pourquoi un système d'exploitation classique peut ne pas fonctionner à l'intérieur d'une partition qui ne possède pas un espace d'adresses séquentielles à base zéro. Différentes formes de réal i sat ion de la présente invent ion, qui fourni ssent des espaces d'adresses séquentielles à base zéro peuvent par conséquent être avantageusement utilisées pour permettre à des systèmes d' exploitation classiques non modifiés de fonctionner dans des partitions d'un serveur partitionnable. De tels systèmes d'exploitation incluent par exemple des systèmes d'exploitation dans ligne Microsoft Windows de systèmes d' exploitation (tels que Windows NT, Windows 200 et Windows XP) ainsi que des systèmes d'exploitation Unix et des variantes Unix (telles que Linux). Ceci est avantageux pour une variété de raisons, comme par exemple la suppression de la nocessité de personnaliser le système d'exploitation pour son fonctionnement dans une partition d'un serveur partitionnable et la presque-élimination des pénalités de performances présentées de façon typique par deux systèmes
de partitionnement, comme décrit précédemment.
De façon similaire, le fait de prévoir de façon transparente un espace d'adresses séquentielles à base zéro peut être utilisé pour permettre à des partitions de travailler avec n'importe quelle configuration matérielle qui est supportée par un système d' exploitation travaillant dans la partition. En outre des programmes d' application existants, qui travaillent dans le système d'exploitation,
peuvent travailler dans la partition sans modification.
Etant donné que la conversion d'adresse néces-
saire est fournie par le mécanisme 210 de conversion d'adresses physiques en adresses machine non pas par le
système d'exploitation, aucun niveau additionnel d'indirec-
tion n'est requis dans les tables des pages du système d'exploitation. Ceci permet de réduire fortement les pénalités de performances qui résultent de façon typique de la délivrance du niveau additionnel d'indirection dans les
tables de pages du système d'exploitation.
Etant donné qu'une conversion d'adresses est exéautée au niveau matériel, différentes formes de réalisation de la présente invention fournissent avantageusement un niveau de sécurité entre partitions renforcé du point de vue matériel, qui peut être plus sûr que des systèmes de sécurité renforcés du point de vue logiciel. Une telle sécurité peut être utilisée à la place ou en supplément de mécanismes de sécurité renforcés du
point de vue logiciel.
Un autre avantage des différentes formes de réalisation de la présente invention réside dans le fait que les conversions exécutées par le mécanisme de translation 210 peuvent imposer seulement une faible pénalité du point de vue performances. En particulier des conversions peuvent être exéautées rapidement et en parallèle avec un autre traitement grâce à la mise en oeuvre du mécanisme de conversion 210 sous forme matérielle, comme cela est représenté par exemple sur la figure 8. Une telle forme de réalisation matérielle peut exéauter une conversion rapidement et sans nécessiter aucune modification des tables des pages du système
d' exploitation.
On comprendra que bien que l' invention ait été décrite ci-dessus sur la base de formes de réalisation particulières, les formes de réalisation mentionnces précédemment sont prévues uniquement à titre illustratif et ne limitent pas ou ne définissent pas la portée de l 'invention. Différentes autres formes de réalisation incluant, sans y être limitées ce qui suit, entrent
également dans le cadre des revendications.
Des éléments et composants décrits ici peuvent en outre être divisés en composants additionnels ou être réunis entre eux pour former un moins grand nombre de composants pour assumer les mêmes fonctions. Les techniques décrites ici peuvent être mises en oeuvre par exemple sous une forme matérielle, une forme logicielle, sous la forme d'un micrologiciel ou selon une combinaison quelconque de ces techniques. Les techniques décrites ci-dessus peuvent être mises en oeuvre dans un ou plusieurs programmes d'ordinateurs travaillant dans un ordinateur programmable incluant un processeur, un milieu de mémoire pouvant être lu par le processeur (y compris par exemple une mémoire volatile et une mémoire non volatile et/ou des éléments de mémorisation), ou moins un dispositif d'entrée et au moins un dispositif de sortie. Le code de programme peut être appliqué au signal d'entrée introduit en utilisant le dispositif d'entrée pour assumer les fonctions décrites et produire un signal de sortie. Le signal de sortie peut être
délivré à un ou plusieurs dispositifs de sortie.
Chaque programme d'ordinateur dans le cadre des
revendications indiquées ci-après peut être mis en oeuvre
selon n'importe quel langage de programmation, comme par exemple un langage d'assemblage, un langage machine, un langage de programmation de procédure à niveau haut ou un langage de programmation orienté objet. Le langage de programmation peut par exemple être un langage de programmation compilé ou interprété. Le terme "traitement" tel qu'il est utilisé ici se réfère à n'importe quel
programme logiciel exéauté dans un ordinateur.
Chaque programme d'ordinateur de ce type peut être mis en oeuvre dans un produit de programme dordinateur mis en oeuvre de façon réelle dans un dispositif de mémoire lisible en machine pour son exécution par un processeur d'ordinateur. Les étapes des procédés selon l 'invention peuvent être mises en oeuvre au moyen d'un processeur d'ordinateur exéautant un programme réalisé de façon tangible sur un support lisible par ordinateur pour l'exéaution de fonctions de l 'invention par une action appliquée à un signal d'entrée et par la délivrance d'un signal de sortie. Des processeurs appropriés incluent à titre d'exemples à la fois des microprocesseurs à usage général et à usage spécial. D'une manière générale, le processeur reçoit des instructions et des données de la part -d'une mémoire morte et/ou d'une mémoire à accès direct. Des dispositifs de mémoire approprié pour mettre en oeuvre de façon réelle les instructions de programmes d'ordinateurs incluent par exemple toutes les formes de mémoire non volatile, comme par exemple des dispositifs de mémoire à semiconducteurs, y compris des dispositifs de mémoire EPROM, de mémoire EEPROM et de mémoire flash; des disques magnétiques tels que des disques durs internes et des disques amovibles; des disques magnétooptiques; et des mémoires CD-ROM. N' importe laquelle des unités précédentes peut être complétées à ou incorporces dans les systèmes

Claims (6)

REVEND I CAT I ONS
1. Procédé mis en oeuvre par ordinateur pour créer un espace d'identifiants de ressources physiques dans une partition (322a) d'un système informatique (300) partitionnable (300), qui inclut une pluralité d'emplace- ments de mémoire machine (302b) possédant une pluralité d'adresses de mémoire machine (216), le procédé comprenant les étapes consistant à: (A) établir un mappage entre une pluralité d'adresses de mémoire physiques (218a) et au moins certaines de la pluralité d'adresses de mémoire machine, la pluralité d'adresses de mémoire physiques (218) étant numérotées séquentiellement en commençant à partir de zéro; (B) prévoir, pour un programme logiciel (324a) fonctionnant dans la partition (322a), une interface pour accéder à au moins certains de la pluralité d'emplacements de mémoire machine en utilisant la
pluralité d'adresses de mémoire physiques (218a).
2. Procédé selon la revendication 1, selon lequel l'étape (A) comprend une étape consistant à créer une table de conversion d'adresses (222a), qui enregistre le mappage entre la pluralité d'adresses de mémoire physiques (218a) et au moins certains de la pluralité d'identifiants de
ressources machine.
3. Procédé selon la revendication 1, selon lequel l' interface comprend une mémoire associative (810) qui
établit le mappage.
4. Procédé pour accéder à l'un sélectionné d'une pluralité d' emplacements de mémoire machine (302b) spécifiés par une adresse de mémoire physique dans un système informatique partitionnable (300), qui inclut la pluralité d'emplacements de mémoire machine (302b), le procédé comprenant les mémoires consistant à: (A) identifier un mappage associé à une partition (322a) dans le système informatique partitionnable (300), le mappage mettant en correspondance une pluralité d'adresses de mémoire physiques (218a) dans un espace d'adresses de mémoire physiques séquentielles à base zéro (202a) de la partition (322a), avec au moins certaines d'une pluralité d'adresses de mémoire machine (216) associées à la pluralité d' emplacements de mémoire machine (302b); (B) convertir l'adresse de mémoire physique en une adresse de mémoire machine en utilisant le mappage, l'adresse de mémoire machine spécifiant celle qui est sélectionnée parmi la pluralité de ressources machine; et (C) amener l'une sélectionnce de la pluralité de ressources machine à déclencher l'accès à celle sélectionnée de la pluralité de ressources machine en
utilisant l'identifiant de ressource machine.
5. Procédé destiné à être utilisé dans un système informatique partitionnable (300) incluant une pluralité d' emplacements de mémoire machine (302b) possédant une pluralité d'adresses de mémoire machine (216) , le système informatique partitionnable (300) incluant en outre une pluralité d'emplacements de mémoire physiques (218a) comportant une pluralité d'adresses de mémoire physiques (218a), qui sont mises en correspondance avec au moins certaines de la pluralité d'adresses de mémoire machine, le système informatique partitionnable (300) comprenant en outre une pluralité de partitions (322a-b) exécutant une pluralité de programmes logiciels (324a-b), le procédé comprenant les étapes consistant à: (A) sélectionner un premier sous-ensemble de la pluralité d'emplacements de mémoire physiques (302b), le premier sous-ensemble de la pluralité d'emplacements de mémoire (302b) étant mis en correspondance avec un premier sous-ensemble de la pluralité d'adresses de mémoire machine (216); et (a) remeLtre en correspondance le premier sous-ensemble de la pluraliLA d'eplacemets de memoirs (3Q2b) avec un second sousensemble de la pluraliLA d'adreses de memoirs machine (216) sans rdinitialiser le syL@me
a informatigue parLiLionnable (300).
6. Proceeds salon la revendication 5, comprenant en outre lea Stages consistent: (C) avant l'tape (B), copier le content du premier sousensemble de la plurality d'adresses de mmoire machine (216) au niveau de 1' ensemble du second sous ensemble sAlectionnd de la plurality d'adreseG de memoirs
machine (216).
ASIC (circuits intégrés spécifiques à l 'application conçus spécialement). Un ordinateur peut en général recevoir également des programmes et des données de la part d'un support de mémoire tel qu'un disque interne (non représenté) ou un disque amovible. On trouvent également ces éléments dans un ordinateur de bureau ou un ordinateur de traitement de texte classique ainsi que dans d'autres ordinateurs convenant pour exécuter des programmes d'ordinateurs mettant en oeuvre les procédés décrits ici, qui peuvent être utilisés en liaison avec n'importe quel moteur d' impression numérique ou n'importe quel moteur de marquage, et contrôleur d'affichage ou n'importe quel autre dispositif de sortie de trames apte à produire des pixels en couleurs ou des pixels de l'échelle des gris sur un papier, un film, un écran d'affichage ou un autre milieu de
FR0215340A 2001-12-07 2002-12-05 Ressources visualisees dans un serveur partitionnable Expired - Fee Related FR2833372B1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/017,371 US20030110205A1 (en) 2001-12-07 2001-12-07 Virtualized resources in a partitionable server

Publications (2)

Publication Number Publication Date
FR2833372A1 true FR2833372A1 (fr) 2003-06-13
FR2833372B1 FR2833372B1 (fr) 2007-01-19

Family

ID=21782202

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0215340A Expired - Fee Related FR2833372B1 (fr) 2001-12-07 2002-12-05 Ressources visualisees dans un serveur partitionnable

Country Status (2)

Country Link
US (1) US20030110205A1 (fr)
FR (1) FR2833372B1 (fr)

Families Citing this family (197)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6725284B2 (en) * 2002-04-25 2004-04-20 International Business Machines Corporation Logical partition hosted virtual input/output using shared translation control entries
US7509644B2 (en) * 2003-03-04 2009-03-24 Secure 64 Software Corp. Operating system capable of supporting a customized execution environment
US7613797B2 (en) * 2003-03-19 2009-11-03 Unisys Corporation Remote discovery and system architecture
EP1665622A2 (fr) * 2003-08-19 2006-06-07 General Dynamics-Advanced Information Systems, Inc. Unite d'interface de confiance et procede de fabrication et d'utilisation
US8776050B2 (en) * 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
US20050044301A1 (en) * 2003-08-20 2005-02-24 Vasilevsky Alexander David Method and apparatus for providing virtual computing services
AU2004280976A1 (en) * 2003-10-08 2005-04-21 Unisys Corporation Computer system para-virtualization using a hypervisor that is implemented in a partition of the host system
US7356665B2 (en) * 2003-12-17 2008-04-08 International Business Machines Corporation Method and system for machine memory power and availability management in a processing system supporting multiple virtual machines
US7606995B2 (en) * 2004-07-23 2009-10-20 Hewlett-Packard Development Company, L.P. Allocating resources to partitions in a partitionable computer
US20060031672A1 (en) * 2004-08-03 2006-02-09 Soltis Donald C Jr Resource protection in a computer system with direct hardware resource access
US7930539B2 (en) * 2004-08-03 2011-04-19 Hewlett-Packard Development Company, L.P. Computer system resource access control
US20060136694A1 (en) * 2004-12-17 2006-06-22 Robert Hasbun Techniques to partition physical memory
US7480742B2 (en) * 2005-02-25 2009-01-20 International Business Machines Corporation Method for virtual adapter destruction on a physical adapter that supports virtual adapters
US7398328B2 (en) * 2005-02-25 2008-07-08 International Business Machines Corporation Native virtualization on a partially trusted adapter using PCI host bus, device, and function number for identification
US7543084B2 (en) * 2005-02-25 2009-06-02 International Business Machines Corporation Method for destroying virtual resources in a logically partitioned data processing system
US7386637B2 (en) * 2005-02-25 2008-06-10 International Business Machines Corporation System, method, and computer program product for a fully trusted adapter validation of incoming memory mapped I/O operations on a physical adapter that supports virtual adapters or virtual resources
US7260664B2 (en) * 2005-02-25 2007-08-21 International Business Machines Corporation Interrupt mechanism on an IO adapter that supports virtualization
US20060195618A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation Data processing system, method, and computer program product for creation and initialization of a virtual adapter on a physical adapter that supports virtual adapter level virtualization
US20060212870A1 (en) * 2005-02-25 2006-09-21 International Business Machines Corporation Association of memory access through protection attributes that are associated to an access control level on a PCI adapter that supports virtualization
US7376770B2 (en) * 2005-02-25 2008-05-20 International Business Machines Corporation System and method for virtual adapter resource allocation matrix that defines the amount of resources of a physical I/O adapter
US7870301B2 (en) * 2005-02-25 2011-01-11 International Business Machines Corporation System and method for modification of virtual adapter resources in a logically partitioned data processing system
US20060195848A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation System and method of virtual resource modification on a physical adapter that supports virtual resources
US20060195663A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation Virtualized I/O adapter for a multi-processor data processing system
US7308551B2 (en) * 2005-02-25 2007-12-11 International Business Machines Corporation System and method for managing metrics table per virtual port in a logically partitioned data processing system
US20060195623A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation Native virtualization on a partially trusted adapter using PCI host memory mapped input/output memory address for identification
US7546386B2 (en) * 2005-02-25 2009-06-09 International Business Machines Corporation Method for virtual resource initialization on a physical adapter that supports virtual resources
US20060193327A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation System and method for providing quality of service in a virtual adapter
US7464191B2 (en) * 2005-02-25 2008-12-09 International Business Machines Corporation System and method for host initialization for an adapter that supports virtualization
US7685335B2 (en) * 2005-02-25 2010-03-23 International Business Machines Corporation Virtualized fibre channel adapter for a multi-processor data processing system
US7398337B2 (en) * 2005-02-25 2008-07-08 International Business Machines Corporation Association of host translations that are associated to an access control level on a PCI bridge that supports virtualization
US7493425B2 (en) * 2005-02-25 2009-02-17 International Business Machines Corporation Method, system and program product for differentiating between virtual hosts on bus transactions and associating allowable memory access for an input/output adapter that supports virtualization
US20060195617A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation Method and system for native virtualization on a partially trusted adapter using adapter bus, device and function number for identification
US7496790B2 (en) 2005-02-25 2009-02-24 International Business Machines Corporation Method, apparatus, and computer program product for coordinating error reporting and reset utilizing an I/O adapter that supports virtualization
US7475166B2 (en) * 2005-02-28 2009-01-06 International Business Machines Corporation Method and system for fully trusted adapter validation of addresses referenced in a virtual host transfer request
US7464189B2 (en) * 2005-05-23 2008-12-09 International Business Machines Corporation System and method for creation/deletion of linear block address table entries for direct I/O
US20070005815A1 (en) * 2005-05-23 2007-01-04 Boyd William T System and method for processing block mode I/O operations using a linear block address translation protection table
US7502872B2 (en) * 2005-05-23 2009-03-10 International Bsuiness Machines Corporation Method for out of user space block mode I/O directly between an application instance and an I/O adapter
US7502871B2 (en) * 2005-05-23 2009-03-10 International Business Machines Corporation Method for query/modification of linear block address table entries for direct I/O
US7552240B2 (en) 2005-05-23 2009-06-23 International Business Machines Corporation Method for user space operations for direct I/O between an application instance and an I/O adapter
US20060265525A1 (en) * 2005-05-23 2006-11-23 Boyd William T System and method for processor queue to linear block address translation using protection table control based on a protection domain
US8327353B2 (en) * 2005-08-30 2012-12-04 Microsoft Corporation Hierarchical virtualization with a multi-level virtualization mechanism
US7577761B2 (en) * 2005-08-31 2009-08-18 International Business Machines Corporation Out of user space I/O directly between a host system and a physical adapter using file based linear block address translation
US7500071B2 (en) * 2005-08-31 2009-03-03 International Business Machines Corporation Method for out of user space I/O with server authentication
US7657662B2 (en) * 2005-08-31 2010-02-02 International Business Machines Corporation Processing user space operations directly between an application instance and an I/O adapter
US20070052715A1 (en) * 2005-09-07 2007-03-08 Konstantin Levit-Gurevich Device, system and method of graphics processing
US9038071B2 (en) * 2006-03-30 2015-05-19 Microsoft Technology Licensing, Llc Operating system context isolation of application execution
US7685401B2 (en) * 2006-12-27 2010-03-23 Intel Corporation Guest to host address translation for devices to access memory in a partitioned system
US7685399B2 (en) * 2007-01-07 2010-03-23 International Business Machines Corporation Method, system, and computer program products for data movement within processor storage
US8880582B2 (en) * 2007-03-30 2014-11-04 Hewlett-Packard Development Company, L.P. User access to a partitionable server
US7797508B2 (en) * 2007-07-31 2010-09-14 International Business Machines Corporation Fair memory resource control for mapped memory
KR101146866B1 (ko) * 2007-11-13 2012-05-16 삼성전자주식회사 통신 시스템에서 자원할당 시스템 및 방법
US10437865B1 (en) * 2009-01-21 2019-10-08 Vmware, Inc. Computer storage deduplication
US8161001B2 (en) * 2009-05-07 2012-04-17 Bmc Software, Inc. Relational database page-level schema transformations
US9069672B2 (en) * 2009-06-12 2015-06-30 Intel Corporation Extended fast memory access in a multiprocessor computer system
US8489797B2 (en) * 2009-09-30 2013-07-16 International Business Machines Corporation Hardware resource arbiter for logical partitions
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US8505097B1 (en) * 2011-06-30 2013-08-06 Emc Corporation Refresh-and-rotation process for minimizing resource vulnerability to persistent security threats
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US8924779B2 (en) * 2012-03-30 2014-12-30 Lsi Corporation Proxy responder for handling anomalies in a hardware system
US10740148B2 (en) 2013-07-12 2020-08-11 Hewlett Packard Enterprise Development Lp Accelerated data operations in virtual environments
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US11068420B2 (en) 2015-05-12 2021-07-20 Hewlett Packard Enterprise Development Lp Scalable software stack
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
WO2017155523A1 (fr) * 2016-03-09 2017-09-14 Hewlett Packard Enterprise Development Lp Espace d'adressage virtuel de serveur
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US12001688B2 (en) 2019-04-29 2024-06-04 Pure Storage, Inc. Utilizing data views to optimize secure data access in a storage system
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
KR20210081088A (ko) * 2019-12-23 2021-07-01 에스케이하이닉스 주식회사 메모리 컨트롤러를 포함하는 스토리지 장치
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0301275A2 (fr) * 1987-07-29 1989-02-01 International Business Machines Corporation Partage logique des ressources d'un système de traitement de données
EP0593874A2 (fr) * 1992-10-19 1994-04-27 International Business Machines Corporation Système et méthode pour réconfigurer des ressources dans un système d'ordinateur
US5784706A (en) * 1993-12-13 1998-07-21 Cray Research, Inc. Virtual to logical to physical address translation for distributed memory massively parallel processing systems
FR2767939A1 (fr) * 1997-09-04 1999-03-05 Bull Sa Procede d'allocation de memoire dans un systeme de traitement de l'information multiprocesseur

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3723976A (en) * 1972-01-20 1973-03-27 Ibm Memory system with logical and real addressing
US4511964A (en) * 1982-11-12 1985-04-16 Hewlett-Packard Company Dynamic physical memory mapping and management of independent programming environments
US5117350A (en) * 1988-12-15 1992-05-26 Flashpoint Computer Corporation Memory address mechanism in a distributed memory architecture
US5522075A (en) * 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
US5875464A (en) * 1991-12-10 1999-02-23 International Business Machines Corporation Computer system with private and shared partitions in cache
US5455775A (en) * 1993-01-25 1995-10-03 International Business Machines Corporation Computer design system for mapping a logical hierarchy into a physical hierarchy
US5584042A (en) * 1993-06-01 1996-12-10 International Business Machines Corporation Dynamic I/O data address relocation facility
US5564040A (en) * 1994-11-08 1996-10-08 International Business Machines Corporation Method and apparatus for providing a server function in a logically partitioned hardware machine
US6105053A (en) * 1995-06-23 2000-08-15 Emc Corporation Operating system for a non-uniform memory access multiprocessor system
US5761477A (en) * 1995-12-04 1998-06-02 Microsoft Corporation Methods for safe and efficient implementations of virtual machines
US6151618A (en) * 1995-12-04 2000-11-21 Microsoft Corporation Safe general purpose virtual machine computing system
US5721858A (en) * 1995-12-12 1998-02-24 International Business Machines Corporation Virtual memory mapping method and system for memory management of pools of logical partitions for bat and TLB entries in a data processing system
US5940870A (en) * 1996-05-21 1999-08-17 Industrial Technology Research Institute Address translation for shared-memory multiprocessor clustering
US5860146A (en) * 1996-06-25 1999-01-12 Sun Microsystems, Inc. Auxiliary translation lookaside buffer for assisting in accessing data in remote address spaces
US6163834A (en) * 1998-01-07 2000-12-19 Tandem Computers Incorporated Two level address translation and memory registration system and method
US6253224B1 (en) * 1998-03-24 2001-06-26 International Business Machines Corporation Method and system for providing a hardware machine function in a protected virtual machine
US6260155B1 (en) * 1998-05-01 2001-07-10 Quad Research Network information server
US6314501B1 (en) * 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
DE19853569A1 (de) * 1998-11-20 2000-05-25 Bayer Ag Neue Urethanacrylate, Verfahren zu ihrer Herstellung sowie ihre Verwendung
US20010037435A1 (en) * 2000-05-31 2001-11-01 Van Doren Stephen R. Distributed address mapping and routing table mechanism that supports flexible configuration and partitioning in a modular switch-based, shared-memory multiprocessor computer system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0301275A2 (fr) * 1987-07-29 1989-02-01 International Business Machines Corporation Partage logique des ressources d'un système de traitement de données
EP0593874A2 (fr) * 1992-10-19 1994-04-27 International Business Machines Corporation Système et méthode pour réconfigurer des ressources dans un système d'ordinateur
US5784706A (en) * 1993-12-13 1998-07-21 Cray Research, Inc. Virtual to logical to physical address translation for distributed memory massively parallel processing systems
FR2767939A1 (fr) * 1997-09-04 1999-03-05 Bull Sa Procede d'allocation de memoire dans un systeme de traitement de l'information multiprocesseur

Also Published As

Publication number Publication date
US20030110205A1 (en) 2003-06-12
FR2833372B1 (fr) 2007-01-19

Similar Documents

Publication Publication Date Title
FR2833372A1 (fr) Ressources visualisees dans un serveur partitionnable
EP3762826B1 (fr) Migration en direct de machines virtuelles dans des systèmes informatiques distribués
US20200394065A1 (en) Faster access of virtual machine memory backed by a host computing device&#39;s virtual memory
US10540092B2 (en) Method and system for memory oversubscription for virtual machines
EP3991040B1 (fr) Système de gestion de conteneur doté d&#39;un système de gestion de disposition
US9286098B1 (en) Using master file template area to increase density of virtual machines in a computer system
US8904081B1 (en) Composing a virtual disk using application delta disk images
US8683466B2 (en) System and method for generating a virtual desktop
US7447896B2 (en) OS mini-boot for running multiple environments
US7725559B2 (en) Virtual data center that allocates and manages system resources across multiple nodes
US20120054742A1 (en) State Separation Of User Data From Operating System In A Pooled VM Environment
US20110071983A1 (en) Server image migration
US20070061441A1 (en) Para-virtualized computer system with I/0 server partitions that map physical host hardware for access by guest partitions
US10574524B2 (en) Increasing reusability of and reducing storage resources required for virtual machine images
US20070067366A1 (en) Scalable partition memory mapping system
WO2006027488A1 (fr) Mécanismes pour la virtualisation de cpu
EP1643344B1 (fr) Procédé de gestion des licenses des logiciels exécutées sur des plateformes partionnables d&#39;un système à processeurs multiples
US20200183905A1 (en) Systems and methods for performing scalable log-structured merge (lsm) tree compaction using sharding
US20100169881A1 (en) Method and system for efficient image customization for mass deployment
US20120060004A1 (en) System for virtual disks version control
US11614864B2 (en) Managed placement of object components in an object-based datastore
US10642783B2 (en) System and method of using in-memory replicated object to support file services wherein file server converts request to block I/O command of file handle, replicating said block I/O command across plural distributed storage module and performing said block I/O command by local storage module
US20050076156A1 (en) Runtime virtualization and devirtualization of memory by a virtual machine monitor
FR2799286A1 (fr) Unite personnalisee de donnees locales
CN116830084A (zh) 用于动态容器网络管理的服务网络方法

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20090831