Browse Prior Art Database

Method and System for Managing Non-Blocking Multi-Level Resource Dependency for Multiple Operation Queues

IP.com Disclosure Number: IPCOM000234737D
Publication Date: 2014-Jan-31
Document File: 3 page(s) / 141K

Publishing Venue

The IP.com Prior Art Database

Abstract

A method and system is disclosed for managing non-blocking multi-level resource dependency for multiple operation queues.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 51% of the total text.

Page 01 of 3

Method and System for Managing Non-Blocking Multi-Level Resource Dependency for Multiple Operation Queues

Current designs include several command queues feeding a single processing pipeline and several fetch engines. Commands in the queues are issued in a round-robin fashion once all dependencies for the given commands are cleared. A

pipeline can arbitrate between the queues in a round-robin fashion accepting one command at a time. Once a command is accepted, the pipeline interrogates a directory to determine if the object of the command is available and not protected, so that the command is acted upon immediately. The pipeline interrogates the directory to also determine if the object of the command is available but is protected, so that the command is rejected with a dependency on an engine protecting the specific object. Further, the pipeline interrogates the directory to also determine if the object of the command is unavailable, so that the command is rejected pending the completion of fetch engines retrieving the object and the queue is notified of the availability.

If the volume of commands increases, eventually a point is reached where all the available fetch engines are busy. Due to unavailability of the fetch engines, the commands begin to back-up in the queues and wait for either a specific object or a fetch engine to become available. As objects are free and engines complete the job, dependencies can clear and commands can proceed. However, the delay between an object/engine becoming free and queues becoming aware of the fact is a window of time within which a new command gains control of the object/engine over older commands waiting for a resource. Theoretically, considering a constant stream of new commands, one or more existing commands can remain in the queue indefinitely. Generally, commands are presented to the pipeline from any given queue in no particular order. Dependencies for a given command are not determined until after the command is initially accepted into the pipeline and a directory interrogation occurs. None of the accommodation is made to account for new commands when a resource is free.

Disclosed is a method and system for managing non-blocking multi-level resource dependency for multiple operation queues. The method and system ensures that new commands are issued to a pipeline for initial interrogation without older commands waiting on dependencies becoming inadvertently starved. The method and system in order to cover the command dependencies enables each queue to maintain an ordering mechanism such that each queue always issues the oldest eligible (no dependencies) command in the queue to the pipeline. The method and system enables each active engine to protect the specific object on which the active engine is acting upon. Thereafter, the pipeline is informed regarding subsequent commands with dependencies on the specific objec...