Micro-architecturally delayed timer
AssigneeAmazon Technologies, Inc.
InventorsRahul Gautam Patel, William John Earl, Nachiketh Rao Potlapally
Life of this patent
Estimating the term…
Abstract
Techniques are described for injecting noise in a timer value provided to an instruction requesting the timer value. A plurality of tasks may execute on a processor, wherein the processor may comprise one or more processing cores and each task may include a plurality of computer executable instructions. In accordance with one technique for injecting noise in the timer value, in response to a request for a timer value, an artificial and indeterminate amount of delay may be introduced before accessing of the timer value from the hardware timer. In one implementation, access to the hardware timer for the timer value may be gated by one or more artificially injected micro-architectural events.
Claims16
A computing device, comprising:
- a processor comprising one or more processing cores and operating in a multi-tenant environment, wherein
- the one or more processing cores are configured to execute at least a first virtual machine and a second virtual machine simultaneously, and
- the first virtual machine comprising a first plurality of computer executable instructions for a first tenant and the second virtual machine comprising a second plurality of computer executable instructions for a second tenant;
- a hardware resource configured to be shared by the first virtual machine and the second virtual machine executing simultaneously on the one or more processing cores;
- a hardware timer configured to generate a timer value using at least a phase locked loop;
- and
- a delay timer module, using hardware logic or microcode, configured to delay accessing the timer value from the hardware timer in response to a request for the timer value, wherein the delay is based on a completion of at least one micro-architectural event introduced before accessing of the timer value from the hardware timer, wherein the at least one micro-architectural event is one or more of a Level 1 cache miss resulting in Level 2 cache read, a Level 2 cache miss resulting in Level 3 cache read, a Level 3 or Level 4 cache miss resulting in system memory read, a Translation Look aside Buffer miss resulting in a page-table walk, a branch mis-prediction resulting in speculative execution of an incorrect instruction, or a pipeline stall.
A computing device, comprising:
- a processor comprising one or more processing cores, wherein each processing core is configured to execute a plurality of tasks, wherein each task comprises a plurality of computer executable instructions;
- a hardware resource configured to be shared by the plurality of tasks simultaneously executing on the one or more processing cores;
- and
- a delay timer module, using hardware logic or microcode, configured to delay accessing a timer value, by an indeterminate amount of time, in response to a request for the timer value, wherein the indeterminate amount of time is based on a completion of at least one micro-architectural event introduced before accessing of the timer value to delay the accessing of the timer value.
A method, comprising:
- executing a plurality of tasks on a processor, the processor comprising one or more processing cores and each task comprising a respective plurality of computer executable instructions;
- receiving a request for a timer value from a first task from the plurality of tasks;
- and
- providing, to the first task, a delayed timer value, wherein a delay in the delayed timer value is an indeterminate amount of time, wherein the indeterminate amount of time is based on a completion of at least one micro-architectural event introduced before accessing of the timer value and wherein the at least one micro-architectural event is randomly selected from a plurality of micro-architectural events.
Dependencies are inferred from the claim text.