Claims
- 1. An apparatus for providing indirect access to very long instruction words (VLIWs) allowing both sequential code, comprising a sequence of short instruction words (SIWs), and parallel operations, in the form of VLIWs, to be encoded efficiently, the apparatus comprising:
a short instruction memory (SIM) fetch logic; a short instruction memory (SIM); an instruction decoder; a VLIW instruction memory (VIM); a VLIW memory address unit (VIM AGU); associated VIM address registers; and a VIM address generation mechanism for selecting a VLIW in a VIM by generating a VIM address.
- 2. The apparatus of claim 1 further comprising a VIM direct address mode apparatus having:
a first instruction register (IR1) for storing an instruction including direct address bits; said VIM AGU operating to determine that the instruction in the first instruction register is a direct VIM addressing mode instruction and providing direct addressing mode control signals; and said VIM address generation mechanism operating to receive the direct addressing mode control signals and the direct address bits from the first instruction register to produce a VIM address value.
- 3. The apparatus of claim 2 wherein the first instruction register is formatted into at least three major sections, a first section for opcode which may include a VIM addressing mode option field, a second section for iVLIW options defining a function of an issued SIW, and a third section for a VIM direct address.
- 4. The apparatus of claim 1 further comprising a VIM base displacement addressing apparatus having:
a first instruction register (IR1) for storing a base-plus-displacement VIM addressing SIW instruction; a plurality of base registers storing different base values; said VIM AGU operating to select one of the plurality of base registers; an adder for receiving a base value from the selected base register and to add an offset from said instruction to produce a result; an adder result register for storing the adder result for a first type of instruction; and a selector for directly selecting the adder result for a VIM address for a second type of instruction, and for selecting the stored adder result from the adder result register for the first type of instruction.
- 5. The apparatus of claim 4 wherein the first type of instruction is a load VLIW instruction.
- 6. The apparatus of claim 4 wherein the second type of instruction is an execute VLIW instruction.
- 7. The apparatus of claim 4 wherein the selector is a multiplexer which is selectively controlled by a control signal from said VIM AGU.
- 8. The apparatus of claim 4 wherein the first instruction register stores a 32-bit XV base-plus-offset instruction including a plurality of enable mask bits and a plurality of offset bits.
- 9. The apparatus of claim 1 further comprising a VIM indirect/indexed address mode apparatus having:
a first instruction register (IR1) for storing an iVLIW instruction having at least one address register selection bit; a plurality of address registers storing different address values, a particular one of the address registers selected based upon a calculation utilizing the at least one address register selection bit; and said VIM address generation mechanism operating to generate the VIM address based upon the address value for the particular address register selected.
- 10. The apparatus of claim 9 further comprising an adder which adds a specified increment value to the value from the particular address register creating a result to be stored into the particular address register for future use.
- 11. A base plus index addressing mode apparatus comprising:
a first instruction register (IR1) for storing an instruction with log2(n) base register selection bits and a log2 (n) of VIM index address bits; a plurality of n VIM address registers which may be controllably selected as a base or an index register; a selector mechanism for selecting a first one of the n VIM address registers as a selected base register to provide a base address value; a selector mechanism for selecting a second one of the n VIM address registers as a selected index register to provide an index address value; and a base plus index adder connected to receive the base address value and the index address value and to produce a sum of the base plus index value.
- 12. The apparatus of claim 11 further comprising:
a multiplexer; and a virtual instruction memory (VIM), the multiplexer operating to select said sum as a VIM address in the VIM for executing one or more very long instruction word (VLIW) instructions.
- 13. The apparatus of claim 11 further comprising:
an increment adder connected to receive the index address value and an increment and to load the sum into an instruction selected index address register which is one of the n VIM address registers.
- 14. A circular indexed addressing mode apparatus comprising:
a first instruction register (IR1) for storing a plurality of base register selection bits and a plurality of index register selection bits; a plurality of address registers which may be controllably selected as a base register or an index register; a base selection multiplexer for selecting a particular address register as a start base register for providing a start address of a circular range; an index selection multiplexer for selecting an index register for providing an address value treated as specifying both an index and a size of a block of addresses defining a Mod field; and a very long instruction word (VLIW) instruction memory (VIM) address generation mechanism for selecting a VLIW in a VIM by generating a VIM address based upon a combination of a base address register value and an index register value.
- 15. A method for providing a processing element (PE) relative addressing mode for an array of PEs in which each PE has at least one associated base register, the method comprising the steps of:
assigning each PE an identification (ID); selecting a common address register for all of the PEs to provide a VIM address register value; and generating for each PE a VIM address for selecting a very long instruction word (VLIW) in a VLIW instruction memory (VIM) and a VIM address based upon the PE Identification and the VIM address register value.
- 16. A method for providing synchronous MIMD operation of a manifold array processor having a plurality of processing elements in which multiple processing elements execute different very long instruction words (VLIWs) in parallel, each processing element having a set of base address registers, the method comprising:
utilizing one of the base address registers to generate a first address register value; determining a first address value to load into a selected base address register for a first processing element; determining a second address value to load into the corresponding selected base address register for a second processing element; dispatching an execute VLIW (XV) instruction containing a common offset value to both the first and second processing elements; selecting in response to the XV instruction a first VLIW in the first PE based upon the first address register value and the common offset value; and selecting in response to the XV instruction a second and different VLIW in the second PE based upon the first address register value and the common offset value.
- 17. An apparatus for providing indirect access to very long instruction words (VLIWs) allowing both sequential code, comprising a sequence of short instruction words (SIWs) containing compact instructions, and parallel operations, in the form of VLIWs, to be encoded efficiently, the apparatus comprising:
a short instruction memory (SIM) fetch logic; a short instruction memory (SIM); an instruction decoder; a VLIW instruction memory (VIM); a VLIW memory address unit (VIM AGU); associated VIM address registers; a VIM address generation mechanism for selecting a VLIW in a VIM by generating a VIM address; and a first instruction register (IR1) for storing a compact instruction including an identifying address bit or bits; wherein said VIM AGU operates to determine that the compact instruction in the first instruction register is a direct VIM addressing mode instruction, a base plus offset addressing mode instruction, an indirect/indexed addressing mode instruction, a circular indexed addressing mode instruction or a PE relative addressing mode instruction, and to provide appropriate VIM addressing mode control signals.
- 18. A method for providing a processing element (PE) relative addressing mode for an array of PEs in which each PE has at least one associated base register, the method comprising the steps of:
assigning each PE an identification (ID); selecting a common address register for all of the PEs to provide a VIM address register value; and generating for each PE a VIM address for selecting a very long instruction word (VLIW) in a VLIW instruction memory (VIM) by substituting the PE identification for predetermined bits of the VIM address register value and utilizing the VIM address register value with the substituted bits to select the VLIW.
- 19. A method for selective execution of a processing element (PE) in an array of PEs based on an arithmetic condition in which one or the other of two very long instruction word (VLIW) instructions is selected based on condition state information available locally in the PE, the method comprising the steps of:
establishing a local condition state at each PE; providing a common VIM address register value to each; and generating for each PE a conditionally determined offset VIM address for selecting a particular very long instruction word (VLIW) in a VLIW instruction memory (VIM) and based upon arithmetically combining the local condition state and the common VIM address register value.
- 20. A method for selective execution of a processing element (PE) in an array of PEs based on a logical condition in which one or the other of two very long word (VLIW) instructions is based on condition state information available locally in the PE, the method comprising the steps of:
determining a local condition state at the PE; selecting an address register for the PE to provide a VIM address register value based upon the determination of the local condition state; and generating for the PE a VIM address for selecting a particular very long instruction word (VLIW) in a VLIW instruction memory (VIM) based upon the conditionally selected VIM address register value.
CROSS-REFERENCE TO RELATED APPLICATION
[0001] The present application claims the benefit of U.S. Provisional Application Serial No. 60/092,130 entitled “Methods and Apparatus for Instruction Addressing in Indirect VLIW Processors” and filed Jul. 9, 1998.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60092130 |
Jul 1998 |
US |
Divisions (1)
|
Number |
Date |
Country |
Parent |
09350191 |
Jul 1999 |
US |
Child |
10073782 |
Feb 2002 |
US |