IP Library Granted Patent US 7,599,981
Granted Patent B2
US 7,599,981 · App. 09/788,670 · Granted Oct 6, 2009

Binary polynomial multiplier

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,599,981
App. No.
09/788,670
Granted
Oct 6, 2009
Kind
B2
Abstract

A multiply unit includes support for arithmetic operations, binary polynomial operations, and permutations. To this end, the multiply unit may include an input data path that receives input operands, an arithmetic multiplier connected to receive the input operands, a binary polynomial multiplier having components separate and distinct from the arithmetic multiplier and connected to receive the one or more input operands, and a multiply unit output data path connected to receive an output of the arithmetic multiplier and connected to receive an output of the binary polynomial multiplier. The multiply unit also may include permutation logic that performs permutation operations on the input operands.

Claims (76)

1. A programmable CPU multiplier responsive to instructions dedicated to polynomial operations, comprising:

an array unit responsive to instructions dedicated to polynomial operations, the array unit having:

a first array that is used to perform arithmetic multiplication, the first array having a first result output and a second result output; and

a second array that is used to perform binary polynomial multiplication, the second array having a third result output; and

a carry propagation adder having a first input, a second input, and an output, wherein

the first input of the carry propagation adder is selectively coupled to the first result output of the first array,

the second input of the carry propagation adder is selectively coupled to the second result output of the first array and the third result output of the second array, and

the output of the carry propagation adder is stored in a register to provide an output of the polynomial operations.

2. The programmable CPU multiplier of claim 1 , further comprising:

a first multiplexer coupled to the first result output of the first array;

a first register coupled between an output of the first multiplexer and the first input of the carry propagation adder;

a second multiplexer coupled to the second result output of the first array; and

a second register coupled between an output of the second multiplexer and the second input of the carry propagation adder.

3. The programmable CPU multiplier of claim 2 , wherein the third result output of the second array is coupled to an input of the second multiplexer.

4. The programmable CPU multiplier of claim 2 , wherein an output of the first register is coupled to an input of the first array and an input of the second array.

5. The programmable CPU multiplier of claim 2 , wherein an output of the second register is coupled to an input of the first array.

6. The programmable CPU multiplier of claim 1 , wherein the first array includes a plurality of carry-save adders arranged in a tree structure.

7. The programmable CPU multiplier of claim 1 , wherein the first array is a Wallace tree multiplier array.

8. The programmable CPU multiplier of claim 1 , wherein the first array is a 32-bit by 16-bit array.

9. The programmable CPU multiplier of claim 1 , wherein the second array is a 32-bit by 16-bit array.

10. The programmable CPU multiplier of claim 1 , wherein the processor performs 32-bit by 32-bit multiplications.

11. The programmable CPU multiplier of claim 1 , wherein the processor multiplies a first operand and a second operand to form a resultant value, the first operand being provided to a first input of the first array and the second operand being provided to a second input of the first array, and wherein the resultant value is available at an output of the carry propagation adder.

12. The programmable CPU multiplier of claim 1 , wherein the processor multiplies a first polynomial value and a second polynomial value to form a resultant value, the first polynomial value being provided to a first input of the second array and the second polynomial value being provided to a second input of the second array, and wherein the resultant value is available at an output of the carry propagation adder.

13. A tangible computer-readable storage medium comprising a programmable CPU multiplier responsive to instructions dedicated to polynomial operations embodied in software, the programmable CPU multiplier comprising:

an array unit responsive to instructions dedicated to polynomial operations, the array unit having:

a first array that is used to perform arithmetic multiplication, the first array having a first result output and a second result output; and

a second array that is used to perform binary polynomial multiplication, the second array having a third result output; and

a carry propagation adder having a first input, a second input, and an output, wherein

the first input of the carry propagation adder is selectively coupled to the first result output of the first array,

the second input of the carry propagation adder is selectively coupled to the second result output of the first array and the third result output of the second array, and

the output of the carry propagation adder is stored in a register to provide an output of the polynomial operations.

14. The tangible computer-readable storage medium of claim 13 , wherein the programmable CPU multiplier embodied in software further comprises:

a first multiplexer coupled to the first result output of the first array;

a first register coupled between an output of the first multiplexer and the first input of the carry propagation adder;

a second multiplexer coupled to the second result output of the first array; and

a second register coupled between an output of the second multiplexer and the second input of the carry propagation adder.

15. The tangible computer-readable storage medium of claim 14 , wherein the third result output of the second array is coupled to an input of the second multiplexer.

16. The tangible computer-readable storage medium of claim 15 , wherein an output of the first register is coupled to an input of the first array and an input of the second array.

17. The tangible computer-readable storage medium of claim 15 , wherein an output of the second register is coupled to an input of the first array.

18. The tangible computer-readable storage medium of claim 13 , wherein the first array includes a plurality of carry-save adders arranged in a tree structure.

19. The tangible computer-readable storage medium of claim 13 , wherein the first array is a Wallace tree multiplier array.

20. The tangible computer-readable storage medium of claim 13 , wherein the first array is a 32-bit by 16-bit array.

21. The tangible computer-readable storage medium of claim 13 , wherein the second array is a 32-bit by 16-bit array.

22. The tangible computer-readable storage medium of claim 13 , wherein the programmable CPU multiplier performs 32-bit by 32-bit multiplications.

23. The tangible computer-readable storage medium of claim 13 , wherein the programmable CPU multiplier multiplies a first operand and a second operand to form a resultant value, the first operand being provided to a first input of the first array and the second operand being provided to a second input of the first array, and wherein the resultant value is available at an output of the carry propagation adder.

24. The tangible computer-readable storage medium of claim 13 , wherein the programmable CPU multiplier multiplies a first polynomial value and a second polynomial value to form a resultant value, the first polynomial value being provided to a first input of the second array and the second polynomial value being provided to a second input of the second array, and wherein the resultant value is available at an output of the carry propagation adder.

25. The tangible computer-readable storage medium of claim 13 , wherein the programmable CPU multiplier is embodied in hardware description language software.

26. The tangible computer-readable storage medium of claim 13 , wherein the programmable CPU multiplier is embodied in one of Verilog hardware description language software and VHDL hardware description language software.

27. A system, comprising:

a processor for performing multiplication, the processor including:

an execution unit responsive to a first set of instructions, and

a multiply-divide unit, responsive to a second set of instructions dedicated to polynomial operations, the multiply-divide unit comprising:

an array unit in the processor for performing multiplication having:

a first array that is used to perform arithmetic multiplication, the first array having a first result output and a second result output, and

a second array that is used to perform binary polynomial multiplication, the second array having a third result output, and

a carry propagation adder having a first input, a second input, and an output, wherein

the first input of the carry propagation adder is selectively coupled to the first result output of the first array,

the second input of the carry propagation adder is selectively coupled to the second result output of the first array and the third result output of the second array, and

the output of the carry propagation adder is stored in a register to provide an output of the polynomial operations; and

a memory coupled to the processor to store the first and second set of instructions.

28. The system of claim 27 , wherein the multiply-divide unit further comprises:

a first multiplexer coupled to the first result output of the first array;

a first register coupled between an output of the first multiplexer and the first input of the carry propagation adder;

a second multiplexer coupled to the second result output of the first array; and

a second register coupled between an output of the second multiplexer and the second input of the carry propagation adder.

29. The system of claim 28 , wherein the third result output of the second array is coupled to an input of the second multiplexer.

30. The system of claim 29 , wherein an output of the first register is coupled to an input of the first array and an input of the second array.

31. The system of claim 29 , wherein an output of the second register is coupled to an input of the first array.

32. The system of claim 27 , wherein the first array includes a plurality of carry-save adders arranged in a tree structure.

33. The system of claim 27 , wherein the first array is a Wallace tree multiplier array.

34. The system of claim 27 , wherein the first array is a 32-bit by 16-bit array.

35. The system of claim 27 , wherein the second array is a 32-bit by 16-bit array.

36. The system of claim 27 , wherein the multiply-divide unit performs 32-bit by 32-bit multiplications.

37. The system of claim 27 , wherein the multiply-divide unit multiplies a first operand and a second operand to form a resultant value, the first operand being provided to a first input of the first array and the second operand being provided to a second input of the first array, and wherein the resultant value is available at an output of the carry propagation adder.

38. The system of claim 27 , wherein the multiply-divide unit multiplies a first polynomial value and a second polynomial value to form a resultant value, the first polynomial value being provided to a first input of the second array and the second polynomial value being provided to a second input of the second array, and wherein the resultant value is available at an output of the carry propagation adder.

39. The system of claim 27 , wherein operation of the multiply-divide unit is decoupled from operation of the execution unit.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2014
From: BRIDGE CROSSING, LLC
To: ARM FINANCE OVERSEAS LIMITED
Reel/Frame 033074/0058 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2013
From: MIPS TECHNOLOGIES, INC.
To: BRIDGE CROSSING, LLC
Reel/Frame 030202/0440 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2008
From: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
To: MIPS TECHNOLOGIES, INC.
Reel/Frame 021985/0015 →
SECURITY AGREEMENT Recorded Aug 24, 2007
From: MIPS TECHNOLOGIES, INC.
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 019744/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 17, 2001
From: EKNER, HARTVIG W.J.; STRIBAEK, MORTEN; LAURSEN, SOEREN R.F.
To: MIPS TECHNOLOGIES, INC.
Reel/Frame 012081/0809 →