|
|
|
|
|
by one-more-minute
1978 days ago
|
|
Tangential question about FPGAs: Is there any work on compiling code to a combination of hardware and software? I'm imagining that the "outer loop" of a program is still fairly standard ARM instructions, or similar, but the compiler turns some subroutines into specialised circuits. Even more ambitiously you could JIT-compile hot loops from machine instructions to hardware. We already kind of do this manually over the long term (eg things like bfloat16, TF32 and hardware support for them in ML, or specialised video decoders). With mixed compilation you could do things like specify a floating point format on-the-fly, or mix and match formats, in software and still get high performance. |
|
https://www.microsoft.com/en-us/research/project/emips/
https://www.microsoft.com/en-us/research/publication/multico...
http://blog.netbsd.org/tnf/entry/support_for_microsoft_emips...
The thing is, this is not just another step up in complexity as another poster wrote here, but several.
Because it requires partial dynamic reconfiguration, which works with ram based FPGAs only (the ones which load their bitstream(containing their initial configuration) on startup from somewhere), not flash based ones which are "instant on" in their fixed configuration.
Regardless of that, partial dynamic reconfiguration takes time. The larger the reconfigured parts, the more time.
This is all very annoying because of vendor lock in because of proprietary tools, IP-protection, and so much more.
The few fpgas which have open source tool chains are unsuitable because they are all flash based AFAIK, and it doesn't seem to be on the radar of the people involved in developing these, because why, if flash anyways?