High priority guard transfer for execution control of dependent guarded instructions
First Claim
1. A computer system for executing instructions having assigned guard indicators, the system comprising:
- instruction supply circuitry, wherein the instruction supply circuitry comprises a main instruction queue for holding instructions to be supplied to a plurality of parallel execution units and a subsidiary instruction queue for holding sendguard instructions, the subsidiary instruction queue having priority access to execution pipelines to avoid unnecessary delays for execution of sendguard instructions;
the plurality of parallel execution units for receiving respective instructions from the instruction supply circuitry, wherein;
each of the instructions has a respective guard indicator selected from a set of guard indicators common to the plurality of execution units;
at least one of the plurality of execution units includes a master guard value store containing a master representation of current values for the guard indicators in the set of guard indicators; and
a first execution unit from the plurality of execution units contains a guard-indications register; and
guard value transfer circuitry operable to;
transfer a guard value from the master store to another of the execution units in response to a sendguard instruction being executed in the at least one execution unit; and
when a guarded instruction is issued to memory means of a second execution unit from the plurality of execution units, which causes issuing a sendguard instruction to memory means of the first execution unit to have a value of a guard indication associated with the guarded instruction transmitted to the second execution unit, transfer the value of the guard indication to the second execution unit;
wherein;
the memory means of the first execution unit includes a first FIFO-type memory, and a second FIFO-type memory separate from the first FIFO-type memory;
each sendguard instruction is stored in the first FIFO-type memory and all other instructions intended for the first execution unit are stored in the second FIFO-type memory;
a sendguard instruction having reached a head of the first FIFO-type memory is extracted from the first FIFO-type memory, if no modifying instruction which is earlier in time and intended to modify the value of the guard indication associated with the sendguard instruction is present in the second FIFO-type memory; and
in the presence of such an earlier, modifying instruction, the sendguard instruction is extracted from the first FIFO-type memory only after the modifying instruction has been extracted from the second FIFO-type memory.
1 Assignment
0 Petitions
Accused Products
Abstract
A method of transferring guard values and a computer system, such as a processor for digital signal processing, including a parallel set of execution units that utilizes the method. A master set of guard indicators is held in association with one of the execution units. If other execution units require the guard values for particular guard indicators, a sendguard instruction is issued to the execution unit holding the master guard values. The sendguard instructions are held in a separate queue from the main instructions intended for that execution unit. Circuitry is provided in the execution unit to avoid stalling in the dispatch of sendguard instructions even in the context of earlier guard modifying instructions.
-
Citations
23 Claims
-
1. A computer system for executing instructions having assigned guard indicators, the system comprising:
-
instruction supply circuitry, wherein the instruction supply circuitry comprises a main instruction queue for holding instructions to be supplied to a plurality of parallel execution units and a subsidiary instruction queue for holding sendguard instructions, the subsidiary instruction queue having priority access to execution pipelines to avoid unnecessary delays for execution of sendguard instructions; the plurality of parallel execution units for receiving respective instructions from the instruction supply circuitry, wherein; each of the instructions has a respective guard indicator selected from a set of guard indicators common to the plurality of execution units; at least one of the plurality of execution units includes a master guard value store containing a master representation of current values for the guard indicators in the set of guard indicators; and a first execution unit from the plurality of execution units contains a guard-indications register; and guard value transfer circuitry operable to; transfer a guard value from the master store to another of the execution units in response to a sendguard instruction being executed in the at least one execution unit; and when a guarded instruction is issued to memory means of a second execution unit from the plurality of execution units, which causes issuing a sendguard instruction to memory means of the first execution unit to have a value of a guard indication associated with the guarded instruction transmitted to the second execution unit, transfer the value of the guard indication to the second execution unit;
wherein;the memory means of the first execution unit includes a first FIFO-type memory, and a second FIFO-type memory separate from the first FIFO-type memory; each sendguard instruction is stored in the first FIFO-type memory and all other instructions intended for the first execution unit are stored in the second FIFO-type memory; a sendguard instruction having reached a head of the first FIFO-type memory is extracted from the first FIFO-type memory, if no modifying instruction which is earlier in time and intended to modify the value of the guard indication associated with the sendguard instruction is present in the second FIFO-type memory; and in the presence of such an earlier, modifying instruction, the sendguard instruction is extracted from the first FIFO-type memory only after the modifying instruction has been extracted from the second FIFO-type memory. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method of executing instructions in a computer system, said instructions having assigned guard indicators, the method comprising:
-
supplying a plurality of instructions to a plurality of parallel execution units each including a first execution unit and a second execution unit, each instruction having a respective guard indicator selected from a set of guard indicators common to the plurality of parallel execution units; holding a master set of current values for the guard indicators in one execution unit; effecting a transfer of a master guard value from said one execution unit in response to a sendguard instruction being executed in said one execution unit; wherein instructions to be supplied to the plurality of parallel execution units, except for sendguard instructions, are held in a main instruction queue and wherein said sendguard instructions are held in a subsidiary queue having priority access to execution pipelines to avoid unnecessary delays for execution of sendguard instructions; and when a guarded instruction is issued to memory means of the second execution unit, which causes issuing a sendguard instruction to memory means of the first execution unit to have a value of a guard indication associated with the guarded instruction transmitted to the second execution unit, transferring the value of the guard indication to the second execution unit;
wherein;the memory means of the first execution unit includes a first FIFO-type memory, and a second FIFO-type memory separate from the first FIFO-type memory; each sendguard instruction is stored in the first FIFO-type memory and all other instructions intended for the first execution unit are stored in the second FIFO-type memory; a sendguard instruction having reached a head of the first FIFO-type memory is extracted from the first FIFO-type memory, if no modifying instruction which is earlier in time and intended to modify the value of the guard indication associated with the sendguard instruction is present in the second FIFO-type memory; and in the presence of such an earlier, modifying instruction, the sendguard instruction is extracted from the first FIFO-type memory only after the modifying instruction has been extracted from the second FIFO-type memory. - View Dependent Claims (13, 14)
-
-
15. A pipelined execution unit for a computer system which comprises at least two pipelined stages, with an earlier one of the pipelined stages including sendguard circuitry responsive to a sendguard instruction to dispatch a guard value for a guard indicator defined in the sendguard instruction, and a later one of the pipelined stages including guard value modifying circuitry for executing guard value modifying instructions which cause the value of a guard indicator to be modified, the pipelined execution unit further comprising:
-
a master guard value store for holding a master representation of current values for guard indicators; means for determining any dependencies between a sendguard instruction in the earlier pipelined stage and a guard modifying instruction in the later pipelined stage; switching circuitry for selecting when a sendguard instruction is executed and, responsive to any such dependencies, whether a guard value held in the master guard value store or a guard value just modified by the guard value modifying circuitry is to be dispatched; and a plurality of execution units comprising a first execution unit containing a guard-indications register, wherein when a guarded instruction is issued to memory means of a second execution unit from the plurality of execution units, which causes issuing a sendguard instruction to memory means of the first execution unit to have a value of a guard indication associated with the guarded instruction transmitted to the second execution unit, wherein; the memory means of the first execution unit includes a first FIFO-type memory, and a second FIFO-type memory separate from the first FIFO-type memory; each sendguard instruction is stored in the first FIFO-type memory and all other instructions intended for the first execution unit are stored in the second FIFO-type memory; a sendguard instruction having reached a head of the first FIFO-type memory is extracted from the first FIFO-type memory, if no modifying instruction which is earlier in time and intended to modify the value of the guard indication associated with the sendguard instruction is present in the second FIFO-type memory; and in the presence of such an earlier, modifying instruction, the sendguard instruction is extracted from the first FIFO-type memory only after the modifying instruction has been extracted from the second FIFO-type memory. - View Dependent Claims (16, 17)
-
-
18. A method of executing instructions in a pipelined execution unit comprising a plurality of execution units each including a first execution unit and a second-execution unit, each instruction having a respective guard indicator selected from a set of guard indicators and execution of the instructions being predicated on values of the guard indicators, wherein the instructions include a sendguard instruction which, when executed, causes transfer of a guard value from the pipelined execution unit, and a guard value modifying instruction which modifies the value of a guard indicator, the method comprising:
-
supplying instructions to the pipelined execution unit including said sendguard instructions and said guard value modifying instructions; checking dependencies between guard value modifying instructions supplied to the pipelined execution unit earlier than a sendguard instruction relating to a same guard indicator; supplying the guard value of the guard indicator requested in the sendguard instruction selectively from a master guard value store or guard value modifying circuitry in dependence on results of said checking step, so as to ensure that the guard value of a guard indicator which is dispatched responsive to a sendguard instruction is correct in relation to any earlier guard value modifying instructions in the pipelined execution unit; and when a guarded instruction is issued to memory means of the second execution unit, which causes issuing a sendguard instruction to memory means of the first execution unit to have a value of a guard indication associated with the guarded instruction transmitted to the second execution unit, transferring the value of the guard indication to the second execution unit;
wherein;the memory means of the first execution unit includes a first FIFO-type memory, and a second FIFO-type memory separate from the first FIFO-type memory; each sendguard instruction is stored in the first FIFO-type memory and all other instructions intended for the first execution unit are stored in the second FIFO-type memory; a sendguard instruction having reached a head of the first FIFO-type memory is extracted from the first FIFO-type memory, if no modifying instruction which is earlier in time and intended to modify the value of the guard indication associated with the sendguard instruction is present in the second FIFO-type memory; and in the presence of such an earlier, modifying instruction, the sendguard instruction is extracted from the first FIFO-type memory only after the modifying instruction has been extracted from the second FIFO-type memory.
-
-
19. A method of handling guarded instructions within a processor, the processor including several processing units associated respectively with FIFO-type memory means for sequentially storing respective guarded instructions which are intended for corresponding processing units, a first processing unit containing a guard-indications register, the method comprising issuing a guarded instruction to the memory means of a second processing unit which causes issuing to the memory means of the first processing unit a transmission instruction intended to have a value of a guard indication associated with said guarded instruction transmitted to the second processing unit, wherein:
-
the memory means of the first processing unit includes a first FIFO-type memory, and a second FIFO-type memory separate from the first FIFO-type memory; each transmission instruction is stored in the first FIFO-type memory and all other instructions intended for the first processing unit are stored in the second FIFO-type memory; a transmission instruction having reached a head of the first FIFO-type memory is extracted from the first FIFO-type memory, if no modifying instruction which is earlier in time and intended to modify the value of the guard indication associated with the transmission instruction is present in the second FIFO-type memory; and in the presence of such an earlier, modifying instruction, the transmission instruction is extracted from the first FIFO-type memory only after the modifying instruction has been extracted from the second FIFO-type memory. - View Dependent Claims (20, 21, 22, 23)
-
Specification