throbber
l|||||||||||||||||||||IllllIllll|||||||||||||||||I||||||||||||||||||||||i||
`
`U5005509135A
`
`United States Patent
`
`[19]
`
`[11] Patent Number:
`
`5,509,135
`
`
`Steely, Jr.
`
`[45] Date of Patent:
`
`Apr. 16, 1996
`
`[54] MULTI-INDEX MULTI-WAY
`SET-ASSOCIATIVE CACHE
`
`[75]
`
`Inventor: Simon C. Steely, Jr” Hudson, NH.
`.
`[73] Assignees Digital Equipment Corporation,
`Maynard, Mass.
`
`.
`..
`,
`[21] Appl No _ 951 623
`[22] Filed:
`Sep. 25, 1992
`
`Int. C1.t3 ...................................................... G06F 13/00
`[51]
`
`[52] U.S. Cl. ............................. 395/474
`.
`.
`[58] Field of Search .................................. 395,422,422de
`
`[56]
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`8/1989 Langendorf etal.
`................... 364/200
`4,860,199
`7/1990 Langendorf ................ 354/200
`4 942 520
`
`5/1991 Farrell et al
`.. 364/200
`5:014:195
`11/1991 Telgam et al_
`...... 395/400
`5,057,073
`
`2/1992 Shelton et a1.
`...... 395/425
`5,091,851
`7/1992 Melton et a1.
`.. 395/425
`5,133,061
`
`8/1992 Thacker .......
`.. 395/400
`5,136,700
`5,155,832 10/1992 Hunt .............
`.. 395/425
`5,182,799
`1/1993 Tamura et a]. .......................... 395/400
`
`
`
`OTHER PUBLICATIONS
`
`Liu—Xor Randomiztion in Cache Congruence Class Index-
`ing IBM Technical Disclosure Bulletin—v01. 27, No. 2. Jul.
`1984.
`_
`_
`.
`Primary Exammer—Kevm J. Teska
`Assistant Examiner—Stephen J. Walder, Jr.
`Attorney, Agent, or Finn—Dirk Brinkman; Ronald C. Hud—
`gens; Arthur W. Fisher
`
`[57]
`
`ABSTRACT
`.
`.
`.
`_
`A Plurahty 0f Indexes are PIOVIded for a multl-way 56‘-
`associate cache of a computer system. The cache is orga-
`nized as a plurality of blocks for storing data which are a
`copies of main memory data. Each block has an associated
`tag for uniquely identifying the block. The blocks and the
`tags are addressed by indexes. The indexes are generated by
`a Boolean hashing function which converts a memory
`address ‘0 “Che mdexes by combining the bus 0f the
`memory address “Sing an GXCIUSiVC 0R fimm‘m- Difiemnt
`combination of bits are used to generate a plurality of
`difi'erent indexes to address the tags and the associated
`blocks to transfer data between the cache and the central
`processing unit of the computer system.
`
`17 Claims, 5 Drawing Sheets
`
`
`
`UNIFIED 1012
`
`UNIFIED 1012
`
`

`

`U.S. Patent
`
`Apr. 16,1996
`
`Sheet 1 of 5
`
`5,509,135
`
`
`
`FIG.
`
`I
`
`FIG.4
`
`

`

`US. Patent
`
`Apr. 16,1996
`
`Sheet 2 of 5
`
`5,509,135
`
`%—---------------E
`--------=------
`
`a-IEI-n-n-n-un-n'
`
`FIG. 3
`
`

`

`US. Patent
`
`Apr. 16, 1996
`
`Sheet 3 of 5
`
`5,509,135
`
`
`
`
`_¢0m+nn_mm0_OO¢OmmOOiamuimoiN¢ommmONm¢m_o<_
`
`Eu.o1_51¢.31
`
`¢mmmNm.0.¢mmmNM_m«.mmmNM3.vmmmNm_m«.mmmNm
`cancanown0mmvmmcanown0mmmomm9mmmWownvanowncancannmmcanown.moan
`
`.vmmmNm.mEvanommnmn0mm
`
`Eq«0.5m.oE
`
`

`

`US. Patent
`
`Apr. 16, 1996
`
`Sheet 4 of 5
`
`5,509,135
`
`
`
`

`

`US. Patent
`
`Apr. 16, 1996
`
`Sheet 5 of 5
`
`5,509,135
`
`
`
`a!¢m¢kmmmo31iovommooow.iémmnooav.i30mmm03».mm¢m_o<_
`
`
`
`
`
`
`
`.5.om.2909A0900.am.W09;02am.02um.00.am.om. «mmmNm_mmm¢mmmmm.mcmmmNM_mcm_mmmm_mcm...9mmmm_m¢mmmmm5U900.am.cm.
`
`
`
`
`
`\u.9“.
`
`

`

`1
`MULTI-INDEX MULTI-WAY
`SET-ASSOCIATIVE CACHE
`
`FIELD OF THE INVENTION
`
`This invention relates to memory buffer caches for use in
`computer systems, and more particularly to a method and
`apparatus which improves the hit ratio of multi-way set-
`associative caches.
`
`BACKGROUND OF THE INVENTION
`
`In a computer system, the speed at which the central
`processor unit (CPU) operates depends upon the rate at
`which instructions and operands (data) are transferred
`between memory and the CPU. This is particularly true for
`computer systems that use multiple pages to increase the
`amount of addressable memory. In an attempt to improve the
`data transfer rate. between memory and the CPU, many
`modern computer systems include a memory buffer cache.
`A cache is a relatively small, random access memory
`(RAM) used to store a copy of memory data in anticipation
`of future use by the CPU. A cache may be implemented by
`one or more dynamic RAM (DRAM) integrated circuits. For
`very high speed caches, the RAM is usually an integral part
`of the CPU chip. The data stored in a cache can be
`transferred to the CPU in substantially less time than data
`stored in memory. The utility of a cache arises from the fact
`that a cache can take advantage of the principles of locality
`of reference, which are well known in computing tech-
`niques. These principles indicate that when data stored at
`one location are accessed, there is a high probability that
`data stored at physically adjacent locations (spatial locality)
`will be accessed soon afterwards in time (temporal locality).
`Thus, a cache is typically organized into a plurality of
`“blocks,” wherein each block stores a copy of one or more
`contiguously addressable bytes of memory data. That is,
`access to memory data causes an entire block of data,
`including the referenced data,
`to be transferred from
`memory to cache, unless of course the data are already
`stored in the cache.
`
`During operation of the computer system, when the CPU
`makes a memory reference, a determination is made if a
`copy of the referenced data are also stored in the cache. This
`is known as a “hit.” If the data are not stored in cache, this
`is known as a “miss.” The hit or miss rate is an indicator of
`the effectiveness of the cache.
`
`In order to access data in the cache, the memory address
`is translated to a cache address. The portion of the cache
`address including the most significant bits of the memory‘
`address is called the “tag” and the portion including the least
`significant bits is called the “cache index.” The cache index
`corresponds to the address of the block storing a copy of the
`referenced data, additional bits are usually also used to
`address the bytes within a block, that is, if each block has
`more than one byte of data. The tag is used to uniquely
`identify blocks having difl‘erent memory addresses but the
`same cache index. Therefore, the cache typically includes a
`data store and a tag store. The data store is used for storing
`the blocks of data. The tag store, sometimes known as the
`directory, is used for storing the tags of each of the blocks
`of data. Both the data store and the tag store are accessed by
`the cache index. The output of the data store is a block of
`data, and the output of the tag store is a tag.
`Since the cache address is directly computable from the
`memory address, such a cache is generally known as a
`direct-mapped cache. A key attribute of a direct-mapped
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`4o
`
`45
`
`50
`
`55
`
`60
`
`65
`
`5,509,135
`
`2
`
`cache is the short latency time in accessing data stored in the
`cache. However, in a direct—mapped cache, any attempt to
`store different blocks of data at the same cache index leads
`to “thrashing.” Thrashing occurs when the CPU succes-
`sively stores data having different memory addresses as
`blocks having the same cache index, essentially negating the
`beneficial effect of the cache, and reducing the operating
`speed of the computer. Thrashing is a well known phenom-
`ena in computer systems, typically due to unavoidable “hot
`spots” in memory which are referenced at a very high
`frequency compared to the rest of memory.
`To increase the hit rate of the cache, and to reduce
`thrashing, it is well known to use multi-way set-associative
`mapping techniques wherein two or more concurrently
`addressable RAMs provide a plurality of blocks and tags for
`a single cache index. That is, in a conventional multi-way
`set-associative cache,
`the single cache index is used to
`concurrently access a plurality of blocks and tags in a set of
`RAMs. The number of RAMs in the set indicates the “way”
`number of a cache. For example, if the cache index is used
`to concurrently access data and tags stored in two RAMs, the
`cache is a two-way set-associative cache. Similarly, if the
`cache index is used to concurrently access data and tags
`stored in four RAMs, the cache is a four-way set-associative
`cache.
`
`During the operation of a singlenindex multi-way set-
`associative cache, a memory access by the CPU causes each
`of the RAMs to be examined at the corresponding cache
`index location. The tag is used to distinguish the cache
`blocks having the same cache index but different memory
`addresses. If a tag comparison indicates that the desired data
`are stored in a cache block of one of the RAMs, that RAM
`is selected and the desired access is completed.
`In case of a miss, a determination is made to select one of
`the blocks for replacement. Methods used for implementing
`a replacement strategy for data in a cache are well known in
`cache design. Typically, the replacement of blocks in a cache
`are done in a least recently used manner (LRU). LRU
`algorithms can be implemented in any number of ways. In
`general, an LRU algorithm selects particular blocks for
`replacement in aged order. That is, blocks storing data which
`were least recently used (LRU) are selected for replacement
`before blocks storing data which were most recently used
`(MRU). Used meaning any access, read or write to any data
`stored in the block. If the data in the block has been
`
`modified, that is, the data in cache is different than the copy
`of the data in memory, the block to be replaced is first
`written back to memory, before being overwritten by new
`data. An alternative known method uses a not most recently
`used (NMRU) algorithm. With an NMRU replacement strat-
`egy, the block which is selected for replacement is a block
`randomly selected from any block which was not most
`recently used.
`A multi-way set-associative cache provides the advantage
`that there are two or more possible locations for storing data
`in blocks having the same cache index. This arrangement
`reduces thrashing due to hot spots in memory, and increases
`the operating speed of the computer system, presuming that
`hot spots are uniformly distributed over the blocks of the
`RAMs.
`
`if hot spots are not uniformly distributed,
`However,
`thrashing may persist. For example, a CPU realizes
`improved operating speed if related data structures are page
`aligned. Most modern compilers start assigning related data
`structures, such as instruction sequences, beginning anew
`with each page. Also, if there is not enough room at the end
`
`

`

`3
`
`4
`
`5,509,135
`
`of a page to store a entire data structure, the end of the page
`is left unused, rather than having a data structure split
`between two pages. Therefore, the low order addresses of a
`page may be disposed to be accessed at a higher rate than the
`high order addresses of the page. This biased distribution of
`memory hot spots will lead to thrashing in a traditional
`single-index multi—way set—associative cache. In addition,
`the random distribution of data and instructions may spuri-
`ously generate memory hot spots.
`
`SUMMARY OF THE INVENTION
`
`In accordance with the invention, there are provided a
`method and an apparatus to implement
`the method of
`improving the utilization of a set-associative cache. The
`method and apparatus are accomplished in general by a
`computer system including a central processor unit, having
`arelatively slow speed main memory and a small high speed
`memory buffer cache. The cache includes a plurality of sets
`of blocks for storing copies a plurality of bytes of contigu-
`ously addressable main memory data. Each block is addres-
`sable by a cache index.
`In general, a set of address hashing functions are pro-
`vided, one function for each of the sets of blocks,
`to
`randomly distribute main memory addresses across the
`blocks of the multi—way set-associative cache. The present
`method randomizes access to the blocks of each set by
`applying a Boolean hashing function, in particular an exclu-
`sive OR, to a memory address. A diiferent hash function is
`used for each of the blocks in the set. The hashing function
`combines a predetermined number of bits of the tag field of
`a memory address with the same number of selected bits of
`the cache index to generate a different randomized cache
`index for each of the blocks in a set for any one memory
`address.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 is block diagram of a computer system utilizing a
`multi-way set-associative cache in accordance with the
`present invention;
`FIG. 2 is a block diagram of a main memory address;
`FIG. 3 is a block diagram of the multi-way set-associative
`cache of FIG. 1;
`FIG. 4 is a block diagram of a cache address;
`FIG. 5 is a block diagram of the distribution of blocks of
`data in a multi-way set-associative cache using prior art
`techniques;
`FIG. 6 is a block diagram of a hashing technique as
`disclosed herein; and
`
`FIG. 7 is a block diagram of the distribution of blocks of
`data in a multi-way set-associative cache using the hashing
`technique of FIG. 6._
`
`DETAILED DESCRIPTION 'OF THE
`PREFERRED EMBODIMENT
`
`Referring now to the drawings, FIG. 1 shows a computer
`system 1 which includes a central processing unit (CPU) 10
`communicating data with a main memory 11 and a memory
`buffer cache 12 via address, data, and control lines, generally
`indicated by numeral 13. The cache 12 acts as a buifer
`between main memory 11 and the CPU 10 in order to
`increase the operating speed of the computer system 1.
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`The main memory 11 has a relatively large data storage
`capacity and a relatively long data access time when com-
`pared with the cache 12. The main memory 11 is partitioned
`into separately addressable pages, not shown, each page
`storing instructions and operands as a plurality of bytes of
`data.
`
`As shown in FIG. 2, the bytes of data in main memory 11
`are accessible by a main memory address 14, which includes
`a page number field 15 and a page address field 16. The
`number of bits in the page number field 15 are sufficient to
`address all of the pages of main memory 11. The number of
`bits in the page address field 16 are determined by the page
`size. For example, if the main memory includes 2048 pages,
`the page number field 15 includes at least eleven bits of page
`address information. And, if each page stores 512 bytes of
`data, the page address field 16 includes at least nine bits of
`byte address information for each page. Therefore, the main
`memory address 14 is, for example, defined by a total of
`twenty bits. It should be apparent to one skilled in the art,
`that
`the invention can be practiced independent of the
`number of bits used for addressing memory.
`In FIG. 3, there is shown a multi—way set-associative
`cache, according to the present invention. The cache 12
`comprises a tag store 21 a data store 22, a comparator 23, a
`selector 24, and a convertor 25. The cache 12 has as an input
`a main memory address 14, and as an output cache data 20.
`As is shown in FIG. 4, and as will be explained in further
`detail herein, the main memory address 14 is converted to a
`cache address 17 by the convertor 25. The cache address 17
`is used to concurrently address the tag store 21 and the data
`store 22. The cache address 17, as shown in FIG. 4, includes
`a tag field 18, and a cache index 19. The number of bits in
`the cache index 19 corresponds to the size of the tag and data
`stores 21—22. For example, for 16K data store, the cache
`index 19 includes fourteen bits. Therefore, the tag field 18
`includes the remaining six bits of the main memory address
`14, for a total of twenty bits of cache address 17.
`Now, referring again to FIG. 3, the data store 22 includes
`a plurality of, for example four, data RAMS 31—34 for
`storing copies of main memory 11 data. Each data RAM
`31—34 is organized into a plurality of blocks, generally
`indicated by numeral 39. Each block 39 storing a copy of a
`plurality of, for example, sixty-four bytes of contiguously
`addressable main memory data. Therefore, it is understood
`that the low order bits of the cache address 17, for example,
`the low order six bits are generally used to individually
`address the bytes within the blocks 39.
`The tag store 21 includes tag RAMs 41—44, one respec—'
`tively, for each of the data RAMs 31—34. Each tag RAM
`41—44 is organized into a plurality of tags, generally indi-
`cated by numeral 49, one each for each of the blocks 39 in
`the corresponding data RAMs 31—34. In other words, the
`first tag 49 of tag RAM 41 is for storing the tag field 18 of
`the cache address 17 of the first block 39 of the data RAM
`31, and so forth.
`
`During operation of the computer system 1, references to
`data stored in main memory 11, include a determination to
`see if a copy of the data are stored in the cache 12. If the data
`are stored in the cache 12, known as a hit, the CPU 10 uses
`the data stored in the cache 12 directly. Otherwise, if the data
`are not stored in cache 12, known as a mass, the data are
`retrieved from the main memory 11 as a block 39, and stored
`in the cache 12.
`
`Prior to storing the retrieved data in the cache 12 as a
`block 39, one of the blocks 39 is selected to be overwritten,
`or replaced. Methods used for implementing a replacement
`
`

`

`5
`
`6
`
`5,509,135
`
`strategy for cache data are well known in cache design.
`Typically, the replacement of blocks 39 in a cache 12 are
`done in a least recently used manner (LRU). Known LRU
`algorithms are implemented in any number of ways. In
`general, known LRU algorithms selects blocks 39 for
`replacement in an aged order. That is, blocks 39 storing data
`which were least recently used (LRU) are selected for
`replacement before blocks 39 storing data which were most
`recently used (MRU). Used meaning any access, read or
`write to any data stored in the block 39. If the data in the
`selected block 39 was modified, or is otherwise difierent
`than the data in memory, the selected block 39 to be replaced
`is first written back to main memory 11 before being
`overwritten by the new data. An alternative known method
`uses a not most recently used (NMRU) algorithm. With an
`NMRU replacement strategy the block 39 which is selected
`for replacement is a block 39 selected from any block 39
`which was not accessed most recently.
`To access data stored in the cache 12, the main memory
`address of 14 is converted to the cache address 17, by the
`convertor 25. The convertor 25 maps the main memory
`address 14 to the tag field 18 and cache index 19 of the cache
`address 17. The cache index 19 is used to access, concur-
`rently, each of the data RAMs 31—34 of the data store 22 and
`each of the tag RAMs 41—44 of the tag store 21 via lines
`51—54, respectively. If there is a block 39 of data stored in
`any of the data RAMS 31—34 for a given cache index 19, the
`data of the block 39 are output to the selector 24 via the lines
`28. Also, the tag fields 18 from the corresponding tags 39 are
`input to the comparator 23 via the lines 26. The comparator
`23 also has as an input the referenced tag field 18, via the line
`55, to uniquely identify different blocks 39 of the various
`RAMs 31—34 having the same cache index 19. The output of
`the comparator 23, via the line 27, is used as an input to the
`selector 24, for example, a multiplexer, to select the appro-
`priate RAM 31—34 storing the accessed block of data. The
`output of the selector 24 is cache data 20, a copy of the data
`stored at main memory address 14.
`In traditional multi—way set-associative caches, bit-by-bit
`direct mapping is generally used to convert
`the main
`memory address 14 to the cache address 17. As a result, hot
`addresses at the same relative page address will generally
`map to blocks 39 having the same cache index 19. For
`example, as shown in FIG. 5, the five different addresses
`14a—14e, expressed as hexadecimal numbers “1A013432,”
`“OBBFD412,” “067F3410,” “0059D400,” and “0BBF7434”
`respectively, all map to the same cache index 19, and to
`blocks 39a—39d in RAMs 31—34 respectively. Consequently
`there are only four blocks 39a—39d, one in each of the four
`RAMs 31—34, all having the same cache index 19, to store
`data for five hot addresses 14a—14e, hence thrashing.
`As shown in FIG. 6, in order to improve the distribution
`of memory hot spots in the various blocks 39 of the data
`RAMs 31—34, the convertor 25 uses Boolean hashing func-
`tions in order to (pseudo) randomly generate a different
`cache index 19 for each of the data RAMs 31—34 and tag
`RAMs 41—44. The hash functions are accomplished by
`means of, for example, exclusive ORs (XOR) 60a—60d
`which combines the bits of the tag field 18a—18d with
`selected bits, for example the bits generally indicated by
`19x, of the index field 19 to produce randomized cache
`indexes 19a—19d. The randomized cache indexes 19a—19d
`depends on both the tag field 18 and the cache index 19 of
`the cache address 17. The randomized cache index 19a—19d
`are used to access the blocks 39 of the data RAMs 31—34 and
`the tags 49 of the tag RAMs 41—44 via lines 51—54,
`respectively.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`It should be apparent to one skilled in the art, that the bits
`of the tag field 18 and the bits of the cache index 19 can be
`combined in numerous different ways by means of various
`XOR functions, each way of combining providing a distinct
`randomizing capability. As shown in FIG. 6,
`the cache
`addresses 17a—17d having the same cache index 19 but
`different tag fields 18a—18d, produce difl'erent cache indexes
`19a—19d when combined by XORs 60a—60b, respectively.
`As shown approximately in FIG. 7, the cache indexes
`19a—19d can be used to access each of the data RAMs
`31—34. For example, each of the five difierent addresses
`14a—14e,
`“1A013432,”
`“0BBFD412,”
`“067F3410,”
`“0059D400,” and “0BBF7434” maps to a different cache
`index 19a—19d in each of the data RAMs 31—34. By
`randomizing the distribution of the cache index 19, accord-
`ing to the present invention, it is possible to have as many
`as twenty possible blocks 39 for storing data from five hot
`memory addresses, as compared to only four different places
`when using prior art techniques, substantially improving the
`hit ratio of multi-way set-associative caches.
`While there has been shown and described a preferred
`embodiment, it is to be understood that various other adap-
`tations and modifications may be made within the spirit and
`scope of the invention.
`What is claimed is:
`1. An apparatus for a central processing unit to address
`data in a second memory, the data in the second memory
`being a copy of data in a first memory, the first memory
`having a plurality of bytes storing data, each byte of the first
`memory addressable by a memory address, comprising:
`means for storing a plurality of tags and a plurality of
`blocks in the second memory, each tag associated with
`one block, and each tag and said associated one block
`addressable by an index;
`means, connected to an input of the second memory, for
`converting a selected memory address to a selected tag
`and a plurality of difierent indexes, each different index
`individually addressing one of said plurality of tags in
`the second memory;
`means, connected to said means for converting and said
`means for storing said plurality of tags, for comparing
`said selected tag with each of said plurality of tags
`individually addressed by each of said plurality of
`diiferent indexes; and
`
`means, connected to said means for comparing and said
`means for storing said plurality of blocks and respon-
`sive to said selected tag being equal to one of said
`plurality of tags individually addressed by each of said
`different indexes, for addressing a selected block asso-
`ciated with said selected tag to transfer data from the
`central processing unit to the second memory.
`2. The apparatus as in claim 1 whereto said means for
`converting includes means for translating said selected
`memory address to said selected tag and a selected index,
`and a plurality of means for combining said selected tag and
`said selected index to generate said plurality of diiferent
`indexes.
`
`3. The apparatus as in claim 2 wherein each of said means
`for combining includes a boolean hashing function.
`4. The apparatus as in claim 3 wherein said boolean
`hashing function includes an exclusive OR function.
`5. The apparatus as in claim 1 wherein said plurality of
`tags and said plurality of blocks are organized into a
`plurality of sets of tags and blocks, one set of tags and blocks
`for each of said plurality of difierent indexes.
`6. The apparatus as in claim 1 wherein said plurality of
`tags are concurrently addressable by said plurality of dif-
`ferent indexes and further comprising:
`
`

`

`7
`
`8
`
`5,509,135
`
`having a plurality of bytes storing data, each byte of the first
`memory addressable by a memory address, comprising:
`means for storing a plurality of tags and a plurality of
`blocks in the second memory, each tag associated with
`one block, and each tag and said associated one block
`concurrently addressable by an index, said plurality of
`tags and said plurality of blocks organized into a
`plurality of sets of tags and blocks, one set of tags and
`blocks for each of said diiferent indexes;
`
`a plurality of sets of lines connecting said means for
`converting, each one of said sets of lines for carrying
`one of said plurality of different indexes.
`7. A method for a central processing unit to address data
`in a second memory, the data in the second memory being
`a copy of data in a first memory, the first memory having a
`plurality of bytes storing data, each byte of the first memory
`addressable by a memory address, the method comprising:
`organizing the second memory into a plurality of tags and
`a plurality of blocks, each tag associated with one
`block, and each tag and said associated one block
`addressable by an index;
`converting a selected memory address to a selected tag
`and a plurality of different indexes, each different index
`individually addressing a diiferent tag in the second
`memory;
`
`comparing said selected tag with each of said different
`tags; and
`addressing, as determined by said selected tag being equal
`to one of said different tags, a selected block associated
`with said selected tag to transfer data between the
`central processing unit and the second memory.
`8. The method in claim 7 wherein said step for converting
`includes the step of translating said selected memory address
`to said selected tag and a selected index, and a step for
`combining said selected tag and said selected index to
`generate said plurality of different indexes.
`9. The method as in claim 8 wherein said step for
`combining includes the step of hashing by a plurality of
`boolean hashing functions to generate said plurality of
`diiferent indexes.
`
`10. The method as in claim 9 wherein said hashing step
`includes the step of exclusive ORing.
`11. The method as in claim 7 including the step of
`organizing said plurality of rags and said plurality of blocks
`into a plurality of sets of tags and blocks, one set of tags and
`blocks for each of said different indexes.
`12. The method as in claim 7 including the step of
`concurrently addressing said plurality of tags by said
`selected tag and addressing said selected block by said
`plurality of different indexes.
`13. An apparatus for a central processing unit to address
`data in a second memory, the data in the second memory
`being a copy of data in a first memory, the first memory
`
`10.
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`means, connected to an input of the second memory, for
`translating a selected memory address to a selected tag
`and a selected index, said selected tag, said selected
`index, and said selected memory address each having a
`plurality of bits, the number of bits of said selected tag
`plus the number of bits of said selected index equal to
`the number of bits of said selected memory address;
`a plurality of means, connected to said means for trans-
`lating, for combining said bits of said selected tag and
`an equal number of bits of said selected index to
`generate a plurality of different indexes, each diiferent
`index individually addressing a different tag in the
`second memory, the number of different indexes equal
`to the number of said sets into which said tags and said
`associated blocks are organized;
`means, connected to an output of the second memory, for
`comparing said selected tag with each of said diflerent
`tags; and
`means, connected to said means for comparing and
`responsive to said selected tag being equal to one of
`said diiferent tags, for addressing a selected block
`associated with said selected tag to transfer data
`between the central processing unit and the second
`memory.
`14. The apparatus as in claim 13 wherein each of said
`means for combining includes an exclusive OR function.
`15. The apparatus as in claim 13 wherein said means for
`comparing includes a comparator and said means for
`addressing said selected block includes a multiplexer.
`16. The apparatus as in claim 13 wherein the second
`memory is a cache bufier memory.
`17. The apparatus as in claim 13 wherein each of said sets
`is a random access memory.
`*
`*
`
`*
`
`*
`
`*
`
`

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket