USRE40509EExpiredUtility

Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture

57
Assignee: ALTERA CORPPriority: Oct 21, 1999Filed: May 18, 2004Granted: Sep 16, 2008
Est. expiryOct 21, 2019(expired)· nominal 20-yr term from priority
G06F 8/4434G06F 9/30178G06F 9/30156Y10S707/99935
57
PatentIndex Score
4
Cited by
18
References
57
Claims

Abstract

An improved manifold array (ManArray) architecture addresses the problem of configurable application-spacific instruction set optimization and instruction memory reduction using an instruction abbreviation process thereby further optimizing the general ManArray architecture for application to high-volume and portablke battery-powered type of products. In the ManArray abbreviation process a standard 32-bit ManArray instruction is reduced to a smaller length instruction format, such as 14-bits. An application is first programmed using the full ManArray instruction set using the native 32-bit instructions. After the application program is completed and verified, an instruction-abbreviation tool analyzes the 32-bit application program and generates the abbreviated program using the abbreviated instructions. This instruction abbreviation process allows different program-reduction optimizations tailored for each application program. This process develops an optimized instruction set for the intended application. The abbreviated program, now located in a significantly smaller instruction memory, is functionally equivalent to the original native 32-bit application program. The abbreviated-instructions are fetched from this smaller memory and then dynamically translated into native ManArray instruction form in a sequence processor controller. Since the instruction set is now determined for the specific application. an optimized processor design can be easily produced. The system and process can be applied to native instructions having other numbers of bits and to other processing architectures.

Claims

exact text as granted — not AI-modified
1. A method for generating an abbreviated application specific program utilizing an abbreviated instruction set comprising the steps of:
 generating a native program for an application utilizing a set of native instructions having a first fixed  number of bits;  
 debugging the native program;  
 processing the debugged native program by analyzing the set of native instructions at a sub-instruction level with a processor to determine specific patterns of bits that do not change within groups of instructions mid  and utilizing the results of said analysis to determine an abbreviated instruction set having a second fixed  number of bits less than the first fixed  number of bits and corresponding to the set of native instructions; and  
 converting the native program to the abbreviated application specific program by replacing the set of native instructions with the abbreviated instruction set.  
 
     
     
       2. The method of  claim 1  wherein said step of processing further comprises:
 analyzing the set of native instructions to identify a first group of native instructions having a style pattern of bits which is defined as a specific pattern of bits that are constant for said group.  
 
     
     
       3. The method of  claim 2  further comprising the step of:
 storing the identified style pattern of bits in a translation memory.  
 
     
     
       4. The method of  claim 3  further comprising the step of:
 utilizing the identified style pattern of bits stored in said translation memory to recreate native instructions from the first group of native instruction by combining bits from corresponding abbreviated instructions with the identified style pattern of bits.  
 
     
     
       5. The method of  claim 1  wherein said step of processing further comprises:
 analyzing the set of native instructions to identify multiple groups of native instructions, each group having a style pattern of bits which is defined as a specific pattern of bits that are constant.  
 
     
     
       6. The method of  claim 5  further comprising the step of:
 storing the identified style patterns of bits in a translation memory.  
 
     
     
       7. The method of  claim 6  further comprising the step of:
 utilizing an identified style pattern of bits selected from said translation memory to recreate native instructions from one of said multiple groups of native instructions by combining bits from corresponding abbreviated instructions with the identified style pattern of bits.  
 
     
     
       8. The method of  claim 4  further comprising the step of:
 creating a one-to-one mapping between a program's native instruction and an abbreviated instruction by using a translation memory addressing mechanism to identify the style pattern of bits stored in said translation memory.  
 
     
     
       9. The method of  claim 7  further comprising the step of:
 creating a one-to-one mapping between a program's native instruction and an abbreviated instruction by using a translation memory addressing mechanism to identify the style pattern of bits stored in said translation memory.  
 
     
     
       10. The method of  claim 8  further comprising the translation memory addressing step of adding or concatenating an offset field contained in the abbreviated instruction with a translation memory base address stored in an internal machine register to form the address to select a specific pattern of bits from said translation memory. 
     
     
       11. The method of  claim 9  further comprising the translation memory addressing step of adding or concatenating an offset field contained in the abbreviated instruction with a translation memory base address stored in an internal machine register to form the address to select a specific pattern of bits from said translation memory. 
     
     
       12. The method of  claim 1  further comprising the step of:
 executing the application specific program on a simulator to verify its functional equivalence to the native program.  
 
     
     
       13. The method of  claim 12  further comprising the step of:
 determining a processor core specification tailored for use in implementing the application specific program utilizing the abbreviated instruction set.  
 
     
     
       14. The method of  claim 1  further comprising the step of executing the application specific program on a Manta-2 based simulator acting as an emulator. 
     
     
       15. The method of  claim 1  wherein the native instruction set is a manifold array (ManArray) instruction set. 
     
     
       16. The method of  claim 15  further comprising the step of translating abbreviated instructions back into a native ManArray format for decoding and execution in a ManArray sequence processor and processing elements. 
     
     
       17. The method of  claim 16  wherein the step of translating abbreviated instructions back is performed only by a sequence processor. 
     
     
       18. A method for generating an abbreviated instruction set corresponding to a set of native manifold array (ManArray) instructions for all  used in an application specific program comprising the steps of:
 separating the set of native ManArray instructions into groups of instructions;  
 identifying the  unique instructions within each group of instructions;  
 analyzing the unique instructions for common instruction characteristics;  
 determining at least one style pattern of bits which is defined as a specific pattern of bits that are constant; and  
 generating the abbreviated instruction set utilizing the at least one style by encoding the at least one style pattern of bits into a reduced number of bits utilizing a processor.  
 
     
     
       19. The method of  claim 18  wherein the set of native ManArray instructions are separated into groups by classifying said instructions by opcode. 
     
     
       20. The method of  claim 19  wherein at least the following groups are established: store and load instructions; MAU and ALU instructions; DSU instructions; and control flow instructions. 
     
     
       21. The method of  claim 19  wherein at least one of the common instruction characteristics is a relative bit-pattern usage in the application specific program for a given bit-pattern split in an abbreviated instruction format. 
     
     
       22. The method of  claim 18  further comprising the step of:
 storing the at least one style pattern of bits in a translation memory.  
 
     
     
       23. The method of  claim 22  further comprising the step of analyzing relative bit-pattern usage among groups of instructions that include a common style. 
     
     
       24. The method of  claim 22  further comprising the step of generating at least one translation management memory instruction. 
     
     
       25. The method of  claim 22  further comprising the step of:
 utilizing the identified style stored in the translation memory to recreate native instructions from a first group of native instruction by combining bits from corresponding abbreviated instructions with the at least one style pattern of bits.  
 
     
     
       26. A method for translating abbreviated instructions into a native instruction format comprising the steps of:
 fetching an abbreviated instruction having a first fixed  number of bits from a memory tailored to storage of abbreviated instructions;  
 dynamically translating the abbreviated instruction into the format of a native instruction by using a first bit field in the abbreviated instruction as an address reference to a first translation memory containing at least one specific sub-native instruction pattern of bits  for a sub- native instruction pattern ;  
 fetching a  the sub-native instruction pattern from the translation memory  using said address reference, said sub-native instruction pattern being based on a previous analysis of the  a set of native instructions on a sub-instruction level to determine patterns of bits that do not change within groups of instructions;  
 combining the sub-native instruction patterns with bits from the abbreviated instruction to create the native instruction in a sequence processor (SP) array controller said native instruction having a second fixed  number of bits greater than said first fixed  number; and  
 dispatching the native instruction to the sequence processor array controller or a processing element for execution.  
 
     
     
       27. The method of claim  26    59  wherein the abbreviated instruction includes at least one S/P bit, a multi-bit opcode field and a multi-bit translation memory address offset for use in the address reference to the first translation memory. 
     
     
       28. The method of  claim 27  wherein the step of dynamically translating further comprises the step of decoding the multi-bit opcode field. 
     
     
       29. The method of  claim 27  wherein the step of dynamically translating further comprises the steps of forming a translation memory address by adding the multi-bit translation memory address offset with a translation memory base address; and
 selecting a plurality of native instruction bits from a location in the translation memory corresponding to the formed translation memory address.  
 
     
     
       30. The method of  claim 27  further comprising the step of directly using the multi-bit translation memory address offset to select a plurality of native instruction bits from a location in a translation memory corresponding to the multi-bit translation memory address offset. 
     
     
       31. The method of  claim 26  wherein the abbreviated instruction includes at least one S/P bit, a multi-bit opcode field, a multi-bit translation memory address offset, and a plurality of bits which are to be directly loaded. 
     
     
       32. The method of  claim 31  wherein the step of dynamically translating further comprises the step of decoding the multi-bit opcode field. 
     
     
       33. The method of  claim 31  wherein the step of dynamically translating further comprises the steps of forming a translation memory address by adding the multi-bit translation memory offset with a translation memory base address; and
 selecting a plurality of native instruction bits from a location in the translation memory corresponding to the formed translation memory address.  
 
     
     
       34. The method of  claim 33  wherein the step of dynamically translating further comprises the step of combining the selected plurality of native instruction bits and the plurality of bits which are to be directly entered. 
     
     
       35. The method of  claim 26  wherein the abbreviated instruction includes at least one S/P bit, a multi-bit opcode field, a first multi-bit translation memory offset field and a second multi-bit translation memory offset field. 
     
     
       36. The method of  claim 35  wherein the step of dynamically translating further comprises the step of decoding the multi-bit opcode field. 
     
     
       37. The method of  claim 35  wherein the step of dynamically translating further comprises the steps of:
 selecting a first multi-bit portion of the native instruction from a first translation memory address utilizing the first multi-bit translation memory offset field; and  
 selecting a second multi-bit portion of the native instruction from a second translation memory address utilizing the second multi-bit translation memory offset field; and  
 combining both multi-bit portions into a native instruction format.  
 
     
     
       38. The method of  claim 37  wherein translation memory addresses are formed by concatenating base address register bits and translation memory offset field bits. 
     
     
       39. A system for translating abbreviated instructions into a native instruction format comprising:
 a memory storing an abbreviated instruction having a first fixed  number of hits  bits;  
 means for fetching the abbreviated instruction from the memory;  
 means for dynamically translating the abbreviated instruction into a native instruction using a translation memory storing at least one specific  a sub-native instruction pattern of bits, said sub-native instruction pattern being based on a previous analysis of the  a set of native instructions on a sub-instruction level to determine patterns of bits that do not change within groups of instructions;  
 an addressing mechanism using a first bit field in the abbreviated instruction as an address reference to the translation memory  for the sub- native instruction pattern ;  
 means for fetching the sub-native instruction pattern from the translation memory  utilizing the address reference; and  
 means for combining the sub-native instruction pattern with bits from the abbreviated instruction to create the native instruction in the native instruction format having a second fixed  number of bits greater than said first fixed  number.  
 
     
     
       40. The system of  claim 39  further comprising means for dispatching the native instruction to at least one processing element for execution. 
     
     
       41. The system of  claim 39  wherein the means for dynamically translating further comprises at least one translation memory for storing style pattern bits which are common to a group of native instructions. 
     
     
       42. A method fur  for translating abbreviated instructions into a native instruction format comprising the steps of:
 fetching an abbreviated instruction having a first fixed  number of bits from a memory tailored to storage of abbreviated instructions;  
 dynamically translating the abbreviated instruction into the format of a native instruction by using a first and a second bit field in the abbreviated instruction as address references to a first field and a second translation memory each containing at least one specific sub-native instruction patterns of bits  for at least two sub- native instruction patterns ;  
 fetching at least two a sub-native instruction pattern from each translation memory  patterns using said address references, each of said at least two sub-native instruction pattern  patterns being based on a previous analysis of the  a set of native instructions on a sub-instruction level to determine patterns of bits that do not change within groups of instructions;  
 combining the at least two sub-native instruction patterns to create the native instruction in a sequence processor (SP) array controller said native instruction having a second fixed  number of bits greater than said first fixed  number; and  
 dispatching the native instruction to the sequence processor array controller or a processing element for execution.  
 
     
     
       43. A system for translating abbreviated instructions into a native instruction format comprising:
 a memory storing an abbreviated instruction having a first fixed  number of bits;  
 means for fetching the abbreviated instruction from the memory;  
 means for dynamically translating the abbreviated instruction into a native instruction using two translation memories each storing  at least one specific sub-native instruction patterns of bits, each of said at least one sub-native instruction patterns being based on a previous analysis of the  a set of native instructions on a sub-instruction level to determine patterns of bits that do not change within groups of instructions;  
 two addressing mechanisms each using a bit field in the abbreviated instruction as an address reference to one of the two translation memories  for the at least one specific sub- native instruction patterns of bits ;  
 means for fetching the sub-native instruction patterns from each translation memory ; and  
 means for combining the sub-native instruction patterns to crate  create the native instruction in the native instruction format having a second fixed  number of bits greater than said first fixed  number.  
 
     
     
       44. The method of  claim 26  wherein the address reference used in the translating step is an address reference to a first translation memory containing at least one specific sub- native instruction pattern of bits.   
     
     
       45. The system of  claim 39  wherein the means for dynamically translating the abbreviated instruction into a native instruction further comprises:
   a translation memory for storing said sub - native instruction pattern of bits.     
     
     
       46. A system for controlling a translation process wherein a B- bit abbreviated instruction having B bits is translated into a native instruction format having C bits, where the value C is greater than the value B, the system comprising:      a B - bit instruction register for holding the B - bit abbreviated instruction;        a base register;        an adder; and        a native instruction register, wherein the base register output and a field of the B - bit abbreviated instruction in the B - bit instruction register are added by the adder to produce an output which selects native instruction bits for loading into the native instruction register, the selected native instruction bits are not found in the B - bit abbreviated instruction, the selected native instruction bits having been previously determined by analyzing a set of native instructions for specific patterns of bits that do not change within the set of native instructions.     
     
     
       47. The system of  claim 46  further comprising a decoder, the decoder receives opcode bits from the B- bit abbreviated instruction in the B - bit instruction register and decodes said opcode bits to generate group bits which are loaded into the native instruction register.   
     
     
       48. The system of  claim 46  wherein B is  12 ,  13 ,  14 ,  15 ,  16 , or some other integer value less than  30  and C is  32 ,  40 ,  48  or  64 . 
     
     
       49. A system for controlling a translation process wherein a B- bit abbreviated instruction having B bits is translated into a native instruction format having C bits, where the value C is greater than the value B, the system comprising:      a B - bit instruction register for holding the B - bit abbreviated instruction;        a base register;        an adder;        a native instruction register, wherein the native instruction register receives a plurality of direct load bits from a direct load field of the B - bit abbreviated instruction in the B - bit instruction register; and        a base register output and a field of the B - bit abbreviated instruction are added by the adder to produce an output which selects native instruction bits for loading in combination with the direct load bits into the native instruction register, the selected native instruction bits are not found in the B - bit abbreviated instruction, the selected native instruction bits having been previously determined by analyzing a set of native instructions for specific patterns of bits that do not change within the set of native instructions.     
     
     
       50. A system for controlling a translation process wherein a B- bit abbreviated instruction having B bits is translated into a native instruction format having B bits, where the value C is greater than the value B, the system comprising:      a B - bit instruction register for holding the B - bit abbreviated instruction;        two base registers, the two base register outputs and two fields of the B - bit abbreviated instruction are concatenated respectively to form at least two addresses to select at least two patterns of native instruction bits, the selected at least two patterns of native instruction bits having been previously determined by analyzing a set of native instructions for specific patterns of bits that do not change within the set of native instructions; and        a native instruction register for loading the native instruction, wherein the selected at least two patterns of native instruction bits are combined as specified by a style set of bits stored in the processor to form the native instruction.     
     
     
       51. A method for operating a processor utilizing an abbreviated instruction having a first number of bits, the method comprising:
   retrieving the abbreviated instruction;        generating an address reference for a native instruction pattern from combining a first bit field in the abbreviated instruction and a base address register;        retrieving the native instruction pattern of bits to be combined with the abbreviated instruction using the address reference, the native instruction pattern of bits being based on a previous analysis of a set of native instructions on a sub - instruction level to determine patterns of bits that do not change within groups of instructions;        combining the native instruction pattern of bits with the abbreviated instruction to create a native instruction, the native instruction having a second number of bits, the second number of bits is greater than the first number of bits; and        dispatching the native instruction to a processor for execution.     
     
     
       52. The method of  claim 51  wherein the retrieving the abbreviated instruction step retrieves the abbreviated instruction from instruction memory, the instruction memory dimension depends on the size of the abbreviated instruction rather than the size of a native instruction. 
     
     
       53. The method of  claim 51  further comprising the following steps, wherein the following steps occur before the retrieving the abbreviated instruction step, the following steps comprising:
   converting a set of native instructions defining an application program into the abbreviated instruction set; and        storing the abbreviated instruction set.     
     
     
       54. The method of  claim 51  wherein the retrieved bits are retrieved from a translation memory entry, wherein the combining step further comprises:
   applying a style to determine how to map bit positions in the abbreviated instruction to bit positions in the native instruction and how to map bit positions in the translation memory entry to bit positions in the native instruction.     
     
     
       55. The method of  claim 51  wherein the address reference is an address reference to a translation memory, an entry in the translation memory containing the native instruction pattern of bits to be combined with the abbreviated instruction. 
     
     
       56. The method of  claim 51  wherein the abbreviated instruction includes at least one S/P bit, a multi- bit opcode field and a multi - bit translation memory address offset.   
     
     
       57. The method of  claim 56  further comprising:
   decoding the multi - bit opcode field.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.