DE69937611T2 - Intelligenter Puffer-Speicher - Google Patents

Intelligenter Puffer-Speicher Download PDF

Info

Publication number
DE69937611T2
DE69937611T2 DE69937611T DE69937611T DE69937611T2 DE 69937611 T2 DE69937611 T2 DE 69937611T2 DE 69937611 T DE69937611 T DE 69937611T DE 69937611 T DE69937611 T DE 69937611T DE 69937611 T2 DE69937611 T2 DE 69937611T2
Authority
DE
Germany
Prior art keywords
buffer
cache
memory
ram
subsystem
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 - Lifetime
Application number
DE69937611T
Other languages
English (en)
Other versions
DE69937611D1 (de
Inventor
Gerard Chauvel
Serge Lasserre
Dominique Benoit Jacques D'inverno
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments 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 Texas Instruments Inc filed Critical Texas Instruments Inc
Application granted granted Critical
Publication of DE69937611D1 publication Critical patent/DE69937611D1/de
Publication of DE69937611T2 publication Critical patent/DE69937611T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • G06F2212/2515Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory

Landscapes

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

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. TECHNISCHES GEBIET
  • Die Erfindung betrifft allgemein Prozessor-Vorrichtungen und insbesondere eine Pufferspeicher-Architektur für eine Prozessor-Vorrichtung.
  • 2. BESCHREIBUNG DER VERWANDTEN TECHNIK
  • Die meisten Prozessor-Vorrichtungen verwenden eine Pufferspeicher-Architektur, um die Abrufgeschwindigkeit von Informationen aus einem Hauptspeicher zu erhöhen. Ein Pufferspeicher (Cache-Speicher) ist ein Hochgeschwindigkeitsspeicher, der sich zwischen dem Prozessorkern einer Prozessor-Vorrichtung und dem Hauptspeicher befindet. Der Hauptspeicher ist im allgemeinen sehr viel größer als der Pufferspeicher, aber auch deutlich langsamer. Jedesmal, wenn der Prozessorkern Informationen vom Hauptspeicher abruft, überprüft die Pufferspeicher-Steuerschaltung den Pufferspeicher, um festzustellen, ob die Adresse, auf die zugegriffen wird, derzeit im Pufferspeicher ist. Wenn ja, wird die Information vom schnelleren Pufferspeicher abgerufen, anstatt vom langsameren Hauptspeicher. Ist die Information nicht im Pufferspeicher, wird auf den Hauptspeicher zugegriffen und der Pufferspeicher wird mit der Information aktualisiert.
  • Da Prozessorkerne im Verhältnis zu Speicherkonstruktionen schneller werden, wird die Effizienz von Pufferspeicher-Architekturen bedeutsamer. Ein Weg, um die Effizienz zu steigern, ist die Vergrößerung des Pufferspeichers. Da ein größerer Pufferspeicher mehr Informationen speichern kann, wird die Wahrscheinlichkeit für einen Pufferspeicher-Treffer entsprechend erhöht. In den meisten Fällen führt jedoch das Erhöhen der Pufferspeichergröße ab einem bestimmten Punkt zu einer negativen Rückwirkung. Zudem wird eine Vergrößerung des Pufferspeichers den Chip vergrößern (vorausgesetzt, daß der Pufferspeicher mit dem Prozessorkern integriert ist). Noch wichtiger ist, daß sich die Zugriffszeit erhöhen wird, was den ursprünglichen Zweck des Pufferspeichers zunichte macht. Entsprechend wird allein die Vergrößerung eines Pufferspeichers in vielen Fällen keine lohnenden Ergebnisse bringen.
  • In vielen Vorrichtungen werden gewisse Routinen kritische Zeitvorgaben haben oder sonst vorhersagbare Ausführungszeit benötigen. In diesen Fällen kann es entscheidend sein, Wartezeiten aufgrund von Pufferspeicher-Fehltreffern zu vermeiden. Einige Pufferspeicher-Systeme bieten Mechanismen, die Einträge bzw. Eingänge in einen Pufferspeicher sperren, so daß Pufferspeichereinträge nicht überschrieben werden, da auf andere Orte zugegriffen wird. Dieser Mechanismus ist für Einträge nützlich, die wiederholt verwendet werden; jedoch reduziert das Sperren von Einträgen auf einem Pufferspeicher seine Größe und Assoziativität. Beispielsweise wird in einem 2-Wege-Satz-Assoziativpufferspeicher das Sperren einiger Einträge zur Folge haben, daß ein Teil des Pufferspeichers als direkt abgebildeter Pufferspeicher agiert, was die Wirksamkeit des Pufferspeichers stark reduziert. Eine ähnliche Lösung benutzt einen lokalen Speicher, der parallel zum Pufferspeicher-System arbeitet. Diese Lösung erfordert eine Adreßdekodierung für den lokalen Speicher und einen Mechanismus, um den Pufferspeicher zu deaktivieren, was Wartezeiten zur Folge haben kann. Während eine Ausführung mit einem lokalen RAM mit speziell für die Benutzung des lokalen RAM geschriebenen Routinen arbeiten kann, werden andere Routinen, insbesondere OS(Betriebssystem)-Routinen, die nicht in Vorwegnahme der spezifischen lokalen RAM-Konfiguration geschrieben wurden, nicht in der Lage sein, den lokalen RAM in der Art und Weise zu steuern, wie der Pufferspeicher gesteuert wird.
  • Andere Prozessorsysteme, wie in US 5,014,195 beschrieben, umfassen eine zentrale Prozessoreinheit, einen Satz assoziativer Pufferspeicher und einen Hauptspeicher. Der Satz assoziativer Pufferspeicher umfaßt eine Pufferspeicher-Steuerschaltung und einen oder mehrere Pufferspeicher, die miteinander verbunden sind. Aber diese Systeme umfassen nur einen Satz von assoziativen Pufferspeichern kontrolliert durch eine Pufferspeicher-Steuerschaltung, womit deutlich deren Wirksamkeit beschränkt wird.
  • Es ist auch ein Pool-Buffer bekannt, zum Beispiel im Dokument „Optimizing Primary Data caches for parallel Scientific Application" von Liuxi Yang, das ist ein Pufferspeicher parallel mit einem Primärdaten-Pufferspeicher. Jeder Eingang in den Pool-Buffer ist ein Sektor, nämlich ein Satz von benachbarten Pufferspeicherzeilen, der eine Adreßkennzeichnung hat. Wenn der Prozessor auf eine Zeile verweist, werden sowohl der Primärpufferspeicher als auch der Pool-Buffer durchsucht. Wenn jedoch ein Pool-Buffer-Treffer auftritt, werden die Daten vom Pool-Buffer in den Primärpufferspeicher kopiert. Deshalb benötigt eine derartige Prozessor-Vorrichtung weitere Betriebszeit aufgrund des Kopierens und Übertragens vom Primärpufferspeicher.
  • Deswegen ist ein Bedarf entstanden für eine Pufferspeicher-Architektur, die die Pufferspeicherleistung und -vorhersagbarkeit erhöht.
  • Um die beschriebenen Nachteile im Stand der Technik zu beheben, schlägt die vorliegende Erfindung ein Pufferspeicher-System vor, das folgendes umfaßt:
    Ein erstes Pufferspeicher-Untersystem, umfassend:
    n Datenspeicher, wobei jeder eine Mehrzahl von Eingängen zum Speichern von Information von einem Hauptspeicher hat;
    n Kennungsspeicher zum Speichern von Adreßinformation, die eine Hauptspeicheradresse identifiziert, assoziiert mit jedem der Eingänge in einem entsprechenden der n Datenspeicher.
  • Ein zweites Pufferspeicher-Untersystem mit m Wegen, umfassend:
    m Datenspeicher, wobei jeder eine Mehrzahl von Eingängen zum Speichern von Information von einem Hauptspeicher hat;
    m Kennungsregister, wobei jedes Adreßinformation speichert, die einen benachbarten Block von Hauptspeicheradressen definiert, abgebildet auf einem entsprechenden der m Datenspeicher; und
    Logik zum Bestimmen von Pufferspeicher-Treffern in dem ersten n-Wege- und in dem zweiten m-Wege-Pufferspeicher-Untersystem, dadurch gekennzeichnet, daß m größer ist als 1 und daß Treffer vom zweiten m-Wege-Pufferspeicher-Untersystem Vorrang haben gegenüber Treffern vom ersten n-Wege-Pufferspeicher-Untersystem.
  • Die vorliegende Erfindung bietet deutliche Vorteile gegenüber dem Stand der Technik. Erstens kann der RAM-Satz-Pufferspeicher (abgebildet auf einem benachbarten Block von Hauptspeicheradressen) deutlich den Betrieb einer Prozessor-Vorrichtung verbessern, die Operationen in Echtzeit ausführt, weil ein gewünschter Code-Block in dem RAM-Satz-Pufferspeicher für einen schnellen Zugriff gespeichert werden kann. Zweitens gibt es keinen zusätzlichen Nachteil wegen des Zugriffs auf einen größeren Datenspeicher für einen RAM-Satz-Pufferspeicher, solange die Zugriffszeit des RAM-Satzes nicht größer ist als die Zugriffszeit auf den Standard-Pufferspeicher. Drittens können ein oder mehrere RAM-Satz-Pufferspeicher hinzugefügt werden mit einem minimalen Zusatzaufwand an Verschaltung gegenüber einem herkömmlichen Pufferspeicher. Viertens können die RAM-Satz-Pufferspeicher in sehr flexibler Art und Weise mit anderen Pufferspeichern, wie beispielsweise einem Assoziativ-Pufferspeicher oder einem direkt abgebildeten Pufferspeicher, wie gewünscht konfiguriert werden. Fünftens bietet der RAM-Satz-Pufferspeicher Vorteile gegenüber einem lokalen RAM, weil ein getrennter Mechanismus zum Laden des Datenspeichers für den RAM-Satz-Pufferspeicher nicht notwendig ist und keine spezifische Adressendekodierung in Serie mit der Speicherzugriffszeit benötigt wird. Sechstens kann der Pufferspeicher vom Betriebssystem oder anderer Software in der gleichen Art und Weise wie ein herkömmlicher Pufferspeicher gesteuert werden – Laden, Spülen, Zeilen-Annulieren, usw. können durch die Software ausgeführt werden, ohne Kenntnis der spezifischen Architektur des Pufferspeichers oder mit geringfügigen Änderungen in einem Treiber für das Betriebssystem.
  • KURZE BESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
  • Für ein vollständigeres Verständnis der vorliegenden Erfindung und ihrer Vorteile wird Bezug genommen auf die folgende Beschreibung zusammengenommen mit den begleitenden Zeichnungen, in denen:
  • 1 ein Blockdiagramm einer Prozessor-Vorrichtung zeigt, die einen Pufferspeicher umfaßt;
  • 2 zeigt ein Blockdiagramm einer bevorzugten Ausführungsform einer Pufferspeicher-Architektur;
  • 3 ist ein Diagramm, das die Abbildung eines Teils eines Hauptspeichers auf einem RAM-Satz-Pufferspeicher zeigt; und
  • 4 zeigt ein Flußdiagramm, das die Arbeitsweise der Treffer/Verfehlen-Logik von 2 beschreibt.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung wird am besten im Zusammenhang mit den 1 bis 4 der Zeichnung verstanden, gleiche Bezugszeichen werden für sich entsprechende Elemente in den verschiedenen Zeichnungen verwendet.
  • 1 zeigt ein Blockdiagramm einer Prozessor-Vorrichtung 10. Die Prozessor-Vorrichtung 10 umfaßt einen Prozessorkern 12, einen Datenspeicher 14, einen Befehlspufferspeicher 16, und eine Untersystem-Speicherschnittstelle 18. Die Untersystem-Speicherschnittstelle 18 bildet eine Schnittstelle mit dem Hauptspeicher 20, der typischerweise ein externer Speicher ist.
  • Wie ausführlicher weiter unten beschrieben, ist im bevorzugten Ausführungsbeispiel der Befehlspufferspeicher ein Pufferspeicher mit drei Wegen, wobei ein Pufferspeicherweg ein „RAM-Satz"-Pufferspeicher ist. Der RAM-Satz-Pufferspeicher ist so konstruiert, daß er einen benachbarten Speicherblock puffert, beginnend von einem gewählten Hauptspeicher-Adressenort. Die anderen zwei Pufferspeicherwege können als RAM-Satz-Pufferspeicher gestaltet sein, oder andere Architekturen verwenden. Beispielsweise könnte der Befehlspufferspeicher 16 als ein RAM-Satz-Pufferspeicher und ein 2-Wege-Satz-Assoziativpufferspeicher ausgebildet sein.
  • Im Betrieb greift der Prozessorkern 12 auf den Hauptspeicher 20 innerhalb eines gegebenen Adreßraumes zu. Falls die an einer angeforderten Adresse im Hauptspeicher liegende Information ebenso im Befehlspufferspeicher 16 gespeichert ist, werden die Daten von dem Befehlspufferspeicher entnommen. Falls die Information für die angeforderte Adresse nicht im Befehlspufferspeicher gespeichert ist, wird die Information vom Hauptspeicher 20 entnommen und der Befehlspufferspeicher wird mit der entnommenen Information aktualisiert.
  • 2 zeigt ein detaillierteres Blockdiagram des Befehlspufferspeichers 16, in einer Ausführungsform mit einem RAM-Satz-Pufferspeicher und einem 2-Wege-Satz-Assoziativpufferspeicher.
  • Eine Pufferspeicher-Steuerschaltung 22 steuert den Betrieb des Befehlspufferspeichers 16. Pufferspeicher-Steuerschaltung 22 umfaßt vier Statusbits: RAM_fill_mode 24, Cache_Enable 26, DM/2SA 28 und FULL_RAM_base 30. Pufferspeicher-Steuerschaltung 22 ist verbunden mit Full_Set Kennungsregistern 32 (einzeln bezeichnet als Register 321 bis 323 ), gesamtgültigen Bits 34 (einzeln bezeichnet als Bits 341 bis 343 ), Kennungsspeichern 36 (einzeln bezeichnet als Kennungsspeicher 362 und 363 ), gültigen Eingangsbit-Arrays 37 (einzeln bezeichnet als Bit-Arrays 371 bis 373 ) und Datenarrays 38 (einzeln bezeichnet als Datenarrays 381 bis 383 ). Komparatoren 40 (einzeln bezeichnet als Komparatoren 401 bis 403 ) sind verbunden mit entsprechenden Full_Set Kennungsregistern 32 (Full_Set_Tag). Komparatoren 42 (einzeln gekennzeichnet als Komparatoren 422 und 423 ) sind verbunden mit entsprechenden Kennungsspeichern 36. Ausgangsbuffer 44 (einzeln gekennzeichnet als Buffer 441 bis 443 ) sind verbunden mit entsprechenden Datenarrays 38. Eine Treffer/Verfehlen-Logik 46 (einzeln gekennzeichnet als Logik 461 bis 463 ) ist verbunden mit den Komparatoren 40, den gesamtgültigen Bits 34, den gültigen Bits 37, dem RAM_fill_mode Bit 24 und dem Cache_Enable Bit 26.
  • Im Betrieb wird der Befehlspufferspeicher 16 unter Verwendung der Steuerbits 24, 26, 28 und 30 konfiguriert. Das Cache_Enable 26 erlaubt es dem Befehlspufferspeicher bereitgestellt oder nicht bereitgestellt zu sein, wie in einer Standard-Pufferspeicher-Architektur. Falls der Befehlspufferspeicher 16 nicht bereitgestellt ist (Cache_Enable=0), werden Befehls-Lesezugriffe auf dem Hauptspeicher 20 über die Untersystem-Speicherschnittstelle 18 durchgeführt, ohne den Befehlspufferspeicher 16 zu verwenden. Falls der Befehlspufferspeicher bereitgestellt ist (Cache_Enable=1), werden Befehle in den Fällen, in denen derartige Befehle im Befehlspufferspeicher 16 vorhanden sind, vom Befehlspufferspeicher 16 ausgeführt. Falls ein Verfehlen auftritt, wird eine Zeile (zum Beispiel 16 Bytes) vom Hauptspeicher 20 geholt und dem Kern 12 zugeführt. Das ist auch ein standardmäßiges Pufferspeicherverhalten.
  • Die Größe des Datenarrays 381 kann anders sein als die Größe der Datenarrays 382,3 für die anderen Wege des Pufferspeichers. Zum Zweck der Veranschaulichung sei angenommen, daß die Datenarrays 382 und 383 jeweils 8 KBytes umfassen, konfiguriert in 512 Zeilen, wobei jede Zeile 8 Befehle von je 2 Bytes enthält. Datenarray 381 hat eine Größe von 16 KBytes, konfiguriert in 1024 Zeilen, wobei jede Zeile acht Befehle mit je 2 Bytes enthält. ADDR[L] wird verwendet, um eine Zeile des Datenarrays 38 und gültiges Bit-Array 37 (und Kennungsspeicher 36, wenn zutreffend) anzusprechen. Entsprechend wird ADDR[L] für den ersten Weg mit 1024 Zeilen Bits [13:4] einer Kernadresse enthalten. Für die 512 Zeilen des zweiten und dritten Weges wird ADDR[L] Bits [12:4] einer Kernadresse enthalten. ADDR[H] definiert, welcher Satz auf einer Zeile abgebildet wird. Deshalb verwendet ADDR[H], unter der Voraussetzung eines Adreßraumes von 4 Gigabyte (2 Gword), Bits [31:14] einer Kernadresse für den ersten Weg und Bits [31:13] sowohl für den zweiten als auch für den dritten Weg des Pufferspeichers 16.
  • Die Kennungsspeicher 36 und Komparatoren 42 werden für einen 2-Wege-Satz-Assoziativpufferspeicher verwendet. Wenn der Kern 12 einen Speicherzugriff durchführt, wird auf die Kennungsspeicher 36 bei den Bits geringer Ordnung der Adresse (ADDR[L]) zugegriffen. Die Kennungsspeicherstellen speichern die Adressenbits hoher Ordnung der Hauptspeicheradresse der Information, die in der korrespondierenden Zeile des Datenarrays 38 gespeichert ist. Diese Adressenbits hoher Ordnung werden mit den Adressenbits hoher Ordnung (ADDR[H]) der Adresse vom Kern 12 verglichen. Falls ADDR[H] mit dem Inhalt des Kennungsspeichers bei ADDR[L] übereinstimmt, erscheint ein Treffer, sofern das mit den Bits geringer Ordnung (V[ADDR[L]]) gekoppelte Gültigkeitsbit anzeigt, daß der Pufferspeichereintrag gültig ist. Gibt es einen Pufferspeicher-Treffer, können die Daten des entsprechenden Datenarrays 38 bei ADDR[L] dem Kern 12 zugeführt werden, indem der richtige Ausgangsbuffer 44 bereitgemacht wird. Wie unten beschrieben, werden Daten aus dem Pufferspeicher mit zwei Wegen dem Kern 12 nur angeboten, falls es ein Verfehlen im RAM-Satz-Pufferspeicher gibt. Die Arbeitsweise des 2-Wege-Satz-Assoziativpufferspeichers und des direkt abgebildeten Speichers selbst kann herkömmlich sein und wird nicht von dem RAM-Satz-Pufferspeicher beeinflußt. Andere Pufferspeichertechniken könnten ebenso in Verbindung mit dem RAM-Satz-Pufferspeicher verwendet werden.
  • Der RAM-Satz-Pufferspeicher speichert einen benachbarten Block des Hauptspeichers 20 beginnend an einer Adresse, die durch das Full_set Kennungsregister 32 für den RAM-Satz definiert ist. Dieser Informationsblock wird auf das entsprechende Datenarray 38 des RAM-Satzes abgebildet. Nur die Bits hoher Ordnung der Startadresse werden in dem Full_set Kennungsregister 32 gespeichert. 3 zeigt diese Abbildung für einen einzelnen RAM-Satz. Wie gezeigt, definiert der Inhalt des Full_set Kennungsregisters 321 die Startadresse für einen benachbarten Speicherblock, der im Datenarray 381 gepuffert ist.
  • Ein RAM-Satz-Verfehlen tritt auf, wenn die Adressenbits hoher Ordnung vom Kern 12 nicht mit den Inhalten des Full_set Kennungsregisters 32 übereinstimmen oder das Gesamtgültigkeitsbit gleich „0" ist. In beiden Fällen, wenn ein RAM-Satz-Verfehlen auftritt, verhält sich der Befehlspufferspeicher 16 wie eine normale 2-Wege-Pufferspeicherlogik – falls ein Treffer in dem 2-Wege-Pufferspeicher auftritt, dann wird dem Kern 12 ein Befehl von dem 2-Wege-Satz-Assoziativpufferspeicher zugeführt, anderenfalls wird der Befehl vom Hauptspeicher 20 entnommen.
  • Eine RAM-Satz-Treffersituation tritt auf, wenn die Adressenbits höherer Ordnung vom Kern 12 mit den Inhalten des Full_set Kennungsregisters 32 übereinstimmen und das Gesamtgültigkeitsbit gleich „1" ist (das Setzen des Gesamtgültigkeitsbits wird ausführlicher weiter unten beschrieben). Der RAM-Satz-Vergleich hat als Grundeinstellung die höchste Priorität. Eine Treffersituation zeigt an, daß der angeforderte Befehl im RAM-Satz abgebildet ist. Falls das gültige Eingangsbit 37, das der Zeile entspricht, die den Befehl enthält, auf „1" gesetzt ist, erzeugt die Logik 40 ein Treffer-Treffer-Signal, weil die Adresse den RAM-Satz trifft und der Befehl im RAM-Satz enthalten ist. Falls das entsprechende Gültigkeitsbit des RAM-Satzeingangs 37 gleich „0" ist, erzeugt die Logik ein Treffer-Verfehlen, weil die Adresse den RAM-Satz trifft, aber der Befehl noch nicht im RAM-Satz vorliegt. In diesem Fall wird der Befehl vom Hauptspeicher 20 geholt und in das Datenarray 38 des RAM-Satzes geladen. Ein Treffer in der RAM-Satz-Logik hat Vorrang über der normalen Pufferspeicherlogik. Die Standardlogik des 2-Wege-Pufferspeichers erzeugt immer ein Verfehlen, wenn die RAM-Satz-Logik einen Treffer erzeugt. Informationen können sowohl im RAM-Satz als auch im 2-Wege-Pufferspeicher liegen, ohne irgendein Fehlverhalten hervorzurufen; der duplizierte Pufferspeichereintrag im 2-Wege-Pufferspeicher wird schließlich durch den Ersetzen-Mechanismus des 2-Wege-Pufferspeichers zwangsweise geräumt werden, weil es nie benutzt werden wird.
  • Um einen RAM-Satz für den Betrieb vorzubereiten, muß das Full_Set Kennungsregister 32 mit der Startadresse geladen sein (set_start_addr) und das RAM_fill_mode Bit 24 muß für einen gewünschten Füllmodus konfiguriert sein. Die Schaltung zum Füllen des Pufferspeichers kann die gleiche sein, die genutzt wird, um Zeilen des Satz-Assoziativpufferspeichers zu füllen. Im bevorzugten Ausführungsbeispiel werden zwei Füllmoden angeboten: ein Zeile-für-Zeile-Füllmodus oder ein Satzfüllmodus.
  • Für eine Zeile-für-Zeile-Füllung (RAM_fill_mode=0) ist das gesamtgültige Bit 34 auf „1" gesetzt und die gültigen Eingangsbits 37 sind auf „0" gesetzt, wenn das Full_Set Kennungsregister 32 mit der Startadresse geladen wird. An diesem Punkt ist das Datenarray 38 leer (es wird davon ausgegangen, daß das Cache_Enable Bit 26 auf „1" gesetzt ist, um den Betrieb des Befehlspufferspeichers zu erlauben). Beim Empfang einer Adresse vom Kern 12 wird ein gültiges Eingangsbit 37 ausgewählt, basierend auf den Bits geringer Ordnung der Adresse. Wie oben ausgeführt, wird das Full_Set Kennungsregister 18 Bits [31:14] der Startadresse (set_start_addr) speichern, falls der RAM-Satz eine Größe von 16 KBytes hat, organisiert als ein Array von 1 K × 16 Bytes, wobei 16 Bytes äquivalent ist zu einer Blockzeile in dem zugeordneten 2-Wege-Pufferspeicher. Die Adresse, die jeden Eintrag des RAM-Satzes indiziert (ADDR[L]), wird 10 Bits [13:4] haben und die Befehlsadresse, die benutzt wird, um auf einen Befehl in der Zeile zuzugreifen, wird 3 Bits [3:1] haben (unter der Annahme, daß die Befehle 2 Bytes breit sind). Eine Zeile des Datenarrays 38 (an ADDR[L]) wird vom Hauptspeicher 20 jedesmal dann geladen, wenn eine Treffer-Verfehlen-Situation auftritt, weil (1) der Komparator 40 ein Übereinstimmen zwischen ADDR[H] und der Set_start_addr feststellt, (2) das gesamtgültige Bit 34 auf „1" gesetzt ist und (3) das gültige Bit 37, das mit der Zeile bei ADDR[L] assoziiert ist, geleert ist (V[ADDR[L]]="0"). Diese Situation deutet an, daß die ausgewählte Zeile auf dem RAM-Satz abgebildet ist, aber noch nicht jetzt in den Datenarray 38 des RAM-Satzes geladen ist. Wenn die Zeile in das Datenarray 38 vom Hauptspeicher 20 geladen ist, ist das gültige Bit 37, das der Zeile entspricht, auf „1" gesetzt. Dieser Ladevorgang hat dieselbe Zeiteinschränkung wie ein normaler Ladevorgang einer Pufferspeicherzeile, aber der Eintrag wird in dem RAM-Satz bleiben wie ein festgelegter Eintrag und deswegen wird die Prozessor-Vorrichtung nicht bei einem darauffolgenden Zugriff beeinträchtigt werden.
  • Wird andererseits ein Satzfüllmodus (RAM_fill_mode) gewählt, ist das gesamtgültige Bit 34 ursprünglich auf „0" gesetzt und bleibt „0", nachdem das Full_set Kennungsregister mit der Startadresse geladen ist. Die gültigen Bits 37 sind ebenfalls auf „0" gesetzt. Wenn die Startadresse in das Full_set Kennungsregister 32 geschrieben wird, wird das zugeordnete Datenarray 38 durch einen DMA (Direct Memory Access – direkter Speicherzugriff) Prozeß gefüllt. Da jede Zeile vom Hauptspeicher 20 geladen wird, ist das gültige Eingangsbit 37, das der Zeile entspricht, auf „1" gesetzt. Nachdem das Datenarray 38 vollständig vom Hauptspeicher 20 geladen wurde, wird das gesamtgültige Bit 34 auf „1" gesetzt. Diese Initialisierung des Datenarrays 38 dauert länger als bei dem Zeile-für-Zeile-Füllmodus, aber alle kritischen Echtzeitroutinen sind nach der Initialisierung verfügbar und die Systemwartezeit ist vorherbestimmt. Nachdem der RAM-Satz im Satzfüllmodus initialisiert ist, wird nie ein Verfehlen von Code, der auf dem RAM-Satz abgebildet ist, auftreten, selbst nicht beim ersten Zugriff.
  • Sowohl im Satz- als auch im Zeile-für-Zeile-Füllmodus kann der Inhalt eines RAM-Satzes geändert werden, indem einfach eine neue Set_start_addr in das Full_set Kennungsregister 32 geschrieben wird. Schreiben in dieses Register spült den Inhalt des entsprechenden Satzes aus und initiiert einen Ladeprozeß entsprechend dem Füllmodus. Die Steuerschaltung 22 kann die gleiche Schaltung zum Ausspülen von Zeilen des RAM-Satz-Pufferspeichers verwenden wie für den Satz-Assoziativpufferspeicher verwendet wird. Ausspülen eines vollständigen RAM-Satz-Pufferspeichers kann durchgeführt werden, indem einfach in das passende Full_set Kennungsregister 32 geschrieben wird. In ähnlicher Weise kann die Steuerschaltung 22 die gleiche Schaltung zum Füllen der Zeilen des RAM-Satz-Pufferspeichers verwenden wie für den Satz-Assoziativpufferspeicher verwendet wird. Der Vorgang zum Füllen eines vollständigen Pufferspeichers im Satzfüllmodus ist leicht unterschiedlich, weil auf mehrere Zeilen des Hauptspeichers 20 statt auf eine einzelne Zeile zugegriffen wird und diese in das Datenarray 38 gespeichert werden. Der RAM-Satz-Pufferspeicher kann mit einem Betriebssystem verwendet werden, das nicht speziell entworfen wurde, um mit einem RAM Satz-Pufferspeicher zu funktionieren indem kleinere Treiberänderungen verwendet werden.
  • Die Arbeitsweise der Treffer/Verfehlen-Logik wird in Verbindung mit dem Flußdiagramm der 4 beschrieben. In Schritt 50 wird eine Adresse vom Kern 12 in Verbindung mit einem Lesevorgang empfangen. Falls der Befehlspufferspeicher in Schritt 52 außer Betrieb gesetzt wird, wird in Schritt 54 der Befehl vom Hauptspeicher 20 entnommen. Falls der Pufferspeicher bereit ist, dann ergibt sich ein RAM-Satz-Verfehlen, falls entweder die Bits hoher Ordnung der Kernadresse (ADDR[H]) nicht mit den Bits hoher Ordnung der Startadresse (set_start_addr) übereinstimmen oder das gesamtgültige Bit 34 auf „0" gesetzt ist (Schritt 56). In diesem Fall wird die Information vom 2-Wege-Satz-Assoziativpufferspeicher dem Kern 12 zugeführt, falls es einen Pufferspeicher-Treffer im 2-Wege-Satz-Assoziativpufferspeicher (Schritt 58) gibt. Gibt es ein Verfehlen in dem 2-Wege-Satz-Assoziativpufferspeicher, wird die Zeile in den 2-Wege-Pufferspeicher geladen.
  • Noch einmal zurück zu Schritt 56, falls sowohl die Bits hoher Ordnung der Kernadresse (ADDR[H]) mit den Bits hoher Ordnung der Startadresse (set_start_addr) übereinstimmen als auch das gesamtgültige Bit 34 auf „1" gesetzt ist, dann gibt es einen RAM-Satz-Treffer auf der Zeile, die ADDR[L] entspricht und die gültigen Eingangsbits werden verwendet, um festzustellen, ob es sich um eine Treffer-Treffer-Situation handelt (in der der angeforderte Befehl im RAM-Satz vorhanden ist und dem Kern 12 zugeführt werden kann) oder eine Treffer-Verfehlen-Situation vorliegt (in der der angeforderte Befehl auf dem RAM-Satz abgebildet ist, aber die Information in das RAM-Satz Datenarray 38 vom Hauptspeicher 20 geladen werden muß). Falls in Schritt 64 das gültige Eingangsbit 37 für die Zeile anzeigt, daß die Zeile gültig ist (V[ADDR[L]]=1), ist der Befehl im RAM-Satz vorhanden und wird dem Kern über den RAM-Satz-Ausgangsbuffer 44 zugeführt. Falls auf der anderen Seite das gültige Eingangsbit 37 für die Zeile anzeigt, daß die Zeile nicht gültig ist (V[ADDR[L])=0), wird die Zeile in das Datenarray 38 des RAM-Satzes vom Hauptspeicher in Schritt 68 geladen.
  • Das Flußdiagramm in 4 kann leicht unter Verwendung von kombinatorischer Logik realisiert werden.
  • In der bevorzugten Ausführungsform bietet der Pufferspeicher 16 Flexibilität, in dem er ein, zwei oder drei RAM-Sätze bereitstellt, da verschiedene Anwendungen der Prozessor-Vorrichtung 10 verschiedene Echtzeitanforderungen haben. In dieser Ausführungsform definieren die Steuerbits DM/2SA 28 und Full_RAM_base 30 die Zuweisung von RAM-Sätzen in der 3-Wege-Pufferspeicher-Architektur. Tabelle I beschreibt die Möglichkeiten für die dargestellte Ausführungsform. Tabelle 1 Pufferspeicherkonfiqurationen
    Full_RAM_base DM/2SA Konfiguration
    0 0 Ein 2-Wege-Satz-Assoziiativpufferspeicher und ein RAM-Satz-Pufferspeicher
    1 0 Ein direkt abgebildeter Pufferspeicher und ein Zwei-Satz-RAM-Pufferspeicher
    1 1 Drei-Satz-RAM-Pufferspeicher
  • Das Full_Set Kennungsregister 32 verwendet eine Anzahl von Bits, die gleich ist der Länge der ADDR[H] für den assoziativen Weg des Pufferspeichers. Somit speichert das Full_set Kennungsregister 321 die Bits [31:14] und die Full_set Register 322 und 323 speichern die Bits [31:13], für die spezifischen hier festgelegten Datenarray-Größen und -Konfigurationen.
  • In einem 2-Wege-Satz-Assoziativpufferspeicher werden beide Kennungsspeicher 36 benutzt; in einem direkt abgebildeten Pufferspeicher wird ein einziger Kennungsspeicher 36 verwendet. Die Kennungsspeicher 36 werden für keinen der Pufferspeicher verwendet, die als RAM-Satz-Pufferspeicher konfiguriert sind. Damit benutzt in der Konfiguration, die einen einzigen RAM- Satz-Pufferspeicher und einen 2-Wege-Assoziativpufferspeicher verwendet, der RAM-Satz-Pufferspeicher das Full-Set Kennungsregister 321 , das gesamtgültige Bit 341 , gültige Eingangsbits 371 , Datenarray 381 , Komparator 401 , Treffer/Verfehlen-Logik 461 und Ausgangsbuffer 441 . Der 2-Wege-Satz-Assoziativpufferspeicher würde die Kennungsspeicher 362 und 363 , gültige Bits 372 und 373 , Datenarrays 382 und 383 , Treffer/Verfehlen-Logik 462 und 463 und Ausgangsbuffer 442 und 443 verwenden. Für eine Konfiguration, die zwei RAM-Sätze und einen direkt abgebildeten Pufferspeicher verwendet, würden die RAM-Sätze die Full_set Kennungsregister 321 und 322 , gesamtgültige Bits 341 und 342 , gültige Eingangsbits 371 und 372 , Datenarrays 381 und 382 , Komparatoren 401 und 402 , Treffer/Verfehlen-Logik 461 und 462 und Ausgangsbuffer 441 und 442 benutzen. Der direkt abgebildete Pufferspeicher würde den Kennungsspeicher 363 , gütige Bits 373 , Datenarray 383 , Treffer/Verfehlen-Logik 463 und Ausgangsbuffer 443 verwenden. Für eine Konfiguration, die drei RAM-Sätze verwendet, würden die RAM-Sätze die Full_set Kennungsregister 321 , 322 und 323 , gesamtgültige Bits 341 , 342 und 343 , gültige Eingangsbits 371 , 372 und 373 , Datenarrays 381 , 382 und 383 , Komparatoren 401 , 402 und 403 , Treffer/Verfehlen-Logik 461 , 462 und 463 und Ausgangsbuffer 441 , 442 und 443 verwenden.
  • Während das gezeigte Ausführungsbeispiel einen 3-Wege-Pufferspeicher bereitstellt, kann jede Anzahl von Pufferspeicherwegen bereitgestellt werden. Beispielsweise könnte ein 4-Wege-Pufferspeicher konfiguriert werden zur Benutzung und Kombination eines RAM-Satzes und satzassoziativer oder anderer Pufferspeicher-Architekturen. Die einzige zusätzlich benötigte Hardware für den zusätzlichen RAM-Satz-Pufferspeicher würde das zusätzliche Full_Set Kennungsregister und das gesamtgültige Bit sein.
  • Der RAM-Satz-Pufferspeicher ist kompatibel mit einem selbstmodifizierenden Code. Falls der Prozessorkern 12 einen Befehl dynamisch verändert, wird die Zeile, die die modifizierte Stelle enthält, aus dem Pufferspeicher gespült (das heißt ihr entsprechendes gültiges Bit 37 wird auf „0" gesetzt), parallel mit dem Vorgang des Schreibens in den Hauptspeicher. Das nächste Mal, wenn der Befehl vom Kern 12 angefordert wird, wird das entsprechende gültige Bit auf „0" gesetzt sein und eine Treffer/Verfehlen-Kondition hervorrufen. Die Zeile, die den angeforderten Befehl enthält, wird in den RAM-Satz-Pufferspeicher vom Hauptspeicher geladen. In der bevorzugten Ausführungsform werden Befehle nicht direkt im Pufferspeicher modifiziert, so daß der Hauptspeicher nicht aktualisiert werden muß, wenn eine Zeile im Pufferspeicher ersetzt wird.
  • Wenngleich die Erfindung in Verbindung mit einem Befehlspufferspeicher diskutiert wurde, könnte sie ebenso als ein Datenpufferspeicher oder in einem gemeinsamen Befehls-/Datenpufferspeicher Verwendung finden.
  • Die vorliegende Erfindung bietet deutliche Vorteile gegenüber dem Stand der Technik. Erstens kann der RAM-Satz-Pufferspeicher deutlich den Betrieb einer Prozessor-Vorrichtung verbessern, die Operationen in Echtzeit ausführt, weil ein gewünschter Code-Block in dem RAM-Satz für einen schnellen Zugriff gespeichert werden kann. Zweitens gibt es keinen zusätzlichen Nachteil wegen des Zugriffs auf einen größeren Datenspeicher 38 für einen RAM-Satz-Pufferspeicher, solange die Zugriffszeit des RAM-Satzes nicht größer ist als die Zugriffszeit auf den 2-Wege-Pufferspeicher. Drittens können ein oder mehrere RAM-Satz-Pufferspeicher mit einem minimalen Zusatzaufwand an Verschaltung gegenüber einem herkömmlichen Pufferspeicher hinzugefügt werden. Die einzigen zusätzlichen Schaltungsteile, die erforderlich sind, sind ein oder mehrere Full_Set Kennungsregister 32 und zugeordnete gesamtgültige Bits 34 (die gültigen Bits 37 sind für die RAM-Sätze nur nötig, wenn ein Zeile-für-Zeile-Füllmodus verfügbar ist, oder selbstmodifizierender Code erlaubt ist; falls der RAM-Satz nur Satzfüllen unterstützt ohne selbstmodifizierenden Code, würden die gültigen Bits 37 unnötig sein). Die gültigen Bits 37 von einem satzassoziativen oder anderem Pufferspeicher können für den RAM-Satz auch benutzt werden, falls die gültigen Bits nicht im Kennungsspeicher selbst enthalten sind. Viertens können die RAM-Sätze in sehr flexibler Art und Weise mit anderen Pufferspeichern, wie beispielsweise einem Assoziativ-Pufferspeicher oder einem direkt abgebildeten Pufferspeicher, wie gewünscht konfiguriert werden. Fünftens bietet der RAM-Satz-Pufferspeicher Vorteile gegenüber einem lokalen RAM, weil ein getrennter Mechanismus zum Laden des RAM für den RAM-Satz-Pufferspeicher nicht notwendig ist und keine spezifische Adressendekodierung in Serie mit der Speicherzugriffszeit benötigt wird. Sechstens kann der Pufferspeicher vom Betriebssystem oder anderer Software in der gleichen Art und Weise wie ein herkömmlicher Pufferspeicher gesteuert werden – Laden, Spülen, Zeilen-Annulieren, usw. können durch die Software ausgeführt werden, mit geringfügiger Software-Anpassung unter Verwendung herkömmlicher Pufferspeicher-Verwaltung.
  • Während die vorliegende Erfindung hier für eine spezifische Ausführungsform gezeigt ist, könnte sie in einer Anzahl von Realisierungen verwendet werden. Erstens könnte die RAM-Satz-Pufferspeicher-Architektur in jeder Art von Prozessor-Vorrichtung verwendet werden, einschließlich Mikroprozessoren, DSPs, gemischten analogen/digitalen Prozessoren und Coprozessoren. Zweitens könnten die Größen der Datenarrays, wie sie für eine bestimmte Realisierung benötigt werden, mit kleineren Modifizierungen verändert werden. Zum Beispiel kann es wünschenswert sein, einen RAM-Satz zu haben mit einem Datenarray, das größer ist, als der Satz-Assoziativpufferspeicher oder umgekehrt, abhängig von der Größe der Anwendungen mit Echtzeitvorgaben. Drittens, während die bevorzugte Ausführungsform es erlaubt, Pufferspeichertypen in flexibler Art und Weise zu mischen, kann es unter gewissen Umständen vorzuziehen sein, einen Satz-Pufferspeichertyp zu haben, wie einen einzigen RAM-Satz und einen Satz-Assoziativpufferspeicher. Viertens, die Architektur, die verwendet wird, um Nicht-RAM-Satz-Pufferspeicher zu realisieren (das heißt, die Satz-Assoziativpufferspeicher und die direkt abgebildeten Pufferspeicher) könnten von der hier gezeigten Architektur abweichende Architekturen verwenden, zum Beispiel ein CAM (Content Adressable Memory – inhaltsadressierbarer Speicher) könnte für die Kennungsspeicher 36 verwendet werden.
  • Obwohl die detaillierte Beschreibung der Erfindung auf gewisse beispielhafte Ausführungsformen gerichtet waren, sind zahlreiche Abänderungen dieser Ausführungsformen sowie alternative Ausführungsformen für den Fachmann erkennbar. Die Erfindung beinhaltet sämtliche Änderungen oder alternativen Ausführungsformen, die in den Schutzbereich der Ansprüche fallen.

Claims (10)

  1. Pufferspeicher-System, das folgendes umfaßt: ein erstes Pufferspeicher-Untersystem mit n Wegen, umfassend: n Datenspeicher (381 , 382 , 383 ), wobei jeder eine Mehrzahl von Eingängen zum Speichern von Information von einem Hauptspeicher (20) hat; n Kennungsspeicher (361 , 362 , 363 ) zum Speichern von Adreßinformation, die eine Hauptspeicheradresse identifiziert, assoziiert mit jedem der Eingänge in einem entsprechenden der n Datenspeicher; ein zweites Pufferspeicher-Untersystem mit m Wegen, umfassend: m Datenspeicher (381 , 382 , 383 ), wobei jeder eine Mehrzahl von Eingängen zum Speichern von Information von einem Hauptspeicher (20) hat; m Kennungsregister (321 , 322 , 323 ), wobei jedes Adreßinformation speichert, die einen benachbarten Block von Hauptspeicheradressen definiert, abgebildet auf einen entsprechenden der m Datenspeicher (381 , 382 , 383 ); und Logik (40, 42) zum Bestimmen von Pufferspeicher-Treffern in dem ersten n-Wege und in dem zweiten m-Wege Pufferspeicher-Untersystem, dadurch gekennzeichnet, daß m größer ist als 1 und daß Treffer vom zweiten m-Wege Pufferspeicher-Untersystem Vorrang haben gegenüber Treffern vom ersten n-Wege Pufferspeicher-Untersystem.
  2. Pufferspeicher-System nach Anspruch 1 und das weiterhin Pufferspeicher-Steuerschaltungstechnik umfaßt um eine oder mehr Linien von einem der Pufferspeicher-Untersysteme nach dem Verfehlen eines Pufferspeichers in dem ersten oder in dem zweiten Pufferspeicher-Untersystem zu füllen.
  3. Pufferspeicher-System nach Anspruch 1, wobei das erste Pufferspeicher-Untersystem einen n-Wege-Satz-Assoziativpufferspeicher umfaßt.
  4. Pufferspeicher-System nach Anspruch 3, wobei das erste Pufferspeicher-Untersystem einen direkt abgebildeten Pufferspeicher umfaßt.
  5. Pufferspeicher-System nach einem der Ansprüche 1 bis 3, wobei n größer 1 ist.
  6. Prozessor-Vorrichtung umfassend einen Prozessorkern (12) mit Schaltungstechnik zum Erzeugen von Adressen zum Zugreifen auf einen Hauptspeicher (20), dadurch gekennzeichnet, daß sie ein Pufferspeicher-System nach Anspruch 1 umfaßt und eine Steuerschaltung (22) zum Festlegen einer Pufferspeicherassoziation zwischen jedem Datenspeicher (38) und entweder einem Kennungsspeicher (36) oder einem Kennungsregister (32) und zum selektiven Zugreifen auf jeden Datenspeicher in Reaktion auf eine Adresse vom Prozessorkern basierend auf der Pufferspeicherassoziation.
  7. Prozessor-Vorrichtung nach Anspruch 6 und ferner umfassend ein gesamtgültiges Bit (G) zugehörig zu jedem der Kennungsregister (32).
  8. Prozessor-Vorrichtung nach Anspruch 7 und ferner umfassend ein gültiges Eingangsarray (37) umfassend ein gültiges Eingangsbit, das zu jedem Eingang eines zugehörigen Datenspeichers (38) gehört.
  9. Prozessor-Vorrichtung nach Anspruch 6, wobei die Steuerschaltung Konfigurationsbits umfaßt zum Festlegen der Pufferspeicherassoziation.
  10. Prozessor-Vorrichtung nach Anspruch 6, wobei die Steuerschaltung Assoziationen zwischen Kennungsspeichern (361 , 362 , 363 ) und Datenspeichern (381 , 382 , 383 ) und zwischen Kennungsregistern (321 , 322 , 323 ) und Datenspeichern (381 , 382 , 383 ) festlegen kann; so daß die Datenspeicher selektiv zwischen dem ersten n-Wege Pufferspeicher-Untersystem und dem zweiten m-Wege Pufferspeicher-Untersystem zugewiesen werden können.
DE69937611T 1999-12-06 1999-12-06 Intelligenter Puffer-Speicher Expired - Lifetime DE69937611T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP99403042A EP1107123B1 (de) 1999-12-06 1999-12-06 Intelligenter Puffer-Speicher

Publications (2)

Publication Number Publication Date
DE69937611D1 DE69937611D1 (de) 2008-01-03
DE69937611T2 true DE69937611T2 (de) 2008-10-23

Family

ID=8242200

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69937611T Expired - Lifetime DE69937611T2 (de) 1999-12-06 1999-12-06 Intelligenter Puffer-Speicher

Country Status (5)

Country Link
US (1) US6826652B1 (de)
EP (1) EP1107123B1 (de)
JP (1) JP2001297037A (de)
KR (1) KR100805974B1 (de)
DE (1) DE69937611T2 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6584546B2 (en) * 2001-01-16 2003-06-24 Gautam Nag Kavipurapu Highly efficient design of storage array for use in first and second cache spaces and memory subsystems
US7653787B2 (en) * 2001-05-07 2010-01-26 Alcatel-Lucent Usa Inc. System for storing web site names and caching audio resources of the most visited web sites
US7493607B2 (en) * 2002-07-09 2009-02-17 Bluerisc Inc. Statically speculative compilation and execution
US6934865B2 (en) * 2002-07-09 2005-08-23 University Of Massachusetts Controlling a processor resource based on a compile-time prediction of number of instructions-per-cycle that will be executed across plural cycles by the processor
US7278136B2 (en) * 2002-07-09 2007-10-02 University Of Massachusetts Reducing processor energy consumption using compile-time information
EP1387274A3 (de) 2002-07-31 2004-08-11 Texas Instruments Incorporated Speicherverwaltung für lokale Variablen
JP4713077B2 (ja) * 2003-03-26 2011-06-29 パナソニック株式会社 半導体装置
US7055004B2 (en) * 2003-09-04 2006-05-30 International Business Machines Corporation Pseudo-LRU for a locking cache
US7120748B2 (en) * 2003-09-04 2006-10-10 International Business Machines Corporation Software-controlled cache set management
US7069390B2 (en) * 2003-09-04 2006-06-27 International Business Machines Corporation Implementation of a pseudo-LRU algorithm in a partitioned cache
US7114035B2 (en) * 2003-09-04 2006-09-26 International Business Machines Corporation Software-controlled cache set management with software-generated class identifiers
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US7543113B2 (en) * 2004-07-02 2009-06-02 Hewlett-Packard Development Company, L.P. Cache memory system and method capable of adaptively accommodating various memory line sizes
EP1622009A1 (de) 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM-Architektur und Systeme
US8461648B2 (en) 2005-07-27 2013-06-11 Infineon Technologies Austria Ag Semiconductor component with a drift region and a drift control region
US8110868B2 (en) 2005-07-27 2012-02-07 Infineon Technologies Austria Ag Power semiconductor component with a low on-state resistance
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
KR100868585B1 (ko) 2007-05-29 2008-11-12 주식회사 아모텍 서지 흡수기 및 그의 제조방법
KR200451794Y1 (ko) * 2010-03-19 2011-01-12 주식회사 케이피 힌지 보강구조가 부착된 선박 가구용 하드코어 보강재
US8832508B2 (en) * 2010-11-18 2014-09-09 Advanced Micro Devices, Inc. Apparatus and methods for testing writability and readability of memory cell arrays

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5014195A (en) * 1990-05-10 1991-05-07 Digital Equipment Corporation, Inc. Configurable set associative cache with decoded data element enable lines
US5410669A (en) * 1993-04-05 1995-04-25 Motorola, Inc. Data processor having a cache memory capable of being used as a linear ram bank
JPH07271672A (ja) * 1994-03-30 1995-10-20 Toshiba Corp マルチウェイセットアソシアティブキャッシュシステム
JPH0877072A (ja) * 1994-08-31 1996-03-22 Oki Electric Ind Co Ltd キャッシュメモリ装置
US5822755A (en) * 1996-01-25 1998-10-13 International Business Machines Corporation Dual usage memory selectively behaving as a victim cache for L1 cache or as a tag array for L2 cache
US5966737A (en) * 1996-06-26 1999-10-12 Compaq Computer, Corp. Apparatus and method for serialized set prediction
JP3088303B2 (ja) * 1996-09-09 2000-09-18 日本電気アイシーマイコンシステム株式会社 キャッシュ・メモリ・バンク制御装置
US5809528A (en) * 1996-12-24 1998-09-15 International Business Machines Corporation Method and circuit for a least recently used replacement mechanism and invalidated address handling in a fully associative many-way cache memory
US6334173B1 (en) * 1997-11-17 2001-12-25 Hyundai Electronics Industries Co. Ltd. Combined cache with main memory and a control method thereof
US6185657B1 (en) * 1998-04-20 2001-02-06 Motorola Inc. Multi-way cache apparatus and method
US6415353B1 (en) * 1998-10-01 2002-07-02 Monolithic System Technology, Inc. Read/write buffers for complete hiding of the refresh of a semiconductor memory and method of operating same
EP1387274A3 (de) * 2002-07-31 2004-08-11 Texas Instruments Incorporated Speicherverwaltung für lokale Variablen

Also Published As

Publication number Publication date
US6826652B1 (en) 2004-11-30
KR20010062173A (ko) 2001-07-07
DE69937611D1 (de) 2008-01-03
KR100805974B1 (ko) 2008-02-25
EP1107123B1 (de) 2007-11-21
JP2001297037A (ja) 2001-10-26
EP1107123A1 (de) 2001-06-13

Similar Documents

Publication Publication Date Title
DE69937611T2 (de) Intelligenter Puffer-Speicher
DE69210714T2 (de) Durch Doppelzweck-On-Chip-Speicher implementierter Echtzeit-Cachespeicher
DE69031978T2 (de) Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern
DE69127111T2 (de) Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher
DE69721368T2 (de) Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher
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
DE69025302T2 (de) Hochleistungsrasterpuffer- und -cachespeicheranordnung
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE3688978T2 (de) Seitenspeicherverwaltungseinheit mit der fähigkeit nach wahl mehrere adressräume zu unterstützen.
DE3750337T2 (de) Behandlung von grossen Bereichen virtueller Speicher.
DE3586389T2 (de) Dynamisch zugeordnete lokale/globale speicheranordnung.
DE3687307T2 (de) Computeranordnungen mit cache-speichern.
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE69629140T2 (de) Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index
DE69032276T2 (de) Verfahren und Anordnung zur Verbesserung der Datenspeicherungsgeschwindigkeit eines Computersystems
DE3852695T2 (de) Multiprozessorsystem mit mehreren Speichern.
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE102005032949A1 (de) Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren
DE112008001666T5 (de) Hierarchische Cache-Tag-Architektur
DE69219433T2 (de) Virtueller Durchschreibcachespeicher Synonym-Adressierung und Cache-Ungültigkeitserklärungen
DE10056827A1 (de) Duale Verwendung von Cache-Verbindungen
DE60034998T2 (de) Verbesserungen in oder bezüglich von Mikroprozessoren
DE19908618A1 (de) Gemeinsam genutzter Hochleistungscachespeicher
DE69027919T2 (de) Anordnung und Verfahren zur Unterstützung des Zugriffs auf E/A-Geräte durch grosse, direkt abgebildete Datencache-Speicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition