[发明专利]一种空闲物理寄存器的获取方法和装置有效
申请号: | 201910849594.6 | 申请日: | 2019-09-09 |
公开(公告)号: | CN110647361B | 公开(公告)日: | 2021-08-27 |
发明(设计)人: | 孙彩霞;王俊辉;郭维;郭辉;雷国庆;郑重;隋兵才;黄立波;倪晓强;王永文 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 湖南兆弘专利事务所(普通合伙) 43008 | 代理人: | 谭武艺 |
地址: | 410073 湖南*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 空闲 物理 寄存器 获取 方法 装置 | ||
本发明涉及乱序超标量微处理器设计技术,具体涉及一种空闲物理寄存器的获取方法和装置,本发明方法包括初始化用于记录所有可以被用来进行重命名的物理寄存器的物理寄存器空闲列表,所述物理寄存器空闲列表具有分配指针和回收指针,初始时所述物理寄存器空闲列表的第n项记录的空闲物理寄存器的编号为n,回收指针指向第0项,分配指针指向第m项,将用于保存寄存器重命名流水站要使用的空闲物理寄存器的编号的m个寄存器按照从0到m‑1的顺序依次分配给被重命名的指令;根据流水线的状态决定如何更新m个寄存器和分配指针。本发明具有时序好、硬件开销小的优点。
技术领域
本发明涉及微处理器设计技术领域的乱序超标量微处理器设计技术,具体涉及一种空闲物理寄存器的获取方法和装置。
背景技术
目前主流的商用高性能微处理器(CPU)几乎都采用乱序超标量结构,这种结构以不同于程序的顺序执行指令,从而更大程度的开发指令级并行性。指令间存在的相关限制了指令的乱序执行。相关有数据相关和名相关两种类型。数据相关也叫写后读相关,当一条指令的结果要被其后面的指令使用时就产生了数据相关。当存在这种相关时,两条指令只能按照程序序执行。名相关是指两条指令使用了相同的寄存器或者主存单元,即同一个名字,但是指令之间却不存在数据的流动。名相关有两种:读后写相关和写后写相关。当一条指令要读一个寄存器,而其后面的指令要写这个寄存器时就产生了寄存器的读后写相关;当一条指令和其后面的指令都要写同一个寄存器时就产生了寄存器的写后写相关。
微处理器的体系结构寄存器(即程序员可见的寄存器)通常只有32个,导致程序中寄存器的名相关非常常见,消除寄存器名相关对提高乱序超标量微处理器的性能至关重要,因此,乱序超标量微处理器都会采用寄存器重命名技术。寄存器重命名是指当某个体系结构寄存器作为一条指令的目的寄存器时,将其映射到微处理器实现的一个空闲的物理寄存器的过程。如图1(a)所示,ADD指令要写体系结构寄存器R1,SUB指令要读寄存器R1,ADD和SUB之间存在写后读相关;MUL指令要写R1,SUB和MUL之间存在读后写相关;ADD和MUL都要写R1,存在写后写相关。采用寄存器重命名技术后,ADD指令要写体系结构寄存器R1,将其映射到物理寄存器P1,SUB指令要写体系结构寄存器R2,将其映射到物理寄存器P2,MUL也要写R1,将其映射到物理寄存器P3,如图1(b)所示,存在写后读相关的ADD和SUB,它们之间的数据依赖关系依然存在,而存在读后写相关的SUB和MUL以及存在写后写相关的ADD和MUL,因为寄存器重命名,它们之间的名相关被消除了。
在进行寄存器重命名时,需要获取空闲的物理寄存器,以将作为指令目的寄存器的体系结构寄存器映射到这些物理寄存器上。现有技术的普遍做法是将所有可以被用来进行重命名的物理寄存器组织成一个物理寄存器空闲列表,我们不妨将其取名为preg_freelist。如果有N个物理寄存器,那么物理寄存器空闲列表preg_freelist就有N项。每项记录一个物理寄存器的编号,初始时第n项记录的编号为n,其中0≤nN。物理寄存器空闲列表preg_freelist有两个指针,一个用来指示从哪一项开始获取空闲的物理寄存器的编号,我们不妨将其叫做分配指针alloc_ptr,另一个用来指示被释放的物理寄存器被写入空闲列表的哪项,我们不妨将其叫做回收指针dealloc_ptr。初始时,所有物理寄存器都是空闲的,分配指针alloc_ptr和回收指针dealloc_ptr都指向物理寄存器空闲列表preg_freelist的第0项。
在寄存器重命名流水站,假设重命名宽度为m,那么需要读取从分配指针alloc_ptr指向的项开始的m项,分配给要重命名的m条指令。由于不是每条指令都有目的寄存器的,而且每拍重命名的指令数目未必总是能达到最大的m条,所以并不总是每拍都分配出去m个物理寄存器,需要根据实际分配出去的物理寄存器个数更新分配指针alloc_ptr,如果没有物理寄存器被分配出去,那么分配指针alloc_ptr保持不变。下一拍,寄存器重命名流水站又使用更新后的分配指针alloc_ptr读取物理寄存器空闲列表preg_freelist获取空闲物理寄存器。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910849594.6/2.html,转载请声明来源钻瓜专利网。