IP Library Granted Patent US 9,710,310
Granted Patent B2
US 9,710,310 · App. 14/827,344 · Granted Jul 18, 2017

Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines

Inventors: Brian M. Bass (Apex, NC); Bartholomew Blaner (Underhill Center, VT); George W. Daly, Jr. (Austin, TX); Jeffrey H. Derby (Chapel Hill, NC); Ross B. Leavens (Cary, NC); Joseph G. McDonald (Raleigh, NC)
Assignee: International Business Machines Corporation
G06F9/5038G06F9/4843G06F9/5027G06F2209/5021
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,710,310
App. No.
14/827,344
Granted
Jul 18, 2017
Kind
B2
Abstract

A computer system having a plurality of processing resources, including a sub-system for scheduling and dispatching processing jobs to a plurality of hardware accelerators, the subsystem further comprising a job requestor, for requesting jobs having bounded and varying latencies to be executed on the hardware accelerators; a queue controller to manage processing job requests directed to a plurality of hardware accelerators; and multiple hardware queues for dispatching jobs to the plurality of hardware acceleration engines, each queue having a dedicated head of queue entry, dynamically sharing a pool of queue entries, having configurable queue depth limits, and means for removing one or more jobs across all queues.

Claims (33)

1. A method of managing processing resources in a computer system in which a plurality of co-processors are used to accelerate processing of certain functions, comprising:

enqueuing a processing job in a queue management system, wherein enqueuing a processing job in a queue management system, comprises:

providing a plurality of registers to create a job controller function to reflect states of predefined variables;

determining whether a job type for an incoming first job request matches a function assigned to one of a plurality of job queues and rejecting the job if the job type does not match;

determining whether a first position in the matching job queue is available if the job type matches the function of one of the plurality of queues;

allocating the first job to the first position of the matching job queue if available or to a second position of the matching job queue if the first position is not available and a floating queue entry is available and the limit is not exceeded;

loading a first register of the plurality of registers with a description of the first job;

asserting an allocation flag for the first job in a second register;

loading a queue position for the first job in a third register;

asserting a last position flag in a fourth register for the first job if the first position is occupied by another job; and

rejecting the job request if none of the plurality of queue entries for the matching job queue are available to accept a job;

scheduling the processing job to execute on one of the plurality of co-processors;

dispatching the processing job from a queue to the one of the plurality of co-processors; and

terminating a processing job in a queue management system in response to a termination request from the queue management system.

2. The method according to claim 1 , wherein dispatching processing jobs from a queue to one of the plurality of co-processors further comprises:

asserting a job completion flag for a first hardware acceleration engine;

determining whether a next job is enqueued in a first position of a queue coupled to the first hardware acceleration engine;

sending job information to the first hardware acceleration engine for the next job;

asserting a job valid flag for the first hardware accleration engine;

deasserting an allocation flag for the first position of the first queue coupled to the first acceleration engine;

determining whether the number of queue entries held in the first queue is at a predefined minimum, wherein

the contents of a last position queue entry register are loaded into a first position queue entry register if the minium number of queue entries is detected, then subtracting one from every queue entry position in the first queue older than the queue entry of the first position queue entry register, else

loading the contents of a first position queue entry register with a null value if the minimum number of queue entries is not detected;

moving every queue entry forward one position in the first queue; and

asserting a last position queue entry register to one in the last queue entry.

3. The method according to claim 1 , wherein terminating a processing job in a queue management system further comprises:

determining whether a job identifier specified in a job termination request matches an identifier for any allocated queue entry, wherein the termination request ends if there is no match;

deasserting an allocation flag in a first register for a queue entry corresponding to the terminated job;

determining whether there are a minimum number of queue entries held in a first queue in which the terminated queue entry was assigned, wherein

the contents of a last position queue entry register are loaded into a first position queue entry register if the minium number of queue entries is detected, then subtracting one from every queue entry position in the first queue older than the queue entry of the first position queue entry register, else

loading the contents of a first position queue entry register with a null value if the minimum number of queue entries is not detected;

subtracting one from every queue entry position in the first queue loaded before the queue entry residing in the first position queue entry register; and

asserting a last position queue entry register to one in the last queue entry.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 17, 2015
From: BASS, BRIAN M.; BLANER, BARTHOLOMEW; DALY, GEORGE W., JR.; DERBY, JEFFREY H.; LEAVENS, ROSS B.; MCDONALD, JOSEPH G.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 036335/0198 →
Continuity (2)
Division 13323914 · Dec 13, 2011
Related Publication 20150355948A1 · Dec 10, 2015