【人工智能系列 - 智能硬件 - 06】演化硬件的实现平台

可编程逻辑器件是演化硬件得以实现的物理基础,它的特点在于器件本身所具有的可重构性,其内部结构能够由下载到器件的二进制位流来决定,通过改变其位流就可以实现某种特定的硬件功能结构,从而硬件结构的设计问题能够转化为在位流空间中搜索合适的位流。

演化硬件有效地利用了这一特性,将可编程逻辑器件的位流作为演化算法的染色体,并使用适应度函数表示与所需要的硬件功能的接近程度,则通过演化计算过程,演化硬件可以找到适应度最佳的结构位串,进而自动改变自身结构最终实现所需要的硬件功能。

由于演化过程具有随机性,进化次数较多,从而要求相应的器件也要能够被反复配置,因此能够无穷次进行重复配置的现场可编程门阵列(FPGA,Field Programmable Gate Array)也就成为当前比较理想的实现器件,目前FPGA器件已经为大多数的演化硬件所采用。

可编程逻辑器件的结构及特点

可编程逻辑器件是能够通过编程改变其内部逻辑门的连接关系的集成电路芯片。

可编程逻辑器件的构成部分主要包括:两个逻辑门阵列、输入缓冲电路、输出电路。两个逻辑门阵列是器件的核心部分,由“与”(AND)和“或”(OR)两个阵列组成,经由外部端口输入到器件之中的信号要首先通过“与”阵列产生乘积项,然后送入到“或”阵列产生乘积项之和形式的函数。

输入缓冲电路用来生成输入变量的原变量和反变量。输出电路可以是组合输出、时序输出或者可编程输出结构。

早期的可编程逻辑器件包括可编程只读存储器(PROM)、可编程逻辑阵列(PLA)、通用阵列逻辑(GAL)和可编程阵列逻辑(PAL)。

可编程只读存储器(PROM)的内部结构组成是固定的“与”阵列及其输出和可编程的“或”阵列,如下图所示,图中“·”代表连接固定,“×”代表连接可编程。

由于PROM的“与”阵列是固定的,输入信号的每种可能的组合都是已经连接好的,所以其适用于要求小数量输入和许多组合项的逻辑应用,如随机逻辑转换、编码/译码器、查找表和分布算法等。

在PROM中,其规模随输入数量的增加按2n指数增长,随着输入信号个数n的增加,阵列会越来越大,无用的输入组合会较多,以致于大大降低其存储单元的利用率。

【人工智能系列 - 智能硬件 - 06】演化硬件的实现平台_第1张图片

可编程逻辑阵列(PLA)具有可编程的的“与”阵列和可编程的“或”阵列,其结构如下图所示。

由于其内部结构都是可编程的,使得PLA在可编程逻辑器件中成为了具有最高灵活性的器件。

可编程“与”阵列的存在,使得需要包含的输入信号的组合仅仅是逻辑功能中实际要求的部分组合。

这样,在PROM中由于输入信号增加而导致器件规模呈指数地增大的问题在PLA中得以缓解。

对于复杂的随机逻辑转换功能如算术累加逻辑单元(ALU)和数据通道控制等,PLA是很理想的实现器件。

然而,也正是因为两个阵列都是可编程的,运行速度的下降成为使用PLA时不可避免的一个缺陷,从而在一定程度上限制了PLA的应用。

【人工智能系列 - 智能硬件 - 06】演化硬件的实现平台_第2张图片

可编程阵列逻辑(PAL)由一个可编程“与”阵列及其输出加到一个固定的“或”阵列组成,其结构如下图所示。

“与”阵列可编程、“或”阵列固定的内部结构使得各个逻辑函数输出化简时不用考虑公共乘积项,并且送到“或”阵列的乘积项也是固定的,简化了设计算法,在一定程度上提高了运行速度。

【人工智能系列 - 智能硬件 - 06】演化硬件的实现平台_第3张图片

通用阵列逻辑(GAL)沿用了PAL“与”阵列可编程、“或”阵列固定的结构,并且改进了PAL输出的I/O结构,在输出部分增加了输出逻辑宏单元(OLMC,Output Logic Macro Cell),使得可以对输出方式进行配置。

同时GAL所具有的可重复编程特性为硬件演化提供了方便。

当前在演化硬件领域中使用较为广泛的是现场可编程门阵列(FPGA),它的结构由逻辑功能块排列成阵列组成,通过可编程的内部连线连接这些逻辑功能块来实现不同的设计,在器件的选择和内连上具有更大的自由度。

FPGA的内部结构主要由三部分组成:可编程逻辑模块(CLB,Configurable Logic Block)、可编程I/O模块(IOB,I/O Block)、可编程布线资源,其结构如下图所示。

由内部逻辑块阵列及其周围的输入输出模块所组成的逻辑单元阵列(LCA,Logic Cell Array)是FPGA器件的核心部分。

排成阵列的逻辑单元由布线通道中的可编程内连线连接,通过修改一根或多根内连线的布线来进行编程,便可实现FPGA的相应逻辑功能。

【人工智能系列 - 智能硬件 - 06】演化硬件的实现平台_第4张图片

FPGA具有LSI/VLSI门阵列技术的高逻辑密度性和通用性,同时还兼备了可重复编程逻辑器件的用户编程特性,在相应配套的系统设计软件和开发软件的支持下,使用FPGA在很短的时间内即可以实现包含数千逻辑门的数字系统。

考虑到其所具有的内部资源优势,以及适合实现多级逻辑单元结构的特性,FPGA是目前用来实现小型化、集成化、高可靠电路的最理想的门级(gate level)演化硬件。

FPGA的可重构特性

系统重构可分为静态重构和动态重构。

静态重构是指在外部逻辑的控制下,FPGA芯片通过对存储在存储器中的不同的系统数据的重新下载来实现芯片逻辑功能的变化,即目标系统逻辑功能的静态重载。

动态重构是指对于时序变化的数字逻辑系统,通过对具有专门缓存逻辑资源的FPGA进行局部或者全局的芯片逻辑动态修改来快速地实现其时序的发生。

FPGA的动态可重构特性是指在一定条件下基于SRAM编程和专门结构的FPGA同时具有在系统重新配置电路功能以及动态重构电路逻辑的能力。

对于常规SRAM编程的FPGA,重新配置芯片功能所需要的时间大约为数毫秒至数十毫秒量级。

另外,由于在数据重新配置过程中,旧逻辑功能消失,新逻辑功能尚未建立,系统功能无法实现动态连续,因此其只能用于实现静态系统功能重构。

与前者不同,在器件编程结构上,动态可重构FPGA可以通过读取不同的SRAM的位数据来直接实现内部逻辑块和连线的改变,以此种方式实现的系统逻辑功能重建所需要的时间在纳秒量级,有助于实现系统功能的动态连续性。

动态部分重构特性是指在系统运行过程中实时改变硬件的配置,实现系统部分功能的改变,同时又不影响系统其余部分的工作状况,以使系统能够在不同的时刻完成不同的功能。

在演化过程中,FPGA的动态部分重构特性可以节约大量的硬件资源,增强系统灵活性,有助于保证内部演化的快速实时性。

Xilinx Virtex FPGAs简介

随着FPGA的发展,在演化硬件研究领域中所使用的主要是Xilinx公司的FPGA芯片。

Virtex系列的FPGA芯片相比普通的FPGA芯片,具有更多的扩展功能以及快速的可重构能力。

Xinlinx公司所推出的Virtex系列FPGA芯片是一种基于查找表(LUT,Look Up Table)结构的可编程逻辑器件,能够实现在线编程。

该器件的主要组成部分包括CLBs、IOBs、BRAMs、可编程布线资源(Programmable Routing Sorces)和可配置电路(Configuration Circuitry),其结构如下图所示。

【人工智能系列 - 智能硬件 - 06】演化硬件的实现平台_第5张图片

CLBs是器件的主要构造块,包含有门级的可编程逻辑电路资源、触发器资源以及综合布线资源等。

每个CLB由两个切片(Slice)、输入输出选择器以及布线资源组成,其中Slice是CLB功能实现的关键,每个Slice的主要组成部分包括F-LUT、G-LUT、X触发器、Y触发器和快速进位逻辑,其结构如下图所示。

【人工智能系列 - 智能硬件 - 06】演化硬件的实现平台_第6张图片

LUT能够用来构建实现门级的组合逻辑电路以及小规模的存储器结构,触发器资源可以用来建立状态机,而快速进位逻辑则可以实现算术运算。

BRAMs位于CLBs的左右两侧,其每一个端口都允许被独立配置为一个读出端口、一个写入端口或者一个双向读/写端口,以实现数据的同步或异步存储。

而IOBs环绕在CLBs的四周,为芯片提供了引脚与CLBs之间的接口,每个IOB都包含有三个寄存单元,其中所包含的寄存器可以被用作D触发器或者锁存器。

Virtex系列的FPGA芯片通过片内存储器中所存放的程序实现其工作状态的设定。

在确定了实现电路的设计描述后,使用相应的开发软件将设计方案编译成数据流配置文件,然后将决定电路逻辑关系的配置文件下载到片内的存储器中。

由于系统加电后,读取片内的配置文件实现所设计的电路逻辑结构,而掉电后,芯片又再次恢复为白片,内部电路逻辑结构消失,这使得器件能够被反复使用,并且对于不同的数据流配置文件的输入能够实现不同的硬件系统,这一特性是Virtex系列FPGA芯片适合于演化硬件研究的一个重要因素。

另一方面,由于大多数的FPGA芯片的位流配置结构是不公开的,这使得在演化硬件的研究过程中实现对FPGA芯片位流进行直接的操作变得很不方便。

而Xilinx公司为Virtex系列FPGA芯片所专门开发的JBits API专用接口恰恰解决了这一难题,该接口的发展向用户开放了Virtex系列FPGA芯片的配置位流。

通过使用JBits API专用接口,设计者可以绕过逻辑综合和物理实现的步骤,实现快速的位流配置,它为设计实现基于FPGA的高效实时的可重配置电路结构提供了必要的工具。

与ASICs相比,完全能够通过使用JBits API在FPGA芯片中创建出更高性能的并且可以实时重配置的电路结构。

JBits API专用接口的出现使得用户具有了对芯片位流进行直接操作的权限,能够通过改变位流文件从而控制芯片内部结构的变化,以实现所需要的功能,这为演化硬件的研究提供了极大的便利。

你可能感兴趣的