DE19983793B4 - System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher - Google Patents

System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher Download PDF

Info

Publication number
DE19983793B4
DE19983793B4 DE19983793T DE19983793T DE19983793B4 DE 19983793 B4 DE19983793 B4 DE 19983793B4 DE 19983793 T DE19983793 T DE 19983793T DE 19983793 T DE19983793 T DE 19983793T DE 19983793 B4 DE19983793 B4 DE 19983793B4
Authority
DE
Germany
Prior art keywords
cache
memory
execution
eid
data
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
DE19983793T
Other languages
English (en)
Other versions
DE19983793T1 (de
Inventor
Zhong-ning Cai
Tosaku Nakanishi
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 DE19983793T1 publication Critical patent/DE19983793T1/de
Application granted granted Critical
Publication of DE19983793B4 publication Critical patent/DE19983793B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking

Abstract

System mit einem Prozessor (200), auf dem mehrere gleichzeitig aktive Ausführungsentitäten, beispielsweise Prozesse, Tasks oder Threads, ausgeführt werden können, einem mit dem Prozessor gekoppelten Speicher (206) und einem mit dem Prozessor gekoppelten Cache-Speicher (100; 202), wobei der Cache-Speicher (100; 202) mehrere Cache-Abschnitte (102–106) und einen Cache-Controller (108) aufweist, wobei jeder Cache-Abschnitt mehrere Cache-Speicherplatze aufweist, wobei jeder Cache-Abschnitt (102–106) so ausgebildet ist, dass er Informationen speichert, die zu Anforderungen aus jeweils einer zugehörigen Ausführungsentität der mehreren Ausführungsentitäten gehören, dadurch gekennzeichnet, dass jeder Ausführungsentität ein Ausführungsentitätsidentifizierer (EID) zugeordnet ist, dass in dem Speicher (206) mehrere Befehlsspeicherbereiche definiert sind, die jeweils zu einem Ausführungsentitätsidentifizierer (EID) gehören, so dass der Ausführungsentitätsidentifizierer (EID) anhand des Speicherbereichs, aus dem ein Befehl abgerufen wurde, bestimmt werden kann, und dass der Cache-Controller auf der Basis des Ausführungsentitätsidentifizierers (EID) beim Zugreifen auf den Cache-Speicher (100; 202) einen zugehörigen Cache-Abschnitt (102–106) auswählt.

Description

  • Die Erfindung betrifft ein System nach dem Oberbegriff des Anspruchs 1.
  • Ein solches System ist beispielsweise aus den Druckschriften EP 0 856 797 A1 oder GB 2 311 880 A bekannt. Ein Beispiel für einen Pufferspeicher ist ein Cache-Speicher, der zwischen einem Prozessor und einem (üblicherweise relativ großen und langsamen) Systemspeicher angeordnet ist, um die von dem Prozessor für das Abfragen von Informationen aus dem Systemspeicher benötigte effektive Zugriffszeit zu verringern. In manchen Systemen kann ein Mehr-Ebenen-Cache-System verwendet werden, um die Leistungsfähigkeit weiter zu verbessern. Ein primärer Cache (L1-Cache) kann in den Prozessor selbst integriert werden und ein externer sekundärer, üblicherweise größerer Cache (L2-Cache) ist mit dem Prozessor gekoppelt. Eine Cache-Speicher-Anordnung ist z. B. in dem US-Patent Nr. 4,928,239 beschrieben.
  • Ferner kann ein Cache-Speicher bei manchen herkömmlichen Speichersystemen eine separate Befehls-Cache-Einheit und eine separate Daten-Cache-Einheit enthalten, die eine zum Speichern von Befehlen und die andere zur Datenspeicherung. Während des Betriebs kann ein Prozessor Befehle vom Systemspeicher abrufen, um sie in der Befehls-Cache-Einheit zu speichern. Die von diesen Befehlen bearbeiteten Daten können in der Daten-Cache-Einheit gespeichert werden. Wenn von dem Prozessor angeforderte Informationen, beispielsweise Befehle oder Daten, bereits in dem Cache-Speicher gespeichert sind, dann spricht man davon, daß ein Cache-Speicher-Treffer aufgetreten ist. Ein Cache-Speicher-Treffer verringert die Zeit, die der Prozessor zum Zugreifen auf in dem Speicher gespeicherte Informationen benötigt, wodurch die Leistungsfähigkeit des Prozessors verbessert wird.
  • Wenn die von dem Prozessor benötigten Informationen nicht in dem Cache-Speicher gespeichert sind, dann spricht man davon, daß ein Cache-Fehlversuch aufgetreten ist. Wenn ein Cache-Fehlversuch auftritt, muß der Prozessor auf den Systemspeicher zugreifen, um die gewünschten Informationen abzurufen, wobei dies zu einer Leistungsverringerung bei der Zugriffszeit führt, während der Prozessor darauf wartet, daß der langsamere Systemspeicher die Anforderung beantwortet. Um die Anzahl der Cache-Fehlversuche zu verringern, wurden verschiedene Cache-Verwaltungsstrategien realisiert. Bspw. kann eines von mehreren Abbildungsschemata ausgewählt werden, bspw. ein direktes Abbildungsschema oder ein satz-assoziatives Cache-Abbildungsschema. Ein satz-assoziativer Cache-Speicher, welcher eine k-Wege-assoziative Abbildung (mapping) realisiert, z. B. eine 2-Wege-assoziative Abbildung, eine 4-Wege-assoziative Abbildung usw., ermöglicht im allgemeinen eine höhere Trefferquote als ein direkt abgebildeter Cache-Speicher. Ferner kann eine von verschiedenen Ersetzungsstrategien vorgesehen werden, um die Cache-Speicher-Trefferquote zu erhöhen, einschließlich einer FIFO-Strategie oder einer Am-längsten-unbenutzt(LRU)-Strategie. Ein weiteres konfigurierbares Merkmal eines Cache-Speichers ist die Cache-Speicher-Aktualisierungsstrategie, welche angibt, wie der Systemspeicher aktualisiert wird, wenn eine Schreiboperation den Inhalt des Cache-Speichers ändert. Zu den Aktualisierungsstrategien gehören eine Durchschreibstrategie und eine Rückschreibstrategie.
  • Üblicherweise kann ein System, wie z. B. ein Computer, mehrere Anwendungsprogramme und andere Softwareschichten enthalten, welche unterschiedliche Datenflußerfordernisse haben. Bspw. kann eine Programmausführungsentität, wie z. B. ein Prozeß, eine Task oder ein Thread, die einer Multimediaanwendung zugeordnet ist, große Blöcke von Daten (z. B. Videodaten) übertragen, die üblicherweise nicht wiederverwendet werden. Folglich kann das Zugreifen auf Daten dieser Art dazu führen, daß ein Cache mit großen Datenblöcken gefüllt wird, die wahrscheinlich nicht wieder verwendet werden.
  • Beim Füllen eines Cache-Speichers kann der Fall eintreten, daß die von einer Ausführungsentität verwendeten Daten von einer anderen Ausführungsentität verwendete Daten ersetzen, ein Phänomen, das als Daten-Cache-Verunreinigung (data cache pollution) bezeichnet wird. Eine von den Aktivitäten einer Ausführungsentität verursachte Daten-Cache-Verunreinigung kann die Wahrscheinlichkeit von Cache-Fehlversuchen für eine andere Ausführungsentität erhöhen und somit die Leistungsfähigkeit des Gesamtsystems verringern.
  • Somit wird eine Speicherarchitektur benötigt, welche die Speicherleistungsfähigkeit verbessern kann.
  • Diese Aufgabe wird erfindungsgemäß durch ein System mit den Merkmalen des Anspruchs 1 gelöst.
  • Vorteilhafte und bevorzugte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
  • 1 zeigt ein Blockschaltbild von Teilen eines Puffers oder eines Cache-Speichers mit mehreren Abschnitten gemäß einem Ausführungsbeispiel der Erfindung.
  • 2 zeigt ein Blockschaltbild eines Ausführungsbeispiels eines den Cache-Speicher gemäß 1 enthaltenden Systems.
  • 3 zeigt die Komponenten jedes Cache-Moduls in dem Cache-Speicher gemäß 1.
  • 4 zeigt ein Blockschaltbild eines Prozessors, der den Cache-Speicher gemäß 1 zusammen mit einer zugehörigen Steuerlogik enthält.
  • 5 zeigt ein Ablaufdiagramm einer in dem Prozessor gemäß 4 ausgeführten Befehlsausführungssequenz.
  • 6 zeigt ein Ablaufdiagramm eines Betriebssystems in dem System gemäß 2, welches den Cache-Speicher gemäß einem Ausführungsbeispiel aufbaut.
  • Detaillierte Beschreibung
  • In der folgenden Beschreibung sind zahlreiche Details angegeben, um ein besseres Verständnis der vorliegenden Erfindung zu ermöglichen. Jedoch ist für den Fachmann klar, daß die vorliegende Erfindung ohne diese Details realisiert werden kann und daß zahlreiche Abwandlungen oder Modifikationen der beschriebenen Ausführungsbeispiele möglich sind.
  • Einige Ausführungsbeispiele der Erfindung enthalten ein System mit einem Pufferspeicher, welcher in einer Ebene der Speicherhierarchie mehrere einzelne Pufferabschnitte enthält. Jeder Pufferabschnitt kann ein separates Puffermodul sein oder ein Teil eines Pufferspeichers, welcher separat adressierbar ist (d. h., der Speicher wird in verschiedene Adreßräume unterteilt). Die einzelnen Pufferabschnitte können getrennt konfigurierbar sein und können so zugewiesen werden, daß sie Informationen von verschiedenen Programmausführungsentitäten in dem System speichern. Ein derartiger Pufferspeicher kann als Mehr-Einheiten-Pufferspeicher bezeichnet werden.
  • Bei einigen Ausführungsbeispielen kann der Pufferspeicher einen Cache-Speicher enthalten, welcher in verschiedenen Anwendungen verwendet werden kann, z. B. in Prozessorsubsystemen, in Peripheriegerät-Steuereinrichtungen (wie in Video-Steuereinrichtungen, Festplattenlaufwerk-Steuereinrichtungen usw.) und in anderen Arten von Steuereinrichtungen. Zu den Systemen, welche derartige Cache-Speicher enhalten, können Mehrzweckcomputer oder Spezialcomputer, elektronische Hand-held-Einrichtungen (z. B. Telefone, Kalendersysteme, elektronische Spielvorrichtungen und dergleichen), Einrichtungen (appliances), Set-top-Boxen und andere elektronische Systeme gehören. Ein Cache-Speicher mit mehreren Cache-Abschnitten kann als Mehr-Einheiten-Cache-Speicher bezeichnet werden. Ein Cache-Speicher-Abschnitt kann ein separates Cache-Modul enthalten oder ein getrennt adressierbarer Teil des Cache-Speichers sein. Die folgenden beschriebenen Ausführungsbeispiele enthalten einen Computer mit einem Mehr-Einheiten-Cache-Speicher mit mehreren unabhängigen Cache-Modulen – es ist jedoch wichtig, daß andere Ausführungsbeispiele Computer enthalten können, die Mehr-Einheiten-Cache-Speicher mit anderen unabhängig konfigurierbaren Cache-Abschnitten aufweisen oder andere Systemarten mit Pufferspeichern.
  • Gemäß einigen Ausführungsbeispielen können die Attribute jedes einzelnen Cache-Moduls in einem Mehr-Einheiten-Cache-Speicher unabhängig konfiguriert werden. Zu derartigen Attributen können die Größe jedes Cache-Moduls, die Organisation (z. B. direkt abgebildet gegenüber Satz-assoziativer Abbildung), die Ersetzungsstrategie, die Aktualisierungsstrategie usw. zählen. Somit kann ein Cache-Modul beispielsweise als direkt abgebildeter Cache konfiguriert werden, und ein anderes Cache-Modul kann als k-Wege-Satz-assoziativer Cache konfiguriert werden. Die Cache-Module können ferner so konfiguriert werden, daß sie verschiedene Aktualisierungsstrategien haben, einschließlich einer Durchschreibstrategie oder einer Rückschreibstrategie. Andere Attribute können für die verschiedenen Cache-Module ebenfalls unterschiedlich eingestellt werden, wie im folgenden weiter unten beschrieben wird.
  • Einige Prozessoren können zur Verarbeitung Anforderungen von mehreren Ausführungsentitäten empfangen. Bei einem Prozessor kann es sich beispielsweise um einen Mehrzweckmikroprozessor oder einen Spezialmikroprozessor, um einen Mikrocontroller oder eine andere Art von Steuereinrichtung handeln, z. B. um Kundenwunschschaltkreise (ASICs), programmierbare Gatter-Arrays (PGAs) und dergleichen. Eine Programmausführungsentität gemäß einem Ausführungsbeispiel kann die Arbeitsgrundeinheit der in das System geladenen Software- und Firmwareschichten sein. Zu derartigen Arbeitsgrundeinheiten können Prozesse, Tasks, Threads oder andere Einheiten gehören, wie sie den verschiedenen Systemen entsprechend definierbar sind. Beispielsweise können bei manchen Betriebssystemen, wie bei bestimmten Windows®-Betriebssystemen der Microsoft Corporation, mehrere zu Prozessen gehörige Threads in dem System von dem Prozessor ausführbar sein, um verschiedene Operationen auszuführen. Ein anderes Betriebssystem, das die Möglichkeit des Multithreading oder des Multitasking bietet, ist das Be Operating System (BeOS) von BE, Inc., das in dem BE Operating System Product Data Sheet beschrieben ist, welches 1998 unter http://www.be.com veröffentlicht wurde.
  • Bei derartigen Betriebssystemen können mehrere Ausführungsentitäten, die zu verschiedenen Software und Firmwareschichten gehören, gleichzeitig aktiv sein. Anforderungen von diesen Ausführungsentitäten werden von dem Betriebssystem gemäß einem vorgegebenen Prioritätsprotokoll, z. B. umlaufend usw., geplant. Man bezeichnet derartige Betriebssysteme als Multitasking- bzw. Multithreading-Betriebssysteme. Um die Multitasking- bzw. Multithreading-Fähigkeiten eines Systems zu nutzen, können die unabhängigen Cache-Module eines Mehr-Einheiten-Cache-Speichers zur Speicherung von Informationen von zugehörigen Ausführungsentitäten zugewiesen werden. So können beispielsweise die Ausführungsentitäten einer Multimediaanwendung einem Cache-Modul zugewiesen werden, während die Ausführungsentitäten von anderen Anwendungen anderen Cache-Modulen des Mehr-Einheiten-Cache-Speichers zugewiesen werden können. Gemäß einem Ausführungsbeispiel können Anforderungen von jeder Ausführungsentität zu diesem Zweck unterschiedlichen Ausführungsentitätsidentifizierern (EIDs) zugewiesen werden. Somit können Anforderungen von Ausführungsentitäten einer ersten Anwendung einem EID zugewiesen werden, und Anforderungen von einer anderen Ausführungsentität können einem anderen EID zugewiesen werden. Folglich kann ein Cache-Modul gemäß diesem Ausführungsbeispiel für das allgemeine Datennutzungsverhalten einer zugewiesenen Anwendung konfiguriert werden. Bei einem anderen Ausführungsbeispiel können die von einer Software- oder Firmwareschicht erzeugten Ausführungsentitäten weiter aufgeteilt werden, so daß sie mehrere IDs haben. Beispielsweise kann eine Anwendung Ausführungsentitäten erzeugen, die Daten verschiedenen zeitlichen und räumlichen Lokalitätseigenschaften entsprechend verarbeiten. Beispielsweise kann die Wiederverwendung von Daten für einige Ausführungsentitäten wahrscheinlicher als für andere von der gleichen Anwendung erzeugte Ausführungsentitäten sein. Folglich kann es vorteilhaft sein, diese verschiedenen Ausführungsentitäten außerdem getrennt unterschiedlichen Cache-Modulen in dem Mehr-Einheiten-Cache-Speicher zuzuweisen. Folglich können bei einem alternativen Ausführungsbeispiel Anforderungen von verschiedenen Ausführungsentitäten einer Anwendung mehreren EIDs zugewiesen werden, so daß verschiedene Cache-Module verwendet werden können. Zusätzlich können Ausführungsentitäten von verschiedenen Anwendungen dem gleichen EID zugewiesen werden. Beispielsweise kann eine erste Ausführungsentität einer Multimediaanwendung dem EID 1 zugewiesen werden, während eine zweite Ausführungsentität der Multimediaanwendung dem EID 2 zugewiesen werden kann. In dem gleichen System können Ausführungsentitäten einer Spreadsheet-Anwendung, die ähnliche Datennutzungseigenschaften wie die zweite Ausführungsentität der Multimediaanwendung hat, ebenfalls dem EID 2 zugewiesen werden.
  • Bei anderen Ausführungsbeispielen können noch andere Schemata beim Zuweisen von EIDs an Anforderungen von Ausführungsentitäten realisiert werden. Anhand des zu einem Befehl gehörigen EIDs kann eine Cache-Steuereinrichtung für den Cache-Speicher verfolgen, welches Cache-Modul des Mehr-Einheiten-Cache-Speichers zum Speichern derjenigen Daten verwendet werden soll, auf die der Befehl zugreift. Folglich kann die Cache-Nutzung verbessert werden, da die einzelnen Cache-Module derart konfiguriert werden können, daß sie die Datennutzungseigenschaften der verschiedenen Ausführungsentitäten in dem System vorteilhaft berücksichtigen können. Beispielsweise wird eine Multimediaanwendung üblicherweise Anforderungen erzeugen, welche große Datenblöcke übertragen, die nicht wieder verwendet werden. Ein derartigen Anforderungen zugewiesenes Cache-Modul kann so konfiguriert werden, daß es die FIFO-Ersetzungsstrategie und die Durchschreibaktualisierungsstrategie realisiert. Anderen Anforderungstypen zugewiesene Cache-Module können andere Konfigurationen haben.
  • Wenn Ausführungsentitäten in einem System erzeugt werden, können diesen Ausführungsentitäten von einem Betriebssystem EID-Identifizierer zugewiesen werden. Es wird nun auf 6 Bezug genommen. Wenn eine neue Ausführungsentität erfaßt wird (bei 502), kann das Betriebssystem (bei 504) gemäß einem Ausführungsbeispiel auf Konfigurationsinformationen zugreifen, die während der Systeminitialisierung geladen wurden, um die Art der Zuweisung von EID-Identifizierern zu bestimmen. Das Betriebssystem weist der Ausführungsentität als nächstes (bei 506) den entsprechenden EID-Identifizierer für die Ausführungsentität zu. Beispielsweise kann das Betriebssystem in der Lage sein, drei EIDs zuzuweisen, die drei Cache-Modulen in einem Mehr-Einheiten-Cache-Speicher entsprechen. Ausführungsentitäten, die erste allgemeine Datennutzungseigenschaften haben, können einem ersten EID-Identifizierer zugewiesen werden, und Ausführungsentitäten, die zweite allgemeine Datennutzungseigenschaften haben, können einem zweiten EID-Identifizierer zugewiesen werden. Ein Standard-EID-Identifizierer kann denjenigen Ausführungsentitäten zugewiesen werden, die nicht speziell den beiden anderen EID-Identifizierern zugewiesen werden.
  • Zusätzlich weist das Betriebssystem auf der Basis der Konfigurationsinformationen (bei 508) bestimmte Attribute jedes Cache-Moduls in dem Mehr-Einheiten-Cache-Speicher zu. Zu diesen Attributen können die Aktualisierungs-, Ersetzungs- und Plazierungsstrategien gehören. Das Betriebssystem kann außerdem die Attribute für das Standard-Cache-Modul des Mehr-Einheiten-Cache-Speichers zuweisen. Bei alternativen Ausführungsbeispielen können die EID-Identifizierer und die Cache-Attribute wie oben beschrieben von einer Softwareschicht zugewiesen werden, die von dem Betriebssystem getrennt ist.
  • Bei einem Ausführungsbeispiel können Ausführungsentitäten einer Multimediaanwendung, welche große Datenmengen übertragen und die Daten üblicherweise nicht wieder verwenden, einem EID-Identifizierer zugewiesen werden, so daß diese Daten in einem ersten Cache-Modul gespeichert werden, das für die Cache-Datennutzungseigenschaften dieser Ausführungsentitäten konfiguriert ist. Ausführungsentitäten von rechenintensiven Anwendungen, wie Komprimierungsanwendungen, können einem anderen EID-Identifizierer zugewiesen, werden, so daß die Daten in einem anderen Cache-Modul gespeichert werden, welches für Cache-Datenoperationen konfiguriert ist, die durch eine erhöhte räumliche Lokalität gekennzeichnet sind.
  • Bei einigen Ausführungsbeispielen kann ein Mehr-Einheiten-Cache-Speicher mit mehreren Cache-Modulen in einem Mehr-Ebenen-Cache-Speicher mit mehreren Cache-Speicher-Ebenen (z. B. einem L1-Cache oder einem L2-Cache realisiert werden. Ein derartiger Cache-Speicher kann als Mehr-Einheiten-Cache-Speicher mit mehreren Ebenen bezeichnet werden, bei dem wenigstens eine Ebene einen Mehr-Einheiten-Cache-Speicher enthält. Dementsprechend kann ein Mehr-Einheiten-Cache-Speicher mit mehreren Ebenen, der zwei Ebenen hat, beispielsweise in der folgenden Weise aufgebaut sein: Die erste Ebene ist ein Mehr-Einheiten-Cache und die zweite Ebene ist ein konventioneller Cache; die erste Ebene ist ein Mehr-Einheiten-Cache und die zweite Ebene ist ein Mehr-Einheiten-Cache; oder die erste Ebene ist ein konventioneller Cache und die zweite Ebene ist ein Mehr-Einheiten-Cache.
  • Die einzelnen Cache-Module eines Mehr-Einheiten-Cache-Speichers können als P-Cache-Speicher bezeichnet werden. Beispielsweise kann ein Mehr-Einheiten-Cache-Speicher somit verschiedene P-Cache-Speicher enthalten, einschließlich eines P0-Cache-Speichers, eines P1-Cache-Speichers, eines P2-Cache-Speichers usw. Die verschiedenen P-Cache-Speicher können als separate Speicherelemente oder Speichermodule realisiert werden, z. B. als mehrere statische Direktzugriffsspeicher(SRAM)-Einrichtungen oder als mehrere dynamische Direktzugriffsspeicher(DRAM)-Einrichtungen. Alternativ können mehrere P-Cache-Speicher in einer Speichereinrichtung implementiert werden, welche in getrennte Abschnitte unterteilt ist, die den verschiedenen P-Cache-Speichern, entsprechen. Zusätzlich kann der Mehr-Einheiten-Cache-Speicher in eine andere Einrichtung integriert sein, z. B. in einen Prozessor oder in eine andere Steuereinrichtung in einem System. Alternativ kann der Mehr-Einheiten-Cache-Speicher eine eigenständige Einheit sein, auf die von Steuereinrichtungen zugegriffen werden kann, um Cachegespeicherte Daten abzurufen. Bei anderen Ausführungsbeispielen kann ein Teil des Mehr-Einheiten-Cache-Speichers in einer integrierten Einrichtung angeordnet sein, während ein anderer Teil des Mehr-Einheiten-Cache-Speichers in einer anderen Einrichtung angeordnet ist.
  • Bei einigen Ausführungsbeispielen der Erfindung kann jedes einzelne P-Cache-Modul in einem Mehr-Einheiten-Cache-System verschiedene Attribute haben, einschließlich der Cache-Größe und der Organisation und der Cache-Aktualisierungs-, -Plazierungs- und -Ersetzungsstrategien. Für jeden P-Cache kann eine Plazierungsstrategie angegeben werden, um festzulegen, wie Informationen in ungefüllte Bereiche des Cache-Speichers zu plazieren sind. Eine Cache-Ersetzungsstrategie wird angegeben, um das Ersetzen von in jedem P-Cache gespeicherten Informationen zu bewältigen. Beispiele für Ersetzungsstrategien sind die FIFO-Strategie, die Amlängsten-unbenutzt(LRU)-Strategie und andere Arten der Ersetzungsstrategie. Eine Cache-Aktualisierungsstrategie bewältigt die Aktualisierung von Informationen, wenn eine an den Cache gerichtete Schreiboperation auftritt; hierzu kann eine Durchschreibstrategie oder eine Rückschreibstrategie gehören.
  • Es wird nun auf 1 Bezug genommen. Ein Mehr-Einheiten-Cache-Speicher 100 gemäß einem Ausführungsbeispiel enthält verschiedene P-Cache-Speicher, die als P0-Cache 102, als P1-Cache 104 und als P2-Cache 106 dargestellt sind. Eine Cache-Steuereinrichtung 108 ist den P0-, P1- und P2-Cache-Speichern 102, 104 und 106 zugeordnet. Bei einem Ausführungsbeispiel können mit jedem Cache-Modul 102, 104 und 106 separate Adreß- und Datenbusse gekoppelt sein, so daß gleichzeitig auf die Cache-Module zugegriffen werden kann. Alternativ kann ein gemeinsamer Adreß- und Datenbus mit den Cache-Modulen gekoppelt sein. Die Cache-Steuereinrichtung 108 liefert für jedes der P-Cache-Module 102 bis 106 Steuersignale.
  • Die Cache-Steuereinrichtung 108 enthält Speicherelemente 118 in Form von Registern oder dergleichen, welche von dem Betriebssystem derart programmiert werden können, daß sie den zu jedem P-Cache-Speicher gehörenden EID-Identifizierer angeben. Beim Zugriff auf den Mehr-Einheiten-Cache-Speicher 100 wählt die Cache-Steuereinrichtung 108 einen der P-Cache-Speicher aus, und zwar auf der Basis eines Vergleiches zwischen dem von einer Anforderung zur Verfügung gestellten EID und der in den Speicherelementen 118 gespeicherten EID-Werten.
  • Die Cache-Steuereinrichtung 108 enthält ferner einen Ersetzungs- und Aktualisierungssteuerblock 120, um die Ersetzungs- und Aktualisierungsstrategien der drei verschiedenen Cache-Module so zu steuern, wie sie von in den Speicherelementen 118 programmierten Steuerinformationen festgelegt sind. So können die Speicherelemente 118 beispielsweise derart programmiert werden, daß sie für einen P-Cache eine FIFO-Ersetzungsstrategie und für einen anderen P-Cache eine LRU-Ersetzungsstrategie angeben.
  • Die Cache-Steuereinrichtung 108 kann ferner einen Tag-Vergleichs-Block 122 aufweisen, der das Tag einer eingehenden Anforderung mit dem in dem ausgewählten P-Cache oder den ausgewählten P-Cache-Speichern gespeicherten Tag vergleicht, um festzustellen, ob ein Cache-Treffer aufgetreten ist. Wenn eine Aktualisierung des Hauptspeichers 206 (2) erforderlich ist, speichert ein Rückschreibpuffer 124 ferner die Cache-Zeile eines der P-Cache-Speicher, um sie an den Hauptspeicher 206 oder an einen L2-Cache 204 (2) zu übertragen.
  • Zum Sicherstellen der Cache-Datenintegrität enthält die Cache-Steuereinrichtung 108 ferner einen Cache-Kohärenz-Block 126, der bestimmt, ob ein Platz eines Cache-Moduls, auf den zugegriffen wurde, gültig ist. Bei einem Ausführungsbeispiel kann jedes Cache-Modul ein Gültig/Ungültig-Bit speichern. Alternativ kann ein ausgeklügelteres Kohärenzprotokoll implementiert werden, wie z. B. das Modifiziert-, Exklusiv-, Geteilt(shared)- und Ungültig(invalid)-(MESI)Protokoll.
  • Zu den weiteren Steuersignalen, die der Cache-Steuereinrichtung 108 zur Verfügung gestellt werden können, können ein Cache-Sperr(disable)-(CD)-Signal und ein Cache-Flush(CF)-Signal gehören. Darüber hinaus können der Cache-Steuereinrichtung 108 andere Cache-bezogene Signale wie Snoop-Signale zur Verfügung gestellt werden.
  • Es wird nun auf 2 Bezug genommen. Das Mehr-Einheiten-Cache-System 100 kann an vielen verschiedenen Stellen in einem System 10 realisiert werden (z. B. in einem Prozessorsubsystem, in Brücken-Steuereinrichtungen, in Peripheriegerät-Steureinrichtungen, in Speicher-Steuereinrichtungen und dergleichen). Bei einem Ausführungsbeispiel enthält das System 10 einen Computer, obwohl das System 10 bei anderen Ausführungsbeispielen irgendeine andere elektronische Einrichtung sein kann, in der ein Cache-Speicher oder ein Pufferspeicher implementiert werden kann.
  • Das System 10 enthält eine zentrale Verarbeitungseinheit (CPU) 200, die einen Prozessor oder eine geeignete Steuereinrichtung enthalten kann und einen Cache-Speicher mit einer oder mehreren Ebenen hat. Wie dargestellt ist, kann die CPU 200 beispielsweise einen internen Cache-Speicher enthalten, bei dem es sich um einen primären (L1)-Cache 202 handelt. Zusätzlich kann die CPU 200 über einen Host-Bus 203 gekoppelt sein, um auf einen externen Cache zuzugreifen, welcher der sekundäre (L2)-Cache 204 ist. Der L1-Cache 202 kann eine Codekomponente (zum Speichern von Befehlen) und eine Datenkomponente (zur Datenspeicherung) enthalten. Ähnlich kann der L2-Cache 204 Code- und Datenkomponenten enthalten. Somit werden von dem Hauptspeicher 206 abgerufene Befehle und Daten in den Code- bzw. Datenkomponenten des L1- oder L2-Cache-Speichers 202 oder 204 gespeichert. Bei anderen Ausführungsbeispielen sind keine separaten Code- und Daten-Cache-Komponenten vorgesehen.
  • Bei einigen Ausführungsbeispielen kann der Mehr-Einheiten-Cache-Speicher 100 (1) in dem L1-Cache 202, dem L2-Cache 204 oder in beiden implementiert sein. Hier sei zur Erläuterung angenommen, daß der Mehr-Einheiten-Cache-Speicher 100 gemäß 1 in dem L1-Cache 202 realisiert ist, das ist der interne Cache der CPU 200. Wichtig ist jedoch, daß der beschriebene Mehr-Einheiten-Cache-Speicher oder Modifikationen eines solchen Cache-Speichers in dem L2-Cache 204 oder in anderen Steuereinrichtungen in dem System realisiert werden können, beispielsweise in einer Video-Steuereinrichtung oder in einer Festplattenlaufwerks-Steuereinrichtung. Zusätzlich bildet der Mehr-Einheiten-Cache-Speicher 100 bei diesem Ausführungsbeispiel die Daten-Cache-Komponente des L1-Cache-Speichers 202.
  • Der Hauptspeicher 206 wird von einer Speichersteuereinrichtung 207 in einem Speicher-Hub 208 gesteuert, der mit der CPU 200 über den Host-Bus 203 gekoppelt ist. Ferner kann der Speicher-Hub 208 eine Cache-Steuereinrichtung 205 enthalten, die mit dem L2-Cache 204 wirksam gekoppelt ist. Der Speicher-Hub 208 kann ferner eine Grafikschnittstelle 211 enthalten, die über eine Verbindung 209 mit einer Grafik-Steuereinrichtung 210 gekoppelt ist, welche wiederum mit einer Anzeige 212 gekoppelt ist. Die Grafikschnittstelle kann beispielsweise dem Accelerated Graphics Port (A. G. P.) Interface Specification, Revision 2.0, veröffentlicht im Mai 1998, entsprechen.
  • Der Speicher-Hub 208 kann ferner mit einem Eingabe/Ausgabe(I/O)-Hub 214 gekoppelt sein, der Brückensteuereinrichtungen 215 und 223 enthält, die mit einem Systembus 216 bzw. mit einem sekundären Bus 224 gekoppelt sind. Der Systembus kann beispielsweise ein Peripheriekomponenten(PCI)-Bus sein, wie er in der PCI Local Bus Specification, Production Version, Revision 2.1, veröffentlicht im Juni 1995, definiert ist. Der Systembus 216 kann mit einer Speichersteuereinrichtung 218 gekoppelt sein, die den Zugriff auf eine oder mehrere Massenspeichereinrichtungen 220 steuert, beispielsweise ein Festplattenlaufwerk, ein CD-Laufwerk oder ein DVD-Laufwerk. Bei einem alternativen Ausführungsbeispiel kann die Speichersteuereinrichtung 218 in den I/O-Hub 214 integriert sein, sowie andere Steuerfunktionen. Der Systembus 216 kann ferner mit anderen Komponenten gekoppelt sein, wie beispielsweise mit einer Netzwerksteuereinrichtung 222, die mit einem (nicht gezeigten) Netzwerkport gekoppelt ist.
  • Über den sekundären Bus 224 können zusätzliche Einrichtungen gekoppelt werden, wie ein nicht-flüchtiger Speicher 228, der Einschaltroutinen, wie BIOS-Routinen, speichern kann. Der sekundäre Bus 224 kann ferner Ports zur Koppelung mit Peripherieeinrichtungen enthalten. Obwohl in der Beschreibung auf spezielle Konfigurationen und Architekturen der verschiedenen Schichten des Systems 10 Bezug genommen wird, sollte klar sein, daß zahlreiche Abwandlungen und Modifikationen der beschriebenen und dargestellten Ausführungsbeispielen möglich sind. Beispielsweise können statt des Speicher- und I/O-Hubs eine Host-Brücken-Steuereinrichtung und eine System-Brücken-Steuereinrichtung gleichwertige Funktionen ermöglichen, wobei die Host-Brücken-Steuereinrichtung zwischen der CPU 100 und dem Systembus 216 angeordnet wird und die System-Brücken-Steuereinrichtung 224 zwischen dem Systembus 216 und dem sekundären Bus 224 angeordnet wird. Zusätzlich kann eine beliebige Anzahl von Busprotokollen implementiert werden.
  • Zahlreiche verschiedene Programmausführungsentitäten sind von der CPU 200 in dem System 10 ausführbar. Wie dargestellt ist, werden gemäß einem Ausführungsbeispiel mehrere Prozesse 252, 254 und 256 unter einem Betriebssystem 250, welches beispielsweise ein Windows®-Betriebssystem sein kann, geladen. Jeder Prozeß kann eine oder mehrere Ausführungsentitäten erzeugen, welche die Arbeitsgrundeinheiten in dem System bilden. Bei einem Beispiel können die Ausführungsentitäten Threads sein; wie in 2 dargestellt ist, kann der Prozeß 252 die Threads 258 und 260 enthalten, der Prozeß 254 kann einen Thread 262 enthalten und der Prozeß 256 kann die Threads 264 und 266 enthalten.
  • Verschiedene (beispielsweise aus Modulen, Routinen oder anderen Schichten bestehende) Software oder Firmware, z. B. Anwendungen, Betriebssystemmodule oder Routinen, Gerätetreiber, BIOS-Module oder Routinen und Interrupt-Behandler, können in einem oder mehreren Speichermedien in dem System gespeichert werden oder auf andere Weise faßbar verkörpert sein. Zu den Speichermedien, die für eine faßbare Verkörperung von Software- und Firmware-Befehlen geeignet sind, können verschiedene Speicherformen gehören, einschließlich Halbleiterspeichereinrichtungen, wie dynamische oder statische Direktzugriffsspeicher, löschbare und programmierbare Nur-Lese-Speicher (EPROMs), elektrisch löschbare und programmierbare Nur-Lese-Speicher (EEPROMs) und Flash-Speicher; Magnetplatten wie Festplatten, Disketten und Wechselplatten; andere Magnetmedien, einschließlich Bänder; und optische Medien wie CD- oder DVD-Platten. Die in dem Speichermedium gespeicherten Befehle veranlassen das System 10 bei ihrer Ausführung, programmierte Aktionen auszuführen.
  • Die Software oder Firmware kann auf eine beliebige von vielen verschiedenen Weisen in das System 10 geladen werden. Beispielsweise können Befehle oder andere Codesegmente, die auf einem Speichermedium gespeichert sind oder über eine Netzwerkschnittstellenkarte, ein Modem oder einen anderen Schnittstellenmechanismus transportiert werden, in das System 10 geladen und zur Ausführung von programmierten Aktionen ausgeführt werden. Beim Laden oder beim Transportprozeß können Datensignale, die in Form von Trägerwellen vorliegen (die über Telefonleitungen, Netzwerkleitungen, drahtlose Verbindungen, Kabel und dergleichen übertragen werden) die Befehle oder Codesegmente an das System 10 übermitteln.
  • Die Ausführungsentitäten (in diesem Fall Threads) können verschiedene Operationen ausführen. Beispielsweise kann ein Spreadsheet-Prozeß einen ersten Thread erzeugen, um Rechnungen an von einem Benutzer eingegebenen Einträgen auszuführen, und einen zweiten Thread, um die berechneten Daten in den Hauptspeicher 206 zu übertragen. Jeder Thread oder jede Ausführungsentität kann Anforderungen erzeugen, welche als Befehle im Hauptspeicher 206 gespeichert werden. Diese Befehle werden von der CPU 200 zur Ausführung vom Hauptspeicher 206 abgerufen.
  • Erfindungsgemäß wird jeder in dem System 10 ablaufenden Ausführungsentität ein Ausführungsentitäts (execution entity)-Identifizierer (EID) zugeordnet. Der EID jeder Ausführungsentität kann von dem Betriebssystem zugewiesen werden. Wenn ein Einplaner bzw. Scheduler 270 den Ablauf von Anforderungen von den Ausführungsentitäten zur Verarbeitung durch die CPU 200 steuert, könnte der zugehörige EID jeder Ausführungsentität zusammen mit einem oder mehreren entsprechenden Befehlen gespeichert werden. Dabei ruft die CPU 200 die zugehörigen EIDs zusammen mit den Befehlen ab.
  • Erfindungsgemäß werden die EIDs im Speicher 206 jedoch nicht zusammen mit Befehlen gespeichert. Statt dessen werden in dem Speicher 206 mehrere den verschiedenen EIDs entsprechende Befehlsspeicherbereiche definiert. Zu einer Anforderung von einer Ausführungsentität mit einem ersten EID gehörende Befehle können in einem ersten Befehlsspeicherbereich gespeichert werden; zu einer Anforderung von einer Ausführungsentität mit einem zweiten EID gehörende Befehle können in einem zweiten Befehlsspeicherbereich gespeichert werden; usw. Dabei ruft die CPU 200 Befehle vom Speicher 206 ohne zugehörige EIDs ab. Jedoch kann die CPU 200 anhand des Befehlsspeicherbereichs, von dem der Befehl abgerufen wird, den EID des Befehls bestimmen.
  • Wenn die EIDs nicht zusammen mit Befehlen gespeichert werden, kann die CPU 200 mehreren verschiedenen Threads zugewiesene Mikrosequenzen enthalten. Somit kann ein Mikrosequenzer die zu einem Thread gehörenden Befehle abrufen und ein anderer Mikrosequenzer die zu einem anderen Thread gehörenden Befehle usw. Jeder Mikrosequenzer kann so konfiguriert werden, daß er die Plätze von Befehlen der zugehörigen Ausführungsentitäten kennt. Bei diesem Ausführungsbeispiel kann der EID eines Befehls anhand des Mikrosequenzers bestimmt werden, der den Befehl abgerufen hat. Der vorgegebene Befehl kann dann innerhalb der CPU gespeichert werden.
  • Der abgerufene oder ermittelte EID wird dann von der Cache-Steuereinrichtung 108 oder von einer anderen geeigneten Decodiereinrichtung decodiert, um den zu verwendenden P-Cache zu kennzeichnen, wenn der Befehl einen Zugriff auf Daten anfordert. Die Cache-Steuereinrichtung 108 greift auf einen der P-Cache-Speicher zu, um von dem zugehörigen Befehl verarbeitete Daten abzurufen oder zu speichern. Bei der beispielhaften Konfiguration gemäß 1 können zu Befehlen mit EID 0 gehörende Daten indem P0-Cache 102, zu Befehlen mit EID 1 gehörende Daten in dem P1-Cache 104 und zu Befehlen mit EID 2 gehörende Daten in dem P2-Cache 106 gespeichert werden. Bei manchen Ausführungsbeispielen kann ein P-Cache zu mehreren EID gehören. Ferner können Ausführungsentitäten von verschiedenen Anwendungs- und Softwareschichten dem gleichen EID zugewiesen werden.
  • Es wird nun auf 3 Bezug genommen, in der die allgemeine Architektur eines P-Cache-Speichers dargestellt ist. Bei dem in 3 dargestellten Beispiel ist ein 4-Wege-Satz-assoziativer Cache dargestellt. Andere Konfigurationen sind ebenfalls möglich, einschließlich eines direkt abgebildeten Cache-Speichers oder anderer k-Wege-Satz-assoziativer Cache-Speicher. Jeder P-Cache kann ein Status-Array 160, ein Tag-Array 162 und ein Daten-Array 164 enthalten. Wie dargestellt ist, sind das Status-Array 160, das Tag-Array 162 und das Daten-Array 164 für die 4-Wege-Satz-assoziative Organisation jeweils in vier verschiedene Abschnitte unterteilt.
  • Das Status-Array 160 kann eines oder mehrere der folgenden Felder enthalten: Einen EID-Identifizierer; Ersetzungsauswahlbits (replacement selection bits – RPS), die von dem Ersetzungs- und Aktualisierungssteuerblock 120 zum Ersetzen einer Cache-Zeile verwendet werden; und Cache-Kohärenz-Protokollbits. Beispielsweise kann jeder Block des P-Cache-Moduls mit einem Gültig/Ungültig-Bit verbunden sein, das anzeigt, ob der zugehörige Cache-Speicherplatz gültig oder ungültig ist. Alternativ kann das Status-Array 160 MESI-Bits speichern. Die Ersetzungsauswahlbits RPS können verwendet werden, um anzuzeigen, welche Cache-Zeile ersetzt werden soll. Die RPS-Bits können beispielsweise zum Verfolgen der am längsten unbenutzten Cache-Zeile (für die LRU-Ersetzung) oder der als erstes eingegebenen Zeile (für die FIFO-Ersetzung) verwendet werden.
  • Die Cache-Steuereinrichtung 108 kann als integrierte Einheit oder mit Hilfe von verschiedenen separaten Steuereinheiten implementiert werden. Wie erörtert wurde, wird beim Abruf eines Befehls für die Ausführung der zu dem Befehl gehörende EID wiedergewonnen. Auf der Basis des EID-Wertes wird das richtige P-Cache-Modul ausgewählt, um Daten wiederzugewinnen oder Daten hineinzuschreiben. Je nachdem, ob eine gültige Kopie der zugehörigen Daten in dem ausgewählten P-Cache-Modul gespeichert ist, kann mit einem Treffer oder mit einem Fehlversuch geantwortet werden.
  • Ein Mehr-Einheiten-Cache-System mit unabhängig voneinander konfigurierbaren Cache-Modulen gemäß einigen Ausführungsbeispielen kann einen oder mehrere der folgenden Vorteile haben. Es kann eine größere Cache-Management-Flexibilität erreicht werden, da die Plazierungs-, Ersetzungs- und Aktualisierungsstrategie und die Cache-Größe und die Organisation jedes der P-Cache-Module so eingestellt werden können, daß die Cache-Nutzung für die entsprechenden Ausführungsentitäten verbessert wird. Die Leistungsfähigkeit des Cache-Speichers kann dadurch erhöht werden, daß die Cache-Module so konfiguriert werden, daß sie die verschiedenen Cache-Nutzungseigenschaften (hinsichtlich der Daten- oder Befehlsspeicherung) der verschiedenen Ausführungsentitäten vorteilhaft nutzen. Die Daten-Cache-Verunreinigung durch die verschiedenen aktiven Ausführungsentitäten in dem System 10 kann verringert werden, wobei dies die Cache-Trefferquote verbessern kann. Ferner bietet das Mehr-Einheiten-Daten-Cache-System eine große Zugriffsbandbreite, in dem es die Parallelität für einen Multithreading- oder Multitasking-Prozessor erhöht, da auf die P-Cache-Module gleichzeitig zugegriffen werden kann. Derartige gleichzeitige Zugriffe auf einen Daten-Cache-Speicher können dazu beitragen, die Daten-Cache-Latenzzeit zu verringern und die Datenzugriffsbandbreitenanforderungen von Hochleistungsprozessoren zu erfüllen.
  • Bei einem anderen Ausführungsbeispiel können Compiler für verschiedene Anwendungsprogramme die Attribute des Mehr-Einheiten-Cache-Speichers dynamisch neukonfigurieren, um die Leistungsfähigkeit des Cache-Speichers weiter zu erhöhen. Beispielsweise können während des Betriebs zu den verschiedenen Ausführungsentitäten gehörende statistische Informationen gesammelt und gespeichert werden. Die Attribute jedes P-Cache-Moduls können in Abhängigkeit von den gesammelten statistischen Informationen verändert werden. Wenn beispielsweise festgestellt wird, daß die FIFO-Ersetzungsstrategie für ein bestimmtes P-Cache-Modul nicht effizient ist, kann der Cache-Steuereinrichtung 108 mitgeteilt werden, daß sie die Ersetzungsstrategie in die LRU-Strategie, oder eine andere Ersetzungsstrategie ändern soll. Dieses alternative Ausführungsbeispiel bietet die Flexibilität, daß die Konfiguration von einzelnen P-Cache-Modulen in Abhängigkeit von der Art der Ausführung der Ausführungsentitäten in dem System 10 dynamisch geändert werden kann.
  • Es wird nun auf 4 Bezug genommen. Bei einem Ausführungsbeispiel enthält die CPU 200 den Mehr-Einheiten-L1-Cache-Speicher 202 und eine zugehörige Logik. Der Mehr-Einheiten-L1-Cache-Speicher enthält drei Daten-Cache-Module: den P0-Cache 102, den P1-Cache 104 und den P2-Cache 106. Der P0-Cache 102 kann als Standard-Daten-Cache bezeichnet werden, welcher zur Speicherung von Daten verwendet wird, die zu Ausführungsentitäten gehören, welche nicht speziell einem der anderen P-Speicher in dem L1-Cache zugewiesen wurden. Beispielsweise kann solchen Ausführungsentitäten von dem Betriebssystem eine Standard EID-0 zugewiesen werden. Die P1- und P2-Cache-Speicher 104 und 106 können zur Speicherung von Daten für Anforderungen von Ausführungsentitäten mit EID 1 bzw. 2 zugewiesen werden. Bei einem anderen Ausführungsbeispiel kann der P0-Cache ein größerer Speicher als der P1- und der P2-Cache sein, da es der Standard-Daten-Cache ist.
  • Andere gemäß einer beispielhaften Konfiguration enthaltende Komponenten der CPU 200 sind in 4 dargestellt. Eine Busvordereinheit (BFU-bus front unit) 404 bildet die Schnittstelle zur Vorderseite oder zum Host-Bus 203. Die BFU 404 kann Adreßtreiber und -empfänger, Schreibpuffer, Daten-bus-Sender-Empfänger, eine Bus-Master-Steuerung und eine Paritätserzeugung und -steuerung enthalten.
  • Im folgenden wird zunächst der Befehlspfad beschrieben. Von der BFU 404 von dem Hauptspeicher 206 oder von dem L2-Cache 204 abgerufene Befehle können in einem Befehls-Cache 406 gespeichert werden, der Teil des L1-Cache-Speicher 206 ist. Der interne Befehls-Cache 406 kann Kopien der am häufigsten verwendeten Befehle enthalten. Gemäß einigen Ausführungsbeispielen werden Befehle entweder von dem Hauptspeicher 206 oder von dem L2-Cache 204 abgerufen und in dem Befehls-Cache 406 gespeichert. Eine Einheit 408 mit einem Befehlspuffer und einer Decodierlogik decodiert einen ausgewählten Befehl von dem Befehls-Cache 406 und erzeugt eine oder mehrere Mikro-Operationen zusammen mit den zugehörigen EIDs.
  • Erfindungsgemäß werden die Befehle den verschiedenen EIDs entsprechend in verschiedenen Befehlsspeicherbereichen des Speichers 206 gespeichert. Jedoch werden die EIDs nicht zusammen mit den Befehlen gespeichert. Wenn die CPU 200 einen Befehl abruft, wird der zugehörige EID nicht abgerufen. Statt dessen bestimmt die CPU 200 den EID des abgerufenen Befehls auf der Basis des Adreßspeicherplatzes, an dem der Befehl gespeichert ist. Dies kann beispielsweise von der Decodierlogik 408 ausgeführt werden. Somit wird der EID eines Befehls auf der Basis des Befehlsspeicherbereiches, aus dem der Befehl abgerufen wird, bestimmt. Sobald der EID von der CPU 200 bestimmt wurde, kann er an die Mikrooperationen angegliedert werden und in der Befehlswarteschlange 412 gespeichert werden.
  • Bei einem weiteren Ausführungsbeispiel, bei dem EIDs nicht zusammen mit Befehlen im Speicher gespeichert werden, können mehrere Programmzähler und Mikrosequenzer in die CPU 200 integriert sein, welche entsprechenden Threads zugewiesen sind. Dieses Ausführungsbeispiel wird weiter unten beschrieben.
  • Der Ausgangsport der Befehlspuffer- und Dekodierlogik 408 kann mit einer Befehlswarteschlange 412 gekoppelt sein, welche die Mikrooperationen zusammen mit zugehörigen EIDs speichert. Der Ausgangsport der Befehlswarteschlange 412 wird an einen Sequenzer 414 geleitet. Der Sequenzer 414 kann mehrere den verschiedenen EIDs entsprechende Mikrosequenzereinheiten 430, 432 und 434 enthalten. Die Mikrosequenzereinheit 430 kann beispielsweise so konfiguriert werden, daß sie zu dem EID 0 gehörende Mikrooperationen verarbeitet, der Mikrosequenzer 432 kann so konfiguriert werden, daß er zu dem EID 1 gehörende Mikrooperationen verarbeitet, und der Mikrosequenzer 434 kann so konfiguriert werden, daß er zu dem EID 2 gehörende Mikrooperationen verarbeitet. Die von den Mikrosequenzern 430, 432 und 434 verarbeiteten Mikrooperationen werden von der Befehlswarteschlange 412 empfangen. Gemäß einem Ausführungsbeispiel können die Mikrosequenzer 430, 432 und 434 gleichzeitig operieren, um zu verschiedenen EIDs gehörende Mikrooperationen zu verarbeiten. Die Operation der Mikrosequenzer 430, 432 und 434 wird von einer Steuerlogik 436 in dem Sequenzer 414 gesteuert.
  • Eine Ausführungsentität enthält üblicherweise eine Anzahl von Befehlen, die gemäß einer Programmreihenfolge ausgeführt werden. Standardmäßig werden Befehlsadressen einfach erhöht, um den nächsten Befehl abzurufen. Tritt ein Sprung oder eine bedingte Verzweigung auf, dann ist eine Zieladresse als Adresse des nächsten Befehls angegeben. Auf diese weise ist die Adresse des Speicherplatzes bekannt, an dem der nächste Befehl gespeichert ist. Ein Programmzähler kann zum Verfolgen der Programmreihenfolge der Befehle verwendet werden. Ein Mikrosequenzer arbeitet mit dem Programmzähler zusammen, um die Befehle auszuführen. Der Mikrosequenzer kann zum Abrufen eines Befehls eine beispielsweise in der BFU 404 angeordnete Abrufeinheit damit beauftragen, einen Befehl mit einer in dem Programmzähler gespeicherten Adresse abzurufen. Auf diese Weise können abgerufene Befehle als zu einer Ausführungsentität gehörend identifiziert werden, da der Mikrosequenzer die Adresse des nächsten Befehls bereits (von dem Programmzähler) kennt.
  • Somit können für ein System mit verschiedenen Threads beispielsweise zwei oder mehr unabhängige Programmzähler verwendet werden. Beispielsweise können drei Programmzähler PC0, PC1 und PC2 zu den Mikrosequenzern 430, 432 bzw. 434 gehören. Das Betriebssystem kann die Anfangszustände der Programmzähler PC0, PC1 und PC2 laden, so daß die Programmzähler zu den verschiedenen Threads gehörende Befehle abrufen können. Der PC0 verfolgt zusammen mit dem Mikrosequenzer 430 die Programmsequenz für einen ersten Thread, der PC1 verfolgt zusammen mit dem Mikrosequenzer 432 die Programmsequenz für einen zweiten Thread usw. Wenn ein Befehl abgerufen wird, auf den vom PC0 gezeigt wird, weiß die CPU 200, daß der Befehl zu einem ersten Thread beispielsweise mit dem EID 0 gehört. Der EID wird dann in der CPU 200 an den Befehl angegliedert und an später decodierte Mikrooperationen, welche zur Ausführung durch den Mikrosequenzer 430, 432 oder 434 in dem Sequenzer 414 in der Befehlswarteschlange 412 gespeichert werden.
  • Wie in 4 dargestellt ist, wird der Ausgangsport des Sequenzers 414 einem Pipeline-Back-end-Block 415 zur Verfügung gestellt, welcher verschiedene Funktionseinheiten enthält, beispielsweise eine Frühverzweigungsausführungseinheit (early branch execution unit-BR) 416, eine schnelle Dekodiereinheit (fast decoder unit-FD) 418, eine arithmetische Logikeinheit (ALU-arithmetic/logic unit) 420 und eine Adreßgeneratoreinheit (AGU) 422. während der Ausführung einer oder mehrerer Mikrooperationen durch den Sequenzer 414 kann auf diese Funktionseinheiten zur Ausführung angeforderter Funktionen zugegriffen werden.
  • Der Pipeline-Back-end-Block 415 enthält außerdem Registersätze 424, 426 und 428. Die Registersätze 424, 426 und 428 in der CPU 200 entsprechen den drei EID-Gruppen EID 0, EID 1 und EID 2. Die Registersätze 424, 426 und 428 können jeweils Steuerregister, Statusregister, Flag-Register und Mehrzweckregister enthalten. während des Betriebs werden die Registersätze 424, 426 und 428 von den Funktionseinheiten in dem Pipeline-Back-end-Block 415 aktualisiert. Gemäß einem Ausführungsbeispiel kann auf die Registersätze 424, 426 und 428 ferner unabhängig und gleichzeitig zugegriffen werden.
  • Bei dem dargestellten Ausführungsbeispiel können zu verschiedenen EIDs gehörende Anforderungen gleichzeitig verarbeitet werden, wenn es keine Abhängigkeiten zwischen den Anforderungen gibt und die verschiedenen Anforderungen außerdem nicht die gleichen Funktionseinheiten 416, 418, 420 und 422 verwenden müssen. Bei einer gleichzeitigen Operation der Mikrosequenzer 430, 432 und 434 kann auf die Registersätze 424, 426 und 428 sowie auf die Cache-Module in dem Mehr-Einheiten-Cache-Speicher gleichzeitig zugegriffen werden und diese gleichzeitig aktualisiert werden.
  • In dem Datenpfad der CPU 200 speichern ein Speicherpuffer 450 (für Schreiboperationen) und ein Ladepuffer 452 (für Leseoperationen) Daten, die von der BFU 404 abgerufen werden oder für diese bestimmt sind. Der Speicherpuffer 450 und der Ladepuffer 452 sind mit einem internen Datenbus 454 gekoppelt, der mit verschiedenen Einheiten gekoppelt ist, einschließlich des P0-Cache-Speichers 102, des P1-Cache-Speichers 104, des P2-Cache-Speichers 106, des Pipeline-Back-end-Blockes 415 und eines assoziativen Übersetzungspufferspeichers (TLB – translation look aside buffer) 456.
  • Adressen von Befehlen in dem Befehls-Cache 406 werden an den TLB 456 geliefert, bei dem es sich im wesentlichen um einen Hochgeschwindigkeitsspeicher in der CPU 200 handelt, der die virtuelle Adresse von dem Befehls-Cache 406 in eine physikalische Adresse übersetzt, die den Zugriff auf die Daten-Cache-Module 102, 104 und 106 ermöglicht.
  • Da der Mehr-Einheiten-Daten-Cache verfügbar ist, kann die Steuerlogik 436 in dem Mikrocodesequenzer 440 einen geeigneten Befehl zur Verarbeitung durch einen der Mikrosequenzer 430, 432 oder 434 aussuchen. Wenn ein Datenzugriff benötigt wird, können die Mikrosequenzer 430, 432 und 434 gleichzeitig auf die verschiedenen Module in dem Mehr-Einheiten-Daten-Cache zugreifen.
  • Somit können zur Verbesserung der Systemleistung mehrere Befehle in der CPU 200 ausgeführt werden, die gleichzeitig auf Daten in dem L1-Mehr-Einheiten-Cache 202 zugreifen können.
  • Bei manchen Ausführungsbeispielen kann sich die Steuerlogik 436 des Sequenzers 414 auch mit eventuellen Lade-/Speicher-Ordnungsvorgängen, mit dem Neufüllen des Cache-Speichers mit ausstehenden Daten und anderen Dingen befassen. Beispielsweise können bei einem Ausführungsbeispiel zu einer Anforderung mit einer hohen Trefferquote gehörende Befehle als erstes eingeplant werden, genauso wie Befehle einer Ausführungsentität mit Echtzeitzwang (real time constrained execution entity), die eine hohe Priorität haben.
  • Es wird nun auf 5 Bezug genommen, in der der allgemeine Ablauf einer Befehlsausführungssequenz gemäß einem Ausführungsbeispiel dargestellt ist. Befehle werden von der CPU 200 über den Host-Bus 203 vom Hauptspeicher 206 oder vom L2-Cache 204 abgerufen (bei 302). Bei einem Ausführungsbeispiel werden mit den Befehlen zugehörige EIDs abgerufen. Bei einem anderen Ausführungsbeispiel werden die zugehörigen EIDs nicht gespeichert und folglich nicht abgerufen. Von der Decodierstufe 408 werden die abgerufenen Befehle dann in interne Mikrooperationen übersetzt (bei 304), wobei jeder Mikrooperation ein entsprechender EID angegliedert wird. Der EID kann derjenige sein, der mit dem Befehl abgerufen wurde, oder er kann von der CPU 200 anhand des Adreßspeicherplatzes des Befehls bestimmt werden oder anhand desjenigen Mikrosequenzers, von dem der Befehl abgerufen wurde. Als nächstes wird die übersetzte Mikrooperation in der Befehlswarteschlange 412 gespeichert (bei 306). Dann wird die Mikrooperation zur Ausführung an einen der Mikrosequenzer 430, 432 und 434 geliefert (bei 308). Die Ausführung einer Mikrooperation kann dazu führen, daß eine Daten-Cache-Zugriffsanforderung durchgeführt wird (bei 310). In diesem Fall wird auf das entsprechende P-Cache-Modul auf der Basis des angegliederten EIDs zugegriffen. Der EID wird von der Cache-Steuereinrichtung 108 decodiert und eine geeignete Anforderung wird an einen entsprechenden P-Cache (102, 104 oder 106) gesendet. Die Datenzugriffsanforderung wird dann in dem zugewiesenen P-Cache abgeschlossen (bei 312).
  • Während die beschriebenen Ausführungsbeispiele einen Mehr-Einheiten-Cache-Speicher zur Datenspeicherung enthalten, ist es klar, daß der Mehr-Einheiten-Cache-Speicher bei anderen Ausführungsbeispielen zur Speicherung von Befehlen von verschiedenen Ausführungsentitäten geeignet sein kann. Bei solchen Ausführungsbeispielen enthalten die in dem Mehr-Einheiten-Cache-Speicher gespeicherten Informationen die Befehle selbst.

Claims (4)

  1. System mit einem Prozessor (200), auf dem mehrere gleichzeitig aktive Ausführungsentitäten, beispielsweise Prozesse, Tasks oder Threads, ausgeführt werden können, einem mit dem Prozessor gekoppelten Speicher (206) und einem mit dem Prozessor gekoppelten Cache-Speicher (100; 202), wobei der Cache-Speicher (100; 202) mehrere Cache-Abschnitte (102106) und einen Cache-Controller (108) aufweist, wobei jeder Cache-Abschnitt mehrere Cache-Speicherplatze aufweist, wobei jeder Cache-Abschnitt (102106) so ausgebildet ist, dass er Informationen speichert, die zu Anforderungen aus jeweils einer zugehörigen Ausführungsentität der mehreren Ausführungsentitäten gehören, dadurch gekennzeichnet, dass jeder Ausführungsentität ein Ausführungsentitätsidentifizierer (EID) zugeordnet ist, dass in dem Speicher (206) mehrere Befehlsspeicherbereiche definiert sind, die jeweils zu einem Ausführungsentitätsidentifizierer (EID) gehören, so dass der Ausführungsentitätsidentifizierer (EID) anhand des Speicherbereichs, aus dem ein Befehl abgerufen wurde, bestimmt werden kann, und dass der Cache-Controller auf der Basis des Ausführungsentitätsidentifizierers (EID) beim Zugreifen auf den Cache-Speicher (100; 202) einen zugehörigen Cache-Abschnitt (102106) auswählt.
  2. System nach Anspruch 1, dadurch gekennzeichnet, daß die Cache-Abschnitte so konfigurierbar sind, daß sie eine verschiedene Cache-Zeilen-Ersetzungsstrategie, Cache-Aktualisierungsstrategie und/oder Cache-Organisation haben.
  3. System nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß der Cache-Speicher ein Mehr-Ebenen-Cache-Speicher ist, bei dem wenigstens eine Ebene einen Mehr-Einheiten-Cache-Speicher mit mehreren Cache-Abschnitten enthält.
  4. System nach Anspruch 1, dadurch gekennzeichnet, daß jeder Cache-Abschnitt auf der Basis der jeweiligen zeitlichen und räumlichen Lokalitätseigenschaften, mit denen die Ausführungsentitäten Daten verarbeiten konfiguriert ist.
DE19983793T 1998-12-08 1999-09-22 System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher Expired - Fee Related DE19983793B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/207,278 US6349363B2 (en) 1998-12-08 1998-12-08 Multi-section cache with different attributes for each section
US09/207,278 1998-12-08
PCT/US1999/021249 WO2000034870A1 (en) 1998-12-08 1999-09-22 Buffer memory management in a system having multiple execution entities

Publications (2)

Publication Number Publication Date
DE19983793T1 DE19983793T1 (de) 2001-11-29
DE19983793B4 true DE19983793B4 (de) 2013-02-07

Family

ID=22769873

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19983793T Expired - Fee Related DE19983793B4 (de) 1998-12-08 1999-09-22 System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher

Country Status (7)

Country Link
US (2) US6349363B2 (de)
CN (1) CN1179276C (de)
AU (1) AU6497199A (de)
DE (1) DE19983793B4 (de)
GB (1) GB2359163B (de)
HK (1) HK1036662A1 (de)
WO (1) WO2000034870A1 (de)

Families Citing this family (148)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3133004B2 (ja) * 1996-11-21 2001-02-05 株式会社日立製作所 ディスクアレイ装置およびその制御方法
JP2000010860A (ja) * 1998-06-16 2000-01-14 Hitachi Ltd キャッシュメモリ制御回路及びプロセッサ及びプロセッサシステム及び並列プロセッサシステム
US6378066B1 (en) * 1999-02-04 2002-04-23 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications
EP1098249A1 (de) * 1999-11-05 2001-05-09 Emc Corporation Cachespeichersegmentierung zur Bereitstellung von unterschiedlichen Betriebsniveaus
US6457102B1 (en) * 1999-11-05 2002-09-24 Emc Corporation Cache using multiple LRU's
US6760743B1 (en) * 2000-01-04 2004-07-06 International Business Machines Corporation Instruction memory system for multi-processor environment and disjoint tasks
US6832378B1 (en) * 2000-06-20 2004-12-14 International Business Machines Corporation Parallel software processing system
US6791555B1 (en) * 2000-06-23 2004-09-14 Micron Technology, Inc. Apparatus and method for distributed memory control in a graphics processing system
US6889291B1 (en) * 2000-06-30 2005-05-03 Intel Corporation Method and apparatus for cache replacement for a multiple variable-way associative cache
AU2001286410A1 (en) * 2000-07-31 2002-02-13 Morphics Technology, Inc. Method and apparatus for time-sliced and multi-threaded data processing in a communication system
ATE548695T1 (de) 2000-08-21 2012-03-15 Texas Instruments France Softwaregesteuerte cache-speicherkonfiguration
EP1215583A1 (de) * 2000-12-15 2002-06-19 Texas Instruments Incorporated Cache-Speicher dessen Tag-Einträge zusätzliche Qualifizierungsfelder enthalten
US6684298B1 (en) 2000-11-09 2004-01-27 University Of Rochester Dynamic reconfigurable memory hierarchy
US7802174B2 (en) 2000-12-22 2010-09-21 Oracle International Corporation Domain based workflows
US8015600B2 (en) 2000-12-22 2011-09-06 Oracle International Corporation Employing electronic certificate workflows
US6675261B2 (en) * 2000-12-22 2004-01-06 Oblix, Inc. Request based caching of data store data
US7937655B2 (en) 2000-12-22 2011-05-03 Oracle International Corporation Workflows with associated processes
US7711818B2 (en) 2000-12-22 2010-05-04 Oracle International Corporation Support for multiple data stores
US7085834B2 (en) 2000-12-22 2006-08-01 Oracle International Corporation Determining a user's groups
US6701417B2 (en) * 2001-04-11 2004-03-02 Sun Microsystems, Inc. Method and apparatus for supporting multiple cache line invalidations per cycle
US6684297B2 (en) * 2001-04-11 2004-01-27 Sun Microsystems, Inc. Reverse directory for facilitating accesses involving a lower-level cache
WO2003025755A2 (en) * 2001-09-14 2003-03-27 Seagate Technology Llc sETHOD AND SYSTEM FOR CACHE MANAGEMENT ALGORITHM SELECTION
US6965970B2 (en) * 2001-09-27 2005-11-15 Intel Corporation List based method and apparatus for selective and rapid cache flushes
US7225256B2 (en) 2001-11-30 2007-05-29 Oracle International Corporation Impersonation in an access system
US6772276B2 (en) * 2002-01-04 2004-08-03 Intel Corporation Flash memory command abstraction
US7840658B2 (en) 2002-05-15 2010-11-23 Oracle International Corporation Employing job code attributes in provisioning
US6857937B2 (en) * 2002-05-30 2005-02-22 Komag, Inc. Lapping a head while powered up to eliminate expansion of the head due to heating
US7133972B2 (en) 2002-06-07 2006-11-07 Micron Technology, Inc. Memory hub with internal cache and/or memory access prediction
US7103722B2 (en) * 2002-07-22 2006-09-05 International Business Machines Corporation Cache configuration for compressed memory systems
US7200024B2 (en) * 2002-08-02 2007-04-03 Micron Technology, Inc. System and method for optically interconnecting memory devices
US7117316B2 (en) * 2002-08-05 2006-10-03 Micron Technology, Inc. Memory hub and access method having internal row caching
US7254331B2 (en) * 2002-08-09 2007-08-07 Micron Technology, Inc. System and method for multiple bit optical data transmission in memory systems
US7149874B2 (en) * 2002-08-16 2006-12-12 Micron Technology, Inc. Memory hub bypass circuit and method
US6754117B2 (en) 2002-08-16 2004-06-22 Micron Technology, Inc. System and method for self-testing and repair of memory modules
US6820181B2 (en) 2002-08-29 2004-11-16 Micron Technology, Inc. Method and system for controlling memory accesses to memory modules having a memory hub architecture
US7836252B2 (en) * 2002-08-29 2010-11-16 Micron Technology, Inc. System and method for optimizing interconnections of memory devices in a multichip module
US7102907B2 (en) * 2002-09-09 2006-09-05 Micron Technology, Inc. Wavelength division multiplexed memory module, memory system and method
US7076609B2 (en) * 2002-09-20 2006-07-11 Intel Corporation Cache sharing for a chip multiprocessor or multiprocessing system
US6711635B1 (en) * 2002-09-30 2004-03-23 Western Digital Technologies, Inc. Disk drive employing thresholds for cache memory allocation
US6823430B2 (en) * 2002-10-10 2004-11-23 International Business Machines Corporation Directoryless L0 cache for stall reduction
DE602004023372D1 (de) * 2003-02-24 2009-11-12 Nxp Bv Cache-speicher-trashings-verringerung von bestimmten code-stücken
US7190367B2 (en) * 2003-03-25 2007-03-13 Mitsubishi Electric Research Laboratories, Inc. Method, apparatus, and system for rendering using a progressive cache
US7245145B2 (en) * 2003-06-11 2007-07-17 Micron Technology, Inc. Memory module and method having improved signal routing topology
US7120727B2 (en) 2003-06-19 2006-10-10 Micron Technology, Inc. Reconfigurable memory module and method
US7107415B2 (en) * 2003-06-20 2006-09-12 Micron Technology, Inc. Posted write buffers and methods of posting write requests in memory modules
US7428644B2 (en) * 2003-06-20 2008-09-23 Micron Technology, Inc. System and method for selective memory module power management
US7260685B2 (en) 2003-06-20 2007-08-21 Micron Technology, Inc. Memory hub and access method having internal prefetch buffers
US7389364B2 (en) * 2003-07-22 2008-06-17 Micron Technology, Inc. Apparatus and method for direct memory access in a hub-based memory system
US7210059B2 (en) * 2003-08-19 2007-04-24 Micron Technology, Inc. System and method for on-board diagnostics of memory modules
US7133991B2 (en) * 2003-08-20 2006-11-07 Micron Technology, Inc. Method and system for capturing and bypassing memory transactions in a hub-based memory system
US7136958B2 (en) 2003-08-28 2006-11-14 Micron Technology, Inc. Multiple processor system and method including multiple memory hub modules
US20050050237A1 (en) * 2003-08-28 2005-03-03 Jeddeloh Joseph M. Memory module and method having on-board data search capabilities and processor-based system using such memory modules
US20050050455A1 (en) * 2003-08-29 2005-03-03 Yee Sunny K. Method and apparatus for supporting object caching in a web presentation architecture
US7310752B2 (en) 2003-09-12 2007-12-18 Micron Technology, Inc. System and method for on-board timing margin testing of memory modules
US7194593B2 (en) * 2003-09-18 2007-03-20 Micron Technology, Inc. Memory hub with integrated non-volatile memory
US20050076291A1 (en) * 2003-10-01 2005-04-07 Yee Sunny K. Method and apparatus for supporting page localization management in a Web presentation architecture
US7904487B2 (en) 2003-10-09 2011-03-08 Oracle International Corporation Translating data access requests
US7882132B2 (en) 2003-10-09 2011-02-01 Oracle International Corporation Support for RDBMS in LDAP system
US7120743B2 (en) * 2003-10-20 2006-10-10 Micron Technology, Inc. Arbitration system and method for memory responses in a hub-based memory system
US7234070B2 (en) * 2003-10-27 2007-06-19 Micron Technology, Inc. System and method for using a learning sequence to establish communications on a high-speed nonsynchronous interface in the absence of clock forwarding
US7502887B2 (en) * 2003-11-12 2009-03-10 Panasonic Corporation N-way set associative cache memory and control method thereof
US7330992B2 (en) 2003-12-29 2008-02-12 Micron Technology, Inc. System and method for read synchronization of memory modules
US7216196B2 (en) * 2003-12-29 2007-05-08 Micron Technology, Inc. Memory hub and method for memory system performance monitoring
US7173863B2 (en) * 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US7213107B2 (en) * 2003-12-31 2007-05-01 Intel Corporation Dedicated cache memory
US7188219B2 (en) * 2004-01-30 2007-03-06 Micron Technology, Inc. Buffer control system and method for a memory system having outstanding read and write request buffers
US7356651B2 (en) * 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7181584B2 (en) * 2004-02-05 2007-02-20 Micron Technology, Inc. Dynamic command and/or address mirroring system and method for memory modules
US7412574B2 (en) * 2004-02-05 2008-08-12 Micron Technology, Inc. System and method for arbitration of memory responses in a hub-based memory system
US7788451B2 (en) 2004-02-05 2010-08-31 Micron Technology, Inc. Apparatus and method for data bypass for a bi-directional data bus in a hub-based memory sub-system
US7797492B2 (en) * 2004-02-20 2010-09-14 Anoop Mukker Method and apparatus for dedicating cache entries to certain streams for performance optimization
US7366864B2 (en) * 2004-03-08 2008-04-29 Micron Technology, Inc. Memory hub architecture having programmable lane widths
US20050206648A1 (en) * 2004-03-16 2005-09-22 Perry Ronald N Pipeline and cache for processing data progressively
US7257683B2 (en) * 2004-03-24 2007-08-14 Micron Technology, Inc. Memory arbitration system and method having an arbitration packet protocol
US7120723B2 (en) * 2004-03-25 2006-10-10 Micron Technology, Inc. System and method for memory hub-based expansion bus
US7213082B2 (en) * 2004-03-29 2007-05-01 Micron Technology, Inc. Memory hub and method for providing memory sequencing hints
US7447240B2 (en) * 2004-03-29 2008-11-04 Micron Technology, Inc. Method and system for synchronizing communications links in a hub-based memory system
US6980042B2 (en) * 2004-04-05 2005-12-27 Micron Technology, Inc. Delay line synchronizer apparatus and method
US7590797B2 (en) 2004-04-08 2009-09-15 Micron Technology, Inc. System and method for optimizing interconnections of components in a multichip memory module
US7162567B2 (en) * 2004-05-14 2007-01-09 Micron Technology, Inc. Memory hub and method for memory sequencing
US7222213B2 (en) * 2004-05-17 2007-05-22 Micron Technology, Inc. System and method for communicating the synchronization status of memory modules during initialization of the memory modules
US7363419B2 (en) * 2004-05-28 2008-04-22 Micron Technology, Inc. Method and system for terminating write commands in a hub-based memory system
US7519788B2 (en) * 2004-06-04 2009-04-14 Micron Technology, Inc. System and method for an asynchronous data buffer having buffer write and read pointers
US7310748B2 (en) 2004-06-04 2007-12-18 Micron Technology, Inc. Memory hub tester interface and method for use thereof
US7685354B1 (en) * 2004-06-30 2010-03-23 Sun Microsystems, Inc. Multiple-core processor with flexible mapping of processor cores to cache banks
US7873776B2 (en) * 2004-06-30 2011-01-18 Oracle America, Inc. Multiple-core processor with support for multiple virtual processors
US7392331B2 (en) * 2004-08-31 2008-06-24 Micron Technology, Inc. System and method for transmitting data packets in a computer system having a memory hub architecture
US7590803B2 (en) * 2004-09-23 2009-09-15 Sap Ag Cache eviction
US20060074872A1 (en) * 2004-09-30 2006-04-06 International Business Machines Corporation Adaptive database buffer memory management using dynamic SQL statement cache statistics
US7472224B1 (en) 2004-10-01 2008-12-30 Advanced Micro Devices, Inc. Reconfigurable processing node including first and second processor cores
US7257678B2 (en) * 2004-10-01 2007-08-14 Advanced Micro Devices, Inc. Dynamic reconfiguration of cache memory
KR101052994B1 (ko) * 2004-10-25 2011-07-29 로베르트 보쉬 게엠베하 적어도 2개의 실행 유닛을 포함하는 컴퓨터 시스템에서전환을 위한 방법 및 장치
US7703082B2 (en) * 2004-12-07 2010-04-20 International Business Machines Corporation Controlling user intervention in a multi-processing computer system
US7580915B2 (en) * 2004-12-14 2009-08-25 Sap Ag Socket-like communication API for C
US7600217B2 (en) * 2004-12-14 2009-10-06 Sap Ag Socket-like communication API for Java
US7882299B2 (en) * 2004-12-21 2011-02-01 Sandisk Corporation System and method for use of on-chip non-volatile memory write cache
US20060143398A1 (en) * 2004-12-23 2006-06-29 Stefan Rau Method and apparatus for least recently used (LRU) software cache
US20060143256A1 (en) 2004-12-28 2006-06-29 Galin Galchev Cache region concept
US20060143389A1 (en) * 2004-12-28 2006-06-29 Frank Kilian Main concept for common cache management
US7451275B2 (en) * 2004-12-28 2008-11-11 Sap Ag Programming models for storage plug-ins
US7512737B2 (en) * 2004-12-28 2009-03-31 Sap Ag Size based eviction implementation
US7971001B2 (en) * 2004-12-28 2011-06-28 Sap Ag Least recently used eviction implementation
US8204931B2 (en) 2004-12-28 2012-06-19 Sap Ag Session management within a multi-tiered enterprise network
US7694065B2 (en) 2004-12-28 2010-04-06 Sap Ag Distributed cache architecture
US7552153B2 (en) * 2004-12-28 2009-06-23 Sap Ag Virtual machine monitoring using shared memory
US7437516B2 (en) * 2004-12-28 2008-10-14 Sap Ag Programming models for eviction policies
US7552284B2 (en) * 2004-12-28 2009-06-23 Sap Ag Least frequently used eviction implementation
US7539821B2 (en) * 2004-12-28 2009-05-26 Sap Ag First in first out eviction implementation
US7810083B2 (en) * 2004-12-30 2010-10-05 Intel Corporation Mechanism to emulate user-level multithreading on an OS-sequestered sequencer
US8347034B1 (en) * 2005-01-13 2013-01-01 Marvell International Ltd. Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
US7685372B1 (en) 2005-01-13 2010-03-23 Marvell International Ltd. Transparent level 2 cache controller
US20060168407A1 (en) * 2005-01-26 2006-07-27 Micron Technology, Inc. Memory hub system and method having large virtual page size
US7743233B2 (en) 2005-04-05 2010-06-22 Intel Corporation Sequencer address management
US7516277B2 (en) * 2005-04-28 2009-04-07 Sap Ag Cache monitoring using shared memory
US7831634B2 (en) 2005-04-29 2010-11-09 Sap Ag Initializing a cache region using a generated cache region configuration structure
US7581066B2 (en) * 2005-04-29 2009-08-25 Sap Ag Cache isolation model
US7966412B2 (en) * 2005-07-19 2011-06-21 Sap Ag System and method for a pluggable protocol handler
US7788243B2 (en) * 2006-09-08 2010-08-31 Sybase, Inc. System and methods for optimizing data transfer among various resources in a distributed environment
US8136119B2 (en) * 2006-11-30 2012-03-13 Dell Products L.P. Method, apparatus and media for managing information model jobs
US7831772B2 (en) * 2006-12-12 2010-11-09 Sybase, Inc. System and methodology providing multiple heterogeneous buffer caches
US8074274B2 (en) * 2006-12-29 2011-12-06 Intel Corporation User-level privilege management
US20080163063A1 (en) * 2006-12-29 2008-07-03 Sap Ag Graphical user interface system and method for presenting information related to session and cache objects
US8542323B2 (en) * 2007-12-21 2013-09-24 Sony Corporation Touch sensitive wireless navigation device for remote control
TWI384488B (zh) * 2007-12-24 2013-02-01 Skymedi Corp Nonvolatile storage device and its data writing method
US7870339B2 (en) * 2008-01-11 2011-01-11 International Business Machines Corporation Extract cache attribute facility and instruction therefore
DE112008003788T5 (de) * 2008-03-27 2011-02-24 Hewlett-Packard Co. Intellectual Property Administration, Fort Collins Raid-Array-Zugriff durch ein das Raid-Array nicht kennendes Betriebssystem
US8166229B2 (en) 2008-06-30 2012-04-24 Intel Corporation Apparatus and method for multi-level cache utilization
US8499120B2 (en) * 2008-10-17 2013-07-30 Seagate Technology Llc User selectable caching management
CN101515295B (zh) * 2009-03-23 2010-12-01 浙江大学 片上硬件数据库的高速缓冲器支持实现方法
JP5785357B2 (ja) 2009-06-25 2015-09-30 スパンション エルエルシー リコンフィグ演算装置を備えるコンピュータシステムおよびリコンフィグ演算装置
US8825685B2 (en) 2009-11-16 2014-09-02 Symantec Corporation Selective file system caching based upon a configurable cache map
EP2388704A1 (de) * 2010-05-17 2011-11-23 Thomson Licensing Verfahren zur Optimierung der Verwaltung des Cache-Speichers und zugehörige Vorrichtung
US8589627B2 (en) * 2010-08-27 2013-11-19 Advanced Micro Devices, Inc. Partially sectored cache
US8868843B2 (en) 2011-11-30 2014-10-21 Advanced Micro Devices, Inc. Hardware filter for tracking block presence in large caches
US9152626B2 (en) * 2011-12-19 2015-10-06 Sap Se Transactional-consistent cache for database objects
US9223709B1 (en) 2012-03-06 2015-12-29 Marvell International Ltd. Thread-aware cache memory management
US20140095716A1 (en) * 2012-09-28 2014-04-03 International Business Machines Corporation Maximizing resources in a multi-application processing environement
US9235513B2 (en) * 2012-10-18 2016-01-12 International Business Machines Corporation Cache management based on physical memory device characteristics
US9251070B2 (en) * 2012-12-19 2016-02-02 Advanced Micro Devices, Inc. Methods and apparatus for multi-level cache hierarchies
CN104424119B (zh) * 2013-08-26 2018-07-06 联想(北京)有限公司 存储空间配置方法和装置
CN105094686B (zh) 2014-05-09 2018-04-10 华为技术有限公司 数据缓存方法、缓存和计算机系统
US9983914B2 (en) * 2015-05-11 2018-05-29 Mentor Graphics Corporation Memory corruption protection by tracing memory
TWI584121B (zh) * 2015-08-19 2017-05-21 旺宏電子股份有限公司 快取記憶體元件與控制方法及其應用系統
US20170083441A1 (en) * 2015-09-23 2017-03-23 Qualcomm Incorporated Region-based cache management
US10152237B2 (en) 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
US10534540B2 (en) 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
CN106649139B (zh) * 2016-12-29 2020-01-10 北京奇虎科技有限公司 一种基于多个缓存的数据淘汰方法及装置
US20180292991A1 (en) * 2017-04-11 2018-10-11 Micron Technology, Inc. Memory protocol with programmable buffer and cache size

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4928239A (en) * 1986-06-27 1990-05-22 Hewlett-Packard Company Cache memory with variable fetch and replacement schemes
GB2311880A (en) * 1996-04-03 1997-10-08 Advanced Risc Mach Ltd Partitioned cache memory
EP0856797A1 (de) * 1997-01-30 1998-08-05 STMicroelectronics Limited Cachespeichersystem für gleichzeitig laufende Prozesse

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4905141A (en) * 1988-10-25 1990-02-27 International Business Machines Corporation Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification
US5875464A (en) * 1991-12-10 1999-02-23 International Business Machines Corporation Computer system with private and shared partitions in cache
US5479636A (en) 1992-11-16 1995-12-26 Intel Corporation Concurrent cache line replacement method and apparatus in microprocessor system with write-back cache memory
JP2583010B2 (ja) * 1993-01-07 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 多層インデックス構造におけるローカルインデックステーブル及び大域インデックステーブルの間の一貫性を維持する方法
JPH06282488A (ja) * 1993-03-25 1994-10-07 Mitsubishi Electric Corp キャッシュ記憶装置
US5809524A (en) 1994-01-04 1998-09-15 Intel Corporation Method and apparatus for cache memory replacement line identification
US5680573A (en) * 1994-07-12 1997-10-21 Sybase, Inc. Method of buffering data objects in a database
US5960194A (en) * 1995-09-11 1999-09-28 International Business Machines Corporation Method for generating a multi-tiered index for partitioned data
US5701432A (en) * 1995-10-13 1997-12-23 Sun Microsystems, Inc. Multi-threaded processing system having a cache that is commonly accessible to each thread
US5963972A (en) * 1997-02-24 1999-10-05 Digital Equipment Corporation Memory architecture dependent program mapping
US6058456A (en) * 1997-04-14 2000-05-02 International Business Machines Corporation Software-managed programmable unified/split caching mechanism for instructions and data
US6092149A (en) * 1997-05-28 2000-07-18 Western Digital Corporation Disk drive cache system using a dynamic priority sequential stream of data segments continuously adapted according to prefetched sequential random, and repeating types of accesses
US6161166A (en) * 1997-11-10 2000-12-12 International Business Machines Corporation Instruction cache for multithreaded processor
US6112280A (en) * 1998-01-06 2000-08-29 Hewlett-Packard Company Method and apparatus for distinct instruction pointer storage in a partitioned cache memory
US6205519B1 (en) * 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
US6269425B1 (en) * 1998-08-20 2001-07-31 International Business Machines Corporation Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4928239A (en) * 1986-06-27 1990-05-22 Hewlett-Packard Company Cache memory with variable fetch and replacement schemes
GB2311880A (en) * 1996-04-03 1997-10-08 Advanced Risc Mach Ltd Partitioned cache memory
EP0856797A1 (de) * 1997-01-30 1998-08-05 STMicroelectronics Limited Cachespeichersystem für gleichzeitig laufende Prozesse

Also Published As

Publication number Publication date
US6470422B2 (en) 2002-10-22
GB2359163B (en) 2003-07-30
AU6497199A (en) 2000-06-26
US6349363B2 (en) 2002-02-19
US20010049770A1 (en) 2001-12-06
GB0111896D0 (en) 2001-07-04
HK1036662A1 (en) 2002-01-11
GB2359163A (en) 2001-08-15
CN1179276C (zh) 2004-12-08
DE19983793T1 (de) 2001-11-29
US20020046325A1 (en) 2002-04-18
CN1334938A (zh) 2002-02-06
WO2000034870A1 (en) 2000-06-15

Similar Documents

Publication Publication Date Title
DE19983793B4 (de) System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher
DE10296989B4 (de) Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms
US8112587B2 (en) Shared data prefetching with memory region cache line monitoring
DE112006000807B4 (de) Verwaltung von Sequenzer-Adressen
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
US6499090B1 (en) Prioritized bus request scheduling mechanism for processing devices
CN100416515C (zh) 高速缓冲存储器线清洗指令和执行该指令的方法,装置以及系统
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE112010005821T5 (de) Kontextwechsel
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE112010003758T5 (de) Instruktionen zum Verwalten einer parallelen Cache-Hierarchie
DE102010053088A1 (de) Sammeln und Streuen mehrerer Datenelemente
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE102013206336A1 (de) Cache-Steuerung zur Reduktion von Transaktions-Rollback
DE69937611T2 (de) Intelligenter Puffer-Speicher
DE102005032949A1 (de) Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE102012224265A1 (de) Gemeinsame Nutzung dicht benachbarter Daten-Cachespeicher
DE10045188B4 (de) Cacheadresskonfliktvorrichtung
US8874853B2 (en) Local and global memory request predictor
DE102013200508A1 (de) Ersetzungsreihenfolge von Cache-Sets auf der Grundlage von zeitbezogener Set-Aufzeichnung
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE112017003332T5 (de) Öffnungszugriffsprozessoren, verfahren, systeme und befehle

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8607 Notification of search results after publication
R019 Grant decision by federal patent court
R130 Divisional application to

Ref document number: 19984043

Country of ref document: DE

Effective date: 20111206

R020 Patent grant now final

Effective date: 20130508

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