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

Coherency and synchronization mechanisms for I/O channel controllers in a data processing system

Assignee: International Business Machines Corp
•
Filing: 1994-10-03
•
Granted: 1997-03-18
•
Expires: 2014-10-03
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract An I/O channel controller implements coherency and synchronization mechanisms, which allow the I/O channel controller to provide fully coherent direct memory access operations on a multiprocessor system bus, without implementing a retry protocol. This is made possible by performing delayed cache invalidates for real-time cache coherency conflicts between processors and I/O devices. Furthermore, I/O DMA writes occur real-time to the memory system and without the traditional Read With Intent to Modify (RWITM) operations. Completion of PIO operations has been coupled to the completion of I/O DMA writes operations in order to provide "seamless" I/O synchronization with respect to processor execution. An IOCC implementation has been described which benefits from those techniques by significantly reducing design complexity.

Inventors

  • 👤 Ravi K. Arimilli
  • 👤 John S. Dodson
  • 👤 Guy L. Guthrie
  • 👤 Jerry D. Lewis

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-08 16:09
CPC Classifications
G; G06; G06F; G06F12/00; G06F12/02; G06F12/08; G06F12/0802; G06F12/0806; G06F12/0815; G06F12/0831; G06F12/0835; G06F15/00; G06F15/16; G06F13/00; G06F13/14; G06F13/20; G06F13/28; G06F13/38; G06F13/40; G06F13/4004; G06F13/4027; G06F13/405; G06F13/4059

Claims Analysis

Total Claims: 18
Claim 1
Independent Claim 86 words
An input/output ("I/O") channel controller, comprising: an I/O bus controller adaptable for coupling to an I/O bus; a system bus controller adaptable for coupling said I/O channel controller to a system bus; one or more data caches; and a cache controller coupled to said one or more data caches, said cache controller coupled to said system bus controller, wherein said I/O bus controller, said system bus controller, said one or more data caches, and said cache controller are all located coextensively with said I/O channel controller.
Claim 2
Dependent Claim 86 words
An input/output ("I/O") channel controller, comprising: an I/O bus controller adaptable for coupling to an I/O bus; a system bus controller adaptable for coupling said I/O channel controller to a system bus; one or more data caches; and a cache controller coupled to said one or more data caches, said cache controller coupled to said system bus controller, wherein said I/O bus controller, said system bus controller, said one or more data caches, and said cache controller are all located coextensively with said I/O channel controller.
Claim 3
Dependent Claim 39 words
The I/O channel controller as recited in claim 1, wherein said one or more data caches further comprises: a read data cache coupled to said cache controller; and an I/O read data cache directory coupled to said cache controller.
Claim 4
Dependent Claim 56 words
The I/O channel controller as recited in claim 2, further comprising a means adaptable for coupling a multiprocessing system to said I/O channel controller via said system bus, and wherein said read data cache further comprises: means for indicating that a stored cache line is the current version of said cache line in said multiprocessing system.
Claim 5
Dependent Claim 52 words
The I/O channel controller as recited in claim 3, further comprising a means adaptable for coupling an I/O device to said I/O channel controller via said I/O bus, and wherein said read data cache further comprises: means for indicating that a stored cache line is currently being accessed by said I/O device.
Claim 6
Dependent Claim 43 words
The I/O channel controller as recited in claim 4, wherein said read data cache further comprises: means for indicating that said stored cache line previously accessed by said I/O device is not the current version of said cache line in said multiprocessing system.
Claim 7
Dependent Claim 29 words
The I/O channel controller as recited in claim 2, further comprising: means for implementing page level snooping of said I/O read data cache directory coupled to said cache controller.
Claim 8
Dependent Claim 193 words
A multiprocessing system, comprising: one or more processors; system memory; a memory controller coupled to said system memory; an I/O channel controller coupled to an I/O bus; a system controller coupled to said one or more processors, said memory controller, and said I/O channel controller; and a system bus comprising an address bus and a data bus, said system bus coupled to said one or more processors, said memory controller, and said I/O channel controller, wherein said I/O channel controller further comprises: an I/O bus controller coupled to said I/O bus; a system bus controller coupled to said system bus; a cache controller coupled to said system bus controller; a read data cache coupled to said cache controller; an I/O read data cache directory coupled to said cache controller; means for indicating that a stored cache line is the current version of said cache line in said multiprocessing system; means for indicating that said stored cache line is currently being accessed by said I/O device; and means for indicating that said stored cache line previously accessed by said I/O device is not the current version of said cache line in said multiprocessing system.
Claim 9
Dependent Claim 193 words
A multiprocessing system, comprising: one or more processors; system memory; a memory controller coupled to said system memory; an I/O channel controller coupled to an I/O bus; a system controller coupled to said one or more processors, said memory controller, and said I/O channel controller; and a system bus comprising an address bus and a data bus, said system bus coupled to said one or more processors, said memory controller, and said I/O channel controller, wherein said I/O channel controller further comprises: an I/O bus controller coupled to said I/O bus; a system bus controller coupled to said system bus; a cache controller coupled to said system bus controller; a read data cache coupled to said cache controller; an I/O read data cache directory coupled to said cache controller; means for indicating that a stored cache line is the current version of said cache line in said multiprocessing system; means for indicating that said stored cache line is currently being accessed by said I/O device; and means for indicating that said stored cache line previously accessed by said I/O device is not the current version of said cache line in said multiprocessing system.
Claim 10
Dependent Claim 22 words
The multiprocessing system as recited in claim 7, wherein each of said indicating means are located coextensively with said I/O channel controller.
Claim 11
Dependent Claim 327 words
In a data processing system comprising one or more processors, system memory, a memory controller coupled to said system memory, an I/O channel controller coupled to an I/O bus, and a system bus comprising an address bus and a data bus, said system bus coupled to said one or more processors, said memory controller, and said I/O channel controller, wherein said I/O channel controller further comprises an I/O bus controller coupled to said I/O bus, a system bus controller coupled to said system bus, a cache controller coupled to said system bus controller, a data cache coupled to said cache controller, and a data cache directory coupled to said cache controller, a method comprising the steps of: granting said I/O bus to an I/O device; in response to a request from said I/O device, transferring, from said I/O bus controller to said system bus controller, a request for a portion of data stored within said system memory; searching said data cache directory for an address corresponding to said portion of data to determine if said portion of data is stored within said data cache; if said address corresponding to said portion of data is in said data cache directory, determining if said portion of data stored within said data cache is a copy of the current version of said portion of data; if said portion of data stored within said data cache is a copy of the current version of said portion of data, setting an indication that said portion of data stored within said data cache is actively being accessed by said I/O device; providing access to said portion of data stored within said data cache to said I/O device; snooping, by said system bus controller, of said system bus; and if said system bus controller has a snoop hit, setting an indication that said portion of data stored within said data cache is not a copy of the current version of said portion of data.
Claim 12
Dependent Claim 327 words
In a data processing system comprising one or more processors, system memory, a memory controller coupled to said system memory, an I/O channel controller coupled to an I/O bus, and a system bus comprising an address bus and a data bus, said system bus coupled to said one or more processors, said memory controller, and said I/O channel controller, wherein said I/O channel controller further comprises an I/O bus controller coupled to said I/O bus, a system bus controller coupled to said system bus, a cache controller coupled to said system bus controller, a data cache coupled to said cache controller, and a data cache directory coupled to said cache controller, a method comprising the steps of: granting said I/O bus to an I/O device; in response to a request from said I/O device, transferring, from said I/O bus controller to said system bus controller, a request for a portion of data stored within said system memory; searching said data cache directory for an address corresponding to said portion of data to determine if said portion of data is stored within said data cache; if said address corresponding to said portion of data is in said data cache directory, determining if said portion of data stored within said data cache is a copy of the current version of said portion of data; if said portion of data stored within said data cache is a copy of the current version of said portion of data, setting an indication that said portion of data stored within said data cache is actively being accessed by said I/O device; providing access to said portion of data stored within said data cache to said I/O device; snooping, by said system bus controller, of said system bus; and if said system bus controller has a snoop hit, setting an indication that said portion of data stored within said data cache is not a copy of the current version of said portion of data.
Claim 13
Dependent Claim 66 words
The method as recited in claim 9, further comprising the steps of: relinquishing, by said I/O device, of said I/O bus; notifying, by said I/O bus controller, said system bus controller that data cache access to said portion of data is no longer required; and resetting said indication that said portion of data stored within said data cache is actively being accessed by said I/O device.
Claim 14
Dependent Claim 17 words
The method as recited in claim 9, wherein said snooping is performed on a page level basis.
Claim 15
Dependent Claim 181 words
In a data processing system comprising one or more processors, system memory, a memory controller coupled to said system memory, an I/O channel controller coupled to an I/O bus, and a system bus comprising an address bus and a data bus, said system bus coupled to said one or more processors, said memory controller, and said I/O channel controller, wherein said I/O channel controller further comprises an I/O bus controller coupled to said I/O bus, a system bus controller coupled to said system bus, a cache controller coupled to said system bus controller, a data cache coupled to said cache controller, and a data cache directory coupled to said cache controller, a method comprising the steps of completing, by said I/O bus device, a data transfer to said system memory; interrupting said one or more processors; said one or more processors sending a status request message to said I/O bus device; flushing, by said I/O channel controller, of said data cache; and sending a response, to said one or more processors sending said status request message, to said status request message.
Claim 16
Dependent Claim 181 words
In a data processing system comprising one or more processors, system memory, a memory controller coupled to said system memory, an I/O channel controller coupled to an I/O bus, and a system bus comprising an address bus and a data bus, said system bus coupled to said one or more processors, said memory controller, and said I/O channel controller, wherein said I/O channel controller further comprises an I/O bus controller coupled to said I/O bus, a system bus controller coupled to said system bus, a cache controller coupled to said system bus controller, a data cache coupled to said cache controller, and a data cache directory coupled to said cache controller, a method comprising the steps of completing, by said I/O bus device, a data transfer to said system memory; interrupting said one or more processors; said one or more processors sending a status request message to said I/O bus device; flushing, by said I/O channel controller, of said data cache; and sending a response, to said one or more processors sending said status request message, to said status request message.
Claim 17
Dependent Claim 563 words
In a data processing system comprising a plurality of microprocessors, system memory, a memory controller coupled to said system memory, an I/O channel controller coupled to an I/O bus, and a system bus comprising an address bus and a data bus, said system bus coupled to said plurality of microprocessors, said memory controller, and said I/O channel controller, wherein said I/O channel controller further comprises an I/O bus controller coupled to said I/O bus, a system bus controller coupled to said system bus, a cache controller coupled to said system bus controller, a read-only data cache coupled to said cache controller, and a read-only data cache directory coupled to said cache controller, a method comprising of steps of: granting said I/O bus to an I/O device coupled to said I/O channel controller; in response to a request from said I/O device, transferring from said I/O bus controller to said system bus controller a request for a portion of data stored within said system memory; searching by said system bus controller of said read-only data cache directory in said I/O channel controller for an address corresponding to said portion of data to determine if said portion of data is stored within said read-only data cache; if said address corresponding to said portion of data is in said read-only data cache directory, determining if said portion of data stored within said read-only data cache is a copy of the most current version of said portion of data; notifying said I/O bus controller by said system bus controller that said portion of data is stored within said read-only data cache and is a copy of the most current version of said portion of data; if said portion of data stored within said read-only data cache is a copy of the most current version of said portion of data, setting an indication within said I/O channel controller that said portion of data stored within said read-only data cache is actively being accessed by said I/O device; providing access to said portion of data stored within said read-only data cache to said I/O device; snooping, by said system bus controller within said I/O channel controller, of said system bus; if said system bus controller within said I/O channel controller has a snoop hit on an address pertaining to said portion of data, and said portion of data stored within said read-only data cache is a copy of the most current version of said portion of data, and said portion of data stored within said read-only data cache is currently being accessed by said I/O device, setting an indication within said I/O channel controller that said portion of data stored within said read-only data cache is not a copy of the most current version of said portion of data; completion by said I/O bus device of data cache access to said portion of data; notifying, by said I/O bus controller, said system bus controller within said I/O channel controller that data cache access to said portion of data is no longer required by said I/O bus device; resetting of said indication that said portion of data stored within said read-only data cache is actively being accessed by said I/O device; and resetting of said indication that said portion of data stored within said data cache is not a copy of the most current version of said portion of data.
Claim 18
Dependent Claim 563 words
In a data processing system comprising a plurality of microprocessors, system memory, a memory controller coupled to said system memory, an I/O channel controller coupled to an I/O bus, and a system bus comprising an address bus and a data bus, said system bus coupled to said plurality of microprocessors, said memory controller, and said I/O channel controller, wherein said I/O channel controller further comprises an I/O bus controller coupled to said I/O bus, a system bus controller coupled to said system bus, a cache controller coupled to said system bus controller, a read-only data cache coupled to said cache controller, and a read-only data cache directory coupled to said cache controller, a method comprising of steps of: granting said I/O bus to an I/O device coupled to said I/O channel controller; in response to a request from said I/O device, transferring from said I/O bus controller to said system bus controller a request for a portion of data stored within said system memory; searching by said system bus controller of said read-only data cache directory in said I/O channel controller for an address corresponding to said portion of data to determine if said portion of data is stored within said read-only data cache; if said address corresponding to said portion of data is in said read-only data cache directory, determining if said portion of data stored within said read-only data cache is a copy of the most current version of said portion of data; notifying said I/O bus controller by said system bus controller that said portion of data is stored within said read-only data cache and is a copy of the most current version of said portion of data; if said portion of data stored within said read-only data cache is a copy of the most current version of said portion of data, setting an indication within said I/O channel controller that said portion of data stored within said read-only data cache is actively being accessed by said I/O device; providing access to said portion of data stored within said read-only data cache to said I/O device; snooping, by said system bus controller within said I/O channel controller, of said system bus; if said system bus controller within said I/O channel controller has a snoop hit on an address pertaining to said portion of data, and said portion of data stored within said read-only data cache is a copy of the most current version of said portion of data, and said portion of data stored within said read-only data cache is currently being accessed by said I/O device, setting an indication within said I/O channel controller that said portion of data stored within said read-only data cache is not a copy of the most current version of said portion of data; completion by said I/O bus device of data cache access to said portion of data; notifying, by said I/O bus controller, said system bus controller within said I/O channel controller that data cache access to said portion of data is no longer required by said I/O bus device; resetting of said indication that said portion of data stored within said read-only data cache is actively being accessed by said I/O device; and resetting of said indication that said portion of data stored within said data cache is not a copy of the most current version of said portion of data.

References Cited (Backward Citations)

US5045996A Cited
US5175826A Cited
US5146603A Cited
US5097532A Cited
US5404483A Cited
US5367660A Cited
US5428761A Cited
US5353425A Cited
US5353415A Cited
US5434997A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2000-03-17 2000-09-16 2001-03-18 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2004-03-17 2004-09-16 2005-03-18 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2008-03-17 2008-09-16 2009-03-18 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag