Claims
- 1. In an instruction set architecture, an instruction for performing polynomial arithmetic, the instruction being part of the instruction set architecture and including:
one or more opcodes identifying the instruction as an instruction for performing a polynomial arithmetic operation; and one or more register identifiers; wherein the instruction is processed by performing the polynomial arithmetic operation using the one or more register identifiers.
- 2. The instruction of claim 1 wherein the polynomial arithmetic operation is binary polynomial addition.
- 3. The instruction of claim 2 wherein the binary polynomial addition is performed using a multiplier.
- 4. The instruction of claim 1 wherein the result of the polynomial arithmetic operation is stored in one or more result registers.
- 5. The instruction of claim 4 wherein the polynomial arithmetic operation includes:
multiplying the contents of the registers identified by the one or more register identifiers to obtain an intermediate value; and adding the contents of the one or more result registers to the intermediate value to obtain a result.
- 6. The instruction of claim 5 wherein the result is stored in the one or more result registers.
- 7. The instruction of claim 1 wherein the result of the polynomial arithmetic operation is stored in a high-order result register and a low-order result register.
- 8. The instruction of claim 1 wherein the polynomial arithmetic operation is polynomial multiplication.
- 9. The instruction of claim 8 wherein each register identified by the one or more register identifiers contains a polynomial.
- 10. The instruction of claim 9 wherein each polynomial is encoded as a binary representation of coefficients.
- 11. The instruction of claim 1 wherein the instruction set comprises a RISC instruction set.
- 12. A method for performing polynomial arithmetic using an instruction, the method comprising:
receiving an instruction, the instruction including:
one or more opcodes identifying the instruction as an instruction for performing a polynomial arithmetic operation; and one or more register identifiers; and performing a polynomial arithmetic operation using the one or more register identifiers by processing the instruction.
- 13. The method of claim 12 wherein performing the polynomial arithmetic operation comprises performing binary polynomial addition.
- 14. The method of claim 13 wherein performing the binary polynomial addition comprises using a multiplier.
- 15. The method of claim 12 further comprising storing the result of the polynomial arithmetic operation in one or more result registers.
- 16. The method of claim 15 wherein peforming the polynomial arithmetic operation includes:
multiplying the contents of the registers identified by the one or more register identifiers to obtain an intermediate value; and adding the contents of the one or more result registers to the intermediate value to obtain a result.
- 17. The method of claim 16 further comprising storing the result in the one or more result registers.
- 18. The method of claim 12 further comprising storing the result of the polynomial arithmetic operation in a high-order result register and a low-order result register.
- 19. The method of claim 12 wherein performing the polynomial arithmetic operation comprises performing polynomial multiplication.
- 20. The method of claim 19 wherein each register identified by the one or more register identifiers contains a polynomial.
- 21. The method of claim 20 wherein each polynomial is encoded as a binary representation of coefficients.
- 22. The method of claim 12 wherein the instruction is part of an instruction set, and the instruction set comprises a RISC instruction set.
- 23. A computer-readable medium comprising a microprocessor core embodied in software, the microprocessor core including an instruction for performing polynomial arithmetic, the instruction including:
one or more opcodes identifying the instruction as an instruction for performing a polynomial arithmetic operation; and one or more register identifiers; wherein the instruction is processed by performing the polynomial arithmetic operation using the one or more register identifiers.
- 24. The computer-readable medium of claim 23 wherein the polynomial arithmetic operation is binary polynomial addition.
- 25. The computer-readable medium of claim 24 wherein the binary polynomial addition is performed using a multiplier.
- 26. The computer-readable medium of claim 23 wherein the result of the polynomial arithmetic operation is stored in one or more result registers.
- 27. The computer-readable medium of claim 26 wherein the polynomial arithmetic operation includes:
multiplying the contents of the registers identified by the one or more register identifiers to obtain an intermediate value; and adding the contents of the one or more result registers to the intermediate value to obtain a result.
- 28. The computer-readable medium of claim 27 wherein the result is stored in the one or more result registers.
- 29. The computer-readable medium of claim 23 wherein the result of the polynomial arithmetic operation is stored in a high-order result register and a low-order result register.
- 30. The computer-readable medium of claim 23 wherein the polynomial arithmetic operation is polynomial multiplication.
- 31. The computer-readable medium of claim 30 wherein each register identified by the one or more register identifiers contains a polynomial.
- 32. The computer-readable medium of claim 31 wherein each polynomial is encoded as a binary representation of coefficients.
- 33. The computer-readable medium of claim 23 wherein the instruction is part of an instruction set, and the instruction set comprises a RISC instruction set.
- 34. In a public-key cryptosystem, a method for encrypting information with a public key, the method including an instruction for performing polynomial arithmetic, the instruction including:
one or more opcodes identifying the instruction as an instruction for performing a polynomial arithmetic operation; and one or more register identifiers; wherein the instruction is processed by performing the polynomial arithmetic operation using the one or more register identifiers.
- 35. The method of claim 34 wherein the polynomial arithmetic operation is binary polynomial addition.
- 36. The method of claim 35 wherein the binary polynomial addition is performed using a multiplier.
- 37. The method of claim 34 wherein the result of the polynomial arithmetic operation is stored in one or more result registers.
- 38. The method of claim 37 wherein the polynomial arithmetic operation includes:
multiplying the contents of the registers identified by the one or more register identifiers to obtain an intermediate value; and adding the contents of the one or more result registers to the intermediate value to obtain a result.
- 39. The method of claim 38 wherein the result is stored in the one or more result registers.
- 40. The method of claim 34 wherein the result of the polynomial arithmetic operation is stored in a high-order result register and a low-order result register.
- 41. The method of claim 34 wherein the polynomial arithmetic operation is polynomial multiplication.
- 42. The method of claim 41 wherein each register identified by the one or more register identifiers contains a polynomial.
- 43. The method of claim 42 wherein each polynomial is encoded as a binary representation of coefficients.
- 44. The method of claim 34 wherein the instruction is part of an instruction set, and the instruction set comprises a RISC instruction set.
- 45. In a microprocessor, an instruction for performing polynomial arithmetic, the instruction including:
one or more opcodes identifying the instruction as an instruction for performing a polynomial arithmetic operation; and one or more register identifiers; wherein the instruction is processed by performing the polynomial arithmetic operation using the one or more register identifiers.
- 46. The instruction of claim 45 wherein the polynomial arithmetic operation is binary polynomial addition.
- 47. The instruction of claim 46 wherein the binary polynomial addition is performed using a multiplier.
- 48. The instruction of claim 45 wherein the polynomial arithmetic operation includes:
multiplying the contents of the registers identified by the one or more register identifiers to obtain an intermediate value; and adding the contents of the one or more result registers to the intermediate value to obtain a result.
- 49. The instruction of claim 45 wherein the polynomial arithmetic operation is polynomial multiplication.
- 50. A microprocessor providing one or more instructions for performing polynomial arithmetic, the microprocessor including:
an instruction store; an execution unit that fetches a microprocessor instruction from the instruction store and processes the fetched instruction; and a polynomial arithmetic unit used by the execution unit in processing the fetched instruction if the fetched instruction is one of the one or more instructions for performing polynomial arithmetic.
- 51. The microprocessor of claim 50 wherein the microprocessor further comprises a multiply/divide unit.
- 52. The microprocessor of claim 51 wherein the polynomial arithmetic unit is a component of the multiply/divide unit.
- 53. The microprocessor of claim 50 wherein the polynomial arithmetic unit is operable to perform binary polynomial addition.
- 54. The microprocessor of claim 50 wherein the polynomial arithmetic unit is operable to perform binary polynomial multiplication.
- 55. The microprocessor of claim 50 further comprising a result register for storing a result from the polynomial arithmetic unit.
- 56. The microprocessor of claim 55 wherein the polynomial arithmetic unit is operable to perform a binary polynomial multiplication-addition operation by performing a binary polynomial multiplication to determine an intermediate result and adding the intermediate result to the result register.
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 “Configurable Instruction Sequence Generation”; and (4) U.S. application Ser. No. ______,titled “Extended Precision Accumulator”.