找回密码
 注册
关于网站域名变更的通知
查看: 606|回复: 4
打印 上一主题 下一主题

FPGA其实很简单?看完这篇文章就明白了

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-4-13 09:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
4 u- u( E/ L* u+ A# A" F
FPGA 是一堆晶体管,你可以把它们连接(wire up)起来做出任何你想要的电路。它就像一个纳米级面包板。使用 FPGA 就像芯片流片,但是你只需要买这一张芯片就可以搭建不一样的设计,作为交换,你需要付出一些效率上的代价。" c+ I5 u8 p& @6 o8 U2 S
; ]( N+ p9 h- ~1 }- [
从字面上讲这种说法并不对,因为你并不需要重连(rewire)FPGA,它实际上是一个通过路由网络(routing network)连接的查找表 2D 网格,以及一些算术单元和内存。FPGA 可以模拟任意电路,但它们实际上只是在模仿,就像软件电路仿真器模拟电路一样。这个答案不恰当的地方在于,它过分简化了人们实际使用 FPGA 的方式。接下来的两个定义能更好地描述 FPGA。' o& h7 R9 U1 ~2 |+ ?7 j6 [5 R6 P

/ @- h1 n& {& I) j4 E电路模拟是 FPGA 的经典主流用例,这也是 FPGA 最早出现的原因。FPGA 的关键在于硬件设计是用 HDL 形式编码的,而且买一些便宜的硬件就可以得到和 ASIC 相同的效果。当然,你不可能在 FPGA 和真正的芯片上使用完全相同的 Verilog 代码,但至少它们的抽象范围是一样的。* S7 J6 D& a: ^
" f0 Y! t& M; r% K0 @
这是与 ASIC 原型设计不同的一个用例。和电路仿真不同,计算加速是 FPGA 的新兴用例。这也是微软最近成功加速搜索和深度神经网络的原因。而且关键的是,计算实例并不依赖于 FPGA 和真正 ASIC 之间的关系:开发人员针对基于 FPGA 的加速编写的 Verilog 代码不需要与用来流片的 Verilog 代码有任何的相似性。
! Q8 [$ h( Y1 S6 V. u% g/ r3 d8 M% y/ D
这两种实例在编程、编译器和抽象方面存在巨大差异。我比较关注后者,我将其称为「计算 FPGA 编程」(computaTIonal FPGA programming)。我的论点是,目前计算 FPGA 的编程方法都借鉴了传统的电路仿真编程模型,这是不对的。如果你想开发 ASIC 原型的话,Verilog 和 VHDL 都是正确的选择。但如果目标是计算的话,我们可以也应该重新思考整个堆栈。( h4 u' K5 ^) m/ U1 Z

2 O" v1 b- I1 B' G让我们开门见山地说吧。FPGA 是一类很特殊的硬件,它用来高效执行模拟电路描述的特殊软件。FPGA 配置需要一些底层软件——它是为了 ISA 编写的程序。6 m, L; C1 d! O. q- j

! Z2 O* e4 G* h1 X可以用 GPU 做类比' N# y9 H  L! h8 [
3 h& y7 t. g/ D! I7 e
在深度学习和区块链盛行之前,有一段时间 GPU 是用来处理图形的。在 21 世纪初,人们意识到他们在处理没有图形数据的计算密集型任务时,也会大量使用 GPU 作为加速器:GPU 设计师们已经构建了更通用的机器,3D 渲染只是其中一个应用而已。/ J3 R+ |- Y0 J* @/ X* G
1 m* M0 q/ T0 ^8 U& F
FPGA 的定义以及和 GPU 的类比
2 ]' V. Y7 O! J6 h! i, i1 m
- `* @; U6 S- c; K计算 FPGA 遵循了相同的轨迹。我们的想法是要多多使用这一时兴的硬件,当然不是为了电路仿真,而是利用适合电路执行的计算模式,用类比的形式来看 GPU 和 FPGA。
* x0 K, L' ?% R; j
$ ^+ n7 z; G/ ?4 b  ]: o为了让 GPU 发展成今天的数据并行加速器,人们不得不重新定义 GPU 输入的概念。我们过去常常认为 GPU 接受奇特的、强烈的、特定领域的视觉效果描述。我们实现了 GPU 执行程序,从而解锁了它们真正的潜力。这样的实现让 GPU 的目标从单个应用域发展为整个计算域。
/ Q2 j: h: p. r, p2 Y$ Y
3 F8 n+ P- i8 J3 }0 z5 H6 k9 Y我认为计算 FPGA 正处于类似的转变中,现在还没有针对 FPGA 擅长的基本计算模式的简洁描述。但它和潜在的不规则并行性、数据重用以及大多数静态的数据流有关。8 y4 i& N0 n  b6 U, H

5 T* J: S6 }  S% C0 [和 GPU 一样,FPGA 也需要能够体现这种计算模式的硬件抽象,Verilog 用于计算 FPGA 的问题在于它在低级硬件抽象中效果不好,在高级编程抽象中的效果也不好。让我们通过反证法想象一下,如果用 RTL(寄存器传输级)取代这些角色会是什么样。  v7 y8 I: G5 B+ N6 |; o

8 L% U9 i5 G& C3 N) ]3 O# `甚至 RTL 专家可能也无法相信 Verilog 是可以高效开发主流 FPGA 的方式。它不会把编程逻辑推向主流。对于经验丰富的硬件黑客来说,RTL 设计似乎是友好而熟悉的,但它与软件语言之间的生产力差距是不可估量的。$ o  C" U8 @0 l: f% M+ ^$ g

6 X2 H% W, F5 R事实上,对现在的计算 FPGA 来说,Verilog 实际上就是 ISA。主要的 FPGA 供应商工具链会将 Verilog 作为输入,而高级语言的编译器则将 Verilog 作为输出。供应商一般会对比特流格式保密,因此 Verilog 在抽象层次结构中会处于尽可能低的位置。
: a8 d( J  e6 G3 T' ]" t- C7 J& \8 {' ]( l! L' _
把 Verilog 当做 ISA 的问题是它和硬件之间的距离太远了。RTL 和 FPGA 硬件之间的抽象差距是巨大的,从传统角度讲它至少要包含合成、技术映射以及布局布线——每一个都是复杂而缓慢的过程。因此,FPGA 上 RTL 编程的编译 / 编辑 / 运行周期需要数小时或数天,更糟糕的是,这是一个无法预测的过程,工具链的深层堆栈可能会掩盖 RTL 中的改变,这可能会影响设计性能和能源特性。5 z) e  o$ \, c0 L2 K) b
) |' b+ @; Q4 C2 \: l7 v- r' n( T
好的 ISA 应该直接展示底层硬件未经修饰的真实情况。像汇编语言一样,它其实不需要很方便编程。但也像汇编语言一样,它的编译速度需要非常快,而且结果可预测。如果想要构建更高级的抽象和编译器,就需要一个不会出现意外的低级目标。而 RTL 不是这样的目标。, g' S: P' ^/ |) @0 a2 i( ^

6 Z- ?/ I# d5 f如果计算 FPGA 是特定类算法模式的加速器,那当前的 FPGA 并不能理想地实现这一目标。在这个游戏规则下能够击败 FPGA 的新硬件类型,才可能带来全新的抽象层次结构。新的软件栈应该摒弃 FPGA 在电路仿真方面的遗留问题,以及 RTL 抽象。
; N7 ~/ z- x5 s" }! W" a7 n: u! ^

该用户从未签到

2#
发表于 2021-4-13 10:59 | 只看该作者
使用 FPGA 就像芯片流片,但是你只需要买这一张芯片就可以搭建不一样的设计,作为交换,你需要付出一些效率上的代价
2 |8 C' ^1 r3 W. o' Q8 {
  • TA的每日心情
    无聊
    2021-11-12 15:25
  • 签到天数: 37 天

    [LV.5]常住居民I

    3#
    发表于 2021-4-16 11:49 | 只看该作者
    好,,,,,让我威望加1

    该用户从未签到

    4#
    发表于 2021-5-9 15:53 | 只看该作者
    刚刚接触中
  • TA的每日心情

    2021-6-16 15:10
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    5#
    发表于 2021-5-11 17:21 | 只看该作者
    不是很明白,不过谢谢
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-16 13:03 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表