Application selection of memory request scheduling
AssigneeEmpire Technology Development LLC
InventorsGokhan Memik, Seda Ogrenci Memik, Bill Mangione-Smith
Life of this patent
Estimating the term…
Abstract
The present disclosure generally describes systems, methods and devices for operating a computer system with memory based scheduling. The computer system may include one or more of an application program and a memory controller in communication with memory banks. The memory controller may include a scheduler for scheduling requests. The application program may select a scheduling algorithm for scheduling requests from a plurality of scheduling algorithms. The application program may instruct the scheduler to schedule requests using the selected scheduling algorithm.
Claims11
A method to schedule requests for data from a memory, the method comprising:
- receiving, by a processor, a first thread from an application program being executed on an operating system, wherein the first thread includes at least a first request for data in the memory;
- receiving, by the processor, a second thread from the application program, wherein the second thread includes at least a second request for data in the memory;
- receiving, by the processor from the application program, a selection of a particular scheduling algorithm from among two or more scheduling algorithms to provide the selection of the particular scheduling algorithm to a scheduler in a memory controller, wherein the two or more scheduling algorithms include two or more of first-ready first-come-first-serve, network fair queuing, start-time fair queuing, stall-time fair memory scheduler, parallelism-aware batch scheduling, and batch scheduling with segregation, the application program contains the two or more scheduling algorithms, the particular scheduling algorithm effective to define an order to execute the first and second requests;
- controlling, by the processor, the scheduler within the memory controller to schedule the first and second requests in the order defined by the particular scheduling algorithm received from the application program;
- and
- wherein the particular scheduling algorithm comprises instructions to:
- segregate the first thread and the second thread into a first thread type and a second thread type based on how well the first and second threads are designed for use with parallel memory, wherein a thread of the first thread type issues requests of a first thread request type, and a thread of the second thread type issues requests of a second thread request type;
- form a first batch comprising the requests of the first thread request type and excluding the requests of the second thread request type;
- form a second batch comprising the requests of the second thread request type and excluding the requests of the first thread request type.
A non-transitory computer-readable storage medium having computer-executable instructions stored thereon which, in response to execution by a computer, adapt the computer to perform a method to schedule requests for data from a memory, the method comprising:
- determining, by a processor, that a first thread from an application program being executed on an operating system has been received, wherein the first thread includes at least a first request for data in the memory;
- determining, by the processor, that a second thread from the application program has been received, wherein the second thread includes at least a second request for data in the memory;
- determining, by the processor, that a selection of a particular scheduling algorithm from among two or more scheduling algorithms has been received from the application program to provide the selection of the particular scheduling algorithm to a scheduler in a memory controller, wherein the two or more scheduling algorithms include two or more of first-ready first-come-first-serve, network fair queuing, start-time fair queuing, stall-time fair memory scheduler, parallelism-aware batch scheduling, and batch scheduling with segregation, the application program contains the two or more scheduling algorithms, the particular scheduling algorithm effective to define an order to execute the first and second requests;
- controlling, by the processor, the scheduler within the memory controller to schedule the first and second requests in the order defined by the particular scheduling algorithm received from the application program;
- and
- wherein the particular scheduling algorithm comprises instructions to:
- segregate the first thread and the second thread into a first thread type and a second thread type based on how well the first and second threads are designed for use with parallel memory, wherein a thread of the first thread type issues requests of a first thread request type, and a thread of the second thread type issues requests of a second thread request type;
- form a first batch comprising the requests of the first thread request type and excluding the requests of the second thread request type;
- form a second batch comprising the requests of the second thread request type and excluding the requests of the first thread request type.
A computer system, comprising:
- a processor configured to control a scheduler within a memory controller of a memory;
- wherein the processor is configured to:
- receive a first thread from an application program being executed on an operating system, wherein the first thread includes at least a first request for data in the memory;
- receive a second thread from the application program, wherein the second thread includes at least a second request for data in the memory;
- receive from the application program, a selection of a particular scheduling algorithm from among two or more scheduling algorithms to provide the selection of the particular scheduling algorithm to a scheduler in a memory controller, wherein the two or more scheduling algorithms include two or more of first-ready first-come-first-serve, network fair queuing, start-time fair queuing, stall-time fair memory scheduler, parallelism-aware batch scheduling, and batch scheduling with segregation, the application program contains the two or more scheduling algorithms, the particular scheduling algorithm effective to define an order to execute the first and second requests;
- control the scheduler within the memory controller to schedule the first and second requests in the order defined by the particular scheduling algorithm received from the application program;
- and
- wherein the particular scheduling algorithm comprises instructions to:
- segregate the first thread and the second thread into a first thread type and a second thread type based on how well the first and second threads are designed for use with parallel memory, wherein a thread of the first thread type issues requests of a first thread request type, and a thread of the second thread type issues requests of a second thread request type;
- form a first batch comprising the requests of the first thread request type and excluding the requests of the second thread request type;
- form a second batch comprising the requests of the second thread request type and excluding the requests of the first thread request type.
Dependencies are inferred from the claim text.