WO1995013584A1 - Virtuell indizierbarer cache-speicher - Google Patents

Virtuell indizierbarer cache-speicher Download PDF

Info

Publication number
WO1995013584A1
WO1995013584A1 PCT/EP1994/003667 EP9403667W WO9513584A1 WO 1995013584 A1 WO1995013584 A1 WO 1995013584A1 EP 9403667 W EP9403667 W EP 9403667W WO 9513584 A1 WO9513584 A1 WO 9513584A1
Authority
WO
WIPO (PCT)
Prior art keywords
cache
index
data
bus
address
Prior art date
Application number
PCT/EP1994/003667
Other languages
English (en)
French (fr)
Inventor
Jochen Liedtke
Original Assignee
Gmd - Forschungszentrum Informationstechnik 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
Priority to US08/637,708 priority Critical patent/US5813046A/en
Application filed by Gmd - Forschungszentrum Informationstechnik Gmbh filed Critical Gmd - Forschungszentrum Informationstechnik Gmbh
Priority to JP7504220A priority patent/JPH09504627A/ja
Priority to EP95900114A priority patent/EP0728336A1/de
Publication of WO1995013584A1 publication Critical patent/WO1995013584A1/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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed

Definitions

  • the invention relates to a cache which can be indexed in a manner which efficiently treats synonym entries and does not impose any alignment restrictions on them.
  • Modern processors need cache memory to bridge the gap between fast processors and slow main memories.
  • Real and virtually indexed cache memories are known.
  • the virtual address provided by the processor is first converted into a real address by the translation lookaside buffer (TLB). Then the cache memory is addressed with a real address. With the virtually indexed cache memory, this is addressed directly with the virtual address. A conversion to the corresponding real address only takes place in the event of a cache miss.
  • the advantage of a virtually indexed cache memory is the higher speed, since the conversion step by the TLB is omitted. Its disadvantage occurs with synonyms or aliasing. Synonyms are different virtual addresses that are mapped to the same real address. With such aliasing, a (real) memory object can be addressed via different (virtual) addresses.
  • RTB reverse translation buffer
  • So-called direct-mapped cache memories are known in the prior art. Such a cache memory is organized as shown in FIG. 8. In such a direct-mapped cache memory, a cache index is calculated from the virtual address v with the aid of a map function and a row of the cache memory is thus selected. Then v is compared with the virtual address of the memory area currently associated with this cache line. In the case of equality, there is a hit (cache hit) (and the cache line is used instead of the main memory); otherwise a cache miss is signaled.
  • v mod cache size line size used as map function. Then the complete virtual address does not need to be stored in the cache, but v / cache size is sufficient.
  • Direct-mapped cache memories are simpler, but lead to higher mismatch rates than n-way cache memories. In principle, these consist of n correspondingly smaller direct-mapped cache blocks. This ensures that each main memory element is in at most one block. Since the map function indexes n cache lines, up to n elements with map-equivalent addresses can be contained in the cache memory. This n-fold associativity reduces the likelihood of clashes and increases the hit rate accordingly.
  • a conventional virtually indexed cache allows cache aliasing, i.e. allowing multiple cache lines or cells to be associated with a single real object, one could proceed in such a way that a distinction is made between a main entry and none, one or more secondary entries. Access to the main entrance is handled normally. Access to a secondary entry leads to an alias miss and has the effect that - the data of the main entry are copied into this secondary entry,
  • the object of the invention is to create a virtually indexable cache memory which permits multiple aliasing without alignment restriction and which treats these synonyms efficiently. In particular, the necessary reactions to an alias miss should take little time.
  • the invention proposes a virtually indexable cache memory with the features of claim 1.
  • the cache memory according to the invention can have the features of claim 7. The features of advantageous developments of both variants are listed in the subclaims.
  • the virtually indexable cache memory is provided with a plurality of cache blocks for storing information.
  • Data words are transmitted from at least one processor to the cache blocks and between the cache blocks via an external data bus.
  • Each cache block can access the external data bus and take over data words located on this data bus.
  • An external data bus is provided for virtual addressing of the cache memory, on which at least one processor assigns virtual addresses.
  • the cache memory has an indexer unit which receives the virtual address and decomposes this virtual address into one or more indexes for one or more cache blocks and into a common residual address.
  • a residual address bus, to which the indexer unit and the cache blocks are connected, is provided for transferring the residual address from the indexer unit to the cache blocks.
  • the indexes are transferred from the indexer unit to the cache blocks via an index bus. Indices, namely the synonym indices, are also transmitted between the cache blocks via this index bus. Each index is assigned to a specific cache block. This applies both to the indexes generated by the indexer unit and to the synonym indexes that are stored in the cache blocks, if synonym entries exist.
  • the min- at least one processor sends a write or a read signal to each cache block.
  • each cache block has a plurality of cache cells which can be selected by an index received via the index bus and assigned to the relevant cache block.
  • Each cache cell includes a marker field for a marker that is compared to the remainder address if that cache cell is selected by the index.
  • each cache cell has at least one data field for a data word.
  • the cache cell has a status field with at least one readability and one writability flag for each data field. If these flags are set, the data word of the data field assigned to this status field can be read or written. If the flags are not set or reset, they must not be read or written directly.
  • One or more synonym indexes are also stored per cache cell, specifically in a synonym index field.
  • Valid synonym indexes stored in this index field (one or more, whereby the fact whether the content of the index field indicates a valid synonym index can be signaled by a corresponding validity bit) give those cache cells of the other cache Blocks which have data fields which are assigned to the same real address (synonym addresses) which has been supplied to the indexer unit and has led to indexing the cache cell in the addressed cache block.
  • the cache memory according to the invention is provided with a cache hit / miss output, via which a cache hit can be signaled when the virtual one received by the indexer unit Address a cache cell is assigned to one of the cache blocks, and a cache miss can be signaled if a cache cell is not assigned to the virtual address received by the indexer unit in any cache block.
  • Each cache block is provided with a comparator unit for comparing the residual address received via the residual address bus or a part thereof with the content of the marking field of a cache cell.
  • the cache cell whose marking (content of the marking field) is compared with the remaining address or a part thereof is selected via the index of the index bus assigned to the relevant cache block.
  • This index in turn can either be supplied by the indexer unit (in this case the index is derived from the virtual address which the indexer unit receives from the processor) or can come from the synonym index field of another cache block.
  • a cache miss is signaled at the cache hit / miss output of the cache when the comparison from the remaining address with the marking of the respectively indexed cache cell is negative for all cache blocks.
  • a data word on the data bus is inserted directly into the data field determined by the remaining address or a part thereof in a cache cell indexed by the index of the indexer unit. writable if the writability flag of the status field assigned to the data field is set.
  • the data word of the data field determined by the remaining address or a part thereof of a cache cell indexed by the index of the indexer unit can be read directly if the readability flag of the status field assigned to the data field is set.
  • a cache hit is signaled at the cache hit / miss output.
  • the cache memory preferably works as follows:
  • Each valid synonym index located in the synonym index field of the cache cell indexed by the index of the indexer unit is applied to the respectively assigned cache block via the index bus.
  • the data word on the data bus is written into the data field of the cache cell indexed by the index of the indexer unit, regardless of the write flag that has not been set.
  • the writability flag and the readability flag of the status field belonging to this data field are set. Finally, the writability and readability flags in those status fields that are assigned to those data fields in the cache cells indexed by the synonym indexes that are determined by the remaining address or a part thereof are also reset.
  • the cache cell In the case of a read signal on the read / write line and a readability flag not set in the status field of the data field assigned to it and determined by the remaining address or a part thereof, the cache cell according to the invention operates by the index of the indexer unit.
  • Memory preferably as follows: Each valid synonym index located in the synonym index field of the cache cell indexed by the index of the indexer unit is applied to the respectively assigned cache block via the index bus. - The data word of the data field determined by the residual address or a part thereof of at least one cache cell indexed by the synonym indexes is placed on the data bus, provided that the readability flag assigned to this data field is set.
  • the data words stored in these data fields are identical.
  • the advantage of the cache memory according to the invention is the quick handling of synonym entries. Access to an RTB action in the case of synonyms is not required, which saves processing time. Finally, a synonym hit, i.e. if there are synonyms, no external bus access; rather, the synonym handling runs internally and faster.
  • the index bus has several sub-index buses.
  • the number of these sub-index buses is equal to the number of cache blocks.
  • Both the indexer unit and all cache blocks are connected to each sub-index bus.
  • the indexer unit is provided with several outputs for delivering one index each. Each output is precisely connected to a partial index bus.
  • the cache blocks also have a number of inputs / outputs equal to the number of index sub-buses.
  • Each cache block has one index input and several index outputs.
  • Each index subbus is connected exactly to an 'index input of one of the cache blocks. The same applies to each exit of the cache blocks and their connection with an index subbus.
  • the advantage of the index bus structure described above is that the index sub-buses provide the hardware for assigning indexes of the indexer unit and synonym indexes of individual cache blocks to specific cache blocks.
  • the index bus can also work in multiplex mode, so that the assignment of an index to a cache block is time-controlled.
  • the cache memory according to the first variant of the invention can either be a one-word cache memory or a multi-word cache memory.
  • One or more data fields can therefore be provided for each cache cell. The normal case is that there are several such data fields per cache cell so that the width of the data bus to which all cache blocks are addressed is not too large.
  • a cache memory with the features of claim 7 (second variant).
  • the difference of this second variant compared to the previously described first variant of the cache memory is that instead of the writability and readability flags, a multiple display is provided per cache cell of each cache block, which indicates whether synonym indexes exist in the synonym index field or not.
  • This information can be indicated by a special multiple flag or can be stored in a cache cell in that at least one of the synonym indexes is valid.
  • An additional bit for the multiple flag So ge is not mandatory; rather, all of the validity bits for the synonym indexes could be subjected to a logical OR operation in order to obtain the multiple information.
  • this data word is also written in all cache cells of other cache blocks which are indexed by the synonym indexes or the synonym field of this cache cell .
  • This organization of the cache memory has the advantage that the reading of a synonym can always take place in one step, since when writing to a data field with synonyms, the synonym data fields have always also been written. This in turn means that a write operation always requires two steps.
  • bus means any type of transmission network via which the units connected to it can communicate.
  • the "bus” is only a special form of a transmission network.
  • address is intended to mean the name which is assigned to a real object (e.g. a 'storage location of a real memory) or a virtual object (e.g. a storage location of the virtual memory).
  • synonym entries they are always in different cache Blocks, whereby each cache block can have a maximum of one synonym entry.
  • Each cache cell uses its valid synonym indexes to refer to the synonym entries in other cache blocks.
  • a maximum of one of all the synonym entries has a writability flag set.
  • At least one of all synonym entries has a legibility flag.
  • All synonym entries provided with readability flags are identical.
  • 1 shows the basic structure of a cache memory with internal synonym management
  • Fig. 7 schematically shows the structure of a cache block of the
  • Fig. 8 shows schematically the structure of a conventional
  • the cache memory 10 with efficient synonym processing (also referred to below as SF cache for synonym-friendly cache memories) is described below with reference to FIG. 1.
  • the cache memory has a plurality of cache blocks 12 (in the example shown there are three cache blocks 12), all of which are connected to a bidirectional external data bus 14.
  • the external data bus 14 leads to a processor (not shown).
  • This processor is connected to a read / write line 16 which is connected to each of the cache blocks 12.
  • the cache memory 10 has an indexer unit 18, which is supplied with a virtual address by the processor via an external address bus 20. In the indexer unit 18, a residual address is generated from the virtual address, which is placed on an internal residual address bus 22.
  • the internal residual address bus 22 is connected to the cache blocks 12.
  • the indexer unit 18 and the cache blocks 12 are additionally connected via an index bus 24 which has a plurality of index sub-buses 26.
  • the indexer unit 18 and all of the cache blocks 12 are connected to each of the index sub-buses 26.
  • An index is generated in the indexer unit 18 from the virtual address in addition to the remaining address for each cache memory. All of these indices are placed on the index subbuses 26. These indexes can be different or the same for each cache block 12; in particular, it is also possible that no index is generated for one or more cache blocks 12.
  • indexer unit 18 can place an index on each of the index subbuses 26, only one cache block 12 is provided per index subbus 26, which is from this index subbus 26 can take over the index.
  • This cache block 12 can in turn put indexes on the other of the index sub-buses 26, which are then intended for other cache blocks.
  • the index placed by a cache block 12 on one of the index sub-buses 26 is a synonym index which refers to synonyms in other cache blocks 12. This will be discussed further below.
  • all cache blocks 12 are connected to one another via an internal control data bus 28.
  • a cache block 12 determined by the index generated by the indexer unit 18 places a control signal (hereinafter also referred to as a step 2 signal) on the control data bus 28, which passes this control signal to the other cache blocks 12.
  • This control signal will also be discussed in more detail below.
  • Each cache block 12 consists of a plurality of cache cells 30 (also called cache lines).
  • Each cache line 30 has a marker field 32 in which a marker v 'is stored.
  • each cache cell 30 is provided with one or more data fields 34 (in the exemplary embodiment to be described there are four data fields 34 per cache cell) in which data words d 0 , d 1 , d 2 , d 3 can be stored.
  • a status field 36 is assigned to each data field 34, each status field 36 having a writability flag 38 and a readability flag 40. If the writability flag 38 is set, then this writability flag can be Flag 38 associated data field 34 write a data word. If the readability flag 40 is set, the data word can be read from the assigned data field 34. If the writability / readability flag 38.40 is not set, a write or read action is not possible.
  • each cache cell 30 has at least one synonym index field 42 (in the exemplary embodiment to be described, there are two synonym index fields 42). These synonym index fields 42 serve to store synonym indexes (alias 2 , alias 3 ) which refer to cache cells in other cache blocks 12 of the cache memory 10 in which synonyms are stored.
  • synonym index fields 42 serve to store synonym indexes (alias 2 , alias 3 ) which refer to cache cells in other cache blocks 12 of the cache memory 10 in which synonyms are stored.
  • the assignment of a synonym index stored in a cache cell 30 of a (first) cache block 12 to a cache cell of another (second) cache block 12 results from the fact that the relevant synonym index is placed on that index subbus 26 from which the other (second) cache block 12 reads. Not shown in FIG.
  • each cache block 12 is provided with a comparator unit 44.
  • This comparator unit 44 has the task of comparing the remaining address (rem virt address) delivered via the remaining address bus 22 with the marking v 'of the marking area 32 of the cache cell 30 which is selected via the index c 1 within the cache block 12 .
  • This index c 1 is supplied by the indexer unit 18, which generates this index c 1 from the virtual address (vaddr, see FIG. 1). If the comparison in the comparator unit 44 is positive, then that data becomes via the remaining address field 34 selected from which to read or write.
  • the write or read signal is fed to an internal control unit 46 via line 16.
  • the control unit 46 is also connected to the control data bus 28 in order to apply a control signal to the other cache blocks or to receive a control signal generated by another cache block. Finally, the control unit 46 also controls the output of the synonym indexes and places them on the relevant index subbuses 26 (depending on the assignment of the synonym indexes to the individual cache blocks).
  • the cache memory 10 operates under the boundary condition that if synonyms are present, they are distributed over a number of cache blocks 12, that is to say only one synonym is stored per cache block 12.
  • the processor creates the virtual address (vaddr) via the address bus 20.
  • the indexer unit 18 generates the remaining address which is placed on the remaining address bus 22.
  • the indexing unit 18 generates one or more indices c 1 to c 3 , which are placed on the individual index sub-buses 26 of the index bus 24.
  • the index c x is placed on that index sub-bus 26 from which only the cache block 12 designated block 1 reads. Of this cache block 1 associated index c 1 selects a particular cache line from within that cache block 12th The marking of the marking field of this cache line is compared with the remaining address.
  • the remaining address is also used to select the data field from which to read. For the further description it is assumed that the readability flag of the status field assigned to this data field is not set and that valid synonym indexes are stored in the synonym index field of the selected cache cell.
  • the data word of the data field must not be read. Since valid synonym indexes are stored in this cache line, they are placed on the index subbuses 26. By assigning the synonym indexes to the index sub-buses 26, the cache block 12 determines which synonym index is intended for which other cache block 12. Within the other cache blocks 12 is then allocated based on the. Synonym indexes selected a cache cell. Furthermore, the control unit of the cache block 12 which places the synonym indexes on the index sub-buses 26 generates the control signal (Step 2 signal) which is sent to the control units of the other cache blocks. This situation is shown in Fig. 3.
  • One of the cache blocks 12 addressed by the synonym indexes has a cache cell which is indexed by the relevant synonym index and which r ⁇ has a readability flag set by the data address determined by the residual address, with which the data word stored in this data field can be read.
  • this cache block should be block 2 .
  • the data word of the cache cell of this block 2 is placed on the file ous 14 and read by the processor.
  • this data word is also used by the originally addressed first Read cache block 12 (block 1 of the figures). This situation is shown in Fig. 4.
  • the readability flag for the data field of the indexed cache cell of block 1 which was originally not set, is set and the writability flags of the data fields of the cache lines of the other blocks, which are determined by the remaining address, and which are determined by the synonym indexes, are reset .
  • the read operation is then completed and a cache hit is signaled.
  • Step 1 a cache line of a cache block is selected (in in
  • this is a cache cell of the
  • Blocks 1 If it is determined that the data field of the cache line specified by the remaining address has a non-writability flag, the valid synonym indexes of the synonym index fields of this cache line are placed on the index sub-buses. The data word present on the data bus is then written into the data field of block 1 . The block sends a Step 2 signal to the remaining cache blocks.
  • the readability and writability flags of those data fields which are contained in the cache cells of the other cache blocks specified by the synonym indexes and which are determined by the remaining address are all reset, whereas the writability flag and the readability flag of the data field determined by the residual address of the cache determined by the index of the indexer unit Cell are both set. The cache hit is then signaled.
  • each cache line (in addition to various control information) contains not only the associated virtual address v ci and the data d ci , but - a 1-bit field readable (readability flag), - a 1-bit -Field wri table (writability flag), - n - 1 fields alias (j) (for j ⁇ i) (synonym index fields).
  • alias ci (j) either contain the special value no address or the cache address of the line of block j, which contains a synonym of the current line.
  • a maximum of one of all synonymous cache entries is writable.
  • All readaJble synonymous cache entries have the same data value.
  • Each cache block is an independently operating unit.
  • the reaction of block i depending on its input signals is described below.
  • the requirements for the operations described on the right are listed to the left of ⁇ .
  • all the prerequisites listed for this must be met (and link). All operations separated by commas are done in parallel; the end of the cycle is indicated by ⁇ .
  • the second step is carried out independently of the control signals then set.
  • Crossover (like denotes the negation of a signal or a bit, seating and step2! resetting a signal or a bit.
  • D denotes the data bus, V the virtual address coming from the processor and V the cache-internal virtual address bus on which the indexer places the remaining virtual address that the cache blocks need for the hit check.
  • the hit signal (not shown in the figures) signals the processor that a read or write operation has been successfully completed. If neither hi t nor step2 is set at the end of a cycle, a miss is signaled to the processor.
  • a cache line contains k words (measured on the data bus) or, in other words, k data fields, the readable and writable table are carried per data field.
  • the corresponding data field is about the least significant part the created virtual address V or selected via the remaining address or a part thereof.
  • the indexer can alternatively address different lines of the individual cache blocks in the first step to avoid clashes.
  • the address bus V must then be expanded.
  • shared is set if and only if at least one alias ci (j) contains a real address.
  • a circuit can also be used that

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

Der Cache-Speicher (10) is mit mehreren Cache-Blöcken (12) versehen, die jeweils eine Vielzahl von Cache-Zeilen aufweisen. Jeder Cache-Block (12) weist maximal einen Synonym-Eintrag auf. Eine Cache-Zeile mindestens eines der Cache-Blöcke (12) wird auf der Grundlage der virtuellen Adresse ausgewählt. Verweist diese Cache-Zeile auf synonyme Einträge in anderen Cache-Blöcken, so wird auf diese zugegriffen, und zwar abhängig davon, ob dem Cache-Speicher eine Schreib- oder eine Lese-Operation signalisiert wird und ob die Lesbarkeits- und/oder Schreibbarkeits-Flagge für den durch die virtuelle Adresse ausgewählten Cache-Zellen-Eintrag gesetzt is oder nicht.

Description

Virtuell indizierbarer Cache-Speicher
Die Erfindung betrifft einen viituell indizierbaren Cache-Speicher, der Synonym-Eintrage effizient behandelt und ihnen keine Alignment-Restriktionen auferlegt. Moderne Prozessoren benötigen Cache-Speicher, um die Lücke zwischen schnellen Prozessoren und langsamen Hauptspeichern auszugleichen.
Bekannt sind real und virtuell indizierte Cache-Speicher. Beim real indizierten Cache-Speicher wird die vom Prozessor gelieferte virtuelle Adresse zuerst vom Translation Lookaside Buffer (TLB) in eine Realadresse umgesetzt. Danach wird der Cache-Speicher mit einer Realadresse angesprochen. Beim virtuell indizierten Cache-Speicher wird dieser direkt mit der virtuellen Adresse angesprochen. Eine Umsetzung in die entsprechende Realadresse erfolgt nur bei einem Cache-Miss. Der Vorteil eines virtuell indizierten Cache-Speichers ist die höhere Geschwindigkeit, da der Umsetzschritt durch den TLB entfällt. Sein Nachteil tritt bei Synonymen bzw. Aliasing auf. Synonyme sind unter- schiedliche virtuelle Adressen, die auf dieselbe Realadresse abgebildet werden. Bei solchem Aliasing kann also ein (reales) Speicherobjekt über verschiedene (virtuelle) Adressen angesprochen werden. Konventionelle virtuell indizierbare Cache-Speicher
- verbieten Synonyme entweder total,
- oder beschränken ihre Anwendung (z.B. indem sie für zwei Synonyme v und v' stets v = V' (mod Cache-Größe) verlangen,
- oder stellen Aliasing mit Hilfe eines Reverse Translation Buffers (RTB) fest, brauchen aber viel Zeit für das Umschalten zwischen zwei Synonymen.
Im Stand der Technik sind sogenannte Direct-Mapped Cache-Speicher bekannt. Ein derartiger Cache-Speicher ist wie in Fig. 8 dargestellt organisiert. Bei einem derartigen Direct-Mapped Cache-Speicher wird mit Hilfe einer map-Funktion aus der virtuellen Adresse v ein Cache-Index berechnet und damit eine Zeile des Cache-Speichers angewählt. Dann wird v mit der virtuellen Adresse des augenblicklich mit dieser Cache-Zeile assoziierten Speicherbereichs verglichen. Bei Gleichheit liegt ein Treffer (Cache-Hit) vor (und die Cache-Zeile wird anstelle des Hauptspeichers benutzt); andernfalls wird ein Cache-Miss signalisiert.
Meistens wird
(v mod Cache-Größe)/Zeilengröße als map-Funktion benutzt. Dann braucht im Cache-Speicher nicht die vollständige virtuelle Adresse gespeichert zu werden, sondern es reicht v/Cache-Größe. Direct-Mapped Cache-Speicher sind einfacher, führen aber zu höheren Miss-Raten als n-Wege Cache-Speicher. Diese bestehen prinzipiell aus n entsprechend kleineren Direct-Mapped Cache-Blöcken. Dabei wird sichergestellt, daß sich jedes Hauptspeicherelement in höchstens einem Block befindet. Da die map-Funktion jeweils n CacheZeilen indiziert, können jeweils bis zu n Elemente mit map-äquivalenten Adressen im Cache-Speicher enthalten sein. Diese n-fache Assoziativität verringert die Wahrscheinlichkeit von Clashes und vergrößert entsprechend die Trefferrate.
Wenn ein konventioneller virtuell indizierter Cache-Speicher Aliasing im Cache-Speicher zuläßt, d.h. erlaubt, daß mit einem einzigen Realobjekt mehrere Cache-Zeilen oder -Zellen assoziiert sind, könnte man derart verfahren, daß zwischen einem Haupt- und keinem, einem oder mehreren Nebeneinträgen unterschieden wird. Zugriff auf den Haupteingang wird normal abgewickelt. Zugriff auf einen Nebeneintrag führt zu einem Alias-Miss und bewirkt, daß - die Daten des Haupteintrags in diesen Nebeneintrag kopiert werden,
- dieser Nebeneintrag neuer Haupteintrag wird,
- der alte Haupteintrag Nebeneintrag wird.
Der Erfindung liegt die Aufgabe zugrunde, einen virtuell indizierbaren Cache-Speicher zu schaffen, der mehrfaches Aliasing ohne Alignment-Einschränkung zuläßt und diese Synonyme effizient behandelt. Insbesondere sollen die notwendigen Reaktionen auf einen Alias-Miss wenig Zeit erfordern. Zur Lösung dieser Aufgabe wird mit der Erfindung ein virtuell indizierbarer Cache-Speicher mit den Merkmalen des Anspruchs 1 vorgeschlagen. Alternativ kann der erfindungsgemäße Cache-Speicher die Merkmale des Anspruchs 7 aufweisen. Die Merkmale vorteilhafter Weiterbildungen beider Varianten sind jeweils in den Unteransprüchen aufgeführt.
Der virtuell indizierbare Cache-Speicher gemäß der ersten Variante ist mit mehreren Cache-Blöcken zum Speichern von Information versehen. Über einen externen Datenbus werden Datenworte von mindestens einem Prozessor zu den Cache-Blöcken und zwischen den Cache-Blöcken übertragen. Jeder Cache-Block kann auf den externen Datenbus zugreifen und auf diesem Datenbus liegende Datenworte übernehmen. Zum virtuellen Adressieren des Cache-Speichers ist ein externer Datenbus vorgesehen, auf den mindestens ein Prozessor virtuelle Adressen legt. Der Cache-Speicher weist eine Indexereinheit auf, die die virtuelle Adresse empfängt und diese virtuelle Adresse in ein oder mehrere Indizes für einen oder mehrere Cache-Blöcke und in eine gemeinsame Restadresse zerlegt. Zum Übertragen der Restadresse von der Indexereinheit zu den Cache-Blöcken ist ein Restadreßbus vorgesehen, an den die Indexereinheit und die Cache-Blöcke angeschlossen sind. Die Indizes bzw. der Index wird von der Indexereinheit über einen Indexbus zu den Cache-Blöcken übertragen. Über diesen Indexbus werden auch zwischen den Cache-Blöcken Indizes, nämlich die Synonym-Indizes übertragen. Jeder Index ist dabei einem bestimmten Cache-Block zugeordnet. Dies gilt sowohl für die von der Indexereinheit erzeugten Indizes als auch für die Synonym-Indizes, die in den Cache-Blöcken abgelegt sind, sofern Synonym-Einträge existieren. Über eine externe Schreib/Lese-Leitung wird von dem min- destens einen Prozessor an jeden Cache-Block ein Schreib- oder ein Lesesignal übertragen.
Die Cache-Blöcke des erfindungsgemäßen Cache-Speichers gemäß der ersten Variante sind derart organisiert, daß jeder Cache-Block mehrere Cache-Zellen aufweist, die durch einen über den Indexbus empfangenen und dem betreffenden Cache-Block zugeordneten Index auswählbar sind. Jede Cache-Zelle wiederum umfaßt ein Markierungsfeld für eine Markierung, die mit der Restadresse verglichen wird, sofern diese Cache-Zelle von dem Index ausgewählt wird. Ferner weist jede Cache-Zelle, wenigstens ein Datenfeld für ein Datenwort auf. Pro Datenfeld weist die Cache-Zelle ein Statusfeld mit mindestens einer Lesbarkeits- und einer Schreibbarkeits-Flagge auf. Sind diese Flaggen gesetzt, so ist das Datenwort des diesem Statusfeld zugeordneten Datenfeld lesbar bzw. schreibbar. Sind die Flaggen nicht gesetzt bzw. rückgesetzt, darf nicht direkt gelesen bzw. geschrieben werden. Pro Cache-Zelle ist bzw. sind ferner ein oder mehrere Synonym-Indizes gespeichert, und zwar in einem Synonym-Indexfeld. In diesem Indexfeld abge-speicherte gültige Synonym-Indizes (einer oder mehrere, wobei die Tatsache, ob der Inhalt des Indexfeldes einen gültigen Synonym-Index anzeigt, durch ein entsprechendes Validity-Bit signalisiert werden kann,) geben diejenigen Cache-Zellen der anderen Cache-Blöcke an, die Datenfelder aufweisen, die der gleichen realen Adresse (Synonym-Adressen), die der Indexereinheit zugeführt worden ist und zur Indizierung der Cache-Zelle in dem angesprochenen Cache-Block gefάhrt hat, zugeordnet sind. Schließlich ist der erfindungsgemäße Cache-Speicher mit einem Cache-Hit/Miss-Ausgang versehen, über den ein Cache-Hit signalisiert werden kann, wenn der von der Indexereinheit empfangenen virtuellen Adresse eine Cache-Zelle eines der Cache-Blöcke zulässigerweise zugeordnet ist, und über den ein Cache-Miss signalisiert werden kann, wenn in keinem Cache-Block eine Cache-Zelle der von der Indexereinheit empfangenen virtuellen Adresse zugeordnet ist.
Jeder Cache-Block ist mit einer Vergleichereinheit zum Vergleichen der über den Restadreßbus empfangenen Rest-adresse oder eines Teils davon mit dem Inhalt des Markierungsfeldes einer Cache-Zelle versehen. Diejenige Cache-Zelle, deren Markierung (Inhalt des Markierungsfeldes) mit der Restadresse oder eines Teils davon verglichen wird, wird über den den betreffenden Cache-Block zugeordneten Index des Indexbusses ausgewählt. Dieser Index wiederum kann entweder von der Indexereinheit geliefert werden (in diesem Fall ist der Index aus der virtuellen Adresse, die die Indexereinheit vom Prozessor empfängt, ableitet) oder von dem Synonym-Indexfeld eines anderen Cache-Blocks stammen. Am Cache-Hit/ Miss-Ausgang des Cache-Speichers wird ein Cache-Miss dann signalisiert, wenn für sämtliche Cache-Blöcke der Vergleich aus der Restadresse mit der Markierung der jeweils indizierten Cache-Zelle negativ ist. Beim Schreiben bzw. Lesen eines Datenworts in den bzw. aus dem Cache-Speicher wird im Trivialfall, in dem das dem betreffenden Datenfeld zugeordnete Statusfeld eine gesetzte Schreibbarkeits- bzw. Lesbarkeits-Flagge aufweist, wie folgt verfahren.
Bei Vorhandensein eines Schreibsignals auf der Schreib/ Lese-Leitung ist ein auf dem Datenbus befindliches Datenwort unmittelbar in das durch die Restadresse oder einen Teil davon bestimmte Datenfeld einer durch den Index der Indexereinheit indizierten Cache-Zelle ein- schreibbar, wenn die Schreibbarkeits-Flagge des dem Datenfeld zugeordneten Statusfeldes gesetzt ist. Bei Vorhandensein eines Lesesignals auf der Schreib/Lese-Leitung ist das Datenwort des durch die Restadresse oder einen Teil davon bestimmten Datenfeldes einer durch den Index der Indexereinheit indizierten Cache-Zelle unmittelbar lesbar, wenn die Lesbarkeits-Flagge des dem Datenfeld zugeordneten Statusfeldes gesetzt ist. Im Anschluß an das Schreiben oder Lesen wird am Cache-Hit/Miss-Ausgang ein Cache-Hit signalisiert.
Sofern vom Prozessor Schreiben signalisiert wird, die Schreibbarkeits-Flagge für das durch die Restadresse oder einen Teil davon bestimmte Datenfeld der durch den Index der Indexereinheit indizierten Cache-Zelle jedoch nicht gesetzt ist, ein Schreiben in das Datenfeld also nicht erlaubt ist, und im Synonym-Indexfeld ein oder mehrere gültige Synonym-Indizes enthalten sind, arbeitet der erfindungsgemäße Cache-Speicher vorzugsweise wie folgt:
Jeder in dem Synonym-Indexfeld der durch den Index der Indexereinheit indizierten Cache-Zelle befindliche gültige Synonym-Index wird über den Indexbus an den jeweils zugeordneten Cache-Block angelegt.
Das auf dem Datenbus befindliche Datenwort wird ungeachtet der nicht gesetzten Schreibbarkeits- Flagge in das Datenfeld der durch den Index der Indexereinheit indizierten Cache-Zelle geschrieben.
Die Schreibbarkeits-Flagge und die Lesbarkeits- Flagge des zu diesem Datenfeld gehörenden Status- feldes werden gesetzt . Schließlich werden auch die Schreibbarkeits- und die Lesbarkeits-Flaggen in denjenigen Statusfeldern rückgesetzt, die denjenigen Datenfeldern in den durch die Synonym-Indizes indizierten Cache- Zellen zugeordnet sind, die durch die Restadresse oder einen Teil davon bestimmt sind.
Bei einem Lesesignal auf der Schreib/Lese-Leitung und einer nicht gesetzten Lesbarkeits-Flagge in dem Status-feld des diesem zugeordneten und durch die Restadresse oder einen Teil davon bestimmten Datenfeldes der durch den Index der Indexereinheit indizierten Cache-Zelle arbeitet der erfindungsgemäße Cache-Speicher vorzugsweise wie folgt: - Jeder in dem Synonym-Indexfeld der durch den Index der Indexereinheit indizierten Cache-Zelle befindliche gültige Synonym-Index wird über den Indexbus an den jeweils zugeordneten Cache-Block angelegt. - Das Datenwort des durch die Restadresse oder einen Teil davon bestimmten Datenfeldes mindestens einer durch die Synonym-Indizes indizierten Cache-Zellen wird auf den Datenbus gelegt, sofern die diesem Datenfeld zugeordnete Lesbarkeits-Flagge gesetzt ist. Hierbei ist. zu beachten, daß die in diesen Datenfeldern abgelegten Datenworte identisch sind. Für jedes durch die Restadresse oder einen Teil davon bestimmte Datenfeld der durch die Synonym- Indizes indizierten Cache-Zellen wird dafür gesorgt, daß die zugeordnete Schreibbarkeits-Flagge rückgesetzt ist. - Schließlich wird das auf dem Datenbus befindliche Datenwort in das durch die Restadresse oder einen Teil davon bestimmte Datenfeld der ursprünglich durch den Index der Indexereinheit indizierten Cache-Zelle geschrieben und die Lesbarkeits-Flagge des diesem Datenfeld zugeordneten Statusfeldes gesetzt.
In den beiden zuvor beschriebenen Fällen wird ein Cache-Hit genau dann signalisiert, wenn sämtliche der jeweils aufgeführten Schritte abgearbeitet werden können und sind.
Der Vorzug des erfindungsgemäßen Cache-Speichers besteht in dem schnellen Handling von Synonym-Einträgen. Ein Zugriff auf eine RTB-Aktion im Falle von Synonymen ist nicht erforderlich, wodurch Verarbeitungszeit eingespart wird. Schließlich erfolgt bei einem Synonym-Hit, d.h. bei Vorhandensein von Synonymen, auch kein externer Buszugriff; vielmehr läuft die Synonym-Behandlung intern und schneller ab.
In vorteilhafter Weiterbildung der Erfindung ist vorgesehen, daß der Indexbus mehrere Teilindexbusse aufweist. Die Anzahl dieser Teilindexbusse ist dabei gleich der Anzahl an Cache-Blöcken. An jeden Teilindexbus sind sowohl die Indexereinheit als auch sämtliche Cache-Blöcke angeschlossen. Die Indexereinheit ist mit mehreren Ausgängen zum Liefern jeweils eines Indexes versehen. Dabei ist jeder Ausgang genau mit einem Teilindexbus verbunden. Auch die Cache-Blöcke weisen eine der Anzahl an Indexteilbussen gleichende Anzahl von Eingängen/Ausgängen auf. Dabei weist jeder Cache-Block einen Index-Eingang und mehrere Index-Ausgänge auf. Jeder Indexteilbus ist genau mit einem 'Index-Eingang eines der Cache-Blöcke verbunden. Selbiges gilt für jeden Ausgang der Cache-Blöcke und dessen Verbindung mit einem Indexteilbus. Der Vorteil der zuvor beschriebenen Indexbusstruktur besteht darin, daß durch die Indexteilbusse die Zuordnung von Indizes der Indexereinheit und von Synonym-Indizes einzelner Cache-Blöcke zu bestimmten Cache-Blöcken durch die Hardware gegeben ist.
Alternativ zu dem obigen Aufbau des Indexbusses kann dieser auch im Multiplex-Betrieb arbeiten, so daß die Zuordnung eines Indexes zu einem Cache-Block zeitgesteuert ist.
Bei dem erfindungsgemäßen Cache-Speicher gemäß der ersten Variante kann es sich entweder um einen Einwort-Cache-Speicher oder um einen Mehrwort-Cache-Speieher handeln. Pro Cache-Zelle können also ein oder mehrere Datenfelder vorgesehen sein. Der Normalfall ist, daß mehrere derartiger Datenfelder pro Cache-Zelle vorhanden sind, um den Datenbus, an den sämtliche Cache-Blöcke angesprochen sind, in seiner Breite nicht zu groß werden zu lassen.
Die oben genannte Aufgabe wird auch durch einen Cache-Speicher mit den Merkmalen des Anspruchs 7 gelöst (zweite Variante). Der Unterschied dieser zweiten Variante gegenüber der zuvor bes-chriebeπeπ ers-ten Variante des Cache-Speichers besteht darin, daß pro Cache-Zelle eines jeden Cache-Blocks statt der Schreib-barkeits- und Lesbarkeits-Flaggen eine Mehrfach-Anzeige vorgesehen ist, die anzeigt, ob Synonym-Indizes im Synonym-Indexfeld existieren oder nicht. Diese Information kann durch eine spezielle Mehrfach-Flagge angezeigt werden oder aber dadurch in einer Cache-Zelle abgelegt sein, daß mindestens einer der Synonym-Indizes gültig ist. Ein zusätzliches Bit für die Mehrfach-Flag- ge ist also nicht zwingend erforderlich; vielmehr könnten also sämtliche Gültigkeitsbits für die Synonym-Indizes einer logischen ODER-Operation unterzogen werden, um die Mehrfach-Information zu erhalten.
Soll in das Datenfeld oder eines der Datenfelder einer Cache-Zelle mit gesetzter Mehrfach-Flagge geschrieben werden, so wird dieses Datenwort in sämtliche durch den bzw. die Synonym-Indizes des Synonymfeldes dieser Cache-Zelle indizierte Cache-Zellen anderer Cache-Blöcke ebenfalls geschrieben. Diese Organisation des Cache-Speichers hat den Vorteil, daß das Lesen eines Synonyms stets in einem Schritt erfolgen kann, da beim Schreiben in ein Datenfeld mit Synonymen stets auch in die Synonym-Datenfelder geschrieben worden ist. Das wiederum bedeutet, daß eine Schreib-Operation stets zwei Schritte erfordert.
Sofern im Rahmen dieser Erfindung der Begriff "Bus" verwendet wird, meint dies jegliche Art von Übertragungsnetzwerk, über das die daran angeschlossenen Einheiten kommunizieren können. Der "Bus" ist insofern lediglich eine spezielle Form eines Übertragungsnetzwerks. Ferner soll im Rahmen dieser Erfindung mit dem Ausdruck "Adresse" der Name gemeint sein, der einem Realobjekt (z.B. einer' Speicherstelle eines Real-speichers) bzw. einem virtuellen Objekt (z.B. einer Speicherstelle des virtuellen Speichers) zugeordnet ist.
Für den erfindungsgemäßen Cache-Speicher beider Varianten gelten die folgenden Randbedingungen:
Sofern Synonym-Einträge vorhanden sind, befinden sich diese immer in unterschiedlichen Cache- Blöcken, wobei jeder Cache-Block maximal einen Synonym-Eintrag aufweisen kann. - Jede Cache-Zelle verweist durch ihre gültigen Synonym-Indizes auf die Synonym-Einträge in anderen Cache-Blöcken. - Von sämtlichen Synonym-Eintragen weist maximal einer eine gesetzte Schreibbarkeits-Flagge auf. - Von sämtlichen Synonym-Einträgen weist mindestens einer eine gesetzte Lesbarkeits-Flagge auf. - Sämtliche mit gesetzten Lesbarkeits-Flaggen versehenen Synonym-Einträge sind identisch.
Nachfolgend wird anhand der Figuren ein Ausführungsbeispiel der Erfindung näher erläutert. Im einzelnen zeigen:
Fig. 1 den grundsätzlichen Aufbau eines Cache- Speichers mit interner Synonym-Verwaltung,
Fign. 2 bis 6
den Cache-Speicher gemäß Fig. 1, wobei durch
Hervorhebung einzelner Daten- und Steuerpfade der Nutzdaten- und Steuerdatenfluß während einzelner Phasen einer Schreib- und Lese-Operation angedeutet ist,
Fig. 7 schematisch den Aufbau eines Cache-Blockes des
Cache-Speichers gemäß den Fign. 1 bis 6 und
Fig. 8 schematisch den Aufbau eines herkömmlichen
Cache-Speichers mit map-Funktion. Anhand von Fig. 1 soll nachfolgend der Aufbau eines Cache-Speichers 10 mit effizienter Synonym-Verarbeitung (nachfolgend auch mit SF-Cache für Synonym-freundlicher Cache-Speicher bezeichnet) beschrieben werden. Der Cache-Speicher weist mehrere Cache-Blöcke 12 auf (im dargestellten Beispiel sind es drei Cache-Blöcke 12), die sämtlich an einem bidirektionalen externen Datenbus 14 angeschlossen sind. Der externe Datenbus 14 führt zu einem (nicht dargestellten) Prozessor. Dieser Prozessor ist an eine Schreib/Lese-Leitung 16 angeschlossen, die mit jedem der Cache-Blöcke 12 verbunden ist. Neben den Cache-Blöcken 12 weist der Cache-Speicher 10 eine Indexereinheit 18 auf, der über einen externen Adreßbus 20 vom Prozessor eine virtuelle Adresse zugeführt wird. In der Indexereinheit 18 wird aus der virtuellen Adresse eine Restadresse erzeugt, die auf einen internen Restadreßbus 22 gelegt wird. Der interne Restadreßbus 22 ist mit den Cache-Blöcken 12 verbunden. Neben der Verbindung über den Restadreßbus 22 sind die Indexereinheit 18 und die Cache-Blöcke 12 zusätzlich über einen Indexbus 24 verbunden, der mehrere Indexteilbusse 26 aufweist. Es existieren so viele Indexteilbusse 26 wie Cache-Blöcke 12 vorhanden sind. Die Indexereinheit 18 und sämtliche der Cache-Blöcke 12 sind mit jedem der Indexteilbusse 26 verbunden. In der Indexereinheit 18 wird aus der virtuellen Adresse neben der Restadresse für jeden Cache-Speicher ein Index erzeugt. Sämtliche dieser Indizes werden auf die Indexteilbusse 26 gelegt. Diese Indizes können für jeden Cache-Block 12 unterschiedlich oder gleich sein; insbesondere ist es auch möglich, daß für einen oder mehrere Cache-Blöcke 12 kein Index erzeugt wird. Während die Indexereinheit 18 auf jeden der Indexteilbusse 26 jeweils einen Index legen kann, ist pro Indexteilbus 26 lediglich ein Cache-Block 12 vorgesehen, der von diesem Indexteilbus 26 den Index übernehmen kann. Dieser Cache-Block 12 kann seinerseits auf die anderen der Indexteilbusse 26 Indizes legen, die dann für andere Cache-Blöcke bestimmt sind. Bei den von einem Cache-Block 12 auf einen der Indexteilbusse 26 gelegten Index handelt es sich um einen Synonym-Index, der auf Synonyme in anderen Cache-Blöcken 12 verweist. Hierauf wird noch weiter unten eingegangen werden. Schließlich sind sämtliche Cache-Blöcke 12 über einen internen Steuerdatenbus 28 miteinander verbunden. Bei Vorhandensein von Synonymen in dem Cache-Speicher 10 legt im Laufe einer Schreib- bzw. Lese-Operation ein über den von der Indexereinheit 18 erzeugten Index bestimmter Cache-Block 12 ein Steuersignal (nachfolgend auch als Step 2-Signal bezeichnet) auf den Steuerdatenbus 28, der dieses Steuersignal an die anderen Cache-Blöcke 12 weitergibt. Auch auf dieses Steuersignal wird noch weiter unten näher eingegangen werden. Bevor auf die Funktionsweise des Cache-Speichers gemäß Fig. 1 eingegangen wird, soll noch anhand von Fig. 7 der interne Aufbau eines Cache-Blocks 12 kurz erläutert werden. Jeder Cache-Block 12 besteht aus einer Vielzahl von Cache-Zellen 30 (auch Cache-Zeilen genannt). Jede Cache-Zeile 30 weist ein Markierungsfeld 32 auf, in dem eine Markierung v' gespeichert ist. Zusätzlich zu dem Markierungsfeld 32 ist jede Cache-Zelle 30 mit einem oder mehreren Datenfeldern 34 versehen (im hier zu beschreibenden Ausführungsbeispiel existieren pro CacheZelle vier Datenfelder 34), in denen Datenworte d0, d1, d2, d3 abspeicherbar sind. Jedem Datenfeld 34 ist ein Statusfeld 36 zugeordnet, wobei jedes Statusfeld 36 eine Schreibbarkeits-Flagge 38 und eine Lesbarkeits-Flagge 40 aufweist. Ist die Schreibbarkeits-Flagge 38 gesetzt, so läßt sich in das dieser Schreibbarkeits- Flagge 38 zugeordnete Datenfeld 34 ein Datenwort schreiben. Ist die Lesbarkeits-Flagge 40 gesetzt, so läßt sich aus dem zugeordneten Datenfeld 34 das Datenwort lesen. Bei nicht gesetzter Schreibbarkeits-/Les-barkeits-Flagge 38,40 ist eine Schreib- bzw. Leseaktion nicht möglich. Zusätzlich zu dem Markierungsfeld 32, dem oder den Datenfeldern 34 und dem oder den Statusfeldern 36 weist jede Cache-Zelle 30 mindestens ein Synonym-Indexfeld 42 auf (im hier zu beschreibenden Ausführungsbeispiel existieren zwei Synonym-Indexfelder 42). Diese Synonym-Indexfelder 42 dienen der Speicherung von Synonym-Indizes (alias2, alias3), die auf Cache-Zellen in anderen Cache-Blöcken 12 des Cache-Speichers 10 verweisen, in denen Synonyme abgelegt sind. Die Zuordnung eines in einer Cache-Zelle 30 eines (ersten) Cache-Blocks 12 abgelegten Synonym-Index zu einer Cache-Zelle eines anderen (zweiten) Cache-Blocks 12 ergibt sich dadurch, daß der betreffende Synonym-Index auf denjenigen Indexteilbus 26 gelegt wird, von dem der andere (zweite) Cache-Block 12 liest. In Fig. 7 nicht dargestellt sind Validierungs-Bits bzw. -Flaggen, die anzeigen, daß sich in dem bzw. den Synonym-Index-feldern gültige Synonym-Indizes befinden. Gemäß Fig. 7 ist jeder Cache-Block 12 mit einer Vergleichereinheit 44 versehen. Diese Vergleichereinheit 44 hat die Aufgabe, die über den Restadreßbus 22 gelieferte Restadresse (rem virt address) mit der Markierung v' des Markierungsfe des 32 derjenigen Cache-Zelle 30 zu vergleichen, die über den Index c1 innerhalb des Cache-Blocks 12 ausgewählt ist. Dieser Index c1 wird von der Indexereinheit 18 geliefert, die diesen Index c1 aus der virtuellen Adresse (vaddr, siehe Fig. 1) erzeugt. Ist der Vergleich in der Vergleichereinheit 44 positiv, so wird über die Restadresse dasjenige Daten feld 34 ausgewählt, aus dem gelesen oder in das geschrieben werden soll. Das Schreib- bzw. Lesesignal wird einer internen Steuereinheit 46 über die Leitung 16 zugeführt. Die Steuereinheit 46 ist darüber hinaus mit dem Steuerdatenbus 28 verbunden, um auf diesen ein für die anderen Cache-Blöcke bestimmtes Steuersignal zu legen oder von diesem ein von einem anderen Cache-Block erzeugtes Steuersignal zu empfangen. Schließlich steuert die Steuereinheit 46 auch die Ausgabe der Synonym-Indizes und legt diese auf die betreffenden Indexteilbusse 26 (in Abhängigkeit von der Zuordnung der Synonym-Indizes zu den einzelnen Cache-Blöcken).
Nachfolgend soll anhand der Fign. 2 bis 4 der Ablauf einer Lese-Aktion und anhand der Fign. 5 und 6 der Ablauf einer Schreib-Operation näher erläutert werden. Der Cache-Speicher 10 arbeitet unter der Randbedingung, daß bei Vorhandensein von Synonymen diese auf mehrere Cache-Blöcke 12 verteilt sind, pro Cache-Block 12 also lediglich ein Synonym gespeichert ist.
In der ersten Phase (Step 1) einer Lese-Operation wird vom Prozessor über den Adreßbus 20 die virtuelle Adresse (vaddr) angelegt. Die Indexereinheit 18 erzeugt die Restadresse, die auf den Restadreßbus 22 gelegt wird. Ferner erzeugt die Ihdexereinheit 18 ein oder mehrere Indizes c1 bis c3, die auf die einzelnen Indexteilbusse 26 des Indexbusses 24 gelegt werden. Im in Fig. 2 dargestellten Fall wird der Index cx auf denjenigen Indexteilbus 26 gelegt, von dem ausschließlich der mit Block1 bezeichnete Cache-Block 12 liest. Der diesem Cache-Block1 zugeordnete Index c1 wählt eine bestimmte Cache-Zeile innerhalb dieses Cache-Blocks 12 aus. Die Markierung des Markierungsfeldes dieser Cache-Zeile wird mit der Restadresse verglichen. Ist der Vergleich positiv, so wird über die Restadresse auch dasjenige der Datenfelder ausgewählt, aus dem gelesen werden soll. Für die weitere Beschreibung sei angenommen, daß die Lesbarkeits-Flagge des diesem Datenfeld zugeordneten Statusfeldes nicht gesetzt ist und daß im Synonym-Indexfeld der angewählten Cache-Zelle gültige Synonym-Indizes gespeichert sind.
Da die Lesbarkeits-Flagge nicht gesetzt ist, darf das Datenwort des Datenfeldes nicht gelesen werden. Da gültige Synonym-Indizes in dieser Cache-Zeile gespeichert sind, werden sie auf die Indexteilbusse 26 gelegt. Durch die Zuordnung der Synonym-Indizes zu den Indexteilbussen 26 wird durch den Cache-Block 12 festgelegt, welcher Synonym-Index für welchen anderen Cache-Block 12 vorgesehen ist. Innerhalb der anderen Cache-Blöcke 12 wird dann anhand des jeweils zugeordneter. Synonym-Indexes eine Cache-Zelle ausgewählt. Ferner erzeugt die Steuereinheit des die Synonym-Indizes auf die Indexteilbusse 26 legenden Cache-Blocks 12 das Steuersignal (Step 2-Signal), das den Steuereinheiten der anderen Cache-Blöcke zugeht. Diese Situation ist in Fig. 3 wiedergegeben. Einer der durch die Synonym-Indizes angesprochenen Cache-Blöcke 12 weist eine durch den betreffenden Synonym-Index indizierte Cache-Zelle auf, derrα durch die Restadresse bestimmtes Datenfeld eine gesetzte Lesbarkeits-Flagge aufweist, womit das in diesem Datenfeld gespeicherte Datenwort lesbar ist. In dem hier zu beschreibenden Fall soll es sich bei diesem Cache-Block um den Block2 handeln. Das Datenwort der Cache-Zelle dieses Blocks2 wird auf den Datei-ous 14 gelegt und vom Prozessor gelesen. Zusätzlich wird dieses Datenwort aber auch von dem ursprünglich angesprochenen ersten Cache-Block 12 (Block 1 der Figuren) gelesen. Diese Situation ist in Fig. 4 wiedergegeben. Schließlich wird die ursprünglich nicht gesetzte Lesbarkeits-Flagge für das Datenfeld der indizierten Cache-Zelle des Blocks1 gesetzt und die Schreibbarkeits-Flaggen der durch die Restadresse bestimmten Datenfelder der Cache-Zeilen der anderen Blöcke, die durch die Synonym-Indizes bestimmt sind, rückgesetzt. Danach ist die Lese-Operation abgeschlossen und es wird ein Cache-Hit signalisiert.
Für den Fall, daß ein auf dem Datenbus 14 anstehendes Datenwort in ein Datenfeld einer Cache-Zelle innerhalb eines der Cache-Blöcke des Cache-Speichers geschrieben werden soll, wird gemäß Fign. 5 und 6 verfahren. Zunächst wird in der ersten Phase der Schreib-Operation
(Step 1, s. Fig. 5) wie im Falle einer Lese-Operation eine Cache-Zeile eines Cache-Blocks ausgewählt (im in
Fig. 5 gezeigten Fall ist dies eine Cache-Zelle des
Blocks1). Wird dabei festgestellt, daß das durch die Restadresse spezifizierte Datenfeld der Cache-Zeile eine nicht gesetzte Schreibbarkeits-Flagge aufweist, so werden die gültigen Synonym-Indizes der Synonym-Indexfelder dieser Cache-Zeile auf die Indexteilbusse gelegt. Danach erfolgt das Schreiben des auf dem Datenbus anstehenden Datenwortes in das Datenfeld des Blocks1. Der Blocki sendet ein Step 2-Signal an die übrigen Cache-Blöcke. Die Lesbarkeits- und Schreibbarkeits-Flaggen derjenigen Datenfelder, die in den durch die Synonym-Indizes spezifizierten Cache-Zellen der anderen Cache-Blöcke enthalten und durch die Restadresse bestimmt sind, werden sämtlich rückgesetzt, wohingegen die Schreibbarkeits-Flagge und die Lesbarkeits-Flagge des durch die Restadresse bestimmten Datenfeldes der durch den Index der Indexereinheit bestimmten Cache- Zelle beide gesetzt werden. Anschließend wird Cache-Hit signalisiert.
In den Figuren, insbesondere in Fig. 7, und in der obigen Abhandlung wird zwar ein Mehrwort-Cache-Speieher beschrieben, jedoch sollen nachfolgend anhand eines Einwort-Cache-Speichers, in dem der Datenbus so breit ist, daß er in einem Schritt einen ganzen Cache-Eintrag transportieren kann (jede Zeile weist also lediglich ein Datenfeld auf), nochmals die Besonderheiten der Arbeitsweise des erfindungsgemäßen SF-Cache-Speichers erläutert werden.
Beim SF-Cache-Speicher enthält jede Cache-Zeile (neben verschiedenen Steuerinformationen) nicht nur die assoziierte virtuelle Adresse vci und die Daten dci , sondern- ein 1-bit-Feld readable (Lesebarkeits-Flagge),- ein 1-bit-Feld wri table (Schreibbarkeits-Flagge),- n - 1 Felder alias(j) (für j ≠ i) (Synonym-Indexfelder).
Die Felder aliasci (j) enthalten entweder den Spezialwert keine Adresse oder die Cache-Adresse der Zeile des Blocks j, die ein Synonym der aktuellen Zeile enthält.
Es gelten folgende Invarianzen:
1. Synonym-Einträge befinden sich immer in unterschiedlichen Cache-Blöcken.
2. Jede Cache-Zeile "weiß", wo sämtliche ihrer im Cache-Speicher befindlichen Synonym-Einträge sind.
3. Maximal einer von sämtlichen synonymen Cache-Einträgen ist wri table.
4. Mindestens einer von sämtlichen synonymen Cache- Einträgen ist readable. 5. Alle readaJble synonymen Cache-Einträge haben den gleichen Datenwert.
Jeder Cache-Block ist eine eigenständig operierende Einheit. Im folgenden ist die Reaktion des Blocks i abhängig von seinen Eingangssignalen beschrieben. Dabei sind jeweils links von → die Vorraussetzungen für die rechts davon beschriebenen Operationen aufgeführt. Zur Anwahl einer Alternative müssen alle dafür aufgeführten Voraussetzungen erfüllt sein (und-Verknüpfung). Alle durch Komma getrennte Operationen erfolgen parallel; das Taktende wird durch □ angezeigt. Bei zweitaktigen Alternativen wird der zweite Schritt unabhängig von den dann gesetzten Steuersignalen durchgeführt. ÜberStreichung (wie
Figure imgf000022_0001
bezeichnet die Negation eines Signals bzw. eines Bits,
Figure imgf000022_0002
das Setzen und step2 ! das Zurücksetzen eines Signals bzw. eines Bits. D bezeichnet den Datenbus, V die vom Prozessor kommende virtuelle Adresse und V den Cache-internen virtuellen Adreßbus, auf den der Indexer die restliche virtuelle Adresse legt, die die Cache-Blöcke für die Trefferprüfung benötigen.
Das hit-Signal (in den Figuren nicht aufgeführt) signalisiert dem Prozessor den erfolgreichen Abschluß einer Lese- oder Schreib-Operatiön. Ist am Ende eines Taktes weder hi t noch step2 gesetzt, wird dem Prozessor damit ein Miss signalisiert.
Figure imgf000023_0003
Wenn eine Cache-Zeile k Worte (gemessen am Datenbus) oder, anders ausgedrückt, k Datenfelder enthält, werden die readable und wri table Bits pro Datenfeld geführt. Das entsprechende Datenfeld wird über den niederwertigen Teil
Figure imgf000023_0001
der angelegten virtuellen Adresse V bzw. über die Restadresse bzw. einen Teil davon ausgewählt. Die Reaktion des Cache-Blocks i ist dann:
Figure imgf000023_0002
Man beachte, daß die aktuell gültigen Worte eines Cache-Objekts jetzt über mehrere Blöcke verstreut sein können. Die oben aufgeführten Invarianzen gelten jetzt wortweise.
Unabhängig von der SF-Eigenschaft kann der Indexer alternativ auch schon im ersten Schritt verschiedene Zeilen der einzelnen Cache-Blöcke adressieren, um Clashes zu vermeiden. Je nach der eingesetzten map-Funktion muß dann der Adreßbus V erweitert werden.
Auf eine vereinfachte Variante des Cache-Speichers wird im folgenden noch kurz eingegangen. Bei diesem vereinfachten SF-Cache-Speicher wird auf das Feld readable verzichtet und anstelle des Feldes writable ein Feld shared verwendet. Der Cache-Block i operiert dann folgendermaßer (hier wird gleich die Mehrwort-Version beschrieben):
Figure imgf000024_0001
Es gilt: shared ist genau dann gesetzt, wenn mindestens ein aliasci (j) eine echte Adresse enthält. Also kann anstelle des shared-Feldes im Cache-Speicher auch eine Schaltung benutzt werden, die
Figure imgf000025_0001
bildet (∅ bezeichnet den Wert keine Adresse) . Man beachte, daß Schreiben hier immer zwei Schritte kostet, wenn sich ein Synonym im Speicher befindet, Lesen aber in jedem Fall in einem Schrirt abgehandelt werden kann.

Claims

ANSPRÜCHE 1. Virtuell indizierbarer Cache-Speicher mit
- mehreren Cache-Blöcken zum Speichern von Information,
- einem externen Datenbus zum Übertragen von Datenworten zwischen den Cache-Blöcken und zum Übertragen von Datenworten von den Cache- Blöcken zu mindestens einem Prozessor und umgekehrt,
- einem externen Adreßbus zum Übertragen von virtuellen Adressen von mindestens einem Prozessor,
- einer mit dem externen Adreßbus verbundenen Indexereinheit, die aus einer von dem mindestens einen Prozessor empfangenen virtuellen Adresse für jeden Cache-Block einen Index und für alle Cache-Blöcke eine gemeinsame Restadresse erzeugt,
- einem zum Übertragen der Restadresse vorgesehenen internen Restadressbus, an dem die Indexereinheit und die Cache-Blöcke angeschlossen sind,
- einem Indexbus zum Übertragen der den Cache- Blöcken zugeordneten Indizes von der Tndexereinheit zu den Cache-Blöcken und zwischen den Cache-Blöcken,
- einer externen Schreib/Lese-Leitung zum Übertragen eines Schreib- oder Lese-Signals von mindestens einem Prozessor an jeden Cache- Block,
- wobei jeder Cache-Block aufweist
- mehrere Cache-Zellen, die durch einen über den Indexbus empfangenen und dem betreffen- den Cache-Block zugeordneten Index auswählbar sind, wobei jede Cache-Zelle mindestens umfaßt
- ein Markierungsfeld für eine Markierung, - mindestens ein Datenfeld für ein Datenwort,
- pro Datenfeld ein Statusfeld mit mindestens einer Lesbarkeits-Flagge und einer Schreibbarkeits-Flagge und
- mindestens einem Synonym-Indexfeld für einen Synonym-Index, der auf eine Cache- Zelle eines anderen Cache-Blocks verweist, wobei diese Cache-Zelle einer zu der von der Indexereinheit empfangenen virtuellen Adresse synonymen virtuellen Adresse zugeordnet ist, und
- einem Cache-Hit/Miss-Ausgang zum Signalisieren eines Cache-Hit, wenn der von der Indexereinheit empfangenen virtuellen Adresse eine CacheZelle eines der Cache-Blöcke zulässigerweise zugeordnet ist und zum Signalisieren eines Cache-Miss, wenn in keinem Cache-Block eine Cache-Zelle der von der Indexereinheit empfangenen virtuellen Adresse zugeordnet ist.
2. Cache-Speicher nach Anspruch 1, dadurch gekennzeichnet,
- daß jeder Cache-Block eine Vergleichereinheit zum Vergleich der über den Restadressbus empfangenen Restadresse oder eines Teils davon mit dem Inhalt des Markierungsfeldes einer Cache-Zelle, die durch einen über den Indexbus empfangenen und dem betreffenden Cache-Block zugeordneten Index ausgewählt ist, aufweist und daß am Cache-Hit/Miss-Ausgang ein Cache-Miss signalisiert wird, wenn für sämtliche Cache- Blöcke der Vergleich aus der Restadresse mit der Markierung des jeweiligen Markierungsfeldes negativ ist.
3. Cache-Speicher nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß bei Vorhandensein eines Schreibsignals auf der Schreib/Lese-Leitung ein auf dem Datenbus befindliches Datenwort unmittelbar in das durch die Restadresse oder einen Teil davon bestimmte Datenfeld einer durch den Index der Indexereinheit indizierten Cache-Zelle einschreibbar ist, wenn die Schreibbarkeits-Flagge des diesem Datenfeld zugeordneten Statusfeldes gesetzt ist, und daß bei Vorhandensein eines Lesesignals auf der Schreib/Lese-Leitung das Datenwort des durch die Restadresse oder einen Teil davon beestimmten Datenfeldes einer durch den Index der Indexereinheit indizierten Cache-Zelle unmittelbar lesbar ist, wenn die Lesbarkeits-Flagge des diesem Datenfeld zugeordneten Statusfeldes gesetzt ist, wobei im Anschluß an das Schreiben oder Lesen am Cache- Hit/Miss-Ausgang ein Cache-Hit signalisiert wird.
4. Cache-Speicher nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß bei einem Schreibsignal auf der externen Schreib/Lese-Leitung und einer nicht gesetzten Schreibbarkeits-Flagge in dem Statusfeld des diesem zugeordneten und durch die Restadresse oder einen Teil davon bestimmten Datenfeldes der durch den Index der Indexereinheit indizierten Cache-Zelle
- jeder in dem Synonym-Indexfeld der durch den Index der Indexereinheit indizierten Cache- Zelle befindliche gültige Synonym-Index über den Indexbus an den jeweils zugeordneten Cache- Block angelegt wird,
- das auf dem Datenbus befindliche Datenwort in das durch die Restadresse oder einen Teil davon bestimmte Datenfeld der durch den Index der Indexereinheit ursprünglich indizierten Cache- Zelle geschrieben wird,
- die Schreibbarkeits-Flagge und die Lesbarkeits- Flagge des Statusfeldes des durch die Restadresse oder einen Teil davon bestimmten Datenfeldes der durch den Index der Indexereinheit ursprünglich indizierten Cache-Zelle gesetzt werden und
- für sämtliche durch die Restadresse oder einen Teil davon bestimmten Datenfelder derjenigen Cache-Zellen anderer Blöcke, die durch die gültigen Synonym-Indizes indiziert sind, dafür gesorgt wird, daß die Schreibbarkeits- und die Lesbarkeits-Flagge des jeweils zugeordneten Statusfeldes rückgesetzt werden.
5. Cache-Speicher nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß bei einem Lesesignal auf der Schreib/Lese-Leitung und einer nicht gesetzten Lesbarkeits-Flagge in dem Statusfeld des diesem zugeordneten und durch die Restadresse oder einen Teil davon bestimmten Datenfeldes der durch den Index der Indexereinheit indizierten Cache- Zelle
- jeder in dem Synonym-Indexfeld der durch den Index der Indexereinheit indizierten Cache- Zelle befindliche gültige Synonym-Index über den Indexbus an den jeweils zugeordneten Cache- Block angelegt wird, - das Datenwort sämtlicher durch die Restadresse oder einen Teil davon bestimmter Datenfelder derjenigen Cache-Zellen anderer Blöcke, die durch die Synonym-Indizes indiziert sind, auf den Datenbus gelegt wird, sofern die diesen Datenfeldern zugeordneten Lesbarkeits-Flaggen gesetzt sind, und für jedes durch die Restadresse oder einen Teil davon bestimmte Datenfeld der durch die Synonym-Indizes indizierten Cache-Zellen dafür gesorgt wird, daß die Schreibbarkeits-Flagge des zugeordneten Statusfeldes rückgesetzt ist, und
- das auf dem Datenbus befindliche Datenwort in das durch die Restadresse oder einem Teil davon bestimmte Datenfeld der durch den Index der Indexereinheit indizierten Cache-Zelle geschrieben wird und die Lesbarkeits-Flagge des diesem Datenfeld zugeordneten Statusfeldes gesetzt wird.
6. Cache-Speicher nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß der Indexbus eine Anzahl von Indexteilbussen aufweist, die gleich der Anzahl der Cache-Blöcke ist, wobei jeder Indexteilbus mit der Indexereinheit und sämtlichen Cache-Blöcken verbunden ist und für jeden Indexteilbus gilt, daß ein Index von der Indexereinheit und ein Synonym-Index von einem der Cache-Blöcke auf den Indexteilbus legbar ist und ein auf diesen Indexteilbus befindlicher Index von sämtlichen der anderen Cache-Blöcke übernehmbar ist.
7. Virtuell indizierbarer Cache-Speicher mit
- mehreren Cache-Blöcken zum Speichern von Information, - einem externen Datenbus zum Übertragen von Datenworten zwischen den Cache-Blöcken und zum Übertragen von Datenworten von den CacheBlöcken zu mindestens einem Prozessor und umgekehrt,
- einem externen Adreßbus zum ertragen von virtuellen Adressen von mindesi.ens einem Prozessor,
- einer mit dem externen Adreßbus verbundenen Indexereinheit, die ms einer von dem mindestens einen Prozessor empfangenen virtuellen Adresse für jeden Cache-Block einen Index und für alle Cache-Blöcke eine gemeinsame Restadresse erzeugt,
- einem zum Übertragen der Restadresse vorgesehenen internen Restadressbus, an dem die Indexereinheit und die Cache-Blöcke angeschlossen sind,
- einem Indexbus zum Übertragen von den Cache- Blöcken zugeordneten Indizes von der Indexereinheit zu den Cache-Blöcken und zwischen den Cache-Blöcken,
- einer externen Schreib/Lese-Leitung zum Übertragen eines Schreib- oder Lese-Signals von mindestens einem Prozessor an jeden Cache- Block,
- wobei jeder Cache-Block aufweist
- mehrere Cache-Zellen, die durch einen über den Indexbus empfangenen und dem betreffenden Cache-Block zugeordneten Index auswählbar sind, wobei jede Cache-Zelle mindestens umfaßt
- ein Markierungsfeld für eine Markierung, - mindestens ein Datenfeld für ein Datenwort und - mindestens einem Synonym-Indexfeld für einen Synonym-Index, der auf eine Cache- Zelle eines anderen Cache-Blocks verweist, wobei diese Cache-Zelle einer zu der von der Indexereinheit empfangenen virtuellen Adresse synonymen virtuellen Adresse zugeordnet ist,
- einer Mehrfach-Anzeige, die anzeigt, ob ein gültiger Synonym-Index in mindestens einem Synonym-Indexfeld existiert oder nicht, und - einem Cache-Hit/Miss-Ausgang zum Signalisieren eines Cache-Hit, wenn der von der Indexereinheit empfangenen virtuellen Adresse eine Cache- Zelle eines der Cache-Blöcke zulässigerweise zugeordnet ist und zum Signalisieren eines Cache-Miss, wenn in keinem Cache-Block eine Cache-Zelle der von der Indexereinheit empfangenen virtuellen Adresse zugeordnet ist.
8. Cache-Speicher nach Anspruch 7, dadurch gekennzeichnet,
- daß jeder Cache-Block eine Vergleichereinheit zum Vergleich der über den Restadressbus empfangenen Restadresse oder eines Teils davon mit dem Inhalt des Markierungsfeldes einer Cache-Zelle, die durch einen über den Indexbus" empfangenen und dem betreffenden Cache-Block zugeordneten Index ausgewählt ist, aufweist und daß am Cache-Hit/Miss-Ausgang ein Cache-Miss signalisiert wird, wenn für sämtliche Cache- Blöcke der Vergleich aus der Restadresse mit der Markierung des jeweiligen Markierungsfeldes negativ ist.
9. Cache-Speicher nach Anspruch 7 oder 8, dadurch gekennzeichnet, daß bei Vorhandensein eines Schreibsignals auf der Schreib/Lese-Leitung ein auf dem Datenbus befindliches Datenwort unmittelbar in das durch die Restadresse oder einen Teil davon bestimmte Datenfeld einer durch -^en Index der Indexereinheit indizierten Cache-Lelle einschreibbar ist, wenn die Mehrfach-Anzeige anzeigt, daß kein gültiger Synonym-Index in dem mindestens einen Synonym-Indexfeld existiert, und daß bei Vorhandensein eines Lesesignals auf der Schreib/Lese- Leitung das Datenwort des durch die Restadresse oder einen Teil davon bestimmten Datenfeldes einer durch den Index der Indexereinheit indizierten Cache-Zelle unmittelbar lesbar ist.
10. Cache-Speicher nach einem der Ansprüche 7 bis 9, dadurch gekennzeichnet, daß bei einem Schreibsignal auf der externen Schreib/Lese-Leitung und einer gesetzten Mehrfach-Flagge für die durch den Index der Indexereinheit indizierten Cache-Zelle jeder in dem Synonym-Indexfeld der durch den Index der Indexereinheit indizierten Cache- Zelle befindliche gültige Synonym- Index über den Indexbus an den jeweils zugeordneten Cache- Block angelegt wird und
das auf dem Datenbus befindliche Datenwort in sämtliche jerjenigen durch die Restadresse oder einen Teil davon bestimmte Datenfelder der durch den Index der Indexereinheit und der durch deren Synonym- Indizes indizierten Cache- Zellen geschrieben wird.
11. Cache-Speicher nach einem der Ansprüche 7 bis 10, dadurch gekennzeichnet, daß der Indexbus eine An- zahl von Indexteilbussen aufweist, die gleich der Anzahl der Cache-Blöcke ist, wobei jeder Indexteilbus mit der Indexereinheit und sämtlichen Cache-Blöcken verbunden ist und für jeden Indexteilbus gilt, daß ein Index von der Indexereinheit und ein Synonym-Index von einem der Cache-Blöcke auf den Indexteilbus legbar ist und ein auf diesen Indexteilbus befindlicher Index von sämtlichen der anderen Cache-Blöcke übernehmbar ist.
PCT/EP1994/003667 1993-11-09 1994-11-08 Virtuell indizierbarer cache-speicher WO1995013584A1 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US08/637,708 US5813046A (en) 1993-11-09 1994-08-11 Virtually indexable cache memory supporting synonyms
JP7504220A JPH09504627A (ja) 1993-11-09 1994-11-08 仮想索引付け可能キャッシュメモリ
EP95900114A EP0728336A1 (de) 1993-11-09 1994-11-08 Virtuell indizierbarer cache-speicher

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DEP4338165.0 1993-11-09
DE4338165 1993-11-09

Publications (1)

Publication Number Publication Date
WO1995013584A1 true WO1995013584A1 (de) 1995-05-18

Family

ID=6502117

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP1994/003667 WO1995013584A1 (de) 1993-11-09 1994-11-08 Virtuell indizierbarer cache-speicher

Country Status (5)

Country Link
US (1) US5813046A (de)
EP (1) EP0728336A1 (de)
JP (1) JPH09504627A (de)
DE (1) DE4439809C2 (de)
WO (1) WO1995013584A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7330961B2 (en) 2002-11-21 2008-02-12 Fujitsu Limited Cache control method and processor system

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9496009B2 (en) * 2012-06-06 2016-11-15 Mosys, Inc. Memory with bank-conflict-resolution (BCR) module including cache

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63280328A (ja) * 1987-05-13 1988-11-17 Hitachi Ltd 複数の名称を持つデ−タの制御方式

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4332010A (en) * 1980-03-17 1982-05-25 International Business Machines Corporation Cache synonym detection and handling mechanism
US4727482A (en) * 1983-08-30 1988-02-23 Amdahl Corporation Apparatus for enhancing searches of data tables
US5119290A (en) * 1987-10-02 1992-06-02 Sun Microsystems, Inc. Alias address support
GB2210479B (en) * 1987-10-02 1992-06-17 Sun Microsystems Inc Alias address support.
US5003459A (en) * 1988-04-01 1991-03-26 Digital Equipment Corporation Cache memory system
GB2239724B (en) * 1990-01-05 1993-11-24 Sun Microsystems Inc Apparatus for maintaining consistency in a multi-processor computer system using virtual caching
JP2839060B2 (ja) * 1992-03-02 1998-12-16 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システムおよびデータ処理方法
US5675763A (en) * 1992-07-15 1997-10-07 Digital Equipment Corporation Cache memory system and method for selectively removing stale aliased entries
US5584002A (en) * 1993-02-22 1996-12-10 International Business Machines Corporation Cache remapping using synonym classes
US5550995A (en) * 1994-01-03 1996-08-27 Motorola, Inc. Memory cache with automatic alliased entry invalidation and method of operation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63280328A (ja) * 1987-05-13 1988-11-17 Hitachi Ltd 複数の名称を持つデ−タの制御方式

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
GOODMAN: "Coherency for multiprocessor virtual address caches", PROCEEDINGS SECOND INTERNATIONAL CONFERENCE ON ARCHITECTURAL SUPPORT FOR PROGRAMMING LANGUAGES AND OPERATING SYSTEMS, 5 October 1987 (1987-10-05), PALO ALTO, US, pages 72 - 81 *
PATENT ABSTRACTS OF JAPAN vol. 13, no. 98 (P - 840) 8 March 1989 (1989-03-08) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7330961B2 (en) 2002-11-21 2008-02-12 Fujitsu Limited Cache control method and processor system

Also Published As

Publication number Publication date
DE4439809C2 (de) 1996-12-12
DE4439809A1 (de) 1995-05-11
US5813046A (en) 1998-09-22
EP0728336A1 (de) 1996-08-28
JPH09504627A (ja) 1997-05-06

Similar Documents

Publication Publication Date Title
DE2227882C2 (de) Virtuelle Speicheranordnung
DE3932675C2 (de)
DE3587960T2 (de) Datenverarbeitungsanlage mit einem Speicherzugriffssteuergerät.
DE3131341C2 (de)
DE69635865T2 (de) Adressentransformation in einem cluster-computersystem
DE2841041A1 (de) Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren
DE2617408B2 (de) Speichermodul für ein Datenverarbeitungsgerät mit Speicherhierarchie
DE2054830C3 (de) Informationsverarbeitungsanlage mit Mitteln zum Zugriff zu Speicher-Datenfeldern variabler Länge
DE10002120A1 (de) Logikstruktur eines Adressumsetzpuffers
DE2641722A1 (de) Hierarchisch geordnetes speichersystem fuer eine datenverarbeitende anlage mit virtueller adressierung
DE3046912C2 (de) Schaltungsanordnung zum selektiven Löschen von Cachespeichern in einer Multiprozessor-Datenverarbeitungsanlage
DE68925336T2 (de) Datenverarbeitungsvorrichtung mit Cache-Speicher
DE2710477C2 (de)
DE3787129T2 (de) Cachespeicher mit veränderlichen Abholungs- und Ersetzungsschemen.
WO1995028678A1 (de) Cache-speichervorrichtung zum speichern von daten
DE3832758C2 (de) Verfahren zum Adressieren eines im Rückschreib-Modus betriebenen virtuellen Cache-Speichers
EP0009625B1 (de) Datentransferschalter mit assoziativer Adressauswahl in einem virtuellen Speicher
EP0057755B1 (de) Mikrorechnersystem zum raschen Auffinden von Kennzeichenblöcken
CH495584A (de) Datenverarbeitungsanlage
EP0265636A1 (de) Multiprozessor mit mehreren mit Cache-Speichern ausgerüsteten Prozessoren und einem gemeinsamen Speicher
WO1995013584A1 (de) Virtuell indizierbarer cache-speicher
DE3588166T2 (de) Entwurf einer Cache-Hierarchie zur Anwendung in einer Speicherverwaltungseinheit
DE3216238C1 (de) Datenverarbeitungsanlage mit virtueller Teiladressierung des Pufferspeichers
DE2532945C3 (de) Arbeitsspeicheranordnung
DE4325729C2 (de) Hierarchische Speicheranordnung für ein Multiprozessorsystem

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): JP US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FR GB GR IE IT LU MC NL PT SE

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 1995900114

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 08637708

Country of ref document: US

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWP Wipo information: published in national office

Ref document number: 1995900114

Country of ref document: EP

WWW Wipo information: withdrawn in national office

Ref document number: 1995900114

Country of ref document: EP