EP0407119A2

Apparatus and method for reading, writing and refreshing memory with direct virtual or physical access.

Abstract

A computer memory system is provided. Received memory requests can be for addresses which are virtual or physical. The type of address is determined, and a virtual/physical bit is set and stored. At least row address bits are compared to one or more registers which contain either a virtual or a physical row address, corresponding to a row addressed by a row address latch. When there is a hit with respect to one of these registers, column address bits are used to select the requested memory element, without the necessity for a virtual-to-physical translation. When there is a miss on all registers, a physical address is obtained, either from the requested address when this is physical, or from a virtual-to-physical translation. The physical address is used to load a new row address into a row address latch. Some column address bits are changed only when there has been a miss. A refresh cycle is described, which includes reading back into a row address latch the same row address which occupied the row address latch before the refresh cycle, thus preserving locality information or structure.

EP0407119A2, drawing sheet 1
Sheet 1 of 22

Term

Term ended

Projected expiry passed 2 July 2010, 16.2 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

20 claims: 11 independent, 9 dependent

  1. 1
    A computer memory system capable of receiving a plurality of virtual or physical address requests, comprising:a row and column-addressable random access memory having at least one row address latch capable of indicating a plurality of memory locations, all of said indicated memory locations having a common physical row address;at least a first register for storing at least portions of a row address corresponding to said common physical row address during at least a first and a second of said plurality of address requests, wherein the contents of said first register are selected from the group consisting of at least portions of a virtual address and at least portions of a physical address;and a comparator for comparing at least portions of an address request to at least portions of said first register to determine whether the memory location indicated by said address request is included in said plurality of memory locations.
  2. 5
    A computer memory system capable of receiving at least first and second virtual or physical address requests, comprising:means for distinguishing between said virtual and physical address requests;and means for setting a first digital bit to indicate whether said first address request is virtual or physical.
  3. 7
    A memory system for accessing memory elements in an array having a first plurality of memory elements in response to a sequential plurality of memory address requests, at least one of said memory address requests having a correspondence with at least one of said first plurality of memory elements, comprising:an array of memory elements, each element having an address comprising a first number of row address bits and a second number of column address bits;first address register means for holding a third number of column address bits for use in accessing a memory element having an address which includes said third number of column bits, said third number being less than said second number;second means, using a fourth number of column address bits, for use in accessing a memory element having an address which includes said fourth number of column address bits, said fourth number being less than said second number;third means for providing a number of bits from each of said sequential plurality of memory address requests to said first address register, said provided number being equal to said third number;fourth means for continuously maintaining said fourth number of column bits in said second means during at least two of said sequential plurality of memory address requests;and fifth means for accessing at least one of said first plurality of memory elements using said third number of column address bits in said first address register means, and said fourth number of column address bits in said second means.
  4. 9
    Apparatus for refreshing memory, comprising:a memory array, wherein each of a plurality of memory elements is addressable by a row address and a column address, and having at least a first loadable row address latch capable of indicating an address-specifiable plurality of said memory elements;at least a first indicator register for holding a plurality of bits, including bits sufficient to indicate the plurality of memory elements held by said first row address latch;means for refreshing at least some of said plurality of memory elements, wherein said refreshing includes changing the contents of said first row address;and means for loading said first loadable row address latch, following said refresh, with an address indicating memory elements which are indicated in the contents of said first indicator register, wherein the contents of said first row address latch and said first indicator register are substantially the same after said refresh as before said refresh.
  5. 12
    A computer memory system comprising:a fast page random access column- and row-­organized memory, including first, second, third, and fourth address latches, each row latch for holding an address indicating one row of said memory so that the contents of memory in said row can be rapidly accessed by strobing a CAS signal, said row being specifiable by a row address, each element in said memory array having an address comprising at least 10 row address bits and at least 10 column address bits;a first address register for holding at least eight column address bits usable in accessing a memory element in a row indicated by one of said row address latches;a first means for holding at least two column address bits usable in accessing a memory element in at least one of said row address latches;a memory request register for holding bits comprising the requested addresses of a sequential plurality of requested memory elements, wherein said requested addresses are selected from the group consisting of physical addresses and virtual addresses;means for providing eight column address bits from each of said sequential plurality of memory address requests in said memory request register to said first address register;first, second, third, and fourth virtual/physical row address registers for holding a row address corresponding to the row held by said first, second, third, and fourth row address latches, respectively, said row address selected from the group consisting of a physical address and a virtual address;first, second, third, and fourth physical address registers, each physical address register holding a physical row address corresponding to the row indicated by said first, second, third, and fourth row address latches, respectively, and also holding at least two column address bits corresponding to a column address usable in accessing a memory element having a column address which includes said two column address bits;a comparator for comparing at least a first plurality of bits from an address in said memory request register to the contents of each of said first, second, third, and fourth virtual/physical address registers, and for generating a first signal when the contents of at least one of said first, second, third, or fourth virtual/physical address registers is identical to said first plurality of bits, and for generating a second signal when the contents of none of said first, second, third, or fourth virtual/physical address registers are identical to said first plurality of bits;third means for continuously maintaining said two column bits in said first means during at least two of said plurality of memory address requests, until said second signal is generated;fourth means for changing the contents of at least one of said first, second, third or fourth row address latches following generation of said second signal;and fifth means for determining whether said memory request address is a virtual address or a physical address, and for setting at least one bit in said memory request register to indicate whether said memory request address is a virtual address or a physical address.
  6. 13
    Apparatus for translating at least one of a plurality of virtual addresses to a corresponding physical address, comprising:a first table having a plurality of entries, each entry containing data for translating a virtual address to a physical address;a second table containing a plurality of entries;means for making a corresponding change to said second table whenever there is a change made to said first table, wherein said second table is substantially identical to said first table;means for detecting an error condition in said first table;means for selectably using one of said first table and said second table to translate a virtual address to a physical address;and means for selecting said second table for use by said means for selectably using when an error condition is detected by said means for detecting.
  7. 14
    A computer memory system for storing data and instructions, comprising:a plurality of memory functional units, each functional unit for storing a plurality of pages of memory;a page table cache comprising a plurality of page table cache entry arrays and at least a first page table cache tag array, each of said page table cache entry arrays associated with one of said memory functional units for storing physical addresses residing on said functional unit, said page table cache tag array for storing indications of virtual addresses, each virtual address indication corresponding to a physical address stored in a page table entry array, wherein said first page table cache tag array includes at least a first indication of a virtual address corresponding to a physical address stored in a first of said plurality of page table cache entry arrays and a second indication of a virtual address corresponding to a physical address stored in a second of said plurality of page table entry arrays.
  8. 16
    A method for accessing memory, comprising:providing a fast page dynamic random access memory array having at least one row address latch;providing at least a first virtual/physical address register for holding at least a portion of a row address corresponding to a row held by at least a first row address latch;comparing at least some selected bits from a memory request address with the contents of said virtual/physical address register, generating a first signal when said selected bits are identical, and generating a second signal when said selected bits are not identical;and asserting a column address strobe to said row address latch following said first signal.
  9. 18
    A method for accessing an addressable memory element in a memory array, comprising:providing means for accessing a memory element using an address of said element and an indication of whether said address is virtual or physical;receiving a memory address request;determining whether said memory address request is virtual or physical;setting at least a first bit to indicate whether said memory address request is virtual or physical;accessing a memory element using said means for accessing a memory element, and using said set bit indicating whether said memory address request is virtual or physical.
  10. 19
    A method for sequentially accessing a plurality of memory elements in a memory array in response to a sequential plurality of memory address requests, comprising:providing an array of memory elements, each element having an address comprising a first number of row bits and a second number of column bits;providing first address register means for holding a third number of column address bits for use in accessing a memory element having an address which includes said third number of column address bits, said third number being less than said second number;providing second means, using a fourth number of column address bits, for use in accessing a memory element having an address which includes said fourth number of column address bits, said fourth number being less than said second number;transmitting a number of bits from each of said sequential plurality of memory address requests to said first address register, said number of transmitted bits being equal to said third number;continuously maintaining said fourth number of column address bits in said means during at least two of said plurality of memory address requests;and accessing a memory element using said third number of bits in said first address register means and said fourth number of bits in said second means.
  11. 20
    A method for refreshing the memory elements in a memory array which comprises a plurality of memory elements addressable by a row address and a column address, comprising:providing a first loadable row address latch for holding the contents of an address-specifiable plurality of said memory elements;providing at least a first indicator register for holding a plurality of bits, including bits sufficient to indicate the plurality of memory elements held by said first row address latch;refreshing at least some of said plurality of memory elements, wherein said refreshing changes the contents of said first row address latch;loading said first loadable row address latch, following said step of refreshing, with elements indicated in the contents of said first indicator register, wherein the contents of said row address latch and said first indicator register are substantially the same after said step of refreshing as before said step of refreshing.