WO1999045474A2 - Geschwindigkeitsoptimiertes cachesystem - Google Patents

Geschwindigkeitsoptimiertes cachesystem Download PDF

Info

Publication number
WO1999045474A2
WO1999045474A2 PCT/DE1999/000639 DE9900639W WO9945474A2 WO 1999045474 A2 WO1999045474 A2 WO 1999045474A2 DE 9900639 W DE9900639 W DE 9900639W WO 9945474 A2 WO9945474 A2 WO 9945474A2
Authority
WO
WIPO (PCT)
Prior art keywords
cache
memory
data
access
address
Prior art date
Application number
PCT/DE1999/000639
Other languages
English (en)
French (fr)
Other versions
WO1999045474A3 (de
Inventor
Martin Vorbach
Robert MÜNCH
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 DE19980350T priority Critical patent/DE19980350D2/de
Priority to AU36985/99A priority patent/AU3698599A/en
Publication of WO1999045474A2 publication Critical patent/WO1999045474A2/de
Publication of WO1999045474A3 publication Critical patent/WO1999045474A3/de

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

Definitions

  • FPGAs are often used as numerical coprocessors and are used with a
  • object of the invention is a highly parallel cache system that enables a large number of simultaneous accesses in a speed-optimized manner and delivers the data in the optimal width for the respective arithmetic units.
  • cache memories instead of a continuous wide cache memory, several cache memories are used, each of the memories having a unique address space.
  • a plurality of arithmetic units can access a plurality of cache memories by selecting the cache memory on the basis of unique addresses. If several arithmetic units access the same cache memory, one of the arithmetic units is arbitrated per clock unit and is given access rights. If the data is not in the cache memory, bursting is always carried out when the memory is accessed, ie a plurality of data is written into the memory or read from the memory over a complete line of cache memories (CL). This feature in particular considerably simplifies the construction of a cache system for modern bus systems such as the RAMBUS.
  • cache memories there are a number of cache memories, each with a unique address space.
  • the address space of the individual CS is determined on the basis of the low-order address bits A n ..A 0 so that the CS form a linearly connected, uninterrupted address space.
  • n is any integer (integer, see above);
  • C # indicates the number of caches;
  • ADR CACHE 2 n specifies the binary value of A n ..A 0 for the selection of the corresponding cache memory; For larger n the table should be expanded accordingly in width and depth:
  • a decoder that decodes A n ..A 0 is used to address each
  • the address, data and control lines of the CS are connected to the arithmetic unit via demultiplexers and multiplexers. Synchronization is also necessary, which signals to the CEL when the data has been accepted by the cache or is available in the cache.
  • the management of the memory is handled by a state machine that responds to a cache miss.
  • a cache miss occurs when accessing address areas that are not in the cache.
  • the state machine first writes the new cache line (CL) to be allocated to the memory.
  • CL cache line
  • a CL is all data that are located on the same horizontal storage level - that is to say have the same Y address - as the requested data.
  • a CL extends over all CS, the exact definition follows in the next paragraph.
  • the state machine then reads the new data from the memory into the CL.
  • a bus burst according to the prior art is preferably carried out to increase the bus speed.
  • Wm A n x2 n + ..
  • a CL extends over all Wn from 0 to (2 n -l).
  • W can be broken down into 3 address parts Wo, Wp, Wn of lengths o, p, n.
  • the part T is stored in a cache access according to the prior art in the so-called TAG-RAM.
  • the content of the TAG-RAM (t_tag) is compared to the part T of the access address during access. If t_tag is not equal to T, the relevant data is not in the cache, a so-called cache miss has occurred. The data must be transferred from the memory. If t_tag is equal to T, the relevant data are in the cache, a so-called cache hit has occurred.
  • the cache hit / miss procedure corresponds to the state of the art.
  • 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 each arithmetic unit uses a different address space A n ..A 0 .
  • an arbiter is assigned to each CS, which, if several arithmetic units access the same address space A n ..A 0 , arbitrates one of the arithmetic units per unit of time.
  • the buses of all arithmetic units are switched to a multiplexer / demultiplexer. Each bus delivers a signal coded from A n ..Ao, which selects exactly one of the CS.
  • One of the buses is selected for access to the respective CS via the arbiter assigned to a CS.
  • the synchronization of the CEL with the CS must be generated individually by CS for each arithmetic unit to additionally indicate whether the respective arithmetic unit is the currently arbitrated.
  • Fast bus systems e.g. state-of-the-art RAMBUS
  • BR registers or ports
  • each BR or group of BR is cached by a CS. Due to the uniqueness of the
  • each CS is assigned a BR.
  • FIG. 2a shows a cache according to the prior art
  • FIG. 2b shows a cache according to the invention
  • FIG. 3 shows a cache according to the invention with simultaneous, arbitrated access by several
  • Arithmetic units Figure 4 shows the internal structure of a cache
  • Figure 5 shows the connection of a cache according to the invention to the memory
  • Figure 6 shows the sequence in the state machine of the cache
  • Figure 7 shows the connection of the cache system according to the invention to a fast bus system using the example of a RAMBUS
  • FIG. 8 shows the structure of a multiplexer / demultiplexer structure
  • a plurality (2 n ) of cache memories (0101) is shown in FIG.
  • the addresses A n ..A 0 are used to select one of the 2 n cache memories.
  • the cache is 2 m entries deep, ie it ranges from A n + m ..An + ⁇ .
  • the area A n + m + t • -An + m + i is entered in the TAG-RAM (0102) assigned to the cache memory.
  • the burst extends over a CL of
  • a plurality (2 n ) of cache memories (0101) are shown in FIG. 1b.
  • the addresses A n ..A 0 are used to select one of the 2 n cache memories.
  • the cache is 2 n
  • a n + m. , A n + ⁇ An + m • • A n + P. , A n + ⁇ .
  • the area A n + m + t • • A n + Itl + ⁇ is entered in the TAG-RAM (0102) assigned to the cache memory. The burst extends over a CL of
  • FIG. 2a shows a single cache (0201) according to the prior art.
  • the data width to the connected arithmetic unit can be many times larger (b >>) than the data width of the memory connection (0202).
  • Figure 2b shows a cache memory according to the invention, which consists of several individual memories (0203).
  • the addresses A n ..A 0 (0204) from the arithmetic units are used to select one of the cache memories 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 into 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 + ⁇ or A n + m ..A n + P ..A n + ⁇ ) is sent to 0203 via 0209.
  • Figure 2c shows the internal structure of a cache according to the prior art (see. Fig. 2a).
  • Several data words (0213) are combined in the horizontal direction in the memory (0212), to which only shared access is possible.
  • a cacheline (CL) comprises several data words with the same Y address.
  • 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 A n ..A 0 are coded (0303) and serve as an access request to the respective CS assigned to the coding.
  • An arbiter (0305), preferably an SCRR-ARB (cf. PACT10) selects one of the access requests and controls 0301 accordingly.
  • FIG. 4 shows a possible structure of a 0304.
  • the lines leading upwards in the drawing are used for connecting the memory, the lines leading downwards are used for connection to the arithmetic unit (s) (CEL).
  • the addresses A n + m ..A n + ⁇ as CAn + m- .CA n + ⁇ (0404) reach the address input of the TAG-RAM 0401 via a multiplexer (0407).
  • the TAG-RAM saves when accessed by the state machine ( 0206) the addresses A n + m + t • • A n + m + ⁇ • If the CEL accesses the cache, 0402 the addresses stored in 0401 are compared with the addresses requested by CEL.
  • 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.
  • 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 if data required by the CEL is first overwritten by other data from 0206 in order to be rewritten by 0206 after a cache miss which results inevitably. If there is a cache hit AND (0410) a Same_Adr, 0206 is signaled (FreeReq) that the data has been overwritten in 0403 should be delayed until the CEL has read or written the data. For the better
  • a cache miss is forwarded to 0206 and does so
  • the CEL must be shown when the cache system accepted the access. This can be done by a simple synchronization
  • Acknowledgment signal to be sent to the CEL can one
  • the multiplexers 0407, 0405, 0408 are used by 0206
  • the cache miss signals (0504) reach an arbiter (0501), preferably an SCRR-ARB according to PACT10.
  • the arbiter (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 arbiter's valid signal (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. Via 0512 (FreeAck) 0206 shows the CS that the pending
  • FreeReq was accepted and the CS received one clock cycle time to carry out the pending access.
  • 0206 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 is the write-enable signal, which writes the data read from the memory to the CS and sets 0406 to "clean".
  • control signals are sent to the memory via bus 0507.
  • Figure 6 shows the sequence within the state machine 0206.
  • the basic state is IDLE.
  • 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" is 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.
  • the state machine writes the basic address of the
  • the state machine then jumps to the IDLE state.
  • FIG. 7 shows as an implementation example the connection of the cache structure according to the invention to 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 content 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 transmitted in one cycle.
  • 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. 80MHz. 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 shows the implementation of a multiplexer / demultiplexer structure as used several 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.
  • 0802 are the multiplexers and 0804 are the demultiplexers.

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)

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 ein der Rechenwerke pro Zeiteinheit 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 Cache-Speichern (CL) in den Speicher geschrieben, bzw. aus dem Speicher gelesen.

Description

Geschwindigkeitsoptimiertes Cachesystem
1. Hintergrund der Erfindung
Bausteine der Gattung DFP (vgl. DE 44 16 881A1, P 196 51
075.9), RA -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.
Die oben genannten Bausteine erreichen interne
Datentransferraten von mehreren Gigabyte pro Sekunde. Eine
Vielzahl von Rechenwerken (CELs) benötigen zeitgleich Daten aus dem Cache.
1.1 Stand der Technik
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.
1.2 Probleme
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.
1.3 Verbesserung durch die Erfindung, Aufgabe 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.
2. Beschreibung der Erfindung 2.1 Übersicht über die Erfindung, Abstrakt
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.
2.2 Detailbeschreibung der Erfindung
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:
Figure imgf000006_0001
2.2.1 Anschluß an ein Rechenwerk
Zum Anschluß eines Rechenwerkes (CEL) an die CS wird über einen Dekoder, der An..A0 auskodiert, die jeweils adressierte
CS(Anx2n+ .. A1x21 + A0x2°) selektiert.
Die Adress-, Daten- und Kontrollleitungen 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 Verfugung stehen.
2.2.2 Anschluß an den Speicher
Die Verwaltung des Speichers übernimmt eine Statemachme, die auf einen Cache-Miss reagiert. Ein Cache-Miss tritt auf, wenn auf Adressbereiche zugegriffen wird, die sich nicht im Cache befinden. 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.
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 = Anx2n + .. + Aι 2x + A0x2° des Adressteils M und die Werte Wn = Amx2m + A(m-i)X2(m"1) + .. + A(n+i)X2(n+1) + Anx2n 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-l)] befinden sich in CS((2n-l)). Eine CL erstreckt sich dabei im einfachsten Fall über alle Wn von 0 bis (2n-l) . Ein Burst beginnt bei Wn = 0 (=> W=[Wm, 0]) und endet bei Wn = (2n-l) (=> W=[Wm, (2n-l)]). 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-l)], dabei wird jeder CS 2p-mal durchlaufen, die CL erstreckt sich über alle 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.
2.2.3 Mehrere Rechenwerke
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 Arbiter 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. Jeder Bus liefert ein aus An..Ao auskodiertes Signal, das genau einen der CS selektiert. Über den einem CS zugeordneten Arbiter 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 einzel von CS generiert werden, um zusätzlich anzuzeigen, ob das jeweilige Rechenwerk das akuteil Arbitrierte ist.
2.2.4 Anschluß an schnelle Bussysteme nach dem Stand der
Technik
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.
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..Ao 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 + .. + Aιx2x + A0x2° = 0 beginnt und immer bei Anx2n + .. + A1X21 + A0x2° = 2n-l endet. 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.
- Ist v=0, 2V = 1 ist jedem CS ein BR zugeordnet.
- 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+ι .. An .. A0.
- 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 .. Ao = Av .. Ar+ι .. Ar .. A0.
3. Kurzbeschreibung der Diagramme
Figur la,b zeigt die Anordnung der Caches
Figur 2a zeigt einen Cache nach dem Stand der Technik
Figur 2b zeigt einen erfindungsgemäßen Cache
Figur 3 zeigt einen erfindungsgemäßen Cache mit zeitgleicher, arbitrierter Zugriffsmöglichkeit durch mehrere
Rechenwerke Figur 4 zeigt den internen Aufbau eines eines Caches Figur 5 zeigt den Anschluß eines erfindungsgemäßen Caches an den Speicher Figur 6 zeigt den Ablauf in der Statemachine des Caches Figur 7 zeigt den Anschluß des erfindungsgemäßen Cachesystems an ein schnelles Bussystem am Beispiel eines RAMBUS
Controllers (RAC) Figur 8 zeigt den Aufbau einer Multiplexer/Demultiplexer Struktur
3.1 Detailbeschreibung der Diagramme
In Figur la 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 Anx2n + .. + Aι 2x + A0x2° = 0 bis Anx2n + .. + Aχx2x + A0x2° = 2n-l. Der Cache ist 2m Einträge tief, d.h. er reicht von An+m..An+ι. Der Bereich An+m+t • -An+m+i wird in das, dem Cache- Speicher zugeordneten, TAG-RAM (0102) eingetragen. Der Burst reicht über eine CL von
Figure imgf000011_0001
In Figur lb 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 Anx2n + .. + A1 21 + A0x2° = 0 bis χ 2 (n+p) +
' (n+p) + AX 21 + A0x2° 2n+p- l . Der Cache ist 2n
Einträge tief , d . h . er reicht von An+m . . An+ι . Dabei gi lt
An+m . . An+ι = An+m • • An+P . . An+ι . Der Bereich An+m+t • • An+Itl+ι wird in das , dem Cache-Speicher zugeordneten, TAG-RAM (0102) eingetragen. Der Burst reicht über eine CL von
Figure imgf000012_0001
In Figur 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) .
Figur 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 Figur 5 und Figur 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+ι oder An+m..An+P..An+ι) wird über 0209 den 0203 zugeführt.
Figur 2c zeigt den internen Aufbau eines Caches nach dem Stand der Technik (vgl. Fig. 2a) . Im Speicher (0212) sind mehrere Datenworter (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.
Figur 3 zeigt eine mögliche Ausgestaltung des Anschlußes 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 ugeordneten CS. Ein Arbiter (0305), vorzugsweise ein SCRR-ARB (vgl. PACT10) selektiert eine der Zugriffsanforderungen und steuert 0301 entsprechend an.
Figur 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+ι als CAn+m- .CAn+ι (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+ι • Greifen die CEL auf den Cache zu, werden mittles 0402 die in 0401 gespeicherten Adressen mit den von CEL angefordeten 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. 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.
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 Figur 6 dargestellt.
Ü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 Figur 6 verwiesen.
Ein Cache-Miss wird an 0206 weitergeleitet und bewirkt das
Laden der entsprechenden Daten.
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äß P197 04 728-9 ein ACK-Handshake-Signal generieren um anzuzeigen, daß der aktuelle Zugriff akzeptiert wurde.
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.
In Figur 5 gelangen die Cache-Miss Signale (0504) auf einen Arbiter (0501), vorzugsweise eine SCRR-ARB gemäß PACT10. Der Arbiter (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 Arbiters (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. Über 0512 (FreeAck) zeigt 0206 den CS an, daß das anstehende
FreeReq akzepiert 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.
0514 ist das Write-Enable Signal, das die aus dem Speicher gelesenen Daten in die CS schreibt und dabei 0406 auf "clean" setzt.
Über den Bus 0507 werden die Steuersignale, je nach angeschlossenem Ramsystem (z.B. RAMBUS), an den Speicher gesendet .
Figur 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 direket 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.
Unabhängig, ob die Statemachine im Zustand IDLE keinen FreeReq erhält oder den Zustand WAIT verläßt, geschieht folgendes: a) ein DIRTY-Signal liegt an. D.h. die Daten in der aktuellen Cacheline wurden verändert. Die Statemachine schreibt die Grundadresse des Bursts Adresse n+m+ ' ♦ An+m+2 jϊ+pj» • An+ι An . . Ao
Wert An+m+t • • An+m+ι An+m • • An+ι 0 auf den Bus (0503, 0507) und schreibt die Daten aus der CL so lange in den Speicher, bis das Ende der Cacheline erreicht wurde:
Figure imgf000017_0001
Danach springt die Statemachine nach Punkt 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
Adresse tf+m+t* ♦ An+m+i AR+ΪH ' " An+1 ß « . Ao
Wert An+m+t • • An+m+l n+m • • An+χ 0 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: t Adresse & «S-HS-S-t-» +*»0*63*1 Ä- • »*X Ä^^Äβ
Wert A, n+m+t ■ . A -,n+m+l Ar • A n+l 2n-l
Danach springt die Statemachine in den Zustand IDLE.
In Figur 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. 80MHz beschrieben. Für die Übertragung der Daten (16-bit) aus den 0701 in die 0703 genügt eine moderate Frequenz von 40MHz, wodurch der Einsatz von Standard-Cachespeichern nach dem Stand der Technik ermöglich wird. Die Statemachine 0704 steuert die 0703 und 0702, wie bereits mehrfach ausgeführt.
Figur 8 zeigt die Implementierung einer Multiplexer-/ Demultiplexer-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.

Claims

Patentansprüche
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- Speichern besteht, b) alle Cache-Speicher zusammen einen linearen unterbrechungsfreien Adressraum über die niederwertigen Adressen ergeben.
2. Cachesystem nach Anspruch 1, dadurch gekennzeichnet, daß auf jeden Cache-Speicher einzeln und unabhängig von einem Rechenwerk zugegriffen werden kann.
3. Cachesystem nach Anspruch 1-2, dadurch gekennzeichnet, daß zum Zugriff mehrerer Rechenwerke auf ein und denselben Cache- Speicher mehrere Bussysteme an den Cache-Speicher geführt sind, von denen jeweils eines über einen Multiplexer mit dem Cache-Speicher verbunden wird.
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.
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.
PCT/DE1999/000639 1998-03-06 1999-03-07 Geschwindigkeitsoptimiertes cachesystem WO1999045474A2 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE19980350T DE19980350D2 (de) 1998-03-06 1999-03-07 Geschwindigkeitsoptimiertes Cachesystem
AU36985/99A AU3698599A (en) 1998-03-06 1999-03-07 Speed-optimized cache system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE19809640.2 1998-03-06
DE19809640A DE19809640A1 (de) 1998-03-06 1998-03-06 Geschwindigkeitsoptimiertes Cachesystem

Publications (2)

Publication Number Publication Date
WO1999045474A2 true WO1999045474A2 (de) 1999-09-10
WO1999045474A3 WO1999045474A3 (de) 1999-11-11

Family

ID=7859951

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/DE1999/000639 WO1999045474A2 (de) 1998-03-06 1999-03-07 Geschwindigkeitsoptimiertes cachesystem

Country Status (3)

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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6606684B1 (en) * 2000-03-31 2003-08-12 Intel Corporation Multi-tiered memory bank having different data buffer sizes with a programmable bank select
JP2008506822A (ja) * 2004-07-19 2008-03-06 ビーエーエスエフ アクチェンゲゼルシャフト ポリエステル成形材料のための超枝分かれしたポリエステルとポリカーボネートとの混合物
EP2043000A2 (de) 2002-02-18 2009-04-01 PACT XPP Technologies AG Bussysteme und Rekonfigurationsverfahren

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993013481A1 (en) * 1991-12-23 1993-07-08 Intel Corporation Interleaved cache for multiple accesses per clock in a microprocessor
EP0637799A2 (de) * 1993-08-02 1995-02-08 International Business Machines Corporation Gemeinsamer Cache für mehrere Prozessoren
WO1998013763A2 (en) * 1996-09-25 1998-04-02 Philips Electronics N.V. Multiport cache memory with address conflict detection

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993013481A1 (en) * 1991-12-23 1993-07-08 Intel Corporation Interleaved cache for multiple accesses per clock in a microprocessor
EP0637799A2 (de) * 1993-08-02 1995-02-08 International Business Machines Corporation Gemeinsamer Cache für mehrere Prozessoren
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
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
EP2043000A2 (de) 2002-02-18 2009-04-01 PACT XPP Technologies AG Bussysteme und Rekonfigurationsverfahren
JP2008506822A (ja) * 2004-07-19 2008-03-06 ビーエーエスエフ アクチェンゲゼルシャフト ポリエステル成形材料のための超枝分かれしたポリエステルとポリカーボネートとの混合物

Also Published As

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

Similar Documents

Publication Publication Date Title
DE2227882C2 (de) Virtuelle Speicheranordnung
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE3011552C2 (de)
DE3782335T2 (de) Speichersteuersystem.
DE2241257C3 (de) Datenverarbeitende Anlage
DE3586389T2 (de) Dynamisch zugeordnete lokale/globale speicheranordnung.
DE68902193T2 (de) Datenspeicheranordnung.
DE3134428T1 (de) Cached multiprocessor system with pipeline timing
DE19807872A1 (de) Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
DE2226382B2 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE69102431T2 (de) Multiprozessor-system mit anteiliger nutzung eines speichers.
DE3650249T2 (de) Hochkapazitätsspeicher für Multiprozessorsystem.
DE60034998T2 (de) Verbesserungen in oder bezüglich von Mikroprozessoren
EP0882267B1 (de) Mehrprozessor-zentraleinheit
DE2547488A1 (de) Mikroprogrammierte datenverarbeitungsanlage
WO2007017373A1 (de) Vorrichtung und verfahren zur speicherung von daten und/oder befehlen in einem rechnersystem mit wenigstens zwei verarbeitungseinheiten und wenigstens einem ersten speicher oder speicherbereich für daten und/oder befehle
DE60009817T2 (de) Gemeinsamen Speicher verteilende Multiprozessorvorrichtung
DE602004008712T2 (de) Speicherbandbreiten-Steuereinrichtung
DE3851241T2 (de) Speicheranordnung.
DE4114053A1 (de) Computersystem mit cachespeicher
DE60009618T2 (de) Multiprozessorvorrichtung mit einer Schnittstelle für einen gemeinsamen Speicher
EP1076856B1 (de) Cache-speicher für zweidimensionale datenfelder
WO1999045474A2 (de) Geschwindigkeitsoptimiertes cachesystem
DE69030368T2 (de) Tandem-Cache-Speicher
EP1308846B1 (de) Datenübertragungseinrichtung

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG US UZ VN YU ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW SD SL SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
AK Designated states

Kind code of ref document: A3

Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG US UZ VN YU ZW

AL Designated countries for regional patents

Kind code of ref document: A3

Designated state(s): GH GM KE LS MW SD SL SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WA Withdrawal of international application
NENP Non-entry into the national phase

Ref country code: KR

REF Corresponds to

Ref document number: 19980350

Country of ref document: DE

Date of ref document: 20010329

WWE Wipo information: entry into national phase

Ref document number: 19980350

Country of ref document: DE

NENP Non-entry into the national phase

Ref country code: CA