What differs an FPGA for a CPU?

4

I was looking at some publications about the cryptographic algorithm BLAKE, which was one of the finalists of the SHA-3 competition, whose winner was Keccak .

Finally, in the specific section of the book "The Hash Function BLAKE", at the beginning, it says:

  

Keccak offers acceptable performance in software, and excellent performance in hardware.

Source 1 Source 2 (Original, by NIST)

  

NIST could just as easily have said that BLAKE offers excellent performance in software and acceptable performance in hardware; nowhere did NIST suggest that hardware is more important than software

My question was to search for how something can be fast on hardware and slow on software and mostly the other way around. All the sites I found talk about one such FPGA (and also ASIC), this is also present in the NIST text in the SHA-3 competition:

  

3.2 Performance

     

NIST was fortunate to have a great depth of performance data on the five finalists that could also be compared with the performance data of the SHA-2 algorithms. This data included software implementations in many different kinds of Central Processing Units (CPUs), and hardware implementations in both Field Programmable Gate Arrays (FPGAs) and Application Specific Integrated Circuits (ASICs). All this data made simple; most algorithms excelled on some platforms and lagged on others. However, a few patterns emerged from the performance data, which affected NIST's decision

We now know that there are CPUs, FPGAs, and ASICs. This has also been mentioned in other answers , which single thing I found in the OS in "An attacker with GPU or FPGA might want to do this, but will have difficulty. "

What is the difference between running a CPU and an FPGA? How can something be faster in software, CPU, than in an FPGA? What would be the difficulties of an FPGA being as fast as the CPU?

    
asked by anonymous 12.06.2017 / 20:38

1 answer

-1
I think the big advantage of the FPGA over the CPU is that in the CPU to be able to do something it does not have a specific command to do, it takes the equivalent of the sum of the smaller commands needed to do the task while in the FPGA, you can create a circuit that does that complete operation, an example, there is no native function to transform a value into a sha1 in the CPU for example, then one must do all the steps through software to obtain the result with the CPU, while one can create a circuit in an FPGA so that in a single clock it turns an input on the desired SHA1, if the FPGA and CPU are being with the same clock speed, the FPGA would do the work in 1 clock while the CPU would do in n clocks

    
12.06.2017 / 22:53