DE19809640A1 - Speed-optimized cache system - Google Patents

Speed-optimized cache system

Info

Publication number
DE19809640A1
DE19809640A1 DE19809640A DE19809640A DE19809640A1 DE 19809640 A1 DE19809640 A1 DE 19809640A1 DE 19809640 A DE19809640 A DE 19809640A DE 19809640 A DE19809640 A DE 19809640A DE 19809640 A1 DE19809640 A1 DE 19809640A1
Authority
DE
Germany
Prior art keywords
cache
memory
data
access
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE19809640A
Other languages
German (de)
Inventor
Martin Vorbach
Robert Muench
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.)
Pact Informationstechnologie GmbH
Original Assignee
Pact Informationstechnologie GmbH
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 Pact Informationstechnologie GmbH filed Critical Pact Informationstechnologie GmbH
Priority to DE19809640A priority Critical patent/DE19809640A1/en
Priority to PCT/DE1999/000639 priority patent/WO1999045474A2/en
Priority to DE19980350T priority patent/DE19980350D2/en
Priority to AU36985/99A priority patent/AU3698599A/en
Publication of DE19809640A1 publication Critical patent/DE19809640A1/en
Withdrawn legal-status Critical Current

Links

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/0877Cache access modes
    • G06F12/0886Variable-length word access
    • 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/0851Cache with interleaved addressing
    • 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/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation

Abstract

Several cache memories are used instead of a continuously large cache memory. Each memory has a defined address range. A plurality of arithmetic units can access a plurality of cache memories due to the fact that the cache memory is selected on the basis of defined addresses. If several arithmetic units access the same cache memory, one of the arithmetic units undergoes arbitration per time unit and is granted the right of access. If the data is not available in the cache memory, bursting occurs when accessing the memory, that is, a plurality of data is written on a complete line of cache memories (CL) in the memory or read from the memory.

Description

1. Hintergrund der Erfindung1. Background of the Invention

Bausteine der Gattung DFP (vgl. DE 44 16 881 A1, P 196 51 075.9), RAW-Machines, Digitale Signalprozessoren, DPGA, als auch Mikroprozessoren der nächsten Generation besitzen mehrere interne hochparallelen Rechenwerke. FPGAs werden häufig als numerische Koprozessoren eingesetzt und werden mit einer Vielzahl von möglichst parallel arbeitenden Rechenwerken programmiert.Building blocks of the genus DFP (cf. DE 44 16 881 A1, P 196 51 075.9), RAW machines, digital signal processors, DPGA, as next-generation microprocessors also have several internal highly parallel arithmetic units. FPGAs are often called numerical coprocessors and are used with a Large number of arithmetic units working in parallel if possible programmed.

Die oben genannten Bausteine erreichen interne Datentransferraten von mehreren Gigabyte pro Sekunde. Eine Vielzahl von Rechenwerken (CELs) benötigen zeitgleich Daten aus dem Cache.The above modules reach internal Data transfer rates of several gigabytes per second. A A large number of arithmetic units (CELs) require data at the same time from the cache.

1.1 Stand der Technik1.1 State of the art

Cachesysteme nach dem Stand der Technik lassen nur Zugriffe von einem Rechenwerk oder wenigen Rechenwerken pro Zeiteinheit zu. Die Datenraten der Caches werden durch möglichst breite Cachezeilen (Cachelines) erreicht.State-of-the-art cache systems only allow access from one arithmetic unit or a few arithmetic units per unit of time to. The data rates of the caches are as wide as possible Cache lines reached.

1.2 Probleme1.2 problems

Cachesysteme nach dem Stand der Technik sind ungeeignet für schnelle Bausteine der oben angegebenen Gattungen, da parallele zeitgleiche Zugriffe nur bedingt möglich sind. Durch die hohen Cachebreiten ist der Aufwand und die damit verbundene zeitliche Verzögerung zum Zerlegen der Cachedaten in die angeforderten Daten nicht unerheblich. Der Aufbau von Cachesystemen für schnelle Bussysteme wie z. B. den RAMBUS ist äußerst kompliziert und technisch kaum, oder nur mit erheblichem Aufwand und Kosten realisierbar, da dabei erhebliche Transferraten auftreten, die besonders schnelle Speicher und Steuerungen benötigen.State-of-the-art cache systems are unsuitable for  fast building blocks of the above-mentioned types, because parallel simultaneous accesses are only possible to a limited extent. By The high cache width is the effort and therefore the connected time delay for disassembling the cache data not insignificant in the requested data. The construction of Cache systems for fast bus systems such as B. is the RAMBUS extremely complicated and technically hardly, or only with considerable effort and costs can be realized because of this considerable transfer rates occur that are particularly fast Storage and controls need.

1.3 Verbesserung durch die Erfindung, Aufgabe1.3 Improvement by the invention, task

Aufgabe der Erfindung ist ein hochgradig paralleles Cachesystem, das geschwindigkeitsoptimiert eine Vielzahl von gleichzeitigen Zugriffen ermöglicht und die Daten in der für die jeweiligen Rechenwerke optimalen Breite liefert.The object of the invention is a highly parallel Cache system that optimizes a variety of speed allows simultaneous access and the data in the for provides the respective arithmetic units optimal width.

2. Beschreibung der Erfindung2. Description of the invention 2.1 Übersicht über die Erfindung, Abstrakt2.1 Overview of the invention, abstract

Anstatt eines durchgehenden breiten Cache-Speichers, werden mehrere Cache-Speicher verwendet, wobei jeder der Speicher einen eindeutigen Adressraum besitzt. Eine Mehrzahl von Rechenwerken kann auf eine Mehrzahl von Cache-Speichern zugreifen, indem der Cache-Speicher anhand eindeutiger Adressen selektiert wird. Greifen mehrere Rechenwerke auf denselben Cache-Speicher zu, wird jeweils eines der Rechenwerke pro Takteinheit arbitriert und erhält die Zugriffsrechte. Liegen die Daten im Cache-Speicher nicht vor, wird bei Zugriffen auf den Speicher grundsätzlich gebursted, d. h. eine Mehrzahl von Daten wird über eine komplette Zeile von Cachespeichern (CL) in den Speicher geschrieben, bzw. aus den Speicher gelesen. Besonders durch diese Eigenschaft wird der Aufbau eins Cachesystems für moderne Bussystem wie z. B. den RAMBUS erheblich vereinfacht.Instead of having a continuous wide cache, uses multiple cache memories, each of the memories has a unique address space. A majority of Arithmetic units can have a plurality of caches access by caching based on unique Addresses is selected. Take up several arithmetic units the same cache memory, one of the Arithmetic units per clock unit arbitrate and receive the Access rights. If the data is not in the cache memory, is always bursted when the memory is accessed,  d. H. a lot of data is over a complete line written to or from cache memories (CL) read the memory. Especially through this property the construction of a cache system for modern bus systems such as B. the RAMBUS considerably simplified.

2.2 Detailbeschreibung der Erfindung2.2 Detailed description of the invention

Es existieren eine Mehrzahl von Cache-Speichern, wobei jeder einen eindeutigen Adressraum besitzt. Dabei wird der Adressraum des einzelnen CS anhand der niederwertigen Adressbits An . . . A0 so festgelegt, da die CS einen linear zusammenhängenden, unterbrechungsfreien Adressraum bilden. Die Anzahl der Cache-Speicher muß 2n für n = 0, 1, 2, 3, . . . betragen, d. h. die Adressbits An . . . A0 werden zur Selektion des jeweiligen Cache-Speichers verwendet. Die folgende Tabelle gibt einen Überblick über die Anzahl der Cache-Speicher und die Dekodierung der Adressbits. n ist eine beliebige ganze Zahl (Integer, s. o.); C# gibt die Anzahl der Cachespeicher an; ADR CACHE 2n gibt den Binärwert von An . . . A0 zur Selektion des entsprechenden Cache-Speichers an; die Tabelle ist bei größeren n entsprechend in Breite und Tiefe zu erweitern:
There are a number of cache memories, each with a unique address space. The address space of the individual CS is based on the low-order address bits A n . . . A 0 is determined in such a way that the CS form a linearly connected, uninterrupted address space. The number of cache memories must be 2 n for n = 0, 1, 2, 3,. . . amount, ie the address bits A n . . . A 0 are used to select the respective cache memory. The following table gives an overview of the number of cache memories and the decoding of the address bits. n is any integer (integer, see above); C # indicates the number of caches; ADR CACHE 2 n gives the binary value of A n . . . A 0 for selection of the corresponding cache memory; For larger n the table should be expanded accordingly in width and depth:

2.2.1 Anschluß an ein Rechenwerk2.2.1 Connection to an arithmetic unit

Zum Anschluß eines Rechenwerkes (CEL) an die CS wird über einen Dekoder, der An . . . A0 auskodiert, die jeweils adressierte CS(An × 2n + . . . A1 × 21 + A0 × 2⁰) selektiert. Die Adress-, Daten- und Kontrolleitungen der CS werden dabei über Demultiplexer und Multiplexer mit dem Rechenwerk verbunden. Des weiteren ist eine Synchronisation notwendig, die CEL signalisiert, wann die Daten vom Cache akzeptiert wurden, bzw. im Cache zur Verfügung stehen.To connect an arithmetic unit (CEL) to the CS, a decoder, the A n . . . A 0 is encoded, the respective addressed CS (A n × 2 n +... A 1 × 2 1 + A 0 × 2⁰) selected. The address, data and control lines of the CS are connected to the arithmetic unit via demultiplexers and multiplexers. Synchronization is also required, which signals to the CEL when the data from the cache has been accepted or is available in the cache.

2.2.2 Anschluß an den Speicher2.2.2 Connection to the memory

Die Verwaltung des Speichers übernimmt eine Statemachine, die auf einen Cache-Miss reagiert. Ein Cache-Miss tritt auf, wenn auf Adressbereiche zugegriffen wird, die sich nicht im Cache befinden. A state machine takes over the management of the memory responded to a cache miss. A cache miss occurs when access to address areas that are not in the cache are located.  

Die Statemachine schreibt zunächst die neu zu belegende Cacheline (CL) in den Speicher. Eine CL sind gemäß dem Stand der Technik alle Daten, die sich auf der gleichen horizontalen Speicherebene befinden - also die gleiche Y-Adresse haben -, wie die angeforderten. Eine CL erstreckt sich dabei über alle CS, wobei die genaue Definition im nächsten Absatz folgt. Die Statemachine liest danach die neuen Daten aus dem Speicher in die CL. Beim Schreiben und Lesen der CL wird vorzugsweise zur Steigerung der Busgeschwindigkeit ein Bus-Burst, nach dem Stand der Technik, durchgeführt.The state machine first writes the new one Cacheline (CL) in memory. A CL are according to the state the technology all data that is on the same horizontal Storage level - i.e. have the same Y address -, like the requested. A CL extends over all of them CS, the exact definition follows in the next paragraph. The The state machine then reads the new data from the memory in the CL. When writing and reading the CL is preferably used Increase the bus speed a bus burst after which State of the art.

Da die CS wie bereits erläutert immer 2n-fach angeordnet sind gilt, i.b. für eine CL, folgendes: Jede beliebige Adresse der Breite g wird in einen Teil B der Breite b, der der Größe des Caches entspricht und einen Restteil T der Breite t = g - b zerlegt. Adressteil B läßt sich in einen höherwertigen Teil M der Breite m = b - n und einen niederwertigen Teil N der Breite n zerlegen, dabei entspricht 2n der Anzahl der CS. Für einen beliebigen Wert W, wobei die Adresse W in die Werte Wm = An × 2n + . . . + A1×21 + A0×2⁰ des Adressteils M und die Werte Wn = Am × 2m + A(m-1) × 2(m-1) + . . . + A(n+1) × 2(n+1) + An × 2n des Adressteils N zerlegt ist (⇒ W=[Wm, Wn]), gilt für Wn somit 0 ≦ Wn < 2n. Die Daten der Adresse W=[Wm, Wn] befinden sich in CS(Wn); die Daten der Adresse W=[Wm, 0] befinden sich in CS(0); die Daten der Adresse W=[Wm, (2n-1)] befinden sich in CS((2n-1)). Eine CL erstreckt sich dabei im einfachsten Fall über alle Wn von 0 bis (2n-1). Ein Burst beginnt bei Wn = 0 (⇒ W=[Wm, 0]) und endet bei Wn = (2n-1) (⇒ W=[Wm, (2n-1)]). Since the CS, as already explained, is always arranged 2 n times, ib for a CL, the following: any address of the width g is divided into a part B of the width b which corresponds to the size of the cache and a remainder T of the width t = g - b disassembled. Address part B can be broken down into a more significant part M of width m = b-n and a less significant part N of width n, 2 n corresponding to the number of CS. For any value W, where the address W is in the values Wm = A n × 2 n +. . . + A 1 × 2 1 + A 0 × 2⁰ of the address part M and the values Wn = A m × 2 m + A (m-1) × 2 (m-1) +. . . + A (n + 1) × 2 (n + 1) + A n × 2 n of the address part N is broken down (⇒ W = [Wm, Wn]), the following applies for Wn 0 ≦ Wn <2 n . The data of the address W = [Wm, Wn] are in CS (Wn); the data of the address W = [Wm, 0] are in CS (0); the data of the address W = [Wm, (2 n -1)] are in CS ((2 n -1)). In the simplest case, a CL extends over all Wn from 0 to (2 n -1). A burst begins at Wn = 0 (⇒ W = [Wm, 0]) and ends at Wn = (2 n -1) (⇒ W = [Wm, (2 n -1)]).

Um längere Bursts durchzuführen kann W in 3 Adressteile Wo, Wp, Wn der Längen o, p, n zerlegt werden. Dabei entspricht m = o+p, n ist wie gehabt ⇒ W=[Wo, Wp, Wn]. Ein Burst läuft in diesem Fall über die Speicherworte W=[Wo, 0, 0] bis W=[Wo, (2p-1), (2n-1)], dabei wird jeder CS 2p-mal durchlaufen, die CL erstreckt sich über alle Wp, Wn.To perform longer bursts, W can be broken down into 3 address parts Wo, Wp, Wn of lengths o, p, n. Here, m = o + p, n is as usual ⇒ W = [Wo, Wp, Wn]. In this case, a burst runs via the memory words W = [Wo, 0, 0] to W = [Wo, (2 p -1), (2 n -1)], each CS being run through 2 p times CL extends over all Wp, Wn.

Der Teil T wird bei einem Cache-Zugriff nach dem Stand der Technik im sogenannten TAG-RAM abgelegt. Der Inhalt des TAG-RAMs (t_tag) wird bei Zugriffen mit dem Teil T der Zugriffsadresse verglichen. Ist t_tag ungleich T, liegen die betreffenden Daten nicht im Cache, ein sogenannter Cache-Miss liegt vor. Die Daten müssen aus dem Speicher transferiert werden. Ist t_tag gleich T liegen die betreffenden Daten im Cache, ein sogenannter Cache-Hit liegt vor. Das Cache Hit/Miss Verfahren entspricht dem Stand der Technik.The part T is in a cache access according to the state of the Technology stored in the so-called TAG-RAM. The content of the TAG RAM (t_tag) is used for access with part T of Access address compared. If t_tag is not equal to T, they are data in question is not in the cache, a so-called cache miss is available. The data must be transferred from memory become. If t_tag is equal to T, the relevant data are in the Cache, a so-called cache hit. The cache hit / miss The method corresponds to the state of the art.

2.2.3 Mehrere Rechenwerke2.2.3 Several arithmetic units

Der beschriebene Cache besitzt mehrere CS, die jeweils eine eindeutige Adresse besitzen und dadurch über einen eindeutigen Adressraum verfügen. Eine Vielzahl von Rechenwerken kann zeitgleich auf die CS zugreifen, sofern jedes Rechenwerk einen unterschiedlichen Adressraum An . . . A0 verwendet. Um diese Einschränkung zu umgehen, wird jedem CS ein Arbeiter zugeordnet, der, sofern mehrere Rechenwerke auf denselben Adressraum An . . . A0 zugreifen, eines der Rechenwerke pro Zeiteinheit arbitriert. Dazu werden die Busse aller Rechenwerke auf einen Multiplexer/Demultiplexer geschaltet. The cache described has several CS, each of which has a unique address and therefore has a unique address space. A large number of arithmetic units can access the CS at the same time, provided that each arithmetic unit has a different address space A n . . . A 0 used. In order to circumvent this restriction, each CS is assigned a worker who, if several arithmetic units on the same address space A n . . . Access A 0 , one of the arithmetic units arbitrates per time unit. For this purpose, the buses of all arithmetic units are switched to a multiplexer / demultiplexer.

Jeder Bus liefert ein aus An . . . A0 auskodiertes Signal, das genau einen der CS selektiert. Über den einem CS zugeordneten Arbeiter wird jeweils einer der Busse zum Zugriff auf das jeweilige CS selektiert. Die Synchronisation der CEL mit den CS muß im Falle einzelner Rechenwerke für jedes Rechenwerk einzeln von CS generiert werden, um zusätzlich anzuzeigen, ob das jeweilige Rechenwerk das akutell Arbitrierte ist.Each bus delivers one from A n . . . A 0 coded signal that selects exactly one of the CS. One of the buses is selected for access to the respective CS via the worker assigned to a CS. In the case of individual arithmetic units, the synchronization of the CEL with the CS must be generated individually by CS for each arithmetic unit in order to additionally indicate whether the respective arithmetic unit is the currently arbitrated.

2.2.4 Anschluß an schnelle Bussysteme nach dem Stand der Technik2.2.4 Connection to fast bus systems according to the state of the technology

Schnelle Bussysteme (z. B. RAMBUS nach dem Stand der Technik) tauschen die Speicherdaten über eine Vielzahl von Registern oder Ports (BR) aus, in die die Daten sequentiell in einer Art Interleaving zum Senken der Taktfrequenzen geschrieben werden (vgl. RAMBUS-RAC). Dabei ist grundsätzlich kein Cache zwischen den BR und den CEL vorgesehen.Fast bus systems (e.g. state-of-the-art RAMBUS) exchange the memory data via a large number of registers or ports (BR) into which the data is sequentially sorted in a kind Interleaving to lower the clock frequencies can be written (see RAMBUS-RAC). There is basically no cache between the BR and the CEL.

Aufgrund des besseren Datendurchsatzes wird ein Verfahren zum Cachen von Daten, die mittels derart schneller Bussysteme übertragen werden, beschrieben:
Dabei wird jeweils eine CS einem oder einer Menge von Registern zugeordnet, d. h. jedes BR oder jede Gruppe von BR wird von einem CS gecachet. Aufgrund der Eindeutigkeit der Adressen An . . . A0 für jede CS ist diese Zuordnung möglich, sofern auch die Register eindeutig denselben An . . . A0 zugeordnet sind. Das ist grundsätzlich der Fall, wenn ein Burst, wie mehrfach angegeben, immer bei An × 2n + . . . + A1 × 21 + A0 × 2⁰ = 0 beginnt und immer bei An × 2n + . . . + A1 × 21 + A0 × 2⁰ = 2n-1 endet.
Because of the better data throughput, a method for caching data that is transmitted using such fast bus systems is described:
A CS is assigned to one or a set of registers, ie each BR or group of BRs is cached by a CS. Due to the uniqueness of the addresses A n . . . A 0 for each CS this assignment is possible, provided that the registers also clearly have the same A n . . . A 0 are assigned. This is basically the case if a burst, as stated several times, always at A n × 2 n +. . . + A 1 × 2 1 + A 0 × 2⁰ = 0 begins and always at A n × 2 n +. . . + A 1 × 2 1 + A 0 × 2⁰ = 2n-1 ends.

Die Anzahl der BR muß 2r für r = 0, 1, 2, 3, . . . betragen, was jedoch für gewöhnlich der Fall ist. Das Verhältnis von CS zu BR beträgt 2v = 2n : 2r.The number of BR must be 2 r for r = 0, 1, 2, 3,. . . amount, which is usually the case. The ratio of CS to BR is 2 v = 2 n : 2 r .

  • - Ist v = 0, 2v = 1 ist jedem CS ein BR zugeordnet.- If v = 0, 2 v = 1, a BR is assigned to each CS.
  • - Es existieren mehr BR als CS (v<0, 2v<1):
    Grundsätzlich werden 2-v Cachelines je lesendem oder schreibendem Zugriff übertragen. Dabei ist die Adresse des jeweiligen BR Ar . . . A0 = Av . . . An+1 . . . An . . . A0.
    - There are more BR than CS (v <0, 2 v <1):
    Basically, 2 -v cachelines are transferred for each read or write access. The address of the respective BR A r . . . A 0 = A v . . . A n + 1 . . . A n . . . A 0 .
  • - Es existieren mehr CS als BR (v<0, 2v<1):
    Um eine Cacheline schreibend oder lesend zu übertragen, finden 2v Zugriffe auf das Bussystem statt. Dabei ist die Adresse der CS An . . . A0 = Av . . . Ar+i . . . Ar . . . A0.
    - There are more CS than BR (v <0, 2 v <1):
    In order to transmit a read or write cache line, 2v accesses to the bus system take place. The address of the CS A n . . . A 0 = A v . . . A r + i . . . A r . . . A 0 .
3. Kurzbeschreibung der Diagramme3. Brief description of the diagrams

Fig. 1a, b zeigt die Anordnung der Caches Fig. 1a, b shows the arrangement of caches

Fig. 2a zeigt einen Cache nach dem Stand der Technik Fig. 2a shows a cache according to the prior art

Fig. 2b zeigt einen erfindungsgemäßen Cache FIG. 2b shows a cache according to the invention

Fig. 3 zeigt einen erfindungsgemäßen Cache mit zeitgleicher, arbitrierter Zugriffsmöglichkeit durch mehrere Rechenwerke Fig. 3 shows a cache according to the invention with simultaneous, arbitrated access possibility by several arithmetic units

Fig. 4 zeigt den internen Aufbau eines eines Caches Fig. 4 shows the internal structure of a cache

Fig. 5 zeigt den Anschluß eines erfindungsgemäßen Caches an den Speicher Fig. 5 illustrates the connection of a cache memory according to the invention to the

Fig. 6 zeigt den Ablauf in der Statemachine des Caches Fig. 6 shows the flow of the State Machine in the cache

Fig. 7 zeigt den Anschluß des erfindungsgemäßen Cachesystems an ein schnelles Bussystem am Beispiel eines RAMBUS Controllers (RAC) Fig. 7 shows the connection of the cache system of the invention to a fast bus system using the example of a RAMBUS controller (RAC)

Fig. 8 zeigt den Aufbau einer Multiplexer/Demultiplexer Struktur Fig. 8 shows the construction of a multiplexer / demultiplexer structure

3.1 Detailbeschreibung der Diagramme3.1 Detailed description of the diagrams

In Fig. 1a ist eine Mehrzahl (2n) von Cache-Speichern (0101) abgebildet. Die Adressen An . . . A0 werden zur Selektion eines aus den 2n Cache-Speichern verwendet. Eine Cacheline (CL) reicht von An × 2n + . . . + A1 × 21 + A0 × 2⁰ = 0 bis An × 2n + . . . + A1 × 21 + A0 × 2⁰ = 2n-1. Der Cache ist 2m Einträge tief, d. h. er reicht von An+m . . . An+1. Der Bereich An+m+t . . . An+m+1 wird in das, dem Cache-Speicher zugeordneten, TAG-RAM (0102) eingetragen.A plurality (2 n ) of cache memories ( 0101 ) is shown in FIG. 1a. The addresses A n . . . A 0 are used to select one of the 2 n cache memories. A cacheline (CL) ranges from A n × 2 n +. . . + A 1 × 2 1 + A 0 × 2⁰ = 0 to A n × 2 n +. . . + A 1 × 2 1 + A 0 × 2⁰ = 2 n -1. The cache is 2 m entries deep, ie it ranges from A n + m . . . A n + 1 . The area A n + m + t . . . A n + m + 1 is entered in the TAG-RAM ( 0102 ) assigned to the cache memory.

Der Burst reicht über eine CL von
The burst extends over a CL of

bis
to

In Fig. 1b ist eine Mehrzahl (2n) von Cache-Speichern (0101) abgebildet. Die Adressen An . . . A0 werden zur Selektion eines aus den 2n Cache-Speichern verwendet. Eine Cacheline (CL) reicht über mehrere Cachezeilen von An×2n + . . . + A1×21 + A0×2⁰ = 0 bis A(n+p)×2(n+p) + . . . + A1×21 + A0×2⁰ = 2n+p-1. Der Cache ist 2m Einträge tief, d. h. er reicht von An+m . . . An+1. Dabei gilt An+m . . . An+1 = An+m . . . An+p . . . An+1. Der Bereich An+m+t . . . An+m+1 wird in das, dem Cache-Speicher zugeordneten, TAG-RAM (0102) eingetragen. A plurality (2 n ) of cache memories ( 0101 ) is shown in FIG. 1b. The addresses A n . . . A 0 are used to select one of the 2 n cache memories. A cache line (CL) extends over several cache lines of A n × 2 n +. . . + A 1 × 2 1 + A 0 × 2⁰ = 0 to A (n + p) × 2 (n + p) +. . . + A 1 × 2 1 + A 0 × 2⁰ = 2 n + p -1. The cache is 2 m entries deep, ie it ranges from A n + m . . . A n + 1 . A n + m applies. . . A n + 1 = A n + m . . . A n + p . . . A n + 1 . The area A n + m + t . . . A n + m + 1 is entered in the TAG-RAM ( 0102 ) assigned to the cache memory.

Der Burst reicht über eine CL von
The burst extends over a CL of

bis
to

In Fig. 2a ist ein einzelner Cache (0201) nach dem Stand der Technik abgebildet. Dabei kann die Datenbreite zum angeschlossenen Rechenwerk um ein Vielfaches höher (b») sein als die Datenbreite des Speicher-Anschlusses (0202).A single cache ( 0201 ) according to the prior art is shown in FIG. 2a. The data width to the connected arithmetic unit can be many times larger (b ») than the data width of the memory connection ( 0202 ).

Fig. 2b zeigt einen erfindungsgemäßen Cache-Speicher, der aus mehreren einzelnen Speichern (0203) besteht. Durch die von den Rechenwerken stammenden Adressen An . . . A0 (0204) wird über einen Multiplexer/Demultiplexer (0205) einer der Cache-Speicher für den Zugriff durch das Rechenwerk (0211) ausgewählt. Eine in Fig. 5 und Fig. 6 näher beschriebene Statemachine (0206) steuert den Zugriff und den Burst der Cachelines in den Speicher (0210). Dazu wählt sie über den Multiplexer/Demultiplexer (0207) anhand der von 0206 generierten Adressen (0208) während eines Burst jeweils eines der 0203 aus. Die Adresse der Cacheline (je nach Implementierung An+m . . . An+1 oder An+m . . . An+p . . . An+1) wird über 0209 den 0203 zugeführt. FIG. 2b shows a cache memory according to the invention, which consists of several individual memories (0203). Through the addresses A n coming from the arithmetic units. . . A 0 ( 0204 ) one of the cache memories is selected for access by the arithmetic unit ( 0211 ) via a multiplexer / demultiplexer ( 0205 ). A state machine (0206) described in more detail in Fig. 5 and Fig. 6 controls the access and the burst of the cache lines in the memory (0210). To do this, it selects one of the 0203 using the multiplexer / demultiplexer ( 0207 ) based on the addresses ( 0208 ) generated by 0206 during a burst. The address of the cache line (depending on the implementation A n + m ... A n + 1 or A n + m ... A n + p ... A n + 1 ) is fed to 0203 via 0209 .

Fig. 2c zeigt den internen Aufbau eines Caches nach dem Stand der Technik (vgl. Fig. 2a). Im Speicher (0212) sind mehrere Datenwörter (0213) in horizontaler Richtung zusammengefaßt, auf die nur ein gemeinsamer Zugriff möglich ist. Eine Cacheline (CL) umfaßt mehrere Datenwörter mit gleicher Y-Adresse. Fig. 2c shows the internal construction of a cache according to the state of the art (see. Fig. 2a). Several data words ( 0213 ) are combined in the memory ( 0212 ) in the horizontal direction, to which only common access is possible. A cacheline (CL) comprises several data words with the same Y address.

Fig. 3 zeigt eine mögliche Ausgestaltung des Anschlusses der CS an mehrere CELs. Dabei wird jeder CS (0304) ein Multiplexer/Demultiplexer (0301) zugeordnet, dem der Bus (0302) jedes Rechenwerkes zugeführt wird. Dabei sind die Adressleitungen An . . . A0 auskodiert (0303) und dienen als Zugriffsanforderung auf den jeweiligen der Auskodierung angeordneten CS. Ein Arbeiter (0305), vorzugsweise ein SCRR-ARB (vgl. PACT10) selektiert eine der Zugriffsanforderungen und steuert 0301 entsprechend an. Fig. 3 shows a possible embodiment of the connection of the CS to several CELs. Each CS ( 0304 ) is assigned a multiplexer / demultiplexer ( 0301 ) to which the bus ( 0302 ) of each arithmetic unit is fed. The address lines are A n . . . A 0 is encoded ( 0303 ) and serves as an access request to the respective CS arranged for the encoding. A worker ( 0305 ), preferably an SCRR-ARB (see PACT10) selects one of the access requests and controls 0301 accordingly.

Fig. 4 zeigt einen möglichen Aufbau eines 0304. Die in der Zeichnung nach oben geführten Leitungen dienen zum Anschluß des Speichers, die nach unten geführten Leitungen dienen zum Anschluß an das/die Rechenwerk(e) (CEL). Über einen Multiplexer (0407) gelangen die Adressen An+m . . . An+1 als CAn+m . . . CAn+1 (0404) an den Adresseingang des TAG-RAMs 0401. Der TAG-RAM speichert bei Zugriffen durch die Statemachine (0206) die Adressen An+m+t . . . An+m+1. Greifen die CEL auf den Cache zu, werden mittles 0402 die in 0401 gespeicherten Adressen mit den von CEL angeforderten Adressen verglichen. Sind die Adressen "gleich", befinden sich die Daten in dem Cache-RAM (0403) was einen Cache-Hit bedeutet, ansonsten befinden sich die Daten nicht im Cache-RAM, entsprechend bedeutet "ungleich" wird ein Cache-Miss signalisiert. Fig. 4 shows a possible structure of a 0304th The lines routed upwards in the drawing are used to connect the memory, the lines routed downwards are used for connection to the calculator (s) (CEL). The addresses A n + m arrive via a multiplexer ( 0407 ). . . A n + 1 as CA n + m . . . CA n + 1 ( 0404 ) to the address input of TAG-RAM 0401 . When accessed by the state machine ( 0206 ), the TAG-RAM stores the addresses A n + m + t . . . A n + m + 1 . If the CEL accesses the cache, the addresses stored in 0401 are compared with the addresses requested by CEL using 0402 . If the addresses are "equal", the data are in the cache RAM ( 0403 ), which means a cache hit, otherwise the data are not in the cache RAM, correspondingly "unequal" means a cache miss is signaled.

0404 wird als Adresseingang an 0403 geführt. Die Daten werden bei Lesezugriffen über den Demultiplexer/Multiplexer 0405 ausgegeben, bzw. bei Schreibzugriffen über den Multiplexer/Demultiplexer 0405 geschrieben. 0404 is routed to 0403 as an address input . The data is output for read accesses via the demultiplexer / multiplexer 0405 , or for write accesses via the multiplexer / demultiplexer 0405 .

Mittels des 1-bit Speichers 0406 wird vermerkt, ob die CEL die Daten an einer bestimmten Adresse geändert haben. Greifen die CEL schreibend auf die Daten zu, wird an der Adresse (0404) der Daten "Dirty" in 0406 geschrieben. Bei einem lesenden Zugriff bleibt 0406 unverändert. Bei schreibendem Zugriff auf die Daten durch die Statemachine 0206 wird "clean" an die betreffende Adresse geschrieben. Anhand von "dirty" und "clean" erkennt 0206 ob die Cacheline von den CEL verändert wurde ("dirty") und in den Speicher zurückgeschrieben werden muß, oder ob die unveränderte Cacheline einfach überschrieben werden kann. Der Ablauf der Statemachine 0206 wird in Fig. 6 dargestellt.The 1-bit memory 0406 is used to record whether the CEL changed the data at a specific address. If the CEL has write access to the data, "Dirty" in 0406 is written to the address ( 0404 ). With read access, 0406 remains unchanged. With write access to the data by the state machine 0206 , "clean" is written to the relevant address. On the basis of "dirty" and "clean", 0206 recognizes whether the celeline has been changed by the CEL ("dirty") and has to be written back into memory, or whether the unchanged cacheline can simply be overwritten. The sequence of the state machine 0206 is shown in FIG. 6.

Über den Vergleicher 0409 wird festgestellt, ob die Statemachine 0206 auf dieselben Adressen (Same_Adr) wie die CEL zugreift. Das bedeutet, das 0206 verändert die Daten in 0403, während die CEL den Zugriff auf genau diese Daten anfordert - oder umgekehrt. Da zu einem Zeitpunkt entweder die CEL oder 0206 auf die Daten zugreift, ergibt sich daraus kein Konsistenzproblem. Jedoch geht erhebliche Geschwindigkeit verloren, wenn Daten, die von den CEL benötigt werden, zunächst von 0206 mit anderen Daten überschrieben werden, um nach einem daraus zwangsläufig resultierenden Cache-Miss wieder neu von 0206 geschrieben werden zu werden. Liegt ein Cache-Hit UND (0410) ein Same_Adr vor, wird 0206 signalisiert (FreeReq), daß das Überschreiben der Daten in 0403 so lange verzögert werden soll, bis die CEL ihrerseits die Daten gelesen bzw. geschrieben haben. Für das bessere Verständnis wird auf Fig. 6 verwiesen.The comparator 0409 determines whether the state machine 0206 accesses the same addresses (Same_Adr) as the CEL. This means that the 0206 changes the data to 0403 while the CEL requests access to precisely this data - or vice versa. Since either the CEL or 0206 is accessing the data at one point in time, there is no consistency problem. However, considerable speed is lost when data are required by the CEL are overwritten first of 0206 with other data to be rewritten for a fact inevitably resulting cache miss again from 0206 to become. If there is a cache hit AND ( 0410 ) a Same_Adr, 0206 is signaled (FreeReq) that the overwriting of the data in 0403 should be delayed until the CEL has read or written the data. For a better understanding, reference is made to FIG. 6.

Ein Cache-Miss wird an 0206 weitergeleitet und bewirkt das Laden der entsprechenden Daten.A cache miss is forwarded to 0206 and causes the corresponding data to be loaded.

Den CEL muß angezeigt werden, wann der Zugriff vom Cachesystem akzeptiert wurde. Dazu kann zur Synchronisation ein einfaches Quittierungssignal an die CEL gesendet werden. Z.B. kann ein Cache-Hit gemäß P 197 04 728-9 ein ACK-Handshake-Signal generieren um anzuzeigen, daß der aktuelle Zugriff akzeptiert wurde.The CEL must be shown when access from the cache system was accepted. This can be done by a simple synchronization Acknowledgment signal to be sent to the CEL. E.g. can one Cache hit according to P 197 04 728-9 an ACK handshake signal generate to indicate that the current access is accepting has been.

Die Multiplexer 0407, 0405, 0408 werden von 0206 über ein Signal "LOCK" derart angesteuert, daß entweder die CEL Zugriff auf den Cache haben oder 0206 auf den Cache zugreift.The multiplexers 0407 , 0405 , 0408 are controlled by 0206 via a "LOCK" signal in such a way that either the CEL have access to the cache or 0206 accesses the cache.

In Fig. 5 gelangen die Cache-Miss Signale (0504) auf einen Arbeiter (0501), vorzugsweise eine SCRR-ARB gemäß PACT10. Der Arbeiter (0501) selektiert jeweils einen der einen Cache-Miss sendenden Cachespeicher pro Zeiteinheit und schaltet dessen Bus (0505) über den Multiplexer/Demultiplexer 0502 auf den Speicherbus (0503). Das Valid-Signal des Arbeiters (0506, vgl. Stand der Technik), das anzeigt, daß aufgrund des Auftretens eines Cache-Miss-Signals ein Cachespeicher zur Bearbeitung ausgewählt wurde, wird an die Statemachine 0206 geleitet. Die Dirty-Signale (0508) aller CS werden verODERt (0509) und 0206 zugeführt. Ebenfalls werden die FreeReq-Signale (0510) aller CS verODERt (0511) und 0206 zugeführt. In FIG. 5, the cache miss, signals (0504) to a worker (0501), preferably a SCRR-ARB according PACT10. The worker ( 0501 ) selects one of the cache memories sending a cache miss per time unit and switches its bus ( 0505 ) via the multiplexer / demultiplexer 0502 to the memory bus ( 0503 ). The valid signal of the worker ( 0506 , cf. prior art), which indicates that a cache memory signal has been selected for processing due to the occurrence of a cache miss signal, is sent to the state machine 0206 . The dirty signals ( 0508 ) of all CS are ORed ( 0509 ) and 0206 . The FreeReq signals ( 0510 ) of all CS are also ORed ( 0511 ) and 0206 .

Über 0512 (FreeAck) zeigt 0206 den CS an, daß das anstehende FreeReq akzeptiert wurde und die CS noch einen Taktzyklus Zeit zur Durchführung der anstehenden Zugriffe erhalten. Über 0513 (Lock) zeigt 0206 den CS an, daß sie die Kontrolle über die CS zur Durchführung einer Veränderung einer CL übernimmt. 0513 schaltet die Multiplexer 0407, 0405, 0408 so, daß 0206 die Kontrolle erhält.Via 0512 (FreeAck), 0206 indicates to the CS that the pending FreeReq has been accepted and that the CS still have one clock cycle time to carry out the pending accesses. Via 0513 (Lock), 0206 indicates to the CS that it is taking control of the CS in order to change a CL. 0513 switches the multiplexers 0407 , 0405 , 0408 so that 0206 receives control.

0514 ist das Write-Enable Signal, das die aus dem Speicher gelesenen Daten in die CS schreibt und dabei 0406 auf "clean" setzt. 0514 is the write-enable signal, which writes the data read from the memory to the CS and sets 0406 to "clean".

Über den Bus 0507 werden die Steuersignale, je nach angeschlossenem Ramsystem (z. B. RAMBUS), an den Speicher gesendet.Depending on the connected RAM system (e.g. RAMBUS), the control signals are sent to the memory via bus 0507 .

Fig. 6 zeigt den Ablauf innerhalb der Statemachine 0206. Der Grundzustand ist IDLE. Beim Auftreten eines VALID-Signals (0506) generiert die Statemachine das Signal LOCK. LOCK bleibt während aller Zustände, außer bei IDLE gesetzt! Tritt direkt nach dem Setzen von "LOCK" ein FreeReq-Signal auf, springt die Statemachine in den Zustand WAIT und generiert für einen Taktzyklus das Signal FreeAck um den CEL einen letzten Zugriff auf die CS zu genehmigen; FreeAck besitzt in den CS eine höhere Priorität als LOCK. Fig. 6 shows the sequence within the State Machine 0206th The basic state is IDLE. When a VALID signal ( 0506 ) occurs, the state machine generates the LOCK signal. LOCK remains set during all states, except for IDLE! If a FreeReq signal occurs immediately after "LOCK" has been set, the state machine jumps to the WAIT state and generates the FreeAck signal for one clock cycle in order to allow the CEL one last access to the CS; FreeAck has a higher priority in CS than LOCK.

Unabhängig, ob die Statemachine im Zustand IDLE keinen FreeReq erhält oder den Zustand WAIT verläßt, geschieht folgendes:
Regardless of whether the state machine receives no FreeReq in the IDLE state or leaves the WAIT state, the following happens:

  • a) ein DIRTY-Signal liegt an. D.h. die Daten in der aktuellen Cacheline wurden verändert. Die Statemachine schreibt die Grundadresse des Bursts
    auf den Bus (0503, 0507) und schreibt die Daten aus der CL so lange in den Speicher, bis das Ende der Cacheline erreicht wurde:
    Danach springt die Statemachine nach Punkt b)
    a) A DIRTY signal is present. Ie the data in the current cache line has been changed. The state machine writes the basic address of the burst
    on the bus ( 0503 , 0507 ) and writes the data from the CL into the memory until the end of the cache line has been reached:
    Then the state machine jumps to point b)
  • b) kein DIRTY-Signal liegt an; oder 0206 springt von Punkt a). D.h. die Daten in der aktuellen Cacheline wurden nicht verändert. Die Statemachine schreibt die Grundadresse des Bursts
    auf den Bus (0503, 0507) und liest die Daten aus der CL so lange aus dem Speicher in den Cache, bis das Ende der Cacheline erreicht wurde:
    Danach springt die Statemachine in den Zustand IDLE.
    b) there is no DIRTY signal; or 0206 jumps from point a). Ie the data in the current cache line have not been changed. The state machine writes the basic address of the burst
    on the bus ( 0503 , 0507 ) and reads the data from the CL into the cache until the end of the cache line has been reached:
    The state machine then jumps to the IDLE state.

In Fig. 7 ist als Implementationsbeispiel die Verbindung der erfindungsgemäßen Cachestruktur mit dem RAMBUS-System. Dabei werden je zwei 8-bit Register (0701) der RAC (0702) zu einem 16-bit Register zusammengefaßt (vgl. Stand der Technik/RAMBUS). Die 8 8-bit Register der RAC sind somit 4 16-bit CS (0703) zugeordnet. Der Inhalt der 8 Register kann in einem Zyklus in das Cachesystem der 4 CS geschrieben werden, oder in eine Mehrzahl von Zyklen, wobei mindestens 2 0701 in einem Zyklus übertragen werden. Die folgende Berechnung am Beispiel der ConcurrentRDRAM Daten zeigt den technischen Vorteil der vorliegenden Erfindung, i.b. in Hinsicht auf die Reduzierung der Geschwindigkeitsanforderungen an die Cachespeicher: Das ConcurrentRDRAM-RAMBUS-System bietet eine Datentransferrate zum Speicher (0705) von maximal 633MB/s, d. h. jedes der 8 0701 (8-bit) wird mit ca. 80 MHz beschrieben. Für die Übertragung der Daten (16-bit) aus den 0701 in die 0703 genügt eine moderate Frequenz von 40 MHz, wodurch der Einsatz von Standard-Cachespeichern nach dem Stand der Technik ermöglicht wird. Die Statemachine 0704 steuert die 0703 und 0702, wie bereits mehrfach ausgeführt.In Fig. 7 is as an implementation example, the compound of the cache structure of the invention with the RAMBUS system. Two 8-bit registers ( 0701 ) of the RAC ( 0702 ) are combined to form a 16-bit register (see state of the art / RAMBUS). The 8 8-bit registers of the RAC are therefore assigned to 4 16-bit CS ( 0703 ). The contents of the 8 registers can be written into the cache system of the 4 CS in one cycle, or in a plurality of cycles, with at least 2 0701 being transferred in one cycle. The following calculation using the example of the ConcurrentRDRAM data shows the technical advantage of the present invention, in terms of reducing the speed requirements for the cache memory: The ConcurrentRDRAM RAMBUS system offers a data transfer rate to the memory ( 0705 ) of a maximum of 633MB / s, ie each the 8 0701 (8-bit) is written with approx. 80 MHz. A moderate frequency of 40 MHz is sufficient for the transmission of the data (16-bit) from the 0701 to the 0703 , which enables the use of standard cache memories according to the prior art. The state machine 0704 controls the 0703 and 0702 , as already stated several times.

Fig. 8 zeigt die Implementierung einer Multiplexer-/De­ multiplexer-Struktur wie mehrfach angewendet. Eine erste Gruppe von Bussen (0801) wird über Multiplexer (0802) auf eine zweite Gruppe von Bussen (0803) übertragen. Die zweite Gruppe von Bussen wird wiederum über die Multiplexer 0804 auf die erste Gruppe von Bussen übertragen. Aus der Sicht der Gruppe 0801 stellen 0802 die Multiplexer und 0804 die Demultiplexer dar. Figure 8 shows the implementation of a multiplexer / de multiplexer structure as used multiple times. A first group of buses ( 0801 ) is transmitted to a second group of buses ( 0803 ) via multiplexers ( 0802 ). The second group of buses is in turn transmitted to the first group of buses via the multiplexers 0804 . From the point of view of group 0801 , 0802 are the multiplexers and 0804 are the demultiplexers.

Claims (5)

1. Cachesystem zum Zwischenspeichern von Daten und Code für Bausteine mit zwei- oder mehrdimensionaler Rechenwerksstruktur, u. a. DFPs, RAW-Machines, FPGAs und DPGAs, sowie Mikroprozessoren und Signalsprozessoren, dadurch gekennzeichnet, daß
  • a) das Cachesystem aus einer Mehrzahl aus einzelnen Cache-Spei­ chern besteht,
  • b) alle Cache-Speicher zusammen einen linearen unterbrechungsfreien Adressraum über die niederwertigen Adressen ergeben.
1. cache system for the temporary storage of data and code for modules with two- or multi-dimensional arithmetic unit structure, including DFPs, RAW machines, FPGAs and DPGAs, as well as microprocessors and signal processors, characterized in that
  • a) the cache system consists of a plurality of individual cache memories,
  • b) all caches together result in a linear, uninterrupted address space over the low-order addresses.
2. Cachesystem nach Anspruch 1, dadurch gekennzeichnet, daß auf jeden Cache-Speicher einzeln und unabhängig von einem Rechenwerk zugegriffen werden kann.2. Cache system according to claim 1, characterized in that to each cache memory individually and independently of one Calculator can be accessed. 3. Cachesystem nach Anspruch 1-2, dadurch gekennzeichnet, daß zum Zugriff mehrerer Rechenwerke auf ein und denselben Cache-Spei­ cher mehrere Bussysteme an den Cache-Speicher geführt sind, von denen jeweils eines über einen Multiplexer mit dem Cache-Speicher verbunden wird.3. Cache system according to claim 1-2, characterized in that to access multiple calculators on one and the same cache memory cher led several bus systems to the cache memory are, of which one each via a multiplexer with the Cache is connected. 4. Cachesystem nach Anspruch 1-3, dadurch gekennzeichnet, daß bei Zugriffen mehrerer Rechenwerke auf ein und denselben Cache-Speicher jeweils ein Rechenwerk pro Zeiteinheit arbitriert und zugewiesen wird. 4. Cache system according to claims 1-3, characterized in that when multiple arithmetic units access one and the same Cache memory one arithmetic unit per unit of time arbitrated and assigned.   5. Cachesystem nach Anspruch 1-4, dadurch gekennzeichnet, daß zum Anschluß eines schnellen Bussystemes jeweils ein Register oder Port oder eine Gruppe von Registern oder Ports einem oder einer Gruppe von Cache-Speichern zugeordnet wird, wobei eine feste Zuordnung der Adressen zu den Ports/Registern und den Cachespeichern besteht.5. Cache system according to claims 1-4, characterized in that one register each for connecting a fast bus system or port or a group of registers or ports one or is assigned to a group of cache memories, one fixed assignment of the addresses to the ports / registers and the Cache exists.
DE19809640A 1998-03-06 1998-03-06 Speed-optimized cache system Withdrawn DE19809640A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE19809640A DE19809640A1 (en) 1998-03-06 1998-03-06 Speed-optimized cache system
PCT/DE1999/000639 WO1999045474A2 (en) 1998-03-06 1999-03-07 Speed-optimized cache system
DE19980350T DE19980350D2 (en) 1998-03-06 1999-03-07 Speed-optimized cache system
AU36985/99A AU3698599A (en) 1998-03-06 1999-03-07 Speed-optimized cache system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE19809640A DE19809640A1 (en) 1998-03-06 1998-03-06 Speed-optimized cache system

Publications (1)

Publication Number Publication Date
DE19809640A1 true DE19809640A1 (en) 1999-09-09

Family

ID=7859951

Family Applications (2)

Application Number Title Priority Date Filing Date
DE19809640A Withdrawn DE19809640A1 (en) 1998-03-06 1998-03-06 Speed-optimized cache system
DE19980350T Expired - Fee Related DE19980350D2 (en) 1998-03-06 1999-03-07 Speed-optimized cache system

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE19980350T Expired - Fee Related DE19980350D2 (en) 1998-03-06 1999-03-07 Speed-optimized cache system

Country Status (3)

Country Link
AU (1) AU3698599A (en)
DE (2) DE19809640A1 (en)
WO (1) WO1999045474A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001075607A2 (en) 2000-03-31 2001-10-11 Intel Corporation Multi-tiered memory bank having different data buffer sizes with a programmable bank select

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8127061B2 (en) 2002-02-18 2012-02-28 Martin Vorbach Bus systems and reconfiguration methods
MY139705A (en) * 2004-07-19 2009-10-30 Basf Ag Mixtures of hyperbranched polyesters with polycarbonates as additive for polyester molding compositions

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2277181B (en) * 1991-12-23 1995-12-13 Intel Corp Interleaved cache for multiple accesses per clock in a microprocessor
US5581734A (en) * 1993-08-02 1996-12-03 International Business Machines Corporation Multiprocessor system with shared cache and data input/output circuitry for transferring data amount greater than system bus capacity
WO1998013763A2 (en) * 1996-09-25 1998-04-02 Philips Electronics N.V. Multiport cache memory with address conflict detection

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001075607A2 (en) 2000-03-31 2001-10-11 Intel Corporation Multi-tiered memory bank having different data buffer sizes with a programmable bank select
WO2001075607A3 (en) * 2000-03-31 2002-05-23 Intel Corp Multi-tiered memory bank having different data buffer sizes with a programmable bank select
US6606684B1 (en) * 2000-03-31 2003-08-12 Intel Corporation Multi-tiered memory bank having different data buffer sizes with a programmable bank select
US6898690B2 (en) 2000-03-31 2005-05-24 Intel Corporation Multi-tiered memory bank having different data buffer sizes with a programmable bank select

Also Published As

Publication number Publication date
AU3698599A (en) 1999-09-20
WO1999045474A3 (en) 1999-11-11
DE19980350D2 (en) 2001-03-29
WO1999045474A2 (en) 1999-09-10

Similar Documents

Publication Publication Date Title
DE2227882C2 (en) Virtual storage arrangement
DE69233655T2 (en) Microprocessor architecture with the possibility to support several different processors
DE3011552C2 (en)
EP0013737B1 (en) Multilevel storage hierarchy for a data processing system
DE19807872A1 (en) Method of managing configuration data in data flow processors
DE2226382B2 (en) Data processing system with several processors and buffer memories assigned to them
DE2350215A1 (en) COMPUTER SYSTEM AS WELL AS THIS USABLE MULTI-LEVEL STORAGE SYSTEM
DE3134428T1 (en) CACHED MULTIPROCESSOR SYSTEM WITH PIPELINE TIMING
DE3621321A1 (en) CACHE STORAGE OR MULTIPROCESSOR SYSTEM AND OPERATING METHOD
DE60034998T2 (en) Improvements in or regarding microprocessors
DE10316725A1 (en) Data management method for a distributed shared memory system
DE102008021348A1 (en) Semiconductor memory, memory access control system and data read method
DE3046912C2 (en) Circuit arrangement for the selective deletion of cache memories in a multiprocessor data processing system
DE112010005609T5 (en) Storing data in one of a plurality of buffers in a memory controller
EP0882267B1 (en) Multi-processor central processing unit
DE102005037219A1 (en) Apparatus and method for storing data and / or instructions in a computer system having at least two processing units and at least one first memory or memory area for data and / or instructions
DE60009817T2 (en) Shared memory distributing multiprocessor device
DE69726795T2 (en) Coding procedure for directory status in a common, distributed storage system with coherent buffers
EP0739509B1 (en) Arrangement with master and slave units
DE69629331T2 (en) System and method for providing a flexible storage hierarchy
DE4114053A1 (en) COMPUTER SYSTEM WITH CACHE MEMORY
DE19809640A1 (en) Speed-optimized cache system
EP1308846B1 (en) Data Transfer Device
DE102005040109A1 (en) Semiconductor memory system and semiconductor memory chip
DE60038172T2 (en) Method to transfer data in a processing system

Legal Events

Date Code Title Description
8143 Withdrawn due to claiming internal priority