EP0560598B1 - Cache memory - Google Patents

Cache memory Download PDF

Info

Publication number
EP0560598B1
EP0560598B1 EP93301833A EP93301833A EP0560598B1 EP 0560598 B1 EP0560598 B1 EP 0560598B1 EP 93301833 A EP93301833 A EP 93301833A EP 93301833 A EP93301833 A EP 93301833A EP 0560598 B1 EP0560598 B1 EP 0560598B1
Authority
EP
European Patent Office
Prior art keywords
cam
address
virtual
input
line
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
EP93301833A
Other languages
German (de)
French (fr)
Other versions
EP0560598A1 (en
Inventor
Anthony Ian Stansfield
Catherine Louise Barnaby
Richard John Gammack
Roger Mark Shepherd
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Ltd
Original Assignee
SGS Thomson Microelectronics Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SGS Thomson Microelectronics Ltd filed Critical SGS Thomson Microelectronics Ltd
Publication of EP0560598A1 publication Critical patent/EP0560598A1/en
Application granted granted Critical
Publication of EP0560598B1 publication Critical patent/EP0560598B1/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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 cache memories and particularly to cache memories for use with virtual memory addressing.
  • Cache memories are used as small high speed buffer memories between a processor and a main memory. They may be used to hold the most active portion of a main memory in order to improve access times for those contents of the memory which are most frequently used by the processor.
  • Fully associative cache memories may consist of a content addressable memory (CAM) and a data RAM.
  • Content addressable memories (CAMs) consist of rows and columns of memory cells generally similar to RAM cells providing read and write functions but additional circuitry is provided to permit association.
  • the CAM cells are used to hold memory addresses and during an association operation an input to the CAM represents a memory address and the CAM compares the input with the addresses held in the CAM to see whether or not a match occurs and when a match is found an output signal is provided to a corresponding location in the data RAM so that a read or write operation may take place with the corresponding location in the data RAM of the cache.
  • the cells of the CAM are arranged so that each row of cells holds a memory address and that row of cells is connected by a match line to a corresponding word line of the data RAM to enable access of the data RAM in that word line when a match occurs on that match line.
  • each row of the CAM holds the full address of a corresponding main memory location and the inputs to the CAM require the full address to be input.
  • a direct mapped cache In a direct mapped cache the address of each main memory location used in the cache is divided into a first part represented by the most significant bits, usually referred to as the page address, and a second part represented by the least significant bits and usually referred to as the line in page address.
  • a RAM (called a Tag RAM) is used to hold a plurality of page addresses of memory locations in the main memory. Data is held in a data RAM as already described. However the input to the Tag RAM and the data RAM uses only the line in page part of the memory addresses.
  • the Tag RAM is accessed at the location identified by the line in page address and the RAM outputs to a comparator the stored page address from that RAM location.
  • the most significant bits of the main memory address are fed directly to the comparator to see whether or not they agree with the corresponding most significant bits of the address output by the RAM. If they agree then a cache hit is obtained and data is output from the location of the data RAM accessed by the line in page input. If no agreement is found by the comparator then access to the data RAM is prevented.
  • a set associative cache a plurality of Tag RAMs are used in parallel and the least significant bits of each input address are used to address each of the Tag RAMs in parallel as well as associated data RAMs.
  • the page address held in the addressed row of each Tag RAM is output and compared in a comparator with the most significant bits of the main memory address which are fed directly to the comparator similar to the process already described for a direct mapped cache. If the output of one of the Tag RAMs is found to agree on comparison of the most significant address bits with the main memory address then the corresponding word line of the data RAM associated with that Tag RAM is accessed.
  • virtual addresses are defined as a virtual page address together with a line or word in page address.
  • the line or word in page address may be the same for both physical and virtual addresses and the virtual aspect of the addressing is dealt with solely in the virtual page address.
  • the page addresses may be dealt with by the most significant bits of an address and the line or word in page address may be indicated by the least significant bits of the address.
  • a fully associative cache would normally require translation of the virtual page address into a physical page address before the full address to be searched by the CAM could be input to the CAM.
  • the translation of virtual page addresses to physical page addresses may be carried out by a translation lookaside buffer (TLB).
  • TLB translation lookaside buffer
  • To require the use of such a TLB to form a physical page address from a virtual page address before inputting an address to a fully associative cache does of course introduce additional delay and reduce the value of using a cache memory. For this reason caches using virtual addressing have usually been formed as a direct mapped or set associative cache.
  • the input address to the Tag RAMs and data RAMs has constituted the line or word in page address which does not require translation to a physical address.
  • the most significant bits of the virtual address forming the virtual page address are not used in the initial input to the RAMs but have been fed through a TLB to form a physical page address in parallel with the addressing operation of the RAMs by the line in page input to the RAMs. If a valid entry is found in one of the RAMs for the line-in-page address then the page address representing the physical address of the corresponding main memory location is output from the RAM to a comparator where the most significant bits of that address may be compared with the output of the TLB now representing the physical page address determined by the address translation operation.
  • the RAM accessing operation and the translation from virtual to physical page address are both carried out in parallel there is no additional delay of the type which has been necessary if virtual memory addressing is used with a fully associative cache.
  • EP Specification 0232526 shows a paged virtual cache system, using CAM cell arrays for both physical and virtual addresses as well as a data RAM. It does require a MMU separate from the cache as a backup address translation unit.
  • the invention provides a fully associative cache memory device for virtual addressing which device comprises a data RAM for holding data corresponding to selected locations in a main memory, first and second content addressable memory (CAM) cell arrays for holding respectively most and least significant bits of virtual addresses corresponding to said selected locations for which data is held in said data RAM, input circuitry for inputting two parts of a full virtual address in parallel as first and second inputs to said first and second arrays respectively in each cache access operation, output circuitry for providing first and second outputs from said first and second arrays respectively to indicate a cache hit when each of said first and second arrays holds a part of the virtual address corresponding respectively to the parts of the virtual address of said first and second inputs, first control circuitry for interconnecting said first and second outputs to said data RAM to access a selected location of said data RAM when both said first and second outputs indicate a hit, and a physical address memory holding a plurality of physical addresses of locations in said main memory corresponding to virtual addresses in said first array, and second control circuitry for interconnecting said first
  • each said virtual address comprises a page address and a line-in-page address, said first array holding a plurality of virtual page addresses and said second array holding a plurality of line-in-page addresses.
  • said physical address memory comprises a plurality of addressable storage locations each of which may be written to or read from, and said second control circuitry is arranged to access a selected storage location in the physical address memory in response to a first output including a hit signal from said first array to read a physical address from the physical address memory corresponding to the virtual address in the first array which generated the signal in said first output.
  • said first control circuitry includes gating circuitry to indicate a cache hit when both said first and second outputs include hit signals indicating location in the first and second arrays of addresses corresponding to the respective first and second inputs.
  • said second control circuitry includes gating circuitry to indicate an address translation hit when said first output includes a hit signal indicating a location in the first array of an address corresponding to the said first input.
  • said physical address memory comprises a CAM operable both as a RAM when accessed by said first array and operable as a CAM in response to a physical address input.
  • said physical address memory comprises a CAM having an input for receiving a physical address and a CAM output connected to said first control circuitry whereby said data RAM may be accessed by virtual addressing of said first and second arrays or by physical addressing of said physical address memory and said second array.
  • each of said first and second arrays, data RAM and physical address memory comprise storage locations arranged in rows, each row in the data RAM being associated with a corresponding row in each of the first and second arrays and physical address memory.
  • each row of storage locations in one of the arrays of CAM cells includes in addition to storage locations for bits of a virtual address, at least one location for a status bit for use in protecting the corresponding main memory location.
  • one or both of said first and second arrays includes circuitry having a don't care input operable to cause CAM cells connected to that don't care input to provide a match with the respective first or second input regardless of the data stored in the cell.
  • each CAM cell has a match line for each row of cells, circuitry for precharging each match line, and control circuitry for each column of cells, the control circuitry having control inputs to initiate an associate operation for the cells of that column, each cell having discharge circuitry coupled to said control circuitry for discharging the match line by any cell in the column which has data stored corresponding to data input to that column during an associate operation.
  • each column of cells in said first array of CAM cells is connected to control circuitry having a said don't care input.
  • Figure 1 shows a known arrangement of a fully associative cache comprising a content addressable memory (CAM) 11 together with a data RAM 12.
  • the CAM 11 comprises a plurality of CAM cells (which may be of the form shown in Figure 8) arranged in rows and columns operable in known manner under the control of logic circuitry 13 to carry out read, write or test operations in known manner.
  • the test operation is the association operation referred to above.
  • Each row of cells in the CAM is arranged to hold the address, of a memory location in a main memory and each row of the CAM is connected by a respective match line 14 (only one of which is shown) through buffer logic 15 to a corresponding word line 16 (only one of which is shown) of a corresponding row of cells in the data RAM 12.
  • the data RAM 12 comprises a plurality of rows and columns of conventional RAM cells operable under the control of a column decoder 17 and read and write logic 18.
  • a memory location address is input on a bus 20 through the control logic 13 to the CAM 11.
  • the CAM 11 carries out the association operation referred to above to test whether or not any row in the CAM holds an address matching the address which is input on line 20.
  • the test circuitry checks whether or not any row in the CAM holds an address matching the full address input at 20. If a match is found in any row of the CAM then the corresponding match line 14 provides a signal to the buffer logic 15.
  • the buffer logic 15 consists of a plurality of OR gates so that an output 22 is provided indicating a cache hit if any match line 14 is operated to indicate that a match has been found in the CAM 11.
  • the word lines in the RAM 12 do correspond strictly with correspondingly located rows in the CAM 11 so that when a match is found on any one line 14 the uniquely corresponding word line in the RAM 12 is accessed to allow input or output of data to the RAM through bus 26 under control of the logic 18.
  • Each row of the RAM 12 may hold a plurality of words in each line and consequently the column decoder 17 may be operated by a signal on bus 27 to select a selected word in the line of data held in the accessed word line of the RAM.
  • the addresses held in the CAM 11 are physical addresses corresponding to memory locations in the main memory and consequently a virtual addressing system would require translation of the address from the virtual address to the physical address before an input could be supplied on bus 20 to the CAM 11.
  • a conventional direct mapped cache is used with address translation to permit virtual memory addressing.
  • the virtual address used comprises a virtual page number together with a line in page address.
  • the line in page address does not need translation but is the same in both the virtual address and the physical address.
  • the virtual address which is to be used as an input for the cache is split into two.
  • the virtual page address (which is indicated by the most significant bits) is fed on line 30 to a translation lookaside buffer (TLB) of known construction. If that virtual address is located in the buffer a TLB hit is indicated on output line 32.
  • TLB translation lookaside buffer
  • the function of the translation lookaside buffer 31 is to convert the virtual page number into a corresponding physical page number which is output on bus 33 to a comparator 34.
  • the cache includes a RAM 35 holding the physical page addresses of each of the memory locations for which data is held in corresponding locations in a data RAM 36.
  • the RAM 35 holding the page addresses is referred to as a Tag RAM.
  • the line in page address which is represented by the least significant bits of the virtual address is supplied in parallel on lines 39 and 40 to the Tag RAM 35 and data RAM 36 respectively.
  • the inputs 39 and 40 represent RAM addresses and are decoded to access the corresponding locations of the Tag RAM 35 and data RAM 36.
  • the location addressed in the Tag RAM causes an output on bus 42 of the physical page address of the memory location held at the address location of the Tag RAM.
  • the data corresponding to that physical address is output on bus 43 from the data RAM 36.
  • the data on bus 43 is held in a buffer 44 and may be output or not depending on the output of an AND gate 45 on an enable line 46.
  • the comparator 34 compares the most significant bits of the physical address on line 42 with the physical page number supplied on line 33 from the TLB 31. If the comparator 34 determines that the location of the Tag RAM 35 which has been addressed does indeed correspond to the correct physical page number determined by the TLB 31 then it provides a signal on line 41 to the AND gate 45. To ensure that the data RAM is accessed only when a TLB hit occurs, the AND gate 45 receives a second input from line 32 so that an enable signal is provided on the line 46 only when a TLB hit occurs on line 32 and the comparator 34 indicates correspondence on lines 33 and 42.
  • An enable signal on line 46 causes the buffer 44 to output the data on bus 48 and a cache hit is signalled on line 49 from the AND gate 45.
  • a cache miss will occur either where the Tag RAM 35 holds the correct line in page address but the page number of the location held in the Tag RAM 35 does not correspond with the physical page number determined by the TLB 31, or where the Tag RAM 35 does not hold a valid entry for the correct line in page address.
  • Figures 3, 4 and 5 all relate to fully associative caches in accordance with the invention which permit address translation from a virtual page to a physical page without involving the delay of making an address translation before inputting the address to be searched into the cache. They also all provide a dual function for a virtual page CAM in searching for a cache hit and effecting address translation.
  • the cache consists of a data RAM 50 which is of similar construction and operation as the RAM 12 described with reference to Figure 1.
  • the CAM 11 of Figure 1 has been replaced by two separate CAMs, one CAM 51 holding virtual page numbers and the other CAM 52 holding line in page numbers. It will be understood that references to line in page may also cover word in page. In some instances the contents of each full line may be considered as a single word or where it is necessary to access only part of a line then column decode circuitry may be used as explained in Figure 1 with reference to circuitry 17 and the input 27 of Figure 1.
  • a physical page RAM 53 is provided.
  • the construction of the physical page RAM 53 may be similar to that of the data RAM 50 thereby consisting of a plurality of rows and columns of conventional RAM cells operable for read or write operations by energisation of an appropriate word line.
  • the virtual address used may consist of a virtual page number 30 and a line in page number 39 similar to that described with reference to Figure 2.
  • the virtual page number 30 is input to the virtual page CAM 51 whereas the line in page number 39 is input to the line in page CAM 52.
  • the virtual page number 30 and line in page number 39 form the full address indication used in virtual addressing for the memory location required.
  • the inputs 30 and 39 are fed simultaneously to the respective CAMs which carry out test operations for association to determine whether any of the line in page numbers held in the CAM 52 match the input 39 and whether any of the virtual page numbers held in CAM 51 correspond with the virtual page input 30. If a match is found in any of the rows of cells in the respective CAMs 51 and 52 then an appropriate match output is provided on the matching line of the CAM. It will be understood that there are a plurality of possible match lines in each of the CAMs 51 and 52 each line corresponding to one row of CAM cells, each of the rows holding a line in page number in CAM 52 and a virtual page number in CAM 51.
  • each match line 54 in CAM 52 is indicated for CAM 52 and a single match line 55 for CAM 51 as for simplicity only the single line where a match occurred has been indicated.
  • Each of the possible match lines 55 in CAM 51 are connected by a respective line 56 to a corresponding AND gate 57 forming part of a buffer similar to buffer 15 of Figure 1.
  • each match line 54 in CAM 52 is connected to its respective AND gate 57.
  • the output of each AND gate 57 is connected to a corresponding word line 58 in the data RAM 50.
  • AND gate 57 Although only one AND gate 57 is shown it will be understood that there are a plurality of AND gates 57 each corresponding to one of the rows of CAM cells in each of the CAMs 51 and 52 and the output of each of the AND gates 57 is connected through a single OR gate 59 to provide a cache hit output 52 when both the line in page number and virtual page number have been located in matching rows of the CAMs 51 and 52. It will therefore be understood that data in the data RAM 50 may be accessed by energisation of the appropriate word line 58 so as to input or output data on bus 26 when the virtual page number and line in page number have both been found in corresponding lines of the CAMs 51 and 52 connected to the same AND gate 57.
  • the effect of using the two separate CAMs 51 and 52 with match lines connected through respective AND gates 57 gives an operation generally similar to that of the use of a single CAM 11 described in Figure 1. In other words it operates as a fully associative cache carrying out association or test operation on two parts of the full virtual address in parallel. However that part of the virtual address which represents the virtual page number provides a separate output from any match line 55 where a match has been found so as to access a corresponding word line 60 in the physical page RAM 53.
  • Each of the possible match lines from the CAM 51 is connected through buffer circuitry 61 to a respective word line 60 of the RAM 53 and through a common OR gate 62 to indicate when a hit has been found in the virtual page CAM 51.
  • each row of cells in the physical page RAM 53 contains the physical page number of a memory location corresponding to the virtual page numbers in the virtual page CAM 51.
  • the data in the physical page RAM 53 is arranged on a row by row basis aligned with corresponding rows of the virtual page CAM 51. In this way, when a match is found on any one line 55 in the virtual page CAM 51 the corresponding word line 60 is activated in the RAM 53 so as to provide a physical page number as an output on line 33.
  • This is equivalent to having a TLB hit in the circuitry described with reference to Figure 2 thereby indicating that an address translation has been successful.
  • a cache hit may be indicated by an output on line 22 indicating that a match has been obtained on the same line in the virtual page CAM 51 and the line in page CAM 52.
  • access for data on line 26 is provided for the corresponding word line 58 in the data RAM 50 and the result of the cache access is obtained with no time penalty for the address translation which is simultaneously carried out by the physical page RAM 53.
  • the access operation may result in a cache miss by failure to have match outputs on the same line in both the virtual page CAM 51 and the line in page CAM 52.
  • the dual function of the one virtual page CAM 51 in determining both cache hits and TLB hits provides speed of operation in effecting both functions simultaneously and also avoids the need for additional circuitry which would arise if separate CAMs were used for the two functions.
  • Figure 4 shows a modification of the arrangement shown in Figure 3.
  • the data RAM 50, line in page CAM 52 and virtual page CAM 51 are the same as described with reference to Figure 3.
  • the physical page RAM 53 is now replaced by a physical page CAM 65.
  • Each row of cells in the physical page CAM has a word line 60 enabling read and write access to the row of cells as well as a match line 66 which is operable to indicate when a match is found between the content of that row of cells and the input to the CAM 65.
  • the match lines 55 of the virtual page CAM 51 are connected along respective lines 56 through respective changeover switches 67 to respective AND gates 57.
  • switch 67 forms one of a bank of switches each for a respective match line 55 and the switches 67 are all operated under common control to determine their common setting.
  • each of the switches 67 is set to connect the respective output line 56 from the virtual page CAM 51 to its respective AND gate 57.
  • the system then operates in exactly the same manner as has already been described in Figure 3.
  • a cache hit will cause data to be output or input in the RAM 50 at the location identified by the match lines 55 and 54 in the CAMs 51 and 52.
  • a word line 60 in the physical page CAM will enable output at 33 of the physical address corresponding to the virtual address where the match occurred in the virtual page CAM 51.
  • this example can also be used for physical addressing instead of virtual addressing.
  • line 33 is bidirectional and the physical page number is input at 33 to the physical page CAM 65 and the line in page address is input at 39 to the line in page CAM 52.
  • All switches 67 are now set to interconnect possible match lines of the CAM 65 with respective AND gates 57 and disconnect lines 56. If the physical address is in the CAM 65 then a match will occur on an appropriate match line 66 and this will provide an output on line 68 through the switch 67 to the respective AND gate 57. Provided a match also occurred on the aligned match line 54 in the line in page CAM 52 this will be fed to the same AND gate 57 and thereby cause activation of the word line 58 of the corresponding line in the data RAM 50.
  • This facility for physical addressing in addition to virtual addressing with the arrangement of Figure 4 is particularly applicable to achieving cache consistency. It can be used to avoid more than one virtual address in the cache referring to the same physical address in the main memory.
  • a virtual addressing scheme may be used when one physical memory location is allocated to more than one virtual location. In the present examples the cache may not include more than one of the virtual locations at any one instant. If a cache access operation using a virtual address has resulted in a cache miss the physical address will either be obtained by a TLB hit from the physical page CAM 65 or alternatively by use of the backup translation mechanism. In either case the physical address is achieved and this can then be input into the physical page CAM 65 through the input 33.
  • a match in the physical page CAM 65 will then indicate that the physical address is held in the cache provided a corresponding match was also found in the line in page CAM 52.
  • the entry in the virtual page CAM 51 can then be modified to reflect the virtual address used to access the data.
  • the virtual page CAM 51 and line in page CAM 52 each have word lines for each row of cells to allow writing of data into these CAMs.
  • Buffer circuitry similar to that marked 15 in Figure 1 is used to interconnect outputs of the gates 57 in Figure 4 with corresponding word lines in the virtual page CAM 51 to permit rewriting of virtual page address after said physical addressing.
  • the use of physical addressing is also useful in achieving bus snooping.
  • Figure 5 is a modification of that shown in Figure 4 and similar reference numerals have been used for similar parts.
  • the data RAM 50 and line in page CAM 52 are the same as previously described with reference to Figures 3 and 4.
  • the column of AND gates 57 connected through a common OR gate 59 to indicate a cache hit are as previously described.
  • the separate physical page CAM 65 and virtual page CAM 51 have been replaced by a single CAM 70 having common rows of CAM cells each row covering the dual function of a virtual page CAM in the right hand half and a physical page CAM in the left hand half as indicated respectively by numerals 51 and 65 in Figure 5.
  • Each row of CAM cells has a word line to permit read and write access to the row of cells as well as a match line to provide a suitable output when the contents of that row of cells corresponds with the input during an association mode of operation of the CAM.
  • a typical match line is indicated at 71 and a typical corresponding word line at 72.
  • the system may be used for either physical addressing or virtual addressing in a manner similar to that described for Figure 4.
  • the right hand half of the CAM 51 has a don't care input 73 in addition to the virtual page input 30.
  • the left hand side of the CAM 65 has a don't care input 74 as well as physical page input and output 75 and 76.
  • the two don't care inputs 73 and 74 to the respective halves of the CAM 70 are controlled by a virtual access input 77 connected directly to the input 74 and through an inverter 78 to input 73.
  • a virtual access input is supplied at input 77 causing a don't care input to be applied at 74 but not at input 73.
  • the function of the don't care inputs will be described in more detail with reference to Figures 10, 11 and 12. However the effect of applying a don't care input is to cause the CAM cells in a column to which the don't care input is applied to provide a match signal regardless of the content of that cell.
  • each of the match lines in the composite CAM 70 will provide matching signals and provided the physical address which is input at 75 is found in one of the rows of CAM cells in the left hand side of the CAM 70 then a match will be obtained on that match line 71.
  • a match is found on the aligned row in the line in page CAM 52 a second match output will be provided to the appropriate AND gate 57 causing access of the corresponding word line 58 of the data RAM 50.
  • the line in page CAM does not provide a match signal but a match is found in the composite CAM 70 then the signal provided on the match line 71 in the composite CAM 70 will be fed through the buffer circuitry 61 enabling access to the word line 72 of the row of CAM cells in which the match occurs and a TLB hit will be provided through the common OR gate 62. During virtual addressing this will enable address translation to occur between virtual and physical page addresses with the physical address being read on output line 76.
  • each of the line in page CAM 52, virtual page CAM 51 and physical page CAM 65 may include additional data beyond the line and page data already discussed.
  • Such an arrangement is shown diagrammatically in Figure 6 and may be applied to the contents of the CAMs in either Figures 4 or 5.
  • each of the CAMs includes an additional column of CAM cells to include a data valid flag.
  • the additional column is marked 80 for the line in page CAM 52, 81 for the virtual page CAM 51 and 82 for the physical page CAM 65. This consists of an additional CAM cell at the left hand side of each row of CAM cells in the CAM which may be set to a value to indicate whether the data in that CAM location is valid.
  • the remaining CAM cells contain data indicating the line in page number as marked at 83.
  • the cells holding the virtual page number are indicated by an array of rows and columns marked 84.
  • one or more columns of cells may be provided for a process identifier marked 85 so that each. row of cells indicating a virtual page number may be supplemented by one or more cells at the left hand end in columns 85 indicating the process using that virtual page number.
  • the CAM 51 also includes a column of CAM cells 86 used for protection purposes as will be described below.
  • the array of cells holding the physical page number is marked 87 and a column of additional CAM cells 88 is used to indicate whether the page identified by each row is indeed a cacheable page.
  • the valid cells in each of the columns 80, 81 and 82 can be set to a value such that a match on the line incorporating that cell is normally obtainable (provided a match is obtained on the remaining cells in the row) unless the valid status flag is set to an invalid value when that cell will always cause a mismatch on the row.
  • column 88 will have a cell indicating a noncacheable status in the row which contains the physical address of that memory location.
  • a TLB miss will occur due to the absence of the page in the cache.
  • the relevant address translation will be obtained from a page table and a cache line can then be assigned to this memory location.
  • the line in page CAM will be marked with an invalid status in column 80 for that memory location. Subsequent access operations to the cache using that address will always give a cache miss due to the invalid status associated with the line in page number for that entry.
  • the virtual page CAM 51 will still be capable of providing a TLB hit thereby accessing the physical page CAM 65 and providing the physical page number.
  • the cacheable status in column 88 may also be changed to indicate that the memory location is a noncacheable location so that this information may be passed to the main memory system.
  • columns 88 and 80 may be adjusted to indicate whether or not the entry is a cacheable entry or not.
  • the protection column 86 indicated in Figure 6 may be used to provide memory protection functions.
  • each page in a TLB may have an indication that the contents of the page are available for read, write or execute operations or restrictions may be placed on which of these operations may be effected on the contents of that page. It may be desired that certain pages cannot be written to.
  • Each cell in the protection column 86 may be set to a value which normally prevents a match occurring on the line including that cell. It is however necessary in this case to provide for operation of don't care inputs so that when it is necessary to disregard the contents of the cells in column 86 matches can be obtained from appropriate lines regardless of the contents of that column 86.
  • column 86 may have a value 1 into the write status bit of the appropriate lines in the virtual page CAM 51. For pages which may be written to this value will be set to zero in column 86.
  • the input 30 to the virtual page CAM indicates a write data requirement then the contents of the column 86 will be taken into account and rows which have a value 1 in column 86 will not be capable of giving a match so that writing will be prevented in those pages. If however the input at line 30 is not a write input so that a read is to occur then a don't care test condition is driven into the CAM cells in column 86 so that an association operation is carried out to find a matching line while disregarding the contents of the cells in column 86.
  • test conditions to drive CAM cells in a selected column to a don't care state may be used for purposes other than memory protection.
  • a variety of functions which require searching only part of the CAM contents can make use of don't care states. For example all cache entries referring to a particular process can be identified by searching the virtual page CAM 51 for the process identifiers in column 85 by arranging that all CAM cells in columns 81, 86 and 84 are driven to a don't care state such that matches will be found wherever the process identifiers in column 85 agree with the process identifier input to the virtual page CAM. This way of identifying all entries relating to a particular process can be of assistance in deleting a process from the cache by finding the relevant entries and clearing their valid bits in column 81 of the virtual page CAM 51.
  • the CAMs used in Figures 4 and 5 may all include CAM cells with test circuitry to drive cells to don't care states so that selection of some only of the cells for use in the association operation allows different functions to be achieved.
  • the embodiments of Figures 4 and 5 may be implemented with a single CAM, part of each row representing physical pages, part representing virtual pages and part representing line in page numbers. To look for a cache hit, the cells representing physical pages in each row must be driven to a don't care state allowing the search to be done on the other two parts of the row. To look for a TLB hit rather than a cache hit, the cells representing physical pages and the cells representing the line in page numbers must be driven to a don't care state thereby selecting only the virtual page cells for the association operation.
  • FIG. 7 is part of an array of CAM cells 90 arranged in rows and columns which may be used in the embodiments already described with reference to Figures 3 and 4.
  • CAM arrays of this type have the facility for storing part of a memory address into the CAM which is referred to as "store tag” as well as reading the contents of each cell which is referred to as “retrieve tag” or an associate operation where the contents of the CAM cells are tested to see if they contain part of an address or tag corresponding to address data which is input to the CAM.
  • each row of CAM cells 90 is connected by a common word line 91 and match line 92.
  • Each match line 92 is connected through a control transistor 93 to a precharge line 94 for precharging the match lines when an associate operation is carried out.
  • Each column of CAM cells 90 is connected to read/write logic 95 having a bidirectional input and output 96 for the input or output of an address tag.
  • Each logic circuit 95 is connected by two lines 97 and 98 representing Bit and Bitbar respectively, to each of the CAM cells 90 in that column.
  • Each of the read/write logic circuits 95 is connected to a common retrieve tag control line 100 as well as a common store tag control line 101 and a common associate line 102. The operation of this arrangement will be described in more detail with reference to Figures 8 and 9.
  • Figure 8 shows the construction of each CAM cell 90.
  • the cell consists of a latch 103 formed by two inverters 104 and 105 connected in parallel and in opposite directions between nodes 106 and 107.
  • Node 106 is connected to the Bitbar line 98 through a pass transistor 108 having its gate coupled to the word line 91.
  • node 107 is connected to the Bit line 97 through a pass transistor 109 having its gate coupled to the word line 91.
  • the latch 103 operates in the manner of a conventional RAM cell in that when the word line 91 is charged the pass transistors 108 and 109 cause the latch 103 to adopt one of two stable states depending on the signals on lines 97 and 98 so that either node 106 is high with node 107 low or node 107 is high with node 106 low.
  • each cell 90 may selectively discharge the match line to earth 110.
  • Each cell provides two sets of series transistors to interconnect the match line 92 with earth 110. As shown in Figure 8 two transistors 111 and 112 form one such connection to earth and two further transistors 113 and 114 provide a second series connection between the match line 92 and earth 110.
  • Transistor 111 has its gate connected to node 106 so that it is turned on when node 106 is high.
  • Transistor 112 has its gate connected to the Bitbar line 98 so that this transistor is turned on when the signal is high on line 98.
  • transistor 113 has its gate connected to node 107 and is therefore turned on when node 107 is high.
  • Transistor 114 has its gate connected to the Bit line 97 and is turned on when the signal is high on line 97.
  • the match line 92 can in this way be discharged if the signals on lines 97 and 98 during an associate operation have values corresponding to those already stored in the cell 90.
  • the control circuitry 95 for operating the cell 90 is shown in Figure 9. Similar signal lines in Figure 9 to those used in Figure 7 have similar reference numerals.
  • the control circuitry includes an OR gate 115 having inputs 101 and 102.
  • An exclusive OR gate 116 has inputs from line 102 and the input 96.
  • a sense amplifier 117 controlled by signal line 100 receives inputs from the bit line 97 and Bitbar line 98.
  • the output of the gate 116 is provided through a pass transistor 118 to the Bit line 97.
  • the output of the gate 116 is also provided through an inverter 119 and a pass transistor 120 to the Bitbar line 98.
  • the transistors 118 and 120 are controlled by connecting their gates to the output of the OR gate 115.
  • the associate input 102 has a value 0 as does the retrieve tag input 100.
  • the store tag input has a value 1 and thereby causes the OR gate 115 to switch on the two transistors 118 and 120.
  • the tag to be stored is input at 96 and forms one input to the exclusive OR gate 116 which acts as a selectable inverter. While the associate input 102 has a value 0 gate 116 transmits the input from 96 with no inversion.
  • Charging of the required word line 91 causes stored values at nodes 107 and 106 to be transmitted through the Bit and Bitbar lines 97 and 98 to the amplifier 117 which thereby provides an output through 96 representing the value which was stored in the cell.
  • the OR gate 115 is turned on as input 102 has the value 1 and input 101 has the value 0. This causes the two transistors 118 and 120 to be turned on.
  • the input 102 to the exclusive OR gate 116 now has the value 1 which causes inversion by the gate 116 of any input at 96. This then causes the Bit line 97 to have a signal which is the inverse of that input at 96 and Bitbar line 98 has a signal which is the same as the input at 96.
  • the input at 96 represents a value 0 during an associate operation then the values on lines 97 and 98 will be reversed so that the value on line 97 will be high and the value on line 98 will be low.
  • the match line 92 will be discharged as transistor 113 will be switched on by the stored high value at node 107 and by the high value on line 97 causing transistor 114 to be switched on thereby providing a discharge route between the match line 92 and earth 110. It will therefore be seen that during an associate operation cells 90 cause discharge of the match line 92 only where the input at input 96 does not correspond with the stored information in the cell. Where correspondence is found the match line remains charged.
  • each of the read/write control logic circuits 95 is connected to the column of CAM cells 90 by two additional lines 121 and 122 called Test and Testbar respectively in addition to the Bit and Bitbar lines 97 and 98.
  • Each of the read/write logic circuits 95 also has a don't care input 123.
  • each cell 90 has a latch circuit 103 having the same components as that already described with reference to Figure 8 and the operation of storing tags or reading tags from the cells is the same as previously described where the appropriate signals are fed in or out of the Bit and Bitbar lines 97 and 98 when the appropriate word line 91 is energised.
  • the associate operation is in this case carried out by use of the Test and Testbar lines 121 and 122 which are connected to the gates of transistors 112 and 114.
  • the control of signals on the Bit and Bitbar lines 97 and 98 and test and test bar lines 121 and 122 are controlled by the circuitry shown in Figure 12.
  • the store tag and retrieve tag operations are controlled by signals on the Bit and Bitbar lines 97 and 98 as previously described with reference to Figure 9 although in this case the transistors 118 and 120 are controlled directly by the store tag input 101 without the need for the OR gate 115 referred to in Figure 9.
  • the output of data on line 96 a by the amplifier 117 is as previously described.
  • the input of data on line 96 b is fed through the inverter 119 to the Bit and Bitbar lines 97 and 98 as previously described.
  • the don't care input 123 is fed through an inverter 124 which provides an output to each of two AND gates 125 and 126.
  • the second AND gate 125 has a second input from the store tag input 96 b .
  • the AND gate 126 has as its second input the store tag input 96 b after passing through an inverter 127.
  • an input 1 is input at 123 which due to the inverter 124 provides zero inputs to both the AND gates 125 and 126. This ensures that zero values occur on both the Test and Testbar lines 121 and 122. As these lines 121 and 122 control the operation of both transistors 112 and 114 both those transistors are turned off thereby preventing discharge of the match line 92. This ensures that cells in that column do not cause any discharge of the match line regardless of the contents of the cells in that column. When the column of cells is operated with a zero input on the don't care input 123, this causes the inverter 124 to provide a value 1 to both the AND gates 125 and 126.
  • the values which are then output on the Test lines 121 and 122 depend on the input value of store data on line 96 b . If the input 96 b is zero then the test line 121 has the value zero and the Testbar 122 has the value 1.
  • the signal values on lines 121 and 122 are reversed if the input on line 96 b is reversed. In this way the match lines 92 when precharged before an associate operation may be discharged to earth 110 to either the pair of transistors 111, 112 or 113 and 114 if the value stored in the CAM cell does not match that which is input at 96 b and supplied on lines 121 and 122.
  • the operation of the transistors 111, 112, 113 and 114 to discharge the match lines 92 is now the same in response to the signals on lines 121 and 122 as was previously described with respect to the signals on lines 97 and 98.

Description

The invention relates to cache memories and particularly to cache memories for use with virtual memory addressing.
Cache memories are used as small high speed buffer memories between a processor and a main memory. They may be used to hold the most active portion of a main memory in order to improve access times for those contents of the memory which are most frequently used by the processor.
Known cache memories generally fall into one of three types. They may be fully associative, set associative or direct mapped. Fully associative cache memories may consist of a content addressable memory (CAM) and a data RAM. Content addressable memories (CAMs) consist of rows and columns of memory cells generally similar to RAM cells providing read and write functions but additional circuitry is provided to permit association. The CAM cells are used to hold memory addresses and during an association operation an input to the CAM represents a memory address and the CAM compares the input with the addresses held in the CAM to see whether or not a match occurs and when a match is found an output signal is provided to a corresponding location in the data RAM so that a read or write operation may take place with the corresponding location in the data RAM of the cache. The cells of the CAM are arranged so that each row of cells holds a memory address and that row of cells is connected by a match line to a corresponding word line of the data RAM to enable access of the data RAM in that word line when a match occurs on that match line. In a fully associative cache each row of the CAM holds the full address of a corresponding main memory location and the inputs to the CAM require the full address to be input.
In a direct mapped cache the address of each main memory location used in the cache is divided into a first part represented by the most significant bits, usually referred to as the page address, and a second part represented by the least significant bits and usually referred to as the line in page address. A RAM (called a Tag RAM) is used to hold a plurality of page addresses of memory locations in the main memory. Data is held in a data RAM as already described. However the input to the Tag RAM and the data RAM uses only the line in page part of the memory addresses. The Tag RAM is accessed at the location identified by the line in page address and the RAM outputs to a comparator the stored page address from that RAM location. The most significant bits of the main memory address are fed directly to the comparator to see whether or not they agree with the corresponding most significant bits of the address output by the RAM. If they agree then a cache hit is obtained and data is output from the location of the data RAM accessed by the line in page input. If no agreement is found by the comparator then access to the data RAM is prevented.
In a set associative cache a plurality of Tag RAMs are used in parallel and the least significant bits of each input address are used to address each of the Tag RAMs in parallel as well as associated data RAMs. The page address held in the addressed row of each Tag RAM is output and compared in a comparator with the most significant bits of the main memory address which are fed directly to the comparator similar to the process already described for a direct mapped cache. If the output of one of the Tag RAMs is found to agree on comparison of the most significant address bits with the main memory address then the corresponding word line of the data RAM associated with that Tag RAM is accessed.
It will therefore be understood that it is only in a fully associative cache that all bits of the memory location address are required as an initial input in order to determine whether the cache contains data corresponding to that memory location. The other types of cache only require as an initial input some of the bits of the memory location address.
In many applications it is desirable to use virtual memory addressing whereby a process executes instructions referring to virtual memory locations. Conveniently virtual addresses are defined as a virtual page address together with a line or word in page address. Commonly the line or word in page address may be the same for both physical and virtual addresses and the virtual aspect of the addressing is dealt with solely in the virtual page address. Conveniently the page addresses may be dealt with by the most significant bits of an address and the line or word in page address may be indicated by the least significant bits of the address. When executing a process using virtual addresses it is necessary to translate the virtual page address into a physical page address corresponding to an actual physical location in the main memory. If virtual addressing is to be used with a cache memory it will be understood that a fully associative cache would normally require translation of the virtual page address into a physical page address before the full address to be searched by the CAM could be input to the CAM. The translation of virtual page addresses to physical page addresses may be carried out by a translation lookaside buffer (TLB). To require the use of such a TLB to form a physical page address from a virtual page address before inputting an address to a fully associative cache does of course introduce additional delay and reduce the value of using a cache memory. For this reason caches using virtual addressing have usually been formed as a direct mapped or set associative cache. In this way the input address to the Tag RAMs and data RAMs has constituted the line or word in page address which does not require translation to a physical address. The most significant bits of the virtual address forming the virtual page address are not used in the initial input to the RAMs but have been fed through a TLB to form a physical page address in parallel with the addressing operation of the RAMs by the line in page input to the RAMs. If a valid entry is found in one of the RAMs for the line-in-page address then the page address representing the physical address of the corresponding main memory location is output from the RAM to a comparator where the most significant bits of that address may be compared with the output of the TLB now representing the physical page address determined by the address translation operation. As the RAM accessing operation and the translation from virtual to physical page address are both carried out in parallel there is no additional delay of the type which has been necessary if virtual memory addressing is used with a fully associative cache.
EP Specification 0232526 shows a paged virtual cache system, using CAM cell arrays for both physical and virtual addresses as well as a data RAM. It does require a MMU separate from the cache as a backup address translation unit.
It is an object of the present invention to provide an improved cache which permits virtual addressing without the additional delay of requiring address translation prior to searching the cache for a corresponding entry.
The invention provides a fully associative cache memory device for virtual addressing which device comprises a data RAM for holding data corresponding to selected locations in a main memory, first and second content addressable memory (CAM) cell arrays for holding respectively most and least significant bits of virtual addresses corresponding to said selected locations for which data is held in said data RAM, input circuitry for inputting two parts of a full virtual address in parallel as first and second inputs to said first and second arrays respectively in each cache access operation, output circuitry for providing first and second outputs from said first and second arrays respectively to indicate a cache hit when each of said first and second arrays holds a part of the virtual address corresponding respectively to the parts of the virtual address of said first and second inputs, first control circuitry for interconnecting said first and second outputs to said data RAM to access a selected location of said data RAM when both said first and second outputs indicate a hit, and a physical address memory holding a plurality of physical addresses of locations in said main memory corresponding to virtual addresses in said first array, and second control circuitry for interconnecting said first output of said first array to said physical address memory to access a selected location of the physical address memory when said first output includes a hit signal indicating that the first array holds a part of the virtual address corresponding to the part of the virtual address of said first input.
Preferably each said virtual address comprises a page address and a line-in-page address, said first array holding a plurality of virtual page addresses and said second array holding a plurality of line-in-page addresses.
Preferably said physical address memory comprises a plurality of addressable storage locations each of which may be written to or read from, and said second control circuitry is arranged to access a selected storage location in the physical address memory in response to a first output including a hit signal from said first array to read a physical address from the physical address memory corresponding to the virtual address in the first array which generated the signal in said first output.
Preferably said first control circuitry includes gating circuitry to indicate a cache hit when both said first and second outputs include hit signals indicating location in the first and second arrays of addresses corresponding to the respective first and second inputs.
Preferably said second control circuitry includes gating circuitry to indicate an address translation hit when said first output includes a hit signal indicating a location in the first array of an address corresponding to the said first input.
Preferably said physical address memory comprises a CAM operable both as a RAM when accessed by said first array and operable as a CAM in response to a physical address input.
Preferably said physical address memory comprises a CAM having an input for receiving a physical address and a CAM output connected to said first control circuitry whereby said data RAM may be accessed by virtual addressing of said first and second arrays or by physical addressing of said physical address memory and said second array.
Preferably each of said first and second arrays, data RAM and physical address memory comprise storage locations arranged in rows, each row in the data RAM being associated with a corresponding row in each of the first and second arrays and physical address memory.
Preferably each row of storage locations in one of the arrays of CAM cells includes in addition to storage locations for bits of a virtual address, at least one location for a status bit for use in protecting the corresponding main memory location.
Preferably one or both of said first and second arrays includes circuitry having a don't care input operable to cause CAM cells connected to that don't care input to provide a match with the respective first or second input regardless of the data stored in the cell.
Preferably each CAM cell has a match line for each row of cells, circuitry for precharging each match line, and control circuitry for each column of cells, the control circuitry having control inputs to initiate an associate operation for the cells of that column, each cell having discharge circuitry coupled to said control circuitry for discharging the match line by any cell in the column which has data stored corresponding to data input to that column during an associate operation.
Preferably each column of cells in said first array of CAM cells is connected to control circuitry having a said don't care input.
It will be seen that preferred embodiments use one virtual page CAM for the dual function of determining if a cache hit arises and effecting an address translation from virtual to physical page number.
Some embodiments of the invention will now be described by way of example and with reference to the accompanying drawings in which:
  • Figure 1 is a block diagram of a fully associative cache not embodying the present invention,
  • Figure 2 is a block diagram of a direct mapped cache using virtual addressing, not in accordance with the present invention,
  • Figure 3 is a block diagram of a fully associative cache using virtual addressing in accordance with one embodiment of the present invention,
  • Figure 4 is a block diagram of a different embodiment of the present invention using virtual addressing with a fully associative cache,
  • Figure 5 is a block diagram of a further embodiment of the invention using virtual addressing with a fully associative cache,
  • Figure 6 shows more details of part of the embodiment shown in Figure 4,
  • Figure 7 shows part of an array of CAM cells and CAM control logic for use with the embodiments of any of Figures 3, 4 or 5,
  • Figure 8 shows more detail of a CAM cell for use in Figure 7,
  • Figure 9 shows more detail of the control logic used in the CAM array of Figure 7,
  • Figure 10 shows an alternative to the array of Figure 7 which may be used with the embodiments of any of Figures 3, 4 or 5 including the use of don't care inputs,
  • Figure 11 shows more detail of a single CAM cell for use in Figure 10, and
  • Figure 12 shows more detail of the control logic used for the CAM cells of Figure 10.
  • Figure 1 shows a known arrangement of a fully associative cache comprising a content addressable memory (CAM) 11 together with a data RAM 12. The CAM 11 comprises a plurality of CAM cells (which may be of the form shown in Figure 8) arranged in rows and columns operable in known manner under the control of logic circuitry 13 to carry out read, write or test operations in known manner. The test operation is the association operation referred to above. Each row of cells in the CAM is arranged to hold the address, of a memory location in a main memory and each row of the CAM is connected by a respective match line 14 (only one of which is shown) through buffer logic 15 to a corresponding word line 16 (only one of which is shown) of a corresponding row of cells in the data RAM 12. The data RAM 12 comprises a plurality of rows and columns of conventional RAM cells operable under the control of a column decoder 17 and read and write logic 18. In operation a memory location address is input on a bus 20 through the control logic 13 to the CAM 11. In a test operation the CAM 11 carries out the association operation referred to above to test whether or not any row in the CAM holds an address matching the address which is input on line 20. As this is a fully associative cache the full address of the required memory location is input at 20 and the test circuitry checks whether or not any row in the CAM holds an address matching the full address input at 20. If a match is found in any row of the CAM then the corresponding match line 14 provides a signal to the buffer logic 15. The buffer logic 15 consists of a plurality of OR gates so that an output 22 is provided indicating a cache hit if any match line 14 is operated to indicate that a match has been found in the CAM 11. The word lines in the RAM 12 do correspond strictly with correspondingly located rows in the CAM 11 so that when a match is found on any one line 14 the uniquely corresponding word line in the RAM 12 is accessed to allow input or output of data to the RAM through bus 26 under control of the logic 18. Each row of the RAM 12 may hold a plurality of words in each line and consequently the column decoder 17 may be operated by a signal on bus 27 to select a selected word in the line of data held in the accessed word line of the RAM. The addresses held in the CAM 11 are physical addresses corresponding to memory locations in the main memory and consequently a virtual addressing system would require translation of the address from the virtual address to the physical address before an input could be supplied on bus 20 to the CAM 11.
    In the arrangement shown in Figure 2 a conventional direct mapped cache is used with address translation to permit virtual memory addressing. In this case the virtual address used comprises a virtual page number together with a line in page address. The line in page address does not need translation but is the same in both the virtual address and the physical address. The virtual address which is to be used as an input for the cache is split into two. The virtual page address (which is indicated by the most significant bits) is fed on line 30 to a translation lookaside buffer (TLB) of known construction. If that virtual address is located in the buffer a TLB hit is indicated on output line 32. The function of the translation lookaside buffer 31 is to convert the virtual page number into a corresponding physical page number which is output on bus 33 to a comparator 34. The cache includes a RAM 35 holding the physical page addresses of each of the memory locations for which data is held in corresponding locations in a data RAM 36. The RAM 35 holding the page addresses is referred to as a Tag RAM. The line in page address which is represented by the least significant bits of the virtual address is supplied in parallel on lines 39 and 40 to the Tag RAM 35 and data RAM 36 respectively. In this case the inputs 39 and 40 represent RAM addresses and are decoded to access the corresponding locations of the Tag RAM 35 and data RAM 36. The location addressed in the Tag RAM causes an output on bus 42 of the physical page address of the memory location held at the address location of the Tag RAM. The data corresponding to that physical address is output on bus 43 from the data RAM 36. The data on bus 43 is held in a buffer 44 and may be output or not depending on the output of an AND gate 45 on an enable line 46. The comparator 34 compares the most significant bits of the physical address on line 42 with the physical page number supplied on line 33 from the TLB 31. If the comparator 34 determines that the location of the Tag RAM 35 which has been addressed does indeed correspond to the correct physical page number determined by the TLB 31 then it provides a signal on line 41 to the AND gate 45. To ensure that the data RAM is accessed only when a TLB hit occurs, the AND gate 45 receives a second input from line 32 so that an enable signal is provided on the line 46 only when a TLB hit occurs on line 32 and the comparator 34 indicates correspondence on lines 33 and 42. An enable signal on line 46 causes the buffer 44 to output the data on bus 48 and a cache hit is signalled on line 49 from the AND gate 45. A cache miss will occur either where the Tag RAM 35 holds the correct line in page address but the page number of the location held in the Tag RAM 35 does not correspond with the physical page number determined by the TLB 31, or where the Tag RAM 35 does not hold a valid entry for the correct line in page address.
    The examples of Figures 3, 4 and 5 all relate to fully associative caches in accordance with the invention which permit address translation from a virtual page to a physical page without involving the delay of making an address translation before inputting the address to be searched into the cache. They also all provide a dual function for a virtual page CAM in searching for a cache hit and effecting address translation.
    In the example shown in Figure 3 the cache consists of a data RAM 50 which is of similar construction and operation as the RAM 12 described with reference to Figure 1. The CAM 11 of Figure 1 has been replaced by two separate CAMs, one CAM 51 holding virtual page numbers and the other CAM 52 holding line in page numbers. It will be understood that references to line in page may also cover word in page. In some instances the contents of each full line may be considered as a single word or where it is necessary to access only part of a line then column decode circuitry may be used as explained in Figure 1 with reference to circuitry 17 and the input 27 of Figure 1. In addition a physical page RAM 53 is provided. The construction of the physical page RAM 53 may be similar to that of the data RAM 50 thereby consisting of a plurality of rows and columns of conventional RAM cells operable for read or write operations by energisation of an appropriate word line. The virtual address used may consist of a virtual page number 30 and a line in page number 39 similar to that described with reference to Figure 2. The virtual page number 30 is input to the virtual page CAM 51 whereas the line in page number 39 is input to the line in page CAM 52. Together the virtual page number 30 and line in page number 39 form the full address indication used in virtual addressing for the memory location required. The inputs 30 and 39 are fed simultaneously to the respective CAMs which carry out test operations for association to determine whether any of the line in page numbers held in the CAM 52 match the input 39 and whether any of the virtual page numbers held in CAM 51 correspond with the virtual page input 30. If a match is found in any of the rows of cells in the respective CAMs 51 and 52 then an appropriate match output is provided on the matching line of the CAM. It will be understood that there are a plurality of possible match lines in each of the CAMs 51 and 52 each line corresponding to one row of CAM cells, each of the rows holding a line in page number in CAM 52 and a virtual page number in CAM 51. In Figure 3 only a single match line 54 is indicated for CAM 52 and a single match line 55 for CAM 51 as for simplicity only the single line where a match occurred has been indicated. Each of the possible match lines 55 in CAM 51 are connected by a respective line 56 to a corresponding AND gate 57 forming part of a buffer similar to buffer 15 of Figure 1. Similarly each match line 54 in CAM 52 is connected to its respective AND gate 57. The output of each AND gate 57 is connected to a corresponding word line 58 in the data RAM 50. Although only one AND gate 57 is shown it will be understood that there are a plurality of AND gates 57 each corresponding to one of the rows of CAM cells in each of the CAMs 51 and 52 and the output of each of the AND gates 57 is connected through a single OR gate 59 to provide a cache hit output 52 when both the line in page number and virtual page number have been located in matching rows of the CAMs 51 and 52. It will therefore be understood that data in the data RAM 50 may be accessed by energisation of the appropriate word line 58 so as to input or output data on bus 26 when the virtual page number and line in page number have both been found in corresponding lines of the CAMs 51 and 52 connected to the same AND gate 57. The effect of using the two separate CAMs 51 and 52 with match lines connected through respective AND gates 57 gives an operation generally similar to that of the use of a single CAM 11 described in Figure 1. In other words it operates as a fully associative cache carrying out association or test operation on two parts of the full virtual address in parallel. However that part of the virtual address which represents the virtual page number provides a separate output from any match line 55 where a match has been found so as to access a corresponding word line 60 in the physical page RAM 53. Each of the possible match lines from the CAM 51 is connected through buffer circuitry 61 to a respective word line 60 of the RAM 53 and through a common OR gate 62 to indicate when a hit has been found in the virtual page CAM 51. It will be understood that each row of cells in the physical page RAM 53 contains the physical page number of a memory location corresponding to the virtual page numbers in the virtual page CAM 51. The data in the physical page RAM 53 is arranged on a row by row basis aligned with corresponding rows of the virtual page CAM 51. In this way, when a match is found on any one line 55 in the virtual page CAM 51 the corresponding word line 60 is activated in the RAM 53 so as to provide a physical page number as an output on line 33. This is equivalent to having a TLB hit in the circuitry described with reference to Figure 2 thereby indicating that an address translation has been successful.
    It will be seen that operation of the system shown in Figure 3 has three possible results of a cache access operation. (1) A cache hit may be indicated by an output on line 22 indicating that a match has been obtained on the same line in the virtual page CAM 51 and the line in page CAM 52. In this case access for data on line 26 is provided for the corresponding word line 58 in the data RAM 50 and the result of the cache access is obtained with no time penalty for the address translation which is simultaneously carried out by the physical page RAM 53. (2) The access operation may result in a cache miss by failure to have match outputs on the same line in both the virtual page CAM 51 and the line in page CAM 52. If nevertheless a match is found in the virtual page CAM 51 this will provide an output through the buffer circuitry 61 and OR gate 62 indicating a TLB hit showing that the physical page number is in the physical page RAM and will be obtained through the output 33. In this case the physical address is obtained at the end of one cycle of operation and may be used for addressing the main memory to obtain the necessary data. (3) In a third situation the output on line 22 indicates a cache miss without any match in the virtual page CAM 51. This outputs a TLB miss through the OR gate 62. In this situation the virtual address will be dealt with by a backup translation mechanism (not shown) of known type which may be implemented as software. Although it will be slower than use of the cache hardware it will enable a correct main memory address to be accessed.
    It will also be seen that the dual function of the one virtual page CAM 51 in determining both cache hits and TLB hits provides speed of operation in effecting both functions simultaneously and also avoids the need for additional circuitry which would arise if separate CAMs were used for the two functions.
    Figure 4 shows a modification of the arrangement shown in Figure 3. In this case similar components have been marked with the same reference numerals as in Figure 3. The data RAM 50, line in page CAM 52 and virtual page CAM 51 are the same as described with reference to Figure 3. However the physical page RAM 53 is now replaced by a physical page CAM 65. Each row of cells in the physical page CAM has a word line 60 enabling read and write access to the row of cells as well as a match line 66 which is operable to indicate when a match is found between the content of that row of cells and the input to the CAM 65. The match lines 55 of the virtual page CAM 51 are connected along respective lines 56 through respective changeover switches 67 to respective AND gates 57. It will be understood that switch 67 forms one of a bank of switches each for a respective match line 55 and the switches 67 are all operated under common control to determine their common setting. When the system is used for virtual addressing each of the switches 67 is set to connect the respective output line 56 from the virtual page CAM 51 to its respective AND gate 57. The system then operates in exactly the same manner as has already been described in Figure 3. A cache hit will cause data to be output or input in the RAM 50 at the location identified by the match lines 55 and 54 in the CAMs 51 and 52. At the same time a word line 60 in the physical page CAM will enable output at 33 of the physical address corresponding to the virtual address where the match occurred in the virtual page CAM 51. However, this example can also be used for physical addressing instead of virtual addressing. In this case line 33 is bidirectional and the physical page number is input at 33 to the physical page CAM 65 and the line in page address is input at 39 to the line in page CAM 52. All switches 67 are now set to interconnect possible match lines of the CAM 65 with respective AND gates 57 and disconnect lines 56. If the physical address is in the CAM 65 then a match will occur on an appropriate match line 66 and this will provide an output on line 68 through the switch 67 to the respective AND gate 57. Provided a match also occurred on the aligned match line 54 in the line in page CAM 52 this will be fed to the same AND gate 57 and thereby cause activation of the word line 58 of the corresponding line in the data RAM 50.
    This facility for physical addressing in addition to virtual addressing with the arrangement of Figure 4 is particularly applicable to achieving cache consistency. It can be used to avoid more than one virtual address in the cache referring to the same physical address in the main memory. A virtual addressing scheme may be used when one physical memory location is allocated to more than one virtual location. In the present examples the cache may not include more than one of the virtual locations at any one instant. If a cache access operation using a virtual address has resulted in a cache miss the physical address will either be obtained by a TLB hit from the physical page CAM 65 or alternatively by use of the backup translation mechanism. In either case the physical address is achieved and this can then be input into the physical page CAM 65 through the input 33. A match in the physical page CAM 65 will then indicate that the physical address is held in the cache provided a corresponding match was also found in the line in page CAM 52. The entry in the virtual page CAM 51 can then be modified to reflect the virtual address used to access the data. It will be understood that the virtual page CAM 51 and line in page CAM 52 each have word lines for each row of cells to allow writing of data into these CAMs. Buffer circuitry similar to that marked 15 in Figure 1 is used to interconnect outputs of the gates 57 in Figure 4 with corresponding word lines in the virtual page CAM 51 to permit rewriting of virtual page address after said physical addressing. The use of physical addressing is also useful in achieving bus snooping. When shared memory or direct memory accessing systems are used, it may be desirable to monitor physical addresses used on a memory addressing bus to determine whether or not data is to be changed at a particular physical address in the memory. Without this, the content of the physical location in the main memory may be changed without updating the corresponding contents of the cache. If the address on the bus is supplied to the physical CAM 65 it is possible to determine whether or not there is a cache entry corresponding to that physical address in the main memory. If so circuitry may be implemented to prevent the contents of the physical address in the main memory being changed without updating the contents of the cache corresponding to that physical address in memory.
    The further embodiment of Figure 5 is a modification of that shown in Figure 4 and similar reference numerals have been used for similar parts. In this example the data RAM 50 and line in page CAM 52 are the same as previously described with reference to Figures 3 and 4. Similarly the column of AND gates 57 connected through a common OR gate 59 to indicate a cache hit are as previously described. However in this case the separate physical page CAM 65 and virtual page CAM 51 have been replaced by a single CAM 70 having common rows of CAM cells each row covering the dual function of a virtual page CAM in the right hand half and a physical page CAM in the left hand half as indicated respectively by numerals 51 and 65 in Figure 5. Each row of CAM cells has a word line to permit read and write access to the row of cells as well as a match line to provide a suitable output when the contents of that row of cells corresponds with the input during an association mode of operation of the CAM. In Figure 5 a typical match line is indicated at 71 and a typical corresponding word line at 72. The system may be used for either physical addressing or virtual addressing in a manner similar to that described for Figure 4. However in this case the right hand half of the CAM 51 has a don't care input 73 in addition to the virtual page input 30. The left hand side of the CAM 65 has a don't care input 74 as well as physical page input and output 75 and 76. The two don't care inputs 73 and 74 to the respective halves of the CAM 70 are controlled by a virtual access input 77 connected directly to the input 74 and through an inverter 78 to input 73. When the system is to operate with virtual addressing a virtual access input is supplied at input 77 causing a don't care input to be applied at 74 but not at input 73. The function of the don't care inputs will be described in more detail with reference to Figures 10, 11 and 12. However the effect of applying a don't care input is to cause the CAM cells in a column to which the don't care input is applied to provide a match signal regardless of the content of that cell. This means that when a virtual access input is applied to 77, all columns of cells in the physical page CAM 65 receive don't care inputs from input 74 so that all cells in the left hand half of the CAM 70 provide a matching indication on their respective match lines. However, no don't care input is applied through 73 and so the virtual page number applied through input 30 is tested for association with the contents of the CAM cells in the right hand half of the CAM 70. On any match line where agreement is found between the contents of the cells and the input at 30 a match will occur on a selected match line 71 as matches will already have been indicated in the left hand side of the CAM 70 due to the don't care inputs at input 74. This will provide a matching output on one line 56 which is fed to its respective AND gate 57. Provided that the corresponding match line 54 in the line in page CAM 52 has provided a match for the line in page number input 39 then the data RAM 50 will be accessed at the word line 58 corresponding to the match lines in the line in page CAMs 52 and the composite CAM 70. When the system is to be used for physical addressing the virtual access input 77 is changed to indicate a physical access. This will cause removal of the don't care inputs at input 74 but the application of don't care inputs through 73 on each of the columns of CAM cells in the right hand half of the CAM 70 forming the virtual page CAM 51. This means that the right hand half of each of the match lines in the composite CAM 70 will provide matching signals and provided the physical address which is input at 75 is found in one of the rows of CAM cells in the left hand side of the CAM 70 then a match will be obtained on that match line 71. Provided a match is found on the aligned row in the line in page CAM 52 a second match output will be provided to the appropriate AND gate 57 causing access of the corresponding word line 58 of the data RAM 50. In the event that the line in page CAM does not provide a match signal but a match is found in the composite CAM 70 then the signal provided on the match line 71 in the composite CAM 70 will be fed through the buffer circuitry 61 enabling access to the word line 72 of the row of CAM cells in which the match occurs and a TLB hit will be provided through the common OR gate 62. During virtual addressing this will enable address translation to occur between virtual and physical page addresses with the physical address being read on output line 76.
    It may be desirable in some cases for each of the line in page CAM 52, virtual page CAM 51 and physical page CAM 65 to include additional data beyond the line and page data already discussed. Such an arrangement is shown diagrammatically in Figure 6 and may be applied to the contents of the CAMs in either Figures 4 or 5. In the example shown in Figure 6 each of the CAMs includes an additional column of CAM cells to include a data valid flag. The additional column is marked 80 for the line in page CAM 52, 81 for the virtual page CAM 51 and 82 for the physical page CAM 65. This consists of an additional CAM cell at the left hand side of each row of CAM cells in the CAM which may be set to a value to indicate whether the data in that CAM location is valid. In the case of the line in page CAM 52 the remaining CAM cells contain data indicating the line in page number as marked at 83. In the virtual page CAM 51 the cells holding the virtual page number are indicated by an array of rows and columns marked 84. In addition one or more columns of cells may be provided for a process identifier marked 85 so that each. row of cells indicating a virtual page number may be supplemented by one or more cells at the left hand end in columns 85 indicating the process using that virtual page number. The CAM 51 also includes a column of CAM cells 86 used for protection purposes as will be described below. In CAM 65 the array of cells holding the physical page number is marked 87 and a column of additional CAM cells 88 is used to indicate whether the page identified by each row is indeed a cacheable page. The valid cells in each of the columns 80, 81 and 82 can be set to a value such that a match on the line incorporating that cell is normally obtainable (provided a match is obtained on the remaining cells in the row) unless the valid status flag is set to an invalid value when that cell will always cause a mismatch on the row. In some cases it may be desirable that some areas of the physical main memory are not to be used in the cache and thereby form noncacheable areas. This may be useful in handling memory mapped I/O devices. If these areas of memory are to be accessed by a process using virtual addresses then it is still necessary to effect address translation for the virtual pages and access to these pages will take considerably longer unless it is possible to obtain TLB hit entries for these noncacheable pages. If a page is not to be cacheable then column 88 will have a cell indicating a noncacheable status in the row which contains the physical address of that memory location. When the first attempt is made to access a virtual address of a noncacheable page a TLB miss will occur due to the absence of the page in the cache. The relevant address translation will be obtained from a page table and a cache line can then be assigned to this memory location. However, in entering the location address in the cache the line in page CAM will be marked with an invalid status in column 80 for that memory location. Subsequent access operations to the cache using that address will always give a cache miss due to the invalid status associated with the line in page number for that entry. However the virtual page CAM 51 will still be capable of providing a TLB hit thereby accessing the physical page CAM 65 and providing the physical page number. In entering such a memory location in the cache the cacheable status in column 88 may also be changed to indicate that the memory location is a noncacheable location so that this information may be passed to the main memory system. In this way, when the cache is updated following a TLB miss and the memory location is entered into the cache, columns 88 and 80 may be adjusted to indicate whether or not the entry is a cacheable entry or not.
    The protection column 86 indicated in Figure 6 may be used to provide memory protection functions. For example, each page in a TLB may have an indication that the contents of the page are available for read, write or execute operations or restrictions may be placed on which of these operations may be effected on the contents of that page. It may be desired that certain pages cannot be written to. Each cell in the protection column 86 may be set to a value which normally prevents a match occurring on the line including that cell. It is however necessary in this case to provide for operation of don't care inputs so that when it is necessary to disregard the contents of the cells in column 86 matches can be obtained from appropriate lines regardless of the contents of that column 86. For example, to prevent writing to certain pages column 86 may have a value 1 into the write status bit of the appropriate lines in the virtual page CAM 51. For pages which may be written to this value will be set to zero in column 86. When in Figure 5 the input 30 to the virtual page CAM indicates a write data requirement then the contents of the column 86 will be taken into account and rows which have a value 1 in column 86 will not be capable of giving a match so that writing will be prevented in those pages. If however the input at line 30 is not a write input so that a read is to occur then a don't care test condition is driven into the CAM cells in column 86 so that an association operation is carried out to find a matching line while disregarding the contents of the cells in column 86. In this way a write operation at a location which is write protected will cause a cache miss and a TLB miss. The memory accessing operation will be dealt with by backup translation mechanism. When a read operation is carried out all locations held in the virtual page CAM may be accessed with a possible cache hit and TLB hit.
    The use of test conditions to drive CAM cells in a selected column to a don't care state may be used for purposes other than memory protection. A variety of functions which require searching only part of the CAM contents can make use of don't care states. For example all cache entries referring to a particular process can be identified by searching the virtual page CAM 51 for the process identifiers in column 85 by arranging that all CAM cells in columns 81, 86 and 84 are driven to a don't care state such that matches will be found wherever the process identifiers in column 85 agree with the process identifier input to the virtual page CAM. This way of identifying all entries relating to a particular process can be of assistance in deleting a process from the cache by finding the relevant entries and clearing their valid bits in column 81 of the virtual page CAM 51.
    The CAMs used in Figures 4 and 5 may all include CAM cells with test circuitry to drive cells to don't care states so that selection of some only of the cells for use in the association operation allows different functions to be achieved. The embodiments of Figures 4 and 5 may be implemented with a single CAM, part of each row representing physical pages, part representing virtual pages and part representing line in page numbers. To look for a cache hit, the cells representing physical pages in each row must be driven to a don't care state allowing the search to be done on the other two parts of the row. To look for a TLB hit rather than a cache hit, the cells representing physical pages and the cells representing the line in page numbers must be driven to a don't care state thereby selecting only the virtual page cells for the association operation.
    The construction of the CAM cells and the control logic necessary for read write and associate operations of the CAM cells will now be described with reference to Figures 7, 8 and 9.
    The arrangements shown in Figure 7 is part of an array of CAM cells 90 arranged in rows and columns which may be used in the embodiments already described with reference to Figures 3 and 4. CAM arrays of this type have the facility for storing part of a memory address into the CAM which is referred to as "store tag" as well as reading the contents of each cell which is referred to as "retrieve tag" or an associate operation where the contents of the CAM cells are tested to see if they contain part of an address or tag corresponding to address data which is input to the CAM. As shown in Figure 7 each row of CAM cells 90 is connected by a common word line 91 and match line 92. Each match line 92 is connected through a control transistor 93 to a precharge line 94 for precharging the match lines when an associate operation is carried out. Each column of CAM cells 90 is connected to read/write logic 95 having a bidirectional input and output 96 for the input or output of an address tag. Each logic circuit 95 is connected by two lines 97 and 98 representing Bit and Bitbar respectively, to each of the CAM cells 90 in that column. Each of the read/write logic circuits 95 is connected to a common retrieve tag control line 100 as well as a common store tag control line 101 and a common associate line 102. The operation of this arrangement will be described in more detail with reference to Figures 8 and 9. Figure 8 shows the construction of each CAM cell 90. The cell consists of a latch 103 formed by two inverters 104 and 105 connected in parallel and in opposite directions between nodes 106 and 107. Node 106 is connected to the Bitbar line 98 through a pass transistor 108 having its gate coupled to the word line 91. Similarly node 107 is connected to the Bit line 97 through a pass transistor 109 having its gate coupled to the word line 91. The latch 103 operates in the manner of a conventional RAM cell in that when the word line 91 is charged the pass transistors 108 and 109 cause the latch 103 to adopt one of two stable states depending on the signals on lines 97 and 98 so that either node 106 is high with node 107 low or node 107 is high with node 106 low. To allow this cell to carry out the associate operation the match line 92 is precharged and each cell 90 may selectively discharge the match line to earth 110. Each cell provides two sets of series transistors to interconnect the match line 92 with earth 110. As shown in Figure 8 two transistors 111 and 112 form one such connection to earth and two further transistors 113 and 114 provide a second series connection between the match line 92 and earth 110. Transistor 111 has its gate connected to node 106 so that it is turned on when node 106 is high. Transistor 112 has its gate connected to the Bitbar line 98 so that this transistor is turned on when the signal is high on line 98. Similarly transistor 113 has its gate connected to node 107 and is therefore turned on when node 107 is high. Transistor 114 has its gate connected to the Bit line 97 and is turned on when the signal is high on line 97. The match line 92 can in this way be discharged if the signals on lines 97 and 98 during an associate operation have values corresponding to those already stored in the cell 90. The control circuitry 95 for operating the cell 90 is shown in Figure 9. Similar signal lines in Figure 9 to those used in Figure 7 have similar reference numerals. The control circuitry includes an OR gate 115 having inputs 101 and 102. An exclusive OR gate 116 has inputs from line 102 and the input 96. A sense amplifier 117 controlled by signal line 100 receives inputs from the bit line 97 and Bitbar line 98. The output of the gate 116 is provided through a pass transistor 118 to the Bit line 97. The output of the gate 116 is also provided through an inverter 119 and a pass transistor 120 to the Bitbar line 98. The transistors 118 and 120 are controlled by connecting their gates to the output of the OR gate 115. During a store tag operation the associate input 102 has a value 0 as does the retrieve tag input 100. The store tag input has a value 1 and thereby causes the OR gate 115 to switch on the two transistors 118 and 120. The tag to be stored is input at 96 and forms one input to the exclusive OR gate 116 which acts as a selectable inverter. While the associate input 102 has a value 0 gate 116 transmits the input from 96 with no inversion. When the associate input 102 has a value 1 gate 116 outputs with inversion the signal which is input at 96. Consequently during a store tag operation Bitline 97 has the signal which is input at 96 and due to the inverter 119 the Bitbar line 98 carries the inverse of the input at 96. With charging of the appropriate word line 91 the values on lines 97 and 98 are thereby stored in the appropriate cell 90 causing the nodes 106 and 107 to take up values corresponding to those on the respective Bit and Bitbar lines 97 and 98. During a retrieve tag operation, both inputs to the OR gate 115 are 0 causing the transistors 118 and 120 to be turned off. Charging of the required word line 91 causes stored values at nodes 107 and 106 to be transmitted through the Bit and Bitbar lines 97 and 98 to the amplifier 117 which thereby provides an output through 96 representing the value which was stored in the cell. During an associate operation the OR gate 115 is turned on as input 102 has the value 1 and input 101 has the value 0. This causes the two transistors 118 and 120 to be turned on. The input 102 to the exclusive OR gate 116 now has the value 1 which causes inversion by the gate 116 of any input at 96. This then causes the Bit line 97 to have a signal which is the inverse of that input at 96 and Bitbar line 98 has a signal which is the same as the input at 96. This is applied to the cells for which the match lines 92 are precharged. If the cell stores a value 1 represented by node 107 being high and 106 being low, an input of 1 during an associate operation will cause Bitbar 98 to be high and Bit 97 to be low. Although the high value on node 107 will switch on transistor 113 the low value on Bit line 97 will cause transistor 114 to be switched off preventing discharge of the match line 92 through transistor 114. Similarly the low value stored on node 106 will switch off transistor 111 thereby preventing discharge of the match line 92 through the transistors 111 and 112 although transistor 112 will be switched on by the high value on Bitbar line 98. Consequently the match line 92 will not be discharged. If on the other hand the input at 96 represents a value 0 during an associate operation then the values on lines 97 and 98 will be reversed so that the value on line 97 will be high and the value on line 98 will be low. In this situation the match line 92 will be discharged as transistor 113 will be switched on by the stored high value at node 107 and by the high value on line 97 causing transistor 114 to be switched on thereby providing a discharge route between the match line 92 and earth 110. It will therefore be seen that during an associate operation cells 90 cause discharge of the match line 92 only where the input at input 96 does not correspond with the stored information in the cell. Where correspondence is found the match line remains charged.
    The arrangement shown in Figures 10, 11 and 12 is generally similar to that described in Figures 7, 8 and 9 although it has the addition of inputting a don't care state to each of the CAM cells 90. In this example each of the read/write control logic circuits 95 is connected to the column of CAM cells 90 by two additional lines 121 and 122 called Test and Testbar respectively in addition to the Bit and Bitbar lines 97 and 98. Each of the read/write logic circuits 95 also has a don't care input 123. As is shown in Figure 11, each cell 90 has a latch circuit 103 having the same components as that already described with reference to Figure 8 and the operation of storing tags or reading tags from the cells is the same as previously described where the appropriate signals are fed in or out of the Bit and Bitbar lines 97 and 98 when the appropriate word line 91 is energised. However the associate operation is in this case carried out by use of the Test and Testbar lines 121 and 122 which are connected to the gates of transistors 112 and 114. The control of signals on the Bit and Bitbar lines 97 and 98 and test and test bar lines 121 and 122 are controlled by the circuitry shown in Figure 12. The store tag and retrieve tag operations are controlled by signals on the Bit and Bitbar lines 97 and 98 as previously described with reference to Figure 9 although in this case the transistors 118 and 120 are controlled directly by the store tag input 101 without the need for the OR gate 115 referred to in Figure 9. The output of data on line 96a by the amplifier 117 is as previously described. The input of data on line 96b is fed through the inverter 119 to the Bit and Bitbar lines 97 and 98 as previously described. When it is required that a column of CAM cells 90 is rendered inoperative during an associate operation on other columns of CAM cells it is necessary to feed in a don't care input 123 so that cells in that column do not cause discharge of the match lines regardless of the input on line 96b relative to the contents of the cells in that column. As shown in Figure 12 the don't care input 123 is fed through an inverter 124 which provides an output to each of two AND gates 125 and 126. The second AND gate 125 has a second input from the store tag input 96b. The AND gate 126 has as its second input the store tag input 96b after passing through an inverter 127. When it is required to drive a column of cells into a don't care state, an input 1 is input at 123 which due to the inverter 124 provides zero inputs to both the AND gates 125 and 126. This ensures that zero values occur on both the Test and Testbar lines 121 and 122. As these lines 121 and 122 control the operation of both transistors 112 and 114 both those transistors are turned off thereby preventing discharge of the match line 92. This ensures that cells in that column do not cause any discharge of the match line regardless of the contents of the cells in that column. When the column of cells is operated with a zero input on the don't care input 123, this causes the inverter 124 to provide a value 1 to both the AND gates 125 and 126. The values which are then output on the Test lines 121 and 122 depend on the input value of store data on line 96b. If the input 96b is zero then the test line 121 has the value zero and the Testbar 122 has the value 1. The signal values on lines 121 and 122 are reversed if the input on line 96b is reversed. In this way the match lines 92 when precharged before an associate operation may be discharged to earth 110 to either the pair of transistors 111, 112 or 113 and 114 if the value stored in the CAM cell does not match that which is input at 96b and supplied on lines 121 and 122. The operation of the transistors 111, 112, 113 and 114 to discharge the match lines 92 is now the same in response to the signals on lines 121 and 122 as was previously described with respect to the signals on lines 97 and 98.
    The invention is not limited to the details of the foregoing examples.

    Claims (14)

    1. A fully associative cache memory device for virtual addressing which device comprises a data RAM (50) for holding data corresponding to selected locations in a main memory, first and second content addressable memory (CAM) cell arrays (51,52) for holding respectively most and least significant bits of virtual addresses corresponding to said selected locations for which data is held in said data RAM, input circuitry (30,39) for inputting two parts of a full virtual address in parallel as first and second inputs to said first and second arrays respectively in each cache access operation, output circuitry (54,55) for providing first and second outputs from said first and second arrays respectively to indicate a cache hit when each of said first and second arrays holds a part of the virtual address corresponding respectively to the parts of the virtual address of said first and second inputs, first control circuitry for interconnecting said first and second outputs to said data RAM to access a selected location of said data RAM when both said first and second outputs indicate a hit, and a physical address memory (53,65) holding a plurality of physical addresses of locations in said main memory corresponding to virtual addresses in said first array, and second control circuitry (61) for interconnecting said first output of said first array to said physical address memory to access a selected location of the physical address memory when said first output includes a hit signal indicating that the first array holds a part of the virtual address corresponding to the part of the virtual address of said first input.
    2. A cache memory device according to claim 1 in which each said virtual address comprises a page address and a line-in-page address, said first array holding a plurality of virtual page addresses and said second array holding a plurality of line-in-page addresses.
    3. A cache memory device according to claim 1 or claim 2 in which said physical address memory comprises a plurality of addressable storage locations each of which may be written to or read from, and said second control circuitry is arranged to access a selected storage location in the physical address memory in response to a first output including a hit signal from said first array to read a physical address from the physical address memory corresponding to the virtual address in the first array which generated the signal in said first output.
    4. A cache memory device according to any one of claims 1 to 3 in which said first control circuitry includes gating circuitry to indicate a cache hit when both said first and second outputs include hit signals indicating location in the first and second arrays of addresses corresponding to the respective first and second inputs.
    5. A cache memory device according to any one of claims 1 to 4 in which said second control circuitry includes gating circuitry to indicate an address translation hit when said first output includes a hit signal indicating a location in the first array of an address corresponding to the said first input.
    6. A cache memory device according to any one of claims 1 to 5 in which said physical address memory comprises a CAM operable both as a RAM when accessed by said first array and operable as a CAM in response to a physical address input.
    7. A cache memory device according to claim 6 in which said physical address memory comprises a CAM having an input for receiving a physical address and a CAM output connected to said first control circuitry whereby said data RAM may be accessed by virtual addressing of said first and second arrays or by physical addressing of said physical address memory and said second array.
    8. A cache memory device according to any one of claims 1 to 7 in which each of said first and second arrays, data RAM and physical address memory comprise storage locations arranged in rows, each row in the data RAM being associated with a corresponding row in each of the first and second arrays and physical address memory.
    9. A cache memory device according to claim 8 in which each row of storage locations in one of the arrays of CAM cells includes in addition to storage locations for bits of a virtual address, at least one location for a status bit for use in protecting the corresponding main memory location.
    10. A cache memory device according to claim 9 in which said status bit is used to prevent writing to a memory address indicated by the virtual address held in that row.
    11. A cache memory device according to any one of claims 1 to 10 in which one or both of said first and second arrays includes circuitry having a don't care input operable to cause CAM cells connected to that don't care input to provide a match with the respective first or second input regardless of the data stored in the cell.
    12. A cache memory device according to claim 11 in which each CAM cell has a match line for each row of cells, circuitry for precharging each match line, and control circuitry for each column of cells, the control circuitry having control inputs to initiate an associate operation for the cells of that column, each cell having discharge circuitry coupled to said control circuitry for discharging the match line by any cell in the column which had data stored corresponding to data input to that column during an associate operation.
    13. A cache memory device according to claim 11 or claim 12 in which each column of cells in said first array of CAM cells is connected to control circuitry having a said don't care input.
    14. A cache memory device according to any one of claim 8 to 13 in which each row of storage locations in the first and second CAM arrays includes a bit location for holding a flag indicating validity of the cache entry corresponding to that row.
    EP93301833A 1992-03-13 1993-03-10 Cache memory Expired - Lifetime EP0560598B1 (en)

    Applications Claiming Priority (2)

    Application Number Priority Date Filing Date Title
    GB9205551 1992-03-13
    GB929205551A GB9205551D0 (en) 1992-03-13 1992-03-13 Cache memory

    Publications (2)

    Publication Number Publication Date
    EP0560598A1 EP0560598A1 (en) 1993-09-15
    EP0560598B1 true EP0560598B1 (en) 2000-07-26

    Family

    ID=10712105

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    EP93301833A Expired - Lifetime EP0560598B1 (en) 1992-03-13 1993-03-10 Cache memory

    Country Status (5)

    Country Link
    US (1) US5574875A (en)
    EP (1) EP0560598B1 (en)
    JP (1) JPH06131265A (en)
    DE (1) DE69329080T2 (en)
    GB (1) GB9205551D0 (en)

    Families Citing this family (41)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US5890221A (en) * 1994-10-05 1999-03-30 International Business Machines Corporation Method and system for offset miss sequence handling in a data cache array having multiple content addressable field per cache line utilizing an MRU bit
    US5640534A (en) * 1994-10-05 1997-06-17 International Business Machines Corporation Method and system for concurrent access in a data cache array utilizing multiple match line selection paths
    US5668972A (en) * 1994-10-05 1997-09-16 International Business Machines Corporation Method and system for efficient miss sequence cache line allocation utilizing an allocation control cell state to enable a selected match line
    US5805855A (en) * 1994-10-05 1998-09-08 International Business Machines Corporation Data cache array having multiple content addressable fields per cache line
    US5875487A (en) * 1995-06-07 1999-02-23 International Business Machines Corporation System and method for providing efficient shared memory in a virtual memory system
    GB9521977D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Cache memory
    US5813040A (en) * 1995-12-29 1998-09-22 Gte Laboratories Inc Write controller for a CAM-based switch with lineraly searchable memory utilizing hardware-encoded status tags to indicate avaliablity of each memory location for writing
    US5774463A (en) * 1995-12-29 1998-06-30 Gte Laboratories Incorporated Switching matrix with contention arbitration
    US5862128A (en) * 1995-12-29 1999-01-19 Gte Laboratories Inc Merged buffer signal switch
    US5822755A (en) * 1996-01-25 1998-10-13 International Business Machines Corporation Dual usage memory selectively behaving as a victim cache for L1 cache or as a tag array for L2 cache
    US5721863A (en) * 1996-01-29 1998-02-24 International Business Machines Corporation Method and structure for accessing semi-associative cache memory using multiple memories to store different components of the address
    US5761714A (en) * 1996-04-26 1998-06-02 International Business Machines Corporation Single-cycle multi-accessible interleaved cache
    US5930359A (en) * 1996-09-23 1999-07-27 Motorola, Inc. Cascadable content addressable memory and system
    US5987254A (en) * 1997-07-14 1999-11-16 Hewlett Packard Company System-wide memoization of array dependence information
    TW371756B (en) * 1998-05-04 1999-10-11 United Microelectronis Corp Projection memory of selective updating
    US6603768B1 (en) 1998-06-27 2003-08-05 Intel Corporation Multi-protocol conversion assistance method and system for a network accelerator
    US6311212B1 (en) * 1998-06-27 2001-10-30 Intel Corporation Systems and methods for on-chip storage of virtual connection descriptors
    US6728249B2 (en) 1998-06-27 2004-04-27 Intel Corporation System and method for performing cut-through forwarding in an ATM network supporting LAN emulation
    US6604136B1 (en) 1998-06-27 2003-08-05 Intel Corporation Application programming interfaces and methods enabling a host to interface with a network processor
    US6657959B1 (en) 1998-06-27 2003-12-02 Intel Corporation Systems and methods for implementing ABR with guaranteed MCR
    US6735773B1 (en) 1998-06-27 2004-05-11 Intel Corporation Method and apparatus for issuing commands to a network processor configured to provide a plurality of APIs
    US6724767B1 (en) * 1998-06-27 2004-04-20 Intel Corporation Two-dimensional queuing/de-queuing methods and systems for implementing the same
    US6269425B1 (en) * 1998-08-20 2001-07-31 International Business Machines Corporation Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system
    US6442666B1 (en) * 1999-01-28 2002-08-27 Infineon Technologies Ag Techniques for improving memory access in a virtual memory system
    US6771646B1 (en) 1999-06-30 2004-08-03 Hi/Fn, Inc. Associative cache structure for lookups and updates of flow records in a network monitor
    ATE496341T1 (en) * 1999-06-30 2011-02-15 Apptitude Inc METHOD AND DEVICE FOR MONITORING NETWORK TRAFFIC
    US6789116B1 (en) * 1999-06-30 2004-09-07 Hi/Fn, Inc. State processor for pattern matching in a network monitor device
    US6594734B1 (en) * 1999-12-20 2003-07-15 Intel Corporation Method and apparatus for self modifying code detection using a translation lookaside buffer
    US6535966B1 (en) * 2000-05-17 2003-03-18 Sun Microsystems, Inc. System and method for using a page tracking buffer to reduce main memory latency in a computer system
    US6625746B1 (en) * 2000-06-15 2003-09-23 International Business Machines Corporation Microprocessor instruction buffer redundancy scheme
    US6850980B1 (en) * 2000-06-16 2005-02-01 Cisco Technology, Inc. Content routing service protocol
    US6808533B1 (en) 2000-07-28 2004-10-26 Atrium Medical Corporation Covered stent and method of covering a stent
    US6784892B1 (en) 2000-10-05 2004-08-31 Micron Technology, Inc. Fully associative texture cache having content addressable memory and method for use thereof
    US6552920B2 (en) * 2001-06-27 2003-04-22 International Business Machines Corporation Saving content addressable memory power through conditional comparisons
    US6820170B1 (en) * 2002-06-24 2004-11-16 Applied Micro Circuits Corporation Context based cache indexing
    US20040054867A1 (en) 2002-09-13 2004-03-18 Paulus Stravers Translation lookaside buffer
    US6973557B2 (en) * 2003-02-04 2005-12-06 Sun Microsystems, Inc. Apparatus and method for dual access to a banked and pipelined data cache memory unit
    US20050120195A1 (en) * 2003-11-13 2005-06-02 Alok Kumar Allocating memory
    US7577785B2 (en) * 2005-09-30 2009-08-18 Qualcomm Incorporated Content addressable memory with mixed serial and parallel search
    US8904111B2 (en) 2009-10-20 2014-12-02 The University Of Electro-Communications Cache memory with CAM and SRAM sub-tags and generation control
    CN105808455B (en) * 2014-12-31 2020-04-28 华为技术有限公司 Memory access method, storage-class memory and computer system

    Family Cites Families (8)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US4538241A (en) * 1983-07-14 1985-08-27 Burroughs Corporation Address translation buffer
    US4991081A (en) * 1984-10-31 1991-02-05 Texas Instruments Incorporated Cache memory addressable by both physical and virtual addresses
    US4785398A (en) * 1985-12-19 1988-11-15 Honeywell Bull Inc. Virtual cache system using page level number generating CAM to access other memories for processing requests relating to a page
    US4813002A (en) * 1986-07-21 1989-03-14 Honeywell Bull Inc. High speed high density dynamic address translator
    US5077826A (en) * 1989-08-09 1991-12-31 International Business Machines Corporation Cache performance in an information handling system employing page searching
    US5263140A (en) * 1991-01-23 1993-11-16 Silicon Graphics, Inc. Variable page size per entry translation look-aside buffer
    US5283882A (en) * 1991-02-22 1994-02-01 Unisys Corporation Data caching and address translation system with rapid turnover cycle
    US5299147A (en) * 1993-02-22 1994-03-29 Intergraph Corporation Decoder scheme for fully associative translation-lookaside buffer

    Also Published As

    Publication number Publication date
    DE69329080D1 (en) 2000-08-31
    EP0560598A1 (en) 1993-09-15
    JPH06131265A (en) 1994-05-13
    US5574875A (en) 1996-11-12
    DE69329080T2 (en) 2001-03-22
    GB9205551D0 (en) 1992-04-29

    Similar Documents

    Publication Publication Date Title
    EP0560598B1 (en) Cache memory
    US5717885A (en) TLB organization with variable page size mapping and victim-caching
    US5133058A (en) Page-tagging translation look-aside buffer for a computer memory system
    US6772316B2 (en) Method and apparatus for updating and invalidating store data
    US5696925A (en) Memory management unit with address translation function
    US5257361A (en) Method and apparatus for controlling one or more hierarchical memories using a virtual storage scheme and physical to virtual address translation
    EP0320099B1 (en) Multi-cache data storage system
    US5640534A (en) Method and system for concurrent access in a data cache array utilizing multiple match line selection paths
    US6098150A (en) Method and apparatus for fetching information from a cache memory
    EP0690386A1 (en) Address translator and method of operation
    US6026476A (en) Fast fully associative translation lookaside buffer
    JPH0622000B2 (en) Microprocessor device
    EP0706131A2 (en) Method and system for efficient miss sequence cache line allocation
    JP4445081B2 (en) Cache memory
    US5712998A (en) Fast fully associative translation lookaside buffer with the ability to store and manage information pertaining to at least two different page sizes
    US5802567A (en) Mechanism for managing offset and aliasing conditions within a content-addressable memory-based cache memory
    US5535351A (en) Address translator with by-pass circuit and method of operation
    US5109335A (en) Buffer memory control apparatus using address translation
    US6044447A (en) Method and apparatus for communicating translation command information in a multithreaded environment
    US6519684B1 (en) Low overhead method for selecting and updating an entry in a cache memory
    US5890221A (en) Method and system for offset miss sequence handling in a data cache array having multiple content addressable field per cache line utilizing an MRU bit
    US5603008A (en) Computer system having cache memories with independently validated keys in the TLB
    US6286091B1 (en) Microprocessor using TLB with tag indexes to access tag RAMs
    EP0180369B1 (en) Cache memory addressable by both physical and virtual addresses
    EP0332908B1 (en) Cache memory having pseudo virtual addressing

    Legal Events

    Date Code Title Description
    PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

    Free format text: ORIGINAL CODE: 0009012

    AK Designated contracting states

    Kind code of ref document: A1

    Designated state(s): DE FR GB IT

    17P Request for examination filed

    Effective date: 19940314

    RAP1 Party data changed (applicant data changed or rights of an application transferred)

    Owner name: SGS-THOMSON MICROELECTRONICS LIMITED

    17Q First examination report despatched

    Effective date: 19981014

    RAP3 Party data changed (applicant data changed or rights of an application transferred)

    Owner name: STMICROELECTRONICS LIMITED

    GRAG Despatch of communication of intention to grant

    Free format text: ORIGINAL CODE: EPIDOS AGRA

    17Q First examination report despatched

    Effective date: 19981014

    GRAG Despatch of communication of intention to grant

    Free format text: ORIGINAL CODE: EPIDOS AGRA

    GRAH Despatch of communication of intention to grant a patent

    Free format text: ORIGINAL CODE: EPIDOS IGRA

    GRAH Despatch of communication of intention to grant a patent

    Free format text: ORIGINAL CODE: EPIDOS IGRA

    GRAA (expected) grant

    Free format text: ORIGINAL CODE: 0009210

    AK Designated contracting states

    Kind code of ref document: B1

    Designated state(s): DE FR GB IT

    REF Corresponds to:

    Ref document number: 69329080

    Country of ref document: DE

    Date of ref document: 20000831

    ITF It: translation for a ep patent filed

    Owner name: MITTLER & C. S.R.L.

    ET Fr: translation filed
    PLBE No opposition filed within time limit

    Free format text: ORIGINAL CODE: 0009261

    STAA Information on the status of an ep patent application or granted ep patent

    Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT

    26N No opposition filed
    REG Reference to a national code

    Ref country code: GB

    Ref legal event code: IF02

    PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

    Ref country code: DE

    Payment date: 20020327

    Year of fee payment: 10

    PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

    Ref country code: DE

    Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

    Effective date: 20031001

    PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

    Ref country code: IT

    Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

    Effective date: 20050310

    PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

    Ref country code: FR

    Payment date: 20120410

    Year of fee payment: 20

    PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

    Ref country code: GB

    Payment date: 20120224

    Year of fee payment: 20

    REG Reference to a national code

    Ref country code: GB

    Ref legal event code: PE20

    Expiry date: 20130309

    PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

    Ref country code: GB

    Free format text: LAPSE BECAUSE OF EXPIRATION OF PROTECTION

    Effective date: 20130309