本发明涉及计算机技术领域,具体涉及一种可重构硬件任务动态布局方法。
背景技术:
在计算平台中,每个可重构硬件任务都会占用可重构芯片上的相应资源且要求占用的可重构逻辑单元在空间上是连续的。这些硬件任务在可重构资源上以并行的方式运行。当硬件任务分配的方式不当时,可能造成大量无法合并的碎片。当新的硬件任务提出空间要求时,即使可重构芯片上的剩余资源超过要求的数量,但是因为空间分布不连续从而无法接收该硬件任务的请求。如果这样的情况频繁发生,可重构系统的性能将严重下降。正如内存管理策略不佳,操作系统的执行效率也随之降低。
管理可重构芯片上的空闲资源和在线分配,是软件定义动态可重构系统的核心问题之一,也即是可重构系统的布局问题。布局不仅关系到可重构芯片资源的合理、有效利用,也是研究可重构芯片上硬件模块重定位、调度和整理可重构芯片上资源碎片的基础,它的效率是可重构系统的使能技术。
作为动态可重构系统的瓶颈,可重构硬件任务动态布局方法必须在保证运行速度的基础上,尽量增加可重构芯片的利用率。就目前看来,现有的硬件布局方法大都存在布局质量不高、布局方法开销过大等问题,部分方法存在未考虑硬件任务重用、不支持二维资源模型,以及需要提供过多的先决信息等限制,因而在实际中难以应用,有待于进一步优化和提升。
现有的用于可重构硬件任务动态布局方法主要包括以下几种方案:
(1)非重叠空闲矩形布局:当放置一个硬件任务到可重构器件上去时,将硬件任务的某一顶点与空闲矩形的顶点相重合,剩下的空闲部分被划分为不相重叠的矩形。划分的方法由不同的启发规则决定,常用的启发规则有选择更短分割线、选择更长分割线、划分后最大矩形更接近正方形;
(2)基于相互重叠的最大空闲矩形布局:生成、维护可重构芯片上所有最大空闲矩阵信息,这些矩阵是可以相互重叠的。当有新硬件任务到达时,搜索足够容纳新硬件任务的空闲矩阵。若搜索成功,则将硬件任务放置在被选中的最大空闲矩阵中,更新剩下的最大空闲矩阵信息;
(3)保持硬件任务顶点的布局方法:当新硬件任务到达可重构系统时,尝试将硬件任务与可重构芯片中的各顶点相匹配,若匹配成功,则根据二进制背包策略,返回该顶点,或者继续匹配芯片中后续顶点以得到代价函数最低的顶点;若匹配失败,继续将硬件任务与芯片中剩余顶点相匹配。这些方案存在以下缺陷:
(1)布局速度慢
非重叠空闲矩形布局和基于相互重叠的最大空闲矩形布局在使用时搜索次数过多,导致布局速度慢。
(2)布局开销大
已有布局方法需要引入复杂的结构维护空闲矩阵之间的相互关系,带来大量布局开销,无法在实际的可重构系统中采用。
(3)芯片利用率低
在使用时得到的布局均存在质量不高的问题,会出现很多无法使用的碎片,浪费大量宝贵的芯片资源。
技术实现要素:
为解决现有技术的不足,本发明实施例提供了一种可重构硬件任务动态布局方法,该方法包括以下步骤:
s1对于具有h×w个可重构逻辑单元的可重构芯片,建立一个二维权值矩阵m[h,w],其中,矩阵m[h,w]的每一个元素即一个可重构逻辑单元,其值为一个二元组{h,w},h和w分别表示从可重构逻辑单元的左下脚开始记数的列数和行数,h或w为整数;
s2建立记录表c,保存当前运行中硬件任务的顶点v(h1,w1),其中,记录表c的初始状态包含可重构芯片的1个顶点(0,0),记录表c中仅保存运行中硬件任务的右下角坐标及已布局区域在x轴、y轴上的投影点,记录表c中的信息按硬件任务的顶点距离原点的距离升序排序,其中,h1表示顶点v所在的坐标上方有h1个单元可用,w1表示顶点v所在的坐标右方有w1个单元可用;
s3当硬件任务t(h2,w2)到达时,按顺序提取记录表c中的顶点v(h,w)与其匹配,匹配过程如下:
若h1不小于h2且w1不小于w2,表示以该顶点为硬件任务的左下顶点,有足够空间用以布局硬件任务,则匹配成功,转向步骤s4;
搜索记录表c中的下一个顶点信息继续进行匹配,若匹配成功,转向步骤s4;若不成功,则转向步骤s3,提取记录表c中的下一个顶点并重复上述匹配过程,直至记录表c的末尾;
s4接受硬件任务t(h2,w2),在合适的时机触发硬件任务t(h2,w2),并按照记录表的规则,更新记录表c中投影点和硬件任务顶点的信息并结束所有步骤;
s5确定当前芯片上无法为硬件任务分配足够空间,将硬件任务t(h2,w2)放入等待队列或拒绝硬件任务t(h2,w2)并结束所有步骤。
优选地,所述方法还包括:
当一个硬件任务执行结束后,回收该硬件任务占用的空间,并按照记录表的规则,更新记录表c中投影点和硬件任务的信息并回收多余的记录表空间。
优选地,提取记录表c中的下一个顶点并重复上述匹配过程,直至记录表c的末尾包括:
若已搜索至记录表c的末尾,仍未获得匹配且未旋转硬件任务t(h2,w2),则旋转硬件任务t(h2,w2),形成旋转硬件任务t’(w2,h2)并重新进行硬件任务匹配。
优选地,提取记录表c中的下一个顶点并重复上述匹配过程,直至记录表c的末尾还包括:
若已对硬件任务t(h2,w2)进行旋转操作,则说明硬件任务t(h2,w2)旋转后仍无法完成布局,匹配失败,转向步骤s5。
本发明实施例提供的可重构硬件任务动态布局方法具有以下有益效果:
(1)在硬件任务所需空间较大时,由于考虑了硬件任务的旋转性,硬件任务可以沿x轴或者y轴两个方向进行布局,提高了可重构芯片的利用率;
(2)二维数据维护的空闲矩阵信息表能准确反映可重构芯片空闲资源分布情况,使得匹配过程更加高效,有效地减少了布局开销,同时提高了布局速度。
附图说明
图1a-图1c为本发明实施例提供的同一个硬件任务的三种不同构造形式示意图;
图2为本发明实施例提供的可重构硬件任务动态布局方法流程示意图;
图3为本发明实施例提供的可重构芯片对应的二维权值矩阵示意图;
图4为本发明实施例提供的与图3所示的二维权值矩阵对应的顶点记录示意图。
具体实施方式
以下附图和结合具体实施例对本发明作具体的介绍。
名词解释
硬件任务:通常指经过综合后,可以被配置到可重构器件中的功能模块,通常为一个矩形块。
可重构芯片:是由一定数量的最小可重构逻辑单元以及它们之间的互连逻辑组成。
空闲矩形:是指可重构芯片上当前未被硬件任务占用的矩形区域。
碎片:指硬件任务边界外无法利用的资源。
最小可重构逻辑单元:是可重构芯片配置的最小单位,当电路功能发生任意改变时,可重构系统至少需要配置的最小单元。
一般认为,硬件任务形状的各异是造成布局碎片的主要原因。以往对硬件任务的定义默认硬件任务不能旋转。随着技术的发展,一个最小可重构逻辑单元与其上下左右的最小可重构逻辑单元都是完全同一的,没有方向上的区别。因此,一个(1,4)矩形形状的硬件任务可以生成(1,4)矩形形状的硬件任务以及旋转后的(4,1)矩形形状的硬件任务两个配置文件后,可以沿x轴或y轴两个方向进行布局,而在硬件结构上保持完全同构。如果一个(1,4)矩形形状的硬件任务要转换成(2,2)正方形形状的硬件任务,则要涉及到硬件任务内部的硬件布线变更,该变更也完全可以在硬件任务配置数据库中预先设定。需要变更硬件任务形状时只要从该数据库调入相应的配置文件即可。若将硬件任务的形状都尽量转换成正方形,则硬件任务布局算法将会得到简化。
因此,约定在可重构器件上,硬件任务的形状不影响硬件任务的功能,只要硬件任务由相同数量的连续最小可重构逻辑单元组成,其功能保持不变。如图1a-图1c为同一个硬件任务的三种不同构造形式。为了构成矩形,图1b和图1c都补充了虚拟的单元,即所谓的碎片。
本发明实施例以假设可重构芯片上的硬件任务形状不影响硬件任务功能为前提,通过提前生成可旋转的硬件任务,适配x轴或y轴两个方向上的布局要求,从而提出一个可通过调整任务形状来完成可重构硬件任务动态布局方法,如图2所示,包括以下步骤:
s101,对于具有h×w个可重构逻辑单元的可重构芯片,建立一个二维权值矩阵m[h,w],其中,矩阵m[h,w]的每一个元素即一个可重构逻辑单元,其值为一个二元组{h,w},h和w分别表示从可重构逻辑单元的左下脚开始记数的列数和行数,h或w为整数。
作为本发明一个具体的实施例,如图3所示的二维权值矩阵中,有三个正在运行的任务t1、t2和t3,p点为已布局区域在x轴上的投影点。
s102,建立记录表c,保存当前运行中硬件任务的顶点v(h1,w1),记录表c的初始状态包含可重构芯片的1个顶点(0,0),其中,记录表c中仅保存运行中硬件任务的右下角坐标及已布局区域在x轴、y轴上的投影点,记录表c中的信息按硬件任务的顶点距离原点的距离升序排序,其中,h1表示顶点v所在的坐标上方有h1个单元可用,w1表示顶点v所在的坐标右方有w1个单元可用。
作为本发明一个具体的实施例,如图4所示,硬件任务t2的右下顶点和y轴上的顶点对应权值为(0,0),故不需要存入记录表c中。另外,px是布局区域在x轴上的投影点,当顶点的权值为(0,0)时,在该顶点处不能放置新的硬件任务,那么该顶点就会从记录表c中删除。
s103,当硬件任务t(h2,w2)到达时,按顺序提取记录表c中的顶点v(h,w)与其匹配,匹配过程如下:
s1031若h1不小于h2且w1不小于w2,表示以该顶点为硬件任务的左下顶点,有足够空间用以布局硬件任务,则匹配成功,转向步骤s104;
s1032搜索记录表c中的下一个顶点信息继续进行匹配,若匹配成功,转向步骤s104;若不成功,则转向步骤s103,提取记录表c中的下一个顶点并重复上述匹配过程,直至记录表c的末尾;
s104,接受硬件任务t(h2,w2),在合适的时机触发硬件任务t(h2,w2),并按照记录表的规则,更新记录表c中投影点和硬件任务顶点的信息并结束所有步骤;
s105,确定当前芯片上无法为硬件任务分配足够空间,将硬件任务t(h2,w2)放入等待队列或拒绝硬件任务t(h2,w2)并结束所有步骤。
可选地,该方法还包括:
当一个硬件任务执行结束后,回收该硬件任务占用的空间,并按照记录表的规则,更新记录表c中投影点和硬件任务的信息并回收多余的记录表空间。
可选地,提取记录表c中的下一个顶点并重复上述匹配过程,直至记录表c的末尾包括:
若已搜索至记录表c的末尾,仍未获得匹配且未旋转硬件任务t(h2,w2),则旋转硬件任务t(h2,w2),形成旋转硬件任务t’(w2,h2)并重新进行硬件任务匹配。
可选地,提取记录表c中的下一个顶点并重复上述匹配过程,直至记录表c的末尾还包括:
若已对硬件任务t(h2,w2)进行旋转操作,则说明硬件任务t(h2,w2)旋转后仍无法完成布局,匹配失败,转向步骤s105。
本发明实施例提供的可重构硬件任务动态布局方法,通过将新到达的硬件任务放置在己布局硬件任务的顶点处,通过对可重构芯片内部计算单元进行编码,可以迅速判断新任务是否可放置在该顶点。顶点除了包括硬件任务的顶点外,还包括硬件任务外延到x、y轴的顶点,如果硬件任务无法放置,可以通过旋转该硬件任务再进行判断,提高了可重构芯片空间的利用率,有效地减少了布局开销,提高了布局速度。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。