G06F2205/065

Bypass FIFO for multiple virtual channels
09824058 · 2017-11-21 · ·

A group of low-level FIFOs may be logically bound together to form a super-FIFO. The super-FIFO may treat each low-level FIFO as a storage location. The super-FIFO may enable a push to (or a pop from) every low-level FIFO, simultaneously. The super-FIFO may enable a virtual channel (VC) to use the super-FIFO, bypassing a VC FIFO for the VC, removing several cycles of latency otherwise needed for enqueuing and dequeuing messages in the VC FIFO. In addition, the super-FIFO may enable bypassing of an arbiter, further reducing latency by avoiding a penalty of the arbiter.

Hybrid FIFO buffer

A first-in/first-out (FIFO) buffer includes at least one latch-based FIFO storage line, an input flip-flop stage upstream of the at least one latch-based storage line, an output flip-flop stage downstream of the at least one latch-based storage line. The output flip-flop stage functions as an additional storage line. Clock-gating circuitry separate from the device clock controls timing of the at least one latch-based FIFO storage line, the input flip-flop stage, and the output flip-flop stage. The input flip-flop stage functions as a second additional storage line, or as an input sampling stage. Optional bypass circuitry between the input flip-flop stage and the output flip-flop stage passes data for a storage line directly to the output flip-flop stage, without passing through the at least one latch-based storage line, when the buffer is empty.

Short duration serialization express queue

A method for allocating a resource to multiple requesters is disclosed. In one embodiment, such a method includes maintaining, for a resource, a regular queue and an express queue. The method receives requests to control the resource and determines, for each request, an anticipated amount of time that the request needs to control the resource. In the event the anticipated amount of time for a request is greater than a selected threshold, the method allocates the request to the regular queue. In the event the anticipated amount of time for a request is less than the selected threshold, the method allocates the request to the express queue. The method provides priority to requests allocated to the express queue over requests allocated to the regular queue. A corresponding system and computer program product are also disclosed.

SHORT DURATION SERIALIZATION EXPRESS QUEUE

A method for allocating a resource to multiple requesters is disclosed. In one embodiment, such a method includes maintaining, for a resource, a regular queue and an express queue. The method receives requests to control the resource and determines, for each request, an anticipated amount of time that the request needs to control the resource. In the event the anticipated amount of time for a request is greater than a selected threshold, the method allocates the request to the regular queue. In the event the anticipated amount of time for a request is less than the selected threshold, the method allocates the request to the express queue. The method provides priority to requests allocated to the express queue over requests allocated to the regular queue. A corresponding system and computer program product are also disclosed.

Wide elastic buffer

A receiving device uses an elastic buffer that is wider than the number of data elements transferred in each cycle. To compensate for frequency differences between the transmitter and the receiver, the transmitting device periodically sends a skip request with a default number of skip data elements. If the elastic buffer is filling, the receiving device ignores one or more of the skip data elements. If the elastic buffer is emptying, the receiving device adds one or more skip data elements to the skip request. To maintain the ordering of data despite the manipulation of the skip data elements, two rows of the wide elastic buffer are read at a time. This allows construction of a one-row result from any combination of the data elements of the two rows. The column pointers are adjusted appropriately, to ensure that they continue to point to the next data to be read.