深入浅出带你了解FPGA架构
数字集成电路有两种类型:ASIC和FPGA(现场可编程门阵列)。专用集成电路(ASIC)有一个预先定义的特定硬件功能,在生产后不能重新编程。但FPGA可以在制造后可无限编程。
FPGA是一种集成电路,一种可编程芯片,它允许工程师对定制的数字逻辑进行编程,可以根据程序改变其硬件逻辑。主要目的是允许工程师重新设计和重新配置他们的芯片更快,更便宜,只要他们想要,然而世界上没有什么理想的,FPGA芯片也有局限性!
FPGA最早出现于20世纪80年代,其最初的应用是允许工程师拥有通用可编程逻辑芯片。然而,这需要大量的编程才能执行简单的功能,所以工程师们尽量避免使用这些功能。但是,虽然在1980年的FPGA是一个简单的接口设备,主要针对难以用于设计复杂系统的胶水逻辑,但它成为了一个系统级集成电路,具有自己的内存块、微处理器和接口,允许设计重要的系统。
基本特点
1) 采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。
2) FPGA可做其它全定制或半定制ASIC电路的中试样片。
3) FPGA内部有丰富的触发器和I/O引脚。
4) FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5) FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
6)使工程师能够精确地构建所需硬件,而不必使用标准集成电路,或花费与ASIC设计相关的时间、成本和风险。
7)与微处理器或微控制器相比,它们以更快、更节能和更简单的方式进行操作。
8)FPGA功能可以像任何其他软件代码一样更新,即使硬件已经离开了生产点。这可以帮助修复bug或添加新特性。
可以说,FPGA芯片是提高系统集成度、可靠性的最佳选择之一。FPGA是由存放在片内RAM中的程序来设置其工作状态,因此,工作时需要对片内RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。
CPLD和FPGA
CPLD是复杂可编程逻辑器件,也是一种制造后可重新编程的器件。在这个意义上,它们类似于FPGA。然而,也有显著的差异。FPGA由多个逻辑单元组成,而CPLD由较少的逻辑单元组成。由于它们的尺寸,CPLD通常更便宜和更快。然而,CPLD的功能非常有限,它们不能用于构建复杂的系统,它们通常用于简单的设计,如胶合逻辑[1]。
各个厂家叫法不尽相同。PLD(Programmable Logic Device)是可编程逻辑器件的总称,早期多EEPROM工艺,基于乘积项结构。FPGA最早由Xilinx公司发明。多为SRAM 工艺,基于查找表(Look Up Table)结构,要外挂配置用的EPROM。Xilinx把SRAM工艺,要外挂配置用的EPROM的PLD叫FPGA,把Flash工艺(类似EEPROM工艺),乘积项结构的PLD叫CPLD;Altera把自己的PLD产品:MAX系列(EEPROM工艺),FLEX/ACEX/APEX系列(SRAM工艺)都叫作CPLD,即复杂PLD(Complex PLD)。
FPGA的应用
目前FPGA的应用有很多。当我们在生产过程中不确定我们的需求,或者需求会随着时间而改变。FPGA是最快、最便宜的原型制作方法之一,但它并不局限于此。它被用于不同的目的:从灵活的设计和机器学习训练到快速交易和加密挖掘。服务器应用是FPGA设备最新的案例。
然而,它们也有缺点:
硬件成本
速度要求
FPGA的架构
FPGA由构建块组成,这些构建块就像可以用来构建系统的乐高积木。它有一个基本的逻辑构建块称为逻辑单元(CLB),但也可以包含更大的其他块,如PLL、接口、内存等。单个FPGA芯片将拥有数十万个逻辑单元。除了CLB,芯片还有输出输入模块IOB(Input Output Block)和内部连线(Interconnect)。
我们有一个查找表(LUT)作为FPGA逻辑块的核心。本质上就是一个RAM。它把数据事先写入RAM后,每当输入一个信号就等于输入一个地址进行查表,找出地址对应的内容,然后输出。构建块的输出是多路复用的。多路复用器的一个输入是LUT的直接输出,用于纯组合逻辑,如NAND, NOR, XOR或其他逻辑门。多路复用器的另一个输入是经过d型触发器并与时钟同步存储的LUT的注册输出。
一个逻辑单元本身是一个简单的电路,不能做太多的事情,但当有很多逻辑单元时,我们可以实现任何我们想要的功能。为了做到这一点,逻辑单元被连接到一个阵列的其他逻辑单元。
CLB块之间的橙色矩形是可编程开关,它可以将逻辑单元的输出路由到任何地方。这是一个非常简单的图表;事实上,比这里显示的更多的电线和互连线。
注意携带和携带引脚。每个加法器只有一位宽,而使用进位/进位引脚,可以非常快速和有效地创建大的加法器和计数器。拥有快速、专用的携带链是FPGA相对于其他可编程逻辑器件(如CPLD)的最大优势之一。
在FPGA中,时钟可以实现所有触发器,因为没有时钟的数字设计几乎不可想象。FPGA有非常高级的时钟资源,包括内置的可配置PLL(锁相环)和DLL(延迟锁环)。由于几乎所有的现代数字设计都需要多个具有不同频率和相位延迟的时钟,因此时钟管理非常重要。
FPGA也有用于读取和输出数据的输入输出块。除了标准的I/O块,大多数FPGA有以下I/O特性:
触发器输出同步I/O
微分信号
双数据速率(DDR)
序列化器和反序列化器(SERDES)
上拉、下拉和三态I/O
回转速度可调,驱动强度可调
就像内存中内置的RAM块一样,分布式RAM可以在100Kb和100Mb之间变化。最新一代的FPGA设备也有DSP乘法器片,主要用于DSP应用(数字信号处理)。大多数FPGA有其他内置块:
ADC和DAC
外部存储器控制器,如DRAM, DDR, DDR2。
串行总线控制器
以太网MAC
专用的先进先出[2]
高速收发器
这些块在FPGA设备上设计为“硬块”,而不是在制造过程后由逻辑块和开关构建,因为它们通常是所有复杂系统都需要的。因为它们存在于所有的系统中,并且使用得非常频繁,所以我们希望它们能够存在以节省时间(总使用clb和开关从头开始设计它们没有意义,相反我们将它们设计为单独的可配置块,以便设计师能够更改它们的参数),但更重要的是,我们希望它们具有非常好的特性,非常高效地工作并占用更少的空间。此外,这些模块中有一些模拟部件需要手工设计,不能仅通过数字单元来构建。
如何对FPGA进行编程和配置
为了配置FPGA,我们需要对它进行编程。我们可以使用Verilog、System Verilog和VHDL等FPGA硬件描述语言进行编程。这些语言有一些区别,这里便不再赘述。使用FPGA定义硬件的工作流程如下:
每个步骤都需要一些工具集。大多数FPGA制造商都提供了具备所有所需工具的编程环境。
高手玩家
FPGA市场前景诱人,但是门槛之高在芯片行业里无出其右。全球有60多家公司先后斥资数十亿美元,前赴后继地尝试登顶FPGA高地,其中不乏英特尔、IBM、德州仪器、摩托罗拉、飞利浦、东芝、三星这样的行业巨鳄,但是最终登顶成功的只有位于美国硅谷的四家公司:Xilinx(赛灵思)、Altera、Lattice(莱迪思)、Microsemi,其中,Xilinx与Altera这两家公司共占有近90%的市场份额,专利达到6000余项之多,如此之多的技术专利构成的技术壁垒高不可攀。
Xilinx
Xilinx公司成立于 1984年,Xilinx首创了现场可编程逻辑阵列(FPGA)这一创新性的技术,并于1985年首次推出商业化产品,是全球领先的可编程逻辑完整解决方案的供应商,也是目前排名第一的FPGA解决方案提供商。
产品系列包括:
Spartan系列:定位于低端市场,目前最新器件为采用28nm工艺的Spartan7;
Artix系列:定位于低端Spartan和高端Kintex之间的中端市场,目前在售的主流产品为采用28nm工艺的Artix-7;
Kintex系列:定位于高端市场,包含有28nm工艺的Kintex7系列,20nm的Kintex7 Ultrascale系列,还有16nm的Kintex7 Ultrascale+系列;
Virtex系列:定位于高端市场,包含有采用28nm工艺的Virtex7系列,20nm的Virtex7 Ultrascale系列,还有16nm的Virtex7 Ultrascale+系列;
全可编程 SoC 和 MPSoC系列:包括有Zynq-7000和Zynq UltraScale+ MPSoC系列FPGA、内嵌有ARM Cortex系列CPU;
AI Engine系列:Versal ACAP、Alveo系列等。
Intel(Altera)
与Xilinx齐名的FPGA供应商,2015年被CPU届的大佬Intel收购。
产品系列包括:
MAXII系列:实质上是CPLD;
Cyclone系列:定位于中低端市场,类似于Xilinx 公司的Spartan系列和Artix系列,最新产品为Cyclone10。
Stratix系列:定位于高端市场,与Xilinx的Kintex、Virtex系列竞争,最新产品为Stratix10;
Arria系列:SOC系列FPGA, 内置ARM Cotex A9的核;
Intel Arria 10系列:支持DDR4存储器接口的FPGA,硬件设计人员可以使用Quartus II 软件v14.1,在Arria 10 FPGA和SoC设计中实现666 Mbps DDR4存储器数据速率;
Agilex系列:面向数据中心等高端市场,采用10nm工艺,异构 3D 系统级封装 (SiP) 技术的一款FPGA产品。
Microchip(Microsemi)
Microsemi并购了Actel,专注于美国军工和航空领域,产品为反熔丝结构FPGA和基于Flash的FPGA为主,具有抗辐照和可靠性高的优势,Microsemi又被Microchip(微芯)并购。
产品系列包括:
基于FLASH的通用FPGA系列:包括PolarFire Mid-Range FPGAs、RTG4 Radiation-Tolerant FPGAs、IGLOO2 Low-DensityFPGAs三个高、中、低端系列。
Lattice
CPLD的发明者,著名的可编程逻辑解决方案供应商,仅次于Xilinx和Altera。
产品系列包括:
ECP系列:为Lattice自己的开发的FPGA系列,提供低成本,高密度的FPGA解决方案,而且还有高速Serdes等接口,适用于民品解决方案居多;
ICE系列:为收购SilioncBlue的超低功耗FPGA,曾用在iPhone7里面,实现了FPGA首次在消费类产品中应用;
Mach系列:替代CPLD,实现粘合逻辑的最佳选择。
QuickLogic Corp
QuickLogicCorporation 诞生于1988年,是一家超低功耗嵌入式现场可编程门阵列 (eFPGA) IP、多核语音识别 SoC、显示器桥接和可编程序逻辑解决方案开发公司。
eFPGA产品系列包括:采用65nm和40nm工艺的ArcticPro系列和采用GF-22工艺的ArcticPro 2 eFPGA。
Achronix
Achronix 作为后起之秀,早期推出了eFPGA IP,但是限于IP产品的变现速度太慢,随后推出了FPGA芯片,今年5月发布的新品叫Speedater7t。
EFINIX
EFINIX可以说是后起之秀,它改变了传统FPGA的设计理念:
eXchangeable Logic and Routing (XLR) cell
我们将逻辑资源比作一个城市。随着城市的扩大,就必须建立更宽的道路,道路间要建立不少的立交,而且这些立交的层次都可能很复杂,还需要更多的交通灯,以及匝道来汇聚和分开车流。这些实际上和一块FPGA的结构非常类似,你可以自然联想到,芯片规模越大,就只有两个办法来完成逻辑之间的互联互通。要不就是把走线的资源增加很多层,要不就是把芯片做到更大的面积来增加布线。甚至两个方面都要加强。
传统的FPGA中的运算单元LE(Logic Element)和互连资源Routing Switch在功能上各司其职,而数量和位置都是固定的。因此,如果你的设计中有很多Logic,那么很可能片上的LE不够用,而互连资源会有很多富裕;而如果你的设计中需要很多的连线,比如复杂的总线,大量的Mux,那么很可能互连资源成为瓶颈。
Efinix的想法就是设计一种新的Cell,XLR,它既可以作为运算资源,又可以作为互连资源。
国内主要玩家
[1] gule logic的中文含意是“胶合逻辑”,它是连接复杂逻辑电路的简单逻辑电路的统称。例如,一个ASIC芯片可能包含许多诸如微处理器、存储器功能块或者通信功能块之类的功能单元,这些功能单元之间通过较少的粘合逻辑连接起来。在印制板(PCB)层,粘合逻辑可以使用具有较少逻辑门的“粘合芯片”实现,例如PAL、GAL、CPLD等。
[2] 先进先出(FIFO,first-in,first-out)为处理从队列或堆栈发出的程序工作要求的一种方法,它使最早的要求被最先处理。
又一家国内公司进军服务器芯片领域
我们日常的芯片,其实有几个大市场,集成电路(IC)其实只是半导体的一部分,其他还有分立器件(二极管,三极管之类),光电子,传感器。
而集成电路就是四大类:一个是存储芯片市场 ,包括DRAM,NAND FLASH,韩国的三星和海力士之所以能成为营收全球前四位的半导体厂家,就是因为其主要收入是来自DRAM和NAND FLASH这样的存储器产品。我国在这方面从2016年开始也开工建设了长江存储和合肥长鑫公司,目前已经在市场销售国产存储器颗粒了。
一个是逻辑芯片 ,简单的说就是CPU,GPU,FPGA,ASIC,DSP芯片等,例如我们熟知的英特尔,AMD开发的笔记本和台式机电脑芯片就是CPU;像寒武纪,燧原,地平线,奕斯伟,华为等公司开发的人工智能芯片就属于ASIC专用芯片。
可以说存储芯片和逻辑芯片都是我国芯片实现国产化的主战场,这两者在金额上来讲占据一大半的金额。
还有一个是MCU微处理器 ,这个其实和逻辑芯片的区别在业界是比较模糊的,不过从应用来说,一般是用于家电,工业控制系统、汽车电子、医疗产品等场景,可以总结下这些场景对计算能力的要求不是很高,同时更多要求高稳定性和可靠性,目前国内兆易创新,中颖电子都在搞MCU。
另外就是模拟芯片 了,前面三类都是数字芯片,处理的是数字信号,也就是1-0信号,而模拟芯片则是处理连续的物理信号,包括声光力热电磁波等。模拟芯片主要是电源管理芯片和信号链芯片两大类。
目前总体来说,我国有个很大的不足就是在逻辑芯片的CPU这一块 ,CPU是逻辑芯片里面最大的种类。CPU的应用有三个最大的领域:电脑(笔记本/台式机)、智能手机、数据中心服务器。
目前我国只是在智能手机这部分有一定的份额,其实主要就是来自华为海思的麒麟芯片,不过现在由于美国制裁因素,麒麟芯片无法继续生产了,现在还有紫光展锐在这个领域发展。而在电脑CPU,以及数据中心服务器CPU芯片这两大领域目前基本还是空白。究其原因,还是技术门槛高,研发难度大,全球能够进入这个领域的玩家寥寥。在电脑CPU领域,目前全球就是英特尔和AMD,下图是AMD的CPU在全球台式机和笔记本电脑市场的份额,数据来自Mercury Research。
2021年Q1分别为19.3%和18%,而其余的份额基本都来自英特尔,换句话说英特尔占据了全球电脑CPU市场的80%。
而在数据中心服务器芯片领域也是同样的,英特尔和AMD是两个最主要的玩家,而英特尔的市场份额更大,下图中AMD的X86服务器芯片在2021年Q1的全球X86服务器芯片中的份额不过只有8.9%,而其余超过90%都是来自英特尔。
注意不管是电脑CPU,还是数据中心CPU,英特尔的X86架构都占据了绝对的优势,在电脑CPU领域,几乎100%使用X86架构,而在数据中心服务器CPU领域,根据Trendforce在2021年8月的文章估计,使用ARM架构的服务器芯片只占到了整个市场的3%,其余97%仍然是X86芯片,并且认为至少在2023年之前,ARM芯片还无法和X86芯片抗衡。
X86架构占据优势其实就是两大原因,一是性能,二是软件生态,其中后者是更为重要的原因,不过全球公司在进入云时代之后,事情开始有了变化。目前全球云计算公司,全球最大的云计算公司亚马逊,以及也在做云的华为公司,都推出了自研的基于ARM架构的服务器芯片,如AWS的Graviton2、华为鲲鹏920等,试图通过低功耗优势的ARM架构在服务器芯片市场获得份额。
华为的鲲鹏920在获得了ARM V8的永久授权之后,目前在独立发展。在华为发布的《鲲鹏计算产业白皮书》里面,写明了鲲鹏处理器核、微架构和芯片均由华为自主研发设计,鲲鹏计算产业兼容全球Arm生态,二者共享生态资源,互相促进、共同发展,称之为鲲鹏生态。
目前阿里旗下的芯片公司平头哥也在2021年云栖大会上推出了自己的ARM架构芯片,在意料之中又在意料之外。
在意料之中,是因为阿里一向是国内自主研发做的比较好的企业之一,最典型的代表是全球第三、亚洲第一的云计算公司阿里云。阿里云可以说是国内最早提出去IOE的企业,从飞天操作系统到数据库都实现了自研,很好的支撑了每年的双十一流量高峰。
从软到硬,阿里的技术栈也开始延伸到最硬核的芯片领域。2018年云栖大会,阿里成立平头哥,正式宣告进入芯片领域。在外界,平头哥蜜獾的“人生信条”也不胫而走,尤其是那句“生死看淡,不服就干!”
2019年7月和9月,平头哥相继发布了玄铁910处理器和含光800芯片,前者是用于AIoT物联网终端场景,后者是用于阿里自家的云端服务器场景的AI芯片,含光800用于图像搜索(输入具有相同元素或主题内容的突破,在图片库查找相似或者相同的图片),场景识别(天空,草地,人物等),视频内容识别,自然语言处理等。
但实话实说,这两款产品并不能支撑起一家顶级芯片公司,可以说相比阿里在国内互联网企业界的地位,平头哥在芯片企业中还属于小辈级别,外界也不清楚阿里对于平头哥的发展究竟有多大的野心。
但2021年10月,阿里云栖大会发布的阿里首款服务器通用芯片,这个多少是让人觉得有点意外的,因为平头哥之前发布的IoT芯片和AI芯片,在整个行业来看很多中小公司都在做,并无特别出彩之处,而服务器芯片的研发难度是要高出一个等级的,整个行业几乎就是被英特尔和AMD统治, 国内目前仅有华为的鲲鹏芯片能够占有一定的份额,平头哥的加入,这无疑对中国芯片产业来说是个好消息,也可以看出平头哥在阿里云体系中承担了逐步实现芯片全栈自研的任务。
服务器芯片的设计为什么难?
服务器芯片之所以难,在于技术和生态都具有重重阻碍, 在技术上,通用CPU由于需要具备全面的性能,理论上专用芯片能做的事它都能做,因此在研发难度上就很大。
更何况英特尔的X86架构经过长期的发展,总体稳定而成熟,性能先进,在服务器芯片领域占据绝对的优势,要想研发X86架构的芯片,都需要获得英特尔的授权,而这是极为困难的事情。
AMD历史上能获得X86的授权,也是因为当年的电脑大客户IBM的多供应商要求,英特尔不能成为独家供应商,所以在1982年授权给AMD,不过后来英特尔又撤回了授权,因此两家还打了多年官司,形成如今的局面,到现在显然英特尔并不希望有更多竞争对手的进入。
而ARM架构的出现,使得在服务器芯片领域有了新玩家进入的希望,但是现今的服务器和电脑市场,由于英特尔的X86架构占据了压倒性的优势,因此下游的服务器和电脑品牌厂家也不得不考虑和忌惮英特尔的强势地位,毕竟英特尔能否供货,供多少货可以决定自己的出货量,这就造成了和智能手机市场不同的局面。
智能手机市场由于ARM架构的授权,苹果,华为,三星都有自研的SoC,而在个人电脑和服务器市场,没有哪个厂家自研通用CPU,一则无法获得英特尔授权,二则上游的英特尔在供货方面占据统治地位,理论上甚至可以说英特尔分配多少芯片给你,你就能制造出多少服务器和电脑。
ARM架构的出现,使得市场出现了希望,苹果推出了基于ARM架构的M1处理器,用于自己的Macbook笔记本上门,而在服务器领域,国内在华为之后,阿里也推出了基于ARM架构的服务器芯片,也是用于自家的服务器上。
可见,进入服务器芯片这个市场,不仅仅是需要技术上具备高水平,还需要有能与X86抗衡的新架构,同时还需要新进入厂家自己就有消耗芯片的能力,因此华为,阿里就成为极少数同时具备以上条件的国内厂家。
阿里这款芯片使用了2021年3月ARM发布的最新V9架构,采用5nm制程工艺,在云栖大会现场,阿里云还发布了基于该芯片的磐久服务器,这是阿里云首款全栈自研服务器,将在阿里云全球数据中心试验部署,通过阿里云向行业输送算力。
阿里云智能总裁张建锋表示:“倚天710是为云而生的芯片,也是阿里巴巴第一款通用芯片,它兼顾了性能和功耗的优势,可进一步降低云上企业的成本,目前,阿里云已经全面兼容x86、ARM及RISC-V等架构,我们可为客户提供多种云计算选择。”
阿里云是目前中国云计算市场最大的供应商,截至2021年6月30日的2022财年第一季度财报显示,该季度阿里云营收为160.51亿元,同比增长29%,营收主要由互联网、金融服务及零售行业客户收入的增长所推动。这充分说明了阿里做芯片的逻辑:它从不断变化的、增长的市场需求出发,驱动完成底层核心技术的演进。
新增一家具备通用芯片设计能力的公司,对中国芯片产业意味着什么?
而对于国内的互联网公司来说,加大了对于硬核科技的投入,也有利于增加硬核科技行业的高薪岗位数量,培养和训练更多的芯片类人才,这对整个社会也是有利的。
芯片设计这个行业,国内目前还非常缺乏巨头公司,相比高通、博通、英特尔、联发科、AMD、苹果、Nvidia这些巨头芯片设计公司,国内的芯片设计企业还处于小而散的阶段,都还没有到“大而不强”的阶段。而我们也可以看出,以上这些国际巨头,基本都具备很强的通用CPU的设计能力,以及占有大量的全球份额,具备雄厚的资本和技术实力。
在智能手机的SoC领域,国内主要就是海思麒麟和紫光展锐,而在服务器芯片的通用CPU领域,国内主要就只有海思鲲鹏,而拥有雄厚资金实力,以及自带不断增长的云服务器需求的阿里的入局服务器芯片,这相比之前平头哥发布的AI芯片和RISC-V处理器更向前了一步,无疑是件好事,阿里在这方面走出了第一步,这是一个进步。
希望更多的互联网企业加大对于硬核科技的投入,毕竟在真正的科技领域产生高薪工作岗位,这对整个社会产生的价值我认为是最高的。
相关问答
fpga 上市公司排名?1)紫光国芯——长江存储3DNAND;FPGA;2)中兴通讯——中兴微电子;3)国民技术——射频芯片;移动支付限域通信RCC技术;4)景嘉微——军用GPU(JM54...14)....
华为工具软件供应商?华为50家核心供应商名单:1、Foxconn(富士康):全球最大的电子产品代工厂,迄今在中国大陆、台湾、日本、东南亚及美洲、欧洲等地拥有200余家子公司和派驻机...