IP Library Granted Patent US 11,789,741
Granted Patent B2
US 11,789,741 · App. 15/915,787 · Granted Oct 17, 2023

Determining an optimum quantity of interleaved instruction streams of defined coroutines

Inventors: Georgios Psaropoulos (Lausanne, CH); Thomas Legler (Walldorf, DE); Norman May (Karlsruhe, DE); Anastasia Ailamaki (Morges, CH)
Assignee: SAP SE
G06F9/3851G06F9/30047
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,789,741
App. No.
15/915,787
Granted
Oct 17, 2023
Kind
B2
Abstract

A method for optimizing memory access for database operations is provided. The method may include performing a first database operation by at least executing a first instruction stream associated with the first database operation. The first database operation may be defined as a coroutine to at least enable the execution of the first instruction stream to be interleaved with an execution of a second instruction stream. In response to determining that data required to continue the execution of the first instruction stream is absent from a cache, the execution of the first instruction stream may be suspended and the second instruction stream may be executed instead. Related systems and articles of manufacture, including computer program products, are also provided.

Claims (42)

1. A database system, comprising:

at least one data processor; and

at least one memory storing instructions which, when executed by the at least one data processor, cause the database system to at least:

determine an optimum quantity of instruction streams to interleave such that at least one stall is eliminated due to a cache miss causing a fetch from a main memory, the optimum quantity of instruction streams determined based on at least a ratio of a target time to a sum of a compute time corresponding to a duration of one or more computation stages during which instruction streams execute and a switch time corresponding to a quantity of time to switch between instruction streams, wherein the target time is a difference between a stall time corresponding to the cache miss and the switch time; and

interleave, based on the determined optimum quantity of instruction streams, an execution of instruction streams, wherein the execution of the interleaved instruction streams comprises:

performing a first database operation by at least executing a first instruction stream associated with the first database operation, the first database operation being defined in code as a coroutine to at least enable the execution of the first instruction stream to be suspended and resumed;

in response to determining that data required to continue the execution of the first instruction stream of the coroutine is absent from a cache, suspending the execution of the first instruction stream of the coroutine;

switching to perform a second database operation by at least executing a second instruction stream associated with the second database operation, the executing of the second instruction stream performed before resumption of the execution of the first instruction stream of the coroutine, wherein the second instruction stream is interleaved with the execution of the first instruction stream;

executing the second instruction stream while the data required to continue the execution of the first instruction stream is being fetched from the main memory; and

in response to determining that the data required to continue the execution of the first instruction stream has been fetched from the main memory, resuming the execution of the first instruction stream.

2. The database system of claim 1 , wherein the first database operation is explicitly defined in code as the coroutine to enable a suspension and a resumption of the execution of the first instruction stream of the coroutine, rather than switching between executions of a plurality of execution threads.

3. The database system of claim 1 , wherein the quantity of instruction streams to interleave is determined based at least on an overhead associated with switching between the first instruction stream and the second instruction stream.

4. The database system of claim 1 , wherein the second database operation is defined as another coroutine such that the execution of the second instruction stream is interleaved with execution of a third instruction stream.

5. The database system of claim 4 , wherein the database system is further caused to at least:

in response to determining that data required to continue the execution of the second instruction stream is absent from the cache, suspend the execution of the second instruction stream in order to switch to the execution of the first instruction stream and/or the third instruction stream.

6. The database system of claim 5 , wherein the database system is further caused to at least:

in response to determining that the data required to continue the execution of the second instruction stream is fetched from the main memory, resume the execution of the second instruction stream.

7. The database system of claim 1 , wherein the second instruction stream is executed to completion before switching to executing the first instruction stream and/or a third instruction stream.

8. The database system of claim 1 , wherein the optimum quantity of instruction streams is determined based on the ratio plus 1.

9. A computer-implemented method, comprising:

determining an optimum quantity of instruction streams to interleave such that at least one stall is eliminated due to a cache miss causing a fetch from a main memory, the optimum quantity of instruction streams determined based on at least a ratio of a target time to a sum of a compute time corresponding to a duration of one or more computation stages during which instruction streams execute and a switch time corresponding to a quantity of time to switch between instruction streams, wherein the target time is a difference between a stall time corresponding to the cache miss and the switch time; and

interleaving, based on the determined optimum quantity of instruction streams, an execution of instruction streams, wherein the execution of the interleaved instruction streams comprises:

performing a first database operation by at least executing a first instruction stream associated with the first database operation, the first database operation being defined in code as a coroutine to at least enable the execution of the first instruction stream to be suspended and resumed;

in response to determining that data required to continue the execution of the first instruction stream of the coroutine is absent from a cache, suspending the execution of the first instruction stream of the coroutine; and

switching to perform a second database operation by at least executing the second instruction stream associated with the second database operation, the executing of the second instruction stream performed before resumption of the execution of the first instruction stream of the coroutine, wherein the second instruction stream is interleaved with the execution of the first instruction stream;

executing the second instruction stream while the data required to continue the execution of the first instruction stream is being fetched from the main memory; and

in response to determining that the data required to continue the execution of the first instruction stream has been fetched from the main memory, resuming the execution of the first instruction stream.

10. The computer-implemented method of claim 9 , wherein the first database operation is explicitly defined in code as the coroutine to enable a suspension and a resumption of the execution of the first instruction stream of the coroutine, rather than switching between executions of a plurality of execution threads.

11. The computer-implemented method of claim 9 , wherein the quantity of instruction streams to interleave is determined based at least on an overhead associated with switching between the first instruction stream and the second instruction stream.

12. The computer-implemented method of claim 9 , wherein the second database operation is defined as another coroutine such that the execution of the second instruction stream is interleaved with execution of a third instruction stream.

13. The computer-implemented method of claim 12 , further comprising:

in response to determining that data required to continue the execution of the second instruction stream is absent from the cache, suspending the execution of the second instruction stream in order to switch to the execution of the first instruction stream and/or the third instruction stream.

14. The computer-implemented method of claim 13 , further comprising:

in response to determining that the data required to continue the execution of the second instruction stream is fetched from the main memory, resuming the execution of the second instruction stream.

15. A non-transitory computer-readable medium storing instructions, which when executed by at least one data processor, result in operations comprising:

determining an optimum quantity of instruction streams to interleave such that at least one stall is eliminated due to a cache miss causing a fetch from a main memory, the optimum quantity of instruction streams determined based on at least a ratio of a target time to a sum of a compute time corresponding to a duration of one or more computation stages during which instruction streams execute and a switch time corresponding to a quantity of time to switch between instruction streams, wherein the target time is a difference between a stall time corresponding to the cache miss and the switch time; and

interleaving, based on the determined optimum quantity of instruction streams, an execution of instruction streams, wherein the execution of the interleaved instruction streams comprises:

performing a first database operation by at least executing a first instruction stream associated with the first database operation, the first database operation being defined in code as a coroutine to at least enable the execution of the first instruction stream to be suspended and resumed;

in response to determining that data required to continue the execution of the first instruction stream of the coroutine is absent from a cache, suspending the execution of the first instruction stream of the coroutine; and

switching to perform a second database operation by at least executing the second instruction stream associated with the second database operation, the executing of the second instruction stream performed before resumption of the execution of the first instruction stream of the coroutine, wherein the second instruction stream is interleaved with the execution of the first instruction stream;

executing the second instruction stream while the data required to continue the execution of the first instruction stream is being fetched from the main memory; and

in response to determining that the data required to continue the execution of the first instruction stream has been fetched from the main memory, resuming the execution of the first instruction stream.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2018
From: PSAROPOULOS, GEORGIOS; LEGLER, THOMAS; MAY, NORMAN; AILAMAKI, ANASTASIA
To: SAP SE
Reel/Frame 045147/0872 →
Continuity (1)
Related Publication 20190278608A1 · Sep 12, 2019