|
|
|
| United States Patent | 5566324 |
| Link to this page | http://www.wikipatents.com/5566324.html |
| Inventor(s) | Kass; William J. (Easley, SC) |
| Abstract | A computer system is provided including a main memory prefetch cache which
enhances the retrieval of instructions (code and data) stored in the main
memory of a computer. The computer system includes a processor and a
processor cache coupled thereto. A memory controller is coupled to the
processor and includes a main memory prefetch cache. The memory controller
also includes control circuitry which determines if a current line
requested by the processor is stored in the prefetch cache, and if so, the
memory controller retrieves the current line from the prefetch cache and
provides the current line to the processor. The next line is then
retrieved from the main memory and is overwritten over the current line in
the prefetch cache. Otherwise, if the memory controller determines that
the prefetch cache does not contain the current line requested by the
processor, then the current line is retrieved from the main memory and is
provided to the processor. The next line is then retrieved from the main
memory and is stored in the prefetch cache at a register location which
was occupied by the least recently used line in the cache. The invention
includes circuitry and methodology for determining the least recently used
line stored within the prefetch cache. |
|
|
|
Title Information  |
|
|
|
|
|
|
| Publication Date |
October 15, 1996 |
|
|
|
|
|
| Filing Date |
December 24, 1992 |
|
|
|
|
|
|
|
|
|
|
|
| Parent Case |
CROSS REFERENCE TO RELATED APPLICATIONS
"Computer Memory System", U.S. patent application Ser. No. 07/563,216,
filed Aug. 6, 1990, invented by Edward C. King and F. Vincentinus Vermeer.
"Computer Memory Open Page Bias Method and System", U.S. patent application
Ser. No. 07/563,221, filed Aug. 6, 1990, invented by Edward C. King and F.
Vincentinus Vermeer.
"Computer Memory System", U.S. patent application Ser. No. 08/132,421,
filed Oct. 6, 1993, which is a continuation of U.S. patent application
Ser. No. 07/563,214, filed Aug. 6, 1990, invented by Edward C. King,
Forrest O. Arnold, Jackson L. Ellis, Robert B. Moussavi, Pirmin L. Weisser
and F. Vincentinus Vermeer.
"Data Prefetch Method and System", U.S. Pat. No. 6,530,941, invented by
Pirmin L. Weisser, F. Vincentinus Vermeer and Edward C. King.
"Method for Merging Data in A Computer Memory System", U.S. Pat. No.
5,420,994, invented by Edward C. King, Forrest O. Arnold, Jackson L.
Ellis, Robert B. Moussavi, Pirmin L. Weisser and F. Vincentinus Vermeer.
"Computer Memory System and Method for Cleaning Data Elements", U.S. Pat.
No. 5,287,512, invented by Jackson L. Ellis.
"Mapped Cache Structure and Method", U.S. Pat. No. 5,434,990, filed Aug. 6,
1990, invented by Robert B. Moussavi and Jackson L. Ellis.
"Computer Memory System and Method for Enhancing Performance on Cache
Overflows", U.S. patent application Ser. No. 08/609,957, filed Mar. 4,
1996, which is a continuation of U.S. patent application Ser. No.
08/415,789, filed Apr. 3, 1995, now abandoned, which is a continuation of
U.S. patent application Ser. No. 07/563,220, filed Aug. 6, 1990, now
abandoned, invented by Jackson L. Ellis, Robert B. Moussavi and Edward C.
King. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Title Information  |
|
|
References  |
|
|
| *references marked with an asterisk below are user-added references |
|
U.S. References |
|
|
| Add a new US reference: |
| | Reference | Relevancy | Comments | Reference | Relevancy | Comments | 5420994 King 711/144 May,1995 |      Your vote accepted [0 after 0 votes] | | 5381539 Yanai 711/133 Jan,1995 |      Your vote accepted [0 after 0 votes] | | 5283880 Marcias-Garza 711/118 Feb,1994 |      Your vote accepted [0 after 0 votes] | | 5247642 Kadlec 711/3 Sep,1993 |      Your vote accepted [0 after 0 votes] | | 4996641 Talgam 711/118 Feb,1991 |      Your vote accepted [0 after 0 votes] | | 4972316 Dixon 711/113 Nov,1990 |      Your vote accepted [0 after 0 votes] | | 4943908 Emma 712/240 Jul,1990 |      Your vote accepted [0 after 0 votes] | | 4933837 Freidin 711/125 Jun,1990 |      Your vote accepted [0 after 0 votes] | | 4918587 Pechter 711/218 Apr,1990 |      Your vote accepted [0 after 0 votes] | | 4916605 Beardsley 711/162 Apr,1990 |      Your vote accepted [0 after 0 votes] | | 4847758 Olson 711/133 Jul,1989 |      Your vote accepted [0 after 0 votes] | | 4791642 Taylor 714/764 Dec,1988 |      Your vote accepted [0 after 0 votes] | | 4669043 Kaplinsky 711/3 May,1987 |      Your vote accepted [0 after 0 votes] | | 4631660 Woffinden 711/3 Dec,1986 |      Your vote accepted [0 after 0 votes] | | 4603380 Easton 711/113 Jul,1986 |      Your vote accepted [0 after 0 votes] | | 4583165 Rosenfeld 711/213 Apr,1986 |      Your vote accepted [0 after 0 votes] | | 4490782 Dixon 711/136 Dec,1984 |      Your vote accepted [0 after 0 votes] | | 4488222 Cochcroft, Jr. 714/53 Dec,1984 |      Your vote accepted [0 after 0 votes] | | 4481573 Fukunaga 711/207 Nov,1984 |      Your vote accepted [0 after 0 votes] | | 4439829 Tsiang 711/118 Mar,1984 |      Your vote accepted [0 after 0 votes] | | 4439828 Martin 712/226 Mar,1984 |      Your vote accepted [0 after 0 votes] | | 4371927 Wilhite 711/137 Feb,1983 |      Your vote accepted [0 after 0 votes] | | 4317168 Messina 711/143 Feb,1982 |      Your vote accepted [0 after 0 votes] | | 4214303 Joyce 711/118 Jul,1980 |      Your vote accepted [0 after 0 votes] | | |
|
|
|
|
U.S. References |
|
|
Foreign References |
|
|
|
|
|
|
Foreign References |
|
|
Other References |
|
|
|
|
|
|
Other References |
|
|
|
|
|
References  |
|
|
|
|
|
| Market Size |
|
Estimate the gross annual revenues of the relevant market
sector:
|
| | |
| |
|
|
| Market Share |
|
Estimate the percentage of the relevant market sector this invention will capture:
|
| | |
| |
|
|
| Reasonable Royalty |
|
What percentage of gross sales should the inventor or assignee be paid?
|
| | |
| |
|
|
|
Public's "Guesstimation" of Royalty Value
|
| Market Size | N/A | [No votes] | | x | Market Share | N/A | [No votes] | | x | Reasonable Royalty | N/A | [No votes] |
| | N/A | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
Market Review  |
|
|
Technical Review  |
|
|
Claims  |
|
|
What is claimed is:
1. A computer system comprising:
a processor;
a processor cache coupled to said processor;
a memory controller coupled to said processor;
a main memory coupled to said memory controller;
said memory controller including
a main memory prefetch cache, and
control means coupled to said prefetch cache for determining if a cache hit
has occurred wherein a current line requested by said processor is stored
in said prefetch cache, and if so, then retrieving said current line from
said prefetch cache for use by said processor and overwriting said current
line in said prefetch cache with a next line from said main memory, or
otherwise when said prefetch cache does not contain said current line
requested by said processor thus signifying a cache miss, then retrieving
said current line from said main memory for use by said processor and
substantially concurrently retrieving said next line from said main memory
and storing said next line in said prefetch cache such that said next line
is transferred to said prefetch cache prior to a request for said next
line from said processor.
2. The computer system of claim 1 wherein said prefetch cache comprises x
prefetch cache registers for storing instructions prefetched from said
main memory, wherein x is a number.
3. The computer system of claim 2 further comprising x least recently used
(LRU) counters, each LRU counter corresponding to a respective one of said
prefetch cache registers, each counter containing a count value indicating
how recently and instruction in corresponding prefetch cache register has
been used.
4. The computer system of claim 3 further comprising clearing means for
clearing a count value designated HIT COUNT in an LRU counter
corresponding to a prefetch cache register in which a cache hit has
occurred.
5. The computer system of claim 4 further comprising first incrementing
means, coupled to said LRU counters, for incrementing all LRU counters
whose count value is less than said HIT COUNT value when a cache hit
occurs, the count value of the remaining LRU counters remaining unchanged
when a cache hit occurs.
6. The computer system of claim 5 further comprising purging means, coupled
to said prefetch cache, for purging said prefetch cache of a least
recently used line when a cache miss occurs by writing said next line to
the particular cache register corresponding to the LRU counter exhibiting
a maximum count value.
7. The computer system of claim 6 further comprising second incrementing
means, coupled to said LRU counters, for incrementing those LRU counters
other than the LRU counter corresponding to said particular cache register
into which said next line is written when a cache miss occurs.
8. The computer system of claim 1 wherein said processor cache comprises an
internal processor cache integrated in said processor.
9. The computer system of claim 1 wherein said processor cache comprises an
external processor cache externally coupled to said processor.
10. The computer system of claim 2 wherein said processor cache further
comprises an external processor cache externally coupled to said
processor.
11. A computer system comprising:
a processor;
a processor cache coupled to said processor;
a memory controller coupled to said processor;
a main memory coupled to said memory controller;
said memory controller including
a main memory prefetch cache, and
control means coupled to said prefetch cache for fetching from said
prefetch cache a current line when requested by said processor if a cache
hit occurs, and in that case substantially concurrently overwriting said
current line in said prefetch cache with a next line sequentially
following said current line in said main memory prior to receiving a
request from said processor for said next line.
12. The computer system of claim 11 wherein said prefetch cache comprises x
prefetch cache registers for storing instructions prefetched from said
main memory, wherein x is a number.
13. The computer system of claim 12 further comprising x least recently
used (LRU) counters, each LRU counter corresponding to a respective one of
said prefetch cache registers, each counter containing a count value
indicating how recently and instruction in corresponding prefetch cache
register has been used.
14. The computer system of claim 13 further comprising clearing means for
clearing a count value designated HIT COUNT in an LRU counter
corresponding to a prefetch cache register in which a cache hit has
occurred.
15. The computer system of claim 14 further comprising first incrementing
means, coupled to said LRU counters, for incrementing all LRU counters
whose count value is less than said HIT COUNT value when a cache hit
occurs, the count value of the remaining LRU counters remaining unchanged
when a cache hit occurs.
16. The computer system of claim 15 further comprising purging means,
coupled to said prefetch cache, for purging said prefetch cache of a least
recently used line when a cache miss occurs by writing said next line to
the particular cache register corresponding to the LRU counter exhibiting
a maximum count value.
17. The computer system of claim 16 further comprising second incrementing
means, coupled to said LRU counters, for incrementing those LRU counters
other than the LRU counter corresponding to said particular cache register
into which said next line is written when a cache miss occurs.
18. The computer system of claim 11 wherein said processor cache comprises
an internal processor cache integrated in said processor.
19. The computer system of claim 11 wherein said processor cache comprises
an external processor cache externally coupled to said processor.
20. The computer system of claim 18 wherein said processor cache further
comprises an external processor cache externally coupled to said
processor.
21. A computer system comprising:
a processor;
a processor cache memory which is accessible to said processor;
a main memory for storing a sequence of instructions for execution by said
processor;
a memory controller, coupled to said processor and said main memory, for
controlling access by said processor to the instructions stored in said
main memory, said memory controller including
a main memory prefetch cache for storing instructions prefetched from said
main memory prior to a request therefor from said processor, and
cache control means, coupled to said prefetch cache, for determining if a
current instruction N requested by said processor is contained in said
prefetch cache and, if so, retrieving said current instruction N from said
prefetch cache and providing said current instruction N to said processor
and retrieving a next instruction N+1 from said main memory and
overwriting said current instruction N with said next instruction N+1, or
otherwise when said prefetch cache does not contain a current instruction
N requested by said processor, then retrieving said current instruction N
from said main memory and providing said current instruction N to said
processor and substantially concurrently retrieving a next instruction N+1
from said main memory and storing said next instruction N+1 in said
prefetch cache memory prior to receiving a request for said next
instruction from said processor.
22. The computer system of claim 21 wherein said prefetch cache comprises x
prefetch cache registers for storing instructions prefetched from said
main memory, wherein x is a number.
23. The computer system of claim 22 further comprising x least recently
used (LRU) counters, each LRU counter corresponding to a respective one of
said prefetch cache registers, each counter containing a count value
indicating how recently an instruction in the corresponding prefetch cache
register has been used.
24. The computer system of claim 23 further comprising clearing means for
clearing a count value designated HIT COUNT in an LRU counter
corresponding to a prefetch cache register in which a cache hit has
occurred.
25. The computer system of claim 24 further comprising first incrementing
means, coupled to said LRU counters, for incrementing all LRU counters
whose count value is less than said HIT COUNT value when a cache hit
occurs, the count value of the remaining LRU counters remaining unchanged
when a cache hit occurs.
26. The computer system of claim 25 further comprising purging means,
coupled to said prefetch cache, for purging said prefetch cache of a least
recently used instruction when a cache miss occurs by writing said next
instruction N+1 to the particular cache register corresponding to the LRU
counter exhibiting a maximum count value.
27. The computer system of claim 26 further comprising second incrementing
means, coupled to said LRU counters, for incrementing those LRU counters
other than the LRU counter corresponding to said particular cache register
into which said next instruction N+1 is written when a cache miss occurs.
28. The computer system of claim 21 wherein said processor cache comprises
an internal processor cache integrated in said processor.
29. The computer system of claim 21 wherein said processor cache comprises
an external processor cache externally coupled to said processor.
30. The computer system of claim 28 wherein said processor cache further
comprises an external processor cache externally coupled to said
processor.
31. In a computer system including a processor employing a processor cache,
a method of accessing a main memory comprising:
providing said main memory with a main memory prefetch cache including a
plurality of prefetch registers for storing a plurality of lines from main
memory;
initiating a memory cycle to said main memory to retrieve a current line;
determining if a cache hit occurs in said prefetch cache for said current
line during said memory cycle;
prefetching, if a cache hit occurs, said current line from said prefetch
cache and then overwriting said current line in said prefetch cache with a
next line from said main memory during said memory cycle;
determining the least recently used line in said prefetch cache,
retrieving, if a cache miss occurs, said current line from said main
memory, and
storing during said memory cycle, if a cache miss occurs, a next line from
main memory subsequent to said current line in the particular prefetch
register occupied by said least recently used line.
32. In a computer system including a processor employing a processor cache,
a method of accessing a main memory comprising:
providing a main memory prefetch cache situated in a memory controller and
coupled to said main memory;
initiating a main memory cycle to retrieve a current line from said main
memory;
determining, by said memory controller, if said current line is stored in
said prefetch cache, and
if said current line is determined to be stored in said prefetch cache,
then retrieving said current line from said prefetch cache and providing
said current line to said processor, and retrieving a next line form said
main memory and overwriting said current line in said prefetch cache with
said next line during said memory cycle, and
if said current line is determined not to be stored in said prefetch cache,
then retrieving said current line from said main memory and providing said
current line to said processor, and retrieving said next line from said
main memory and storing said next line in said prefetch cache during said
memory cycle.
33. The method of claim 32 wherein said determining step further comprises
modifying said main memory cycle to retrieve the next line from said main
memory rather than said current line when in said determining step it is
determined that the current line is stored in said prefetch cache.
34. The method of claim 32 wherein said prefetch cache includes X registers
wherein X is a number, said method further comprising the steps of:
providing a respective least recently used (LRU) counter corresponding to
each of the registers in said prefetch cache;
initializing each of said LRU counters at a unique predetermined count
value between 0 and X inclusive;
if in said determining step said current line is determined to be stored in
said prefetch cache as per a cache hit, then
clearing a count value stored in the particular LRU counter corresponding
to a register in said prefetch cache for which said cache hit occurred;
incrementing said LRU counters whose count values are less than the count
value of said particular LRU counter prior to said clearing step;
if in said determining step said current line is determined not to be
stored in said prefetch cache as per a cache miss, then
storing said next line in a register in said prefetch cache corresponding
to an LRU counter having a maximum count X, and
incrementing the remaining counters.
35. A method for enhancing the processing of instructions stored in a main
memory of a computer system, said computer system including a processor
with a processor cache memory coupled thereto, a sequence of instructions
being stored in said main memory which is controlled by a memory
controller, said method comprising:
providing said main memory with a prefetch cache memory situated in said
memory controller;
issuing a request, by said processor to said memory controller, for a
current instruction N in said sequence of instructions stored in said main
memory;
determining, by said memory controller, if said current instruction N is
stored in said prefetch cache memory, and
if said prefetch cache memory is determined to be storing said current
instruction N, then
retrieving said current instruction N from said prefetch cache memory and
providing said current instruction N to said processor,
and, during a same memory cycle, retrieving a next instruction N+1 from
said main memory and overwriting said current instruction N in said
prefetch cache memory with said next instruction N+1, or
if said prefetch cache memory is determined not to contain said current
instruction N, then
retrieving said current instruction N from said main memory and providing
said current instruction N to said processor
and
substantially concurrently retrieving a next instruction N+1 from said main
memory and storing said next instruction N+1 in said prefetch cache
memory.
36. The method of claim 35 wherein said determining step further comprises
modifying said main memory cycle to retrieve the next instruction N+1 from
said main memory rather than said current instruction N when in said
determining step it is determined that the current instruction N is stored
in said prefetch cache.
37. The method of claim 35 wherein said prefetch cache includes X registers
wherein X is a number, said method further comprising the steps of:
providing a respective least recently used (LRU) counter corresponding to
each of the registers in said prefetch cache;
initializing each of said LRU counters at a unique predetermined count
value between 0 and X-1 inclusive;
if in said determining step said current instruction N is determined to be
stored in said prefetch cache as per a cache hit, then
clearing a count value stored in the particular LRU counter corresponding
to a register in said prefetch cache for which said cache hit occurred;
incrementing said LRU counters whose count values are less than the count
value of said particular LRU counter prior to said clearing step;
if in said determining step said current instruction N is determined not to
be stored in said prefetch cache as per a cache miss, then
storing said next instruction N+1 in a register in said prefetch cache
corresponding to an LRU counter having a maximum count X, and
incrementing the remaining counters.
38. A method for enhancing the processing of instructions stored in a main
memory of a computer system, said computer system including a processor
with a processor cache memory coupled thereto, a sequence of lines of code
and data stored in said main memory which is controlled by a memory
controller, said method comprising:
providing said main memory with a prefetch cache memory integrated within
said memory controller and coupled to said main memory;
issuing a request, by said processor to said memory controller, for a
particular line in said sequence of lines stored in said main memory, said
particular line being designated a current line;
initiating a main memory cycle by said memory controller to retrieve said
current line;
determining, by said memory controller, if said current line is stored in
said prefetch cache memory, and
if said prefetch cache memory is determined to be storing said current
line, then
retrieving said current line from said prefetch cache memory and providing
said current line to said processor and said processor cache,
and
modifying the main memory request begun in said initiating step to retrieve
a current line+1 from said main memory and overwriting said current line
in said prefetch cache memory with said current line+1 during said main
memory cycle, and
if said prefetch cache memory is determined not to contain said current
line, then
continuing said main memory cycle to retrieve said current line from said
main memory and providing said current line to said processor,
and
further continuing said main memory cycle to retrieve said current line+1
from said main memory and storing said current line+1 in said prefetch
cache memory.
39. The method of claim 38 wherein said prefetch cache includes X registers
wherein X is a number, said method further comprising the steps of:
providing a respective least recently used (LRU) counter corresponding to
each of the registers in said prefetch cache;
initializing each of said LRU counters at a unique predetermined count
value between 0 and X-1 inclusive;
if in said determining step said current line is determined to be stored in
said prefetch cache thus signifying a cache hit, then
clearing the count value stored in the particular LRU counter corresponding
to the register in said prefetch cache for which said cache hit occurred;
incrementing said LRU counters whose count values are less than the count
value of said particular LRU counter prior to said clearing step;
if in said determining step said current line is determined not to be
stored in said prefetch cache as per a cache miss, then
storing said current line+1 in the register in said prefetch cache
corresponding to the LRU counter having a maximum count X, and
incrementing the remaining counters. |
|
|
|
|
Claims  |
|
|
Description  |
|
|
CROSS REFERENCE TO RELATED APPLICATIONS
"Computer Memory System", U.S. patent application Ser. No. 07/563,216,
filed Aug. 6, 1990, invented by Edward C. King and F. Vincentinus Vermeer.
"Computer Memory Open Page Bias Method and System", U.S. patent application
Ser. No. 07/563,221, filed Aug. 6, 1990, invented by Edward C. King and F.
Vincentinus Vermeer.
"Computer Memory System", U.S. patent application Ser. No. 08/132,421,
filed Oct. 6, 1993, which is a continuation of U.S. patent application
Ser. No. 07/563,214, filed Aug. 6, 1990, invented by Edward C. King,
Forrest O. Arnold, Jackson L. Ellis, Robert B. Moussavi, Pirmin L. Weisser
and F. Vincentinus Vermeer.
"Data Prefetch Method and System", U.S. Pat. No. 6,530,941, invented by
Pirmin L. Weisser, F. Vincentinus Vermeer and Edward C. King.
"Method for Merging Data in A Computer Memory System", U.S. Pat. No.
5,420,994, invented by Edward C. King, Forrest O. Arnold, Jackson L.
Ellis, Robert B. Moussavi, Pirmin L. Weisser and F. Vincentinus Vermeer.
"Computer Memory System and Method for Cleaning Data Elements", U.S. Pat.
No. 5,287,512, invented by Jackson L. Ellis.
"Mapped Cache Structure and Method", U.S. Pat. No. 5,434,990, filed Aug. 6,
1990, invented by Robert B. Moussavi and Jackson L. Ellis.
"Computer Memory System and Method for Enhancing Performance on Cache
Overflows", U.S. patent application Ser. No. 08/609,957, filed Mar. 4,
1996, which is a continuation of U.S. patent application Ser. No.
08/415,789, filed Apr. 3, 1995, now abandoned, which is a continuation of
U.S. patent application Ser. No. 07/563,220, filed Aug. 6, 1990, now
abandoned, invented by Jackson L. Ellis, Robert B. Moussavi and Edward C.
King.
BACKGROUND OF THE INVENTION
This invention relates in general to digital computers and, more
particularly, to cache memories for such computers.
Modern computers typically include one or more processors for performing
the calculations and logical operations generally associated with such
machines. Instructions which are to be executed by the processor are
stored in a main memory. When a program is run or executed on a computer,
its instructions are called out of the main memory and sent to the
processor where they are executed. This process takes valuable time.
It is known that providing a processor cache memory for use by such
processors is one way to effectively accelerate the pace at which
instructions are executed by the processor. Such a cache memory is a
relatively small memory when compared with the size of the main memory.
However, this cache memory exhibits a much faster access time than the
access time associated with the main memory. The cache memory thus
provides relatively quick access to instructions and data which are the
most frequently used.
For example, in a typical personal computer application, the main memory
may consist of 1-64 Mbytes or more of relatively slow (80 nsec access
time) dynamic random access memory (DRAM). However, the cache memory
associated with a microprocessor may consist of typically 8 Kbytes to 256
Kbytes or more of fast (20 nsec access time) static random access memory
(SRAM). Computers are not designed with a main memory consisting entirely
of fast SRAM because SRAM is extremely expensive when compared with DRAM.
When instructions and data are called up from the main memory by the
microprocessor for execution, they are also stored in the relatively small
high speed cache. Thus, the microprocessor has ready access to the most
recently executed instructions and data should these instructions and data
be needed again by the microprocessor. When the microprocessor needs to
use an instruction or data a second time, rather than initiating a
relatively slow memory cycle to the slow main memory to retrieve that
information, instead the microprocessor quickly accesses the information
from the high speed processor cache.
Some microprocessors such as the Intel 80386 are designed to use a local
processor cache closely coupled to the local bus of the 80386
microprocessor by a cache controller such as the Intel 82385 cache
controller. Other microprocessors such as the Intel 80486 employ a small
8K cache integrated within the microprocessor chip itself. Still other
microprocessors such as the Motorola 68040 include dual caches within the
microprocessor, one cache being used for code | | |