DE112017001700T5 - Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss - Google Patents

Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss Download PDF

Info

Publication number
DE112017001700T5
DE112017001700T5 DE112017001700.9T DE112017001700T DE112017001700T5 DE 112017001700 T5 DE112017001700 T5 DE 112017001700T5 DE 112017001700 T DE112017001700 T DE 112017001700T DE 112017001700 T5 DE112017001700 T5 DE 112017001700T5
Authority
DE
Germany
Prior art keywords
cache
processor
instruction
data
level
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
DE112017001700.9T
Other languages
English (en)
Inventor
James A. Coleman
Philip C. Arellano
Garrett Drown
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 DE112017001700T5 publication Critical patent/DE112017001700T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • 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/6028Prefetching based on hints or prefetch instructions

Landscapes

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

Abstract

Ein Prozessor eines Aspekts weist eine Mehrzahl von Caches auf einer Mehrzahl von unterschiedlichen Cache-Ebenen auf. Der Prozessor weist auch eine Decodiereinheit zum Decodieren einer Abrufanweisung auf. Die Abrufanweisung dienst zur Angabe von Adressinformation für eine Speicherposition, und die Abrufanweisung dient zur Angabe einer Cache-Ebene der Mehrzahl von unterschiedlichen Cache-Ebenen. Der Prozessor weist auch eine Cache-Steuerung auf, gekoppelt mit der Decodiereinheit und gekoppelt mit einem Cache auf der angegebenen Cache-Ebene. Die Cache-Steuerung dient zum Speichern von mit der Speicherposition im Cache assoziierten Daten als Reaktion auf die Abrufanweisung, wobei der Abschluss der Abrufanweisung durch die Architektur gewährleistet ist. Weitere Prozessoren, Verfahren, Systeme und maschinenlesbare Speichermedien, die Anweisungen speichern, werden offenbart.

Description

  • HINTERGRUND
  • TECHNISCHES GEBIET
  • Hier beschriebene Ausführungsformen beziehen sich allgemein auf Prozessoren. Insbesondere können hier beschriebene Ausführungsformen generell das Laden von Daten aus Speicher in den Prozessor behandeln.
  • HINTERGRUNDINFORMATIONEN
  • Zur Verbesserung der Performanz weisen Prozessoren üblicherweise mindestens einen Cache auf. Der Cache kann einen relativ kleinen lokalen Speicher mit schnellem Zugriff darstellen, der relativ nah am Prozessor ist. Während des Betriebs kann eine Untermenge der Daten im Systemspeicher im Cache gespeichert werden. Wenn der Prozessor Daten aus dem Systemspeicher einlesen oder Daten in den Systemspeicher schreiben will, kann der Prozessor zunächst prüfen, ob eine Kopie der Daten im Cache gespeichert ist. Falls Daten im Cache gespeichert sind, kann der Prozessor auf die Daten aus dem Cache zugreifen, statt aus dem Systemspeicher auf die Daten zugreifen zu müssen. Generell kann auf die Daten aus dem Cache schneller als aus dem Systemspeicher zugegriffen werden. Beispielsweise können Zugriffe auf die Daten aus dem Cache generell nicht mehr als einige wenige Prozessor-Taktzyklen erfordern, während Zugriffe auf die Daten im Systemspeicher im Allgemeinen mehr Zeit im Umfang von mindestens eine Größenordnung oder sogar noch mehr beanspruchen.
  • Figurenliste
  • Die Erfindung versteht sich am besten unter Bezugnahme auf die folgende Beschreibung und die beigefügten Zeichnungen, die zum Veranschaulichen von Ausführungsformen verwendet werden. In den Zeichnungen:
    • 1 ist ein Blockdiagramm eines Systems, aufweisend einer Ausführungsform eines Prozessors und eines Systemspeichers.
    • 2 ist ein Blockdiagramm einer Ausführungsform eines Prozessors, der dazu betreibbar ist, eine Ausführungsform einer Abrufanweisung durchzuführen.
    • 3 ist ein Blockdiagramm einer Ausführungsform eines Verfahrens zum Durchführen einer Ausführungsform einer Abrufanweisung.
    • 4 ist ein Blockdiagramm einer ersten beispielhaften Ausführungsform einer Abrufanweisung.
    • 5 ist eine Tabelle mit der Darstellung eines geeigneten Beispiels einer Abbildung unterschiedlicher 3-Bit-Cache-Ebenen-Angabefeldwerte auf unterschiedliche angegebene Cache-Ebenen.
    • 6 ist ein Blockdiagramm einer zweiten beispielhaften Ausführungsform einer Abrufanweisung.
    • 7 ist ein Blockdiagramm einer beispielhaften Ausführungsform eines Prozessors, der dazu betreibbar ist, eine Ausführungsform einer Abrufanweisung durchzuführen.
    • 8A ist ein Blockdiagramm, das eine Ausführungsform einer reihenfolgetreuen Pipeline und eine Ausführungsform einer reihenfolgeveränderlichen Registerumbenennungs-Ausgabe/Ausführungs-Pipeline veranschaulicht.
    • 8B ist ein Blockdiagramm einer Ausführungsform eines Prozessorkerns, aufweisend eine Frontend-Einheit, gekoppelt mit einer Ausführungs-Engine-Einheit, die beide mit einer Speichereinheit gekoppelt sind.
    • 9A ist ein Blockdiagramm einer Ausführungsform eines einzelnen Prozessorkerns zusammen mit seiner Verbindung mit dem On-Die-Zwischenverbindungsnetz und mit seiner lokalen Teilmenge des Level-2-Caches (L2).
    • 9B ist ein Blockdiagramm einer Ausführungsform Einer erweiterten Ansicht eines Teils des Prozessorkerns aus 9A.
    • 10 ist ein Blockdiagramm einer Ausführungsform eines Prozessors, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und integrierte Grafik aufweisen kann.
    • 11 ist ein Blockdiagramm einer ersten Ausführungsform einer Computerarchitektur.
    • 12 ist ein Blockdiagramm einer zweiten Ausführungsform einer Computerarchitektur.
    • 13 ist ein Blockdiagramm einer dritten Ausführungsform einer Computerarchitektur.
    • 14 ist ein Blockdiagramm einer vierten Ausführungsform einer Computerarchitektur.
    • 15 ist ein Blockdiagramm zur Verwendung eines Softwareanweisungsumwandlers zum Umwandeln von binären Anweisungen in einer Quellanweisungsmenge zu binären Anweisungen in einer Zielanweisungsmenge gemäß Ausführungsformen der Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
  • Hier offenbart sind Abrufanweisungen, Prozessoren zum Ausführen der Abrufanweisungen, durch die Prozessoren durchgeführte Verfahren beim Verarbeiten oder Durchführen der Abrufanweisungen und Systeme, die einen oder mehrere Prozessoren zum Verarbeiten oder Durchführen der Anweisungen integrieren. Bei einigen Ausführungsformen können die Prozessoren eine Decodiereinheit oder andere Logik zum Empfangen und/oder Decodieren der Abrufanweisungen aufweisen und eine Cache-Steuerung, eine andere Ausführungseinheit oder andere Logik zum Durchführen der Abrufanweisungen. In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten aufgeführt (z. B. spezifische Anweisungsvorgänge, Datenformate, Prozessorkonfigurationen, Mikroarchitektur-Details, Sequenzen von Vorgängen usw.). Allerdings können Ausführungsformen ohne diese spezifischen Einzelheiten umgesetzt werden. In anderen Fällen wurden hinlänglich bekannte Schaltungen, Strukturen und Techniken nicht im Detail gezeigt, um ein Verschleiern des Verständnisses dieser Beschreibung zu vermeiden.
  • 1 ist ein Blockdiagramm eines Systems 100, aufweisend einen Prozessor 101 und einen Systemspeicher 102. Bei verschiedenen Ausführungsformen kann das System einen Desktop-Computer, einen Laptop-Computer, einen Notebook-Computer, einen Tablet-Computer, ein Netbook, ein Smartphone, ein Mobiltelefon, einen Server, eine Netzwerkvorrichtung (z. B. einen Router, Switch usw.), eine Medienabspieleinrichtung, eine Smart-TV-Einrichtung, einen Nettop, eine Set-Top-Box, eine Videogame-Steuerung, eine industrielle Steuervorrichtung, Maschine oder Einrichtung darstellen, die eine eingebettete Steuerung oder einen anderen Typ einer elektronischen Einrichtung aufweisen. Der Prozessor und der Speicher können gekoppelt oder auf sonstige Weise miteinander in Kommunikation sein mittels eines konventionellen Kopplungsmechanismus (z. B. über einen oder mehrere Busse, Hubs, Speichersteuerungen, Chipset-Komponenten oder dergleichen).
  • Der Prozessor kann optional ein Multi-Kern-Prozessor sein, der einen ersten Kern 103-1 bis zu einem N-ten Kern 103-N aufweisen kann, wobei die Anzahl der Kerne eine beliebige zweckmäßige, für die besondere Implementierung gewünschte Anzahl sein kann (z. B. häufig im Bereich von 1 bis zu Vielfachen von 10 Kernen). Der erste Kern hat eine Anweisungsmenge 104. Die Anweisungsmenge kann die Makroanweisungen, Anweisungen auf Maschinenebene, Anweisungen auf Baugruppenebene oder andere Anweisungen oder Steuersignale aufweisen, die der Prozessor dekodieren und ausführen kann. Der erste Kern weist auch eine Gruppe von Pipeline-Komponenten 108 auf. Beispielsweise können die Pipeline-Komponenten eine optionale Vorabrufeinheit, eine Abrufeinheit, eine Decodiereinheit, eine Menge von Ausführungseinheiten, eine Rückzugs- oder Commit-Einheit, optional reihenfolgeveränderliche Pipeline-Komponenten oder dergleichen aufweisen. Die Anweisungen der Anweisungsmenge können zum Decodieren, Ausführen oder Durchführen auf sonstige Weise zu den Pipeline-Komponenten bereitgestellt werden.
  • Der erste Kern umfasst auch Architekturregister 109 (z. B. eine oder mehrere Architekturregisterdateien). Die Architekturregister können die Register darstellen, die für Software und/oder einen Programmierer sichtbar sind, und/oder die Register, die durch Anweisungen der Anweisungsmenge zum Identifizieren von Operanden vorgegeben oder angegeben sind. Die Architekturregister stellen generell On-Die-Prozessorspeicherpositionen dar, die zum Speichern von Operanden für Anweisungen verwendet werden. Die Architekturregister können bei Bedarf umbenannt werden, mit Aliasnamen versehen werden usw. Zur Vereinfachung können die Architekturregister hier auch einfach als Register bezeichnet werden. Die anderen Kerne (z. B. der N-te Kern) können optional entweder gleich dem ersten Kern oder davon unterschiedlich sein.
  • Während des Betriebs kann der Prozessor 101 Daten 117 aus dem Systemspeicher 102 laden oder abrufen, die Daten verarbeiten und die verarbeiteten oder aktualisierten Daten anschließend in den Systemspeicher zurückspeichern. Eine Herausforderung besteht darin, dass Zugriffe auf die im Systemspeicher gespeicherten Daten im Allgemeinen dazu neigen, relativ hohe Latenzen aufzuweisen. Zur Verbesserung der Performanz kann der Prozessor üblicherweise mindestens einen Cache aufweisen (z. B. Cache 111-1) oder eine Cache-Hierarchie 115, die mehrere Caches auf unterschiedlichen Cache-Ebenen aufweist (z. B. Caches 111-1, 111-N, 112-1, 112-N, 113, 114). Jeder der Caches kann einen relativ kleinen lokalen Speicher mit schnellem Zugriff darstellen, der im Vergleich zum Systemspeicher 102 relativ näher an den Kernen 103 und/oder Pipeline-Komponenten 108 (z. B. Ausführungseinheiten) ist. Während des Betriebs können die Caches zum Speichern oder Zwischenspeichern einer Untermenge der Daten aus dem Systemspeicher verwendet werden, die aus dem Systemspeicher in den Prozessor geladen worden sind. Wenn der Prozessor anschließend Daten aus dem Systemspeicher einlesen der Daten in den Systemspeicher schreiben will, kann der Prozessor zunächst prüfen, ob eine Kopie der Daten in den Caches gespeichert ist. Falls Daten in den Caches gespeichert sind, kann der Prozessor auf die Daten aus den Caches zugreifen, statt aus dem Systemspeicher auf die Daten zugreifen zu müssen. Generell kann auf die Daten aus dem Cache schneller als aus dem Systemspeicher zugegriffen werden. Beispielsweise können Zugriffe auf die Daten aus dem Cache generell nicht mehr als einige wenige Prozessor-Taktzyklen erfordern, während Zugriffe auf die Daten im Systemspeicher im Allgemeinen mehr Zeit im Umfang von mindestens eine Größenordnung oder sogar noch mehr beanspruchen. Demzufolge kann die Übernahme von einem oder mehreren Caches im Prozessor hilfreich sein, um den durchschnittlichen Zeitumfang zu reduzieren, der zum Abrufen von Daten in den Prozessor erforderlich ist, was wiederum die Verbesserung der Prozessorperformanz und/oder des Durchsatzes unterstützen kann.
  • Wiederum mit Bezug auf 1 weist der dargestellte Prozessor die Cache-Hierarchie 115 auf, die mindestens zwei Caches auf zwei oder mehr unterschiedlichen Cache-Ebenen umfasst (z. B. mindestens zwei der Caches 111-1, 111-N, 112-1, 112-N, 113, 114). Die Cache-Ebenen unterscheiden sich in ihrer relativen Nähe zu den Kernen 103 und/oder deren Pipeline-Komponenten 108 (z. B. Ausführungseinheiten). Bei dem spezifischen Beispiel der dargestellten Cache-Hierarchie weist der erste Kern 103-1 einen dedizierten Anweisungs-Cache 111-1 der ersten Ebene oder Ebene 1 (L1) zum Speichern oder Zwischenspeichern von Anweisungen auf und einen dedizierten L1-Daten-Cache 112-1 zum Speichern oder Zwischenspeichern von Daten. In ähnlicher Weise weist der N-te Kern 103-1 einen dedizierten Anweisungs-Cache 111-N der ersten Ebene oder Ebene 1 (L1) zum Speichern oder Zwischenspeichern von Anweisungen auf und einen dedizierten L1-Daten-Cache 112-N zum Speichern oder Zwischenspeichern von Daten. Jeder der dedizierten L1-Caches kann zur Verwendung durch (z. B. zum Zwischenspeichern von Daten für) den dazugehörigen Kern, in dem er umfasst ist, vorgesehen sein. Die L1-Caches sind auf der Cache-Ebene am nächsten an den Kernen und/oder ihren Ausführungseinheiten. Die spezifische dargestellte Cache-Hierarchie umfasst auch einen gemeinsamen einheitlichen Cache 113 der zweiten Ebene oder Ebene 2 (L2). Der Begriff „einheitlich“ wird verwendet, um anzugeben, dass der L2-Cache sowohl Anweisungen als auch Daten speichern kann. Der L2-Cache ist auf der nächstnäheren Cache-Ebene an den Kernen und/oder ihren Ausführungseinheiten. Der geteilte L2-Cache kann durch mindestens einige der oder alle Kerne geteilt werden (z. B. Daten dafür zwischenspeichern), statt für einen beliebigen bestimmten Kern vorgesehen zu sein. Entsprechend der Darstellung kann die dargestellte Cache-Hierarchie optional/potenziell auch einen optional geteilten einheitlichen Cache 114 der dritten Ebene oder Ebene 3 (L3) aufweisen, obwohl dies nicht erforderlich ist. Der L3-Cache kann auf einer von den Kernen und/oder ihren Ausführungseinheiten noch weiter entfernten Cache-Ebene sein, aber dennoch näher daran als der Systemspeicher. Bei einer anderen Ausführungsform kann jeder der Kerne statt des geteilten L2-Caches 113 einen dedizierten einheitlichen L2-Cache aufweisen, und die Cache-Hierarchie kann optional/potenziell einen geteilten einheitlichen L3-Cache aufweisen und optional/potenziell einen geteilten Cache der vierten Ebene oder Ebene 4 (L4) aufweisen, obwohl dies nicht erforderlich ist. Weitere Cache-Hierarchien sind ebenfalls geeignet und können weitgehend mindestens zwei Caches auf zwei oder mehr unterschiedlichen Cache-Ebenen aufweisen.
  • Zugriffe auf Daten von den näher an den Kernen positionierten Caches neigen dazu, schneller zu sein, als Zugriffe auf Daten von den Caches, die von den Kernen weiter entfernt sind. Beispielsweise neigen Zugriffe auf Daten in den L1-Caches generell dazu, schneller zu sein als Zugriffe auf Daten in den L2-Caches, und Zugriffe auf Daten im L2-Cache neigen generell dazu, schneller zu sein als Zugriffe auf Daten im L3-Cache und so weiter. Dementsprechend kann es bei einigen Ausführungsformen zweckmäßig sein, angeben oder sonst wie identifizieren zu können, welche Cache-Ebene zum Speichern gegebener Daten und/oder Anweisungen verwendet werden soll. Beispielsweise kann eine derartige Entscheidung mindestens teilweise darauf basieren, wie häufig auf die Daten/Anweisungen zugegriffen wird, wie wichtig es ist, auf die Daten/Anweisungen rasch zuzugreifen, wie sicher es ist, dass die Daten/Anweisungen benötigt werden oder dergleichen. Zusätzlich neigen die Caches, die näher an den Kernen sind (z. B. die L1-Caches) üblicherweise generell dazu, kleiner zu sein als die von den Kernen weiter entfernten Caches (z. B. der L2-Cache und der L3-Cache). Dementsprechend kann der Umfang von Speicherraum in den kleineren Crashs eingeschränkter sein, wodurch der Nutzen der Möglichkeit weiter erhöht, vorgeben oder sonst wie angeben zu können, welche Cache-Ebene zum Zwischenspeichern von gegebenen Daten/Anweisungen verwendet werden soll, und zwar basierend mindestens teilweise auf den Merkmalen, vorgesehenen Verwendungen, Erwartungen und dergleichen in Bezug auf die gegebenen Daten/Anweisungen.
  • Während des Betriebs werden Daten in den Caches generell im Zeitverlauf geändert durch entfallende Daten, die veraltet sind und/oder auf sonstige Weise wahrscheinlich in der näheren Zukunft nicht benötigt werden, sodass sie Raum freigeben für Daten, die in der näheren Zukunft wahrscheinlich benötigt werden. Zu diesem Zweck sind nach dem Stand der Technik verschiedene Ersatzalgorithmen und Grundsätze bekannt. Derartige Ersatzalgorithmen und Grundsätze nehmen Streichungen häufig teilweise basierend auf dem Alter der Daten und/oder dem kürzlichen Einsatz in einem zeitlichen Rahmen vor. Zusätzlich kann der Prozessor einen Cache-Kohärenzmechanismus oder ein Protokoll implementieren und auch damit sicherstellen, dass Daten in den Caches kohärent verwaltet und zu korrekten Zeiten in den Systemspeicher zurückgeschrieben werden, sodass alle Kerne, Prozessoren oder sonstigen Einheiten im System korrekte und aktuelle Versionen der Daten kohärent einsehen können. Beispiele geeigneter Cache-Kohärenzprotokolle umfassen ohne diesbezügliche Einschränkung MESI, MOSI, MOESI und dergleichen. Das MESI-Protokoll weist vier Zustände auf, und zwar „Modifiziert“ (M), „Exklusiv“ (E), „Gemeinschaftlich“ (S) und „Ungültig“ (I), die durch zwei MESI-Bits angegeben sind. Das MOSI-Protokoll verwendet den Zustand „Eigen“ (O) anstelle des Zustands „Exklusiv“ (E). Das MOESI-Protokoll verwendet die beiden Zustände „Exklusiv“ (E) und „Eigen“ (O). Der modifizierte Zustand bezeichnet eine unsaubere Cache-Leitung.
  • Damit die Patches am effektivsten arbeiten, ist es generell wichtig, dass sie mit relevanten Daten gefüllt bleiben, die in der näheren Zukunft wahrscheinlich benötigt werden. Falls der erste Kern 103-1 beispielsweise eine Anweisung ausführen soll, kann er die Anweisung generell direkt ausführen, wenn die Anweisung bereits zuvor in der Cache-Hierarchie 115 gespeichert worden ist, während die Performanz der Anweisungen verzögert sein kann, falls die Anweisung dagegen nicht bereits in der Cache-Hierarchie gespeichert worden ist und stattdessen aus dem Systemspeicher 102 zu einem Zeitpunkt, zu dem der erste Kern 103-1 Ressourcen aufweist und zur Durchführung der ersten Anweisung bereit ist, geladen werden muss. Falls der erste Kern in ähnlicher Weise an gegebenen Daten eine Anweisung ausführen soll, kann er die Anweisung generell direkt ausführen, wenn sowohl die Anweisung als auch die gegebenen Daten bereits zuvor in der Cache-Hierarchie gespeichert worden sind, während die Performanz der Anweisung verzögert sein kann, falls die Anweisung und/oder die gegebenen Daten nicht bereits in der Cache-Hierarchie gespeichert worden sind und stattdessen aus dem Systemspeicher zu dem Zeitpunkt, an dem sie benötigt werden, geladen werden müssen. Dementsprechend kann nicht optimale Verwendung der Caches dazu führen, Konditionen zu schaffen, wobei der Prozessor zur Ausführung der Arbeit bereit ist und Zeit und Ressourcen und Verfügbarkeit zum Durchführen der Arbeit aufweist, aber stillstehen kann, während er auf Anweisungen und/oder ihre aus dem Systemspeicher abzurufenden Daten wartet. Derartige Konditionen neigen generell zum Ausdruck einer ineffizienten Verwendung von Prozessorressourcen und können zur Verschlechterung von Performanz führen. Glücklicherweise ist es in vielen Fällen möglich, im Voraus (z. B. durch einen Programmierer und/oder einen Compiler oder sonstige Software) zu wissen, welche Anweisungen und/oder Daten benötigt werden.
  • Mit Bezug wiederum auf 1 kann die Anweisungsmenge 104 des ersten Kerns 103-1 eine oder mehrere Anweisungen 105, 106, 107 zum Laden von Daten und/oder Anweisungen in die Caches des Prozessors aufweisen. Beispielsweise können ein Programmierer und/oder ein Compiler einen oder mehrere dieser unterschiedlichen Anweisungstypen in ein Programm aufnehmen, um Daten und/oder Anweisungen in die Caches zu laden, bevor die Daten und/oder Anweisungen tatsächlich benötigt werden. Häufig können die Daten und/oder Anweisungen in die Caches geladen werden, kurz bevor diese tatsächlich benötigt werden, sodass Sie nicht unnötigerweise die Caches für ein langes Verweilen und/oder einen langen Zeitraum belegen und vor ihrer Verwendung daraus entfernt werden. Bei Verwendung auf diese Weise können Anweisungen das Einstellen von Daten und/oder Anweisungen in die Caches, bevor die Daten und/oder Anweisungen benötigt werden, unterstützen. Dies kann hilfreich sein, um die Cache-Fehler zu vermeiden oder deren Anzahl zumindest zu vermindern, was wiederum die Verbesserung der Prozessorperformanz und/oder des Durchsatzes unterstützen kann.
  • Die Anweisungsmängel kann eine Ausführungsform einer Abrufanweisung 106 aufweisen. Zusätzlich kann die Anweisungsmenge bei einigen Ausführungsformen optional eine Ladeanweisung 105 aufweisen und/oder optional eine Vorabruf-Anweisung 107 aufweisen. Jeder dieser drei unterschiedlichen Anweisungstypen kann Ladevorgänge unterschiedlich durchführen und/oder in unterschiedlichen Situationen unterschiedliche mögliche Vorteile bieten.
  • Bei einigen Ausführungsformen kann die Ladeanweisung 105 Daten 117 im Systemspeicher angeben, und sie und sie wird möglicherweise keine Cache-Ebene in der Cache-Hierarchie 115 vorgeben oder spezifisch angeben. Die Ladeanweisung 105 kann bei der Durchführung wirksam sein, um den Prozessor zum Laden der angegebenen Daten 117 aus dem Systemspeicher 102 und zum Speichern der geladenen Daten als Daten 110, die durch die Ladeanweisung 105 geladen wurden, in den Architekturregistern 109 des ausführenden Kerns zu veranlassen. Die Ladeanweisung 105 kann bei der Durchführung auch wirksam sein, um den Prozessor zum Speichern der geladenen Daten 121, die durch die Ladeanweisung 105 geladen wurden, in der Cache-Hierarchie zu veranlassen (z. B. in diesem Fall in den L3-Cache 114), aber nicht auf einer beliebigen vorgegebenen oder spezifisch angegebenen Cache-Ebene in der Cache-Hierarchie. Bei einigen Ausführungsformen können die Durchführung und der Abschluss der Ladeanweisung durch die Architektur gewährleistet werden. Beispielsweise kann das der Ladeanweisung entsprechende Laden durch den Prozessor als sogenanntes Bedarfsladen behandelt werden, das hohe Priorität aufweist und bei dem der Prozessor normalerweise nicht die Nichtdurchführung oder den Nichtabschluss verfügen kann.
  • Bei einigen Ausführungsformen kann die Vorabruf-Anweisung 107 Daten 117 im Systemspeicher angeben, sie kann eine gegebene Cache-Ebene in der Cache-Hierarchie 115 vorgeben oder sonst wie angeben (z. B. bei diesem spezifischen Beispiel die dem L2-Cache 113 entsprechende Ebene), und sie kann durch den Prozessor als architekturbedingter Hinweis behandelt werden, und/oder ihre Durchführung und/oder ihr Abschluss werden möglicherweise nicht durch die Architektur gewährleistet. In einigen Fällen kann die Vorabruf-Anweisung, falls sie durchgeführt und abgeschlossen wird, bewirken, dass der Prozessor veranlasst wird, die angegebenen Daten 117 aus dem Systemspeicher 102 zu laden und die geladenen Daten als Daten 120, die durch die Vorabruf-Anweisung 107 geladen worden sind, in einen gegebenen Cache auf der angegebenen bestimmten Cache-Ebene zu speichern (z. B. bei diesem spezifischen Beispiel in der dem L2-Cache 113 entsprechenden Ebene). Im Gegensatz zur Ladeanweisung 105 kann die Vorabruf-Anweisung 107 nach Durchführung und Abschluss nicht bewirken, dass der Prozessor veranlasst wird, die geladenen Daten in den Architekturregistern 109 des Ausführungskerns zu speichern.
  • In anderen Fällen wird die Vorabruf-Anweisung 107 jedoch möglicherweise nicht ausgeführt, und/oder sie wird möglicherweise nicht abgeschlossen. Wie vorstehend erwähnt, kann die Vorabruf-Anweisung einen architekturbedingten Hinweis darstellen, und/oder die Durchführung und der Abschluss können durch die Architektur möglicherweise nicht gewährleistet werden. Der Hinweis kann dem Prozessor suggerieren, dass das Laden der angegebenen Daten wünschenswert sein kann, der Prozessor ist aber möglicherweise nicht an die Architektur gebunden, oder er muss die angegebenen Daten nicht tatsächlich laden. Vielmehr kann der Prozessor frei von Architekturvorgaben sein, oder er kann selbst entscheiden, ob er die Vorabruf-Anweisung durchführen und abschließen möchte oder nicht. Beispielsweise kann der Prozessor die Möglichkeit haben, diese Entscheidung basierend auf verschiedenen Faktoren zu treffen, wie zum Beispiel der aktuellen Arbeitsbelastung, den verfügbaren Ressourcen, eventuellen anderen beim Prozessor anstehenden Vorgängen; Zeiten und/oder Ressourcen, die eventuell statt der Bedarfsladungen benötigt werden usw. In einigen Fällen kann der Prozessor (z. B. eine seiner Speichersubsystem-Komponenten) eigenständig entscheiden oder bestimmen, dass die Vorabruf-Anweisung nicht durchgeführt und/oder abgeschlossen wird. Als Beispiel kann die Speichersteuerung 116 entsprechend der Darstellung bei 118 festlegen, die Vorabruf-Anweisung zu übergehen (z. B. Entfernen eines Vorgangs, der der Vorabruf-Anweisung entspricht, aus ihren Puffern, Durchführen der Vorabruf-Anweisung als Nulloperation NOP, usw.). Dementsprechend kann das Laden für die Vorabruf-Anweisung eine geringere Priorität aufweisen als ein Bedarfsladen, und die Durchführung und der Abschluss können durch die Architektur möglicherweise nicht gewährleistet werden.
  • Bei einigen Ausführungsformen kann die Abrufanweisung 106 Daten 117 im Systemspeicher angeben (z. B. Adressinformation bereitstellen, um potentiell mit weiterer Information kombiniert eine Speicherposition anzugeben), und sie kann eine gegebene Cache-Ebene vorgeben oder sonst wie angeben. Bei diesem spezifischen Beispiel ist die angegebene Ebene diejenige, die den L3-Cache 114 entspricht, aber bei anderen Beispielen können beliebige andere erwünschte Cache-Ebenen in der Cache-Hierarchie 115 optional angegeben werden. Die Abrufanweisung 106 kann bei Durchführung bewirken, dass der Prozessor veranlasst wird, die angegebenen Daten 117 aus dem Systemspeicher 102 zu laden und die geladenen Daten als Daten 121, die durch die Abrufanweisung 106 geladen worden sind, in einen gegebenen Cache auf der angegebenen bestimmten Cache-Ebene zu speichern (z. B. bei diesem spezifischen Beispiel in der dem L3-Cache 114 entsprechenden Ebene, bei anderen Beispielen jeder in einer beliebigen anderen gewünschten Cache-Ebenen). Die Abrufanweisung kann Daten aus dem Speicher oder aus Cache-Ebenen höherer Ebene in die angegebene Cache-Ebene bringen. Im Gegensatz zur Ladeanweisung 105, kann die Abrufanweisung 106 bei Durchführung jedoch nicht bewirken, dass der Prozessor veranlasst wird, die geladenen Daten in den Architekturregistern 109 des Ausführungskerns zu speichern. In vorteilhafter Weise kann dies es ermöglichen, dass Daten potentiell in die Cache-Hierarchie geladen werden, bevor sie tatsächlich benötigt werden, ohne die betreffenden Daten in die Architekturregister zu laden, was dazu führen könnte, den generell beschränkten Raum in den Architekturregistern zu füllen, besonders, wenn die Daten in Bezug auf den tatsächlichen Bedarf im Voraus geladen werden.
  • Im Gegensatz zur Vorabruf-Anweisung 107 und ähnlich der Ladeanweisung 105 können bei der Abrufanweisung 106 die Durchführung und der Abschluss durch die Architektur gewährleistet werden. Wie hier verwendet, bedeutet der durch die Architektur gewährleistete Abschluss einer Anweisung oder eines Vorgangs, dass der Prozessor architekturbedingt nicht flexibel ist, um selbstständig zu entscheiden, ob die Anweisung oder der Vorgang abgeschlossen werden (z. B. ist es nicht ein architekturbedingter Hinweis, dass der Prozessor frei bestimmen kann, nicht abzuschließen). Bei einigen Ausführungsformen kann architekturbedingt gewährleistet sein, dass die der Abrufanweisung 106 entsprechende Ladung durch den Prozessor als eine Ladung behandelt wird, für die der Prozessor die Nichtausführung und/oder den Nichtabschluss nicht selbstständig bestimmen oder nicht normalerweise bestimmen kann. Bei einigen Ausführungsformen kann die der Abrufanweisung 106 entsprechende Ladung durch den Prozessor behandelt werden, als weise sie eine höhere Priorität auf als eine der Vorabruf-Anweisung 107 entsprechende Ladung. Bei einigen Ausführungsformen kann die der Abrufanweisung 106 entsprechende Ladung durch den Prozessor behandelt werden, als weise sie die gleiche oder eine im Wesentlichen ähnliche Priorität wie eine der Ladeanweisung 105 entsprechende Ladung. Bei einigen Ausführungsformen kann die der Abrufanweisung 106 entsprechende Ladung durch den Prozessor als eine sogenannte Bedarfsladung behandelt werden, die eine sehr hohe Priorität oder eine höchste Priorität gleich oder ähnlich der Priorität einer der Ladeanweisung 105 entsprechenden Ladung aufweist. Zu bestimmten Zeitpunkten können dann ein Systemabsturz, ein System-Neustart, ein Bluescreen-Ereignis, ein nicht abgesicherter Stromausfall, ein Einrichtungsausfall oder sonstige derartige extreme Bedingungen potenziell bewirken, dass eine Abrufanweisung nicht unterbrochen und nicht abgeschlossen wird. Zudem wird die Abrufanweisung zu bestimmten Zeitpunkten versuchen, etwas vorzunehmen, das nicht zulässig oder erlaubt ist oder dass sie nicht ausführen kann, und dies kann ebenfalls potenziell bewirken, dass die Abrufanweisung unterbrochen und nicht abgeschlossen wird. Dies kann beispielsweise auftreten, falls die Abrufanweisung versucht, auf eine Speicherregion zuzugreifen, auf die sie nicht zugreifen darf, falls dies eine Verletzung des Adressbereichs bewirkt, falls es einen Segmentfehler bewirkt, falls es eine Privilegverletzung bewirkt oder dergleichen. Der Begriff „durch die Architektur gewährleisteter Abschluss“ schließt derartige Möglichkeiten nicht aus, sondern bedeutet dagegen viel mehr, dass der Prozessor architekturbedingt nicht frei selbstständig bestimmen kann, ob die Anweisung und/oder der Vorgang ausgeführt und/oder abgeschlossen werden oder nicht.
  • Da der Abschluss der Vorabruf-Anweisung durch die Architektur nicht gewährleistet ist, haben der Programmierer und/oder die Software keine vollständige oder garantierte Kontrolle darüber, dass Daten tatsächlich geladen werden. Mit der Vorabruf-Anweisung kann der Prozessor entscheiden, den Hinweis zu ignorieren, und falls dies geschieht, werden die Daten möglicherweise nicht tatsächlich in die Cache-Hierarchie geladen. Dies setzt die Absichten des Programmierers und/oder der Software möglicherweise nicht um. Zudem kann dies zu Cache-Fehlern zu Zeitpunkten führen, wenn die Anweisungen und/oder Daten und die benötigten dazugehörigen Zugriffe für den Erhalt der Daten aus dem Systemspeicher mit relativ langer und potenziell variabler Dauer tatsächlich benötigt werden. Dies kann zu Verschlechterung der Performanz führen.
  • Zusätzlich neigt dies möglicherweise dazu, für bestimmte Daten von Echtzeit- und/oder zeitkritischen Anwendungen besonders problematisch zu sein, die Vorgänge in Echtzeit und/oder innerhalb kritischer Zeiträume durchführen müssen. Beispielsweise sind derartige Echtzeit- und/oder zeitkritische Anwendungen häufig auf den Gebieten der Kommunikation, Signalverarbeitung, eingebetteten Steueranwendungen und dergleichen anzutreffen. Der Umstand, dass es nicht möglich ist, zu gewährleisten, dass die Vorabruf-Anweisung Daten tatsächlich in die Cache-Hierarchie lädt, kann es schwierig machen, zu wissen oder zu gewährleisten, dass eine Aufgabe in einem bestimmten Zeitraum abgeschlossen werden kann (weil z. B. das eventuelle Vorliegen eines Cache-Fehlers eine unbekannte Variable ist). Beispielsweise kann es schwierig werden, zu wissen oder zu gewährleisten, dass eine Aufgabe innerhalb einer maximalen Ausführungszeit (WCET) abgeschlossen werden kann. WCET ist ein Beispiel einer häufig verwendeten Metrik zum Bewerten einer Systemfähigkeit zum Einhalten einer Echtzeit-Anwendungsanforderung. Ohne die Möglichkeit, zu gewährleisten, dass eine Vorabruf-Anweisung tatsächlich abgeschlossen ist und tatsächlich Daten in die Cache-Hierarchie lädt, kann es in einigen Fällen zum Schätzen der WCET erforderlich sein, anzunehmen, dass die Daten nicht in die Cache-Hierarchie geladen werden, wodurch die tatsächliche Abschlusszeit verlängert wird.
  • Die Durchführung und der Abschluss der Abrufanweisung 106 sind jedoch durch die Architektur gewährleistet. Dementsprechend kann sicher angenommen werden (z. B. zum Zweck der WCET-Berechnung), dass die Daten durch die Abrufanweisung in den Cache geladen worden sind und dass kein Cache-Fehler auftreten wird. Ferner können bei vielen Echtzeitanwendungen wie mit speicherprogrammierbaren Steuerungen (SPS) der künftige Codepfad und Daten, auf die zugegriffen werden soll, im Voraus bestimmbar sein, wodurch es möglich werden kann, Abrufanweisungen zur Verwendung zum Füllen der Caches einzusetzen, bevor die Anweisungen und Daten benötigt werden. Es kann gewährleistet werden, dass die Ladevorgänge durchgeführt werden und vorhersehbar und deterministisch sind, sodass WCET-Berechnungen annehmen können, dass die Daten tatsächlich in die Caches geladen werden. Zudem kann die Abrufanweisung eine gegebene Cache-Ebene angeben, sodass bei einigen Ausführungsformen sogar angenommen werden kann, dass die Daten in die angegebene bestimmte Cache-Ebene geladen worden sind.
  • 2 ist ein Blockdiagramm einer Ausführungsform eines Prozessors 201, der dazu betreibbar ist, eine Ausführungsform einer Abrufanweisung 206 durchzuführen. Bei einigen Ausführungsformen kann der Prozessor ein universeller Prozessor sein (z. B. ein universeller Mikroprozessor oder eine zentrale Verarbeitungseinheit (CPU) des Typs sein, der in Desktop-, Laptop- oder anderen Computern verwendet wird). Alternativ kann der Prozessor ein spezieller Prozessor sein. Beispiele von geeigneten speziellen Prozessoren umfassen, sind aber nicht beschränkt auf, Netzwerkprozessoren, Kommunikationsprozessoren, kryptografische Prozessoren, Grafikprozessoren, Koprozessoren, eingebettete Prozessoren, Digitalsignalprozessoren (DSPs) und Steuerungen (z. B. Mikrosteuerungen). Der Prozessor kann beliebige von verschiedenen Rechenarchitekturen mit komplexem Befehlssatz (CISC), Rechenarchitekturen mit reduziertem Befehlssatz (RISC), Architekturen mit sehr langen Anweisungswörtern (VLIW), hybriden Architekturen, andere Typen von Architekturen aufweisen, oder er kann eine Kombination aus unterschiedlichen Architekturen aufweisen (z. B. können unterschiedliche Kerne unterschiedliche Architekturen aufweisen). Bei verschiedenen Ausführungsformen kann der Prozessor mindestens ein Teil einer integrierten Schaltung darstellen, er kann auf einem Die oder Halbleitersubstrat aufgenommen sein, er kann Halbleitermaterial aufweisen, er kann Transistoren aufweisen usw.
  • Während des Betriebs kann der Prozessor 201 die Abrufanweisung 206 empfangen. Beispielsweise kann die Anweisung aus dem Speicher an einem Bus oder einer anderen Zwischenverbindung empfangen werden. Die Anweisung kann eine Makroanweisung, eine Maschinencodeanweisung, eine Assembler-Sprachanweisung oder eine andere Anweisung oder ein Steuersignal einer Anweisungsmenge des Prozessors darstellen.
  • Bei einigen Ausführungsformen kann die Abrufanweisung Adressinformation für eine Speicherposition 232, die zu ladende Daten 217 aufweist, explizit vorgeben (z. B. durch eines oder mehrere Felder oder eine Menge von Bits) oder sonst wie angeben (z. B. implizit angeben). Der Begriff „Daten“ wird hier weitläufig verwendet, um entweder Daten (d. h. nicht Anweisungen) und/oder Anweisungen zu bezeichnen. Verschiedene unterschiedliche Typen von Adressinformation sind möglich. Die Adressinformation kann entweder absolute Speicheradressinformation oder relative Speicheradressinformation wiedergeben, die eine Speicherposition relativ zu einer Basisspeicheradresse oder anderen Speicherposition angeben kann. Zusätzlich können optional verschiedene unterschiedliche indirekte Speicheradressiermodi verwendet werden. Als spezifisches Beispiel kann die Abrufanweisungen implizit ein Register angeben (z. B. ein universelles Register), dass zum Speichern von relativer SpeicherAdressinformation verwendet wird, die mit zusätzlicher, in einem anderen impliziten Register (z. B. einem Code-, Daten- oder erweiterten Segmentregister) gespeicherter Speicheradressinformation kombiniert werden kann, um die finale Speicheradresse zu erzeugen, die zum Identifizieren der Speicherposition 232 verwendet wird, die das erste Byte oder ein anderes Datenelement der zu ladenden Daten 217 aufweist. Die implizit oder stillschweigend angegebenen Register können durch den Prozessor erkannt werden, obwohl sie nicht durch einen expliziten Wert ausgedrückt sind. Beispielsweise kann der Prozessor dies interpretieren oder erkennen nach dem Identifizieren eines Operationscodes der Anweisung, der in Bezug auf die Verwendung der Register inhärent oder implizit ist. Dies ist nur ein Beispiel. Andere Formen der Adressinformation sind ebenfalls möglich. Statt der Bereitstellung der Adressinformation in einem oder mehreren Registern können potenziell auch einige der oder alle Adressinformationen durch Bits der Anweisung (z. B. eine Immediate-Anweisung) bereitgestellt werden.
  • Bei einigen Ausführungsformen kann die Abrufanweisung explizit (z. B. durch eines oder mehrere Felder oder eine Menge von Bits) eine Cache-Ebene einer Vielzahl von unterschiedlichen Cache-Ebenen einer Cache-Hierarchie vorgeben oder sonst wie angeben (z. B. implizit angeben). Bei einigen Ausführungsformen kann die Abrufanweisungen ein Eingabefeld einer Cache-Ebene oder eine Menge von Bits aufweisen, um einen Wert zur Angabe einer gegebenen Cache-Ebene bereitzustellen. Die Angabe einer gegebenen Cache-Ebene kann die Angabe eines gegebenen Caches auf einer gegebenen Cache-Ebene und/oder die Angabe einer gegebenen Cache-Ebene aufweisen. Der hier verwendete Begriff „Feld“ impliziert nicht zusammenhängende Bits, sondern er umfasst vielmehr getrennte Bits, die logisch in einem Feld zusammengruppiert sind. Verschiedene unterschiedliche mögliche Konventionen können verwendet werden, um willkürliche Werte des Angabefeldes der Cache-Ebene oder der Menge von Bits auf die unterschiedlichen Cache-Ebenen abzubilden. Beispielsweise kann ein erster Wert eine erste Cache-Ebene angeben, ein zweiter unterschiedlicher Wert kann eine zweite unterschiedliche Cache-Ebene angeben, ein dritter, wiederum unterschiedlicher Wert kann eine dritte, wiederum unterschiedliche Cache-Ebene angeben und so weiter. Bei anderen Ausführungsformen kann eine Cache-Ebene in Bezug auf die Abrufanweisung implizit sein (z. B. ein Operationscode der Abrufanweisung). Beispielsweise können mehrere unterschiedliche Abrufanweisungen (z. B. mehrere unterschiedliche Operationscodes von Abrufanweisungen) bereitgestellt sein, und jede davon kann für eine unterschiedliche dazugehörige Cache-Ebene vorgesehen sein. Beispielsweise kann ein erster Operationscode einer Abrufanweisung zum Abrufen angegebener Daten von einer ersten impliziten Cache-Ebene vorgesehen sein, ein zweiter unterschiedlicher Operationscode einer Abrufanweisung kann zum Abrufen angegebener Daten von einer zweiten, unterschiedlichen impliziten Cache-Ebene vorgesehen sein und so weiter. Bei einigen Ausführungsformen kann die Abrufanweisung die Cache-Ebene angeben als einen beliebigen Cache aus einem Daten-Cache der Ebene eins (L1), einem L1-Anweisungs-Cache und einem Cache der Ebene zwei (L2), einem optionalen Cache der Ebene drei (L 3) und einem optionalen Cache der Ebene vier (4). Alternativ dazu können optional weniger oder mehr Cache-Ebenen verwendet werden.
  • Wiederum mit Bezug auf 2 weist der Prozessor eine Decodiereinheit oder einen Decoder 230 auf. Die Decodiereinheit kann die Abrufanweisung empfangen und decodieren. Die Decodiereinheit kann eine oder mehrere Anweisungen auf relativ niedrigerer Ebene oder Steuersignale ausgeben (z. B. eine oder mehrere Mikroanweisungen, Mikrooperationen, Mikrocode-Einstiegspunkte, decodierte Anweisungen oder Steuersignale usw.), die die Abrufanweisungen relativ höherer Ebene widerspiegeln, darstellen und/oder davon abgeleitet sind. Bei einigen Ausführungsformen kann die Decodiereinheit eine oder mehrere Eingangsstrukturen aufweisen (z. B. Anschluss/Anschlüsse, Verbindung(en), eine Schnittstelle), um die Abrufanweisung und eine damit gekoppelte Anweisungserkennungs- und -decodierlogik zu empfangen, um die Abrufanweisung und eine oder mehrere damit gekoppelte Ausgangsstrukturen (z. B. Anschluss/Anschlüsse, Verbindung(en), eine Schnittstelle) zu erkennen und zu decodieren, um die Anweisungen niedrigerer Ebene oder die Steuersignale auszugeben. Die Decodiereinheit kann mithilfe von verschiedenen unterschiedlichen Mechanismen umgesetzt werden, einschließlich, unter anderem, Mikrocode-Nur-Lese-Speicher (ROMs), Nachschlagetabellen, Hardwareumsetzungen, programmierbare Logikarrays (PLAs) und andere zum Umsetzen von Decodiereinheiten geeignete Mechanismen.
  • Bei einigen Ausführungsformen kann statt der direkten Bereitstellung der Abrufanweisung zur Decodiereinheit optional ein Anweisungsemulator, Translator, Morpher, Interpreter oder ein anderes Befehlsumwandlungsmodul verwendet werden. Verschiedene Typen von Befehlsumwandlungsmodulen können in Software, Hardware, Firmware oder einer Kombination daraus umgesetzt sein. In einigen Ausführungsformen kann sich das Befehlsumwandlungsmodul außerhalb des Prozessors befinden, wie beispielsweise auf einem separaten Die und/oder in einem Speicher (z. B. als ein statisches, dynamisches oder Laufzeit-Emulationsmodul). Als Beispiel kann das Befehlsumwandlungsmodul die Abrufanweisung empfangen, die aus einer ersten Anweisungsmenge kommen kann, und es kann die Abrufanweisung emulieren, übersetzen, morphen, interpretieren oder die Abrufanweisung anderweitig in einen oder mehrere zugehörige Zwischenbefehle oder Steuersignale umwandeln, die aus einer zweiten, unterschiedlichen Anweisungsmenge kommen können. Der eine oder die mehreren Zwischenbefehle und Steuersignale der zweiten Anweisungsmenge können zu einer Decodiereinheit (z. B. Decodiereinheit 230) bereitgestellt werden, die sie in eine oder mehrere Anweisungen auf niedrigerer Ebene oder Steuersignale decodieren kann, ausführbar durch die native Hardware des Prozessors (z. B. eine Cache-Steuerung und eine oder mehrere Ausführungseinheiten).
  • Wiederum mit Bezug auf 2 ist eine Cache-Steuerung 231 mit der Decodiereinheit 230 gekoppelt. Die Cache-Steuerung ist auch mit einem Cache 214 gekoppelt, der auf der durch die Abrufanweisung angegebenen Cache-Ebene ist. Der Cache 214 ist einer von mindestens zwei unterschiedlichen Caches auf zwei oder mehr unterschiedlichen Cache-Ebenen einer Cache-Hierarchie 215. Bei verschiedenen Ausführungsformen kann die Cache-Hierarchie mindestens einen L1-Cache aufweisen (z. B. einen L1-Anweisungs-Cache und einen L1-Daten-Cache oder einen einheitlichen L1-Cache), mindestens einen L2-Cache, optional mindestens einen L3-Cache und optional mindestens einen L4-Cache. Die Cache-Steuerung kann eine Ausführungseinheit darstellen, die die Vorgänge der Abrufanweisung durchführt oder implementiert. Die Cache-Steuerung kann die/das eine oder die mehreren decodierten oder sonst wie umgewandelten Anweisungen oder Steuersignale empfangen, die die Abrufanweisungen darstellen und/oder daraus abgeleitet sind. Die Cache-Steuerung kann auch die Adressinformation für eine Speicherposition und die Angabe der Cache-Ebene empfangen. Die Steuerung kann als Reaktion auf die oder infolge der Abrufanweisung (z. B. als Reaktion auf ein oder mehrere aus der Anweisung decodierte Anweisungen oder Steuersignale und/oder als Reaktion auf das Decodieren der Anweisung und/oder als Reaktion auf die Bereitstellung der Anweisung zu einem Decoder) das Laden von mit der Speicherposition 232 assoziierten Daten 217 (z. B. Anweisungen oder Nicht-Anweisungs-Daten) und das Speichern dieser Daten in den Cache 214 auf der angegebenen Cache-Ebene bewirken. Bei einigen Ausführungsformen kann die Abrufanweisung entsprechend der im Folgenden wiedergegebenen Erläuterung auch einen zu ladenden Datenumfang vorgeben oder sonst wie angeben, und der angegebene Datenumfang kann geladen werden. In vorteilhafter Weise kann es die Abrufanweisung Software und/oder einen Programmierer ermöglichen, Anweisungen und/oder Nicht-Anweisungs-Daten in eine erwünschte Cache-Ebene zu laden, sodass sie näher an der Ausführungs-Pipeline sind, wenn sie später benötigt werden. Dies kann hilfreich sein, um Cache-Fehler und die sich ergebende hohe Latenz des Erfordernisses, auf die Daten aus dem Speicher zu dem Zeitpunkt zuzugreifen, zu dem die Daten tatsächlich benötigt werden, zu vermeiden.
  • In einigen Fällen können die mit der Speicherposition assoziierten Daten 217 möglicherweise noch nicht in den Caches gespeichert sein, und sie können aus der Speicherposition geladen werden. Bei einigen Ausführungsformen kann die Speicheradresse geprüft werden, um sicherzustellen, dass sie ausgerichtet ist und dass Zugriffe in vollständigen Cache-Leitungsabschnitten erfolgen und keine Seitengrenzen überschreiten. In anderes Fällen können die mit der Speicherposition assoziierten Daten 217 möglicherweise bereits in der Cache-Hierarchie vorliegen (z. B. zuvor geladen worden sein). In derartigen Fällen, falls die Daten in einem Cache höherer Ebene sind als den Cache auf der angegebenen Cache-Ebene, können sie in den Cache niedrigerer Ebene auf der angegebenen Cache-Ebene gebracht werden, oder, falls die Daten bereits auf der angegebenen Cache-Ebene vorliegen, können die Cache-Leitungen „manipuliert“ werden, um das Alter oder die zuletzt verwendeten Metadaten für die Cache-Leitungen zum Verzögern des Entleerens zurückzusetzen, oder, falls die Daten in einem Cache niedrigerer Ebene sind als der Cache auf der angegebenen Cache-Ebene, kann es entweder zulässig sein, im Cache niedrigerer Ebene zu bleiben, oder sie in den Cache auf der angegebenen Cache-Ebene zu bewegen. Die Cache-Steuerung oder der Prozessor können zunächst die L1-Caches prüfen und anschließend die L2-Caches prüfen und so weiter in der Hierarchie zum Systemspeicher.
  • Bei einigen Ausführungsformen kann entsprechend der Darstellung bei 234 architekturbedingt gewährleistet sein, dass die Abrufanweisung 206 durch den Prozessor durchgeführt und abgeschlossen wird (z. B. ist der Prozessor nicht architekturbedingt flexibel, um selbstständig zu entscheiden, ob die Abrufanweisung durchgeführt und/oder abgeschlossen wird oder nicht). In vorteilhafter Weise kann dies hilfreich sein, um die Ladungen zu gewährleisten oder deterministisch zu machen. Bei einigen Ausführungsformen kann der Ladungsvorgang als Bedarfsladung 233 durchgeführt werden. Bei einigen Ausführungsformen können die Bedarfsladung oder ein anderer zum Implementieren der Abrufanweisung verwendeter Ladungsvorgang eine höhere Priorität aufweisen als ein entsprechender Ladungsvorgang für eine Vorabruf-Anweisung (die z. B. ebenfalls durch die Decodiereinheit decodiert und durch den Prozessor durchgeführt werden kann), die als Architekturhinweis behandelt werden kann. Bei einigen Ausführungsformen können die Bedarfsladung oder ein anderer zum Implementieren der Abrufanweisung verwendeter Ladungsvorgang die gleiche oder eine im Wesentlichen ähnliche Priorität aufweisen wie ein entsprechender Ladungsvorgang für eine Ladungsanweisung (die z. B. ebenfalls durch die Decodiereinheit decodiert und durch den Prozessor durchgeführt werden kann), die zum Laden von Daten in Architekturregister des Prozessors verwendet wird.
  • Bei einigen Ausführungsformen, wie allgemein durch die durchgestrichenen Daten 210 gezeigt, kann der Prozessor die Performanz der Abrufanweisung abschließen, ohne die mit der Speicherposition assoziierten geladenen Daten in beliebigen Architekturregistern 209 des Prozessors zu speichern. Bei einigen Ausführungsformen wird die Abrufanweisung bei der Ausführung möglicherweise die Daten nicht in die Architekturregister laden, obwohl der Ladevorgang als Bedarfsladung 233 durchgeführt werden kann, die die gleiche oder eine ähnliche Priorität aufweisen kann wie eine Ladung, die zum Laden von Daten zur unmittelbaren Verarbeitung in Architekturregister des Prozessors verwendet wird (z. B. universelle Register, Register mit gepackten Daten usw.). Derartige Architekturregister stellen im Allgemeinen wertvollen und knappen Speicherraum dar, und sie sollten generell nicht in Anspruch genommen werden, bis sie tatsächlich benötigt werden. Bei einigen Ausführungsformen kann die Abrufanweisungen verwendet werden, um die Daten in die Caches bringen, bevor die Daten tatsächlich abgearbeitet werden müssen, um einen Teil der generell langen Latenz beim Zugriff auf die Daten aus dem Speicher zu umgehen. Nachdem die Daten in Crashs gebracht worden sind, kann anschließend ein Ladungsvorgang mit relativ geringer Latenz durchgeführt werden, um die Daten genau dann in die Architekturregister zu bringen, wenn die Daten tatsächlich abgearbeitet werden müssen.
  • Bei einigen Ausführungsformen kann die Abrufanweisung optional zurückgezogen oder sonst wie eingesetzt werden (z. B. durch eine Commit-Einheit, jetzt gezeigt), bevor die Daten tatsächlich im Cache auf der angegebenen Ebene gespeichert werden, obwohl dies nicht erforderlich ist. Die Abrufanweisung kann die durchzuführende Ladung einrichten oder festlegen und anschließend zurückziehen oder einsetzen, während der Ladungsvorgang bis zum Abschluss fortschreitet. Zumindest konzeptionell kann die Abrufanweisungen bei der Ausführung einen Speicherdirektzugriffs-(DMA)-Vorgang oder eine DMA-Engine einrichten oder auslegen (z. B. an der beteiligten Cache-Steuerung), um Daten in den Cache auf der angegebenen Cache-Ebene zu laden.
  • Die Cache-Steuerung und/oder der Prozessor können spezifische oder besondere Logik aufweisen (z. B. Transistoren, integrierte Schaltung oder andere potentiellen mit Firmware kombinierte Hardware (z. B. In nichtflüchtigem Speicher gespeicherte Anweisungen) und/oder Software), die bewirkt, dass die Abrufanweisung durchgeführt wird und/oder dass sie als Reaktion auf die und/oder infolge der Abrufanweisung (z. B. als Reaktion auf ein oder mehrere von der Abrufanweisung decodierte Anweisungen oder Steuersignale) die Daten auf der angegebenen Cache-Ebene speichert. Bei einigen Ausführungsformen kann die Cache-Steuerung eine oder mehrere Eingabestrukturen aufweisen (z. B. Anschlüsse, Verbindungen, eine Schnittstelle), um die damit gekoppelt Daten, Schaltungen oder Logik zum Verarbeiten der Daten zu empfangen, und eine oder mehrere damit gekoppelte Ausgabestrukturen zum Ausgeben der Daten zum Cache (z. B. Anschlüsse, Verbindungen, eine Schnittstelle).
  • Um ein Verschleiern der Beschreibung zu verhindern, wurde ein relativ einfacher Prozessor 201 gezeigt und beschrieben. Allerdings kann der Prozessor optional andere Prozessorkomponenten umfassen. Beispielsweise können verschiedene unterschiedliche Ausführungsformen verschiedene unterschiedliche Kombinationen und Konfigurationen der für beliebige der Figuren xx-xx gezeigten und beschriebenen Komponenten aufweisen. Alle Komponenten des Prozessors können miteinander gekoppelt werden, um ihnen die beabsichtigte Arbeitsweise zu ermöglichen.
  • 3 ist ein Blockdiagramm einer Ausführungsform eines Verfahrens 330 zum Durchführen einer Ausführungsform einer Abrufanweisung. In verschiedenen Ausführungsformen kann das Verfahren durch einen Prozessor, eine Befehlsverarbeitungseinrichtung, eine digitale Logikvorrichtung oder eine integrierte Schaltung durchgeführt werden. Bei einigen Ausführungsformen kann das Verfahren der 3 durch den Prozessor und/oder innerhalb des Prozessors von 2 durchgeführt werden. Die hier für den Prozessor aus 2 beschriebenen Komponenten, Merkmale und spezifischen optionalen Details gelten optional auch für das Verfahren aus 3. Alternativ dazu kann das Verfahren aus 3 durch und/oder in ähnliche(n) unterschiedliche(n) Prozessoren oder Vorrichtungen durchgeführt werden. Darüber hinaus kann der Prozessor aus 2 Verfahren durchführen, die gleich, ähnlich oder verschieden von denen aus 3 sind. Bei einigen Ausführungsformen kann das Verfahren optional im Rahmen und/oder während der Durchführung einer Echtzeit-Anwendung mit dem Prozessor durchgeführt werden, der optional eine universelle zentrale Recheneinheit (CPU) oder ein sonstiger universeller Prozessor sein kann, obwohl der Umfang der Erfindung nicht diesbezüglich eingeschränkt ist.
  • Das Verfahren weist das Empfangen der Abrufanweisung beim Prozessor bei Block 331 auf. In verschiedenen Aspekten kann der Befehl an einem Prozessor oder einem Teil davon (z. B. einer Befehlsabrufeinheit, einer Decodiereinheit, einer Busschnittstelleneinheit usw.) empfangen werden. In verschiedenen Aspekten kann der Befehl von einer Quelle außerhalb des Prozessors und/oder außerhalb des Dies (z. B. vom Speicher, einer Verbindungsschaltung usw.) oder von einer Quelle auf dem Prozessor und/oder auf dem Die (z. B. von einem Befehlscache, einer Befehlswarteschlange usw.) empfangen werden. Die Abrufanweisung kann Adressinformation für eine Speicherposition vorgeben oder sonst wie angeben. Die zuvor erwähnten Formen von Adressinformation sind geeignet. Die Abrufanweisungen kann auch eine Cache-Ebene als beliebige aus einer Mehrzahl von unterschiedlichen Cache-Ebenen vorgeben oder sonst wie angeben. Bei einigen Ausführungsformen kann die Abrufanweisung die Möglichkeit aufweisen, alternativ entweder einen L1-Anweisungs-Cache oder einen L1-Daten-Cache sowie andere Cache-Ebenen anzugeben. Bei einigen Ausführungsformen kann die Abrufanweisung optional auch einen Umfang der zu ladenden Daten vorgeben oder sonst wie angeben.
  • Das Verfahren umfasst als Reaktion auf die und/oder infolge der Abrufanweisung auch das Speichern von mit der Speicherposition assoziierten Daten in einem Cache des Prozessors, der auf der angegebenen Cache-Ebene ist, bei Block 332. Bei einigen Ausführungsformen kann der Prozessor die Performanz der Abrufanweisungen abschließen, ohne die mit der Speicherposition assoziierten Daten in Architekturregistern des Prozessors zu speichern. Bei einigen Ausführungsformen kann der Abschluss der Durchführung der Abrufanweisung mittels des Prozessors durch die Architektur gewährleistet werden. Bei einigen Ausführungsformen kann die Abrufanweisung durch eine Bedarfsladung durchgeführt werden, die eine gleiche oder die im Wesentlichen gleiche Priorität aufweist wie Bedarfsladungen, die zum Laden von Daten in die Architekturregister des Prozessors zur unmittelbaren Abarbeitung verwendet werden und die eine höhere Priorität aufweisen können als ein Ladevorgang, der zum Durchführen einer Vorabruf-Anweisung verwendet wird, die ein Architekturhinweis ist und deren Abschluss durch die Architektur nicht gewährleistet wird.
  • Das dargestellte Verfahren bezieht Architekturoperationen ein (die z. B. aus einer Softwareperspektive sichtbar sind). Bei anderen Ausführungsformen kann das Verfahren optional eine oder mehrere Mikroarchitektur-Operationen aufweisen. Beispielsweise kann die Anweisung abgerufen, decodiert, mit veränderter Reihenfolge geplant werden; auf Quelloperanden kann zugegriffen werden; eine Ausführungseinheit kann Mikroarchitektur-Operationen durchführen, um die Anweisung zu implementieren usw. Bei einigen Ausführungsformen können die Mikroarchitektur-Operationen zum Implementieren der Anweisung optional das Verwenden der angegebenen Adressinformation aufweisen, um eine vollständige Speicheradresse zu erzeugen, die zum Zugriff auf die Daten aus dem Systemspeicher verwendet werden kann. Bei einigen Ausführungsformen können die Mikroarchitektur-Operationen zum Implementieren der Anweisungen optional auch eine Prüfung aufweisen, um sicherzustellen, dass die Speicheradresse ausgerichtet ist, und um sicherzustellen, dass Zugriffe in vollständigen Cache-Leitungsabschnitten erfolgen und keine Seitengrenzen überschreiten (um z. B. das Vermeiden der Erzeugung von Seitenfehlern zu unterstützen). Die Mikroarchitektur-Operationen zum Implementieren der Anweisungen können optional auch das Laden der Daten aus dem Systemspeicher aufweisen (z. B. Übertragen der Daten über einen Bus oder eine andere Verbindung usw.).
  • 4 ist ein Blockdiagramm einer ersten beispielhaften Ausführungsform einer Abrufanweisung 406. Die Abrufanweisung ist auf einem maschinenlesbaren Medium 440 gespeichert oder sonst wie bereitgestellt. Das Medium kann einen Mechanismus umfassen, der Information in einer Form bereitstellt (beispielsweise speichert), die durch ein Rechnersystem oder eine andere Maschine lesbar ist. Das maschinenlesbare Medium kann die Abrufanweisung bereitstellen (oder darauf gespeichert haben), und die Abrufanweisung kann, falls und/oder wenn sie durch das Rechnersystem oder die andere Maschine ausgeführt wird, bewirken und/oder dazu führen, dass die Maschine veranlasst wird, eine oder mehrere hier offenbarte Operationen, Verfahren oder Techniken durchzuführen.
  • Die Abrufanweisung weist einen Operationscode oder Opcode 441 auf. Der Operationscode kann eine Mehrzahl von Bits oder ein oder mehrere Felder wiedergeben, die bewirken, dass die Anweisung und/oder die durchzuführende Operation (z. B. eine Abrufanweisung) identifiziert wird. Die Anweisung umfasst auch ein optionales Angabefeld 442 der Adressinformation, um Adressinformationen anzugeben. Beispielsweise kann das optionale Eingabefeld der Adressinformation Bits aufweisen, um eine Adresse eines Registers, eine Speicherposition oder eine andere Ortsposition vorzugeben, an der die Adressinformation gespeichert werden soll. Alternativ dazu kann das optionale Angabefeld der Adressinformation (z. B. eine Immediate-Anweisung) die Adressinformation direkt statt indirekt über ein Register oder eine andere Speicherposition bereitstellen. Als noch weiteres Beispiel kann das Angabefeld der Adressinformation optional ausgelassen werden, und dieses nicht vorhandene Feld kann stattdessen in Bezug auf die Abrufanweisung (z. B. den Operationscode 441), dass die Adressinformation in einem gegebenen Register oder einer anderen Speicherposition gespeichert ist, implizit oder inhärent sein. Beispielsweise kann der Prozessor dies interpretieren oder erkennen nach dem Identifizieren eines inhärenten oder impliziten, wenngleich nicht ausgedrückten Operationscodes, um die Adressinformation aus einem bestimmten festen Register auszulesen.
  • Die Anweisung weist ebenfalls ein Angabe Feld 443 der Cache-Ebene auf. Das Eingabefeld der Cache-Ebene kann einen Wert bereitstellen, um eine Cache-Ebene, in der geladene Daten gespeichert werden sollen, vorzugeben oder sonst wie anzugeben. Die individuelle Abbildung der Werte und der dazugehörigen Cache-Ebenen ist willkürlich, und viele unterschiedliche Konventionen können optional übernommen werden. Das Eingabefeld der Cache-Ebene kann in Abhängigkeit von der Anzahl von Cache-Ebenen, deren Angabe gewünscht wird, und anderen möglichen vorzugebenden oder anzugebenden Optionen zwei Bits, drei Bits, vier Bits oder optional mehr Bits aufweisen. Alternativ kann das Angabefeld der Cache-Ebene, statt den Wert direkt bereitzustellen, ein Register oder eine andere Speicherposition angeben, die zum Speichern des Werts verwendet werden kann, um die Cache-Ebene anzugeben.
  • Unbestimmte Konzepte weiter darzustellen, veranschaulicht eine Tabelle 444 ein geeignetes Beispiel einer Abbildung unterschiedlicher 2-Bit-Angabefeldwerte für Cache-Ebenen, obwohl dies nur ein mögliches Beispiel ist und der Umfang der Erfindung durch dieses spezifische Beispiel nicht eingeschränkt wird. Entsprechend diesem spezifischen Beispiel gibt ein 2-Bit-Wert von ‚00‘ einen L1-Anweisungs-Cache an, ein Wert von ‚01‘ gibt einen L1-Daten-Cache an, ein Wert von ‚10‘ gibt einen L2-Cache an, und ein Wert von ‚11‘ gibt einen L3-Cache an. Es versteht sich, dass dies nur ein veranschaulichendes Beispiel ist.
  • 5 ist eine Tabelle 550 mit der Darstellung eines geeigneten Beispiels einer Abbildung unterschiedlicher 3-Bit-Cache-Ebenen-Angabefeldwerte auf unterschiedliche angegebene Cache-Ebenen. Dies ist nur ein spezifisches Beispiel, und der Umfang der Erfindung ist durch dieses spezifische Beispiel nicht eingeschränkt. Entsprechend diesem spezifischen Beispiel gibt ein 3-Bit-Wert von ‚000‘ einen L1-Anweisungs-Cache an, ein Wert von ‚001‘ gibt einen L1-Daten-Cache an, ein Wert von ‚010‘ gibt einen L2-Cache an, und ein Wert von ‚100‘ gibt einen L3-Cache an. Weiter gibt einen Wert von '011 einen L4-Cache an, ein Wert von '101 gibt einen L1-Daten-Cache mit zu einem L2-Cache zugelassenen Überlauf an, ein Wert von '110 gibt einen in einen L2-Cache zugelassenen L2-Anweisungs-Cache-Überlauf an, und ein Wert von '111 gibt einen L2-Cache mit zu einem L3-Cache zugelassenen Überlauf an. Es versteht sich, dass dies nur ein veranschaulichendes Beispiel ist. Bei diesem Beispiel sind mehr unterschiedliche mögliche Kombinationen von 3-Bit-Werten als unterschiedliche Cache-Ebenen verfügbar, und daher werden einige der verfügbaren Kombinationen von 3-Bit-Werten verwendet, um zusätzliche Information anzugeben (in diesem Fall z. B., dass Überlauf zu einer höheren Cache-Ebene zugelassen ist).
  • 6 ist ein Blockdiagramm einer zweiten beispielhaften Ausführungsform einer Abrufanweisung 606. Die Abrufanweisung ist auf einem maschinenlesbaren Medium 640 gespeichert oder sonst wie bereitgestellt. Die Abrufanweisungen weist einen Operationscode 641, ein optionales Angabefeld 642 der Adressinformation und ein Eingabefeld 643 der Cache-Ebene auf. Sofern nicht anders angegeben, können diese optional einige oder alle der Eigenschaften der diesbezüglich genannten Operationscodes und Felder der Abrufanweisungen von 4 aufweisen. Um eine Verschleierung der Beschreibung zu vermeiden, werden die unterschiedlichen und/oder zusätzlichen Merkmale primär beschrieben, ohne die gemeinsamen Merkmale zu wiederholen.
  • Die Abrufanweisungen weist auch ein optionales Angabefeld 655 des Datenumfangs auf. Das Angabefeld des Datenumfangs kann einen Wert bereitstellen, um einen Umfang von zu ladenden und in einen Cache auf der angegebenen Cache-Ebene zu speichernden Daten vorzugeben oder sonst wie anzugeben. Die individuelle Abbildung der Werte und der dazugehörigen Datenumfänge ist willkürlich, und viele unterschiedliche Konventionen können optional übernommen werden. Das Angabefeld des Datenumfangs kann in Abhängigkeit von der Anzahl von unterschiedlichen Datenumfängen, deren Angabe gewünscht wird, und/oder anderen möglichen vorzugebenden oder anzugebenden Optionen zwei Bits, drei Bits, vier Bits, fünf Bits, sechs Bits oder optional mehr Bits aufweisen. Bei einigen Ausführungsformen können mindestens vier unterschiedliche Datenumfänge angegeben werden. Bei einigen Ausführungsformen kann der Datenumfang von der Datenmenge einer einzelnen Cache-Zeile (z. B. 512 Bits) bis zu einer Maximalzahl von Cache-Zeilen erreichen, die auf eine einzelne Seite passen (z. B. können vierundsechzig Cache-Zeilen können auf eine 4-KByte-Seite passen), oder optional bei einigen Ausführungsformen bis zu mehreren Speicherseiten.
  • Um bestimmte Konzepte weiter zu veranschaulichen, stellt eine Tab. 656 ein geeignetes Beispiel einer Abbildung von unterschiedlichen 3-Bit-Angabefeldwerten des Datenumfangs auf unterschiedliche Beispiele von zu ladenden Datenumfängen dar. Dies ist nur ein spezifisches Beispiel, und der Umfang der Erfindung ist durch dieses spezifische Beispiel nicht eingeschränkt. Entsprechend diesem spezifischen Beispiel gibt ein 3-Bit-Wert von ‚000‘ eine (d. h. eine einzelne) Cache-Zeile an, ein Wert von ‚001‘ gibt zwei zusammenhängende Cache-Zeilen an, ein Wert von ‚010‘ gibt vier zusammenhängende Cache-Zeilen an, und ein Wert von ‚100‘ gibt acht zusammenhängende Cache-Zeilen an. Weiter gibt ein Wert von '011 sechzehn zusammenhängende Cache-Zeilen an, ein Wert von '101 gibt zweiunddreißig zusammenhängende Cache-Zeilen an, ein Wert von '110 gibt vierundsechzig zusammenhängende Cache-Zeilen an (z. B. eine einzelne 4-kB-Seite von Cache-Zeilen), und ein Wert von '111 gibt einhundertachtundzwanzig zusammenhängende Cache-Zeilen an (z. B. zwei zusammenhängende 4-KByte-Seiten von Cache-Zeilen). Es versteht sich, dass dies nur ein veranschaulichendes Beispiel ist. Beispielsweise können bei anderen Ausführungsformen statt der Angabe mehrerer Seiten (die z. B. potenziell zu Seitenfehlern führen können), andere Anzahlen von zusammenhängenden Cache-Zeilen angegeben werden (z. B. drei zusammenhängende Cache-Zeilen oder sechs zusammenhängende Cache-Zeilen). Bei anderen Ausführungsformen kann es eine Option geben, mehr als zwei Seiten auszuwählen. Zudem können optional unterschiedliche Verteilungen und/oder Abstände von Cache-Zeilen verwendet werden.
  • Bei der dargestellten beispielhaften Ausführungsform entsprechen die Werte des Angabefeldes 655 des Datenumfangs festen Datenumfängen entsprechend der Darstellung in Tabelle 656, obwohl dies nicht erforderlich ist. Bei anderen Ausführungsformen kann die Abrufanweisung aus 6 optional ein Feld der Datengranularität (z. B. ein oder mehr Bits) zur Angabe einer Datengranularität für den im Eingabefeld 655 des Datenumfangs angegebenen Wert aufweisen. Beispielsweise kann das Feld der Datengranularität angeben, ob der im Angabefeld 655 des Datenumfangs bereitgestellte Wert sich auf Cache-Zeilen-Granularität bezieht (z. B. eine Anzahl von Cache-Zahlen ausdrückt oder auswählt) oder auf Seitengranularität (z. B. eine Anzahl von Seiten ausdrückt oder auswählt). Beispielsweise kann der Wert „100“ im Eingabefeld 655 des Datenumfangs angeben, dass acht Einheiten geladen werden sollen, und das Feld der Datengranularität kann entweder einen ersten Wert aufweisen, um anzugeben, dass diese Einheiten Cache-Zeilen sind, oder einen zweiten, unterschiedlichen Wert, um anzugeben, dass diese Einheiten Seiten sind. Ein derartiges Feld der Datengranularität kann optional mit beliebigen der anderen Ausführungsformen der hier offenbarten Abrufanweisungen verwendet werden.
  • Die Fähigkeit, durch Durchführen einer einzelnen Anweisung mehrere Cache-Zeilen zu laden, kann hilfreich sein, um die Anzahl von Anweisungen (z. B. Anweisungsüberfluss) in Code zu reduzieren, und/oder es kann die Reduzierung der Anzahl von Anweisungen, die durchgeführt werden müssen unterstützen, wodurch die Verbesserung der Ausführungsperformanz verstärkt werden kann. Beispielsweise kann die Anweisung einen festen Overhead der Durchführung einer einzelnen Anweisung zum Laden aller unterschiedlichen vorstehend beschriebenen Datenumfänge aufweisen. Beispielsweise kann eine einzelne Abrufanweisung verwendet werden, um eine gesamte, demnächst auszuführende Bibliotheksfunktion in einen L1-Anweisungs-Cache zu laden. In einigen Fällen lässt sich jedoch gute oder optimale Performanz erreichen, in dem einige Lücken zwischen abgerufenen Cache-Zeilen gelassen werden, falls eine autonome Hardware-Vorabruf-Einheit des Prozessors verfügbar ist, da eine derartige Hardware-Vorabruf-Einheit die Fähigkeit aufweisen kann, eingreifende, nicht abgerufene Cache-Zeilen ohne Ausführungsanweisungen zu laden. In Fällen, bei denen es jedoch wichtig ist, zu gewährleisten, dass Cache-Zeilen geladen werden, können bei derartigen Abrufen aus einer Hardware-Vorabruf-Einheit bei einigen Implementierungen die Durchführung und/oder der Abschluss ebenfalls nicht durch die Architektur gewährleistet werden.
  • Die 4 und 6 zeigen Beispiele der Feldtypen, die bei einigen Ausführungsformen von einer Abrufanweisung umfasst sein können. Die dargestellte Anordnung der Felder ist nicht erforderlich, vielmehr können die Felder unterschiedlich umgeordnet werden. Jedes der Felder kann entweder aus einer zusammenhängenden Bit-Menge bestehen, oder es kann nicht zusammenhängende oder getrennte Bits aufweisen, die das Feld logisch darstellen. Alternative Ausführungsformen können eine Untermenge der dargestellten Felder aufweisen, und/oder sie können zusätzliche Felder hinzufügen. Als Beispiel kann bei einigen Ausführungsformen die Abrufanweisung der 4 und/oder der 6 optional ein Feld aufweisen (z. B. ein oder mehrere Bits), um anzugeben, ob die Daten abgeändert werden oder nicht oder einfach ohne Modifikation eingelesen werden. Software kann beispielsweise das Feld einrichten, falls bekannt ist, ob die Daten abgeändert werden oder einfach ohne Modifikation eingelesen werden. Gemäß einem Aspekt kann der Prozessor (z. B. eine Cache-Steuerung) dieses Feld verwenden zum Bestimmen oder zum Unterstützen der Bestimmung eines Zustands für die geladenen Cache-Leitungen, wenn diese auf der angegebenen Cache-Ebene im Cache gespeichert sind. Falls beispielsweise das Feld angibt, dass die Daten modifiziert werden sollen, können die Cache-Leitungen im Fall des MOSI-Protokolls einen Zustand „Eigen“ (O) oder im Fall des MESI-Protokolls einen Zustand „Exklusiv“ (E) erhalten, während, falls das Feld angibt, dass die Daten ohne Abänderung nur ausgelesen werden sollen, die Cache-Leitungen bei den MESI- und MOSI-Protokollen einen Zustand „Gemeinschaftlich“ (S) erhalten können. Dieses Feld kann optional mit beliebigen der anderen Ausführungsformen der hier offenbarten Abrufanweisungen verwendet werden.
  • 7 ist ein Blockdiagramm einer beispielhaften Ausführungsform eines Prozessors 701, der dazu betreibbar ist, eine Ausführungsform einer Abrufanweisung 706 durchzuführen. Der Prozessor 701 kann der Prozessor 201 aus 2 oder von diesem umfasst sein. Der Prozessor 701 weist eine Decodiereinheit 730, eine Cache-Steuerung 731 und einen Cache 714 auf einer durch die Abrufanweisung 706 angegebenen Cache-Ebene auf. Sofern nicht anders angegeben, können diese Komponenten optional einige oder alle der Eigenschaften der diesbezüglich genannten Komponenten von 2 aufweisen. Um eine Verschleierung der Beschreibung zu vermeiden, werden die unterschiedlichen und/oder zusätzlichen Merkmale primär beschrieben, ohne die gemeinsamen Merkmale zu wiederholen.
  • Die Abrufanweisung 706 kann eine Lademaske 770 einer Cache-Leitung vorgeben oder sonst wie angeben. Die Lademaske der Cache-Leitung kann optional in einem Register 772 gespeichert sein, wie z. B. einem universellen 32-Bit- oder 64-Bit-Register, einem dedizierten, zur Vorhersage gepackter Daten verwendeten Maskenregister oder dergleichen. Alternativ dazu kann die Lademaske der Cache-Leitung optional in einer anderen Speicherposition gespeichert sein. Bei einigen Ausführungsformen kann die Lademaske der Cache-Leitung mehrere Masken-Bits oder andere Maskenelemente aufweisen, die jeweils einer unterschiedlichen Cache-Leitung entsprechen können. Die Maskenelemente können entweder maskiert sein, um anzugeben, dass eine dazugehörige Cache-Leitung nicht geladen werden soll, oder unmaskiert, um anzugeben, dass die dazugehörige Cache-Leitung geladen werden soll. Beispielsweise kann ein Masken-Bit entweder auf binär Null gelöscht sein, um anzugeben, dass die dazugehörige Cache-Leitung nicht geladen werden soll, oder auf binär Eins gesetzt sein, um anzugeben, dass die dazugehörige Cache-Leitung geladen werden soll.
  • Die Cache-Steuerung kann als Reaktion auf die Abrufanweisung bewirken, dass Cache-Leitungen 799 aus einer Speicherposition 732 selektiv geladen werden, die durch die Abrufanweisung entsprechend von der Lademaske 770 der Cache-Leitung bereitgestellter Steuerung angegeben wird. Zum Beispiel ist entsprechend dem spezifischen dargestellten Beispiel Bit-0 der Lademaske der Cache-Leitung auf binär Eins gesetzt, sodass die erste Cache-Leitung 799-1 geladen und im Cache 714 gespeichert werden kann. Dagegen ist Bit-1 der Lademaske der Cache-Leitung auf binär Null gelöscht, sodass die zweite Cache-Leitung 799-2 geladen oder im Cache gespeichert werden kann. Weiter ist Bit-2 der Lademaske der Cache-Leitung auf binär Eins gesetzt, sodass die dritte Cache-Leitung 799-3 geladen und im Cache gespeichert werden kann. Auf ähnliche Weise ist Bit-(N-1) der Lademaske der Cache-Leitung auf binär Eins gesetzt, sodass die N-te Cache-Leitung 799-N geladen und im Cache gespeichert werden kann. Auf diese Weise kann die Abrufanweisung eine Anzahl von Cache-Leitungen angeben (z. B. einen zusammenhängenden Bereich von Cache-Leitungen), und die Lademaske der Cache-Leitung kann dafür ausgelegt sein, ein gewünschtes Muster oder eine Anordnung dieser Cache-Leitungen zu laden oder die Cache-Leitungen auf Cache-Zeilen-Basis nicht zu laden. Als ein Beispiel kann eine Lademaske der Cache-Leitung mit einem Wert von „1010101010101010“ verwendet werden, um jede zweite Cache-Leitung in einem Block von sechzehn Cache-Leitungen zu laden. Beispielsweise kann dieses Muster potenziell eingesetzt werden, um eine Hardware-Vorabruf-Einheit anzustoßen, die automatisch die nicht geladenen Cache-Leitungen lädt. Als weiteres Beispiel kann eine Lademaske einer Cache-Leitung mit einem Wert von „11001100110011001100110011001100“ verwendet werden, um Paare zusammenhängender Cache-Leitungen zu laden, ohne verschachtelte Paare zusammenhängender Cache-Leitungen zu laden.
  • Beispielhafte Kernarchitekturen, Prozessoren und Computerarchitekturen
  • Prozessorkerne können auf verschiedene Arten, für verschiedene Zwecke und in unterschiedlichen Prozessoren implementiert werden. Beispielsweise können Implementierungen solcher Kerne Folgendes beinhalten: 1) einen universellen reihenfolgetreuen Kern, der zur Allzweckberechnung gedacht ist; 2) ein universeller reihenfolgeveränderlicher Hochleistungs-Kern, der zur Allzweckberechnung gedacht ist; 3) ein Spezialzweck-Kern, der primär zur Grafik- und/oder wissenschaftlichen (Durchsatz-) Berechnung gedacht ist. Implementierungen unterschiedlicher Prozessoren können Folgendes beinhalten: 1) eine CPU, die einen oder mehrere universelle reihenfolgetreue Kerne, die zur Allzweckberechnung gedacht sind, und/oder einen oder mehrere universelle reihenfolgeveränderliche Hochleistungs-Kerne, die zur Allzweckberechnung gedacht sind; und 2) einen Koprozessor, der einen oder mehrere Spezialzweck-Kerne aufweist, die primär für Grafik und/oder Wissenschaft (Durchsatz) gedacht sind. Solche unterschiedlichen Prozessoren führen zu unterschiedlichen Computersystemarchitekturen, die Folgendes beinhalten können: 1) den Koprozessor auf einem von der CPU separaten Chip; 2) den Koprozessor auf einem separaten Die im gleichen Chipgehäuse wie eine CPU; 3) den Koprozessor auf dem gleichen Die wie eine CPU (in diesem Fall wird ein solcher Koprozessor manchmal als spezielle Logik, wie etwa als integrierte Grafik und/oder wissenschaftliche (Durchsatz-)Logik oder als spezielle Kerne bezeichnet); und 4) ein System auf einem Chip, das auf demselben Die die beschriebene CPU (manchmal als der bzw. die Anwendungskerne oder Anwendungsprozessoren bezeichnet), den oben beschriebenen Koprozessor und zusätzliche Funktionalität umfassen kann. Beispielhafte Kernarchitekturen sind als Nächstes beschrieben, gefolgt von Beschreibungen beispielhafter Prozessoren und Computerarchitekturen.
  • Beispielhafte Kernarchitekturen
  • Blockdiagramm für reihenfolgetreue und reihenfolgeveränderliche Kerne
  • 8A ist ein Blockdiagramm, das sowohl eine beispielhafte reihenfolgetreue Pipeline als auch eine beispielhafte Ausführungs-Pipeline mit Registerumbenennung und reihenfolgeveränderlicher Ausgabe/Ausführung gemäß Ausführungsformen der Erfindung veranschaulicht. 8B ist ein Blockdiagramm, das sowohl ein Ausführungsbeispiel für einen reihenfolgetreuen Architektur-Kern als auch einen beispielhaften Architektur-Kern mit Registerumbenennung und reihenfolgeveränderlicher Ausgabe/Ausführung darstellt, der gemäß Ausführungsformen der Erfindung in einem Prozessor aufzunehmen ist. Die Kästen mit durchgezogener Linie aus 8A-B veranschaulichen eine reihenfolgetreue Pipeline und einen reihenfolgetreuen Kern, während die optionale Addition der Kästen mit gestrichelten Linien die Pipeline mit Registerumbenennung, reihenfolgeveränderlicher Ausgabe/Ausführung und den Kern veranschaulicht. Unter der Annahme, dass der reihenfolgetreue Aspekt eine Teilmenge des reihenfolgeveränderlichen Aspekts ist, wird der reihenfolgeveränderliche Aspekt beschrieben.
  • In 8A beinhaltet eine Prozessor-Pipeline 800 eine Abrufstufe 802, eine Längendecodierungsstufe 804, eine Decodierungsstufe 806, eine Zuordnungsstufe 808, eine Umbenennungsstufe 810, eine Planungsstufe 812 (auch als Dispatch- oder Ausgabestufe bekannt), eine Registerlese-/Speicherlesestufe 814, eine Ausführungsstufe 816, eine Rückschreib-/Speicherschreibstufe 818, eine Fehlerbehandlungsstufe 822, und eine Commit-Stufe 824.
  • 8B zeigt den Prozessorkern 890, der eine Frontend-Einheit 830 aufweist, die mit einer Ausführungs-Engine-Einheit 850 gekoppelt ist, wobei beide mit einer Speichereinheit 870 gekoppelt sind. Der Kern 890 kann ein RISC-Kern (RISC: Reduced Instruction Set Computing - Berechnung mit reduziertem Befehlssatz), ein CISC-Kern (CISC: Complex Instruction Set Computing - Berechnung mit komplexem Befehlssatz), ein VLIW-Kern (VLIW: Very Long Instruction Word - sehr langes Befehlswort) oder ein hybrider oder alternativer Kerntyp sein. Als noch eine andere Option kann der Kern 890 ein Spezialkern, wie etwa zum Beispiel ein Netz- oder Kommunikationskern, eine Kompression-Engine, ein Koprozessorkern, ein GPGPU-Kern (GPGPU: General Purpose Computing Graphics Processing Unit - Vielzweck-Berechnungs-Grafikverarbeitungs-Einheit) oder dergleichen sein.
  • Die Frontend-Einheit 830 umfasst eine Zweigprädiktionseinheit 832, die mit einer Befehls-Cache-Einheit 834 gekoppelt ist, die mit einem Übersetzungspuffer (TLB: Translation Lookaside Buffer) 836 gekoppelt ist, der mit einer Befehlsabrufeinheit 838 gekoppelt ist, die mit einer Decodierungseinheit 840 gekoppelt ist. Die Decodierungseinheit 840 (oder der Decoder) kann Befehle decodieren und ein oder mehrere Mikrooperationen, Mikrocodeeintragspunkte, Mikrobefehle oder andere Befehle oder andere Steuersignale, die aus den ursprünglichen Befehlen decodiert wurden oder diese anderweitig reflektieren oder von diesen abgeleitet sind, als eine Ausgabe erzeugen. Die Decodierungseinheit 840 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert werden. Beispiele von geeigneten Mechanismen umfassen ohne diesbezügliche Einschränkung Nachschlagetabellen, Hardwareumsetzungen, programmierbare Logikarrays (PLAs), Mikrocode-Nur-Lese-Speicher (ROMs) usw. In einer Ausführungsform umfasst der Kern 890 einen Mikrocode-ROM oder ein anderes Medium, das Mikrocode für bestimmte Makrobefehle speichert (z. B. in der Decodiereinheit 840 oder anderweitig innerhalb der Frontend-Einheit 830). Die Decodierungseinheit 840 ist mit einer Umbenennungs-/Zuordnungs-Einheit 852 in der Ausführungs-Engine-Einheit 850 gekoppelt.
  • Die Ausführungs-Engine-Einheit 850 beinhaltet die Umbenennungs-/Zuordnungs-Einheit 852, die mit einer Zurückzieheinheit 854 und einer Menge aus einer oder mehreren Planungseinheiten 856 gekoppelt ist. Die Planungseinheiten 856 repräsentieren eine beliebige Anzahl unterschiedlicher Planer, einschließlich Reservierungsstationen, zentralen Instruktionsfenstern usw. Die Planungseinheiten 856 sind mit der/den physikalischen Registerdatei-Einheit(en) 858 gekoppelt. Jede der physischen Registerdatei-Einheiten 858 stellt eine oder mehrere physische Registerdateien dar, von denen unterschiedliche einen oder mehrere unterschiedliche Datentypen speichern, wie etwa skalare Ganzzahlen, skalare Gleitkommazahlen, gepackte Ganzzahlen, gepackte Gleitkommazahlen, Vektorganzzahlen, Vektorgleitkommazahlen, Status (z. B. einen Befehlszeiger, der die Adresse des nächsten auszuführenden Befehls ist) usw. In einer Ausführungsform umfasst die physische Registerdatei-Einheit 858 eine Vektorregistereinheit, eine Schreibmaskenregistereinheit und eine skalare Registereinheit. Diese Registereinheiten können Architekturvektorregister, Vektormaskenregister und Mehrzweckregister bereitstellen. Die physischen Registerdateieinheiten 858 werden durch die Zurückzieheinheit 854 überlappt, um verschiedene Wege zu veranschaulichen, auf die eine Registerumbenennung und reihenfolgeveränderliche Ausführung implementiert werden können (z. B. unter Verwendung eines oder mehrerer Umordnungspuffer und von Zurückziehregisterdateien; unter Verwendung künftiger Dateien, eines oder mehrerer Historien-Puffer und einer oder mehrerer Zurückziehregisterdateien; unter Verwendung einer Registerabbildung und eines Pools von Registern usw.). Die Zurückzieheinheit 854 und die physischen Registerdateieinheiten 858 sind mit dem/den Ausführungscluster(n) 860 gekoppelt. Das/die Ausführungscluster 860 beinhaltet/beinhalten eine Menge aus einer oder mehreren Ausführungseinheiten 862 und eine Menge aus einer oder mehreren Speicherzugriffseinheit(en) 864. Die Ausführungseinheiten 862 können verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) durchführen, und zwar an verschiedenen Typen von Daten (z. B. Skalargleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorinteger, Vektorgleitkomma). Während manche Ausführungsformen eine Anzahl an Ausführungseinheiten beinhalten können, die für spezielle Funktionen oder Gruppen von Funktionen vorgesehen sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten aufweisen, die alle Funktionen durchführen. Die Planungseinheit(en) 856, die physische(n) Registerdateieinheit(en) 858 und das/die Ausführungscluster 860 sind als mögliche Pluralformen gezeigt, weil bestimmte Ausführungsformen getrennte Pipelines für bestimmte Typen von Daten/Operationen erzeugen (z. B. Pipelines mit skalaren Ganzzahlen, skalarem Gleitkomma, gepackten Ganzzahlen, gepacktem Gleitkomma, Vektor-Ganzzahl, Vektor-Gleitkomma und/oder eine Speicherzugriff-Pipeline, die jeweils ihre eigenen Planungseinheiten, physische Registerdateieinheiten und/oder Ausführungscluster aufweisen - und im Fall einer getrennten Speicherzugriff-Pipeline sind bestimmte Ausführungsformen implementiert, bei denen nur der Ausführungscluster dieser Pipeline die Speicherzugriffseinheit(en) 864 aufweist). Es versteht sich auch, dass, wenn getrennte Pipelines verwendet werden, eine oder mehrere dieser Pipelines eine reihenfolgeveränderliche Ausgabe/Ausführung und der Rest Reihenfolgetreue aufweisen können.
  • Die Gruppe von Speicherzugriffseinheiten 864 ist mit der Speichereinheit 870 gekoppelt, die eine Daten-TLB-Einheit 872 aufweist, die mit einer Daten-Cache-Einheit 874 gekoppelt ist, die mit einer Level-2-(L2)-Cache-Einheit 876 gekoppelt ist. Bei einem Ausführungsbeispiel können die Speicherzugriffseinheiten 864 eine Ladeeinheit, eine Adressenspeichereinheit und eine Datenspeichereinheit aufweisen, von denen jede mit der Daten-TLB-Einheit 872 in der Speichereinheit 870 gekoppelt ist. Die Befehls-Cache-Einheit 834 ist ferner mit einer Level-2-(L2)-Cache-Einheit 876 in der Speichereinheit 870 gekoppelt. Die L2-Cache-Einheit 876 ist mit einem oder mehreren anderen Cache-Ebenen und schlussendlich mit einem Hauptspeicher verbunden.
  • Beispielsweise kann die beispielhafte Kern-Architektur mit Registerumbenennung und reihenfolgeveränderlicher Ausgabe/Ausführung die Pipeline 800 wie folgt implementieren: 1) der anweisungsgemäße Abruf 838 führt die Abruf- und die Längendecodierstufen 802 und 804 durch; 2) die Decodiereinheit 840 führt die Decodierstufe 806 durch; 3) die Umbenennungs-/Zuordnungseinheit 852 führt die Zuordnungsstufe 808 und die Umbenennungsstufe 810 durch; 4) die Planungseinheit(en) 856 führt/führen die Planungsstufe 812 durch; 5) die physischen Registerdateieinheiten 858 und die Speichereinheit 870 führen die Registerlese-/Speicherlesestufe 814 durch; das Ausführungscluster 860 führt die Ausführungsstufe 816 durch; 6) die Speichereinheit 870 und die physische(n) Registerdateieinheit(en) 858 führen die Zurückschreib-/Speicherschreibstufe 818 durch; 7) verschiedene Einheiten können bei der Ausnahmebehandlungsstufe 822 beteiligt sein; und 8) die Rückzugseinheit 854 und die physische(n) Registerdateieinheit(en) 858 führen die Commit-Stufe 824 durch.
  • Der Kern 890 kann einen oder mehrere Befehlssätze unterstützen (z. B. den x86-Befehlssatz (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt wurden), den MIPS-Befehlssatz von MIPS Technologies aus Sunnyvale, US-Bundesstaat Kalifornien, den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen wie NEON) von ARM Holdings aus Sunnyvale, US-Bundesstaat Kalifornien), aufweisend die hier beschriebenen Befehle. Bei einer Ausführungsform beinhaltet der Kern 890 eine Logik zum Unterstützen einer Befehlssatzerweiterung für gepackte Daten (z. B. AVX1, AVX2), wodurch ermöglicht wird, dass die Operationen, die durch viele Multimediaanwendungen verwendet werden, unter Verwendung gepackter Daten durchgeführt werden.
  • Es versteht sich, dass der Kern Multithreading (Ausführen von zwei oder mehr parallelen Mengen von Operationen oder Threads) unterstützen kann und dass er dies auf vielfältige Weise vornehmen kann, umfassend Zeitscheiben-Multithreading, simultanes Multithreading (wobei ein einziger physischer Kern einen logischen Kern für jeden der Threads bereitstellt, die der physische Kern mit simultanem Multithreading abarbeitet), oder eine Kombination davon (z. B. Zeitscheiben-Abruf und -Decodierung und anschließendes simultanes Multithreading, wie etwa bei der Intel® Hyperthreading-Technologie).
  • Während eine Registerumbenennung in dem Zusammenhang einer reihenfolgeveränderlichen Ausführung beschrieben ist, versteht es sich, dass eine Registerumbenennung in einer reihenfolgetreuen Architektur verwendet werden kann. Während die dargestellte Ausführungsform des Prozessors auch getrennte Anweisungs- und Daten-Cache-Einheiten 834/874 und eine geteilte L2-Cache-Einheit 876 aufweist, können alternative Ausführungsformen einen einzelnen internen Cache sowohl für Befehle als auch für Daten aufweisen, wie zum Beispiel einen internen Level-1-(L1)-Cache oder mehrere Ebenen eines internen Caches. Bei manchen Ausführungsformen kann das System eine Kombination eines internen Caches und eines externen Caches aufweisen, der extern zum Kern und/oder dem Prozessor ist. Alternativ dazu kann der gesamte Cache extern zum Kern und/oder zum Prozessor sein.
  • Spezielle beispielhafte reihenfolgetreue Kernarchitektur
  • Die 9A-B veranschaulichen ein Blockdiagramm einer spezielleren beispielhaften reihenfolgetreuen Kernarchitektur, wobei der Kern einer von mehreren Logikblöcken in einem Chip ist (umfassend andere Kerne des gleichen Typs und/oder unterschiedlicher Typen). Die Logikblöcke kommunizieren durch ein Zwischenverbindungsnetz mit hoher Bandbreite (z. B. ein Ringnetz) anwendungsabhängig mit einer festen Funktionslogik, Speicher-E/A-Schnittstellen und sonstiger notwendiger E/A-Logik.
  • 9A ist ein Blockdiagramm eines Einzelprozessorkerns zusammen mit seiner Verbindung zu dem On-Die-Verknüpfungsnetz 902 und mit seiner lokalen Untermenge des Level-2-(L2)-Caches 904, gemäß Ausführungsformen der Erfindung. Bei einer Ausführungsform unterstützt ein Befehlsdecoder 900 den x86-Befehlssatz mit einer Befehlssatzerweiterung für gepackte Daten. Ein L1-Cache 906 ermöglicht Zugriffe mit geringer Latenz auf einen Cachespeicher in die Skalar- und Vektoreinheiten. Während bei einer Ausführungsform (zur Vereinfachung des Designs) eine Skalareinheit 908 und eine Vektoreinheit 910 getrennte Registermengen verwenden (Skalarregister 1912 bzw. Vektorregister 914) und Daten, die zwischen ihnen übertragen werden, in einen Speicher geschrieben werden und dann aus einem Level-1-(L1)-Cache 906 zurückgelesen werden, können alternative Ausführungsformen der Erfindung einen unterschiedlichen Ansatz verwenden (z. B. einen einzigen Registersatz einsetzen oder einen Kommunikationspfad aufweisen, der es ermöglicht, Daten zwischen den zwei Registerdateien zu übertragen, ohne dass sie geschrieben und zurückgelesen werden).
  • Die lokale Teilmenge des L2-Caches 904 ist Teil eines globalen L2-Caches, der in getrennte lokale Teilmengen, jeweils eine pro Prozessorkern, unterteilt ist. Jeder Prozessorkern weist einen direkten Zugriffspfad auf seine eigene lokale Teilmenge des L2-Caches 904 auf. Durch einen Prozessorkern ausgelesene Daten werden in seiner L2-Cache-Teilmenge 904 gespeichert, und auf sie kann parallel mit anderen Prozessorkernen, die auf ihre eigenen lokalen L2-Cache-Teilmengen zugreifen, schnell zugegriffen werden. Durch einen Prozessorkern geschriebene Daten werden in dessen eigener L2-Cache-Teilmenge 904 gespeichert und erforderlichenfalls aus anderen Teilsätzen entfernt. Das Ringnetz stellt eine Kohärenz für geteilte Daten sicher. Das Ringnetz ist bidirektional, um zu ermöglichen, dass Komponenten wie etwa Prozessorkerne, L2-Caches und andere Logikblöcke miteinander innerhalb des Chips kommunizieren. Jeder Ringdatenpfad ist pro Richtung 1012 Bit breit.
  • 9B ist eine erweiterte Ansicht eines Teils des Prozessorkerns in 9A gemäß Ausführungsformen der Erfindung. 9B weist einen L1-Daten-Cache 906A auf, der Teil des L1-Caches 904 ist, sowie weitere Einzelheiten im Hinblick auf die Vektoreinheit 910 und die Vektorregister 914. Speziell ist die Vektoreinheit 910 eine Vektorverarbeitungseinheit (VPU) der Breite 16 (siehe die ALU 928 der Breite 16), die eine oder mehrere Ganzzahl-Anweisungen, Gleitkomma-Anweisungen mit einfacher Präzision und Gleitkomma-Anweisungen mit doppelter Präzision ausführt. Die VPU unterstützt Swizzling der Registereingänge mit einer Swizzle-Einheit 920, numerische Umwandlung mit numerischen Umwandlungseinheiten 922A-B und Replikation mit einer Replikatoreinheit 924 an dem Speichereingang. Schreibmaskenregister 926 ermöglichen eine Vorhersage resultierender Vektorschreibvorgänge.
  • Prozessor mit integrierter Speichersteuerung und Grafik
  • 10 ist ein Blockdiagramm eines Prozessors 1000, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und integrierte Grafik aufweisen kann, gemäß Ausführungsformen der Erfindung. Die Kästen mit durchgehenden Linien 10 veranschaulichen einen Prozessor 1000 mit einem einzelnen Kern 1002A, einem Systemagenten 1010, einer Gruppe von einer oder mehreren Bussteuereinheiten 1016, während die optionale Hinzunahme der Kästen mit gestrichelten Linien einen alternativen Prozessor 1000 mit mehreren Kernen 1002A-N, eine Gruppe aus einer oder mehreren integrierten Speichersteuereinheit(en) 1014 in der Systemagenteneinheit 1010 und eine Logik 1008 für spezielle Zwecke veranschaulicht.
  • Dementsprechend können unterschiedliche Implementierungen des Prozessors 1000 Folgendes beinhalten: 1) eine CPU, wobei die Logik 1008 für spezielle Zwecke eine Logik mit integrierter Grafik und/oder wissenschaftlicher (Durchsatz-)Logik ist (die einen oder mehrere Kerne umfassen kann), und wobei die Kerne 1002A-N ein oder mehrere universelle Kerne sind (z. B. universelle reihenfolgetreue Kerne, universelle reihenfolgeveränderliche Kerne, eine Kombination aus beiden); 2) einen Koprozessor, wobei die Kerne 1002A-N eine große Anzahl von Kernen für spezielle Zwecke sind, primär konzipiert für Grafik und/oder wissenschaftliche Anwendungen (Durchsatz); und 3) einen Koprozessor, wobei die Kerne 1002A-N eine große Anzahl von universellen reihenfolgetreuen Kernen sind. Somit kann der Prozessor 1000 ein universeller Prozessor, ein Koprozessor oder ein Prozessor für spezielle Zwecke sein, wie etwa ein Netz- oder Kommunikationsprozessor, eine Kompressions-Engine, ein Grafikprozessor, eine GPGPU (universelle Grafikverarbeitungseinheit), ein MIC-Koprozessor (MIC: Many Integrated Core - viele integrierte Kerne) (der 30 oder mehr Kerne aufweist), ein eingebetteter Prozessor oder dergleichen. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 1000 kann Teil eines oder mehrerer Substrate sein, die eine beliebige einer Anzahl an Prozesstechnologien verwenden, wie zum Beispiel BiCMOS, CMOS oder NMOS, und/oder auf solchen implementiert sein.
  • Die Speicherhierarchie umfasst eine oder mehrere Ebenen eines Caches innerhalb der Kerne, eine Menge von oder einer oder mehreren geteilten Cache-Einheiten 1006 und (nicht gezeigten) externen Speicher, der mit der Menge integrierter Speichersteuereinheiten 1014 gekoppelt ist. Die Menge geteilter Cache-Einheiten 1006 kann einen oder mehrere Mid-Level-Caches aufweisen, wie etwa Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cache-Ebenen, einen Last-Level-Cache (LLC) und/oder Kombinationen daraus. Während bei einer Ausführungsform eine ringbasierte Zwischenverbindungseinheit 1012 die integrierte Grafiklogik 1008, die Menge geteilter Cache-Einheiten 1006 und die Systemagentenheinheit 1010/integrierte Speichersteuereinheit(en) 1014 miteinander verbindet, können alternative Ausführungsformen eine beliebige Anzahl bereits bekannter Techniken zum Zwischenverbinden derartiger Einheiten verwenden. Bei einer Ausführungsform wird eine Kohärenz zwischen einer oder mehreren Cache-Einheiten 1006 und Kernen 1002-A-N beibehalten.
  • Bei einigen Ausführungsformen können einer oder mehrere der Kerne 1002A-N Multithreading-fähig sein. Der Systemagent 1010 umfasst diejenigen Komponenten, die Kerne 1002A-N koordinieren und betreiben. Die Systemagenteneinheit 1010 kann beispielsweise eine Leistungssteuerungseinheit (PCU) und eine Anzeigeeinheit umfassen. Die PCU kann eine Logik und Komponenten, die zum Regeln des Leistungszustands der Kerne 1002A-N und der integrierten Grafiklogik 1008 benötigt werden, sein oder aufweisen. Die Anzeigeeinheit dient dem Ansteuern einer oder mehrerer extern verbundener Anzeigen.
  • Die Kerne 1002A-N können hinsichtlich des Architekturbefehlssatzes homogen oder heterogen sein; das heißt, zwei oder mehr der Kerne 1002A-N können in der Lage sein, den gleichen Befehlssatz auszuführen, während andere nur eine Untermenge des betreffenden Befehlssatzes oder einen unterschiedlichen Befehlssatz ausführen können.
  • Beispielhafte Computerarchitekturen
  • Die 11-21 sind Blockdiagramme beispielhafter Computerarchitekturen. Andere Systemgestaltungen und Konfigurationen, die nach dem Stand der Technik für Laptops, Desktops, Handheld-PCs, persönliche digitale Assistenten, technische Workstations, Server, Netzwerkeinrichtungen, Netzwerk-Hubs, Switches, eingebettete Prozessoren, digitale Signalprozessoren (DSPs), Grafikeinrichtungen, Videospieleinrichtungen, Set-Top-Boxen, Mikrocontroller, Mobiltelefone, portable Medienabspielgeräte, Handheld-Einrichtungen und verschiedene andere elektronische Einrichtungen bekannt sind, eignen sich ebenfalls. Allgemein ist eine große Vielzahl an Systemen oder elektronischen Einrichtungen, die zum Einbinden eines Prozessors und/oder einer anderen Ausführungslogik, wie hier offenbart, fähig sind, allgemein geeignet.
  • Mit Bezug auf 11 ist jetzt ein Blockdiagramm eines Systems 1100 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 1100 kann einen oder mehrere Prozessoren 1110, 1115 aufweisen, die mit einem Steuer-Hub 1120 gekoppelt sind. Bei einer Ausführungsform umfasst der Steuer-Hub 1120 einen Grafikspeichersteuer-Hub (GMCH) 1190 und einen Eingabe-/Ausgabe-Hub (IOH) 1150 (die sich auf separaten Chips befinden können); der GMCH 1190 umfasst Speicher- und Grafiksteuerungen, mit denen ein Speicher 1140 und ein Koprozessor 1145 gekoppelt sind; der IOH 1150 koppelt Eingabe-/Ausgabeeinrichtungen (E/A) 1160 mit dem GMCH 1190. Alternativ sind eine der Speicher- und Grafiksteuerungen oder beide in den Prozessor integriert (wie hier beschrieben), der Speicher 1140 und der Koprozessor 1145 sind direkt mit dem Prozessor 1110 gekoppelt, und der Steuer-Hub 1120 ist in einem einzelnen Chip mit dem IOH 1150.
  • Die optionale Natur zusätzlicher Prozessoren 1115 ist in 11 mit gestrichelten Linien gekennzeichnet. Jeder Prozessor 1110, 1115 kann einen oder mehrere hier beschriebene Verarbeitungskerne aufweisen und eine beliebige Version des Prozessors 1000 sein.
  • Der Speicher 1140 kann zum Beispiel dynamischer Direktzugriffsspeicher (DRAM), Phasenwechselspeicher (PCM) oder eine Kombination der beiden sein. Bei mindestens einer Ausführungsform kommuniziert der Steuer-Hub 1120 mit den Prozessoren 1110, 1115 über einen Multi-Drop-Bus, wie etwa einen Front-Side-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle, wie etwa QuickPath-Interconnect (QPI), oder eine ähnliche Verbindung 1195.
  • Bei einer Ausführungsform ist der Koprozessor 1145 ein Spezialprozessor, wie zum Beispiel ein Hochdurchsatz-MIC-Prozessor, ein Netz- oder Kommunikationsprozessor, eine Kompressions-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. Bei einer Ausführungsform kann der Steuer-Hub 1120 einen integrierten Grafikbeschleuniger aufweisen.
  • Es kann eine Mehrzahl von Differenzen zwischen den physikalischen Ressourcen 1110, 1115 im Hinblick auf das Spektrum der Leistungsmetrik vorliegen, einschließlich Architektur-, Mikroarchitektur-, Wärme-, Stromverbrauchsmerkmalen und dergleichen.
  • Bei einer Ausführungsform führt der Prozessor 1110 Befehle aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. Koprozessorbefehle können in die Befehle eingebettet sein. Der Prozessor 1110 erkennt diese Koprozessorbefehle als zu einem Typ gehörig, der durch den beigeordneten Koprozessor 1145 ausgeführt werden muss. Entsprechend gibt der Prozessor 1110 diese Koprozessorbefehle (oder Steuersignale, die Koprozessorbefehle repräsentieren) auf einem Koprozessor-Bus oder einer anderen Zwischenverbindung an den Koprozessor 1145 aus. Die Koprozessoren 1145 nehmen die empfangenen Koprozessorbefehle an und führen diese aus.
  • Mit Bezug auf 12 ist jetzt ein Blockdiagramm eines ersten spezielleren beispielhaften Systems 1200 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 12 gezeigt, ist das Mehrprozessorsystem 1200 ein Punkt-zu-Punkt-Zwischenverbindungssystem, und es weist einen ersten Prozessor 1270 und einen zweiten Prozessor 1280 auf, die über eine Punkt-zu-Punkt-Zwischenverbindung 1250 gekoppelt sind. Jeder der Prozessoren 1270 und 1280 kann eine Version des Prozessors 1000 sein. Bei einer Ausführungsform der Erfindung sind die Prozessoren 1270 und 1280 die Prozessoren 1110 bzw. 1115, während der Coprozessor 1238 der Coprozessor 1145 ist. Bei einer anderen Ausführungsform sind die Prozessoren 1270 und 1280 der Prozessor 1110 bzw. der Coprozessor 1145.
  • Die Prozessoren 1270 und 1280 sind so gezeigt, dass sie integrierte Speichersteuer-(IMC)-Einheiten 1272 bzw. 1282 aufweisen. Der Prozessor 1270 weist als Teil seiner Bussteuereinheiten auch Punkt-zu-Punkt-(P-P)-Schnittstellen 1276 und 1278 auf; gleichzeitig weist der zweite 1280 P-P-Schnittstellen 1286 und 1288 auf. Die Prozessoren 1270 und 1280 können Daten über eine Punkt-zu-Punkt-(P-P)-Schnittstelle 1250 unter Verwendung von P-P-Schnittstellenschaltungen 1278, 1288 austauschen. Wie in 12 gezeigt, koppeln IMCs 1272 und 1282 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1232 und einem Speicher 1234, die Teile eines Hauptspeichers sein können, die den dazugehörigen Prozessoren lokal beigeordnet sind.
  • Die Prozessoren 1270, 1280 können jeweils Information mit einem Chipsatz 1290 über individuelle P-P-Schnittstellen 1252, 1254 unter Verwendung von Punkt-zu-Punkt-Schnittstellen-Schaltkreisen 1276, 1294, 1286, 1298 austauschen. Der Chipsatz 1290 kann optional Information mit dem Coprozessor 1238 über eine Hochleistungsschnittstelle 1239 austauschen. Bei einer Ausführungsform ist der Koprozessor 1238 ein Spezialprozessor, wie zum Beispiel ein Hochdurchsatz-MIC-Prozessor, ein Netz- oder Kommunikationsprozessor, eine Kompressions-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen.
  • Ein (nicht gezeigter) geteilter Cache kann in beiden Prozessoren oder außerhalb beider Prozessoren umfasst sein und dennoch über eine P-P-Zwischenverbindung mit den Prozessoren verbunden sein, sodass lokale Cache-Information von einem der Prozessoren oder beiden in dem geteilten Cache gespeichert werden kann, falls ein Prozessor in einen Modus mit niedriger Leistung gesetzt wird.
  • Der Chipsatz 1290 kann über eine Schnittstelle 1296 mit einem ersten Bus 1216 gekoppelt werden. Bei einer Ausführungsform kann der erste Bus 1216 ein PCI-Bus sein (Peripheral Component Interconnect) oder ein Bus wie ein PCI-Express-Bus oder ein anderer E/A-Zwischenverbindungsbus der dritten Generation, obwohl der Schutzumfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist.
  • Wie in 12 gezeigt, können verschiedene E/A-Einrichtungen 1214 zusammen mit einer Busbrücke 1218, die den ersten Bus 1216 mit einem zweiten Bus 1220 koppelt, mit dem ersten Bus 1216 gekoppelt sein. Bei einer Ausführungsform sind ein oder mehrere zusätzliche Prozessoren 1215, wie etwa Koprozessoren, Hochdurchsatz-MIC-Prozessoren, GPGPUs, Beschleuniger (wie z. B. Grafikbeschleuniger oder digitale Signalverarbeitungseinheiten (DSP)), vor Ort programmierbare Gate-Arrays oder beliebige andere Prozessoren, mit dem ersten Bus 1216 gekoppelt. Bei einer Ausführungsform kann der zweite Bus 1220 ein LPC-Bus (Low Pin Count) sein. Verschiedene Einrichtungen können mit einem zweiten Bus 1220 gekoppelt sein, der zum Beispiel eine Tastatur und/oder eine Maus 1222, Kommunikationseinrichtungen 1227 und eine Speichereinheit 1228 wie ein Plattenlaufwerk oder eine andere Massenspeichereinrichtung aufweist, die bei einer Ausführungsform Anweisungen/Code und Daten 1230 aufweisen können. Ferner kann ein Audio-E/A 1224 mit dem zweiten Bus 1220 gekoppelt sein. Man beachte, dass andere Architekturen möglich sind. Zum Beispiel kann ein System statt der Punkt-zu-Punkt-Architektur aus 12 einen Multi-Drop-Bus oder eine andere derartige Architektur implementieren.
  • Mit Bezug auf 13 ist ein Blockdiagramm eines zweiten spezielleren beispielhaften Systems 1300 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Gleiche Elemente in den 12 und 13 tragen die gleichen Bezugsziffern, und bestimmte Aspekte aus 12 wurden in 13 ausgelassen, um eine Verschleierung anderer Aspekte von 13 zu vermeiden.
  • 13 veranschaulicht, dass die Prozessoren 1270, 1280 eine integrierte Speicher- und E/A-Steuerlogik (CL) 1272 bzw. 1282 aufweisen können. Somit eist die CL 1272, 1282 integrierte Speichersteuereinheiten auf und umfasst eine E/A-Steuerlogik. 13 veranschaulicht, dass nicht nur die Speicher 1232, 1234 mit der CL 1272, 1282 gekoppelt sind, sondern auch, dass die E/A-Einrichtungen 1314 ebenfalls mit der Steuerlogik 1272, 1282 gekoppelt sind. Übernommene vorherige E/A-Einrichtungen 1315 sind mit dem Chipsatz 1290 gekoppelt.
  • Mit Bezug auf 14 ist ein Blockdiagramm eines SoC 1400 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Ähnliche Elemente in 10 tragen gleiche Bezugsziffern. Ferner sind Kästen mit gestrichelten Linien optionale Merkmale bei erweiterten SoCs. In 14 sind Verbindungseinheiten 1402 gekoppelt mit einem Anwendungsprozessor 1410, der eine Gruppe von einem oder mehreren Kernen 132A-N und gemeinsam genutzte Cache-Einheiten 1006 umfasst; einer Systemagenteneinheit 1010; einer oder mehreren Bussteuereinheiten 1016; einer oder mehreren integrierten Speichersteuereinheiten 1014; einer Gruppe von oder einem oder mehreren Koprozessoren 1420, die integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor umfassen können; einer statischen Direktzugriffsspeichereinheit (SRAM) 1430; eine Direktzugriffsspeichereinheit (DMA) 1432; und eine Anzeigeeinheit 1440 zum Koppeln mit einer oder mehreren externen Anzeigen. Bei einer Ausführungsform umfassen die Koprozessoren 1420 einen Prozessor für spezielle Zwecke, wie beispielsweise einen Netzwerk- oder Kommunikationsprozessor, eine Komprimierungs-Engine, eine GPGPU, einen MIC-Prozessor mit hohem Durchsatz, einen eingebetteten Prozessor oder dergleichen.
  • Ausführungsformen der Mechanismen, die hier offenbart sind, können in Hardware, Software, Firmware oder einer Kombination solcher Implementierungsansätze implementiert werden. Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode implementiert werden, die auf programmierbaren Systemen ausgeführt werden, die wenigstens einen Prozessor, ein Speichersystem (einschließlich flüchtigen und nichtflüchtigen Speichers und/oder Speicherelementen), wenigstens eine Eingabevorrichtung und wenigstens eine Ausgabevorrichtung umfassen.
  • Ein Programmcode, wie etwa der in 12 veranschaulichte Code 1230, kann auf Eingabebefehle angewandt werden, um die hier beschriebenen Funktionen durchzuführen und Ausgabeinformation zu erzeugen. Die Ausgabeinformation kann auf eine oder mehrere Ausgabeeinrichtungen auf bereits bekannte Weise angewandt werden. Zum Zweck dieser Anmeldung beinhaltet ein Verarbeitungssystem ein beliebiges System, das einen Prozessor aufweist, wie zum Beispiel einen digitalen Signalprozessor (DSP), einen Mikrocontroller, einen anwendungsspezifischen integrierten Schaltkreis (ASIC) oder einen Mikroprozessor.
  • Der Programmcode kann in einer prozeduralen oder objektorientierten Programmiersprache höherer Ebene implementiert werden, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann, falls gewünscht, auch in Assembler- oder Maschinensprache implementiert werden. Tatsächlich sind die hier beschriebenen Mechanismen im Schutzumfang nicht auf eine bestimmte Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte von mindestens einer Ausführungsform können durch repräsentative Anweisungen, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik im Prozessor wiedergibt, implementiert sein, wobei sie, wenn sie durch eine Maschine gelesen werden, die Maschine veranlassen, Logik zum Durchführen der hier beschriebenen Techniken einzurichten. Derartige Repräsentationen, als „IP-Kerne“ bekannt, können auf einem materiellen maschinenlesbaren Medium gespeichert sein und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um in die Herstellungsmaschinen geladen zu werden, die dann die Logik oder den Prozessor herstellen.
  • Solche maschinenlesbaren Speichermedien können ohne Einschränkung nichtflüchtige, materielle Anordnungen von Artikeln aufweisen, die durch eine Maschine oder Einrichtung hergestellt oder gebildet werden, umfassend Speichermedien wie Festplatten, beliebige andere Typen von Laufwerken, umfassend Disketten, optische Platten, Compact Disk Nur-Lese-Speicher (CD-ROMs), wiederbeschreibbare Compact Disks (CD-RWs) und magnetooptische Platten, Halbleitereinrichtungen wie Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAMs) wie dynamische Direktzugriffsspeicher (DRAMs), statische Direktzugriffsspeicher (SRAMs), löschbare programmierbare Nur-Lese-Speicher (EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROMs), Phasenwechselspeicher (PCM), magnetische oder optische Karten oder beliebige andere Arten von Medien, die zum Speichern elektronischer Anweisungen geeignet sind.
  • Entsprechend beinhalten Ausführungsformen der Erfindung auch nichtflüchtige materielle maschinenlesbare Medien, die Anweisungen enthalten oder Gestaltungsdaten enthalten, wie etwa Hardwarebeschreibungssprache (HDL), die Strukturen, Schaltkreise, Vorrichtungen, Prozessoren und/oder Systemmerkmale definiert, die hier beschrieben sind. Solche Ausführungsformen können als Programmprodukte bezeichnet werden.
  • Emulation (umfassend Binärübersetzung, Code-Morphing usw.)
  • In manchen Fällen kann ein Befehlsumwandler verwendet werden, um eine Anweisung von einem Quellenbefehlssatz zu einem Zielbefehlssatz umzuwandeln. Zum Beispiel kann der Befehlsumwandler (z. B. unter Verwendung statischer Binärübersetzung, dynamischer Binärübersetzung aufweisend dynamische Kompilation) eine Anweisung in eine oder mehrere andere Anweisungen, die durch den Kern verarbeitet werden sollen, übersetzen, umformen, emulieren oder sonst wie umwandeln. Der Befehlsumwandler kann in Software, Hardware, Firmware oder einer Kombination daraus implementiert sein. Der Befehlsumwandler kann auf dem Prozessor, außerhalb des Prozessors oder teilweise auf und teilweise außerhalb des Prozessors sein.
  • 15 ist ein Blockdiagramm, das die Verwendung eines Softwarebefehlumwandlers zum Umwandeln von binären Befehlen in einem Quellenbefehlssatz zu binären Befehlen in einem Zielbefehlssatz gemäß Ausführungsformen der Erfindung wiedergibt. Bei der veranschaulichten Ausführungsform ist der Befehlsumwandler ein Softwarebefehlsumwandler, obwohl alternativ dazu der Befehlsumwandler in Software, Firmware, Hardware oder verschiedenen Kombinationen davon implementiert werden kann. 15 zeigt, wie ein Programm in Sprache 1502 höherer Ebene mit einem x86-Compiler 1504 kompiliert werden kann, um x86-Binärcode 1506 zu erzeugen, der nativ durch einen Prozessor mit zumindest einem x86-Befehlssatz-Kern 1516 ausgeführt werden kann. Der Prozessor mit wenigstens einem x86-Befehlssatz-Kern 1516 repräsentiert einen beliebigen Prozessor, der im Wesentlichen die gleichen Funktionen durchführen kann wie ein Intel-Prozessor mit wenigstens einem x86-Befehlssatz-Kern durch kompatibles Ausführen oder anderweitiges Abarbeiten (1) eines wesentlichen Teils des Befehlssatzes des Intel-x86-Befehlssatz-Kerns oder (2) von Objektcodeversionen von Anwendungen oder sonstiger Software, die für die Ausführung auf einem Intel-Prozessor mit wenigstens einem x86-Befehlssatz-Kern vorgesehen ist, um im Wesentlichen das gleiche Ergebnis zu erzielen wie ein Intel-Prozessor mit wenigstens einem x86-Befehlssatz-Kern. Der x86-Compiler 1504 repräsentiert einen Compiler, der betreibbar ist, um x86-Binärcode 1506 (z. B. Objektcode) zu erzeugen, der mit oder ohne zusätzliche Verknüpfungsverarbeitung auf dem Prozessor mit zumindest einem x86-Befehlssatzkern 1516 ausgeführt werden kann. In ähnlicher Weise zeigt 15, dass das Programm in der Sprache 1502 höherer Ebene unter Verwendung eines alternativen Befehlssatz-Compilers 1508 kompiliert werden kann, um einen alternativen Befehlssatz-Binärcode 1510 zu erzeugen, der durch einen Prozessor nativ ohne wenigstens einen x86-Befehlssatz-Kern 1514 ausgeführt wird (z. B. durch einen Prozessor mit Kernen, die den MIPS-Befehlssatz von MIPS Technologies aus Sunnyvale, US-Bundesstaat Kalifornien, ausführen und/oder die den ARM-Befehlssatz von ARM Holdings aus Sunnyvale, US-Bundesstaat Kalifornien, ausführen). Der Befehlsumwandler 1512 wird verwendet, um den x86-Binärcode 1506 in einen Code umzuwandeln, der durch den Prozessor ohne einen x86-Befehlssatz-Kern 1514 nativ ausgeführt werden kann. Dieser umgewandelte Code ist wahrscheinlich nicht der gleiche wie der alternative Befehlssatz-Binärcode 1510, da ein Befehlsumwandler, der diese Fähigkeit aufweist, schwierig herzustellen ist; der umgewandelte Code wird jedoch die allgemeine Operation ausführen und aus Anweisungen aus dem alternativen Befehlssatz zusammengesetzt sein. Dementsprechend repräsentiert der Befehlsumwandler 1512 Software, Firmware, Hardware oder eine Kombination daraus, die durch Emulation, Simulation oder einen beliebigen anderen Prozess ermöglicht, dass ein Prozessor oder eine andere elektronische Einrichtung, die keinen x86-Befehlssatz-Prozessor oder -Kern aufweisen, den x86-Binärcode 1506 ausführen.
  • Komponenten, Merkmale und Details, die für jede der 1 und 4-7 beschrieben wurden, können optional auch für jede der 2-3 angewandt werden. Komponenten, Merkmale und Details, die für beliebige der hier offenbarten Prozessoren beschrieben sind, können optional auch für beliebige der hier offenbarten Verfahren angewandt werden, die bei Ausführungsformen optional durch und/oder mit derartigen Prozessoren ausgeführt werden können. Beliebige der hier beschriebenen Prozessoren (z. B. der Prozessor 201, der Prozessor 701) in Ausführungsformen können optional in beliebigen der hier offenbarten Systeme umfasst sein (z. B. beliebigen der Systeme aus Fig. xx-xx).
  • In der Beschreibung und in den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet worden sein. Diese Begriffe sind nicht als synonym füreinander zu betrachten. Vielmehr kann „verbunden“ bei Ausführungsformen verwendet werden, um anzugeben, dass sich zwei oder mehr Elemente in direktem physischen und/oder elektrischen Kontakt miteinander befinden. „Gekoppelt“ kann bedeuten, dass sich zwei oder mehr Elemente in direktem physischen und/oder elektrischen Kontakt miteinander befinden. Allerdings kann „gekoppelt“ auch bedeuten, dass sich zwei oder mehr Elemente nicht in direktem Kontakt miteinander befinden, aber dennoch kooperieren oder miteinander interagieren. Beispielsweise kann eine Cache-Steuerung über eine oder mehrere eingreifende Komponenten mit einer Decodiereinheit gekoppelt sein. In den Figuren werden Pfeile verwendet, um Verbindungen und Kopplungen zu zeigen.
  • Die hier offenbarten Komponenten und die in den vorstehenden Figuren dargestellten Verfahren können mit Logik, Modulen oder Einheiten implementiert sein, die Hardware (z. B. Transistoren, Gatter, Schaltkreise usw.), Firmware (z. B. einen nichtflüchtigen Speichersteuer-Mikrocode oder Steuersignale), Software (z. B. auf einem nicht vorübergehenden rechnerlesbaren Speichermedium gespeichert) oder eine Kombination daraus aufweist. Bei einigen Ausführungsformen können die Logik, Module oder Einheiten mindestens einige oder vorwiegend eine Mischung aus Hardware und/oder Firmware, potenziell kombiniert mit optionaler Software, aufweisen.
  • Der Begriff„und/oder“ kann verwendet worden sein. Der hier verwendete Begriff „und/oder“ bedeutet die eine oder die andere Komponente oder beide (z. B.: A und/oder B bedeutet A oder B oder sowohl A als auch B).
  • In der obigen Beschreibung wurden spezifische Einzelheiten dargelegt, um ein umfassendes Verständnis der Ausführungsformen bereitzustellen. Allerdings können andere Ausführungsformen ohne einige dieser spezifischen Details umgesetzt werden. Der Schutzumfang der Erfindung soll nicht durch die oben bereitgestellten spezifischen Beispiele bestimmt sein, sondern nur durch die weiter unten aufgeführten Ansprüche. In anderen Fällen wurden bereits bekannte Schaltungen, Strukturen, Einrichtungen und Operationen in Blockdiagrammform und/oder ohne Details gezeigt, um ein Verschleiern des Verständnisses der Beschreibung zu verhindern. Sofern dies als angemessen erachtet wird, wurden Bezugsziffern oder Schlussteile von Bezugszeichen in den Figuren wiederholt, um entsprechende oder analoge Elemente anzuzeigen, die optional ähnliche oder gleiche Charakteristika haben können, sofern nicht anderweitig angegeben oder klar offensichtlich.
  • Bestimmte Operationen können durch Hardwarekomponenten durchgeführt werden, oder sie können in maschinenausführbaren oder schaltungsausführbaren Befehlen ausgeführt sein, die verwendet werden können, um zu veranlassen und/oder zu bewirken, dass eine Maschine, Schaltung oder Hardwarekomponente (z. B. ein Prozessor, ein Teil eines Prozessors, eine Schaltung usw.), mit den Befehlen programmiert wird, die die Operationen durchführt. Die Operationen können auch optional durch eine Kombination aus Hardware und Software durchgeführt werden. Ein Prozessor, eine Maschine, Schaltung oder Hardware können spezifische oder bestimmte Schaltungen oder andere Logik umfassen (z. B. Hardware, potenziell mit Firmware und/oder Software kombiniert) und ist betreibbar, um den Befehl auszuführen und/oder zu verarbeiten und ein Ergebnis als Reaktion auf den Befehl zu speichern.
  • Einige Ausführungsformen umfassen einen Fertigungsartikel (z. B. ein Computerprogrammprodukt), der ein maschinenlesbares Medium aufweist. Das Medium kann einen Mechanismus umfassen, der Information in einer Form bereitstellt (beispielsweise speichert), die durch die Maschine lesbar ist. Das maschinenlesbare Medium kann einen Befehl oder eine Sequenz von Befehlen bereitstellen (oder darauf gespeichert haben), die, falls und/oder wenn sie durch eine Maschine ausgeführt werden, bewirken, dass die Maschine veranlasst wird, eine oder mehrere hier offenbarte Operationen, Verfahren oder Techniken durchzuführen.
  • Bei einigen Ausführungsformen kann das maschinenlesbare Medium ein nichtflüchtiges maschinenlesbares Speichermedium umfassen. Beispielsweise kann das nichtflüchtige, maschinenlesbare Speichermedium eine Floppy Disk, ein optisches Speichermedium, eine optische Platte, eine optische Datenspeichereinrichtung, eine CD-ROM, eine magnetische Platte, eine magnetooptische Platte, einen Nur-Lese-Speicher (ROM), einen programmierbaren ROM (PROM), einen lösch- und programmierbaren ROM (EPROM), einen elektrisch lösch- und programmierbaren ROM (EEPROM), einen Direktzugriffsspeicher (RAM), einen statischen Direktzugriffsspeicher (SRAM), einen dynamischen Direktzugriffsspeicher (DRAM), einen Flash-Speicher, einen Phasenwechselspeicher, ein Phasenwechsel-Datenspeichermaterial, einen nichtflüchtigen Speicher, eine nichtflüchtige Datenspeichereinrichtung oder dergleichen umfassen. Das nichtflüchtige maschinenlesbare Speichermedium besteht nicht aus einem vorübergehend verbreiteten Signal. Bei einigen Ausführungsformen kann das Speichermedium ein materielles Medium aufweisen, das Festkörper oder festes Material umfasst, wie zum Beispiel ein Halbleitermaterial, ein Phasenwechselmaterial, ein magnetisches festes Material, ein festes Datenspeichermaterial usw. Alternativ dazu kann optional ein nicht materielles vorübergehendes rechnerlesbares Übertragungsmedium eingesetzt werden, wie zum Beispiel elektrische, optische, akustische oder andere Formen verbreiteter Signale - wie z. B. Trägerwellen, Infrarotsignale und digitale Signale.
  • Beispiele von geeigneten Maschinen umfassen ohne diesbezügliche Einschränkung einen universellen Prozessor, einen speziellen Prozessor, eine digitale Logikschaltung, eine integrierte Schaltung oder dergleichen. Noch weitere Beispiele von geeigneten Maschinen umfassen ein Computersystem oder eine andere elektronische Einrichtung, aufweisend einen Prozessor, eine digitale Logikschaltung oder eine integrierte Schaltung. Beispiele solcher Computersysteme oder elektronischen Einrichtungen umfassen ohne diesbezügliche Einschränkung Desktop-Computer, Laptop-Computer, Notebook-Computer, Tablet-Computer, Netbooks, Smartphones, Mobiltelefone, Server, Netzwerkeinrichtungen (z. B. Router und Switches), mobile Interneteinrichtungen (MIDs), Medienabspieleinrichtungen, intelligente Fernseher, Nettops, Set-Top-Boxen und Videospielsteuerungen.
  • In dieser gesamten Spezifikation geben Begriffe wie „eine Ausführungsform“, „eine oder mehrere Ausführungsformen“, „einige Ausführungsformen“ beispielsweise an, dass ein bestimmtes Merkmal in der Praxis der Erfindung umfasst sein kann, aber nicht notwendigerweise erforderlich ist. In ähnlicher Weise sind in der Beschreibung verschiedene Merkmale manchmal zusammen in einer einzelnen Ausführungsform, Figur oder Beschreibung davon zum Zwecke der Straffung der Offenbarung und zur Unterstützung beim Verständnis verschiedener erfindungsgemäßer Aspekte gruppiert. Dieses Verfahren der Offenbarung ist jedoch nicht auszulegen als Wiedergabe einer Intention, dass die Erfindung mehr Merkmale erfordern soll, als in jedem einzelnen Anspruch ausdrücklich aufgeführt ist. Stattdessen liegen, wie in den folgenden Ansprüchen wiedergegeben, erfindungsgemäße Aspekte in weniger als allen Merkmalen einer einzelnen offenbarten Ausführungsform. Daher werden die Ansprüche im Anschluss an die ausführliche Beschreibung hiermit ausdrücklich in diese ausführliche Beschreibung übernommen, wobei jeder Anspruch als eine separate Ausführungsform der Erfindung für sich selbst steht.
  • BEISPIELHAFTE AUSFÜHRUNGSFORMEN
  • Die folgenden Beispiele betreffen weitere Ausführungsformen. Einzelheiten in den Beispielen können an beliebiger Stelle in einer oder mehreren Ausführungsformen verwendet werden.
  • Beispiel 1 ist ein Prozessor, aufweisend eine Mehrzahl von Caches auf einer Mehrzahl von unterschiedlichen Cache-Ebenen und eine Decodiereinheit zum Decodieren einer Abrufanweisung. Die Abrufanweisung dienst zur Angabe von Adressinformation für eine Speicherposition, und die Abrufanweisung dient zur Angabe einer Cache-Ebene der Mehrzahl von unterschiedlichen Cache-Ebenen. Der Prozessor weist auch eine Cache-Steuerung auf, gekoppelt mit der Decodiereinheit und gekoppelt mit einem Cache auf der angegebenen Cache-Ebene. Die Cache-Steuerung dient zum Speichern von mit der Speicherposition im Cache assoziierten Daten als Reaktion auf die Abrufanweisung. Der Abschluss der Abrufanweisung ist durch die Architektur gewährleistet.
  • Beispiel 2 weist den Prozessor von Beispiel 1 auf, wobei die Abrufanweisung durch den Prozessor als Bedarfsladung durchgeführt werden soll.
  • Beispiel 3 weist den Prozessor von Beispiel 1 auf, wobei die Abrufanweisung durch den Prozessor mit der gleichen Priorität ausgeführt werden soll wie eine Ladeanweisung, die zum Laden von Daten von einer Speicherposition zu einem Architekturregister des Prozessors eingesetzt werden soll.
  • Beispiel 4 weist den Prozessor von Beispiel 1 auf, wobei die Decodiereinheit auch eine Vorabruf-Anweisung decodieren soll, die Adressinformation für eine Speicherposition angeben soll, und wobei der Abschluss der Vorabruf-Anweisung nicht durch die Architektur gewährleistet ist.
  • Beispiel 5 weist den Prozessor von Beispiel 1 auf, wobei der Prozessor die Performanz der Abrufanweisung abschließen soll, ohne die mit der Speicherposition assoziierten Daten in beliebigen Architekturregistern des Prozessors zu speichern.
  • Beispiel 6 weist den Prozessor von einem der Beispiele 1 bis 5 auf, wobei die Decodiereinheit die Abrufanweisung decodieren soll, die ein Angabefeld der Cache-Ebene erhalten soll, um einen Wert zur Angabe der Cache-Ebene aufzuweisen.
  • Beispiel 7 weist den Prozessor von einem der Beispiele 1 bis 5 auf, wobei die Decodiereinheit die Abrufanweisung decodieren soll, sodass angegeben werden soll, dass die Cache-Ebene ein beliebiger aus mindestens einem Daten-Cache der ersten Ebene (L1) und einem L1-Anweisungs-Cache ist.
  • Beispiel 8 weist den Prozessor von Beispiel 7 auf, wobei die Decodiereinheit die Abrufanweisung decodieren soll, sodass angegeben werden soll, dass die Cache-Ebene ein beliebiger aus mindestens einem L1-Daten-Cache, dem L1-Anweisungs-Cache, einem Cache der zweiten Ebene (L2) und einem Cache der dritten Ebene (L3) ist.
  • Beispiel 9 weist den Prozessor von einem der Beispiele 1 bis 5 auf, wobei die Decodiereinheit die Abrufanweisung decodieren soll, die einen Datenumfang angeben soll, der im Cache gespeichert werden soll.
  • Beispiel 10 weist den Prozessor von Beispiel 9 auf, wobei die Abrufanweisung den Datenumfang, der im Cache gespeichert werden soll, als einen beliebigen von mindestens vier unterschiedlichen Datenumfängen angeben soll. Optional sollen auch die mindestens vier unterschiedlichen Datenumfänge von einer einzelnen Cache-Leitung zu einer maximalen Anzahl von Cache-Leitungen reichen, die in eine Seite passen.
  • Beispiel 11 weist den Prozessor von Beispiel 9 auf, wobei die Decodiereinheit die Abrufanweisung decodieren soll, die ein Datenumfangsfeld umfassen soll, um einen Wert zur Angabe des Datenumfangs aufzuweisen.
  • Beispiel 12 umfasst den Prozessor von einem der Beispiele 1 bis 5, ferner umfassend eine Commit-Einheit. Dabei soll optional die Commit-Einheit auch die Abrufanweisung freischalten, bevor die mit der Speicherposition assoziierten Daten im Cache gespeichert worden sind.
  • Beispiel 13 ist ein durch einen Prozessor durchgeführtes Verfahren, aufweisend das Empfangen einer Abrufanweisung beim Prozessor. Die Abrufanweisung dienst zur Angabe von Adressinformation für eine Speicherposition, und die Abrufanweisung dient zur Angabe einer Cache-Ebene als einer der Mehrzahl von unterschiedlichen Cache-Ebenen. Das Verfahren umfasst als Reaktion auf die Abrufanweisung auch das Speichern von mit der Speicherposition assoziierten Daten in einem Cache des Prozessors, der auf der angegebenen Cache-Ebene ist. Der Abschluss der Abrufanweisung durch den Prozessor ist durch die Architektur gewährleistet.
  • Beispiel 14 weist den Prozessor von Beispiel 13 auf, ferner umfassend den Abschluss der Performanz der Abrufanweisung, ohne die mit der Speicherposition assoziierten Daten in beliebigen Architekturregistern des Prozessors zu speichern.
  • Beispiel 15 weist den Prozessor von Beispiel 13 auf, ferner aufweisend das Durchführen der Abrufanweisung mit einer gleichen Priorität wie eine Ladeanweisung, die zum Laden von Daten von einer Speicherposition zu einem Architekturregister des Prozessors verwendet wird.
  • Beispiel 16 weist das Verfahren von Beispiel 13 auf, ferner umfassend das Durchführen der Abrufanweisung als Bedarfsladung.
  • Beispiel 17 umfasst das Verfahren nach einem der Beispiele 13 bis 16, wobei Empfangen das Empfangen der Abrufanweisung umfasst, die einen Datenumfang angibt.
  • Beispiel 18 umfasst das Verfahren von Beispiel 17, wobei das Empfangen das Empfangen der Abrufanweisung aufweist, die den Datenumfang als einen beliebigen von mindestens vier unterschiedlichen Datenumfängen angeben kann, die von einer einzelnen Cache-Leitung bis zu einer maximalen Anzahl von Cache-Leitungen, die in eine Seite passen, reichen.
  • Beispiel 19 weist das Verfahren nach einem der Beispiele 13 bis 16 auf, wobei das Empfangen das Empfangen der Abrufanweisung aufweist, die die Cache-Ebene als einen beliebigen von mindestens einem Daten-Cache der ersten Ebene (L1), einem L1-Anweisungs-Cache und einem Cache der zweiten Ebene (L2) angeben kann.
  • Beispiel 20 weist das Verfahren nach einem der Beispiele 13 bis 16 auf, ferner umfassend das Freigeben der Abrufanweisung, bevor die mit der Speicherposition assoziierten Daten im Cache gespeichert werden.
  • Beispiel 21 weist das Verfahren nach einem der Beispiele 13 bis 16 auf, durchgeführt während der Durchführung einer Echtzeit-Anwendung auf dem Prozessor, der eine universelle zentrale Verarbeitungseinheit (CPU) ist.
  • Beispiel 22 ist ein System zum Verarbeiten von Anweisungen, aufweisend eine Verbindung und einen mit der Verbindung gekoppelten Prozessor. Der Prozessor weist eine Mehrzahl von Caches auf einer Mehrzahl von unterschiedlichen Cache-Ebenen auf. Der Prozessor empfängt eine Abrufanweisung. Die Abrufanweisung dienst zur Angabe von Adressinformation für eine Speicherposition und zur Angabe einer Cache-Ebene einer Mehrzahl von unterschiedlichen Cache-Ebenen. Der Prozessor speichert als Reaktion auf die Abrufanweisung mit der Speicherposition assoziierte Daten in einem Cache auf der angegebenen Cache-Ebene. Der Abschluss der Abrufanweisung ist durch die Architektur gewährleistet. Das System umfasst auch einen dynamischen Direktzugriffsspeicher (DRAM), der mit der Verbindung gekoppelt ist. Der DRAM speichert Anweisungen einer Echtzeit-Anwendung. Die Anweisungen der Echtzeit-Anwendung umfassen die Abrufanweisung. Die Anweisungen der Echtzeit-Anwendung verwenden die Abrufanweisung, um die Daten deterministisch in den Cache an der angegebenen Cache-Ebene zu speichern.
  • Beispiel 23 weist das System von Beispiel 23 auf, wobei die Abrufanweisung einen Datenumfang angeben soll.
  • Beispiel 24 ist ein Fertigungsartikel, aufweisend ein nichtflüchtiges maschinenlesbares Speichermedium. Das nicht vorübergehende maschinenlesbare Speichermedium speichert eine Abrufanweisung. Die Abrufanweisung dienst zur Angabe von Adressinformation für eine Speicherposition, und die Abrufanweisung dient zur Angabe einer Cache-Ebene als eine beliebige der Mehrzahl von unterschiedlichen Cache-Ebenen. Die Abrufanweisung soll bei Ausführung durch eine Maschine die Maschine veranlassen, Operationen durchzuführen, umfassend das Speichern von mit der Speicherposition assoziierten Daten in einem Cache des Prozessors, der auf der angegebenen Cache-Ebene ist. Der Abschluss der Abrufanweisung durch die Maschine ist durch die Architektur gewährleistet.
  • Beispiel 25 weist den Herstellungsartikel von Beispiel 24 auf, wobei das nicht vorübergehende maschinenlesbare Speichermedium ferner eine Gruppe von Anweisungen speichert, die bei Ausführung durch die Maschine die Maschine veranlassen, einen Echtzeit-Algorithmus zu implementieren. Optional weist die Gruppe von Anweisungen auch das Verwenden der Abrufanweisung zum deterministischen Speichern der Daten auf der angegebenen Cache-Ebene auf, wobei die Abrufanweisung einen Datenumfang angeben soll.
  • Beispiel 26 umfasst den Prozessor nach einem der Beispiele 1 bis 12, ferner umfassend eine optionale Verzweigungsvorhersageeinheit zum Vorhersagen von Verzweigungen, und eine optionale Befehlsvorabrufeinheit, gekoppelt mit der Verzweigungsvorhersageeinheit, wobei die Befehlsvorabrufeinheit Befehle, aufweisend die Abrufanweisung, vorab abrufen soll. Der Prozessor kann auch optional einen optionalen Level-1-Befehlscache (L1), gekoppelt mit der Befehlsvorabrufeinheit aufweisen, wobei der L1-Befehls-Cache Anweisungen speichert, einen optionalen L1-Daten-Cache zum Speichern von Daten und einen optionalen Level-2-Cache (L2) zum Speichern von Daten und Anweisungen umfasst. Der Prozessor kann auch optional eine Befehlsabrufeinheit aufweisen, gekoppelt mit der Decodiereinheit, dem L1-Befehls-Cache und dem L2-Cache, um die Abrufanweisung abzurufen, in einigen Fällen von dem L1-Befehls-Cache oder dem L2-Cache, und die Abrufanweisung zur Decodiereinheit bereitzustellen. Der Prozessor kann auch optional eine Registerumbennungseinheit zum Umbenennen von Registern aufweisen, einen optionalen Planer (Scheduler) zum Planen von einer oder mehreren Operationen, die von der Abrufanweisung zur Ausführung decodiert wurden, und eine optionale Commit-Einheit zum Freigeben von Ausführungsergebnissen der Abrufanweisung.
  • Beispiel 27 umfasst ein System-auf-Chip, aufweisend zumindest eine Verbindung, den Prozessor nach einem beliebigen der Beispiele 1 bis 12, gekoppelt mit der zumindest einen Verbindung, eine optische Grafikverarbeitungseinheit (GPU), gekoppelt mit der zumindest einen Verbindung, einen optionalen Digitalsignalprozessor (DSP), gekoppelt mit der zumindest einen Verbindung, eine optionale Anzeigesteuerung, gekoppelt mit der zumindest einen Verbindung, eine optionale Speichersteuerung, gekoppelt mit der zumindest einen Verbindung, ein optionales drahtloses Modem, gekoppelt mit der zumindest einen Verbindung, einen optionalen Bildsignalprozessor, gekoppelt mit der zumindest einen Verbindung, eine optionale mit USB (Universal Serial Bus) 3.0 kompatible Steuerung, gekoppelt mit der zumindest einen Verbindung, eine optionale mit Bluetooth 4.1 kompatible Steuerung, gekoppelt mit der zumindest einen Verbindung, und eine optionale drahtlose Sendeempfängersteuerung, gekoppelt mit der zumindest einen Verbindung.
  • Beispiel 28 ist ein Prozessor oder eine andere Vorrichtung, dazu betreibbar, das Verfahren nach einem der Beispiele 13 bis 21 durchzuführen.
  • Beispiel 29 ist ein Prozessor oder eine andere Vorrichtung, aufweisend Mittel zum Durchführen des Verfahrens nach einem der Beispiele 13 bis 21.
  • Beispiel 30 ist ein Prozessor oder eine andere Vorrichtung, aufweisend eine beliebige Kombination aus Modulen und/oder Einheiten und/oder Logik und/oder Schaltung und/oder Mitteln, dazu betreibbar, das Verfahren nach einem der Beispiele 13 bis 21 durchzuführen.
  • Beispiel 31 ist ein optional nicht vorübergehendes und/oder materielles maschinenlesbares Medium, das optional Befehle speichert oder sonst wie bereitstellt, aufweisend eine erste Anweisung, wobei die erste Anweisung, falls und/oder wenn sie ausgeführt wird durch einen Prozessor, ein Computersystem, eine elektronische Einrichtung oder eine andere Maschine, dazu betreibbar ist, die Maschine zu veranlassen, das Verfahren nach einem der Beispiele 13 bis 21 durchzuführen.
  • Beispiel 32 ist ein Prozessor oder eine andere Vorrichtung, im Wesentlichen entsprechend der hier wiedergegebenen Beschreibung.
  • Beispiel 33 ist ein Prozessor oder eine andere Vorrichtung, betreibbar zum Durchführen eines beliebigen Verfahrens im Wesentlichen entsprechend der hier wiedergegebenen Beschreibung.
  • Beispiel 34 ist ein Prozessor oder eine andere Vorrichtung, betreibbar zum Durchführen einer beliebigen Abrufanweisung, im Wesentlichen entsprechend der hier wiedergegebenen Beschreibung.
  • Beispiel 35 ist ein Computersystem oder eine andere elektronische Vorrichtung, umfassend einen Prozessor, der eine Decodiereinheit aufweist, dazu betreibbar, Anweisungen einer ersten Anweisungsmenge zu decodieren. Der Prozessor weist auch eine oder mehrere Ausführungseinheiten auf. Die elektronische Einrichtung umfasst auch eine mit dem Prozessor gekoppelte Speichereinrichtung. Die Speichereinrichtung ist dazu betreibbar, eine erste Anweisung zu speichern, die eine beliebige der Anweisungen, im Wesentlichen wie hier offenbart, sein kann und die aus einer zweiten unterschiedlichen Anweisungsmenge ist. Die Speichereinrichtung ist auch betreibbar, um Befehle zu speichern, um die erste Anweisung in eine oder mehrere Anweisungen der ersten Anweisungsmenge umzuwandeln. Die eine oder mehrere Anweisungen der ersten Anweisungsmengen bewirken bei Ausführung durch den Prozessor, dass der Prozessor veranlasst wird, Daten zu laden und die geladenen Daten zu speichern, wie es durch die erste Anweisung erfolgen würde.

Claims (25)

  1. Prozessor, umfassend: eine Mehrzahl von Caches auf einer Mehrzahl von unterschiedlichen Cache-Ebenen; eine Decodiereinheit zum Decodieren einer Abrufanweisung, wobei die Abrufanweisung Adressinformation für eine Speicherposition angeben soll und die Abrufanweisung eine Cache-Ebene der Mehrzahl von unterschiedlichen Cache-Ebenen angeben soll; und eine Cache-Steuerung, gekoppelt mit der Decodiereinheit und gekoppelt mit einem Cache auf der angegebenen Cache-Ebene, wobei die Cache-Steuerung als Reaktion auf die Abrufanweisung mit der Speicherposition assoziierte Daten im Cache speichern soll, wobei der Abschluss der Abrufanweisung durch die Architektur gewährleistet ist.
  2. Prozessor nach Anspruch 1, wobei die Abrufanweisung durch den Prozessor als Bedarfsladung durchgeführt werden soll.
  3. Prozessor nach Anspruch 1, wobei die Abrufanweisung durch den Prozessor mit der gleichen Priorität ausgeführt werden soll wie eine Ladeanweisung, die zum Laden von Daten von einer Speicherposition zu einem Architekturregister des Prozessors eingesetzt werden soll.
  4. Prozessor nach Anspruch 1, wobei die Decodiereinheit auch eine Vorabruf-Anweisung decodieren soll, die Adressinformation für eine Speicherposition angeben soll, und wobei der Abschluss der Vorabruf-Anweisung nicht durch die Architektur gewährleistet ist.
  5. Prozessor nach Anspruch 1, wobei der Prozessor die Performanz der Abrufanweisung abschließen soll, ohne die mit der Speicherposition assoziierten Daten in beliebigen Architekturregistern des Prozessors zu speichern.
  6. Prozessor nach einem der Ansprüche 1 bis 5, wobei die Decodiereinheit die Abrufanweisung decodieren soll, die ein Angabefeld der Cache-Ebene aufweisen soll, um einen Wert zur Angabe der Cache-Ebene aufzuweisen.
  7. Prozessor nach einem der Ansprüche 1 bis 5, wobei die Decodiereinheit die Abrufanweisung decodieren soll, sodass angegeben werden soll, dass die Cache-Ebene ein beliebiger aus mindestens einem Daten-Cache der ersten Ebene (L1) und einem LI-Anweisungs-Cache ist.
  8. Prozessor nach Anspruch 7, wobei die Decodiereinheit die Abrufanweisung decodieren soll, sodass angegeben werden soll, dass die Cache-Ebene ein beliebiger aus mindestens dem L1-Daten-Cache, dem L1-Anweisungs-Cache, einem Cache der zweiten Ebene (L2) und einem Cache der dritten Ebene (L3) ist.
  9. Prozessor nach einem der Ansprüche 1 bis 5, wobei die Decodiereinheit die Abrufanweisung decodieren soll, die einen Datenumfang angeben soll, der im Cache gespeichert werden soll.
  10. Prozessor nach Anspruch 9, wobei die Abrufanweisung den Datenumfang angeben soll, der im Cache gespeichert werden soll, als einen beliebigen von mindestens vier unterschiedlichen Datenumfängen, die von einer einzelnen Cache-Leitung bis zu einer maximalen Anzahl von Cache-Leitungen, die in eine Seite passen, reichen.
  11. Prozessor nach Anspruch 9, wobei die Decodiereinheit die Abrufanweisung decodieren soll, die ein Datenumfangsfeld umfassen soll, um einen Wert zur Angabe des Datenumfangs aufzuweisen.
  12. Prozessor nach einem der Ansprüche 1 bis 5, ferner umfassend eine Commit-Einheit, und wobei die Commit-Einheit die Abrufanweisung freigeben soll, bevor die mit der Speicherposition assoziierten Daten im Cache gespeichert worden sind.
  13. Verfahren, durchgeführt durch einen Prozessor, umfassend: Empfangen einer Abrufanweisung an einem Prozessor, wobei die Abrufanweisung Adressinformation für eine Speicherposition angibt und die Abrufanweisung eine Cache-Ebene als eine beliebige einer Mehrzahl von unterschiedlichen Cache-Ebenen angibt; und Speichern von mit der Speicherposition assoziierten Daten als Reaktion auf die Abrufanweisung in einem Cache des Prozessors, der auf der angegebenen Cache-Ebene ist, wobei der Abschluss der Abrufanweisung durch den Prozessor durch die Architektur gewährleistet ist.
  14. Verfahren nach Anspruch 13, ferner umfassend den Abschluss der Performanz der Abrufanweisung, ohne die mit der Speicherposition assoziierten Daten in beliebigen Architekturregistern des Prozessors zu speichern.
  15. Verfahren nach Anspruch 13, ferner aufweisend das Durchführen der Abrufanweisung mit einer gleichen Priorität wie eine Ladeanweisung, die zum Laden von Daten von einer Speicherposition zu einem Architekturregister des Prozessors verwendet wird.
  16. Verfahren nach Anspruch 13, ferner umfassend das Durchführen der Abrufanweisung als Bedarfsladung.
  17. Verfahren nach einem der Ansprüche 13 bis 16, wobei das Empfangen das Empfangen der Abrufanweisung, die einen Datenumfang angibt, umfasst.
  18. Verfahren nach Anspruch 17, wobei das Empfangen das Empfangen der Abrufanweisung umfasst, die den Datenumfang als einen beliebigen von mindestens vier unterschiedlichen Datenumfängen angeben kann, die von einer einzelnen Cache-Leitung bis zu einer maximalen Anzahl von Cache-Leitungen, die in eine Seite passen, reichen.
  19. Verfahren nach einem der Ansprüche 13 bis 16, wobei das Empfangen das Empfangen der Abrufanweisung umfasst, die die Cache-Ebene als einen beliebigen von mindestens einem Daten-Cache der ersten Ebene (L1), einem (L1)-Anweisungs-Cache und einem Cache der zweiten Ebene (L2) angeben kann.
  20. Verfahren nach einem der Ansprüche 13 bis 16, ferner umfassend das Freigeben der Abrufanweisung, bevor die mit der Speicherposition assoziierten Daten im Cache gespeichert werden.
  21. Verfahren nach einem der Ansprüche 13 bis 16, durchgeführt während der Durchführung einer Echtzeit-Anwendung auf dem Prozessor, der eine universelle zentrale Verarbeitungseinheit (CPU) ist.
  22. System zum Verarbeiten von Befehlen, umfassend: eine Verbindung; einen Prozessor, gekoppelt mit der Verbindung, wobei der Prozessor eine Mehrzahl von Caches auf einer Mehrzahl von unterschiedlichen Cache-Ebenen aufweist, der Prozessor eine Abrufanweisung empfängt, die Abrufanweisung Adressinformation für eine Speicherposition angibt und eine Cache-Ebene einer Mehrzahl von unterschiedlichen Cache-Ebenen angibt, der Prozessor als Reaktion auf die Abrufanweisung mit der Speicherposition assoziierte Daten in einem Cache auf der angegebenen Cache-Ebene speichert, wobei der Abschluss der Abrufanweisung durch die Architektur gewährleistet ist; und einen dynamischen Direktzugriffsspeicher (DRAM), gekoppelt mit der Verbindung, wobei der DRAM Anweisungen einer Echtzeit-Anwendung speichert, wobei die Anweisungen der Echtzeit-Anwendung die Abrufanweisung aufweisen, die Anweisungen der Echtzeit-Anwendung die Abrufanweisung verwenden, um die Daten deterministisch im Cache auf der angegebenen Cache-Ebene zu speichern.
  23. System nach Anspruch 23, wobei die Abrufanweisung einen Datenumfang angeben soll.
  24. Vorrichtung, die Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 13 bis 16 umfasst.
  25. Maschinenlesbares Medium, das eine Anweisung bereitstellt, die bei Ausführung durch eine Maschine betreibbar ist, um die Maschine zu veranlassen, das Verfahren nach einem der Ansprüche 13 bis 16 durchzuführen.
DE112017001700.9T 2016-04-01 2017-03-02 Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss Pending DE112017001700T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/088,327 2016-04-01
US15/088,327 US20170286118A1 (en) 2016-04-01 2016-04-01 Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion
PCT/US2017/020450 WO2017172240A1 (en) 2016-04-01 2017-03-02 Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion

Publications (1)

Publication Number Publication Date
DE112017001700T5 true DE112017001700T5 (de) 2018-12-13

Family

ID=59961557

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017001700.9T Pending DE112017001700T5 (de) 2016-04-01 2017-03-02 Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss

Country Status (5)

Country Link
US (1) US20170286118A1 (de)
CN (1) CN108885586B (de)
DE (1) DE112017001700T5 (de)
TW (1) TW201800948A (de)
WO (1) WO2017172240A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10198261B2 (en) * 2016-04-11 2019-02-05 Advanced Micro Devices, Inc. Flexible framework to support memory synchronization operations
US10317888B2 (en) * 2017-03-01 2019-06-11 PLETHORA IloT, S.L. Device and system including multiple devices for supervision and control of machines in industrial installation
CN109669897B (zh) * 2017-10-13 2023-11-17 华为技术有限公司 数据传输方法和装置
CN112540796B (zh) * 2019-09-23 2024-05-07 阿里巴巴集团控股有限公司 一种指令处理装置、处理器及其处理方法
US11586539B2 (en) * 2019-12-13 2023-02-21 Advanced Micro Devices, Inc. Adaptive cache management based on programming model information
WO2021235988A1 (en) * 2020-05-22 2021-11-25 Telefonaktiebolaget Lm Ericsson (Publ) Efficient loading of code portions to a cache
CN111427837B (zh) * 2020-06-11 2020-11-13 杭州万高科技股份有限公司 一种总线设备连接调整的异构多核处理器
US11847055B2 (en) * 2021-06-30 2023-12-19 Advanced Micro Devices, Inc. Approach for reducing side effects of computation offload to memory
US20240078114A1 (en) * 2022-09-07 2024-03-07 Microsoft Technology Licensing, Llc Providing memory prefetch instructions with completion notifications in processor-based devices

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778423A (en) * 1990-06-29 1998-07-07 Digital Equipment Corporation Prefetch instruction for improving performance in reduced instruction set processor
US5491811A (en) * 1992-04-20 1996-02-13 International Business Machines Corporation Cache system using mask bits to recorder the sequences for transfers of data through cache to system memory
US7529907B2 (en) * 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US6799263B1 (en) * 1999-10-28 2004-09-28 Hewlett-Packard Development Company, L.P. Prefetch instruction for an unpredicted path including a flush field for indicating whether earlier prefetches are to be discarded and whether in-progress prefetches are to be aborted
US7089368B2 (en) * 2002-02-12 2006-08-08 Ip-First, Llc Microprocessor apparatus and method for exclusively prefetching a block of cache lines from memory
US20040044881A1 (en) * 2002-08-28 2004-03-04 Sun Microsystems, Inc. Method and system for early speculative store-load bypass
US6957305B2 (en) * 2002-08-29 2005-10-18 International Business Machines Corporation Data streaming mechanism in a microprocessor
US7177985B1 (en) * 2003-05-30 2007-02-13 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7225297B2 (en) * 2004-05-28 2007-05-29 International Business Machines Corporation Compressed cache lines incorporating embedded prefetch history data
US8490065B2 (en) * 2005-10-13 2013-07-16 International Business Machines Corporation Method and apparatus for software-assisted data cache and prefetch control
US7451277B2 (en) * 2006-03-23 2008-11-11 International Business Machines Corporation Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation
US8533437B2 (en) * 2009-06-01 2013-09-10 Via Technologies, Inc. Guaranteed prefetch instruction
US8595471B2 (en) * 2010-01-22 2013-11-26 Via Technologies, Inc. Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register
US8683129B2 (en) * 2010-10-21 2014-03-25 Oracle International Corporation Using speculative cache requests to reduce cache miss delays
WO2013095401A1 (en) * 2011-12-20 2013-06-27 Intel Corporation System and method for out-of-order prefetch instructions in an in-order pipeline
US9244687B2 (en) * 2011-12-29 2016-01-26 Intel Corporation Packed data operation mask comparison processors, methods, systems, and instructions
US9612972B2 (en) * 2012-12-03 2017-04-04 Micron Technology, Inc. Apparatuses and methods for pre-fetching and write-back for a segmented cache memory
US9251377B2 (en) * 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
US9465744B2 (en) * 2014-07-29 2016-10-11 International Business Machines Corporation Data prefetch ramp implemenation based on memory utilization

Also Published As

Publication number Publication date
WO2017172240A1 (en) 2017-10-05
CN108885586B (zh) 2024-02-20
TW201800948A (zh) 2018-01-01
US20170286118A1 (en) 2017-10-05
CN108885586A (zh) 2018-11-23

Similar Documents

Publication Publication Date Title
DE112017001700T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss
DE112017001825T5 (de) Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher
DE102020120019A1 (de) Proaktive di/dt-spannungs-dachabfall-abschwächung
DE112017000721T5 (de) Verfahren, einrichtung und befehle für thread-aussetzung auf benutzerebene
DE112013004751T5 (de) Prozessor mit mehreren Kernen, gemeinsam genutzter Kernerweiterungslogik und gemeinsam genutzten Kernerweiterungsnutzungsbefehlen
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE102014003671A1 (de) Prozessoren, verfahren und systeme zum entspannen der synchronisation von zugriffen auf einen gemeinsam genutzten speicher
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE112017003340T5 (de) Unterbrechungsfähige und neustartfähige matrix-multiplikationsinstruktionen, prozessoren, verfahren, und systeme
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE102018125257A1 (de) Defragmentierter und effizienter mikrooperationscache
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
DE112012007115T5 (de) Wahlweise Logikprozessor-Zählung und Typauswahl für eine gegebene Arbeitsbelastung basierend auf Wärme- und Leistungsbudget-Einschränkungen der Plattform
DE102014003690A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE102016006402A1 (de) Persistente commit-prozessoren, verfahren, systeme und befehle
DE102014003705A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE112013005368T5 (de) Prozessoren, verfahren und systeme für echtzeit-befehlsverfolgung
DE112016007516T5 (de) Vorrichtungen und verfahren für eine prozessorarchitektur
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE102018132521A1 (de) Vorrichtung und verfahren zur verflachung und reduktion von schleifen in einer single instruction, multiple data- (simd-) pipeline
DE102015002254A1 (de) Verfahren und Gerät zum wirksamen Ausführen von Hash-Operationen
DE102018002294A1 (de) Effizientes bereichsbasiertes speicher-rückschreiben zum verbessern der host-zu-geräte-kommunikation für optimale energie und leistung
DE112017001716T5 (de) Speicherkopierbefehle, prozessoren, verfahren und systeme
DE102018004726A1 (de) Dynamisches Ausschalten und Einschalten von Prozessorkernen
DE112013004800T5 (de) Anweisung zur Bitverschiebung nach links mit Ziehen von Einsen in niedrigwertigere Bit

Legal Events

Date Code Title Description
R012 Request for examination validly filed