5 ms·
Are there ANY tasks for which I could get a significant speed advantage on a cheap FPGA (including I/O with computer to communicate result) compared to just usi
by auggierose 4y ago
Are there ANY tasks for which I could get a significant speed advantage on a cheap FPGA (including I/O with computer to communicate result) compared to just using a CPU? Are there any compared to using CPU+GPU?
Edit: By cheap I mean something like in the article or a bit more expensive, for sure < $1000. By CPU I mean something like an M1. By GPU I mean something like an Nvidia 2080Ti.
- rowanG077 4y agoThis will really change with your definition of cheap, which CPU/GPU you compare it to and most importantly the algorithm. A recent example is bitcoin mining. Which AFAIK used to be done on FPGAs before they moved to ASIC.
- EarlKing 4y agoInsofar as an FPGA can have a customized pipeline to deal with an operation without the overhead of your CPU's instruction pipeline? Yes. Most any task can be sped up, but ultimately whether or not an FPGA is right will depend on how much that FPGA costs out the door vs a CPU, and how much you optimized the algorithm for your chosen task. With proper engineering an FPGA can handily beat a CPU in many cases... but it's going to depend on the task, the FPGA in question, and what CPU it's going up against. As with all things, it depends on the particular task and how much you have to spend.
- deleted 4y ago[deleted]
- bogantech 4y agoAn FPGA is useful for high-speed hard-realtime designs with input to output reaction times measured in nanoseconds. In retrocomputing for example they're useful for building accelerators that bolt much faster CPU's of a different model (like 68060 accelerators for an Amiga) or implementing a new graphics card with HD resolution, HDMI, and SDRAM controllers like the ZZ9000 https://shop.mntre.com/products/zz9000-for-amiga-preorder https://shop.mntre.com/products/zz9000-for-amiga-preorder
- d_tr 4y agoI did a project for a laser cutting machine a few years ago. Read two pulse trains, do some floating point calculations, and output another pulse train, according to a set of parameters transmitted from another controller and updatable in real time. Less than a microsecond of latency without even trying and 100% predictability. If needed, you can place more processes on the chip, all running in parallel with zero interference between them.
- auggierose 4y agoSounds cool! Yes, well-specified real-time tasks seem to be a great fit for FPGAs.
- skedaddle 4y agoProbably, but FPGAs/reconfigurable logic can't be clocked at CPU speeds and usually have a limited number of floating point units and other "hard" resources. At the higher end, yes definitely, especially packet switching, sniffing and other tasks that don't involve parallel ALU/FPU calculations. At the lower end FPGA's can still shine on applications that have precise/low-jitter timing constraints. For example, sampling an analog signal for frequency analysis, actuating a thing within X nano/microseconds of some event, regulating clock drift with the pulse-per-second GPS signal, etc.
- an-unknown 4y agoFirst of all, not everything has a big CPU: there are countless small embedded devices which have e.g. just an FPGA or maybe an FPGA and a microcontroller. Example: if you look into e.g. a MOTU AVB audio interface, you will only find one or two FPGAs (and no microcontroller/"CPU"/…) which handle real time Ethernet, USB, the audio DSP algorithms, the ADCs/DACs, the web server with the UI, and everything else that's in this audio interface. FPGAs give you the ability to process a lot of data in parallel, with very low latency. As soon as you make use of this, a CPU has a very hard time to compete. If you have e.g. radio data from an SDR, you might want to process it on an FPGA → if you look at various SDR modules, you'll find an onboard FPGA to do exactly that. If you want to process video signals with low latency and with low power consumption, again, you might want to do it on an FPGA → look at video interface cards from BlackMagic Design and most of them will have an FPGA on board. If you have complex mathematical models to emulate e.g. some vintage analog audio hardware, which would create some serious CPU load on a PC, you might want to do it on an FPGA instead → this is what some companies like e.g. UAD do with FPGA based accelerators. If you have high-speed interfaces, like e.g. in a network router/switch, you might want to implement the packet processing in an FPGA → this is what some network equipment does, unless it uses an ASIC. There are countless applications for FPGAs. Sometimes FPGAs are also the prototype "playground" where you can validate your design before you build an ASIC. And finally, many FPGAs aren't really that expensive, at least if you ignore the crazy price increase from 2020+. The FPGA alone from the Basys-3 development board from the article (an XC7A35T) costs something around $20-25, at least if you don't need the exact same package. Of course that's only the FPGA and you still might want to add some external configuration flash, RAM and connectivity, but that's still very cheap. To give you an idea, a 256MB DDR3 RAM chip costs maybe $3-5. If you want to connect this to your computer, you could use PCIe, which is directly supported by these Artix-7 FPGAs. Of course there are much bigger and more expensive FPGAs available, but I think you can imagine already that you can do a lot with a $1000 hardware budget.
- imtringued 4y ago>And finally, many FPGAs aren't really that expensive, https://www.digikey.de/de/products/detail/lattice-semiconductor-corporation/ICE40LP384-SG32/3974680 https://www.digikey.de/de/products/detail/lattice-semiconduc... This price is ridiculous. I also know you can get 640 Lists for slightly more but I can't find the link.
- gateorade 4y agoThe primary benefit of FPGAs is not to be an alternative type of computing hardware to cpus or gpus but to do things that neither of them are particularly good at. Mainly producing some output for some input or series of inputs with extremely low latency (like in the single digit nanoseconds). This is what ASICS are usually used for but FPGAs come in handy when it doesn’t make sense to spend a million plus dollars spinning your own asic. FPGAs are good for things like building digital transceivers, extremely precise synchronization systems, or industrial/scientific/medical applications where you need to sequence various effectors/sensors/etc. with extremely tight timing. Since they are just general digital logic machines they can be obviously implement a cpu and are great are parallel computation, but in most cases cpus and gpus are much better at general computation because they’re specifically designed for that task.