Systems and methods for moving data between system components
AssigneeMicrosoft Technology Licensing, LLC
InventorJohn A. TARDIF
Life of this patent
Estimating the term…
Abstract
Embodiments of the present disclosure include techniques for moving data between electronic system components using buffers. A digital processor stores data generated in response to a series of commands in a first buffer. Commands are received with a reference to a second buffer. The digital processor tracks the last location that a data result was stored in the first buffer. When a data result fills the buffer, the remaining data is automatically stored in the second buffer. Downstream devices may empty full buffers. A client may receive an indication that a buffer is empty and subsequently send commands with a reference to empty buffer.
Claims21
1-20. (canceled)
A system comprising:
- memory comprising a first buffer and a second buffer;
- a digital processor that, in operation, receives a plurality of commands, the plurality of commands comprising a first command that includes a destination buffer identifier specifying the second buffer as an overflow buffer and a subsequent command that includes a continue-write indicator indicating that writing is to continue using a previously stored destination buffer identifier, the digital processor stores a plurality of data results produced by the plurality of commands in the first buffer and the second buffer by:
- storing the destination buffer identifier from the first command;
- in response to the continue-write indicator, continuing to write to the first buffer and using the destination buffer identifier to identify the overflow buffer;
- tracking a last location within the first buffer of a particular data result of the plurality of data results;
- storing a particular subsequent data result of the plurality of data results, after the particular data result, at a location after the last location within the first buffer, and responsive to a data result of the plurality of data results filling the first buffer, automatically storing a remainder of the data result and subsequent data in the second buffer using the destination buffer identifier.
A method comprising:
- receiving, in a digital processor, a plurality of commands;
- storing, by the digital processor, a plurality of data results produced by the plurality of commands in a first buffer and a second buffer of a memory, wherein individual commands of the plurality of commands independently include a destination buffer identifier specifying the second buffer as an overflow buffer;
- tracking, for the plurality of data results, a last location within the first buffer of a particular data result of the plurality of data results;
- storing a particular subsequent data result of the plurality of data results, after the particular data result, at a location after the last location within the first buffer;
- and
- responsive to a data result of the plurality of data results filling the first buffer, automatically storing a remainder of the data result and subsequent data results in the second buffer using the destination buffer identifier.
A method comprising:
- receiving, in an accelerator, a plurality of commands from a software client, the plurality of commands producing a plurality of data results having non-deterministic output sizes, wherein the commands are issued from the software client to the accelerator without waiting, in the software client, for an indication that the commands are done executing;
- storing, by the accelerator, the plurality of data results contiguously in a first buffer and a second buffer of a memory by tracking a last location within the first buffer of a particular data result of the plurality of data results;
- storing a particular subsequent data result of the plurality of data results, after the particular data result, at a location after the last location within the first buffer;
- responsive to a data result of the plurality of data results filling the first buffer, automatically storing a remainder of the data result in the second buffer and tracking successive locations in the second buffer;
- and
- storing subsequent data results after the data result sequentially in the second buffer, wherein data is stored sequentially across multiple buffers.
Dependencies are inferred from the claim text.