• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

why aren't FPGA chips used for desktop computing?

dpopiz

Diamond Member
keep in mind FPGA's are brand new to me, so I appologize if these are stupid questions:

according to what I've read, most FPGA's can be completely reprogrammed as fast as 1000s of times per second. So then why not just have a very large array of individual FPGA's and then a controller that would look at the instructions coming in and find a specialized process such as decoding a JPEG and then program on of the FPGA's in the array to decode JPEGs and then send the JPEG to it to decode.

It seems like every operation in a piece of software could be processed in pure hardware (FPGA) much faster than a single processor "running" the code.
 
Processor is a hardware itself. By no way a soft-programmed chip would outform a processor; Unless perhaps the chip is specially hardwired to do the specific function; But then it wouldn't be reprogrammable.
 
I thought FPGA's basically like "real hardware" that can be changed. Are you saying that an FPGA is slower than the same chip in "real hardware"? If so, how?
 
FPGA's are hardware, but in order to be flexible, it's really slow hardware. In order to program the functionality of one transistor and tie it to another transistor, something that would take 2 transistors and an interconnect on a normal chip, would probably take several transistors and several interconnects to do on an FPGA. Such a data path would be much slower than a conventional CMOS fabrication. That being said, there are microprocessors out there that contain a programmable portions that you can program special functionality into. Such things, when used in combination with a general-purpose processor, can significantly increase performance but only in certain cases.
 
Originally posted by: dpopiz
keep in mind FPGA's are brand new to me, so I appologize if these are stupid questions:

according to what I've read, most FPGA's can be completely reprogrammed as fast as 1000s of times per second. So then why not just have a very large array of individual FPGA's and then a controller that would look at the instructions coming in and find a specialized process such as decoding a JPEG and then program on of the FPGA's in the array to decode JPEGs and then send the JPEG to it to decode.

It seems like every operation in a piece of software could be processed in pure hardware (FPGA) much faster than a single processor "running" the code.


You mean like this?

Here too.

Seems to work for Cray. It's probably too costly right now.

Lots of effort to optimize the FPGAs to the code I would imagine. Though it could work like SLI Profiles. You have a program, you set up the profile for the FPGA and you use the FPGA to do certain tasks in that code. I'm sure the OS could have certain FPGA profiles to accelerate certain programs and it could optimize the FPGAs for whatever you were running at the time.

In-execution reprogrammability

A complex algorithm may not 'fit' in the real estate of today's large FPGAs. The Cray XD1 FPGA support software provides a C-based API to allow the host Opteron to re-program the FPGA in the middle of job. The large algorithm is broken up into bite-sized FPGA personalities and the Opteron dynamically downloads the personality required by the current operation.

Sign me up. 🙂
 
Originally posted by: dpopiz
It seems like every operation in a piece of software could be processed in pure hardware (FPGA) much faster than a single processor "running" the code.

Two problems:
1) FPGAs are (clock speed) slow. You can buy a 3GHz CPU for $50 these days. An FPGA is 5-10x that and 500Mhz would be fast.

2) FPGA is almost impossible to optimize without human intervention of some sort. Programming a function or algorithm in C++, MATLAB, Java, or Fortran is a fairly straightforward exercise that doesn't necessairly require much knowledge of programming languages and almost none of actual digital computer hardware. There are some high-level CPU design languages like VHDL, but it's nowhere as simple as say programming in MATLAB.

cin >> x;
x = x * 6;
cout << x;

is easy in C++. Heck, I just did it. Implementing it on an FPGA is nowhere near as easy.
 
Here is my take -- and I design with FPGAs for a living...

1) Cost. Compare the cost of a processor with the cost of an FPGA large enough and fast enough to replace that processor. The FPGA will be much more expensive.
2) Size. Even the largest FPGA cannot compete with what you can do with raw silicon. This is because the FPGA has to throw in the extra routing resources, SRAM cells for the LUTs, etc. So it takes a LOT more silicon area for the FPGA to do the same thing.
3) Power. FPGAs are larger, and they chew up more power.
4) Speed. Even the fastest FPGAs can't hit 1GHz right now (except mayby some hard-wired I/O SERDES).

You could indeed implement a pentium-4 processor in a FPGA, but you would likely be limited to a 500MHz clock speed.

FPGAs are great where there is a fixed computation that has to performed repeatedly. General-purpose processors are cursed with the fetch and decode portions of their operation. So, if your data allows a parallel "hard-wired" data path, then an FPGA may be able to speed things up.

One more thing. Some people have suggested including a general-purpose FPGA on every motherboard. The problem is that every FPGA family is different. A Xilinx Virtex is very different from a Xilinx Virtex-III. And those are very different from an Altera, Actel, or Lattice FPGA. So, if you have a "standard" FPGA included on mobos, that standard will be obsolete in three years. And simply upgrading the FPGA is not easy, because the programming information is not compatible from one family to the next. So an FPGA upgrade = re-compile the FPGA code = no fun.

Here is a list of reasons why the FPGA even exists:
1) Great for lab use in developing and debugging new hardware.
2) For small production runs. It costs at least $100,000 to make an ASIC. If you only need 100 devices, FPGAs can be cheaper. If you need 1,000,000 devices, ASICs are the only way to go.
3) Re-configurable. If you want "general-purpose" hardware that can be changed in the field. These are usually specialty applications. Most people will never run into this.
 
it takes too damn long to reprogram them. that is, they do SPECIFIC things really well. but when you want to change what you want to do, the delay to reprogram them makes them ineffective to work with for the most part. this is fixed by limiting a the FPGA and pairing it with a general purpose core. That is, only a part of a the actual core is programmable.

also, fpgas are not cheap, and overall, they are slow. typically with an FPGA, once it loses power, it loses the program. so you basically have to reload the instructions every time you boot.

fpgas should remain where they are, in terms of developmental aids. Their role in the real world is somewhat limited by their nature of being so flexible.
 
I remember programming a dual-issue MIPS uproc with a fake "memory controller" in college.... omg so slow.

You can definitely make use a FPGA to do a working x86 implementation... the performance however would be dubious.
 
FPGA's are also fastly becomming a "poor man's ASIC". It takes millions to design a mask and get a chip from TSMC. It takes $150 to get an FPGA and program your own logic on it. What do you think a mod chip is? Of course, this is only for non-performance intensive ASICs.
 
Originally posted by: mAdD INDIAN
What about for general purpose DSP work? Aren't FPGA's ideally suited for that?

An FPGA is just a chip that can implement any arbitrary logic function. If you can make it from AND gates, OR gates, and registers, you can make it on an FPGA.

The way in which FPGAs can be faster than a processor is that a processor is "general purpose." It has to be able to do everything, and there is some overhead associated with this. A processor can multiply two numbers, and it has to fetch instruction to tell it to do this.

An FPGA, on the other hand, can be programmed to do one specific thing very fast. An FPGA might have 16 multipliers on board, so it can do the math really fast. But this only works if the the data has a relatively limited data flow. In other words, you can program the FPGA to do one thing, and do it well. So, if you are running a fixed DSP algorithm, such as FFT for filtering, then the FPGA is a perfect fit.

But a general-purpose DSP can do FFT one second, FIR filters the next, and IIR filters the next. If you want one chip that will do all of those things, an FPGA is likely not for you.

I guess that the best way to explain it is that the FPGA is the ultimate general-purpose chip, when un-programmed. Once programmed, though, it runs best as a one-trick pony.

*** EDIT ***
I am not being very clear. Let me re-phrase.

Flexibility brings with it some overhead. This is what a CPU does. It can do everything. If you look at a GeForce video processor for example (or Radeon for you ATI people), you will see something that is FAR better at video processing than a CPU. But the down side is that the video processor cannot do anything else. It won't run Folding@home, for example. The GeForce is designed to handle video -- that is it. It can't do anything else. So it is this flexibility vs. efficiency trade-off that the FPGA goes after.

Another way to look at it is like this. The CPU processes intructions. It is always saying "Ok. I am done with the last instruction. What do I do next?" It is this procecess of always asking what happens next that gives the CPU its power, and makes it slower. A FPGA can be loaded with a design that always knows exactly what to do next, and has its hardware optimized to accomplish this.
 
Short for Field-Programmable Gate Array, a type of logic chip that can be programmed. An FPGA is similar to a PLD, but whereas PLDs are generally limited to hundreds of gates, FPGAs support thousands of gates. They are especially popular for prototyping integrated circuit designs. Once the design is set, hardwired chips are produced for faster performance.
 
Back
Top