支持cpu + fpga

专家讨论,第2部分:谁是真正的用户,他们将如何编写这类解决方案?

受欢迎程度

虽然CPU和FPGA配对已经有一段时间了,但最近有两件事发生了变化。首先,业界已经减少了它们之间的连接延迟,其次,我们现在似乎有了这种组合的杀手级应用程序。半导体工程公司坐下来讨论这些变化和工具链的状态,以支持这一组合,肯特Orthner,系统架构师AchronixFrank Schirrmeister,公司系统与验证组产品管理高级集团总监节奏埃莉•伯恩斯(Ellie Burns)是HLS和low power的营销总监,戈登•艾伦(Gordon Allan)是Questa的产品经理导师图形.第一部分可以找到在这里.以下是对话节选。

SE:人们将如何编写这种类型的系统?他们会使用RTLSystemC或者其他编程语言?

伯恩斯:我们看到了采用软件算法的愿望,涅槃能够采用C语言软件。这就是这个行业想要的。如果我们有低延迟和高带宽,我们知道它是什么,我们知道架构,我们就有更好的机会使用我们今天拥有的工具链,能够将C算法转移到FPGA上并验证它。

SE:所以最终用户是软件人员。高级合成(HLS)从来不是为这类用户设计的。

伯恩斯这就是他们想要的。

艾伦在高频交易市场,你可以想象一个人坐在韩国,他是幕后操作的大脑,但他不是在编码软件,他正在编写下一个RTL或HLS算法,这些算法将在地球的另一端下载到芯片中。

Schirrmeister问题是它真的是RTL吗?这些人在用什么?OpenCL呢?

伯恩斯当前位置语言如雏菊般涌现。

Schirrmeister如果我看看编程模型,2008年发生了多核危机。微软写了一篇关于免费午餐已经结束,世界即将终结的论文。cpu不再变得更快,我们有一个电源问题,现在整个卡组都会坏掉,没有人能把设计出来,因为我们不能并行化。除非这在接下来的五分钟内发生,否则它还没有发生,我们从那时起已经10年了。那么我们是如何解决这个问题的呢?并不是每个人都在使用OpenCL或替代方案,尽管这确实是一种趋势。它正朝着那个方向发展。但是有很多编程模型。比如Cuda, Open MP,大概有50个。

伯恩斯:甚至谷歌也有一个更高级的语言,可以映射到OpenCL和Cuda。

Schirrmeister我总是开玩笑说,我不知道该教我女儿什么,除了Scratch或者其他一些非常高级的语言。没人想再和硬件打交道了。但OpenCL是一种趋势,我正在看亚马逊网络服务(AWS),我读过的预览博客说,你登录并连接到一个有FPGA的主机,这里是Vivado和……
伯恩斯:你看到那篇文章的评论了吗?很棒的硬件,很棒的硬件,还有很大一部分说他们仍然要求你做RTL。这是一个问题。

Orthner:这些解决方案仍然通过PCI Express连接FPGA。你有所有的驱动程序堆栈要处理?

Schirrmeister:它到底是RTL还是OpenCL ?当然,这需要更高层次的描述。

OrthnerOpenCL只是一种语言。HLS是一种将OpenCL, ANSI C, SystemC -所有这些高级语言,并将其放入FPGA的方式。

伯恩斯:是的,你需要HLS能够利用这一点。技术必须成熟起来。

OrthnerRTL不会消失。我们会看到更多的HLS。我们将看到更多与标准接口结合在一起的组件库。赛灵思公司几年前就采用了AXI的方法。

伯恩斯: HLS可以理解这两件事。如果您修复了架构,那么它的工作就会变得容易得多。

Orthner如果你看一下HLS编译器的工作情况,你会发现,在底层,它们使用的是一个由小组件组成的库。我们能得到的标准接口越多,我们就越能得到像标准库(STL)这样的东西,每个人都可以使用它来进行逻辑拼接。遗憾的是,每个RTL开发人员似乎都……

伯恩斯:不仅仅是把大的东西拼接在一起,我们已经看到一些HLS用户只是尝试实例化一些东西,这没有给你调度或流水线的灵活性。它只需要HLS中所需功能的一半,即能够采用A+ B + C并拥有工具图形。你需要在一个更高的层次上,这是软件人员的心态。我有一个算法,和一些用户在汽车和图像处理,将模板。算法在外面,架构在模板里,因为他们知道它是什么,他们就开始生成所有的东西,他们可以很快地生成IP。当我们开始了解更多的架构时,我希望HLS能够发展。

艾伦:一端是cpu和指令集,FPGA可以在协处理器加速器接口上,而不是在处理器总线上。你可以在一个方向上,有智能的软件编译器,能够识别模式,并将它们重新定向到新发明的指令中,使用一些流程来加速传统软件。在另一个极端,你有一个更结构化的方法物联网在美国,当我们有10亿台设备连接到5G网络时,我们不需要10亿个不同的平台。我们需要少量的平台和多种变体。我认为工具链的一部分是一个平台,它的cpu预先配置了低功耗的内核,并且预先配置了安全,能够处理每个物联网设备的共同问题。能够在不中断他们正在做的事情的情况下按需更新自己,能够隐式安全,并且能够在尽可能低的功率范围内运行。所有这些都需要结构设计技术,并决定留下一块流动的拼图,这可以由HLS生成一些逻辑来填充。

Orthner:回到验证问题。你描述的工具——当你写代码时,它会在FPGA上加速,你谈到了在验证空间FPGA的人倾向于只写代码,然后把它放在芯片上,在实验室中调试。这使得我们越来越能够像单元测试一样对待软件。我可以编写我的算法,我不需要过多地涉及如何将它映射到FPGA,我可以编写所有的软件级单元测试来进行验证。那会比现在快得多。

伯恩斯这就是我们所看到的,也是人们想要的。他们希望能够编写算法并对其进行测试,这就是为什么C到RTL等价性检查很重要——生成RTL,确保它是相同的,将其放到设备上并重新运行测试。所以我们认为这很重要。FPGA的家伙不会像我们努力尝试的那样,他们不会占用ASIC验证流程。他们还没有接受它,软件人员也永远不会这么做。

Schirrmeister:没错。实际上比我想象的还要糟糕。你必须考虑的心态是FPGA硬件的心态,软件的心态是不同的,你试着给他们一个方法上干净的方法,你必须为他们提供巨大的价值来采用它。

伯恩斯:作为一个行业,我们必须将很多工作自动化,以使其成为现实。谷歌有它们的张量流。这是另一个流程,一种位于OpenCL、Cuda等之上的语言。这是我们要去的地方吗?

Schirrmeister:关键在于,在一天结束的时候,总会有人试图把你锁定在各种各样的收入流中。Cuda锁定NVIDIA。对于OpenCL也是一样的,它对特定的目的是开放的Verilog而且硬件描述语言(VHDL),有不同级别的支持,这可能会锁定您使用的FPGA。

艾伦: AXI是开放的,但它推动一切手臂

Schirrmeister有最聪明的硬件抽象概念的人就会赢。具有从更高级别到硬件的最有效映射。HLS的另一个有趣之处在于,除了新的硬件/软件协同验证之外,您还可以获得以前无法实现的系统级设计和性能分析功能。你现在有足够的灵活性来探索系统空间并将其引入HLS——过去你可能只有两个点,现在你有了一个完整的帕累托曲线。我不知道这是如何扩展到带有FPGA的CPU的。这些都是关于接口的。

伯恩斯:是的,你有带宽和延迟限制。

Schirrmeister:我可以在它们之间泵入多少数据,以及我如何有效地通过内存共享。我让他们在FPGA和CPU之间连贯缓存吗?

Orthner:这是市中心。如果你在处理两个设备,这是非常困难的。我们正在研究加速器的缓存相干互连(CCIX)来缓解一些问题,但这仍然是一个缓慢的过程。

有关的故事
支持cpu + fpga(上)
今天的工具链是什么样子的,以及这些流程中的不同心态。
CPU + FPGA支持(三)
分区、安全问题、验证和字段可升级性。
嵌入式fpga时代到来
随着芯片和系统设计变得越来越异构,这些器件在更关键的功能上越来越受欢迎。
CPU, GPU,还是FPGA?
需要低功耗的设备设计?应该选择哪种类型的处理器?
FPGA原型开发取得进展
流行的设计方法可以在第一块硅可用之前进行更复杂的硬件/软件验证



5个评论

拉尔斯莉莲 说:

“FPGA的家伙不会像我们努力尝试的那样,他们不会承担ASIC验证流程。他们还没有接受它,软件人员也永远不会这么做。”

你对此有何分析?是FPGA的人不知道什么对他们有好处吗?ASIC流程有问题吗?ASIC流程不适合FPGA开发吗?

卡尔·史蒂文斯 说:

@Lars:我认为FPGA设计已经变得更小了,创建一个新的配置位流来进行修复或更改是非常快速和容易的。进行详尽验证的动机不像ASIC那样大。

soyAnarchisto 说:

大多数设计师都没有接受它,但真正的玩家肯定接受了。如果你是云基础设施的平台开发人员——你当然是——你使用的IP肯定和任何ASIC一样经过了严格的验证路径。该小组缺少他们正在讨论的FPGA供应商的一些重要专业知识。Vivado为FPGA设计师带来了ASIC级的工具流程,但ASIC设计师仍然有工作,直到他们接受HLS,你才会看到方法论上的大转变。最初的Amazon AWS流程使用RTL,但任何人都可以看到,这种情况不会持续太久。

拉尔斯莉莲 说:

@disqus_qZOOSRsiqY: disqus @soyAnarchisto: disqus

在验证领域当然有改进的空间,但我在那些努力改进和已经“成熟”的人中看到的是,他们正在更多地关注软件方法。现代软件验证非常注重短反馈周期。一旦你认为一段代码可以工作,你就想在几秒或几分钟内测试它。尽快消除漏洞、设计缺陷和误解,以避免进一步的伤害。这意味着

-验证从能够找到大多数漏洞的设计师开始。更高层次的验证是必要的,但这也扼杀了短反馈周期,所以大多数bug必须由设计师/团队发现。创建一个单独的专家团队来进行“所有”验证不是这种方法的一个选项。
测试必须高度自动化,无论它是在模拟环境中完成还是在目标硬件上完成。在某些情况下,模拟速度太慢,构建FPGA并在目标硬件上运行全速测试更有效。在目标硬件上持续构建和测试的能力是FPGA和ASIC流程之间的主要区别。FPGA流程不是由担心失去工作来驱动的。

这种方法已被生产复杂、大批量、高可用性和安全相关产品的公司成功使用。他们是非常重视验证的玩家。

在我工作的地方,我们每天对新开发的代码多次运行模拟测试套件和目标测试套件。我们自己编写基于软件的目标测试,但从应用程序专家那里获得参考输入数据和预期输出。很少有bug离开我们的房间,反馈周期也很短。

卡尔·史蒂文斯 说:

“你需要达到一个更高的水平,这是软件人员的心态。我有一个算法,和一些用户在汽车和图像处理,将模板。算法在外部,架构在模板中,因为他们知道它是什么,他们就开始生成所有的东西,他们可以非常快速地生成IP。”

这是系统工程师/架构师的心态(我做了30年)。
有三件基本的事情
1)系统的哪个组件/模块将完成该功能。
2)在功能操作方面要做什么。
3)数据的位置,如果它不是本地的。
“地址”、“命令”、“数据”统称。

系统是模块化的,包括HW IP和SW IP。面向对象编程是完全模块化的,类可以
任选其一。(硬件与软件的权衡)。

Verilog的出现是因为HDL可以被模拟是一种纯粹的魔力!然后,因为Verilog可以被模拟,下一步是使用Verilog构建硬件,伙计们,在Verilog之前存在的HDL的目的是构建硬件!(圆形)

HW设计师被迫使用Verilog进行设计入口。工具链就这样诞生了。Verilog语言是由非专业程序员创建的,他们认为如果语法看起来像C语言,一切都会很好。

如果有人是认真的,看看Roslyn/Mono/ c#
语法API,用于为C语言公开条件、类型(变量)和序列。哦,编译器不会合成掉像没有帮助的Verilog编译器那样的东西。我可以随着设计的发展把东西放进去,以后再用。当然,在构建时不使用的资源应该被“合成掉”,但在设计阶段不可以。

IDE实际上有一个调试器和编辑器,在设计过程中非常有用。

“我可以在它们之间传输多少数据,以及如何通过内存有效地共享数据。我要让它们在FPGA和CPU之间保持一致的缓存吗?”

异构系统就是答案。缓存和共享内存还不够。如果FPGA正在接收数据,那么DSP将处理后的数据块放在内存中,等等。

留下回复


(注:此名称将公开显示)

Baidu