Claims
- 1. A multiply unit for use in a microprocessor, the microprocessor having at least one general-purpose register for storing a predetermined number of bits, the multiply unit comprising:
at least one input data path for receiving one or more input operands by the multiply unit; a multiplier connected to receive the one or more input operands and to perform multiplication using the one or more input operands; and an extended-precision accumulated output data path connected to receive an output of the multiplier and including more bits than the sum of the lengths of the one or more input operands.
- 2. The multiply unit of claim 1 further comprising an extended-precision accumulator wherein data from the extended-precision accumulated output path is stored in the extended-precision accumulator.
- 3. The multiply unit of claim 1 wherein the multiplier provides a multiply-add operation whereby at least two operands are multiplied and added to the contents of the extended-precision accumulator.
- 4. The multiply unit of claim 1 wherein the multiplier includes:
an arithmetic multiplier; and a polynomial multiplier.
- 5. The multiply unit of claim 1 wherein the arithmetic multiplier is a twos-complement binary arithmetic multiplier and the polynomial multiplier is a polynomial basis arithmetic multiplier.
- 6. The multiply unit of claim 4 wherein the polynomial multiplier provides a multiply-add operation whereby at least two operands are polynomial-basis multiplied and added to the contents of the extended-precision accumulator.
- 7. The multiply unit of claim 1 wherein the multiplier includes result logic for selecting which values to load into the extended-precision accumulator.
- 8. The multiply unit of claim 7 wherein the result logic is a multiplexer.
- 9. The multiply unit of claim 1 wherein data from the extended-precision accumulated output data path are stored in an accumulator, the accumulator including:
an extended register; a high-order register; and a low-order register.
- 10. The multiply unit of claim 9 wherein the extended register, the high-order register, and the low-order register each include at least one general-purpose register.
- 11. The multiply unit of claim 9 wherein the extended register stores 8-bit values, the high-order register stores 32-bit values, and the low-order register stores 32-bit values.
- 12. The multiply unit of claim 1 wherein the microprocessor includes at least one instruction for manipulating the contents of the extended-precision accumulator.
- 13. The multiply unit of claim 12 wherein the at least one instruction includes an instruction that moves a value from the extended-precision accumulator into a general-purpose register.
- 14. The multiply unit of claim 13 wherein the instruction further includes shifting the contents of the extended-precision accumulator.
- 15. The multiply unit of claim 14 wherein the contents of the extended-precision accumulator are shifted rightward by the size of the value moved to the general-purpose register from the extended-precision accumulator.
- 16. The multiply unit of claim 12 wherein the at least one instruction includes an instruction that moves a value to the extended-precision accumulator from a general-purpose register.
- 17. The multiply unit of claim 16 wherein the instruction further includes shifting the contents of the extended-precision accumulator.
- 18. The multiply unit of claim 17 wherein the contents of the extended-precision accumulator are shifted leftward by the size of the value moved from the general-purpose register to the extended-precision accumulator.
- 19. In a microprocessor core having at least one general-purpose register, a method for performing arithmetic operations, the method comprising:
fetching an instruction to perform an operation from a data store; reading one or more registers; performing the operation using a multiply unit, the multiply unit comprising:
at least one input register for receiving one or more input operands by the multiply unit; a multiplier connected to receive the one or more input operands and to perform multiplication using the one or more input operands; and an extended-precision accumulated output data path connected to receive an output of the multiplier and including more bits than the sum of the lengths of the one or more input operands.
- 20. The method of claim 19 further comprising storing data from the extended-precision accumulated output path in the extended-precision accumulator.
- 21. The method of claim 19 further comprising using the multiplier to perform a multiply-add operation by multiplying at least two operands and adding the results of the multiplication to the contents of the extended-precision accumulator.
- 22. The method of claim 19 wherein the multiplier includes:
an arithmetic multiplier; and a polynomial multiplier.
- 23. The method of claim 19 wherein the arithmetic multiplier is a twos-complement binary arithmetic multiplier and the polynomial multiplier is a polynomial basis arithmetic multiplier.
- 24. The method of claim 22 further comprising using the polynomial multiplier to perform a multiply-add operation by multiplying at least two operands and adding the results of the multiplication to the contents of the extended-precision accumulator.
- 25. The method of claim 19 wherein the multiplier includes result logic for selecting which values to load into the extended-precision accumulator.
- 26. The method of claim 25 wherein the result logic is a multiplexer.
- 27. The method of claim 19 further comprising storing data from the extended-precision accumulated output data path in an accumulator that includes:
an extended register; a high-order register; and a low-order register.
- 28. The method of claim 27 wherein the extended register, the high-order register, and the low-order register each include at least one general-purpose register.
- 29. The method of claim 27 wherein the extended register stores 8-bit values, the high-order register stores 32-bit values, and the low-order register stores 32-bit values.
- 30. The method of claim 19 further comprising manipulating the contents of the extended-precision accumulator.
- 31. The method of claim 30 wherein manipulating the contents comprises moving a value from the extended-precision accumulator into a general-purpose register.
- 32. The method of claim 31 wherein manipulating the contents further includes shifting the contents of the extended-precision accumulator.
- 33. The method of claim 32 wherein shifting the contents includes shifting the contents of the extended-precision accumulator rightward by the size of the value moved the general-purpose register to from the extended-precision accumulator.
- 34. The method of claim 30 wherein shifting the contents includes moving a value to the extended-precision accumulator from a general-purpose register.
- 35. The method of claim 34 wherein shifting the contents further includes shifting the contents of the extended-precision accumulator.
- 36. The method of claim 35 wherein shifting the contents further includes shifting the contents of the extended-precision accumulator leftward by the size of the value moved from the general-purpose register to the extended-precision accumulator.
- 37. A computer-readable medium comprising a microprocessor core embodied in software, the microprocessor core including at least one general-purpose register and a multiply unit, the multiply unit comprising:
at least one input data path for receiving one or more input operands by the multiply unit; a multiplier connected to receive the one or more input operands and to perform multiplication using the one or more input operands; and an extended-precision accumulated output data path connected to receive an output of the multiplier and including more bits than the sum of the lengths of the one or more input operands.
- 38. The computer-readable medium of claim 37 further comprising an extended-precision accumulator wherein data from the extended-precision accumulated output path is stored in the extended-precision accumulator.
- 39. The computer-readable medium of claim 37 wherein the multiplier provides a multiply-add operation whereby at least two operands are multiplied and added to the contents of the extended-precision accumulator.
- 40. The computer-readable medium of claim 37 wherein the multiplier includes:
an arithmetic multiplier; and a polynomial multiplier.
- 41. The computer-readable medium of claim 37 wherein the arithmetic multiplier is a twos-complement binary arithmetic multiplier and the polynomial multiplier is a polynomial basis arithmetic multiplier.
- 42. The computer-readable medium of claim 40 wherein the polynomial multiplier provides a multiply-add operation whereby at least two operands are polynomial-basis multiplied and added to the contents of the extended-precision accumulator.
- 43. The computer-readable medium of claim 37 wherein the multiplier includes result logic for selecting which values to load into the extended-precision accumulator.
- 44. The computer-readable medium of claim 43 wherein the result logic is a multiplexer.
- 45. The computer-readable medium of claim 37 wherein data from the extended-precision accumulated output data path are stored in an accumulator, the accumulator including:
an extended register; a high-order register; and a low-order register.
- 46. The computer-readable medium of claim 45 wherein the extended register, the high-order register, and the low-order register each include at least one general-purpose register.
- 47. The computer-readable medium of claim 45 wherein the extended register stores 8-bit values, the high-order register stores 32-bit values, and the low-order register stores 32-bit values.
- 48. The computer-readable medium of claim 37 wherein the microprocessor includes at least one instruction for manipulating the contents of the extended-precision accumulator.
- 49. The computer-readable medium of claim 48 wherein the at least one instruction includes an instruction that moves a value from the extended-precision accumulator into a general-purpose register.
- 50. The computer-readable medium of claim 49 wherein the instruction further includes shifting the contents of the extended-precision accumulator.
- 51. The computer-readable medium of claim 50 wherein the contents of the extended-precision accumulator are shifted rightward by the size of the value moved to the general-purpose register from the extended-precision accumulator.
- 52. The computer-readable medium of claim 48 wherein the at least one instruction includes an instruction that moves a value to the extended-precision accumulator from a general-purpose register.
- 53. The computer-readable medium of claim 52 wherein the instruction further includes shifting the contents of the extended-precision accumulator.
- 54. The computer-readable medium of claim 53 wherein the contents of the extended-precision accumulator are shifted leftward by the size of the value moved from the general-purpose register to the extended-precision accumulator.
- 55. A microprocessor comprising:
an extended-precision accumulator, wherein said accumulator includes an extended register, a high-order register and a low-order register; a general purpose register; and an instruction execution unit capable of facilitating a first movement of data in response to a first move instruction, said first movement of data including a moving of contents of (i) said low-order register to said general purpose register, (ii) said high-order register to said low-order register and (iii) said extended register to said high-order register.
- 56. The microprocessor of claim 55 wherein said instruction execution unit is capable of facilitating a second movement of data in response to a second move instruction, said second movement of data including a moving of contents of (i) said high-order register to said extended register, (ii) said low-order register to said high-order register and (iii) said general purpose register to said low-order register.
- 57. The microprocessor of claim 55 wherein the extended register, the high-order register, and the low-order register each comprise a general-purpose register.
- 58. A method for moving data comprising:
providing an extended-precision accumulator, said accumulator including an extended register, a high-order register and a low-order register; providing a general purpose register; and moving data from (i) said low-order register to said general purpose register, (ii) said high-order register to said low-order register and (iii) said extended register to said high-order register in response to a first instruction.
- 59. The method of claim 58 further comprising moving data from (i) said high-order register to said extended register, (ii) said low-order register to said high-order register and (iii) said general purpose register to said low-order register in response to a second instruction.
- 60. The method of claim 58 wherein the extended register, the high-order register, and the low-order register each comprise a general-purpose register.
- 61. A computer data signal embodied in a transmission medium comprising:
computer readable first program code for providing an extended-precision accumulator, wherein said accumulator includes an extended register, a high-order register and a low-order register; computer readable second program code for providing a general purpose register; and computer readable third program code for providing an instruction execution unit capable of facilitating a first movement of data in response to a first move instruction, said first movement of data including a moving of contents of (i) said low-order register to said general purpose register, (ii) said high-order register to said low-order register and (iii) said extended register to said high-order register.
- 62. The computer data signal of claim 61 wherein said instruction execution unit is capable of facilitating a second movement of data in response to a second move instruction, said second movement of data including a moving of contents of (i) said high-order register to said extended register, (ii) said low-order register to said high-order register and (iii) said general purpose register to said low-order register.
- 63. The computer data signal of claim 61 wherein the extended register, the high-order register, and the low-order register each comprise a general-purpose register.
- 64. A method for moving data comprising:
providing an extended-precision accumulator, the accumulator including an extended register, a high-order register and a low-order register; providing a general purpose register; and moving data from (i) the high-order register to the extended register, (ii) the low-order register to the high-order register and (iii) the general purpose register to the low-order register in response to a single instruction.
- 65. The method of claim 64 wherein the extended register is X bits wide, and the high-order register is Y bits wide, and X is less than Y.
- 66. The method of claim 58 wherein the extended register is X bits wide, and the high-order register is Y bits wide, and X is less than Y.
- 67. The method of claim 66 wherein the data moved from the extended register to the high-order register is zero extended.
- 68. The method of claim 67 wherein the extended register is cleared after the data is moved.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is related to the following co-pending applications, each of which is being filed concurrently with this application and is incorporated by reference: (1) U.S. application Ser. No. ______, titled “Partial Bitwise Permutations”; (2) U.S. application Ser. No. ______, titled “Binary Polynomial Multiplier”; (3) U.S. application Ser. No. ______, titled “Polynomial Arithmetic Operations”; and (4) U.S. application Ser. No. ______, titled “Configurable Instruction Sequence Generation”.