A Field-programmable gate array (FPGA) is generally more efficient than using a "hard-coded" processor like a CPU or GPU for highly specific applications like bitcoin mining or doing structurally identical computations many times over.

however, FPGA as far as I know are beaten in computational efficiency by Application specific integrated circuits (ASIC's) that are specifically designed to the particular problem (again take Bitcoin mining as an example).

My question is: What are the sources of the efficiency gain of ASIC's over FPGA's, given that FPGA's already allow you to setup the circuitry for the specific problem at hand?

  • $\begingroup$ This is more of a hardware question, so I'm not sure this is the best forum for it. $\endgroup$ – Yuval Filmus Oct 29 '18 at 18:16
  • $\begingroup$ Well, even "FPGA's already allow you to set up the circuitry for the specific problem at hand", it still restrict you to the pre-defined ways that can be programmable on that FPGA. For example, if there is a special kind of design that is fit for only one kind of application, then an FPGA may not flexible enough to include that kind of design. $\endgroup$ – Apass.Jack Oct 29 '18 at 18:20
  • $\begingroup$ Having said that general answer (which is vacuous in fact) , this question is probably much more on-topic at Engineering Stack Exchange. Hence I am voting to close it as off-topic. $\endgroup$ – Apass.Jack Oct 29 '18 at 18:25
  • $\begingroup$ One just cannot refuse including such a nice answer as given by @Curious_Dim! I am not voting for closure. There have been quite a few questions on FPGA on this site, anyway. $\endgroup$ – Apass.Jack Oct 30 '18 at 1:09

Functionality of FPGAs in very coarse lines: At the core functionality of FPGAs are small memories called Look Up Tables (LUTs). An FPGA instead of actually compute in hardware the output of a function, say f(x), what it does is store in these small memories all possible outputs of f. So next time an input x is given fpga passes x as address in a small memory and "looks up" the answer. As it happens with all kind of memories the larger the memory the bigger the delay. So FPGAs are consisted of "a lot" of very small LUTs distributed all over their surface. Every LUT "solves" a tiny subproblem and passes the answer to subsequent LUTs for further processing (answers). Loading the LUTs with different answers and connecting them in a programmable way gives FPGAs the ability to solve any kind of problem.

LUTs are interconnected each other in an hierarchical manner. That is, as it happens with computer networks, or with buildings, it would be infeasible to connect via road each building with every other, buildings are interconnected in an hierachical manner where you have small streets, bigger streets, highways etc. So to route a package from A to B you don't have a direct-short/fast-link between A and B, but instead you may use a lengthier route which is consisted of various kinds of roads. According to the previous analogy LUTs are the buildings and roads are the signal interconnections between LUTs. In FPGAs LUTs which are a kind of processing units are fixed in specific places, so in order to pass a signal from one LUT to another you have to follow the specific route hierarchy of FPGA. Instead in an ASIC you can place processing units in more efficient manner, and also make direct interconnection where is critical to do so, in order to minimize the delay. Even the simplest form of processing in an FPGA (consisting only of programmable logic) has to be in the form of a LUT. For example to compute the output of a 2 input AND gate you would need a LUT. In an ASIC you would need just an AND gate. The total circuitry of the LUT certainly has greater delay that just an AND gate of the same technology. To sum it up the sources of inefficiency of an FPGA are the

  • routing delay you might have due to fixed routing hierarchy and

  • circuitry overhead of LUTs themselves

Have in mind also that an FPGA is actually an ASIC, in which the "specific application" is to be programmable!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.