DE102007006190B4 - Techniken zur Verwendung von Speicher-Attributen - Google Patents

Techniken zur Verwendung von Speicher-Attributen Download PDF

Info

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
Application number
DE102007006190.2A
Other languages
English (en)
Other versions
DE102007006190A1 (de
Inventor
Quinn Jacobson
Anne Bracy
Hong Wang
John Shen
Per Hammarlund
Matthew Merten
Suresh Srinivas
Kshitij Doshi
Gautham Chinya
Bratin Saha
Ali-Reza Adl-Tabatabai
Gad Sheaffer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102007006190A1 publication Critical patent/DE102007006190A1/de
Application granted granted Critical
Publication of DE102007006190B4 publication Critical patent/DE102007006190B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection 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/145Protection 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring 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).

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 stellt 1 einen Cache-Speicher 100 dar, welcher eine Cache-Linie 105 umfasst, die einem bestimmten Speicherblock (nicht gezeigt) entspricht. Die Cache-Linie 105 hat dazu eine Anzahl von Attributen beigefügt, welche in der Form von Bits innerhalb des Speicherorts 110 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 Speicherort 110 gibt es eine Gruppe von Attributbits 115, welche der Cache-Linie 105 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 Zustandsspeicherort 120 ein Zustandsbit 125, welches der Cache-Linie 105 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 Attributbits 115 für die Cache-Linie 105 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 in 2 jeder Thread als ein einzelner Threadkern 20120n vorgestellt werden, welcher einen beigefügten Cache-Speicher 20520m 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-Speicher 20520m nur ihre MESI-Zustände aufweisen, die durch Threads, die durch die Einzelthread-Kerne 201-20n dargestellt sind, modifiziert werden. Obwohl in Wirklichkeit jeder der Cache-Speicher 205205m 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 in 2 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 in 3 dargestellt sind, auszuführen. In Operation 301 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 Operation 305 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 Operation 315 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 Operation 310 eingelesen wurden, einen unbekannten Zustand der Cache-Linie anzeigen. Wenn das so ist, dann tritt in Operation 320 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 Prozessor 405 greift auf die Daten eines Level Eins (L1) Cache-Speichers 410 und eines Hauptspeichers 415 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 aus 4 sowohl einen L1-Cache als auch einen L2-Cache enthalten.
  • Dargestellt im Prozessor aus 4 ist ein Speicherbereich 406 für Maschinenstatus. In einer Ausführungsform kann der Speicherbereich ein Satz Register sein, wohingegen in anderen Ausführungsformen der Speicherbereich 407 andere Speicherstrukturen aufweisen kann. Ebenfalls in 4 ist ein Speicherbereich 407 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 Netzwerkschnittstelle 430 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 Prozessors 407 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 zeigt 5, 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, Prozessor 570, 580, zur Verdeutlichung gezeigt sind. Die Prozessoren 570, 580 können jeder einen örtlichen Speichercontroller-Hub (MCH) 572, 582 umfassen, um mit dem Speicher 22, 24 zu verbinden. Die Prozessoren 570, 580 können Daten über eine Punkt-zu-Punkt (PtP) Schnittstelle 550 unter Verwendung der PtP-Schnittstellenschaltungen 578, 588 austauschen. Die Prozessoren 570, 580 können jeder Daten mit einem Chipsatz 590 über eigene PtP-Schnittstellen 552, 554 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 576, 594, 586, 598 austauschen. Der Chipsatz 590 kann auch Daten mit einer Hochleistungsgraphikdatenschaltung 538 über eine Hochleistungsgraphikdatenschnittstelle 539 austauschen. Ausführungsformen der Erfindung können in jedem Prozessor, welcher eine beliebige Anzahl von Verarbeitungskernen aufweist, oder in jedem der PtP-Busmittel aus 5 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 in 5 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)

  1. 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).
  2. Maschinenlesbares Medium nach Anspruch 1, das ferner ein Setzen des Attributbits (115) aufweist.
  3. 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.
  4. 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.
DE102007006190.2A 2006-02-07 2007-02-07 Techniken zur Verwendung von Speicher-Attributen Active DE102007006190B4 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (8)

* Cited by examiner, † Cited by third party
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