Abstract
A method and engine for hash calculation, the method comprising receiving data blocks via an input module, providing clock cycles by a clock module, calculating a hash from a received data block by a process module including a data pipeline and a state pipeline, the hash calculation comprising: receiving an input data block to the data pipeline, calculating, in every other clock cycle of the clock module, an induced data block based on the previous data block, and performing a stage of the state pipeline in each clock cycle of the clock module, in which a state is calculated based on input from the data pipeline, and outputting the hash via an output module.
Claims
- [0063] What is claims is:
- A hash engine comprising:
- an input module for receiving data blocks;
- a memory;
- a clock module to provide clock cycles;
- a process module including a data pipeline and a state pipeline for calculating a hash from a received data block, the process module is configured to: receive an input data block to the data pipeline;
- calculate, in every other clock cycle of the clock module, an induced data block based on the previous data block; and
- perform a stage of the state pipeline in each clock cycle of the clock module, in which a state is calculated based on input from the data pipeline;
- and
- an output module to output the hash.
- The hash engine according to claim 1 , wherein the process module is configured to calculate an induced data block also based on a skipped induced data block.
- The hash engine according to claim 1 , wherein the process module is configured to use a first word from a data block as an input for calculation of a state of the same clock cycle and a second word from a data block as an input for calculation of a state of the successive clock cycle.
- The hash engine according to claim 1 , wherein the process module is configured to receive to the data pipeline two parallel streams of data blocks and to process them in two parallel sequences of stages, in every other clock cycle.
- The hash engine according to claim 5, wherein the process module further comprises a multiplexer configured to select in each stage of the state pipeline from which of the two parallel streams of data blocks the input for the state calculation will be taken.
- The hash engine according to claim 5, wherein the process module is configured to use a first word from a data block as an input for calculation of a state of the same clock cycle and a second word from a data block as an input for calculation of a state of the successive clock cycle.
- The hash engine according to claim 1 , wherein the process module is configured to receive a first input data block in a first clock cycle and a second input data block in the successive clock cycle and to process two respective sequences of stages alternately in each clock cycle.
- The hash engine according to claim 8, wherein the process module is configured to use for the state calculation input from the two sequences alternately.
- The hash engine according to claim 8, wherein the process module further comprises a multiplexer configured to select from which sequence the input will be taken.
- A method for hash calculation, the method comprising:
- receiving data blocks via an input module;
- providing clock cycles by a clock module;
- calculating a hash from a received data block by a process module including a data pipeline and a state pipeline, the hash calculation comprising:
- receiving an input data block to the data pipeline;
- calculating, in every other clock cycle of the clock module, an induced data block based on the previous data block; and
- performing a stage of the state pipeline in each clock cycle of the clock module, in which a state is calculated based on input from the data pipeline;
- and
- outputting the hash via an output module.
- The method according to claim 10, wherein calculating an induced data block is also based on a skipped induced data block.
- The method according to claim 10, wherein performing a stage of the state pipeline comprises using a first word from a data block as an input for calculation of a state of the same clock cycle and a second word from a data block as an input for calculation of a state of the successive clock cycle.
- The method according to claim 10, wherein calculating an induced data block comprises receiving to the data pipeline two parallel streams of data blocks and processing them in two parallel sequences of stages, in every other clock cycle.
- The method according to claim 13, wherein performing a stage of the state pipeline comprises selecting by a multiplexer in each stage of the state pipeline from which of the two parallel streams of data blocks the input for the state calculation will be taken.
- The method according to claim 13, wherein performing a stage of the state pipeline comprises using a first word from a data block as an input for calculation of a state of the same clock cycle and a second word from a data block as an input for calculation of a state of the successive clock cycle.
- The method according to claim 10, wherein calculating an induced data block comprises receiving a first input data block in a first clock cycle and a second input data block in the successive clock cycle and processing two respective sequences of stages alternately in each clock cycle.
- The method according to claim 16, wherein performing a stage of the state pipeline comprises using for the state calculation input from the two sequences alternately.
- The method according to claim 16, wherein performing a stage of the state pipeline comprises selecting by a multiplexer from which sequence the input will be taken.
Applicants
-
Spondoolies Tech Ltd
Explore more patents:
Inventors
-
Gilboa Assaf
Explore more patents:
-
Shteingart Zvi
Explore more patents:
-
Levin Kobi
Explore more patents:
-
Corem Guy
Explore more patents:
CPC Classifications
-
G06Q20/065
Explore more patents:
-
G06F1/324
Explore more patents:
-
G06F9/38
Explore more patents:
-
G09C1/00
Explore more patents:
-
H04L9/0643
Explore more patents:
-
H04L9/3239
Explore more patents:
-
H04L2209/125
Explore more patents:
-
H04L2209/38
Explore more patents:
-
H04L2209/56
Explore more patents:
Document Preview
- Publication: Mar 31, 2016
-
Application:
Sep 21, 2015
IL 2015050961 W
-
Priority:
Sep 23, 2014
US 201462053834 P