DE102007055138B4 - System zum Zugreifen auf einen Einzelport-Mehrwege-Cache - Google Patents

System zum Zugreifen auf einen Einzelport-Mehrwege-Cache Download PDF

Info

Publication number
DE102007055138B4
DE102007055138B4 DE102007055138.1A DE102007055138A DE102007055138B4 DE 102007055138 B4 DE102007055138 B4 DE 102007055138B4 DE 102007055138 A DE102007055138 A DE 102007055138A DE 102007055138 B4 DE102007055138 B4 DE 102007055138B4
Authority
DE
Germany
Prior art keywords
cache
data
address
program instructions
tag
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.)
Active
Application number
DE102007055138.1A
Other languages
English (en)
Other versions
DE102007055138A1 (de
Inventor
Klaus Oberlaender
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE102007055138A1 publication Critical patent/DE102007055138A1/de
Application granted granted Critical
Publication of DE102007055138B4 publication Critical patent/DE102007055138B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

System zum Zugreifen auf einen Einzelport-Mehrwege-Cache, wobei das System Folgendes aufweist:einen Adress-Index-Multiplexer für jeden Weg, der verwendet wird, um auf eine Zeile von Daten und eine Zeile von Programmbefehlen im Mehrwege-Cache zuzugreifen, und der einen Index in Sätze mit Tag-Bits im Cache bereitstellt;einen Adress-Tag-Bit-Multiplexer für jeden Weg, der verwendet wird, um auf Sätze mit Tag-Bits im Mehrwege-Cache zuzugreifen; undeinen Konfigurationsblock für den Adress-Index-Multiplexer und den Adress-Tag-Bit-Multiplexer zum Identifizieren, welche Informationen und Tag-Bits im Cache Daten entsprechen und welche Programmbefehlen entsprechen,

Description

  • Das Zwischenspeichern von Daten in einem Cache in großer Nähe zu einem Processing-Core ist ein üblicher Ansatz zur Beschleunigung der Leistung des Mikroprozessors oder eines anderen Verarbeitungssystems. Der Cache kann ein kleiner interner Speicher bzw. Memory sein, der Daten und/oder Befehle, die kürzlich oder häufig verwendet wurden bzw. werden, speichert. Dadurch dass die Daten und/oder Befehle nahe an der Verarbeitungseinheit gespeichert werden, ist die Speicherzugriffszeit kurz und die Verarbeitungsgeschwindigkeit insgesamt kann im Vergleich zum direkten Zugriff auf einen größeren Systemspeicher, der eine längere Speicherzugriffszeit haben kann, erhöht werden.
  • Es sind zahlreiche Ansätze für das Cachen von Mikroprozessorsystemen bekannt. Viele Systeme verwenden getrennte Daten- und Programm-Caches. Dieser Ansatz ist eher unflexibel, da jeder Cache entweder Daten oder Programmen zugewiesen ist. Da bei Anwendungen das Verhältnis, das für einen effizienten Betrieb jeweils notwendig ist, variieren kann, sind getrennte Daten- und Programm-Caches möglicherweise nicht für unterschiedliche Anwendungen optimiert, und in der Tat sind sie für viele Anwendungen eher zu groß, um dadurch zu gewährleisten, dass alle Anwendungen schnell laufen. Separate Caches implizieren auch ein doppeltes Steuerungs-Overhead und verdoppeln das Memory-/Umgebungs-Overhead, beispielsweise die interne Steuerung, Wortleitungs-Decoder und Sense Amps.
  • Um den Platz auf dem Chip, der vom Cache verwendet wird, so klein wie möglich zu halten, verwenden viele Systeme kombinierte Daten- und Programm-Caches, die eher flexibler sind, da sie sowohl von der Daten- als auch der Programmseite des Mikroprozessors verwendet werden können. Viele Systeme ermöglichen auch eine Dedizierung bestimmter Wege eines Mehrwege-Cache, um entweder die Befehle für eine Programmabrufeinheit oder die Daten für eine Lade-/Speichereinheit im Cache zu speichern. Diese Dedizierung ist nötig, um eine ständige Ersetzung von zeitkritischen, im Cache gespeicherten Code-Abschnitten durch einen Zugriff auf Daten, die im Memory verstreut sind und somit eine geringe Trefferquote haben, zu verhindern. In solchen Systemen kann der Nutzer individuell, beispielsweise durch Software, die exakte Aufteilung der Cache-Abschnitte auf die einzelnen Mikroprozessor-Untereinheiten (Lade-/Speicher- vs. Abrufeinheit) bestimmen. Die Leistung kann in solchen Systemen schwach sein, da Daten- und Programmzugriffe möglicherweise gleichzeitig und parallel versucht werden, der Cache jedoch nur jeweils einen Zugriff auf einmal bewältigen kann. Somit beträgt die Bandbreite im Vergleich zu derjenigen bei Verwendung separater Caches nur etwa die Hälfte. Die Verwendung von Dualport-SRAMs benötigt viel mehr Platz und verbraucht mehr Leistung. Solche SRAMS würden auch viele potentiell schwierige Problemfälle erzeugen, die durch umgebende Steuerlogik gelöst werden müssten.
  • In der US 5386547 A ist ein System zum Zugreifen auf einen Cache gezeigt. In dem System wird ein einzelner Ausgabe-Multiplexer verwendet, mit dessen Hilfe selektiert wird, ob Daten von mit einem Level-2-Cache assoziierten Daten-Leitungen zur Ausgabe verwendet werden sollen, oder - bei einem Cache-Miss - Daten von weiteren Leitungen, die mit einem Speicher eines anderen Hierarchie-Levels assoziiert sind, als der Level-2-Cache.
  • Die Erfindung hat zur Aufgabe, ein System zum Zugreifen auf einen Einzelport-Mehrwege-Cache zur Verfügung zu stellen, wobei bei einem aus Einzelportspeichern gebildeten Mehrwege-Cache gleichzeitig in dem Cache gespeicherte Daten und Programmbefehle ausgegeben werden können.
  • Die Erfindung erreicht dieses Ziel durch den Gegenstand des Anspruchs 1. Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
  • Figurenliste
    • 1 ist ein Blockschema, das ein System für den gleichzeitigen Zugriff auf einen Einzelport-Cache für sowohl Daten als auch Programmbefehle gemäß einem Ausführungsbeispiel darstellt.
    • 2 ist ein Blockschema eines Systems für den gleichzeitigen Zugriff auf einen Einzelport-Cache für Daten und Programmbefehle gemäß einem Ausführungsbeispiel.
    • 3 ist ein Ablaufschema, das ein Verfahren zum gleichzeitigen Zugreifen auf einen Einzelport-Cache für Daten und Programmbefehle in einem Ausführungsbeispiel darstellt.
    • 4 ist ein Blockschema einer alternativen Anordnung an Multiplexern in 2.
  • Ausführliche Beschreibung
  • In der folgenden Beschreibung wird auf die begleitende Zeichnung Bezug genommen, die einen Teil dieser Beschreibung bildet, und die zur Erläuterung bestimmter Ausführungsformen gezeigt ist, die in die Praxis umgesetzt werden können. Diese Ausführungsformen werden in ausführlicher Einzelheit beschrieben, um den Fachmann in die Lage zu versetzen, die Erfindung in die Praxis umzusetzen, und selbstverständlich können auch andere Ausführungsformen verwendet werden und es können strukturelle, logische und elektrische Änderungen vorgenommen werden, ohne vom Bereich der Erfindung abzuweichen. Die folgende Beschreibung von Ausführungsbeispielen soll daher nicht als Beschränkung aufgefasst werden, und der Bereich der vorliegenden Erfindung wird durch die beigefügten Ansprüche definiert.
  • In einer Ausführungsform wird ein Einzelport-Cache verwendet, um gleichzeitig Daten und Befehle für ein System bereitzustellen. In dem System finden gleichzeitig Programmabrufzugriffe und Datenlade-/Datenspeicherzugriffe unter der Voraussetzung statt, das nur Einzelport-Memories verwendet werden. Ausgewählte Hardware, die den Einzelport-Cache umgibt, ist verdoppelt, um eine Ausnutzung vom im Wesentlichen der gesamten Bandbreite für gleichzeitige Programm- und Datenzugriffe zu ermöglichen, vorausgesetzt, es existiert eine Wegededizierung für Laden/Speichern und Programmdaten, wobei kaum Platz hinzugefügt wird und kein Dualport-Speicher oder separate Caches erforderlich sind. Der Ausdruck „gleichzeitig“, wie hierin verwendet, bezeichnet die Fähigkeit des Cache, Daten während eines einzigen Abruftakts bereitzustellen, und muss nicht so aufgefasst werden, dass Ereignisse exakt zur gleichen Zeit stattfinden müssen. In einigen Ausführungsformen kann der Zugriff ungefähr oder im Wesentlichen gleichzeitig stattfinden.
  • 1 stellt ein System 100 dar, das einen Prozessor 110 einschließt. In einer Ausführungsform kann es sich bei dem Prozessor 110 um einen Mikroprozessor oder irgendeine andere Art von Prozessor handeln, der Daten entsprechend Programmbefehlen verarbeitet. Der Prozessor 110 weist einen Memory-Controller 115 auf oder ist mit diesem verkoppelt. Der Memory-Controller 115 kann eine Programmabrufeinheit und eine Datenlade-/Datenspeichereinheit aufweisen, die Adressen für den Zugriff auf Programme und Daten in einem Einzelport-Cache 120 bereitstellt. In einigen Ausführungsformen können weitere Schaltungseinrichtungen wie nachstehend dargestellt verwendet werden, um die Adressierung des Cache 120 zu multiplexen bzw. zu vervielfältigen und um zu bestimmen, ob sich abgefragte Informationen im Cache befinden. In einigen Ausführungsformen können solche Schaltungseinrichtungen Teil des Memory-Controller sein oder anderweitig mit diesem und dem Cache verkoppelt sein.
  • Ein Zugriff auf Informationen im Cache kann den gleichzeitigen Zugriff auf Daten und Programmbefehle beinhalten. In einer Ausführungsform ist der Cache ein Mehrwege-Cache, wobei Informationen von mehreren Datensätzen in den Wegen mit jedem Cache-Zugriff bereitgestellt werden. Ein Paar Multiplexer 125, einer für Daten und einer für Programmbefehle, wird verwendet, um Informationen, die vom Cache erhalten werden, zu sortieren, so dass abgefragte Daten und Programmbefehle gleichzeitig ausgegeben werden. Die Daten und die Programmbefehle können in verschiedenen Memory- oder Speichereinrichtungen 130 und 135 gespeichert werden, auf die der Cache 120 einen schnelleren Zugriff ermöglicht.
  • In weiteren Ausführungsformen können SRAMs mit drei Ausgangszuständen bzw. Tristate-Ausgängen verwendet werden. Die Tristate-Ausgänge können miteinander verdrahtet sein, der Ausgang kann entsprechend gesteuert werden, um nur einem SRAM einen Data-Drive zu ermöglichen. Ein Multiplexer kann auf verschiedene Weise implementiert sein, z.B. über Transfer-Gates und/oder Solution usw.) In einer weiteren Ausführungsform können zwei Tristate-Ausgänge einem Memory hinzugefügt und einzeln gesteuert werden.
  • In einer Ausführungsform ist die Bandbreite des Cache 120 effektiv verdoppelt. In einer Ausführungsform wird mindestens ein 2-Wege-Cache verwendet. Für mehr Flexibilität bei der Verwendung eines größeren Teils des Cache für Daten oder Programmbefehle können 4-Wege-, 8-Wege- oder höhere, beispielsweise 32-Wege-Caches verwendet werden. Es können auch andere als Zweierpotenzen verwendet werden, beispielsweise ein 6-Wege-Cache. Somit können mehrere Wege Daten zugewiesen werden, wenn eine Anwendung datenintensiv ist. Die Zuweisung der Wege zum Laden/Speichern oder Befehlen kann, falls gewünscht, für jede Anwendung neu programmiert werden, ohne die Systemarchitektur umgestalten zu müssen.
  • 2 zeigt bei 200 ein weiteres Detail eines Systems, das einen gleichzeitigen Zugriff auf Daten und Programmbefehle von einem Einzelport-Cache zeigt. Ein Indexadressen-Multiplexer 210 empfängt einen Indexabschnitt von zwei Adressen vom Prozessor. Es ist zwar nur ein Weg dargestellt, aber dies wird für alle Wege durchgeführt. Auf die Adressen wird in einer Ausführungsform als Index Bezug genommen, einer für eine Ladung oder Speicherung von Daten 212 und der andere für einen Programmbefehlabruf bei 214. Die Indizes, die einen Tag-Abschnitt einschließen, werden an einen Mehrwege-Cache 215 angelegt, der in der Darstellung Z Zeilen von Daten mit y Bits in jeder Zeile und Z Zeilen von Programmbefehlen mit y Bits in jeder Zeile enthält. Die beiden verschiedenen Zeilenarten, Daten und Programmbefehle, sind jeweils mit einem Paar Ausgangsmultiplexern bei 220 verkoppelt, die y Bit Daten zum Laden/Speichern bei 222 und y Bit Programmbefehlabrufe bei 224 bereitstellen.
  • Da ein Cache die abgerufenen Informationen nicht unbedingt enthalten muss, ist auch ein Überprüfungsmechanismus vorgesehen. Abschnitte der Adressen, die verwendet werden, um auf den Cache zuzugreifen, enthalten auch Tag-Adressen-Bits. Tag-Adressen-Bits werden einem Tag-Adressen-Multiplexer 230 bereitgestellt, von dem zwar nur einer dargestellt ist, von denen aber für jeden Weg einer vorhanden ist. Sowohl Tag-Adressen-Bits zum Abrufen von Programmbefehlen bei 232 und zum Laden/Speichern von Daten 234 werden dem Multiplexer 230 bereitgestellt. Diese Bits werden gemultiplext und einem Tag-Bit-Abschnitt 235 zusammen mit der gemultiplexten Adresse über den Multiplexer 210 bereitgestellt. Ein Tag-Bit-Cache-Abschnitt 235 enthält Z Zeilen mit jeweils w Tag-Bits - Tag-Adresse, Valids, Dirty usw. Sie werden ferner Mehrfach-Komparatoren 240 bereitgestellt, jeweils einem für jeden Weg. Komparatoren 240 vergleichen die Tag-Adress-Bits vom Prozessor, der auf den Cache zuzugreifen versucht, mit denen, die im Cache gespeichert sind, um zu bestimmen, ob die Informationen, seien es nun Daten- oder Programmbefehle, derzeit im Cache 215 gespeichert sind. Die Komparatoren 240 sind mit den Ausgangs-Multiplexern 220 verkoppelt, um diese so zu steuern, dass sie die Daten und Befehle, die tatsächlich im Cache 215 gespeichert sind, bereitstellen. Eine Miss- oder No-Hit-Anzeige wird ausgegeben, wenn die Daten und/oder Befehle bei 222 und 224 ignoriert werden sollten. Die Komparatoren weisen zwei Ausgänge auf und steuern in einer Ausführungsform Laden/Speichern und Programm unabhängig voneinander. Die Steuerung beeinflusst den Multiplexer 220 und die Treffer-Logik 260. Es kann auch eine andere Logik, die in der Lage ist, Informationen zu vergleichen und für eine entsprechende Steuerung zu sorgen, anstelle des Komparators verwendet werden, falls gewünscht. Ebenso können viele verschiedene Cache-Hit- oder -Miss-Algorithmen verwendet werden.
  • Ein Konfigurationsblock 250 stellt eine Cache-Konfigurationssteuerung für die Multiplexer 210 und 230 bereit, um festzustellen, welche Informationssätze und Tag-Bits im Cache 215, 235 Daten entsprechen und welche Programmbefehlen entsprechen. Der Konfigurationsblock 250 und die Komparatoren 240 sind auch mit einem Cache-Hit- oder Cache-Miss-Block 260 verkoppelt, um sicherzustellen, dass Ergebnisse ignoriert werden, wenn die Tag-Bits keinen Cache-Hit festgestellt haben. Die Steuerung der Multiplexer 220 wird dementsprechend auch vom Konfigurationsblock 250 beeinflusst. Es existieren 2 Ausgänge für jeden Komparator für die Multiplexer 220 und nur ein Ausgang der Komparatoren darf von einem Hit aktiviert werden, da der andere für einen anderen Datentyp dediziert ist.
  • In einer Ausführungsform können Stillstandtakte und Wartetakte im Prozessor 110, beispielsweise einem Mikroprozessor, die auf Kollisionen im Cache zurückgehen, verhindert werden. Dies wird durch Verdoppeln der Adresspfade für jedes Daten/Tag-Array jedes Weges bewerkstelligt, wodurch eine Selektion möglich ist, wenn der Weg durch die Adresse der Lade/Speicher- oder Programmabrufeinheiten gesteuert werden sollte. Außerdem berücksichtigt die Steuereinheit, die auch dafür zuständig ist, den Weg-Hit in die Daten-Multiplexersignale zu übersetzen, welcher Weg für Laden/Speichern und Programmabrufen zugelassen ist, und steuert die beiden Daten-Multiplexer dementsprechend und unabhängig voneinander. Außerdem werden zwei Hit-Signale von der Steuerlogik erzeugt, eines für die Lade/Speicher- und eines für die Programmabrufeinheit, wobei wiederum die Wegededizierung für Lade/Speicher- und Programmabrufeinheiten berücksichtigt wird. Außerdem stellt die Steuerlogik sicher, dass in einem Fall, wo es gleichzeitig zu zwei Misses kommt, einem Miss im Lade/Speicher-Zugriff und einem im Programmabrufzugriff, die notwendigen Refills und möglicherweise ein Write-Back nacheinander durchgeführt werden. Solche Cache-Misses können auf bekannte Weise behandelt werden.
  • Eine typische Ausführungsform weist mindestens 4 oder 8 Wege auf, wobei zwei zwar auch gehen, aber nicht die Flexibilität bei der Zuweisung variierender Cache-Abschnitte bereitstellen. Andere Wegzahlen, wie 5, 6 oder 7, sind ebenfalls möglich. Ein Datenbus kann eine Breite von 16, 32 oder 64 Bits für einen Datenabschnitt des Cache und ungefähr 64 oder 128 oder sogar 256 Zeilen pro Weg aufweisen. Die Zahl der Zeilen pro Weg kann in verschiedenen Ausführungsformen viel größer oder kleiner sein. Jede Cache-Zeile kann in der Regel ein Mehrfaches der Datenbusbreite ausmachen, wie 4 x 64 Bits. Beispielsweise kann eine Cache-Zeile (gekennzeichnet durch einen Eintrag im Tag-Array) Daten, die 4 Zeilen entsprechen, im zugewiesenen Datenabschnitt aufweisen. In einem solchen Fall definieren die unteren Bits der Adresse, welcher Teil der Cache-Zeile gelesen werden soll, und die oberen Adress-Bits entscheiden über den Index. In einer Ausführungsform selektiert der gleiche Index den Tag-Eintrag in den Tag-Arrays, der nur einmal pro Cache-Zeile vorkommt. Der Tag-Eintrag enthält die Adress-Tags, in der Regel mit einer Breite von 20 Bits, je nach der Zahl der Cache-Zeilen und der Adressbusbreite des Prozessors. In einer Ausführungsform kann der Adressenraum von einer Adressbusbreite von 32 Bits oder in zukünftigen Ausführungsformen von mehr Bits adressiert werden. Zusätzlich speichert das Tag Informationen über den Status der Cache-Zeile, beispielsweise ob sie dirty und/oder valid ist. Das Tag kann auch Paritäts-Bits des Tag-Abschnitts und die Paritäten für die Datenabschnitte enthalten. Paritäts-Bits für Daten können alternativ mit den Daten gespeichert werden. Paritäts- und Fehlerkorrektur-Bits können nach Wunsch verwendet werden, dies ist jedoch kein Muss.
  • In weiteren Ausführungsformen kann das System 200 mehrere andere Caches einschließen, ebenso wie einen Speicher mit wahlfreiem Zugriff, einen entfernbaren Speicher und einen nicht-entfernbaren Speicher. Das System 200 kann eine Computer-Umgebung einschließen oder Zugriff auf diese haben, die einen Eingang, einen Ausgang und eine Kommunikationsverbindung aufweist. Das System kann in einer vernetzten Umgebung unter Verwendung einer Kommunikationsverbindung für den Fernanschluss eines oder mehrerer Computer operieren. Der fern stehende Computer kann unter anderem ein Personal Computer (PC), ein Server, ein Router, ein Netzwerk-PC, eine Peer-Einrichtung oder ein anderer üblicher Netzwerkknoten oder dergleichen sein. Die Kommunikationsverbindung kann ein Local Area Network (LAN), ein Wide Area Network (WAN) oder ein anderes Netzwerk sein.
  • 3 ist ein Ablaufschema, das ein Verfahren 300 zum gleichzeitigen Zugreifen auf einen Mehrwege-Cache, der einen einzigen Port aufweist, darstellt. Bei 310 adressiert das Verfahren gleichzeitig einen Weg oder einen Datensatz und einen Weg oder einen Programmbefehlssatz im Mehrwege-Cache. Bei 320 wird auch auf Sätze mit Tag-Bits im Mehrwege-Cache zugegriffen. Das Verfahren bestimmt dann bei 330, ob gewünschte Daten und/oder Programmbefehle im Mehrwege-Cache vorhanden sind. Das Verfahren bestimmt dann bei 330, ob gewünschte Daten und/oder Programmbefehle im Mehrwege-Cache vorhanden sind. Bei 340 werden Daten und Programmbefehle, die aus dem Cache ausgelesen werden, so selektiert, dass sowohl Daten als auch Programmbefehle aus den Datensätzen im Mehrwege-Cache selektiert werden, vorausgesetzt, es wird festgestellt, dass sie vorhanden sind.
  • In einer weiteren Ausführungsform, die bei 400 in 4 dargestellt ist, können mehrere Busse als Alternative zu Multiplexern verwendet werden. Ein SRAM weist mehrere Wege auf, wie vom Weg 0 bei 410 bis zum Weg x bei 412 dargestellt. Jeder Weg weist einen ersten Ausgang OUT1 415 und einen zweiten Ausgang OUT2 bei 417 auf. Die Ausgänge sind mit einem Lade-/Speicherbus 425 und einem Programmbus 427 verkoppelt. Die Busse arbeiten in dieser Ausführungsform ähnlich wie Ausgangs-Multiplexer.

Claims (7)

  1. System zum Zugreifen auf einen Einzelport-Mehrwege-Cache, wobei das System Folgendes aufweist: einen Adress-Index-Multiplexer für jeden Weg, der verwendet wird, um auf eine Zeile von Daten und eine Zeile von Programmbefehlen im Mehrwege-Cache zuzugreifen, und der einen Index in Sätze mit Tag-Bits im Cache bereitstellt; einen Adress-Tag-Bit-Multiplexer für jeden Weg, der verwendet wird, um auf Sätze mit Tag-Bits im Mehrwege-Cache zuzugreifen; und einen Konfigurationsblock für den Adress-Index-Multiplexer und den Adress-Tag-Bit-Multiplexer zum Identifizieren, welche Informationen und Tag-Bits im Cache Daten entsprechen und welche Programmbefehlen entsprechen,
  2. System nach Anspruch 1, das ferner Komparatoren aufweist, die mit dem Adress-Tag-Bit-Multiplexer und dem Mehrwege-Cache verkoppelt sind und die Tag-Bits von beiden vergleichen, um zu bestimmen, ob gewünschte Daten und/oder Programmbefehle im Mehrwege-Cache vorhanden sind.
  3. System nach Anspruch 2, das ferner einen Hit-Anzeiger, der mit den Komparatoren verkoppelt ist und vom Konfigurationsblock gesteuert wird, aufweist, um Hit-Anzeigen für sowohl eine Programmbefehlabrufung als auch eine Datenladung/-speicherung bereitzustellen.
  4. System nach einem der Ansprüche 1-3, wobei eine variable Anzahl von Wegen für Daten dediziert werden und andere Wege für Programmbefehle dediziert werden.
  5. System nach einem der Ansprüche 1-4, wobei der Mehrwege-Cache mindestens ein 2-Wege-Cache ist.
  6. System nach einem der Ansprüche 1-4, wobei der Mehrwege-Cache mindestens ein 4-Wege-Cache ist.
  7. System nach einem der Ansprüche 1-4, wobei der Mehrwege-Cache zumindest ein 6-Wege-Cache ist.
DE102007055138.1A 2006-11-20 2007-11-19 System zum Zugreifen auf einen Einzelport-Mehrwege-Cache Active DE102007055138B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/561,494 US7707358B2 (en) 2006-11-20 2006-11-20 Dual access for single port cache
US11/561,494 2006-11-20

Publications (2)

Publication Number Publication Date
DE102007055138A1 DE102007055138A1 (de) 2008-07-03
DE102007055138B4 true DE102007055138B4 (de) 2020-11-05

Family

ID=39471678

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007055138.1A Active DE102007055138B4 (de) 2006-11-20 2007-11-19 System zum Zugreifen auf einen Einzelport-Mehrwege-Cache

Country Status (2)

Country Link
US (2) US7707358B2 (de)
DE (1) DE102007055138B4 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10157133B2 (en) 2015-12-10 2018-12-18 Arm Limited Snoop filter for cache coherency in a data processing system
US9990292B2 (en) 2016-06-29 2018-06-05 Arm Limited Progressive fine to coarse grain snoop filter
US10042766B1 (en) * 2017-02-02 2018-08-07 Arm Limited Data processing apparatus with snoop request address alignment and snoop response time alignment
US11288209B2 (en) * 2019-09-20 2022-03-29 Arm Limited Controlling cache entry replacement based on usefulness of cache entry

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5386547A (en) * 1992-01-21 1995-01-31 Digital Equipment Corporation System and method for exclusive two-level caching

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4450954A (en) * 1982-01-25 1984-05-29 Graco Inc. Electrostatic spray support
US4628859A (en) * 1985-04-15 1986-12-16 Hines Andrew D Apparatus and workpiece fixture for electrostatic spray coating
US4776520A (en) * 1987-05-11 1988-10-11 Binks Manufacturing Company Rotary atomizer
US4928859A (en) * 1988-10-28 1990-05-29 Krahn Roy J Quick disconnect for aerosol spray can
US5081952A (en) * 1990-10-05 1992-01-21 Caterpillar Inc. Paint fixture for supporting article during electrostatic spraying
CA2051246C (en) * 1990-10-09 2000-02-29 Jeffrey R. Shutic Apparatus for mounting and moving coating dispensers
US5482556A (en) * 1990-10-09 1996-01-09 Nordson Corporation Apparatus for mounting and moving coating dispensers
EP0803095A1 (de) * 1994-10-14 1997-10-29 Silicon Graphics, Inc. Indexierung und mulitplizierung von verschachtelten cache-speichermatrixen
US5607069A (en) * 1995-09-29 1997-03-04 Thermal Clean, Inc. Painting fixture with modular crossbars
FR2748595B1 (fr) * 1996-05-10 1998-07-10 Sgs Thomson Microelectronics Memoire a acces parallele
EP0850693B1 (de) * 1996-07-18 2003-05-21 Abb K.K. Farbspritzvorrichtung
US5946710A (en) * 1996-11-14 1999-08-31 Unisys Corporation Selectable two-way, four-way double cache interleave scheme
AU777395B2 (en) * 1999-03-12 2004-10-14 Mt Industries, Inc. Misting apparatus for application of coating materials to skin surface
US20030080220A1 (en) * 1999-09-16 2003-05-01 Mather Brian D. Powder spray gun with inline angle spray nozzle
US6497766B1 (en) * 2000-07-19 2002-12-24 Basf Corporation Electrostatic spray fixture for plastic test panels
US6811094B2 (en) * 2000-12-20 2004-11-02 Abb K.K. Rotary atomizing head type coater
US6516387B1 (en) * 2001-07-30 2003-02-04 Lsi Logic Corporation Set-associative cache having a configurable split and unified mode
US6848828B2 (en) * 2002-03-08 2005-02-01 Ntn Corporation Foil bearing and spindle device using the same

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5386547A (en) * 1992-01-21 1995-01-31 Digital Equipment Corporation System and method for exclusive two-level caching

Also Published As

Publication number Publication date
US20080120466A1 (en) 2008-05-22
DE102007055138A1 (de) 2008-07-03
US20100191893A1 (en) 2010-07-29
US7707358B2 (en) 2010-04-27
US9146874B2 (en) 2015-09-29

Similar Documents

Publication Publication Date Title
DE102005029852B4 (de) Steueranordnung zum Freigeben einer oder mehrerer virtueller Speicherseiten nach Beendigung eines Programms in einem Multiprozessorcomputersystem
DE69933328T2 (de) Mehrweg-Cachespeichervorrichtung und Verfahren
DE19807872A1 (de) Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
DE2415900B2 (de) Rechenautomat mit mehreren mit je einem Vorratsspeicher versehenen Rechenanlagen
DE112008001679T5 (de) Cache-Speicher mit konfigurierbarer Assoziativität
EP0013737A1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE3606211A1 (de) Multiprozessor-computersystem
DE2847216A1 (de) Datenverarbeitungssystem mit mehrprogrammbetrieb
DE2841041A1 (de) Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren
DE102007018033A1 (de) Kohärenzverzeichnisaktualisierung
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE2547488A1 (de) Mikroprogrammierte datenverarbeitungsanlage
DE3046912C2 (de) Schaltungsanordnung zum selektiven Löschen von Cachespeichern in einer Multiprozessor-Datenverarbeitungsanlage
DE60127520T2 (de) Prozessor mit Befehlscache mit niedrigem Stromverbrauch
DE102007055138B4 (de) System zum Zugreifen auf einen Einzelport-Mehrwege-Cache
DE102018119881A1 (de) Verwaltung einer DRAM-Bankaktivierung
DE19908618A1 (de) Gemeinsam genutzter Hochleistungscachespeicher
DE60003426T2 (de) Statusbits für cachespeicher
DE2912073A1 (de) Stapelspeicheranordnung zur kurzzeitigen speicherung von informationen bei nichtabsetzbarkeit dieser informationen in einem datenverarbeitungssystem
DE4114053A1 (de) Computersystem mit cachespeicher
DE102009004810A1 (de) Verfahren zum Ausführen eines oder mehrerer Programme auf einem Mehrkernprozessor und Mehrkernprozessor
DE3832758C2 (de) Verfahren zum Adressieren eines im Rückschreib-Modus betriebenen virtuellen Cache-Speichers
DE102009027567A1 (de) Cache-Speichervorrichtung
DE102009032071A1 (de) Technik für das Disponieren von Threads
DE102014012155A1 (de) Verbesserte verwendung von speicherressourcen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8125 Change of the main classification

Ipc: G06F 12/08 AFI20080311BHDE

R016 Response to examination communication
R082 Change of representative

Representative=s name: VON LIERES BRACHMANN SCHULZE PATENTANWAELTE, DE

Representative=s name: VON LIERES BRACHMANN SCHULZE PATENTANWAELTE IN, DE

R082 Change of representative

Representative=s name: VON LIERES BRACHMANN SCHULZE PATENTANWAELTE IN, DE

R018 Grant decision by examination section/examining division
R020 Patent grant now final