run*_*eks 10 compiler-construction real-time fpga llvm
我很想听听人们对在FPGA上实现编译器有多难的看法.这可能只是一个编译器后端,例如LLVM,实现只需要LLVM IR和输出机器代码.
这样做的目的是允许 - 可以这么说 - 实时执行源代码(或中间代表代码),在这个意义上:
对于给定的系统,FPGA的或多或少的静态部分可以是LLVM后端,即.决定输出什么类型的机器代码的部分,例如带有SSE4的x86-64.或带有NEON和VFP指令的ARM Thumb-2.除非您的系统具有多个CPU,否则这将保持不变.这不应该是完全静态的,因此不能在硬件中实现,因为编译器的优化是不断进行的,并且需要不时地更新.更频繁变化的FPGA部分是前端,即从给定语言产生LLVM IR的部分:C,C++,Vala等.
这个系统的巧妙之处在于代码总是针对手头系统中的CPU进行优化.在目前的情况下,很少有构建利用CPU中的所有额外功能:SSE,AVX,3DNow!,Neon,VFP.使用这种(完全假设的)方法,可以通过实时编译特定体系结构并在之后立即执行生成的指令来利用CPU的全部潜力.这对于基于ARM的系统尤其有用,在这些系统中我们需要从CPU中挤出所有的汁液,而CPU本身在编译时非常慢.
我知道gcc可以设置为使用线程,并且,我认为并行化编译器会相对容易.即,只是并行编译所有源文件.
我们也可以抛弃前端 - 编译器特定于编程语言的部分 - 并且只是将程序作为LLVM IR之类的中间表示代码进行分发.
这有什么可行的吗?