DE102015007423A1 - Speichersequentialisierung mit kohärenten und nicht kohärenten Teilsystemen - Google Patents

Speichersequentialisierung mit kohärenten und nicht kohärenten Teilsystemen Download PDF

Info

Publication number
DE102015007423A1
DE102015007423A1 DE102015007423.7A DE102015007423A DE102015007423A1 DE 102015007423 A1 DE102015007423 A1 DE 102015007423A1 DE 102015007423 A DE102015007423 A DE 102015007423A DE 102015007423 A1 DE102015007423 A1 DE 102015007423A1
Authority
DE
Germany
Prior art keywords
memory
operations associated
functional units
operations
noco
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.)
Withdrawn
Application number
DE102015007423.7A
Other languages
English (en)
Inventor
Chunhui Zhang
George Z. Chrysos
Edward T. Grochowski
Ramacharan Sundararaman
Chung-Lun Chan
Federico Ardanaz
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 DE102015007423A1 publication Critical patent/DE102015007423A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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
    • 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/3824Operand accessing
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Operationen, die einem Speicher zugeordnet sind, und Operationen, die einer oder mehreren Funktionseinheiten zugeordnet sind, können empfangen werden. Eine Abhängigkeit zwischen den Operationen, die dem Speicher zugeordnet sind, und den Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet sind, kann ermittelt werden. Eine erste Reihenfolge kann für die Operationen erzeugt werden, die dem Speicher zugeordnet sind. Außerdem kann für die Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet sind, auf der Grundlage der ermittelten Abhängigkeit und der ersten Reihenfolge für die Operationen, die dem Speicher zugeordnet sind, eine zweite Reihenfolge erzeugt werden.

Description

  • Technisches Gebiet
  • Die hier beschriebenen Ausführungsformen beziehen sich allgemein auf eine Speichersequentialisierung und insbesondere auf eine Speichersequentialisierung mit kohärenten und nicht kohärenten Teilsystemen.
  • Hintergrund
  • Eine Verarbeitungseinheit kann auf einer Architektur beruhen, die einen Speicher und Funktionseinheiten umfasst. Ein Prozessorkern der Verarbeitungseinheit kann den Funktionseinheiten Verarbeitungsaufgaben oder -funktionen zuweisen. Der Prozessorkern kann zum Beispiel Daten in dem Speicher speichern und kann außerdem einen Befehl an eine Funktionseinheit ausgeben, um eine Operation an den Daten auszuführen, nachdem sie in dem Speicher gespeichert wurden.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist ein Blockschaltbild, das ein Computersystem darstellt, das ein Speicherdatenstrommodul umsetzt, um eine Speicherordnung oder Speichersequentialisierung gemäß einigen Ausführungsformen bereitzustellen.
  • 2 ist ein Blockschaltbild eines Speicherdatenstrommoduls gemäß einiger Ausführungsformen der Offenbarung.
  • 3 ist ein Ablaufplan eines Verfahrens zum Ausführen von Speicheroperationen und nicht kohärenten Triggern (NOn-COherent triggers, NOCO-Trigger) gemäß einiger Ausführungsformen.
  • 4A stellt eine beispielhafte Sequenz von Speicheroperationen und NOCO-Triggern gemäß einigen Ausführungsformen dar.
  • 4B stellt eine weitere beispielhafte Sequenz von Speicheroperationen und NOCO-Triggern gemäß einigen Ausführungsformen dar.
  • 4C stellt eine weitere beispielhafte Sequenz von Speicheroperationen und NOCO-Triggern gemäß einigen Ausführungsformen dar.
  • 5 stellt ein Verfahren zum Hinzufügen einer Abhängigkeit zu einer Sequenz von Speicheroperationen und NOCO-Triggern aufgrund einer Weiterleitung einer Speicheroperation gemäß einigen Ausführungsformen der Offenbarung dar.
  • 6 stellt eine beispielhafte Architektur dar, um einen NOCO-Trigger gemäß einiger Ausführungsformen der Offenbarung zu erkennen.
  • 7 stellt ein Blockschaltbild der Mikroarchitektur für einen Prozessor dar, der Logikschaltkreise umfasst, um Prüfpunkte zu verwalten, die gemäß einer Ausführungsform einer Anweisungspipeline für eine fehlende Sortierung zugeordnet sind.
  • 8 ist ein Blockschaltbild eines Computersystems gemäß einer Umsetzung.
  • 9 ist ein Blockschaltbild eines Computersystems gemäß einer weiteren Umsetzung.
  • 10 ist ein Blockschaltbild eines Ein-Chip-Systems gemäß einer Umsetzung.
  • 11 stellt eine weitere Umsetzung eines Blockschaltbildes für ein Computersystem dar.
  • 12 stellt eine weitere Umsetzung eines Blockschaltbildes für ein Computersystem dar.
  • Beschreibung der Ausführungsformen
  • Aspekte der vorliegenden Offenbarung richten sich auf eine Technologie für ein Speichersequentialisieren in einer Verarbeitungsarchitektur mit kohärenten und nicht kohärenten Teilsystemen oder Anteilen. Die Technologie für ein Speichersequentialisieren kann verwendet werden, um die Leistungsfähigkeit eines Prozessors, einer Verarbeitungseinheit oder eines prozessorgestützten Systems zu verbessern. Die Technologie für ein Speichersequentialisieren kann zum Beispiel verwendet werden, um die Leistungsfähigkeit einer Verarbeitungseinheit zu verbessern, indem Eigenschaften definiert werden, die bei den Operationen (z. B. Speicherlesevorgängen und Speicherschreibvorgängen) zwischen den verschiedenen Teilen der Verarbeitungseinheit erzwungen werden. Eine Verarbeitungseinheit kann einen Prozessorkern, mehrere Funktionseinheiten und einen Speicher umfassen. Der Prozessorkern kann eine Aufgabe auslagern, sodass sie von einer Funktionseinheit ausgeführt wird. Zum Beispiel kann der Prozessorkern eine erste Operation ausgeben, die einem Speichern einer Anweisung oder eines Befehls und von Daten in dem Speicher entspricht, und kann eine zweite Operation ausgeben, die dem Übertragen eines Befehls (z. B. eines Triggers) an eine Funktionseinheit entspricht, um eine Funktion oder Operation an den Daten aufgrund der Anweisung oder dem Befehl auszuführen, die in dem Speicher gespeichert ist. Die Verarbeitungseinheit kann ein Speicherdatenstrommodul umfassen, das Funktionsblöcke umfasst, die verwendet werden können, um Abhängigkeiten für Operationen zu definieren, die aufgrund von Operationen, die dem Speicher der Verarbeitungseinheit zugeordnet sind, einer oder mehreren Funktionseinheiten zugeordnet werden.
  • Eine Verarbeitungseinheit kann ein nicht kohärentes Teilsystem oder einen nicht kohärenten Anteil und ein kohärentes Teilsystem oder einen nicht kohärenten Anteil umfassen. Zum Beispiel kann der Speicher der Verarbeitungseinheit einen Teil des kohärenten Teilsystems bilden und eine oder mehrere Funktionseinheiten können einen Teil des nicht kohärenten Teilsystems bilden. Auf einen solchen Speicher kann als ein kohärenter Speicher Bezug genommen werden und auf eine solche Funktionseinheit kann als eine nicht kohärente (NOn-COherent, NOCO) Funktionseinheit Bezug genommen werden. Die NOCO-Funktionseinheiten können eine Funktionseinheit sein, die sich außerhalb des Prozessorkerns befindet. Der Prozessorkern kann zum Beispiel Funktionseinheiten umfassen und die NOCO-Funktionseinheiten können sich außerhalb des Prozessorkerns befinden. Eine NOCO-Funktionseinheit kann auch als ein Beschleuniger oder ein Block mit fester Funktion Bezug genommen werden. Kohärent und nicht kohärent können sich auf ein Konsistenzmodell beziehen. Bei einigen Ausführungsformen kann das Konsistenzmodell Regeln für die Speicheroperationen definieren (z. B. Schreibvorgänge in den Speicher und Lesevorgänge durch Funktionseinheit, um Daten aus dem Speicher abzurufen). Zum Beispiel kann sich ein kohärenter Speicher auf einen Speicher beziehen, der durch eine oder mehrerer Ausführungseinheiten oder Funktionseinheiten oder Prozessoren gelesen und/oder beschrieben wird und eine nicht kohärente Funktionseinheit kann sich auf eine Funktionseinheit beziehen, die eine separate Kopie der Daten, die von dem kohärenten Speicher getrennt sind, speichert oder diesen Daten zugeordnet ist. Auf eine solche Funktionseinheit kann auch als ein. Beschleuniger Bezug genommen werden. Somit kann auf eine Verarbeitungseinheit, die sowohl einen kohärenten Speicher als auch eine oder mehrere nicht kohärente Funktionseinheiten umfasst, als ein kohärentes und nicht kohärentes System Bezug genommen werden. Bei einigen Ausführungsformen kann auf eine Operation, die einem kohärenten Speicher zugeordnet ist, als eine Speicheroperation (z. B. ein Lese- oder Schreibvorgang für den kohärenten Speicher) Bezug genommen werden und auf eine Operation, die einer nicht kohärenten Funktionseinheit zugeordnet ist, kann als ein NOCO-Trigger Bezug genommen werden. Da die NOCO-Funktionseinheiten und der kohärente Speicher mit getrennt gespeicherten Kopien der gleichen Daten arbeiten, kann die Ausführung von Operationen, welche die Daten verwenden, folglich bestimmte Abhängigkeiten erfordern, um die definierten Regeln für die Operationen einzuhalten.
  • Moderne mikroprozessorgestützte Produkte einschließlich eines Ein-Chip-Systems (System an a Chip, SoC), Clients, Servern und Hardwarebeschleunigern können eine Verarbeitungsarchitektur verwenden, die einen kohärenten Speicher und nicht kohärente Funktionseinheiten verwendet. Ein Modul zum Speichersequentialisieren kann verwendet werden, um gegenseitige Beeinflussungen zwischen den Operationen, die dem kohärenten Speicher zugeordnet sind, und den Operationen zu definieren, die den nicht kohärenten Funktionseinheiten zugeordnet sind. Bei einigen Ausführungsformen kann das Modul zum Speichersequentialisieren verwendet werden, um eine Abhängigkeit zwischen einer Operation für die NOCO-Funktionseinheit (z. B. den NOCO-Trigger) und einer Operation für den kohärenten Speicher (z. B. die Speicheroperation) zu definieren. Bei einigen Ausführungsformen kann der NOCO-Trigger ein Befehl an die NOCO-Funktionseinheit sein, Befehle oder Anweisungen abzurufen, die in dem kohärenten Speicher gespeichert sind. Auf diese Befehle oder Anweisungen, die in dem kohärenten Speicher gespeichert sind, kann als ein Steuerblock (Control Block, CB) Bezug genommen werden. Somit kann eine erste Operation (z. B. die Speicheroperation) von einem Prozessorkern dem Schreiben oder Lesen eines Steuerblocks aus dem oder in den kohärenten Speicher entsprechen und eine zweite Operation (z. B. ein NOCO-Trigger) von dem Prozessorkern kann dem Lesen und Abrufen des Steuerblocks aus dem kohärenten Speicher entsprechen und nachfolgende Operationen werden von der NOCO-Funktionseinheit ausgeführt. Von daher kann der NOCO-Trigger für die NOCO-Funktionseinheit abhängig sein von der Operation des kohärenten Speichers. Bei einigen Ausführungsformen kann sich eine solche Abhängigkeit darauf beziehen, dass der NOCO-Trigger für die NOCO-Funktionseinheit nicht ausgeführt oder nicht von dem Prozessorkern an die NOCO-Funktionseinheit übertragen wird, bis eine spezielle Speicheroperation für den kohärenten Speicher beendet wurde.
  • Wie weiter unten ausführlicher beschrieben wird, kann das Speicherdatenstrommodul einen ersten Datenstrom oder eine erste Sequenz von Speicheroperationen für den kohärenten Speicher und einen zweiten Datenstrom oder eine zweite Sequenz von NOCO-Triggern für die NOCO-Funktionseinheiten bereitstellen. Bei einigen Ausführungsformen kann der zweite Datenstrom oder die zweite Sequenz von NOCO-Triggern für die NOCO-Funktionseinheiten abhängig sein von dem ersten Datenstrom oder der ersten Sequenz von Speicheroperationen für den kohärenten Speicher. Zum Beispiel kann das Ausführen eines Triggers für eine NOCO-Funktionseinheit eingeschränkt sein, bis eine ältere Speicheroperation (z. B. ein Lesevorgang, der früher ausgegeben wurde) für den kohärenten Speicher ausgeführt wurde.
  • Dieses Ordnen zwischen den Speicheroperationen für den kohärenten Speicher und den Triggern für die NOCO-Funktionseinheiten kann die Gesamtleistungsfähigkeit einer Verarbeitungseinheit verbessern, die sowohl kohärente Teilsysteme als auch nicht kohärente Teilsysteme umfasst. Zum Beispiel kann das von dem Speicherdatenstrommodul verwendete Konsistenzmodell einen ersten Datenstrom für den kohärenten Speicher erzeugen, wobei der erste Datenstrom eine Ausführung von Operationen bei einer fehlenden Sortierung erlauben kann (z. B. kann ein spezieller Vorgang vor einen früheren Vorgang ausgeführt werden), während das Konsistenzmodell einen andern Datenstrom für die NOCO-Funktionseinheiten aufweist, der in einer sequenzielleren und geordneteren Weise ausgeführt wird, während er auch teilweise von einer Speicheroperation abhängig ist. Dieses Konsistenzmodell kann ein schnelleres Ausführen von Speicheroperationen erlauben, obwohl auch NOCO-Funktionseinheiten verwendet werden.
  • 1 ist ein Blockschaltbild, das gemäß einiger Ausführungsformen ein Computersystem 100 darstellt, das ein Speicherdatenstrommodul 107 zum Bereitstellen und Aktualisieren von Speichersequenzen umsetzt, die einem Speicher 120 und einer oder mehreren NOCO-Funktionseinheiten 130 zugeordnet sind. Das Computersystem 100 wird mit einem Prozessor 102 gebildet, der einen Prozessorkern umfasst, der Jobs oder Vorgänge auslagern kann, damit sie in einer oder mehreren NOCO-Funktionseinheiten 130 beendet werden. Kurz gesagt behält und aktualisiert das Speicherdatenstrommodul 107 die Speichersequenzen für den Speicher 120 und für die NOCO-Funktionseinheiten 130, die verwendet werden können, um zu definieren, wann die Speicheroperationen für den Speicher 120 und/oder die NOCO-Trigger für die NOCO-Funktionseinheiten 130 ausgeführt werden können. Zum Beispiel kann das Speicherdatenstrommodul 107 sowohl eine spezielle Reihenfolge für das Ausführen von Speicheroperationen sowohl für den Speicher 120 als auch für die NOCO-Trigger für die NOCO-Funktionseinheiten 130 definieren und steuern als auch eine Abhängigkeit für einen NOCO-Trigger für die NOCO-Funktionseinheiten 130 aufgrund einer Speicheroperation für den Speicher 120 definieren und erzwingen. Zusätzliche Einzelheiten hinsichtlich des Speicherdatenstrommoduls 107 werden weiter unten in Bezug auf die 2 bis 6 ausführlicher beschrieben.
  • Das Computersystem 100 umfasst eine Komponente wie zum Beispiel einen Prozessor 102, um Ausführungseinheiten 108 einschließlich einer Logik zum Ausführen von Algorithmen für das Verarbeiten von Daten gemäß der hier beschriebenen Ausführungsformen einzusetzen. Das System 100 steht stellvertretend für Verarbeitungssysteme, die auf den PENTIUM IIITM, PENTIUM 4TM, XeonTM, Itanium, XScaleTM und/oder StrongARMTM Mikroprozessoren beruhen, die von der Intel Corporation aus Santa Clara, Kalifornien zur Verfügung stehen, obwohl auch andere Systeme (einschließlich PCs, die andere Mikroprozessoren aufweisen, Technik-Workstations, Beistellgeräte (set-top boxes), und Ähnliche) verwendet werden können. Bei einer Ausführungsform führt ein beispielhaftes Computersystem 100 eine Version des WINDOWSTM Betriebssystems, das von der Microsoft Corporation aus Redmond, Washington, zur Verfügung steht, obwohl auch andere Betriebssysteme (z. B. UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen verwendet werden können. Somit sind die Ausführungsformen der vorliegenden Offenbarung nicht auf irgendeine spezifische Kombination von Hardwareschaltungen und Software beschränkt.
  • Die Ausführugsformen sind nicht auf Computersysteme beschränkt. Alternative Ausführungsformen der vorliegenden Offenbarung können in anderen Einheiten wie zum Beispiel tragbaren Einheiten und eingebetteten Anwendungen verwendet werden. Zu den Beispielen von tragbaren Einheiten können, ohne auf diese beschränkt zu sein, Mobiltelefone, Internetprotokollgeräte, digitale Kameras, persönliche Datenassistenten (Personal Digital Assistants, PDAs) und tragbare PCs gehören. Zu den eingebetteten Anwendungen können, ohne auf diese beschränkt zu sein, eine Mikrosteuereinheit, ein digitaler Signalprozessor (Digital Signal Prozessor, DSP), ein Ein-Chip-System (System an a Chip, SoC), Netzwerkcomputer (NetPC), Beistellgeräte, Netzwerkknoten, Fernnetzschalter (Wide Area Network switches, WAN-Schalter) oder jedes andere System gehören, das eine oder mehrere Anweisungen gemäß mindestens einer Ausführungsform ausführen kann.
  • In der in 1 dargestellten Ausführungsform umfasst der Prozessor 102 eine oder mehrere Ausführungseinheiten 108, um einen Algorithmus umzusetzen, der mindestens eine Anweisung ausführt. Eine Ausführungsform kann im Zusammenhang mit einem Ein-Prozessor-Desktopsystem oder einem Serversystem beschrieben werden, aber alternative Ausführungsformen können in Mehrprozessorsystemen enthalten sein. Das System 100 kann ein Beispiel einer „Knoten”-Systemarchitektur sein. Das Computersystem 100 umfasst einen Prozessor 102, um Datensignale zu verarbeiten. Der Prozessor 102 umfasst als ein anschauliches Beispiel einen Computermikroprozessor mit komplexem Befehlssatz (Complex Instruction Set Computer microprocessor, CISC-Mikropropzessor), einen Computermikroprozessor mit eingeschränktem Befehlssatz (Reduced Instruction Set Computer microprocessor, RISC-Mikropropzessor), einen Mikroprozessor mit einem sehr langem Befehlswort (Very Long Instruction Word, VLIW), einen Prozessor, der eine Kombination von Anweisungssätzen umsetzt, einen auf eine fehlende Sortierung gestützten Prozessor oder eine beliebige andere Prozessoreinheit wie zum Beispiel einen digitalen Signalprozessor. Der Prozessor 102 ist mit einem Prozessorbus 110 verbunden, der Datensignale zwischen dem Prozessor 102 und anderen Komponenten in dem System 100 wie zum Beispiel dem Hauptspeicher 120 überträgt, in dem Anweisungen, Daten oder eine beliebige Kombination davon gespeichert werden. Zu den anderen Komponenten des Systems 100 können gehören, ohne auf diese beschränkt zu sein, ein Knoten für eine Speichersteuereinheit, ein Knoten für eine I/O-Steuereinheit, ein drahtloser Transceiver, ein Flash-BIOS, eine Netzwerksteuereinheit, eine Audiosteuereinheit, ein serieller Erweiterungsanschluss und eine I/O-Steuereinheit. Diese Elemente führen ihre herkömmlichen Funktionen aus, die dem Fachmann bekannt sind.
  • Bei einer Ausführungsform umfasst der Prozessor 102 einen internen Cachespeicher der Ebene 1 (Level 1 cache memory, L1-Cachespeicher) 104. Abhängig von der Architektur kann der Prozessor 102 einen einzigen internen Cachespeicher oder mehrere Ebenen eines internen Cachespeichers (z. B. L1 und L2) aufweisen. Andere Ausführungsformen umfassen eine Kombination sowohl aus internen als auch aus externen Cachespeichern abhängig von der speziellen Umsetzung und Erfordernis. Eine Registerdatei 106 speichert unterschiedliche Arten von Daten in verschiedenen Registern einschließlich, ohne auf diese beschränkt zu sein, Ganzzahlenregister, Gleitkommazahlenregister, Vektorregister, unterteilte Register, Schattenregister, Prüfpunktregister, Statusregister, Konfigurationsregister und Befehlszeigerregister.
  • Die Ausführungseinheit 108, die eine Logik zum Ausführen von Ganzzahlenoperationen und Gleitkommazahlenoperationen umfasst, ist auch in dem Prozessor 102 vorhanden. Es wird darauf hingewiesen, dass die Ausführungseinheit gegebenenfalls eine Gleitkommaeinheit aufweist. Der Prozessor 102 umfasst bei einer Ausführungsform einen Mikrocode-ROM (μ-Code-ROM), um einen Mikrocode zu speichern, der, wenn er ausgeführt wird, Algorithmen für bestimmte Makroanweisungen ausführt oder komplexe Szenarien erledigt. Hierbei ist der Mikrocode potenziell aktualisierbar, um logische Fehler/Reparaturen für den Prozessor 102 zu erledigen. Alternative Ausführungsformen einer Ausführungseinheit 108 können auch in Mikrosteuereinheiten, eingebetteten Prozessoren, Grafikeinheiten, DSPs und weiteren Arten von logischen Schaltkreisen verwendet werden.
  • Das System 100 umfasst einen Hauptspeicher 120. Zu dem Hauptspeicher 120 können gehören, ohne auf diese beschränkt zu sein, eine dynamische Direktzugriffsspeichereinheit(Dynamic Random Access Memory unit, DRAM)-Einheit, eine statische Direktzugriffsspeichereinheit(Static Random Access Memory unit, SRAM)-Einheit, eine Flashspeichereinheit oder eine andere Speichereinheit. Der Hauptspeicher 120 speichert Anweisungen und/oder Daten, die durch Datensignale dargestellt werden, die von dem Prozessor 102 ausgeführt werden. Der Prozessor 102 ist über einen Prozessorbus 110 mit dem Hauptspeicher 120 verbunden. Ein Systemlogikchip wie zum Beispiel ein Knoten für eine Speichersteuereinheit (Memory Controller Hub, MCH) kann mit dem Prozessorbus 110 und dem Hauptspeicher 120 verbunden sein. Ein MCH kann einen Speicherpfad mit hoher Bandbreite zum Speicher 120 bereitstellen, um Anweisungen und Daten zu speichern und um Grafikbefehle, Daten und Texturen zu speichern. Der MCH kann verwendet werden, um Daten zwischen dem Prozessor 102, dem Hauptspeicher 120 und anderen Komponenten in dem System 100 zu lenken und die Datensignale zum Beispiel zwischen dem Prozessorbus 110, dem Hauptspeicher 120 dem Cachespeicher 104 und dem System-I/O weiterzuleiten. Der MCH kann durch eine Speicherschnittstelle mit dem Hauptspeicher 120 verbunden werden. Bei einigen Ausführungsformen kann der Systemlogikchip einen Grafikanschluss zum Verbinden mit einer Grafiksteuereinheit über eine Grafikanschlussverbindung (Accelerated Graphics Port interconnect, AGP-Verbindung) bereitstellen. Das System 100 kann auch einen Knoten für eine I/O-Steuereinheit (I/O Controller Hub, ICH) umfassen. Der ICH kann direkte Verbindungen zu einigen I/O-Einheiten über einen lokalen I/O-Bus bereitstellen. Der lokale I/O-Bus ist ein Hochgeschwinidgkeits-I/O-Bus zum Verbinden von peripheren Einheiten mit dem Hauptspeicher 120, einem Chipsatz und dem Prozessor 102. Einige Beispiele sind die Audiosteuereinheit, ein Firmwareknoten (Flash-BIOS), ein drahtloser Transceiver, ein Datenspeicher, eine Vorgänger-I/O-Steuereinheit, die einen Benutzereingang und Tastaturschnittstellen enthält, ein serieller Erweiterungsanschluss wie zum Beispiel ein Universal Serial Bus (USB) und eine Netzwerksteuereinheit. Die Datenspeichereinheit kann ein Festplattenlaufwerk ein Diskettenlaufwerk, ein CD-ROM-Gerät, eine Flashspeichereinheit oder eine andere Massenspeichereinheit umfassen.
  • Für eine weitere Ausführungsform eines Systems kann das Speicherdatenstrommodul 107 mit einem Ein-Chip-System verwendet werden. Der Speicher für eines dieser Systeme kann ein Flashspeicher sein. Der Flashspeicher kann auf dem gleichen Chip wie der Prozessor und die anderen Systemkomponenten angebracht sein. Außerdem können auch weitere Logikblöcke wie zum Beispiel eine Speichersteuereinheit oder eine Grafiksteuereinheit in dem Ein-Chip-System angebracht sein.
  • Eine Ausführungsform eines Ein-Chip-Systems umfasst einen Prozessorkern, einen kohärenten Speicher (z. B. den Speicher 120) und eine oder mehrere nicht kohärente Funktionseinheiten (z. B. die NOCO-Funktionseinheiten 130). Bei einigen Ausführungsformen kann der Prozessorkern ein Speicherdatenstrommodul 107 umfassen, um sowohl die Speicheroperationen für den Speicher 120 als auch die NOCO-Trigger für die NOCO-Funktionseinheiten 130 zu steuern. Bei einigen Ausführungsformen kann der Prozessorkern zum Beispiel Vorgänge oder Operationen an den kohärenten Speicher und die NOCO-Funktionseinheit 130 übertragen. Bei einigen Ausführungsformen kann der Prozessorkern eine Speicheroperation (z. B. einen Lese- oder Schreibvorgang) an den kohärenten Speicher übertragen. Die Speicheroperation kann Anweisungen und Befehle in dem Speicher speichern. Auf diese Befehle oder Anweisungen kann als ein Steuerblock (Control Block, CB) Bezug genommen werden. Bei einigen Ausführungsformen kann der CB in einem vordefinierten und spezifischen Bereich des kohärenten Speichers 120 gespeichert werden. Der Prozessorkern kann außerdem eine NOCO-Triggeroperation an eine der NOCO-Funktionseinheiten 130 übertragen. Zum Beispiel kann die NOCO-Triggeroperation über einen im Speicher abgebildeten Eingabe/Ausgabe-Schreibvorgang (IO-Schreibvorgang) übertragen werden, der von dem Prozessorkern des Prozessors 102 ausgegeben wird. Nach dem Empfangen des NOCO-Triggers von dem Prozessorkern kann die NOCO-Funktionseinheit den CB aus dem kohärenten Speicher 120 abrufen und die NOCO-Funktionseinheit 130 kann Operationen auf der Grundlage des abgerufenen CB ausführen. Die NOCO-Funktionseinheit 130 kann zum Beispiel Daten abrufen, die dem CB entsprechen und Operationen mit den Daten auf Grundlage von Anweisungen und einem Standort der Daten ausführen, der in dem CB identifiziert sein kann. Nachfolgend kann die NOCO-Funktionseinheit 130 die Daten auf der Grundlage des CB verarbeiten und die verarbeiteten Daten in den kohärenten Speicher 120 schreiben. Die NOCO-Funktionseinheit 130 kann zum Beispiel einen Schreibvorgang in den kohärenten Speicher 120 starten, um die verarbeiteten Daten an einem anderen Standort in dem kohärenten Speicher 120 zu speichern. Außerdem kann die NOCO-Funktionseinheit 130 den CB als beendet kennzeichnen oder markieren, nachdem die Daten auf der Grundlage des CB verarbeitet wurden.
  • Bei einigen Ausführungsformen kann zu der NOCO-Funktionseinheit, ohne auf diese beschränkt zu sein, eine Grafiksteuereinheit, ein Grafikprozessor oder eine Grafikverarbeitungseinheit, eine Netzwerksteuereinheit, ein Netzwerkprozessor oder eine Netzwerkverarbeitungseinheit, eine Steuereinheit, ein Prozessor oder eine Verarbeitungseinheit für einen direkten Speicherzugriff (Direct Memory Access, DMA) oder eine beliebige andere Einheit gehören, die bei einer programmierten Eingabe/Ausgabe (Programmed Input/Output, PIO) verwendet wird, die einer Verarbeitungseinheit zugeordnet ist. Die NOCO-Funktionseinheit 130 kann zum Beispiel eine IO-Einheit sein, die eine arithmetisch-logische Einheit (Arithmetic Logic Unit, ALU) oder andere Verarbeitungsfähigkeiten umfasst.
  • 2 ist ein Blockschaltbild eines Speicherdatenstrommoduls 200 gemäß einiger Ausführungsformen der Offenbarung. Das Speicherdatenstrommodul 200 kann dem Speicherdatenstrommodul 107 in 1 entsprechen. Im Allgemeinen kann das Speicherdatenstrommodul 200 ein kohärentes Teilmodul (oder Funktionsblock) 210, ein nicht kohärentes Teilmodul (oder Funktionsblock) 220, ein kohärentes Teilmodul (oder Funktionsblock) für eine Datenstromkennung 230, ein nicht kohärentes Teilmodul (oder Funktionsblock) für eine Datenstromkennung 240, ein Abhängigkeitsteilmodul (oder Abhängigkeitsfunktionsblock) 250 und ein Weiterleitungsteilmodul (oder Weiterleitungsfunktionsblock) 260 umfassen. Bei alternativen Ausführungsformen kann die Funktionalität von einem oder mehreren der Teilmodule kombiniert oder geteilt werden. Zum Beispiel kann ein einzelnes Teilmodul die Funktionalität des kohärenten Teilmoduls 210, des nicht kohärenten Teilmoduls 220, des kohärenten Teilmoduls für eine Datenstromkennung 230, des nicht kohärenten Teilmoduls für eine Datenstromkennung 240, des Abhängigkeitsteilmoduls 250 und des Weiterleitungsteilmoduls 260 ausführen. Die Funktionalität von jedem der Teilmodule 210, 220, 230, 240, 250 und 260 kann alternativ unter mehreren Teilmodulen aufgeteilt werden.
  • Wie in 2 gezeigt, kann das Speicherdatenstrommodul 200 ein kohärentes Teilmodul 210 umfassen. Bei einigen Ausführungsformen kann das kohärente Teilmodul 210 eine oder mehrere Speicheroperationen empfangen oder identifizieren, die einem Speicher (z. B. dem kohärenten Speicher 120) zugeordnet sind. Das kohärente Teilmodul 210 kann zum Beispiel Speicheroperationen identifizieren, die einem kohärenten Speicher zugeordnet sind. Zu den Speicheroperationen können eine Schreiboperation zum Schreiben von Daten (z. B. einen Steuerblock) in einen kohärenten Speicher oder eine Leseoperation zum Lesen von Daten aus einem kohärenten Speicher gehören. Das Speicherdatenstrommodul 200 kann ein nicht kohärentes Teilmodul 220 umfassen. Bei einigen Ausführungsformen kann das nicht kohärente Teilmodul 220 eine oder mehrere NOCO-Triggeroperationen empfangen oder identifizieren, die einer NOCO-Funktionseinheit zugeordnet sind. Zum Beispiel kann das nicht kohärente Teilmodul 220 NOCO-Trigger identifizieren, die einer oder mehreren NOCO-Funktionseinheiten zugeordnet sind, um Daten (z. B. einen Steuerblock) abzurufen, die in dem kohärenten Speicher gespeichert sind. Das Speicherdatenstrommodul 200 kann außerdem ein kohärentes Teilmodul für eine Datenstromkennung 230 umfassen. Bei einigen Ausführungsformen kann das kohärente Teilmodul für eine Datenstromkennung 230 einen Datenstrom von Speicheroperationen definieren, die dem kohärenten Speicher zugeordnet sind. Ein Datenstrom von Speicheroperationen kann sich auf eine Reihe von Speicheroperationen beziehen, die ausgegeben wurden. Das kohärente Teilmodul für eine Datenstromkennung 230 kann zum Beispiel eine Reihenfolge für die Speicheroperationen definieren, die ausgeführt werden sollen. Bei einigen Ausführungsformen kann die Reihenfolge der Speicheroperationen so definiert werden, dass die Speicheroperationen in der programmierten Reihenfolge (z. B. in der Reihenfolge, in der die Speicheroperationen ausgegeben wurden) sind, oder die Reihenfolge der Speicheroperationen kann definiert werden, indem die Reihenfolge der Speicheroperationen so entspannt wird, dass auf eine Leseoperation der Speicheroperationen eine Schreiboperation der Speicheroperationen folgt. Zum Beispiel kann ein Lesevorgang oder eine Leseoperation (auf die auch als Laden Bezug genommen wird) vor einer Schreiboperation oder einem Schreibvorgang (auf die auch als Speichern Bezug genommen wird) ausgeführt werden, der weiter vorne in der programmierten Reihenfolge steht als der Lesevorgang oder die Leseoperation. Auf diese Reihenfolge kann auch als Gesamtspeicherreihenfolge (Total Store Order, TSO) Bezug genommen werden. Weitere Einzelheiten in Bezug auf das Ordnen oder Sequentialisieren der Speicheroperationen werden in Bezug auf die 4A bis 4C ausführlicher offenbart. Das Speicherdatenstrommodul 200 kann außerdem ein nicht kohärentes Teilmodul für eine Datenstromkennung 240 umfassen. Bei einigen Ausführungsformen kann das nicht kohärente Teilmodul für eine Datenstromkennung 240 die Reihenfolge für die NOCO-Triggeroperationen definieren. Bei einigen Ausführungsformen können die Triggeroperationen zum Beispiel in einer sequenziellen Reihenfolge erfolgen. Bei einigen Ausführungsformen kann sich die sequenzielle Reihenfolge auf die programmierte Reihenfolge beziehen, bei der Operationen (z. B. NOCO-Triggeroperationen) so ausgeführt werden, dass die in der programmierten Reihenfolge zuerst ausgegebenen NOCO-Trigger vor einem in der programmierten Reihenfolge später ausgegebenen NOCO-Trigger ausgeführt werden.
  • Auf diese Weise kann eine Reihe von Speicheroperationen empfangen werden. Die Reihe der Speicheroperationen kann in einer programmierten Reihenfolge erfolgen (z. B. in der Reihenfolge, in der die Speicheroperationen ausgegeben werden). Die Reihe der Speicheroperationen kann auf der Grundlage einer sequenziellen Reihenfolge geordnet werden oder auf der Grundlage einer Reihenfolge geordnet werden, bei der ein Lesevorgang gefolgt von einem Schreibvorgang vor dem Schreibvorgang ausgeführt werden kann. Außerdem kann eine Reihe von NOCO-Triggern empfangen werden. Die NOCO-Trigger können auf einer sequenziellen Reihenfolge beruhen.
  • In 2 kann das Speicherdatenstrommodul 200 ein Abhängigkeitsteilmodul 250 umfassen. Bei einigen Ausführungsformen kann das Abhängigkeitsteilmodul 250 auf der Grundlage einer Speicheroperation eine Abhängigkeit für einen oder mehrere NOCO-Trigger definieren. Bei einigen Ausführungsformen kann sich eine Abhängigkeit auf eine Anforderung beziehen, dass eine spezielle Speicheroperation ausgeführt oder beendet wird, bevor ein NOCO-Trigger ausgeführt werden kann, der abhängig ist von der speziellen Speicheroperation. Bei einigen Ausführungsformen kann eine Abhängigkeit für eine Triggeroperation auf der Grundlage eines Lesevorgangs oder einer Speicheroperation definiert werden (z. B. darf der NOCO-Trigger nicht ausgeführt und ein älterer Lesevorgang überbrückt werden) und/oder die Abhängigkeit kann für einen NOCO-Trigger auf der Grundlage einer weitergeleiteten Schreibspeicheroperation definiert werden. Das Speicherdatenstrommodul 200 kann zum Beispiel ein Weiterleitungsteilmodul 260 umfassen. Bei einigen Ausführungsformen kann das Weiterleitungsteilmodul 260 identifizieren, dass eine Schreibspeicheroperation weitergeleitet wurde. Eine weitergeleitete Schreiboperation kann sich auf eine Schreiboperation beziehen, die außerhalb eines Prozessors oder einer Verarbeitungseinheit abgefertigt wird. Als Reaktion auf die Identifizierung, der Schreibspeicheroperation die weitergeleitet wurde, kann das Weiterleitungsteilmodul 260 auf der Grundlage der Schreibspeicheroperation, die weitergeleitet wurde, eine Abhängigkeit erzeugen.
  • 3 ist ein Ablaufplan eines Verfahrens 300 zum Ausführen von Speicheroperationen und Triggern für nicht kohärente (NOn-COherent, NOCO) Funktionseinheiten gemäß einiger Ausführungsformen. Bei einigen Ausführungsformen kann das Verfahren 300 durch das Speicherdatenstrommodul 107 oder 200 ausgeführt werden. Zum Beispiel kann das Verfahren 300 von dem Speicherdatenstrommodul 107 in 1 oder das Speicherdatenstrommodul 200 in 2 verwendet werden, um eine Ausführungsreihenfolge und Abhängigkeiten zu steuern und/oder zu aktualisieren, wobei die Abhängigkeiten Speicheroperationen, die einem kohärenten Speicher entsprechen, und NOCO-Triggern zugeordnet sind, die NOCO-Funktionseinheiten eines Prozessors (z. B. des Prozessors 102) entsprechen. Das Verfahren 300 kann auch ausgeführt werden, indem eine Logik ausgeführt wird, die eine Hardware (z. B., eine Schaltung, eine zugeordnete Logik, eine programmierbare Logik, einen Mikrocode usw.), eine Software, eine Firmware oder eine Kombination davon umfassen kann. Andere Komponenten des Computersystems 100 können alternativ einige oder alle Operationen des Verfahrens 300 ausführen.
  • Wie in 3 gezeigt, kann das Verfahren 300 mit der Verarbeitungslogik beginnen, die in Block 310 eine Reihe von Speicheroperationen identifiziert (Block 310). Bei einigen Ausführungsformen können die Speicheroperationen in einer sequenziellen Reihenfolge (z. B. in der programmierten Reihenfolge) erfolgen oder sie können in einer Gesamtspeicherreihenfolge erfolgen, wobei ein Schreibvorgang, auf den eine Lese-Speicheroperation erfolgt, so entspannt oder verändert werden kann, dass eine Lese-Speicheroperation vor einer früheren Schreib-Speicheroperation ausgeführt werden kann. Außerdem können die Speicheroperationen mit Lese-Speicheroperationen und Schreib-Speicheroperationen einem kohärenten Speicher zugeordnet werden. Zum Beispiel können die Speicheroperationen Anweisungen für eine NOCO-Funktionseinheit festlegen. Bei einigen Ausführungsformen können die Anweisungen Informationen umfassen, um zu steuern, wie die NOCO-Funktionseinheit Folgendes ausführen kann: die Befehle, die von der NOCO-Funktionseinheit ausgeführt werden sollen, den Standort der Daten, welche die NOCO-Funktionseinheit abrufen soll, um sie auszuführen, und so weiter. Auf diese Weise kann der Steuerblock Informationen umfassen, die ermitteln, welche Daten von einer NOCO-Funktionseinheit abgerufen werden sollen, wie die Daten gehandhabt werden sollen, die von der NOCO-Funktionseinheit abgerufen werden sollen, um verarbeitete Daten zu erzeugen und die einen Standort in dem kohärenten Speicher ermitteln, um die verarbeiteten Daten zu speichern.
  • Die Verarbeitungslogik, kann außerdem eine Reihe von NOCO-Triggern identifizieren (Block 320). Bei einigen Ausführungsformen können die NOCO-Trigger eine Anweisung oder ein Befehl sein, damit eine entsprechende NOCO-Funktionseinheit Daten aus einem kohärenten Speicher abruft. Ein NOCO-Trigger kann zum Beispiel einen Standort eines Steuerblocks festlegen, der in dem kohärenten Speicher gespeichert ist und den die NOCO-Funktionseinheit abruft und/oder ausführt. Auf diese Weise kann der NOCO-Trigger als eine Operation betrachtet werden, die festlegt, wie eine NOCO-Funktionseinheit betrieben wird.
  • In 3 kann die Verarbeitungslogik eine Abhängigkeit für einen NOCO-Trigger auf der Grundlage der Reihe von Speicheroperationen erzeugen (Block 330). Bei einigen Ausführungsformen kann die Abhängigkeit festlegen, dass ein spezieller NOCO-Trigger nicht ausgeführt werden darf, bevor eine spezielle Speicheroperation aus der Reihe von Speicheroperationen ausgeführt worden ist. Auf diese Weise kann die Abhängigkeit als eine Art von Einschränkung dafür betrachtet werden, wann ein spezieller NOCO-Trigger ausgeführt werden kann. Außerdem kann die Verarbeitungslogik die Speicheroperationen und die NOCO-Trigger ausführen (Block 340). Die Verarbeitungslogik kann zum Beispiel die Speicheroperationen und die NOCO-Trigger so ausführen, dass ein oder mehrere NOCO-Trigger abhängig sind von einer oder mehreren Speicheroperationen.
  • 4A stellt eine beispielhafte Sequenz 400 von Speicheroperationen und NOCO-Triggern gemäß einigen Ausführungsformen dar. Im Allgemeinen kann die Sequenz 400 einen ersten Datenstrom von Speicheroperationen, die einem kohärenten Speicher (z. B. dem Speicher 120) entsprechen, und einen zweiten Datenstrom von NOCO-Triggern umfassen, die mindestens einer NOCO-Funktionseinheit (z. B. NOCO 130) entsprechen, wobei ein NOCO-Trigger des zweiten Datenstroms nicht vor einer früheren Leseoperation der Speicheroperationen des ersten Datenstroms ausgeführt werden darf. Die Sequenz 400 kann von dem Speicherdatenstrommodul 107 in 1 oder dem Speicherdatenstrommodul 200 in 2 erzeugt werden. Das Speicherdatenstrommodul kann zum Beispiel eine Abhängigkeit für einen NOCO-Trigger so definieren, dass der NOCO-Trigger nicht vor einer früheren Speicheroperation ausgeführt werden kann, die ein Lesevorgang aus dem ersten Datenstrom ist.
  • Wie in 4A gezeigt, kann die Sequenz 400 einen ersten Datenstrom 410 von Speicheroperationen für einen kohärenten Speicher umfassen, der eine Speicheroperation 411, auf die als Lese-Speicheroperation A Bezug genommen wird, eine Speicheroperation 412, auf die als Lese-Speicheroperation B Bezug genommen wird, eine Speicheroperation 413, auf die als Schreib-Speicheroperation C Bezug genommen wird, eine Speicheroperation 414, auf die als Schreib-Speicheroperation D Bezug genommen wird, und eine Speicheroperation 415 umfasst, auf die als Lese-Speicheroperation E Bezug genommen wird. Außerdem kann die Sequenz 400 einen zweiten Datenstrom 420 von NOCO-Triggern für eine oder mehrere NOCO-Funktionseinheiten umfassen, wobei der Datenstrom einen NOCO-Trigger 421, auf den als Trigger X Bezug genommen wird, und einen NOCO-Trigger 422 umfasst, auf den als ein Trigger Y Bezug genommen wird. Bei einigen Ausführungsformen kann jeder der NOCO-Trigger eine Schreiboperation an eine NOCO-Funktionseinheit sein. Auf diese Weise kann die Sequenz 400 einen ersten Datenstrom von Lese- und Schreiboperationen zu einem kohärenten Speicher und einen zweiten Datenstrom von Schreiboperationen zu einer NOCO-Funktionseinheit umfassen. Die Anordnung jeder der Speicheroperationen und der NOCO-Trigger kann einem Zeitpunkt entsprechen, an dem die Speicheroperation oder der NOCO-Trigger ausgegeben wurde. Je näher zum Beispiel eine Speicheroperation oder ein NOCO-Trigger an der Erfassungsoperation ist, desto früher wurde die Speicheroperation oder NOCO-Trigger in der programmierten Reihenfolge ausgegeben. Zum Beispiel kann die Lese-Speicheroperation A als die erste Operation in der programmierten Reihenfolge betrachtet werden, der Trigger X kann als die zweite Operation in der programmierten Reihenfolge betrachtet werden, die Lese- und Schreib-Speicheroperationen B und C können als die dritte und vierte Operation in der programmierten Reihenfolge betrachtet werden, der Trigger Y kann als die fünfte Operation in der programmierten Reihenfolge betrachtet werden und so weiter.
  • Bei einigen Ausführungsformen kann auf die Sequenz 400 als eine entspannte sequenzielle Konsistenz mit einem NOCO-Datenstrom Bezug genommen werden. Die sequenzielle Konsistenz kann sich zum Beispiel auf ein Ausführen von Speicheroperationen und NOCO-Triggern in der programmierten Reihenfolge beziehen (z. B. in der Reihenfolge, in der die Operationen ausgegeben wurden). Diese sequenzielle Konsistenz kann zu dem Ausführen der Lese-Speicheroperation A gefolgt von dem Trigger X führen, der dann gefolgt wird von der Lese-Speicheroperation B und der Schreib-Speicheroperation C, wobei der Trigger Y auf die Lese-Speicheroperation B und die Schreib-Speicheroperation C folgt. Eine entspannte sequenzielle Konsistenz mit einem NOCO-Datenstrom kann eine Abhängigkeit zwischen einem NOCO-Trigger und einer der Speicheroperationen definieren, wenn die Speicheroperation eine Lese-Speicheroperation ist, die vor dem NOCO-Trigger ausgegeben wurde. Bei einigen Ausführungsformen können die Speicheroperationen des Datenstroms 410 ausgeführt werden, ohne darauf zu warten, dass ein spezieller NOCO-Trigger ausgeführt wird. Zum Beispiel kann es erlaubt sein, jede der Speicheroperationen B, C, D und E auszuführen, bevor einer der Trigger X und Y ausgeführt wurde. Die Speicheroperationen B, C, D und E können jedoch in der programmierten Reihenfolge ausgeführt werden (z. B. muss die Speicheroperation B vor den späteren Speicheroperationen C, D und E ausgeführt werden). Auf diese Weise kann der Datenstrom 410 von Speicheroperationen als unabhängig von den NOCO-Triggern betrachtet werden. Der Datenstrom 420 von NOCO-Triggeroperationen kann in einer sequenziellen Reihenfolge mit anderen NOCO-Triggern angeordnet werden. Zum Beispiel kann der NOCO-Trigger X in der programmierten Reihenfolge früher ausgegeben worden sein als der NOCO-Trigger Y. Somit muss der NOCO-Trigger X ausgeführt werden, bevor der NOCO-Trigger Y ausgegeben wird. Die Abhängigkeiten 423 und 424 können jedoch zwischen dem NOCO-Trigger X und dem NOCO-Trigger Y mit den Speicheroperationen 411 und 413 definiert werden. Zum Beispiel kann es nicht erlaubt sein, den NOCO-Trigger X auszuführen, bis die Speicheroperation A ausgeführt wurde und es kann nicht erlaubt sein, den NOCO-Trigger Y auszuführen, bis der NOCO-Trigger X und die Speicheroperation C ausgeführt wurden. Auf diese Weise definieren die Abhängigkeiten 423 und 424, wann ein NOCO-Trigger auf der Grundlage einer Speicheroperation ausgeführt werden kann. Somit kann es nicht erlaubt sein, einen speziellen NOCO-Trigger (z. B. der NOCO-Trigger Y) auszuführen, bis ein früherer NOCO-Trigger (z. B. der NOCO-Trigger X) und eine spezielle Speicheroperation (z. B. die Speicheroperation C) ausgeführt wurden.
  • 4B stellt eine weitere beispielhafte Sequenz 430 von Speicheroperationen und Triggern gemäß einigen Ausführungsformen dar. Im Allgemeinen kann die Sequenz 400 einen ersten Datenstrom von Speicheroperationen, die einem kohärenten Speicher (z. B. dem Speicher 120) entsprechen, und einen zweiten Datenstrom von NOCO-Triggern umfassen, die mindestens einer NOCO-Funktionseinheit (z. B. NOCO 130) entsprechen, wobei ein NOCO-Trigger des zweiten Datenstroms nicht ausgeführt werden darf, bevor eine weitergeleitete Schreiboperation der Speicheroperationen des ersten Datenstroms ausgeführt wurde. Die Sequenz 430 kann von dem Speicherdatenstrommodul 107 in 1 oder dem Speicherdatenstrommodul 200 in 2 erzeugt werden. Das Speicherdatenstrommodul kann zum Beispiel eine Abhängigkeit für einen NOCO-Trigger so definieren, dass der NOCO-Trigger nicht vor einer früheren Speicheroperation ausgeführt werden kann, die eine weitergeleitete Schreiboperation aus dem ersten Datenstrom ist.
  • Wie in 4B gezeigt, kann der erste Datenstrom 440 die Speicheroperationen 441, 442, 443, 444 und 445 umfassen. Außerdem kann der zweite Datenstrom 450 die NOCO-Triggeroperation 451 und die NOCO-Triggeroperation 452 umfassen. Auf die Sequenz 430 kann als ein schwacher NOCO-Datenstrom mit einer Einwegschranke Bezug genommen werden. Zum Beispiel kann auf die Speicheroperation C* als eine weitergeleitete Schreiboperation Bezug genommen werden. Bei einigen Ausführungsformen kann eine weitergeleitete Schreiboperation eine Schreiboperation sein die außerhalb einer CPU abgefertigt oder ausgeführt wird. Zum Beispiel kann die weitergeleitete Speicheroperation, die der Speicheroperation C* entspricht, einen neuen Steuerblock in einen kohärenten Speicher schreiben, der von einer NOCO-Funktionseinheit betrieben wird. Bei einigen Ausführungsformen kann die weitergeleitete Schreiboperation zu einer neuen Abhängigkeit 454 führen, die festlegt, dass die NOCO-Triggeroperation Y nicht ausgeführt werden darf, bis die weitergeleitete Schreiboperation ausgeführt wurde. Eine Abhängigkeit 453 kann auch definieren, dass die NOCO-Triggeroperation X nicht vor der Lese-Speicheroperation A ausgeführt werden darf.
  • 4C stellt eine weitere beispielhafte Sequenz 460 von Speicheroperationen und Trigger gemäß einigen Ausführungsformen dar. Im Allgemeinen kann die Sequenz 460 einen ersten Datenstrom von Speicheroperationen, die einem kohärenten Speicher (z. B. dem Speicher 120) entsprechen, und einen zweiten Datenstrom von NOCO-Triggern umfassen, die mindestens einer NOCO-Funktionseinheit (z. B. NOCO 130) entsprechen, wobei ein NOCO-Trigger des zweiten Datenstroms nicht ausgeführt werden darf, bevor eine weitergeleitete Schreiboperation der Speicheroperationen des ersten Datenstroms ausgeführt wurde, und Speicheroperationen des ersten Datenstroms können so geordnet werden, dass eine spätere Lese-Speicheroperation vor einer früheren Schreib-Speicheroperation ausgeführt werden kann. Die Sequenz 460 kann von dem Speicherdatenstrommodul 107 in 1 oder dem Speicherdatenstrommodul 200 in 2 erzeugt werden. Das Speicherdatenstrommodul kann zum Beispiel eine Abhängigkeit für einen NOCO-Trigger so definieren, dass der NOCO-Trigger nicht vor einer früheren Speicheroperation ausgeführt werden kann, die eine weitergeleitete Schreib-Speicheroperation aus dem ersten Datenstrom ist.
  • Wie in 4C gezeigt, kann der erste Datenstrom 470 die Speicheroperationen 471, 472, 473, 474 und 475 umfassen. Außerdem kann der zweite Datenstrom 480 den NOCO-Trigger 481 und den NOCO-Trigger 482 umfassen. Auf die Sequenz 460 kann als eine entspannte Gesamtspeicherreihenfolge (Total Store Order, TSO) mit einem nicht kohärenten (NOn-COherent, NOCO) Datenstrom Bezug genommen werden. Die Schreiboperationen des ersten Datenstroms 470 können zum Beispiel auf der Grundlage der TSO so geordnet werden, dass ein Lesevorgang (z. B. die Speicheroperation E) vor den früheren Schreibvorgängen (z. B. Speicheroperationen C* und D) der Speicheroperationen ausgeführt werden kann. Ähnlich wie bei der Sequenz 430 können die Abhängigkeiten 483 und 484 definieren, warm entsprechende Triggeroperationen aus- oder durchgeführt werden können.
  • Auf diese Weise kann die Sequenz 460 einen ersten Datenstrom, der den Speicheroperationen entspricht, und einen zweiten Datenstrom festlegen, der den NOCO-Triggern entspricht. Bei einigen Ausführungsformen können die NOCO-Trigger des zweiten Datenstroms in einer sequenziellen Reihenfolge in Bezug auf die anderen NOCO-Trigger ausgeführt werden. Ein erster NOCO-Trigger, der an einem ersten Zeitpunkt ausgegeben wurde, kann zum Beispiel vor einem zweiten NOCO-Trigger ausgeführt werden, der an einem zweiten Zeitpunkt später als der erste Zeitpunkt ausgegebene wurde, und es kann nicht erlaubt sein, den zweiten NOCO-Trigger auszuführen, bis der erste NOCO-Trigger ausgeführt wurde. Außerdem können die Schreibspeicheroperationen so geordnet werden, dass eine Lese-Speicheroperation, die zu einem späteren Zeitpunkt als die erste Schreib-Speicheroperation ausgegeben wurde, ausgeführt werden kann, bevor die erste Schreib-Speicheroperation ausgeführt wurde.
  • Von daher kann die Sequenz 460 einen Datenstrom von Speicheroperationen festlegen, bei dem bestimmte späterer Speicheroperationen vor andern Speicheroperationen ausgeführt werden können, während auch ein zweiter Datenstrom von NOCO-Triggern in einer sequenziellen Reihenfolge in Bezug auf andere NOCO-Trigger festgelegt wird, aber wobei einer oder mehrere der NOCO-Trigger abhängig sind von mindestens einer der Speicheroperationen des ersten Datenstroms. Auf diese Weise kann eine spätere Speicheroperation vor einem früheren NOCO-Trigger und einigen der anderen früheren Speicheroperationen ausgeführt oder abgefertigt werden, aber ein späterer NOCO-Trigger kann nicht vor einem früheren NOCO-Trigger ausgeführt oder abgefertigt werden und kann außerdem von mindestens einer Speicheroperation abhängig sein.
  • 5 stellt ein Verfahren 500 zum Hinzufügen einer Abhängigkeit zu einer Sequenz von Speicheroperationen und NOCO-Triggern aufgrund einer Weiterleitung einer Speicheroperation gemäß einigen Ausführungsformen der Offenbarung dar. Bei einigen Ausführungsformen kann das Verfahren 500 durch das Speicherdatenstrommodul 107 oder 200 ausgeführt werden. Zum Beispiel kann das Verfahren 500 von dem Speicherdatenstrommodul 107 in 1 oder dem Speicherdatenstrommodul 200 in 2 verwendet werden, um eine Ausführungsreihenfolge und Abhängigkeiten zu steuern und/oder zu aktualisieren, wobei die Abhängigkeiten Speicheroperationen, die einem kohärenten Speicher entsprechen, und NOCO-Triggern zugeordnet sind, die NOCO-Funktionseinheiten eines Prozessors (z. B. des Prozessors 102) entsprechen. Das Verfahren 500 kann auch ausgeführt werden, indem eine Logik ausgeführt wird, die eine Hardware (z. B., eine Schaltung, eine zugeordnete Logik, eine programmierbare Logik, einen Mikrocode usw.), eine Software, eine Firmware oder eine Kombination davon umfassen kann. Andere Komponenten des Computersystems 100 können alternativ einige oder alle Operationen des Verfahrens 300 ausführen.
  • Wie in 5 gezeigt, kann das Verfahren 500 mit der Verarbeitungslogik beginnen, die in Block 510 eine Reihe von Speicheroperationen (Block 510) und einer Reihe von NOCO-Triggeroperationen (Block 520) erfasst. Die Erfassungslogik kann zum Beispiel einen Datenstrom erfassen, der mehrere Speicheroperationen und mehrere NOCO-Triggeroperationen umfasst. Die Verarbeitungslogik kann außerdem ermitteln, ob eine Speicheroperation weitergeleitet wird (Block 530). Sie kann zum Beispiel ermitteln, ob eine spezielle Speicheroperation, die in dem erfassten Datenstrom enthalten ist, einer globalen Beobachtung unterliegt, die zu einem Schreibvorgang in den kohärenten Speicher führen kann, der außerhalb der CPU abgefertigt wird. Wenn somit die Verarbeitungslogik identifiziert, dass eine Speicheroperation weitergeleitet wurde, kann eine Abhängigkeit zwischen einer NOCO-Triggeroperation und einer Speicheroperation aufgrund der Weiterleitung der Speicheroperation hinzugefügt werden (Block 550). Zum Beispiel kann es nicht erlaubt sein, einen speziellen NOCO-Trigger auszuführen, bis eine Speicheroperation, die weitergeleitet wurde, ausgeführt und beendet wurde (z. B. ein Datenblock in einen kohärenten Speicher geschrieben wurde). Wenn die Verarbeitungslogik jedoch nicht identifiziert, dass eine Speicheroperation weitergeleitet wurde, muss keine zusätzliche Abhängigkeit zu der Reihe von NOCO-Triggeroperationen hinzugefügt werden (Block 540).
  • 6 stellt eine beispielhafte Architektur 600 dar, um eine NOCO-Triggeroperation gemäß einiger Ausführungsformen der Offenbarung zu erkennen. Im Allgemeinen kann die Architektur 600 Teil eines Speicherdatenstrommoduls (z. B. des Speicherdatenstrommoduls 107 oder des Speicherdatenstrommoduls 200) sein und/oder in einer Hardware eines Prozessors oder einer Verarbeitungseinheit (z. B. dem Prozessor 100) umgesetzt sein. Die Architektur 600 kann verwendet werden, um eine NOCO-Triggeroperation in einem Speicherdatenstrom zu identifizieren. Bei einigen Ausführungsformen kann die NOCO-Triggeroperation als eine Art von Schreibvorgang (z. B. ein im Speicher abgebildeter IO-Schreibvorgang) betrachtet werden.
  • Wie in 6 gezeigt, kann die Architektur 600 ein nicht kohärentes speicherspezifisches Register (NOn-COherent Memory Specific Register, NOCO MSR) 610, eine Vergleichseinheit 630, ein Logik-Gate 640 und einen Adressumsetzpuffer (Translation Lookaside Buffer, TLB) 650 umfassen. Bei einigen Ausführungsformen kann das NOCO MSR 610 einen Speicheradressbereich festlegen, der einem NOCO-Anteil einer Architektur einer Verarbeitungseinheit zugeordnet ist. Das NOCO MSR kann zum Beispiel die Datenfelder 611, 612, 613 und 614 umfassen. Bei einigen Ausführungsformen kann eines der Datenfelder des NOCO MSR 610 einem physischen Adressbereich entsprechen, der dem NOCO-Anteil der Verarbeitungseinheit zugeordnet ist. Das Datenfeld 613 kann zum Beispiel eine nicht kohärente physische Adresse (NOn-COherent PHYsical ADDRess, NOCO PHY ADDR) sein, die einen Adressbereich festlegt, der von einem NOCO-Anteil der Architektur der Verarbeitungseinheit verwendet wird. Bei einigen Ausführungsformen kann ein Eingangssignal 631 einer Behandlungseinheit für fehlende Seiten (Page Miss Handler, PMH) entsprechen. Eine Verarbeitungseinheit kann zum Beispiel Seitentabellen durchsuchen, um zu sehen, ob für eine festgelegte virtuelle Adresse ein gültiger Eintrag in eine Seitentabelle vorhanden ist. Wenn ein Eintrag vorhanden ist, wird die Adresse des Eintrags mit Adressen in dem Datenfeld 613 der NOCO PHY ADDR des NOCO MSR 610 verglichen. Die Vergleichseinheit 630 kann die Adresse aus dem NOCO MSR 610 mit der Adresse aus dem Eingangssignal 631 der von der PMH zurückgegebenen PHY ADDR vergleichen. Wenn die Vergleichseinheit 630 eine „1” ausgibt, um anzuzeigen, dass die Adresse aus dem Eingangssignal 631 mit einer der Adressen des Datenfelds 613 übereinstimmt, wird ein Aktivierungssignal 632 auf Eins eingestellt, und danach kann das Logik-Gate 640 (z. B. ein AND-Gate) ein Bit ausgeben, das in dem TLB gespeichert wird. Zum Beispiel kann ein zugeordnetes Speicherfeld in dem TLB verwendet werden, um ein nicht kohärentes Bit zu speichern. Wenn die TLB-Einträge gelesen werden, kann das nicht kohärente Bit somit anzeigen, dass eine Operation, die dem TLB-Eintrag zugeordnet ist, einem nicht kohärenten Anteil der Architektur der Verarbeitungseinheit zugeordnet wird.
  • 7 stellt ein Blockschaltbild der Mikroarchitektur für einen Prozessor 700 dar, die Logikschaltkreise umfasst, um Speichersequenzen gemäß einer Ausführungsform zu verwalten. Die Speicherdatenstrommodule 107 und 200 können in dem Prozessor 700 umgesetzt sein. Bei einigen Ausführungsformen kann eine Anweisung gemäß einer Ausführungsform umgesetzt sein, um mit Datenelementen zu arbeiten, welche die Größen eines Bytes, eines Wortes, eines Doppelwortes, eines Vierfachwortes usw. sowie Datenarten wie zum Beispiel eine ganze Zahl oder eine Gleitkommazahl jeweils mit einfacher und doppelter Genauigkeit aufweisen. Bei einer Ausführungsform ist die geordnete Front-End-Einheit 701 ein Teil des Prozessors 700, der auszuführende Anweisungen abruft und sie vorbereitet, damit sie später in der Prozessor-Pipeline verwendet werden.
  • Die Front-End-Einheit 701 kann mehrere Einheiten umfassen. Bei einer Ausführungsform ruft die Vorababrufeinheit für Anweisungen 716 die Anweisungen aus dem Speicher ab und speist sie in eine Decodiereinheit für Anweisungen 718 ein, die sie ihrerseits decodiert und übersetzt. Bei einer Ausführungsform decodiert die Decodiereinheit zum Beispiel eine empfangene Anweisung in eine oder mehrerer Operationen, die „Mikroanweisungen” oder „Mikrooperationen” (auch Mikro-Ops oder μOps) genannt werden und von der Maschine ausgeführt werden können. Bei weiteren Ausführungsformen zergliedert die Decodiereinheit die Anweisung in einen Op-Code und entsprechende Daten und Steuerfelder, die von der Mikroarchitektur verwendet werden, um Operationen gemäß einer Ausführungsform auszuführen. Bei einer Ausführungsform übernimmt der Spuren-Cachespeicher 730 die decodierten μOps und setzt sie in der μOp-Warteschlange 734 zu programmierten geordneten Sequenzen oder Spuren für eine Ausführung zusammen. Wenn der Spuren-Cachespeicher 730 auf eine komplexe Anweisung stößt, stellt der Mikrocode-ROM 732 die μOps bereit, die benötigt werden, um die Operation zu beenden.
  • Einige Anweisungen werden in eine einzige Mikro-Op umgewandelt, während andere Anweisungen mehrere Mikro-Ops benötigen, um die gesamte Operation zu beenden. Wenn bei einer Ausführungsform mehr als vier Mikro-Ops benötigt werden, um eine Anweisung zu beenden, greift die Decodiereinheit 718 auf den Mikrocode-ROM 732 zu, um die Anweisung durchzuführen. Bei einer Ausführungsform kann eine Anweisung für ein Verarbeiten in der Decodiereinheit für Anweisungen 718 in eine kleinere Anzahl von Mikro-Ops decodiert werden. Bei einer weiteren Ausführungsform kann eine Anweisung in dem Mikrocode-ROM 732 gespeichert werden, sollte eine Anzahl von Mikro-Ops benötigt werden, um die Operation abzuschließen. Der Spuren-Cachespeicher 730 bezieht sich auf einen programmierbaren Logik-Array (Programmable Logic Array, PLA) für einen Einstiegspunkt, um einen korrekten Zeiger von Mikroanweisungen zum Lesen der Mikrocodesequenzen zu ermitteln, sodass eine oder mehrere Anweisungen gemäß einer Ausführungsform von dem Mikrocode-ROM 732 beendet werden. Nachdem der Mikrocode-ROM 732 das Sequentialisieren der Mikro-Ops für eine Anweisung beendet hat, nimmt die Front-End-Einheit 701 der Maschine das Abrufen der Mikro-Ops aus dem Spuren-Cachespeicher 730 wieder auf.
  • Das Ausführungsmodul für eine fehlende Sortierung 703 ist der Ort, an dem die Anweisungen für eine Ausführung vorbereitet werden. Die Logik für eine Ausführung bei einer fehlenden Sortierung weist eine Anzahl von Pufferspeichern auf, um den Fluss der Anweisungen zu glätten und neu zu ordnen, sodass ihre Leistungsfähigkeit optimiert wird, während sie durch die Pipeline laufen und ein Zeitplan für ihre Ausführung erstellt wird. Die Zuweisungslogik weist die Maschinenpufferspeicher und -ressourcen zu, die jede μOp benötigt, um ausgeführt zu werden. Die Registerumbenennungslogik benennt Logikregister auf Eingaben in einer Registerdatei um. Die vor den Anweisungszeitplanern (Speicherzeitplaner, schneller Zeitplaner 702, langsamer/allgemeiner Gleitkommazeitplaner 704 und einfacher Gleitkommazeitplaner 706) angebrachte Zuweisungslogik weist auch jeder μOp der beiden μOp-Warteschlangen, eine für Speicheroperationen und eine für nicht auf den Speicher bezogenen Operationen, eine Eingabe zu. Die μOp-Zeitplaner 702, 704, 706 ermitteln auf der Grundlage der Bereitschaft der abhängigen Operandenquellen der Eingaberegister und der Verfügbarkeit der Ausführungsressourcen, welche die μOps benötigen, um ihre Operation zu beenden, wann ein μOp bereit ist ausgeführt zu werden. Der schnelle Zeitplaner 702 einer Ausführungsform kann jede Hälfte des Haupttaktzyklus planen, während die anderen Zeitplaner nur einmal während eines Hauptprozessortaktzyklus planen können. Die Zeitplaner bestimmen die Abfertigungsanschlüsse, um die Ausführung der μOps zu planen. Bei einigen Ausführungsformen können das Ausführungsmodul für eine fehlende Sortierung 703 und der Ausführungsblock 711 eine Rückzugseinheit in Bezug auf die Zuweisung und Beendigung/Ausführung einer Anweisung benachrichtigen.
  • Die Registerdateien 708, 710 sitzen zwischen den Zeitplanern 702, 704, 706 und den Ausführungseinheiten 712, 714, 716, 718, 720, 722, 724 in dem Ausführungsblock 711. Es sind separate Registerdateien 708, 710 für Ganzzahlenoperationen bzw. Gleitkommazahlenoperationen vorhanden. Bei einer Ausführungsform umfasst jede Registerdatei 708, 710 auch ein Überbrückungsnetzwerk, das gerade fertiggestellte Ergebnisse, die noch nicht in die Registerdatei geschrieben wurden, an neue abhängige μOps überbrückt oder weiterleitet. Die Ganzzahlenregisterdatei 708 und die Gleitkommazahlenregisterdatei 710 sind auch in der Lage Daten untereinander auszutauschen. Bei einer Ausführungsform wird die Ganzzahlenregisterdatei 708 in zwei separate Registerdateien geteilt, eine Registerdatei für die 32 Bits niedriger Ordnung der Daten und eine zweite Registerdatei für die 32 Bits höherer Ordnung der Daten. Die Gleitkommazahlenregisterdatei 710 von einer Ausführungsform hat 128-Bit breite Eingaben, da die Gleitkommazahlenanweisungen typischerweise Operanden mit einer Breite von 64 bis 128 Bits aufweisen.
  • Der Ausführungsblock 711 enthält die Ausführungseinheiten 712, 714, 716, 718, 720, 722, 724, wobei die Anweisungen aktuell ausgeführt werden. Dieser Abschnitt umfasst die Registerdateien 708, 710, die Operandenwerte der Ganzzahlendaten und der Gleitkommadaten, welche die Mikroanweisungen zum Ausführen benötigen. Der Prozessor 700 von einer Ausführungsform besteht aus einer Anzahl von Ausführungseinheiten: der Adresserzeugungseinheit (Address Generation Unit, AGU) 712, der AGU 714, der schnellen ALU 716, der schnellen ALU 718, der langsamen ALU 720, der Gleitkommazahlen-ALU 722 und der Gleitkommazahlenbewegungseinheit 724. Bei einer Ausführungsform führen die Gleitkommazahlenausführungsblöcke 722, 724 Gleitkommazahlen-MMX, -SIMD und -SSE oder andere Operationen aus. Bei einer Ausführungsform umfasst die Gleitkommazahlen-ALU 712 einen 64-Bit-durch-64-Bit-Gleitkommazahlenteiler, um Teiler-, Quadratwurzel- und Reste-Mikro-Ops auszuführen. Bei Ausführungsformen der vorliegenden Offenbarung können Anweisungen, die einen Gleitkommazahlenwert beinhalten, mit einer Hardware für Gleitkommazahlen behandelt werden.
  • Bei einer Ausführungsform werden die ALU-Operationen zu den Hochgeschwindigkeits-ALU-Ausführungseinheiten 716, 718 geleitet. Bei einer Ausführungsform können die schnellen ALUs 716, 718 schnelle Operationen mit einer effektiven Verzögerung von einem halben Taktzyklus ausführen. Bei einer Ausführungsform gehen die komplexesten Ganzzahlenoperationen zu der langsamen ALU 720, da die langsame ALU 720 eine Ausführungshardware für ganze Zahlen für eine Art von Operationen mit langer Verzögerung wie zum Beispiel Multiplizierfunktionen, Verschiebungen, eine Kennzeichnungslogik und eine Verzweigungsverarbeitung umfassen. Speicheroperationen zum Laden/Speichern werden von den AGUs 712, 714 ausgeführt. Bei einer Ausführungsform werden die Ganzzahlen-ALUs 716, 718, 720 in dem Zusammenhang mit einem Ausführen von Ganzzahlenoperationen auf 64-Bit-Operanden beschrieben. Bei alternativen Ausführungsformen können die ALUs 716, 718, 720 umgesetzt werden, um eine Vielfalt von Datenbits einschließlich 16, 32, 128, 256 usw. zu unterstützen. Auf ähnliche Weise können die Gleitkommazahleneinheiten 722, 724 umgesetzt werden, um einen Bereich von Operanden zu unterstützen, die Bits mit unterschiedlichen Breiten aufweisen. Bei einer Ausführungsform können die Gleitkommazahleneinheiten 722, 724 an 128-Bit-breiten gepackten Datenoperanden in Kombination mit SIMD- und Multimedia-Anweisungen operieren.
  • Bei einer Ausführungsform können die μOp-Zeitplaner 702, 704, 706 abhängige Operationen abfertigen, bevor das übergeordnete Laden seine Ausführung beendet hat. Da die μOps spekulativ im Prozessor 700 geplant und ausgeführt werden, umfasst der Prozessor 700 auch eine Logik zum Behandeln von fehlenden Elementen im Speicher. Wenn eine Datenladung in dem Datencachespeicher fehlt, können abhängige Operationen in der Pipeline am Laufen sein, die den Zeitplaner vorübergehend mit unkorrekten Daten zurückgelassen haben. Ein Wiederholmechanismus spürt Anweisungen auf, welche die unkorrekten Daten verwenden, und führt sie erneut aus. Nur die abhängigen Operationen müssen wiederholt werden und die Unabhängigen haben die Erlaubnis, beendet zu werden. Die Zeitplaner und der Wiederholmechanismus einer Ausführungsform eines Prozessors sind auch dafür ausgelegt, Anweisungssequenzen für Vergleichsoperationen für eine Textzeichenfolge zu erfassen.
  • Der Prozessor 700 umfasst gemäß einer Ausführungsform auch eine Logik zum Verwalten von Prüfpunkten einer Architektur für eine fehlende Sortierung. Bei einer Ausführungsform kann der Ausführungsblock 711 des Prozessors 700 das Prüfpunktmodul 200 umfassen, um gemäß der hier vorliegenden Beschreibung die Prüfpunkte einer Architektur für eine fehlende Sortierung zu verwalten.
  • Der Begriff „Register” kann sich auf integrierte Prozessorspeicherstandorte beziehen, die als ein Teil der Anweisungen zum Identifizieren von Operanden verwendet werden. In anderen Worten können Register diejenigen sein, die von außerhalb des Prozessors (aus der Sichtweise eines Programmierers) verwendbar sind. Die Register einer Ausführungsform sollten jedoch in ihrer Bedeutung nicht auf eine spezielle Art eines Schaltkreises beschränkt sein. Stattdessen ist ein Register einer Ausführungsform in der Lage, Daten zu speichern und bereitzustellen und die hier beschriebenen Funktionen auszuführen. Die hier beschriebenen Register können durch eine Schaltung innerhalb eines Prozessors mithilfe einer Anzahl von verschiedenen Techniken wie zum Beispiel zugeordneten physischen Registern, dynamisch zugewiesenen physischen Registern, die eine Registerumbenennung verwenden, Kombinationen von zugeordneten und dynamisch zugewiesenen physischen Registern usw. umgesetzt werden. Bei einer Ausführungsform speichern die Ganzzahlenregister 32-Bit-Ganzzahlendaten. Bei einer Ausführungsform enthält eine Registerdatei auch acht Multimedia-SIMD-Register für gepackte Daten.
  • Für die hier beschriebenen Erörterungen sind die Register als Datenregister zu verstehen, die ausgelegt sind, gepackte Daten aufzubewahren, wie zum Beispiel 64-Bit-breite MMXTM-Register (auf die in einigen Fällen auch als „MM”-Register Bezug genommen wird) in Mikroprozessoren die mit einer MMX-Technologie von der Intel Corporation aus Santa Clara, Kalifornien, ausgestattet sind. Diese MMX-Register, die sowohl in Ganzzahlenform als auch in Gleitkommazahlenform zur Verfügung stehen, können mit gepackten Datenelementen arbeiten, welche die SIMD- und SSE-Anweisungen begleiten. Auf ähnliche Weise können 128-Bit-breite XMM-Register, die sich auf eine SSE2-, SSE3-, SSE4- oder höhere Technologie beziehen (auf die generisch als „SSEx”-Technologie Bezug genommen wird), auch verwendet werden, um diese gepackten Datenoperanden aufzubewahren. Bei einer Ausführungsform ist es beim Speichern von gepackten Daten und Ganzzahlendaten nicht notwendig, dass die Register zwischen diesen beiden Datentypen unterscheiden. Bei einer Ausführungsform sind ganze Zahlen oder Gleitkommazahlen entweder in der gleichen Registerdatei oder in verschiedenen Registerdateien enthalten. Außerdem können bei einer Ausführungsform die Gleitkommazahlendaten und die Ganzzahlendaten in verschiedenen Registern oder in dem gleichen Register gespeichert werden.
  • Die Ausführungsformen können in vielen verschiedenen Systemarten umgesetzt werden. In 8 wird ein Blockschaltbild eines Mehrprozessorsystems 800 gemäß einer Umsetzung gezeigt. Wie in 8 gezeigt, ist das Mehrprozessorsystem 800 ein Punkt-zu-Punkt-Verbundsystem und umfasst einen ersten Prozessor 870 und einen zweiten Prozessor 880, die über eine Punkt-zu-Punkt-Verbindung 850 miteinander verbunden sind. Wie in 8 gezeigt, kann jeder der Prozessoren 870 und 880 ein Mehrkernprozessor sein, der einen ersten und einen zweiten Prozessorkern umfasst, obwohl möglicherweise auch mehr Kerne in den Prozessoren vorhanden sein können. Gemäß einer Ausführungsform der vorliegenden Offenbarung kann jeder der Prozessoren Logiken für einen hybriden Schreibmodus umfassen. Bei einigen Ausführungsformen können die Speicherdatenstrommodule 107 und 200 in dem Mehrprozessorsystem 800 umgesetzt sein. Zum Beispiel können die Speicherdatenstrommodule 107 und 200 in dem Prozessor 870 und/oder dem Prozessor 880 umgesetzt sein.
  • Obwohl die vorliegende Offenbarung mit zwei Prozessoren 870, 880 gezeigt wird, ist es selbstverständlich, dass sie nicht darauf beschränkt ist. Bei weiteren Umsetzungen können ein oder mehrere zusätzliche Prozessoren in einem gegebenen Prozessor vorhanden sein.
  • Die Prozessoren 870 und 880 werden einschließlich integrierter Speichersteuereinheiten 872 bzw. 882 gezeigt. Der Prozessor 870 umfasst als Teil seiner Bussteuereinheiten auch Punkt-zu-Punkt Schnittstellen (P-P-Schnittstellen) 876 und 878; auf ähnliche Weise umfasst der Prozessor 880 die P-P-Schnittstellen 886 und 888. Die Prozessoren 870, 880 können über eine Punkt-zu-Punkt Schnittstelle (P-P-Schnittstelle) 850 mithilfe der P-P-Schnittstellenschaltkreise 878, 888 Informationen austauschen. Wie in 8, gezeigt verbinden die IMCs 872 und 882 die Prozessoren mit jeweiligen Speichern, insbesondere einem Speicher 832 und einem Speicher 834, die Anteile eines Hauptspeichers sein können, der lokal an die jeweiligen Prozessoren angefügt ist.
  • Jeder der Prozessoren 870, 880 kann über individuelle P-P-Schnittstellen 852, 854 mithilfe von Punkt-zu-Punkt-Schnittstellenschaltkreisen 876, 894, 886, 898 Informationen mit einem Chipsatz 890 austauschen. Der Chipsatz kann auch über eine Hochleistungsgrafikschnittstelle 839 Informationen mit einem Hochleistungsgrafikschaltkreis 838 austauschen.
  • Ein gemeinsam genutzter (nicht gezeigter) Cachespeicher kann entweder in einem Prozessor oder außerhalb der beiden Prozessoren vorhanden sein, und ist dennoch über eine P-P-Verbindung mit den Prozessoren verbunden, sodass die lokalen Cachespeicherinformationen von einem oder beiden Prozessoren in dem gemeinsam genutzten Cachespeicher gespeichert werden können, wenn ein Prozessor in einen Modus mit geringem Stromverbrauch gesetzt wird.
  • Der Chipsatz 890 kann über eine Schnittstelle 896 mit einem ersten Bus 816 verbunden werden. Bei einer Ausführungsform kann der erste Bus 816 ein Bus für die Verbindung von Peripheriegeräten (Peripheral Component Interconnect Bus, PCI-Bus) oder ein Bus wie zum Beispiel ein PCI-Expressbus oder ein anderer I/O-Verbindungsbus der dritten Generation sein, obwohl der Umfang der vorliegenden Offenbarung nicht darauf beschränkt ist.
  • Wie in 8 gezeigt, können verschiedene I/O-Einheiten 814 mit dem ersten Bus 816 zusammen mit einer Busbrücke 818 verbunden werden, welche den ersten Bus 816 mit einem zweiten Bus 820 verbindet. Bei einer Ausführungsform kann der zweite Bus 820 ein Bus mit niedriger Pinanzahl (Low Pin Count bus, LPC-Bus) sein. Verschiedene Geräte können mit dem zweiten Bus 820 verbunden sein einschließlich zum Beispiel einer Tastatur und/oder einer Maus 822, Datenaustauschgeräten 827 und Speichereinheiten 828 wie zum Beispiel einem Laufwerk oder einem anderen Massenspeichergerät, die bei einer Ausführungsform Anweisungen, einen Code und Daten 830 enthalten können. Außerdem kann ein Audio-I/O 824 mit dem zweiten Bus 820 verbunden werden. Es ist zu beachten, dass andere Architekturen möglich sind. Zum Beispiel kann in einem System anstatt der Punkt-zu-Punkt-Architektur in 8 ein Mehrpunktbus oder eine andere solche Architektur umgesetzt werden.
  • In 9 wird ein Blockschaltbild eines dritten Systems 900 gemäß einer Ausführungsform der vorliegenden Offenbarung gezeigt. Gleiche Elemente in den 8 und 9 tragen die gleichen Bezugszeichen und bestimmte Aspekte von 8 wurden in 9 weggelassen, um ein Erschweren für das Verständnis anderer Aspekte in 9 zu vermeiden.
  • 9 zeigt, dass die Prozessoren 970, 980 eine integrierte Speicherlogik und eine I/O-Steuerlogik (Control Logic, CL) 972 und 982 umfassen können. Bei mindestens einer Ausführungsform kann die CL 972, 982 integrierte Speichersteuereinheiten umfassen, wie sie hier beschrieben werden. Außerdem kann die CL 972, 982 auch eine I/O-Steuerlogik umfassen. 9 zeigt, dass die Speicher 932, 934 mit der CL 972, 982 verbunden sind, und dass die I/O-Geräte 915 auch mit der Steuerlogik 972, 982 verbunden sind. Vorgänger-I/O-Steuereinheiten 915 sind mit dem Chipsatz 990 verbunden. Bei einigen Ausführungsformen können die Speicherdatenstrommodule 107 und 200 in dem System 900 umgesetzt sein. Zum Beispiel können die Speicherdatenstrommodule 107 und 200 in dem Prozessor 970 und/oder dem Prozessor 980 umgesetzt sein.
  • 10 ist ein beispielhaftes Ein-Chip-System (System an a Chip, SoC), das einen oder mehrere der Kerne 1002 umfassen kann. Im Stand der Technik sind weitere Systemauslegungen und -konfigurationen für Laptops, Desktops, tragbare PCs, persönliche Datenassistenten, Technik-Workstations, Server, Netzwerkgeräte, Netzwerkknoten, Schalter, eingebettete Prozessoren, digitale Signalprozessoren (Digital Signal Processors, DSPs), Grafikgeräte, Videospielgeräte, Beistellgeräte, Mikrosteuereinheiten, Mobiltelefone, tragbare Medienplayer, tragbare Geräte und verschiedene weitere elektronische Geräte bekannt, die ebenfalls geeignet sind. Wie hier beschrieben wird, ist ganz allgemein grundsätzlich eine große Vielfalt von Systemen oder elektronischen Geräten geeignet, die in der Lage sind, einen Prozessor und/oder eine andere Ausführungslogik aufzunehmen.
  • In 10 wird ein Blockschaltbild eines SoC 1000 gemäß einer Ausführungsform der vorliegenden Offenbarung gezeigt. Ähnlich Elemente in 5 tragen das gleiche Bezugszeichen. Es ist auch zu beachten, dass Rechtecke aus gestrichelten Linien Merkmale von fortgeschritteneren SoCs sind. In 10 werden eine oder mehrere Verbindungseinheiten 1002 verbunden mit: einem Anwendungsprozessor 1010, der einen Satz von einem oder mehreren Kernen 1002A–N und einen oder mehrere gemeinsam genutzte Cachespeichereinheiten 1006 umfasst; einer Systemagenteinheit 1010; einer oder mehreren Bussteuereinheiten 1016; einer oder mehreren integrierten Speichersteuereinheiten 1014; einem Satz von einem oder mehreren Medienprozessoren 1020, die eine integrierte Grafiklogik 1008 umfassen können, einem Bildprozessor 1024 für ein Bereitstellen einer Standbild- oder Videokamerafunktionalität, einem Audioprozessor 1026 für ein Bereitstellen einer Hardware-Audiobeschleunigung, und einem Videoprozessor 1028 für ein Bereitstellen einer Video-Codierungs/Decodierungsbeschleunigung; einer statischen Direktzugriffsspeichereinheit (Static Random Access Memory unit, SRAM-Einheit) 1030; einer Einheit für einen direkten Speicherzugriff (Direct Memory Access unit, DMA-Einheit) 1032; und einer Anzeigeeinheit 1040 für ein Verbinden mit einer oder mehreren externen Anzeigen. Bei einigen Ausführungsformen können die Speicherdatenstrommodule 107 und 200 in dem SoC 1000 umgesetzt sein. Zum Beispiel können die Speicherdatenstrommodule 107 und 200 in dem Anwendungsprozessor 1010 und/oder den Kernen 1002A–N umgesetzt sein.
  • In 11 wird eine Ausführungsform einer Ein-Chip-Systemauslegung (System On-Chip design, SOC-Auslegung) gemäß einiger Ausführungsformen der Offenbarung gezeigt. Als ein anschauliches Beispiel ist das SOC 1100 in einem Benutzergerät (User Equipment, UE) enthalten. Bei einer Ausführungsform bezieht sich das UE auf jedes beliebige Gerät, das von einem Endbenutzer für einen Datenaustausch verwendet wird wie zum Beispiel ein tragbares Telefon, ein Smartphone, ein Tablet-Computer, ein ultradünnes Notebook, ein Notebook mit Breitbandadapater oder jedes andere ähnliche Datenaustauschgerät. Ein UE kann mit einer Basisstation oder einem Knoten verbunden werden, der in seinem Wesen einer Mobilfunkstation (Mobile Station, MS) in einem GSM-Netz entspricht. Bei einigen Ausführungsformen können die Speicherdatenstrommodule 107 und 200 in dem SOC 1100 umgesetzt sein. Zum Beispiel können die Speicherdatenstrommodule 107 und 200 in dem Kern 1106 und/oder dem Kern 1107 umgesetzt sein.
  • Hierbei umfasst das SOC 1100 zwei Kerne 1106 und 1107. Ähnlich wie bei der Erörterung weiter oben können die Kerne 1106 und 1107 angepasst sein an eine Befehlssatzarchitektur wie zum Beispiel einen Prozessor, der den Intel® Architecture CoreTM, einen Advanced Micro Devices, Inc. (AMD) Prozessor, einen MIPS-gestützten Prozessor, eine ARM-gestützte Prozessorauslegung, oder einen ihrer Kunden, sowie ihre Lizenznehmer oder Adoptierende aufweist. Die Kerne 1106 und 1107 sind mit der Cachespeichersteuerung 1108 verbunden, die der Busschnittstelleneinheit 1109 und dem L2-Cachespeicher 1110 zugeordnet ist, um mit anderen Teilen des Systems 1100 in einem Datenaustausch zu stehen. Die Verbindung 1111 umfasst eine integrierte Verbindung wie zum Beispiel eine IOSF, eine AMBA oder weitere oben erörterte Verbindungen, die einen oder mehrerer Aspekte der beschriebenen Offenbarung umsetzen können.
  • Die Verbindung 1111 stellt Datenaustauschkanäle zu den anderen Komponenten bereit wie zum Beispiel einem Teilnehmer-Identitätsmodul (Subscriber Identity Module, SIM) 1130, um eine SIM-Karte anzuschließen, einem Start-ROM 1135 zum Aufbewahren eines Startcodes für eine Ausführung durch die Kerne 1106 und 1107, um das SOC 1100 zu initialisieren und zu starten, einer SDRAM-Steuereinheit 1140, um einen externen Speicher (z. B. einen DRAM 1160) anzuschließen, einer Flashspeichersteuereinheit 1145, um einen nichtflüchtigen Speicher (z. B. einen Flashspeicher 1165) anzuschließen, einer periphere Steuerung 1150 (z. B. eine serielle periphere Schnittstelle), um periphere Geräte anzuschließen, einem Video-Codierer/Decodierer 1120 und einer Videoschnittstelle 1125, um Eingaben anzuzeigen und zu empfangen (z. B. ein berührungsgestützte Eingabe), einer GPU 1115, um grafikbezogene Berechnungen auszuführen, usw. Jede dieser Schnittstellen beinhaltet Aspekte der hier beschriebenen Ausführungsformen.
  • Außerdem stellt das System periphere Geräte für einen Datenaustausch wie zum Beispiel ein Bluetooth-Modul 1170 ein 3G-Modem 1175 ein GPS 1180 und ein WiFi 1185 dar. Wie oben erwähnt, ist zu beachten, dass ein UE eine Funkeinheit für den Datenaustausch umfasst. Infolgedessen müssen diese peripheren Datenaustauschmodule nicht alle enthalten sein. In einem UE sollte jedoch eine bestimmte Form einer Funkeinheit für einen externen Datenaustausch enthalten sein.
  • 12 stellt eine schaubildliche Darstellung einer Maschine in der beispielhaften Form eines Computersystems 1200 dar, in dem ein Befehlssatz ausgeführt werden kann, der die Maschine veranlasst, eine oder mehrere der hier erörterten Methodologien auszuführen. Bei alternativen Ausführungsformen kann die Maschine mit anderen Maschinen in einem LAN, einem Intranet, einem Extranet oder dem Internet (z. B. in einem Netzwerk) verbunden werden. Die Maschine kann in der Funktion eines Servers oder eines Client-Gerätes in einer Client-Server-Netzwerkumgebung oder als eine Peer-Maschine in einer Peer-to-Peer-Netzwerkumgebung (oder einer verteilten Netzwerkumgebung) betrieben werden. Die Maschine kann ein Personal Computer (PC), ein Tablet PC, ein Beistellgerät (Set-Top Box, STB), ein persönlicher Datenassistent (Personal Digital Assistant, PDA), ein Mobiltelefon, eine Web-Appliance, ein Server, ein Netzwerk-Router, ein Schalter oder eine Brücke oder eine beliebige Maschine sein, die in der Lage ist, einen Befehlssatz (sequenziell oder anderweitig) auszuführen, der Aktionen festlegt, die von dieser Maschine unternommen werden müssen. Obwohl nur eine einzige Maschine dargestellt ist, sollte der Begriff „Maschine” außerdem so aufgefasst werden, dass er eine beliebige Ansammlung von Maschinen umfasst, die individuell oder gemeinsam einen Befehlssatz (oder mehrere Befehlssätze) umfasst, um eine beliebige oder mehrere der hier erörterten Methodologien auszuführen.
  • Das Computersystem 1200 umfasst eine Verarbeitungseinheit 1202, einen Hauptspeicher 1204 (z. B. einen schreibgeschützten Speicher (Read-Only Memory, ROM), einen Flashspeicher, einen dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM) (wie zum Beispiel einen synchronen DRAM (SDRAM) oder einen Rambus-DRAM (RDRAM)) usw.), einen statischen Speicher 1206 (z. B. einen Flashspeicher, einen statischen Direktzugriffsspeicher (Static Random Access Memory, SRAM) usw.) und eine Datenspeichereinheit 1218, die miteinander über einen Bus 1230 in einem Datenaustausch stehen. Bei einigen Ausführungsformen können die Speicherdatenstrommodule 107 und 200 in denn System 1200 umgesetzt sein. Zum Beispiel können die Speicherdatenstrommodule 107 und 200 in der Verarbeitungseinheit 1202 umgesetzt und/oder in den Befehlen 1226 gespeichert sein.
  • Die Verarbeitungseinheit 1202 stellt eine oder mehrere Universalverarbeitungseinheiten wie zum Beispiel einen Mikroprozessor einen Zentralprozessor oder Ähnliche dar. Die Verarbeitungseinheit kann insbesondere ein Computermikroprozessor mit komplexem Befehlssatz (Complex Instruction Set Computer microprocessor, CISC-Mikroprozessor), ein Computermikroprozessor mit eingeschränktem Befehlssatz (Reduced Instruction Set Computer microprocessor, RISC-Mikroprozessor), ein Mikroprozessor mit einem sehr langen Befehlswort (Very Long Instruction Word, VLIW) oder ein Prozessor, der andere Befehlssätze umsetzt, oder ein Prozessor sein, die jeweils eine Kombination von Befehlssätzen umsetzen. Die Verarbeitungseinheit 1202 kann auch eine oder mehrere Mehrzweckverarbeitungseinheiten wie zum Beispiel einen anwendungsspezifischen integrierten Schaltkreis (Application Specific Integrated Circuit, ASIC), ein anwenderprogrammierbares Gate-Array (Field Programmable Gate Array, FPGA), einen digitalen Signalprozessor (Dgital Signal Processors, DSP), einen Netzwerkprozessor oder ein ähnliches Element darstellen. Bei einer Ausführungsform kann die Verarbeitungseinheit 1202 einen oder mehrere Prozessorkerne umfassen. Die Verarbeitungseinheit 1202 ist konfiguriert, die Verarbeitungslogik 1226 auszuführen, um die hier erörterten Operationen durchzuführen. Bei einer Ausführungsform kann die Verarbeitungseinheit 1202 ein Teil des Computersystems 100 in 1 sein. Wie hier beschrieben wird, kann das Computersystem 1200 alternativ weitere Komponenten umfassen. Es ist selbstverständlich, dass der Kern ein Multithreading (ein Ausführen von zwei oder mehreren parallelen Sätzen von Operationen oder Threads) unterstützen kann, und dies in einer Vielfalt von Wegen erledigen kann einschließlich einem Zeitscheiben-Multithreading, einem simultanen Multithreading (wobei ein einziger physischer Kern einen logischen Kern für jeden der Threads bereitstellt und dieser physische Kern ein simultanes Multithreading ausführt) und einer Kombination davon (z. B. ein Zeitscheibenabrufen und -decodieren und danach ein simultanes Multithreading wie zum Beispiel in der Intel® Hyperthreading-Technologie).
  • Das Computersystem 1200 kann außerdem eine Netzwerkschnittstelleneinheit 1208 umfassen, die für einen Datenaustausch mit einem Netzwerk 1220 verbunden ist. Das Computersystem 1200 kann auch eine Videoanzeigeeinheit 1210 (z. B. einen Flüssigkristallbildschirm (Liquid Crystal Display, LCD) oder eine Kathodenstrahlröhre (Cathode Ray Tube, CRT)), ein alphanumerisches Eingabegerät 1212 (z. B. eine Tastatur), ein Cursorsteuergerät 1214 (z. B. eine Maus), ein Signalerzeugungsgerät 1216 (z. B. ein Lautsprecher) oder weitere periphere Geräte umfassen. Außerdem kann das Computersystem 1200 einen Grafikprozessor 1222, einen Videoprozessor 1228 und einen Audioprozessor 1232 umfassen. Bei einer weiteren Ausführungsform kann das Computersystem 1200 einen (nicht dargestellten) Chipsatz umfassen, der sich auf eine Gruppe von integrierten Schaltkreisen oder Chips bezieht, die ausgelegt sind, mit der Verarbeitungseinheit 1202 zu arbeiten, und der den Datenaustausch zwischen der Verarbeitungseinheit 1202 und den externen Geräten steuert. Zum Beispiel kann der Chipsatz ein Satz von Chips auf der Steuerplatine sein, der die Verarbeitungseinheit 1202 mit Ultrahochgeschwindigkeitseinheiten wie zum Beispiel dem Hauptspeicher 1204 und Grafiksteuereinheiten verbindet, sowie die Verarbeitungseinheit 1202 mit peripheren Bussen mit niedrigerer Geschwindigkeit für periphere Geräte wie zum Beispiel USB-, PCI- oder ISA-Bussen verbindet.
  • Die Datenspeichereinheit 1218 kann ein computerlesbares Speichermedium 1224 umfassen, in dem Software 1226 gespeichert ist, die eine oder mehrere der Methodologien der hier beschriebenen Funktionen verkörpert. Die Software 1226 kann auch vollständig oder teilweise als Befehle 1226 innerhalb des Hauptspeichers 1204 und/oder als Verarbeitungslogik 1226 in der Verarbeitungseinheit 1202 abgelegt sein, wobei, während deren Ausführung durch das Computersystem 1200 der Hauptspeicher 1204 und die Verarbeitungseinheit 1202 auch ein computerlesbares Speichermedium darstellen.
  • Das computerlesbare Speichermedium 1224 kann auch verwendet werden, um Befehle 1226 zu speichern, welche die Verarbeitungseinheit 1202 verwenden, wie es zum Beispiel in Bezug auf 1 und/oder Verfahren beschrieben wird, die Softwarebibliotheken enthalten, welche die Anwendungen aufrufen. Obwohl das computerlesbare Speichermedium 1224 in einer beispielhaften Ausführungsform als ein einziges Medium gezeigt wird, sollte der Begriff „computerlesbares Speichermedium” so verstanden werden, dass er ein Medium oder mehrere Medien umfasst (z. B. eine zentralisierte oder verteilte Datenbank und/oder zugeordnete Cachespeicher und Server), die den einen oder die mehreren Befehlssätze speichern. Der Begriff „computerlesbares Speichermedium” sollte auch so verstanden werden, dass er jedes beliebige Medium umfasst, dass in der Lage ist, einen Befehlssatz für eine Ausführung durch die Maschine zu speichern, zu codieren oder zu tragen, und dass die Maschine veranlassen kann, eine oder mehrere Methodologien der vorliegenden Ausführungsformen durchzuführen. Der Begriff „computerlesbares Speichermedium” sollte dementsprechend auch so verstanden werden, dass er, ohne auf diese beschränkt zu sein, auch Halbleiterspeicher und optische und magnetische Medien umfasst.
  • Die folgenden Beispiele gehören zu weiteren Ausführungsformen.
  • Beispiel 1 ist ein Prozessor der einen Speicher, ein oder mehrere Funktionseinheiten, die mit dem Speicher verbunden sind, und ein Speicherdatenstrontmodul umfasst, das mit dem Speicher und einer oder mehreren der Funktionseinheiten verbunden ist. Das Speicherdatenstrommodul kann betriebsbereit sein, um eine Vielzahl von Operationen zu empfangen, die dem Speicher zugeordnet ist, und eine Vielzahl von Operationen zu empfangen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist. Außerdem kann das Speicherdatenstrommodul eine Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, ermitteln, eine erste Reihenfolge für die Vielzahl von Operationen erzeugen, die dem Speicher zugeordnet ist, und auf der Grundlage der Abhängigkeit und der ersten Reihenfolge der Operationen, die dem Speicher zugeordnet sind, eine zweite Reihenfolge für die Vielzahl von Operationen erzeugen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist.
  • Im Beispiel 2, ausgeführt in dem Prozessor des Beispiels 1, legt die Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, fest, dass mindestens eine Operation der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, nicht ausgeführt werden darf, bis eine Operation der Vielzahl von Operationen ausgeführt wurde, die dem Speicher zugeordnet ist.
  • Im Beispiel 3, ausgeführt in dem Prozessor aus einem der Beispiele 1 bis 2, umfasst die Vielzahl von Operationen, die dem Speicher zugeordnet ist, Lese- und Schreiboperationen, die dem Speicher zugeordnet sind, und die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, umfasst einen Trigger, um die eine oder mehreren Funktionseinheiten so zu betreiben, dass sie mit den in dem Speicher gespeicherten Daten operieren.
  • Im Beispiel 4, ausgeführt in dem Prozessor aus einem der Beispiele 1 bis 3, speichern die Schreiboperationen, die dem Speicher zugeordnet sind, einen Steuerblock in dem Speicher und der Steuerblock umfasst Anweisungen für das Betreiben der einen oder mehreren Funktionseinheiten.
  • Im Beispiel 5, ausgeführt in dem Prozessor aus einem der Beispiele 1 bis 4, ist der Speicher ein kohärenter Speicher und die eine oder mehreren Funktionseinheiten sind nicht kohärente (NOn-COherent, NOCO) Funktionseinheiten.
  • Im Beispiel 6, ausgeführt in dem Prozessor aus einem der Beispiele 1 bis 5, ist das Speicherdatenstrommodul außerdem dazu da, die Vielzahl von Operationen, die dem Speicher zugeordnet ist, und die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, auf der Grundlage der ersten Reihenfolge und der zweiten Reihenfolge auszuführen.
  • Im Beispiel 7, ausgeführt in dem Prozessor aus einem der Beispiele 1 bis 6, ist das Speicherdatenstrommodul außerdem dazu da, eine Weiterleitung einer Schreiboperation aus der Vielzahl von Operationen zu identifizieren, die dem Speicher zugeordnet ist, eine zweite Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, auf der Grundlage der weitergeleiteten Schreiboperation zu ermitteln, und die zweite Reihenfolge auf der Grundlage der zweiten Abhängigkeit zu verändern, wobei die zweite Abhängigkeit festlegt, dass mindestens eine aus der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, nicht ausgeführt werden darf, bis die weitergeleitete Operation ausgeführt wurde.
  • Im Beispiel 8, ausgeführt in dem Prozessor aus einem der Beispiele 1 bis 7, umfasst die erste Reihenfolge die Vielzahl von Operationen, die dem Speicher zugeordnet ist, in einer sequenziellen Reihenfolge, und die zweite Reihenfolge umfasst die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, in einer sequenziellen Reihenfolge.
  • Im Beispiel 9, ausgeführt in dem Prozessor aus einem der Beispiele 1 bis 8, umfasst die erste Reihenfolge die Vielzahl von Operationen, die dem Speicher zugeordnet ist, in einer Reihenfolge, bei der eine Leseoperation der Vielzahl von Operationen, die dem Speicher zugeordnet ist, vor einer Schreiboperation der Vielzahl von Operationen ausgeführt werden kann, die dem Speicher zugeordnet ist, wobei die Schreiboperation früher in der programmierten Reihenfolge steht als die Leseoperation. Die zweite Reihenfolge umfasst eine Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, in einer sequenziellen Reihenfolge.
  • Im Beispiel 10 umfasst ein Verfahren ein Empfangen einer Vielzahl von Operationen, die dem Speicher zugeordnet ist, und einer Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, in einem Speichersequentialisierungsmodul eines Prozessors. Eine Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, kann ermittelt werden. Eine erste Reihenfolge für die Vielzahl von Operationen, die dem Speicher zugeordnet ist, und eine zweite Reihenfolge für die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, kann auf der Grundlage der Abhängigkeit und der ersten Reihenfolge für die Vielzahl von Operationen erzeugt werden, die dem Speicher zugeordnet ist.
  • Im Beispiel 11, ausgeführt in dem Verfahren des Beispiels 10, legt die Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, fest, dass mindestens eine Operation der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, nicht ausgeführt werden darf, bis eine Operation der Vielzahl von Operationen ausgeführt wurde, die dem Speicher zugeordnet ist.
  • Im Beispiel 12, ausgeführt in dem Verfahren aus einem der Beispiele 10 bis 11, umfasst die Vielzahl von Operationen, die dem Speicher zugeordnet ist, Lese- und Schreiboperationen, die dem Speicher zugeordnet sind, und wobei die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, einen Trigger umfasst, um die eine oder mehreren Funktionseinheiten so zu betreiben, dass sie mit den in dem Speicher gespeicherten Daten operieren.
  • Im Beispiel 13, ausgeführt in dem Verfahren aus einem der Beispiele 10 bis 12, speichern die Schreiboperationen, die dem Speicher zugeordnet sind, einen Steuerblock in dem Speicher und der Steuerblock umfasst Anweisungen für das Betreiben der einen oder mehreren Funktionseinheiten.
  • Im Beispiel 14, ausgeführt in dem Verfahren aus einem der Beispiele 10 bis 13, ist der Speicher ein kohärenter Speicher und die eine oder mehreren Funktionseinheiten sind nicht kohärente (NOn-COherent, NOCO) Funktionseinheiten.
  • Im Beispiel 15, ausgeführt in dem Verfahren aus einem der Beispiele 10 bis 14, umfasst das Verfahren außerdem ein Ausführen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, durch das Speichersequentialisierungsmodul auf der Grundlage der ersten Reihenfolge und der zweiten Reihenfolge.
  • Im Beispiel 16, ausgeführt in dem Verfahren aus einem der Beispiele 10 bis 15, umfasst das Verfahren außerdem ein Identifizieren durch das Speichersequentialisierungsmodul einer Weiterleitung einer Schreiboperation aus der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und ein Ermitteln durch das Speichersequentialisierungsmodul einer zweiten Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, auf der Grundlage der weitergeleiteten Schreiboperation. Das Verfahren kann außerdem ein Verändern durch das Speichersequentialisierungsmodul der zweiten Reihenfolge auf der Grundlage der zweiten Abhängigkeit umfassen, wobei die zweite Abhängigkeit festlegt, dass mindestens eine aus der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, nicht ausgeführt werden darf, bis die Schreiboperation ausgeführt wurde.
  • Im Beispiel 17, ausgeführt in dem Verfahren aus einem der Beispiele 10 bis 16, umfasst die erste Reihenfolge die Vielzahl von Operationen, die dem Speicher zugeordnet ist, in einer sequenziellen Reihenfolge, und die zweite Reihenfolge umfasst die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, in einer sequenziellen Reihenfolge.
  • Im Beispiel 18, ausgeführt in dem Verfahren aus einem der Beispiele 10 bis 17, umfasst die erste Reihenfolge die Vielzahl von Operationen, die dem Speicher zugeordnet ist, in einer Reihenfolge, bei der eine Leseoperation der Vielzahl von Operationen, die dem Speicher zugeordnet ist, vor einer Schreiboperation der Vielzahl von Operationen ausgeführt werden kann, die dem Speicher zugeordnet ist, wobei die Schreiboperation früher in der programmierten Reihenfolge steht als die Leseoperation, und wobei die zweite Reihenfolge die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, in einer sequenziellen Reihenfolge umfasst.
  • Verschiedene Ausführungsformen können unterschiedliche Kombinationen der oben beschriebenen strukturellen Merkmale aufweisen. Zum Beispiel können alle optionalen Merkmale der oben beschriebenen Prozessoren und Verfahren auch mit einem hier beschriebenen Prozessor umgesetzt werden und Einzelheiten aus den Beispielen können überall in einer oder mehreren Ausführungsformen verwendet werden.
  • Beispiel 19 ist ein integrierter Schaltkreis, der einen Prozessorkern und ein Speichersequentialisierungsmodul umfasst. Das Speichersequentialisierungsmodul dient dazu, eine Vielzahl von Operationen, die dem Speicher zugeordnet ist, und eine Vielzahl von Operationen zu empfangen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, eine Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, zu ermitteln, eine erste Reihenfolge für die Vielzahl von Operationen zu erzeugen, die dem Speicher zugeordnet ist, und auf der Grundlage der Abhängigkeit und der ersten Reihenfolge für die Vielzahl von Operationen, die dem Speicher zugeordnet ist, eine zweite Reihenfolge für die Vielzahl von Operationen zu erzeugen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist. Die Vielzahl von Operationen, die dem Speicher zugeordnet ist, und die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, können auf der Grundlage der ersten Reihenfolge und der zweiten Reihenfolge ausgeführt werden.
  • Im Beispiel 20, ausgeführt in dem integrierten Schaltkreis des Beispiels 19, legt die Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, fest, dass mindestens eine Operation der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, nicht ausgeführt werden darf, bis eine Operation der Vielzahl von Operationen ausgeführt wurde, die dem Speicher zugeordnet ist.
  • Im Beispiel 21, ausgeführt in dem integrierten Schaltkreis aus einem der Beispiele 19 bis 20, umfasst die Vielzahl von Operationen, die dem Speicher zugeordnet ist, Lese- und Schreiboperationen, die dem Speicher zugeordnet sind, und die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, umfasst einen Trigger, um die eine oder mehreren Funktionseinheiten so zu betreiben, dass sie mit den in dem Speicher gespeicherten Daten operieren.
  • Im Beispiel 22, ausgeführt in dem integrierten Schaltkreis aus einem der Beispiele 19 bis 21, speichern die Schreiboperationen, die dem Speicher zugeordnet sind, einen Steuerblock in dem Speicher und der Steuerblock umfasst Anweisungen für das Betreiben der einen oder mehreren Funktionseinheiten.
  • Im Beispiel 23, ausgeführt in dem integrierten Schaltkreis aus einem der Beispiele 19 bis 22, dient das Speicherdatenstrommodul außerdem dazu eine Weiterleitung einer Schreiboperation aus der Vielzahl von Operationen zu identifizieren, die dem Speicher zugeordnet ist, eine zweite Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, auf der Grundlage der weitergeleiteten Schreiboperation zu ermitteln und die zweite Reihenfolge auf der Grundlage der zweiten Abhängigkeit zu verändern. Die zweite Abhängigkeit legt fest, dass mindestens eine aus der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, nicht ausgeführt werden darf, bis die weitergeleitete Schreiboperation ausgeführt wurde.
  • Verschiedene Ausführungsformen können unterschiedliche Kombinationen der oben beschriebenen funktionellen Merkmale aufweisen. Zum Beispiel können alle optionalen Merkmale des oben beschriebenen Verfahrens auch in Bezug auf ein nichtflüchtiges computerlesbares Speichermedium umgesetzt werden. Einzelheiten in den Beispielen können überall in einer oder mehreren Ausführungsformen verwendet werden.
  • Beispiel 24 ist ein nichtflüchtiges computerlesbares Speichermedium, das Anweisungen umfasst, die, wenn sie von einem Prozessor ausgeführt werden, den Prozessor veranlassen, das Verfahren aus den Beispielen 10 bis 18 auszuführen.
  • Beispiel 25 ist ein System, das ein Ein-Chip-System (System On a Chip, SOC) umfasst, das eine Vielzahl von Funktionseinheiten, einen Speicher und ein Speicherdatenstrommodul umfasst, das mit den Funktionseinheiten verbunden ist, um eine Vielzahl von Operationen, die dem Speicher zugeordnet ist, und eine Vielzahl von Operationen zu empfangen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, eine Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, zu ermitteln, eine erste Reihenfolge für die Vielzahl von Operationen zu erzeugen, die dem Speicher zugeordnet ist, und auf der Grundlage der Abhängigkeit und der ersten Reihenfolge für die Vielzahl von Operationen, die dem Speicher zugeordnet ist, eine zweite Reihenfolge für die Vielzahl von Operationen zu erzeugen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist.
  • Im Beispiel 26 umfasst das SOC aus Beispiel 25 außerdem den Gegenstand der Beispiele 1 bis 9.
  • Im Beispiel 27 kann das Speicherdatenstrommodul des SOC aus Beispiel 25 außerdem betriebsbereit sein, um den Gegenstand der Beispiele 10 bis 18 auszuführen.
  • Im Beispiel 28 umfasst das SOC aus Beispiel 25 den Gegenstand der Beispiele 19 bis 23.
  • Beispiel 29 ist eine Vorrichtung, die Mittel zum Empfangen einer Vielzahl von Operationen, die dem Speicher zugeordnet ist, ein Mittel zum Empfangen einer Vielzahl von Operationen zu empfangen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, ein Mittel zum Ermitteln einer Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, ein Mittel zum Erzeugen einer erste Reihenfolge für die Vielzahl von Operationen, die dem Speicher zugeordnet ist, und ein Mittel zum Erzeugen einer zweiten Reihenfolge für die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, auf der Grundlage der Abhängigkeit und der ersten Reihenfolge für die Vielzahl von Operationen, die dem Speicher zugeordnet ist.
  • Im Beispiel 30 umfasst die Vorrichtung aus Beispiel 29 außerdem den Gegenstand der Beispiele 1 bis 9 und der Beispiele 20 bis 23.
  • Beispiel 31 ist eine Vorrichtung, die ein Speicherdatenstrommodul umfasst, wobei das Speicherdatenstrommodul konfiguriert ist, das Verfahren nach einem der Beispiele 10 bis 18 auszuführen.
  • Im Beispiel 32 umfasst die Vorrichtung aus Beispiel 31 außerdem den Gegenstand der Beispiele 1 bis 9 und der Beispiele 19 bis 28.
  • Obwohl die vorliegende Offenbarung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, sind für den Fachmann zahlreiche Veränderungen und Variationen davon selbstverständlich. Die angefügten Ansprüche sind so zu verstehen, dass sie alle diese Veränderungen und Variationen abdeckt, die in den wahren Erfindungsgedanken und den Umfangs der vorliegenden Offenbarung fallen.
  • In der hier vorliegenden Beschreibung werden zahlreiche spezifische Einzelheiten erläutert wie die Beispiele spezifische Arten von Prozessoren und Systemkonfigurationen, spezifische Hardwarestrukturen, spezifische Architektur- und Mikroarchitektureinzelheiten, spezifische Registerkonfigurationen, spezifische Befehlsarten, spezifische Systemkomponenten, spezifische Abmessungen/Höhen, spezifische Prozessorpipelinestufen und -operationen usw., um ein gründliches Verständnis der vorliegenden Offenbarung bereitzustellen. Für den Fachmann ist es jedoch offensichtlich, dass es nicht notwendig ist, diese spezifischen Einzelheiten einzusetzen, um die vorliegende Offenbarung in die Praxis umzusetzen. Bei weiteren Beispielen wurden bekannte Komponenten oder Verfahren wie zum Beispiel spezifische und alternative Prozessorarchitekturen, spezifische Logikschaltkreise/Logikcodes für beschriebene Algorithmen, ein spezifischer Firmwarecode, eine spezifische Verbindungsoperation, spezifische Logikkonfigurationen, spezifische Herstellungstechniken und -materialien, spezifische Compilerumsetzungen, ein spezifischer Ausdruck von Algorithmen in einem Code, spezifische Abschalt- und Filtertechniken/-logiken und andere spezifische funktionelle Einzelheiten eines Computersystems nicht ausführlich beschrieben, um ein unnötiges Erschweren für das Verständnis der vorliegenden Offenbarung zu vermeiden.
  • Die Ausführungsformen werden in Bezug auf eine Cachespeicherdatenkomprimierung und -dekomprimierung in spezifischen integrierten Schaltkreisen wie zum Beispiel in Computerplattformen oder Mikroprozessoren beschrieben. Die Ausführungsformen können auch auf andere Arten von integrierten Schaltkreisen und programmierbarer Logikeinheiten anwendbar sein. Die offenbarten Ausführungsformen sind zum Beispiel nicht auf Desktop-Computersysteme oder tragbare Computer wie zum Beispiel Intel® UltrabooksTM Computer beschränkt, und sie können auch in anderen Geräten wie zum Beispiel tragbaren Geräten, Tablet-Computern, anderen dünnen Notebooks Ein-Chip-Systemgeräten (System On a Chip Devices, SOC-Geräte) und eingebetteten Anwendungen verwendet werden. Einige Beispiele tragbarer Einheiten umfassen Mobiltelefone, Internetprotokollgeräte, digitale Kameras, persönliche Datenassistenten (Personal Digital Assistants, PDAs) und tragbare PCs. Zu den eingebetteten Anwendungen gehören typischerweise eine Mikrosteuereinheit, ein digitaler Signalprozessor (Digital Signal Processor, DSP), ein Ein-Chip-System, Netzwerkcomputer (NetPC), Beistellgeräte, Netzwerkknoten, Fernnetzschalter (Wide Area Network switches, WAN-Schalter) oder jedes andere System, das eine oder mehrere Anweisungen gemäß mindestens einer Ausführungsform ausführen kann. Es wird beschrieben, dass das System jede Art eines Computers oder eingebetteten Systems sein kann. Die offenbarten Ausführungsformen können speziell für einfache Geräte, wie zum Anziehen geeignete Geräte (z. B. Uhren), elektronische Implantate, Sensor- und Steuerungsinfrastrukturgeräte, Steuereinheiten, überwachende Steuerungs-Datenerfassungssysteme (Supervisory Control And Data Acquisition systems, SCADA-Systeme) oder ähnliche Elemente verwendet werden. Darüber hinaus sind die hier beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physische Computergeräte beschränkt, sondern sie können sich auch auf Softwareoptimierungen für Energieerhaltung und -einsparung beziehen. Wie aus der nachfolgenden Beschreibung einfach ersichtlich wird, sind die hier beschriebenen Ausführungsformen der Verfahren, Vorrichtungen und Systeme (entweder in Bezug auf eine Hardware, Firmware, Software oder eine Kombination davon) unverzichtbar für eine „grüne Technologie”-Zukunft, die mit Anforderungen an die Leistungsfähigkeit in Einklang steht.
  • Obwohl die Ausführungsformen hier in Bezug auf einen Prozessor beschrieben werden, können weitere Ausführungsformen auf andere Arten von integrierten Schaltkreisen und Logikeinheiten anwendbar sein. Ähnliche Techniken und Lehren von Ausführungsformen der vorliegenden Offenbarung können auf andere Arten von Schaltkreisen oder Halbleitereinheiten angewandt werden, die von einem größeren Pipelinedurchsatz und einer verbesserten Leistungsfähigkeit profitieren. Die Lehren der Ausführungsformen der vorliegenden Offenbarung sind auf jeden Prozessor und jede Maschine anwendbar, die Datenmanipulationen ausführt. Die vorliegende Offenbarung ist jedoch nicht beschränkt auf Prozessoren oder Maschinen, die Datenoperationen von 512 Bit, 256 Bit, 128 Bit und 64 Bit, 32 Bit oder 16 Bit ausführen und kann auf jeden Prozessor und jede Maschine angewandt werden, in der eine Manipulation oder eine Verwaltung von Daten ausgeführt wird. Außerdem stellt die Beschreibung hier Beispiele bereit und die begleitenden Zeichnungen zeigen verschiedene Beispiele jeweils zu Zwecken der Veranschaulichung. Diese Beispiele sind jedoch nicht in einem einschränkenden Sinne zu verstehen, da sie nur dazu dienen, Beispiele von Ausführungsformen der vorliegenden Offenbarung bereitzustellen, aber keinesfalls eine erschöpfende Liste aller möglichen Umsetzungen von Ausführungsformen der vorliegenden Offenbarung bereitstellen.
  • Obwohl die nachfolgenden Beispiele eine Befehlsbehandlung und -verteilung im Zusammenhang mit Ausführungseinheiten und Logikschaltkreisen beschreiben, können weitere Ausführungsformen der vorliegenden Offenbarung durch Daten und Befehle erreicht werden, die auf einem maschinenlesbaren, konkreten Medium gespeichert sind und die, wenn sie von einer Maschine ausgeführt werden, die Maschine veranlassen, Funktionen auszuführen, die mit mindestens einer Ausführungsform der Offenbarung übereinstimmen. Bei einer Ausführungsform sind Funktionen, die Ausführungsformen der vorliegenden Offenbarung zugeordnet sind, in maschinenausführbaren Befehlen verkörpert. Die Befehle können verwendet werden, um einen Universal- oder Spezialprozessor, der mit den Befehlen programmiert ist, zu veranlassen, die Schritte der vorliegenden Offenbarung auszuführen. Ausführungsformen der vorliegenden Offenbarung können als ein Computerprogrammprodukt oder eine Software bereitgestellt werden, die ein maschinen- oder computerlesbares Medium umfassen, auf dem Befehle gespeichert sind, die verwendet werden können, einen Computer (oder ein anderes elektronisches Gerät) so zu programmieren, dass eine oder mehrere Operationen gemäß einiger Ausführungsformen der vorliegenden Offenbarung ausgeführt werden. Alternativ könnten Operationen der Ausführungsformen der vorliegenden Offenbarung durch spezifische Hardwarekomponenten, die eine Logik mit festen Funktionen zum Ausführen der Operationen enthalten, oder durch eine beliebige Kombination von programmierten Computerkomponenten und Hardwarekomponenten mit festen Funktionen ausgeführt werden.
  • Befehle die in einer Programmlogik verwendet werden, um Ausführungsformen der Offenbarung auszuführen, können in einem Speicher in dem System wie zum Beispiel einem DRAM, einem Cachespeicher einem Flashspeicher oder einem anderen Speicher gespeichert werden. Außerdem können die Befehle über ein Netzwerk oder mithilfe anderer computerlesbarer Medien verteilt werden. Somit kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern und Übertragen von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form umfassen, ohne auf eine der folgenden beschränkt zu sein, Disketten, optische Disketten, CD-ROMs, magnetooptische Disketten, einen schreibgeschützten Speicher (Read-Only Memory, ROM), einen Direktzugriffsspeicher (Random Access Memory, RAM), einen löschbaren programmierbaren schreibgeschützten Speicher (Erasable Programmable Read-Only Memory, EPROM), einen elektrisch löschbaren programmierbaren schreibgeschützten Speicher (Electrically Erasable Programmable Read-Only Memory, EEPROM), magnetische oder optische Karten, einen Flashspeicher oder einen konkreten maschinenlesbaren Datenspeicher, der bei der Übertragung von Informationen über das Internet mithilfe elektrischer, optischer, akustischer oder anderer Formen verbreiteter Signale (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet wird. Folglich umfasst das computerlesbare Medium eine beliebige Art eines konkreten maschinenlesbaren Mediums, das geeignet ist, zum Speichern oder Übertragen elektronischer Befehle oder Informationen in einer Form, die durch eine Maschine (z. B. einen Computer) lesbar ist.
  • Eine Auslegung kann durch verschiedene Stufen gehen, von der Schöpfung über die Simulation bis zur Herstellung. Daten die eine Auslegung darstellen, können die Auslegung in einer Vielzahl von Formen darstellen. Wie es bei Simulationen nützlich ist, kann als Erstes die Hardware mithilfe einer Hardwarebeschreibungssprache oder einer anderen funktionellen Beschreibungssprache dargestellt werden. Zusätzlich kann auf einigen Stufen des Auslegungsprozesses ein Modell auf Schaltkreisebene mit Logik- und/oder Transistor-Gates angefertigt werden. Außerdem erreichen die meisten Auslegungen auf einer bestimmten Stufe eine Datenebene, die das physische Anbringen verschiedener Geräte in dem Hardwaremodell darstellt. In dem Fall, in dem herkömmliche Halbleiterherstellungstechniken verwendet werden, können die Daten, die das Hardwaremodell darstellen, Daten sein, die das Vorhandensein oder die Abwesenheit verschiedener Merkmale auf unterschiedlichen Maskenschichten für Masken festlegen, die verwendet werden um den integrierten Schaltkreis anzufertigen. Bei jeder Darstellung der Auslegung können die Daten in einer beliebigen Form eines maschinenlesbaren Mediums gespeichert werden. Ein Arbeitsspeicher oder ein magnetischer oder optischer Datenspeicher wie zum Beispiel eine Diskette können das maschinenlesbare Medium bilden, um die Informationen zu speichern, die über eine optische oder elektrische Welle übertragen werden, die moduliert oder anderweitig erzeugt wird, um diese Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder das Modell anzeigt oder trägt, in der Weise übertragen wird, das ein Kopieren, Puffer oder eine erneute Übertragung des elektrischen Signals ausgeführt wird, wird eine neue Kopie erstellt. Somit kann ein Kommunikationsbetreiber oder ein Netzwerkbetreiber einen Artikel wie zum Beispiel Informationen, die in einer Trägerwelle codiert sind und Techniken von Ausführungsformen der vorliegenden Offenbarung verkörpern, zumindest vorübergehend auf einem konkreten maschinenlesbaren Medium speichern.
  • Ein Modul, wie es hier verwendet wird, bezieht sich auf eine beliebige Kombination von Hardware, Software und/oder Firmware. Zum Beispiel umfasst ein Modul eine Hardware wie zum Beispiel eine Mikrosteuereinheit, die einem nichtflüchtigen Medium zugeordnet ist, um einen Code zu speichern, der geeignet ist von der Mikrosteuereinheit ausgeführt zu werden. Bei einer Ausführungsform bezieht sich daher ein Hinweis auf ein Modul auf die Hardware, die spezifisch konfiguriert ist, den Code zu erkenne und/oder auszuführen, der auf einem nichtflüchtigen Medium aufbewahrt wird. Außerdem bezieht sich bei einer weiteren Ausführungsform die Verwendung eines Moduls auf das nichtflüchtige Medium, das den Code enthält, der spezifisch so ausgelegt ist, dass er von der Mikrosteuereinheit ausgeführt wird, um die vorbestimmten Operationen auszuführen. Bei einer weiteren Ausführungsform kann daraus gefolgert werden, dass sich der Begriff „Modul” (bei diesem Beispiel) auf die Kombination aus der Mikrosteuereinheit und dem nichtflüchtigen Medium beziehen kann. Oftmals ist es üblich, dass die Modulgrenzen, die als klar getrennt dargestellt werden, variieren und sich potenziell überschneiden können. Zum Beispiel können ein erstes und ein zweites Modul Hardware-, Software-, Firmware-Elemente oder eine Kombination davon gemeinsam nutzen, während sie einige unabhängige Hardware-, Software- oder Firmwareelemente potenziell zurückhalten. Bei einer Ausführungsform umfasst der Begriff Logik eine Hardware wie zum Beispiel Transistoren, Register oder weitere Hardwareelemente wie zum Beispiel programmierbare Logikeinheiten.
  • Die Verwendung des Ausdrucks „konfiguriert für” in einer Ausführungsform bezieht sich auf ein Anordnen, Zusammensetzen, Herstellen, zum Verkauf Anbieten, Importieren und/oder Auslegen einer Vorrichtung, Hardware, Logik oder einem Element zum Ausführen einer vorgesehenen oder bestimmten Aufgabe. Bei diesem Beispiel ist eine Vorrichtung oder ein Element derselben, die oder das nicht in Betrieb ist, immer noch „konfiguriert”, um eine vorgesehene Aufgabe auszuführen, wenn die Vorrichtung oder das Element ausgelegt, verbunden oder angeschlossen sind, um diese vorgesehene Aufgabe auszuführen. Bei einem rein anschaulichen Beispiel kann ein Logik-Gate während des Betriebs eine „0” oder eine „1” bereitstellen. Aber ein Logik-Gate, das „konfiguriert” ist, ein Aktivierungssignal für einen Takt bereitzustellen, umfasst nicht jedes potenzielle Logik-Gate, das eine 1 oder 0 bereitstellen kann. Stattdessen ist das Logik-Gate in einer gewissen Weise so angeschlossen, dass während des Betriebs die 1- oder 0-Ausgabe den Takt aktiviert. Es ist wiederum zu beachten, dass die Verwendung des Begriffs „konfiguriert für” keinen Betrieb erfordert, sondern stattdessen auf einen latenten Zustand einer Vorrichtung, einer Hardware und/oder eines Elementes gerichtet ist, wobei die Vorrichtung, die Hardware und/oder das Element in dem latenten Zustand ausgelegt sind, eine spezielle Aufgabe auszuführen, wenn die Vorrichtung, die Hardware und/oder das Element in Betrieb sind.
  • Außerdem bezieht sich die Verwendung der Ausdrücke „zu”, „für”, „in der Lage sein” und/oder „betriebsbereit sein” in einer Ausführungsform auf eine Vorrichtung, Logik, Hardware und/oder ein Element, die so ausgelegt sind, dass sie die Verwendung der Vorrichtung, der Logik, der Hardware und/oder des Elements in einer festgelegten Weise aktivieren. Es ist wie oben zu beachten, dass sich die Verwendung von „zu”, „für”, „in der Lage sein” und/oder „betriebsbereit sein” in einer Ausführungsform auf einen latenten Zustand einer Vorrichtung, Logik, Hardware und/oder eines Elements bezieht, wobei die Vorrichtung, die Logik, die Hardware und/oder das Element nicht in Betrieb sind, aber in einer solchen Weise ausgelegt sind, um eine Verwendung einer Vorrichtung zu aktivieren.
  • Ein Wert umfasst, wie er hier verwendet wird, jede bekannte Darstellung einer Zahl, eines Zustandes, eines Logikzustandes oder eines binären Logikzustandes. Oftmals wird auf die Verwendung der Logikebenen, Logikwerte und logischen Werte auch als „1”-en oder „0”-en Bezug genommen, welche einfach die binären Logikzustände darstellen. Zum Beispiel bezieht sich eine 1 auf eine höhere Logikebene und 0 bezieht sich auf eine niedrige Logikebene. Bei einer Ausführungsform kann eine Speicherzelle wie zum Beispiel ein Transistor oder eine Flashzelle in der Lage sein, einen einzigen logischen Wert oder mehrere logische Werte aufzubewahren. Es wurden jedoch auch andere Darstellungen von Werten in Computersystemen verwendet. Zum Beispiel kann die dezimale Zahl Zehn auch dargestellt werden als ein binärer Wert von 1010 oder als ein hexadezimaler Buchstabe A. Daher umfasst einen Wert eine beliebige Informationsdarstellung, die in der Lage ist, in einem Computersystem aufbewahrt zu werden.
  • Darüber hinaus können Zustande durch Werte oder Anteile von Werten dargestellt werden. Bei einem Beispiel kann ein erster Wert wie zum Beispiel eine logische Eins einen standardmäßigen oder ursprünglichen Zustand darstellen, während ein zweiter Wert wie zum Beispiel eine logische Null einen nicht standardmäßigen Zustand darstellen kann. Außerdem können sich die Begriffe „zurücksetzen” und „einstellen” in einer Ausführungsform auf einen standardmäßigen und einen aktualisierten Wert bzw. Zustand beziehen. Zum Beispiel umfasst ein standardmäßiger Wert potenziell einen hohen logischen Wert, d. h. Zurücksetzen, während ein aktualisierter Wert potenziell einen niedrigen logischen Wert d. h. Einstellen umfasst. Es ist zu beachten, dass eine beliebige Kombination von Werten verwendet werden kann, um eine beliebige Anzahl von Zuständen darzustellen.
  • Die Ausführungsformen der oben erläuterten Verfahren, Hardware, Software, Firmware oder Codes können über Befehle oder Codes umgesetzt werden, die auf einem maschinenzugänglichen, maschinenlesbaren, computerzugänglichen oder computerlesbaren Medium gespeichert sind und durch ein Verarbeitungselement ausführbar sind. Ein nichtflüchtiges maschinenzugängliches/-lesbares Medium umfasst einen beliebigen Mechanismus der Informationen in einer durch eine Maschine wie zum Beispiel einen Computer oder ein elektronisches System lesbaren Form bereitstellt (d. h. speichert und/oder überträgt). Zum Beispiel umfasst ein nichtflüchtiges maschinenzugängliches Medium einen Direktzugriffsspeicher (Random-Access Memory, RAM) wie zum Beispiel einen statischen RAM (SRAM) oder einen dynamischen RAM (DRAM), einen ROM; ein magenetisches oder optisches Speichermedium, Flashspeichereinheiten, elektrische Speichereinheiten, optische Speichereinheiten, akustische Speichereinheiten, andere Formen von Speichereinheiten zum Aufbewahren von Informationen, die von vorübergehenden (weitergegebenen) Signalen (z. B. Trägerwellen, Infrarotsignalen oder Digitalsignalen) empfangen wurden, usw., die von nichtflüchtigen Medien unterschieden werden müssen, die Informationen von jenen Elementen empfangen können.
  • Befehle die in einer Programmlogik verwendet werden, um Ausführungsformen der Offenbarung auszuführen, können in einem Speicher in dem System wie zum Beispiel einem DRAM, einem Cachespeicher einem Flashspeicher oder einem anderen Speicher gespeichert werden. Außerdem können die Befehle über ein Netzwerk oder mithilfe anderer computerlesbarer Medien verteilt werden. Somit kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern und Übertragen von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form umfassen, ohne auf eine der folgenden beschränkt zu sein, Disketten, optische Disketten, CD-ROMs, magnetooptische Disketten, einen schreibgeschützten Speicher (Read-Only Memory, ROM), einen Direktzugriffsspeicher (Random Access Memory, RAM), einen löschbaren programmierbaren schreibgeschützten Speicher (Erasable Programmable Read-Only Memory, EPROM), einen elektrisch löschbaren programmierbaren schreibgeschützten Speicher (Electrically Erasable Programmable Read-Only Memory, EEPROM), magnetische oder optische Karten, einen Flashspeicher oder einen konkreten maschinenlesbaren Datenspeicher, der bei der Übertragung von Informationen über das Internet mithilfe elektrischer, optischer, akustischer oder anderer Formen verbreiteter Signale (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet wird. Folglich umfasst das computerlesbare Medium eine beliebige Art eines konkreten maschinenlesbaren Mediums, das geeignet ist, um elektronische Befehle oder Informationen in einer Form zu speichern oder zu übertragen, die durch eine Maschine (z. B. einen Computer) lesbar ist.
  • In der gesamten Beschreibung bedeutet der Bezug auf „eine Ausführungsform”, dass ein spezielles Merkmal, eine spezielle Struktur oder eine spezielle Eigenschaft, die im Zusammenhang mit dieser Ausführungsform beschrieben wird, bei mindestens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Somit beziehen sich die Verwendungen des Ausdrucks „bei einer Ausführungsform” an verschiedenen Stellen der gesamten Beschreibung nicht unbedingt immer auf die gleiche Ausführungsform. Außerdem können die speziellen Merkmale, Strukturen oder Eigenschaften bei einer oder mehreren Ausführungsformen in einer geeigneten Weise kombiniert werden.
  • In der vorangehenden Beschreibung wurde eine ausführliche Beschreibung in Bezug auf spezifische beispielhafte Ausführungsformen bereitgestellt. Es ist jedoch offensichtlich, dass zahlreiche Modifikationen und Änderungen daran vorgenommen werden können, ohne sich von dem breiteren Erfindungsgedanken und Umfang der Offenbarung abzuweichen, wie er in den angefügten Ansprüchen erläutert wird. Die Beschreibung und Zeichnungen sind folglich in einem anschaulichen Sinn aber nicht eine einem einschränkenden Sinn zu betrachten. Außerdem beziehen sich die vorangehende Verwendung von „Ausführungsform” und anderer beispielhafter Wendungen nicht unbedingt auf die gleiche Ausführungsform oder das gleiche Beispiel, sondern sie können sich auf unterschiedliche und verschiedene Ausführungsformen sowie auf potenziell die gleiche Ausführungsform beziehen.
  • Einige Anteile der detaillierten Beschreibung werden in Bezug auf Algorithmen und symbolische Wiedergaben von Operationen an Datenbits in einem Computerspeicher dargestellt. Diese algorithmischen Beschreibungen und Wiedergaben sind das Mittel, dass vom Fachmann der Datenverarbeitungstechniken verwendet wird, um anderen Fachmännern den Gegenstand ihrer Arbeit zu vermitteln. Ein Algorithmus wird hier und im Allgemeinen als eine eigenständige Sequenz von Operationen verstanden, die zu einem gewünschten Ergebnis führt. Die Operationen sind jene, die physische Manipulationen von physikalischen Größen erfordern. Üblicherweise, aber nicht notwendigerweise, nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die in der Lage sind, gespeichert übertragen, kombiniert, verglichen oder anderweitig manipuliert zu werden. Es hat sich manchmal als zweckmäßig erwiesen, hauptsächlich aus Gründen einer gemeinsamen Nutzung, sich auf diese Signale in Form von Bits, Werten, Elementen, Signalen Zeichen, Begriffen, Zahlen oder ähnlichen Elementen zu beziehen. Die hier beschriebenen Blöcke können eine Hardware, eine Software, eine Firmware oder eine Kombination davon sein.
  • Es sollte jedoch beachtet werden, dass alle diese und ähnliche Begriffe den geeigneten physikalischen Größen zugeordnet werden und rein zweckmäßige Bezeichnungen sind, die auf diese Größen angewandt werden. Soweit nicht ausdrücklich anderweitig festgelegt und aus der obigen Erörterung offensichtlich wurde, ist es selbstverständlich, dass in der gesamten Beschreibung, Erörterungen, die Begriffe wie „definieren”, „empfangen”, „ermitteln”, ausgeben” verbinden” zuordnen” erhalten” authentifizieren” verbieten” ausführen” „anfordern”, „kommunizieren” und ähnliche verwenden, sich auf Aktionen und Prozesse eines Computersystems oder einer ähnlichen elektronischen Rechnereinheit beziehen, bei denen Daten, die physikalische (z. B. elektronische) Größen in den Registern und/oder Speichern des Computersystems darstellen, in andere Daten manipuliert und/oder transformiert werden können, die auf ähnliche Weise physikalische Größen innerhalb der Register und Speicher des Computersystems oder anderen solcher Informationsspeicher-, Übertragungs- und Anzeigeeinheiten darstellen.
  • Die Wörter „Beispiel” oder „beispielhaft” werden hier in der Bedeutung „als ein Beispiel, ein Fall oder eine Darstellung dienend” verwendet. Jeder Aspekt oder jede Auslegung, die hier als „Beispiel” oder „beispielhaft” beschrieben wird, ist nicht unbedingt als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Auslegungen zu verstehen. Stattdessen ist die Verwendung der Wörter „Beispiel” oder „beispielhaft” so zu verstehen, dass sie Konzepte in einer konkreten Weise darstellen. So wie der Begriff „oder” in dieser Anmeldung verwendet wird, ist er in seiner Bedeutung als ein einschließendes „oder” und nicht als ein ausschließendes „oder” zu verstehen. Das heißt, dass „X umfasst A oder B”, so zu verstehen ist, dass es eine beliebige der natürlichen einschließenden Umsetzungen bedeutet, ausgenommen, wenn dies anderweitig festgelegt wird oder aus dem Zusammenhang anderweitig deutlich wird. Das heißt, wenn X A umfasst; X B umfasst; oder X sowohl A als auch B umfasst, ist „ X umfasst A oder B” in einem beliebigen der vorgenannten Beispiele erfüllt. Außerdem sind die Artikel „ein”, „eine” oder „eines”, wie sie in der Anmeldung und den angefügten Ansprüchen verwendet werden, im Allgemeinen so zu verstehen, dass sie „ein oder mehrere” bedeuten, ausgenommen wenn es anderweitig festgelegt wird oder aus dem Zusammenhang klar wird, dass sie auf eine einmalige Form gerichtet sind. Darüber hinaus ist die Verwendung des Begriffs „eine Ausführungsform” oder „eine Umsetzung” in der gesamten Beschreibung nicht so zu verstehen, dass sie die gleiche Ausführungsform oder Umsetzung bedeutet, ausgenommen, wenn dies ausdrücklich beschrieben wird. Auch sind die Begriffe „erster”, „zweiter”, „dritter”, „vierter” usw., so wie sie hier verwendet werden, als Bezeichnungen zu verstehen, die zwischen verschiedenen Elementen unterscheiden und haben nicht unbedingt eine ordnende Bedeutung gemäß ihrer numerischen Bezeichnung.

Claims (18)

  1. Prozessor, umfassend: einen Speicher; eine oder mehrere Funktionseinheiten, die mit dem Speicher verbunden sind; und ein Speicherdatenstrommodul, das mit dem Speicher und der einen oder den mehreren Funktionseinheiten verbunden ist für: Empfangen einer Vielzahl von Operationen, die dem Speicher zugeordnet ist; Empfangen einer Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist; Ermitteln einer Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist; Erzeugen einer ersten Reihenfolge für die Vielzahl von Operationen, die dem Speicher zugeordnet ist; und Erzeugen einer zweiten Reihenfolge für die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, auf der Grundlage der Abhängigkeit und der ersten Reihenfolge für die Vielzahl von Operationen, die dem Speicher zugeordnet ist.
  2. Prozessor nach Anspruch 1, wobei die Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, festlegt, dass mindestens eine Operation der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, nicht ausgeführt werden darf, bis eine Operation der Vielzahl von Operationen ausgeführt wurde, die dem Speicher zugeordnet ist.
  3. Prozessor nach Anspruch 1 oder 2, wobei die Vielzahl von Operationen, die dem Speicher zugeordnet ist, Lese- und Schreiboperationen umfasst, die dem Speicher zugeordnet sind, und wobei die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, einen Trigger umfasst, um mindestens eine der einen oder mehreren Funktionseinheiten so zu aktivieren, dass diese mit den in dem Speicher gespeicherten Daten betrieben wird.
  4. Prozessor nach Anspruch 3, wobei die Schreiboperationen, die dem Speicher zugeordnet sind, einen Steuerblock in dem Speicher speichern und wobei der Steuerblock Anweisungen für das Betreiben der einen oder mehreren Funktionseinheiten umfasst.
  5. Prozessor nach einem der Ansprüche 1 bis 4, wobei der Speicher ein kohärenter Speicher ist und die eine oder mehreren Funktionseinheiten nicht kohärente (NOn-COherent, NOCO) Funktionseinheiten sind.
  6. Prozessor nach einem der Ansprüche 1 bis 5, wobei das Speicherdatenstrommodul außerdem konfiguriert ist für: Ausführen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, auf der Grundlage der ersten Reihenfolge und der zweiten Reihenfolge.
  7. Prozessor nach einem der Ansprüche 1 bis 6, wobei das Speicherdatenstrommodul außerdem konfiguriert ist für: Identifizieren einer Weiterleitung einer Schreiboperation aus der Vielzahl von Operationen, die dem Speicher zugeordnet ist; Ermitteln einer zweiten Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, auf der Grundlage der weitergeleiteten Schreiboperation; und Verändern der zweiten Reihenfolge auf der Grundlage der zweiten Abhängigkeit, wobei die zweite Abhängigkeit festlegt, dass mindestens eine der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, nicht ausgeführt werden darf, bis die weitergeleitete Schreiboperation ausgeführt wurde.
  8. Prozessor nach einem der Ansprüche 1 bis 7, wobei die erste Reihenfolge die Vielzahl von Operationen, die dem Speicher zugeordnet ist, in einer sequenziellen Reihenfolge umfasst, und wobei die zweite Reihenfolge die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, in einer sequenziellen Reihenfolge umfasst.
  9. Prozessor nach einem der Ansprüche 1 bis 7, wobei die erste Reihenfolge die Vielzahl von Operationen, die dem Speicher zugeordnet ist, in einer Reihenfolge umfasst, bei der eine Leseoperation der Vielzahl von Operationen, die dem Speicher zugeordnet ist, vor einer Schreiboperation der Vielzahl von Operationen ausgeführt werden kann, die dem Speicher zugeordnet ist, wobei die Schreiboperation früher in der programmierten Reihenfolge steht als die Leseoperation, und wobei die zweite Reihenfolge die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, in einer sequenziellen Reihenfolge umfasst.
  10. Verfahren, umfassend: Empfangen in einem Speichersequentialisierungsmodul eines Prozessors einer Vielzahl von Operationen, die dem Speicher zugeordnet ist; Empfangen in dem Speichersequentialisierungsmodul einer Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist; Ermitteln durch das Speichersequentialisierungsmodul einer Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist; Erzeugen durch das Speichersequentialisierungsmodul einer ersten Reihenfolge für die Vielzahl von Operationen, die dem Speicher zugeordnet ist; und Erzeugen durch das Speichersequentialisierungsmodul einer zweiten Reihenfolge für die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, auf der Grundlage der Abhängigkeit und der ersten Reihenfolge für die Vielzahl von Operationen, die dem Speicher zugeordnet ist.
  11. Verfahren nach Anspruch 10, wobei die Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, festlegt, dass mindestens eine Operation der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, nicht ausgeführt werden darf, bis eine Operation der Vielzahl von Operationen ausgeführt wurde, die dem Speicher zugeordnet ist.
  12. Verfahren nach Anspruch 10 oder 11, wobei die Vielzahl von Operationen, die dem Speicher zugeordnet ist, Lese- und Schreiboperationen umfasst, die dem Speicher zugeordnet sind, und wobei die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, einen Trigger umfasst, um mindestens eine der einen oder mehreren Funktionseinheiten so zu aktivieren, dass sie mit den in dem Speicher gespeicherten Daten betrieben wird.
  13. Verfahren nach Anspruch 12, wobei die Schreiboperationen, die dem Speicher zugeordnet sind, einen Steuerblock in dem Speicher speichern und wobei der Steuerblock Anweisungen für das Betreiben der einen oder mehreren Funktionseinheiten umfasst.
  14. Verfahren nach einem der Ansprüche 10 bis 13, wobei der Speicher ein kohärenter Speicher ist und die eine oder mehreren Funktionseinheiten nicht kohärente (NOn-COherent, NOCO) Funktionseinheiten sind.
  15. Mindestens ein computerlesbares Medium, das eine Vielzahl von Anweisungen umfasst, die als Reaktion darauf, dass sie in einem Computergerät ausgeführt werden, das Computergerät veranlassen, ein Verfahren nach einem der Ansprüche 10 bis 14 durchzuführen.
  16. System, umfassend: eine Speichereinheit und einen Prozessor, der ein Speichersequentialisierungsmodul umfasst, wobei der Prozessor konfiguriert ist, das Verfahren nach einem der Ansprüche 10 bis 14 auszuführen.
  17. Vorrichtung, umfassend: ein Mittel zum Empfangen einer Vielzahl von Operationen, die dem Speicher zugeordnet ist; ein Mittel zum Empfangen einer Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist; ein Mittel zum Ermitteln einer Abhängigkeit zwischen der Vielzahl von Operationen, die dem Speicher zugeordnet ist, und der Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist; ein Mittel zum Erzeugen einer ersten Reihenfolge für die Vielzahl von Operationen, die dem Speicher zugeordnet ist; und ein Mittel zum Erzeugen einer zweiten Reihenfolge für die Vielzahl von Operationen, die der einen oder den mehreren Funktionseinheiten zugeordnet ist, auf der Grundlage der Abhängigkeit und der ersten Reihenfolge für die Vielzahl von Operationen, die dem Speicher zugeordnet ist.
  18. Vorrichtung nach Anspruch 17, die außerdem den Gegenstand nach einem der Ansprüche 1 bis 9 umfasst.
DE102015007423.7A 2014-07-09 2015-06-09 Speichersequentialisierung mit kohärenten und nicht kohärenten Teilsystemen Withdrawn DE102015007423A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/327,109 US9875185B2 (en) 2014-07-09 2014-07-09 Memory sequencing with coherent and non-coherent sub-systems
US14/327,109 2014-07-09

Publications (1)

Publication Number Publication Date
DE102015007423A1 true DE102015007423A1 (de) 2016-01-14

Family

ID=54867007

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015007423.7A Withdrawn DE102015007423A1 (de) 2014-07-09 2015-06-09 Speichersequentialisierung mit kohärenten und nicht kohärenten Teilsystemen

Country Status (4)

Country Link
US (2) US9875185B2 (de)
CN (1) CN105320494B (de)
DE (1) DE102015007423A1 (de)
TW (1) TWI567555B (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875185B2 (en) * 2014-07-09 2018-01-23 Intel Corporation Memory sequencing with coherent and non-coherent sub-systems
US9886934B2 (en) * 2014-12-24 2018-02-06 Intel Corporation Ordering mechanism for offload graphics scheduling
IT202000016441A1 (it) * 2020-07-07 2022-01-07 Sk Hynix Inc Comparatore di risorse di ridondanza per una architettura di bus, architettura di bus per un dispositivo di memoria che implementa un metodo migliorato di confronto e corrispondente metodo di confronto

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6317813B1 (en) * 1999-05-18 2001-11-13 Silicon Integrated Systems Corp. Method for arbitrating multiple memory access requests in a unified memory architecture via a non unified memory controller
US20080288178A1 (en) * 2001-08-24 2008-11-20 Applera Corporation Sequencing system with memory
US7149857B2 (en) * 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
US6961821B2 (en) 2002-10-16 2005-11-01 International Business Machines Corporation Reconfigurable cache controller for nonuniform memory access computer systems
DE102004031497A1 (de) * 2004-06-30 2006-05-18 Schaeffler Kg Profilschienenführung
US20060026371A1 (en) 2004-07-30 2006-02-02 Chrysos George Z Method and apparatus for implementing memory order models with order vectors
US7623365B2 (en) * 2007-08-29 2009-11-24 Micron Technology, Inc. Memory device interface methods, apparatus, and systems
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US8086806B2 (en) * 2008-03-24 2011-12-27 Nvidia Corporation Systems and methods for coalescing memory accesses of parallel threads
US8352682B2 (en) * 2009-05-26 2013-01-08 Qualcomm Incorporated Methods and apparatus for issuing memory barrier commands in a weakly ordered storage system
CN101916227B (zh) 2010-08-13 2015-04-01 中兴通讯股份有限公司 一种rldram sio存储器访问控制方法和装置
US9453197B2 (en) * 2010-12-16 2016-09-27 General Electric Company Methods of making cell carrier
CN102834807B (zh) * 2011-04-18 2015-09-09 华为技术有限公司 多处理器系统负载均衡的方法和装置
US8589638B2 (en) * 2011-07-19 2013-11-19 Arm Limited Terminating barriers in streams of access requests to a data store while maintaining data consistency
KR20150010717A (ko) 2012-04-27 2015-01-28 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 메모리 디바이스의 보호
US9003123B2 (en) * 2012-06-26 2015-04-07 Arm Limited Data processing apparatus and method for reducing storage requirements for temporary storage of data
US9875185B2 (en) * 2014-07-09 2018-01-23 Intel Corporation Memory sequencing with coherent and non-coherent sub-systems

Also Published As

Publication number Publication date
TWI567555B (zh) 2017-01-21
US20160011977A1 (en) 2016-01-14
CN105320494A (zh) 2016-02-10
US9875185B2 (en) 2018-01-23
TW201617889A (zh) 2016-05-16
US20180173628A1 (en) 2018-06-21
US10261904B2 (en) 2019-04-16
CN105320494B (zh) 2018-10-26

Similar Documents

Publication Publication Date Title
DE102018000886A1 (de) Virtuelle Maschinenkommunikation auf Hardware-Basis
DE102018126731A1 (de) Freigabeanweisung, um Seitenblock während des Auslagerns umzukehren
DE102013021221A1 (de) Befehle und Logik zur Vektorisierung von bedingten Schleifen
DE102014003689A1 (de) Verfolgung des kontrollflusses von befehlen
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE112013005416T5 (de) Verfahren, Vorrichtungen, Befehle und Logik zum Bereitstellen von Vektoradressenkonflikt-Detektionsfunktionalität
DE112013004867T5 (de) Befehl und Logik zum Bereitstellen von Push-Puffer-Kopier- und Speicher-Funktionalität
DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
DE112017006568T5 (de) Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern
DE102018001229A1 (de) Beschleunigerschaltung mit variabler Wortlänge für ein neuronales Netzwerk
DE102014003795A1 (de) Verfahren und Vorrichtungen für Fusionsbefehle zur Bereitstellung der OR-Test- und AND-Test-Funktionalität auf mehreren Testquellen
DE112012007119T5 (de) Threadmigration-Unterstützung für Kerne unterschiedlicher Architektur
DE102014003671A1 (de) Prozessoren, verfahren und systeme zum entspannen der synchronisation von zugriffen auf einen gemeinsam genutzten speicher
DE202016009016U1 (de) Befehle und Logik für wiederkehrende benachbarte Sammlungen
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE102014004564A1 (de) Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE112017001716T5 (de) Speicherkopierbefehle, prozessoren, verfahren und systeme
DE102018002525A1 (de) Hybridatomaritätsunterstützung für einen binärübersetzungsbasierten mikroprozessor
DE112013007702T5 (de) Befehl und Logik für den Speicherzugriff in einer geclusterten Maschine mit breiter Ausführung
DE112016005863T5 (de) Minimierung von Snoop-Verkehr lokal und über Kerne auf einem Chip-Mehrkern-Fabric
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren
DE102018129298A1 (de) Vorrichtung und Verfahren zum Vektormultiplizieren und Akkumulieren von vorzeichenbehafteten Doppelwörtern
DE102018129263A1 (de) Vorrichtung und verfahren zum multiplizieren, summieren und akkumulieren von sätzen von gepackten bytes
DE112017001704T5 (de) Arbiterbasierte Serialisierung von Prozessor-System-Management-Interrupt-Ereignissen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee