Claims
- 1. A method for performing multiplication of a first number representable by KN bits and a second number representable by KN bits, where K and N are positive integers and KN is the product of K and N, comprising the steps of:
(a) providing KN bits of the second number from a preload register to a multiplier second input port in a single clock pulse; (b) providing N bits of the first number to a multiplier first input port from a memory in a single clock pulse; (c) multiplying the KN bits of the second number times the N bits of the first number; and (d) repeating steps (b) and (c) until all KN bits of the first number have been multiplied by all KN bits of the second number to generate an output number.
- 2. The method of claim 1, further comprising the step of:
(a) providing N bits of a predicted second number having KN bits from the memory to the preload register in a single clock pulse after performing the step of providing the N bits of the first number to the multiplier first input port; and (b) repeating step (a) for each of the KN bits of the predicted second number.
- 3. The method of claim 1, further comprising the steps of:
(e) providing N bits of the output number to a multiplier output port in a single clock pulse; and (f) repeating step (e) until all KN bits of the output number have been provided to the output port.
- 4. The method of claim 1 further comprising the steps of:
(a) providing N bits of the output number to the memory in a single clock pulse; (b) repeating step (a) until all KN bits of the output number are provided to the memory.
- 5. The method of claim 1, further comprising the steps of
(a) providing N bits of the output number to the preload register and the memory in a single clock pulse; (b) repeating step (a) until all KN bits of the output number are provided to the preload register and the memory.
- 6. The method of claim 4, wherein the second number is provided to the preload register selectively from the memory output port and the multiplier output port via a multiplexer, the multiplexer coupled to the memory output port, the multiplier output port, and the preload register.
- 7. The method of claim 1, further comprising the steps of:
(a) providing N bits of the second number from the memory to the preload register in a single clock pulse; (b) repeating step (a) until all KN bits of the second number are provided to the preload register.
- 8. A computational apparatus, comprising:
a multiplier, for multiplying a first number representable by N bits and a second number representable by KN bits to generate an output, wherein K and N are positive integers, the multiplier comprising a first input port for accepting a first number, a second input port for accepting a second input number, and an output port; a memory for storing the output, the memory comprising a memory input port communicatively coupled to the multiplier output port via a first N bit data channel and a memory output port communicatively coupled to the multiplier first input port via a second N bit data channel; and a preload register for accepting and storing the second number, the preload register communicatively coupled to the multiplier second input port via a KN bit data channel.
- 9. The apparatus of claim 8, wherein the preload register is communicatively coupled to the multiplier output port.
- 10. The apparatus of claim 8, wherein the preload register is communicatively coupled to the memory output port.
- 11. The apparatus of claim 8, wherein the preload register is communicatively coupled to the multiplier output port and the memory output port via a multiplexer, the multiplexer for selectably controlling communicative coupling between the preload register, the multiplier output port, and the memory output port.
- 12. The apparatus of claim 8, further comprising a controller operatively coupled to the multiplier, the multiplexer, the preload register, and the memory, the controller implementing the steps of:
(a) providing KN bits of the second number from the preload register to the multiplier in a first clock cycle; (b) providing N bits of the first number from the memory to the multiplier in a second clock cycle; (c) multiplying the KN bits of the second number times the N bits of the first number while providing N bits of a predicted second number from the memory to the preload register a clock cycle following the second clock cycle; and (d) repeating steps (b) and (c) until all KN bits of the first number have been multiplied by the KN bits of the second number and all KN bits of the predicted second number have been loaded into the preload register.
- 13. An apparatus for multiplying a first number representable by KN bits and a second number representable by KN bits, comprising:
means for providing KN bits of the second number from a preload register to a multiplier second input port in a single clock pulse; and means for repeatedly providing N bits of the first number to a multiplier first input port from a memory via an N bit data channel in a single clock pulse and for repeatedly multiplying the KN bits of the second number times the N bits of the first number until all KN bits of the first number have been multiplied by all KN bits of the second number to generate an output number.
- 14. The apparatus of claim 13, further comprising means for repeatedly providing N bits of the output number to a multiplier output port in a single clock pulse until all KN bits of the output number have been provided to the output port.
- 15. The method of claim 14 wherein the second number is provided to the preload register selectively from the memory output port and the multiplier output port via a multiplexer coupled to the memory output port and the multiplier output port and the preload register.
- 16. The apparatus of claim 13, further comprising means for repeatedly providing N bits of the output number to the preload register and the memory in a single clock pulse until all KN bits of the output number are provided to the preload register and the memory.
- 17. The apparatus of claim 13, further comprising means for repeatedly providing N bits of the second number from the memory to the preload register in a single clock pulse until all KN bits of the second number are provided to the preload register.
- 18. The apparatus of claim 13, further comprising means for repeatedly providing N bits of a predicted second number having KN bits from the memory to the preload register in a single clock pulse after performing the step of providing the N bits of B to the multiplier first input port.
- 19. A computational apparatus, comprising:
a multiplier, having a multiplier first input port for accepting a first number, a multiplier second input port for accepting a second input number, and a multiplier output port providing an output representing a product of the first number and the second number computed over K clock cycles; a memory, for storing a first number and a second number, the memory having a memory input port operatively coupled to the multiplier output port and a memory output port operatively coupled to the multiplier first input port; and a preload register, for accepting and storing the second number over K clock cycles, and transmitting the second number to the first multiplier input port in a single cycle.
- 20. The apparatus of claim 19, wherein the preload register is communicatively coupled to the multiplier output port and the memory output port via a multiplexer, the multiplexer for selectably controlling communicative coupling between the preload register, the multiplier output port, and the memory output port.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is related to co-pending and commonly assigned application Ser. No. 08/828,368, entitled “High-Speed Modular Exponentiator,” by Gregory A. Powell, Mark W. Wilson, Kevin Q. Truong, and Christopher P. Curren, filed Mar. 28, 1997, which application is hereby incorporated by reference herein.
[0002] This application is also related to co-pending and commonly assigned application Ser. No. ______, entitled “High Speed Montgomery Value Calculation,” by Matthew S. McGregor, filed on same date herewith, which application is also hereby incorporated by reference herein.
Divisions (1)
|
Number |
Date |
Country |
Parent |
09758782 |
Jan 2001 |
US |
Child |
10043580 |
Jan 2002 |
US |
Continuations (1)
|
Number |
Date |
Country |
Parent |
09050379 |
Mar 1998 |
US |
Child |
09758782 |
Jan 2001 |
US |