Implementing large multipliers in a programmable integrated circuit device
First Claim
1. A specialized processing block for performing multiplication operations in a programmable integrated circuit device, said specialized processing block comprising:
- a first number of multiplier circuits of a first size;
a second number of pre-adders;
a third number of block inputs, respective pairs of said block inputs being connected to respective ones of a first subset of said multiplier circuits, said respective pairs of said block inputs also being combined in said pre-adders and then input to a second subset of said multiplier circuits;
a fourth number of additional inputs;
a first set of controllable elements that controllably select between said additional inputs, and outputs of some of said pre-adders, for input to one of said multipliers, and that controllably select between said additional inputs, and some of said block inputs, for input to some of said pre-adders;
a plurality of shifters so that partial product outputs of each of said multipliers are shifted by one or more shift amounts to provide one or more shifted partial product outputs from each of said multipliers;
a joint adder structure for combining said shifted partial product outputs of said multipliers;
a second set of controllable elements that controllably connect and disconnect certain ones of said shifted partial products to or from said joint adder structure; and
a third controllable element for selectively splitting said joint adder structure into two smaller adder structures;
wherein;
when said third controllable element is controlled to maintain said joint adder structure as one adder structure, said second set of controllable elements connects and disconnects said certain ones of said shifted partial products to support one ternary Karatsuba decomposition of one multiplication operation; and
when said third controllable element is controlled to split said joint adder structure into said two smaller adder structures, said second set of controllable elements connects and disconnects said certain ones of said shifted partial products to support two separate binary Karatsuba decompositions of two multiplication operations using respective third and fourth subsets of said multipliers.
1 Assignment
0 Petitions
Accused Products
Abstract
A specialized processing block is configurable as one ternary linear decomposition or two binary linear decompositions to perform large multiplications using smaller multipliers, and includes a first number of multiplier circuits of a first size, a second number of pre-adders, and a third number of block inputs. The block inputs are connected to a first subset of the multiplier circuits, and to the pre-adders which are connected to a second subset of the multiplier circuits. There is also a fourth number of additional inputs. A plurality of shifters shift partial product outputs of each of the multipliers by various shift amounts. A joint adder structure combines the shifted partial products. Controllable elements controllably select between different configurations of inputs to the multipliers and pre-adders, controllably connect and disconnect certain ones of the shifted partial products, and selectively split the joint adder structure into two smaller adder structures.
389 Citations
21 Claims
-
1. A specialized processing block for performing multiplication operations in a programmable integrated circuit device, said specialized processing block comprising:
-
a first number of multiplier circuits of a first size; a second number of pre-adders; a third number of block inputs, respective pairs of said block inputs being connected to respective ones of a first subset of said multiplier circuits, said respective pairs of said block inputs also being combined in said pre-adders and then input to a second subset of said multiplier circuits; a fourth number of additional inputs; a first set of controllable elements that controllably select between said additional inputs, and outputs of some of said pre-adders, for input to one of said multipliers, and that controllably select between said additional inputs, and some of said block inputs, for input to some of said pre-adders; a plurality of shifters so that partial product outputs of each of said multipliers are shifted by one or more shift amounts to provide one or more shifted partial product outputs from each of said multipliers; a joint adder structure for combining said shifted partial product outputs of said multipliers; a second set of controllable elements that controllably connect and disconnect certain ones of said shifted partial products to or from said joint adder structure; and a third controllable element for selectively splitting said joint adder structure into two smaller adder structures;
wherein;when said third controllable element is controlled to maintain said joint adder structure as one adder structure, said second set of controllable elements connects and disconnects said certain ones of said shifted partial products to support one ternary Karatsuba decomposition of one multiplication operation; and when said third controllable element is controlled to split said joint adder structure into said two smaller adder structures, said second set of controllable elements connects and disconnects said certain ones of said shifted partial products to support two separate binary Karatsuba decompositions of two multiplication operations using respective third and fourth subsets of said multipliers. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method of configuring a programmable integrated circuit device to performing multiplication operations, said programmable integrated circuit device including a specialized processing block, said specialized processing block comprising:
-
a first number of multiplier circuits of a first size, a second number of pre-adders, a third number of block inputs, respective pairs of said block inputs being connected to respective ones of a first subset of said multiplier circuits, said respective pairs of said block inputs also being combined in said pre-adders and then input to a second subset of said multiplier circuits, a fourth number of additional inputs, a first set of controllable elements that controllably select between said additional inputs, and outputs of some of said pre-adders, for input to one of said multipliers, and that controllably select between said additional inputs, and some of said block inputs, for input to some of said pre-adders, a plurality of shifters so that partial product outputs of each of said multipliers are shifted by one or more shift amounts to provide one or more shifted partial product outputs from each of said multipliers, a joint adder structure for combining said shifted partial product outputs of said multipliers, a second set of controllable elements that controllably connect and disconnect certain ones of said shifted partial products to or from said joint adder structure, and a third controllable element for selectively splitting said joint adder structure into two smaller adder structures, said method comprising; configuring said first and second sets of controllable elements and said third controllable element to select between operation of said specialized processing block as a single block with said first number of multipliers to support one ternary Karatsuba decomposition of one multiplication operation, and operation of said specialized processing block as two sub-blocks each having a respective third or fourth subset of said multipliers including half said first number of multipliers, to support two separate binary Karatsuba decompositions of two multiplication operations. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
-
16. A non-transitory machine-readable storage medium encoded with instructions for performing a method of configuring a programmable integrated circuit device to performing multiplication operations, said programmable integrated circuit device including a specialized processing block, said specialized processing block comprising:
-
a first number of multiplier circuits of a first size, a second number of pre-adders, a third number of block inputs, respective pairs of said block inputs being connected to respective ones of a first subset of said multiplier circuits, said respective pairs of said block inputs also being combined in said pre-adders and then input to a second subset of said multiplier circuits, a fourth number of additional inputs, a first set of controllable elements that controllably select between said additional inputs, and outputs of some of said pre-adders, for input to one of said multipliers, and that controllably select between said additional inputs, and some of said block inputs, for input to some of said pre-adders, a plurality of shifters so that partial product outputs of each of said multipliers are shifted by one or more shift amounts to provide one or more shifted partial product outputs from each of said multipliers, a joint adder structure for combining said shifted partial product outputs of said multipliers, a second set of controllable elements that controllably connect and disconnect certain ones of said shifted partial products to or from said joint adder structure, and a third controllable element for selectively splitting said joint adder structure into two smaller compressor and adder structures, said instructions comprising; instructions to configure said first and second sets of controllable elements and said third controllable element to select between operation of said specialized processing block as a single block with said first number of multipliers to support one ternary Karatsuba decomposition of one multiplication operation, and operation of said specialized processing block as two sub-blocks each having a respective third or fourth subset of said multipliers including half said first number of multipliers, to support two separate binary Karatsuba decompositions of two multiplication operations. - View Dependent Claims (17, 18, 19, 20, 21)
-
Specification