0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

两个定义能更好地描述FPGA

GReq_mcu168 来源:玩转单片机 作者:玩转单片机 2021-01-20 17:26 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

FPGA 是一堆晶体管,你可以把它们连接(wire up)起来做出任何你想要的电路。它就像一个纳米级面包板。使用 FPGA 就像芯片流片,但是你只需要买这一张芯片就可以搭建不一样的设计,作为交换,你需要付出一些效率上的代价。
从字面上讲这种说法并不对,因为你并不需要重连(rewire)FPGA,它实际上是一个通过路由网络(routing network)连接的查找表 2D 网格,以及一些算术单元和内存。FPGA 可以模拟任意电路,但它们实际上只是在模仿,就像软件电路仿真器模拟电路一样。这个答案不恰当的地方在于,它过分简化了人们实际使用 FPGA 的方式。接下来的两个定义能更好地描述 FPGA。
电路模拟是 FPGA 的经典主流用例,这也是 FPGA 最早出现的原因。FPGA 的关键在于硬件设计是用 HDL 形式编码的,而且买一些便宜的硬件就可以得到和 ASIC 相同的效果。当然,你不可能在 FPGA 和真正的芯片上使用完全相同的 Verilog 代码,但至少它们的抽象范围是一样的。 这是与 ASIC 原型设计不同的一个用例。和电路仿真不同,计算加速是 FPGA 的新兴用例。这也是微软最近成功加速搜索和深度神经网络的原因。而且关键的是,计算实例并不依赖于 FPGA 和真正 ASIC 之间的关系:开发人员针对基于 FPGA 的加速编写的 Verilog 代码不需要与用来流片的 Verilog 代码有任何的相似性。

这两种实例在编程、编译器和抽象方面存在巨大差异。我比较关注后者,我将其称为「计算 FPGA 编程」(computaTIonal FPGA programming)。我的论点是,目前计算 FPGA 的编程方法都借鉴了传统的电路仿真编程模型,这是不对的。如果你想开发 ASIC 原型的话,Verilog 和 VHDL 都是正确的选择。但如果目标是计算的话,我们可以也应该重新思考整个堆栈。
让我们开门见山地说吧。FPGA 是一类很特殊的硬件,它用来高效执行模拟电路描述的特殊软件。FPGA 配置需要一些底层软件——它是为了 ISA 编写的程序。 这里可以用 GPU 做类比。 在深度学习区块链盛行之前,有一段时间 GPU 是用来处理图形的。在 21 世纪初,人们意识到他们在处理没有图形数据的计算密集型任务时,也会大量使用 GPU 作为加速器:GPU 设计师们已经构建了更通用的机器,3D 渲染只是其中一个应用而已。

FPGA的定义以及和GPU的类比
计算 FPGA 遵循了相同的轨迹。我们的想法是要多多使用这一时兴的硬件,当然不是为了电路仿真,而是利用适合电路执行的计算模式,用类比的形式来看 GPU 和 FPGA。
为了让 GPU 发展成今天的数据并行加速器,人们不得不重新定义 GPU 输入的概念。我们过去常常认为 GPU 接受奇特的、强烈的、特定领域的视觉效果描述。我们实现了 GPU 执行程序,从而解锁了它们真正的潜力。这样的实现让 GPU 的目标从单个应用域发展为整个计算域。 我认为计算 FPGA 正处于类似的转变中,现在还没有针对 FPGA 擅长的基本计算模式的简洁描述。但它和潜在的不规则并行性、数据重用以及大多数静态的数据流有关。 和 GPU 一样,FPGA 也需要能够体现这种计算模式的硬件抽象,Verilog 用于计算 FPGA 的问题在于它在低级硬件抽象中效果不好,在高级编程抽象中的效果也不好。让我们通过反证法想象一下,如果用 RTL(寄存器传输级)取代这些角色会是什么样。 甚至 RTL 专家可能也无法相信 Verilog 是可以高效开发主流 FPGA 的方式。它不会把编程逻辑推向主流。对于经验丰富的硬件黑客来说,RTL 设计似乎是友好而熟悉的,但它与软件语言之间的生产力差距是不可估量的。
事实上,对现在的计算 FPGA 来说,Verilog 实际上就是 ISA。主要的 FPGA 供应商工具链会将 Verilog 作为输入,而高级语言的编译器则将 Verilog 作为输出。供应商一般会对比特流格式保密,因此 Verilog 在抽象层次结构中会处于尽可能低的位置。
把 Verilog 当做 ISA 的问题是它和硬件之间的距离太远了。RTL 和 FPGA 硬件之间的抽象差距是巨大的,从传统角度讲它至少要包含合成、技术映射以及布局布线——每一个都是复杂而缓慢的过程。因此,FPGA 上 RTL 编程的编译/编辑/运行周期需要数小时或数天,更糟糕的是,这是一个无法预测的过程,工具链的深层堆栈可能会掩盖 RTL 中的改变,这可能会影响设计性能和能源特性。
好的 ISA 应该直接展示底层硬件未经修饰的真实情况。像汇编语言一样,它其实不需要很方便编程。但也像汇编语言一样,它的编译速度需要非常快,而且结果可预测。如果想要构建更高级的抽象和编译器,就需要一个不会出现意外的低级目标。而 RTL 不是这样的目标。
如果计算 FPGA 是特定类算法模式的加速器,那当前的 FPGA 并不能理想地实现这一目标。在这个游戏规则下能够击败 FPGA 的新硬件类型,才可能带来全新的抽象层次结构。新的软件栈应该摒弃 FPGA 在电路仿真方面的遗留问题,以及 RTL 抽象。

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1663

    文章

    22494

    浏览量

    638989
  • gpu
    gpu
    +关注

    关注

    28

    文章

    5266

    浏览量

    136040
  • 深度学习
    +关注

    关注

    73

    文章

    5604

    浏览量

    124610

原文标题:FPGA难懂?与GPU类比一下就明白了

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用Python/MyHDL创建自定义FPGA IP

    使用 Python/MyHDL 创建自定义 FPGA IP,与 Vivado 集成,并通过 PYNQ 进行控制——实现软件上的简单硬件设计。
    的头像 发表于 04-09 09:53 205次阅读
    使用Python/MyHDL创建自<b class='flag-5'>定义</b><b class='flag-5'>FPGA</b> IP

    图像上两个多边形的ROI区域,如何获得这两个ROI区域重合部分的ROI

    labview中,图像上两个多边形的ROI区域,如何获得这两个ROI区域重合部分的ROI
    发表于 03-16 14:03

    两个RS485(Modbus RTU)主站与主站之间如何通讯

    本产品很好解决Master-1主站向模块写入数据,Master-2主站读取数据;Master-2主站向模块写入数据,Master-1主站读取数据。由此解决两个主站之间的互相读通信难题。
    的头像 发表于 02-08 15:32 866次阅读
    <b class='flag-5'>两个</b>RS485(Modbus RTU)主站与主站之间如何通讯

    两个RS485-Modbus主站如何通讯

    本产品很好解决Master-1主站向模块写入数据,Master-2主站读取数据;Master-2主站向模块写入数据,Master-1主站读取数据。由此解决两个主站之间的互相读通信难题。
    发表于 02-08 15:32 0次下载

    使用博图(TIA Portal)监控PROFINET从站通讯状态的两个方法

    如何使用博图监控Profinet从站通讯状态,这里有两个方法供你选择。 方法一 | 使用DeviceStates指令 创建全局数据块 在博图项目中,创建一全局数据块(DB),用于存储从站状态信息
    的头像 发表于 01-17 11:21 1496次阅读
    使用博图(TIA Portal)监控PROFINET从站通讯状态的<b class='flag-5'>两个</b>方法

    曙光存储连续斩获两个行业奖项

    近期,曙光存储连续斩获两个行业奖项,自研技术产品在国产突破、AI行业应用等方面的成果获得广泛关注。
    的头像 发表于 01-15 16:28 2706次阅读

    硬件SPI两个CS操作两个norflash,怎么互斥操作两个norflash?

    硬件SPI两个CS操作两个norflash,怎么互斥操作两个norflash,有一norflash被模拟成U盘,会在中断中操作spi。
    发表于 09-26 06:18

    基本半导体连获两个行业奖项

    近日,基本半导体凭借在碳化硅模块领域的突出表现,连获“国产SiC模块TOP企业奖”和“年度优秀功率器件产品奖”两个行业奖项。
    的头像 发表于 09-05 16:31 1228次阅读

    AI狂飙, FPGA会掉队吗? (中)

    在上篇中,我们介绍了FPGA的前面两个特点:硬件可编程、并行与实时,也列举了这两个特点带来的诸多机会。在本文中,我们将继续介绍另外两个特点,以集齐F
    的头像 发表于 08-08 09:36 1182次阅读
    AI狂飙, <b class='flag-5'>FPGA</b>会掉队吗? (中)

    MagicBMS™ 方案重新定义轮车、电储系统的成本、安全与智能化边界

    揭秘 MagicBMS™ 方案如何重新定义轮车、电储系统的成本、安全与智能化边界 在电动车、储系统全面渗透生活的当下,隐藏在电池包背后的“BMS系统”(Battery Manag
    的头像 发表于 07-30 16:54 7w次阅读
    MagicBMS™ 方案重新<b class='flag-5'>定义</b><b class='flag-5'>两</b>轮车、电储<b class='flag-5'>能</b>系统的成本、安全与智能化边界

    图中两个按键开关是两个干簧管,为什么不直接对GND设计来检测这个干簧管通断呢?

    图中两个按键开关是两个干簧管,为什么不直接对GND设计来检测这个干簧管通断呢? 这样设计的原理是什么?
    发表于 06-17 06:30

    看到STM8L152用两个IO用两个或非门检测两个通断,是什么原理呢?

    图中两个按键开关是两个干簧管,为什么不直接对GND设计来检测这个干簧管通断呢? 这样设计的原理是什么?
    发表于 06-12 06:25

    请问如何在同一FX3上实现两个GPIF接口?

    我们按照 AN75779 应用说明在 FX3 上成功实现了自定义图像传感器接口。 现在我们想添加另一 GPIF 接口,这将允许同一 FX3 设备从 FPGA 接收数据并发送到 US
    发表于 05-13 06:35

    ADAU1787四ADC、两个DAC、带音频DSP的低功耗编解码器技术手册

    ADAU1787 是一款具有四输入和两个输出的编解码器,其中整合了两个数字信号处理器 (DSP)。从模拟输入到 DSP 内核再到模拟输出的路径已针对低延迟进行优化,适用于噪声消除耳机。通过加入少量无源组件,ADAU1787 提
    的头像 发表于 05-12 14:57 1724次阅读
    ADAU1787四<b class='flag-5'>个</b>ADC、<b class='flag-5'>两个</b>DAC、带音频DSP的低功耗编解码器技术手册

    TPS75003 集成和可配置的电源管理 IC (PMIC),带有两个降压控制器和一LDO数据手册

    配置文件要求,包括单调电压斜坡和最小电压轨上升时间。每个输出的独立使允许排序,以最大限度地减少启动时对电源的需求。每个电源的软启动限制了启动期间的浪涌电流。两个集成降压控制器允许对低电流和高电流
    的头像 发表于 04-29 15:34 1006次阅读
    TPS75003 集成和可配置的电源管理 IC (PMIC),带有<b class='flag-5'>两个</b>降压控制器和一<b class='flag-5'>个</b>LDO数据手册