WO2002046885A2 - Handling conditional processing in a single instruction multiple datapath processor architecture - Google Patents

Handling conditional processing in a single instruction multiple datapath processor architecture Download PDF

Info

Publication number
WO2002046885A2
WO2002046885A2 PCT/US2001/050992 US0150992W WO0246885A2 WO 2002046885 A2 WO2002046885 A2 WO 2002046885A2 US 0150992 W US0150992 W US 0150992W WO 0246885 A2 WO0246885 A2 WO 0246885A2
Authority
WO
WIPO (PCT)
Prior art keywords
state
datapath
processing
conditional
value
Prior art date
Application number
PCT/US2001/050992
Other languages
French (fr)
Other versions
WO2002046885A3 (en
WO2002046885A9 (en
Inventor
John L. Redford
Original Assignee
Chipwrights Design, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chipwrights Design, Inc. filed Critical Chipwrights Design, Inc.
Priority to DE0001348167T priority Critical patent/DE01988453T1/en
Priority to EP01988453A priority patent/EP1348167A2/en
Priority to AU2002241759A priority patent/AU2002241759A1/en
Publication of WO2002046885A2 publication Critical patent/WO2002046885A2/en
Publication of WO2002046885A3 publication Critical patent/WO2002046885A3/en
Publication of WO2002046885A9 publication Critical patent/WO2002046885A9/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Definitions

  • TECHNICAL FIELD This invention relates to handling conditional processing in a single instruction multiple datapath (SIMD) processor architecture.
  • SIMD single instruction multiple datapath
  • SIMD processor is a parallel processor array architecture wherein multiple datapaths are controlled by a single instruction. Each datapath handles one data item at a given time. In a simple example, in a SIMD processor having four datapaths, each data item in a four data item array would be processed in a respective one of the four datapaths.
  • multiple datapaths may be enabled prior to encountering a conditional processing block, such as an if-then-else- processing block.
  • the processor enable (PE) states of each of the datapaths i.e., whether they are enabled or disabled, must be saved in case any of the datapath PE states is changed during execution of the conditional processing block. Further, upon exiting the conditional processing block, the PE states of the datapaths must be restored to the states that existed prior to entry of the conditional processing block.
  • One approach to handling the datapath PE states during conditional processing operations is to maintain the PE state of each datapath in a register stack. As the PE state of the datapath is changed during the conditional processing, the previous PE state is pushed onto the register stack. Upon completion of the conditional processing block, the datapath's PE state is restored to that which the datapath had prior to executing the conditional processing block, by popping that previous PE state off the register stack. If the conditional processing block contains multiple conditional operations (e.g., nested if-then-else-operations), the stack must contain multiple registers to save the datapath PE states during (and restore the datapath PE states after) the various conditional operations. It may be difficult for software to manage the stack during nested conditional operations, because of limitations in the number of parallel registers available for use in the stack.
  • One general aspect of this invention features maintaining a PE state of a datapath during conditional processing, by saving a current PE state of the datapath as an indication thereof before the conditional processing, and manipulating the indication during the conditional processing to reflect changes in the PE state of the datapath that may occur during the conditional processing.
  • the invention features an instruction set and an SIMD processor for carrying out these steps. Preferred embodiments may include one or more of the following features.
  • the saved PE state of the datapath is restored based at least in part on the indication.
  • the saving, manipulating, and restoring steps are performed for each one of a plurality of datapaths in a SIMD processor that performs the conditional processing.
  • the conditional processing includes an if- processing statement.
  • the saving step includes storing the indication as a value representing the current PE state of the datapath.
  • the manipulating includes changing the value based on the PE state of the datapath during the conditional processing. The value is incremented if the PE state of the datapath is disabled during the saving. The value is not changed from an initial value if the PE state of the datapath is enabled during the conditional processing.
  • the saved PE state of the datapath is restored based at least in part on the value.
  • the restoring comprises assigning the datapath to a disabled PE state if the value exceeds a threshold, and otherwise assigning the datapath to an enabled PE state.
  • the value is changed (e.g., decremented) if the value exceeds the threshold.
  • the conditional processing block may comprise a plurality of the if-processing statements. In this case, the saving, manipulating, and restoring steps are performed for each of the if-processing statements.
  • the conditional processing block can also include an else-processing statement.
  • the manipulating step further comprises changing (e.g., inverting) or not changing the value prior to performing the else-processing statement based on whether processing of the if-processing statement changed the PE state of the datapath.
  • the manipulating includes changing the value to indicate the enabled state. If the saved PE state of the datapath was an enabled state and the processing of the if-processing statement did not change the PE state, the manipulating includes changing the value to indicate the disabled state. If the saved PE state of the datapath was a disabled state, the processing of the if-processing statement will not change the PE state, and thus the manipulating includes maintaining the value to indicate the disabled state.
  • the invention features instructions that combine one or more of the PE state saving and manipulating steps with a branch operation.
  • the invention enables the datapath PE state to be accurately tracked (and correctly restored) with minimal hardware overhead, even when the conditional processing block includes many nested conditional operations.
  • PE state is tracked for each datapath with a single register, thereby eliminating the need for a stack that is multiple registers deep to maintain the PE state.
  • datapath PE state is saved, manipulated, and restored rapidly at the start of, during, and upon exiting, the conditional processing block. Combining one or more of the PE state saving and inverting steps with a branch operation greatly reduces software overhead and increases processing speed.
  • FIG. 1 is a block diagram of a single instruction multiple datapath (SIMD) processor.
  • FIG. 2 is a flow diagram of a process for maintaining a PE state of a datapath in a SIMD processor during conditional processing.
  • SIMD single instruction multiple datapath
  • FIG. 3 shows a table of program code utilizing SANE_PE, RESTORE_PE and FLIP_PE instructions.
  • a single instruction multiple datapath (SIMD) processor 10 includes an instruction cache 12, control logic 14, a serial datapath 16, and a number of parallel datapaths labeled 18a, 18b, 18c, 18, ... 18n.
  • the parallel datapaths 18 write to a memory 20.
  • Each of the datapaths 18 has an associated processor enable (PE) bit 22 that represents the PE state of that datapath.
  • PE processor enable
  • parallel datapath 18a is associated with a PE bit 22a
  • parallel datapath 18b is associated with a PE bit 22b, and so forth.
  • PE bit 22a For example, if PE bit 22a is enabled, data items may be written by parallel datapath 18a; if PE bit 22b is enabled, data items may be written by parallel datapath 18b. If PE bit 22n is enabled, data items may be written by parallel datapath 18n. When a PE bit is disabled, its associated parallel datapath is disabled and data items may not be written by that parallel datapath.
  • control logic 14 fetches an instruction from the instruction cache 12.
  • the instruction is fed to the serial datapath 16 that provides the instruction to the datapaths 18.
  • serial datapath 16 that provides the instruction to the datapaths 18.
  • Each of the datapaths 18 is read together and written together unless the processor enable bit is disabled for a particular datapath.
  • conditional processing block within the program code (e.g., a processing block that includes one or more if-then-else processing statements)
  • the current PE state of each of the datapaths must be accounted for, so that if any of the PE states of the datapaths are altered during execution of the conditional processing block, the PE states can be restored upon the completion of the conditional processing block.
  • a conditional processing block contains multiple conditional processing operations, some of which may be executed during (i.e., nested within) the processing of other conditional processing operations.
  • the PE state of each datapath must be saved prior to entering each nested conditional operation, and the saved PE state must be restored upon completing the conditional operation.
  • conditional processing operation is an if-then- else-processing operation.
  • an interesting phenomenon occurs. Specifically, once the PE state of a datapath is disabled, the PE state of that datapath never again becomes enabled during operations that comprise that if-then-else processing block.
  • the present invention tracks the PE state of each datapath by providing and manipulating a PE state indication that exploits this phenomenon.
  • a datapath when a datapath enters a conditional processing block, its PE state indication is set to a value that indicates the current PE state of datapath (enabled or disabled, as evidenced by the datapath's PE bit), and that value is stored (e.g., in a parallel register associated with the datapath). The current PE state is thereby saved as an indirect indication thereof.
  • the value is updated, as necessary, based on the datapath's PE state during the conditional processing.
  • the value is used to restore the datapath's PE state to the PE state that the datapath had prior to entering the if-then-else processing block.
  • FIG. 2 illustrates a process 50 of maintaining the state of a datapath in SIMD processor 10 during an exemplary if-then-else conditional processing block.
  • the datapath's PE state indication (which is held in one of the datapath's parallel registers R, Fig.
  • a threshold value of -1 is used for purposes discussed below. If the datapath's PE state is disabled when the if-processing block is encountered (i.e., at the time that the PE state is saved) (54), the value is incremented (56). Otherwise, the value is not changed (as shown by line 58). During the if-processing, the datapath's PE state may or may not be modified, depending on the results of the if-processing (59). If the conditional processing block includes an else-processing block (60), the process determines whether to invert the datapath's PE state prior to performing the else-processing (62); when else-processing is not included in the conditional processing block, step 62 is skipped (64).
  • process 50 inverts the PE state of the datapath from the saved PE state (i.e., the PE state of the datapath prior to executing the if-then-else-processing block) if the PE state of the datapath was enabled prior to executing the if-then-else-processing block. If, however, the PE state was disabled prior to encountering the if-then-else processing block, it will remain disabled, and thus process 50 does not change it.
  • the saved PE state i.e., the PE state of the datapath prior to executing the if-then-else-processing block
  • process 50 Upon completing the else-processing block (or the if-processing block if the conditional processing block does not include an "else" statement), process 50 restores the saved PE state (i.e., the current PE state of the datapath prior to the datapath encountering the conditional processing block).
  • Process 50 enables the PE state if the value of the indication is less than zero (66); otherwise, the datapath's PE state is disabled.
  • the value of the indication is decremented if the value is greater than or equal to zero (68), that is, if the value exceeds the -1 threshold.
  • the conditional processing block may include other conditional processing statements. For example, it may include additional if-then-else-processing statements or if-processing statements arranged in nested relationship. If so, the various steps of process 50 are performed for the conditional processing statements to which they apply.
  • three instructions are provided that are inserted in the assembly code produced by a compiler during compilation of a program to be executed in SIMD processor 10. The three instructions are:
  • SANE_PE RESTORE_PE
  • FLIP_PE FLIP_PE
  • P refers to a parallel register in SIMD processor 10 in which the datapath's PE state indication is stored.
  • the compiler inserts the SANE_PE (P) instruction (which implements steps 54-58 of process 50) prior to the start of an if-processing block (e.g., immediately prior to the "if processing statement), and inserts the RESTORE_PE (P) instruction (which performs steps 66 and 68) at the end of the if-processing block.
  • the compiler inserts the FLIP_PE (P) instruction (which implements steps 60-64) at the start of the else-processing block (e.g., immediately prior to the "else" processing statement), and inserts the RESTORE_PE (P) instruction at the end of the else-processing block.
  • the RESTORE_PE (P) instruction performs two functions. If the value of the PE state indication is greater than -1 (i.e., if the saved PE state of the datapath is the disabled state), the RESTORE_PE (P) instruction assigns the datapath to the disabled PE state; otherwise, the datapath is enabled. The RESTORE_PE(P) instruction also decrements the PE state indication value stored in register P if the value is greater than or equal to zero. Otherwise, the RESTORE_PE (P) instruction does not change the stored value of the PE state indication. In this manner, the value of the indication is not decremented below -1.
  • the SAVE_PE (P) instruction is always paired with a RESTORE_PE (P) instruction.
  • a datapath that is in the enabled PE state prior to encountering the if-processing block is restored to the enabled PE state at the conclusion of the if- processing block, regardless of whether (or how) the PE state may have been changed during the execution of the if-processing block.
  • the SANE_PE (P) instruction causes the state indication value to be incremented from
  • the RESTORE_PE (P) instruction causes the value to be decremented back to -1. Because the value was greater than zero, however, the datapath is assigned the disabled PE state upon exiting the if-processing block.
  • the FLIP_PE (P) instruction is used for the "else" part of an if-then-else processing block.
  • the operation of the FLLP PE (P) instruction is based on the current PE state of the datapath and the saved PE state of the datapath. Simply put, if the execution of the "if statement disabled the datapath (i.e., changed the associated PE bit from 1 to 0), the FLIP_PE (P) instruction will re-enable the datapath (i.e., change PE back to 1).
  • a table 100 is presented showing an example utilizing the SANE_PE, RESTORE_PE, and FLIP_PE instructions in a conditional processing block 101 involving two if-processing operations 102 and 104, and one else-processing operation 106.
  • if-processing operation 104 is nested within if- processing operation 102 and else-processing operation 106.
  • the table includes a stub of program code 108 and the resulting assembly code 110 generated by a SIMD compiler (not shown).
  • the table 100 illustrates the assembly code 110 and register manipulation for a SIMD processor 10 having four datapaths DPO, DPI, DP2, and DP3.
  • PI and P2 are parallel registers that respectively store data used during execution of the conditional processing block.
  • P3 is the register that stores the PE state indication values
  • PE is the register (22, Fig. 1) that stores the PE bits of the individual datapaths.
  • datapaths DPO, DPI and DP2 are enabled, while datapath DP3 is disabled. This is shown in line 111.
  • the compiler inserts a SANE_PE (P3) instruction 112 before the first if-processing block 102, a SANE_PE (P3) instruction 114 before the second (nested) if-processing block 104, a RESTOREJPE (P3) instruction 116 upon exiting the second if-processing block 104, a FLIP_PE (P3) instruction 118 at the start of the else-processing block 106, and a RESTORE_PE (P3) instruction 120 at the end of the else-processing block 106.
  • the data values stored in register PI are initially 1, 0, -1, and -1, respectively.
  • register P2 is initially unused.
  • Line 111 indicates the initial PE states of the datapaths, as described above.
  • Line 127 illustrates the operation of SANE_PE (P3) instruction 112. Because DP0-DP2 are currently enabled, the values for those datapaths stored in P3 (line 126) are not incremented from their initial value of -1. But because DP3 is disabled, SANE_PE (P3) instruction 112 causes the value in P3 for DP3 to be incremented to 0.
  • Line 128 shows the operation of if-statement 102.
  • the PE state of the datapath is enabled if PI is greater than or equal to 0 and the datapath is currently in the enable state.
  • PI is greater than or equal to 0 and PE is enabled (line 111), so PE is enabled for both datapaths.
  • PI is not greater than or equal to zero, so PE is disabled.
  • P2 is set to 1 in DPO and DPI. Because DP2 and DP3 are disabled, the contents of P2 for those datapaths are not changed.
  • Line 132 shows the operation of SANE_PE (P3) instruction 114 for if- processing block 104. Because the current PE state of DPO and DPI (shown by line 128) is enabled, instruction 114 does not increment the value in register P3 for those datapaths. However, instruction 114 increments the value in register P3 for DP2 and DP3, because those datapaths are disabled.
  • Line 134 shows the operation of if-statement 104. DPO remains enabled, but DPI becomes disabled. DP2 and DP3 remain disabled.
  • Line 140 shows the effect of FLIP_PE (P3) instruction 118 on the PE states of the PE bits. Note that else-statement 106 is paired with if-statement 102. Thus, it is the PE states of the datapaths as saved by SAVE_P3 (PE) instruction 112 (shown in line 127) that are relevant. Because the saved PE states of DPO and DPI were enabled, and because DPO an DPI are currently enabled (as shown by line 138), FLIP_PE (P3) instruction 118 disables these datapaths. As a result, PE is changed to 0 for DPO and DPI (line 140).
  • PE SAVE_P3
  • the PE bit is set according to the contents of register Pa and if equal to zero, a branch is taken to destination X. For example, if all PE bits are set to zero, the datapaths branch around (i.e. skip) the remainder of the conditional processing block, because none of the datapaths are enabled to perform any further work on the conditional processing block.
  • the FLIP instruction may be combined with a branch, for example, in the following instruction: if (FLIP_PE (Pb)) go to X This instruction will invert the PE bits in the manner discussed above, and will branch to destination X if none of them are set. In this way, the datapaths are routed around a subsequent "else" processing block if they are all in the disabled PE state.
  • Either or both branches may be made a function of whether the program code is deterministic. That is, if either branch is taken, by definition work is skipped and the program runs faster. If the programmer wants the program to always run in the same amount of time, regardless of whether the branch conditions apply (e.g., if the program code must meet real-time deadlines), he or she will set a deterministic bit (DET) in the processor's register set. Neither branch is taken if the DET is set, even if all datapaths' PE states are disabled.
  • DET deterministic bit

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Abstract

A processor enable (PE) state of a datapath (18a) during conditional processing is maintained by saving a current PE state of the datapath as an indication thereof before the conditional processing, and manipulating the indication during the conditional processing to reflect changes in the PE state of the datapath that may occur during the conditional processing. Where the conditional processing block is an if-then-else processing block, the PE state is saved during if-processing by storing the indication as a value representing the current PE state, and the manipulating includes changing the value based on the PE stage during the if-processing. The PE state is inverted, or not, prior to performing the else-processing based on whether the if-processing changed the PE state of the datapath. At the end of the conditional processing block, the saved PE state of the datapath is restored based at least in part on the value. An instruction set and an SIMD processor (18a..18d) for carrying out these steps are also provided. The instruction set also includes instructions that combine one or more of the PE saving and manipulating steps with a branch operation.

Description

HANDLING CONDITIONAL PROCESSING IN A SINGLE INSTRUCTION MULTIPLE DATAPATH PROCESSOR ARCHITECTURE
CROSS-REFERENCE TO RELATED APPLICATIONS This application is related to a copending application entitled BRANCH
HANDLING FOR SINGLE INSTRUCTION MULTIPLE DATAPATH PROCESSOR ARCHITECTURES, which was filed on the same day as this application and is incorporated herein by reference.
TECHNICAL FIELD This invention relates to handling conditional processing in a single instruction multiple datapath (SIMD) processor architecture.
BACKGROUND
Parallel processing is an efficient way of processing an array of data items. A SIMD processor is a parallel processor array architecture wherein multiple datapaths are controlled by a single instruction. Each datapath handles one data item at a given time. In a simple example, in a SIMD processor having four datapaths, each data item in a four data item array would be processed in a respective one of the four datapaths. During program execution in the SIMD processor, multiple datapaths may be enabled prior to encountering a conditional processing block, such as an if-then-else- processing block. Before executing the conditional processing block, the processor enable (PE) states of each of the datapaths, i.e., whether they are enabled or disabled, must be saved in case any of the datapath PE states is changed during execution of the conditional processing block. Further, upon exiting the conditional processing block, the PE states of the datapaths must be restored to the states that existed prior to entry of the conditional processing block.
One approach to handling the datapath PE states during conditional processing operations is to maintain the PE state of each datapath in a register stack. As the PE state of the datapath is changed during the conditional processing, the previous PE state is pushed onto the register stack. Upon completion of the conditional processing block, the datapath's PE state is restored to that which the datapath had prior to executing the conditional processing block, by popping that previous PE state off the register stack. If the conditional processing block contains multiple conditional operations (e.g., nested if-then-else-operations), the stack must contain multiple registers to save the datapath PE states during (and restore the datapath PE states after) the various conditional operations. It may be difficult for software to manage the stack during nested conditional operations, because of limitations in the number of parallel registers available for use in the stack.
SUMMARY
One general aspect of this invention features maintaining a PE state of a datapath during conditional processing, by saving a current PE state of the datapath as an indication thereof before the conditional processing, and manipulating the indication during the conditional processing to reflect changes in the PE state of the datapath that may occur during the conditional processing. In related aspects, the invention features an instruction set and an SIMD processor for carrying out these steps. Preferred embodiments may include one or more of the following features.
After the conditional processing, the saved PE state of the datapath is restored based at least in part on the indication. The saving, manipulating, and restoring steps are performed for each one of a plurality of datapaths in a SIMD processor that performs the conditional processing. In an illustrated embodiment, the conditional processing includes an if- processing statement. The saving step includes storing the indication as a value representing the current PE state of the datapath. The manipulating includes changing the value based on the PE state of the datapath during the conditional processing. The value is incremented if the PE state of the datapath is disabled during the saving. The value is not changed from an initial value if the PE state of the datapath is enabled during the conditional processing.
After the if-processing statement is performed, the saved PE state of the datapath is restored based at least in part on the value. The restoring comprises assigning the datapath to a disabled PE state if the value exceeds a threshold, and otherwise assigning the datapath to an enabled PE state. The value is changed (e.g., decremented) if the value exceeds the threshold. The conditional processing block may comprise a plurality of the if-processing statements. In this case, the saving, manipulating, and restoring steps are performed for each of the if-processing statements.
The conditional processing block can also include an else-processing statement. The manipulating step further comprises changing (e.g., inverting) or not changing the value prior to performing the else-processing statement based on whether processing of the if-processing statement changed the PE state of the datapath.
For example, if the saved PE state of the datapath was an enabled state and the processing of the if-processing statement changed the PE state to a disabled state, the manipulating includes changing the value to indicate the enabled state. If the saved PE state of the datapath was an enabled state and the processing of the if-processing statement did not change the PE state, the manipulating includes changing the value to indicate the disabled state. If the saved PE state of the datapath was a disabled state, the processing of the if-processing statement will not change the PE state, and thus the manipulating includes maintaining the value to indicate the disabled state.
In another aspect, the invention features instructions that combine one or more of the PE state saving and manipulating steps with a branch operation.
Among other advantages, the invention enables the datapath PE state to be accurately tracked (and correctly restored) with minimal hardware overhead, even when the conditional processing block includes many nested conditional operations. In particular, PE state is tracked for each datapath with a single register, thereby eliminating the need for a stack that is multiple registers deep to maintain the PE state. In addition, datapath PE state is saved, manipulated, and restored rapidly at the start of, during, and upon exiting, the conditional processing block. Combining one or more of the PE state saving and inverting steps with a branch operation greatly reduces software overhead and increases processing speed.
Other features and advantages of the invention will be apparent from the description and drawings, and from the claims.
DESCRIPTION OF DRAWINGS FIG. 1 is a block diagram of a single instruction multiple datapath (SIMD) processor. FIG. 2 is a flow diagram of a process for maintaining a PE state of a datapath in a SIMD processor during conditional processing.
FIG. 3 shows a table of program code utilizing SANE_PE, RESTORE_PE and FLIP_PE instructions. Like reference symbols in the various drawings indicate like elements.
DETAILED DESCRIPTION
Referring to FIG. 1, a single instruction multiple datapath (SIMD) processor 10 includes an instruction cache 12, control logic 14, a serial datapath 16, and a number of parallel datapaths labeled 18a, 18b, 18c, 18, ... 18n. The parallel datapaths 18 write to a memory 20. Each of the datapaths 18 has an associated processor enable (PE) bit 22 that represents the PE state of that datapath. Specifically, parallel datapath 18a is associated with a PE bit 22a, parallel datapath 18b is associated with a PE bit 22b, and so forth. When a PE bit is enabled, its associated parallel datapath is enabled and data items may be written by that parallel datapath. For example, if PE bit 22a is enabled, data items may be written by parallel datapath 18a; if PE bit 22b is enabled, data items may be written by parallel datapath 18b. If PE bit 22n is enabled, data items may be written by parallel datapath 18n. When a PE bit is disabled, its associated parallel datapath is disabled and data items may not be written by that parallel datapath.
In operation, the control logic 14 fetches an instruction from the instruction cache 12. The instruction is fed to the serial datapath 16 that provides the instruction to the datapaths 18. Each of the datapaths 18 is read together and written together unless the processor enable bit is disabled for a particular datapath.
When an instruction causes the SIMD processor 10 to execute a conditional processing block within the program code (e.g., a processing block that includes one or more if-then-else processing statements), the current PE state of each of the datapaths must be accounted for, so that if any of the PE states of the datapaths are altered during execution of the conditional processing block, the PE states can be restored upon the completion of the conditional processing block. Often, a conditional processing block contains multiple conditional processing operations, some of which may be executed during (i.e., nested within) the processing of other conditional processing operations. In order to assure proper operation, the PE state of each datapath must be saved prior to entering each nested conditional operation, and the saved PE state must be restored upon completing the conditional operation.
As discussed above, one type of conditional processing operation is an if-then- else-processing operation. As the PE states of datapaths are changed during if-then- else processing, an interesting phenomenon occurs. Specifically, once the PE state of a datapath is disabled, the PE state of that datapath never again becomes enabled during operations that comprise that if-then-else processing block. The present invention tracks the PE state of each datapath by providing and manipulating a PE state indication that exploits this phenomenon. In brief summary, when a datapath enters a conditional processing block, its PE state indication is set to a value that indicates the current PE state of datapath (enabled or disabled, as evidenced by the datapath's PE bit), and that value is stored (e.g., in a parallel register associated with the datapath). The current PE state is thereby saved as an indirect indication thereof. During processing of the if-then-else processing block, the value is updated, as necessary, based on the datapath's PE state during the conditional processing. When the datapath completes the if-then-else-processing block, the value is used to restore the datapath's PE state to the PE state that the datapath had prior to entering the if-then-else processing block. As a result, the datapath's PE state is accurately tracked, even through numerous, nested conditional processing operations, and is elegantly restored after each conditional operation (and, ultimately, after completion of the entire conditional processing block). Overhead is minimized, because a single register is used to store the PE state indication (i.e., the value), rather than devoting different registers to store the datapath PE state information for each nested conditional operation within the block. FIG. 2 illustrates a process 50 of maintaining the state of a datapath in SIMD processor 10 during an exemplary if-then-else conditional processing block. Preliminarily, the datapath's PE state indication (which is held in one of the datapath's parallel registers R, Fig. 1) is initialized (52) to a threshold value. A threshold value of -1 is used for purposes discussed below. If the datapath's PE state is disabled when the if-processing block is encountered (i.e., at the time that the PE state is saved) (54), the value is incremented (56). Otherwise, the value is not changed (as shown by line 58). During the if-processing, the datapath's PE state may or may not be modified, depending on the results of the if-processing (59). If the conditional processing block includes an else-processing block (60), the process determines whether to invert the datapath's PE state prior to performing the else-processing (62); when else-processing is not included in the conditional processing block, step 62 is skipped (64). During step 62, process 50 inverts the PE state of the datapath from the saved PE state (i.e., the PE state of the datapath prior to executing the if-then-else-processing block) if the PE state of the datapath was enabled prior to executing the if-then-else-processing block. If, however, the PE state was disabled prior to encountering the if-then-else processing block, it will remain disabled, and thus process 50 does not change it.
Upon completing the else-processing block (or the if-processing block if the conditional processing block does not include an "else" statement), process 50 restores the saved PE state (i.e., the current PE state of the datapath prior to the datapath encountering the conditional processing block). Process 50 enables the PE state if the value of the indication is less than zero (66); otherwise, the datapath's PE state is disabled. Finally, the value of the indication is decremented if the value is greater than or equal to zero (68), that is, if the value exceeds the -1 threshold.
The conditional processing block may include other conditional processing statements. For example, it may include additional if-then-else-processing statements or if-processing statements arranged in nested relationship. If so, the various steps of process 50 are performed for the conditional processing statements to which they apply. To implement the process 50 of FIG. 2, three instructions are provided that are inserted in the assembly code produced by a compiler during compilation of a program to be executed in SIMD processor 10. The three instructions are:
SANE_PE (P) RESTORE_PE (P) FLIP_PE (P) where P refers to a parallel register in SIMD processor 10 in which the datapath's PE state indication is stored. During the program compilation, the compiler inserts the SANE_PE (P) instruction (which implements steps 54-58 of process 50) prior to the start of an if-processing block (e.g., immediately prior to the "if processing statement), and inserts the RESTORE_PE (P) instruction (which performs steps 66 and 68) at the end of the if-processing block. If the program includes an else-processing block within the if-processing block, i.e., if-then-else processing, the compiler inserts the FLIP_PE (P) instruction (which implements steps 60-64) at the start of the else-processing block (e.g., immediately prior to the "else" processing statement), and inserts the RESTORE_PE (P) instruction at the end of the else-processing block.
The SAVE_PE (P) instruction increments the indicator stored in register P from its initial value of -1 if the datapath is in the disabled state (i.e., PE=0) at that time. Otherwise, the instruction does not change the value of the indication. As a result, by testing whether the value in the register is less than zero, one can determine whether the previous PE state of the datapath was the enabled or the disabled state.
The RESTORE_PE (P) instruction performs two functions. If the value of the PE state indication is greater than -1 (i.e., if the saved PE state of the datapath is the disabled state), the RESTORE_PE (P) instruction assigns the datapath to the disabled PE state; otherwise, the datapath is enabled. The RESTORE_PE(P) instruction also decrements the PE state indication value stored in register P if the value is greater than or equal to zero. Otherwise, the RESTORE_PE (P) instruction does not change the stored value of the PE state indication. In this manner, the value of the indication is not decremented below -1.
The SAVE_PE (P) instruction is always paired with a RESTORE_PE (P) instruction. As a result, a datapath that is in the enabled PE state prior to encountering the if-processing block is restored to the enabled PE state at the conclusion of the if- processing block, regardless of whether (or how) the PE state may have been changed during the execution of the if-processing block.
Consider, for example, a datapath that is in the enabled PE state when it reaches the if-processing block. Its stored state indication value is -1. Neither the SANE_PE (P) instruction nor the RESTORE_PE (P) instruction changes the stored state indication value. Thus, the value is still -1 at the end of the if-processing block, and the datapath is assigned the enable PE state upon exiting the if-processing block.
On the other hand, if the datapath was disabled upon encountering the if- processing block, the SANE_PE (P) instruction causes the state indication value to be incremented from
-1 to 0. At the end of the if-processing block, the RESTORE_PE (P) instruction causes the value to be decremented back to -1. Because the value was greater than zero, however, the datapath is assigned the disabled PE state upon exiting the if-processing block.
The FLIP_PE (P) instruction is used for the "else" part of an if-then-else processing block. The operation of the FLLP PE (P) instruction is based on the current PE state of the datapath and the saved PE state of the datapath. Simply put, if the execution of the "if statement disabled the datapath (i.e., changed the associated PE bit from 1 to 0), the FLIP_PE (P) instruction will re-enable the datapath (i.e., change PE back to 1). If, however, the datapath was already enabled when the "if statement was encountered (i.e., the saved PE=1), and the datapath is still enabled after the "if statement is executed, FLIP_PE (P) will disable the datapath (i.e., change PE to 0). Finally, if the saved PE state of the datapath is disabled (PE=0), the datapath will always continue to be disabled after the "if statement is executed. In this case, the FLIP_PE (P) instruction will cause the datapath to remain disabled (PE=0).
The operation of the FLIP_PE (P) instruction is summarized in the following table:
Figure imgf000009_0001
Referring to FIG. 3, a table 100 is presented showing an example utilizing the SANE_PE, RESTORE_PE, and FLIP_PE instructions in a conditional processing block 101 involving two if-processing operations 102 and 104, and one else-processing operation 106. In this example, if-processing operation 104 is nested within if- processing operation 102 and else-processing operation 106. The table includes a stub of program code 108 and the resulting assembly code 110 generated by a SIMD compiler (not shown). The table 100 illustrates the assembly code 110 and register manipulation for a SIMD processor 10 having four datapaths DPO, DPI, DP2, and DP3. In the table, PI and P2 are parallel registers that respectively store data used during execution of the conditional processing block. P3 is the register that stores the PE state indication values, and PE is the register (22, Fig. 1) that stores the PE bits of the individual datapaths.
In the example presented, prior to encountering conditional processing block 101, datapaths DPO, DPI and DP2 are enabled, while datapath DP3 is disabled. This is shown in line 111.
As described previously, the compiler inserts a SANE_PE (P3) instruction 112 before the first if-processing block 102, a SANE_PE (P3) instruction 114 before the second (nested) if-processing block 104, a RESTOREJPE (P3) instruction 116 upon exiting the second if-processing block 104, a FLIP_PE (P3) instruction 118 at the start of the else-processing block 106, and a RESTORE_PE (P3) instruction 120 at the end of the else-processing block 106. As shown in line 122, the data values stored in register PI are initially 1, 0, -1, and -1, respectively. As shown in line 124, register P2 is initially unused. Line 111 indicates the initial PE states of the datapaths, as described above. Line 127 illustrates the operation of SANE_PE (P3) instruction 112. Because DP0-DP2 are currently enabled, the values for those datapaths stored in P3 (line 126) are not incremented from their initial value of -1. But because DP3 is disabled, SANE_PE (P3) instruction 112 causes the value in P3 for DP3 to be incremented to 0.
Line 128 shows the operation of if-statement 102. Specifically, the PE state of the datapath (PE) is enabled if PI is greater than or equal to 0 and the datapath is currently in the enable state. For DPO and DPI, PI is greater than or equal to 0 and PE is enabled (line 111), so PE is enabled for both datapaths. For DP2 and DP3, PI is not greater than or equal to zero, so PE is disabled.
At line 130, P2 is set to 1 in DPO and DPI. Because DP2 and DP3 are disabled, the contents of P2 for those datapaths are not changed.
Line 132 shows the operation of SANE_PE (P3) instruction 114 for if- processing block 104. Because the current PE state of DPO and DPI (shown by line 128) is enabled, instruction 114 does not increment the value in register P3 for those datapaths. However, instruction 114 increments the value in register P3 for DP2 and DP3, because those datapaths are disabled. Line 134 shows the operation of if-statement 104. DPO remains enabled, but DPI becomes disabled. DP2 and DP3 remain disabled.
As shown in line 135, in the next operation, the value stored in P2 becomes 2 for DPO, but remains 1 for DPI because DPI is disabled. Lines 136 and 138 show the results of the operation of the RESTORE_PE (P3) instruction 118 located at the end of if-processing block 104. Recall that execution of the RESTORE instruction causes the datapath to be enabled (PE set to 1) if the state indication value is less than zero, and disabled otherwise, while also decrementing the state indication value if it is currently greater than zero. Applying those rules to the present example, datapath DPO remains enabled (PE=1), because its state, as saved by SANE_PE (P3) instruction 114, was enabled (as indicated by the -1 value in P3 shown by line 132). Because DPI was also enabled prior to encountering if-statement 104, datapath DPI is restored to the enable PE state by RESTORE_PE (P3) instruction 116. DP2 and DP3 remain disabled, because their PE states prior to if-statement 104 were disabled (as shown by line 132). In addition, the values in P3 for DPO and DPI are not changed from their current value of -1, and the values in P3 for DP2 and DP3 are decremented to -1 and 0, respectively. By comparing lines 128 and 136, it is seen that the PE states of DP0-DP3 are the same after exiting if-processing block 104 as they were upon entering if-processing block 104. Line 140 shows the effect of FLIP_PE (P3) instruction 118 on the PE states of the PE bits. Note that else-statement 106 is paired with if-statement 102. Thus, it is the PE states of the datapaths as saved by SAVE_P3 (PE) instruction 112 (shown in line 127) that are relevant. Because the saved PE states of DPO and DPI were enabled, and because DPO an DPI are currently enabled (as shown by line 138), FLIP_PE (P3) instruction 118 disables these datapaths. As a result, PE is changed to 0 for DPO and DPI (line 140).
On the other hand, the saved PE state of DP2 is enabled (as shown by the -1 value in line 127), and the current PE state of DP2 is disabled (indicated by PE=0 in line 138). Accordingly, FLLP_PE (P3) instruction 118 enables DP2 (sets PE=1 in line 140).
Datapath DP3 was disabled when its PE state was saved by SAVE_PE (P3) instruction 112 (line 127), and remains disabled (PEN), line 138). Thus, FLIP_PE (P3) instruction 118 maintains DP3 disabled. This is shown by PE=0 in line 142. Because only datapath DP2 is currently enabled, the operation specified in else statement 106 is performed by only datapath DP2. This is shown in line 142.
Lines 144 and 146 illustrate the results of performing RESTORE_PE (P3) instruction 120 at the end of conditional processing block 108. Because the current values of the PE state indications are -1 for DP0-DP2 (line 138), RESTOREJPE (P3) instruction 120 assigns DP0-DP2 to the enable PE state (PE=1, line 144), and does not change the indication values (line 146). That is, datapaths DPO and DPI are restored to the enable state, and DP2 is maintained in the enable state. On the other hand, because datapath DP3 was not enabled, RESTORE_PE (P3) instruction 120 maintains DP3 in the disabled PE state (PE=0, line 144), and decrements the P3 value for DP3 from 0 (line 138) to -1 (line 146).
By comparing lines 111 and 144, it is seen that the state of datapaths DP0-DP3 are the same at the end of the conditional processing block 108 as they were when conditional processing block 108 was encountered. The saving of PE state and the setting of the PE bits during conditional processing can be combined with a branch operation. This concept is discussed in more detail in the copending application. The following instruction is illustrative: if (SANE_PE (Pb), PE = Pa = 0) go to X This instruction handles all of the work needed for the "if statement. That is, SANE_PE (Pb) saves the current PE state of the datapath in register Pb in the mamier discussed above. The PE bit is set according to the contents of register Pa and if equal to zero, a branch is taken to destination X. For example, if all PE bits are set to zero, the datapaths branch around (i.e. skip) the remainder of the conditional processing block, because none of the datapaths are enabled to perform any further work on the conditional processing block.
Similarly, the FLIP instruction may be combined with a branch, for example, in the following instruction: if (FLIP_PE (Pb)) go to X This instruction will invert the PE bits in the manner discussed above, and will branch to destination X if none of them are set. In this way, the datapaths are routed around a subsequent "else" processing block if they are all in the disabled PE state.
Either or both branches may be made a function of whether the program code is deterministic. That is, if either branch is taken, by definition work is skipped and the program runs faster. If the programmer wants the program to always run in the same amount of time, regardless of whether the branch conditions apply (e.g., if the program code must meet real-time deadlines), he or she will set a deterministic bit (DET) in the processor's register set. Neither branch is taken if the DET is set, even if all datapaths' PE states are disabled.
Embodiments of the invention have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. Accordingly, other embodiments are within the scope of the following claims.

Claims

WHAT IS CLAIMED IS:
1. A method of maintaining a PE state of a datapath during conditional processing, comprising saving a current PE state of the datapath as an indication thereof before the conditional processing, and manipulating the indication during the conditional processing to reflect changes in the PE state of the datapath that may occur during the conditional processing.
2. The method of claim 1 further comprising, after the conditional processing, restoring the saved PE state of the datapath based at least in part on the indication.
3. The method of claim 2 further comprising performing the saving, manipulating, and restoring steps for each one of a plurality of datapaths in a SIMD processor that performs the conditional processing
4. The method of claim 1 wherein the conditional processing includes an if- processing statement, the saving including storing the indication as a value representing the current PE state of the datapath.
5. The method of claim 4 wherein the manipulating includes changing the value based on the PE state of the datapath during the conditional processing.
6. The method of claim 5 wherein the manipulating includes incrementing the value if the PE state of the datapath is disabled during the saving.
7. The method of claim 4 wherein the manipulating includes not changing the value from an initial value if the PE state of the datapath does not change during the conditional processing.
8. The method of claim 4 further comprising, after the if-processing statement is perfomied, restoring the saved PE state of the datapath based at least in part on the value.
9. The method of claim 8 wherein the restoring comprises assigning the datapath to a disabled PE state if the value exceeds a threshold, and otherwise assigning the datapath to an enabled PE state.
10. The method of claim 9 further comprising changing the value if the value exceeds the threshold.
11. The method of claim 10 wherein the changing includes decrementing the value.
12. The method of claim 8 wherein the conditional processing block comprises a plurality of the if-processing statements, and further comprising performing the saving, manipulating, and restoring for each of the if-processing statements.
13. The method of claim 4 wherein the conditional processing block includes an else-processing statement, the manipulating further comprising changing or not changing the value prior to performing the else-processing statement based on whether processing of the if-processing statement changed the PE state of the datapath.
14. The method of claim 13 wherein, if the saved PE state of the datapath was an enabled state and the processing of the if-processing statement changed the PE state to a disabled state, the manipulating includes changing the value to indicate the enabled state.
15. The method of claim 13 wherein, if the saved PE state of the datapath was an enabled state and the processing of the if-processing statement did not change the PE state, the manipulating includes changing the value to indicate the disabled state.
16. The method of claim 13 wherein, if the saved PE state of the datapath was a disabled state, the manipulating includes maintaining the value to indicate the disabled state.
17. A computer instruction set for maintaining a PE state of a datapath during conditional processing, comprising an instruction that causes the datapath to save a current PE state of the datapath as an indication thereof before the conditional processing, and manipulate the indication during the conditional processing to reflect changes in the PE state of the datapath that may occur during the conditional processing.
18. The instruction set of claim 17 further comprising an instruction that causes the datapath to, after the conditional processing, restore the saved PE state of the datapath based at least in part on the indication.
19. The instruction set of claim 17 wherein the conditional processing includes an if-processing statement, the instruction further causing the datapath to store the indication as a value representing the saved PE state of the datapath.
20. The instruction set of claim 19 further comprising an instruction that causes the datapath, after the if-processing statement is performed, to restore the saved PE state of the datapath based at least in part on the value.
21. The instruction set of claim 19 wherein the conditional processing block includes an else-processing block, the instruction set further comprising an instruction that causes the datapath to change or not change the value prior to performing the else- processing statement based on whether processing of the if-processing statement changed the PE state of the datapath.
22. A SIMD processor comprising a plurality of datapaths, each of the datapaths being capable of maintaining a PE state thereof during conditional processing by executing one or more instructions that cause the datapath to: save a current PE state of the datapath as an indication thereof before the conditional processing, and manipulate the indication during the conditional processing to reflect changes in the PE state of the datapath that may occur during the conditional processing.
23. A computer instruction set for execution by a datapath during conditional processing, comprising an instruction that causes the datapath to save an indication of a current PE state of the datapath as an indication thereof before the conditional processing, 5 establish the PE state for the conditional processing, and branch around the conditional processing if the established PE state does not satisfy a condition in the instruction.
24. The instruction set of claim 23 further comprising an instruction that causes the datapath to o invert the established PE state if a selected event occurs, and branch around the conditional processing if the inverted PE state does not satisfy a selected condition.
PCT/US2001/050992 2000-11-28 2001-11-09 Handling conditional processing in a single instruction multiple datapath processor architecture WO2002046885A2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE0001348167T DE01988453T1 (en) 2000-11-28 2001-11-09 DEVELOPING CONDITIONAL PROCESSING IN A PROCESSOR ARCHITECTURE WITH A COMMAND AND SEVERAL DATA WAYS
EP01988453A EP1348167A2 (en) 2000-11-28 2001-11-09 Handling conditional processing in a single instruction multiple datapath processor architecture
AU2002241759A AU2002241759A1 (en) 2000-11-28 2001-11-09 Handling conditional processing in a single instruction multiple datapath processor architecture

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US72399400A 2000-11-28 2000-11-28
US09/723,994 2000-11-28

Publications (3)

Publication Number Publication Date
WO2002046885A2 true WO2002046885A2 (en) 2002-06-13
WO2002046885A3 WO2002046885A3 (en) 2002-08-22
WO2002046885A9 WO2002046885A9 (en) 2003-08-07

Family

ID=24908517

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/050992 WO2002046885A2 (en) 2000-11-28 2001-11-09 Handling conditional processing in a single instruction multiple datapath processor architecture

Country Status (6)

Country Link
EP (1) EP1348167A2 (en)
CN (1) CN1486465A (en)
AU (1) AU2002241759A1 (en)
DE (1) DE01988453T1 (en)
TW (1) TWI236622B (en)
WO (1) WO2002046885A2 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005086017A1 (en) * 2004-03-02 2005-09-15 Imagination Technologies Limited Method and apparatus for management of control flow in a simd device
US8661225B2 (en) 2009-06-05 2014-02-25 Arm Limited Data processing apparatus and method for handling vector instructions
US9069938B2 (en) 2006-11-03 2015-06-30 Bluerisc, Inc. Securing microprocessors against information leakage and physical tampering
US9569186B2 (en) 2003-10-29 2017-02-14 Iii Holdings 2, Llc Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US9697000B2 (en) 2004-02-04 2017-07-04 Iii Holdings 2, Llc Energy-focused compiler-assisted branch prediction
US10101978B2 (en) 2002-07-09 2018-10-16 Iii Holdings 2, Llc Statically speculative compilation and execution

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
CN100383728C (en) * 2005-08-25 2008-04-23 应广科技股份有限公司 Program address arithmetic organ framework capable of implementing waiting and delaying orders
US8923510B2 (en) * 2007-12-28 2014-12-30 Intel Corporation Method and apparatus for efficiently implementing the advanced encryption standard
CN107491288B (en) * 2016-06-12 2020-05-08 合肥君正科技有限公司 Data processing method and device based on single instruction multiple data stream structure

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4410939A (en) * 1979-07-17 1983-10-18 Matsushita Electric Industrial Co. Ltd. System for program interrupt processing with quasi-stack of register-sets
US4434461A (en) * 1980-09-15 1984-02-28 Motorola, Inc. Microprocessor with duplicate registers for processing interrupts
US4992933A (en) * 1986-10-27 1991-02-12 International Business Machines Corporation SIMD array processor with global instruction control and reprogrammable instruction decoders
US5021993A (en) * 1987-03-31 1991-06-04 Kabushiki Kaisha Toshiba Device for saving and restoring register information
US6282628B1 (en) * 1999-02-24 2001-08-28 International Business Machines Corporation Method and system for a result code for a single-instruction multiple-data predicate compare operation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4410939A (en) * 1979-07-17 1983-10-18 Matsushita Electric Industrial Co. Ltd. System for program interrupt processing with quasi-stack of register-sets
US4434461A (en) * 1980-09-15 1984-02-28 Motorola, Inc. Microprocessor with duplicate registers for processing interrupts
US4992933A (en) * 1986-10-27 1991-02-12 International Business Machines Corporation SIMD array processor with global instruction control and reprogrammable instruction decoders
US5021993A (en) * 1987-03-31 1991-06-04 Kabushiki Kaisha Toshiba Device for saving and restoring register information
US6282628B1 (en) * 1999-02-24 2001-08-28 International Business Machines Corporation Method and system for a result code for a single-instruction multiple-data predicate compare operation

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10101978B2 (en) 2002-07-09 2018-10-16 Iii Holdings 2, Llc Statically speculative compilation and execution
US9569186B2 (en) 2003-10-29 2017-02-14 Iii Holdings 2, Llc Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US10248395B2 (en) 2003-10-29 2019-04-02 Iii Holdings 2, Llc Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US9697000B2 (en) 2004-02-04 2017-07-04 Iii Holdings 2, Llc Energy-focused compiler-assisted branch prediction
US10268480B2 (en) 2004-02-04 2019-04-23 Iii Holdings 2, Llc Energy-focused compiler-assisted branch prediction
WO2005086017A1 (en) * 2004-03-02 2005-09-15 Imagination Technologies Limited Method and apparatus for management of control flow in a simd device
US7428628B2 (en) 2004-03-02 2008-09-23 Imagination Technologies Limited Method and apparatus for management of control flow in a SIMD device
JP2007526571A (en) * 2004-03-02 2007-09-13 イマジネイション テクノロジーズ リミテッド Method and apparatus for control flow management in SIMD devices
US9069938B2 (en) 2006-11-03 2015-06-30 Bluerisc, Inc. Securing microprocessors against information leakage and physical tampering
US9940445B2 (en) 2006-11-03 2018-04-10 Bluerisc, Inc. Securing microprocessors against information leakage and physical tampering
US10430565B2 (en) 2006-11-03 2019-10-01 Bluerisc, Inc. Securing microprocessors against information leakage and physical tampering
US11163857B2 (en) 2006-11-03 2021-11-02 Bluerisc, Inc. Securing microprocessors against information leakage and physical tampering
US8661225B2 (en) 2009-06-05 2014-02-25 Arm Limited Data processing apparatus and method for handling vector instructions

Also Published As

Publication number Publication date
CN1486465A (en) 2004-03-31
DE01988453T1 (en) 2004-04-22
WO2002046885A3 (en) 2002-08-22
AU2002241759A1 (en) 2002-06-18
TWI236622B (en) 2005-07-21
EP1348167A2 (en) 2003-10-01
WO2002046885A9 (en) 2003-08-07

Similar Documents

Publication Publication Date Title
US4399507A (en) Instruction address stack in the data memory of an instruction-pipelined processor
US4435758A (en) Method for conditional branch execution in SIMD vector processors
US5487159A (en) System for processing shift, mask, and merge operations in one instruction
US5051896A (en) Apparatus and method for nullifying delayed slot instructions in a pipelined computer system
EP0644482B1 (en) Dispatch of instructions to multiple execution units
US5710902A (en) Instruction dependency chain indentifier
US5283874A (en) Cross coupling mechanisms for simultaneously completing consecutive pipeline instructions even if they begin to process at the same microprocessor of the issue fee
US20060294344A1 (en) Computer processor pipeline with shadow registers for context switching, and method
US8229989B2 (en) Method for controlling rounding modes in single instruction multiple data (SIMD) floating-point units
US4771380A (en) Virtual vector registers for vector processing system
EP0471191B1 (en) Data processor capable of simultaneous execution of two instructions
JPS6234242A (en) Data processing system
JPH04172533A (en) Electronic computer
KR0167005B1 (en) Central processing unit
JPS6155707B2 (en)
EP1348167A2 (en) Handling conditional processing in a single instruction multiple datapath processor architecture
US5043879A (en) PLA microcode controller
US4792894A (en) Arithmetic computation modifier based upon data dependent operations for SIMD architectures
JPH07244589A (en) Computer system and method to solve predicate and boolean expression
US6931518B1 (en) Branching around conditional processing if states of all single instruction multiple datapaths are disabled and the computer program is non-deterministic
US5390306A (en) Pipeline processing system and microprocessor using the system
US5291615A (en) Instruction pipeline microprocessor
US5479620A (en) Control unit modifying micro instructions for one cycle execution
Kartashev et al. Adaptable pipeline system with dynamic architecture
EP0211487A1 (en) Conditional operations in computers

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
AK Designated states

Kind code of ref document: A3

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A3

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

WWE Wipo information: entry into national phase

Ref document number: 2001988453

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 01821987X

Country of ref document: CN

COP Corrected version of pamphlet

Free format text: PAGES 1/3-3/3, DRAWINGS, REPLACED BY NEW PAGES 1/3-3/3; DUE TO LATE TRANSMITTAL BY THE RECEIVING OFFICE

WWP Wipo information: published in national office

Ref document number: 2001988453

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWW Wipo information: withdrawn in national office

Ref document number: 2001988453

Country of ref document: EP

NENP Non-entry into the national phase in:

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP