← Back to Patent Explorer
US5761718A Expired / Lapsed US ⏱️ 0.0 years remaining

Conditional data pre-fetching in a device controller

Assignee: Silicon Integrated Systems Corp
•
Filing: 1996-08-30
•
Granted: 1998-06-02
•
Expires: 2016-08-30
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract An algorithm for conditionally pre-fetching data for DRAM access is disclosed. A similar pattern of performing successive block reads of DRAM data in the execution of several types of instructions in a computer system is determined by analyzing CPU signals. These instructions repeatedly read blocks of data from a local memory area. Additional writes to memory or an input/output port may intervene between the repeated block reads. By using the pattern as a condition for pre-fetching data from DRAM into a high speed memory buffer of a memory controller, consecutive memory reads can be completed with zero wait state. The penalty incurred by unconditional pre-fetching of DRAM data is minimized. The conditional pre-fetching mechanism is applicable to other computer peripheral devices.

Inventors

  • 👤 Yung Cheng Lin
  • 👤 Shih Jen Chuang

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-30 12:09
CPC Classifications
G; G06; G06F; G06F12/00; G06F12/02; G06F12/08; G06F12/0802; G06F12/0862; G06F9/00; G06F9/06; G06F9/30; G06F9/38; G06F9/3824; G06F9/383; G06F2212/00; G06F2212/60; G06F2212/6026

Claims Analysis

Total Claims: 12
Claim 1
Independent Claim 290 words
A method for conditional pre-fetching data from dynamic random access memory in a computer system including a CPU and a memory controller having a cache size and an address offset, comprising the steps of: a) examining and checking a current action executed in said CPU; b) terminating the pre-fetch operation without pre-fetching data if said current action in step (a) is not a burst memory read at a first memory address; c) examining and checking the next succeeding action executed in said CPU; d) executing step (i) if said next succeeding action in step (c) is a burst memory read at a memory address formed by adding said address offset to said first address; e) executing step (g) if said next succeeding action in step (c) comprises a number of successive memory writes or successive IO writes, said number being multiple of 8 but not greater than said cache size; f) terminating the pre-fetch operation without pre-fetching data; g) examining and checking the next succeeding action executed in said CPU; h) terminating the pre-fetch operation without pre-fetching data if said next succeeding action in step (g) is not a burst memory read at a memory address formed by adding said address offset to said first address; i) pre-fetching a plurality of bytes of data to a temporary memory buffer in said memory controller from said dynamic random access memory at a memory address formed by adding twice of said address offset to said first address, the size of said plurality of bytes being equal to said cache size; j) updating said first memory address with an increment equal to said address offset and returning to step (c); wherein said address offset is a positive number equal to said cache size.
Claim 2
Independent Claim 290 words
A method for conditional pre-fetching data from dynamic random access memory in a computer system including a CPU and a memory controller having a cache size and an address offset, comprising the steps of: a) examining and checking a current action executed in said CPU; b) terminating the pre-fetch operation without pre-fetching data if said current action in step (a) is not a burst memory read at a first memory address; c) examining and checking the next succeeding action executed in said CPU; d) executing step (i) if said next succeeding action in step (c) is a burst memory read at a memory address formed by adding said address offset to said first address; e) executing step (g) if said next succeeding action in step (c) comprises a number of successive memory writes or successive IO writes, said number being multiple of 8 but not greater than said cache size; f) terminating the pre-fetch operation without pre-fetching data; g) examining and checking the next succeeding action executed in said CPU; h) terminating the pre-fetch operation without pre-fetching data if said next succeeding action in step (g) is not a burst memory read at a memory address formed by adding said address offset to said first address; i) pre-fetching a plurality of bytes of data to a temporary memory buffer in said memory controller from said dynamic random access memory at a memory address formed by adding twice of said address offset to said first address, the size of said plurality of bytes being equal to said cache size; j) updating said first memory address with an increment equal to said address offset and returning to step (c); wherein said address offset is a positive number equal to said cache size.
Claim 3
Dependent Claim 25 words
The method for conditionally pre-fetching data from dynamic random access memory in a computer system according to claim 1, wherein said cache size is 32.
Claim 4
Dependent Claim 36 words
The method for conditionally pre-fetching data from dynamic random access memory in a computer system according to claim 1, wherein said address offset is a negative number having an absolute value equal to said cache size.
Claim 5
Dependent Claim 25 words
The method for conditionally pre-fetching data from dynamic random access memory in a computer system according to claim 3, wherein said cache size is 32.
Claim 6
Independent Claim 290 words
A method for conditionally pre-fetching data from a peripheral device in a computer system including a CPU and a device controller having a cache size and an address offset, comprising the steps of: a) examining and checking a current action executed in said CPU; b) terminating the pre-fetch operation without pre-fetching data if said current action in step (a) is not a burst read of said device at a first address; c) examining and checking the next succeeding action executed in said CPU; d) executing step (i) if said next succeeding action in step (c) is a burst read of said device at an address formed by adding said address offset to said first address; e) executing step (g) if said next succeeding action in step (c) comprises a number of successive writes to said device or an input/output device, said number being multiple of 8 but not greater than said cache size; f) terminating the pre-fetch operation without pre-fetching data; g) examining and checking the next succeeding action executed in said CPU; h) terminating the pre-fetch operation without pre-fetching data if said next succeeding action in step (g) is not a burst read of said device at an address formed by adding said address offset to said first address; i) pre-fetching a plurality of bytes of data to a temporary memory buffer in said device controller from said peripheral device at an address formed by adding twice of said address offset to said first address, the size of said plurality of bytes being equal to said cache size; j) updating said first address with an increment equal to said address offset and returning to step (c); wherein said address offset is a positive number equal to said cache size.
Claim 7
Independent Claim 290 words
A method for conditionally pre-fetching data from a peripheral device in a computer system including a CPU and a device controller having a cache size and an address offset, comprising the steps of: a) examining and checking a current action executed in said CPU; b) terminating the pre-fetch operation without pre-fetching data if said current action in step (a) is not a burst read of said device at a first address; c) examining and checking the next succeeding action executed in said CPU; d) executing step (i) if said next succeeding action in step (c) is a burst read of said device at an address formed by adding said address offset to said first address; e) executing step (g) if said next succeeding action in step (c) comprises a number of successive writes to said device or an input/output device, said number being multiple of 8 but not greater than said cache size; f) terminating the pre-fetch operation without pre-fetching data; g) examining and checking the next succeeding action executed in said CPU; h) terminating the pre-fetch operation without pre-fetching data if said next succeeding action in step (g) is not a burst read of said device at an address formed by adding said address offset to said first address; i) pre-fetching a plurality of bytes of data to a temporary memory buffer in said device controller from said peripheral device at an address formed by adding twice of said address offset to said first address, the size of said plurality of bytes being equal to said cache size; j) updating said first address with an increment equal to said address offset and returning to step (c); wherein said address offset is a positive number equal to said cache size.
Claim 8
Dependent Claim 26 words
The method for conditionally pre-fetching data from a peripheral device in a computer system according to claim 5, wherein said peripheral device is an L2 cache.
Claim 9
Dependent Claim 27 words
The method for conditionally pre-fetching data from a peripheral device in a computer system according to claim 5, wherein said peripheral device is a PCI bus device.
Claim 10
Dependent Claim 24 words
The method for conditionally pre-fetching data from a peripheral device in a computer system according to claim 5, wherein said cache size is 32.
Claim 11
Dependent Claim 35 words
The method for conditionally pre-fetching data from a peripheral device in a computer system according to claim 5, wherein said address offset is a negative number having an absolute value equal to said cache size.
Claim 12
Dependent Claim 24 words
The method for conditionally pre-fetching data from a peripheral device in a computer system according to claim 9, wherein said cache size is 32.

References Cited (Backward Citations)

US5586294A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-06-01 2001-12-01 2002-06-02 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-06-01 2005-12-01 2006-06-02 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-06-01 2009-12-01 2010-06-02 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag