几篇务虚的文章系列之九……ZYNQ向何处去5?
0赞OpenCL和一般的C2H的区别前面已经谈到了。现在谈谈A的FAE怎么给黑X的AutoESL的。
A的FAE觉得X的AutoESL最大的问题还是和老的C2H的老毛病一样。一个普通的C如何把空间上的并行性表现出来?而OpenCL就是为了GPU开发而生的,GPU本身就是由大量并行的PE构成的,是一种并行处理的硬件平台。其与FPGA的最大区别在于底层的“基核单元”不同,其同样都展示出了一种的空间的并行性。用OpenCL开发GPU和开发FPGA的区别就在于需要把代码映射到不同的硬件资源里面去。相比于单纯的C,由于OpenCL已经对并行性有了很好的支撑,因此只需要重点关注如何将已经体现了并行性的代码映射到LE这种资源而非GPU的PE中去。其实相当于绕开了C2H的一半难点,而且是最难的那一半。至于如何映射,基于我多年的研究,是有一定难度的,但相比于算法并行化而言,映射还是很有一套规范的流程。
最近在指导学生写了一个关于HDL语言使用的课程报告,就提出了一个问题:为什么现在主流的设计流程中EDA工具和设计人员的交互是在RTL建模这个层次。长期以来C2H的实现难点到底在哪里?为什么手绘原理图的方法会被淘汰了?经过几次讨论,其中仁者见仁智者见智。不过我个人总结有两点:1、RTL级提供了足够多的信息,让EDA软件能够掌握到逻辑电路整体的架构细节,从而能够“推断”出最终的硬件结构。2、RTL级相比于更低的层级抽象层次足够高,减少了设计人员的重复劳动。因此RTL层是经过长期的技术演进在当前的EDA技术发展水平上找到的一个最佳平衡点。
而EDA技术要向前发展,需要打破这种平衡,再更高的层级上去寻找新的平衡点。这个平衡点应该建立在哪里?显然,采用OpenCL的手段是比单纯的C2H更加稳妥和保守的路线。保守的好处在于稳健,一步步往前推进。但坏处是也许这个平衡点不是最佳的平衡点,其实可以做得更好的。
至于结局到底如何,还需要再考虑。