[发明专利]一种空闲物理寄存器的获取方法和装置有效
申请号: | 201910849594.6 | 申请日: | 2019-09-09 |
公开(公告)号: | CN110647361B | 公开(公告)日: | 2021-08-27 |
发明(设计)人: | 孙彩霞;王俊辉;郭维;郭辉;雷国庆;郑重;隋兵才;黄立波;倪晓强;王永文 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 湖南兆弘专利事务所(普通合伙) 43008 | 代理人: | 谭武艺 |
地址: | 410073 湖南*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 空闲 物理 寄存器 获取 方法 装置 | ||
1.一种空闲物理寄存器的获取方法,其特征在于,实施步骤包括:
1)初始化用于记录所有可以被用来进行重命名的物理寄存器的物理寄存器空闲列表preg_freelist,所述物理寄存器空闲列表preg_freelist具有分配指针alloc_ptr和回收指针dealloc_ptr,初始时所述物理寄存器空闲列表preg_freelist的第n项记录的空闲物理寄存器的编号为n,其中0≤nN,回收指针dealloc_ptr指向第0项,分配指针alloc_ptr指向第m项,m为寄存器重命名宽度,N为物理寄存器空闲列表preg_freelist的项数;
2)将用于保存寄存器重命名流水站要使用的空闲物理寄存器的编号的m个寄存器Reg0~Regm-1按照从0到m-1的顺序依次分配给被重命名的指令;
3)根据流水线的状态决定如何更新m个寄存器和分配指针alloc_ptr:根据当拍分配出去的物理寄存器个数更新m个寄存器和分配指针,供下一拍寄存器重命名时使用,如果发生了异常或分支误预测,读取从已经被恢复的分配指针alloc_ptr开始的物理寄存器空闲列表的m项用于更新m个寄存器,然后将分配指针alloc_ptr前进m项,使得虽然提前一拍读取物理寄存器空闲列表,但是每拍需要读取的项数仍然保持m项。
2.根据权利要求1所述的空闲物理寄存器的获取方法,其特征在于,步骤3)的详细实施步骤包括:
3.1)判断是否发生了流水线的清除,如果是则跳转执行步骤3.2);否则跳转执行步骤3.3);
3.2)首先将分配指针alloc_ptr回退到导致流水线被清除的指令被重命名之前的状态,然后下一拍读取从分配指针alloc_ptr开始的m项,分别用读出的内容更新m个寄存器Reg0~Regm-1并将分配指针alloc_ptr前进m项,如果要前进到的项数超过了N-1,对其进行N的取模,使其折回到队列头,其中N为物理寄存器空闲列表preg_freelist的项数;结束并退出;
3.3)获取重命名流水站分配出去的物理寄存器数量p,如果物理寄存器数量p的值为0,则将m个寄存器Reg0~Regm-1的内容和分配指针alloc_ptr都保持不变,结束并退出;否则,分别使用Regp+i的内容更新第i个寄存器Regi,其中0≤i≤(m-p-1);并使用从分配指针alloc_ptr开始的p项的内容更新其余的p个寄存器;最终将分配指针alloc_ptr前进p项,如果要前进到的项数超过了N-1,对其进行N的取模,使其折回到队列头,其中N为物理寄存器空闲列表preg_freelist的项数。
3.根据权利要求2所述的空闲物理寄存器的获取方法,其特征在于,步骤3.3)中使用从分配指针alloc_ptr开始的p项的内容更新其余的p个寄存器具体是指分别使用(alloc_ptr+j)指向的项的内容更新Regm-p+j,其中0≤jp,p表示重命名流水站分配出去的物理寄存器数量。
4.一种空闲物理寄存器的获取装置,包括存储器和乱序超标量微处理器,其特征在于,所述乱序超标量微处理器被编程或配置以执行权利要求1~3中任意一项所述空闲物理寄存器的获取方法的步骤,或者所述存储器上存储有被编程或配置以执行权利要求1~3中任意一项所述空闲物理寄存器的获取方法的计算机程序。
5.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有被编程或配置以执行权利要求1~3中任意一项所述空闲物理寄存器的获取方法的计算机程序。
6.一种空闲物理寄存器的获取装置,其特征在于,包括:
空闲物理寄存器读取模块(1),由m个N选1的多路选择器SN0,SN1,……SNm-1组成,且分别使用alloc_ptr、alloc_ptr+1,……alloc_ptr+m-1作为选择信号,从物理寄存器空闲列表的N项中选择1项,从而将从分配指针alloc_ptr开始的m项的内容读取出来,对应读出的m个数据分别记为Valloc_ptr,Valloc_ptr+1,……Valloc_ptr+m-1,m为寄存器重命名宽度;
寄存器及更新模块(2),包括m个寄存器Regi~Regm-1及其输入数据生成逻辑,输入数据生成逻辑由m个m+1选1的共选择信号多路选择器SMP10,SMP11,……SMP1m-1组成,任意第i个多路选择器SMP1i的m+1个输入数据为寄存器Regi的值、寄存器Regi+1的值、……、寄存器Regm-1的值、数据Valloc_ptr、数据Valloc_ptr+1、……、数据Valloc_ptr+i;所述选择信号为当拍分配出去的物理寄存器个数dealloc_num和流水线清除信号flush,选择数据时首先看流水线清除信号flush的值,如果流水线清除信号flush为1,任意第i个多路选择器SMP1i选择Valloc_ptr+i,否则如果流水线清除信号flush为0,那么根据当拍分配出去的物理寄存器个数dealloc_num进行选择,如果当拍分配出去的物理寄存器个数dealloc_num为0,任意第i个多路选择器SMP1i选择寄存器Regi,如果当拍分配出去的物理寄存器个数dealloc_num为1,任意第i个多路选择器SMP1i选择寄存器Regi+1,依此类推,如果当拍分配出去的物理寄存器个数dealloc_num为m,任意第i个多路选择器SMP1i选择数据Valloc_ptr+i,数据生成后,在时钟上升沿将其打入相应的寄存器;
分配指针alloc_ptr的更新模块(3),用于更新分配指针alloc_ptr的值,包括用于保存分配指针alloc_ptr的值的寄存器Regalloc_ptr、一个m+1选1的多路选择器SMP1和分配指针alloc_ptr的自增逻辑;所述自增逻辑包含+1模块、……、+m-1模块和+m模块,用于生成alloc_ptr+1,……,alloc_ptr+m-1和alloc_ptr+m;所述多路选择器SMP1的m+1个输入数据为alloc_ptr,alloc_ptr+1,……alloc_ptr+m,选择信号同样为当拍分配出去的物理寄存器个数dealloc_num和流水线清除信号flush,选择数据时首先看流水线清除信号flush的值,如果流水线清除信号flush为1,选择alloc_ptr+m,否则如果flush为0,那么根据当拍分配出去的物理寄存器个数dealloc_num进行选择,如果当拍分配出去的物理寄存器个数dealloc_num为0,选择alloc_ptr,如果当拍分配出去的物理寄存器个数dealloc_num为1,选择alloc_ptr+1,依此类推,如果当拍分配出去的物理寄存器个数dealloc_num为m,选择alloc_ptr+m,其中alloc_ptr为寄存器Regalloc_ptr中存储的分配指针,m为寄存器重命名宽度;数据生成后,在时钟上升沿将其打入寄存器Regalloc_ptr。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910849594.6/1.html,转载请声明来源钻瓜专利网。