当前位置:首页 > EDA > 电子设计自动化
[导读] 在编写软件时,您有没有遇到过无论怎么努力编码,软件都不能按您期望的速度运行?我遇到过。您有没有想过,“有没有什么简单而且成本不高的方法可将一些代码输入多个定制处理器或定制硬件?”毕竟,您的应用

 在编写软件时,您有没有遇到过无论怎么努力编码,软件都不能按您期望的速度运行?我遇到过。您有没有想过,“有没有什么简单而且成本不高的方法可将一些代码输入多个定制处理器或定制硬件?”毕竟,您的应用只是众多应用中的一个,而且创建定制硬件需要花费时间和成本。是不是这样?

最近听说了赛灵思的高层次综合工具Vivado®HLS后,我开始重新思考这一问题。高层次综合工具与Zynq®-7000 All Programmable SoC的结合为设计开辟了新的可能性,其中Zynq®-7000 All Programmable SoC结合了带有FPGA架构的双核ARM®CortexTM-A9处理器。这类工具可以用C语言,C++语言或SystemC源代码创建高度优化的RTL。近年来,出现很多这项技术的提供商,且其采用率也不断提高。

如果我只用Vivado HLS便能完成要求更高的计算,那么将那些慢速代码迁移到硬件中会有多难?毕竟我经常用C++语言编写代码,而Vivado HLS将C/C++语言作为输入语言。ARM处理器内核意味着我可以在常规环境下运行多数软件。事实上赛灵思还提供了一款软件开发工具(SDK)以及PetaLinux来帮您实现这一目的。

架构问题

从软件角度思考这一转变,我开始更加担心软件接口问题。毕竟,HLS创建的硬件专注于处理硬件接口。我需要一些易于访问的工具(如协处理器或硬件加速器)来加快软件运行速度。而且,我不想编写新的编译器。为了方便与软件的其它部分交换数据,这个接口应该类似于简单的存储单元,我们可以在其中输入信息并稍后读取结果。

然后我有了新的发现。Vivado HLS支持以相对较小的努力轻松创建AXI从接口。这让我开始思考,创建加速器也许没有那么难。于是,我编码了一个简单的实例来探索这种可能性。探索的结果让我惊喜不已。

下面看看我用了什么方法,并思考这种方法所得出的结果。

在我的实例中,我选择了对一系列简单的矩阵运算(如加法和乘法)进行建模。我不想将它限制在固定的大小,因此,我必须同时提供输入阵列及各阵列的尺寸大小。理想的接口会将所有数值作为函数的自变量,例如图1中的代码。

硬件接口需要用一种简单的方法将函数自变量映射到存储单元。图2是支持这一映射的存储器配置。寄存器中保存了有关矩阵的排列方式以及所需运算的信息。指令寄存器将指示执行何种运算。这样我便可以将一些简单的运算融合到一个硬件中。可以用状态寄存器来查看是否正在进行运算或是已经成功完成运算。此外,器件最好还能提供中断支持。

回到硬件设计,我了解到Vivado HLS为阵列自变量留出空间以指定小容量内存。这样,图3所示函数便说明了这种函数性。

假设能够综合AXI从接口,怎样将它用在软件上?我将正常编码环境假设为Linux。还好赛灵思提供PetaLinux,而且PetaLinux提供一种叫做用户I/O器件的机制。UIO可以用简单的方法将新硬件映射到用户内存空间,并具备中断等待能力。这意味着您可以省去编写器件驱动程序所耗费的的时间和流程。图4显示了这个系统。

这种方式当然也有缺陷。例如,无法在DMA中使用UIO器件,因此您必须在器件内存中构建矩阵,并在构建完成后手动复制出来。如果需要,将来可以通过定制器件驱动程序解决这个问题。

用Vivado HLS综合硬件

现在回到综合AXI从接口的话题。它的综合难度有多大?我发现这些编码限制非常合理。除内存的动态分配以外,大多数C ++语言都可以使用。

毕竟硬件在运行过程中不能生产其本身。这限制了标准模板库(STL)功能的使用,因为这里大量使用了动态分配。只要数据保持静态,多数功能都可以使用。起初这项任务似乎非常繁重,但我发现这并不是什么大事。另外,Vivado HLS允许C++类、模板、函数和运算符重载。我的矩阵运算可轻易归入定制矩阵分类。

增加I/O来创建AXI从接口非常简单。只需增加一些能够指示包含哪些端口以及使用哪些协议的编译指示即可。

只要我不按下所有旋钮,运行这款综合工具非常简单。图5展示了其中各个步骤,在此我不再详细解释。需要就目标技术和时钟速度对Vivado HLS进行一些引导。之后涉及的程序会密切关注违反政策的报告并研究分析报告以确保Vivado HLS按我所期望的方式运行。工具用户必须对硬件方面有所了解,但有一些技术课程可以解决这个问题。还存在综合前后运行仿真以检验预期行为的问题。

Vivado IP Integrator让AXI从接口连接到Zynq SoC硬件变得轻而易举,并打消了对信号连接错误的顾虑。赛灵思甚至拥有我所使用的ZedBoard开发系统的系统概述,并用IP Integrator导出数据用于软件开发套件。

清除瓶颈

我对结果非常满意,我希望能用这款芯片与工具集的组合做更多事情。我并没有探索所有的可能性。例如,Vivado HLS还支持AXI主接口。AXI会允许加速器从外部存储器复制矩阵(尽管这样也可能存在安全问题)。不过我强烈建议所有面临代码瓶颈的人都能考虑这个工具集。这里提供足够的培训课程、资源和材料以实现快速匀变,其中包括Doulos提供的课程、资源和材料。如需了解更多信息,敬请访问:www.doulos.com。

图1 – 调用加速器示例

地址 寄存器名称 目录 位元

内容

0 Matrix0_ptr RW 32

Matrix 0数据地址

4 Matrix0_shape RW 32 Matrix 0行 Matrix 0列
8 Matrix1_ptr RW 32

Matrix 1数据地址

12 Matrix1_shape RW 32 Matrix 1行 Matrix 1列
16 Matrix2-ptr RW 32

Matrix 2数据地址

20 Matrix2_shape RW 32 Matrix 2行 Matrix 2列
24 Matrix3_ptr RW 32

Matrix 3数据地址

28 Matrix3_shape RW 32 Matrix 3行 Matrix 3列
32 -reserved- - 32

 

36 -reserved- - 32

 

40 Command RW 32 0 enum
44 Status RW 32 0 enum

8192 × 32存储器

图2 – 寄存器汇总表

图3 – 加速器函数API

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭