Nova Patents
EP0933698A2

Probing computer memory latency

Abstract

A computer system includes a data structure that maintains availability status for registers (30) of a processor (28) of the computer system, wherein the availability status indicates whether an instruction attempting to read a particular register will stall. The computer system also includes instruction decode and execution circuitry that is capable of decoding and executing one or more instructions that alter a path of program execution based on the availability status of one or more of the registers (30). In one embodiment, a latency probe instruction retrieves the availability status of a register from the data structure and stores the availability status in a register. Thereafter, a conditional branch instruction determines the path of program execution based on the availability status stored in the register. In another embodiment, a conditional branch instruction queries the data structure directly to determine the availability status of a register, and determines the execution path based on the availability status. By exposing the latency of memory operations to programs, a compiler can schedule alternate threads of execution based on varying latencies. By scheduling alternate threads of execution based on the availability of the contents of a register, stalling is minimized. The system can also be used by a compiler to optimize code.

EP0933698A2, drawing sheet 1
Sheet 1 of 9

Term

Term ended

Projected expiry passed 22 January 2019, 7.7 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

8 claims: 3 independent, 5 dependent

  1. 1
    A computer system comprising:a main memory unit;one or more cache memory units coupled to the main memory unit;and a CPU, the CPU including: one or more registers;a data structure that maintains availability status for each of the registers, wherein the availability status indicates whether an instruction attempting to read a particular register will stall;instruction decode and execution circuitry capable of decoding and executing one or more instructions to alter a path of program execution based on the availability status of one or more of the registers.
  2. 5
    A method of selecting alternate threads of execution within a program based on availability of contents in a register comprising:executing an instruction of the program to query a data structure to determine whether contents of the register are available;selecting a first execution thread if contents of the register are available;and selecting a second execution thread if the contents of the register are unavailable.
  3. 8
    In a computer system having stall circuitry capable of stalling execution of an instruction when contents of a register that the instruction seeks to read are not yet available, the improvement comprising:instruction decode and execution circuitry capable of decoding and executing one or more instructions that determine availability status of contents of the register using substantial portions of the stall circuitry, and alter a path of program execution based on the availability of the register.