Building a run list for a coprocessor based on rules when the coprocessor switches from one context to another context

US9298498B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9298498-B2
Application numberUS-17291008-A
CountryUS
Kind codeB2
Filing dateJul 14, 2008
Priority dateFeb 18, 2003
Publication dateMar 29, 2016
Grant dateMar 29, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Techniques for minimizing coprocessor “starvation,” and for effectively scheduling processing in a coprocessor for greater efficiency and power. A run list is provided allowing a coprocessor to switch from one task to the next, without waiting for CPU intervention. A method called “surface faulting” allows a coprocessor to fault at the beginning of a large task rather than somewhere in the middle of the task. DMA control instructions, namely a “fence,” a “trap” and a “enable/disable context switching,” can be inserted into a processing stream to cause a coprocessor to perform tasks that enhance coprocessor efficiency and power. These instructions can also be used to build high-level synchronization objects. Finally, a “flip” technique is described that can switch a base reference for a display from one location to another, thereby changing the entire display surface.

First claim

Opening claim text (preview).

What is claimed is: 1. A method for scheduling coprocessor contexts for processing in a coprocessor, comprising: a central processing unit (CPU) generating a run list comprising a list of coprocessor contexts for processing by the coprocessor; delivering the run list to a scheduler, the scheduler preparing the contexts on the run list for processing by the coprocessor, the coprocessor beginning to process a first context of the run list based on an order indicated in the run list; while processing the first context, determining, by the coprocessor, that a switching event has occurred, the switching event comprising a page fault in the coprocessor processing the first context, a general protection fault in the coprocessor processing the first context, or a determination that there is not another item in the run list; switching, by the coprocessor, to a next context in a second run list in response to the coprocessor determining that the switching event has occurred, the coprocessor switching to the next context independently of intervention from the CPU, wherein the scheduler generates the second run list based on one or more rules including: excluding the first context of the run list from appearing in the second run list, and wherein a second context of the run list is a first context of the second run list; signaling the CPU with a first interrupt signal based at least upon the coprocessor switching from one context in the run list to a next context in the run list, the CPU building said second run list for the coprocessor in response to the CPU receiving the first interrupt signal from the coprocessor; and signaling the CPU with a second interrupt signal based at least upon the processor switching from the run list to the second run list, the CPU building a third run list for the coprocessor in response to the CPU receiving the second interrupt signal from the coprocessor. 2. A method according to claim 1 , wherein the coprocessor is a graphics processing unit (GPU). 3. The method of claim 1 , wherein the second run list has a different order of contexts than the run list, whereby the scheduler can initiate a change in the order of contexts to be processed by the coprocessor based at least upon processing contexts in the second run list. 4. The method of claim 3 , wherein the second context of the run list is placed in a location within the second run list such that the second context is not executed first within the second run list, and further comprising: determining to include a third context of the run list in the second run list because the third context is in a location within the second run list such that the first context is executed first within the second run list. 5. The method of claim 1 , further comprising: storing information regarding a history of coprocessor switches from context to context in a specified system memory location readable by the scheduler. 6. The method of claim 5 , wherein the system memory location readable by the scheduler is a history buffer available to said coprocessor only. 7. The method of claim 5 , wherein the history buffer comprises sufficient memory to store at least twice the amount of information required to store the run list. 8. The method of claim 5 , further comprising: specifying a coprocessor write pointer, which indicates a location in the history buffer where the coprocessor can write new information. 9. A computer readable device, wherein the computer readable device is not a signal, comprising computer executable instructions that based at least upon execution by a computer, cause the computer to perform operations comprising: a central processing unit (CPU) generating a run list comprising a list of coprocessor contexts for processing by a coprocessor; delivering the run list to a scheduler, the scheduler preparing the contexts on the run list for processing by the coprocessor, the coprocessor beginning to process a first context of the run list based on an order indicated in the run list; while processing the first context, determining, by the coprocessor, that a switching event has occurred, the switching event comprising a page fault in the coprocessor processing the first context, a general protection fault in the coprocessor processing the first context, or a determination that there is not another item in the run list; switching, by the coprocessor, to a next context in a second run list in response to the coprocessor determining that the switching event has occurred, the coprocessor switching to the next context independently of intervention from the CPU, wherein the scheduler generates the second run list based on one or more rules including: excluding the first context of the run list from appearing in the second run list, and wherein a second context of the run list is a first context of the second run list; signaling the CPU with a first interrupt signal based at least upon the coprocessor switching from one context in the run list to a next context in the run list, the CPU building said second run list for the coprocessor in response to the CPU receiving the first interrupt signal from the coprocessor; and signaling the CPU with a second interrupt signal based at least upon the processor switching from the run list to the second run list, the CPU building a third run list for the coprocessor in response to the CPU receiving the second interrupt signal from the coprocessor. 10. The computer-readable device of claim 9 , further comprising computer executable instructions that based at least upon execution by the computer, cause the computer to perform operations comprising: storing information regarding a history of coprocessor switches from context to context in a specified system memory location readable by the scheduler. 11. The computer-readable device of claim 9 , wherein a system memory location readable by the scheduler is a history buffer available to said coprocessor only. 12. The computer-readable device of claim 11 , wherein the history buffer comprises sufficient memory to store at least twice the amount of information required to store the run list. 13. The computer-readable device of claim 9 , wherein the page fault in the coprocessor processing the first context comprises: a page fault that occurs to a context that references an invalid ring buffer or an invalid DMA buffer. 14. A system, comprising: a processor; a coprocessor; a scheduler; and a memory communicatively coupled to the processor, the memory bearing processor-executable instructions that, based at least upon execution by the processor, cause the system at least to: cause the processor to generate a run list comprising a list of coprocessor contexts for processing by the coprocessor; deliver the run list to the scheduler, the scheduler preparing the contexts on the run list for processing by the coprocessor, the coprocessor beginning to process a first context of the run list based on an order indicated in the run list; while processing the first context, determine, by the coprocessor, that a switching event has occurred, the switching event comprising a page fault in the coprocessor processing the first context, a general protection fault in the coprocessor processing the first context, or a determination that there is not another item in the run list; switch, by the coprocessor, to a next context in a second run list in response to the coprocessor determining that the switching event has occurred, the coprocessor switching to the next context independently of intervention from the processor, wherein the scheduler generates the second run list based on one or more r

Assignees

Inventors

Classifications

  • G06F9/5016Primary

    the resource being the memory · CPC title

  • Buffers; Shared memory; Pipes · CPC title

  • G06F9/4843Primary

    by program, e.g. task dispatcher, supervisor, operating system · CPC title

  • Synchronisation or serialisation instructions · CPC title

  • Saving or restoring of program or task context · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9298498B2 cover?
Techniques for minimizing coprocessor “starvation,” and for effectively scheduling processing in a coprocessor for greater efficiency and power. A run list is provided allowing a coprocessor to switch from one task to the next, without waiting for CPU intervention. A method called “surface faulting” allows a coprocessor to fault at the beginning of a large task rather than somewhere in the midd…
Who is the assignee on this patent?
Gosalia Anuj B, Pronovost Steve, Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F9/5016. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Mar 29 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).