DE112012005085B4 - Bereitstellen logischer Partitionen mit einer ausschließlichen Nutzung eines Prozessorkerns wiedergebenden hardware-strang-spezifischen Information - Google Patents
Bereitstellen logischer Partitionen mit einer ausschließlichen Nutzung eines Prozessorkerns wiedergebenden hardware-strang-spezifischen Information Download PDFInfo
- Publication number
- DE112012005085B4 DE112012005085B4 DE112012005085.1T DE112012005085T DE112012005085B4 DE 112012005085 B4 DE112012005085 B4 DE 112012005085B4 DE 112012005085 T DE112012005085 T DE 112012005085T DE 112012005085 B4 DE112012005085 B4 DE 112012005085B4
- Authority
- DE
- Germany
- Prior art keywords
- hardware
- thread
- specific information
- logical
- register
- 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.)
- Active
Links
- 238000005192 partition Methods 0.000 title claims abstract description 27
- 238000000034 method Methods 0.000 claims abstract description 49
- 230000008569 process Effects 0.000 claims abstract description 29
- 230000004044 response Effects 0.000 claims abstract description 8
- 230000000873 masking effect Effects 0.000 claims abstract 2
- 230000001131 transforming effect Effects 0.000 claims abstract 2
- 238000004590 computer program Methods 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims 1
- 102000004137 Lysophosphatidic Acid Receptors Human genes 0.000 description 42
- 108090000642 Lysophosphatidic Acid Receptors Proteins 0.000 description 42
- 230000001419 dependent effect Effects 0.000 description 11
- 238000006243 chemical reaction Methods 0.000 description 10
- 230000003287 optical effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45541—Bare-metal, i.e. hypervisor runs directly on hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
Abstract
Verfahren zum Bereitstellen von hardware-strang-spezifischen Informationen in einem Prozessor (10A-10D) mit mehreren Strängen, welcher eine Anzahl an Hardware-Strängen unterstützt, auf dem mehrere Prozesse innerhalb logischer Partitionen ausgeführt werden, wobei das Verfahren aufweist:Pflegen der hardware-strang-spezifischen Informationen in einem Register (51) innerhalb des Prozessors mit mehreren Strängen;Erkennen eines Zugriffs auf die hardware-strang-spezifischen Informationen durch einen der derzeit ausgeführten Prozesse;Feststellen, ob eine Berechtigungsebene des derzeit ausgeführten Prozesses anzeigt, dass der derzeit ausgeführte Prozess einem Prozess innerhalb einer gegebenen der mehreren logischen Partitionen entspricht; undals Reaktion auf das Feststellen dass der derzeit ausgeführten Prozess einem Prozess innerhalb einer gegebenen der mehreren logischen Partitionen entspricht, selektives Umwandeln der hardware-strang-spezifischen Informationen auf eine Weise, die als ausschließliche Nutzung des Prozessors mit mehreren Strängen durch Hardware-Stränge anzeigt, die für Prozesse der gegebenen logischen Partition ausgeführt werden, während Hardware-Strang spezifische Informationen maskiert werden, die in dem Register vorhanden sind, das einem oder mehreren Hardware-Strängen des Prozessors mit mehreren Strängen entspricht, die zur Ausführung von Prozessen einer anderen logischen Partition zugewiesen wird, bei der es sich nicht um die gegebene logische Partition handelt
Description
- HINTERGRUND DER ERFINDUNG
- Gebiet der Erfindung
- Die vorliegende Erfindung betrifft Verarbeitungssysteme und Prozessoren und genauer Techniken zum Verwalten von Werten von hardware-strang(thread)-spezifischen Informationen, die an durch Hardware-Stränge eines Prozessorkerns ausgeführte logische Partitionen ausgegeben werden.
- Beschreibung des Standes der Technik
- In großen Computersystemen, insbesondere in Mehrbenutzer-Computersystemen oder so genannten Cloud-Computing-Systemen, in denen mehrere Prozessoren mehrere virtuelle Betriebssysteme und Images unterstützen, die als logische Partitionen (logical partitions (LPARs)) bezeichnet werden, verwaltet ein Hypervisor die Zuweisung von Ressourcen zu den LPARs sowie das Starten/Anhalten von LPARs beim Hochfahren/Herunterfahren des Systems und Kontextwechseln. Die LPARs sind vorzugsweise voneinander isoliert, wenn das System verwendet wird, um zum Beispiel das Ausführen unterschiedlicher LPARs für unterschiedliche Kunden zu unterstützen. Üblicherweise unterstützen die in solch einem Computersystem verwendeten Prozessorkerne ein gleichzeitiges Ausführen mehrerer Hardware-Stränge, z.B. 8 oder mehr Hardware-Stränge, die parallelen Ausführungs-Pipelines innerhalb des Prozessorkerns entsprechen. Üblicherweise weist der Hypervisor zudem jeder LPAR eine Anzahl von Strängen zu.
- Ein Status und andere informative Werte innerhalb des Prozessors sind hardware-spezifisch, d.h. bei den Werten kann es sich entweder um einen Wert für jede Hardware-Strang-Nummer handeln, sie können vom Strang abhängen, der versucht, auf den Wert zuzugreifen, oder es kann sich um die Anzahl von Hardware-Strängen handeln, die der Prozessor unterstützt.
- Es wäre wünschenswert, Techniken zum Verwalten von Zugriffen auf hardware-strang-spezifische Informationen bereitzustellen, die unabhängig davon sind, welche LPAR auf die Informationen zugreift, und Sicherheit zwischen LPARS bereitstellen.
- Im Stand der Technik offenbart
US 2006 / 0 004 942 A1 einen Prozessor mit mehreren Kernen und Unterstützung für mehrere virtuelle Prozessoren.US 2006 / 0 253 682 A1 offenbart die Verwaltung des Computerspeichers in einem Computer mit dynamischer logischer Partitionierung, die in Bezug auf die Betriebssysteme in logischen Partitionen transparent arbeitet. - KURZDARSTELLUNG DER ERFINDUNG
- Die Erfindung ist in einem Verfahren, Computersystemen, einem Prozessorkern und einem Computerprogrammprodukt ausgebildet, die hardware-strang-abhängige Statusinformationen als Reaktion auf Zugriffsanfragen bereitstellen. Die als Reaktion auf die Zugriffsanfragen ausgegebenen Informationen werden umgewandelt, wenn es sich beim Anfrager um ein Programm handelt, das mit einer niedrigeren Berechtigungsebene als der Berechtigungsebene des Hypervisors ausgeführt wird, so dass jede logische Partition den Prozessor so wahrnimmt, als ob sie eine ausschließliche Nutzung des Prozessorkerns besitzt.
- Das Verfahren kann durch einen logischen Schaltungsblock innerhalb des Prozessors realisiert werden, welche die hardware-strang-spezifischen Informationen in eine logische Darstellung der hardware-strang-spezifischen Informationen umwandelt, die eine ausschließliche Nutzung des Prozessorkerns durch Stränge einer durch den Prozessor ausgeführten logischen Partition wiedergibt. Alternativ dazu kann die Umwandlung durch Programmanweisungen eines Interrupt-Abwicklers durchgeführt werden, der den Zugriff auf das physische Register des Prozessorkerns unterbricht. Der Interrupt-Abwickler wandelt entweder die Inhalte des Registers direkt um oder führt die Umwandlung über ein Nachschlagen im Speicher einer Tabelle durch, die zuvor umgewandelte strang-spezifische Informationen enthält.
- Die vorstehenden und weitere Ziele, Merkmale und Vorteile der Erfindung werden aus der folgenden genaueren Beschreibung der bevorzugten Ausführungsform der Erfindung ersichtlich, wie in den begleitenden Zeichnungen veranschaulicht.
- KURZBESCHREIBUNG DER MEHREREN ZEICHNUNGSANSICHTEN
- Die neuartigen Merkmale, die als die Erfindung kennzeichnend angesehen werden, sind in den angehängten Ansprüchen dargelegt. Die Erfindung an sich sowie eine bevorzugte Verwendungsart, weitere Ziele und Vorteile davon werden jedoch am besten unter Bezugnahme auf die folgende detaillierte Beschreibung der Erfindung in Verbindung mit den begleitenden Figuren verständlich, in denen gleiche Bezugszeichen gleiche Komponenten bezeichnen und:
-
1 ein Blockschaubild zeigt, das ein Verarbeitungssystem veranschaulicht, in dem Techniken gemäß einer Ausführungsform der vorliegenden Erfindung ausgeführt werden; -
2 ein Blockschaubild zeigt, das Details eines Prozessorkerns 20 gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht; -
3 ein Blockschaubild zeigt, das Details eines logischen Stranginformationsblocks 50 innerhalb des Prozessorkerns 20 gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht; -
4 einen Ablaufplan zeigt, der ein Verfahren gemäß einer weiteren Ausführungsform der vorliegenden Erfindung darstellt. - DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
- Die vorliegende Erfindung betrifft Prozessorkerne und Verarbeitungssysteme, in denen innerhalb von Prozessorkernen gespeicherte hardware-strang-abhängige umgewandelt werden, wenn auf sie durch logische Partitionen (LPARs) zugegriffen wird, die auf die Informationen zugreifen. Die Umwandlung wird so durchgeführt, dass es jeder LPAR so erscheint, als ob die LPAR eine ausschließliche Nutzung des Prozessorkerns besitzt. Wenn zum Beispiel ein Prozessorkern 8 Hardware-Stränge unterstützt und die Stränge gleichmäßig zwischen zwei durch den Prozessorkern ausgeführten LPARs verteilt sind, werden Anfragen nach der Anzahl von durch den Prozessor unterstützten Hardware-Strängen als 4 ausgegeben, wenn die LPAR auf diese Information zugreift. Gleichermaßen werden Arrays von hardware-strang-spezifischen Informationen oder Wörtern, die Felder von strang-spezifischen Informationen enthalten, so modifiziert, dass sie nur 4 mit null (oder einer anderen durch den Prozessor verwendeten Basis-Strang-Nummer) beginnende Einträge enthalten. Die Umwandlung der hardware-strang-spezifischen Informationen wird durch einen Zugriff von einer Berechtigungsebene aus ausgelöst, die niedriger als die Berechtigungsebene des Hypervisors ist, so dass im Falle, dass der Hypervisor auf die hardware-strang-spezifischen Informationen zugreift, die hardware-strang-spezifischen Informationen für alle Hardware-Stränge ausgegeben werden. Die Umwandlung hardware-strang-spezifischer Registerwerte kann durch eine logische Schaltung oder durch einen Interrupt-Abwickler durchgeführt werden, der den Zugriff auf das Register unterbricht und den umgewandelten Wert ausgibt, der aus einer Tabelle in einem Speicher abgerufen oder direkt durch den Interrupt-Abwickler berechnet werden kann.
- Unter Bezugnahme auf
1 wird nun ein Verarbeitungssystem gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das abgebildete Verarbeitungssystem enthält eine Anzahl von Prozessoren 10A bis 10D, von denen jeder mit einer Ausführungsform der vorliegenden Erfindung konform ist. Das abgebildete Mehrfach-Verarbeitungssystem ist veranschaulichend, und zu Verarbeitungssystemen gemäß anderen Ausführungsformen der vorliegenden Erfindung zählen Ein-Prozessor-Systeme mit symmetrischen Mehrfachstrangkernen (symmetric multi-threading (SMT) cores). Die Prozessoren 10A bis 10D sind in ihrem Aufbau identisch und enthalten Kerne 20A bis 20B und einen lokalen Datenspeicher 12, bei dem es sich um eine Cachespeicherebene oder eine Ebene von einem internen Systemspeicher handeln kann. Die Prozessoren 10A bis 10B sind mit einem Systemspeicher 14, einem feste Laufwerke und optische Laufwerke beinhaltenden Datenspeicher-Teilsystem 16 zum Lesen von Medien, wie beispielsweise einer CD-ROM 17, verbunden, die ein Computerprogrammprodukt ausbilden und Programmanweisungen enthalten, die einen Hypervisor zum Steuern mehrere logischer Partitionen (LPARs) zur Ausführung durch die Prozessoren 10A bis 10D realisieren, und zudem Betriebssysteme, von denen jedes mindestens einen Überwachungsstrang zum Verwalten des Betriebssystemplaners und anderer Dienste besitzt, und auch ausführbare Programme enthalten, die innerhalb der logischen Partitionen ausgeführte Anwendungen und Dienste realisieren. Das veranschaulichte Verarbeitungssystem enthält zudem Eingabe/Ausgabe(E/A)-Schnittstellen und -Einheiten 18, wie beispielsweise Mäuse und Tastaturen zum Empfangen von Benutzereingaben, sowie grafische Anzeigen zum Anzeigen von Informationen. Während das System von1 verwendet wird, um eine Veranschaulichung eines Systems bereitzustellen, in dem die Prozessorarchitektur der vorliegenden Erfindung realisiert ist, versteht es sich, dass die abgebildete Architektur nicht einschränkend ist und dazu beabsichtigt ist, ein Beispiel eines geeigneten Computersystems bereitzustellen, in dem die Techniken der vorliegenden Erfindung angewandt werden. - Unter Bezugnahme auf
2 werden nun Details der Prozessorkerne 20A bis 20B von1 im abgebildeten Kern 20 veranschaulicht. Der Kern 20 enthält eine Anweisungsabrufeinheit (instruction fetch unit (IFU)) 22, die einen oder mehrere Anweisungsströme aus Cachespeicher oder Systemspeicher abruft und den Anweisungsstrom oder die Anweisungsströme einer Anweisungsdecodiereinheit 24 vorlegt. Eine globale Verteileinheit 25 verteilt die decodierten Anweisungen auf eine Anzahl interner Prozessor-Pipelines. Die Prozessor-Pipelines enthalten jeweils einen Registerzuordner 26, eine von Ausgabewarteschlangen 27A bis 27D und eine durch eine Zweigausführungseinheit (branch execution unit (BXU)) 28 bereitgestellte Ausführungseinheit, eine Bedingungsergebniseinheit (condition result unit (CRU)) 29, eine Festkommaeinheit-Ladespeichereinheit (fixed-point unit load-store unit (FXU/LSU)) 30 oder Fließkommaeinheiten (floating point units (FPUs)) 31A bis 31B. Register, wie beispielsweise ein Zählerregister (counter register (CTR)) 23A, ein Bedingungsregister (condition register (CR)) 23B, universelle Register (general-purpose registers (GPR)) 23D und Fließkomma-Ergebnisregister (floating-point result registers (FPR)) 23C stellen Speicherorte für durch die entsprechende(n) Ausführungseinheit(en) durchgeführte Operationen bereit. Eine globale Durchführungstabelle (global completion table (GCT)) 21 stellt eine Angabe ausstehender Operationen dar, die als abgeschlossen markiert ist, wenn die Ergebnisse einer Anweisung an das entsprechende der Ergebnisregister 23A bis 23D übertragen werden. Die Registerzuordner 26 weisen Datenspeicher in den verschiedenen Registersätzen zu, so dass ein gleichzeitiges Ausführen von Programmcode durch die verschiedenen Pipelines unterstützt werden kann. Die FXU/LSU 30 ist mit einem Datencachespeicher 44 verbunden, der ein Laden und Speichern von Datenwerten im Speicher bereitstellt, die durch die Pipelines im Kern 20 benötigt oder modifiziert werden. Der Datencachespeicher 44 ist mit einem oder mehreren Adressumsetzpuffern (translation look-aside buffers (TLB)) 45 verbunden, die reale oder virtuelle Adressen im Datencachespeicher 44 Adressen in einem externen Speicherraum zuordnen. - Der beispielhafte Prozessorkern 20 enthält zudem einen logischen Stranginformationsblock 50, der im veranschaulichenden Beispiel und der Einfachheit der Veranschaulichung wegen alle hardware-strang-spezifischen Register innerhalb des Prozessorkerns 20 enthält. Während die hardware-strang-spezifischen Register allgemein zusammen mit anderen Registern oder an jedem beliebigen Standort angeordnet sein können, sind sie in der abgebildeten Ausführungsform eines Prozessorkerns mit anderer Logik organisiert, die den Zugriff durch die FXU/LSU 30 auf die hardware-strang-abhängigen Statusinformationen innerhalb des Kerns 20 durch sowohl den Hypervisor als auch durch die LPARs und innerhalb der LPARs ausgeführte Anwendungen steuert. Zu beispielhaften hardware-strang-abhängigen Statusinformationen zählen ein Strangidentifikationsregister (thread identification register (TIR)) 41 und ein Strangstatusregister (thread status register (CR)) 42 zusammen mit einem strangübergreifenden Nachrichtenzustellungs-Statusregister 43. In der nachstehenden Tabelle 1 sind die beispielhaften hardware-strang-spezifischen Statusregister und deren Funktion sowie Inhalte/Bereiche physischer Register aufgeführt. Tabelle I zeigt zudem die logischen Bereiche/Inhalte, die an eine LPAR ausgegeben werden, die versucht, auf das physische hardware-strang-spezifische Register entweder durch die nachstehend unter Bezugnahme auf
3 beschriebene Steuerlogik oder durch die nachstehend unter Bezugnahme auf4 beschriebene Interrupt-Abwicklungssoftware zuzugreifen. Tabelle IRegistername Funktion/ Bedeutung Physischer Wertebereich Logischer Wertebereich Umwandlungsalgorithmus für logische Werte TIR (Strangidentifikationsregister) Enthält die Stranganzahl des zugreifenden Prozesses 0 bis N, wobei N = Anzahl der Stränge minus 1 0 bis M, wobei M = Anzahl von der LPAR zugewiesenen Strängen minus 1 TIR - Basis[LPAR] Strangausführungs-Statusregister (CR) Gibt an, ob ein Strang aktiv ist (ausgeführt wird) Enthält ein Bit für jeden der Stränge 0 bis N Enthält linksausgerichtete Bits für jeden der Stränge 0 bis M shl(Basis[LPAR]) & Maskieren Strangübergreifende Nachrichtenzustellungs- Statusregister Gibt an, ob Nachrichten an Zielstrang zugestellt wurden Enthält ein Bit für jeden der Stränge 0 bis N Enthält linksausgerichtete Bits für jeden der Stränge 0 bis M shl(Basis[LPAR]) & Maskieren - Beim TIR 41 handelt es sich um ein Register, das den Wert der Hardware-Strang-Nummer des Strangs ausgibt, der auf das TIR 41 zugreift. Um der LPAR ein logisches Äquivalent bereitzustellen, das eine ausschließliche Nutzung des Prozessorkerns 20 durch einen Hardware-Strang simuliert, muss die Strang-Nummer auf einen Bereich von Hardware-Strang-Nummern normiert werden, der zur LPAR gehört. Der Einfachheit wegen und zum Zwecke der Veranschaulichung wird hierin davon ausgegangen, dass die zum Ausführen einer LPAR zugewiesenen Stränge aufeinander folgend nummeriert sind und sich von einer Basis-Hardware-Strang-Nummer Basis[LPAR] bis Basis[LPAR]+M erstrecken, wobei M um eins kleiner als die Anzahl von für die LPAR zugewiesenen Strängen ist.
- Ein Umwandeln der Werte von TIR 41 erfordert lediglich ein Subtrahieren von Basis[LPAR] von der Strang-Nummer im TIR 41. Als ein Beispiel beträgt für einen Fall, in dem LPAR Nr. 1 Hardware-Strängen 0 bis 2 zugewiesen ist und somit Basis[LPAR]=0 aufweist und LPAR Nr. 2 Hardware-Strängen 3 bis 7 zugewiesen ist und somit Basis[LPAR]=3 besitzt, bei einem Zugriff des physischen Strangs 5 (von LPAR Nr. 2) auf TIR 41 der logische Wert, der durch eine die vorliegende Erfindung realisierende Hardware oder Software ausgegeben werden sollte, 2 (d.h. physischer Strang 5 minus Basis[LPAR], was 2 ergibt). Somit erscheint es für LPAR Nr. 1 durch die Umwandlung der physischen strang-spezifischen Informationen in logische strang-spezifische Informationen so, als ob sich der Bereich der Werte von TIR 41 von 0 bis 4 erstreckt, was das Ergebnis einer ausschließlichen Nutzung eines Prozessorkerns wäre, der fünf Hardware-Stränge unterstützt. Beim CR 42 handelt es sich um ein Register, dass den Ausführungszustand (aktiv/inaktiv) jedes Hardware-Strangs mit einem Bit für jeden durch den Prozessorkern 20 unterstützten Hardware-Strang enthält. Unter der Annahme, dass alle Bits von links nach rechts und beginnend mit 0 durchnummeriert sind, enthält der ausgegebene Wert im Falle eines Zugriffs durch eine LPAR auf das CR 42 ein Bit für jeden der für die LPAR zugewiesenen Stränge, so dass der physische Wert des CR 42 um Basis[LPAR] Bitpositionen nach links verschoben wird, um den an die LPAR ausgegebenen logischen Wert des CR 42 zu erhalten, und wird weiterhin mit einem Maskenwert maskiert der ein 1-Bit für jeden der LPAR zugewiesenen Hardware-Strang enthält. Wenn somit für das vorstehend gegebene Beispiel durch einen Strang von LPAR Nr.2, der eine Basis[LPAR] = 3 besitzt, auf das CR 42 zugegriffen wird, wird das CR 42 um drei Bitpositionen nach links verschoben und maskiert. Beim logischen Wert von CR 42 für LPAR Nr. 2 handelt es sich um ein 5-Bit-Feld, das die Bits 3 bis 7 des CR 42 enthält, das mit einer Maske 11111000 maskiert ist, um Informationen zu entfernen, die von rechts hereinverschoben wurden. LPAR Nr. 1, die eine Basis[LPAR] = 0 besitzt, empfängt ein Feld mit 3 Bits, das nur die Bits 0 bis 2 des CR 42 enthält, wobei es sich um den nicht verschobenen Wert des CR 42 handelt (da Basis[LPAR] = 0), der mit Maske = 11100000 maskiert ist, um Bits zu entfernen, die den physischen Strängen 3 bis 7 entsprechen. Das Umwandeln des Wertes des strangübergreifenden Nachrichtenzustellungs-Statusregisters 43 entspricht dem Umwandeln für das vorstehend beschriebene Steuerregister CR 42. Das strangübergreifende Nachrichtenzustellungs-Statusregister 43 enthält Bits, die anzeigen, ob eine Nachricht an einen anderen Strang zugestellt wurde. Das Register enthält ein Bit für jeden der anderen Stränge, so dass Nachrichten an jeden anderen Strang vom auf das Register zugreifenden Strang verfolgt werden können. Um den Wert des strangübergreifenden Nachrichtenzustellungs-Statusregisters 43 umzuwandeln, wird der tatsächliche Wert des strangübergreifenden Nachrichtenzustellungs-Statusregisters 43 um die durch Basis[LPAR] festgelegte Anzahl von Bits nach links verschoben. Somit empfängt im vorstehend gegebenen Beispiel LPAR Nr. 2 einen Wert für das strangübergreifende Nachrichtenzustellungs-Statusregister 43, bei dem es sich um ein 5-Bit-Feld handelt, das die Bits für die Stränge 3 bis 7 enthält, das um 3 Bits nach links verschoben und mit einem Wert von 11111000 maskiert ist, um Informationen zu entfernen, die unter Umständen von rechts hereinverschoben wurden. Gleichermaßen empfängt LPAR Nr. 1 einen Wert für das strangübergreifende Nachrichtenzustellungs-Statusregister 43, bei dem es sich um ein 3-Bit-Feld handelt, das die Bits für die Stränge 0 bis 2 enthält, das nicht verschoben ist und mit einem Wert von 11100000 maskiert ist, um Informationen über die physischen Stränge 3 bis 7 zu entfernen. Beim Senden von Nachrichten zwischen Strängen verwenden die durch die LPARs ausgeführten Programmanweisungen logische Strang-Nummern. Wenn eine logische Strang-Nummer, an die eine Nachricht gesendet wird, außerhalb des zum Ausführen der LPAR zugewiesenen Bereichs liegt, von welcher die Nachricht stammt, wird ein Fehler berichtet. Nachrichten an Stränge, die nicht zum Ausführen der LPAR zugewiesen sind, werden somit gesperrt, um einen Datenaustausch mit einem Strang einer anderen LPAR zu verhindern.
- Unter Bezugnahme auf
3 werden nun Details eines logischen Stranginformationsblockes 50 von2 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Die in3 abgebildete Schaltung stellt ein einzelnes Beispiel bereit, obwohl es viele unterschiedliche Arten gibt, den logischen Stranginformationsblock 50 zu realisieren. Innerhalb des logischen Stranginformationsblocks 50 werden hardware-strang-abhängige Informationsstatusregister durch ein Register 51 dargestellt, und es versteht sich, dass die Eingaben, Ausgaben und Schaltungen, die zum Durchführen der vorstehend beschriebenen Umwandlungen erforderlich sind, bei Bedarf für jedes solche Statusregister 51 dupliziert werden. Ein Auswähler 53 wählt die Ausgabe des Statusregisters 51 aus, es sei denn auf das Statusregister 51 wird durch einen Nicht-Hypervisor-Prozess (Steuersignal /hyp = 1) zugegriffen. Ein Logisches UND-Gatter 54 stellt dem Auswähler 53 das Auswahlsignal bereit, das im Falle, dass auf das Statusregister 51 durch einen Nicht-Hypervisor-Prozess zugegriffen wird, die Ausgabe der Umwandlungslogik 52 auswählt, welche die vorstehend unter Bezugnahme auf2 beschriebenen Umwandlungen durchführt. - Unter Bezugnahme auf
4 wird nun in einem Ablaufplan ein Verfahren zum Bereitstellen von hardware-strang-abhängigen Statusinformationen für LPARs gemäß einer alternativen Ausführungsform der vorliegenden Erfindung veranschaulicht. Das in4 veranschaulichte Verfahren erfordert keine Realisierung des logischen Stranginformationsblocks 50 im Prozessorkern 20 und stellt einen alternativen Mechanismus zum Umwandeln der physischen hardware-strang-abhängigen Registerwerte in Werte bereit, die eine ausschließliche Nutzung des Prozessorkerns 20 durch jede der LPARs simuliert. Wie in4 veranschaulicht, wird bei einem Zugriff eines Programms auf ein Register, das hardware-strang-spezifische Informationen enthält (Schritt 60) im Falle, dass es sich bei dem zugreifenden Prozess um den Hypervisor handelt (Entscheidung 61), der physische Registerwert ausgegeben (Schritt 62). Wenn es sich bei dem zugreifenden Prozess jedoch nicht um den Hypervisor handelt (Entscheidung 61), d.h. der zugreifende Prozess zu einer der LPARs gehört, wird ein Hardware-Interrupt ausgelöst, um den Zugriff zu unterbrechen (Schritt 63). Der Prozessorkern 20 besitzt programmatische Kontrolle über die Ausgabeadresse, an die der Interrupt-Dienst-Abwickler die Ausgabe vornehmen wird, und setzt die Ausgabeadresse auf die Adresse der Anweisung, die der Anweisung folgt, die versucht hat, auf das hardware-strang-abhängige Register zuzugreifen. Der logische Registerwert wird entweder erhalten, indem programmatisch Operationen durchgeführt werden, die ähnlich den durch die vorstehend unter Bezugnahme auf3 beschriebene Logik durchgeführten sind, oder die Umwandlung kann im Voraus durchgeführt und jedes Mal gepflegt werden, wenn eines der strang-abhängigen Statusinformationsregister im Speicher aktualisiert wird, so dass die logischen hardware-strang-abhängigen Registerwerte abgerufen (Schritt 64) und dann als Reaktion auf den Zugriff ausgegeben werden können (Schritt 65), was allgemein durchgeführt wird, indem das durch die zugreifende Anweisung angegebene Zielregister oder der entsprechende Speicherort mit den umgewandelten hardware-strang-abhängigen Informationen beschrieben wird. Der Prozess der Schritte 60 bis 65 wird wiederholt, bis das System heruntergefahren wird oder optional, falls ein LPAR tatsächlich volle und ausschließliche Nutzung des Prozessorkerns besitzt (Entscheidung 65), - Wie vorstehend festgehalten, können Teile der vorliegenden Erfindung in einem Computerprogrammprodukt ausgebildet werden, zu dem Firmware, ein Image in Systemspeicher oder einem anderen Speicher/Cachespeicher zählen, oder auf einem festen oder wiederbeschreibbaren Medium, wie beispielsweise einer optischen Platte mit darauf gespeichertem computerlesbarem Code gespeichert werden. Auf jeder beliebigen Kombination aus einem oder mehreren computerlesbaren Medien kann ein Programm gemäß einer Ausführungsform der Erfindung gespeichert werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel, ohne auf diese beschränkt zu sein, um ein System, eine Vorrichtung oder eine Einheit elektronischer, magnetischer, optischer, elektromagnetischer, Infrarot oder Halbleiter verwendender Art sowie jede beliebige geeignete Kombination des Vorgenannten handeln. Zu spezielleren Beispielen für das computerlesbare Speichermedium kann Folgendes gehören (nicht abschließende Liste): eine elektrische Verbindung mit einer oder mehreren Leitungen, eine transportable Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (random access memory (RAM)), ein Nur-Lese-Speicher (read-only memory (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (erasable programmable read-only memory (EPROM) oder Flash-Speicher), ein Lichtwellenleiter, ein transportabler Compact-Disk-Nur-Lese-Speicher (compact disc read-only memory (CD-ROM)), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination des Vorgenannten.
- Im Kontext der vorliegenden Anmeldung kann es sich bei einem computerlesbaren Speichermedium um jedes gegenständliche Medium handeln, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zum Ausführen von Anweisungen beinhalten oder speichern kann. Zu einem computerlesbaren Signalmedium kann ein verbreitetes Datensignal mit darin zum Beispiel in einem Basisband oder als Teil einer Trägerwelle ausgebildetem computerlesbarem Programmcode zählen. Solch ein verbreitetes Signal kann in jeder beliebigen einer Vielfalt von Formen ausgebildet werden, einschließlich, ohne auf diese beschränkt zu sein, elektromagnetische, optische oder jede geeignete Kombination davon. Bei einem computerlesbaren Signalmedium kann es sich um jedes computerlesbare Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Anweisungen übertragen, verbreiten oder transportieren kann. In einem computerlesbaren Medium enthaltener Programmcode kann mittels eines beliebigen geeigneten Mediums übertragen werden, wie beispielsweise, jedoch nicht beschränkt auf, kabellose, kabelgebundene, Lichtwellenleiterkabel, Hochfrequenz (HF) usw., oder einer beliebigen geeigneten Kombination des zuvor Genannten.
- Obwohl die Erfindung insbesondere unter Bezugnahme auf die bevorzugten Ausführungsformen davon gezeigt und beschrieben wurde, versteht es sich für den Fachmann, dass die vorhergehenden und weitere Änderungen in Form und Einzelheiten daran vorgenommen werden können, ohne vom Geist und Umfang der Erfindung abzuweichen.
Claims (8)
- Verfahren zum Bereitstellen von hardware-strang-spezifischen Informationen in einem Prozessor (10A-10D) mit mehreren Strängen, welcher eine Anzahl an Hardware-Strängen unterstützt, auf dem mehrere Prozesse innerhalb logischer Partitionen ausgeführt werden, wobei das Verfahren aufweist: Pflegen der hardware-strang-spezifischen Informationen in einem Register (51) innerhalb des Prozessors mit mehreren Strängen; Erkennen eines Zugriffs auf die hardware-strang-spezifischen Informationen durch einen der derzeit ausgeführten Prozesse; Feststellen, ob eine Berechtigungsebene des derzeit ausgeführten Prozesses anzeigt, dass der derzeit ausgeführte Prozess einem Prozess innerhalb einer gegebenen der mehreren logischen Partitionen entspricht; und als Reaktion auf das Feststellen dass der derzeit ausgeführten Prozess einem Prozess innerhalb einer gegebenen der mehreren logischen Partitionen entspricht, selektives Umwandeln der hardware-strang-spezifischen Informationen auf eine Weise, die als ausschließliche Nutzung des Prozessors mit mehreren Strängen durch Hardware-Stränge anzeigt, die für Prozesse der gegebenen logischen Partition ausgeführt werden, während Hardware-Strang spezifische Informationen maskiert werden, die in dem Register vorhanden sind, das einem oder mehreren Hardware-Strängen des Prozessors mit mehreren Strängen entspricht, die zur Ausführung von Prozessen einer anderen logischen Partition zugewiesen wird, bei der es sich nicht um die gegebene logische Partition handelt
- Verfahren nach
Anspruch 1 , wobei das Feststellen ferner feststellt, dass die Berechtigungsebene des derzeit ausgeführten Prozesses einem Hypervisor entspricht, der die mehreren logischen Partitionen verwaltet, und wobei das Verfahren ferner umfasst, dass als Reaktion auf die Feststellung, dass der aktuell ausgeführte Prozess ein Prozess des Hypervisors ist, die hardware-strang-spezifischen Informationen in einer Weise zu formatieren, die alle hardware-strang-spezifischen Informationen in dem Register für alle der Anzahl an durch den Prozessors mit mehreren Strängen unterstützten Hardware-Stränge zeigt. - Verfahren nach
Anspruch 1 , wobei das Umwandeln durch eine Schaltung durchgeführt wird, aufweisend: einen Logikblock, der einen logischen Registerwert aus den hardware-strang-spezifischen Informationen im Register erzeugt, um die ausschließliche Nutzung des Prozessors mit mehreren Strängen durch die gegebene Partition zu simulieren, wobei sich der logische Registerwert von einem tatsächlichen Wert im Register unterscheidet; und einen mit dem Logikblock verbundenen Datenauswähler, der eine Ausgabe des Logikblocks auswählt, um den logischen Registerwert dem derzeit ausgeführten Prozess als Reaktion auf den Zugriff bereitzustellen. - Verfahren nach
Anspruch 2 , wobei das Formatieren durchgeführt wird durch: Erzeugen eines Unterbrechungs-Interrupt, wenn der Zugriff auf die hardware-strang-spezifischen Informationen durch das Erkennen erkannt wird; Umwandeln der hardware-strang-spezifischen Informationen im Register durch den Prozessor mit mehreren Strängen, der eine den Unterbrechungs-Interrupt bedienende Interrupt-Dienstroutine ausführt, um die ausschließlich Nutzung des Prozessors mit mehreren Strängen durch die gegebene Partition zu simulieren, um einen logischen Registerwert zu erzeugen, der sich von einem tatsächlichen Wert im Register unterscheidet; und Ersetzen eines Ausgabewertes für den Zugriff auf die hardware-strang-spezifischen Informationen durch den logischen Registerwert. - Verfahren nach
Anspruch 1 , wobei es sich bei den hardware-strang-spezifischen Informationen um eine Anzahl von durch den Prozessor mit mehreren Strängen unterstützten Hardware-Strängen handelt, und wobei das Umwandeln eine Menge der Anzahl der Hardware-Stränge ausgibt, die der gegebenen Partition zugewiesenen sind. - Verfahren nach
Anspruch 1 , wobei es sich bei den hardware-strang-spezifischen Informationen um einen Wert handelt, der von einer logischen Hardware-Strang-Nummer eines bestimmten Hardware-Strangs abhängt, welcher der gegebenen Partition zugewiesen ist und durch den Zugriff festgelegt wird, und wobei das Umwandeln aufweist: Erzeugen einer tatsächlichen Hardware-Strang-Nummer aus der logischen Hardware-Strang-Nummer; Abrufen der hardware-strang-spezifischen Informationen für den bestimmten Hardware-Strang unter Benutzung der tatsächlichen Hardware-Strang-Nummer; und Ausgeben der abgerufenen hardware-strang-spezifischen Informationen als Reaktion auf den Zugriff. - Verfahren nach
Anspruch 6 , wobei es sich bei den hardware-strang-spezifischen Informationen um die Hardware-Strang-Nummer des den Zugriff durchführenden Hardware-Strangs handelt, und wobei bei dem Ändern eine Basis-Strang-Nummer für die gegebene Partition subtrahiert wird, um die tatsächliche Hardware-Strang-Nummer zu erhalten. - Computerprogrammprodukt, das, wenn es auf einem Prozessor ausgeführt wird, diesen veranlasst, die Vorgänge nach einem der
Ansprüche 1 bis7 durchzuführen.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/345,002 | 2012-01-06 | ||
US13/345,002 US9069598B2 (en) | 2012-01-06 | 2012-01-06 | Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core |
PCT/EP2012/074935 WO2013102532A2 (en) | 2012-01-06 | 2012-12-10 | Providing logical partitions with hardware-thread specific information reflective of exclusive use of a processor core |
Publications (2)
Publication Number | Publication Date |
---|---|
DE112012005085T5 DE112012005085T5 (de) | 2014-08-28 |
DE112012005085B4 true DE112012005085B4 (de) | 2024-01-18 |
Family
ID=47469923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112012005085.1T Active DE112012005085B4 (de) | 2012-01-06 | 2012-12-10 | Bereitstellen logischer Partitionen mit einer ausschließlichen Nutzung eines Prozessorkerns wiedergebenden hardware-strang-spezifischen Information |
Country Status (5)
Country | Link |
---|---|
US (4) | US9069598B2 (de) |
CN (1) | CN104011681B (de) |
DE (1) | DE112012005085B4 (de) |
GB (1) | GB2513266B (de) |
WO (1) | WO2013102532A2 (de) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9069598B2 (en) | 2012-01-06 | 2015-06-30 | International Business Machines Corporation | Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core |
US9129071B2 (en) * | 2012-10-24 | 2015-09-08 | Texas Instruments Incorporated | Coherence controller slot architecture allowing zero latency write commit |
US9218185B2 (en) | 2014-03-27 | 2015-12-22 | International Business Machines Corporation | Multithreading capability information retrieval |
US9417876B2 (en) | 2014-03-27 | 2016-08-16 | International Business Machines Corporation | Thread context restoration in a multithreading computer system |
US9921848B2 (en) | 2014-03-27 | 2018-03-20 | International Business Machines Corporation | Address expansion and contraction in a multithreading computer system |
US9804846B2 (en) | 2014-03-27 | 2017-10-31 | International Business Machines Corporation | Thread context preservation in a multithreading computer system |
US9354883B2 (en) | 2014-03-27 | 2016-05-31 | International Business Machines Corporation | Dynamic enablement of multithreading |
US9594660B2 (en) | 2014-03-27 | 2017-03-14 | International Business Machines Corporation | Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores |
US10102004B2 (en) | 2014-03-27 | 2018-10-16 | International Business Machines Corporation | Hardware counters to track utilization in a multithreading computer system |
GB2537115B (en) * | 2015-04-02 | 2021-08-25 | Advanced Risc Mach Ltd | Event monitoring in a multi-threaded data processing apparatus |
US10908909B2 (en) * | 2015-06-09 | 2021-02-02 | Optimum Semiconductor Technologies Inc. | Processor with mode support |
US10209889B2 (en) | 2016-07-14 | 2019-02-19 | International Business Machines Corporation | Invalidation of shared memory in a virtual environment |
US10176115B2 (en) | 2016-07-14 | 2019-01-08 | International Business Machines Corporation | Shared memory in a virtual environment |
US10552211B2 (en) * | 2016-09-02 | 2020-02-04 | Intel Corporation | Mechanism to increase thread parallelism in a graphics processor |
US10664306B2 (en) | 2017-01-13 | 2020-05-26 | Arm Limited | Memory partitioning |
US10268379B2 (en) * | 2017-01-13 | 2019-04-23 | Arm Limited | Partitioning of memory system resources or performance monitoring |
WO2018129708A1 (en) * | 2017-01-13 | 2018-07-19 | Alibaba Group Holding Limited | Determining processor utilization of multiprocessing system |
US10649678B2 (en) | 2017-01-13 | 2020-05-12 | Arm Limited | Partitioning of memory system resources or performance monitoring |
US10394454B2 (en) | 2017-01-13 | 2019-08-27 | Arm Limited | Partitioning of memory system resources or performance monitoring |
US20180203807A1 (en) | 2017-01-13 | 2018-07-19 | Arm Limited | Partitioning tlb or cache allocation |
US10664400B2 (en) | 2017-07-11 | 2020-05-26 | Arm Limited | Address translation cache partitioning |
US20190095554A1 (en) * | 2017-09-28 | 2019-03-28 | Intel Corporation | Root complex integrated endpoint emulation of a discreet pcie endpoint |
GB2570161B (en) * | 2018-01-16 | 2020-03-25 | Advanced Risc Mach Ltd | Simulation of exclusive instructions |
US10747508B2 (en) * | 2018-12-31 | 2020-08-18 | Rockwell Automation Technologies, Inc. | Function block framework generation |
US11256625B2 (en) | 2019-09-10 | 2022-02-22 | Arm Limited | Partition identifiers for page table walk memory transactions |
US11500568B2 (en) | 2020-01-02 | 2022-11-15 | International Business Machines Corporation | LPM management using contingent and conditional inputs |
US20220318051A1 (en) * | 2021-03-31 | 2022-10-06 | Arm Limited | Circuitry and method |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060004942A1 (en) | 2004-06-30 | 2006-01-05 | Sun Microsystems, Inc. | Multiple-core processor with support for multiple virtual processors |
US20060253682A1 (en) | 2005-05-05 | 2006-11-09 | International Business Machines Corporation | Managing computer memory in a computing environment with dynamic logical partitioning |
Family Cites Families (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6341338B1 (en) * | 1999-02-04 | 2002-01-22 | Sun Microsystems, Inc. | Protocol for coordinating the distribution of shared memory |
US6539427B1 (en) * | 1999-06-29 | 2003-03-25 | Cisco Technology, Inc. | Dynamically adaptive network element in a feedback-based data network |
US6438671B1 (en) * | 1999-07-01 | 2002-08-20 | International Business Machines Corporation | Generating partition corresponding real address in partitioned mode supporting system |
US6668317B1 (en) * | 1999-08-31 | 2003-12-23 | Intel Corporation | Microengine for parallel processor architecture |
US6542920B1 (en) | 1999-09-24 | 2003-04-01 | Sun Microsystems, Inc. | Mechanism for implementing multiple thread pools in a computer system to optimize system performance |
US7216233B1 (en) | 2000-08-14 | 2007-05-08 | Sun Microsystems, Inc. | Apparatus, methods, and computer program products for filtering information |
US6748556B1 (en) * | 2000-08-15 | 2004-06-08 | International Business Machines Corporation | Changing the thread capacity of a multithreaded computer processor |
US20020161828A1 (en) * | 2001-04-30 | 2002-10-31 | Michael Edison | System and method for communicating with a device |
US7069442B2 (en) | 2002-03-29 | 2006-06-27 | Intel Corporation | System and method for execution of a secured environment initialization instruction |
US7287254B2 (en) * | 2002-07-30 | 2007-10-23 | Unisys Corporation | Affinitizing threads in a multiprocessor system |
JP4123942B2 (ja) * | 2003-01-14 | 2008-07-23 | 株式会社日立製作所 | 情報処理装置 |
US20050028105A1 (en) * | 2003-02-28 | 2005-02-03 | Scott Musson | Method for entitling a user interface |
US7328438B2 (en) | 2003-03-27 | 2008-02-05 | International Business Machines Corporation | Deallocation of computer data in a multithreaded computer |
US7000051B2 (en) * | 2003-03-31 | 2006-02-14 | International Business Machines Corporation | Apparatus and method for virtualizing interrupts in a logically partitioned computer system |
US7496915B2 (en) | 2003-04-24 | 2009-02-24 | International Business Machines Corporation | Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes |
US7350060B2 (en) | 2003-04-24 | 2008-03-25 | International Business Machines Corporation | Method and apparatus for sending thread-execution-state-sensitive supervisory commands to a simultaneous multi-threaded (SMT) processor |
US7197745B2 (en) * | 2003-05-02 | 2007-03-27 | Microsoft Corporation | User debugger for use on processes running in a high assurance kernel in an operating system |
US8032890B2 (en) * | 2003-07-22 | 2011-10-04 | Sap Ag | Resources managing in isolated plurality of applications context using data slots to access application global data and specification of resources lifetime to access resources |
US7418585B2 (en) * | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7089341B2 (en) * | 2004-03-31 | 2006-08-08 | International Business Machines Corporation | Method and apparatus for supporting interrupt devices configured for a particular architecture on a different platform |
US7216223B2 (en) * | 2004-04-30 | 2007-05-08 | Hewlett-Packard Development Company, L.P. | Configuring multi-thread status |
US7890735B2 (en) * | 2004-08-30 | 2011-02-15 | Texas Instruments Incorporated | Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture |
US7370156B1 (en) * | 2004-11-04 | 2008-05-06 | Panta Systems, Inc. | Unity parallel processing system and method |
US7810083B2 (en) | 2004-12-30 | 2010-10-05 | Intel Corporation | Mechanism to emulate user-level multithreading on an OS-sequestered sequencer |
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 |
US8230423B2 (en) * | 2005-04-07 | 2012-07-24 | International Business Machines Corporation | Multithreaded processor architecture with operational latency hiding |
CN100552771C (zh) * | 2005-04-15 | 2009-10-21 | 松下电器产业株式会社 | 显示控制电路及显示系统 |
US20070094664A1 (en) * | 2005-10-21 | 2007-04-26 | Kimming So | Programmable priority for concurrent multi-threaded processors |
JP2007133807A (ja) | 2005-11-14 | 2007-05-31 | Hitachi Ltd | データ処理システム、ストレージ装置及び管理装置 |
US7669186B2 (en) * | 2005-11-16 | 2010-02-23 | Sun Microsystems, Inc. | Debugging applications at resource constrained virtual machines using dynamically installable lightweight agents |
US7624257B2 (en) * | 2005-11-30 | 2009-11-24 | International Business Machines Corporation | Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads |
WO2008077628A2 (en) | 2006-12-22 | 2008-07-03 | Virtuallogix Sa | System for enabling multiple execution environments to share a device |
US7783849B2 (en) * | 2007-01-05 | 2010-08-24 | International Business Machines Corporation | Using trusted user space pages as kernel data pages |
US7941803B2 (en) | 2007-01-15 | 2011-05-10 | International Business Machines Corporation | Controlling an operational mode for a logical partition on a computing system |
US9003410B2 (en) * | 2007-01-30 | 2015-04-07 | Hewlett-Packard Development Company, L.P. | Abstracting a multithreaded processor core to a single threaded processor core |
US7711822B1 (en) * | 2007-03-26 | 2010-05-04 | Oracle America, Inc. | Resource management in application servers |
US8812824B2 (en) | 2007-06-13 | 2014-08-19 | International Business Machines Corporation | Method and apparatus for employing multi-bit register file cells and SMT thread groups |
US8161476B2 (en) * | 2007-07-04 | 2012-04-17 | International Business Machines Corporation | Processor exclusivity in a partitioned system |
US8219988B2 (en) * | 2007-08-02 | 2012-07-10 | International Business Machines Corporation | Partition adjunct for data processing system |
US7739434B2 (en) * | 2008-01-11 | 2010-06-15 | International Business Machines Corporation | Performing a configuration virtual topology change and instruction therefore |
US7734900B2 (en) * | 2008-01-11 | 2010-06-08 | International Business Machines Corporation | Computer configuration virtual topology discovery and instruction therefore |
US8897742B2 (en) * | 2009-11-13 | 2014-11-25 | William J. Johnson | System and method for sudden proximal user interface |
US8634796B2 (en) * | 2008-03-14 | 2014-01-21 | William J. Johnson | System and method for location based exchanges of data facilitating distributed location applications |
US8200947B1 (en) * | 2008-03-24 | 2012-06-12 | Nvidia Corporation | Systems and methods for voting among parallel threads |
US9058483B2 (en) * | 2008-05-08 | 2015-06-16 | Google Inc. | Method for validating an untrusted native code module |
JP5379122B2 (ja) * | 2008-06-19 | 2013-12-25 | パナソニック株式会社 | マルチプロセッサ |
US8151095B1 (en) * | 2008-07-18 | 2012-04-03 | Nvidia Corporation | System and method for context migration across CPU threads |
US8136158B1 (en) * | 2008-07-21 | 2012-03-13 | Google Inc. | User-level segmentation mechanism that facilitates safely executing untrusted native code |
US8560568B2 (en) * | 2008-08-26 | 2013-10-15 | Zeewise, Inc. | Remote data collection systems and methods using read only data extraction and dynamic data handling |
US9405931B2 (en) * | 2008-11-14 | 2016-08-02 | Dell Products L.P. | Protected information stream allocation using a virtualized platform |
US8949838B2 (en) * | 2009-04-27 | 2015-02-03 | Lsi Corporation | Multi-threaded processing with hardware accelerators |
US8195879B2 (en) * | 2009-05-08 | 2012-06-05 | International Business Machines Corporation | Demand based partitioning of microprocessor caches |
US8484648B2 (en) | 2009-10-19 | 2013-07-09 | International Business Machines Corporation | Hardware multi-threading co-scheduling for parallel processing systems |
US8615644B2 (en) | 2010-02-19 | 2013-12-24 | International Business Machines Corporation | Processor with hardware thread control logic indicating disable status when instructions accessing shared resources are completed for safe shared resource condition |
US8775781B2 (en) * | 2010-03-25 | 2014-07-08 | Microsoft Corporation | Intelligent boot device selection and recovery |
US8719561B2 (en) * | 2010-11-29 | 2014-05-06 | International Business Machines Corporation | Automatic configuration sampling for managing configuration parameters of a computer system |
US9547593B2 (en) * | 2011-02-28 | 2017-01-17 | Nxp Usa, Inc. | Systems and methods for reconfiguring cache memory |
US8793284B2 (en) * | 2011-05-26 | 2014-07-29 | Laurie Dean Perrin | Electronic device with reversing stack data container and related methods |
US8751872B2 (en) * | 2011-05-27 | 2014-06-10 | Microsoft Corporation | Separation of error information from error propagation information |
US9092236B1 (en) * | 2011-06-05 | 2015-07-28 | Yong-Kyu Jung | Adaptive instruction prefetching and fetching memory system apparatus and method for microprocessor system |
US8667600B2 (en) * | 2011-06-30 | 2014-03-04 | International Business Machines Corporation | Trusted computing source code escrow and optimization |
US8694738B2 (en) * | 2011-10-11 | 2014-04-08 | Mcafee, Inc. | System and method for critical address space protection in a hypervisor environment |
US8898434B2 (en) * | 2011-11-11 | 2014-11-25 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Optimizing system throughput by automatically altering thread co-execution based on operating system directives |
US9069598B2 (en) | 2012-01-06 | 2015-06-30 | International Business Machines Corporation | Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core |
WO2013147865A1 (en) * | 2012-03-30 | 2013-10-03 | Intel Corporation | A mechanism for saving and retrieving micro-architecture context |
JP5813554B2 (ja) * | 2012-03-30 | 2015-11-17 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US8578069B2 (en) * | 2012-04-04 | 2013-11-05 | International Business Machines Corporation | Prefetching for a shared direct memory access (DMA) engine |
WO2013151454A1 (en) * | 2012-04-06 | 2013-10-10 | Google Inc. | Hosted application sandboxing |
US8804523B2 (en) * | 2012-06-21 | 2014-08-12 | Microsoft Corporation | Ensuring predictable and quantifiable networking performance |
US9524263B2 (en) * | 2012-06-29 | 2016-12-20 | Intel Corporation | Method and apparatus for bus lock assistance |
US9436626B2 (en) * | 2012-08-09 | 2016-09-06 | Freescale Semiconductor, Inc. | Processor interrupt interface with interrupt partitioning and virtualization enhancements |
CN103853527A (zh) * | 2012-11-29 | 2014-06-11 | 国际商业机器公司 | 切换多线程程序中的对象锁定模式的方法和系统 |
US9183399B2 (en) * | 2013-02-14 | 2015-11-10 | International Business Machines Corporation | Instruction set architecture with secure clear instructions for protecting processing unit architected state information |
-
2012
- 2012-01-06 US US13/345,002 patent/US9069598B2/en active Active
- 2012-04-20 US US13/452,745 patent/US8990816B2/en not_active Expired - Fee Related
- 2012-12-10 WO PCT/EP2012/074935 patent/WO2013102532A2/en active Application Filing
- 2012-12-10 GB GB1412799.7A patent/GB2513266B/en active Active
- 2012-12-10 CN CN201280064372.XA patent/CN104011681B/zh active Active
- 2012-12-10 DE DE112012005085.1T patent/DE112012005085B4/de active Active
-
2015
- 2015-05-26 US US14/721,052 patent/US9898616B2/en active Active
-
2017
- 2017-12-29 US US15/858,244 patent/US10354085B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060004942A1 (en) | 2004-06-30 | 2006-01-05 | Sun Microsystems, Inc. | Multiple-core processor with support for multiple virtual processors |
US20060253682A1 (en) | 2005-05-05 | 2006-11-09 | International Business Machines Corporation | Managing computer memory in a computing environment with dynamic logical partitioning |
Also Published As
Publication number | Publication date |
---|---|
WO2013102532A2 (en) | 2013-07-11 |
US20180121675A1 (en) | 2018-05-03 |
US20130179886A1 (en) | 2013-07-11 |
GB2513266B (en) | 2020-09-23 |
CN104011681B (zh) | 2017-07-28 |
GB2513266A (en) | 2014-10-22 |
US8990816B2 (en) | 2015-03-24 |
DE112012005085T5 (de) | 2014-08-28 |
GB201412799D0 (en) | 2014-09-03 |
US9069598B2 (en) | 2015-06-30 |
US9898616B2 (en) | 2018-02-20 |
US10354085B2 (en) | 2019-07-16 |
CN104011681A (zh) | 2014-08-27 |
US20130179892A1 (en) | 2013-07-11 |
US20150254473A1 (en) | 2015-09-10 |
WO2013102532A3 (en) | 2013-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112012005085B4 (de) | Bereitstellen logischer Partitionen mit einer ausschließlichen Nutzung eines Prozessorkerns wiedergebenden hardware-strang-spezifischen Information | |
DE3716229C2 (de) | Mikroprozessorchip mit einem Stapelrahmen-Cache | |
DE112015004983T5 (de) | Parallel-Slice-Prozessor mit einer Lade-Speicher-Umlaufwarteschlange für eine schnelle Freigabe von Einträgen in einer Ausgabewarteschlange | |
DE112005003863B3 (de) | Verwalten von Prozessorressourcen während Architekturereignissen | |
DE60308201T2 (de) | Datenverarbeitungssystem mit externen und internen anweisungssätzen | |
DE102013017509A1 (de) | Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten | |
DE102014003790A1 (de) | Parallelvorrichtung für hochkomprimierte Hochgeschwindigkeits-LZ77-Tokenisierung und Huffman-Codierung für Deflate-Komprimierung | |
DE112010003595T5 (de) | Verfahren, System und maschinenverarbeitbares Medium zur Bereitstellung einer verteiltenPrädikatvorhersage | |
DE102014003563A1 (de) | Fusionierbare befehle und logik zum versehen mit or-test- und and-test-funktionalität unter benutzen von mehrfachtestquellen | |
DE102014004564A1 (de) | Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen | |
DE2517276A1 (de) | Datenverarbeitungssystem | |
DE112013004783T5 (de) | Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl | |
DE102018125805A1 (de) | Systeme, verfahren, und vorrichtungen für skalarproduktoperationen | |
DE112012007088T5 (de) | Befehl zum Reduzieren von Elementen in einem Vektorregister mit einem schrittweisen Zugriffsmuster | |
DE102009051288A1 (de) | Befehl und Logik zur Ausführung von Bereichserkennung | |
DE102020129549A1 (de) | Leistungsüberwachung in heterogenen systemen | |
DE112011103197T5 (de) | Verfahren und Vorrichtung für universelle logische Operationen | |
DE102019119956A1 (de) | Architektur und verfahren zur datenparallelen einzelprogramm- mehrfachdaten(spmd)-ausführung | |
DE102018005039A1 (de) | System und verfahren für pro-agent-steuerung und - dienstqualität gemeinsam genutzter ressourcen in chip-mehrprozessor-plattformen | |
DE102018126036A1 (de) | Systeme und verfahren zum setzen eines kachelregisterpaars auf null | |
DE102018128626A1 (de) | Systeme, Verfahren und Vorrichtungen für Matrixoperationen | |
DE102021116489A1 (de) | Verwaltung von Prefetch-Anfragen auf Basis von Stream-Informationen für zuvor erkannte Streams | |
DE102018125971A1 (de) | Systeme und verfahren zum berechnen von skalaprodukten von halbbytes in operanden aus zwei kacheln | |
DE112012004468B4 (de) | Anwendungs-Level-Spekulative-Verarbeitung | |
DE112017003337T5 (de) | Architekturregisteraustausch für anweisungen, die mehrere architekturregister verwenden |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R084 | Declaration of willingness to licence | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division |