<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ep-patent-document PUBLIC "-//EPO//EP PATENT DOCUMENT 1.1//EN" "ep-patent-document-v1-1.dtd">
<ep-patent-document id="EP93308502B1" file="EP93308502NWB1.xml" lang="en" country="EP" doc-number="0596636" kind="B1" date-publ="19980401" status="n" dtd-version="ep-patent-document-v1-1">
<SDOBI lang="en"><B000><eptags><B001EP>......DE....FRGB..IT..............................</B001EP><B005EP>J</B005EP><B007EP>DIM360   - Ver 2.7 (17 Nov 1997)
 2100000/1 2100000/2</B007EP></eptags></B000><B100><B110>0596636</B110><B120><B121>EUROPEAN PATENT SPECIFICATION</B121></B120><B130>B1</B130><B140><date>19980401</date></B140><B190>EP</B190></B100><B200><B210>93308502.9</B210><B220><date>19931026</date></B220><B240><B241><date>19941121</date></B241><B242><date>19950203</date></B242></B240><B250>en</B250><B251EP>en</B251EP><B260>en</B260></B200><B300><B310>970188</B310><B320><date>19921102</date></B320><B330><ctry>US</ctry></B330></B300><B400><B405><date>19980401</date><bnum>199814</bnum></B405><B430><date>19940511</date><bnum>199419</bnum></B430><B450><date>19980401</date><bnum>199814</bnum></B450><B451EP><date>19960826</date></B451EP></B400><B500><B510><B516>6</B516><B511> 6G 06F  12/08   A</B511></B510><B540><B541>de</B541><B542>Cache-Etikettenspeicher</B542><B541>en</B541><B542>Cache tag memory</B542><B541>fr</B541><B542>Mémoire d'étiquettes d'antémémoire</B542></B540><B560><B561><text>EP-A- 0 439 952</text></B561><B561><text>GB-A- 2 200 481</text></B561><B562><text>IBM TECHNICAL DISCLOSURE BULLETIN. vol. 23, no. 7B , December 1980 , NEW YORK US pages 3461 - 3463 YAMOUR 'Odd/even interleave cache with optimal hardware array cost, cycle time and variable data port width'</text></B562><B562><text>IEEE JOURNAL OF SOLID-STATE CIRCUITS vol. 26, no. 11 , November 1991 , NEW YORK US pages 1586 - 1592 KOBAYASHI ET AL. 'A 0.5-W 64-kilobyte snoopy cache memory with pseudo two-port operatio'</text></B562></B560><B590><B598>3</B598></B590></B500><B700><B720><B721><snm>McClure, David Charles</snm><adr><str>3701 Elizabeth</str><city>Carrollton,
Denton County Texas 75007</city><ctry>US</ctry></adr></B721></B720><B730><B731><snm>SGS-THOMSON MICROELECTRONICS, INC.</snm><iid>00723064</iid><syn>sgs thomson micro</syn><adr><str>1310 Electronics Drive</str><city>Carrollton
Texas 75006</city><ctry>US</ctry></adr></B731></B730><B740><B741><snm>Palmer, Roger</snm><sfx>et al</sfx><iid>00034631</iid><adr><str>PAGE, WHITE &amp; FARRER
54 Doughty Street</str><city>London WC1N 2LS</city><ctry>GB</ctry></adr></B741></B740></B700><B800><B840><ctry>DE</ctry><ctry>FR</ctry><ctry>GB</ctry><ctry>IT</ctry></B840><B880><date>19940629</date><bnum>199426</bnum></B880></B800></SDOBI><!-- EPO <DP n="1"> -->
<description id="desc" lang="en">
<p id="p0001" num="0001">The present invention relates in general to digital computer systems, and more particularly to cache memory systems.</p>
<p id="p0002" num="0002">This application is related to European Patent Application EP-A-0 439 952, which discloses a dual-port cache tag memory.</p>
<p id="p0003" num="0003">Cache memories are used in many computer systems to improve system performance. A cache memory is a relatively small, fast memory which resides between a central processor and main system memory. Whenever the processor reads the contents of a memory location which is stored in the cache memory, the time required to access such location is drastically reduced. A good cache technique can provide a "hit ratio" of well over ninety percent, meaning that no main memory access is necessary for over ninety percent of the read operations performed. Access of data which is stored in the cache can improve access times by factors of three to ten times.</p>
<p id="p0004" num="0004">A cache performs functions requiring two different types of memory. The first type is the data memory, in which the data is actually stored. The second type is known as a tag memory, or tag RAM, which is used to determine which memory locations are actually stored in the cache. In general, the cache tag RAM contains a plurality of entries corresponding to the entries of the data cache. Each entry is indexed by some number of least significant bits of the address generated by<!-- EPO <DP n="2"> --> the central processor, with the tag entry itself containing the most significant bits of the memory location which is stored in the corresponding data cache entry. If the most significant bits stored in the cache tag match the most significant bits of the address currently being generated, with the least significant bits of this address acting as an index to the tag RAM, a cache "hit" has occurred and the data to be read may be taken from the corresponding data cache entry. If data corresponding to the desired address is not located in the data cache, the tag entry will not match the most significant bits of the address, and a "miss" occurs. This indicates that the data must be retrieved from main system memory and placed into the data cache. At this time, the current contents of the cache tag entry are overwritten with the most significant bits of the newly retrieved address.</p>
<p id="p0005" num="0005">In multi-processor systems, it is possible to provide each processor in a system with its own cache memory. Each local processor accesses its own cache whenever possible, and accesses main system memory through a system bus only when necessary.</p>
<p id="p0006" num="0006">This situation introduces an important problem known as the "cache coherency problem." This problem arises whenever it is possible for shared variables in main system memory to be accessed by two or more processors in the system. These processors can be local central processing units, or input/output devices attached to the bus. The cache coherency problem arises when a single memory location is cached in two or more local caches. If one of the processors writes<!-- EPO <DP n="3"> --> a new value into that memory location, it will be inconsistent with the value of the same variable, or main memory location, currently cached in the other caches. The cache coherency problem also arises when a non-caching device writes to a location in system memory which has been cached by another device.</p>
<p id="p0007" num="0007">One technique utilized in dealing with the cache coherency problem is to have all local processors having caches monitor, or "snoop", the main system bus at all times. If another processor or device writes data to a memory location which is currently stored in a local cache, the local cache entry is invalidated. If that location is later accessed by the local processor, the updated data is then retrieved from the main system memory.</p>
<p id="p0008" num="0008">Using a dual-port memory array in this manner, however, results in both an area penalty on the tag RAM chip and an overall degradation in access time as disclosed in IBM technical disclosure bulletin vol. 23, no. 7B, December 1980, NEW YORK US, pages 3461-3463 YAMOUR, "Odd/Even interleave cache with optimal hardware array cost, cycle time and variable data port width".</p>
<p id="p0009" num="0009">This is because a dual-port memory, compared to a single-port memory array, can be two and a half to three and a half times larger, or more.</p>
<p id="p0010" num="0010">Therefore, it would be desirable to provide a cache tag memory which reduces space consumption as well as maintain the coherency of the cache memory.<!-- EPO <DP n="4"> --></p>
<p id="p0011" num="0011">According to one embodiment of the present invention there is provided a cache memory, comprising a data cache for storing a plurality of entries, a cache tag memory including a dual-port memory array having a plurality of entries, means for addressing said dual-port memory array by each of a system bus and a local processor, a cache controller for controlling exchanges of data or control signals between the local processor and the system bus, means for generating a first match signal for indicating that a memory location addressed by the local processor resides in the data cache, means for providing a valid signal for indicating that a memory location addressed by the local processor is valid, means for generating a second match signal for indicating that a memory location addressed by the system bus matches an entry in the cache tag memory, characterised in that the cache tag memory further includes a first single-port memory array containing a first plurality of entries corresponding to the entries stored in the dual-port memory array, means for addressing said first single-port memory array by the local processor, a second single-port memory array containing a second plurality of entries corresponding to the entries stored in the dual-port and first single-port memory arrays, means for addressing said second single-port memory array by the system bus, and means for storing information in said dual-port memory array indicating the validity of corresponding entries stored in the first and second single port memory arrays.</p>
<p id="p0012" num="0012">The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself however, as well as a preferred mode of use, and further objects and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
<ul id="ul0001" list-style="none">
<li>Figure 1 is a high level block diagram of a multi-processor computer system;</li>
<li>Figure 2 is a high level block diagram showing a cache memory utilizing a cache tag memory according to the present invention;</li>
<li>Figure 3 is a block diagram of a preferred cache tag memory; and</li>
<li>Figure 4 is a more detailed block diagram of a preferred cache tag memory.</li>
</ul><!-- EPO <DP n="5"> --></p>
<p id="p0013" num="0013">Referring to <b>Figure 1</b>, a multi-processor computer system is illustrated and referred to generally with the reference number <b>10</b>. Local processors <b>12, 14, 16</b> are each provided with a local cache memory <b>18, 20, 22</b>. The processors <b>12, 14, 16</b> communicate with each other and with a main system memory <b>24</b> through a system bus <b>26</b>. A plurality of input/output devices <b>28, 30</b> are also attached to the system bus <b>26</b>. Input/output devices <b>28, 30</b> typically do not contain local cache memories.</p>
<p id="p0014" num="0014">The problem of maintaining coherency between shared variable stored in the various local cache memories <b>18, 20, 22</b> can arise in several ways. In one, for example, local cache memories <b>18</b> and <b>20</b> may each contain a copy of a shared variable from main system memory <b>24.</b> If local processor <b>14</b> updates the value of the shared variable, local cache <b>20</b> will be updated as will main system memory <b>24</b>. In order to ensure coherency of cache memory <b>18</b>, a technique as disclosed in United States Patent Application Serial No. 07/473239, entitled DUAL-PORT CACHE TAG MEMORY, filed on January 31, 1990, which is incorporated herein by reference, is utilized to ensure that the outdated value for such local variable stored in cache memory <b>18</b> is marked as invalid. A similar situation can occur if input/output device <b>28</b> writes a value to main memory <b>24</b>. If such memory location has previously been cached in local cache memory <b>18</b>, the current memory data and the data in local cache memory <b>18</b> will not be the same.<!-- EPO <DP n="6"> --></p>
<p id="p0015" num="0015">Referring to <b>Figure 2</b>, a high level block diagram showing a cache memory utilizing a cache tag memory according to the present invention is depicted. A preferred system for ensuring cache coherency in a single or multi-processor system will also be described. A data cache <b>32</b> and cache tag RAM <b>34</b> communicate with system bus <b>26</b> and local processor <b>36</b>. Cache controller <b>38</b> performs the usual cache control functions found in caches which are suitable for use with single processor systems.</p>
<p id="p0016" num="0016">Data cache <b>32</b> exchanges data with the local processor <b>36</b> and system bus <b>26</b> under control of cache controller <b>38</b>. Various control signals are exchanged by the local processor <b>36</b> and cache controller <b>38</b>, and between cache controller <b>38</b> and system bus <b>26</b>. Address and control signals are communicated from local processor <b>36</b> to cache tag RAM <b>34.</b> Address and control signals are also communicated between cache tag RAM <b>34</b> and system bus <b>26.</b></p>
<p id="p0017" num="0017">In some cache memory formats, a control signal SW is communicated to cache tag RAM <b>34</b> from system bus <b>26</b> to indicate that a write operation, referred to as a snoop write, is occurring on the system bus <b>26</b>. A control signal MTCH<sub>B</sub> is returned to system bus <b>26</b> whenever a system bus address matches an entry in cache tag RAM <b>34</b> during a snoop write operation. The signal MTCH<sub>B</sub> can be used as desired by the system in performance of cache control functions.</p>
<p id="p0018" num="0018">Cache tag RAM <b>34</b> also passes a signal MTCH<sub>A</sub> to cache controller <b>38</b>. MTCH<sub>A</sub> indicates that the memory<!-- EPO <DP n="7"> --> location currently being addressed by local processor <b>36</b> resides in the data cache <b>32</b>, and that the entry is currently valid. Cache controller <b>38</b> then causes the location being accessed by local processor <b>36</b> to be read directly from data cache <b>32</b>. If MTCH<sub>A</sub> indicates a miss, cache controller <b>38</b> causes the contents of the address location to be accessed from main memory over system bus <b>26</b>.</p>
<p id="p0019" num="0019"><b>Figure 3</b> is a block diagram of a preferred cache tag memory, referred to generally by the reference number <b>34.</b> Cache tag memory <b>34</b> includes a first single-port memory array <b>40</b> with a corresponding row decoder <b>42.</b> In the preferred embodiment, the first single-port memory array <b>40</b> is dedicated to a local processor. A second single-port memory array <b>44</b> and corresponding row decoder <b>46</b> is preferably dedicated to the system or main memory. Finally, a dual-port memory array <b>48</b> is utilized to store information or status bits about the cache memory. The status bits stored in the dual-port memory array <b>48</b> are shared by both the first and second single-port memory arrays <b>40, 44.</b> Examples of status bits include a snoop valid bit, parity bit, or bits required for MOESI protocol. MOESI stands for Modified, Owned, Exclusive, Shared, and Invalid, and is utilized to -indicate cache states. Essentially, any bit which may be altered by the system port while the local processor is performing its operations is stored in the dual-port memory array <b>48</b>.</p>
<p id="p0020" num="0020">The size difference between a dual-port memory array and a single-port memory array can be two and a half to three and a half times larger, or more. Thus,<!-- EPO <DP n="8"> --> having a cache tag memory which has two single-port memory arrays and a small dual-port memory array results in space savings on the chip. For example, the area difference between an all dual-port cache tag memory and the preferred cache tag memory is calculated below for a cache tag memory which utilizes a tag which is 16 bits wide plus 2 status bits (total 18 bits wide).<br/>
   all dual-port: 18 bits x R<br/>
   preferred cache tag: (2 bits x R) + (16 bits x 2)</p>
<p id="p0021" num="0021">The ratio of the size of a dual-port to the size of a single-port memory array is denoted by the variable R. If R=2.5, the all dual-port cache tag memory is 22% larger than the preferred cache tag memory. If R=3.0, the all dual-port cache tag memory is 42% larger. Finally, if R=3.5, the all dual-port cache tag memory is 62% larger than the preferred cache tag memory array.</p>
<p id="p0022" num="0022">Referring to <b>Figure 4,</b> a block diagram of a preferred cache tag RAM <b>34</b> is illustrated. The cache tag RAM <b>34</b> includes a first single-port memory array <b>40</b> dedicated to the local processor, a second single-port memory array <b>44</b> dedicated to the system or main memory, and a dual-port memory array <b>48</b>. As discussed above, the dual-port memory array <b>48</b> stores information or status bits about the cache memory, and its entries are shared by the two single-port memory arrays <b>40, 44.</b></p>
<p id="p0023" num="0023">First single-port memory array <b>40</b> is addressed by the least significant bits (LSB) of the address from<!-- EPO <DP n="9"> --> the local processor. The most significant bits (MSB) of the local address are input to a comparator <b>50</b> where they are compared with the first single-port memory array <b>40</b> entry currently selected by the local address LSB, which is available on line <b>52</b>. A logical one is output from comparator <b>50</b> if the selected entry matches the MSB of the local address, and is connected to one input of AND gate <b>54.</b> The snoop valid bit <b>56</b> from the corresponding address is also connected as an input to AND gate <b>54,</b> and the output of AND gate <b>54</b> defines the signal MTCH<sub>A</sub>. Thus, signal MTCH<sub>A</sub> is a logical one, indicating a cache hit, only if the first single-port memory array <b>40</b> entry indexed by the LSB of the local address matches the MSB of the local address, and the corresponding snoop valid bit <b>56</b> for that entry is a logical one.</p>
<p id="p0024" num="0024">Second single-port memory array <b>44</b> is addressed by the LSB of the system address. The entry corresponding to such location within the array is output on data line <b>58</b> and connected to comparator <b>60</b>. Comparator <b>60</b> compares the entry present on line <b>58</b> with the MSB of the system address, generating a logical one if they match. The output of comparator <b>60</b> is connected to an input of both AND gates <b>62, 64.</b> The snoop valid bit <b>56</b> of the entry indexed by the LSB of the system address is also connected to AND gate <b>62</b>. The signal MTCH<sub>B</sub> is a logical one only if the selected entry matches the MSB of the system address, and the snoop valid bit <b>56</b> has a value of logical one. Some cache systems, however, do not require the snoop valid bit <b>56</b> to be monitored in this manner, so the signal MTCH<sub>B</sub> is a<!-- EPO <DP n="10"> --> logical one if the selected entry matches the MSB of the system address.</p>
<p id="p0025" num="0025">In some cache formats, it is desirable to have a snoop write signal (SW) connected to a second input of AND gate <b>64.</b> The output of AND gate <b>64</b> will be a logical one only if the address MSB on the system bus matches the entry in the second single-port memory array <b>44</b> indexed by the system address LSB, and a write operation is being performed on the system bus. In such event, the value stored in the data cache for such entry is now out of date, and must be marked as invalid. When the output of AND gate <b>64</b> is a logical one, the snoop valid bit of the entry indexed by the LSB of the current system address is reset to a logical zero. This will cause any future accesses of this entry by the local processor to indicate a miss, since the output of AND gate <b>54</b> for such entry will now be a logical zero.</p>
<p id="p0026" num="0026">When the data cache is being reloaded, requiring a write to cache tag RAM <b>34,</b> the desired address appears on both the local bus and the system bus. The address tag is written into the first single-port memory array <b>40</b> and the corresponding cell in the second single-port memory array <b>44.</b> The status bits are also written into the dual-port memory array <b>48</b> at this time. Snooping occurs as described with reference to <b>Figure 3</b>, so that entries are invalidated or the status bits are altered as snoop hits are registered. The local processor does not need to be halted as the status bits are altered by the system due to the dual-port nature of the status bit cells.<!-- EPO <DP n="11"> --></p>
<p id="p0027" num="0027">Upon reference to the description above, those skilled in the art will appreciate that the described invention can result in a significant savings of space on a RAM chip. Utilizing a cache tag memory array which has both single-port and dual-port memory arrays, a significant savings of space can be realized. This is due to the fact that dual-port memory arrays may be two and a half to three and a half times larger, or more, than single-port memory arrays.</p>
<p id="p0028" num="0028">While the invention has been particularly shown and described with reference to a preferred embodiment, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the scope of the invention.</p>
</description><!-- EPO <DP n="12"> -->
<claims id="claims01" lang="en">
<claim id="c-en-01-0001" num="0001">
<claim-text>A cache memory, comprising:
<claim-text>a data cache (32) for storing a plurality of entries;</claim-text>
<claim-text>a cache tag memory (34) including a dual-port memory array (48) having a plurality of entries;</claim-text>
<claim-text>means for addressing said dual-port memory array by each of a system bus (26) and a local processor (36);</claim-text>
<claim-text>a cache controller (38) for controlling exchanges of data or control signals between the local processor (36) and the system bus (26);</claim-text>
<claim-text>means (50) for generating a first match signal for indicating that a memory location addressed by the local processor resides in the data cache;</claim-text>
<claim-text>means for providing a valid signal (56) for indicating that a memory location addressed by the local processor is valid;</claim-text>
<claim-text>means (60) for generating a second match signal for indicating that a memory location addressed by the system bus matches an entry in the cache tag memory;</claim-text> characterised in that the cache tag memory further includes:
<claim-text>a first single-port memory array (40) containing a first plurality of entries corresponding to the entries stored in the dual-port memory array;</claim-text>
<claim-text>means for addressing said first single-port memory array by the local processor;</claim-text>
<claim-text>a second single-port memory array (44) containing a second plurality of entries corresponding to the entries stored in the dual-port and first single-port memory arrays;</claim-text>
<claim-text>means for addressing said second single-port memory array by the system bus; and</claim-text>
<claim-text>means for storing information in said dual-port memory array indicating the validity of corresponding entries stored in the first and second single port memory arrays.</claim-text><!-- EPO <DP n="13"> --></claim-text></claim>
<claim id="c-en-01-0002" num="0002">
<claim-text>The cache memory of Claim 1, further comprising means for receiving a control signal (SW) to be communicated to the cache tag memory from the system bus (26) indicating a write operation is ocurring on the system bus.</claim-text></claim>
<claim id="c-en-01-0003" num="0003">
<claim-text>The cache memory of Claim 1 or Claim 2, further comprising means for invalidating an entry in the cache tag if the entry is accessed globally, through the system bus.<!-- EPO <DP n="14"> --></claim-text></claim>
<claim id="c-en-01-0004" num="0004">
<claim-text>The cache memory of any one of claims 1 to 3, wherein said means for generating the second match signal is adapted to generate said second match signal when a write operation is occurring on the system bus.</claim-text></claim>
<claim id="c-en-01-0005" num="0005">
<claim-text>The cache tag memory of any one of claims 1 to 4 further comprising:
<claim-text>a first memory port capable of writing entries to said first single-port memory array (40) and said dual-port memory array (48), and capable of reading entries from said first single-port memory array and said dual-port memory array;</claim-text>
<claim-text>a second memory port capable of reading entries from said second single-port memory array (44) and said dual-port memory array (48), and capable of writing entries to said dual-port memory array;</claim-text>
<claim-text>a first comparator (50) connected to said first port for comparing an array entry selected by a first portion of a local address, as addressed by the local processor, with a second portion of the local address, and for generating a signal indicative of a match (53); and</claim-text>
<claim-text>a second comparator (60) connected to said second port for comparing an array entry selected by a first portion of a global address, as communicated from the system bus, with a second portion of the global address, and for generating a signal indicative of a match (59).</claim-text></claim-text></claim>
<claim id="c-en-01-0006" num="0006">
<claim-text>The cache tag memory of Claim 5, wherein said first memory port is capable of writing entries into said second single-port memory array (44).</claim-text></claim>
<claim id="c-en-01-0007" num="0007">
<claim-text>The cache tag memory of Claim 5 or Claim 6, wherein said second memory port is capable of writing entries into said second single-port memory array</claim-text></claim>
<claim id="c-en-01-0008" num="0008">
<claim-text>The cache tag memory of any one of Claims 5 to 7, comprising means for storing a valid state composed of a bit or bits in said dual-port memory array (48) to indicate the validity of an entry stored in the first and second single-port memory arrays.<!-- EPO <DP n="15"> --></claim-text></claim>
<claim id="c-en-01-0009" num="0009">
<claim-text>The cache tag memory of Claim 8, comprising means for setting said valid state corresponding to said entry to a first value when a new value is written to the entry.</claim-text></claim>
<claim id="c-en-01-0010" num="0010">
<claim-text>The cache tag memory of Claim 9, further comprising:
<claim-text>comparison logic for determining whether the value of the entry indexed by a first portion of a global system address is the same as a second portion of the global system address, thereby defining a match; and</claim-text>
<claim-text>logic means (64) for setting the first valid state corresponding to such indexed entry to a second value if a match occurs during a global system write operation.</claim-text></claim-text></claim>
<claim id="c-en-01-0011" num="0011">
<claim-text>The cache tag memory of Claim 10, further comprising logic means for setting the first valid state corresponding to such indexed entry to the second value if a match occurs during a global system read operation.</claim-text></claim>
<claim id="c-en-01-0012" num="0012">
<claim-text>The cache tag memory of Claim 10 or Claim 11, wherein said comparison logic comprises a logic gate (54) for combining logically said valid state and the output of the first comparator (50).</claim-text></claim>
<claim id="c-en-01-0013" num="0013">
<claim-text>The cache tag memory of any one of Claims 10 to 12, wherein said comparison logic comprises a logic gate (62) for combining logically said valid state and the output of the second comparator (60).</claim-text></claim>
<claim id="c-en-01-0014" num="0014">
<claim-text>The cache tag memory of any one of Claims 10 to 13, wherein said logic means comprises a logic gate (64) for combining logically a snoop write signal (SW) and the output of the second comparator (60).</claim-text></claim>
<claim id="c-en-01-0015" num="0015">
<claim-text>The cache tag memory of any one of Claims 5 to 14, further comprising control circuitry for writing into the first and second single-port memory arrays.<!-- EPO <DP n="16"> --></claim-text></claim>
<claim id="c-en-01-0016" num="0016">
<claim-text>The cache tag memory of any one of Claims 5 to 15, comprising means for storing at least one bit position in the dual-port memory array(48) as a parity bit.</claim-text></claim>
</claims><!-- EPO <DP n="17"> -->
<claims id="claims02" lang="de">
<claim id="c-de-01-0001" num="0001">
<claim-text>Chache-Speicher mit:
<claim-text>einem Daten-Cache (32) zum Speichern mehrerer Einträge;</claim-text>
<claim-text>einem Cache-Etikettenspeicher (34) mit einer Dualschnittstellen-Speicheranordnung (48) mit mehreren Einträgen;</claim-text>
<claim-text>Einrichtungen zum Ansprechen der Dualschnittstellen-Speicheranordnung durch sowohl einen Systembus (26) als auch einen lokalen Prozessor (36);</claim-text>
<claim-text>einer Cache-Steuereinrichtung (38) zum Steuern des Austausches von Daten- oder Steuersignalen zwischen dem lokalen Prozessor (36) und dem Systembus (26);</claim-text>
<claim-text>Einrichtungen (50) zum Erzeugen eines ersten Abgleichsignals, das anzeigt, daß eine durch den lokalen Prozessor angesprochene Speicherstelle sich im Datencache befindet;</claim-text>
<claim-text>Einrichtungen zur Bereitstellung eines Gültig-Signals (56), das anzeigt, daß eine durch den lokalen Prozessor angesprochene Speicherstelle gültig ist;</claim-text>
<claim-text>Einrichtungen (60) zum Erzeugen eines zweiten Abgleichsignals, das anzeigt, daß eine durch den Systembus angesprochene Speicherstelle mit einem Eintrag im Cache-Etikettenspeicher übereinstimmt;</claim-text> <b>dadurch gekennzeichnet,</b> daß der Cache-Etikettenspeicher ferner umfaßt:
<claim-text>eine erste Einzelschnittstellen-Speicheranordnung (40) mit einer ersten Vielzahl an Einträgen, die den in der Dualschnittstellen-Speicheranordnung gespeicherten Einträgen entsprechen;</claim-text>
<claim-text>Einrichtungen zum Adressieren der ersten Einzelstellen-Speicheranordnung durch den lokalen Prozessor;</claim-text>
<claim-text>eine zweite Einzelschnittstellen-Speicheranordnung (44), die eine zweite Vielzahl von Einträgen enthält, die den Einträgen entsprechen, welche in der Doppelschnittstellen- und in der ersten Einzelschnittstellen-Speicheranordnung gespeichert sind;<!-- EPO <DP n="18"> --></claim-text>
<claim-text>Einrichtungen zum Ansprechen der zweiten Einzelschnittstellen-Speicheranordnung durch den Systembus; und</claim-text>
<claim-text>Einrichtungen zum Speichern von Informationen in der Doppelschnittstellen-Speicheranordnung, die die Gültigkeit entsprechender Einträge anzeigen, welche in der ersten und der zweiten Einzelschnittstellen-Speicheranordnung gespeichert sind.</claim-text></claim-text></claim>
<claim id="c-de-01-0002" num="0002">
<claim-text>Cache-Speicher nach Anspruch 1, der ferner Einrichtungen zum Empfangen eines Steuersignals (SW) aufweist, das vom Systembus (26) zum Cache-Etikettenspeicher übertragen wird und anzeigt, daß auf dem Systembus eine Schreiboperation stattfindet.</claim-text></claim>
<claim id="c-de-01-0003" num="0003">
<claim-text>Cache-Speicher nach Anspruch 1 oder 2, der ferner Einrichtungen aufweist, die einen Eintrag in dem Cache-Etikett ungültig machen, wenn durch den Systembus auf den Eintrag global zugegriffen wird.</claim-text></claim>
<claim id="c-de-01-0004" num="0004">
<claim-text>Cache-Speicher nach einem der Ansprüche 1 bis 3, bei dem die Einrichtung zur Erzeugung des zweiten Abgleichsignals so angepaßt ist, daß sie ein zweites Abgleichsignal erzeugt, wenn eine Schreiboperation auf dem Systembus stattfindet.</claim-text></claim>
<claim id="c-de-01-0005" num="0005">
<claim-text>Cache-Etikettenspeicher nach einem der Ansprüche 1 bis 4, der ferner aufweist: eine erste Speicherschnittstelle, die Einträge in die erste Einzelschnittstellen-Speicheranordnung (40) und die Dualschnittstellen-Speicheranordnung (48) schreiben und Einträge aus der ersten Einzelschnittstellen-Speicheranordnung und der Dualschnittstellen-Speicheranordnung lesen kann;
<claim-text>eine zweite Speicherschnittstelle, die Einträge aus der zweiten Einzelschnittstellen-Speicheranordnung (24) und der Dualschnittstellen-Speicheranordnung (48) lesen und Einträge in die Dualschnittstellen-Speicheranordnung schreiben kann;</claim-text>
<claim-text>einen ersten Vergleicher (50, der mit der ersten Schnittstelle verbunden ist, um einen Anordnungseintrag, der durch einen ersten Abschnitt einer lokalen Adresse ausgewählt und auf den durch den lokalen Prozessor zugegriffen wird, mit einem zweiten Abschnitt der lokalen Adresse zu vergleichen und zur Erzeugung eines<!-- EPO <DP n="19"> --> Signals, das einen Abgleich (53) anzeigt; und</claim-text>
<claim-text>einem zweiten Vergleicher (60), der mit der zweiten Schnittstelle verbunden ist, um einen durch einen ersten Abschnitt einer globalen Adresse ausgewählten Anordnungseintrag, wie er vom Systembus übermittelt wird, mit einem zweiten Abschnitt der globalen Adresse zu vergleichen, und zum Erzeugen eines Signals, das einen Abgleich (59) anzeigt.</claim-text></claim-text></claim>
<claim id="c-de-01-0006" num="0006">
<claim-text>Cache-Etikettenspeicher nach Anspruch 5, bei dem die erste Speicherschnittstelle Einträge in die zweiten Einzelschnittstellen-Speicheranordnung (44) schreiben kann.</claim-text></claim>
<claim id="c-de-01-0007" num="0007">
<claim-text>Cache-Etikettenspeicher nach Anspruch 5 oder 6, bei dem die zweite Speicherschnittstelle Einträge in die zweite Einzelschnittstellen-Speicheranordnung schreiben kann.</claim-text></claim>
<claim id="c-de-01-0008" num="0008">
<claim-text>Cache-Etikettenspeicher, nach einem der Ansprüche 5 bis 7, der Einrichtungen zum Speichern eines Gültig-Zustandes, der aus einem Bit oder aus Bits aufgebaut ist, in der Dualschnittstellen-Speicheranordnung (48) aufweist, um die Gültigkeit eines Eintrags anzuzeigen, der in der ersten und der zweiten EinzelschnittstelleSpeicheranordnung gespeichert ist.</claim-text></claim>
<claim id="c-de-01-0009" num="0009">
<claim-text>Cache-Etikettenspeicher nach Anspruch 8, mit Einrichtungen, die den Gültig-Zustand entsprechend dem Eintrag auf einen ersten Wert einstellen, wenn ein neuer Wert auf den Eintrag geschrieben wird.</claim-text></claim>
<claim id="c-de-01-0010" num="0010">
<claim-text>Cache-Etikettenspeicher nach Anspruch 9, der ferner aufweist:
<claim-text>eine Vergleichslogik zur Bestimmung, ob der Wert des durch einen ersten Abschnitt einer globalen Systemadresse indizierten Eintrags derselbe ist wie ein zweiter Abschnitt der globalen Systemadresse, wodurch ein Abgleich definiert wird; und</claim-text>
<claim-text>logische Einrichtungen (64) zum Einstellen des ersten Gültig-Zustandes entsprechend eines solchen Indexeintrags auf einen zweiten Wert, wenn ein Abgleich<!-- EPO <DP n="20"> --> während einer globalen System-Schreiboperation auftritt.</claim-text></claim-text></claim>
<claim id="c-de-01-0011" num="0011">
<claim-text>Cache-Etikettenspeicher nach Anspruch 10, der ferner logische Einrichtungen aufweist, zum Einstellen des ersten Gültig-Zustands entsprechend einem solchen indizierten Eintrag auf den zweiten Wert, wenn ein Abgleich während einer globalen System-Schreiboperation auftritt.</claim-text></claim>
<claim id="c-de-01-0012" num="0012">
<claim-text>Cache-Etikettenspeicher nach Anspruch 10 oder Anspruch 11 bei dem die Vergleichslogik ein logisches Gate (54) zum logischen Kombinieren des Gültig-Zustands und der Ausgabe des ersten Vergleichers (50) aufweist.</claim-text></claim>
<claim id="c-de-01-0013" num="0013">
<claim-text>Cache-Etikettenspeicher nach einem der Ansprüche 10 bis 12, bei dem die Vergleichslogik ein logisches Gate (62) zum logischen Kombinieren des Gültig-Zustandes mit der Ausgabe des zweiten Vergleichers (60) aufweist.</claim-text></claim>
<claim id="c-de-01-0014" num="0014">
<claim-text>Cache-Etikettenspeicher nach einem der Ansprüche 10 bis 13, bei dem die logische Einrichtung ein logisches Gate (64) zum logischen Kombinieren eines PrüfSchreibsignals (SW) mit der Ausgabe des zweiten Vergleichers (60) aufweist.</claim-text></claim>
<claim id="c-de-01-0015" num="0015">
<claim-text>Cache-Etikettenspeicher nach einem der Ansprüche 5 bis 14, der ferner eine Steuerschaltung zum Schreiben in die erste und in die zweite Einzelschnittstellen-Speicheranordnung aufweist.</claim-text></claim>
<claim id="c-de-01-0016" num="0016">
<claim-text>Cache-Etikettenspeicher nach einem der Ansprüche 5 bis 15, der ferner Einrichtungen zum Speichern mindestens einer Bitposition in der Dualschnittstellen-Speicheranordnung als Paritäts-Bit aufweist.</claim-text></claim>
</claims><!-- EPO <DP n="21"> -->
<claims id="claims03" lang="fr">
<claim id="c-fr-01-0001" num="0001">
<claim-text>Antémémoire comprenant :
<claim-text>- une antémémoire de données (32) pour mémoriser plusieurs entrées ;</claim-text>
<claim-text>- une mémoire d'étiquettes d'antémémoire (34) comprenant une matrice de mémoire à double accès (48) ayant plusieurs entrées ;</claim-text>
<claim-text>- des moyens pour adresser ladite matrice de mémoire à double accès à la fois par un bus système (26) et par un processeur local (36) ;</claim-text>
<claim-text>- un circuit de commande d'antémémoire (38) pour commander les échanges de signaux de données ou de commande entre le processeur local (36) et le bus système (26) ;</claim-text>
<claim-text>- des moyens (50) pour produire un premier signal de correspondance pour indiquer qu'un emplacement de mémoire adressé par le processeur local se situe dans l'antémémoire de données ;</claim-text>
<claim-text>- des moyens pour délivrer un signal valide (56) pour indiquer qu'un emplacement de mémoire adressé par le processeur local est valide ;</claim-text>
<claim-text>- des moyens (60) pour produire un second signal de correspondance pour indiquer qu'un emplacement de mémoire adressé par le bus système correspond à une entrée dans la mémoire d'étiquettes d'antémémoire ;</claim-text>    caractérisée en ce que la mémoire d'étiquettes d'antémémoire comprend en outre :
<claim-text>- une première matrice de mémoire à un accès (40) contenant plusieurs premières entrées correspondant aux entrées mémorisées dans la matrice de mémoire à double accès ;</claim-text>
<claim-text>- des moyens pour adresser ladite première matrice de mémoire à un accès par le processeur local ;</claim-text>
<claim-text>- une seconde matrice de mémoire à un accès (44) contenant plusieurs secondes entrées correspondant aux<!-- EPO <DP n="22"> --> entrées mémorisées dans la matrice de mémoire à double accès et dans la première matrice de mémoire à un accès ;</claim-text>
<claim-text>- des moyens pour adresser ladite seconde matrice de mémoire à un accès par le bus système ; et</claim-text>
<claim-text>- des moyens pour mémoriser des informations dans ladite matrice de mémoire à double accès indiquant la validité d'entrées correspondantes mémorisées dans les première et seconde matrices de mémoire à un accès.</claim-text></claim-text></claim>
<claim id="c-fr-01-0002" num="0002">
<claim-text>Antémémoire de la revendication 1, comprenant en outre des moyens pour recevoir un signal de commande (SW) devant être transmis à la mémoire d'étiquettes d'antémémoire depuis le bus système (26) indiquant qu'une opération d'écriture apparaît sur le bus système.</claim-text></claim>
<claim id="c-fr-01-0003" num="0003">
<claim-text>Antémémoire de la revendication 1 ou 2, comprenant en outre des moyens pour invalider une entrée dans la mémoire d'étiquettes d'antémémoire si l'entrée est accédée de manière globale par l'intermédiaire du bus système.</claim-text></claim>
<claim id="c-fr-01-0004" num="0004">
<claim-text>Antémémoire de l'une quelconque des revendications 1 à 3, dans laquelle lesdits moyens pour produire le second signal de correspondance est conçu pour produire ledit second signal de correspondance lorsqu'une opération d'écriture apparaît sur le bus système.</claim-text></claim>
<claim id="c-fr-01-0005" num="0005">
<claim-text>Mémoire d'étiquettes d'antémémoire de l'une quelconque des revendications 1 à 4, comprenant en outre :
<claim-text>- un premier accès de mémoire capable d'écrire des entrées dans ladite première matrice de mémoire à un accès (40) et dans ladite matrice de mémoire à double accès (48), et capable de lire des entrées depuis ladite première matrice de mémoire à un accès et depuis ladite matrice de mémoire à double accès ;</claim-text>
<claim-text>- un second accès de mémoire capable de lire des entrées depuis ladite seconde matrice de mémoire à un accès (44) et depuis ladite matrice de mémoire à double<!-- EPO <DP n="23"> --> accès (48), et capable d'écrire des entrées dans ladite matrice de mémoire à double accès ;</claim-text>
<claim-text>- un premier comparateur (50) connecté audit premier accès pour comparer une entrée de matrice sélectionnée par une première partie d'une adresse locale, comme adressée par le processeur local, avec une seconde partie de l'adresse locale, et pour produire un signal indiquant une correspondance (53) ; et</claim-text>
<claim-text>- un second comparateur (60) connecté audit second accès pour comparer une entrée de matrice sélectionnée par une première partie d'une adresse globale, comme transmise depuis le bus système, avec une seconde partie de l'adresse globale, et pour produire un signal indiquant une correspondance (59).</claim-text></claim-text></claim>
<claim id="c-fr-01-0006" num="0006">
<claim-text>Mémoire d'étiquettes d'antémémoire de la revendication 5, dans laquelle ledit premier accès de mémoire est capable d'écrire des entrées dans ladite seconde matrice de mémoire à un accès (44).</claim-text></claim>
<claim id="c-fr-01-0007" num="0007">
<claim-text>Mémoire d'étiquettes d'antémémoire de la revendication 5 ou 6, dans laquelle ledit second accès de mémoire est capable d'écrire des entrées dans ladite seconde matrice de mémoire à un accès.</claim-text></claim>
<claim id="c-fr-01-0008" num="0008">
<claim-text>Mémoire d'étiquettes d'antémémoire de l'une quelconque des revendications 5 à 7, comprenant des moyens pour mémoriser un état valide composé d'un ou de plusieurs bits dans ladite matrice de mémoire à double accès (48) pour indiquer la validité d'une entrée mémorisée dans les première et seconde matrices de mémoire à un accès.</claim-text></claim>
<claim id="c-fr-01-0009" num="0009">
<claim-text>Mémoire d'étiquettes d'antémémoire de la revendication 8, comprenant des moyens pour fixer ledit état valide correspondant à ladite entrée à une première valeur lorsqu'une nouvelle valeur est écrite dans l'entrée.</claim-text></claim>
<claim id="c-fr-01-0010" num="0010">
<claim-text>Mémoire d'étiquettes d'antémémoire de la revendication 9, comprenant en outre :<!-- EPO <DP n="24"> -->
<claim-text>- une logique de comparaison pour déterminer si la valeur de l'entrée indexée par une première partie d'une adresse du système global est la même qu'une seconde partie de l'adresse du système global, définissant ainsi une correspondance ; et</claim-text>
<claim-text>- des moyens logiques (64) pour fixer le premier état valide correspondant à cette entrée indexée à une seconde valeur si une correspondance apparaît durant une opération d'écriture du système global.</claim-text></claim-text></claim>
<claim id="c-fr-01-0011" num="0011">
<claim-text>Mémoire d'étiquettes d'antémémoire de la revendication 10, comprenant en outre des moyens logiques pour fixer le premier état valide correspondant à cette entrée indexée à la seconde valeur si une correspondance apparaît durant une opération de lecture du système global.</claim-text></claim>
<claim id="c-fr-01-0012" num="0012">
<claim-text>Mémoire d'étiquettes d'antémémoire de la revendication 10 ou 11, dans laquelle ladite logique de comparaison comprend une porte logique (54) pour combiner de façon logique ledit état valide et la sortie du premier comparateur (50).</claim-text></claim>
<claim id="c-fr-01-0013" num="0013">
<claim-text>Mémoire d'étiquettes d'antémémoire de l'une quelconque des revendications 10 à 12, dans laquelle ladite logique de comparaison comprend une porte logique (62) pour combiner de façon logique ledit état valide et la sortie du second comparateur (60).</claim-text></claim>
<claim id="c-fr-01-0014" num="0014">
<claim-text>Mémoire d'étiquettes d'antémémoire de l'une quelconque des revendications 10 à 13, dans laquelle lesdits moyens logiques comprennent une porte logique (64) pour combiner de façon logique un signal d'écriture de surveillance (SW) et la sortie du second comparateur (60).</claim-text></claim>
<claim id="c-fr-01-0015" num="0015">
<claim-text>Mémoire d'étiquettes d'antémémoire de l'une quelconque des revendications 5 à 14, comprenant en outre un ensemble de circuits de commande pour écrire dans les première et seconde matrices de mémoire à un accès.</claim-text></claim>
<claim id="c-fr-01-0016" num="0016">
<claim-text>Mémoire d'étiquettes d'antémémoire de l'une<!-- EPO <DP n="25"> --> quelconque des revendications 5 à 15, comprenant des moyens pour mémoriser au moins une position de bit dans la matrice de mémoire à double accès (48) sous la forme d'un bit de parité.</claim-text></claim>
</claims><!-- EPO <DP n="26"> -->
<drawings id="draw" lang="en">
<figure id="f0001" num=""><img id="if0001" file="imgf0001.tif" wi="168" he="265" img-content="drawing" img-format="tif"/></figure>
</drawings>
</ep-patent-document>
