FPGA作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA设计不是简单的芯片研究,主要是利用 FPGA 的模式进行其他行业产品的设计。 与 ASIC 不同,FPGA在通信行业的应用比较广泛。
通过对全球FPGA产品市场以及相关供应商的分析,结合当前我国的实际情况以及国内领先的FPGA产品可以发现相关技术在未来的发展方向,对我国科技水平的全面提高具有非常重要的推动作用。
扩展资料:
工作原理
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。
现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。
FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。
FPGA由可配置逻辑块(CLB)与可编程互连相结合的网格构成。制造完成后,FPGA还可以重新编程,以满足特定的功能或应用需求。这一特性使FPGA有别于专用集成电路(ASIC)。后者是明确地为给定的目标而制定的,以后无法更改。虽然一次性可编程(OTP)FPGA是一种选择,但基于静态随机存取存储器(SRAM)的型号是最常见的,并且允许随着设计的变化而重新编程。输入/输出焊盘、可重新编程的互连和可编程逻辑模块组成了一个现场可编程门阵列。触发器或存储器模块可用作现场可编程门阵列逻辑模块中的存储器组件。逻辑块可以执行简单到复杂的计算操作。
现场可编程门阵列和可编程只读存储器芯片有许多相似之处。FPGA可以容纳数千个门阵列,这与可编程只读存储器芯片不同,可编程只读存储器芯片仅限于几百个门阵列。现场可编程门阵列是可重新编程的,而不是ASIC,ASIC是为专业作业而开发的。
计算机用户可以使用现场可编程门阵列自定义微处理器的功能,以满足特定的个性化需求。工程师使用FPGA来创建专用集成电路。晶圆功能的缺乏使得现场可编程门阵列的生命周期更具可预测性。其他优势包括潜在的重制、比其他解决方案更快的上市时间以及简单的设计周期。
FPGA用于许多行业和市场,包括无线通信、数据中心、汽车、医疗和航空航天。
FPGA中的芯片是完全可编程的,这是一个相当大的好处。通过这种方式,它可以变成一个相当大的逻辑电路,一个遵循设计的设置,但用户也可以根据需要进行更新以进行调整。换句话说,如果创建了一个电路卡或电路板,并且FPGA是电路的一个组件,则FPGA在创建过程中被编程,但随后可以重新编程以反映任何修改。
虽然第一批FPGA是在1980年代初推出的,但直到20世纪90年代末才开始流行起来。除了Altera、赛灵思和德州仪器等少数几家企业之外,他们并不为人所知。
ASIC(专用集成电路)用于创建对于常规CPU或GPU来说过于复杂的系统,作为ASIC(专用集成电路)的替代方案。
由于它们使用户能够以更低的成本和更低的功耗生产产品,因此FPGA仍然是当今技术中的一个突出主题。在网络和网络安全等其他应用中,它们也很有帮助。将其与传统微控制器进行比较,传统微控制器无法容纳更大的设计,这是一项相当大的进步。
例如,8051微控制器采用了哈佛设计和CISC指令集。FPGA没有这些内置指令集,这给了设计人员更多的自由度。尽管FPGA经常与高端计算相关联,但消费电子行业的使用也在增加。
现场可编程门阵列芯片已经在顶级显卡中包含许多功能。然而,它们比传统的视频卡更便宜,更耗电。它们还支持许多同步流,并且具有明显更快的吞吐量。因此,基于FPGA的图形卡在游戏机中越来越频繁地使用。
Verilog和VHDL只是FPGA使用的众多不同编程语言中的两种。1984年,硬件描述语言Verilog被创建。它可用于构建系统所需的任何类型的电路,并且是FPGA的设计标准。
另一种基于状态机对FPGA进行编程的常用语言是VHDL。它与Verilog不同,因为它包含更多功能,如数据类型和信号名称,这使得创建复杂电路和提高效率变得更加简单。定义了FPGA编程的语法和语法。
FPGA如何工作?
每个FPGA制造商都有其独特的架构规范。关键组件、原则和功能包括:
1.可配置的逻辑块
现场可编程门阵列的基本构建模块是CLB。它是一个逻辑单元,可以设置或编程以执行特定任务。连接块将连接到这些构建基块。这些组件包括携带和控制逻辑、晶体管对和查找表(LUT)。它们执行设计所需的逻辑操作。
可以使用基于逻辑的多路复用器或LUT来创建CLB。基于LUT的逻辑中的模块由D触发器,查找表和2:1多路复用器组成。多路复用器选择正确的输出。
2.可编程互连
位于不同逻辑块中的逻辑单元之间的所有独特连接都存在于现场可编程门阵列的这一区域中。包含多个基本半导体开关的开关盒通常用于实现互连。这些电气可编程链路为这些可编程逻辑模块提供了路径。
不同长度的线段可以沿着布线路径找到,并由电气可编程开关连接。FPGA密度由用于布线路径的器件数量决定。FPGA的单元或输入焊盘的输出可以连接到电路中的任何其他单元或焊盘,利用对每个现场可编程门阵列至关重要的可编程互连点。
3.可编程路由
可编程路由至关重要,因为它通常占结构表面的百分之五十以上以及应用程序的关键路由延迟。可编程布线由预制线段和预配置的开关组成。通过配置正确的开关组合,功能块的任何输出都可以链接到任何输入。现场可编程门阵列路由架构有两种基本类型。
设计本质上是分层的,高级组件实例化较低级别的模块并链接其中的信号,从而为可编程门阵列提供了动力。可编程门阵列可以使用连接芯片离散部分的短线来构建这些连接,因为在设计层次结构中靠近在一起的模块之间更频繁地进行通信。FPGA的密度和性能受到路由设计的影响。
4.可编程I/O模块
接口引脚用于将逻辑模块与外部组件连接起来。现场可编程门阵列和外部电路之间的接口是IOB(输入输出模块),这是一种可编程输入和输出器件,用于满足各种电气特性下输入/输出信号的驱动和匹配需求。I/O块将路由体系结构和CLB连接到外部元素。
在封装引脚和器件的底层电路之间,输入/输出模块提供可编程的单向或双向连接。实现应用需要从头开始构建电路,因为以前的现场可编程门阵列缺乏运行任何软件的处理器。因此,FPGA可能被编程为像OR门一样简单,或者像多核处理器一样复杂。
5.片上存储器
集成在FPGA逻辑块中的FFS是FPGA系统中片上存储元件的一种形式。尽管如此,随着现场可编程门阵列逻辑容量的提高,它被用于更广泛的系统中,这些系统几乎总是需要存储器来缓冲和重用芯片上的数据。由于构建由寄存器和LUT组成的大型RAM的密度比SRAM块低100倍左右,因此还需要具有更密集的片上存储。
此外,在现场可编程门阵列上实现的应用程序的RAM要求差异大不相同。
6.数字信号处理(DSP)模块
在运输链之前,商业现场可编程门阵列系统中使用的专用算术电路是加法器。
由于需要在利用LUT和携带链的软逻辑中加入乘法器,因此产生了严重的面积和延迟损失。由于用于现场可编程门阵列的高乘法器密度信号处理和通信应用具有相当大的市场份额,设计人员开发了新颖的实现来解决软逻辑乘法器实现效率低下的问题,这称为数字信号处理或DSP。
无乘法分布式算术技术是使用基于LUT的现场可编程门阵列创建高效有限脉冲响应(FIR)滤波器设计的一种方法。乘法器是FPGA系统中作为专用电路进行强化的主要候选者,因为它们在关键应用领域的现场可编程门阵列设计中普遍存在,并且在软逻辑中实现时尺寸、延迟和功耗都降低了。
7.系统级互连
DDR内存和以太网的兴起只是FPGA容量和带宽稳步增长的几个原因。管理这些高频端口和不断增长的结构之间的数据流量是一项挑战。这种系统级链路过去是通过设置特定的FPGA逻辑和路由元件来形成软总线来建立的,这些总线在必要的端点之间完成流水线,多路复用和布线。
更宽总线是匹配这些外部接口带宽的唯一方法,因为它们以比现场可编程门阵列结构更高的频率运行。由于大量和物理上很长的总线的组合,定时闭合具有挑战性,并且通常需要对总线进行相当大的流水线处理,从而增加了资源消耗。
现场可编程门阵列的应用
FPGA在各行各业都有广泛的应用,特别是在工业物联网(IoT)领域。它的一些关键应用领域:
1.能源行业案例研究
太阳能和风能等可再生能源越来越受欢迎。它们在智能电网中是可靠的,其中法规仍在建立中。输配电(T&D)变电站尤其需要高效的电力网络来实现智能电网的最佳运行。自动化需要持续监控、调节和保护电网的技术,以实现更有效的峰值需求负载管理。FPGA可以提高智能电网的性能和可扩展性,同时保持低功耗。
2.使用FPGA设计集成电路
必须首先创建此类电路的体系结构。然后,使用FPGA构建和测试原型,由于这种方法,错误是可以纠正的。一旦原型按预期执行,就会开发一个ASIC项目。这能够节省时间,因为创建集成电路可能是一项劳动密集型和复杂的操作。
此外,它还可以节省资金,因为可以使用单个FPGA来创建同一项目的大量修订版。值得注意的是,当前的张量处理单元(TPU)或加密货币矿工最初是作为FPGA开发的,直到那时它们才被生产出来。
3.汽车体验的改善
使用汽车芯片和IP实现车载信息娱乐、舒适性和便利性的解决方案。借助MicrosemiFPGA,车载原始设备制造商(OEM)和供应商可以开发创新的安全应用,如巡航控制、盲点警告和防撞。
FPGA供应商提供网络安全功能,包括信息保证、防篡改和硬件安全,以及纠错内存和低静态功耗等可靠性功能。由于其最小的泄漏和在低功耗环境中工作的能力,基于FPGA的存储可以提供低静态功耗。
4.支持实时系统
在实时系统中,当响应时间至关重要时,会使用FPGA。传统CPU的响应时间是不可预测的,因此无法准确估计一旦触发器触发,您将何时收到回复。采用实时操作系统将反应时间保持在预定范围内。
在需要快速响应时间的情况下,这是不够的。系统必须在FPGA中实现所需的方法,利用组合或顺序电路来解决这个问题并保证恒定的响应时间。一旦准备就绪,就可以使用FPGA更改这样的实时系统并将其投入生产。
5.航空航天和国防使用案例
为了满足恶劣环境的性能、可靠性和寿命要求,同时提供比传统ASIC实现更大的灵活性,工业制造公司提供了抗辐射可重构的FPGA,这些FPGA通常是空间级的。抗辐射可重构FPGA适用于处理密集型空间系统。
6.在通信和软件定义网络(SDN)中的应用
软件定义网络(SDN)和其他算法(如快速傅里叶变换(FFT))必须放入FPGA中,以便在复杂的实时环境中使用。无线电的标准组件包括用于接收和传输信号的天线,以及用于通过过滤、更改信号频率等来处理信号的网络硬件。
这种硬件无法从根本上改变它所要实现的功能。如今,此功能的很大一部分被转移到电子设备中,这通常是FPGA。模拟器件通常仅限于天线、ADC和DAC转换器。
7.数据中心和云中的FPGA
物联网(IoT)和大数据正在产生获取和处理的数据的指数级增长。这与通过 并行的多个操作的深度学习技术进行计算分析相结合,导致对低延迟,灵活和安全的计算能力的高需求。由于空间成本不断增加,无法通过添加更多服务器来解决。
由于FPGA能够加速处理,设计灵活性以及硬件对软件的安全性,数据中心世界的大门正在在很大程度上向他们敞开。
8.计算机视觉系统
在现代世界中,计算机视觉系统存在于许多小工具中。视频监控摄像机,机器人和其他设备就是这方面的例子。许多这些小工具通常需要基于FPGA的系统,以便它们能够根据人的位置,周围环境和面部识别功能,以有意义的方式与人进行行动和交互。要使用此功能,必须处理许多照片,其中大多数操作都是实时完成的,以检测物体,识别人脸等。
姓名:任佩怡 学号:19020100348 学院:电子工程学院
转自:https://blog.csdn.net/qq_18597483/article/details/106649227?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162849450116780357280058%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162849450116780357280058&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-29-106649227.first_rank_v2_pc_rank_v29&utm_term=FPGA&spm=1018.2226.3001.4187
【嵌牛导读】对于专业人士来说,FPGA并不陌生,它一直都被广泛使用。但是,大部分人还不是太了解它,对它有很多疑问——FPGA到底是什么?为什么要使用它?相比CPU、GPU、ASIC(专用芯片),FPGA有什么特点?……
【嵌牛鼻子】FPGA, CPU, GPU, ASIC
【嵌牛提问】FPGA, CPU, GPU, ASIC的区别及FPGA的过人之处
【嵌牛正文】
二、微软部署 FPGA 的实践
2016 年 9 月,《连线》(Wired)杂志发表了一篇《微软把未来押注在 FPGA 上》的报道 [3],讲述了 Catapult 项目的前世今生。
紧接着,Catapult 项目的老大 Doug Burger 在 Ignite 2016 大会上与微软 CEO Satya Nadella 一起做了 FPGA 加速机器翻译的演示。
演示的总计算能力是 103 万 T ops,也就是 1.03 Exa-op,相当于 10 万块顶级 GPU 计算卡。一块 FPGA(加上板上内存和网络接口等)的功耗大约是 30 W,仅增加了整个服务器功耗的十分之一。
Ignite 2016 上的演示:每秒 1 Exa-op (10^18) 的机器翻译运算能力
微软部署 FPGA 并不是一帆风顺的。 对于把 FPGA 部署在哪里这个问题,大致经历了三个阶段:
专用的 FPGA 集群,里面插满了 FPGA
每台机器一块 FPGA,采用专用网络连接
每台机器一块 FPGA,放在网卡和交换机之间,共享服务器网络
第一个阶段是专用集群,里面插满了 FPGA 加速卡,就像是一个 FPGA 组成的超级计算机。
在半导体行业,只要批量足够大,芯片的价格都将趋向于沙子的价格。
当然现在数据中心领域用两家公司 FPGA 的都有。 只要规模足够大,对 FPGA 价格过高的担心将是不必要的。
像超级计算机一样的部署方式,意味着有专门的一个机柜全是上图这种装了 24 块 FPGA 的服务器(下图左)。
这种方式有几个问题:
不同机器的 FPGA 之间无法通信,FPGA 所能处理问题的规模受限于单台服务器上 FPGA 的数量;
数据中心里的其他机器要把任务集中发到这个机柜,构成了 in-cast,网络延迟很难做到稳定。
FPGA 专用机柜构成了单点故障,只要它一坏,谁都别想加速了;
装 FPGA 的服务器是定制的,冷却、运维都增加了麻烦。
一种不那么激进的方式是,在每个机柜一面部署一台装满 FPGA 的服务器(上图中)。这避免了上述问题 (2)(3),但 (1)(4) 仍然没有解决。
第二个阶段,为了 保证数据中心中服务器的同构性 (这也是不用 ASIC 的一个重要原因),在每台服务器上插一块 FPGA(上图右),FPGA 之间通过专用网络连接。这也是微软在 ISCA'14 上所发表论文采用的部署方式。
红框是放 FPGA 的位置。
FPGA 采用 Stratix V D5,有 172K 个 ALM,2014 个 M20K 片上内存,1590 个 DSP。板上有一个 8GB DDR3-1333 内存,一个 PCIe Gen3 x8 接口,两个 10 Gbps 网络接口。一个机柜之间的 FPGA 采用专用网络连接,一组 10G 网口 8 个一组连成环,另一组 10G 网口 6 个一组连成环,不使用交换机。
这样一个 1632 台服务器、1632 块 FPGA 的集群,把 Bing 的搜索结果排序整体性能提高到了 2 倍(换言之,节省了一半的服务器)。
如下图所示,每 8 块 FPGA 穿成一条链,中间用前面提到的 10 Gbps 专用网线来通信。这 8 块 FPGA 各司其职,有的负责从文档中提取特征(黄色),有的负责计算特征表达式(绿色),有的负责计算文档的得分(红色)。
FPGA 在 Bing 的部署取得了成功,Catapult 项目继续在公司内扩张。
微软内部拥有最多服务器的,就是云计算 Azure 部门了。
Azure 部门急需解决的问题是网络和存储虚拟化带来的开销。Azure 把虚拟机卖给客户,需要给虚拟机的网络提供防火墙、负载均衡、隧道、NAT 等网络功能。由于云存储的物理存储跟计算节点是分离的,需要把数据从存储节点通过网络搬运过来,还要进行压缩和加密。
在 1 Gbps 网络和机械硬盘的时代,网络和存储虚拟化的 CPU 开销不值一提。随着网络和存储速度越来越快,网络上了 40 Gbps,一块 SSD 的吞吐量也能到 1 GB/s,CPU 渐渐变得力不从心了。
例如 Hyper-V 虚拟交换机只能处理 25 Gbps 左右的流量,不能达到 40 Gbps 线速,当数据包较小时性能更差;AES-256 加密和 SHA-1 签名,每个 CPU 核只能处理 100 MB/s,只是一块 SSD 吞吐量的十分之一。
为了加速网络功能和存储虚拟化,微软把 FPGA 部署在网卡和交换机之间 。
如下图所示,每个 FPGA 有一个 4 GB DDR3-1333 DRAM,通过两个 PCIe Gen3 x8 接口连接到一个 CPU socket(物理上是 PCIe Gen3 x16 接口,因为 FPGA 没有 x16 的硬核,逻辑上当成两个 x8 的用)。物理网卡(NIC)就是普通的 40 Gbps 网卡,仅用于宿主机与网络之间的通信。
FPGA(SmartNIC)对每个虚拟机虚拟出一块网卡,虚拟机通过 SR-IOV 直接访问这块虚拟网卡。原本在虚拟交换机里面的数据平面功能被移到了 FPGA 里面,虚拟机收发网络数据包均不需要 CPU 参与,也不需要经过物理网卡(NIC)。这样不仅节约了可用于出售的 CPU 资源,还 提高了虚拟机的网络性能(25 Gbps),把同数据中心虚拟机之间的网络延迟降低了 10 倍。
这就是微软部署 FPGA 的第三代架构,也是目前「每台服务器一块 FPGA」大规模部署所采用的架构。
FPGA 复用主机网络的初心是加速网络和存储,更深远的影响则是把 FPGA 之间的网络连接扩展到了整个数据中心的规模 ,做成真正 cloud-scale 的「超级计算机」。
第二代架构里面,FPGA 之间的网络连接局限于同一个机架以内,FPGA 之间专网互联的方式很难扩大规模,通过 CPU 来转发则开销太高。
第三代架构中,FPGA 之间通过 LTL (Lightweight Transport Layer) 通信。同一机架内延迟在 3 微秒以内;8 微秒以内可达 1000 块 FPGA;20 微秒可达同一数据中心的所有 FPGA。第二代架构尽管 8 台机器以内的延迟更低,但只能通过网络访问 48 块 FPGA。为了支持大范围的 FPGA 间通信,第三代架构中的 LTL 还支持 PFC 流控协议和 DCQCN 拥塞控制协议。
通过高带宽、低延迟的网络互联的 FPGA 构成了介于网络交换层和传统服务器软件之间的数据中心加速平面。
除了每台提供云服务的服务器都需要的网络和存储虚拟化加速,FPGA 上的剩余资源还可以用来加速 Bing 搜索、深度神经网络(DNN)等计算任务。
对很多类型的应用,随着分布式 FPGA 加速器的规模扩大,其性能提升是超线性的。
例如 CNN inference,当只用一块 FPGA 的时候,由于片上内存不足以放下整个模型,需要不断访问 DRAM 中的模型权重,性能瓶颈在 DRAM;如果 FPGA 的数量足够多,每块 FPGA 负责模型中的一层或者一层中的若干个特征,使得模型权重完全载入片上内存,就消除了 DRAM 的性能瓶颈,完全发挥出 FPGA 计算单元的性能。
当然,拆得过细也会导致通信开销的增加。 把任务拆分到分布式 FPGA 集群的关键在于平衡计算和通信。
在 MICRO'16 会议上,微软提出了 Hardware as a Service (HaaS) 的概念,即把硬件作为一种可调度的云服务,使得 FPGA 服务的集中调度、管理和大规模部署成为可能。
从第一代装满 FPGA 的专用服务器集群,到第二代通过专网连接的 FPGA 加速卡集群,到目前复用数据中心网络的大规模 FPGA 云,三个思想指导我们的路线:
硬件和软件不是相互取代的关系,而是合作的关系;
必须具备灵活性,即用软件定义的能力;
必须具备可扩放性(scalability)。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)