Patent US2861965A successfully refreshed from Google Patents.
Patent US5263142A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5263142A Expired / Lapsed US ⏱️ 0.0 years remaining

Input/output cache with mapped pages allocated for caching direct (virtual) memory access input/output data based on type of I/O devices

Assignee: Sun Microsystems Inc
•
Filing: 1992-12-28
•
Granted: 1993-11-16
•
Expires: 2012-12-28
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract An I/O cache is provided to a computer system comprising a main memory and a number of DVMA/DMA I/O devices for caching I/O data between the main memory and the DVMA/DMA I/O devices. The I/O cache selectively caches the I/O data in accordance to the device class types of the DVMA/DMA devices. The I/O cache comprises an I/O cache data array, an I/O cache address tag array, an I/O cache mapper, and I/O cache control logic. The I/O cache data array comprises a number I/O cache lines, each having a number of I/O cache blocks, for storing I/O data between the main memory and the DVMA/DMA devices. The I/O cache tag comprises a number of corresponding I/O cache address tag entries, each having a number of I/O cache address tags and associated control information, for storing address and control information for the I/O data stored in the I/O cache lines. The I/O cache mapper maps the dynamically or statically allocated I/O buffers in main memory of each DVMA/DMA device having a cacheable device class type to a set of dynamically or statically assigned unique I/O cache buffers in the I/O cache data array, thereby ensuring that no two DVMA/DMA devices with cacheable I/O data will share the same I/O cache block. The I/O control logic controls accesses, indexes and updates to the I/O cache mapper, the I/O cache tag and data arrays.

Inventors

  • 👤 John Watkins
  • 👤 David Labuda
  • 👤 William C. Van Loo

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-29 13:33
CPC Classifications
G; G06; G06F; G06F12/00; G06F12/02; G06F12/08; G06F12/0802; G06F12/0875; G06F13/00; G06F13/14; G06F13/20; G06F13/28

Claims Analysis

Total Claims: 6
Claim 1
Independent Claim 530 words
In a computer system including a central processing unit (CPU), a main memory, a plurality of input/output (I/O) devices, and an operating system, wherein said I/O devices transfer data directly between said I/O devices and said main memory without being under the control of said CPU, an I/O cache for caching said I/O data being transferred between said I/O devices and said main memory, said I/O cache comprising: a) I/O cache data array means coupled to said main memory, said CPU, said I/O devices including a first and a second plurality of I/O cache lines for caching a first and second subset of said I/O data, said first and second subsets of said I/O data being transferred directly between said main memory and I/O devices of a first and a second type respectively, said I/O devices being classified by said operating system into at least a first and a second types, each I/O cache line of said first plurality of I/O cache lines being mapped to a memory page of said main memory allocated to an I/O device of said first type, each of said I/O devices of said first type being allocated at least one I/O cache mapped memory page dynamically by said operating system, each I/O cache line of said second plurality of I/O cache lines being grouped with at least one other I/O cache line of said second plurality of I/O cache lines, each group of I/O cache lines of said second plurality of I/O cache lines being mapped to a plurality of memory pages of said main memory allocated to an I/O device of said second type, each of said I/O devices of said second type being allocated a plurality of I/O cache mapped memory pages statically by said operating system; b) I/O cache tag array means coupled to said CPU and said I/O devices including a plurality of I/O tag entries for storing addresses and associated control information for said first and second plurality of I/O cache lines, each of said I/O tag entries having at least one I/O tag, each of said I/O tags storing an address and associated control information for one of said first and second plurality of I/O cache lines; c) I/O mapper means coupled to said CPU and said I/O devices including a plurality of indicators corresponding to memory pages of said main memory for indicating I/O cacheability of said corresponding memory pages, each caheability indicator corresponding to one of said I/O cache mapped memory pages allocated to one of said I/O devices of said first and second types being marked cacheable by said operating system upon allocating the specific memory page to the I/O device of said first and second types; and d) I/O control logic means coupled to said CPU, said I/O devices, said I/O cache data array means, said I/O cache tag array means, and said I/O cache mapper means for arbitrating accesses by said CPU and said I/O devices to said I/O cache data array means, said I/O cache tag array means and I/O cache mapper means, and controlling said I/O cache data array means, said I/O cache tag array means and I/O cache mapper means.
Claim 2
Dependent Claim 530 words
In a computer system including a central processing unit (CPU), a main memory, a plurality of input/output (I/O) devices, and an operating system, wherein said I/O devices transfer data directly between said I/O devices and said main memory without being under the control of said CPU, an I/O cache for caching said I/O data being transferred between said I/O devices and said main memory, said I/O cache comprising: a) I/O cache data array means coupled to said main memory, said CPU, said I/O devices including a first and a second plurality of I/O cache lines for caching a first and second subset of said I/O data, said first and second subsets of said I/O data being transferred directly between said main memory and I/O devices of a first and a second type respectively, said I/O devices being classified by said operating system into at least a first and a second types, each I/O cache line of said first plurality of I/O cache lines being mapped to a memory page of said main memory allocated to an I/O device of said first type, each of said I/O devices of said first type being allocated at least one I/O cache mapped memory page dynamically by said operating system, each I/O cache line of said second plurality of I/O cache lines being grouped with at least one other I/O cache line of said second plurality of I/O cache lines, each group of I/O cache lines of said second plurality of I/O cache lines being mapped to a plurality of memory pages of said main memory allocated to an I/O device of said second type, each of said I/O devices of said second type being allocated a plurality of I/O cache mapped memory pages statically by said operating system; b) I/O cache tag array means coupled to said CPU and said I/O devices including a plurality of I/O tag entries for storing addresses and associated control information for said first and second plurality of I/O cache lines, each of said I/O tag entries having at least one I/O tag, each of said I/O tags storing an address and associated control information for one of said first and second plurality of I/O cache lines; c) I/O mapper means coupled to said CPU and said I/O devices including a plurality of indicators corresponding to memory pages of said main memory for indicating I/O cacheability of said corresponding memory pages, each caheability indicator corresponding to one of said I/O cache mapped memory pages allocated to one of said I/O devices of said first and second types being marked cacheable by said operating system upon allocating the specific memory page to the I/O device of said first and second types; and d) I/O control logic means coupled to said CPU, said I/O devices, said I/O cache data array means, said I/O cache tag array means, and said I/O cache mapper means for arbitrating accesses by said CPU and said I/O devices to said I/O cache data array means, said I/O cache tag array means and I/O cache mapper means, and controlling said I/O cache data array means, said I/O cache tag array means and I/O cache mapper means.
Claim 3
Dependent Claim 113 words
The I/O cache as set forth in claim 1, wherein, said I/O data being transferred directly between said I/O devices and said main memory without being under the control of said CPU further comprises a third subset of I/O data being transferred between I/O devices of a third type and said main memory without being cached by said I/O cache; each of said I/O devices of said third type is allocated memory locations of non-I/O cache mapped memory pages of said main memory by said operating system. each indicator of said I/O mapper means corresponding to one of said non-I/O cache mapped memory pages being marked non-cacheable by said operating system by default.
Claim 4
Dependent Claim 61 words
The I/O cache as set forth in claim 1, wherein, said I/O cache control logic means comprises I/O cache miss address function driver means coupled to said I/O mapper means for driving address bits with new control information to said I/O mapper means when said I/O cache control logic means accesses said I/O mapper means to update said I/O mapper means.
Claim 5
Dependent Claim 100 words
The I/O cache as set forth in claim 1, wherein, said I/O cache control logic means comprises I/O write back and update logic means coupled to said I/O cache tag array for driving address bits and new tag information to said I/O cache tag array when said I/O cache control logic means updates said I/O cache tag array, said I/O write back and update logic means being also used for determining whether an I/O cache line is to be written back to said memory when said I/O cache control logic means accesses said I/O cache tag array for address matching.
Claim 6
Dependent Claim 46 words
The I/O cache as set forth in claim 1, wherein, said I/O devices address said main memory in virtual addresses; said I/O cache tag array means stores physical addresses; and said I/O mapper means further comprises translation logic for translating said virtual addresses into physical addresses.

References Cited (Backward Citations)

US4783736A Cited
US4800489A Cited
US4853846A Cited
US5091850A Cited
US5008813A Cited
US5016168A Cited
US5161219A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1996-11-15 1997-05-17 1997-11-16 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2000-11-15 2001-05-17 2001-11-16 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2004-11-15 2005-05-17 2005-11-16 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag