Search International and National Patent Collections
Some content of this application is unavailable at the moment.
If this situation persist, please contact us atFeedback&Contact
1. (WO2018005209) LOCKLESS MEASUREMENT OF EXECUTION TIME OF CONCURRENTLY EXECUTED SEQUENCES OF COMPUTER PROGRAM INSTRUCTIONS
Note: Text based on automatic Optical Character Recognition processes. Please use the PDF version for legal matters

CLAIMS

1. A computer comprising:

a processing system comprising a processing unit and a memory accessible by threads executed by the processing system, and having a system timer, the processing system configured to:

for a first thread to be executed by the processing system, allocate a first buffer in first thread local storage in the memory;

for a second thread to be executed concurrently by the processing system, and different from the first thread, allocating a second buffer separate from the first buffer and in second thread local storage in the memory;

in response to execution of a first start command at a beginning of a first sequence of instructions for the first thread:

store, in the first buffer, an identifier of the first sequence of instructions and a first start time from the system timer at the time of execution of the first start command;

in response to execution of a first end command at an end of the first sequence of instructions for the first thread:

store, in the first buffer and in association with the identifier of the first sequence of instructions, data indicative of an elapsed time between the first start time stored in the first buffer and a first end time from the system timer at the time of execution of the first end command;

in response to execution of a second start command at a beginning of a second sequence of instructions in the second thread:

store, in the second buffer, an identifier of the second sequence of instructions and a second start time from the system timer at a time of execution of the second start command;

in response to execution of a second end command at an end of the second sequence of instructions for the second thread:

store, in the second buffer and in association with the identifier of the second sequence of instructions, data indicative of an elapsed time between the second start time stored in the second buffer and a second end time from the system timer at the time of execution of the second end command.

2. The computer of claim 1, wherein the first thread is executed by a first processing core of the processing system and the second thread is executed by a second processing core, different from the first processing core, of the processing system.

3. The computer of any of the preceding claims, wherein the first thread is executed by a central processing unit and the second thread is executed by a graphics processing unit.

4. The computer of any of the preceding claims, wherein the start command samples the system timer and stores the current time with the identifier in the timing buffer in a single executable instruction.

5. The computer of any of the preceding claims, wherein the end command samples the system timer and stores data indicative of an elapsed time in the timing buffer in a single executable instruction.

6. The computer of any of the preceding claims, wherein the first thread and the second thread are different threads of a same computer program.

7. The computer of any of claims 1 to 5, wherein the first thread and the second thread are threads of different computer programs.

8. A computer-implemented process performed by a computer program executing on a processing system of a computer, the processing system comprising a processing unit and a memory accessible by threads executed by the processing system, and having a system timer, the process comprising:

for a first thread to be executed by the processing system, allocating a first buffer in first thread local storage in the memory;

for a second thread to be executed concurrently by the processing system, and different from the first thread, allocating a second buffer separate from the first buffer and in second thread local storage in the memory;

in response to execution of a first start command at a beginning of a first sequence of instructions for the first thread:

storing, in the first buffer, an identifier of the first sequence of instructions and a first start time from the system timer at the time of execution of the first start command;

in response to execution of a first end command at an end of the first sequence of instructions for the first thread:

storing, in the first buffer and in association with the identifier of the first sequence of instructions, data indicative of an elapsed time between the first start time stored in the first buffer and a first end time from the system timer at the time of execution of the first end command;

in response to execution of a second start command at a beginning of a second sequence of instructions in the second thread:

storing, in the second buffer, an identifier of the second sequence of instructions and a second start time from the system timer at a time of execution of the second start command;

in response to execution of a second end command at an end of the second sequence of instructions for the second thread:

storing, in the second buffer and in association with the identifier of the second sequence of instructions, data indicative of an elapsed time between the second start time stored in the second buffer and a second end time from the system timer at the time of execution of the second end command.

9. The computer-implemented process of claim 8, wherein the first thread is executed by a first processing core of the processing system and the second thread is executed by a second processing core, different from the first processing core, of the processing system.

10. The computer-implemented process of any of claims 8 to 9, wherein the first thread is executed by a central processing unit and the second thread is executed by a graphics processing unit.

11. The computer-implemented process of any of claims 8 to 10, wherein the start command samples the system timer and stores the current time with the identifier in the timing buffer in a single executable instruction.

12. The computer-implemented process of any of claims 8 to 11, wherein the end command samples the system timer and stores data indicative of an elapsed time in the timing buffer in a single executable instruction.

13. The computer-implemented process of any of claims 8 to 12, wherein the first thread and the second thread are different threads of a same computer program.

14. The computer-implemented process of any of claims 8 to 12, wherein the first thread and the second thread are threads of different computer programs.

15. An article of manufacture comprising a computer storage device, computer program instructions stored on the computer storage device which, when processed by a computer, configures the computer to perform a process as set forth in any of claims 8 to 14.