[发明专利]一种任务级乱序多发射调度器及其调度方法有效
申请号: | 201510342408.1 | 申请日: | 2015-06-18 |
公开(公告)号: | CN104932945B | 公开(公告)日: | 2018-05-18 |
发明(设计)人: | 张多利;张扬;宋宇鲲;杜高明 | 申请(专利权)人: | 合肥工业大学 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 安徽省合肥新安专利代理有限责任公司 34101 | 代理人: | 陆丽莉;何梅生 |
地址: | 230009 安*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 任务 级乱序 多发 调度 及其 方法 | ||
1.一种任务级乱序多发射调度器,是设置在处理器中并用于调度M个任务指令,所述处理器中包括:取指单元、寄存器状态表和处理单元阵列;其特征是,所述调度器包括:保留站、选择唤醒单元和计算资源管理单元;所述保留站中包含写地址管理单元、存储空间和保留站状态表;所述选择唤醒单元中包含年龄表、就绪查询单元和就绪计数器;所述计算资源管理单元中包含计算资源表、分配单元和回收单元;
所述存储空间用于保存M个任务指令,且在同一时刻最多容纳N个任务指令,每个任务指令占用所述存储空间中连续的L个地址空间,使得所述存储空间被分为N段,编号依次为0~N-1;所述写地址管理单元用于对所述N个任务指令自动分配保留站的存储空间;所述存储空间的状态包括“空”、“满”、“非空”、和“非满”;所述保留站状态表用于存储所述存储空间的状态位;所述状态位包括:“空闲”或“占用”;
所述就绪查询单元用于接收所述保留站发送的任务指令并进行解析,获得所述任务指令所需的计算资源信息和输入寄存器信息,并分别发送给所述计算资源管理单元和寄存器状态表并接收反馈的状态信息;所述计算资源信息包括:计算资源种类和计算资源个数;所述输入寄存器信息包括:输入寄存器编号和输入寄存器个数num;所述年龄表用于存储任务指令在所述存储空间中的地址信息,并将所述任务指令进入保留站的顺序提供给所述就绪查询单元;所述就绪计数器用于对所述寄存器状态表所反馈的已就绪的输入寄存器进行计数;
所述计算资源表用于反馈所述任务指令所需的计算资源是否就绪;所述分配单元用于查询所述计算资源表,并将已就绪的计算资源编号发送给所述选择唤醒单元;所述回收单元用于回收已完成计算任务的计算资源;
所述选择唤醒单元根据所述已就绪的计算资源编号和寄存器状态表反馈的输入寄存器的状态信息,判断所述任务指令是否就绪,并将已就绪的任务指令发射到外部的处理单元阵列中进行执行。
2.一种基于任务级乱序多发射调度器的调度方法,其特征是按如下步骤进行:
步骤1、定义取指单元向保留站发送的任务指令编号为变量p,0≤p≤M-1;定义存储空间的写地址为变量i,0×L≤i≤N×L-1;定义所述存储空间的读地址为变量j,0×L≤j≤N×L-1;定义年龄表的写地址为变量k,0≤k≤N;定义所述年龄表的读地址为变量m,0≤m≤N-1;定义保留站状态表的地址为变量n,0≤n≤N-1;定义就绪计数器为变量cnt;并初始化p=0、i=0、j=0、k=0、m=0、n=0、cnt=0;并同时执行步骤2和步骤5;
步骤2、写地址管理单元判断所述存储空间的状态是否为“满”状态,若为“满”;则所述写地址管理单元等待所述存储空间的状态为“非满”状态时再开始查询;否则,所述写地址管理单元立即查询所述保留站状态表中第n+1个地址的状态位,若第n+1个地址的状态位为“空闲”,则所述写地址管理单元将存储空间的写地址的状态改为“已锁定”状态,再执行步骤3;否则,将n+1赋值给n,并重复执行步骤2;
步骤3、所述保留站判断所述取指单元是否发送N个任务指令中第p+1个任务指令;若已发送,则将n×L赋值给i,表示将第p+1个任务指令存储在所述存储空间中的第n×L+1个地址中,并将所述保留站状态表中第n+1个地址的状态位设为“占用”;写地址管理单元将写地址的状态改为“未锁定”状态,同时根据“old-first”原则将n存入所述年龄表的第k+1个地址中,并将k+1赋值给k,将p+1赋值给p后,执行步骤4;若未发送,则继续执行步骤3,等待取指单元发送的第p+1个任务指令;
步骤4,判断k=1是否成立,若成立,则将所述存储空间的状态改为“非空”状态,否则,维持所述存储空间的状态为“非空”状态;
判断k=N是否成立,若成立,则将所述存储空间的状态改为“满”状态,否则,维持所述存储空间的状态为“非满”状态;并返回步骤2执行;
步骤5、判断所述存储空间的状态是否为“非空”状态,若为“非空”状态,则根据“old-first”原则读取所述年龄表的第m+1个地址,获得所述年龄表的第m+1个地址的输出t,并将t×L赋值给j,从而使得能从所述存储空间的第t×L+1个地址中读取到第f个任务指令,并对所述第f个任务指令进行解析,获得第f个任务指令所需的计算资源信息和输入寄存器信息,再执行步骤6;否则,重复执行步骤5,等待所述存储空间的状态变为“非空”状态;
步骤6、选择唤醒单元根据第f个任务指令的第cnt+1个输入寄存器编号查询寄存器状态表,并接收所述寄存器状态表反馈的状态信息后,执行步骤7;
步骤7、所述选择唤醒单元根据所述寄存器状态表反馈的状态信息,判断所述输入寄存器是否已就绪,若已就绪,则将cnt+1赋值给cnt,再执行步骤8;否则,将m+1的值赋给m,将cnt置为0,再返回步骤5执行;
步骤8、所述选择唤醒单元将所述就绪计数器cnt和第f个任务指令的输入寄存器个数num进行比较,若满足cnt<num,则返回到步骤6执行;否则,执行步骤9;
步骤9、所述选择唤醒单元根据第f个任务指令的所需计算资源信息,向计算资源管理单元发送查询命令后;执行步骤10;
步骤10、分配单元接收到所述选择唤醒单元发送的查询命令,扫描计算资源表,判断是否满足所述第f个任务指令的所需计算资源信息,若满足,则将所述计算资源管理单元中状态为“空闲”的计算资源分配给所述选择唤醒单元,并向所述选择唤醒单元反馈状态信息为所分配的“空闲”的计算资源编号,同时在所述计算资源表中将所分配的“空闲”计算资源的状态置为“占用”;若不满足,则向所述选择唤醒单元反馈状态信息为所需计算资源不足;并执行步骤11;
步骤11、所述选择唤醒单元根据所述计算资源管理单元反馈的状态信息,判断所述所需计算资源是否已就绪,若已就绪,则将已就绪的第f个任务指令发射到外部的处理单元阵列中进行执行,并将所述保留站状态表中第t+1个地址的状态位设为“空闲”;将所述年龄表的第m+1个地址的输出t置为“无效”;从而使得所述存储空间的第t+1个地址和所述年龄表的第m+1个地址中均产生了“气泡”,并同时执行步骤12和步骤13;否则,将m+1的值赋给m,将cnt置为0,并返回步骤5执行;
步骤12、将所述年龄表中第m+2个地址信息到第N个地址信息依次赋值给第m+1个地址信息到第N-1个地址信息,并将k-1赋值给k;判断k=0是否成立,若成立,则将所述存储空间的状态改为“空”状态;否则,维持在“非空”状态;
判断k=N-1是否成立,若成立,则将所述存储空间的状态改为“非满”状态;否则,维持在“非满”状态;将cnt置为0后,再返回步骤5执行;
步骤13、回收单元若接收到所述处理单元阵列反馈的完成计算任务信息,则对所述完成计算任务信息进行解析,获得已完成计算任务指令的计算资源种类和计算资源编号,并将所述已完成计算任务指令的计算资源种类和计算资源编号所对应的计算资源在所述计算资源表中的计算资源状态改为“空闲”,再重复执行步骤13。
3.根据权利要求2所述的调度方法,其特征是,所述计算资源管理单元采用主动分配资源的方式则将状态为“空闲”的计算资源分配给所述选择唤醒单元;所述主动分配资源的方式为:
步骤1、利用若干个FIFO单元组成所述计算资源表,假设计算资源的种类为A种;且每种计算资源的个数为B个;且将每种计算资源的个数B分为C组,从而形成A×C个FIFO单元所组成的二维矩阵;且每列FIFO单元对应于一个基编号,分别为
步骤2、对所述二维矩阵进行初始化,将偏移量
步骤3、每个FIFO单元读取自身的一个偏移量,并等待所述计算资源表满足所述第f个任务指令的所需计算资源信息;
步骤4、在所述计算资源表满足所述第f个任务指令的所需计算资源信息时,每个FIFO单元将所读取的偏移量和自身所对应的基编号进行组合后形成计算资源编号;
步骤5、所述分配单元从C组计算资源编号中任意选取满足所述第f个任务指令的所需计算资源信息的计算资源编号提供给所述选择唤醒单元。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合肥工业大学,未经合肥工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510342408.1/1.html,转载请声明来源钻瓜专利网。