Multithreaded kernel for graphics processing unit
First Claim
1. A computer system comprising:
- a memory;
a central processing unit (CPU) configured to read and write data to the memory; and
a graphics processing unit (GPU) configured to at least read data from the memory wherein the GPU is configured to execute applications in a multithreaded manner and provide each executing application with its own virtual address space into the memory.
2 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods are provided for scheduling the processing of a coprocessor whereby applications can submit tasks to a scheduler, and the scheduler can determine how much processing each application is entitled to as well as an order for processing. In connection with this process, tasks that require processing can be stored in physical memory or in virtual memory that is managed by a memory manager. The invention also provides various techniques of determining whether a particular task is ready for processing. A “run list” may be employed to ensure that the coprocessor does not waste time between tasks or after an interruption. The invention also provides techniques for ensuring the security of a computer system, by not allowing applications to modify portions of memory that are integral to maintaining the proper functioning of system operations.
-
Citations
79 Claims
-
1. A computer system comprising:
-
a memory;
a central processing unit (CPU) configured to read and write data to the memory; and
a graphics processing unit (GPU) configured to at least read data from the memory wherein the GPU is configured to execute applications in a multithreaded manner and provide each executing application with its own virtual address space into the memory. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A method for scheduling tasks for processing by a coprocessor, comprising:
-
gathering tasks for processing by a coprocessor into a memory group wherein the memory group relates to a first application;
delivering the tasks to a scheduler wherein scheduler functions include determining an order for processing the tasks wherein the order may include tasks that relate to one or more other applications;
determining an order for processing the tasks wherein the order accounts for any relative priority among the first application and one or more other applications and a corresponding amount of processing time that the first application and one or more other applications are entitled to;
preparing tasks for processing by ensuring that any needed memory resources are available in a coprocessor-accessible memory location wherein the preparing tasks occurs in the order determined by the scheduler; and
submitting tasks prepared according to the preparing to the coprocessor for processing. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. A method for scheduling tasks for processing by a coprocessor, comprising:
-
gathering tasks for processing by a coprocessor into a memory group wherein the memory group relates to a first application;
delivering the tasks to a scheduler wherein the functions of the scheduler include determining an order for processing the tasks wherein the order may include tasks that relate to one or more other applications;
determining an order for processing the tasks wherein the order accounts for any relative priority among the first application and one or more other applications and a corresponding amount of processing time that the first application and one or more other applications are entitled to;
preparing tasks for processing by ensuring that any needed memory resources are available in a memory location accessible by the coprocessor wherein the preparing tasks occurs in the order determined by the scheduler;
submitting tasks to the coprocessor for processing;
managing the coprocessor-readable memory to apportion the coprocessor-readable memory among the various tasks; and
providing a virtual address space for the tasks. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40)
-
-
41. An apparatus for supporting scheduling of tasks for processing by a coprocessor, comprising:
-
a central processing unit (CPU);
a coprocessor;
one or more applications that generate tasks for processing by the coprocessor wherein the tasks are first stored in an application-specific memory location;
a scheduler process for determining an order in which the tasks are processed;
wherein the order accounts for any relative priority among a first application and one or more other applications and a corresponding amount of processing time that the first application and one or more other applications are entitled to. - View Dependent Claims (42, 43, 44, 45, 46, 47, 48, 49, 50, 51)
-
-
52. A method for providing applications with memory to support the processing of tasks for processing by a coprocessor, comprising:
-
providing a virtual address space to at least one application;
storing information relating to one or more tasks for processing by a coprocessor in the virtual address space wherein the one or more tasks are generated at least in part by the at least one application;
identifying a location in physical memory that corresponds to at least one virtual address in the virtual address space;
accessing the location in physical memory that corresponds to at least one virtual address in the virtual address space when the one or more tasks are submitted to the coprocessor for processing. - View Dependent Claims (53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65)
-
-
66. A coprocessor for use in connection with a coprocessing scheduler, comprising:
a coprocessor for processing tasks that are submitted to the coprocessor by a scheduler process wherein the scheduler process submits tasks to the coprocessor according to a priority of applications that request processing of the tasks, and wherein the priority determines the amount of coprocessor time one or more applications are entitled to. - View Dependent Claims (67, 68, 69, 70, 71, 72, 73)
-
74. A computing system that enables the efficient scheduling of coprocessor tasks by allowing a user mode driver to build DMA buffers without compromising system security, comprising:
-
a coprocessor;
memory that is designated as privileged memory;
a user mode driver that builds a limited DMA buffer wherein the coprocessor cannot access the privileged memory when processing the limited DMA buffer; and
a kernel mode that builds a privileged DMA buffer wherein the coprocessor can access the privileged memory when processing the privileged DMA buffer. - View Dependent Claims (75, 76, 77, 78, 79)
-
Specification