DE102007006190B4 - Techniken zur Verwendung von Speicher-Attributen - Google Patents
Techniken zur Verwendung von Speicher-Attributen Download PDFInfo
- Publication number
- DE102007006190B4 DE102007006190B4 DE102007006190.2A DE102007006190A DE102007006190B4 DE 102007006190 B4 DE102007006190 B4 DE 102007006190B4 DE 102007006190 A DE102007006190 A DE 102007006190A DE 102007006190 B4 DE102007006190 B4 DE 102007006190B4
- Authority
- DE
- Germany
- Prior art keywords
- attribute bit
- cache line
- load
- memory
- determining
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3471—Address tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Maschinenlesbares Medium, auf dem ein Satz Befehle gespeichert ist, die, wenn sie von einer Maschine ausgeführt werden, die Maschine dazu veranlassen, ein Verfahren auszuführen, das aufweist:
Lesen eines Attributbits (115), welches einer Cache-Speicherlinie (105) zugeordnet ist, wobei die Cache-Speicherlinie (105) nur einem Software-Thread in einem Multi-Thread-Programm zugeordnet ist, wobei das Attributbit (115) als ein Ergebnis des Ausführens eines Befehls geprüft wird, und wobei das Attributbit (115) durch Ausführen eines load_check Befehls gelesen wird und das Attributbit durch Ausführen eines load_set Befehls gesetzt wird;
Bestimmen des Werts des Attributbits (115), wobei das Bestimmen des Werts des Attributbits (115) das Ausführen eines Architekturszenarios in einem Prozessor der Maschine aufweist, wobei das Szenario bestimmt, ob die Cache-Speicherlinie (115) sich in einem unerwarteten Zustand befindet;
Ausführen eines leichtgewichtigen Yield-Ereignisses in Reaktion auf das Bestimmen des Werts des Attributbits (115).
Lesen eines Attributbits (115), welches einer Cache-Speicherlinie (105) zugeordnet ist, wobei die Cache-Speicherlinie (105) nur einem Software-Thread in einem Multi-Thread-Programm zugeordnet ist, wobei das Attributbit (115) als ein Ergebnis des Ausführens eines Befehls geprüft wird, und wobei das Attributbit (115) durch Ausführen eines load_check Befehls gelesen wird und das Attributbit durch Ausführen eines load_set Befehls gesetzt wird;
Bestimmen des Werts des Attributbits (115), wobei das Bestimmen des Werts des Attributbits (115) das Ausführen eines Architekturszenarios in einem Prozessor der Maschine aufweist, wobei das Szenario bestimmt, ob die Cache-Speicherlinie (115) sich in einem unerwarteten Zustand befindet;
Ausführen eines leichtgewichtigen Yield-Ereignisses in Reaktion auf das Bestimmen des Werts des Attributbits (115).
Description
- GEBIET
- Ausführungsformen der Erfindung betreffen Mikroprozessoren und Mikroprozessorsysteme. Insbesondere betreffen Ausführungsformen der Erfindung eine Technik, um Speicherzustände oder andere Information, die in Verbindung mit einem oder mehreren Speicherorten stehen, die Attributbits verwenden, welche dem einen oder den mehreren Speicherorten entsprechen, zu verwenden, zu prüfen und einzustellen.
- HINTERGRUND
- In modernen Computersystemen können Mikroprozessoren oder Mikroprozessorkerne auf einen sehr großen Speicherraum zugreifen, welcher eine sehr große Anzahl an Speichertypen umfassen kann. Zum Beispiel kann ein Speicheradressbereich in einem Computersystem Information speichern, welche nur durch einen bestimmten Prozessor oder Prozessorkern angesprochen werden kann, wohingegen auf andere Adressbereiche durch Mehrfachprozessoren oder – Prozessorkerne zugegriffen werden kann. Die Ausschließlichkeit eines Speichers ist nur ein Attribut, welches einem Speicheradressbereich zugeordnet werden kann.
- In einigen Systemen des Stands der Technik können Speicherberechtigungen oder Zugriffsregeln durch das Betriebssystem (OS) mittels eines virtuellen Speichermanagements in einer relativen groben Körnigkeit von virtuellen Speicherseiten gesteuert werden. Die Körnigkeit virtueller Speicherseiten ist in einigen Systemen gemäß dem Stand der Technik unterschiedlich, von ungefähr 4 Kilobyte (KB) bis viele Megabyte (MB) in Größe. Das Verändern der Speicherberechtigungen kann ein aufwendiger Vorgang in Bezug auf Systemwartezeit, Die – Platzverhältnisse oder Systemkosten sein.
- Es kann Situationen geben, in welchen ein Programm eine Speicheradresse vor dem Zugreifen darauf prüfen will. Zum Beispiel kann ein Programm eine Adresse vor dem Zugreifen prüfen, wenn Programmfehler beseitigt werden, wobei Grenzen und Typensicherheit in verschiedenen Computerprogrammsprachen (z. B. ”Java”) geprüft werden, wenn Programmprofile zur Analyse ihrer Leistung erstellt werden oder wenn andere Gründe vorliegen.
- Wenn ein Programm eine Adresse gemäß einem Satz Regeln prüft, kann es wenigstens zwei Lösungswege nach dem Stand der Technik einsetzen: Ein Lösungsweg besteht darin, das OS zu verwenden, um sicher zu stellen, daß Adressen, welche nicht den Regeln entsprechen, durch das Virtuelle-Speicher-Management erkannt werden. Bei diesem Lösungsweg kann die Körnigkeit auf das relativ grobe Korn des Adressierschemas des Virtuelle-Speicher-Managements begrenzt werden und das Verändern der Zugriffsregeln kann sehr kostspielig sein. Ein anderer Lösungsweg gemäß dem Stand der Technik besteht darin, einen Satz Prüfungen für eine Adresse im Programm selbst auszuführen, bevor die Adresse verwendet wird, um auf den Speicher zuzugreifen. Der Satz Prüfungen kann die Adresse gegen jeden Satz Regeln mit jeder beliebigen Körnigkeit vergleichen. Der Nachteil dieses Lösungswegs gemäß dem Stand der Technik besteht darin, dass ein wesentlicher Leistungsoverhead für jeden Speicherbezug gezahlt werden muss, um die richtigen Prüfungen durchzuführen.
- In
US 5,974,438 wird eine Cache-Speicherverwaltung für ein Ein- oder Mehrprozessorsystem beschrieben, die eine Rangfolge bei der Ausführung von mehreren Programm-Threads bestimmt. Dazu wird jeder Programm-Thread überwacht, indem in einem Register die Anzahl der entsprechenden Cache-Speicherlinien abgespeichert werden, so dass sich über die Anzahl eine Programm-Thread-Temperatur definieren lässt. Je höher die Temperatur des jeweiligen Programm-Threads ist, umso höher wird seine Priorität innerhalb des Computersystems eingestuft.US 5,428,761 beschreibt ein Computersystem mit einem gemeinsamen Speicher, auf den mehrere Prozessoren zugreifen können. Ein Statusbit wird genutzt, um die Konsistenz der Daten aufrechtzuerhalten, wenn gleichzeitig mehrere Prozessoren auf Daten in dem gemeinsamen Speicher zugreifen bzw. auf diese Bezug nehmen wollen.US 5,974,507 beschreibt ein Verfahren zur Verbesserung der Arbeitsweise eines Cache-Speichers, der von einem Prozessor eines Computersystems genutzt wird, indem eine Zufälligkeit für den Ersetzungsalgorithmus, der von dem Cache-Speicher genutzt wird, eingeführt wird, um sogenannte „strides” innerhalb des Speichers zu verringern.US 6,189,112 B1 beschreibt ein Computersystem mit mehreren Prozessoreinheiten, wobei zumindest einer der Prozessoren nicht für normale Systemoperationen verwendet wird, sondern dazu dient, um bei nichtlösbaren Hardwarefehlern das System ohne Interrupts neu zu starten. -
US 6,748,496 B1 offenbart eine Vorrichtung zum Bereitstellen von sogenannten cachable Daten für ein peripheres Gerät wie beispielsweise einen Grafikkontroller, um eine hohe Transferrate bei Vermeidung unnötiger Belastung für den Prozessor zu erreichen. Dafür werden Attribute benutzt, die in einer Attributtabelle gespeichert sind, wobei jedes der Attribute eindeutig einer vorbestimmten Seite des Datenspeichers entspricht. Zusätzlich können weitere Attribute eingeschlossen sein, die anzeigen, ob die entsprechende Seite des Datenspeichers für einen Streaming-Memory bestimmt sind. - Das der vorliegenden Erfindung zugrundeliegende technische Problem besteht darin, ein maschinenlesbares Medium, ein System und ein Verfahren anzugeben, die dazu eingerichtet sind, es einem Programm-Thread zu ermöglichen, Adressen mit feineren Granularitäten als der virtuellen Speicherverwaltungsadressierung zu prüfen, um festzustellen, ob ein bestimmter Thread die Kontrolle über die Adresse, wie beispielsweise einen adressierten Speicherort, hat.
- Die Aufgabe wird gelöst durch ein maschinenlesbares Medium mit dem Merkmalen gemäß Hauptanspruch, ein System mit dem Merkmalen gemäß Anspruch 3 sowie ein Verfahren mit dem Merkmalen gemäß Anspruch 4. Ausführungsformen der Erfindung sind in den Unteransprüchen angegeben.
- KURZE BESCHREIBUNG DER ZEICHNUNGEN
- Ausführungsformen der Erfindung werden in den Figuren der begleitenden Zeichnungen als bloße Beispiele dargestellt und nicht als Einschränkung dargestellt, wobei gleiche Bezugsziffern ähnliche Elemente bezeichnen und wobei:
-
1 einen Cache-Speicher darstellt, in welchem verschiedene Cache-Linien ein oder mehrere Attributbits zugeordnet aufweisen, gemäß einer Ausführungsform der Erfindung. -
2 stellt eine Computersystemspeicherhierarchie dar, in welcher wenigstens eine Ausführungsform der Erfindung verwendet werden kann. -
3 ist ein Flussdiagramm, welches Vorgänge darstellt, die mit dem Prüfen von Attributen in Verbindung stehen, die einer oder mehreren Cache-Linien zugeordnet sind, gemäß einer Ausführungsform. -
4 stellt ein Computersystem mit Shared-Bus dar, in welchem wenigstens eine Ausführungsform der Erfindung verwendet werden kann. -
5 stellt ein Computersystem mit Punkt-zu-Punkt-Bus dar, in welchem wenigstens eine Ausführungsform der Erfindung verwendet werden kann. - DETAILLIERTE BESCHREIBUNG
- Ausführungsformen der Erfindung betreffen Mikroprozessoren und Mikroprozessorsysteme. Insbesondere betreffen Ausführungsformen der Erfindung den Einsatz von Speicherattributen, um verschiedene Speichereigenschaften auf wirksame Weise zu prüfen.
- In einer Ausführungsform der Erfindung können Speicherattribute, welche einem bestimmten Speichersegment oder ”Speicherblock” zugeordnet sind, verwendet werden, um verschiedene Eigenschaften des Speicherblocks anzuzeigen. Zum Beispiel sind in einer Ausführungsform jedem Speicherblock Attributbits beigefügt, welche durch einen Benutzer definiert werden können, um jede beliebige Anzahl von Eigenschaften des Speicherblocks anzuzeigen, die diesem zugeordnet sind, wie z. B. Zugriffsrechte. In einer Ausführungsform kann jeder Speicherblock einer bestimmten Cache-Linie entsprechen, wie einer Cache-Linie innerhalb eines Level Eins (L1) oder Level Zwei (L2) Cache-Speichers, und die Attribute sind mit Bitspeicherorten dargestellt, welche mit oder auf andere Weise mit einer Linie von Cachespeicher angeordnet sind. In anderen Ausführungsformen kann ein Speicherblock, für den Attribute beigefügt sind, mehr als eine Cache-Speicherlinie umfassen oder kann mit einem anderen Speichertyp wie ein DRAM verknüpft sein.
-
1 stellt einen Abschnitt an Cache-Speicher dar, wobei jede Linie eine beigefügte Gruppe an Attributbitspeicherorten aufweist, gemäß einer Ausführungsform der Erfindung. Insbesondere stellt1 einen Cache-Speicher100 dar, welcher eine Cache-Linie105 umfasst, die einem bestimmten Speicherblock (nicht gezeigt) entspricht. Die Cache-Linie105 hat dazu eine Anzahl von Attributen beigefügt, welche in der Form von Bits innerhalb des Speicherorts110 gespeichert werden. In einer Ausführungsform ist der Speicherort eine Registerdatei, wohingegen in anderen Ausführungsformen ein anderer Typ an Speicherbereich verwendet werden kann. Im Speicherort110 gibt es eine Gruppe von Attributbits115 , welche der Cache-Linie105 beigefügt sind, die durch ein Softwareprogramm verwendet werden können, das auf die Cache-Linie zugreift. - In der Ausführungsform, dargestellt in
1 , umfasst die Gruppe der Attributbits vier Bits, welche eine oder mehrere Eigenschaften der Cache-Linie darstellen, abhängig davon, wie die Attributbits zugewiesen sind. Zum Beispiel bezeichnen in einer Ausführungsform die Attributbits, dass das Programm vor kurzem geprüft hat, dass der Speicherblock für den laufenden Abschnitt des Programms zum Zugriff geeignet ist. In anderen Ausführungsformen können die Attributbits anzeigen, dass das Programm eine kürzlich erfolgte Bezugnahme zu diesem Speicherblock für spätere Analyse durch ein Leistungsüberwachungswerkzeug, zum Beispiel, aufgezeichnet hat. In anderen Ausführungsformen können die Attributbits andere Berechtigungen, Eigenschaften usw. bezeichnen. - Zusätzlich zu den Attributbits kann jede Cache-Linie auch ebendort einen Zustandswert beigefügt aufweisen, welcher in einem Zustandsspeicherort
120 gespeichert ist. Zum Beispiel umfasst in einer Ausführungsform der Zustandsspeicherort120 ein Zustandsbit125 , welches der Cache-Linie105 beigefügt ist, das bezeichnet, ob die Cache-Linie sich in einem modified Zustand (M), exclusively owned Zustand (E), shared Zustand (S) oder invalid Zustand (I) befindet. Die MESI-Zustände können steuern, ob verschiedene Software-Threads, Kerne oder Prozessoren Information, die in der bestimmten Cache-Linie gespeichert ist, verwenden und/oder modifizieren können. In einigen Ausführungsformen ist das MESI-Zustandsattribut in den Attributbits115 für die Cache-Linie105 mit umfasst. - In einer Ausführungsform kann auf den Cache-Speicher, ähnlich jenem aus
1 , welcher beigefügte Attributbits aufweist, durch eine Anzahl von Kernen in einem Mehrfachkernprozessor zugegriffen werden, wobei jeder in der Lage ist, eine Anzahl von Software-Threads auszuführen, die von einem Mikroprogrammsteuerwerk innerhalb eines Betriebssystems ausgegeben werden. Durch Zuweisen der richtigen Attributbits zu jeder Cache-Linie kann jeder Thread innerhalb jedes Kerns jedes Prozessors in einem Computersystem eine Linie oder mehrfache Linien Cache aufweisen, auf welche er zugreifen kann, welche er steuern kann und/oder modifizieren kann. -
2 ist eine Konzeptdarstellung, wie Ausführungsformen der Erfindung die Organisation des Cache-Speichers aus der Perspektive eines Software-Threads vereinfachen können, welcher im Kern eines Prozessors in einem Computersystem ausgeführt wird. Zum Beispiel kann in2 jeder Thread als ein einzelner Threadkern201 –20n vorgestellt werden, welcher einen beigefügten Cache-Speicher205 –20m aufweist, der aus Cache-Linien aufgebaut ist, welche so ausgelegt sind, um nur durch den bestimmten entsprechenden Thread gesteuert zu werden, der auf dem konzeptionellen Einzelthread-Kern läuft. Zum Beispiel können in einer Ausführungsform die konzeptionellen Cache-Speicher205 –20m nur ihre MESI-Zustände aufweisen, die durch Threads, die durch die Einzelthread-Kerne201-20n dargestellt sind, modifiziert werden. Obwohl in Wirklichkeit jeder der Cache-Speicher205 –205m aus Cache-Linien zusammen gesetzt ist, welche über einen Cache-Speicher oder über Cache-Speicher verteilt sind, wobei die Vorstellung der Anordnung auf eine Weise, die in2 dargestellt ist, nützlich für das Verstehen gewisser Ausführungsformen der Erfindung sein kann. - In einer Ausführungsform der Erfindung können Attribute, die einem Speicherblock beigefügt sind, durch bestimmte Operationen, wie ein Befehl oder eine Mikrooperation, die von einem Befehl dekodiert wird, zugegriffen, modifiziert und auf andere Weise gesteuert werden. Zum Beispiel kann in einer Ausführungsform ein Befehl verwendet werden, welcher sowohl Information aus einer Cache-Linie lädt und entsprechende Attributbits setzt (z. B. ”load_set” Befehl). In anderen Ausführungsformen kann ein Befehl, welcher Information von einer Cache-Linie lädt und die entsprechenden Attributbits prüft (z. B. ”load_check” Befehl) zusätzlich zum load_set Befehl verwendet werden.
- In noch anderen Ausführungsformen können andere Befehle verwendet werden, sowohl um die Attributbits zu steuern als auch auf die entsprechenden Cache-Daten zuzugreifen. Zum Beispiel kann ein Befehl in einer Ausführungsform verwendet werden, welcher Information auf einer Cache-Linie speichert, während die entsprechenden Attributbits entweder geprüft oder gesetzt (oder beides) werden (z. B. ein ”store_set” und/oder ”store_check” Befehl). In einigen Ausführungsformen können Befehle verwendet werden, um die Attributbits zu steuern oder auf sie zuzugreifen, die keine beigefügte Cache-Speicher-Operation aufweisen wie load oder store.
- Im Falle eines Befehls, welcher die Attribute prüft, die mit einer Cache-Linie in Verbindung stehen, können ein oder mehrere Architektur-Szenarien in einem oder mehreren Verarbeitungskernen definiert werden, um bestimmte Ereignisse auszuführen, welche auf den Attributen, die geprüft werden, basieren. Es kann andere Ereignistypen geben, welche als Antwort auf die Attributprüfung ausgeführt werden können. Zum Beispiel kann in einer Ausführungsform ein Architekturszenario definiert sein, um die Attributbits mit einem bestimmten Satz von Daten zu vergleichen und ein leichtgewichtiges Umschaltereignis aufzurufen, welches auf dem Resultat des Vergleichs basiert. Das leichtgewichtige Umschalten kann unter anderen Dingen eine Serviceroutine aufrufen, welche verschiedene Operationen als Antwort auf das Szenarioergebnis ausführt, bevor die Steuerung zu einem Thread oder anderen Prozess, welcher im System läuft, zurück kehrt. In einer anderen Ausführungsform kann ein Flag oder Register gesetzt werden, um das Ergebnis zu kennzeichnen. In noch einer anderen Ausführungsform kann ein Register mit einem bestimmten Wert beschrieben werden. Andere Ereignisse können als geeignete Antworten umfasst sein.
- Zum Beispiel besteht ein Szenario, das definiert sein kann, darin, ein leichtgewichtiges Umschalten und ein entsprechendes Steuerungsprogramm beim Erfassen eines unerwarteten Speicherzustands aufzurufen. Dies kann nützlich sein, wenn ein Thread oder anderer Prozess versucht, auf eine Cache-Linie zuzugreifen unter der Erwartung, dass sie einen bestimmten MESI-Zustand aufweist und wo die Cache-Linie sich in einem anderen Speicherzustand befindet, welcher anzeigt, dass die Cache-Linie nicht mit jenem bestimmten Thread oder Prozess in Verbindung steht. Auf diese Weise kann nur auf jene Cache-Linien, über welche ein bestimmter Thread die Kontrolle besitzt, erfolgreich zugegriffen werden, und nur auf diese weise können sie erfolgreich modifiziert oder geprüft werden. In anderen Ausführungsformen können andere Szenarien basierend auf einer Prüfung der Cache-Linienspeicherattribute definiert werden. In anderen Ausführungsformen können auch Speicherattribute von Orten feinerer Körnigkeit als die Cache-Linie geprüft werden.
-
3 ist ein Flussdiagramm, welches die Operation von wenigstens einer Ausführungsform der Erfindung darstellt, in welcher ein load_set und ein load_check Befehl verwendet wird, um Attributbits, welche in Verbindung mit einer bestimmten Cache-Linie oder einem Adressbereich in einer Cache-Linie stehen, gesetzt oder geprüft werden. In anderen Ausführungsformen können Befehle oder Uops verwendet werden, um die Operationen, die in3 dargestellt sind, auszuführen. In Operation301 wird bestimmt, ob ein load_set oder load_check Befehl ausgeführt wird. Wenn ein load_set Befehl ausgeführt wird, werden die Attributbits, die mit der Cache-Linie in Verbindung stehen, die durch den load-Abschnitt des Befehls adressiert werden, in Operation305 modifiziert. In einer Ausführungsform kann der load_set Befehl ein load Uop und ein set Uop umfassen, welche durch den load_set Befehl dekodiert werden. Andere Operationen können mit den load und set Operationen in anderen Ausführungsformen umfasst sein. - Wenn der Befehl, welcher ausgeführt wird, ein load_check Befehl ist, dann werden die Attributbits, welche mit der Adresse, die durch den load Abschnitt des load_check Befehls bestimmt ist, in Verbindung stehen, in der Operation
310 gelesen. In einer Ausführungsform kann der load_check Befehl ein load Uop und ein check Uop umfassen, welche aus dem load_check Befehl dekodiert werden. Andere Operationen können mit den load und check Operationen in anderen Ausführungsformen mit umfasst sein. In der Operation315 wird ein Szenario, basierend auf dem Zustand der Attributbits, ausgeführt. In einer Ausführungsform prüft das Szenario, um zu sehen, ob die Attributbits, die in der Operation310 eingelesen wurden, einen unbekannten Zustand der Cache-Linie anzeigen. Wenn das so ist, dann tritt in Operation320 ein geeignetes Ereignis auf. In einer Ausführungsform tritt ein leichtgewichtiges Umschalten auf und eine Ereignissteuerprogrammroutine wird ausgeführt, um Operationen als Antwort darauf auszuführen. Nachdem das Ereignissteuerprogramm abgeschlossen ist (oder bevor das Ereignissteuerprogramm in einigen Ausführungsformen abgeschlossen ist), kehrt die Steuerung auf den Befehl in der Programmreihenfolge zurück, welcher den Befehlen folgt, von wo aus das leichtgewichtige Umschalten auftrat. - Eine alternative Ausführungsform besteht darin, dass an Stelle des Prüfens der Attributbits einfach die Attributbits in ein Register gelesen werden. Dieser Wert kann dann durch das Programm verwendet werden. Ein Beispiel bestünde darin, dass das Programm diesen Wert vergleichen würde und bedingungsweise in unterschiedliche Codezweige in Abhängigkeit vom Wert abzweigen würde.
-
4 stellt ein Front Side Bus (FSB) Computersystem dar, in welchem eine Ausführungsform der Erfindung verwendet werden kann. Ein Prozessor405 greift auf die Daten eines Level Eins (L1) Cache-Speichers410 und eines Hauptspeichers415 zu. In anderen Ausführungsformen der Erfindung kann der Cache-Speicher ein Level Zwei (L2) Cache-Speicher oder ein anderer Speicher in einer Computersystemspeicherhierarchie sein. Des Weiteren kann in einigen Ausführungsformen das Computersystem aus4 sowohl einen L1-Cache als auch einen L2-Cache enthalten. - Dargestellt im Prozessor aus
4 ist ein Speicherbereich406 für Maschinenstatus. In einer Ausführungsform kann der Speicherbereich ein Satz Register sein, wohingegen in anderen Ausführungsformen der Speicherbereich407 andere Speicherstrukturen aufweisen kann. Ebenfalls in4 ist ein Speicherbereich407 für sichere Bereichssegmente gemäß einer Ausführungsform dargestellt. In anderen Ausführungsformen können die sicheren Bereichssegmente in anderen Vorrichtungen oder Speicherstrukturen sein. Der Prozessor kann jede beliebige Anzahl von Verarbeitungskernen aufweisen. Andere Ausführungsformen der Erfindung jedoch können in anderen Vorrichtungen im System, wie ein getrenntes Busmittel, umgesetzt sein oder über das System in Hardware, Software oder einigen Kombinationen davon verteilt sein. - Der Hauptspeicher kann in verschiedenen Speicherquellen umgesetzt sein, wie als dynamischer Random-Access Speicher (DRAM), als Festplatte (HDD)
420 oder als Speicherquelle, die vom Computersystem entfernt über die Netzwerkschnittstelle430 angeordnet ist, welche verschiedene Speichervorrichtungen und -technologien umfasst. Der Cache-Speicher kann entweder im Prozessor oder in äußerster Nähe zum Prozessor wie auf dem örtlichen Bus des Prozessors407 angeordnet sein. - Des Weiteren kann der Cache-Speicher relativ schnelle Speicherzellen wie eine Six-Transistor(6T)-Zelle oder andere Speicherzellen von ungefähr gleicher oder schnellerer Zugriffsgeschwindigkeit umfassen. Das Computersystem aus
4 kann ein Punkt-zu-Punkt (PtP) Netzwerk von Busmitteln wie Mikroprozessoren sein, welche über Bussignale, die jedem Mittel am PtP-Netzwerk zugeordnet sind, kommunizieren.5 stellt ein Computersystem dar, welches in einer Punkt-zu-Punkt (PtP) Konfiguration angeordnet ist. Insbesondere zeigt5 , wo Prozessoren, Speicher und Eingabe/Ausgabe-Geräte durch eine Anzahl von Punkt-zu-Punkt Schnittstellen miteinander verbunden sind. - Das System aus
5 kann auch mehrere Prozessoren umfassen, von denen nur zwei, Prozessor570 ,580 , zur Verdeutlichung gezeigt sind. Die Prozessoren570 ,580 können jeder einen örtlichen Speichercontroller-Hub (MCH)572 ,582 umfassen, um mit dem Speicher22 ,24 zu verbinden. Die Prozessoren570 ,580 können Daten über eine Punkt-zu-Punkt (PtP) Schnittstelle550 unter Verwendung der PtP-Schnittstellenschaltungen578 ,588 austauschen. Die Prozessoren570 ,580 können jeder Daten mit einem Chipsatz590 über eigene PtP-Schnittstellen552 ,554 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen576 ,594 ,586 ,598 austauschen. Der Chipsatz590 kann auch Daten mit einer Hochleistungsgraphikdatenschaltung538 über eine Hochleistungsgraphikdatenschnittstelle539 austauschen. Ausführungsformen der Erfindung können in jedem Prozessor, welcher eine beliebige Anzahl von Verarbeitungskernen aufweist, oder in jedem der PtP-Busmittel aus5 angeordnet sein. - Andere Ausführungsformen der Erfindung jedoch können in anderen Schaltungen, Logikeinheiten oder -geräten im System aus
5 vorhanden sein. Des Weiteren können andere Ausführungsformen der Erfindung über mehrere Schaltungen, Logikeinheiten oder -geräte, die in5 dargestellt sind, verteilt sein. - Ausführungsformen der Erfindung, die hierin beschrieben ist, können mit Schaltungen umgesetzt werden, die komplementäre Metalloxidhalbleitervorrichtungen oder ”Hardware” verwenden oder die einen Satz von Befehlen, die auf einem Medium gespeichert sind, verwenden, der, wenn durch eine Maschine wie einen Prozessor ausgeführt, Operationen ausführt, die mit Ausführungsformen der Erfindung oder ”Software” in Verbindung stehen. Alternativ können Ausführungsformen der Erfindung unter Verwendung einer Kombination von Hardware und Software verwirklicht werden.
- Obwohl die Erfindung mit Bezugnahme auf veranschaulichende Ausführungsformen beschrieben worden ist, soll diese Beschreibung nicht in einem einschränkenden Sinne ausgelegt werden. Verschiedene Modifikationen der veranschaulichenden Ausführungsform sowie auch andere Ausführungsformen, welche für den Fachmann auf diesem Gebiet der Technik, auf das sich die Erfindung bezieht, offensichtlich sind, sollen als im Umfang der Erfindung liegend betrachtet werden.
Claims (4)
- Maschinenlesbares Medium, auf dem ein Satz Befehle gespeichert ist, die, wenn sie von einer Maschine ausgeführt werden, die Maschine dazu veranlassen, ein Verfahren auszuführen, das aufweist: Lesen eines Attributbits (
115 ), welches einer Cache-Speicherlinie (105 ) zugeordnet ist, wobei die Cache-Speicherlinie (105 ) nur einem Software-Thread in einem Multi-Thread-Programm zugeordnet ist, wobei das Attributbit (115 ) als ein Ergebnis des Ausführens eines Befehls geprüft wird, und wobei das Attributbit (115 ) durch Ausführen eines load_check Befehls gelesen wird und das Attributbit durch Ausführen eines load_set Befehls gesetzt wird; Bestimmen des Werts des Attributbits (115 ), wobei das Bestimmen des Werts des Attributbits (115 ) das Ausführen eines Architekturszenarios in einem Prozessor der Maschine aufweist, wobei das Szenario bestimmt, ob die Cache-Speicherlinie (115 ) sich in einem unerwarteten Zustand befindet; Ausführen eines leichtgewichtigen Yield-Ereignisses in Reaktion auf das Bestimmen des Werts des Attributbits (115 ). - Maschinenlesbares Medium nach Anspruch 1, das ferner ein Setzen des Attributbits (
115 ) aufweist. - System, aufweisend: einen Speicher zum Speichern eines load_set Befehls und eines load_check Befehls, wobei der load_set Befehl so ausgelegt ist, dass eine Information von einer Cache-Linie (
105 ) geladen und ein zugehöriges Attributbit (115 ) gesetzt wird, und der load_check Befehl so ausgelegt ist, dass eine Information von einer Cache-Linie (105 ) geladen und ein zugehöriges Attributbit (115 ) geprüft wird, wobei die Cache-Linie (105 ) nur einem Software-Thread in einem Multi-Thread-Programm zugeordnet ist und das Attributbit (115 ) anzeigt, dass die Cache-Linie (105 ) sich in einem unerwarteten Zustand befindet, mindestens einen Prozessor, welcher wenigstens einen Verarbeitungskern zum Abrufen wenigstens eines der load_set und load_check Befehle und eine Logik zum Implementieren eines Szenarios in Reaktion auf ein Prüfen des Attributbits (115 ) aufweist, wobei das Szenario darin besteht, ein leichtgewichtiges Yield-Ereignis zu verursachen, wobei das leichtgewichtige Yield-Ereignis darin besteht, eine Steuerprogrammroutine aufzurufen, um auf den unerwarteten Zustand, der erfasst wurde, zu reagieren. - Verfahren, aufweisend: Lesen eines Attributbits (
115 ), welches einer Cache-Linie (105 ) zugeordnet ist, wobei die Cache-Linie (105 ) einem Software-Thread in einem Multi-Thread-Programm zugeordnet ist und das Attributbit (115 ) anzeigt, ob ein Programm einen vorherigen Bezug auf die Cache-Linie (105 ) zur Analyse durch ein Werkzeug aufgenommen hat, welches aus einer Gruppe gewählt ist, bestehend aus einem Leistungsüberwachungswerkzeug und einem Fehlerbeseitigungswerkzeug; Bestimmen des Werts des Attributbits (115 ); Ausführen eines leichtgewichtigen Yield-Ereignisses in Reaktion auf ein Bestimmen des Werts des Attributbits, wobei das Bestimmen des Werts des Attributbits das Durchführen eines Architekturszenarios in einem Prozessor aufweist, wobei das Architekturszenario bestimmt, ob die Cache-Linie (105 ) in einem unerwarteten Zustand ist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/349,661 US7991965B2 (en) | 2006-02-07 | 2006-02-07 | Technique for using memory attributes |
US11/349,661 | 2006-02-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102007006190A1 DE102007006190A1 (de) | 2007-08-30 |
DE102007006190B4 true DE102007006190B4 (de) | 2017-10-26 |
Family
ID=37898905
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102007006190.2A Active DE102007006190B4 (de) | 2006-02-07 | 2007-02-07 | Techniken zur Verwendung von Speicher-Attributen |
Country Status (7)
Country | Link |
---|---|
US (3) | US7991965B2 (de) |
JP (1) | JP4764360B2 (de) |
KR (1) | KR100933820B1 (de) |
CN (2) | CN101916231B (de) |
DE (1) | DE102007006190B4 (de) |
GB (2) | GB2434892B (de) |
TW (1) | TWI335512B (de) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7991965B2 (en) | 2006-02-07 | 2011-08-02 | Intel Corporation | Technique for using memory attributes |
US7610448B2 (en) | 2006-12-27 | 2009-10-27 | Intel Corporation | Obscuring memory access patterns |
US8185698B2 (en) * | 2007-04-09 | 2012-05-22 | Bratin Saha | Hardware acceleration of a write-buffering software transactional memory |
US8806101B2 (en) * | 2008-12-30 | 2014-08-12 | Intel Corporation | Metaphysical address space for holding lossy metadata in hardware |
KR101370314B1 (ko) * | 2009-06-26 | 2014-03-05 | 인텔 코포레이션 | 언바운디드 트랜잭션 메모리 (utm) 시스템의 최적화 |
US20120239887A1 (en) * | 2011-03-16 | 2012-09-20 | Advanced Micro Devices, Inc. | Method and apparatus for memory control |
US9361103B2 (en) * | 2012-11-02 | 2016-06-07 | Advanced Micro Devices, Inc. | Store replay policy |
US9495305B1 (en) | 2012-11-02 | 2016-11-15 | David Fuchs | Detecting pointer errors for memory protection |
GB2517453B (en) * | 2013-08-20 | 2017-12-20 | Imagination Tech Ltd | Improved use of memory resources |
RU2646336C1 (ru) * | 2014-05-28 | 2018-03-02 | Хуавэй Текнолоджиз Ко., Лтд. | Способ, устройство и система для осуществления виртуализированного управления сетью |
US10042737B2 (en) | 2016-08-31 | 2018-08-07 | Microsoft Technology Licensing, Llc | Program tracing for time travel debugging and analysis |
US10031834B2 (en) | 2016-08-31 | 2018-07-24 | Microsoft Technology Licensing, Llc | Cache-based tracing for time travel debugging and analysis |
US10489273B2 (en) * | 2016-10-20 | 2019-11-26 | Microsoft Technology Licensing, Llc | Reuse of a related thread's cache while recording a trace file of code execution |
US10324851B2 (en) | 2016-10-20 | 2019-06-18 | Microsoft Technology Licensing, Llc | Facilitating recording a trace file of code execution using way-locking in a set-associative processor cache |
US10310963B2 (en) * | 2016-10-20 | 2019-06-04 | Microsoft Technology Licensing, Llc | Facilitating recording a trace file of code execution using index bits in a processor cache |
US10310977B2 (en) | 2016-10-20 | 2019-06-04 | Microsoft Technology Licensing, Llc | Facilitating recording a trace file of code execution using a processor cache |
US10540250B2 (en) | 2016-11-11 | 2020-01-21 | Microsoft Technology Licensing, Llc | Reducing storage requirements for storing memory addresses and values |
US10318332B2 (en) | 2017-04-01 | 2019-06-11 | Microsoft Technology Licensing, Llc | Virtual machine execution tracing |
US10296442B2 (en) | 2017-06-29 | 2019-05-21 | Microsoft Technology Licensing, Llc | Distributed time-travel trace recording and replay |
US11119914B2 (en) * | 2019-11-15 | 2021-09-14 | Micron Technology, Inc. | Method of operating a memory with dynamically changeable attributes |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
US5974507A (en) * | 1997-04-14 | 1999-10-26 | International Business Machines Corporation | Optimizing a cache eviction mechanism by selectively introducing different levels of randomness into a replacement algorithm |
US5974438A (en) * | 1996-12-31 | 1999-10-26 | Compaq Computer Corporation | Scoreboard for cached multi-thread processes |
US6189112B1 (en) * | 1998-04-30 | 2001-02-13 | International Business Machines Corporation | Transparent processor sparing |
US6748496B1 (en) * | 2000-04-18 | 2004-06-08 | Ati International Srl | Method and apparatus for providing cacheable data to a peripheral device |
DE10309919A1 (de) * | 2003-03-07 | 2004-09-23 | Infineon Technologies Ag | Pufferbaustein und Verfahren zum Ansteuern von einer oder mehreren Speicheranordnungen |
US20050149702A1 (en) * | 2003-12-29 | 2005-07-07 | Intel Cororation | Method and system for memory renaming |
US20050198637A1 (en) * | 2004-02-26 | 2005-09-08 | Daniel Kogan | Thread-based limitation on computer application |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2573255B2 (ja) * | 1987-09-30 | 1997-01-22 | 株式会社東芝 | データキャッシュ制御方式 |
JPH01125638A (ja) * | 1987-11-11 | 1989-05-18 | Matsushita Electric Ind Co Ltd | キャッシュメモリ装置 |
JPH0210448A (ja) * | 1988-06-28 | 1990-01-16 | Hitachi Ltd | キャッシュメモリシステム |
JPH03193684A (ja) | 1989-12-20 | 1991-08-23 | Kobe Steel Ltd | 炭素又は炭素複合材料の製造方法 |
KR940015822A (ko) | 1992-12-30 | 1994-07-21 | 양승택 | 다중 프로세서 시스템에서 메모리 모듈의 상태변화 시험방법 |
US6461696B1 (en) | 1993-11-16 | 2002-10-08 | Baxter International Inc. | Multi-layered polymer based moisture barrier structure for medical grade products |
JP3266470B2 (ja) * | 1994-10-03 | 2002-03-18 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 強制順序で行う要求毎ライト・スルー・キャッシュを有するデータ処理システム |
US5761536A (en) * | 1996-08-21 | 1998-06-02 | International Business Machines Corporation | System and method for reducing memory fragmentation by assigning remainders to share memory blocks on a best fit basis |
US5909698A (en) | 1997-03-17 | 1999-06-01 | International Business Machines Corporation | Cache block store instruction operations where cache coherency is achieved without writing all the way back to main memory |
US6412056B1 (en) * | 1997-10-01 | 2002-06-25 | Compac Information Technologies Group, Lp | Extended translation lookaside buffer with fine-grain state bits |
US6332181B1 (en) * | 1998-05-04 | 2001-12-18 | International Business Machines Corporation | Recovery mechanism for L1 data cache parity errors |
JP3331592B2 (ja) * | 1998-05-22 | 2002-10-07 | 日本電気株式会社 | キャッシュメモリ |
US6430657B1 (en) * | 1998-10-12 | 2002-08-06 | Institute For The Development Of Emerging Architecture L.L.C. | Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock |
US6366946B1 (en) * | 1998-12-16 | 2002-04-02 | Microsoft Corporation | Critical code processing management |
US6636950B1 (en) * | 1998-12-17 | 2003-10-21 | Massachusetts Institute Of Technology | Computer architecture for shared memory access |
US6496909B1 (en) * | 1999-04-06 | 2002-12-17 | Silicon Graphics, Inc. | Method for managing concurrent access to virtual memory data structures |
JP3607540B2 (ja) * | 1999-08-18 | 2005-01-05 | エヌイーシーシステムテクノロジー株式会社 | プログラム単位メモリアクセス属性管理方式 |
JP3813393B2 (ja) * | 1999-10-01 | 2006-08-23 | 富士通株式会社 | キャッシュメモリの制御方法及び情報処理装置 |
JP3611295B2 (ja) * | 2000-03-09 | 2005-01-19 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータシステム、メモリ管理方法及び記憶媒体 |
EP1139222A1 (de) * | 2000-03-31 | 2001-10-04 | Texas Instruments Incorporated | Vorausladung für TLB-Cachespeicher |
US6748501B2 (en) * | 2000-12-30 | 2004-06-08 | International Business Machines Corporation | Microprocessor reservation mechanism for a hashed address system |
US6704840B2 (en) * | 2001-06-19 | 2004-03-09 | Intel Corporation | Computer system and method of computer initialization with caching of option BIOS |
JP2003006046A (ja) | 2001-06-25 | 2003-01-10 | Sanyo Electric Co Ltd | メモリプロテクション方法および回路 |
US6898694B2 (en) * | 2001-06-28 | 2005-05-24 | Intel Corporation | High instruction fetch bandwidth in multithread processor using temporary instruction cache to deliver portion of cache line in subsequent clock cycle |
JP4434534B2 (ja) * | 2001-09-27 | 2010-03-17 | 株式会社東芝 | プロセッサ・システム |
JP4226816B2 (ja) * | 2001-09-28 | 2009-02-18 | 株式会社東芝 | マイクロプロセッサ |
US7120762B2 (en) * | 2001-10-19 | 2006-10-10 | Wisconsin Alumni Research Foundation | Concurrent execution of critical sections by eliding ownership of locks |
US6854039B1 (en) * | 2001-12-05 | 2005-02-08 | Advanced Micro Devices, Inc. | Memory management system and method providing increased memory access security |
WO2003054693A1 (en) | 2001-12-12 | 2003-07-03 | Telefonaktiebolaget L M Ericsson (Publ) | Collision handling apparatus and method |
JP2003223360A (ja) * | 2002-01-29 | 2003-08-08 | Hitachi Ltd | キャッシュメモリシステムおよびマイクロプロセッサ |
US6859868B2 (en) * | 2002-02-07 | 2005-02-22 | Sun Microsystems, Inc. | Object addressed memory hierarchy |
JP3866597B2 (ja) * | 2002-03-20 | 2007-01-10 | 株式会社東芝 | 内部メモリ型耐タンパプロセッサおよび秘密保護方法 |
US6862664B2 (en) * | 2003-02-13 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus for avoiding locks by speculatively executing critical sections |
US7089373B2 (en) * | 2003-06-12 | 2006-08-08 | International Business Machines Corporation | Shadow register to enhance lock acquisition |
US7493618B2 (en) * | 2003-09-19 | 2009-02-17 | International Business Machines Corporation | Fault tolerant mutual exclusion locks for shared memory systems |
US20050138306A1 (en) * | 2003-12-19 | 2005-06-23 | Panchbudhe Ankur P. | Performance of operations on selected data in a storage area |
KR100620609B1 (ko) * | 2004-04-07 | 2006-09-13 | 한국해양연구원 | 저층수인양장치 |
US7594234B1 (en) * | 2004-06-04 | 2009-09-22 | Sun Microsystems, Inc. | Adaptive spin-then-block mutual exclusion in multi-threaded processing |
US20070124546A1 (en) * | 2005-11-29 | 2007-05-31 | Anton Blanchard | Automatic yielding on lock contention for a multi-threaded processor |
US7616218B1 (en) | 2005-12-05 | 2009-11-10 | Nvidia Corporation | Apparatus, system, and method for clipping graphics primitives |
US7987452B2 (en) * | 2005-12-15 | 2011-07-26 | International Business Machines Corporation | Profile-driven lock handling |
US7991965B2 (en) | 2006-02-07 | 2011-08-02 | Intel Corporation | Technique for using memory attributes |
-
2006
- 2006-02-07 US US11/349,661 patent/US7991965B2/en active Active
-
2007
- 2007-02-07 GB GB0702377A patent/GB2434892B/en active Active
- 2007-02-07 CN CN2010102750409A patent/CN101916231B/zh active Active
- 2007-02-07 KR KR1020070012870A patent/KR100933820B1/ko active IP Right Grant
- 2007-02-07 CN CN2007101016755A patent/CN101059777B/zh active Active
- 2007-02-07 GB GB0813998A patent/GB2451003B/en active Active
- 2007-02-07 JP JP2007028172A patent/JP4764360B2/ja active Active
- 2007-02-07 DE DE102007006190.2A patent/DE102007006190B4/de active Active
- 2007-02-07 TW TW096104443A patent/TWI335512B/zh not_active IP Right Cessation
-
2011
- 2011-07-04 US US13/175,928 patent/US8560781B2/en active Active
-
2013
- 2013-09-21 US US14/033,463 patent/US8812792B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
US5974438A (en) * | 1996-12-31 | 1999-10-26 | Compaq Computer Corporation | Scoreboard for cached multi-thread processes |
US5974507A (en) * | 1997-04-14 | 1999-10-26 | International Business Machines Corporation | Optimizing a cache eviction mechanism by selectively introducing different levels of randomness into a replacement algorithm |
US6189112B1 (en) * | 1998-04-30 | 2001-02-13 | International Business Machines Corporation | Transparent processor sparing |
US6748496B1 (en) * | 2000-04-18 | 2004-06-08 | Ati International Srl | Method and apparatus for providing cacheable data to a peripheral device |
DE10309919A1 (de) * | 2003-03-07 | 2004-09-23 | Infineon Technologies Ag | Pufferbaustein und Verfahren zum Ansteuern von einer oder mehreren Speicheranordnungen |
US20050149702A1 (en) * | 2003-12-29 | 2005-07-07 | Intel Cororation | Method and system for memory renaming |
US20050198637A1 (en) * | 2004-02-26 | 2005-09-08 | Daniel Kogan | Thread-based limitation on computer application |
Also Published As
Publication number | Publication date |
---|---|
JP2007242003A (ja) | 2007-09-20 |
JP4764360B2 (ja) | 2011-08-31 |
GB2451003A (en) | 2009-01-14 |
CN101916231B (zh) | 2013-11-20 |
US7991965B2 (en) | 2011-08-02 |
TWI335512B (en) | 2011-01-01 |
GB2434892A (en) | 2007-08-08 |
CN101916231A (zh) | 2010-12-15 |
CN101059777B (zh) | 2010-11-03 |
KR20070080589A (ko) | 2007-08-10 |
GB2451003B (en) | 2010-06-23 |
US8560781B2 (en) | 2013-10-15 |
KR100933820B1 (ko) | 2009-12-24 |
US20140025901A1 (en) | 2014-01-23 |
US20070186055A1 (en) | 2007-08-09 |
US8812792B2 (en) | 2014-08-19 |
CN101059777A (zh) | 2007-10-24 |
US20110264866A1 (en) | 2011-10-27 |
TW200817896A (en) | 2008-04-16 |
GB0813998D0 (en) | 2008-09-10 |
GB2434892B (en) | 2008-11-26 |
GB0702377D0 (en) | 2007-03-21 |
DE102007006190A1 (de) | 2007-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102007006190B4 (de) | Techniken zur Verwendung von Speicher-Attributen | |
DE112005002672B4 (de) | Dynamische Neukonfiguration eines Cache-Speichers | |
DE112005003098B4 (de) | Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung | |
DE102010055267A1 (de) | Gemeinsames Benutzen von Ressourcen zwischen einer CPU und GPU | |
DE112011103433B4 (de) | Verfahren, System und Programm zum Steuern von Cache-Kohärenz | |
DE112005002420T5 (de) | Verfahren und Vorrichtung zum Pushen von Daten in den Cache eines Prozessors | |
DE112010005821T5 (de) | Kontextwechsel | |
DE112008001679T5 (de) | Cache-Speicher mit konfigurierbarer Assoziativität | |
DE112006002908T5 (de) | Technik für die Kommunikation und Synchronisation von Threads | |
DE102013017509A1 (de) | Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten | |
DE10297166T5 (de) | Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen | |
DE112013003731T5 (de) | Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading | |
DE102010034555A1 (de) | Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus | |
DE112009000373T5 (de) | Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen | |
DE102010046892A1 (de) | Management und Implementierung von Metadaten in der Zentraleinheit unter Verwendung von Registererweiterungen | |
DE112005002180T5 (de) | Lösen von Cachekonflikten | |
DE10232926A1 (de) | Cachesystem mit Leitungsgruppen und mit Kohärenz sowohl für einzelne Leitungen als auch Gruppen von Leitungen | |
DE102014003705A1 (de) | Prozessoren, Verfahren und Systeme zur Befehlsemulation | |
DE102006039747A1 (de) | Verfahren für Kontextzustandsmanagement | |
DE102013205886A1 (de) | Dynamische Bankmodus-Adressierung für Speicherzugriff | |
DE112016002356T5 (de) | Datenspeichersystemarchitektur | |
DE102007018033A1 (de) | Kohärenzverzeichnisaktualisierung | |
DE112016005823T5 (de) | Überwachen des betriebs eines prozessors | |
DE112015001477T5 (de) | Hardwarezähler zum Verfolgen einer Auslastung in einem Multithreading-Computersystem | |
DE112012004629T5 (de) | Dynamischer Speicheraffinitätsanpasser auf Prozess/Objektebene |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R002 | Refusal decision in examination/registration proceedings | ||
R006 | Appeal filed | ||
R008 | Case pending at federal patent court | ||
R019 | Grant decision by federal patent court | ||
R020 | Patent grant now final |