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

System for placing entries of an outstanding processor request into a free pool after the request is accepted by a corresponding peripheral device

Assignee: Microunity Systems Engineering Inc
•
Filing: 1995-06-07
•
Granted: 1998-04-07
•
Expires: 2015-06-07
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A non-blocking load buffer is provided for use in a high-speed microprocessor and memory system. The non-blocking load buffer interfaces a high-speed processor/cache bus, which connects a processor and a cache to the non-blocking load buffer, with a lower speed peripheral bus, which connects to peripheral devices. The non-blocking load buffer allows data to be retrieved from relatively low bandwidth peripheral devices directly from programmed I/O of the processor at the maximum rate of the peripherals so that the data may be processed and stored without unnecessarily idling the processor. I/O requests from several processors within a multiprocessor may simultaneously be buffered so that a plurality of non-blocking loads may be processed during the latency period of the device. As a result, a continuous maximum throughput from multiple I/O devices by the programmed I/O of the processor is achieved and the time required for completing tasks and processing data may be reduced. Also, a multiple priority non-blocking load buffer is provided for serving a multiprocessor running real-time processes of varying deadlines by prioritization-based scheduling of memory and peripheral accesses.

Inventors

  • 👤 William K. Zuravleff
  • 👤 Mark Semmelmeyer
  • 👤 Timothy Robinson
  • 👤 Scott Furman

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-30 18:50
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/38; G06F9/3824

Claims Analysis

Total Claims: 29
Claim 1
Independent Claim 97 words
In a data processing system including one or more requesting processors that generate processor requests directed to one or more peripheral devices, a non-blocking load buffer, comprising: a plurality of variable depth pending queues corresponding to each one of the plurality of peripheral devices for queuing entries of processor requests; a variable length return queuing unit for queuing data returned from said peripheral devices in response to an outstanding processor request; and a free pool of entries for placing entries of the outstanding processor request, after the outstanding processor request is accepted by a corresponding peripheral device.
Claim 2
Dependent Claim 97 words
In a data processing system including one or more requesting processors that generate processor requests directed to one or more peripheral devices, a non-blocking load buffer, comprising: a plurality of variable depth pending queues corresponding to each one of the plurality of peripheral devices for queuing entries of processor requests; a variable length return queuing unit for queuing data returned from said peripheral devices in response to an outstanding processor request; and a free pool of entries for placing entries of the outstanding processor request, after the outstanding processor request is accepted by a corresponding peripheral device.
Claim 3
Dependent Claim 21 words
A non-blocking load buffer according to claim 1, wherein said variable length return queuing unit comprises one variable length return queue.
Claim 4
Dependent Claim 23 words
A non-blocking load buffer according to claim 1, wherein said variable length return queuing unit comprises a plurality of variable length return queues.
Claim 5
Dependent Claim 25 words
A non-blocking load buffer according to claim 3, wherein each of said plurality of variable length return queues corresponds to each of said requesting processors.
Claim 6
Dependent Claim 25 words
A non-blocking load buffer according to claim 3, wherein each of said plurality of variable length return queues corresponds to each of said peripheral devices.
Claim 7
Dependent Claim 24 words
A non-blocking load buffer according to claim 3, wherein each of said plurality of variable length return queues corresponds to a unique priority level.
Claim 8
Dependent Claim 30 words
A non-blocking load buffer according to claim 1, wherein each of said pending queues include a plurality of sub-queues, wherein each of said sub-queues is assigned a unique priority level.
Claim 9
Dependent Claim 54 words
A non-blocking load buffer according to claim 7, wherein said processor requests include an address and a priority tag, said address directs said processor requests to a corresponding one of said pending queues and said priority tag channels said processor requests to a corresponding one of said sub-queues within the one said pending queue.
Claim 10
Dependent Claim 32 words
A non-blocking load buffer according to claim 8, wherein each of said pending queues comprises a priority controller for issuing the processor requests from said sub-queues in a highest priority first manner.
Claim 11
Dependent Claim 89 words
A multiple priority non-blocking load buffer comprising: a variable depth pending queue for queuing entries of memory or I/O requests generated by a processor to peripheral devices, said pending queue including a plurality of sub-queues with each sub-queue having a unique priority level assigned thereto; a variable length return queuing unit for queuing data returned from said peripheral devices in response to an outstanding memory or I/O request; and a free pool of entries for placing entries of the outstanding I/O request, after the outstanding I/O request is accepted.
Claim 12
Dependent Claim 89 words
A multiple priority non-blocking load buffer comprising: a variable depth pending queue for queuing entries of memory or I/O requests generated by a processor to peripheral devices, said pending queue including a plurality of sub-queues with each sub-queue having a unique priority level assigned thereto; a variable length return queuing unit for queuing data returned from said peripheral devices in response to an outstanding memory or I/O request; and a free pool of entries for placing entries of the outstanding I/O request, after the outstanding I/O request is accepted.
Claim 13
Dependent Claim 23 words
A multiple priority non-blocking load buffer according to claim 10, wherein said variable length return queuing unit comprises one variable length return queue.
Claim 14
Dependent Claim 25 words
A multiple priority non-blocking load buffer according to claim 10, wherein said variable length return queuing unit comprises a plurality of variable length return queues.
Claim 15
Dependent Claim 27 words
A multiple priority non-blocking load buffer according to claim 12, wherein each of said plurality of variable length return queues corresponds to each of said peripheral devices.
Claim 16
Dependent Claim 26 words
A multiple priority non-blocking load buffer according to claim 12, wherein each of said plurality of variable length return queues corresponds to a unique priority level.
Claim 17
Dependent Claim 36 words
A multiple priority non-blocking load buffer according to claim 10, wherein said memory or I/O requests include a priority tag, said priority tag channels said memory or I/O requests to a corresponding one of said sub-queues.
Claim 18
Dependent Claim 34 words
A multiple priority non-blocking load buffer according to claim 15, wherein said pending queue comprises a priority controller for issuing said memory or I/O requests from said sub-queues in a highest priority first manner.
Claim 19
Dependent Claim 53 words
A non-blocking load buffer according to claim 7, wherein a maximum number of outstanding processor requests is specified for said unique priority level in each of said sub-queues which prevents entries of processor requests having low priority levels from using one of said sub-queues before entries of processor requests having higher priority levels.
Claim 20
Dependent Claim 57 words
A non-blocking load buffer according to claim 1, wherein priorities corresponding to the entries of processor requests are determined by logical memory addresses, control bits derived from a memory management page table, control bits derived from segmentation entries, virtual addresses of a memory management system, programmable registers which set priorities for each processor, instructions, or instruction operand.
Claim 21
Dependent Claim 61 words
A multiple priority non-blocking load buffer according to claim 10, wherein a maximum number of outstanding memory or I/O requests is specified for said unique priority level in each of said sub-queues which prevents entries of memory or I/O requests having low priority levels from using one of said sub-queues before entries of memory or I/O requests having higher priority levels.
Claim 22
Dependent Claim 59 words
A multiple priority non-blocking load buffer according to claim 10, wherein priorities corresponding to entries of memory or requests are determined by logical memory addresses, control bits derived from a memory management page table, control bits derived from segmentation entries, virtual addresses of a memory management system, programmable registers which set priorities for each processor, instructions, or instruction operand.
Claim 23
Dependent Claim 26 words
A non-blocking load buffer according to claim 1, wherein the variable depth pending queues queue the entries of processor requests using the free pool of entries.
Claim 24
Dependent Claim 19 words
The data processing system according to claim 1, wherein the non-blocking processor requests are generated by running real-time processes.
Claim 25
Dependent Claim 33 words
The data processing system according to claim 1, wherein the processor requests are prioritized in the pending queues such that the higher priority processor requests are processed before the lower priority processor requests.
Claim 26
Dependent Claim 34 words
The data processing system according to claim 23, wherein the pending queues are prioritized such that the higher priority pending queues have a higher number of maximum entries than the lower priority pending queues.
Claim 27
Dependent Claim 46 words
The data processing system according to claim 1, wherein the one or more requesting processors generate the processor requests over a first bus, and wherein the peripheral devices accept the processor requests over a second bus that has a different bus bandwidth from the first bus.
Claim 28
Dependent Claim 23 words
The data processing system according to claim 25, wherein the entries include pointers that point to memory locations on a shared memory device.
Claim 29
Dependent Claim 49 words
The data processing system according to claim 26, wherein the processor requests include control information, addresses and data, and wherein the shared memory device is partitioned for storing the address and control information in a first memory array and for storing the data in a second separate memory array.

USPTO Annuity & Maintenance Windows

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

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag