可重构技术的研究.docx
- 文档编号:19000708
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:15
- 大小:338.76KB
可重构技术的研究.docx
《可重构技术的研究.docx》由会员分享,可在线阅读,更多相关《可重构技术的研究.docx(15页珍藏版)》请在冰豆网上搜索。
可重构技术的研究
可重构技术的研究
一绪论
长期以来,人们使用两种方法来实现电子系统中的计算:
一种是使用专用集成电路(ApplicationSpecificIntegratedCircuits,ASIC),另一种是使用通用处理器。
ASIC器件具有速度快,可靠性高的特点,但是,它缺乏灵活性,一旦设计制造完成,就只能支持某个或者某类固定的算法。
同时ASIC的设计流程复杂,随着集成电路(IntegratedCircuits,IC)工艺的发展,IC集成度不断提高,系统复杂度呈指数级增长,系统出错的可能性也在增加,势必需要花大量时间和资金用于系统验证和测试,这都会带来设计周期的延长和研发成本的增加。
通用处理器采用指令驱动方式,通过软件来实现算法。
这种方法具有灵活、开发周期短、成本低的特点。
算法改变时,只需重新编写程序,然后编译执行,硬件不需要改动,但这种方法也存在速度慢,效率低的缺点,采用软件方法,很可能需要执行多条指令才能完成一个ASIC电路的操作,对于实时性要求高的应用,软件的方法难以满足要求。
自20世纪80年代中期Xilinx公司推出其第一款现场可编程门阵列(FieldProgrammableGateArrays,FPGA)以来,另一种实现计算的手段——可重构计算技术逐渐受到人们的重视。
可重构硬件可以通过改变内部配置实现不同算法,它既有接近于ASIC的速度,也有接近于通用可编程处理器的灵活性,是灵活性和速度之间的一个折中。
最早的可重构计算机出现在20世纪60年代早期,是由UCLA大学(UniversityofCaliforniaatLosAngeles)的GeraldEstrin提出并设计实现的固定+可变结构计算机(FixedPlusVariable/F+VStructureComputer)Error!
Referencesourcenotfound.,其核心是一个不可更改的可编程处理器和一个可更改的数字逻辑组件。
F+V体系结构及其软件系统成为现代可重构计算系统原型。
限于当时的技术条件,Estrin只实现了一个粗糙的原型系统,但这种结构奠定了以后可重构计算系统的核心基础。
随着微电子技术的进步,尤其是可编程器件按照摩尔定律Error!
Referencesourcenotfound.在容量上不断增大,性能不断提高,以及电子设计自动化(ElectronicDesignAutomation,EDA)技术的发展,可重构计算技术逐渐投入实际应用,由原型系统演变为实际应用系统,并在各种应用场合表现出优越性能。
作为可重构计算的关键技术,早期FPGA的成功应用当属ASIC逻辑仿真。
可重构计算技术在高性能计算领域一个成功应用例子是Splash2,在遗传学方面基因组分析的应用中,它比当时的SPARC10工作站的运算速度整整快了2500倍;若做灰度图像的中值滤波器,则比SPARC10快几乎140倍。
在近年的研究中,可重构计算技术在媒体处理,信息安全,通信等计算密集的应用领域得到了广泛应用。
表一是可重构计算系统,通用处理器和ASIC器件在实现算法时,各方面的特性比较。
由表一可见,可重构系统填补了传统软硬件之间的鸿沟,兼具有硬件系统的高性能和软件的灵活性,为计算任务的实现提供了新的选择方案。
表Error!
Notextofspecifiedstyleindocument.1ASIC,可重构系统与通用处理器特性比较
特性
ASIC
(单核)通用处理器
可重构系统
速度
快
慢
较快
并行性
可充分利用算法的并行性
只能实现指令级并行
可充分利用算法的并行性
资源消耗
随应用而变化
不变
不变
开发难易
难,周期长
易,周期短
开发周期短,难度介于ASIC与通用处理器之间
一次性投入成本
高
低
低
可升级性
无
有
表一
有
由此可见,可重构系统现比与其他的ASIC系统和通用的处理器系统,具有它自己独特的优势,在某些专用领域可以发挥巨大的作用。
二基于FPGA的可重构
可重构计算基于现场可编程门阵列,即FPGA,可以这样认为,FPGA技术的发展,推动了可重构技术的发展,而可重构技术的进展和需求,也促进了FPGA技术的进步。
FPGA是PLD与ASIC两种技术相结合而产生的成果。
PLD源于PROM,在PROM中附加了一个多功能的PAL,使得PROM有更多的输入并内含嵌入式寄存器,当这类器件的功能不断增长,就演变而成现在的FPGA。
有关FPGA的技术特性是多方面的,但从体系结构角度来考虑,三个特性是我们最为关心的:
①如何通过编程的方法,使得它适应于特定任务的需求;②特定任务中包含了哪些FPGA中的器件;③FPGA内各器件间是如何互连的,以下我们分别讨论这3个问题。
编程技术
可重构计算的概念早在20世纪60年代就已提出。
在通用微处理器上也运用了这一思想,如组件就是利用多路选择器来实现功能的变化。
而这些组件一般与计算结构不发生直接联系。
当前意义的可重构计算有较大发展,主要目标是希望通过硬件可编程,来自适应计算任务的需求,以期达到最佳性能,而且这种硬件结构的变化,能实时地适应计算任务要求的变化。
可重构计算的低层技术是FPGA编程技术。
FPGA的编程技术主要有两种,一种是反熔丝技术,即我们通常所说的电可擦写技术。
这种技术在早期的PAL中广泛使用,但不适应于我们现在讨论的可重构计算。
因为这种技术的可重构实时性太差。
另一种是基于静态存储器(SRAM)可编程原理的FPGA编程技术,其基本原理是:
FPGA中各部件之间由类SRAM(由于这里的SRAM不具备一般SRAM中的随机存取功能,所以我们把它称之为类SRAM)相接,部件间的连接关系,通过对SRAM编程便可实现应用的需求。
这样,FPGA硬件可编程,就如同一般SRAM的可编程。
需要特别指出的是,FPGA的可编程实现运用了静态存储器的基本原理,但实质与通常意义上的可编程是完全不一样的,例如,考虑一个信号处理系统,像这样的系统一般需要大量的不同算法,如傅立叶变换,Z变换,各种滤波器等,而每一种算法可能运行不同的字长。
当使用通用处理器求解这些问题时,设计上一般采用折衷方案,而采用基于FPGA的可重构技术,则可根据字长与算法的需要,实时地自适应地改变硬件结构,使得其性能逼近或者完全达到ASIC水平。
逻辑模块
自从20世纪八十年代引入FPGA以来,关于阵列中应该采用何种结构,一直就有很强烈的争论。
研究的结果有像类PAL产品阵列、混合多功能、最基本的NAND和XOR门电路等,也出现一些类似结构的商业化产品。
典型的FPGAs基本模块如图一所示,由一个D触发器,一个快速的进位逻辑,一个四变量函数器等基本电路构成,其中四变量函数器用于组合逻辑的实现,D触发器则可用于构造如寄存器、存储器、流水线、有限自动机等时序逻辑的实现,进位逻辑则主要用于构造算术运算逻辑。
图:
典型的逻辑模块
除了图所示的逻辑模块,实际的FPGA中还有其他结构的逻辑模块。
图所示为Xilinx公司生产的Silinx6200系列基本逻辑模块。
该模块实现一个三变量函数另加一个D触发器,这种结构的逻辑模块,我们称之为细粒度模块。
Altera公司生产的AlteraFLEX10k系列,其逻辑模块也属细粒度,但比Xil2inx6200系列粗些。
其模块结构类似于图一所示,有一个四变量函数,一个D触发器,再附加一个进位链电路,以帮助加速加法、奇偶校验及其他链表操作运算,此类结构的FPGA在密码及图像处理方面得到广泛应用。
细粒度的逻辑模块结构还适应用数据宽度变化的计算结构,利用这一特性,当可重构系统作为一个主机系统的补充时,能有效地弥补以通用处理器为核心的主机系统字长确定的不足。
图:
Xilinx6200系列基本逻辑模块
许多可重构系统使用的一类模块,我们称之为中等粒度的模块。
中粒度逻辑模块也可像细粒度模块一样,实现位宽变化的数据通道电路。
但由于它具备执行更多输入的复杂操作,中粒度结构在实现更广泛的多样操作,比细粒度更为有效。
大粒度结构主要用于字宽数据通道电路的实现。
由于设计时针对大的操作进行了优化,因此它在以字宽为单位的操作方面,能获得比中、小粒度结构的电路更快的速度,同时也比中小粒度的组合更节省芯片面积。
但由于大粒度结构是一种静态结果,它无法按操作数的大小变化进行优化,因此,在执行位操作或字长变化的操作,则效率比中小粒度的差。
路由资源
当FPGAs中的基本逻辑模块确定后,模块间的互连技术至关重要,因为它直接关系可重构系统的具体实现。
这种用于FPGAs中模块间互连的电路资源,称之为路由资源。
对路由资源的研究,如同对逻辑模块的研究一样,也是FPGAs内部结构研究的主要问题之一,人们在这方面研究投入的代价不比逻辑模块少。
FPGA的路由结构如图所示,各个逻辑模块通过连接模块互联起来,而连接模块又通过交换部件互联。
图:
FPGA的路由结构
目前有两种提供局部和全局路由资源的方法。
第一种方法如图所示,称之分段路由法,该方法的主要特点是局部用短线连接,全局则通过内置交换模块,以交换方式来实现全局路由,同时也布置了少量的全局连接,使得如时钟复位等信号能直接到达相关模块而不经过交换,从而提高效率。
图:
分段路由方法结构图
第二种是分层路由方法,如图所示。
该方法的基本特点是,各模块群内的路由为局部级,仅用于群内相连,在各群的边界,由长线连接不同的群。
当系统重构进行路由选择时,尽可能让大多数通信在本地级(或群内)完成,仅有限的通信要进行长距离通信,因此,设计时群内的路由数量远大于群之间的路由数量。
图:
分层路由方法结构图
由于路由占据了可重构器件的大部分芯片面积,因此,路由方法是必须认真考虑的。
分层路由方法的群间通信可以是导线直接连通,也可以是通过交换方法连通。
分析表明,后一种方法更好。
三可重构技术的应用
基于可重构计算机的操作系统
由于基于FPGA的可重构计算机在某些方面的优势,使得它们在很多领域,诸如生物信息,语音识别和终端数字信号处理等有很大的用处。
但是,由于缺少通用的操作系统的支持,阻碍了可重构计算机的发展。
在这种情形下,BORTH应运而生。
它是基于LINUX的操作系统,且在内核里增加了对FPGA等可重构资源的支持。
因此,用户可以就像对待软件进程一样处理可重构资源。
通过虚拟文件机制,可以使得“硬件进程”和“软件进程”之间进行相互的通信。
这样,就大大的提高了编程接口的友好性,使得以前的软件程序员也可以轻松的进行硬件方面的开发。
硬件进程
BORTH系统的一大特色就是将动态的FPGA的设计当作一般的操作系统的进程。
BORTH支持一种叫做BOF(BorthObjectFile)的文件结构,如图所示。
在BOF文件中,封装了对FPGA的配置数据。
图BORTH文件的结构
用户通过执行BOF文件,启动一个硬件进程,就像系统执行其他的软件进程一样。
BOF文件一运行,系统就读取该文件中封装的FPGA配置数据。
根据这些数据,系统就选择相应的可重构模块进行配置,并对系统中相关的数据进行跟新,例如进程表。
之后,FPGA硬件进程便开始运行。
一个运行中的硬件进程与普通的软件进程无异。
用户可以通过ps命令检查它的状态,通过kill命令终结这个进程等。
由于有了内核的支持,软件进程中的fork和exec等系统调用也可以启动硬件进程。
同样的,硬件进程也可以通过像操作系统传递消息来启动软件进程。
因此,在以软件为主的程序中,可以通过启动硬件进程,执行一些专用领域的计算来提高程序效率。
以硬件为主的程序中也可以启动软件进程来增加程序的灵活性。
甚至,操作系统还允许系统中的硬件进程和软件进程进行通信,这种通信采用的是网络程序中常见的服务器/客户端的模式。
设计到硬件进程的通信
BORTH系统扩展了通用Linux系统的/proc目录,在里面包含了硬件进程的相关信息。
对于每个运行中的硬件进程,系统都有一个/proc/
该目录通常包含了下列文件:
Øhw_region:
包含了该硬件进程的相关硬件位置信息
Øioreg_mode:
包含ioreg文件模式的信息
Øioreg:
是一个子目录,包含一些虚拟文件。
读取或写入ioreg目录中的这些虚拟文件,会经由操作系统转换成对相应模块的对应操作。
每个ioreg文件都有下列属性:
名称、访问权限、大小和物理位置标识符。
在BORTH系统中,定义了统一的一种消息格式,所有发送给FPGA的消息都采用这种格式。
这些消息通过一种标准消息传递系统传递给FPGA。
消息的格式如图所示。
系统中有一个内核进程,mkd,负责处理所有FPGA的中断和传递给它的消息。
图BORTH系统中用于传递给FPGA的消息格式
若用户读取某个ioreg文件,则系统会将其转换成读取该ioreg对应的FPGA的文件的读取的消息。
为了和通用Linux系统统一,从FPGA返回的值会直接返回给用户进程。
若是软件进程需要和硬件进程,则可以通过操作ioreg文件,有系统产生相应的消息发送给FPGA。
若硬件进程需要和软件进程通信,则产生一个中断,内核进程mkd检测到该中断以后,则通知相应的软件进程。
硬件/硬件进程通信也以此方式来进行。
因此,利用ioreg虚拟文件和消息机制,则可以很好的实现进程之间的通信,而不必去注意是硬件进程或是软件进程,这一切对用户都是透明的。
标准输入/输出
一般的软件开发者都喜欢通过非常友好的系统提供的标准输入/输出与计算机进行交互。
BORTH系统也为硬件进程提供了这样的标准输入/输出,通过标准消息传递机制来实现。
因此,硬件进程也可以像软件进程一样非常容易的调试,而只需要一条printf语句,将调试信息输出到屏幕。
文件输入/输出
利用上述所述的消息机制,BORTH系统实现了硬件进程的文件输入/输出。
系统提供了一个内核进程,fringe,用来控制FPGA的文件输入/输出。
当收到某个FPGA发送过来的数据包时,内核进程mkd就被唤醒,mkd被唤醒以后,它又会唤醒fringe进程。
fringe然后读取数据,在必要的时候,fringe会被阻塞。
基于FPGA的可重构自动修复系统
一般的容错系统和自我修复系统是通过备份冗余的资源(例如多余的芯片,阵列等),并且通过认为的进行可重构的配置来实现。
由于FPGA可以利用可重构的逻辑模块和路由信息,因此它在制造容错系统和自我修复系统方面有重大的作用。
一般的容错系统的实现机制是通过替换出错的模块,可重构的容错系统则是通过重构相应的模块来实现。
下面简要介绍两种可重构的自动修复系统。
双FPGA框架体系结构
双FPGA框架具有错误检测能力和自动修复的功能,这些操作都是在不需要人为干预的情况下执行的。
图为双FPGA框架体系结构的图示。
如图所示,该体系结构包括两个具有可重构能力的FPGA芯片。
除此以外,每个模块还有一个微控制器,整个体系结构都是可重构的。
这个体系结构有如下的特点:
Ø为可重构系统提供柔性机制(flexibility)
Ø具备错误检测功能,能保障较好的数据完整性,保护系统从软件或者硬件错误中恢复过来
Ø内置错误恢复功能
Ø支持错误检测、恢复等功能,且不需要额外干预
在双FPGA框架的体系结构里,要求每个FPGA的控制器都能控制对方的FPGA,而不仅仅是自己的FPGA,这样才能提供有保障的服务。
在FPGA上运行的可信任的程序应当具有以下特征:
Ø程序中的错误检测能力
Ø临时错误恢复。
这种临时错误可能会影响FPGA的配置位、内部的寄存器和状态位等。
Ø固定错误修复技术。
Ø固定错误定位。
Ø可靠的FPGA间的通信。
可信任的系统必须提供FPGA通信的容错性,也必须具有检测输入/输出错误和从其中恢复的能力。
Ø可靠的存储系统
Ø可靠的、可重构的总线。
当总线出现错误以后,系统也必须要有自动恢复的能力
下面简要介绍一下系统的临时错误恢复技术和固定错误恢复技术。
每个FPGA上的微控制器都需要将换双方的错误信息,交换信息的方式可以是看门狗程序,或者发送“心跳信号”(heartbeatsignal,既按照固定的频率发送信号)等。
控制器也要管理自己FPGA上的错误信息。
由于临时错误的特性,不是所有的都需要控制器进行恢复。
系统可以采用例如冗余,回滚等方式进行恢复。
但如果系统的FPGA的配置位出现错误的话,用这些措施就不能够奏效。
系统需要采取特别的方法,就是通过读出机制(readoutmechanism)和控制器。
当恢复了一个临时错误以后,系统会尝试从上次的监测点(checkpoint)开始运行,如果再次出现错误,则很有可能不是出现了临时错误,而是固定错误,既硬件出了问题,那么系统就启动固定错误恢复程序。
当FPGA1出现了固定错误,FPGA2上的微控制检测到了以后,则其启动固定错误恢复程序,它首先执行错误定位,找到错误的部分,然后,在存储器中储存的预设的FPGA配置参数被读取出来,FPGA1通过这个配置参数进行恢复。
基于冗余的可重构的BISH方法
下面简要介绍一种新的内置的自动修复的方法(built-inself-healingmethodology),这种方法也是基于FPGA的。
与上面一节所述的类似,在这种方法中,FPGA中也内置了一个微控制器,它负责管理和执行BISH程序。
与其他的自动修复的步骤类似,首先进行错误检测和定位,然后进行修复,在修复的过程中,利用到了FPGA的可重构特性。
这种BISH方法是利用硬件冗余实现的。
(1)硬件冗余技术
一般的可信任的计算系统都是通过模块的冗余来保证它的可靠性,其中一种比较有名的方法是TMR方法(TripleModularRedundancy)。
这种方法不需要进行错误检测,是一种静态的冗余技术。
这种方法中,每个模块都冗余了三次,一个投票系统(votingsystem)搜集每个冗余的输出,然后该系统选择输出结果较多的输出作为最后的结果。
但是这种方法有很大的弊端,因为输出最多的结果不一定就是正确的结果。
不过这种TMR的方法可以通过冗余这种系统得到解决,例如T-TMR方法。
很明显,冗余可以提高系统的可靠性。
可重构技术结合冗余技术,可以在不需要外界干预的情况下实现错误模块的替换,进而实现系统修复。
这些对用户来说都是透明的,因为系统利用冗余的模块替换了错误模块,从而不需要认为的更换。
这些机制,就保证了系统的可靠性。
(2)BISH方法
该方法分成三个部分:
检测,诊断,修复。
这些步骤都由内置在FPGA中的控制器来执行。
错误检测的实现机制是这样的:
每隔固定的时间,一条扫面链就会用来搜集模块的输出,包括控制器的输出。
如图所示。
图拥有扫描链的TMR系统
搜集到的数据然后被传送到微控制器,然后在那里进行分析。
因为对每个模块的数据都进行了搜集,则控制器可以根据每个数据对应的模块进行分析,进而确定出现错误的模块。
可能的错误有一下三种:
Ø由于软件错误影响到了寄存器的值而产生的错误
Ø由软件错误,影响到配置数据。
这些错误的配置数据又影响到了模块的功能
Ø固定硬件错误
第一种错误在寄存器更新的时候会自动的修正过来。
若扫描链进行了新一轮的扫描过后,该种错误仍然存在,则系统启动一个后台程序,读取收到影响的模块的配置数据,然后和原来的配置数据进行CRC检测。
若不吻合,则控制器执行一个部分重构,载入原来的配置数据来排除错误。
若执行了上述操作以后,仍然存在错误,则表明错误的来源不是因为模块的配置数据受到影响,而是出现了硬件错误。
要让系统恢复过来,则要替换掉已经出错的模块。
控制器找到出错的部分,然后将其标记为“停用”。
整个系统要维护一个受损资源列表,列表储存的存储系统也要收到保护,放置它被破坏。
上述的操作步骤如图所示。
图BISH方法的具体步骤
结束语
FPGA器件是一种崭新的可重构逻辑器件。
可重构技术是一种灵活的、实用的新兴技术。
本文所探讨的在导引头信息处理机中采用基于FPGA的可重构技术,极大地提高了系统的硬件利用率,减小了系统的硬件复杂性,增强了系统的灵活性。
本文讨论了基于FPGA的可重构的两种技术,一种是有加州大学伯克利分校实现的基于Linux内核的操作系统BORTH。
通过在内核里面增加了对FPGA可重构部件的支持,使得硬件资源可以像软件资源一样,被操作系统充分的利用。
通过ioreg虚拟文件的机制和内部网络通信机制,实现了硬件进程和软件进程的通信,大大提高了用户接口的友好性,使得硬件开发变得像软件开发一样的容易。
另一种技术是基于FPGA的可重构自动修复系统。
具体讨论了两种实现方法,一种是利用双FPGA框架实现,这种构架能保证系统的稳定性。
另一种是BISH方法。
通过硬件的冗余和可重构部件实现系统的自动修复。
参考文献:
[1]HaydenKwok-HaySo,RobertW.Brodersen.IMPROVINGUSABILITYOFFPGA-BASEDRECONFIGURABLECOMPUTERSTHROUGHOPERATINGSYSTEMSUPPORT[J].FieldProgrammableLogicandApplications,2006.FPL'06.InternationalConference.:
1-6
[2]HaydenKwok-HaySo,ArtemTkachenkoandRobertBrodersen.AUnifiedHardware/SoftwareRuntimeEnvironmentforFPGA-BasedReconfigurableComputersusingBORPH[J].Proceedingsofthe4thinternationalconference .:
259-264
[3]Gericota,. Alves,. Ferreira,. Aself-healingreal-timesystembasedonrun-timeself-reconfiguration[J].EmergingTechnologiesandFactoryAutomation,2005.ETFA2005.10thIEEE.
(1):
1040-1043
[4]SubhasishMitra,Wei-JeHuang,NirmalR.Saxena,Shu-YiYu,andEdwardJ.McCluskey.ReconfigurableArchitectureforAutonomousSelf-Repair[J]..(21):
228-240
[5]MihaiBudiu,MahimMishra,AshwinR.Bharambe,SethCopenGoldstein.Peer-to-peerHardware-softwareInterfacesforReconfigurableFabrics[J]..:
57-66
[6]覃祥菊,朱明程,张太镒,魏忠义.FPGA动态可重构技术原理及实现方法分析[J].电子器件,
(2):
277-282
[7]季爱明,沈海斌,严晓浪.异步可重构结构设计[J].电路与系统学报,(12):
56-60
[8]李仁发,周祖德,陈幼平,徐,成,李方敏.可重构计算的硬件结构[J].计算机研究与发展,(40):
500-506
[9]方强,赵继广.基于FP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可重构 技术 研究