3 ms·
How do you virtualize an FPGA? A GPU can be virtualized and shared between several processes. It takes waaay too long to flash an FPGA to implement time-divisio
by ANTSANTS 13y ago
How do you virtualize an FPGA? A GPU can be virtualized and shared between several processes. It takes waaay too long to flash an FPGA to implement time-division multiplexing on it. All you can do is "slice up" the FPGA and give different processes different portions, and even that is a security vulnerability waiting to happen unless the FPGA is designed to keep these "blocks" separately contained.
How do you balance the need for high-performance communication between the FPGA and the rest of the computer with the inherent inability to trust whatever configuration has been loaded into the FPGA? Software security is hard enough without infinitely reconfigurable devices lurking inside our machines.
How does a possible FPGA configuration work optimally across a wide variety of FPGAs (which can have various "built-in", non-reconfigurable components) and sizes that can only be determined at "flashtime"?
What exactly do regular users need an FPGA for that isn't already handled by dedicated silicon with much greater performance and much less power usage than an FPGA would?
EDIT: I'd like an FPGA card for my PC just for running FPGA "emulators," because you can recreate a SNES or whatever in a tiny fraction of the gates that you need to make a CPU capable of emulating it with cycle accuracy at full speed. I seriously doubt there's much demand for that, though: if you're going to go to the trouble of buying special hardware for emulation, you might as well just buy the console and a flash cart.
- crazygringo 13y agoI would imagine that the FPGA would not be shared. Much like only one app can be full-screen on your computer, only one process could use the FPGA. The OS wouldn't let a second process use it if a first process already was. As for regular users, personally I'd like it for video codecs. I'd like it for video transcoding. I'd like it for faster MP3 encoding. I'd like it for Photoshop filters. I'd like it for speech recognition. I'm sure I could think of things that other users would like to use it for, like 3D rendering. I don't know of dedicated silicon that does ANY of these things, except specifically for H.264 decoding. That's it. And the thing is, for all the items I've listed, it's totally fine that my computer is only ever doing one of them at a time. These are all "regular user" uses, whereas virtualization is not needed very much for regular users.
- mprovost 13y agoMost of the uses that you mention involve processing large (ish) amounts of data, and that's one of the drawbacks to GPUs. They're great as long as everything fits into the amount of RAM on the card. Otherwise you're limited by the PCI bus and you're constantly shuttling data back and forth from main memory. It's frustrating when you only have 6GB of RAM on the GPU and 96 or more attached to the CPU. They're just not that good at data processing.