首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Vivado高效设计案例分享大赛---15. Vivado与多核/多线程处理

Vivado高效设计案例分享大赛---15. Vivado与多核/多线程处理

最近七八年出的CPU,高端的有四个到八个内核,如果加上超线程技术就有多达八到十六个线程了,低端的一般也是双核的了,但是一些老的开发软件还是只能依赖于单核,单核的性能严重制约了开发的效率,多核的优势没有发挥出来一般来讲,一个任务能不能被有效地分解成若干个并行的子任务时,软件可以充分利用CPU的多核心能力加快任务的执行。。那Vivado上的情况怎么样呢?我们按照开发流程简单地测试了一下。       1. 在输入设计文件、添加IP阶段       这个阶段基本是“串行”操作,也不需要多少运算能力,所以肯定是单核(单线程)执行。       2. 仿真       在仿真阶段,我们一般会加入多个信号作为输入、输出并进行观测,此时如果不充分利用CPU的多核/多线程能力来模拟FPGA中PL部分的并行运算,可就是浪费资源了。所以可以看到Vivado给出的如下信息,如图1所示。[[wysiwyg_imageupload:1236:]]图1  仿真阶段的并行处理图1说明Vivado自带的仿真器启用了多大6个CPU线程进行仿真,所以我们感觉起来相比以往的ISIM,测试向量的加载速度和仿真结果的输出、查看都要快了很多。当然现阶段我们还不能指望仿真可以秒完,因为我们的仿真步长往往是ns级别的,如果测试的时间长、测试数据多,仿真还是要花一定时间的。3. 生成RTL生成RTL的过程,就是把源程序中的各个元素用一些基本的元件,例如多路选择器、加法器、乘法器等进行表示,这个过程自然可以尽可能地并行处理以提高效率,所以自然能够多核/多线程处理。话说这个RTL的打开速度实在是太快了,根本没来得及截取CPU的利用率图它就已经完成了,观测到的Vivado.exe瞬时CPU利用率达到了57%左右,相当于使用了4-5个CPU的线程。4. 综合与实现这两个操作看起来是单线程处理的,所以从输入设计文件到生成bit流操作的整个过程中,实现最花时间的,综合其次;并且随着设计的更改和不同设计策略的实施,有时候我们要反复地进行这两步最花费时间的操作。不过还好我们有另外的方法来并行测试多个综合/实现的策略,如http://xilinx.eetrend.com/blog/6288一文中提到的那样,Vivado可以一次把多种综合/实现策略并行运行并把结果同时提供给我们供对比参考,在这种情况下,相当于我们手动让Vivado进行了多核/多线程的处理,如图2所示。[[wysiwyg_imageupload:1237:]]图2 同时运行多个综合/实现策略在实现阶段,图2 的方法尤为适合,因为Vivado为我们提供了十几种综合策略,例如面积优化、功耗优化、线路延时的低/中/高等等。5. 烧写PL这个过程不需要很多资源,主要是受限于烧写速度。6. 硬件调试用ILA这样的调试方法时,程序是在PL中运行的,已经足够并行了。7. 使用System Generator使用System Generator的时候,如果想仿真的更快,除了FPGA在线仿真之外,还有个方法就是一定要启用Rapid Accelerator模式,因为Simulink是一种解释性语言,相当于它把我们的设计解释给操作系统,操作系统再来运行;启用Rapid Accelerator模式之后,会把我们的设计花一点时间编译成操作系统直接能理解的程序,仿真速度自然就快了。
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表