IP Library › Granted Patent US 10,310,977
Granted Patent B2
US 10,310,977 · App. 15/298,439 · Granted Jun 4, 2019

Facilitating recording a trace file of code execution using a processor cache

Inventor: Jordi Mola (Bellevue, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F12/0811G06F12/084G06F2212/1024G06F2212/283G06F2212/314
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 10,310,977
App. No.
15/298,439
Granted
Jun 4, 2019
Kind
B2
Abstract

Facilitating recording a trace file of code execution using a processor cache. A computing device includes a plurality of processing units and a processor cache shared by the plurality of processing units. The processor cache includes a set of accounting bits that include different pluralities of accounting bits. Each plurality of accounting bits is associated with a different cache line of a plurality of cache lines of the processor cache, and includes a different unit bit associated with a different one of the plurality of processing units. The computing device also includes control logic that is configured to use the pluralities of accounting bits to indicate, for each cache line and for each processing unit, whether or not the processing unit has logged into a trace file a current value stored in the value portion of the cache line.

Claims (41)

1. A computing device for facilitating recording a trace of code execution using a processor cache, the computing device comprising:

a plurality of processing units;

the processor cache, which is shared by the plurality of processing units and which is configured to cache data from a memory device, the processor cache including:

a plurality of cache lines that each comprise at least (i) an address portion for storing a memory address of the memory device, and (ii) a value portion for storing a value associated with the memory address; and

a set of accounting bits that include different pluralities of accounting bits, each plurality of accounting bits being associated with a different cache line and including a different unit bit associated with a different one of the plurality of processing units; and stored control logic that is configured to:

use the pluralities of accounting bits to indicate, for each cache line and for each processing unit, whether or not a trace file logs for the processing unit a current value stored in the value portion of the cache line; and

detect a write operation by a particular processing unit on a particular cache line, and as a result of the write operation, clear each unit bit in the plurality of accounting bits associated with the cache line, except for the particular unit bit associated with the particular processing unit.

2. The computing device of claim 1 , wherein each cache line also comprises its corresponding plurality of accounting bits, such that each cache line includes at least one unit bit for each of the plurality of processing units.

3. The computing device of claim 1 , wherein the set of accounting bits is stored in one or more reserved cache lines of the processor cache, each reserved cache line including at least unit bits for two or more of the plurality of cache lines.

4. The computing device of claim 1 , wherein the control logic uses at least one unit bit to indicate whether or not a trace stream for the particular processing unit logs at least the current value stored in the value portion of a particular cache line by:

(i) setting the at least one unit bit to indicate that the trace stream for the particular processing unit does log at least the current value stored in the value portion of the particular cache line; and

(ii) clearing the at least one unit bit to indicate that the trace stream for the particular processing unit does not log at least the current value stored in the value portion of the particular cache line.

5. The computing device of claim 4 , wherein setting the at least one unit bit comprises assigning a value of one to the unit bit, and wherein clearing the at least one unit bit comprises assigning a value of zero to the unit bit.

6. The computing device of claim 1 , wherein the stored control logic is configured to detect a read operation on a particular cache line that is consumed by a particular processing unit, and to perform at least the following as a result of the read operation:

determine that a particular unit bit associated with the particular processing unit and the particular cache line has not been set; and

based on the particular unit bit not being set:

log at least a value stored in the value portion of the particular cache line into the trace file on behalf of the particular processing unit; and

set the particular unit bit.

7. The computing device of claim 1 , wherein the plurality of accounting bits for a particular cache line also includes reference bits for storing a reference value, and wherein the stored control logic is configured to detect a read operation on the particular cache line that is consumed by a particular processing unit, and to perform at least the following as a result of the read operation:

determine that a particular unit bit associated with the particular processing unit and the particular cache line has not been set;

determine that a value stored in the value portion of the particular cache line has not already been logged by another processing unit; and

based on the particular unit bit not being set, and based on the value having not already been logged by another processing unit:

log the value into the trace file;

set the particular unit bit; and

update the reference value for the particular cache line.

8. The computing device of claim 1 , wherein the set of accounting bits store a reference value for a particular cache line, and wherein the stored control logic is configured to detect a read operation on the particular cache line that is consumed by a particular processing unit, and to perform at least the following as a result of the read operation:

determine that a particular unit bit associated with the particular processing unit and the particular cache line has not been set;

determine that a value stored in the value portion of the particular cache line has already been logged by another processing unit; and

based on the particular unit bit not being set, and based on the value having already been logged by another processing unit:

log the reference value into the trace file; and

set the particular unit bit.

9. The computing device of claim 1 , wherein the set of accounting bits store a reference value for a particular cache line, and wherein the stored control logic is configured to perform at least the following as a result of the write operation:

update the reference value for the particular cache line.

10. The computing device of claim 1 , wherein the computing device logs a read from a memory page into the processor cache only if a dirty bit associated with the memory page is set to indicate that the memory page is dirty.

11. A method, implemented at a computing device that includes a plurality of processing units and a processor cache, the processor cache including (i) a plurality of cache lines that each comprise at least an address portion for storing a memory address of the memory device, and a value portion for storing a value associated with the memory address, and (ii) a set of accounting bits that include different pluralities of accounting bits, each plurality of accounting bits being associated with a different cache line and including a different unit bit associated with a different one of the plurality of processing units, the method for facilitating recording a trace file of code execution using the processor cache, the method comprising:

using the pluralities of accounting bits to indicate, for each cache line and for each processing unit, whether or not the trace file logs for the processing unit a current value stored in the value portion of the cache line; and

detecting a write operation by a particular processing unit on a particular cache line, and as a result of the write operation, clear each unit bit in the plurality of accounting bits associated with the cache line, except for the particular unit bit associated with the particular processing unit.

12. The method of claim 11 , wherein the processor cache comprises a shared processor cache shared by the plurality of processing units, and the plurality of accounting bits associated with each cache line also include one or more reference bits, the method further comprising

using each unit bit to indicate whether or not the trace file logs, for its corresponding processing unit, a current value stored in the value portion of its corresponding cache line; and

using the one or more reference bits to store a reference value that is useable for logging into the trace file a reference to the current value of their corresponding cache line instead of logging the current value of the cache line.

13. The method of claim 11 , wherein the processor cache comprises a private cache, and wherein using the pluralities of accounting bits to indicate, for each cache line and for each processing unit, whether or not the trace file logs for the processing unit a current value stored in the value portion of the cache line comprises setting an accounting bit for a cache line when a thread being traced consumes the cache line, and clearing the accounting bit for the cache line when an entity other than the thread modifies the cache line.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 20, 2016
From: MOLA, JORDI
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 040074/0370 →
Continuity (1)
Related Publication 20180113806A1 · Apr 26, 2018