DE112004001248B4 - Mikroprozessor und Verfahren zum Ausführen einer index-behafteten Speicher-zu-Lade-Weiterleitung - Google Patents

Mikroprozessor und Verfahren zum Ausführen einer index-behafteten Speicher-zu-Lade-Weiterleitung Download PDF

Info

Publication number
DE112004001248B4
DE112004001248B4 DE112004001248T DE112004001248T DE112004001248B4 DE 112004001248 B4 DE112004001248 B4 DE 112004001248B4 DE 112004001248 T DE112004001248 T DE 112004001248T DE 112004001248 T DE112004001248 T DE 112004001248T DE 112004001248 B4 DE112004001248 B4 DE 112004001248B4
Authority
DE
Germany
Prior art keywords
load
stlf
store
buffer
memory
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.)
Expired - Fee Related
Application number
DE112004001248T
Other languages
English (en)
Other versions
DE112004001248T5 (de
Inventor
Michael A. Manchaca Filippo
James K. Austin Pickett
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.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE112004001248T5 publication Critical patent/DE112004001248T5/de
Application granted granted Critical
Publication of DE112004001248B4 publication Critical patent/DE112004001248B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)
  • Advance Control (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)
  • Semiconductor Lasers (AREA)

Abstract

Mikroprozessor (100) mit:
einer Verteilungseinheit (104), die ausgebildet ist, Lade- und Speicheroperationen zu verteilen; und
einer Lade/Speicher-Einheit (126), die ausgebildet ist, Information zu speichern, die mit den von der Verteilungseinheit (104) verteilten Lade/Speicher-Operationen verknüpft ist, wobei die Lade/Speicher-Einheit (126) einen indexbasierten STLF-(Speicher-zu-Lade-Weiterleitungs-) Puffer (305) umfasst, und wobei der indexbasierte STLF-Puffer (305) mehrere Einträge (320) aufweist, von denen jeder durch einen entsprechenden einzigartigen Indexwert auswählbar ist; wobei
die Lade/Speicher-Einheit (126) ferner ausgebildet ist, einen Indexwert in Abhängigkeit von zumindest einem Teil einer Adresse einer Ladeoperation zu erzeugen, wobei der erzeugte Indexwert einer der einzigartigen Indexwerte ist, den erzeugten Indexwert zum indexbasierten Ansprechen des indexbasierten STLF-Puffers zu verwenden, um einen der mehreren Einträge (320) auszuwählen und Daten, die in dem einen der mehreren Einträge (320), der durch den erzeugten Indexwert ausgewählt ist, enthalten sind, als ein Ergebnis der Ladeoperation weiterzuleiten.

Description

  • TECHNISCHES GEBIET
  • Diese Erfindung betrifft das Gebiet der Mikroprozessoren und betrifft insbesondere das Ausführen einer Speicher-zu-Lade-Weiterleitung (STLF) in einem Mikroprozessor.
  • HINTERGRUND DER ERFINDUNG
  • In äußerst leistungsfähigen Mikroprozessoren enthält die Lade/Speicher-Einheit typischerweise Speicherplatz für mehrere anstehende Lade- und Speicheroperationen, die darauf warten, auf den L1-Cache bzw. Zwischenspeicher zuzugreifen. Eine übliche Leistungssteigerung, die an dieser Art der Mikroprozessorachitektur durchgeführt werden kann, besteht darin, einen Mechanismus zum Weiterleiten von Daten aus älteren Speicheroperationen (Speicheroperationen, die in der Programmreihenfolge früher auftreten) an Ladeoperationen (Ladeoperationen, die in der Programmreihenfolge später auftreten) einzuführen. Diese Speicher-zu-Lade-Weiterleitung von Daten verbessert merklich die Effizienz bei einer Ausführung, bei der Zugriffe auf den L1-Datenzwischenspeicher umgangen werden. Das Verfahren, mit welchem STLF typischerweise erreicht wird, besteht darin, alle älteren Speicheroperationen zu durchzusuchen, während die Ladeoperation sich in der Datenzwischenspeicherzugriffstufe der Ausführungspipeline befindet. Die Adresse der Ladoperation wird mit den Adressen aller Speicheroperationen, die in der Lade-Speichereinheit vorhanden sind, verglichen. Zunächst werden alle Speicheroperationen, die die gleiche Adresse, wie die Ladeoperation zum Ziel haben, erkannt, und diese Einteilung wird dann verfeinert, indem Speicheroperationen eliminiert werden, die jünger sind als die Ladeoperation. Sobald alle Speicheroperationen, die älter als die Ladeoperation sind, erkannt sind, wird das relative Alter dieser Speicheroperationen verglichen, um die jüngste Speicheroperation zu ermitteln, die alter ist als die Ladeoperation. Die mit dieser jüngsten Speicheroperationen verknüpften Daten werden dann an die Ladeoperation weitergereicht, so dass diese in normaler Weise ohne das Erfordernis eines Zugriff auf den L1-Datenzwischenspeicher abgeschlossen werden kann.
  • Die Adressenvergleiche und die Suchalgorithmen, die zur Erkennung der jüngsten Speicheroperation mit der gleichen Zieladresse wie die Ladeoperation angewendet werden, sind relativ komplex und erfordern viele Ebenen kombinatorischer Logik, um diese Funktion einzurichten. Typischerweise speichert die Lade/Speicher-Einheit Operationen, die auf eine Beendigung durch Zugreifen auf den L1-Zwischenspeicher warten. Jede Zeile des Speichers enthält mehrere Einträge für Lade- oder Speicheroperationen. Wenn die Adresse einer Ladeoperation verfügbar ist, muss diese mit der Adresse jedes Eintrags verglichen werden und alle übereinstimmenden Einträge müssen als Speicheroperationen verifiziert werden. Sobald alle Speicheroperationseinträge, die mit der Zieladresse der Ladeoperation übereinstimmen, erkannt sind, wird ein Ersterkennungsalgorithmus eingesetzt, um die jüngste übereinstimmende Speicheroperation zu erkennen, die alter ist als die Ladeoperation. Die Daten von dem geeigneten Eintrag können dann verwendet und zu der Ladeoperation weitergeleitet werden.
  • Für äußerst leistungsfähige Mikroprozessoren ist diese STLF-Funktion typischerweise ein Teil des kritischen Signalswegs für den Abschluss der Ladeoperation und beeinflusst daher merklich die effektive Ladezeitdauer. Die Zeit, die zum Ausführen jeder der zuvor dargestellten Prozeduren erforderlich ist, trägt zu dieser effektiven Ladezeitdauer bei und in einigen Fällen kann dies die maximale Frequenz begrenzen, mit der der Mikroprozessor arbeiten kann.
  • US 6 360 314 beschreibt ein System, in welchem eine Dekodiereinheit in einem Datencache-Subsystem zusammen mit einer Lade/Speicherausführungseinheit betrieben wird. Dabei erhält die Dekodiereinheit entsprechende Operationskodierungen, die bereits an die Lade/Speicherausführungseinheit ausgegeben sind. Es wird ferner ein Umleitungsmechanismus beschrieben, in welchem die Adresse eines gerade ausgegebenen Ladebefehls mit einem Satz aus älteren Schreibbefehlen, die noch nicht zu einer Speicheraktualisierung geführt haben, ausgeführt wird.
  • WO 01/35212 betrifft ein System mit einem Puffer zur Informationsspeicherung für Schreibspeicheroperationen, wobei eine Schaltung vorgesehen ist, um eine Schreiboperation zu erkennen, die eine in dem Puffer repräsentierte Schreiboperation betrifft. In der Schaltung wird der Indexbereich der Ladeadresse mit Indexbereichen der in dem Puffer gespeicherten Schreibadressen verglichen.
  • Es ist Aufgabe der vorliegenden Erfindung, bei einer Abarbeitung von Operationen in einer Weise, die nicht der Programmreihenfolge entspricht, effizient ein Ergebnis einer Ladeoperation bereitzustellen, das von älteren Schreiboperationen, die noch nicht abgeschlossen sind, abhängig ist.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • Gelöst wird die Aufgabe mit den Merkmalen der Ansprüche 1, 6 und 7.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Ein gründlicheres Verständnis der vorliegenden Erfindung kann erreicht werden, wenn die folgende detaillierte Beschreibung in Verbindung mit den folgenden Zeichnungen studiert wird, in denen:
  • 1 einen Mikroprozessor zeigt, der einen STLF-Puffer gemäß einer Ausführungsform enthält.
  • 2 eine Blockansicht einer Lade/Speicher-Einheit gemäß einer Ausführungsform zeigt.
  • 3 ein Flussdiagramm eines Verfahrens zum Betreiben eines Mikroprozessors mit einem STLF-Puffer gemäß einer Ausführungsform zeigt.
  • 4 ein Flussdiagramm eines Verfahrens zum Betreiben eines Mikroprozessors zeigt, der eine STLF-Prüfeinheit zusätzlich zu dem Speicher-zu-Lade-Weiterleitungspuffer gemäß einer Ausführungsform aufweist.
  • 5 ein beispielhaftes Computersystem mit einem Mikroprozessor mit einem STLF-Puffer gemäß einer Ausführungsform zeigt.
  • 6 ein beispielhaftes Computersystem gemäß einer weiteren Ausführungsform zeigt.
  • Obwohl diese Erfindung diversen Modifizierungen und alternativen Formen unterliegen kann, sind die speziellen Ausführungsformen beispielhaft in den Zeichnungen gezeigt und werden nachfolgend detailliert beschrieben. Es sollte jedoch selbstverständlich sein, dass die Zeichnungen und die detaillierte Beschreibung nicht beabsichtigen, die Erfindung auf die speziellen offenbarten Formen einzuschränken, sondern die Erfindung soll vielmehr alle Modifizierungen, Äquivalente und Alternativen abdecken, die innerhalb des Grundgedankens und Schutzbereichs der vorliegenden Erfindung liegen, wie sie durch die angefügten Patentansprüche definiert ist. Zu beachten ist, dass die Überschriften lediglich der Strukturierung dienen und nicht zur Einschränkung oder Interpretation der Beschreibung oder der Ansprüche dienen sollen. Ferner ist zu beachten, dass das Wort „kann" in dieser Anwendung durchwegs als in einem zulässigen Sinne verwendet wird (d. h. in dem Sinne, „besitzt das Potential zu, ist in der Lage zu"), und nicht in einem verpflichtenden Sinne (d. h. muss). Der Begriff „enthalten" und Ableitungen davon bedeuten „einschließlich aber nicht beschränkt auf. Der Begriff „verbunden" bedeutet „direkt oder indirekt verbunden" und der Begriff „gekoppelt" bedeutet „direkt oder indirekt gekoppelt".
  • ART BZW. ARTEN ZUM AUSFÜHREN DER ERFINDUNG
  • 1 ist eine Blockansicht logischer Komponenten, die in einer Ausführungsform eines Mikroprozessors 100 enthalten sind, der einen Speicher-zu-Lade-Weiterleitungs-(STLF) Puffer 140 enthält. Der Mikroprozessor 100 ist ausgebildet, Instruktionen auszuführen, die in einem Systemspeicher 200 gespeichert sind. Viele dieser Instruktionen operieren auf Daten, die in dem Systemspeicher 200 gespeichert sind. Zu beachten ist, dass der Systemspeicher 200 physikalisch über ein Computersystem verteilt sein kann und von einem oder mehreren Mikroprozessoren 100 angesprochen werden kann. In einigen Ausführungsformen kann der Mikroprozessor 100 kompatibel zu der x86-Architektur gestaltet sein. Zu beachten ist, dass der Mikroprozessor 100 auch viele andere Komponenten zusätzlich zu den gezeigten enthalten kann und/oder mit diesen verbunden sein kann. Beispielsweise können zusätzliche Ebenen an Cache- bzw. Zwischenspeicher (intern und/oder extern zu dem Mikroprozessor 100) zwischen dem Mikroprozessor 100 und dem Systemspeicher 200 enthalten sein. Ferner kann der Mikroprozessor 100 in einigen Ausführungsformen eine Speichersteuerung aufweisen, die zur Steuerung des Systemspeichers 200 ausgebildet ist. Ferner kann die Verbindungsarchitektur zwischen logischen Komponenten in den einzelnen Ausführungsformen unterschiedlich sein.
  • Der Mikroprozessor 100 kann einen Instruktionszwischenspeicher bzw. Cache-Speicher 106 und einen Datenzwischenspeicher bzw. Cache-Speicher 128 aufweisen. Der Mikroprozessor 100 kann eine Vorabholeinheit 108 aufweisen, die mit dem Systemspeicher 200 gekoppelt ist. Die Vorabholeinheit 108 kann einen Instruktionscode aus dem Systemspeicher 200 zur Speicherung innerhalb des Instruktionszwischenspeichers 106 vorab abholen. In einer Ausführungsform kann die Vorabholeinheit 108 ausgebildet sein, Code aus dem Systemspeicher 200 gebündelt in den Instruktionszwischenspeicher 106 zu laden. Die Vorabholeinheit 108 kann ferner diverse spezifische Codierungsvorabhol-Verfahren und Algorithmen anwenden. Instruktionen können von dem Systemspeicher 200 in Reaktion darauf abgeholt werden, dass eine gegebene Adresse in dem Instruktionszwischenspeicher 106 fehlt.
  • Eine Verteilungs- bzw. Ausgabeeinheit 104 kann ausgebildet sein, Instruktionen aus dem Instruktionszwischenspeicher 106 zu empfangen und decodierte und/oder teilweise decodierte Operationen von dem Überwachungs- bzw. Aufzeichnungszwischenspeicher bzw. Cache 160 zu empfangen. Die Verteilungseinheit 104 kann eine Decodiereinheit 140 enthalten, um von dem Instruktionszwischenspeicher 106 erhaltene Instruktionen zu decodieren. Die Verteilungseinheit 104 kann ferner eine Mikrocodierungseinheit enthalten, die zur Verwendung bei der Handhabung mikrocodierter Instruktionen eingesetzt wird.
  • Die Verteilungseinheit 104 ist ausgebildet, Operationen an die Ablauforganisationseinheit(en) 118 auszugeben. Eine oder mehrere Ablauforganisationseinheiten 118 können angeschlossen sein, um von der Verteilungseinheit 104 herausgegebene Operationen zu empfangen und Operationen an einen oder mehrere Ausführungskerne 124 auszugeben. Der bzw. die Ausführungskern(e) 124 können eine Lade/Speicher-Einheit 126 enthalten, die ausgebildet ist, Zugriffe auf den Datenzwischenspeicher 128 auszuführen. Ergebnisse, die von dem bzw. den Ausführungskern(en) 124 erzeugt werden, können auf einen Ergebnisbus 130 ausgegeben werden. Diese Ergebnisse können als Operandenwerte für nachfolgend ausgegebene Instruktionen verwendet und/oder in einer Registerdatei 116 gespeichert werden. Eine Rückstauwartereihe 102 kann mit den Ablauforganisationseinheit(en) 118 und der Verteilungseinheit 104 verbunden sein. Die Rückstauwartereihe kann ausgebildet sein, zu bestimmen, wann jede ausgegebene Operation zurückgezogen wird.
  • Der Instruktionszwischenspeicher 106 kann temporär Instruktionen zwischenspeichern, bevor sie von der Verteilungseinheit 104 empfangen werden. Instruktionscodierungen können an den Instruktionszwischenspeicher 106 zugeführt werden, indem Codierung von dem Systemspeicher 200 im vorab mittels der Vorabholungseinheit 108 abgerufen wird. Der Instruktionszwischenspeicher 106 kann in diversen Konfigurationen eingerichtet sein (beispielsweise teilassoziativ, vollassoziativ oder direkt abgebildet).
  • Die Verteilungseinheit 104 kann Signale ausgeben, die von dem bzw. den Ausführungskern(en) 124 ausführbare Bit-codierte Operationen sowie Operandenadresseninformationen, unmittelbare Daten und/oder versetzte Daten enthalten. Die Decodiereinheit 140 kann verwendet werden, um gewisse Instruktionen in eine oder mehrere Operationen zu decodieren, die in den Ausführungskernen 124 ausführbar sind. Einfache Instruktionen können einer einfachen Operation entsprechen. Komplexere Instruktionen können mehreren Operationen entsprechen. Beim Empfangen einer Operation, die das Aktualisieren eines Register beinhaltet, kann die Verteilungseinheit 104 eine Registerstelle innerhalb der Registerdatei 116 reservieren, um spekulative Registerzustände zu speichern (in einer alternativen Ausführungsform kann ein Umordnungspuffer verwendet werden, um einen oder mehrere spekulative Registerzustände für jedes Register zu speichern). Eine Registerkarte bzw. Zuordnung kann lokale Registernamen von Quellen- und Zieloperanden in physikalische Registernamen übersetzen, um die Registerumbenennung zu ermöglichen. Eine derartige Registerkarte kann aufzeichnen, welche Register innerhalb der Registerdatei 116 gegenwärtig zugeordnet und welche nicht zugeordnet sind.
  • Wenn Operationen von der Verteilungseinheit 104 gehandhabt werden, kann, wenn ein erforderlicher Operand sich in einer Registerstelle befindet, eine Registeradresseninformation zu einer Registerkarte oder einem Umordnungspuffer geleitet werden. Beispielsweise gibt es in der x86-Architektur acht 32-Bit-Logikregister (beispielsweise EAX, EBX, ECX, EDX, EBP, ESI, EDI und ESP). Die physikalische Registerdatei 116 (oder ein Umordnungspuffer) enthält Speicherplatz für Ergebnisse, die den Inhalt dieser lokalen Register ändern, wodurch eine außer der Reihenfolge liegende Ausführung möglich ist. Ein physikalisches Register in der Registerdatei 116 kann dafür vorgesehen sein, das Ergebnis jeder Operation zu speichern, die den Inhalt eines der lokalen Register ändert. Daher kann an diversen Punkten während des Ausführens eines speziellen Programms die Registerdatei 116 (oder in alternativen Ausführungsformen ein Umordnungspuffer) ein oder mehrere Register aufweisen, die die spekulativ ausgeführten Inhalte eines vorgegeben logischen Register enthalten.
  • Eine Registerkarte kann ein physikalisches Register einem speziellen logischen Register zuordnen, das als ein Zieloperand für eine Operation spezifiziert ist. Die Registerdatei 116 kann ein oder mehrere zuvor reservierte physikalische Register aufweisen, die einem als ein Zieloperand in einer vorgegebenen Operation spezifizierten logischen Register zugeordnet sind. Die Registerkarte kann eine Markierung für das physikalische Register liefern, das diesen logischen Register als letztes zugeordnet wurde. Diese Markierung kann verwendet werden, um auf den Datenwert des Operanden in der Registerdatei 116 zuzugreifen oder um den Datenwert über eine Ergebnisweiterleitung auf den Ergebnisbus 130 zu empfangen. Wenn der Operand einer Speicherstelle entspricht, kann der Operandenwert auf dem Ergebnisbus (für eine Ergebnisweiterleitung und/oder Speicherung in der Registerdatei 116) über die Lade/Speicher-Einheit 126 bereitgestellt werden. Operandendatenwerte können dem bzw. den Ausführungskern(en) 124 zugeführt werden, wenn die Operation von einer oder der Ablauforganisationseinheit(en) 118 ausgegeben wird. Zu beachten ist, dass in alternativen Ausführungsformen Operandenwerte einer entsprechenden Ablauforganisationseinheit 118 zugeführt werden können, wenn eine Operation ausgegeben bzw. verteilt wird (anstatt dass diese einem entsprechenden Ausführungskern 124 zugeführt wird, wenn die Operation ausgegeben wird).
  • Die Bit-codierten Operationen und die unmittelbaren Daten, die an den Ausgängen der Verteilungseinheit 104 bereitgestellt werden, können zu einer oder mehreren Ablauforganisationseinheiten 118 geführt werden. Zu beachten ist, dass im hierin verwendeten Sinne eine Ablauforganisationseinheit eine Einrichtung ist, die erkennt, wann Operationen für die Ausführung bereit sind und die bereiten Operationen zu einer oder mehreren Ausführungseinheiten ausgibt. Beispielsweise ist eine Reservierungsstation eine Ablauforganisationseinheit. Jede Ablauforganisationseinheit 118 kann in der Lage sein, Operationsinformationen zu halten (beispielsweise Bitcodierte Ausführungsbits sowie Operandenwerte, Operandenmarkierungen und/oder unmittelbare Daten) für mehrere im Ablauf befindliche Operationen, die auf eine Ausgabe an einem Ausführungskern 124 warten. In einigen Ausführungsformen stellen die Ablauforganisationseinheiten 118 keinen Operandenwertspeicher bereit. Stattdessen kann jede Ablauforganisationseinheit ausgegebene Operationen und in der Registerdatei 116 verfügbare Ergebnisse überwachen, um zu bestimmen, wann Operandenwerte verfügbar sind, so dass sie von dem bzw. den Ausführungskern(en) 124 gelesen werden können (von der Registerdatei 116 oder dem Ergebnisbus 130). In einigen Ausführungsformen kann jede Ablauforganisationseinheit 118 mit einem zugeordneten Ausführungskern 124 verknüpft sein. In anderen Ausführungsformen kann eine einzelne Ablauforganisationseinheit 118 Operationen zu mehr als einem der Ausführungskerne 124 ausgeben.
  • Die Ablauforganisationseinheiten 118 können vorgesehen sein, um zeitweilig Operationsinformation, die von dem bzw. den Ausführungskern(en) 124 auszuführen ist, zu speichern. Wie zuvor dargelegt ist, kann jede Ablauforganisationseinheit 118 Operationsinformation für anhängige Operationen speichern. Ferner kann jede Ablauforganisationseinheit Operationsinformationen für Operationen speichern, die bereits ausgeführt sind, die aber nochmals auszugeben sind. Operationen werden an den bzw. die Ausführungskern(e) 124 zur Ausführung gegeben, in Reaktion darauf, dass Werte eines oder mehrerer erforderlicher Operanden zur Zeit der Ausführung verfügbar sind. Folglich kann die Reihenfolge, in der die Operationen ausgeführt werden, anders sein als die Reihenfolge der ursprünglichen Programminstruktionssequenz.
  • In einer Ausführungsform kann jeder Ausführungskern 124 Komponenten enthalten, die ausgebildet sind, arithmetische Ganzzahloperationen mit Addition und Subtraktion sowie Schiebeoperationen, Rotationen, logische Operationen und Verzweigungsoperationen auszuführen. Eine Gleitkommaeinheit kann ebenso enthalten sein, um Gleitkommaoperationen zu handhaben. Einer oder mehrere der Ausführungskerne 124 kann ausgebildet sein, eine Adressenerzeugung für Lade-Speichervorgänge im Speicher, die von der Lade-Speicher-Einheit 126 auszuführen sind, durchzuführen.
  • Ergebnisse, die von Komponenten in dem bzw. den Ausführungskern(en) 124 erzeugt werden, können auf den Ergebnisbus 130 zu der Registerdatei 116 ausgegeben werden, wenn ein Registerwert aktualisiert wird. Wenn der Inhalt einer Speicherstelle geändert wird, können die von dem bzw. den Ausführungskern(en) 124 erzeugten Ergebnisse der Lade/Speicher-Einheit 126 zugeführt werden.
  • Die Lade/Speicher-Einheit 126 stellt eine Schnittstelle zwischen dem bzw. den Ausführungskern(en) 124 und dem Datenzwischenspeicher 128 bereit. In einer Ausführungsform kann die Lade/Speicher-Einheit 126 mit einem Lade/Speicher-Puffer mit mehreren Speicherplätzen für Daten- und Adressinformationen für anhängige Lade- und Speicheroperationen versehen sein. Die Lade/Speicher-Einheit 126 kann ferner eine Abhängigkeitsprüfung für Ladeinstruktionen im Hinblick auf anhängige Speicherinstruktionen durchführen, um sicherzustellen, dass die Datenkohärenz beibehalten wird.
  • Der Datenzwischenspeicher 128 ist ein Zwischenspeicher bzw. Cachespeicher, der vorgesehen ist, um zeitweilig Daten zu speichern, die zwischen der Lade/Speicher-Einheit 126 und dem Systemspeicher 200 ausgetauscht werden. Wie der Instruktionszwischenspeicher 106, der zuvor beschrieben ist, kann der Datenzwischenspeicher 128 in einer Vielzahl spezifischer Speicherkonfigurationen eingerichtet sein, zu denen eine teilassoziative Konfiguration gehört. Ferner können der Datenzwischenspeicher 106 und der Instruktionszwischenspeicher 128 in einigen Ausführungsformen in einem vereinheitlichten Zwischenspeicher eingerichtet sein.
  • LADE/SPEICHER-EINHEIT
  • 2 zeigt eine Lade/Speicher-Einheit 126, die einen Speicher-zu-Lade-Weiterleitungs-(STLF) Puffer 305 gemäß einer Ausführungsform aufweist. Die Lade/Speicher-Einheit 126 umfasst einen Operationsspeicher 307 für anhängige Operationen, die verteilt sind, die aber noch nicht abgeschlossen sind. Der Operationsspeicher 307 kann alle anhängigen Operationen innerhalb der Lade/Speicher-Einheit 126 überwachen. Der Operationsspeicher 307 kann einen Eintrag 310 für jede verteilte Ladeoperation und jede verteilte Speicheroperation enthalten.
  • Ein Eintrag 310 kann Informationen 313 enthalten, die anzeigen, ob der Eintrag einer Ladeoperation oder einer Speicheroperation zugeordnet ist (oder in einigen Ausführungsformen kann ein Eintrag anzeigen, dass er eine Ladeoperation und eine Speicherung enthält, wenn er einer Operation zugeordnet ist, die auf einem Wert operiert, der von einer Speicheradresse eingeladen wird und das Ergebnis in einer Speicheradresse speichert). Ferner kann ein Eintrag 310 eine Markierung 315 (die beispielsweise die Operation und/oder ihr Ergebnis in dem Mikroprozessor 100 kennzeichnet) eine Adresse 317 und/oder Daten 319 enthalten. Ein Eintrag 310 kann in Reaktion darauf zugeordnet werden, dass die Verteilungseinheit 104 eine Operation ausgibt, und kann freigegeben werden in Reaktion darauf, dass die Rückstauwartereihe 102 die Operation zurückzieht.
  • Jeder Eintrag 320 in dem STLF-Puffer 305 kann mittels eines einzigartigen Index ausgewählt werden. Die Lade/Speicher-Einheit 126 kann einen Index aus allen Adressen einer Operation oder einem Teil davon erzeugen und den Index verwenden, um auszuwählen, auf welchen Eintrag für diese Operation zuzugreifen ist. Beispielsweise kann die Lade/Speicher-Einheit 126 einen Index aus einer Teilmenge der Bits in der Adresse erzeugen. Die verwendete Adresse kann eine physikalische Adresse oder eine virtuelle Adresse sein. In einigen Ausführungsformen kann der Index auch von der Datengröße der Operation abhängen.
  • In einigen Ausführungsformen, wenn sowohl die Adresse als auch die Daten für eine Speicheroperation verfügbar sind, ist die Speicheroperation geeignet, dass ihre Daten zu einer jüngeren Ladeoperation, die auf die gleiche Adresse abzielt, weitergeleitet werden. An diesem Punkt kann die Lade/Speicher-Einheit einen Eintrag 320 in dem STLF-Puffer 305 der Speicheroperation zuordnen. Die Lade/Speicher-Einheit 126 kann auswählen, welcher Eintrag 320 einer Speicheroperation zuzuordnen ist, indem ein Index aus mindestens einem Teil der Adresse der Speicheroperation berechnet wird. Der Eintrag 320, der von diesem Index ausgewählt ist, kann der Speicheroperation zugeordnet werden. Ein Eintrag 320 in dem STLF-Puffer 305 kann die Gesamtheit oder einen Teil der Adresse 321, der Daten 327 und der Datengröße 329 (beispielsweise die Anzahl an Datenbytes, auf denen von der Speicheroperation operiert wird) der Speicheroperation enthalten, der dieser Eintrag zugeordnet ist. Alle Einträge in dem STLF-Puffer 305 können eine ausreichende Kapazität aufweisen, um die maximale Menge an Daten zu speichern, die mit einer Speicheroperation verknüpft sind.
  • Wenn eine Adresse einer Ladeoperation verfügbar wird, kann die Lade/Speicher-Einheit 126 einen Index auf der Grundlage der gesamten oder eines Teils der Ladeadresse erzeugen, um einen Eintrag 320 in dem STLF-Puffer 305 auszuwählen. Wenn die Adresseninformation 321 und/oder die Datengrößeninformation 329, die in dem ausgewählten Eintrag 320 enthalten sind, mit der Adresseninformation und/oder der Datengrößeinformation, die mit der Ladeoperation verknüpft sind, übereinstimmen, kann der STLF-Puffer 305 die Daten 327 in diesem Eintrag als das Ergebnis der Ladeoperation weiterreichen. Zu beachten ist, dass eine „Übereinstimmung" auftreten kann, wenn die Adresseninformation 321, die Datengrößeninformation 329 und/oder eine andere Information, die in dem Eintrag 320 enthalten ist, zumindest teilweise mit der Information übereinstimmen, die mit der Ladeoperation verknüpft ist. Beispielsweise kann ein Eintrag als eine Übereinstimmung in Reaktion daraufhin betrachtet werden, dass eine Teilmenge oder ein Teil der Information des Eintrags mit der zu einem Ladevorgang gehörenden Information übereinstimmt. In anderen Ausführungsformen können Übereinstimmungen lediglich dann auftreten, wenn die Information des Eintrags vollständig mit der Information der Ladeoperation übereinstimmt.
  • In einigen Ausführungsformen kann der Index eines Eintrags 320 die niederwertigen Bits der Adresse einer Operation enthalten. In anderen Ausführungsformen kann der Index erzeugt werden, indem eine gewisse Transformationsfunktion an der Adresse einer Operation ausgeführt wird. Indizes können so erzeugt werden, dass ein Paar aus einer beliebigen gegebenen Adresse und einer Datengröße in einigen Ausführungsformen auf einen einzelnen Index abgebildet werden (zu beachten ist, dass der gleiche Index aus mehreren unterschiedlichen Adressen gebildet werden kann). Wenn daher die Adresse einer Ladeoperation verwendet wird, um auf der Basis des Index auf den STLF-Puffer 305 zuzugreifen, wird ein einzelner Eintrag 320 ausgewählt. Die Anwendung eines indexgestützten STLF-Puffers 305 ermöglicht es, dass eine Speicher-zu-Lade-Weiterleitung in weniger Zyklen ausgeführt werden kann, als sonst erforderlich wären, um ein Speicher-zu-Lade-Weiterleiten unter Anwendung eines konventionellen STLF-Puffers auszuführen.
  • In einigen Ausführungsformen kann der STLF-Puffer 305 eine begrenzte Größe aufweisen und daher ausgebildet sein, eine begrenzte Anzahl an Einträgen im Vergleich zur Anzahl in dem Operationsspeicher 307 der Lade/Speicher-Einheit gespeicherten Anzahl an Operationen zu speichern. Dies kann unter gewissen Umständen einen Konflikt für Einträge 320 des STLF-Puffers 305 hervorrufen. Beispielsweise kann der STLF-Puffer 305 eine Kapazität aufweisen, um 16 Einträge entsprechend den Adressen 0x0h bis 0xFh zu speichern. Eine Instruktionssequenz kann zur Ausgabe einer Reihe von Speicheroperationen führen, die jeweils vier Datenbytes speichern. Die Reihe aus Speicheroperationen kann der Reihe nach Speicheradressen ansprechen, so dass die erste Speicheroperation auf die Adresse 0x00h, die zweite auf die Adresse 0x04h, die dritte auf 0x08h, etc. zielt. In Ausführungsformen unter Anwendung eines direkt zugeordneten Indexverfahrens können die ersten vier Speicheroperationen bewirken, dass die Einträge 320 in dem STLF-Puffer 305 bei Indizes 0x0h, 0x4h, 0x8h und 0xCh erzeugt werden. Die nächste Speicheroperation in der Reihe kann auf die Adresse 0x10h abzielen und der für den Eintrag 320 dieser Speicheroperation erzeugte Index kann 0x0h sein. Da dieser Index der gleiche ist, der für die erste Speicheroperation erzeugt wurde, die auf die Zieladresse 0x00h gerichtet ist, hält die Lade/Speichereinheit 126 den gleichen Eintrag 320 in dem STLF-Puffer für diese beiden Speicheroperationen.
  • Da die Speicheroperation mit der Adresse 0x10h den gleichen Eintrag als Index angibt wie die Speicheroperation mit der Adresse 0x00h können nicht beide Speicheroperationen in dem STLF-Puffer gleichzeitig repräsentiert sein, obwohl andere Einträge in dem STLF-Puffer 305 aktuell nicht zugeordnet sind. Wenn kein Eintrag in dem STLF-Puffer 305 für die neue Speicheroperation zugeordnet ist, dann kann die Lade/Speicher-Einheit 126 nicht unmittelbar mit der neuen Speicheroperation verknüpfte Daten an eine Ladeoperation weiterreichen, die auf die gleiche Adresse abzielt. Wenn andererseits der Eintrag der neuen Speicheradresse mit der Adresse 0x10h zugeordnet ist, wodurch die Information für die Speicheroperation mit der Adresse 0x00h überschrieben wird, kann die Lade/Speicher-Einheit 126 die mit der alten Speicheroperation verknüpften Daten nicht unmittelbar an die Ladeoperation, die auf die gleiche Adresse zielt, weiterreichen.
  • Die Möglichkeit für Konflikte zwischen einer Reihe von Speicheroperationen, die auf aufeinanderfolgende Adressen zugreifen, kann verringert werden, indem eine Prüfsummenfunktion oder eine andere Transformation für Adressen angewendet wird, wenn Indizes für den STLF-Puffer 305 erzeugt werden. In einer Ausführungsform kann die Lade/Speicher-Einheit 126 jeden Index bilden, indem die Adresse einer Operation um einen Betrag gleich log2 (Datengröße) nach rechts verschoben wird. In dem zuvor angegebenen Beispiel würde das Anwenden dieser Prüfsummenfunktion die Speicheroperation mit der Zieladresse 0x00h in einen Eintrag 320 entsprechend dem Index 0x0h überführen. Für die Speicheroperation mit der Zieladresse 0x04h würde die Lade/Speicher-Einheit 126 den Eintrag mit dem Index 0x01h zuordnen. In gleicher Weise würde die Lade/Speicher-Einheit den durch den Index 0x2h ausgewählten Eintrag der Speicheroperation mit der Adresse 0x08h zuordnen. Die Speicheroperation mit der Zieladresse 0x10h, die vorher mit der Speicheroperationszieladresse 0x00h im Konflikt war, würde dem Eintrag zugeordnet, der durch einen Index 0x4 ausgewählt ist, und es würde sich kein Konflikt mehr ergeben. Somit kann das Einfügen einer Prüfsummenfunktion oder einer anderen Transformation bei der Erzeugung von Indizes für Einträge 320 in dem STLF-Puffer 305 die Nutzung der Speicherkapazität des STLF-Puffers vergrößern.
  • Das Transformieren von Zieladressen für Lade/Speicher-Operationen, wie dies zuvor beschrieben ist, um damit Indizes für den STLF-Puffer 305 zu erzeugen, kann es ermöglichen, dass Einträge, die mehreren Speicheroperationen zugeordnet sind, die unterschiedliche Bytes innerhalb des gleichen maximalen Datengrößensegments betreffen, gleichzeitig innerhalb des STLF-Puffers 305 vorhanden sind. Jedoch wird ein gewisser Verlust an Präzision zu erwarten sein, wenn die Bits der geringeren Wertigkeit herausgeschoben werden, und es kann notwendig sein, die Adresse 321 und die Datengröße 329 zu vergleichen, um damit einen Treffer innerhalb des STLF-Puffers 305 zu bestimmen. Beispielsweise sind Einträge für 2-Byte-Speicheroperationen zu Adressen 0x00h, 0x2h und 0x04h gleichzeitig in dem STLF-Puffer 305 an Indexpositionen 0x0h, 0x1h und 0x2h vorhanden. Ein Versuch, eine 4-Byte-Ladeoperation mit Zieladresse 0x04h in Übereinstimmung zu bringen, würde einen Index für den STLF-Puffer 305 von 0x1h erzeugen, an welchem ein zulässiger Eintrag zu finden ist, aber da die Speicheroperation, die den Eintrag bei 0x1h erzeugte, lediglich auf zwei Datenbytes operiert, sollte die Lade/Speicher-Einheit einen Fehler für diese versuchte Übereinstimmung erzeugen. Vergleichen sowohl der Adressen als auch der Datengrößen von Ladeoperationen mit Einträgen in dem STLF-Puffer 305 kann zumindest einige der fehlerhaften Übereinstimmungsversuche ausschließen.
  • In einigen Ausführungsformen können, selbst wenn Transformationen an Adressen zur Erzeugung von Indizes für den STLF-Puffer 305 verwendet werden, Situationen auftreten, in denen zwei oder mehr Speicheroperationen dem gleichen STLF-Puffer-Eintrag 320 zugeordnet sind. Unter dieser Bedingung besteht die Möglichkeit, dass eine Ladeoperation, die die gleiche Adresse als Ziel hat wie diese Speicheroperationen, Daten von der falschen Speicheroperation weitergereicht werden. In einigen Ausführungsformen, in denen der STLF-Puffer 305 nicht korrekterweise Daten weiterleitet, kann der STLF-Puffer 305 weitergeleitete Ergebnisse als spekulativ kennzeichnen. Z. B. kann ein mit dem weitergeleiteten Daten verknüpftes Bit gesetzt werden, um anzuzeigen, dass die Daten spekulativ sind. Diese Ergebnisse können als spekulativ gekennzeichnet sein, wie sie von einem Verifizierungsmechanismus, etwa der STLF-Prüfeinheit 303 verifiziert sind.
  • Die STLF-Prüfeinheit 303 ist eine Einrichtung zum Verifizieren der Genauigkeit der STLF-Operationen. In einigen Ausführungsformen kann die STLF-Prüfeinheit 303 als ein konventioneller STLF-Puffer eingerichtet sein, der assoziative bzw. inhaltsadressierte Zugriffe ausführt und einen Erstfindealgorithmus einrichtet. Somit kann die STLF- Prüfeinheit die Adresse einer Ladeoperation mit den Adressen aller Speicheroperationen in dem Operationsspeicher 307 der Lade/Speicher-Einheit 126 vergleichen. Wenn alle übereinstimmenden Einträge 310 erkannt sind, kann die STLF-Prüfeinheit 303 einen Erstfindealgorithmus anwenden, um den Eintrag 310 zu identifizieren, der der jüngsten Speicheroperation zugeordnet ist, die älter ist als die Ladeoperation. Die Daten 319 des identifizierten Eintrags 310 können dann als der Wert ausgewählt werden, der als das Ergebnis der Ladeoperation weiterzuleiten ist. Die STLF-Prüfeinheit 303 kann deutlich mehr Zyklen beanspruchen, um das Speicher-zu-Lade-Weiterleiten im Vergleich zu dem STLF-Puffer 305 auszuführen.
  • Die STLF-Prüfeinheit 303 kann in präziser Weise die korrekte Quelle für die Daten kennzeichnen, die an eine Ladeoperation weiterzugeben sind. Wenn die STLF-Prüfeinheit 303 und der STLF-Puffer 305 die gleiche Speicheroperation als die Quelle kennzeichnen, von der Daten als das Ergebnis einer vorgegebenen Ladeoperation weiterzuleiten sind, dann sind die von STLF-Puffer 305 als Ergebnis der Ladeoperation weitergeleiteten Daten nicht mehr weiter als spekulativ zu betrachten und die Lade/Speicher-Einheit kann diesbezüglich eine Anzeige erzeugen. Beispielsweise kann ein mit dem Weitergeleiten Daten verknüpftes Bit zurückgesetzt werden, um anzuzeigen, dass die Daten nicht mehr spekulativ sind. Wenn andererseits die STLF-Prüfeinheit 303 eine andere Speicheroperation als jene, die zum Weiterleiten von Daten von dem STLF-Puffer 305 verwendet wurde, erkennt, dann haben die Ladeoperation und mögliche nachfolgende Operationen, die auf den spekulativen Daten operierten, unter Umständen unzulässige Ergebnisse erzeugt. Die STLF-Prüfeinheit 303 kann ebenso Situationen erfassen, in denen der STLF-Puffer keine Daten als Ergebnis einer Ladeoperation weitergeleitet hat, obwohl diese Ladeoperation Daten aus einer früheren Speicheroperation weitergeleitet haben sollte.
  • Die STLF-Prüfeinheit 303 kann Ladeoperationen löschen, die unkorrekterweise in den STLF-Puffer 305 weitergeleitet aber die unkorrekterweise nicht an den STLF-Puffer 305 weitergeleitet haben. In derartigen Situationen kann die STLF-Prüfeinheit 303 veranlassen, dass die Ladeoperation erneut ausgeführt wird (beispielsweise durch Bereitstellen eines Signals für die Ablauforganisationseinheit 118). Die STLF-Prüfeinheit 303 kann auch Informationen erzeugen, die die Speicheroperation benennen, von der aus eine nicht korrekt weitergeleitete (oder eine unkorrekt nicht weitergeleitete) Ladeoperation aus weiterleiten sollte. Wenn die Ladeoperation in der Lade/Speicher-Einheit 126 erneut ausgeführt wird, kann die Lade/Speicher-Einheit 126 diese Information nutzen, um Daten von der Speicheroperation, die von der STLF-Prüfeinheit 303 erkannt wird, als das Ergebnis der Ladeoperation weiterzuleiten. Alternativ kann die Lade/Speicher-Einheit 126 ausgebildet sein, eine Ergebnisweiterleitung für Ladeoperationen zu unterdrücken, die die STLF-Prüfeinheit 303 gelöscht hat und bewirkt hat, dass diese auf Grund einer nicht korrekten Arbeitsweise des STLF-Puffers 305 erneut auszuführen ist.
  • 3 ist ein Flussdiagramm eines Verfahrens zum Betreiben eines Mikroprozessors mit einem Speicher-zu-Lade-Weiterleitungs-Puffer gemäß einer Ausführungsform. Wenn sowohl die Zieladresse als auch zugeordnete Daten einer Speicheroperation bei 405 zulässig sind, kann ein Eintrag in den Speicher-zu-Lade-Weiterleitungs-Puffer zur Zuordnung zu der Speicheroperation auf der Grundlage eines Index ausgewählt werden, der aus der Gesamtheit oder einem Teil der Adresse der Speicheroperation und/oder der Datengröße erzeugt wird, wie dies bei 410 gezeigt ist. Der ausgewählte Eintrag kann die Gesamtheit oder einen Teil der Zieladresse für die Speicheroperation speichern (beispielsweise kann der Eintrag eine Markierung einschließlich der höherwertigen Bits der Zieladresse, die zur Erzeugung des Index nicht verwendet werden, enthalten). Der Eintrag kann ferner die mit der Speicheroperation verknüpften Daten und einen Wert, der die Größe der Daten repräsentiert, enthalten.
  • Wenn die mit einer Ladeoperation verknüpfte Adresse bei 415 erhalten wird, kann die Lade/Speicher-Einheit einen in den STLF-Puffer weisenden Index auf der Grundlage der Adresse bei 420 erzeugen. Wenn der von dem Index ausgewählte Eintrag zulässig ist, kann im Schritt 425 die Lade/Speicher-Einheit die Adresse und die Datengröße des Eintrags mit jenen der Ladeoperation vergleichen. Bei 430 können die Daten von dem übereinstimmenden Eintrag als das Ergebnis der Ladeoperation weitergeleitet werden. Wenn die Adresse und/oder die Datengröße des ausgewählten Eintrags nicht mit jenen der Ladeoperation übereinstimmen, werden keine Daten als das Ergebnis der Ladeoperation weitergeleitet.
  • 4 ist ein Flussdiagramm eines Verfahrens zum Betreiben eines Mikroprozessors, in welchem eine STLF-Prüfeinheit zusätzlich zu einem indexbehafteten Speicher-zu-Lade-Weiterleitungs-Puffer gemäß einer Ausführungsform vorgesehen ist. Wenn eine Adresse für eine Ladeoperation bei 505 gleichzeitig mit den Operationen 420 bis 435 aus 3 erhalten wird, kann die STLF-Prüfeinheit in dem Operationsspeicher mit der Suche beginnen, alle vorhandenen Speicheroperationen mit übereinstimmenden Zieladressen im Schritt 510 zu erkennen. Aus der Gruppe der Speicheroperationen, die älter als die Ladeoperation sind, kann die STLF-Prüfeinheit dann die jüngste als die korrekte Quelle für Daten im Schritt 515 auswählen, die zu der Ladeoperation weiterzureichen sind. Bei 520 kann die Lade/Speicher-Einheit die Speicheroperation, die zur Weiterleitung von Daten an die Ladeoperation von dem STLF-Puffer (bei 430) ausgewählt sind, mit der Speicheroperation vergleichen, die von der STLF-Prüfeinheit im Schritt 515 erkannt sind. Wenn Daten zu der Ladeoperation in einer anderen Speicheroperation weitergeleitet wurden, als sie von der STLF-Prüfeinheit im Schritt 515 erkannt wurde, oder wenn keine Daten zu der Ladeoperation (bei 435) weitergeleitet wurden und eine übereinstimmende Speicheroperation von der STLF-Prüfeinheit bei 515 erkannt wurde, kann die Lade/Speicher-Einheit die Ladeoperation zusammen mit nachfolgenden Operationen, die von den Ergebnissen der Ladeoperation abhängen, im Schritt 525 erneut ausführen. In einigen Ausführungsformen kann die Lade/Speicher-Einheit die Identität der im Schritt 515 erkannten Speicheroperation als die korrekte Quelle für Daten, die an die Ladeoperation weiterzuleiten sind, zur Verwendung in einer nachfolgenden erneuten Verarbeitung der Ladeoperation bereitstellen. In anderen Ausführungsformen kann die Lade/Speicher-Einheit die Speicher-zu-Lade-Weiterleitung bei der nachfolgenden Wiederverarbeitung der Ladeoperation unterdrücken.
  • BEISPIELHAFTE COMPUTERSYSTEME
  • 5 zeigt eine Blockansicht einer Ausführungsform eines Computersystems 900, das einen Mikroprozessor 190 aufweist, der mit mehreren Systemkomponenten über eine Busbrücke 902 verbunden ist. Der Mikroprozessor 100 kann eine Lade/Speicher-Einheit mit einem STLF-Puffer 305 und einer Prüfeinheit 303 enthalten, wie sie zuvor beschrieben sind. Andere Ausführungsformen eines Computersystems sind möglich und hierin berücksichtigt. In dem dargestellten System ist ein Hauptspeicher 200 mit der Busbrücke 902 über einen Speicherbus 906 verbunden, und eine Graphiksteuerung 908 ist mit der Busbrücke 902 über eine AGB-Bus 910 verbunden. Diverse PCI-Geräte 912a bis 912b sind mit der Busbrücke 902 über einen PCI-Bus 914 verbunden. Eine zweite bzw. sekundäre Busbrücke 916 kann ebenso vorgesehen sein, um eine elektrische Schnittstelle zu einer oder mehreren EISA/ISA-Geräten 918 über einen EISA/ISA-Bus 920 bereitzustellen. In diesem Beispiel ist der Mikroprozessor 100 mit der Busbrücke 902 über einen CPU-Bus 924 und mit einem optionalen L2-Chache-Speicher bzw. Zwischenspeicher 928 verbunden. In einigen Ausführungsformen kann der Mikroprozessor 100 einen integrierten L1-Cache-Speicher bzw. Zwischenspeicher (nicht gezeigt) aufweisen.
  • Die Bus-Brücke 902 bildet eine Schnittstelle zwischen dem Mikroprozessor 100, dem Hauptspeicher 200, der Graphiksteuerung 908 und den mit dem PCI-Bus 914 verbundenen Geräten. Wenn eine Operation von einem der mit der Busbrücke 902 verbundenen Geräte empfangen wird, erkennt die Busbrücke 902 das Ziel der Operation (beispielsweise ein spezielles Gerät oder im Falle des PCI-Busses 914, dass das Ziel auf dem PCI-Bus 914 liegt). Die Busbrücke 902 leitet die Operation an das Zielgerät weiter. Die Busbrücke 902 übersetzt im Allgemeinen eine Operation von dem Quellengerät oder Quellenbus verwendeten Protokoll in das Protokoll, das von dem Zielgerät oder Zielbus verwendet wird.
  • Zusätzlich zum Bereitstellen einer Schnittstelle für einen ISA-EISA-Bus für den PCI-Bus 914 kann die sekundäre Busbrücke 916 weitere Funktionen enthalten. Eine Eingangs/Ausgangs-Steuerung (nicht gezeigt), die extern zu der zweiten Busbrücke 916 vorgesehen oder in dieser integriert ist, kann ebenso in dem Computersystem 900 enthalten sein, um funktionsmäßig eine Tastatur und eine Maus 922 und diverse serielle und parallele Anschlüsse zu unterstützten. Eine externe Zwischenspeichereinheit (nicht gezeigt) kann ebenso an dem CPU-Bus 924 in weiteren Ausführungsformen zwischen dem Mikroprozessor 100 und der Busbrücke 902 angeschlossen sein. Alternativ kann der externe Zwischenspeicher mit der Busbrücke 902 verbunden sein und eine Zwischenspeichersteuerlogik für den externen Zwischenspeicher kann in der Busbrücke 902 integriert sein. Der L2-Zwischenspeicher 928 ist in einer Rückseitenkonfiguration zu dem Mikroprozessor 100 gezeigt. Zu beachten ist, dass der L2-Zwischenspeicher 928 separat zu dem Mikroprozessor 100 vorgesehen sein kann, beispielsweise in einem Einschub (beispielsweise Einschub 1 oder Einschub A) des Mikroprozessors 100, oder dieser kann sogar mit dem Mikroprozessor 100 auf einem Halbleitersubstrat aufgebracht sein.
  • Der Hauptspeicher 200 ist ein Speicher, in welchem Anwendungsprogramme gespeichert sind und von welchem aus der Mikroprozessor zuerst seine Ausführung beginnt. Zu einem geeigneten Hauptspeicher 200 kann ein DRAM (dynamischer Speicher mit wahlfreiem Zugriff gehören). Beispielsweise sind mehrere SDRAM (synchroner DRAM) oder Rambus DRAM (RDRAM) geeignet.
  • Die PCT-Geräte 912a bis 912b sind als anschauliche Beispiele einer Vielzahl peripherer Geräte, etwa Netzwerkschnittstellenkarten, Videobeschleuniger, Audiokarten, Festplatten oder Laufwerke oder Laufwerkssteuerungen (SCSI-) Kleincomputersystemschnittstellenadapter und Telefonkarten aufgeführt. In ähnlicher Weise ist das ISA-Gerät 918 als anschauliches Beispiel für diverse Arten von peripheren Geräten gezeigt, etwa einem Modem, einer Soundkarte und einer Vielzahl von Datennahmekarten, etwa GPIB oder Feldbusschnittstellenkarten.
  • Die Graphiksteuerung 908 ist vorgesehen, um das Umsetzen von Text und Bildern auf eine Anzeige 926 zu steuern. Die Graphiksteuerung 908 kann einen typischen Graphikbeschleuniger verkörpern, der im Allgemeinen im Stand der Technik bekannt ist, um damit dreidimensionale Datenstrukturen umzusetzen, die effektiv in den Hauptspeicher 200 verschoben und daraus ausgelesen werden. Die Graphiksteuerung 908 kann daher ein Master (übergeordnetes Gerät) des AGP-Busses 910 sein, da es Zugriff auf eine Zielschnittstelle innerhalb der Busbrücke 902 anfordern und empfangen kann, um damit einen Zugriff auf den Hauptspeicher 200 zu erhalten. Ein zugeordneter Graphikbus sorgt für ein rasches Abrufen von Daten aus dem Hauptspeicher 200. Für gewisse Operationen kann die Graphiksteuerung 908 ferner ausgebildet sein, PCI-Protokolltransaktionen auf dem AGP-Bus 910 zu erzeugen. Die AGP-Schnittstelle der Busbrücke 902 kann daher eine Funktion enthalten, um sowohl AGP-Protokolltransaktionen sowie PCI-Protokollziel- und Initiatorentransaktionen zu unterstützten. Die Anzeige 926 ist eine beliebige elektronische Anzeige, auf der ein Bild oder ein Text dargestellt werden kann. Zu einer geeigneten Anzeige 926 gehört eine Kathodenstrahlröhre („CRT"), eine Flüssigkristallanzeige („LCD"), etc.
  • Es ist zu beachten, dass, obwohl die AGP-, PCI- und ISA- oder EISA-Busse als Beispiele in der obigen Beschreibung verwendet sind, beliebige Busarchitekturen nach Bedarf stattdessen verwendet werden können. Ferner ist zu beachten, dass das Computersystem 900 ein mehrfach verarbeitendes Computersystem mit zusätzlichen Mikroprozessoren sein kann (beispielsweise ist ein Mikroprozessor 100a als eine optionale Komponente des Computersystems 900 gezeigt). Der Mikroprozessor 100a kann ähnlich zu dem Prozessor 100 sein. Insbesondere kann der Mikroprozessor 100a eine baugleiche Kopie des Mikroprozessors 100 sein. Der Mikroprozessor 100a kann mit der Busbrücke 902 über einen unabhängigen Bus (wie dies in 5 gezeigt ist) verbunden sein oder kann zusammen mit dem Mikroprozessor 100 den CPU-Bus 924 nutzen. Des weiteren kann der Mikroprozessor 100a mit einem optionalen L2-Zwischenspeicher 928a ähnlich dem L2-Zwischenspeicher 928 verbunden sein.
  • In 6 ist eine weitere Ausführungsform eines Computersystems 900 gezeigt, das einen Mikroprozessor, wie er zuvor beschrieben ist, aufweist. Andere Ausführungsformen sind möglich und hierin berücksichtigt. In der Ausführungsform aus 6 umfasst das Computersystem 900 diverse Verarbeitungsknoten 1012A, 1012B, 1012C und 1012D. Jeder Verarbeitungsknoten ist mit einem entsprechenden Speicher 200A bis 200D über eine Speichersteuerung 1016A bis 1016D, die in jeweils dem entsprechenden Verarbeitungsknoten 1012A bis 1012D enthalten sind, verbunden. Des weiteren enthalten die Verarbeitungsknoten 1012A bis 1012D eine Schnittstellenlogik, die zur Kommunikation zwischen den Verarbeitungsknoten 1012A bis 1012D verwendet wird. Beispielsweise enthält der Verarbeitungsknoten 1012A eine Schnittstellenlogik 1018A zur Kommunikation mit dem Verarbeitungsknoten 1012B, eine Schnittstellenlogik 1018B zur Kommunikation mit dem Verarbeitungsknoten 1012C und eine dritte Schnittstellenlogik 1018C zur Kommunikation mit einem noch weiteren Verarbeitungsknoten (nicht gezeigt). In ähnlicher Weise umfasst der Verarbeitungsknoten 1012B eine Schnittstellenlogik 1018D, 1018E und 1018F; der Verarbeitungsknoten 1012C enthält eine Schnittstellenlogik 1018G, 1018H und 1018I; und der Verarbeitungsknoten 1012D enthält die Schnittstellenlogik 1018J, 1018K und 1018L. Der Verarbeitungsknoten 1012D ist so angeschlossen, dass er mit mehreren Eingabe/Ausgabe-Geräten (beispielsweise Geräte 1020A bis 1020B in einer Reihenkonfiguration) über die Schnittstellenlogik 1018L in Verbindung steht. Andere Verarbeitungsknoten können mit anderen I/0-Geräten in ähnlicher Weise kommunizieren.
  • Die Verarbeitungsknoten 1012A bis 1012D stellen eine paketbasierte Verbindung für eine Kommunikation zwischen den Verarbeitungsknoten bereit. In der vorliegenden Ausführungsform ist die Verbindung als Sätze von unidirektionalen Leitungen (beispielsweise werden Leitungen 1024A verwendet, um Pakete von dem Verarbeitungsknoten 1012A zu dem Verarbeitungsknoten 1012B zu senden, und Leitungen 1020B werden verwendet um Pakete von dem Verarbeitungsknoten 1012B zu dem Verarbeitungsknoten 1012A zu übertragen). Andere Leitungssätze 1024C bis 1024H werden verwendet, um Pakete zwischen anderen Verarbeitungsknoten auszutauschen, wie dies in 6 gezeigt ist. Im Allgemeinen kann jeder Leitungssatz 1024 eine oder mehrere Datenleitungen, eine oder mehrere Taktleitungen, die den Datenleitungen zugeordnet sind, und eine oder mehrere Steuerleitungen, die die Art der übertragenen Datenpakete kennzeichnen, aufweisen. Die Verbindung kann in einer mit dem Zwischenspeicher kohärenten Weise für die Kommunikation zwischen den Verarbeitungsknoten oder in einer nicht kohärenten Weise für die Kommunikation zwischen einem Verarbeitungsknoten und einem I/O-Gerät (oder einer Busbrücke mit einem I/O-Bus konventioneller Bauart, etwa dem PCI-Bus oder dem ISA-Bus) betrieben werden. Des weiteren kann die Verbindung in einer nicht kohärenten Weise betrieben werden, wobei eine verkettete Datenstruktur zwischen I/O-Geräten angewendet wird, wie dies gezeigt ist. Zu beachten ist, dass ein von einem Verarbeitungsknoten zu einem weiteren zu übertragendes Paket durch einen oder mehrere Zwischenknoten laufen kann. Beispielsweise kann ein von dem Verarbeitungsknoten 1012A zu dem Verarbeitungsknoten 1012D zu übertragendes Paket durch den Verarbeitungsknoten 1012B oder den Verarbeitungsknoten 1012C laufen, wie dies in 6 gezeigt ist. Es kann ein beliebiger Routenführungsalgorithmus verwendet werden. In anderen Ausführungsformen des Computersystems 900 können mehr oder weniger Verarbeitungsknoten als in der in 6 gezeigten Ausführungsform verwendet werden.
  • Im Allgemeinen werden die Pakete als ein oder mehrere Bitzeiten auf den Leitungen 1024 zwischen den Knoten übertragen. Eine Bitzeit kann die ansteigende oder abfallende Flanke des Taktsignals auf den entsprechenden Taktleitungen sein. Die Pakete können Befehlspakete zum Initiieren von Transaktionen, Sondierungspakete zum Beibehalten der Zwischenspeicherkohärenz und Antwortpakete von Antworten auf Sondierungen und Befehle sein.
  • Die Verarbeitungsknoten 1012A bis 1012D können zusätzlich zu einer Speichersteuerung und einer Schnittstellenlogik einen oder mehrere Mikroprozessoren enthalten. Allgemein gesagt, ein Verarbeitungsknoten umfasst mindestens einen Mikroprozessor und kann optional eine Speichersteuerung zur Kommunikation mit einem Speicher und einer anderen Logik nach Bedarf enthalten. Jeder Mikroprozessor kann einen STLF-Puffer 305 und/oder eine STLF-Prüfeinheit 303 in einigen Ausführungsformen aufweisen. Insbesondere kann jeder Verarbeitungsknoten 1012A bis 1012D eine oder mehrere Duplikate des Mikroprozessors 100 aufweisen. Die externe Schnittstelleneinheit 1012D kann die Schnittstellenlogik 1018L in dem Verarbeitungsknoten sowie die Speichersteuerung 1016D enthalten.
  • Die Speicher 200A bis 200D können beliebige geeignete Speichereinrichtungen aufweisen. Beispielsweise kann ein Speicher 200A bis 200D einen oder mehrere Rambus DRAMS (RDRAMS), synchrone DRAMS (SDRAMS), statische RAM, etc. aufweisen. Der Adressenraum des Computersystems 900 ist unter den Speichern 200A bis 200D aufgeteilt. Jeder Verarbeitungsknoten 1012A bis 1012D kann eine Speicherkarte aufweisen, die verwendet wird, um zu bestimmen, welche Adressen zu welchem Speicher 200A bis 200D zugeordnet werden, und somit zu welchem Verarbeitungsknoten 1012A bis 1012D eine Speicheranforderung für eine spezielle Adresse zugleitet werden sollte. In einer Ausführungsform ist der Kohärenzpunkt für eine Adresse innerhalb des Computersystems 900 die Speichersteuerung 1016A bis 1016D, die mit dem Speicher verbunden ist, die der Adresse entsprechende Bytes speichert. Anders ausgedrückt, die Speichersteuerung 1016A bis 1016D ist dafür zuständig, sicherzustellen, dass jeder Speicherzugriff auf den entsprechenden Speicher 200A bis 200D in einer mit dem Zwischenspeicher kohärenten Weise stattfindet. Die Speichersteuerungen 1016A bis 1016D können eine Steuerschaltung zur Verbindung mit den Speichern 200A bis 200D aufweisen. Ferner können die Speichersteuerungen 1016A bis 1016D Anforderungswartereihen zur Aufreihung von Speicheranforderungen enthalten.
  • Die Schnittstellenlogik 1018A bis 1018L kann eine Vielzahl von Puffern zum Empfangen von Paketen aus der Verbindungsleitung und zum Zwischenspeichern von Paketen, die auf der Leitung zu übertragen sind, aufweisen. Das Computersystem 900 kann einen beliebigen geeigneten Ablaufsteuerungsmechanismus zum Übertragen von Paketen anwenden. Beispielsweise speichert in einer Ausführungsform jede Schnittstellenlogik 1018 die Anzahl jeder Pufferart innerhalb des Empfängers am anderen Ende der Leitung, mit der diese Schnittstellenlogik verbunden ist. Die Schnittstellenlogik überträgt kein Paket, sofern die empfangende Schnittstellenlogik nicht einen freien Puffer zur Speicherung des Pakets aufweist. Wenn ein Empfangspuffer durch Weiterleiten eines Pakets freigegeben ist, übermittelt die empfangende Schnittstellenlogik eine Nachricht zu der sendenden Schnittstellenlogik, um anzuzeigen, dass der Puffer freigegeben ist. Ein derartiger Mechanismus kann als ein „Coupon-basiertes" System bezeichnet werden.
  • Die I/O-Geräte 1020A bis 1020B können beliebige geeignete I/O-Geräte sein. Beispielsweise können die I/O-Geräte 1020A bis 1020B Geräte zur Kommunikation mit einem weiteren Computersystem, mit dem die Geräte verbunden sein können (beispielsweise Netzwerkschnittstellenkarten oder Modems) enthalten. Beispielsweise können die I/O-Geräte 1020A bis 1020B Videobeschleuniger, Audiokarten, Festplatten oder Laufwerke oder Laufwerkssteuerungen, SCSI-(Kleincomputersystemschnittstellen) Adapter und Telefonkarten, Klangkarten und eine Vielzahl von Datennahmekarten, etwa GPIB oder Feldbusschnittstellenkarten enthalten. Zu beachten ist, dass der Begriff „I/O-Gerät" und der Begriff „Periphergerät" hierin als Synonym zu betrachten sind.
  • Im hierin verwendeten Sinne bezeichnet der Begriff „Taktsignal" ein Zeitintervall, in der diverse Phasen der Instruktionsverarbeitung-Pipelines ihre Aufgaben abschließen. Instruktionen und berechnete Werte werden von Speicherelementen (etwa Register oder Arrays) entsprechend einem Taktsignal, das den Taktzyklus definiert, übernommen. Beispielsweise übernimmt ein Speicherelement einen Wert gemäß der ansteigenden oder abfallenden Flanke des Taktsignals.
  • Die obige Erläuterung beschreibt Signale als „gesetzt". Ein Signal kann als gesetzt definiert werden, wenn es einen Wert überträgt, der eine spezielle Information kennzeichnet. Ein spezielles Signal kann als gesetzt definiert werden, wenn es einen binären Wert 1 oder alternativ wenn es einen binären Wert 0 überträgt.
  • Es werden diverse Variationen und Modifizierungen für den Fachmann im Lichte dieser Offenbarung offenkundig. Es ist beabsichtigt, dass die anschließenden Patentansprüche so interpretiert werden, dass alle derartigen Variationen und Modifizierungen mit eingeschlossen sind.
  • INDUSTRIELLE ANWENDBARKEIT
  • Diese Erfindung ist im Allgemeinen auf dem Gebiet von Mikroprozessoren anwendbar.

Claims (10)

  1. Mikroprozessor (100) mit: einer Verteilungseinheit (104), die ausgebildet ist, Lade- und Speicheroperationen zu verteilen; und einer Lade/Speicher-Einheit (126), die ausgebildet ist, Information zu speichern, die mit den von der Verteilungseinheit (104) verteilten Lade/Speicher-Operationen verknüpft ist, wobei die Lade/Speicher-Einheit (126) einen indexbasierten STLF-(Speicher-zu-Lade-Weiterleitungs-) Puffer (305) umfasst, und wobei der indexbasierte STLF-Puffer (305) mehrere Einträge (320) aufweist, von denen jeder durch einen entsprechenden einzigartigen Indexwert auswählbar ist; wobei die Lade/Speicher-Einheit (126) ferner ausgebildet ist, einen Indexwert in Abhängigkeit von zumindest einem Teil einer Adresse einer Ladeoperation zu erzeugen, wobei der erzeugte Indexwert einer der einzigartigen Indexwerte ist, den erzeugten Indexwert zum indexbasierten Ansprechen des indexbasierten STLF-Puffers zu verwenden, um einen der mehreren Einträge (320) auszuwählen und Daten, die in dem einen der mehreren Einträge (320), der durch den erzeugten Indexwert ausgewählt ist, enthalten sind, als ein Ergebnis der Ladeoperation weiterzuleiten.
  2. Mikroprozessor (100) nach Anspruch 1, wobei die Lade/Speicher-Einheit (126) ausgebildet ist, die in dem einen der mehreren Einträge (320) enthaltenden Daten nicht als das Ergebnis der Ladeoperation weiterzuleiten, wenn in dem einen der mehreren Einträge (320) enthaltene Information nicht mit der Ladeoperation verknüpften Operation übereinstimmt.
  3. Mikroprozessor (100) nach Anspruch 1, wobei die Lade/Speicher-Einheit (126) ausgebildet ist, auszuwählen, welcher eine der mehreren Einträge (320) einer Speicheroperation zuzuordnen ist, indem ein zusätzlicher Indexwert in Abhängigkeit zumindest eines Bereichs einer Adresse der Speicheroperation erzeugt wird.
  4. Mikroprozessor (100) nach Anspruch 1, wobei die Lade/Speicher-Einheit (126) ferner eine STLF-Prüfeinheit (303) umfasst, die ausgebildet ist, die Arbeitsweise des STLF-Puffers (305) zu verifizieren.
  5. Mikroprozessor (100) nach Anspruch 4, wobei die STLF-Prüfeinheit (303) ausgebildet ist, einen Assoziativadressenvergleich auszuführen, um alle ausgegebenen Speicheroperationen, die eine gleiche Adresse wie die Ladeoperation zum Ziel haben, zu kennzeichnen und einen Erstfindealgorithmus einzurichten, um eine jüngste ausgegebene Speicheroperation, die älter als die Ladeoperation ist, auszuwählen.
  6. Computersystem (900) mit: einem Systemspeicher (200); und einem Mikroprozessor (100), der mit dem Systemspeicher (200) verbunden ist; dadurch gekennzeichnet, dass der Mikroprozessor (100) umfasst: eine Verteilungseinheit (104), die ausgebildet ist, Lade- und Speicheroperationen zu verteilen; und eine Lade/Speicher-Einheit (126), die ausgebildet ist, mit Lade- und Speicheroperationen, die von der Verteilungseinheit (104) verteilt werden, verknüpfte Informationen zu speichern, wobei die Lade/Speicher-Einheit (126) einen indexbasierten STLF-(Speicher-zu-Lade-Weiterleitungs-)Puffer (305) aufweist, und wobei der indexbasierte STLF-Puffer (305) mehrere Einträge (320) umfasst, wovon jeder durch einen entsprechenden einzigartigen Indexwert auswählbar; wobei die Lade/Speicher-Einheit (126) ferner ausgebildet ist, einen Indexwert abhängig von zumindest einem Teil einer Adresse einer Ladeoperation zu erzeugen, wobei der erzeugte Indexwert einer der einzigartigen Indexwerte ist, den erzeugten Indexwert indexbasierten Ansprechen des indexbasierten STLF-Puffers zu verwenden, umeinen der mehreren Einträge (320) auszuwählen und Daten, die in dem einen der mehreren Einträge (320), der durch den erzeugten Indexwert ausgewählt ist, enthalten sind, als ein Ergebnis der Ladeoperation weiterzuleiten.
  7. Verfahren zum Ausführen einer Speicher-zu-Lade-Weiterleitung (STLF) in einem Mikroprozessor mit folgenden Schritten: Empfangen einer Adresse einer Ladeoperation; Erzeugen eines Indexwertes entsprechend der Adresse; indexbasiertes Ansprechen eines indexbasierten STLF- (Speicher-zu-Lade-Weiterleitungs-) Puffers (305) unter Verwenden des erzeugten Indexwertes, um einen Eintrag aus mehreren Einträgen (320), die in dem indexbasierten STLF- Puffer (305) enthalten sind, auszuwählen, wobei jeder der mehreren Einträge unter Anwendung eines entsprechenden einzigartigen Indexwertes auswählbar ist und der erzeugte Indexwert einer der entsprechenden einzigartigen Indexwerte ist; und Weiterleiten von Daten, die in dem durch den erzeugten Indexwert adressierten Eintrag, enthalten sind, als Ergebnis der Ladeoperation.
  8. Verfahren nach Anspruch 7, das ferner umfasst: Verifizieren der Arbeitsweise des STLF-Puffers (305) durch Ausführen eines assoziativen Adressenvergleichs zur Identifizierung aller ausgegebenen Speicheroperationen, die auf die gleiche Adresse zielen wie die Ladeoperation, und durch Einrichten eines Erstfindealgorithmus, um eine jüngste ausgegebene Speicheroperation, die älter als die Ladeoperation ist, auszuwählen.
  9. Verfahren nach Anspruch 8, das ferner erneutes Ausführen der Ladeoperation umfasst, wenn das Verifizieren eine nicht korrekte Arbeitsweise des STLF-Puffers (305) kennzeichnet.
  10. Verfahren nach Anspruch 8, das ferner umfasst: Kennzeichnen des Ergebnisses der Ladeoperation als einen spekulativen Wert in Reaktion auf das Weiterleiten der Daten in dem Eintrag, der in dem STLF-Puffer (305) enthalten ist, als das Ergebnis der Ladeoperation; und wenn das Verifizieren bestätigt, dass der STLF-Puffer (305) in korrekter Weise für die Ladeoperation gearbeitet hat, Kennzeichnen des Ergebnisses der Ladeoperation als nicht spekulativ.
DE112004001248T 2003-07-08 2004-06-02 Mikroprozessor und Verfahren zum Ausführen einer index-behafteten Speicher-zu-Lade-Weiterleitung Expired - Fee Related DE112004001248B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/615,101 US7321964B2 (en) 2003-07-08 2003-07-08 Store-to-load forwarding buffer using indexed lookup
US10/615,101 2003-07-08
PCT/US2004/017093 WO2005010750A2 (en) 2003-07-08 2004-06-02 Store-to-load forwarding buffer using indexed lookup

Publications (2)

Publication Number Publication Date
DE112004001248T5 DE112004001248T5 (de) 2006-08-10
DE112004001248B4 true DE112004001248B4 (de) 2008-08-21

Family

ID=33564489

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112004001248T Expired - Fee Related DE112004001248B4 (de) 2003-07-08 2004-06-02 Mikroprozessor und Verfahren zum Ausführen einer index-behafteten Speicher-zu-Lade-Weiterleitung

Country Status (8)

Country Link
US (1) US7321964B2 (de)
JP (1) JP2007527563A (de)
KR (1) KR101123378B1 (de)
CN (1) CN100432925C (de)
DE (1) DE112004001248B4 (de)
GB (1) GB2420202B (de)
TW (1) TWI324744B (de)
WO (1) WO2005010750A2 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7376817B2 (en) * 2005-08-10 2008-05-20 P.A. Semi, Inc. Partial load/store forward prediction
GB2416891B (en) * 2005-11-09 2006-11-01 Streamshield Networks Ltd A network implemented content processing system
CN101901132B (zh) * 2009-08-12 2013-08-21 威盛电子股份有限公司 微处理器以及相关储存方法
US9442735B1 (en) * 2012-04-13 2016-09-13 Marvell International Ltd. Method and apparatus for processing speculative, out-of-order memory access instructions
US9361103B2 (en) * 2012-11-02 2016-06-07 Advanced Micro Devices, Inc. Store replay policy
US10169391B2 (en) * 2015-10-21 2019-01-01 International Business Machines Corporation Index management
US10303603B2 (en) 2017-06-13 2019-05-28 Microsoft Technology Licensing, Llc Low power multi-core coherency
US10282298B2 (en) 2017-06-13 2019-05-07 Microsoft Technology Licensing, Llc Store buffer supporting direct stores to a coherence point
US11113056B2 (en) * 2019-11-27 2021-09-07 Advanced Micro Devices, Inc. Techniques for performing store-to-load forwarding
KR20230158257A (ko) * 2022-05-11 2023-11-20 서울시립대학교 산학협력단 명령어를 처리하는 방법 및 이를 위한 프로세서 모듈

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001035212A1 (en) 1999-11-10 2001-05-17 Advanced Micro Devices, Inc. Store buffer which forwards data based on index and optional way match
US6360314B1 (en) 1998-07-14 2002-03-19 Compaq Information Technologies Group, L.P. Data cache having store queue bypass for out-of-order instruction execution and method for same

Family Cites Families (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4594660A (en) 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Collector
US4521851A (en) 1982-10-13 1985-06-04 Honeywell Information Systems Inc. Central processor
US5276828A (en) 1989-03-01 1994-01-04 Digital Equipment Corporation Methods of maintaining cache coherence and processor synchronization in a multiprocessor system using send and receive instructions
US5487156A (en) 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5655096A (en) 1990-10-12 1997-08-05 Branigin; Michael H. Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
US5778219A (en) 1990-12-14 1998-07-07 Hewlett-Packard Company Method and system for propagating exception status in data registers and for detecting exceptions from speculative operations with non-speculative operations
JP2693651B2 (ja) * 1991-04-30 1997-12-24 株式会社東芝 並列プロセッサー
US5488729A (en) 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
US5440752A (en) 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
JPH0820949B2 (ja) 1991-11-26 1996-03-04 松下電器産業株式会社 情報処理装置
JP3199465B2 (ja) 1992-07-22 2001-08-20 株式会社日立製作所 情報処理装置
KR100248903B1 (ko) 1992-09-29 2000-03-15 야스카와 히데아키 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템
US5619662A (en) 1992-11-12 1997-04-08 Digital Equipment Corporation Memory reference tagging
US5467473A (en) 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
IE80854B1 (en) 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution
DE69429061T2 (de) 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
US5588126A (en) 1993-12-30 1996-12-24 Intel Corporation Methods and apparatus for fordwarding buffered store data on an out-of-order execution computer system
US5724536A (en) 1994-01-04 1998-03-03 Intel Corporation Method and apparatus for blocking execution of and storing load operations during their execution
US5465336A (en) 1994-06-30 1995-11-07 International Business Machines Corporation Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system
US5555432A (en) 1994-08-19 1996-09-10 Intel Corporation Circuit and method for scheduling instructions by predicting future availability of resources required for execution
US6216200B1 (en) 1994-10-14 2001-04-10 Mips Technologies, Inc. Address queue
US5625789A (en) 1994-10-24 1997-04-29 International Business Machines Corporation Apparatus for source operand dependendency analyses register renaming and rapid pipeline recovery in a microprocessor that issues and executes multiple instructions out-of-order in a single cycle
US5666506A (en) 1994-10-24 1997-09-09 International Business Machines Corporation Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle
US5644742A (en) 1995-02-14 1997-07-01 Hal Computer Systems, Inc. Processor structure and method for a time-out checkpoint
US5745729A (en) 1995-02-16 1998-04-28 Sun Microsystems, Inc. Methods and apparatuses for servicing load instructions
US5887152A (en) 1995-04-12 1999-03-23 Advanced Micro Devices, Inc. Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions
US5832297A (en) 1995-04-12 1998-11-03 Advanced Micro Devices, Inc. Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
US5802588A (en) 1995-04-12 1998-09-01 Advanced Micro Devices, Inc. Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer
US5625835A (en) 1995-05-10 1997-04-29 International Business Machines Corporation Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor
US5761712A (en) 1995-06-07 1998-06-02 Advanced Micro Devices Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array
US5717883A (en) 1995-06-28 1998-02-10 Digital Equipment Corporation Method and apparatus for parallel execution of computer programs using information providing for reconstruction of a logical sequential program
US5652859A (en) 1995-08-17 1997-07-29 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues
US5710902A (en) 1995-09-06 1998-01-20 Intel Corporation Instruction dependency chain indentifier
US5751983A (en) 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
JP3115515B2 (ja) * 1995-10-03 2000-12-11 ポリプラスチックス株式会社 ポリアセタール共重合体の製造方法
US5926642A (en) 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US5884059A (en) 1996-01-26 1999-03-16 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
US5799165A (en) 1996-01-26 1998-08-25 Advanced Micro Devices, Inc. Out-of-order processing that removes an issued operation from an execution pipeline upon determining that the operation would cause a lengthy pipeline delay
US5835747A (en) 1996-01-26 1998-11-10 Advanced Micro Devices, Inc. Hierarchical scan logic for out-of-order load/store execution control
US5781790A (en) 1995-12-29 1998-07-14 Intel Corporation Method and apparatus for performing floating point to integer transfers and vice versa
US5742791A (en) 1996-02-14 1998-04-21 Advanced Micro Devices, Inc. Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor
US6108769A (en) 1996-05-17 2000-08-22 Advanced Micro Devices, Inc. Dependency table for reducing dependency checking hardware
US5748978A (en) 1996-05-17 1998-05-05 Advanced Micro Devices, Inc. Byte queue divided into multiple subqueues for optimizing instruction selection logic
WO1998006038A1 (en) 1996-08-07 1998-02-12 Sun Microsystems, Inc. Architectural support for software pipelining of loops
US5781752A (en) 1996-12-26 1998-07-14 Wisconsin Alumni Research Foundation Table based data speculation circuit for parallel processing computer
US5978900A (en) 1996-12-30 1999-11-02 Intel Corporation Renaming numeric and segment registers using common general register pool
US6065105A (en) 1997-01-08 2000-05-16 Intel Corporation Dependency matrix
US6016540A (en) 1997-01-08 2000-01-18 Intel Corporation Method and apparatus for scheduling instructions in waves
US5923862A (en) 1997-01-28 1999-07-13 Samsung Electronics Co., Ltd. Processor that decodes a multi-cycle instruction into single-cycle micro-instructions and schedules execution of the micro-instructions
US5768555A (en) 1997-02-20 1998-06-16 Advanced Micro Devices, Inc. Reorder buffer employing last in buffer and last in line bits
US5996068A (en) 1997-03-26 1999-11-30 Lucent Technologies Inc. Method and apparatus for renaming registers corresponding to multiple thread identifications
US5941983A (en) 1997-06-24 1999-08-24 Hewlett-Packard Company Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues
US5987594A (en) 1997-06-25 1999-11-16 Sun Microsystems, Inc. Apparatus for executing coded dependent instructions having variable latencies
US5850533A (en) 1997-06-25 1998-12-15 Sun Microsystems, Inc. Method for enforcing true dependencies in an out-of-order processor
US6070238A (en) 1997-09-11 2000-05-30 International Business Machines Corporation Method and apparatus for detecting overlap condition between a storage instruction and previously executed storage reference instruction
US5915117A (en) 1997-10-13 1999-06-22 Institute For The Development Of Emerging Architectures, L.L.C. Computer architecture for the deferral of exceptions on speculative instructions
US6076153A (en) 1997-12-24 2000-06-13 Intel Corporation Processor pipeline including partial replay
US6098166A (en) 1998-04-10 2000-08-01 Compaq Computer Corporation Speculative issue of instructions under a load miss shadow
US6108770A (en) 1998-06-24 2000-08-22 Digital Equipment Corporation Method and apparatus for predicting memory dependence using store sets
US6212622B1 (en) 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Mechanism for load block on store address generation
US6212623B1 (en) 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Universal dependency vector/queue entry
WO2000011548A1 (en) 1998-08-24 2000-03-02 Advanced Micro Devices, Inc. Mechanism for load block on store address generation and universal dependency vector
US6122727A (en) 1998-08-24 2000-09-19 Advanced Micro Devices, Inc. Symmetrical instructions queue for high clock frequency scheduling
US6321328B1 (en) 1999-03-22 2001-11-20 Hewlett-Packard Company Processor having data buffer for speculative loads
US6266744B1 (en) 1999-05-18 2001-07-24 Advanced Micro Devices, Inc. Store to load forwarding using a dependency link file
US6393536B1 (en) 1999-05-18 2002-05-21 Advanced Micro Devices, Inc. Load/store unit employing last-in-buffer indication for rapid load-hit-store
US6542984B1 (en) 2000-01-03 2003-04-01 Advanced Micro Devices, Inc. Scheduler capable of issuing and reissuing dependency chains
US6694424B1 (en) 2000-01-03 2004-02-17 Advanced Micro Devices, Inc. Store load forward predictor training
US6622235B1 (en) 2000-01-03 2003-09-16 Advanced Micro Devices, Inc. Scheduler which retries load/store hit situations
US6502185B1 (en) 2000-01-03 2002-12-31 Advanced Micro Devices, Inc. Pipeline elements which verify predecode information
US6651161B1 (en) 2000-01-03 2003-11-18 Advanced Micro Devices, Inc. Store load forward predictor untraining
US6622237B1 (en) 2000-01-03 2003-09-16 Advanced Micro Devices, Inc. Store to load forward predictor training using delta tag
US6877086B1 (en) * 2000-11-02 2005-04-05 Intel Corporation Method and apparatus for rescheduling multiple micro-operations in a processor using a replay queue and a counter
JP3497832B2 (ja) * 2001-03-28 2004-02-16 株式会社半導体理工学研究センター ロード・ストアキュー

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360314B1 (en) 1998-07-14 2002-03-19 Compaq Information Technologies Group, L.P. Data cache having store queue bypass for out-of-order instruction execution and method for same
WO2001035212A1 (en) 1999-11-10 2001-05-17 Advanced Micro Devices, Inc. Store buffer which forwards data based on index and optional way match

Also Published As

Publication number Publication date
CN100432925C (zh) 2008-11-12
JP2007527563A (ja) 2007-09-27
GB2420202A (en) 2006-05-17
DE112004001248T5 (de) 2006-08-10
TWI324744B (en) 2010-05-11
US7321964B2 (en) 2008-01-22
KR20060052788A (ko) 2006-05-19
GB2420202B (en) 2006-12-06
WO2005010750A3 (en) 2006-01-05
KR101123378B1 (ko) 2012-03-27
GB0526408D0 (en) 2006-02-08
CN1836207A (zh) 2006-09-20
TW200511110A (en) 2005-03-16
US20050010744A1 (en) 2005-01-13
WO2005010750A2 (en) 2005-02-03

Similar Documents

Publication Publication Date Title
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE112005002173B4 (de) Prozessor mit Abhängigkeitsmechanismus, um vorherzusagen, ob ein Ladevorgang von einem älteren Schreibvorgang abhängig ist
DE60036016T2 (de) Schnell multithreading für eng gekoppelte multiprozessoren
DE60025028T2 (de) Speicherpuffer, der daten, basierend auf index und freiwilliger weisebemusterung überträgt
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE112007000812B4 (de) Vorrichtung mit einer speichereinheit und drei logiken, verfahren zum durchführen der verfahrensschritte der vorrichtung undsystem mit einem speicher und einem prozessor zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren
DE69908193T2 (de) Ausführung von speicher- und ladeoperationen mittels einer linkdatei
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE112004002365T5 (de) Übergang vom Befehls-Cache-Speicher zum Ablaufverfolgungs-Cache-Speicher basierend auf Markengrenzen
DE112009000741B4 (de) Vektorbefehle zum Ermöglichen von effizienter Synchronisation und parallelen Reduktionsoperationen
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE102018213430A1 (de) Beschleuniger mit geringer Latenzzeit
DE112006003597T5 (de) Unbeschränkte Transaktionsspeichersysteme
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE112010003492T5 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
DE102005032949A1 (de) Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren
DE10296989T5 (de) Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms
DE69633474T2 (de) Adressierungsverfahren zur nicht-sequentiellen Ausführung von Ladebefehlen hinsichtlich Speicherungsbefehlen
DE102004013676A1 (de) Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer
DE112006003453T5 (de) Per-Satz-Relaxation der Cache-Inklusion
DE112017001825T5 (de) Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher
DE10297624T5 (de) Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 112004001248

Country of ref document: DE

Date of ref document: 20060810

Kind code of ref document: P

8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY

8328 Change in the person/name/address of the agent

Representative=s name: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER,

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee