Vector coprocessor with time counter for statically dispatching instructions
AssigneeSimplex Micro, Inc.
InventorThang Minh Tran
Life of this patent
Estimating the term…
Abstract
A processor includes a time counter and a vector coprocessor for executing vector instructions and providing a method for statically dispatching vector instructions with preset execution times based on a write time of a register in a coprocessor register scoreboard and a time counter provided to a vector execution pipeline.
Claims22
A coprocessor that processes coprocessor instructions including a first committed coprocessor instruction received from a processor that executes instructions in accordance with a processor time counter that stores a processor time count representing a current time of the processor, wherein the processor time count is incremented with each of a plurality of clock cycles of a clock circuit, the coprocessor comprising:
- a coprocessor time counter storing a coprocessor time count representing a current time of the coprocessor, the coprocessor time count being independent of the processor time count, the coprocessor time count being incremented periodically and being frozen in response to a delay in execution of the first committed coprocessor instruction, and resuming incrementing upon completion of the delay in execution, wherein the coprocessor time counter comprises a coprocessor N-bit counter which counts from a zero count to a largest count value, which represents a largest future time to dispatch the first committed coprocessor instruction and wherein the coprocessor N-bit counter returns to the zero count after reaching the largest count value;
- a vector register scoreboard storing a first write time of a first vector register in a vector register file, wherein the first write time represents a first future time relative to the coprocessor time count;
- a coprocessor issue unit coupled to the coprocessor time counter for receiving the first committed coprocessor instruction from the processor, and issuing the first committed coprocessor instruction with a preset coprocessor execution time based on the coprocessor time count;
- a coprocessor functional unit that operates in accordance with the coprocessor time count and freezes the coprocessor time count in response to the delay in execution of the first committed coprocessor instruction and unfreezes the coprocessor time count when the delay in execution completes;
- and
- a coprocessor execution queue coupled to the coprocessor time counter and the coprocessor issue unit to receive the first committed coprocessor instruction from the coprocessor issue unit and dispatch the first committed coprocessor instruction to the coprocessor functional unit based upon the coprocessor time count;
- wherein the delay in execution of the first committed coprocessor instruction occurs when result data are not valid at the preset coprocessor execution time or read data from the vector register file are not accepted by the coprocessor functional unit;
- and
- wherein the coprocessor time counter is unfrozen when the result data are valid or the read data are accepted by the coprocessor functional unit;
- wherein the coprocessor functional unit further comprises a latency counter which is set to equal a latency time of a corresponding coprocessor instruction when the corresponding coprocessor instruction is received by the coprocessor functional unit, the latency counter causing result data of the corresponding coprocessor instruction to be written back to a corresponding vector register of the vector register file upon counting down to zero;
- and
- wherein the coprocessor further comprises an alternative time counter and, when the coprocessor time counter is frozen and the latency counter is not zero, the alternative time counter continues incrementing from the frozen time count to generate an alternative time count, wherein the alternative time count generated by the alternative time counter is used for counting down the latency counter to write back the result data of the corresponding coprocessor instruction to the corresponding vector register of the vector register file from the coprocessor functional unit.
A coprocessor responsive to a committed first coprocessor instruction received from a processor, wherein the processor operates in accordance with a processor time count, the coprocessor comprising:
- a coprocessor time counter storing a first coprocessor time count representing a current time of the coprocessor, wherein the first coprocessor time count is incremented with each of a plurality of clock cycles of a clock circuit of the processor to generate a plurality of incremented coprocessor time counts, and wherein incrementing of the first coprocessor time count is frozen in response to a delay in execution of a first committed coprocessor instruction received from the processor, wherein the delay in execution of the first committed coprocessor instruction occurs when result data are not valid at a first preset coprocessor execution time or when read data from a coprocessor register file are not accepted by a functional unit of the coprocessor;
- a coprocessor instruction issue unit coupled to the coprocessor time counter for receiving the first committed coprocessor instruction, and issuing the first committed coprocessor instruction with a second preset coprocessor execution time based on the first coprocessor time count;
- a coprocessor functional unit coupled to the coprocessor time counter that freezes counting by the coprocessor time counter in response to the delay in execution of the first committed coprocessor instruction and unfreezes counting by the coprocessor time counter when the delay in execution completes, wherein the delay in execution completes when the result data becomes valid;
- a coprocessor execution queue coupled to the coprocessor time counter and the coprocessor instruction issue unit to receive the first committed coprocessor instruction, and dispatch the first committed coprocessor instruction to the coprocessor functional unit when the first coprocessor time count matches the second preset coprocessor execution time;
- a coprocessor register scoreboard storing a write time of a coprocessor register in the coprocessor register file, wherein the write time is a future time specified by the first coprocessor time count;
- a coprocessor instruction decode unit coupled to the coprocessor register scoreboard wherein source registers corresponding to the first committed coprocessor instruction in the coprocessor instruction decode unit access read times for source operands of the first committed coprocessor instruction from the coprocessor register scoreboard, and wherein the coprocessor instruction decode unit uses the read times to determine an execution time for the first committed coprocessor instruction;
- a coprocessor time-resource matrix coupled to the coprocessor register scoreboard and the coprocessor time counter for storing information relating to available coprocessor resources for each of the incremented coprocessor time counts of the coprocessor time counter;
- and
- wherein the available coprocessor resources include at least one of:
- a plurality of coprocessor read buses, a plurality of coprocessor write buses, and a plurality of coprocessor functional units;
- wherein the coprocessor functional unit further comprises a latency counter which is set to equal a latency time of a corresponding coprocessor instruction when the corresponding coprocessor instruction is received by the coprocessor functional unit, the latency counter causing result data of the corresponding coprocessor instruction to be written back to a corresponding coprocessor register of the coprocessor register file upon counting down to zero;
- and
- wherein the coprocessor further comprises an alternative time counter and, when the coprocessor time counter is frozen and the latency counter is not zero, the alternative time counter continues incrementing from the frozen time count to generate an alternative time count, wherein the alternative time count generated by the alternative time counter is used for counting down the latency counter to write back the result data of the corresponding coprocessor instruction to the corresponding vector register of the coprocessor register file from the coprocessor functional unit.
A method for processing, by a coprocessor, a committed coprocessor instruction received from a processor, wherein the processor operates in accordance with a processor time count incremented with each of a plurality of clock cycles of a clock circuit, the method comprising:
- receiving the committed coprocessor instruction in a coprocessor execution queue to execute at a first future time wherein the first future time represents a time based on a coprocessor time count;
- incrementing the coprocessor time count in response to each clock cycle of the clock circuit;
- freezing incrementing of the coprocessor time count in response to a delay in execution of the committed coprocessor instruction;
- and
- continuing incrementing of the coprocessor time count in response to result data from execution of the committed coprocessor instruction being valid;
- wherein the delay in execution of the committed coprocessor instruction occurs when the result data generated by execution of the committed coprocessor instruction are not valid at a preset time or data read from a register file are not accepted by a coprocessor functional unit;
- and
- wherein the method further comprises, unfreezing incrementing of the coprocessor time count when the result data generated by execution of the committed coprocessor instruction are valid or the data read from the register file are accepted by the coprocessor functional unit;
- operating the coprocessor functional unit to set at least a latency counter when a second instruction is received by the coprocessor functional unit;
- counting the latency counter down to zero to write result data of the second instruction to a first register of the register file;
- and
- operating an alternative time counter which generates an alternative time count to continue incrementing, when the coprocessor time count is frozen and the latency counter is not zero, from the frozen coprocessor time count, wherein the alternative time count is used for counting down the latency counter to write back the result data of the second instruction to the first register of the register file from the coprocessor functional unit.
A computer program product stored on a non-transitory computer readable storage medium and including instructions for causing a computer system to execute a method that is executable by a coprocessor to process a committed coprocessor instruction received from a processor, wherein the processor operates in accordance with a processor time count incremented with each of a plurality of clock cycles of a clock circuit, the method comprising:
- receiving the committed coprocessor instruction in a coprocessor execution queue to execute at a future time wherein the future time represents a time based on a coprocessor time count;
- incrementing the coprocessor time count in response to each clock cycle of the clock circuit;
- freezing incrementing of the coprocessor time count in response to a delay in execution of the committed coprocessor instruction, wherein the delay in execution of the committed coprocessor instruction occurs when the result data generated by execution of the committed coprocessor instruction are not valid at a preset time or data read from a register file are not accepted by a coprocessor functional unit;
- and
- wherein the method further comprises,
- unfreezing incrementing of the coprocessor time count when the result data generated by execution of the committed coprocessor instruction are valid or the data read from the register file are accepted by the coprocessor functional unit;
- operating the coprocessor functional unit to set at least a latency counter when a second instruction is received by the coprocessor functional unit;
- counting the latency counter down to zero to write result data of the second instruction to a first register of the register file;
- and
- operating an alternative time counter which generates an alternative time count to continue incrementing, when the coprocessor time count is frozen and the latency counter is not zero, from the frozen coprocessor time count, wherein the alternative time count is used for counting down the latency counter to write back the result data of the second instruction to the first register of the register file from the coprocessor functional unit.
Dependencies are inferred from the claim text.