DE102007006190A1 - Techniken zur Verwendung von Speicher-Attributen - Google Patents
Techniken zur Verwendung von Speicher-Attributen Download PDFInfo
- Publication number
- DE102007006190A1 DE102007006190A1 DE102007006190A DE102007006190A DE102007006190A1 DE 102007006190 A1 DE102007006190 A1 DE 102007006190A1 DE 102007006190 A DE102007006190 A DE 102007006190A DE 102007006190 A DE102007006190 A DE 102007006190A DE 102007006190 A1 DE102007006190 A1 DE 102007006190A1
- Authority
- DE
- Germany
- Prior art keywords
- cache line
- attribute
- cache
- memory
- load
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 74
- 238000000034 method Methods 0.000 title claims abstract description 15
- 230000004044 response Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims description 2
- 230000008859 change Effects 0.000 description 4
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 239000000243 solution Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 101100189378 Caenorhabditis elegans pat-3 gene Proteins 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000001746 injection moulding Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 101150101567 pat-2 gene Proteins 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000001356 surgical procedure Methods 0.000 description 1
Classifications
-
- 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
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
- 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
Eine Technik zum Verwenden von Speicherattributen, um Information auf ein Programm oder ein anderes Mittel zu übertragen. Insbesondere betreffen Ausführungsformen der Erfindung den Einsatz von Speicherattributbits, um verschiedene Speichereigenschaften auf wirkungsvolle Weise zu prüfen.
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, Spritzgussplatz 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.
- 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 (35)
- Vorrichtung, die umfaßt: einen Speicherblock, wobei der Speicherblock einen zugehörigen Satz Attribute aufweist, die nur einem Software-Thread eines Programms entsprechen, das mehrere Software-Threads aufweist.
- Vorrichtung nach Anspruch 1, wobei der Speicherblock einer Cache-Linie in einem Cache-Speicher zugeordnet ist.
- Vorrichtung nach Anspruch 2, wobei der Cache-Speicher einen Speicherbereich von Attributbitspeicherbereichen umfaßt, um den Satz Attribute zu speichern.
- Vorrichtung nach Anspruch 3, wobei die Attributbitspeicherbereiche wenigstens einen Bitspeicherunterbereich aufweisen, welcher nur einer Cache-Linie zugeordnet ist.
- Vorrichtung nach Anspruch 4, wobei der Satz Attribute Information umfasst, um anzuzeigen, welchem der mehreren Software-Threads die nur eine Cache-Linie entspricht.
- Vorrichtung nach Anspruch 5, wobei jede Cache-Linie des Cache-Speichers ihr zugeordnete Attributbits aufweist.
- Vorrichtung nach Anspruch 6, wobei jeder Cache-Speicher ein Daten-Cache ist.
- Vorrichtung nach Anspruch 6, wobei der Cache-Speicher ein vereinheitlichter Cache ist, um Daten und Befehle zu speichern.
- Maschinlesbares 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 umfaßt: Lesen eines Attributbits, welches einer Cache-Speicherlinie zugeordnet ist, wobei die Cache-Speicherlinie nur einem Software-Thread in einem Multi-Thread-Programm entspricht; Bestimmen des Werts des Attributbits; Ausführen eines leichtgewichtigen Yield-Ereignisses in Reaktion auf das Bestimmen des Werts des Attributbits.
- Maschinlesbares Medium nach Anspruch 9, wobei das Bestimmen des Werts des Attributbits das Ausführen eines Architekturszenarios in einem Prozessor umfaßt.
- Maschinlesbares Medium nach Anspruch 9, das ferner ein Setzen des Attributbits umfaßt.
- Maschinlesbares Medium nach Anspruch 9, wobei das Attributbit als ein Ergebnis des Ausführens eines Befehls geprüft wird.
- Maschinlesbares Medium nach Anspruch 12, wobei das Attribut durch Ausführen eines load_check Befehls gelesen wird.
- Maschinlesbares Medium nach Anspruch 12, wobei das Attribut durch Ausführen eines load_set Befehls gesetzt wird.
- Maschinlesbares Medium nach Anspruch 10, wobei das Szenario bestimmt, ob die Cache-Speicherlinie sich in einem unerwarteten Zustand befindet.
- System, das umfaßt: einen Speicher zum Speichern eines load_set Befehls und eines load_check Befehls, mindestens einen Prozessor, welcher wenigstens einen Verarbeitungskern zum Abrufen wenigstens eines der load_set und load_check Befehle umfaßt.
- System nach Anspruch 16, wobei der load_set Befehl so ausgelegt ist, daß eine Information von einer Cache-Linie geladen und ein zugehöriges Attributbit gesetzt wird.
- System nach Anspruch 16, wobei der load_check Befehl so ausgelegt ist, daß eine Information von einer Cache-Linie geladen und ein zugehöriges Attributbit geprüft wird.
- System nach Anspruch 18, wobei der mindestens eine Prozessor eine Logik zum Implementieren eines Szenarios in Reaktion auf ein Prüfen des Attributbits umfaßt.
- System nach Anspruch 19, wobei, wenn das Attribut anzeigt, daß die Cache-Linie sich in einem unerwarteten Zustand befindet, das Szenario darin besteht, ein leichtgewichtiges Yield-Ereignis zu verursachen.
- System nach Anspruch 20, wobei das leichtgewichtige Yield-Ereignis darin besteht, eine Steuerprogrammroutine aufzurufen, um auf den unerwarteten Zustand, der erfaßt wird, zu reagieren.
- System nach Anspruch 16, wobei der load_set Befehl und der load_check Befehl nur einem Software-Thread in einem Programm, welches mehrfache Software-Threads umfaßt, beigefügt sind.
- System nach Anspruch 16, wobei das Attributbit eines aus mehreren Attributbits ist, welche einer Cache-Speicherlinie zugeordnet sind.
- System nach Anspruch 23, wobei die mehreren Attributbits Benutzer-definiert sind.
- Prozessor, der umfaßt: eine Abrufeinheit zum Abrufen eines ersten Befehls, um mehrere Attributbits zu setzen, die mit einer Cache-Linie in Verbindung stehen, und zum Abrufen eines zweiten Befehls, um die Mehrzahl der Bits zu prüfen; eine Logik zum Ausführen eines Szenarios in Reaktion auf ein Prüfen mehrerer Attributbits.
- Prozessor nach Anspruch 25, der ferner mehrere Verarbeitungskerne umfaßt, wobei jeder in der Lage ist, eine Mehrzahl von Software-Threads auszuführen.
- Prozessor nach Anspruch 26, wobei die Logik zum Durchführen des Szenarios so ausgebildet ist, daß die Durchführung einer Steuerprogrammroutine veranlaßt wird, wenn mehrere Attributbits anzeigen, daß sich die entsprechende Cache-Linie in einem unerwarteten Zustand befindet.
- Prozessor nach Anspruch 27, wobei sich die Cache-Linie in einem von mehreren Zuständen befindet, die umfassen; einen modifizierten Zustand, einen exclusive Zustand, einen shared Zustand und einen invalid Zustand.
- Prozessor nach Anspruch 28, der ferner einen Cache-Speicher umfaßt, in welchem die Cache-Linie enthalten ist.
- Prozessor nach Anspruch 25, wobei der erste und der zweite Befehl eine Operation zum Laden einer Information aus der Cache-Linie umfaßt.
- Verfahren, das umfaßt: Lesen eines Attributbits, welches einer Cache-Linie zugeordnet ist, wobei das Attributbit anzeigt, ob ein Programm einen vorherigen Bezug auf die Cache-Linie 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.
- Verfahren nach Anspruch 31, wobei die Cache-Linie einem Software-Thread in einem Multi-Thread-Programm entspricht.
- Verfahren nach Anspruch 31, das ferner ein Ausführen eines leichtgewichtigen Yield-Ereignisses in Reaktion auf ein Bestimmen des Werts des Attributbits umfaßt.
- Verfahren nach Anspruch 31, wobei das Bestimmen des Werts des Attributbits das Durchführen eines Architekturszenarios in einem Prozessor umfaßt.
- Verfahren nach Anspruch 31, wobei das Programm ein Instrumentierungsprogramm ist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/349,661 | 2006-02-07 | ||
US11/349,661 US7991965B2 (en) | 2006-02-07 | 2006-02-07 | Technique for using memory attributes |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102007006190A1 true DE102007006190A1 (de) | 2007-08-30 |
DE102007006190B4 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) | CN101059777B (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 |
WO2015180068A1 (zh) * | 2014-05-28 | 2015-12-03 | 华为技术有限公司 | 一种实现虚拟化网管的方法、装置及*** |
US10031834B2 (en) | 2016-08-31 | 2018-07-24 | Microsoft Technology Licensing, Llc | Cache-based tracing for time travel debugging and analysis |
US10042737B2 (en) | 2016-08-31 | 2018-08-07 | Microsoft Technology Licensing, Llc | Program tracing for time travel debugging and analysis |
US10310977B2 (en) | 2016-10-20 | 2019-06-04 | Microsoft Technology Licensing, Llc | Facilitating recording a trace file of code execution using a processor cache |
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 |
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 |
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 |
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 |
Family Cites Families (50)
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 | 炭素又は炭素複合材料の製造方法 |
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
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 |
US5974438A (en) * | 1996-12-31 | 1999-10-26 | Compaq Computer Corporation | Scoreboard for cached multi-thread processes |
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 |
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 |
US6412056B1 (en) * | 1997-10-01 | 2002-06-25 | Compac Information Technologies Group, Lp | Extended translation lookaside buffer with fine-grain state bits |
US6189112B1 (en) * | 1998-04-30 | 2001-02-13 | International Business Machines Corporation | Transparent processor sparing |
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 |
US6748496B1 (en) * | 2000-04-18 | 2004-06-08 | Ati International Srl | Method and apparatus for providing cacheable data to a peripheral device |
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 |
US8028132B2 (en) | 2001-12-12 | 2011-09-27 | Telefonaktiebolaget Lm 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 |
DE10309919B4 (de) | 2003-03-07 | 2008-09-25 | Qimonda Ag | Pufferbaustein und Speichermodule |
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 |
US7174428B2 (en) * | 2003-12-29 | 2007-02-06 | Intel Corporation | Method and system for transforming memory location references in instructions |
US7562361B2 (en) * | 2004-02-26 | 2009-07-14 | Microsoft Corporation | Thread-based limitation on computer application |
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 JP JP2007028172A patent/JP4764360B2/ja active Active
- 2007-02-07 CN CN2007101016755A patent/CN101059777B/zh active Active
- 2007-02-07 TW TW096104443A patent/TWI335512B/zh not_active IP Right Cessation
- 2007-02-07 CN CN2010102750409A patent/CN101916231B/zh active Active
- 2007-02-07 GB GB0702377A patent/GB2434892B/en active Active
- 2007-02-07 KR KR1020070012870A patent/KR100933820B1/ko active IP Right Grant
- 2007-02-07 GB GB0813998A patent/GB2451003B/en active Active
- 2007-02-07 DE DE102007006190.2A patent/DE102007006190B4/de active Active
-
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
Also Published As
Publication number | Publication date |
---|---|
CN101916231A (zh) | 2010-12-15 |
US20140025901A1 (en) | 2014-01-23 |
GB0813998D0 (en) | 2008-09-10 |
GB2434892B (en) | 2008-11-26 |
GB2434892A (en) | 2007-08-08 |
TW200817896A (en) | 2008-04-16 |
GB0702377D0 (en) | 2007-03-21 |
US8812792B2 (en) | 2014-08-19 |
KR20070080589A (ko) | 2007-08-10 |
CN101059777B (zh) | 2010-11-03 |
GB2451003B (en) | 2010-06-23 |
KR100933820B1 (ko) | 2009-12-24 |
GB2451003A (en) | 2009-01-14 |
US20070186055A1 (en) | 2007-08-09 |
US8560781B2 (en) | 2013-10-15 |
US7991965B2 (en) | 2011-08-02 |
JP2007242003A (ja) | 2007-09-20 |
DE102007006190B4 (de) | 2017-10-26 |
US20110264866A1 (en) | 2011-10-27 |
CN101916231B (zh) | 2013-11-20 |
CN101059777A (zh) | 2007-10-24 |
JP4764360B2 (ja) | 2011-08-31 |
TWI335512B (en) | 2011-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102007006190B4 (de) | Techniken zur Verwendung von Speicher-Attributen | |
DE69434728T2 (de) | Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel | |
DE3853759T2 (de) | Datenprozessor mit zwei Betriebsmoden. | |
DE69533312T2 (de) | Geschütztes speichersystem und verfahren dafür | |
DE102006015106B4 (de) | Bereitstellen eines erweiterten Speicherschutzes | |
DE112005003098B4 (de) | Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung | |
DE102013022299B3 (de) | Schutz globaler Register in einem Multithreaded-Prozessor | |
DE102011076894B9 (de) | Persistenter Speicher für einen Hauptspeicher eines Prozessors | |
DE68923863T2 (de) | Ein-/Ausgabecachespeicherung. | |
DE60224774T2 (de) | Datenverarbeitungssystem mit Lese-, Änderungs- und Schreibeinheit | |
DE69111635T2 (de) | Gerät und Verfahren zur Background-Speicherprüfung während des Systemanlaufs. | |
DE112010004963T5 (de) | Synchronisieren von SIMD Vektoren | |
DE102010046892A1 (de) | Management und Implementierung von Metadaten in der Zentraleinheit unter Verwendung von Registererweiterungen | |
DE112006002908T5 (de) | Technik für die Kommunikation und Synchronisation von Threads | |
DE112005002420T5 (de) | Verfahren und Vorrichtung zum Pushen von Daten in den Cache eines Prozessors | |
DE112008001679T5 (de) | Cache-Speicher mit konfigurierbarer Assoziativität | |
DE102006039747A1 (de) | Verfahren für Kontextzustandsmanagement | |
DE112013003731T5 (de) | Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading | |
DE102010055267A1 (de) | Gemeinsames Benutzen von Ressourcen zwischen einer CPU und GPU | |
DE10297166T5 (de) | Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen | |
DE112010005269T5 (de) | Beschränken von Speicherbereichen für ein Behelfsauslesen in Abhängigkeit von einer Hardwarebetriebsart und einem Sicherheitsflag | |
DE112005002370T5 (de) | Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen | |
DE112016005823T5 (de) | Überwachen des betriebs eines prozessors | |
DE112012004629T5 (de) | Dynamischer Speicheraffinitätsanpasser auf Prozess/Objektebene | |
DE112014000340T5 (de) | Vorablesezugriff auf Daten für einen Chip mit einem übergeordneten Kern und einem Scout-Kern |
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 |