Advertisement

FPGA到底是什么?

阅读量:

前言-芯片的本质

芯片的本质是什么?

老哥认为芯片的本质是电路!

简单来说,数字芯片,不论多复杂,其底层就是 与,或,非的组合。

这个是某宝上可以买到的世界上简单的芯片之一, 74LS系列,很便宜,两毛钱;

在这里插入图片描述

其功能就是二输入与非门。这是一个最简单的芯片,其电路和版图如下

在这里插入图片描述

上图中一共4个二输入与非门。

而CPU或者GPU等大芯片,有几千万门甚至上亿门的电路。

深入剖析大芯片的深层结构,我们能够发现,这类大芯片本质上由与非门、或非门等基本逻辑门构成。

这就是电路,CPU和GPU也是一种电路的组织形式。

即使芯片的复杂程度很高,芯片设计工程师也会利用硬件描述语言(HDL)来描述芯片电路。

看起来像是和软件工程师一样,都在敲代码,在编程,实际上是在搭电路。

EDA工具将语言信息映射至电路设计,最终生成该设计版图(GDS)。随后,该版本被提交至厂家进行生产流程。流片部门将GDS转换为硅基材料。封装部门则将硅基材料(DIE)封装至完整的CHIP。

这个过程和设计PCB电路基本上是非常相似的。

都是电路转换成PCB 到厂家制版。

我们所指的卡脖子现象,目前主要体现在制造环节中,具体涉及从版图规划到硅材料生产的阶段。其他领域也存在类似问题,但目前这个问题暂不深入探讨,待有时间再做专题分析。

今天主要说一下 ,设计一款芯片研发最大的问题是啥?

有两点是大家公认的。

第一,研发迭代周期长:

大芯片投入研发一年或两年,这已成为常见做法。由于功能缺陷或市场变化,最终无法售出,不得不重新设计。这令人震惊,小型芯片公司因芯片失败导致资金耗尽,直接推出市场也是常见现象。

第二,芯片投入高:

芯片研发涵盖了流片成本、IP成本以及人力成本等多个方面。28nm的MASK成本约为1000万,12nm的约为2500万。除了这些,还有人力成本和IP成本等。研发一颗28nm的芯片,总投入成本可能达到几千万甚至更多。相比之下,7nm和5nm的投入则达到数亿元。这么高的研发成本(NRE),未来需要将其摊到每一颗芯片上。

对于一个项目或需求,如果其数量有限,仅几千或几万颗,那么是否值得投入研发芯片就是一个需要考虑的问题。

由于布局不适用,因此没有替代方案。通过缩短迭代周期并降低成本,得以实现这一电路。

FPGA,他来了!

1:FPGA:实现电路的电路

FPGA

Field Programmable Gate Array。

现场可编程门阵列。

FPGA和专用芯片不同。

可以编程。

文章开头说过了, 芯片的本质就是电路。

那么FPGA的本质是什么?

FPGA本质也是一种芯片。

FPGA不仅支持数字电路功能,同样可以实现。例如CPU、GPU和NPU等这些电路,都可以通过FPGA内部实现,但效率可能因具体设计而异。

那FPGA的本质就是可以通过编程实现电路的电路。

这个是怎么做到的?

或者说,什么样的电路可以实现与或非这些基本操作

我们以电路形式F=A&B&C&D为例进行说明:该16x1的RAM的每一个bit都可以被设置为0或1。

这个RAM有4位地址, DCBA。通过这4bit选择RAM的输出。

通过配置RAM中不同的值,实现输出F 和输入A,B,C,D的关系

在这里插入图片描述

上图中,我们把16bitRAM 配置为 0000000000000001 ,这个电路 则等效 F=A&B&C&D;

只有A=B=C=D=1时, F=1,其他情况 F=0;

完美实现了 F=A&B&C&D;

重要的事情再说一遍;

16bitRAM 配置为 0000000000000001 , 则等效F=A&B&C&D;

那么现在“0000000000000001” 这串数就是FPGA的编程。

这就是FPGA最基本的原理;

举一反三,如果实现电路 F=A|B|C|D 。

这个电路如何编程:

在这里插入图片描述

16bit RAM 配置为 01111111111111111, 则等效F=A|B|C|D。

建议大家动手试试:通过调整16bitRAM 的设置,可以支持对A、B、C、D四个输入的所有逻辑操作进行处理。

FPGA就是利用了这个转化,具备了描述任何电路的能力。

上图这个结构在FPGA中有一个专有名词,叫做LUT ,lookup table( 查找表)。

(nnd神奇啊)

LUT就构成了所有FPGA的最基本的单元。

LUT仅能实现数字组合逻辑,因此需要增添一个寄存器ff,可以实现数据的保持。

如下图所示:LUT+寄存器构成了现代FPGA基本结构。

FPGA的基本结构,就是依靠如此简单的电路实现了无比复杂的逻辑。

该方法由LUT和FF的基础结构构成,其中的LUT和FF整合为一个基础的逻辑单元(LOGIC BLOCK)。

在这里插入图片描述

这种被称为能够处理四个输入计算的LUT,通常被称为4输入LUT。此外,还有5输入、6输入等类型的变种类型。

万变不离其宗。

这种结构,从FPGA诞生以来,就没有怎么变过。

这个电路,也可以看作是一个最小的FPGA。

现在能实现一个功能的芯片,少则几万门,多则几千万门,上亿门。

单纯靠这个电路实现,这就是开玩笑了。

那么就需要无数的LUT和FF来实现,。

FPGA成功实现了大量Logic Block(每个Logic Block由LUT和FF构成)的阵列结构,这些Logic Block通过布线资源进行连接。

把互联和逻辑单元结合起来就是一个FPGA芯片,图如下所示。

在这里插入图片描述

FPGA开发流程通常包括以下步骤。首先,使用Verilog(一种电路描述语言)进行电路设计,随后将设计转换为bit流配置文件。

相较于以往,专用芯片的开发过程从HDL(如Verilog的电路描述语言)开发到硅制造。整个开发周期由此显著延长。

在这里插入图片描述

这些bit流包括啥?

开头说过了,16bitRAM (LUT)配置为 0000000000000001 ,
则等效F=A&B&C&D;

FPGA生成的Bit-stream流序列,不仅包含用于配置LUT的配置文件,同时包含用于配置布线资源的配置文件。

到这里,FPGA的设计及编程就完成了。

简单明了!

2:EDA工具:从知到行的距离

看起来设计一个FPGA芯片也不复杂。

电路不复杂,市场上高性能的FPGA,可选择的余地不多。

从知到行,这里面有一个巨大的鸿沟,

按照本文开头的原理,假如一个厂商设计完毕了一款FPGA芯片。

等到给客户使用的时候,就碰上了一个大麻烦。

EDA工具。

如果给客户提供FPGA芯片,则需要配套提供给客户一个EDA工具。

没有EDA工具,难不成让客户手动生成FPGA的bitstream的文件。

芯片都做出来了,EDA工具,还难吗?

难,真的难!

这是一个巨大的坑。

该 accompanying diagram illustrates an open-source FPGA design flow (OpenFPGA). It is worth noting that even within an open-source project, the essential EDA tools required for its implementation must be identified.

在这里插入图片描述

这些需要给客户的EDA工具包括:

  • 1:综合类工具
  • 2:布局布线类工具
  • 3:bit生成类工具
  • 4:时序分析类工具
  • 5:仿真类工具
  • 6:嵌入式逻辑分析类仪器等调试工具
  • 7:功耗分析类工具

这些集合可以被视为最小规模的,但相比而言,这些集合的实现难度显著高于一个CPU芯片上提供的GCC编译工具。

老哥安装过某个公司开发的EDA工具,这些工具的体积都是大约十几个GB,比Windows安装盘大得多。

如果CPU的GCC工具难度是1,FPGA的EDA工具的难度就是10到100。

借用《让子弹飞》里的一段话:

项目成功了,芯片功劳怎么才占7成。

七成是EDA的,芯片也就三成。

就这三成,还要看EDA的脸色。

辛辛苦苦半天,做出来芯片,还要看EDA工具的脸色。

看看EDA都有哪些“脸色”?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上图的布局布线工具为例,看起来就比较复杂。

如果做不好,整个FPGA的利用率极低,还布不通,你说重要不重要。

除了现有的EDA工具,能够实现HDL功能,例如Verilog这种高级级数语言之外,还包括HLS(高级综合(High-level Synthesis))这种高层次的综合描述语言。

在这里插入图片描述

HLS的引入使软件工程师得以参与FPGA设计流程,将硬件开发的复杂性隐含其中,软件开发更加便捷,这正是EDA工具的强大功能的体现。

然而,本质上来说,通过将高级语言(如C,C++)转化为硬件描述语言(HDL描述),随后经过综合工具的转换,最终生成硬件电路。

主要优点在于更符合软件工程师的习惯使用。然而,引入了额外的转换步骤可能导致效率上的损失。

3:FPGA的架构:融合超越

文章开始说了,FPGA就是Logic Block,内部主要是(LUT+FF),以及布线资源。

除了这些。

FPGA还有很多硬核IP,也叫做宏单元。

例如PLL,SERDES,RAM等常规IP的。

随着现在芯片的演进。

FPGA内部也集成了很多新的东西。

这些新产品的亮点在于中央处理器(CPU),其硬核CPU系统集成于FPGA内部,甚至支持操作系统(OS)的操作。

这样CPU+FPGA。

CPU软件编程,FPGA 硬件电路编程,

这个就是双剑合璧,更胜一筹。

同样,serdes也是高端FPGA的必要模块。缺少serdes,FPGA就孤立无援,无法实现与其他芯片电路的高速互联。

现在与外部器件连接,支持比如PCIe,SATA,10G/100G ethernet这些高速协议。

数字信号处理,FPGA应用于数字信号处理等计算密集型任务,如雷达等等

所以,FPGA内部也集成了了很多DSP单元,实现乘法等操作。

在人工智能时代,FPGA集成有用于AI处理的神经网络加速的核心功能,为该领域提供了重要支持。

总结一下,除了LUT,FPGA内部集成硬核IP包括:

1:RAM:负责存储资源的实现;
2:PLL:提供高速时钟信号和资源的支撑;
3:DSP:支持乘法运算、滤波器设计以及数字信号处理模块;
4:SERDES:支持实现PCIE、SATA、FC总线以及100G Ethernet等高速接口;
5:CPU系统:具备软件编程开发能力;
6:NPU核心:通过加速AI处理提升性能。

而根据市场需要,还可能添加更多的硬核IP 与传统的FPGA进行融合。

融合更多功能IP。

这就是FPGA架构未来的趋势。

4:FPGA优势:解决问题才是王道

FPGA和CPU有什么区别和优势?

我们讨论一种架构的优劣,重点是解决了什么问题?

而不是CPU与FPGA,孰优?

只有放在固定的应用场景下,才能说哪种架构更适合解决这些问题。

FPGA编程是电路,本质上还是可以看作,逻辑门(与或非)等等效电路。

CPU是指令操作,运行的是软件。

FPGA采用时间并行技术,而CPU则采用时间串行处理方式。单个CPU核心必须依次执行每一条指令以完成任务,尽管存在指令级并行的可能性,但其基本运行机制保持一致。

FPGA的并行度较高,相比CPU的计算方式,数据吞吐量大,时延控制比较好。

然而,CPU运行频率显著高,能够执行操作系统任务,在通用计算任务中展现出极高的灵活性,与FPGA相比,这种计算方式更适合特定任务。

专用标准集成电路(Application Specific Standard Parts,ASIP)是专为特殊应用设计的集成电路。FPGA更适合应用于ASSP,与CPU协同工作,专注于处理单一领域的大规模数据计算任务。

FPGA既然是”万能的芯片“,似乎那就可以替代实现所有芯片功能。

是不是可以不研发专用芯片,只用FPGA。

相比专用集成电路:FPGA有三个劣势

1:面积大,成本高:

相较于专用集成电路(芯片),FPGA在采用LUT表示基本逻辑门单元方面具有显著差异。具体而言,其面积大约是专用集成电路的10倍,这使得其成本进行粗略估计也会显著更高。

2:面积大,功耗高:

同样,功耗方面也没有优势。实现低功耗设备,例如手持供电设备,其效率基本无法满足需求。

3:运行频率低,计算效率低。

在FPGA内部,LUT之间由于互联线路较长,导致其运行频率相较于采用相同工艺的ASIC来说要低得多。专用电路中的各门电路之间的时间延迟相对较小。

但是,FPGA优势也很明显。

FPGA最大的优势,就是灵活性高。

用FPGA不用重新流片,节约了NRE成本。

在这些领域中,雷达系统、5G网络技术、网络存储系统和高性能计算领域得到了广泛应用。

在需求模糊且规模较小的情况下,没必要做芯片;而当需求经常变化时,FPGA则是理想的选择。

在收购后,FPGA的应用重心转向了数据中心领域。值得注意的是,投入力度较大,最新的Intel IPU中采用FPGA技术,用于处理数据中心基础设施的卸载任务,其功能与DPU相似。

目前很多家DPU都是用Intel和Xilinx的FPGA实现的。

这主要体现在DPU需求呈现波动性特征,而数据中心对DPU的需求呈现动态调整趋势。

FPGA全球市场在2018年约为60亿美元,Xilinx和Altera是该市场的主要供应商,其他公司则处于次要地位。值得注意的是,2015年英特尔以167亿美元收购Altera后,其余公司所获得的市场份额急剧减少。

在这里插入图片描述

老哥早些年,这两家FPGA都使用过,各有千秋。

国内也有一些FPGA公司,部分公司的出货情况较为正常。与国际主要企业相比,目前处于解决了有无差距的阶段,能够部分满足国产化需求。在规模和性能方面,尤其是EDA工具方面,存在明显差距,仍需在市场中继续磨练。

这里举两个国产FPGA的非典型案例,非常有意思。

2014年,俄罗斯并入了克里米亚。美国实施了制裁政策。美国对俄罗斯实施了严厉的封锁和禁运措施,这一行动效果显著。俄罗斯芯片面临短缺问题,尤其是高端FPGA芯片。某公司迅速抓住了这一机遇,帮助解决了国际友人的燃眉之急,实现了该公司高端FPGA芯片的出口,并获得了可观的利润。

另外,某手机大厂的屏幕存在特殊转码格式,因此在进行返修时,只能更换原厂屏幕,其他屏幕格式无法兼容,导致原厂屏价格昂贵。该厂为了应对这一问题,委托定制了一批超小型FPGA,用于实现手机屏幕的解码功能。目前,市场上具备解码能力的屏幕厂数量众多(包括LCD和LED等多种类型),通过这一技术替代原厂屏,已经在手机返修屏市场取得了良好的销售效果。

在这些细分领域,找到了定位,实现了很大的突破,不论是利润还是数量。

如果有数量几十万片,几百万片,甚至更多,做专用芯片更合适。

如果没有那么多数量,需求又不固定,用FPGA更合适。

在芯片设计过程中,其中一项关键环节被称为FPGA原型验证。通过将芯片代码放置在FPGA上进行原型实现,从而显著缩短芯片设计迭代周期。

本文开始说:FPGA特性,就是能够描述芯片电路。

在数字芯片量产之前,通过FPGA导入芯片逻辑进行模拟测试,是整个流程中的一个关键步骤。

从这个角度看,FPGA和芯片(专用集成电路)从来就不是对立的,

FPGA,万能芯片,从功能上看是万能的,理论上可以实现所有功能。

但是从,PPA上看,性能,功耗,面积(成本),这三个维度来衡量,又是非常受限的。

FPGA也在进化,拓展更多的领域,满足那些变化的市场需求。

也有部分市场需求更为固化,被专用芯片所取代。

万能的芯片,变化的应用。

找到市场定位,解决用户的问题,才能获得一席之地。

FPGA是如此,芯片也是如此。

前辈的文章属实的干货满满,感恩的心

本文来自:[《FPGA芯片的“本质”是什么?》]

全部评论 (0)

还没有任何评论哟~