DE102018002480A1 - System, einrichtung und verfahren zum ausserkraftsetzen der nichtlokalitätsbasierten befehlsbehandlung - Google Patents

System, einrichtung und verfahren zum ausserkraftsetzen der nichtlokalitätsbasierten befehlsbehandlung Download PDF

Info

Publication number
DE102018002480A1
DE102018002480A1 DE102018002480.7A DE102018002480A DE102018002480A1 DE 102018002480 A1 DE102018002480 A1 DE 102018002480A1 DE 102018002480 A DE102018002480 A DE 102018002480A DE 102018002480 A1 DE102018002480 A1 DE 102018002480A1
Authority
DE
Germany
Prior art keywords
locality
memory
processor
memory access
cache
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.)
Pending
Application number
DE102018002480.7A
Other languages
English (en)
Inventor
Berkin Akin
Rajat Agarwal
Jong Soo Park
Christopher J. Hughes
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 DE102018002480A1 publication Critical patent/DE102018002480A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • G06F2212/6046Using a specific cache allocation policy other than replacement policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

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

Abstract

In einer Ausführungsform enthält ein Prozessor Folgendes: einen Kern, der eine Decodiereinheit enthält, um einen Speicherzugriffsbefehl zu decodieren, der einen Nichtlokalitätshinweis aufweist, um anzugeben, dass Daten, die dem Speicherzugriffsbefehl zugeordnet sind, wenigstens eines aus einer nicht räumlichen Lokalität und einer nicht zeitlichen Lokalität aufweisen; und eine Lokalitätssteuereinheit, um zu bestimmen, ob der Nichtlokalitätshinweis außer Kraft gesetzt werden soll, basierend wenigstens teilweise auf einem oder mehreren Leistungsüberwachungswerten. Andere Ausführungsformen sind beschrieben und beansprucht.

Description

  • Technisches Gebiet
  • Ausführungsformen beziehen sich auf effiziente Behandlung von Speicherzugriffen in einem Berechnungssystem.
  • Hintergrund
  • Arbeitslasten zur Verarbeitung weniger Daten wie z. B. Graphenanalyse führen irreguläre Speicherzugriffe aus. In einigen Fällen beziehen sich diese Zugriffe auf große Datenstrukturen und sind pseudozufällig. In modernen Prozessoren werden vollständige Cache-Zeilen aus dem Speicher geholt und in einen Cache-Speicher eingefügt. In vielen Fällen werden diese Zeilen jedoch vor irgendeiner Wiederverwendung geleert (entweder aus der räumlichen oder zeitlichen Lokalität). Das führt sowohl zur „Verschmutzung“ des Cache als auch zur Verschwendung externer Speicherbandbreite. Neuere Speicherschnittstellen stellen feingranulare Speicherzugriffsmöglichkeiten bereit, und zwar Speicherzugriff auf weniger als eine gegebene Speicherzeilen- oder Cache-Zeilenbreite. Speicherzugriffe unterhalb der Cache-Zeile führen jedoch zu Cache-Teilzeilen in einer Prozessor-Cache-Hierarchie, was die Konstruktion eines Cache verkomplizieren kann.
  • Figurenliste
    • 1 ist ein Blockdiagramm eines Systems in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung.
    • 2 ist ein Blockdiagramm eines Prozessors in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung.
    • 3 ist ein Blockdiagramm eines Systems in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung.
    • 4 ist ein Ablaufdiagramm eines Verfahrens in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung.
    • 5 ist ein Ablaufdiagramm eines Verfahrens in Übereinstimmung mit einer weiteren Ausführungsform der vorliegenden Erfindung.
    • 6 ist ein Blockdiagramm eines Puffers für seltenen Zugriff in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung.
    • 7A ist ein Blockdiagramm einer beispielhaften „In-order“-Pipeline und einer beispielhaften Registerumbenennungs-, „Out-of-order“-Ausgabe/Ausführungs-Pipeline, die in einen Prozessor aufgenommen werden sollen, gemäß Ausführungsformen der vorliegenden Erfindung.
    • 7A ist ein Blockdiagramm, das sowohl eine beispielhafte Ausführungsform eines „In-order“-Architekturkerns als auch einen beispielhaften Registerumbenennungs-, „Out-of-order“-Asugabe/Ausführungs-Architekturkern, die in einen Prozessor aufgenommen werden sollen, gemäß Ausführungsformen der vorliegenden Erfindung darstellt.
    • 8 ist ein Blockdiagramm eines Einzelkernprozessors und eines Mehrkernprozessors mit integrierter Speichersteuereinheit und Grafik gemäß Ausführungsformen der vorliegenden Erfindung.
    • 9 stellt ein Blockdiagramm eines Systems in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung dar.
    • 10 stellt ein Blockdiagramm eines Einchipsystems (SoC) in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung dar.
    • 11 stellt ein Blockdiagramm dar, das die Verwendung eines Software-Befehlsumsetzers, um binäre Befehle in einem Quellen-Befehlssatz in Binärbefehle in einem Ziel-Befehlssatz umzusetzen, gemäß Ausführungsformen der vorliegenden Erfindung hervorhebt.
    • 12 ist ein Ablaufdiagramm eines Verfahrens in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung.
    • 13 ist ein Ablaufdiagramm eines Verfahrens in Übereinstimmung mit einer weiteren Ausführungsform der vorliegenden Erfindung.
  • Ausführliche Beschreibung
  • In verschiedenen Ausführungsformen ist ein Prozessor konfiguriert, die Behandlung von Daten, die Nichtlokalität zeigen, (hier als Nichtlokalitätsdaten bezeichnet) durch Zugreifen auf solche Daten auf eine potentiell feingranulare Weise und potentielles Umgehen des Speicherns in einem Cache-Speicher zu optimieren. Einige Ausführungsformen können Befehle für Nichtlokalitäts-Speicherzugriff auf Anwenderebene wirksam einsetzen, die verwendet werden können, um Daten auf eine Weise, die die Cache-Hierarchie umgeht, zu lesen und zu schreiben. Solche Befehle können auch verwendet werden, um feingranulare Speicherzugriffe auszuführen, wie sie hier beschrieben sind. Obwohl der Schutzbereich der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, enthalten solche Befehle das Streamen von Lade- und Speicher-Befehlen, wobei in Reaktion darauf ein Kern verschiedene Lade- oder Speichervorgänge für individuelle Datenelemente, auf die zugegriffen wird, ausgeben kann, die einen Hinweis führen, dass die Speicherzugriffe das Speichern in Caches umgehen sollen, und können begrenzt in einer Speichersteuereinheit behandelt werden.
  • Mit dem selektiven Ermöglichen von Speicherzugriffen mit voller Breite in Reaktion auf spezielle Nichtlokalitätsanforderungen, die hier beschrieben sind, kann Lokalität ausgenutzt werden, wenn ein Zugriffsmuster tatsächlich cache-freundlich ist, z. B. falls eine Datenstruktur, auf die auf eine pseudozufällige Weise zugegriffen wird, in chipinterne Caches passt, oder falls auf die Datenstruktur unerwarteterweise in einem regelmäßigen Muster zugegriffen wird, mit viel räumlicher Lokalität. Auf diese Weise können Ausführungsformen die Fähigkeit zum feingranularen Speicherzugriff, die durch neuer Speichertechnologien bereitgestellt ist, ausnutzen ohne größere Änderungen an der Konstruktion einer Cache-Hierarchie, während Lokalität in den Zugriffen, wenn sie existiert, festgehalten wird.
  • In Ausführungsformen enthält ein Prozessor mikroarchitektonische Unterstützung für „Nichtlokalitäts“-Ladevorgänge (NL-Ladevorgänge). Im Gegensatz zu nicht-zeitlichen Ladevorgängen implizieren NL-Ladevorgänge weder zeitliche noch räumliche Lokalität. Solche NL-Ladevorgänge können bewirken, dass ein Prozessor die Caches abfragt und die Daten zurückgibt, falls ein Cache-Treffer auftritt, wie mit einem herkömmlichen Ladevorgang. Im Gegensatz dazu, falls ein Fehlschlag auftritt und die NL-Anforderung in der Speichersteuereinheit empfangen wird, bewirkt die Speichersteuereinheit, dass ein feingranularer Speicherzugriff stattfindet, um eine Cache-Teilzeile aus dem Speicher zu erhalten. Es wird darauf hingewiesen, dass diese Cache-Teilzeile nicht in Caches eingefügt wird, sondern stattdessen die Caches umgeht und direkt für den Kern bereitgestellt wird.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Systems 100, das einen Prozessor 102, der eine Cache-Hierarchie 103 aufweist, und einen Speicher 118 enthält. Der Prozessor 102 und der Speicher 118 sind durch eine oder mehrere Zusammenschaltungen zusammengekoppelt. Der Prozessor 102 enthält einen oder mehrere Kerne 104. In dem dargestellten Beispiel enthält der Prozessor 102 einen ersten Kern 104-1 optional bis zu einem N-ten Kern 104-N. Der Prozessor kann jede gewünschte Anzahl von Kernen enthalten (die z. B. häufig im Bereich von eins bis zur Größenordnung von Hunderten ist). Der Kern 104-1 enthält eine oder mehrere Ausführungseinheiten 106-1, und der Kern 104-N enthält eine oder mehrere Ausführungseinheiten 106-N.
  • Typischerweise kann der Prozessor 102 auch einen oder mehrere Caches 108, 110 aufweisen. Die Caches können relativ kleinere und schnellere Speichertypen als der Speicher 118 aufweisen. Die Caches können außerdem näher an den Kernen und/oder Ausführungseinheiten sein als der Speicher 118. Die Caches können verwendet werden, um Daten zwischenzuspeichern oder zu speichern, die in den Prozessor aus dem Speicher 118 gebracht werden (z. B. in Reaktion auf einen gegebenen Speicherzugriffsbefehl 112, z. B. einen Ladebefehl), um schnelleren nachfolgenden Zugriff auf die Daten bereitzustellen. Wenn der Prozessor Daten aus dem / in den Speicher 118 lesen oder schreiben möchte, kann er zuerst überprüfen, um nachzusehen, ob eine Kopie der Daten in den Caches gespeichert ist. Falls die Daten in einem Cache gefunden werden, kann der Prozessor auf die Daten aus dem Cache schneller zugreifen, als wenn auf die Daten 118 aus dem Speicher zugegriffen würde. Als ein Ergebnis kann das Aufnehmen der Caches dazu beitragen, die mittlere Zeit, die benötigt wird, um auf Daten zuzugreifen, zu reduzieren, was die Leistung und/oder den Durchsatz des Prozessors verbessern kann.
  • Immer noch mit Bezug auf 1 enthält eine Cache-Hierarchie 103 mehrere Ebenen von Caches, die sich in ihrer relativen Nähe zu den Kernen und/oder zu den Ausführungseinheiten des Prozessors unterscheiden. Der Kern 104-1 weist einen Cache erster Ebene oder Ebene-1-Cache (L1-Cache) 108-1 auf. Ähnlich weist der Kern 104-N einen L1-Cache 108-N auf. Jeder aus den L1-Caches kann für den entsprechenden Kern, in dem er enthalten ist, dediziert sein. Die L1-Caches repräsentieren die Cache-Ebene, die den Kernen am nächsten ist. Der Prozessor weist außerdem einen Cache zweiter Ebene oder Ebene-2-Cache (L2-Cache) 110 auf. Der L2-Cache repräsentiert die zweitnächste Cache-Ebene zu den Kernen. In einigen Implementierungen kann der L2-Cache durch die Kerne gemeinsam verwendet werden. Obwohl nicht gezeigt können optional ein oder mehrere zusätzliche Cache-Ebenen vorhanden sein, die noch weiter von den Kernen entfernt sind (z. B. ein Ebene-3-Cache (L3-Cache)).
  • Ein Grund für das Aufnehmen von Caches in Prozessoren ist, dass Speicherreferenzen häufig ein Lokalitätsattribut aufweisen. Beispielsweise weisen Referenzen auf Daten im Speicher häufig eine zeitliche und/oder räumliche Lokalität auf. Zeitliche Lokalität impliziert, dass es dann, wenn auf Daten aus einer Adresse im Speicher zugegriffen wird, wahrscheinlich ist, dass auf dieselben Daten innerhalb einer kurzen Zeitspanne wieder zugegriffen wird. Als Beispiel kann das der Fall sein, wenn derselbe Wert in einer Schleife wiederverwendet werden soll, wiederholt in einer Gruppe von Berechnungen verwendet wird, oder aus verschiedenen anderen Gründen. In solchen Fällen kann es nützlich sein, die Daten nach dem Zugreifen auf die Daten aus dem Speicher in einem Cache zu speichern, so dass nachfolgende Zugriffe auf die Daten schneller aus dem Cache anstatt langsam aus dem Speicher ausgeführt werden können.
  • Räumliche Lokalität impliziert, dass es dann, wenn auf ein gegebenes Datenelement aus einer Adresse im Speicher zugegriffen wird, auch wahrscheinlich ist, dass innerhalb einer kurzen Zeitspanne auf daneben liegende Daten zugegriffen wird. Als Beispiel können beide Datenmengen Teil desselben Inhalts sein (z. B. eines Bilds, einer Tabelle, einer Datenstruktur, eines Videos usw.) und können zu etwa der gleichen Zeit verarbeitet werden. Räumliche Lokalität kann auch aus verschiedenen anderen Gründen auftreten. Caches nutzen die räumliche Lokalität durch Speichern nicht nur der anfangs benötigten Daten, sondern auch daneben liegender Daten aus daneben liegenden Adressen aus.
  • Typischerweise ist die kleinste Datenmenge, auf die aus dem Speicher zugegriffen und die in dem Cache gespeichert wird, eine Datenmenge einer Cache-Zeile voller Breite, selbst wenn anfangs nur eine viel kleinere Datenmenge benötigt sein kann. Beispielsweise kann typischerweise auf eine gesamte 512-Bit-Cache-Zeile aus dem Speicher zugegriffen und in dem Cache gespeichert werden, selbst wenn anfangs nur ein einzelnes 8-Bit-, 16-Bit-, 32-Bit-, 64-Bit- oder 128-Bit-Datenelement benötigt wird. Falls räumliche Lokalität existiert, wird das nützlich sein, da es wahrscheinlich ist, dass die zusätzlichen Daten, die in den Cache eingebracht werden, in naher Zukunft ebenfalls benötigt werden.
  • Während des Betriebs werden Daten in den Caches kontinuierlich durch Leeren von Daten, die wahrscheinlich in naher Zukunft nicht benötigt werden, verändert, um Platz für Daten zu schaffen, die in der nahen Zukunft wahrscheinlich benötigt werden. Verschiedene Ersetzungsalgorithmen und Strategien werden verwendet, von denen viele häufig in hohem Maße auf dem Alter der Daten basieren (z. B. eine Angabe für am längsten nicht verwendet) aufgrund der zeitlichen Lokalität.
  • Speicherzugriffsbefehle 112 nutzen die zeitliche oder räumliche Lokalität durch Speichern von Datenelementen, die aus dem Speicher 118 erfasst wurden, in der Cache-Hierarchie 103. Viele Anwendungen und Datentypen zeigen eine signifikante räumliche und/oder zeitliche Lokalität in ihrem Zugriffsstrom und profitieren dadurch von dem Zugreifen auf und Speichern einer Datenmenge einer ganzen Cache-Zeile in dem Cache für jedes erfasste Datenelement. Es weisen jedoch nicht alle Anwendungen und/oder Datentypen ausreichende zeitliche und/oder räumliche Lokalität auf, um das Zugreifen auf und Speichern von ganzen Cache-Zeilen in den Caches zum Laden und/oder Speichern von Befehlen zu rechtfertigen. Spezielle Datenelemente können einmal benötigt werden, es kann jedoch unwahrscheinlich sein, dass sie in naher Zukunft wieder benötigt werden. Beispielsweise kann das der Fall sein bei speziellen Daten-Streaming-Anwendungen, Hochleistungsberechnungsanwendungen, Anwendungen, die einen Strom von sehr seltenen Speicherzugriffen aufweisen und in verschiedenen anderen Anwendungen. Außerdem können in vielen Fällen ein Programmierer und/oder die Software (z. B. ein Betriebssystem) fähig sein, Lokalität zu identifizieren.
  • Noch mit Bezug auf Fig. 1 können ein oder mehrere Kerne 104 einen Speicherzugriffsbefehl 114 mit Nichtlokalitätshinweis empfangen und ausführen (z. B. einen Ladebefehl mit Nichtlokalitätshinweis wie z. B. einen Nichtlokalitätshinweis-Lade- oder Erfassungsbefehl und/oder einen Nichtlokalitätshinweis-Speicherbefehl wie z. B. einen Nichtlokalitätshinweis-Speicher- oder Streubefehl). Der Hinweis kann angeben, dass die Daten, auf die zugegriffen werden soll (z. B. erfasst oder gestreut), unzureichende räumliche und/oder zeitliche Lokalität aufweisen. In einigen Ausführungsformen kann der Nichtlokalitätshinweis ein Hinweis auf keine zeitliche Lokalität sein. In anderen Ausführungsformen kann der Nichtlokalitätshinweis ein Hinweis auf keine räumliche Lokalität sein. In noch anderen Ausführungsformen kann der Nichtlokalitätshinweis ein Hinweis auf keine zeitliche und keine räumliche Lokalität sein. In dem Fall eines Hinweises auf keine zeitliche Lokalität können in einigen Ausführungsformen erfasste Datenelemente die Cache-Hierarchie 103 umgehen und/oder nicht in der Cache-Hierarchie 103 gespeichert werden, was dazu beitragen kann, die Cache-Verschmutzung zu reduzieren. In dem Fall eines Hinweises auf keine räumliche Lokalität können in einigen Ausführungsformen Zugriffe auf Datenelemente mit nur Datenmengen unterhalb einer Cache-Zeile ausgeführt werden (z. B. auf Datenmengen einer halben oder einer viertel Cache-Zeile), oder ein einigen Fällen auf Datenmengen eines einzelnen Elements, was dazu beitragen kann, die Verschwendung von Zusammenschaltungsbandbreite zu reduzieren und/oder den Energieverbrauch zu reduzieren. Das Verwenden von Nichtlokalitätshinweis-Speicherzugriffsbefehlen kann dazu beitragen, die Leistung zu verbessern und/oder den Energieverbrauch zu reduzieren zu Zeiten, wenn unzureichende räumliche und/oder zeitliche Lokalität vorhanden ist.
  • 2 ist ein Blockdiagramm einer Ausführungsform eines Prozessors 202, der arbeitet, um eine Ausführungsform eines Nichtlokalitätshinweis-Speicherzugriffsbefehls 214 auszuführen. Der Nichtlokalitätshinweis-Speicherzugriffsbefehl kann außerdem hier als ein Nichtlokalitätshinweis-Ladebefehl bezeichnet sein. In einigen Ausführungsformen kann der Prozessor 200 ein Allzweckprozessor sein (z. B. ein Allzweck-Mikroprozessor oder eine zentrale Verarbeitungseinheit (CPU) des Typs, der in einem Desktop-, Laptop- oder anderen Computern verwendet wird). Alternativ kann der Prozessor ein Spezialprozessor sein. Beispiele geeigneter Spezialprozessoren enthalten Grafikprozessoren, Netzprozessoren, Kommunikationsprozessoren, Kryptografieprozessoren, Coprozessoren, eingebettete Prozessoren digitale Signalprozessoren (DSPs) und Steuereinheiten (z. B. Mikrosteuereinheiten), sind jedoch nicht darauf beschränkt. Der Prozessor 202 kann irgendeiner aus verschiedenen Prozessoren mit komplexem Befehlssatz (CISC-Prozessoren), Prozessoren mit reduziertem Befehlssatz (RISC-Prozessoren), Prozessoren mit sehr langem Befehlswort (VLIW-Prozessoren), Hybriden daraus, anderen Typen von Prozessoren sein oder kann eine Kombination aus unterschiedlichen Prozessoren (z. B. in unterschiedlichen Kernen) aufweisen.
  • Während des Betriebs kann der Prozessor 202 einen Nichtlokalitätshinweis-Speicherzugriffsbefehl 214 empfangen. Beispielsweise kann der Nichtlokalitätshinweis-Speicherzugriffsbefehl von einer Befehlsabholeinheit, einer Befehlswarteschlange oder dergleichen empfangen werden. Der Nichtlokalitätshinweis-Speicherzugriffsbefehl kann einen Makrobefehl, einen Assembler-Befehl, einen Maschinencode-Befehl oder einen anderen Befehl oder ein anderes Steuersignal eines Befehlssatzes des Prozessors 202 sein.
  • Noch mit Bezug auf 2 enthält der Prozessor 202 eine Decodiereinheit oder einen Decodierer 230. Die Decodiereinheit 230 kann einen Nichtlokalitätshinweis-Speicherzugriffsbefehl 214 empfangen und decodieren. Die Decodiereinheit 230 kann einen oder mehrere Mikrobefehle, Mikrooperationen, Mikrocodeeintrittspunkte, decodierte Befehle oder Steuersignale oder andere Befehle oder Steuersignale einer relativ niedrigeren Ebene ausgeben, die den Nichtlokalitätshinweis-Speicherzugriffsbefehl widerspiegeln, repräsentieren und/oder von ihm abgeleitet sind. Der eine oder die mehreren Befehle oder Steuersignale niedrigerer Ebene können den Nichtlokalitätshinweis-Speicherzugriffsbefehl höherer Ebene durch eine oder mehrere Operationen niedrigerer Ebene (z. B. Schaltungsebene oder Hardware-Ebene) implementieren. Die Decodiereinheit 230 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert sein, die Mikrocode-Festwertspeicher (ROMs), Nachschlagetabellen, Hardware-Implementierungen, programmierbare Logik-Arrays (PLAs) und andere Mechanismen, die verwendet werden, um Decodiereinheiten zu implementieren, aus dem Stand der Technik enthalten, jedoch nicht darauf beschränkt sind.
  • Wieder mit Bezug auf 2 enthält der Prozessor 202 außerdem eine Gruppe von Allzweckregistern 242 und eine Gruppe von Registern 232 für gepackte Daten. Jedes aus den Registern für gepackte Daten kann einen chipinternen Speicherort repräsentieren, der arbeitet, um gepackte Daten, Vektordaten oder Einzelbefehl-Mehrfachdaten-Daten (SIMD-Daten) zu speichern. Die Register können architektonisch sichtbare Register (z. B. eine architektonische Registerdatei) repräsentieren, die für Software und/oder einen Programmierer sichtbar sind und/oder die Register sind, die durch Befehle eines Befehlssatzes angegeben sind, um Operanden zu identifizieren. Die Ausführungseinheit 206 ist mit der Decodiereinheit 230 und den Registern 232, 242 gekoppelt. Die Ausführungseinheit 206 kann den einen oder die mehreren decodierten oder auf andere Weise umgesetzten Befehle oder Steuersignale empfangen, die den Nichtlokalitätshinweis-Ladebefehl repräsentieren und/oder von ihm abgeleitet sind.
  • Die Ausführungseinheit 206 arbeitet in Reaktion auf und/oder als ein Ergebnis des Nichtlokalitätshinweis-Ladebefehls (z. B. in Reaktion auf einen oder mehrere Befehle oder Steuersignale, die direkt oder indirekt (z. B. über Emulation) aus dem Befehl decodiert sind), um auf einen Ort in dem Speicher zuzugreifen. Die Ausführungseinheit 206 kann Nichtlokalitätshinweis-Ladeoperationen 248 für eine oder mehrere Cache-Steuereinheiten 244 bereitstellen. In einigen Ausführungsformen können eine einzige Cache-Ebene und eine einzige Steuereinheit (z. B. eine L1-Cache-Steuereinheit) vorhanden sein. In anderen Ausführungsformen können zwei oder mehr Cache-Steuereinheiten (z. B. eine L1-Cache-Steuereinheit, eine L2-Cache-Steuereinheit und optional eine L3-Cache-Steuereinheit) vorhanden sein.
  • In einigen Ausführungsformen kann, falls der Nichtlokalitätshinweis-Ladebefehl 248 im Cache 208 einen Treffer findet, dann die zugeordnete Cache-Steuereinheit 244 optional eine Datenmenge unterhalb einer Cache-Zeile aus dem Cache 208 zurückgeben (wo der Cache Zugriffe unterhalb der Cache-Zeile unterstützt, wie z. B. ein sektorierter Cache). In verschiedenen Ausführungsformen kann die Datenmenge unterhalb einer Cache-Zeile nur eine halbe Cache-Zeile (z. B. nur 256 Bits einer 512-Bit-Cache-Zeile), nur ein Viertel einer Cache-Zeile (z. B. nur 128 Bits), nur ein Achtel einer Cache-Zeile (z. B. nur 64 Bits) oder nur ein einzelnes Datenelement (z. B. 1 128-Bit-, 64-Bit-, 32-Bit-, 16-Bit- oder 8-Bit-Datenelement) sein. In anderen Fällen kann bei einem Cache-Treffer eine vollständige Cache-Zeile zurückgegeben werden.
  • Umgekehrt kann, falls die Nichtlokalitätshinweis-Ladeoperation 248 in allen Cache(s) 208 fehlschlägt, in Reaktion auf die Anforderung 249 die Anforderung für Daten dann zu einer Speichersteuereinheit 246 gesendet werden. In einigen Ausführungsformen kann die Speichersteuereinheit 246 einen Datenzugriff unterhalb einer Cache-Zeile und Rückgabe 250 aus dem Speicher ausführen (z. B. dem externen Speicher). Es wird darauf hingewiesen, dass die zugeordnete Cache-Steuereinheit 244 keinen Speicherplatz in dem Cache für die angeforderten Daten zuweisen muss, wie sie es normalerweise für einen regulären Ladebefehl (d. h. ohne einen Nichtlokalitätshinweis) tun würde. In verschiedenen Ausführungsformen können der Zugriff unterhalb einer Cache-Zeile und die Rückgabe 250 nur eine halbe Cache-Zeile (z. B. nur 250 Bits), nur ein Viertel einer Cache-Zeile (z. B. nur 128 Bits), nur ein Achtel einer Cache-Zeile (z. B. nur 64 Bits) oder nur ein einzelnes Datenelement (z. B. ein 64-Bit-, 32-Bit-, 16-Bit- oder 8-Bit-Datenelement) sein. Das heißt, die Speichersteuereinheit 246 kann Daten aus dem Speicher mit einem Zugriff kleinerer Größe laden und Daten zurückgeben, die gewöhnlich für eine Ladeoperation ohne einen Nichtlokalitätshinweis (z. B. eine herkömmliche Ladeoperation) verwendet würden. Als ein spezifisches Beispiel kann nur eines aus einem Paar von 256-Bit-Bussignalen, die normalerweise verwendet werden, um auf eine gesamte Datenmenge einer 512-Bit-Cache-Zeile zuzugreifen, von der Speichersteuereinheit 246 zu dem Speicher gesendet werden, wobei das eine, das gesendet wird, dasjenige ist, das das gewünschte Datenelement enthält. In einigen Ausführungsformen kann optional der Zugriff und die Datenrückgabe mit kleinster Größe, die ausreichend ist, um das gewünschte Datenelement zu enthalten, verwendet werden. Die Speichersteuereinheit 246 kann eine Datenrückgabe 250 unterhalb einer Cache-Zeile für die Cache-Steuereinheit(en) 244 bereitstellen. Die Cache-Steuereinheiten können eine entsprechende Datenmenge 252 unterhalb einer Cache-Zeile für die Ausführungseinheit 206 bereitstellen. Somit können in verschiedenen Ausführungsformen Nichtlokalitätshinweis-Ladebefehle sowohl Datenzugriff unterhalb einer Cache-Zeile als auch direkte Rückgabe zu einem Kern unter Umgehung der Cache-Hierarchie bewirken.
  • In Ausführungsformen enthält der Prozessor 202 einen sogenannten Puffer 245für seltenen Zugriff (SAB), der eine Speicherstruktur ist, die in der Speichersteuereinheit 246 enthalten oder ihr zugeordnet ist. Die Speichersteuereinheit 246 trägt Adressen feingranularer Zugriffe in diesem Puffer ein. Wenn ein NL-Ladevorgang die Speichersteuereinheit erreicht, schlägt die Steuereinheit in dem Puffer nach. Ein Treffer auf einem entsprechenden Eintrag in dem SAB 245 impliziert Lokalität (wie z. B. wenn Daten vorher die Caches umgangen haben, die Zeile jetzt jedoch neu referenziert wird). In einem Beispiel wird in Reaktion auf diese Situation ermöglicht, dass die NL-Ladeanforderung selektiv als ein regulärer Ladevorgangbehandelt wird, so dass eine vollständige Cache-Zeile aus dem Speicher als eine selektive Rückgabe 251 voller Breite zurückgegeben und in Caches eingefügt wird, um die Lokalität für zukünftige Zugriffe auszunutzen. Auf diese Weise können Informationen in dem SAB 245 durch die Speichersteuereinheit 246 verwendet werden, um selektiv Zugriffe mit Lokalitätspotential zu filtern und ihre Zieldaten in Caches als vollständige Cache-Zeilen einzufügen, während Zugriffe ohne Lokalität umgeleitet werden.
  • Ausführungsformen können verwendet werden, um Speicherzugriffe für Cache-Teilzeilen ohne Verwendung eines sektorierten Cache zu behandeln, was die Konstruktion des Cache vereinfachen kann. Außerdem kann mit einer Ausführungsform das Lokalitätspotential, wenn es vorhanden ist, über Cache-Speichern ausgenutzt werden. NL-Ladevorgänge mit dem Potential für Lokalität enthalten Arbeitslasten zur Verarbeitung weniger Daten, die Lokalitätspotential zeigen können, basierend auf den eingegebenen Datengruppen (z. B. Größe, Typ, Topologie usw.).
  • In einer Ausführungsform ist die SAB-Struktur in der Speichersteuereinheit enthalten, um das Lokalitätsverhalten auf der Speicherseite zu verfolgen. Mit dieser Anordnung beobachtet der SAB hauptsächlich Zugriffsverkehr mit niedriger Lokalität, da Zugriffe mit hoher Lokalität durch Caches gefiltert werden. Im Gegensatz dazu würde kernseitiges Verfolgen einen Zugriffsstrom mit Zugriffen sowohl hoher als auch niedriger Lokalität empfangen. Somit kann ein speicherseitig konfigurierter SAB eine viel höhere Abdeckung zur Verfolgung von Zugriffen mit niedriger Lokalität für eine gegebene Anzahl von Einträgen bereitstellen. Als ein Beispiel kann sogar ein SAB mit so wenigen wie 32 Einträgen eine vernünftige Leistung bereitstellen, während kernseitiges Verfolgen eine viel größere Anzahl von Einträgen, z. B. 256k Einträge, verbrauchen kann.
  • Dünn besetzte Datenstrukturen sind in der Analyse großer Datenmengen, Maschinenlernen und Hochleistungsberechnung sehr verbreitet. Diese Arbeitslasten weisen manchmal sehr große Datenstrukturen auf, die nicht in Caches passen. Diese großen Datenstrukturen sind häufig über dünn besetzte Konnektivitäts-Matrizen indexiert, was zu irregulären Zugriffen mit schlechter räumlicher Lokalität und Wiederverwendung führt (z. B. eine Schleife über A[B[i]], wobei A groß ist und wo B[i] vollständig zufällig sein kann). Das Verwenden feingranularer Speicherzugriffe über Ladevorgänge mit Teilbreite verbessert die Leistung des Speichersystems durch Reduzieren der Verschwendung von Bandbreite und der Cache-Verschmutzung.
  • In einer Ausführungsform kann die Unterstützung der Befehlssatzarchitektur (ISA-Unterstützung) für Nichtlokalitäts-Ladevorgänge spezielle skalare Ladevorgänge und Einzelbefehl-Mehrfachdaten-Erfassen (SIMD-Erfassen) enthalten, die keine räumliche oder zeitliche Lokalität nahelegen. Als ein Basissystem kann die folgende Semantik für NL-Ladevorgänge angenommen sein. NL-Ladevorgänge sind auf cache-fähigem Rückschreib-Speicher mit schwacher Ordnungs-Semantik erlaubt. Das ermöglicht es Hardware, Daten spekulativ zu lesen, und noch nicht (potentiell Teil-) Cache-Zeilen in die Cache-Hierarchie zum Daten-„Snooping“ einzufügen.
  • Ausführungsformen führen dynamisches Entscheidungsfinden aus, um zu bestimmen, ob sie einem NL-Hinweis folgen sollen oder den Hinweis ignorieren, um erhaltene Daten (die potentiell von einer vollen Breite sind) in einer Cache-Hierarchie zu speichern. Einfaches Umgehen von Caches für jeden NL-Ladezugriff kann zu Leistungsverlust basierend auf einigen wenigen Faktoren führen: (i) dünn indexierte Datenstrukturen können klein genug sein, um in Caches zu passen, da Programmierer häufig die Eingabegrößen im Voraus nicht kennen; und (ii) dünne Eingabedaten können unterschiedliche Zugriffsverteilungen zeigen, die dem Compiler oder Programmierer unbekannt sind. Beispielsweise kann die Verteilung gleichmäßig zufällig sein oder im Fall von vielen Graphen für soziale Netze eine exponentielle Verteilung zeigen, wobei einige wenige Hub-Knoten, die viele Rückbezüge sehen, jedoch viele Blattknoten ohne Wiederverwendung vorhanden sind. Selektives Einfügen von Hub-Knoten in Caches und Umleiten von Blattknoten würde die Gesamtleistung verbessern. Als ein weiterer Faktor kann ein Programmierer NL-Ladevorgänge zweckentfremden. Ein Mechanismus, um ein Lokalitätspotential für NL-Ladevorgänge zu detektieren, kann in diesen Fällen das NL-Verhalten außer Kraft setzen. Als solcher erlaubt ein dynamischer Korrekturmechanismus in Übereinstimmung mit einer Ausführungsform Programmierern, das NL-Laden-Merkmal freier zu verwenden.
  • Im Betrieb beginnt ein NL-Ladeablauf wie ein regulärer Ladeablauf. Falls er in einem Cache einen Treffer findet, gibt die Hardware die Cache-Zeile wie gewöhnlich zurück, fügt die Cache-Zeile in Cache(s) ein, die näher an dem Kern sind, und aktualisiert Verwendungs-Bits (obwohl das Einfügen und Ersetzen basierend auf dem NL-Hinweis optimiert sein können). In einigen Ausführungsformen wird, falls bereits ein unerledigter Fehlschlag für die gleiche Adresse vorhanden ist, wird ein NL-Ladefehlschlag mit dem unerledigten Ladevorgang zusammengeführt. Falls kein unerledigter Fehlschlag für die Adresse des NL-Ladevorgangs vorhanden ist, weist es einen Füllpuffer wie z. B. einen Fehlschlagstatushalteregister-Eintrag (MSHR-Eintrag) mit einem NL-Flag oder Kennzeichen zu. Falls irgendein ankommender Fehlschlag zu einer Adresse vorhanden ist, die bereits einen unerledigten NL-Ladefehlschlag aufweist, wird der ankommende Fehlschlag nicht auf den unerledigten Fehlschlag mit dem NL-Flag angewiesen sein, um die Cache-Zeile zu bringen. Der neue Fehlschlag kann blockiert werden (da das MHRS voll ist), oder der unerledigte Fehlschlag mit dem NL-Flag kann in einen regulären Fehlschlag umgesetzt werden, der in Caches eingefügt werden soll.
  • Falls ein NL-Ladevorgang für alle Caches fehlschlägt und auf den Speicher zugreifen muss, dann bestimmt die Speichersteuereinheit dynamisch, ob diese Anforderung als ein regulärer Speicherzugriff für eine vollständige Cache-Zeile (über ein selektives Außerkraftsetzen des Nichtlokalitätshinweises) oder als ein feingranularer (unterhalb der Cache-Zeilenbreite) Speicherzugriff (gemäß dem Nichtlokalitätshinweis) ausgeführt wird. Falls ein Zugriff auf eine vollständige Cache-Zeile stattfindet, wird der Ladeablauf wie gewöhnlich fertiggestellt, die Cache-Zeile wird zurückgegeben, so dass die Zeile, die in den/die Cache(s) eingefügt wird, und die zugewiesenen MSHR-Einträge werden aktualisiert. Falls jedoch die Entscheidung ist, einen feingranularen Speicherzugriff auszuführen, gibt die Speichersteuereinheit die Daten unterhalb einer Cache-Zeile direkt zu dem Kern zurück, ohne die Daten in Caches einzufügen. Nach der Fertigstellung dieses Fehlschlags werden entsprechende MSHR-Einträge mit dem NL-Flag gelöscht.
  • Jetzt Bezug nehmend auf 3 ist ein Blockdiagramm eines Systems in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Insbesondere enthält das System 300 einen Prozessor 302, und zwar einen Mehrkernprozessor. Wie zu sehen ist enthält der Prozessor 302 mehrere Kerne 304-1-304-N mit entsprechenden eigenen Cache-Speichern (und zwar L1-Caches) 306-1-306-N. Diese Cache-Speicher wiederum sind mit einem gemeinsam verwendeten Cache-Speicher 310 gekoppelt, der in einer Ausführungsform ein L2-Cache sein kann (und der in einigen Fällen ein Cache der letzten Ebene (LLC) sein kann). Der Cache-Speicher 310 wiederum ist mit einer Speichersteuereinheit 346 gekoppelt. In der gezeigten Ausführungsform ist die Speichersteuereinheit 346 mit einem Puffer 345 für seltenen Zugriff gekoppelt. Obwohl sie zur Vereinfachung der Darstellung als separate Komponenten gezeigt sind, ist zu verstehen, dass in speziellen Ausführungsformen der Puffer 345 für seltenen Zugriff innerhalb der Speichersteuereinheit 346 implementiert sein kann. Jedenfalls ist der Puffer 345 für seltenen Zugriff von den Kernen 304 als eine nicht zum Kern gehörige Schaltungskomponente getrennt und ist somit nicht Teil einer kohärenten Domäne. Die Speichersteuereinheit 346 weist wiederum eine Schnittstelle mit einem Systemspeicher 360 auf, der in einer Ausführungsform irgendein Typ einer Speicherstruktur sein kann, die feingranulare Zugriffe handhaben kann.
  • Es ist zu verstehen, dass die Speichersteuereinheit 346 ferner eine Lokalitätssteuerschaltung (Lokalitätssteuereinheit) 347 enthalten kann, die konfiguriert ist, in Reaktion auf den Empfang der NL-Ladeanforderung dynamisch zu bestimmen, ob eine solche Anforderung als ein NL-Ladevorgang mit NL-Ladeverarbeitung behandelt werden soll oder die Anforderung mit Ladeverarbeitung mit voller Breite behandelt werden soll. Wie hier beschrieben ist, kann diese Bestimmung wenigstens teilweise auf Informationen innerhalb des Puffers 345 für seltenen Zugriff basieren.
  • Noch mit Bezug auf 3 sind Abläufe für reguläre Ladebehandlung und NL-Landebehandlung gezeigt. Insbesondere wird für einen regulären Ladevorgang eine Ladeanforderung von einem gegebenen Kern 304 ausgegeben und wird für die Cache-Hierarchie bereitgestellt, um zu bestimmen, ob die Anforderung in der Cache-Hierarchie einen Treffer findet. Falls ja, werden die Daten zurückgegeben. Falls ein Cache-Fehlschlag auftritt, wird die Anforderung zu der Speichersteuereinheit 346 weitergegeben, die eine entsprechende Anforderung für den Systemspeicher 360 ausgibt, um eine vollständige Breite der Daten (nämlich eine vollständige Cache-Zeile) zu erhalten. Nach dieser Datenrückgabe stellt die Speichersteuereinheit 346 die Daten zum Einfügen in die Cache-Hierarchie und Bereitstellung für den anfordernden Kern 304 bereit.
  • Im Gegensatz dazu greift die Speichersteuereinheit 346, sollte eine NL-Ladeanforderung in der Cache-Hierarchie fehlschlagen, auf den Puffer 345 für seltenen Zugriff zu, um zu bestimmen, ob die Anforderung mit NL-Verarbeitung oder mit Verarbeitung mit voller Breite behandelt werden soll. Falls eine Adresse der Anforderung innerhalb des Puffers 345 für seltenen Zugriff einen Treffer findet und ein zugeordneter Vertrauenswert einen Schwellenwert erfüllt, kann die Speichersteuereinheit 346 die Anforderung als einen Ladevorgang mit voller Breite behandelt, mit einer Behandlung, wie sie vorstehend diskutiert ist. Andernfalls fordert die Speichersteuereinheit 346 eine Teilbreite der Daten von dem Systemspeicher 360 an und stellt die zurückgegebenen Daten direkt für den anfordernden Kern 304 unter Umgehung der Cache-Hierarchie bereit. Es ist zu verstehen, dass viele Variationen und Alternativen möglich sind, obwohl es in der Ausführungsform von 1 auf dieser hohen Ebene gezeigt ist.
  • Jetzt Bezug nehmend auf 4 ist ein Ablaufdiagramm eines Verfahrens in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Insbesondere kann das Verfahren 400 durch eine Hardware-Schaltungsanordnung, Software, Firmware und/oder Kombinationen daraus ausgeführt werden. Insbesondere kann das Verfahren 400 durch verschiedene Logik und Schaltungsanordnung innerhalb eines Prozessors ausgeführt werden, um einen Speicherzugriffsbefehl, der einen Nichtlokalitätshinweis aufweist, zu behandeln. Wie dargestellt beginnt das Verfahren 400 durch Empfangen eines Speicherzugriffsbefehls, der einen Nichtlokalitätshinweis aufweist (Block 410). Dieser Befehl kann innerhalb einer Decodiereinheit des Prozessors, die den Befehl decodiert, empfangen werden. Die Steuerung geht wiederum zu Raute 420 über, wo bestimmt wird, ob eine Adresse, die diesem Befehl zugeordnet ist, innerhalb der Cache-Speicherhierarchie einen Treffer findet. Falls ja, geht die Steuerung zu Block 430 über, wo die Daten zu dem Anfordernden zurückgegeben werden. Es ist zu verstehen, dass zusätzliche Verarbeitung wie z. B. Aktualisieren von Aktualitätsinformationen der getroffenen Cache-Zeile und so weiter stattfinden kann.
  • Noch mit Bezug auf 4 geht die Steuerung, falls die Anforderung innerhalb der Cache-Speicherhierarchie fehlschlägt, zu Block 440 über, wo der Typ der Speicherzugriffsbehandlung bestimmt werden kann. Insbesondere können bei Block 440, der in einer Lokalitätssteuereinheit einer Speichersteuereinheit ausgeführt werden kann, Informationen aus einem Puffer für seltenen Zugriff verwendet werden, um geeignete Behandlung zu bestimmen, wie vorstehend diskutiert. Falls Nichtlokalitätsbehandlung ausgeführt werden soll, geht die Steuerung zu Block 450 über, wo Daten mit Teilbreite erhalten und direkt zu dem Anfordernden zurückgegeben werden. Diese direkte Rückgabe der Daten mit Teilbreite zu dem Anfordernden (z. B. dem Kern) umgeht die Cache-Hierarchie. Noch weiter können Informationen innerhalb des Puffers für seltenen Zugriff aktualisiert werden. Beispielsweise kann, falls bereits ein Eintrag für eine Adresse existiert, die diesem Speicherzugriffsbefehl zugeordnet ist, ein Vertrauenswert aktualisiert (z. B. inkrementiert) werden. Oder es kann, falls vorher kein Eintrag in dem Puffer für seltenen Zugriff existiert hat, ein neuer Eintrag für diese Adresse eingefügt werden. Abhängig von der Implementierung des Puffers für seltenen Zugriff können die Daten mit Teilbreite selbst ebenfalls gespeichert werden.
  • Noch mit Bezug auf 4, falls stattdessen bestimmt wird, dass für diesen Speicherzugriffsbefehl selektive Behandlung mit voller Breite ausgeführt werden soll, geht die Steuerung zu Block 460 über, wo Daten voller Breite erhalten werden können. Diese Daten können dem Anfordernden über die Cache-Speicherhierarchie zugeführt werden. Es wird außerdem daraufhingewiesen, dass dann, wenn ein Eintrag in dem Puffer für seltenen Zugriff für diese Adresse existiert, er entfernt werden kann. Es ist zu verstehen, dass viele Variationen und Alternativen möglich sind, obwohl es in der Ausführungsform von 4 auf dieser hohen Ebene gezeigt ist.
  • Somit kann in Ausführungsformen der SAB verwendet werden, um potentielle Lokalität für NL-Ladevorgänge, die in allen Caches fehlschlagen, dynamisch zu detektieren, z. B. mit Hilfe einer Entscheidung über feingranularen/vollständigen Zugriff. In Reaktion auf einen feingranularen Speicherzugriff wird in dem SAB ein Eintrag zugewiesen. Ein neuer NL-Ladevorgang, der in der Speichersteuereinheit empfangen wird und einen Treffer in dem SAB findet, gibt an, dass auf diese Adresse kürzlich zugegriffen wurde, jedoch die Caches umgangen hat, und jetzt erneut referenziert wird. In diesem Fall wird ein Vertrauenskennzeichen (z. B. ein oder mehrere sogenannte Vertrauens-Bits), um potentielle Lokalität zu identifizieren, für diese spezielle Adresse inkrementiert. Falls die Vertrauensebene hoch genug ist, wenn der neue NL-Ladevorgang in der Speichersteuereinheit empfangen wird, dann wird ein regulärer Speicherzugriff für eine vollständige Cache-Zeile ausgeführt, und die Daten werden in Caches eingefügt, um die Lokalität für die nächsten Anforderungen festzuhalten.
  • Jetzt Bezug nehmend auf 5 ist ein Ablaufdiagramm eines Verfahrens in Übereinstimmung mit einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Insbesondere legt das Verfahren 500 die Behandlung eines Ladebefehls, der einen Nichtlokalitätshinweis aufweist, innerhalb eines Prozessors dar. Als solches kann das Verfahren 500 durch eine Hardware-Schaltungsanordnung, Software, Firmware und/oder Kombinationen daraus ausgeführt werden.
  • Wie dargestellt beginnt das Verfahren 500 durch Bestimmen, ob eine Adresse des NL-Ladebefehls in irgendeiner Ebene der Cache-Hierarchie einen Treffer findet (Raute 510). Falls ja, geht die Steuerung zu Block 520 über, wo Daten zu dem Kern zurückgegeben werden. Noch weiter können, abhängig von der Prozessorimplementierung, die Trefferdaten auch in eine oder mehrere Cache-Ebenen eingefügt werden (nämlich in eine oder mehrere Cache-Ebenen näher an dem Kern). Stattdessen geht die Steuerung, falls bestimmt wird, dass die Adresse des NL-Ladevorgangs innerhalb irgendeines Cache in dem Prozessor keinen Treffer findet, zur Raute 530 über, um zu bestimmen, ob die Adresse innerhalb eines SAB einen Treffer findet.
  • Falls nicht, kann die Handhabung dieser Ladeanforderung mit unterschiedlichen Abläufen stattfinden, abhängig davon, ob der SAB als ein Filter für umgeleitete Adressen (BAF) oder ein Lesekombinierpuffer (RCB) implementiert ist. In dem Fall eines BAF geht die Steuerung zu Block 540 über, wo die Speichersteuereinheit eine enge Datenanforderung (nämlich für Daten der Breite unterhalb einer Cache-Zeile) ausgeben kann und nach dem Empfang der anforderten Daten von dem Speicher die Daten direkt zu dem Kern zurückgeben kann unter Umgehung der Cache-Hierarchie. Als solches werden diese Daten nicht in irgendeinen Cache-Speicher der Cache-Hierarchie eingefügt. Noch weiter kann in diesem Fall eines Fehlschlags innerhalb des SAB ein neuer SAB-Eintrag für die diesem NL-Ladevorgang zugeordnete Adresse zugewiesen werden. In diesem Fall eines Fehlschlags innerhalb des SAB für eine Adresse, die dem NL-Ladevorgang zugeordnet ist, in dem Kontext einer RCB-Implementierung geht die Steuerung stattdessen zu Block 545 über. Dort gehen Daten der Breite unterhalb einer Cache-Zeile direkt zu dem Kern unter Umgehung der Cache-Hierarchie. Noch weiter kann in diesem Fall eines Fehlschlags innerhalb des SAB für die diesem NL-Ladevorgang zugeordnete Adresse ein neuer SAB-Eintrag zugewiesen werden, und die Daten mit Teilbreite selbst können innerhalb des zugewiesenen Eintrags gespeichert werden.
  • Noch mit Bezug auf 5 geht die Steuerung, falls die Adresse des NL-Ladevorgangs innerhalb des SAB einen Treffer findet, zu Raute 550 über, um zu bestimmen, ob ein Vertrauenswert des getroffenen Eintrags einen Vertrauensschwellenwert übersteigt. In einer Ausführungsform kann der Vertrauenswert einfach ein einzelnes Bit sein, das beim ersten Treffer auf den Eintrag des SAB auf eins eingestellt wird. In anderen Fällen kann der Vertrauenswert als Mehrbit-Zählinformationen implementiert sein, so dass für jeden Treffer auf diesen Eintrag der Vertrauenswert aktualisiert werden kann, z. B. um eins.
  • In jedem Fall geht die Steuerung, falls der Vertrauenswert den Vertrauensschwellenwert nicht übersteigt, zu einem aus den Blöcken 560 und 565 weiter, abhängig davon, ob der SAB als ein BAF (Block 560) oder ein RCB (Block 565) implementiert ist. Wie dargestellt wird für eine BAF-Implementierung eine Teilbreite der Daten direkt zu dem Kern zurückgegeben unter Umgehung der Cache-Hierarchie und ohne Einfügung in irgendeinen Cache aus der Cache-Hierarchie. Darüber hinaus wird der Vertrauenswert des Eintrags inkrementiert. Stattdessen wird für eine RCB-Implementierung die Teilbreite der Daten direkt zu dem Kern aus dem SAB selbst zurückgegeben unter Umgehung der Cache-Hierarchie. Darüber hinaus wird der Vertrauenswert des Eintrags inkrementiert.
  • Noch mit Bezug auf 5 geht die Steuerung, falls bei Raute 550 stattdessen bestimmt wird, dass der Vertrauenswert des getroffenen Eintrags den Vertrauensschwellenwert übersteigt, zu einem aus den Blöcken 570 und 575 über, abhängig von der SAB-Implementierung. In dem Fall einer BAF-Implementierung wird bei Block 570 der NL-Hinweis dieses NL-Ladevorgangs außer Kraft gesetzt oder ignoriert, so dass die Speichersteuereinheit die volle Datenbreite anfordert und empfängt und diese volle Datenbreite zu dem Kern zurückgibt. In einer Ausführungsform enthält diese Rückgabe das Einfügen in einen oder mehrere Caches der Cache-Hierarchie, da mit diesem Außerkraftsetzen eine Bestimmung der Lokalität vorgenommen worden ist, so dass es wahrscheinlich ist, dass die Daten mit einer oder mehreren aus einer räumlichen und/oder zeitlichen Lokalität wieder verwendet werden. Darüber hinaus kann bei Block 570 die Speichersteuereinheit den SAB-Eintrag, der der Adresse des NL-Ladevorgangs zugeordnet ist, ungültig machen. Auf diese Weise kann zusätzlicher Platz in dem SAB durch einen weiteren NL-Ladevorgang für eine andere Adresse verwendet werden. Stattdessen geht für eine RCB-Implementierung die Steuerung zu Block 575 über, wo der NL-Hinweis dieses NL-Ladevorgangs außer Kraft gesetzt oder ignoriert wird, so dass die Speichersteuereinheit den verbleibenden Datenabschnitt aus dem Speicher anfordert und empfängt und mit dem im RCB enthaltenen Abschnitt kombiniert, um eine volle Datenbreite zu erhalten, die zu dem Kern zurückgegeben wird (und in einen oder mehrere Caches der Cache-Hierarchie eingefügt wird). Darüber hinaus kann bei Block 575 die Speichersteuereinheit den SAB-Eintrag, der der Adresse des NL-Ladevorgangs zugeordnet ist, ungültig machen. Es ist zu verstehen, dass viele Variationen und Alternativen möglich sind, obwohl es in 5 auf dieser hohen Ebene gezeigt ist.
  • Verschiedene Typen von Implementierungen für den Puffer für seltenen Zugriff sind möglich. Obwohl der Schutzbereich der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, enthalten zwei mögliche Implementierungen einen Lesekombinierpuffer (RCB) und ein Filter für umgeleitete Adressen (BAF).
  • In einer Implementierung ist ein RCB ein kleiner speicherseitiger Puffer, der in der Speichersteuereinheit enthalten oder ihr nahe zugeordnet ist. Ein solcher RCB kann mehrere Einträge enthalten, um umgeleitete Adressen, Lokalitätsvertrauenswerte und die feingranular zugegriffenen Daten zu speichern. Dieser Puffer ist außerhalb der Kohärenz-Domäne von Prozessor-Caches, und er speichert nur die Datenmenge unterhalb einer Cache-Zeile aus seinem Speicherkanal, die nicht in Caches eingefügt werden. Auf die Daten in dem RCB wird nur dann zugegriffen, wenn die entsprechende Adresse in der Cache-Hierarchie nicht gefunden wird. Reguläre Schreibvorgänge, die in der Speichersteuereinheit empfangen werden, (z. B. Schmutzentleerung aus Caches) überprüfen auch den RCB und aktualisieren den Inhalt, falls die entsprechende Adresse in dem RCB gültig ist.
  • Wenn ein NL-Ladevorgang in dem RCB einen Treffer findet, werden Lokalitätsvertrauenswerte inkrementiert, und der Ladevorgang wird aus dem RCB zu dem Kern ohne irgendeinen externen Speicherzugriff bedient. Falls der Vertrauenswert des entsprechenden Eintrags hoch genug ist, dann wird der verbleibende Abschnitt der Zeile aus dem Speicher geholt und mit dem Abschnitt kombiniert, der bereits in dem RCB existiert, um eine Cache-Zeile zu bilden. Dann wird diese Zeile in Caches eingefügt, um die potentielle Wiederverwendung für spätere Zugriffe festzuhalten. Wenn die Zeile in die Caches eingefügt ist, wird sie zum Teil der Cache-Kohärenz-Domäne, und somit ist der entsprechende Eintrag aus dem RCB ungültig gemacht, was streng ausschließlich für die CPU-Caches ist. Ungültigmachen von Einträgen nach dem Einfügen in die Cache-Hierarchie öffnet Raum in dem RCB, um neue Einträge zuzuweisen, was Entleerungen aus dem RCB minimiert und die effektive Abdeckung für umgeleitete Adressen erhöht. In einer Ausführungsform kann der RCB als ein mengenassoziativer Cache organisiert sein, um die Wahrscheinlichkeit für Konflikt-Fehlschläge zu verringern. Es wird darauf hingewiesen, dass der RCB hinsichtlich des Bereichs aufwändig sein kann, da er in Ausführungsformen die vollständigen Adressen, feingranularen Daten und Metadaten halten kann.
  • In einer weiteren Implementierung kann der SAB als ein Filter für umgeleitete Adressen (BAF) implementiert sein, der als ein kleiner Puffer konfiguriert sein kann, der in der Speichersteuereinheit enthalten oder ihr nahe zugeordnet ist. Dieser Puffer hält die Menge von Adressen, die kürzlich die Cache-Hierarchie umgangen haben, und kann verwendet werden, um eine Entscheidung über feingranularen Speicherzugriff zu treffen. Im Gegensatz zum RCB hält der BAF nur Adressen und Vertrauenskennzeichen, was die Bereichskosten reduzieren kann. Wenn ein NL-Ladevorgang in dem BAF einen Treffer findet, werden Lokalitätsvertrauenskennzeichen inkrementiert und die Daten werden aus dem Speicher über einen feingranularen Speicherzugriff geholt, falls der Lokalitätsvertrauenswert einen Schwellenwert nicht erfüllt. Falls der Vertrauenswert den Schwellenwert erfüllt, dann wird die Anforderung als ein regulärer Speicherzugriff bedient, um eine vollständige Cache-Zeile zu bringen, die in die Cache-Hierarchie eingefügt wird, um die Wiederverwendung für zukünftige Referenzen festzuhalten. Wenn eine Zeile in die Caches eingefügt wird, wird der entsprechende Eintrag aus dem BAF ungültig gemacht, was Raum öffnet, um neue Einträge zuzuweisen, was Entleerungen aus dem BAF minimiert und die effektive Abdeckung von umgeleiteten Adressen erhöht.
  • Es wird darauf hingewiesen, dass mit einer BAF-Implementierung immer ein Speicherzugriff stattfindet, um die feingranularen Daten zu holen. Außerdem holt zum Fördern von Zugriffen in vollständige Cache-Zeilen der BAF die ganze Cache-Zeile aus dem Speicher. Eine RCB-Implementierung kann Speicherbandbreite einsparen, so dass Treffer direkt aus dem RCB bedient werden, und Förderungen vollständiger Cache-Zeilen nur den verbleibenden Abschnitt der Cache-Zeile aus dem Speicher erhalten. Der Bereichs-„Footprint“ einer BAF-Implementierung kann jedoch viel kleiner sein im Vergleich zu dem RCB, da er nicht Daten unterhalb der Cache hält.
  • Außerdem kann der BAF Näherungsinformationen halten, um die Kosten zu senken, ohne Genauigkeit zu opfern. Da der BAF nur die Entscheidung über feingranularen Speicherzugriff beeinflusst, wird ein Fehler nur zu reduzierter Effizienz führen. Näherungsinformationen können z. B. in der Form von Speichern von Teiladressen in dem BAF sein. Das verringert die Kapazitätsanforderungen für den BAF oder kann verwendet werden, um die Umgehungsadressenabdeckung mit der gleichen Kapazität zu erhöhen. In dem Fall von Teiladressen kann der BAF falsche Positivergebnisse (falsche Treffer) berichten. Mit anderen Worten kann eine Referenzadresse fälschlicherweise mit einer Teiladresse in dem BAF übereinstimmen. Solche falschen Positivergebnisse können die Vertrauenswerte fälschlicherweise inkrementieren, und somit können sie eine Tendenz erzeugen, dass Zugriff auf vollständige Cache-Zeilen häufiger stattfindet. Das kann durch Erhöhen des Vertrauensschwellenwerts adressiert werden. Nichtsdestotrotz werden diese falschen Positivergebnisse nicht irgendwelche Richtigkeitsprobleme nach sich ziehen. Es wird darauf hingewiesen, dass das Halten von Teiladressen mit einer RCB-Implementierung nicht möglich ist, da falsche Positivergebnisse zum Zurückgeben falscher Daten zu dem Kern führen könnte.
  • Falls eine vollständige Adresse (z. B. Cache-Zeilenadresse und Blockversatz) für die Speichersteuereinheit bereitgestellt wird, dann kann der SAB verwendet werden, um sowohl räumliche als auch zeitliche Lokalität zu verfolgen. Beispielsweise unter der Annahme von 8 Byte (B) Verfolgungsgranularität kann für jede 64B-Cache-Zeile ein SAB-Eintrag 8 Vertrauenszähler enthalten (es wird darauf hingewiesen, dass ein Vertrauenszähler bis zu 1 Bit niedrig sein kann). Für jede Cache-Zeile kann die Summe aller Zähler kombiniert werden, um das zeitliche Lokalitätsvertrauen zu ergeben, und benachbarte Zähler mit Vertrauenswerten von nicht null können räumliches Lokalitätsvertrauen für die umgeleiteten Adressen angeben. Der Schwellenwert zum Befördern eines Zugriffs auf einen regulären vollständigen Speicherzugriff wird unter Verwendung dieser zeitlichen/räumlichen Vertrauenszähler bestimmt. In der einfachsten Version wird die Verfolgungsgranularität mit der Cache-Zeilengröße abgestimmt, und ein einzelner Ein-Bit-Zähler wird verwendet. Somit wird in der einfachsten Konfiguration ein Zugriff auf einen vollständigen Zugriff befördert nach dem ersten Treffer in dem SAB (entweder ein zeitlicher Treffer auf denselben Datenblock oder ein räumlicher Treffer auf einen anderen Datenblock in derselben Cache-Zeile).
  • Jetzt Bezug nehmend auf 6 ist ein Blockdiagramm eines Puffers für seltenen Zugriff in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Insbesondere zeigt 6 eine Ausführungsform eines SAB 600 in der Form eines Filters für umgeleitete Adressen, in dem der SAB 600 keinen Speicher für Daten mit Teilbreite enthält. Auf diese Weise können mit einem Puffer der gleichen Größe Informationen, die mehr Adressen betreffen, gespeichert werden.
  • Wie dargestellt enthält der SAB 600 mehrere Einträge 6100-610n. Wie zu sehen ist, enthält jeder Eintrag 610 mehrere Felder, die ein Gültigkeitsfeld 612, ein Etikett-Feld 614 und ein Vertrauensfeld 616 enthalten. In einer Ausführungsform kann das Gültigkeitsfeld 612 ein einzelnes Bit sein, um anzugeben, ob der gegebene Eintrag gültig ist oder nicht (z. B. auf einen Wert einer logischen 1 eingestellt ist, um anzugeben, dass der Eintrag gültig ist, und umgekehrt). Das Etikett-Feld 614 kann wenigstens einen Abschnitt einer Adresse eines gegebenen NL-Speicherzugriffsbefehls speichern. Wie vorstehend diskutiert kann dieser Etikett-Abschnitt nur eine Teiladresse zugunsten des Bereitstellens von breiterer Abdeckung auf Kosten möglicher falscher Positivergebnisse speichern. Das Vertrauensfeld 616 wiederum kann ein oder mehrere Bits speichern, um Vertrauensinformationen bereitzustellen. In der in 6 gezeigten Ausführungsform kann das Vertrauensfeld ein Mehrzählerfeld sein. Beispielsweise können in einer gegebenen Ausführungsform für einen Eintrag 610, der einer 64-B-Cache-Zeile zugeordnet ist, 8 Zähler bereitgestellt sein, von denen jeder ein oder mehrere Bits sein kann. Mit diesem Informationstyp ist es möglich, zeitliche Lokalität basierend auf einer Summe der Zählwerte jedes dieser Zähler zu bestimmen. Räumliche Lokalität wiederum kann durch Bezugnahme auf benachbarte Zähler, die Werte von nicht null aufweisen, bestimmt werden.
  • Unterschiedliche Analysen der Werte dieser mehreren Zähler sind in unterschiedlichen Ausführungsformen betrachtet. Beispielsweise kann in einer Ausführungsform eine Speichersteuereinheit (und insbesondere eine Lokalitätssteuereinheit einer solchen Speichersteuereinheit) einfach die Summe der Vertrauenswerte berücksichtigen bei der Bestimmung, ob ein spezifischer Speicherzugriffsbefehl, der einen Nichtlokalitätshinweis aufweist, anstelle eines Speicherzugriffsbefehls, der eine Lokalität aufweist, behandelt werden sollte (nämlich mit einer vollständigen Datenrückgabe und Speichern in einer Cache-Hierarchie). In solchen Fällen kann diese Summe der Vertrauenswerte mit einem gegebenen Schwellenwert verglichen werden, und falls die Summe den Schwellenwert übersteigt, kann lokalitätsbasierte Behandlung selektiv aktiviert werden.
  • In einer weiteren Ausführungsform kann die Speichersteuereinheit (und insbesondere die Lokalitätssteuereinheit) alternativ bestimmen, selektiv lokalitätsbasierte Behandlung zu aktivieren, wo mehrere Nachbarn dieser Zähler Werte von nicht null aufweisen, was eine räumliche Lokalität angibt. In noch weiteren Ausführungsformen können Kombinationen aus einer Zählersummentechnik und einer Nachbarzählerwerttechnik verwendet werden. Als solche können Ausführungsformen nur räumliche, nur zeitliche und/oder Kombinationen von zeitlichen/räumlichen Lokalitätsinformationen verwenden, um Entscheidungen über vollständigen/teilweisen Zugriff zu treffen.
  • Ohne eine Ausführungsform kann einfaches Umgehen aller NL-Zugriffe zu erhöhtem Speicherverkehr und reduzierter Leistung aufgrund verlorener Lokalität führen. Durch Bereitstellen eines SAB in Übereinstimmung mit einer Ausführungsform können Daten hoher Lokalität selektiv in Caches eingefügt werden, so dass Neureferenzierungen aus Caches bedient werden. Somit kann eine SAB-basierte dynamische Strategie, die unabhängig auf Basis einer gegebenen Cache-Zeile für jeden NL-Ladevorgang ausgeführt werden kann, eine signifikante Speicherdatenverkehrsreduktion und Leistungsverbesserung im Vergleich dazu, immer feingranular Zugriffe zu umgehen, bereitstellen.
  • Es wird darauf hingewiesen, dass obwohl hier beschriebene Ausführungsformen primär Lade-Operationen betreffen, der Schutzbereich der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist. Das ist so, weil Ausführungsformen auch verwendet werden können zum Behandeln von Schreiboperationen, die Nichtlokalitätshinweise aufweisen, mit den gleichen selektiven Aktivierungsoperationen. Für herkömmliche Schreiboperationen wird in dem Prozessor eine Cache-Zeile voller Breite empfangen, und dann wird wenigstens ein Abschnitt der Cache-Zeile mit neuen Daten überschrieben. Danach wird die volle Cache-Zeilenbreite in den Speicher zurückgeschrieben. Im Gegensatz dazu kann für eine Schreiboperation, die einen Nichtlokalitätshinweis aufweist, eine begrenzte Schreibanforderung verwendet werden, um nur einen Abschnitt einer Cache-Zeilenbreite in den Speicher zu schreiben, was die vorstehend diskutierte Verarbeitung unterhalb einer Cache-Zeile beinhalten kann. Das selektive Aktivieren der Behandlung mit voller Breite solcher Nichtlokalitätshinweis-Schreiboperationen kann auf gleiche Weise gelten.
  • Ausführungsformen, um feingranularen Speicherzugriff auf verschiedene Arten dynamisch auszuführen, kann in HPC, Analyse großer Datenmengen, Maschinenlernen usw. viele potentielle Anwendungen haben. Obwohl der Schutzbereich der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist, können Ausführungsformen speziell zum Gebrauch mit einer speziellen Arbeitslast wie z. B. Seitenrangalgorithmen, auf der Vektormultiplikation dünn besetzter Matrizen basierenden Arbeitslasten oder stochastische Gradientenverfahren-Algorithmen, angepasst sein. Das ist der Fall, da irreguläre Zugriffe auf große Datenstrukturen in HPC, Graphenanalyse, Maschinenlernen usw. weit verbreitet sind. Deshalb kann die Speicherleistung in diesen Anwendungen zu einem Flaschenhals werden. Ausführungsformen ermöglichen das Holen von Daten mit kleinerer Granularität aus dem Speicher und Umgehen von Caches, wenn keine Lokalität vorhanden ist. Diese Operation verbessert die Cache-Nutzung und reduziert die Verschwendung von Bandbreite, was die Speicherleistung für solche Anwendungen mit hohen Werten signifikant verbessern, während sie die Fähigkeit für feingranularen Zugriff, die durch diese Speicher bereitgestellt ist, effizient nutzt. Dynamische Ausführung kann Lokalitätspotential detektieren und feingranulare Zugriffe in reguläre Zugriffe auf vollständige Cache-Zeilen umwandeln. Somit wird eine Zweckentfremdung des Feingranularitätsmerkmals dynamisch korrigiert. Diese Anordnung stellt mehr Freiheit für Programmierer bereit, diese erweiterten Merkmale zu verwenden, ohne sich zu sehr um negative Auswirkungen auf die Leistung kümmern zu müssen.
  • 7A ist ein Blockdiagramm, das sowohl eine beispielhafte „In-order“-Pipeline als auch eine beispielhafte Registerumbenennungs-, „Out-of-order“-Ausgabe/Ausführungs-Pipeline, die in einen Prozessor aufgenommen werden sollen, gemäß Ausführungsformen der vorliegenden Erfindung darstellt. 7B ist ein Blockdiagramm, das sowohl eine beispielhafte Ausführungsform eines „In-order“-Architekturkerns als auch einen beispielhaften Registerumbenennungs-, „Out-of-order“-Ausgabe/Ausführungs-Architekturkern, die in einen Prozessor aufgenommen werden sollen, gemäß Ausführungsformen der vorliegenden Erfindung darstellt. Die durch durchgezogene Linien begrenzten Kästen in den 7A-B stellen die „In-order“-Pipeline und den „In-order“-Kern dar, während das optionale Hinzufügen der durch gestrichelte Linien begrenzen Kästen die Registerumbenennungs-, „Out-of-order“-Ausgabe/Ausführungs-Pipeline und -Kern darstellen. Unter der Annahme, dass der „In-order“-Aspekt eine Teilmenge des „Out-of-order“-Aspekts ist, wird der „Out-of-order“-Aspekt beschrieben.
  • In 7A enthält eine Prozessor-Pipeline 700 eine Holstufe 702, eine Längendecodierstufe 704, eine Decodierstufe706, eine Zuweisungsstufe 708, eine Umbenennungsstufe 710, eine Planungsstufe 712 (auch als eine Versand- oder Ausgabestufe bezeichnet), eine Registerlese-/Speicherlesestufe 718, eine Ausführungsstufe 716, eine Zurückschreib-/Speicherschreibstufe 718, eine Ausnahmenbehandlungsstufe 722 und eine Einspeicherstufe 724.
  • 7B zeigt den Prozessorkern 790, der eine Frontend-Einheit 730 enthält, die mit einer Ausführungs-Engine-Einheit 750 gekoppelt ist, und beide sind mit einer Speichereinheit 770 gekoppelt. Der Kern 790 kann ein Kern mit reduziertem Befehlssatz (RISC-Kern), ein Kern mit komplexem Befehlssatz (CISC-Kern), ein Kern mit sehr langem Befehlswort (VLIW-Kern) oder ein hybrider oder alternativer Kerntyp sein. Als noch eine weitere Option kann der Kern 790 ein Spezialkern sein, wie beispielsweise ein Netz- oder Kommunikationskern, eine Komprimierungs-Engine, ein Coprozessor-Kern, ein Kern einer Allzweckberechnungs-Grafikverarbeitungseinheit (GPGPU-Kern), ein Grafik-Kern oder dergleichen.
  • Die Frontend-Einheit 730 enthält eine Verzweigungsvorhersageeinheit 732, die mit einer Befehls-Cache-Einheit 734 gekoppelt ist, die mit einem Befehls-„Translation-Lookaside“-Puffer (Befehls-TLB) 736 gekoppelt ist, der mit einer Befehlsholeinheit 738 gekoppelt ist, die mit einer Decodiereinheit 740 gekoppelt ist. Die Decodiereinheit 740 (oder der Decodierer) kann Befehle decodieren und erzeugt als eine Ausgabe eine oder mehrere Mikrooperationen, Mikrocode-Eintrittspunkte, Mikrobefehle, andere Befehle oder andere Steuersignale, die aus den ursprünglichen Befehlen decodiert sind oder die diese auf andere Weise widerspiegeln oder von ihnen abgeleitet sind. Die Decodiereinheit 740 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert sein. Beispiele für geeignete Mechanismen enthalten Nachschlagetabellen, Hardware-Implementierungen, programmierbare Logik-Arrays (PLAs), Mikrocode-Festwertspeicher (Mikrocode-ROMs) usw., sind jedoch nicht darauf beschränkt. In einer Ausführungsform enthält der Kern 790 einen Mikrocode-ROM oder ein anderes Medium, das Mikrocode für spezielle Makrobefehle speichert (z. B. in der Decodiereinheit 740 oder auf andere Weise innerhalb der Frontend-Einheit 730). Die Decodiereinheit 740 ist mit einer Umbenennungs-/Zuweisereinheit 752 in der Ausführungs-Engine-Einheit 750 gekoppelt.
  • Die Ausführungs-Engine-Einheit 750 enthält die Umbenennungs-/Zuweisereinheit 752, die mit einer Rückzugseinheit 754 und einer Gruppe aus einer oder mehreren Planereinheit(en) 756 gekoppelt ist. Die Planereinheit(en) 756 repräsentieren irgendeine Anzahl unterschiedlicher Planer, die Reservierungsstationen, ein zentrales Befehlsfenster usw. enthalten. Die Planereinheit(en) 756 sind mit den physikalischen Registerdatei(en)einheit(en) 758 gekoppelt. Jede aus den physikalischen Registerdatei(en)einheit(en) 758 repräsentiert eine oder mehrere physikalische Registerdateien, von denen unterschiedliche einen oder mehrere unterschiedliche Datentypen speichern, wie z. B. skalare Ganzzahl, skalare Gleitkommazahl, gepackte Ganzzahl, gepackte Gleitkommazahl, Vektorganzzahl, Vektorgleitkommazahl, Status (z. B. einen Befehlszeiger, der die Adresse des nächsten Befehls ist, der ausgeführt werden soll), usw. In einer Ausführungsform umfasst die physikalische Registerdatei(en)einheit 758 eine Vektorregistereinheit, eine Schreibmaskenregistereinheit und eine Skalarregistereinheit. Diese Registereinheiten können architektonische Vektorregister, Vektormaskenregister und Allzweckregister bereitstellen. Die physikalische Registerdatei(en)einheit(en) 758 werden durch die Rückzugseinheit 754 überlappt, um verschiedene Arten darzustellen, in denen Registerumbenennung und „Out-of-order“-Ausführung implementiert sein können (z. B. unter Verwendung von Umordnungspuffer(n) und von Rückzugsregisterdatei(en); unter Verwendung von Zukunftsdatei(en), Verlaufspuffer(n) und Rückzugregisterdatei(en); unter Verwendung einer Register-Map und eines Pools von Registern; usw.). Die Rückzugseinheit 754 und die physikalischen Registerdateieinheit(en) 758 sind mit dem/den Ausführungs-Cluster(n) 760 gekoppelt. Das/die Ausführungs-Cluster 760 enthält eine Gruppe aus einer oder mehreren Ausführungseinheiten 762 und eine Gruppe aus einer oder mehreren Speicherzugriffseinheiten 764. Die Ausführungseinheiten 762 führen verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) und auf verschiedenen Typen von Daten (z. B. skalare Gleitkommazahl, gepackte Ganzzahl, gepackte Gleitkommazahl, Vektorganzzahl, Vektorgleitkommazahl) aus. Obwohl einige Ausführungsformen eine Anzahl von Ausführungseinheiten enthalten können, die für spezifische Funktionen oder Gruppen von Funktionen dediziert sein können, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten enthalten, die alle alle Funktionen ausführen. Die Planereinheit(en) 756, physikalischen Registerdatei(en)einheit(en) und Ausführungscluster 760 sind so gezeigt, dass sie möglicherweise mehrfach vorhanden sind, weil spezielle Ausführungsformen separate Pipelines für spezielle Typen von Daten/Operationen erzeugen (z. B. eine Pipeline für skalare Ganzzahl, eine Pipeline für skalare Gleitkommazahl/gepackte Ganzzahl/gepackte Gleitkommazahl/Vektor-Ganzzahl/VektorGleitkommazahl und/oder eine Speicherzugriffs-Pipeline, die jeweils ihre eigene Planereinheit, physikalische Registerdatei(en)einheit und/oder Ausführungs-Cluster aufweisen - und in dem Fall einer separaten Speicherzugriffs-Pipeline sind spezielle Ausführungsformen implementiert, in denen nur das Ausführungs-Cluster dieser Pipeline die Speicherzugriffseinheit(en) 764 aufweist). Es ist auch zu verstehen, dass dort, wo separate Pipelines verwendet werden, eine oder mehrere aus diesen Pipelines „Out-of-order“-Ausgabe/Ausführung und der Rest „In-order“ sein können.
  • Die Gruppe von Speicherzugriffseinheiten 764 ist mit der Speichereinheit 770 gekoppelt, die eine Daten-TLB-Einheit 772 enthält, die mit einer Daten-Cache-Einheit 774 gekoppelt ist, die mit einer Ebene-2-Cache-Einheit (L2-Cache-Einheit) 776 gekoppelt ist. Die Befehls-Cache-Einheit 734 und die Daten-Cache-Einheit 774 können gemeinsam so betrachtet werden, dass sie ein verteilter L1-Cache sind. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 764 eine Ladeeinheit, eine Speicheradresseinheit und eine Speicherdateneinheit enthalten, von denen jede mit der Daten-TLB-Einheit 772 in der Speichereinheit 770 gekoppelt ist. Die Befehls-Cache-Einheit 734 ist ferner mit einer Ebene-2-Cache-Einheit (L2-Cache-Einheit) 776 in der Speichereinheit 770 gekoppelt. Die L2-Cache-Einheit 776 kann mit einer oder mehreren Ebenen des Cache und schließlich mit einem Hauptspeicher gekoppelt sein.
  • Als Beispiel können die beispielhafte Registerumbenennungs-, „Out-of-order“-Ausgabe/Ausführungs-Kernarchitektur die Pipeline 700 wie folgt implementieren: 1) die Befehlsholeinheit 738 führt die Hol- und Längendecodierungsstufen 702 und 704 aus; 2) die Decodiereinheit 740 führt die Decodierstufe 706 aus; 3) die Umbenennungs-/Zuweisereinheit 752 führt die Zuweisungsstufe 708 und die Umbenennungsstufe 710 aus; 4) die Planereinheit(en) 756 führen die Planungsstufe 712 aus; 5) die physikalische Registerdateieinheit(en) 758 und die Speichereinheit 770 führen die Registerlese-/Speicherlesestufe 714 aus; der Ausführungs-Cluster 760 führt die Ausführungsstufe 716 aus; 6) die Speichereinheit 770 und die physikalischen Registerdatei(en)einheit(en) 758 führen die Zurückschreib-/Speicherschreibstufe 718 aus; 7) verschiedene Einheiten können an der Ausnahmenbehandlungsstufe 722 beteiligt sein; und 8) die Rückzugseinheit 754 und die physikalischen Registerdatei(en)einheit(en) 758 führen die Einspeicherstufe 724 aus.
  • Der Kern 790 kann einen oder mehrere Befehlssätze unterstützen (z. B. den x86-Befehlssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt worden sind); den MIPS-Befehlssatz, der durch MIPS Technologies in Sunnyvale, CA, entwickelt ist; den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen wie z. B. NEON) von ARM Holdings in Sunnyvale, CA), die den/die hier beschriebenen Befehl(e) enthalten. In einer Ausführungsform enthält der Kern 790 Logik, um eine Befehlssatzerweiterung für gepackte Daten zu unterstützen (z. B. AVX1, AVX2 und/oder eine Form des generischen vektorfreundlichen Befehlsformats (U=0 und/oder U=1), und dadurch ermöglicht, dass die Operationen, die durch viele Multimedia-Anwendungen verwendet werden, unter Verwendung gepackter Daten ausgeführt werden.
  • Es sollte verstanden werden, dass der Kern 790 Multithreading (Ausführen von zwei oder mehreren parallelen Gruppen von Operationen oder Threads) unterstützen kann, und das auf eine Vielzahl von Arten ausführen kann, die Zeitscheiben-Multithreading, gleichzeitiges Multithreading (wobei ein einziger physikalischer Kern einen logischen Kern für jeden der Threads bereitstellt, für die der physikalische Kern gleichzeitig Multithreading ausführt) oder eine Kombination daraus (z. B. Zeitscheiben-Holen und Decodieren und gleichzeitiges Multithreading danach, wie z. B. in der Intel® Hyperthreading-Technologie).
  • Obwohl die Registerumbenennung im Kontext von „Out-of-order“-Ausführung beschrieben ist, ist zu verstehen, dass Registerumbenennung in einer „In-order“-Architektur verwendet werden kann. Obwohl die dargestellte Ausführungsform des Prozessors auch separate Befehls- und Daten-Cache-Einheiten 734/774 und eine gemeinsam verwendete L2-Cache-Einheit 776 enthalten, können alternative Ausführungsformen einen einzelnen internen Cache für sowohl Befehle als auch Daten, wie beispielsweise einen internen L1-Cache, oder mehrere Ebenen eines internen Cache aufweisen. In einigen Ausführungsformen kann das System eine Kombination aus einem internen Cache und einem externen Cache, der außerhalb des Kerns und/oder des Prozessors ist, enthalten. Alternativ können alle Caches außerhalb des Kerns und/oder des Prozessors sein.
  • Es ist in 7B ferner dargestellt, dass der Prozessor außerdem eine Speichersteuereinheit 780 enthält, die die hier beschriebene dynamische Bestimmung ausführen kann, um einen Nichtlokalitätshinweis eines Speicherzugriffsbefehls potentiell selektiv außer Kraft zu setzen und den Speicherzugriffsbefehl so auszuführen, als ob er Lokalität aufweisen würde (z. B. einen Ladevorgang mit voller Breite und Rückgabe zu dem Kern 790 über eine Cache-Hierarchie wie z. B. der Speichereinheit 770). Stattdessen können, wenn die Speichersteuereinheit 780 bestimmt, einen Speicherzugriff gemäß dem Nichtlokalitätshinweis zu behandeln, Daten mit Teilbreite erhalten und direkt zu dem Kern 790 zurückgegeben werden unter Umgehung der Cache-Hierarchie, die die Speichereinheit 770 enthält. Es wird darauf hingewiesen, dass in der in 7B gezeigten Ausführungsform die Speichersteuereinheit 780 einen SAB 785 enthält.
  • 8 ist ein Blockdiagramm eines Prozessors 800, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuereinheit aufweisen kann und eine integrierte Grafik aufweisen kann, gemäß Ausführungsformen der Erfindung. Durch durchgezogene Linie begrenzte Kästen in 8 stellen einen Prozessor 800 mit einem einzelnen Kern 802A, einer Systemagentenschaltung 810, einer Gruppe aus einer oder mehreren Bussteuereinheitschaltungen 816 dar, während das optionale Hinzufügen der durch gestrichelte Linien begrenzen Kästen einen alternativen Prozessor 800 mit mehreren Kernen 802A-N und einer Gruppe aus einer oder mehreren integrierten Speichersteuereinheitschaltung(en) 814 in der Systemagentenschaltung 810 darstellt. Die integrierten Speichersteuereinheitschaltungen 814 können einen oder mehrere SABs 815 enthalten, wie sie hier beschrieben sind, um zu ermöglichen, dass die Speichersteuereinheit dynamisch bestimmt, ob lokalitätsbasierte Behandlung für ankommende Speicherzugriffsanforderungen, die Nichtlokalitätshinweise aufweisen, selektiv aktiviert werden soll. Wie ferner in 8 dargestellt ist, enthält der Prozessor 800 außerdem eine Grafikschaltung 808, um Grafiken aufzuteilen, integriert innerhalb des Prozessors 800N.
  • Der Prozessor 800 kann ein Allzweckprozessor, ein Coprozessor oder Spezialprozessor sein, wie beispielsweise ein Netz- oder Kommunikationsprozessor, eine Komprimierungs-Engine, ein Grafikprozessor, eine GPGPU (Allzweck-Grafikverarbeitungseinheit), ein Coprozessor mit vielen integrierten Kernen (MIC-Coprozessor) für hohen Durchsatz (der 30 oder mehr Kerne enthält), ein eingebetteter Prozessor, eine Beschleunigervorrichtung oder dergleichen. Der Prozessor kann in einem oder mehreren Chips implementiert sein. Der Prozessor 800 kann ein Teil von eines oder mehrerer Substrate und/oder unter Verwendung einer Anzahl von Prozesstechnologien wie beispielsweise BiCMOS, CMOS oder NMOS darauf implementiert sein.
  • Die Speicherhierarchie enthält eine oder mehrere Ebenen von Cache-Schaltungen 804A-N (die L1-Cache enthalten) innerhalb der Kerne 802A-N, eine Gruppe aus einer oder mehreren gemeinsam verwendeten Cache-Schaltungen 1006 und externen Speicher (nicht gezeigt), der mit der Gruppe der integrierten Speichersteuereinheitschaltungen 814 gekoppelt ist. Die Gruppe gemeinsam verwendeter Cache-Schaltungen 806 kann einen oder mehrere Caches mittlerer Ebene enthalten, wie z. B. Ebene 2 (L2) Ebene 3 (L3), Ebene 4 (L4) oder andere Cache-Ebenen, einen Cache letzter Ebene (LLC) und/oder Kombinationen daraus. Obwohl in einer Ausführungsform eine ringbasierte Zusammenschaltungsschaltung 812 die Grafikschaltung 808, die Gruppe gemeinsam verwendeter Cache-Einheiten 806 und die Systemagentenschaltung 810 / integrierte(m) Speichersteuereinheitschaltung(en) 814 miteinander verbindet, können alternative Ausführungsformen irgendeine Anzahl bekannter Techniken zum Zusammenschalten solcher Schaltungen verwenden. In einer Ausführungsform wird Kohärenz zwischen einer oder mehreren Cache-Schaltungen 806 und Kernen 802A-N aufrechterhalten.
  • In einigen Ausführungsformen sind einer oder mehrere der Kerne 802A-N zum Multithreading fähig. Die Systemagentenschaltung 810 enthält diejenigen Komponenten, die die Kerne 802A-N koordinieren und betreiben. Die Systemagentenschaltung 810 kann beispielsweise eine Leistungssteuerungseinheit (PCU) und eine Anzeigeeinheit enthalten. Die PCU kann Logik oder Komponenten zum Regulieren des Leistungszustands der Kerne 802A-N und/oder der Grafikschaltung 808 sein oder enthalten. Die Anzeigeeinheit kann zum Ansteuern einer oder mehrerer extern verbundener Anzeigevorrichtungen dienen.
  • Die Kerne 802A-N können hinsichtlich des Architekturbefehlssatzes homogen oder heterogen sein; das heißt, zwei oder mehr aus den Kernen 802A-N können zum Ausführen desselben Befehlssatzes fähig sein, während andere zum Ausführen nur einer Teilmenge dieses Befehlssatzes oder eines anderen Befehlssatzes fähig sind. In einer Ausführungsform sind die Kerne 802A-N heterogen und enthalten sowohl die „kleinen“ Kerne und die „großen“ Kerne, die nachstehend beschrieben sind.
  • 9 ist ein Blockdiagramm einer beispielhaften Computerarchitektur. Andere Systemkonstruktionen und Konfigurationen, die in der Technik für Laptops, Desktops, Tablets, tragbare PCs, persönliche digitale Assistenten, technische Arbeitsstationen, Server, Netzvorrichtungen, Netz-Hubs, Verteiler, eingebettete Prozessoren, digitale Signalprozessoren (DSPs), Grafikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxen, Mikrosteuereinheiten, Mobiltelefone, Smartphones, tragbare Media-Player, tragbare Vorrichtungen und verschiedene andere elektronische Vorrichtungen bekannt sind, sind ebenfalls geeignet. Im Allgemeinen sind eine große Vielfalt von Systemen oder elektronischen Vorrichtungen, die zum Integrieren eines Prozessors und/oder anderer Ausführungslogik, wie sie hier offenbart ist, fähig sind, generell geeignet.
  • Jetzt Bezug nehmend auf 9 ist ein Blockdiagramm eines beispielhaften Systems 900 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 9 gezeigt ist, ist das Mehrprozessorsystem 900 ein Punkt-zu-Punkt-Zusammenschaltungssystem und enthält einen ersten Prozessor 970 und einen zweiten Prozessor 980, die über eine Punkt-zu-Punkt-Zusammenschaltung 950 gekoppelt sind. Jeder aus den Prozessoren 970 und 980 kann eine Version des Prozessors 800 von 8 sein.
  • Die Prozessoren 970 und 980 sind so gezeigt, dass sie die integrierte Speichersteuereinheit-Einheiten (IMC-Einheiten) 972 bzw. 982 enthalten. Der Prozessor 970 enthält außerdem als Teil seiner Bussteuereinheiten die Punkt-zu-Punkt-Schnittstellen (P-P-Schnittstellen) 976 und 978; ähnlich enthält der zweite Prozessor 980 die P-P-Schnittstellen 986 und 988. Wie zu sehen ist, enthalten die Prozessoren 970, 980 ferner die SABs 975, 985, wie sie hier beschrieben sind. Die Prozessoren 970, 980 können Informationen über eine Punkt-zu-Punkt-Schnittstelle (P-P-Schnittstelle) 950 unter Verwendung der P-P-Schnittstellenschaltungen 978, 988 austauschen. Wie in 9 gezeigt ist, koppeln die IMCs 972 und 982 die Prozessoren mit jeweiligen Speichern, und zwar einem Speicher 932 und einem Speicher 934, die Abschnitte des Hauptspeichers sein können, der lokal an den jeweiligen Prozessoren angebracht ist.
  • Die Prozessoren 970, 980 können jeweils Informationen mit einem Chipsatz 990 über individuelle P-P-Schnittstellen 952, 954 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltungen 976, 994, 986, 998 austauschen. Der Chipsatz 990 kann optional Informationen mit dem Coprozessor 938 über eine Hochleistungsschnittstelle 939 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltung 992 austauschen. In einer Ausführungsform ist der Coprozessor 938 ein Spezialprozessor wie beispielsweise ein MIC-Prozessor für hohen Durchsatz, ein Netz- oder Kommunikationsprozessor, eine Komprimierungs-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen.
  • Ein gemeinsam verwendeter Cache (nicht gezeigt) kann entweder in einem Prozessor oder außerhalb beider Prozessoren vorgesehen sein, jedoch mit den Prozessoren über eine P-P-Zusammenschaltung verbunden sein, so dass die lokalen Cache-Informationen eines der oder beider Prozessoren in dem gemeinsam verwendeten Cache gespeichert werden können, falls einer Prozessor in eine Betriebsart mit geringer Leistung versetzt wird.
  • Der Chipsatz 990 kann mit einem ersten Bus 916 über eine Schnittstelle 996 gekoppelt sein. In einer Ausführungsform kann der erste Bus 916 ein Bus zur Zusammenschaltung, peripherer Komponenten (PCI-Bus) sein oder ein Bus wie z. B. ein PCI-Express-Bus oder ein anderer I/O-Zusammenschaltungs-Bus der dritten Generation, obwohl der Schutzbereich der vorliegenden Erfindung nicht so eingeschränkt ist.
  • Wie in 9 gezeigt ist, können verschiedene I/O-Vorrichtungen 914 mit dem ersten Bus 916 gekoppelt sein, zusammen mit einer Bus-Brücke 918, die den ersten Bus 916 mit einem zweiten Bus 920 koppelt. In einer Ausführungsform sind ein oder mehrere zusätzliche Prozessor(en) 915, wie z. B. Coprozessoren, MIC-Prozessoren für hohen Durchsatz, GPGPUs, Beschleuniger (wie z. B. Grafikbeschleuniger oder digitale Signalverarbeitungseinheiten (DSP-Einheiten)), feldprogrammierbare Gatterfelder oder irgendein anderer Prozessor mit dem ersten Bus 916 gekoppelt. In einer Ausführungsform kann der zweite Bus 920 ein Bus mit niedriger Pinzahl (LPC-Bus) sein. Verschiedene Vorrichtungen können mit einem zweiten Bus 920 gekoppelt sein, die beispielsweise eine Tastatur und/oder Maus 922, Kommunikationsvorrichtungen 927 und eine Speichereinheit 928 wie z. B. ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, die Befehle/Code oder Daten 930 enthalten kann, in einer Ausführungsform enthalten. Ferner kann eine Audio-I/O 924 mit dem zweiten Bus 920 gekoppelt sein. Es wird darauf hingewiesen, dass andere Architekturen möglich sind. Beispielsweise kann anstelle der Punkt-zu-Punkt-Architektur von 9 ein System einen Multi-Drop-Bus oder eine andere solche Architektur implementieren.
  • Jetzt Bezug nehmend auf 10 ist ein Blockdiagramm eines SoC 1000 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Außerdem sind Boxen mit gestrichelter Linie optionale Merkmale auf weiter entwickelten SoCs. In 10 ist eine Zusammenschaltungsschaltung(en) 1012 gekoppelt mit: einem Anwendungsprozessor 1010, der eine Gruppe aus einem oder mehreren Kernen 1002A-N, die Cache-Schaltung(en) 1004A-1004N aufweisen, und gemeinsam verwendete Cache-Schaltung(en) 1006 enthält; einer Systemagentenschaltung 1010; einer Bus-Steuereinheitschaltung(en) 1016; einer integrierten Speichersteuereinheitschaltung(en) 1014, die einen SAB 1015 wie hier beschrieben enthalten kann; einer Gruppe aus einem oder mehreren Coprozessoren 1020, die integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor enthalten können; einer statischen Direktzugriffsspeicher-Schaltung (SRAM-Schaltung) 1030; einer Direktspeicherzugriffs-Schaltung (DMA-Schaltung) 1032; und einer Anzeigeschaltung 1040 zum Koppeln mit einer oder mehreren externen Anzeigevorrichtungen. In einer Ausführungsform enthalten die Coprozessor(en) 1020 einen Spezialprozessor wie beispielsweise einen Netz- oder Kommunikationsprozessor, eine Komprimierungs-Engine, eine GPGPU, einen MIC-Prozessor für hohen Durchsatz, einen eingebetteten Prozessor oder dergleichen. Für die Zwecke dieser Anmeldung enthält ein Verarbeitungssystem irgendein System, das einen Prozessor aufweist, wie beispielsweise einen digitalen Signalprozessor (DSP), eine Mikrosteuereinheit, eine anwendungsspezifische integrierte Schaltung (ASIC) oder einen Mikroprozessor.
  • Der Programmcode kann in einer prozeduralen oder objektorientierten Programmierhochsprache implementiert sein, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann auch in Assembler- oder Maschinensprache implementiert sein, falls gewünscht. Tatsächlich sind die hier beschriebenen Mechanismen nicht im Umfang auf irgendeine spezielle Programmiersprache eingeschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte wenigstens einer Ausführungsform können durch repräsentative Befehle implementiert sein, die in einem nicht-transitorischen maschinenlesbaren Medium gespeichert sind, die verschiedene Logik innerhalb des Prozessors repräsentieren, die dann, wenn sie durch eine Maschine gelesen werden, bewirken, dass die Maschine Logik herstellt, um die hier beschriebenen Techniken auszuführen. Solche Repräsentationen, als „IP-Kerne“ bezeichnet, können auf einem greifbaren nicht-transitorischen, maschinenlesbaren Medium gespeichert sein und verschiedenen Kunden oder Produktionsanlagen zugeführt werden, um in die Produktionsmaschinen geladen zu werden, die tatsächlich die Logik oder den Prozessor herstellen. Dementsprechend enthalten Ausführungsformen der Erfindung außerdem nichttransitorische greifbare maschinenlesbare Medien, die Befehle enthalten oder Konstruktionsdaten enthalten, wie z. B. Hardware-Beschreibungssprache (HDL), die Strukturen, Schaltungen, Einrichtungen, Prozessoren und/oder Systemmerkmale definiert, die hier beschrieben sind. Solche Ausführungsformen können auch als Programmprodukte bezeichnet sein.
  • In einigen Fällen kann ein Befehlsumsetzer verwendet werden, um einen Befehl aus einem Ursprungs-Befehlssatz in einen Ziel-Befehlssatz umzusetzen. Beispielsweise kann der Befehlsumsetzer einen Befehl in einen oder mehrere Befehle, die durch den Kern ausgeführt werden sollen, übersetzen (z. B. unter Verwendung statischer binärer Übersetzung, dynamischer binärer Übersetzung, die dynamische Kompilierung enthält), umwandeln, emulieren oder auf andere Weise umsetzen. Der Befehlsumsetzer kann in Software, Hardware, Firmware oder einer Kombination daraus implementiert sein. Der Befehlsumsetzer kann innerhalb des Prozessors, außerhalb des Prozessors oder teilweise innerhalb und außerhalb des Prozessors sein.
  • 11 ist ein Blockdiagramm, das die Verwendung eines Software-Befehlsumsetzers, um binäre Befehle in einem Quellen-Befehlssatz in Binärbefehle in einem Ziel-Befehlssatz umzusetzen, gemäß Ausführungsformen der vorliegenden Erfindung hervorhebt. In der dargestellten Ausführungsform ist der Befehlsumsetzer ein Software-Befehlsumsetzer, obwohl alternativ der Befehlsumsetzer in Software, Firmware, Hardware oder verschiedenen Kombinationen daraus implementiert sein kann. 11 zeigt ein Programm in einer Hochsprache 1102, das unter Verwendung eines x86-Compilers 1104 kompiliert werden kann, um x86-Binärcode 1106 zu erzeugen, der nativ durch einen Prozessor mit wenigstens einem x86-Befehlssatz-Kern 1116 ausgeführt werden kann. Der Prozessor mit wenigstens einem x86-Befehlssatz-Kern 1116 repräsentiert irgendeinen Prozessor, der im Wesentlichen die gleichen Funktionen wie ein Intel-Prozessor mit wenigstens einem x86-Befehlssatz-Kern ausführen kann durch kompatibles Ausführen oder auf andere Weise Verarbeiten (1) eines wesentlichen Abschnitts des Befehlssatzes des Intel® x86-Befehlssatz-Kerns oder (2) von Objektcodeversionen von Anwendungen oder anderer Software, die dafür bestimmt ist, auf einem Intel-Prozessor mit wenigstens einem x86-Befehlssatz-Kern abzulaufen, um im Wesentlichen das gleiche Ergebnis zu erreichen wie ein Intel® Prozessor mit wenigstens einem x86-Befehlssatz-Kern. Der x86-Compiler 1104 repräsentiert einen Compiler, der arbeitet um x86-Binärcode 1106 (z. B. Objektcode) zu erzeugen, der mit oder ohne zusätzliche Bindeverarbeitung auf dem Prozessor mit wenigstens einem x86-Befehlssatz-Kern 1116 ausgeführt werden kann. Ähnlich zeigt 11, dass das Programm in der Hochsprache 1302 unter Verwendung eines alternativen Befehlssatz-Compilers 1108 kompiliert werden kann, um einen Binärcode 1110 eines alternativen Befehlssatzes zu erzeugen, der nativ durch einen Prozessor ohne wenigstens einen x86-Befehlssatz-Kern 1114 ausgeführt werden kann (z. B. einen Prozessor mit Kernen, die den MIPS-Befehlssatz von Technologies aus Sunnyvale, CA, ausführen, und/oder die den ARM-Befehlssatz von ARM Holdings in Sunnyvale, CA, ausführen). Der Befehlsumsetzer 1112 wird verwendet, um den x86-Binärcode 1106 in Code umzusetzen, der nativ durch den Prozessor ohne einen x86-Befehlssatz-Kern 1114 ausgeführt werden kann. Es ist nicht wahrscheinlich, dass dieser umgesetzte Code der gleiche ist wie der Binärcode 1110 des alternativen Befehlssatzes, weil ein Befehlsumsetzer, der dazu fähig ist, schwierig herzustellen ist; der umgesetzte Code wird jedoch die allgemeine Operation erreichen und aus Befehlen aus dem alternativen Befehlssatz bestehen. Somit repräsentiert der Befehlsumsetzer 1112 Software, Firmware, Hardware oder eine Kombination daraus, die durch Emulation, Simulation oder irgendeinen anderen Prozess es einem Prozessor oder einer anderen elektronischen Vorrichtung, der/die keinen Prozessor oder Kern mit dem x86-Befehlssatz aufweist, ermöglicht, den x86-Binärcode 1106 auszuführen.
  • Wie vorstehend beschrieben können Ausführungsformen Nichtlokalitäts-Ladebefehle (z. B. Streaming-Ladebefehle) dynamisch planen. In den vorstehenden Ausführungsformen wird eine dynamische Vorhersage für jeden NL-Speicherzugriffsbefehl ausgeführt, um zu bestimmen, ob die zugeordneten Daten ausreichende Lokalität aufweisen. Falls nein führt die Hardware einen begrenzten Speicherzugriff aus und umgeht im Gegenzug die Caches. Falls ausreichende Lokalität detektiert wird, behandelt die Hardware den Zugriff als einen regulären Ladevorgang und holt eine vollständige Cache-Zeile aus dem Speicher und fügt sie in die Caches ein. In den vorstehenden Ausführungsformen verwendet diese Vorhersagetechnik einen speziellen Zugriffsverlauf, um Lokalität für jede Zeile unabhängig vorherzusagen.
  • Selektives Umsetzen von feingranularen Zugriffen in vollständige Speicherzugriffe, um Lokalität auszunutzen, kann für große Eingangsdatenmengen mit speziellen Lokalitätsverteilungen gut funktionieren, wie hier beschrieben ist. Diese Techniken bringen jedoch den Aufwand zum separaten Lernen der Lokalität jeder Zeile mit sich, wobei Hardware anfangs den Cache umgeht und ein späterer Zugriff für die angeforderte Adresse in einem Speicherzugriff auf eine vollständige Cache-Zeile umgesetzt wird. Somit kann es ein langsamer Prozess sein, Lokalitätsmuster zu lernen, wenn adressübergreifende Informationen helfen würden. Beispielsweise kann es mehrere Zugriffe auf die gleiche Zeile benötigen, um diese Zeile in den Cache zu installieren, wenn: (i) die Arbeitsmenge oder selbst die gesamte eingegebene Datenmenge unerwarteterweise in chip-interne Caches passt; oder (ii) ein zweckentfremdeter Nichtlokalitäts- (oder Streaming-) Ladebefehl sehr häufig Daten mit Lokalität berührt.
  • Um diesen Penalty zu reduzieren, stellen einige Ausführungsformen ferner eine speicherseitige auf der Verfolgung des Leistungszählers basierende Technik bereit, um vorherzusagen, ob das Umgehen des Cache für Nichtlokalitäts-Ladevorgänge effektiv ist. Falls dynamisch bestimmt wird, dass es nicht effektiv ist, ist der Prozessor konfiguriert, das Nichtlokalitäts-Verhalten dynamisch zur Zeit der Ausgabe von kernseitigen Befehlen außer Kraft zu setzen. Als solches kann ein Prozessor in Übereinstimmung mit einer Ausführungsform spezielle Lokalitätsmuster viel schneller lernen und verlorene Leistung durch Zurückfallen auf ein Grundverhalten (mit vollem Datenzugriff und Cache-Speichern) schneller wiederherstellen.
  • Es wird darauf hingewiesen, dass NL-Ladevorgänge nur nützlich sind, wenn die Cache-Nutzung niedrig ist (hohe Fehlschlagsrate) und die Speicherbandbreitennutzung hoch ist. Ausführungsformen können Hardware-Zähler verwenden, die beispielsweise einen Zähler für die Fehlschlagsrate (insbesondere Fehlschläge pro Kilo-Befehl, MPKI) für den Cache der letzten Ebene (LLC) und optional Bandbreitennutzung enthalten, um zu bestimmen, ob der Prozessor in einem Betriebszustand arbeitet, der von Nichtlokalitäts-Ladevorgängen profitieren kann. Natürlich sind Ausführungsformen nicht auf diese speziellen Leistungszähler beschränkt, und in anderen Ausführungsformen können Informationen über zusätzliche oder unterschiedliche Leistungsüberwachungen verwendet werden. Falls die Cache-Nutzung höher ist als ein gegebener Schwellenwert (und die Bandbreitennutzung niedriger ist als ein weiterer Schwellenwert), kann der Prozessor das Nichtlokalitätsverhalten außer Kraft setzen, so dass alle NL-Ladevorgänge als reguläre Ladevorgänge behandelt werden. Falls jedoch die Cache-Nutzung niedriger ist als der Schwellenwert (und die Bandbreitennutzung höher ist als der andere Schwellenwert), dann kann der Prozessor potentiell von der NL-Ladeoperation profitieren.
  • Diese Metriken allein können nicht ausreichend sein, um abzuleiten, dass NL-Ladevorgänge tatsächlich nützlich sind (z. B. können NL-Ladevorgänge immer noch in einer Anwendung mit hohem Bandbreitenbedarf zweckentfremdet werden). Als solche können Ausführungsformen auch den SAB einsetzen, um Adressen von NL-Ladevorgänge zu verfolgen, die kürzlich Caches umgangen haben. Falls die gesamte Trefferrate in dem SAB hoch ist, dann verwendet die Anwendung konsistent NL-Ladevorgänge für Daten mit Lokalität. In diesem Fall kann das NL-Verhalten außer Kraft gesetzt werden, selbst wenn Cache-/Bandbreitennutzung nahelegt, dass NL-Ladevorgänge helfen könnten. Der SAB und die Leistungsüberwachungen können sich in der Speichersteuereinheit befinden oder ihr zugeordnet sein. Die Entscheidung über das Außerkraftsetzen kann jedoch zu dem Kern gesendet und dort gespeichert werden. Der Kern kann diese Entscheidung über das Außerkraftsetzen für ein gegebenes Zeitfenster (z. B. 10K Zyklen) verwenden, um dynamisch zukünftige NL-Anforderungen in dem Zeitfenster in reguläre Ladevorgänge umzusetzen. Die Entscheidung über das Außerkraftsetzen kann für alle Kerne, eine Teilmenge der Kerne, von denen bekannt ist, dass auf ihnen Threads für den gleichen Prozess ablaufen, nur den Kern, der den jüngsten NL-Ladevorgang ausgeführt hat, nur den Thread, der den jüngsten NL-Ladevorgang ausgeführt hat, und/oder nur den statischen Befehl, der den jüngsten NL-Ladevorgang angestoßen hat, in unterschiedlichen Ausführungsformen getroffen werden.
  • Selektive Aktivierung (SE) basierend auf dem Puffer für seltenen Zugriff, wie sie vorstehend diskutiert ist, funktioniert gut für Speicherzugriffe, die über Lokalitätsverteilungen erzeugt werden, die dem Potenzgesetz ähnlich sind, wo einige wenige Datenelemente, die Lokalität zeigen, jedoch viele Datenelemente ohne Wiederverwendung vorhanden sind (z. B. das Verarbeiten von Graphen sozialer Netze). Mit der anfänglichen Umgehung und folgenden Treffer(n) für die angeforderte Adresse, die in einen Speicherzugriff auf eine vollständige Cache-Zeile umgesetzt werden soll, kann diese Technik jedoch die verlorene Lokalität nicht vollständig wiederherstellen. Ausführungsformen, die das Außerkraftsetzen (OR) von NL-Verhalten bereitstellen, können für solche Fälle die verlorene Lokalität abschwächen. Wenn der Prozessor dynamisch vorhersagt, dass NL-Ladevorgänge nicht effektiv sind, und das Merkmal zum Außerkraftsetzen anschaltet, können NL-Ladevorgänge in reguläre Ladevorgänge zur Ausgabezeit in dem Kern umgesetzt werden, ohne irgendwelche Einträge in dem SAB zu überprüfen. Somit zieht in der Betriebsart zum Außerkraftsetzen das Umsetzen von NL-Ladevorgängen in reguläre Ladevorgänge keinen Penalty eines anfänglichen Umgehens und (wenigstens eines) nachfolgenden Treffers nach sich.
  • Darüber hinaus findet mit der SE-Technik die dynamische Entscheidung, die auf SAB-Verfolgungsinformationen basiert, statt, nachdem die Anforderung erzeugt und in dem SAB empfangen worden ist. Somit enthält ein Prozessor eine Mikroarchitektur-Infrastruktur, um sowohl das Umgehen feingranularer Antworten als auch das Einfügen von Antworten auf vollständigen Zugriff für Anforderungen, die noch unerledigt sind, zu behandeln. In einigen Ausführungsformen kann jedoch die Technik zum Außerkraftsetzen diese Infrastruktur nicht implementieren, um noch unerledigte Anforderungen basierend auf der Bestimmung der Speichersteuereinheit dynamisch zu ändern. Das heißt, wie mit dem OR-Mechanismus, dass Anforderungen als reguläre oder Nichtlokalität zur Ausgabezeit in dem Kern gemacht und wie vorgesehen fertiggestellt werden, was die Mikroarchitekturunterstützung vereinfacht.
  • In einer Ausführungsform kann die SAB-Struktur vereinfacht sein, da die gesamte Trefferrate in dem SAB als eine Statistik verwendet werden kann, um Lokalität zu identifizieren. Als solche können Ausführungsformen auf individuelle Vertrauenskennzeichen pro feingranularem Block verzichten. In anderen Ausführungsformen kann eine SE-Technik eine OR-Technik ergänzen, so dass dann, wenn kein Außerkraftsetzen detektiert wird (z. B. Nichtlokalitäts-Verhalten ist nützlich), SE immer noch vollständigen Zugriff für spezielle Daten, die Lokalität zeigen, selektiv aktivieren kann.
  • In Ausführungsformen kann epochenbasiertes Überwachen ausgeführt werden, wobei die Zeit in Epochen unterteilt wird. Eine neue Entscheidung für Außerkraftsetzen (oder nicht) wird am Anfang einer Epoche getroffen unter Verwendung von Statistikdaten, die aus der gerade fertiggestellten Epoche (und möglicherweise zusätzlicher früherer Epochen) gesammelt sind, ob NL-Verhalten außer Kraft gesetzt werden soll. Diese Bestimmung kann auf einer oder mehreren Leistungsüberwachungen einschließlich der vorstehend beschriebenen basieren. Am Anfang jeder Epoche kann eine Logik zum Außerkraftsetzen (die in einer Lokalitätssteuereinheit einer Speichersteuereinheit vorhanden sein kann) bestimmen, ob die Statistikdaten aus der früheren Epoche einen Ausführungs-Betriebszustand angeben, der von NL-Ladevorgängen profitieren kann. Beispielsweise kann die Logik zum Außerkraftsetzen bestimmen, ob der LLC-MPKI und die Speicherbandbreitenzähler höher sind als vorbestimmte Schwellenwerte. Da feingranularer Speicherzugriffe einen Vorteil bereitstellen, wenn die LLC-Fehlschlagsrate hoch ist und ein hoher Bedarf für Speicherbandbreite vorhanden ist, wird es erlaubt, dass NL-Ladevorgänge, falls die Schwellenwerte überschritten sind, als feingranulare Zugriffe fortfahren. Andernfalls werden die NL-Ladevorgänge in reguläre Ladevorgänge umgesetzt. In einigen Ausführungsformen können SAB-Statistikdaten auch an Epochengrenzen analysiert werden. Solche SAB-Statistikdaten werden nur dann gesammelt, denn NL-Ladevorgänge aktiviert sind. In einigen Ausführungsformen sind die Epochen zum Sammeln von SAB-Statistikdaten von den Epochen zum Sammeln von LLC/MC-Statistikdaten verschieden.
  • Jetzt Bezug nehmend auf 12 ist ein Ablaufdiagramm eines Verfahrens in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Insbesondere kann das in 12 gezeigte Verfahren 1200 durch Hardware, Software, Firmware und/oder Kombinationen daraus, wie z. B. Steuerlogik, ausgeführt werden, um zu bestimmen, ob NL-Hinweise eines oder mehrerer Speicherzugriffsbefehle innerhalb einer Epoche basierend auf Leistungsüberwachungsinformationen, wie hier beschrieben ist, außer Kraft gesetzt werden sollen. Wie zu sehen ist, beginnt das Verfahren 1200 durch Empfangen von Leistungsüberwachungsinformationen für eine Epoche (Block 1210). Obwohl der Schutzbereich der vorliegenden Erfindung in dieser Hinsicht in einer Ausführungsform nicht eingeschränkt ist, können diese Leistungsüberwachungsinformationen Cache-Fehlschlagsrateninformationen wie z. B. LLC-Fehlschlagsraten und Speicherbandbreiteninformationen wie z. B. eine Anzahl von Speicherzugriffen pro Sekunde und so weiter enthalten. Die Steuerung geht dann zu Raute 1220 über, um zu bestimmen, ob einer oder mehrere aus diesen Leistungsüberwachungswerten der Leistungsüberwachungsinformationen einen entsprechenden Schwellenwert übersteigen. In einigen Beispielen kann ein einzelner Leistungsüberwachungswert, der kleiner ist als ein Schwellenwert, ausreichend sein, um zu bewirken, dass die Steuerung als Nächstes zu Block 1240 zum Behandeln des Außerkraftsetzens von Nichtlokalitätshinweisen übergeht. In anderen Fällen können mehr als ein und möglicherweise alle Leistungsüberwachungswerte als kleiner als ihr entsprechender Schwellenwert bestimmt werden, bevor dieses Behandeln zum Außerkraftsetzen stattfinden soll.
  • Basierend auf der Bestimmung bei Raute 1220 können, falls die Steuerung zu Block 1240 übergeht, Nichtlokalitätshinweise in allen Speicherzugriffsbefehlen für die nächste Epoche außer Kraft gesetzt werden. Als solche können diese Speicherzugriffsbefehle, die Nichtlokalitätshinweise aufweisen, z. B. in normale Ladeoperationen umgesetzt und als solche behandelt werden, z. B. so dass die vollständige Breite von Daten zurückgegeben werden kann und Einfügen in eine Cache-Hierarchie stattfinden kann.
  • Noch mit Bezug auf 12 geht die Steuerung stattdessen zu Block 1230 über, falls bei Block 1220 bestimmt wird, dass ein oder mehrere Leistungsüberwachungswerte den entsprechenden Schwellenwert übersteigen. Dort kann Nichtlokalitäts-Behandlung für die nächste Epoche aktiviert werden. Als solche können Speicherzugriffsbefehle, die Nichtlokalitätshinweise aufweisen, dementsprechend behandelt werden, und zwar werden Teilbreiten von Daten erhalten und direkt zu einem Kern zurückgegeben ohne Einfügen in eine Cache-Hierarchie. Es wird darauf hingewiesen, dass es in diesem Fall es möglich ist, dass individuelle Speicherzugriffsbefehle, die Nichtlokalitätshinweise aufweisen, immer noch selektiv für normale Ladebehandlung aktiviert sind, basierend auf SAB-Informationen für solche Befehle (in Fällen, in denen ein SAB während der Epoche aktiv bleibt). Es ist zu verstehen, dass viele Variationen und Alternativen möglich sind, obwohl es in der Ausführungsform von 12 auf dieser hohen Ebene gezeigt ist.
  • Jetzt Bezug nehmend auf 13 ist ein Ablaufdiagramm eines Verfahrens in Übereinstimmung mit einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Insbesondere beschreibt das Verfahren 1300 weitere Einzelheiten eines dynamischen Prozesses zum Entscheiden über das Außerkraftsetzen von Nichtlokalität. In einer speziellen Ausführungsform kann das Verfahren 1300 durch eine Speichersteuereinheit und insbesondere durch eine Lokalitätssteuereinheit einer solchen Speichersteuereinheit ausgeführt werden. Wie zu sehen ist, beginnt das Verfahren 1300 durch Empfangen mehrerer Leistungsüberwachungswerte für eine gegebene Epoche (und zwar eine gerade fertiggestellte Epoche) (Block 1305) und Vergleichen dieser Werte mit entsprechenden Schwellenwerten (Raute 1310). In einer Ausführungsform können diese Leistungsüberwachungswerte aus LLC-MPKI und Speicherbandbreitenzählern erhalten werden, um zu bestimmen, ob der Prozessor in einer Betriebsart ist, die einen Nutzen aus dem Merkmal des NL-Ladevorgangs realisieren kann. Falls nein wird das Verhalten des NL-Ladevorgangs außer Kraft gesetzt, und die Ausgabelogik gibt ankommende NL-Ladevorgänge als reguläre Ladevorgänge aus. Insbesondere in diesem Fall (z. B. wenn die Cache-Fehlschlagsrate und/oder Speicherbandbreite relativ niedrig sind) geht die Steuerung von Raute 1310 zu Block 1320 über, wo das Außerkraftsetzen des Nichtlokalität-Ladeverhaltens aktiviert wird. Zu diesem Zweck kann die Lokalitätssteuereinheit ein Steuersignal zu einem Kern (z. B. zu der Ausgabelogik, der Decodierlogik und so weiter) senden, um in dem Kern selbst zu bewirken, dass ankommende Speicherzugriffsbefehle, die Nichtlokalitätshinweise aufweisen, in reguläre Speicherzugriffsbefehle, z. B. reguläre Ladeanforderungen, umgesetzt werden.
  • Immer noch mit Bezug auf 13 geht die Steuerung, falls wenigstens einer aus den Leistungszählern einen gegebenen Schwellenwert übersteigt, stattdessen zu Raute 1330 über, um zu bestimmen, ob eine Entscheidung zum Außerkraftsetzen derzeit aktiv ist. Falls keine vorher aktivierte Entscheidung zum Außerkraftsetzen vorhanden ist (und keine SAB-Statistikdaten aus der früheren Epoche (wie bei Raute 1340 bestimmt) verfügbar sind), wird die von NL-Ladebehandlung aktiviert, und SAB-Überwachung wird eingeleitet (Block 1350). Solche NL-Ladevorgänge werden aktiviert, bis SAB-Statistikdaten für wenigstens eine Epoche gesammelt sind. Wenn ausreichende SAB-Statistikdaten gesammelt sind (z. B. ausreichende Statistikdaten aus der früheren Epoche vorhanden sind), kann die SAB-Trefferrate mit einem Schwellenwert verglichen werden (Raute 1360). Obwohl der Schutzbereich der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist, kann in einer Ausführungsform diese SAB-Trefferrate an einem relativ niedrigen Niveau eingestellt sein, z. B. ungefähr 20 % oder weniger. In einer speziellen Ausführungsform kann eine SAB-Trefferrate von ungefähr 11 % als der Schwellenwert verwendet werden.
  • Basierend auf der Bestimmung bei Raute 1360 geht die Steuerung entweder zu Block 1370 oder zu Block 1380 über. Wenn bestimmt wird, dass die SAB-Trefferrate aus der vorhergehenden Epoche höher ist als dieser gegebene Schwellenwert, ist ein Bedarf für eine hohe Bandbreite vorhanden, die NL-Ladevorgänge zeigen jedoch Lokalität. Das kann an einem zweckentfremdeten NL-Ladebefehl in einer Anwendung mit hoher Bandbreite liegen. Falls bestimmt wird, dass die SAB-Trefferrate hoch ist, werden NL-Ladevorgänge bei Block 1370 außer Kraft gesetzt. Andernfalls geht die Steuerung, falls bestimmt wird, dass die SAB-Trefferrate aus der vorhergehenden Epoche unterhalb des gegebenen Schwellenwerts ist, von Raute 1360 zu Block 1380 über, wo NL-Ladevorgänge für die nächste Epoche aktiviert werden.
  • Es wird darauf hingewiesen, dass dann, wenn die Entscheidung ist, zu Block 1370 weiter zu gehen, so dass alle NL-Ladevorgänge für die nächste Epoche deaktiviert (d. h. außer Kraft gesetzt) werden, es nicht möglich ist, SAB-Überwachung zu verwenden, um zu überprüfen, ob sich das Programmverhalten geändert hat. Hier können NL-Ladevorgänge periodisch jedoch sporadisch für eine Epoche aktiviert werden, um Änderungen in dem Programmverhalten zu detektieren, unter der Voraussetzung, dass die Leistungsüberwachungswerte hoch sind. Zu diesem Zweck kann die Steuerung in dem Fall, in dem NL-Ladevorgänge außer Kraft gesetzt werden, von Raute 1330 zu Raute 1390 übergehen, um zu bestimmen, ob für eine nächste Epoche die NL-Ladebehandlung periodisch reaktiviert werden soll. Falls ja, geht die Steuerung zu Block 1350 über, der vorstehend beschrieben ist. Andernfalls geht die Steuerung zu Block 1395 über, wo das Außerkraftsetzen des NL-Ladens in seinem aktivierten Zustand beibehalten werden kann. Es wird darauf hingewiesen, dass in dem Fall, in dem periodisches Reaktivieren für eine nächste Epoche stattfindet, die SAB-Trefferrate weiterhin überwacht werden kann, um eine Änderung des Programmverhaltens zu detektieren. Es ist zu verstehen, dass viele Variationen und Alternativen möglich sind, obwohl es in der Ausführungsform von 13 auf dieser hohen Ebene gezeigt ist.
  • Es wird darauf hingewiesen, dass 13 eine einfachste Option annimmt, in der NL-Ladevorgänge global deaktiviert sind. Es kann jedoch basierend auf der Verfügbarkeit einer Kern/Thread-ID und eines Befehlszeigers (IP) des Ladens in der Speichersteuereinheit eine Entscheidung über das Außerkraftsetzen für individuelle Kerne, Threads oder Befehle getroffen werden. In einem solchen Fall werden umgeleitete Adressen ferner mit der Kern-ID, Thread-ID und/oder dem IP etikettiert, und die SAB-Treffer-/Fehlschlagsrate kann pro Kern, pro Thread oder pro IP verfolgt werden. Der Ablauf zur Entscheidung über das Außerkraftsetzen folgt dem gleichen Pfad, der in 13 gezeigt ist. Falls die Leistungszähler angeben, dass NL-Ladevorgänge nicht effektiv sein können, wird das NL-Verhalten global außer Kraft gesetzt. Andernfalls wird, falls SAB-Statistikdaten in der früheren Epoche gesammelt wurden, die SAB-Trefferrate pro Kern/Thread/IP überprüft. Dann wird die Entscheidung über das Außerkraftsetzen zu Kernen mit Kern/Thread/IP-Informationen geliefert. Das Außerkraftsetzen von NL-Verhalten für einen Kern/Thread/IP blockiert nicht das NL-Verhalten für andere Kerne/Threads/IPs. Deshalb können korrekt verwendete NL-Ladevorgänge aktiviert sein, während zweckentfremdete auf Kern/Thread/IP-Granularität außer Kraft gesetzt werden.
  • In einigen Fällen kann das grundsätzliche Ausführen von feingranularen Zugriffen und Umgehen von Caches zu signifikantem Lokalitäts- und Leistungsverlust für spezielle Arbeitslasten führen. Eine SE-Technik wählt dynamisch Zugriffe mit Lokalität aus und setzt sie in reguläre Speicherzugriffe um, um verlorene Lokalität wiederherzustellen und die Leistung zu verbessern. Für Fälle, in der NL-Ladevorgänge fast immer kontraproduktiv sind, kann das SE jedoch die verlorene Lokalität nicht vollständig wiederherstellen. Ausführungsformen mit einer Operation zum Außerkraftsetzen können solche Fälle detektieren und NL-Ladevorgänge außer Kraft setzen, so dass die Leistung auf die Grundlinie zurückfällt. Eine OR-Technik kann jedoch das selektive Umgehen nicht vollständig ausnutzen, wenn NL-Ladevorgänge tatsächlich hilfreich sind (wenn einige Zeilen Lokalität aufweisen und andere nicht). Eine Kombination aus OR- und SE-Techniken kann die Vorteile beider Herangehensweisen bereitstellen. Insbesondere kann das Kombinieren dieser Techniken Ausreißer minimieren, während es eine signifikante Leistungssteigerung für Arbeitslasten, die profitieren, bereitstellt.
  • Jetzt Bezug nehmend auf Tabelle 1 sind Beispiele verschiedener Arbeitslasten und ihre Operation gezeigt unter Verwendung von: (1) Selektivem Aktivieren von lokalitätsbasierter Behandlung individueller Befehle, die Nichtlokalitätshinweise aufweisen (NL aktiviert ist gleich „WAHR“ in Spalte 3); und (2) globales Außerkraftsetzen von Nichtlokalitäts-Behandlung (NL aktiviert ist gleich „FALSCH“ in Spalte 3). Insbesondere stellt Tabelle 1 in Spalte 1 dar, ob für eine gegebene Arbeitslast ein erster Leistungsüberwachungswert (und zwar LLC-MPKI) einen entsprechenden Schwellenwert übersteigt, und in Spalte 2, ob eine Leistungsmetrik eines Puffers mit seltenem Zugriff (und zwar die SAB-Trefferrate) unterhalb eines entsprechenden Schwellenwerts ist. Wie vorstehend diskutiert gibt Spalte 3 eine Entscheidung über das Außerkraftsetzen an, wobei NL aktiviert (WAHR) bedeutet dass die Merkmale zum globalen Außerkraftsetzen deaktiviert sind. Spalte 4 wiederum identifiziert eine Leistungsauswirkung mit dem selektiven Aktivieren von lokalitätsbasierten Hinweisen (im Vergleich zu einer Basisimplementierung, in der alle NL-Hinweise befolgt werden). Somit wird, wenn NL aktiviert ist, die resultierende Leistung der entsprechende Wert aus dieser Spalte sein. Andererseits wird, falls NL deaktiviert ist (Außerkraftsetzen ist eingeschaltet), die resultierende Leistung die Grundleistung sein.
  • Es ist zu beachten, dass in Tabelle 1 das Außerkraftsetzen aktiviert und somit „eingeschaltet“ ist für 7 Arbeitslasten (d. h. NL aktiviert ist FALSCH). Es ist außerdem zu beachten, dass die Leistungsauswirkung für alle diese Fälle unterhalb von 1 ist. Somit hätten, falls NL-Ladevorgänge aktiviert wären, sie zu Leistungsverlusten geführt. Als solches kann das Verwenden einer Technik zum Außerkraftsetzen, wie sie hier beschrieben ist, diese Fälle erfolgreich vorhersagen und das NL-Verhalten dementsprechend deaktivieren. Darüber hinaus wird darauf hingewiesen, dass für Arbeitslasten, in denen die Operation zum Außerkraftsetzen deaktiviert ist (d. h. NL aktiviert ist WAHR), die meisten der Leistungsverbesserungen oberhalb von 1 sind. Es sind jedoch zwei Ausreißer vorhanden, wo vorhergesagt wird, dass erwartet wird, dass NL-Behandlung nützlich ist, und die somit das Außerkraftsetzen ausschalten, was jedoch zu einem Leistungsverlust führt. Doch ist, wie in Spalte 5 zu sehen ist, das Bereitstellen einer Technik zum Außerkraftsetzen wie hier beschrieben meistens erfolgreich bei der Vorhersage sowohl positiver als auch negativer Ergebnisse der NL-Ladeausführung unter Verwendung von Leistungsüberwach ungsinformationen. Tabelle 1
    LLC-MPKI > THS SAB-TREFFER < THS NL aktiviert? Leistung verbessert für SE OR-Entscheidung korrekt?
    FALSCH N/A FALSCH 0,87 WAHR
    WAHR WAHR WAHR 1,31 WAHR
    FALSCH N/A FALSCH 0,93 WAHR
    FALSCH N/A FALSCH 0,83 WAHR
    WAHR WAHR WAHR 1,05 WAHR
    WAHR WAHR WAHR 1,05 WAHR
    WAHR FALSCH FALSCH 0,95 WAHR
    WAHR WAHR WAHR 1,05 WAHR
    WAHR WAHR WAHR 0,99 FALSCH
    WAHR WAHR WAHR 1,09 WAHR
    WAHR WAHR WAHR 1,08 WAHR
    WAHR WAHR WAHR 1,13 WAHR
    FALSCH N/A FALSCH 0,77 WAHR
    WAHR WAHR WAHR 0,79 FALSCH
    FALSCH N/A FALSCH 0,82 WAHR
    FALSCH N/A FALSCH 0,94 WAHR
    WAHR WAHR WAHR 1,04 WAHR
    WAHR WAHR WAHR 1,08 WAHR
    WAHR WAHR WAHR 1,14 WAHR
    WAHR WAHR WAHR 1,08 WAHR
    WAHR WAHR WAHR 1,08 WAHR
    WAHR WAHR WAHR 1,19 WAHR
  • Ausführungsformen können sowohl das selektive Aktivieren von NL-Behandlung als auch die Operation zum Außerkraftsetzen über ein Steuerregister und/oder Einstellungen des Basis-Eingabe/Ausgabe-Systems (BIOS) global aktivieren/deaktivieren. Dynamische Ausführung, wie sie hier beschrieben ist, kann Lokalitätspotential detektieren und feingranulare Zugriffe in reguläre Zugriffe auf vollständige Cache-Zeilen umsetzen. Darüber hinaus kann sie solche Zugriffe in dem Kern außer Kraft setzen, falls kein Vorteil vorhergesagt ist. Somit wird ein Zweckentfremden des Feingranularitätsmerkmals dynamisch korrigiert. Das gibt den Programmierern mehr Freiheit, diese erweiterten Merkmale zu verwenden, ohne sich zu sehr um negative Auswirkungen auf die Leistung kümmern zu müssen.
  • Die folgenden Beispiele gehören zu weiteren Ausführungsformen.
  • In einem Beispiel enthält ein Prozessor Folgendes: einen Kern, der eine Decodiereinheit enthält, um einen Speicherzugriffsbefehl zu decodieren, der einen Nichtlokalitätshinweis aufweist, um anzugeben, dass Daten, die dem Speicherzugriffsbefehl zugeordnet sind, wenigstens eines aus einer nicht räumlichen Lokalität und einer nicht zeitlichen Lokalität aufweisen; und eine Speichersteuereinheit, um Anforderungen zu einem Speicher auszugeben, wobei die Speichersteuereinheit eine Lokalitätssteuereinheit enthält, um zu bestimmen, ob der Nichtlokalitätshinweis außer Kraft gesetzt werden soll, basierend wenigstens teilweise auf einem oder mehreren Leistungsüberwachungswerten.
  • In einem Beispiel umfassen der eine oder die mehreren Leistungsüberwachungswerte eine Cache-Speicher-Fehlschlagsrate und eine Speicherbandbreite.
  • In einem Beispiel dient die Lokalitätssteuereinheit dazu, den Nichtlokalitätshinweis in Reaktion auf einen Vergleich wenigstens einer aus der Cache-Speicher-Fehlschlagsrate und der Speicherbandbreite mit einem entsprechenden Schwellenwert außer Kraft zu setzen.
  • In einem Beispiel umfasst der Prozessor ferner einen Puffer für seltenen Zugriff, der mehrere Einträge aufweist, von denen jeder dazu dient, für einen Speicherzugriffsbefehl auf eine spezielle Adresse Adressinformationen und Zählinformationen zu speichern.
  • In einem Beispiel dient die Lokalitätssteuereinheit dazu, den Nichtlokalitätshinweis ferner außer Kraft zu setzen, wenn eine Trefferrate des Puffers für seltenen Zugriff einen zweiten Schwellenwert übersteigt.
  • In einem Beispiel dient die Lokalitätssteuereinheit dazu, den einen oder die mehreren Leistungsüberwachungswerte für eine erste Zeitspanne zu erhalten und den Nichtlokalitätshinweis für eine zweite Zeitspanne außer Kraft zu setzen, was das Außerkraftsetzen von mehreren Nichtlokalitätshinweisen von mehreren Speicherzugriffsbefehlen während der zweiten Zeitspanne enthält.
  • In einem Beispiel umfasst der Prozessor ferner einen Puffer für seltenen Zugriff, der mehrere Einträge aufweist, von denen jeder dazu dient, für einen Speicherzugriffsbefehl auf eine spezielle Adresse Adressinformationen und Zählinformationen zu speichern, wobei die Lokalitätssteuereinheit dazu dient, den Puffer für seltenen Zugriff während der zweiten Zeitspanne zu deaktivieren.
  • In einem Beispiel dient die Lokalitätssteuereinheit dazu, ein Signal zum Außerkraftsetzen zu dem Kern auszugeben, um zu bewirken, dass der Kern einen oder mehrere Speicherzugriffsbefehle, die den Nichtlokalitätshinweis aufweisen, in einen oder mehrere Speicherzugriffsbefehle ohne Nichtlokalitätshinweise umsetzt.
  • In einem Beispiel dient die Lokalitätssteuereinheit dazu, den Nichtlokalitätshinweis für einen ersten Speicherzugriffsbefehl eines ersten Threads außer Kraft zu setzen und den Nichtlokalitätshinweis für einen zweiten Speicherzugriffsbefehl eines zweiten Thread nicht außer Kraft zu setzen.
  • In einem Beispiel dient der Nichtlokalitätshinweis dazu, eine Rückgabe von Daten zu dem Kern zu bewirken, die einen Cache-Speicher des Prozessors umgeht, und in Reaktion auf das Außerkraftsetzen des Nichtlokalitätshinweises die Lokalitätssteuereinheit dazu dient, zu bewirken, dass ein Datenabschnitt mit voller Breite aus dem Speicher erhalten und für den Kern bereitgestellt wird.
  • In einem Beispiel dient die Speichersteuereinheit dazu, in Reaktion auf den Nichtlokalitätshinweis zu bewirken, dass ein Datenabschnitt unterhalb einer Cache-Zeile aus dem Speicher erhalten und für den Kern bereitgestellt wird.
  • In einem weiteren Beispiel umfasst ein Verfahren Folgendes: Empfangen von Leistungsüberwachungsinformationen für eine erste Zeitspanne in einer Steuereinheit eines Prozessors; Vergleichen eines oder mehrerer Leistungsüberwachungswerte aus den Leistungsüberwachungsinformationen mit einem entsprechenden Schwellenwert; und in Reaktion darauf, dass wenigstens einer aus dem einen oder den mehreren Leistungsüberwachungswerten den entsprechenden Schwellenwert nicht übersteigt, Bewirken, dass der Prozessor Nichtlokalitätshinweise eines oder mehrerer Speicherzugriffsbefehle während einer zweiten Zeitspanne außer Kraft setzt.
  • In einem Beispiel umfasst das Bewirken, dass der Prozessor die Nichtlokalitätshinweise des einen oder der mehreren Speicherzugriffsbefehle während der zweiten Zeitspanne außer Kraft setzt, Senden eines Signals zu einer Ausgabelogik des Prozessors, um zu bewirken, dass die Ausgabelogik während der zweiten Zeitspanne einen oder mehrere Speicherzugriffsbefehle, die den Nichtlokalitätshinweis aufweisen, in einen oder mehrere Speicherzugriffsbefehle ohne den Nichtlokalitätshinweis umsetzt.
  • In einem Beispiel umfasst das Verfahren ferner in Reaktion darauf, dass der eine oder die mehreren Leistungsüberwachungswerte den entsprechenden Schwellenwert übersteigen, Aktivieren von Nichtlokalitäts-Speicherzugriffsbefehlsbehandlung für die zweite Zeitspanne.
  • In einem Beispiel umfasst die Nichtlokalitäts-Speicherzugriffsbefehlsbehandlung für einen ersten Speicherzugriffsbefehl, der den Nichtlokalitätshinweis aufweist, eines oder mehrere aus dem Folgenden: eine Rückgabe von Daten zu dem Kern, die einen Cache-Speicher des Prozessors umgeht; und eine Rückgabe eines Abschnitts von Daten unterhalb einer Cache-Zeile zu dem Kern.
  • In einem Beispiel umfasst das Verfahren ferner nach mehreren Zeitspannen, in denen die Nichtlokalitätshinweise außer Kraft gesetzt sind, das Aktivieren von Nichtlokalitäts-Speicherzugriffsbefehlsbehandlung für eine nächste Zeitspanne.
  • In einem Beispiel umfasst das Verfahren ferner Folgendes: Erhalten wenigstens einer Leistungsmetrik für einen Puffer für seltenen Zugriff für die nächste Zeitspanne; und Aktivieren der Nichtlokalitäts-Speicherzugriffsbefehlsbehandlung für eine Zeitspanne, die der nächsten Zeitspanne folgt, basierend wenigstens teilweise auf der wenigstens einen Leistungsmetrik für den Puffer für seltenen Zugriff.
  • In einem weiteren Beispiel dient ein computerlesbares Medium, das Befehle enthält, dazu, das Verfahren nach einem der vorstehenden Beispiele auszuführen.
  • In einem weiteren Beispiel dient ein computerlesbares Medium, das Daten enthält, dazu, durch wenigstens eine Maschine verwendet zu werden, um wenigstens eine integriert Schaltung herzustellen, um das Verfahren nach einem der vorstehenden Beispiele auszuführen.
  • In einem weiteren Beispiel umfasst eine Einrichtung Mittel zum Ausführen des Verfahrens nach einem der vorstehenden Beispiele.
  • In noch einer weiteren Ausführungsform umfasst ein System Folgendes: einen Prozessor, der einen Kern aufweist, um Speicherzugriffsbefehle zu verarbeiten, die Nichtlokalitätshinweise aufweisen, um Nichtlokalität von Daten anzugeben, die den Speicherzugriffsbefehlen zugeordnet sind, wobei der Kern eine oder mehrere Leistungsüberwachungseinheiten aufweist; eine Speichersteuereinheit, um Anforderungen zu einem Systemspeicher auszugeben, wobei die Speichersteuereinheit eine Lokalitätssteuereinheit enthält, um die Speicherzugriffsbefehle zu empfangen, die die Nichtlokalitätshinweise aufweisen, und um die Nichtlokalitätshinweise der Speicherzugriffsbefehle, die die Nichtlokalitätshinweise aufweisen, für eine zweite Zeitspanne außer Kraft zu setzen basierend wenigstens teilweise auf einer Leistungsmetrik für eine erste Zeitspanne, die von der einen oder den mehreren Leistungsüberwachungseinheiten erhalten werden; und den Systemspeicher, der mit der Speichersteuereinheit gekoppelt ist.
  • In einem Beispiel dient in der zweiten Zeitspanne und in Reaktion auf das Außerkraftsetzen der Nichtlokalitätshinweise der Speicherzugriffsbefehle die Speichersteuereinheit dazu, mehrere Cache-Zeilen vollständiger Breite zu dem Kern über eine Cache-Speicherhierarchie zurückzugeben, und in einer dritten Zeitspanne, in der Nichtlokalitätshinweise nicht außer Kraft gesetzt werden sollen, dient die Speichersteuereinheit dazu, das Cache-Speichern zu umgehen und Daten mit einer Breite unterhalb einer Cache-Zeile zu dem Kern zurückzugeben für einen oder mehrere Speicherzugriffsbefehle, die Nichtlokalitätshinweise aufweisen.
  • In einem Beispiel dient die Speichersteuereinheit dazu, in Reaktion auf eine Bestimmung, die Nichtlokalitätshinweise der Speicherzugriffsbefehle, die die Nichtlokalitätshinweise aufweisen, für eine zweite Zeitspanne außer Kraft zu setzen, ein Signal zum Außerkraftsetzen zu dem Kern auszugeben, um zu bewirken, dass der Kern die Speicherzugriffsbefehle, die die Nichtlokalitätshinweise aufweisen, in Speicherzugriffsbefehle ohne Nichtlokalitätshinweise umsetzt.
  • In einem weiteren Beispiel umfasst eine Einrichtung Folgendes: Mittel zum Empfangen von Leistungsüberwachungsinformationen eines Prozessors für eine erste Zeitspanne; Mittel zum Vergleichen eines oder mehrerer Leistungsüberwachungswerte aus den Leistungsüberwachungsinformationen mit einem entsprechenden Schwellenwert; und Mittel zum Bewirken, dass der Prozessor Nichtlokalitätshinweise eines oder mehrerer Speicherzugriffsbefehle während einer zweiten Zeitspanne außer Kraft setzt, basierend wenigstens teilweise auf einem ersten Ergebnis des Vergleichens des einen oder der mehreren Leistungsüberwachungswerte der Leistungsüberwachungsinformationen mit dem entsprechenden Schwellenwert.
  • In einem Beispiel umfasst die Einrichtung ferner Mittel zum Senden eines Signals zu einem Ausgabemittel zum Bewirken, dass das Ausgabemittel während der zweiten Zeitspanne einen oder mehrere Speicherzugriffsbefehle, die den Nichtlokalitätshinweis aufweisen, in einen oder mehrere Speicherzugriffsbefehle ohne den Nichtlokalitätshinweis umsetzt.
  • In einem Beispiel umfasst die Einrichtung ferner Mittel zum Aktivieren von Nichtlokalitäts-Speicherzugriffsbefehlsbehandlung für die zweite Zeitspanne basierend wenigstens teilweise auf einem zweiten Ergebnis des Vergleichens des einen oder der mehreren Leistungsüberwachungswerte der Leistungsüberwachungsinformationen mit dem entsprechenden Schwellenwert.
  • In einem Beispiel umfasst die Einrichtung ferner Mittel zum Zurückgeben von Daten zu einem Kernmittel des Prozessors, das ein Cache-Speichermittel des Prozessors umgeht.
  • In einem Beispiel umfasst die Einrichtung ferner Mittel zum Zurückgeben eines Datenabschnitts unterhalb einer Cache-Zeile zu einem Kernmittel des Prozessors.
  • Es ist zu verstehen, dass verschiedene Kombinationen der vorstehenden Beispiele möglich sind.
  • Es wird darauf hingewiesen, dass die Begriffe „Schaltung“ und „Schaltungsanordnung“ hier austauschbar verwendet sind. Wie sie hier verwendet sind, sind diese Begriffe und der Begriff „Logik“ verwendet, um allein oder in Kombination analoge Schaltungsanordnung, digitale Schaltungsanordnung, fest verdrahtete Schaltungsanordnung, programmierbare Schaltungsanordnung, Prozessor-Schaltungsanordnung, Mikrosteuereinheit-Schaltungsanordnung, Hardware-Logik-Schaltungsanordnung, Zustandsautomaten-Schaltungsanordnung und/oder irgendeinen andere Typ einer physikalischen Hardware-Komponente zu bezeichnen. Ausführungsformen können in vielen unterschiedlichen Typen von Systemen verwendet werden. Beispielsweise kann in einer Ausführungsform eine Kommunikationsvorrichtung ausgelegt sein, die verschiedenen Verfahren und Techniken, die hier beschrieben sind, auszuführen. Natürlich ist der Schutzbereich der vorliegenden Erfindung nicht auf eine Kommunikationsvorrichtung eingeschränkt, und stattdessen können sich andere Ausführungsformen auf andere Typen von Einrichtungen zum Verarbeiten von Befehlen oder ein oder mehrere maschinenlesbare Medien, die Befehle enthalten, die in Reaktion darauf, dass sie auf einer Berechnungsvorrichtung ausgeführt werden, bewirken, dass die Vorrichtung eines oder mehrere der hier beschriebenen Verfahren und Techniken ausführen, richten.
  • Ausführungsformen können in Code implementiert sein und können auf einem nicht-transitorischen Speichermedium gespeichert sein, das darauf gespeichert Befehle aufweist, die verwendet werden können, um ein System zu programmieren, die Befehle auszuführen. Ausführungsformen können in Daten implementiert sein und können auf einem nicht-transitorischen Speichermedium gespeichert sein, das dann, wenn es durch wenigstens eine Maschine verwendet wird, bewirkt, dass die wenigstens eine Maschine wenigstens eine integrierte Schaltung herstellt, um eine oder mehrere Operationen auszuführen. Noch weitere Ausführungsformen können in einem computerlesbaren Speichermedium implementiert sein, das Informationen enthält, die dann, wenn sie in ein SoC oder einen anderen Prozessor hergestellt werden, dazu dienen, das SoC oder den anderen Prozessor zu konfigurieren, eine oder mehrere Operationen auszuführen. Das Speichermedium kann irgendeinen Typ von Platte enthalten, der Floppy-Disks, optische Platten, Festkörperlaufwerke (SSDs), Compact-Disk-Festwertspeicher (CD-ROMs), wiederbeschreibbare Compact-Disks (CD-RWs) und magneto-optische Platten, Halbleitervorrichtungen wie z. B. Festwertspeicher (ROMs) Direktzugriffsspeicher (RAMs) wie z. B. dynamische Direktzugriffsspeicher (DRAMs), statische Direktzugriffsspeicher (SRAMs), löschbare programmierbare Festwertspeicher (EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Festwertspeicher (EEPROMs), magnetische oder optische Karten und irgendeinen anderen Typ von Medien, der zum Speichern elektronischer Befehle geeignet ist, enthält, jedoch nicht darauf beschränkt ist.
  • Obwohl die vorliegende Erfindung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben worden ist, werden Fachleute zahlreiche Modifikationen und Variationen daraus erkennen. Es ist vorgesehen, dass die beigefügten Ansprüche alle solche Modifikationen und Variationen als in den wahren Geist und Schutzbereich dieser vorliegenden Erfindung fallend abdecken.

Claims (25)

  1. Prozessor, der Folgendes umfasst: einen Kern, der eine Decodiereinheit enthält, um einen Speicherzugriffsbefehl zu decodieren, der einen Nichtlokalitätshinweis aufweist, um anzugeben, dass Daten, die dem Speicherzugriffsbefehl zugeordnet sind, wenigstens eines aus einer nichträumlichen Lokalität und einer nichtzeitlichen Lokalität aufweisen; und eine Speichersteuereinheit, um Anforderungen zu einem Speicher auszugeben, wobei die Speichersteuereinheit eine Lokalitätssteuereinheit enthält, um zu bestimmen, ob der Nichtlokalitätshinweis außer Kraft gesetzt werden soll, basierend wenigstens teilweise auf einem oder mehreren Leistungsüberwachungswerten.
  2. Prozessor nach Anspruch 1, wobei der eine oder die mehreren Leistungsüberwachungswerte eine Cache-Speicher-Fehlschlagsrate und eine Speicherbandbreite umfassen.
  3. Prozessor nach Anspruch 2, wobei die Lokalitätssteuereinheit dazu dient, den Nichtlokalitätshinweis in Reaktion auf einen Vergleich wenigstens einer aus der Cache-Speicher-Fehlschlagsrate und der Speicherbandbreite mit einem entsprechenden Schwellenwert außer Kraft zu setzen.
  4. Prozessor nach Anspruch 1, der ferner einen Puffer für seltenen Zugriff umfasst, der mehrere Einträge aufweist, von denen jeder dazu dient, für einen Speicherzugriffsbefehl auf eine spezielle Adresse Adressinformationen und Zählinformationen zu speichern.
  5. Prozessor nach Anspruch 4, wobei die Lokalitätssteuereinheit dazu dient, den Nichtlokalitätshinweis ferner außer Kraft zu setzen, wenn eine Trefferrate des Puffers für seltenen Zugriff einen zweiten Schwellenwert übersteigt.
  6. Prozessor nach Anspruch 1, wobei die Lokalitätssteuereinheit dazu dient, den einen oder die mehreren Leistungsüberwachungswerte für eine erste Zeitspanne zu erhalten und den Nichtlokalitätshinweis für eine zweite Zeitspanne außer Kraft zu setzen, was das Außerkraftsetzen von mehreren Nichtlokalitätshinweisen von mehreren Speicherzugriffsbefehlen während der zweiten Zeitspanne enthält.
  7. Prozessor nach Anspruch 6, wobei der Prozessor ferner einen Puffer für seltenen Zugriff umfasst, der mehrere Einträge aufweist, von denen jeder dazu dient, für einen Speicherzugriffsbefehl auf eine spezielle Adresse Adressinformationen und Zähl informationen zu speichern, wobei die Lokalitätssteuereinheit dazu dient, den Puffer für seltenen Zugriff während der zweiten Zeitspanne zu deaktivieren.
  8. Prozessor nach Anspruch 1, wobei die Lokalitätssteuereinheit dazu dient, ein Signal zum Außerkraftsetzen zu dem Kern auszugeben, um zu bewirken, dass der Kern einen oder mehrere Speicherzugriffsbefehle, die den Nichtlokalitätshinweis aufweisen, in einen oder mehrere Speicherzugriffsbefehle ohne Nichtlokalitätshinweise umsetzt.
  9. Prozessor nach Anspruch 1, wobei die Lokalitätssteuereinheit dazu dient, den Nichtlokalitätshinweis für einen ersten Speicherzugriffsbefehl eines ersten Thread außer Kraft zu setzen und den Nichtlokalitätshinweis für einen zweiten Speicherzugriffsbefehl eines zweiten Thread nicht außer Kraft zu setzen.
  10. Prozessor nach Anspruch 1, wobei der Nichtlokalitätshinweis dazu dient, eine Rückgabe von Daten zu dem Kern zu bewirken, die einen Cache-Speicher des Prozessors umgeht, und die Speichersteuereinheit dazu dient, in Reaktion auf das Außerkraftsetzen des Nichtlokalitätshinweises zu bewirken, dass ein Datenabschnitt mit voller Breite aus dem Speicher erhalten und für den Kern bereitgestellt wird.
  11. Prozessor nach Anspruch 1, wobei die Speichersteuereinheit in Reaktion auf den Nichtlokalitätshinweis dazu dient, zu bewirken, dass ein Datenabschnitt unterhalb einer Cache-Zeile aus dem Speicher erhalten und für den Kern bereitgestellt wird.
  12. Verfahren, das Folgendes umfasst: Empfangen von Leistungsüberwachungsinformationen für eine erste Zeitspanne in einer Steuereinheit eines Prozessors; Vergleichen eines oder mehrerer Leistungsüberwachungswerte aus den Leistungsüberwachungsinformationen mit einem entsprechenden Schwellenwert; und in Reaktion darauf, dass wenigstens einer aus dem einen oder den mehreren Leistungsüberwachungswerten den entsprechenden Schwellenwert nicht übersteigt, Bewirken, dass der Prozessor Nichtlokalitätshinweise eines oder mehrerer Speicherzugriffsbefehle während einer zweiten Zeitspanne außer Kraft setzt.
  13. Verfahren nach Anspruch 12, wobei das Bewirken, dass der Prozessor die Nichtlokalitätshinweise des einen oder der mehreren Speicherzugriffsbefehle während der zweiten Zeitspanne außer Kraft setzt, Senden eines Signals zu einer Ausgabelogik des Prozessors, um zu bewirken, dass die Ausgabelogik während der zweiten Zeitspanne einen oder mehrere Speicherzugriffsbefehle, die den Nichtlokalitätshinweis aufweisen, in einen oder mehrere Speicherzugriffsbefehle ohne den Nichtlokalitätshinweis umsetzt, umfasst.
  14. Verfahren nach Anspruch 12, das ferner in Reaktion darauf, dass der eine oder die mehreren Leistungsüberwachungswerte den entsprechenden Schwellenwert übersteigen, Aktivieren von Nichtlokalitäts-Speicherzugriffsbefehlsbehandlung für die zweite Zeitspanne umfasst.
  15. Verfahren nach Anspruch 14, wobei die Nichtlokalitäts-Speicherzugriffsbefehlsbehandlung für einen ersten Speicherzugriffsbefehl, der den Nichtlokalitätshinweis aufweist, eines oder mehrere aus dem Folgenden umfasst: eine Rückgabe von Daten zu dem Kern, die einen Cache-Speicher des Prozessors umgeht; und eine Rückgabe eines Datenabschnitts unterhalb einer Cache-Zeile zu dem Kern.
  16. Verfahren nach Anspruch 12, das ferner nach mehreren Zeitspannen, in denen die Nichtlokalitätshinweise außer Kraft gesetzt sind, das Aktivieren von Nichtlokalitäts-Speicherzugriffsbefehlsbehandlung für eine nächste Zeitspanne umfasst.
  17. Verfahren nach Anspruch 16, das ferner Folgendes umfasst: Erhalten wenigstens einer Leistungsmetrik für einen Puffer für seltenen Zugriff für die nächste Zeitspanne; und Aktivieren der Nichtlokalitäts-Speicherzugriffsbefehlsbehandlung für eine Zeitspanne, die der nächsten Zeitspanne folgt, basierend wenigstens teilweise auf der wenigstens einen Leistungsmetrik für den Puffer für seltenen Zugriff.
  18. Computerlesbares Speichermedium, das computerlesbare Anweisungen umfasst, die dann, wenn sie ausgeführt werden, dazu dienen, ein Verfahren nach einem der Ansprüche 12 bis 17 zu implementieren.
  19. Einrichtung, die Mittel zum Ausführen eines Verfahrens nach einem der Ansprüche 12 bis 17 umfasst.
  20. System, das Folgendes umfasst: einen Prozessor, der einen Kern aufweist, um Speicherzugriffsbefehle zu verarbeiten, die Nichtlokalitätshinweise aufweisen, um Nichtlokalität von Daten anzugeben, die den Speicherzugriffsbefehlen zugeordnet sind, wobei der Kern eine oder mehrere Leistungsüberwachungseinheiten aufweist; eine Speichersteuereinheit, um Anforderungen zu einem Systemspeicher auszugeben, wobei die Speichersteuereinheit eine Lokalitätssteuereinheit enthält, um die Speicherzugriffsbefehle zu empfangen, die die Nichtlokalitätshinweise aufweisen, und um die Nichtlokalitätshinweise der Speicherzugriffsbefehle, die die Nichtlokalitätshinweise aufweisen, für eine zweite Zeitspanne außer Kraft zu setzen basierend wenigstens teilweise auf mindestens einer Leistungsmetrik für eine erste Zeitspanne, die von der einen oder den mehreren Leistungsüberwachungseinheiten erhalten werden; und den Systemspeicher, der mit der Speichersteuereinheit gekoppelt ist.
  21. System nach Anspruch 20, wobei in der zweiten Zeitspanne und in Reaktion auf das Außerkraftsetzen der Nichtlokalitätshinweise der Speicherzugriffsbefehle die Speichersteuereinheit dazu dient, mehrere Cache-Zeilen vollständiger Breite zu dem Kern über eine Cache-Speicherhierarchie zurückzugeben und in einer dritten Zeitspanne, in der Nichtlokalitätshinweise nicht außer Kraft gesetzt werden sollen, die Speichersteuereinheit dazu dient, das Cache-Speichern zu umgehen und Daten mit einer Breite unterhalb einer Cache-Zeile zu dem Kern zurückzugeben für einen oder mehrere Speicherzugriffsbefehle, die Nichtlokalitätshinweise aufweisen.
  22. System nach Anspruch 20, wobei in Reaktion auf eine Bestimmung, die Nichtlokalitätshinweise der Speicherzugriffsbefehle, die die Nichtlokalitätshinweise aufweisen, für die zweite Zeitspanne außer Kraft zu setzen, die Speichersteuereinheit dazu dient, ein Signal zum Außerkraftsetzen zu dem Kern auszugeben, um zu bewirken, dass der Kern die Speicherzugriffsbefehle, die die Nichtlokalitätshinweise aufweisen, in Speicherzugriffsbefehle ohne Nichtlokalitätshinweise umsetzt.
  23. Einrichtung, die Folgendes umfasst: Mittel zum Empfangen von Leistungsüberwachungsinformationen eines Prozessors für eine erste Zeitspanne; Mittel zum Vergleichen eines oder mehrerer Leistungsüberwachungswerte der Leistungsüberwachungsinformationen mit einem entsprechenden Schwellenwert; und Mittel zum Bewirken, dass der Prozessor die Nichtlokalitätshinweise eines oder mehrerer Speicherzugriffsbefehle während einer zweiten Zeitspanne außer Kraft setzt, basierend wenigstens teilweise auf einem ersten Ergebnis des Vergleichens des einen oder der mehreren Leistungsüberwachungswerte der Leistungsüberwachungsinformationen mit dem entsprechenden Schwellenwert.
  24. Einrichtung nach Anspruch 23, die ferner Mittel zum Senden eines Signals an ein Ausgabemittel zum Bewirken, dass die Ausgabemittel während der zweiten Zeitspanne einen oder mehrere Speicherzugriffsbefehle, die den Nichtlokalitätshinweis aufweisen, in einen oder mehrere Speicherzugriffsbefehle ohne den Nichtlokalitätshinweis umsetzen, umfasst.
  25. Einrichtung nach Anspruch 23, die ferner Mittel zum Aktivieren von Nichtlokalitäts-Speicherzugriffsbefehlsbehandlung für die zweite Zeitspanne basierend wenigstens teilweise auf einem zweiten Ergebnis des Vergleichens des einen oder der mehreren Leistungsüberwachungswerte der Leistungsüberwachungsinformationen mit dem entsprechenden Schwellenwert umfasst.
DE102018002480.7A 2017-03-31 2018-03-26 System, einrichtung und verfahren zum ausserkraftsetzen der nichtlokalitätsbasierten befehlsbehandlung Pending DE102018002480A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/475,244 2017-03-31
US15/475,244 US10402336B2 (en) 2017-03-31 2017-03-31 System, apparatus and method for overriding of non-locality-based instruction handling

Publications (1)

Publication Number Publication Date
DE102018002480A1 true DE102018002480A1 (de) 2018-10-04

Family

ID=63524739

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018002480.7A Pending DE102018002480A1 (de) 2017-03-31 2018-03-26 System, einrichtung und verfahren zum ausserkraftsetzen der nichtlokalitätsbasierten befehlsbehandlung

Country Status (3)

Country Link
US (1) US10402336B2 (de)
CN (1) CN108694136A (de)
DE (1) DE102018002480A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10409727B2 (en) 2017-03-31 2019-09-10 Intel Corporation System, apparatus and method for selective enabling of locality-based instruction handling
CN107544926B (zh) * 2017-09-06 2020-04-07 上海兆芯集成电路有限公司 处理系统及其访存方法
CN111340678A (zh) * 2018-12-19 2020-06-26 华为技术有限公司 一种数据缓存系统、图形处理器及数据缓存方法
US20220092724A1 (en) * 2020-09-23 2022-03-24 Advanced Micro Devices, Inc. Memory latency-aware gpu architecture

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6832296B2 (en) * 2002-04-09 2004-12-14 Ip-First, Llc Microprocessor with repeat prefetch instruction
CN1838090A (zh) * 2004-09-10 2006-09-27 微软公司 改善最近被访问资源的数据局部性
US7949834B2 (en) * 2007-01-24 2011-05-24 Qualcomm Incorporated Method and apparatus for setting cache policies in a processor
JP5209933B2 (ja) * 2007-10-19 2013-06-12 ルネサスエレクトロニクス株式会社 データ処理装置
CN103226487B (zh) * 2013-04-25 2016-01-13 中国人民解放军信息工程大学 面向异构众核多级存储结构的数据分布与局部性优化方法
US9367474B2 (en) 2013-06-12 2016-06-14 Apple Inc. Translating cache hints
CN104679481B (zh) * 2013-11-27 2020-04-28 上海芯豪微电子有限公司 一种指令集转换系统和方法
US9600442B2 (en) * 2014-07-18 2017-03-21 Intel Corporation No-locality hint vector memory access processors, methods, systems, and instructions
US9811464B2 (en) * 2014-12-11 2017-11-07 Intel Corporation Apparatus and method for considering spatial locality in loading data elements for execution
US11579774B2 (en) * 2015-01-20 2023-02-14 Ultrata, Llc Object memory data flow triggers
CN104850508B (zh) * 2015-04-09 2018-02-09 深圳大学 基于数据局部性的访存方法
US20170177349A1 (en) * 2015-12-21 2017-06-22 Intel Corporation Instructions and Logic for Load-Indices-and-Prefetch-Gathers Operations
CA3027756C (en) * 2016-06-28 2021-04-13 Solano Labs, Inc. Systems and methods for efficient distribution of stored data objects
US11182306B2 (en) 2016-11-23 2021-11-23 Advanced Micro Devices, Inc. Dynamic application of software data caching hints based on cache test regions
US10409727B2 (en) 2017-03-31 2019-09-10 Intel Corporation System, apparatus and method for selective enabling of locality-based instruction handling

Also Published As

Publication number Publication date
US20180285279A1 (en) 2018-10-04
CN108694136A (zh) 2018-10-23
US10402336B2 (en) 2019-09-03

Similar Documents

Publication Publication Date Title
US11030108B2 (en) System, apparatus and method for selective enabling of locality-based instruction handling
Kim et al. Subspace snooping: Filtering snoops with operating system support
DE102015007571B4 (de) Keine-lokalität-hinweis-vektor-speicherzugriff-prozessoren, -verfahren, -systeme und -befehle
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
DE112016007566T5 (de) Systeme, Verfahren und Vorrichtungen zur heterogenen Berechnung
DE112016007516T5 (de) Vorrichtungen und verfahren für eine prozessorarchitektur
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE112017001825T5 (de) Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE102018002480A1 (de) System, einrichtung und verfahren zum ausserkraftsetzen der nichtlokalitätsbasierten befehlsbehandlung
DE102018125257A1 (de) Defragmentierter und effizienter mikrooperationscache
DE112012007115T5 (de) Wahlweise Logikprozessor-Zählung und Typauswahl für eine gegebene Arbeitsbelastung basierend auf Wärme- und Leistungsbudget-Einschränkungen der Plattform
DE102010034555A1 (de) Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE112019002389T5 (de) Architektur zur dynamischen umwandlung einer speicherkonfiguration
DE102018004727A1 (de) Verfahren und System zum Durchführen von Datenbewegungsoperationen mit Lese-Snapshot und In-Place-Schreibaktualisierung
DE202019005686U1 (de) Skalierbare Gesamtspeicherverschlüsselungs-Engine mit mehrfachen Schlüsseln
DE112017001700T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss
DE102018002294A1 (de) Effizientes bereichsbasiertes speicher-rückschreiben zum verbessern der host-zu-geräte-kommunikation für optimale energie und leistung
DE112016005863T5 (de) Minimierung von Snoop-Verkehr lokal und über Kerne auf einem Chip-Mehrkern-Fabric
DE102015115582A1 (de) Vorrichtung und Verfahren zum Drosseln des Hardwarevorauslesens
DE102018130225A1 (de) Entfernte atomare Operationen in Multi-Sockel-Systemen
DE112019006898T5 (de) Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation
DE102018005039A1 (de) System und verfahren für pro-agent-steuerung und - dienstqualität gemeinsam genutzter ressourcen in chip-mehrprozessor-plattformen
DE112017001704T5 (de) Arbiterbasierte Serialisierung von Prozessor-System-Management-Interrupt-Ereignissen

Legal Events

Date Code Title Description
R012 Request for examination validly filed