一种支持可重构混成系统的操作系统设计与实现.doc
《一种支持可重构混成系统的操作系统设计与实现.doc》由会员分享,可在线阅读,更多相关《一种支持可重构混成系统的操作系统设计与实现.doc(13页珍藏版)》请在沃文网上搜索。
1、期 乔磊等:一种支持可重构混成系统的操作系统设计与实现一种支持可重构混成系统的操作系统设计与实现 摘 要 可重构硬件和指令集处理器构成的混成系统兼有运算速度高和编程灵活的优点,是近年来学术界研究的热点。已有的面向该类系统的操作系统由于受到传统抽象模型的制约,不能充分发挥可重构硬件的优势。本文在分析该类系统对操作系统的需求和已有运行模型缺陷的基础上,提出了一种基于服务体/执行流模型的操作系统SEF-OSHRS。它具有统一的系统对象抽象和通信接口,并可支持控制流的直接转换,因而能充分发挥混成系统的优势。文中详细介绍了该操作系统的基本抽象、系统结构和运行方式,并通过实验结果说明了该系统的可用性和高效
2、性。关键词 可重构混成系统;操作系统;服务体;执行流中图分类号 TP302An Operating System for Hybrid Reconfigurable Systems: Design and Implementation Abstract Hybrid systems that are composed of reconfigurable hardware and instruction set processors can achieve high performance as well as flexible programmability simultaneously, h
3、owever the existing operating systems(OS) cannot fully utilize the reconfigurable computing resources in such systems. By exploiting a novel OS construction model SEFM (Servant & Execution-Flow Model), this paper presents an OS named SEF-OSHRS, which has a uniform system object abstraction model and
4、 inter-servant communication interface. SEF-OSHRS can transfer the control flow directly along with the inter-servant communication and thus make full use of the advantages of hybrid reconfigurable systems. The fundamental abstraction model, system architecture and run-time environment are discussed
5、 in detail. The usability and efficiency are proved by experiments.Keywords Hybrid Reconfigurable System; Operating System; Servant; Execution-Flow131 引 言可重构混成系统(以下简称混成系统)既可发挥专用集成电路ASIC (Application Specific Integrated Circuit)速度上的优势,又具有指令集处理器ISP(Instruction Set Processor)的灵活性,近年来在嵌入式领域已有广泛应用。支持可重构混
6、成体系结构的操作系统OSHRS(Operating System for Hybrid Reconfigurable System)能够支持可重构资源的动态管理,并提供基本的运行环境和编程模型,从而可更有效的利用可重构计算资源。图1是由部分可重构FPGA(Field Programmable Gate Array)和ISP等器件构成的混成系统结构示例,本文所讨论的操作系统即基于该种混成结构。所谓部分可重构,是指FPGA可在运行时动态改变某一部分的配置,而器件上其余未更改部分仍按原有方式正常工作。图1 可重构混成系统结构Brebner1是最早在操作系统方面对可重构技术进行研究的人之一,他提出的虚
7、拟硬件资源的概念类似于传统操作系统中的虚存,将可重构资源划分成类似于“页”的、具有固定面积和输入/输出的互联单元。该方案大大降低了系统的灵活性,资源浪费和碎片现象也很严重;文献2着重讨论了可重构操作系统应提供的基本服务,如:任务划分、任务布局、任务间布线等,并用时间复杂度相对较低算法加以实现。但未对运行模型做出明确说明;文献3通过扩展Linux操作系统的方法,实现了一个OSHRS的原型,其目的是使ISP端的应用程序和FPGA端的逻辑模块都受到支持,并可自由在混成系统中迁移。可重构资源被组织为一系列ICN(Inter-Connection Network)单元,每个ICN单元在操系统看来相当于一
8、个跟ISP异构的处理器。该操作系统采用进程/线程作为基本运行对象,并维护与进程相关的原语。但该操作系统中存在很多与所谓“硬件任务”无关的数据和控制域,浪费了系统资源,且增加了维护的难度。由于大部分的任务间通信操作都会引起进程调度,因此开销很大。此外,用可重构硬件实现进程/线程相关原语和维护相关语义使操作系统复杂度大大增加;文献4提出了一种基于统一多任务模型可重构系统的实时操作系统,但该系统采用静态方法生成任务配置表和调度任务,要求预先知道“硬件任务”的数据依赖关系等信息,灵活性不高,而且任务间通讯采用进程的通信原语,效率较低;NIOS10是Altera公司推出的软核嵌入式RISC处理器,但无法
9、支持动态可重构。综上所述,已有的OSHRS或者没有明确指出运行模型,或者沿用传统的进程/线程模型PTM(Process/Thread Model),然而该模型以及该模型相关的进程间通讯机制不能有效支持混成系统。本文介绍了一种基于服务体/执行流模型SEFM(Servant & Execution-Flow Model)5,6,7的OSHRS. SEF-OSHRS以同步通讯方式作为系统对象间通讯的主要手段,控制流的转换不依赖于调度,且对软、硬件应用采用统一的抽象,可有效的支持混成系统。文章的最后通过实验证明了SEF-OSHRS的可用性和高效性。2 OSHRS的结构与机制可重构硬件的运算方式与ISP
10、有着显著区别。以电平触发逻辑为例,当硬件逻辑模块在输入端有电平信号的变化时,就会触发一定的逻辑功能,完成对特定输入的处理,然后产生输出信号。可见,硬件逻辑模块间具有直接控制流转换的能力,控制流转换不需要,也没必要引入额外的开销。而在传统的PTM操作系统中,程序间的函数调用、参数传递等直接关系被共享内存、管道、消息等进程间通讯机制所封装,以至控制流的转换需要通过调度间接完成,开销很大。运行模型应该站在控制流的角度对系统的底层机制进行准确的抽象,以便更加有效的利用硬件平台提供的计算资源。执行流和服务体是SEFM的两个基本抽象。基于SEFM的OS较单内核结构(Monolithic kernel ar
11、chitecture)OS具有更好的模块化特性和空间隔离机制,较微内核结构(Microkernel architecture)OS具有更高的系统对象间通信效率7。本文提出的SEF-OSHRS根据混成系统的特点,对SEFM进行了扩充,提出了硬服务体的概念,并进而将运行于ISP端的服务体称为软服务体,将运行于FPGA端的服务体称为硬服务体。操作系统中的各功能模块(如在ISP端运行的文件系统、内存管理器、驱动程序,以及在FPGA端运行的加密/解密、视频压缩等逻辑电路)都以服务体的形式存在。基于SEFM的OSHRS逻辑结构如图2所示。图2 服务体/执行流模型示意图2.1软服务体相关机制2.1.1 基本
12、抽象对ISP而言,执行流是机器执行指令能力最原始的抽象,它是连续的概念,从系统上电复位开始到关闭时结束,中途不会被阻塞、挂起和停止。每个ISP提供一个执行流,若采用超线程技术则每个ISP可提供多个并行执行流。执行流不与固定的地址空间绑定,可自由跨越系统组件的边界,其作用是推动服务体进行消息处理。软服务体是具有通信功能,拥有地址空间的能够完成某种功能的代码、数据集合,它是静态的概念,其生命周期不依赖于执行流,具有持久性。用户程序(包括驱动程序)和系统模块均以服务体的形式存在,各服务体之间以端口作为通信的接口, 并在执行流的推动下进行消息处理。核心服务体在SEFM中是一个关键的组件,它在逻辑上相当
13、于传统操作系统中的内核,但它不需要运行在内核态。核心服务体提供服务体间通讯机制、服务体/执行流的管理、中断/异常等基础服务,它还维护系统关键抽象(如服务体等)的数据结构。2.1.2通讯机制端口是服务体对外通信的唯一接口,记录特定消息处理例程的入口。服务体由端口向外界提供服务,执行流只能从端口进入服务体。一个端口辖括若干小端口,用于记录执行流通过端口进入服务体时的上下文信息和一些关键的机器状态,主要包括一个堆栈和一个寄存器快照结构。消息是服务体间信息交换的载体,具有确定的格式,由消息头部和消息体组成。消息头指明消息的目的端口等信息,消息体用于携带数据。按照面向对象的观点,服务体可看作一个类,“发
14、送消息”是这个类的方法,端口是一个公共的成员,小端口则是与端口相关的私有成员。消息推动机制中基本通信原语的编程接口为:msg_body_t* msg_push(msg_body_t* hdr, msg_option_t option);msg_push()有三种消息发送方式,分别为:(1)同步-连续方式。以此种方式发送消息后,执行流立即进入目标服务体,待完成服务后返回发送方继续执行,由msg_push()返回应答的消息。该过程相当于一次受保护的跨地址空间函数调用。(2)同步-分离方式。发送消息后,执行流立即进入目的服务体,完成服务后应答到指定的端口。类似于尾递归优化。(3)异步方式。发送消息后
15、,执行流仍在本服务体内,消息被异步的处理和应答。该方式提供了异步语义。2.1.3并发和中断机制核心服务体维护一个全局小端口调度队列,根据一定的原则,从这个队列中挑选一个小端口并将执行流派发到其中。被选中的小端口为其所属的端口提供了运行环境,支持服务体进行消息处理。当该消息处理结束时:(1)若不需应答而又没有发送新的消息,则通过向核心服务体发送无应答端口的同步分离消息放弃执行流。核心服务体收到消息后,继续选择合适的小端口派发执行流。(2)否则,按照代码序列和消息推动的方向继续执行。事务端口是为了执行特定的任务创建的,不作为提供服务的接口,它在数据结构上与普通端口没有区别。创建事务端口后,系统将其
16、辖括的某一小端口置入全局调度队列,调度器在适当的时机将执行流派发到该小端口中。事务端口在语义上代表一个事务的执行,系统的并发实际上就是事务的并发。如图3所示,消息的发送或事务相关小端口时间片的过期推动ISP端执行流在各服务体间流动。可见系统中仅有一个执行流。SEFM的中断相当于硬件在当前的代码序列中随机插入一条指令,这条指令的作用相当于向核心服务体发送一条同步连续的中断消息。核心服务体则根据该消息触发中断服务例程,中断完成后返回发生中断的服务体继续执行。关于SEFM在ISP端工作机制更详细的说明,请参考文献5,6,7。图3 ISP端并发示意图2.2 硬服务体相关机制2.2.1 基本抽象对FPG
17、A而言,执行流是各逻辑模块运算能力的抽象,多个执行流可并行执行,其作用就是推动硬服务体完成消息处理。硬服务体是指拥有可重构计算资源、经过内部综合并具有固定的形状、面积和时间特性的逻辑模块,它是对SEFM中软服务体概念面向OSHRS的扩充。硬服务体的存储与加载位置无关,即OSHRS可将硬服务体在FPGA上重新定位,它的时间特性包括硬件逻辑的时钟频率、时序特征等。2.2.2统一软件接口、统一硬件接口统一软件接口(USI:Uniform Software Interface)、统一硬件接口(UHI:Uniform Hardware Interface)是可重构平台的支撑协议,为混成系统中的软、硬件应
18、用提供统一操作接口,协助完成重构配置、服务体间通讯等功能,在OSHRS中所起的作用类似于传统操作系统中的体系结构相关层。USI提供的接口有:发送/接收数据和控制指令、拷贝硬件逻辑模块比特流到FPGA、修改FPGA芯片上特定位置的配置信息、对硬服务体重定位等;UHI主要实现对不同体系结构FPGA的抽象和提供硬件逻辑模块间通讯的方法。USI和UHI将操作系统与底层机制分割,给OSHRS提供了最大限度的平台无关特性,也使OSHRS的设计者摆脱复杂底层机制的困扰。USIS(USI 服务体)和UHIS(UHI服务体)分别为USI和UHI协议在OSHRS中的实现,他们所处层次以及在消息发送过程中的作用如图
19、4所示,可见由软服务体向硬服务体发送消息需通过USIS和UHIS。2.2.3通讯机制OSHRS对软、硬服务体采用统一通讯接口(包括消息发送原语,消息结构等),以实现更好的模块间独立性和可扩展性。服务体间的通讯有如下三种可能:(1)软服务体之间发送消息:此种情况没有USIS、UHIS的参与,其过程详见文献5,6,7中相关叙述;(2)软服务体向硬服务体发送消息,流程如图5所示;(3)硬服务体发送消息,流程如图6所示。为简单起见,仅示出同步分离消息通信且不需要应答的情形。图4 通过USIS、UHIS发送消息2.2.4 其他重要机制由于ISP与FPGA运行方式的差异,OSHRS需要专门提供可重构资源的
20、管理和硬服务体加载、卸载等重要机制。调度和布局OSHRS中调度器的作用为:(1)决定各软服务体小端口获得执行流的时机;(2)为硬服务体分配可重构计算资源,决定硬服务体的加载时机;(3)安排硬服务体处理消息的顺序。布局器是调度器的一个重要部件,它管理芯片上可重构计算资源,解决运行时资源分配问题。调度和布局在ISP端完成。图5 软服务体向硬服务体发送消息流程图图6 硬服务体发送消息流程图图7所示调度器与布局器的工作过程如下:系统欲加载硬服务体时,调度器询问布局器FPGA上是否有足够空间容纳新的硬服务体;布局器以该硬服务体需占用面积为参数尝试分配空间;若成功,则返回该硬服务体被布局的位置;通过USI
21、S加载该硬服务体;若失败,则创建一个事务端口,该事务端口描述了加载硬服务体所需的操作。核心服务体将与该事务端口绑定的小端口置入调度队列,等待执行流进入;待成功布局硬服务体后,事务端口向核心服务体发送消息请求撤销本端口。图7 调度器与布局器工作示意图碎片整理OSHRS运行过程中,可重构资源被频繁的分配/回收,这使得FPGA的空闲空间分布趋于离散,互不连续,即使FPGA上空闲总面积大于某些待加载的模块,亦不能成功加载。此种现象被称为可重构芯片的碎片化,严重时会使OSHRS陷于瘫痪。 在传统ISP系统级软件中,使用内存分配/回收的算法来尽可能的减少内存碎片。比如Java虚拟机中的垃圾回收器就负责把不
22、再被引用的内存对象释放,并整理存在于内存对象间隙的碎片。在OSHRS中,负责实现碎片整理的组件称为碎片整理器。碎片整理器一般在可重构芯片处于空闲状态时(即没有硬服务体在处理消息时)被触发,进行碎片的整理工作,以求有效提高可重构资源的利用率,又不降低系统工作效率。硬服务体的加载和卸载硬服务体初始以库的形式存储于非易失存储介质,其比特流有两种加载模式:(1)显式加载:用户显式的向核心服务体发送消息,请求加载硬服务体。核心服务体得到消息后利用USIS提供的FPGA配置端口完成加载。(2)隐式加载:用户向未加载的硬服务体发送消息,产生“硬服务体缺失”异常,由异常处理程序将该服务体加载,处理过程如下:若
23、触发异常的消息为同步消息,异常处理代码向USIS报告缺失的硬服务体ID,USIS利用配置端口将该服务体的比特流从存储部件配置到FPGA;若该消息为异步消息,核心服务体立即创建一个事务端口,该事务端口负责完成加载硬服务体的任务并转发消息。核心服务体将该事务端口的小端口置入调度队列,等待调度;执行流返回发送方服务体继续执行后续代码。当上述小端口获得执行流时,才真正执行加载过程,加载完毕后事务端口被撤销。与加载情况类似,硬服务体的卸载也有显式和隐式两种方式。显式卸载向核心服务体发送卸载消息;隐式卸载即下文所述的硬服务体换出。硬服务体换出由于可重构计算资源有限,当系统负载较重时,布局器将无法找到足够空
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一种 支持 可重构 混成 系统 操作系统 设计 实现