使用影子寄存器扩展堆栈寄存器堆制造技术

技术编号:2820335 阅读:310 留言:0更新日期:2012-04-11 18:40
在影子寄存器堆系统中,一个或一个以上影子寄存器堆(SRF)插入在物理寄存器堆(PRF)与后备存储器(BS)之间。所述SRF包括串联连接成距所述PRF任意深度的链的双端口寄存器。寄存器保存引擎可随机存取所述链中最终SRF中的寄存器的一个端口,并在所述最终SRF与例如RAM的所述BS之间保存/恢复数据。在PRF寄存器被从调用过程解除分配以供被调用的过程使用时,数据从所述PRF中的多端口寄存器串行移位通过SRF中的连续的对应双端口寄存器,且在所述PRF寄存器被重新分配给调用过程时,朝所述多端口寄存器串行移位返回。由于没有任何过程可存取多于所述PRF中寄存器数目的寄存器,因此通过使用成本较低的双端口寄存器增加了所述PRF的有效大小。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术大体上涉及处理器的领域,且特定来说涉及使用影子寄存器来扩展堆栈寄存 器堆的有效大小。
技术介绍
RISC处理器的特征在于相对小的指令集,其中每个指令执行单个指令,例如算术、 逻辑或装载/存储操作。算术和逻辑指令从一个或一个以上通用寄存器(GPR)获得其操 作数,并将其结果写入所述GPR。 GPR是结构化的寄存器。也就是说,GPR包括明显标 识在指令集结构中的离散存储器位置,且通过指令直接寻址。GPR常实施在例如高速多端口寄存器阵列的硬件中,所述寄存器每一者都具有由指 令集界定的字宽度(例如,32或64个位)。此物理寄存器阵列称为物理寄存器堆(Physical Register File)。在直接映射寄存器实施方案中,物理寄存器堆中的寄存器数目与结构化 GPR的数目完全匹配,且每个逻辑GPR识别符映射到一个特定的硬件寄存器。为了获得 较高性能,且为了支持超标量管线(superscalar pipeline),许多现代处理器从物理寄存器 堆中的物理寄存器去耦逻辑GPR识别符。寄存器重命名、重排序缓冲器以及类似技术是 用于从物理寄存器去耦逻辑GPR识别符的技术中已知的技术。无论是直接映射还是重命 名,在许多软件编制过程中对物理寄存器堆的管理是一项设计挑战,且常常是一个性能 瓶颈。多数现代软件本质上是模块化的。也就是说, 一个过程可"调用"另一过程(不同 地称为函数、子例行程序、子模块或类似物)或将控制转移到另一过程。被调用的过程 又可调用另一过程,依此类推,从而导致常达到相当大深度的过程嵌套。在由处理器执 行期间,每个过程(在执行期间还称为上下文)被分配有某些处理器资源,包含若干GPR。 分配给过程的GPR的数目可通过编译器对所述过程中指令的分析来确定,且其范围可从 几个GPR变动到整个结构化GPR集。当第一过程调用第二过程(还称为上下文切换) 时,第一 (或调用)过程变为不活动,而第二 (或被调用)过程被分配有单独的资源(包 含其自己的GPR集),且开始执行。当第二过程完成执行时,其资源被解除分配,资源 被重新分配给调用过程(如果有必要的话),且调用过程重新开始执行。由调用过程分配的资源的一部分可视情况保持对于被调用过程可用,所述部分例如是用于在过程之间传 送调用参数并返回值的寄存器。在一些现有技术处理器(例如英特尔(Intel ) !'-960)中,上下文切换或新的过程提 示处理器将物理寄存器堆的整个内容存储到存储器,从而使整个物理寄存器堆对于所述 新过程可用。当被调用过程完成执行并将控制返回给其调用过程时,先前保存的寄存器 值被恢复到物理寄存器堆,且调用过程的执行继续进行。物理寄存器堆内容被保存到"后 备存储器(Backing Store)",例如系统存储器(RAM)。为了在后备存储器包括芯片外 RAM时减轻针对每一上下文的多次芯片外存储器存取的性能影响,处理器可提供一个或 一个以上"高速缓冲存储器"寄存器堆(其可包括实际寄存器或替代地可包括芯片上高 速缓冲存储器),以用于存储物理寄存器堆的内容。然而,即使在高速缓存的寄存器存储 的情况下,也必须一次存储/检索整个物理寄存器堆,从而强加了性能瞬断(performance hit)。例如英特尔Itanium的许多现代处理器所使用的技术不需要一次存储和检索整个物 理寄存器堆,所述技术称为堆栈寄存器堆结构。在堆栈寄存器堆结构中,高层级处理器 控制器将物理寄存器堆视为具有无限深度的逻辑堆栈。通过在过程被调用时向其增量式 分配寄存器,并在必要时保存先前分配的寄存器的内容,来在物理寄存器堆中实施这种 逻辑上无限的堆栈。图1描绘代表性堆栈寄存器堆结构实施方案的功能框图。物理寄存器堆1包括高速 多端口物理寄存器阵列,所述阵列包含至少与指令集结构中存在的GPR的数目一样多的 寄存器。举例来说,物理寄存器堆1可包括128个寄存器,范围从底部的物理寄存器0 (PRO)到顶部的物理寄存器127 (PR127)。两个逻辑指针实施堆栈管理堆栈顶部指针 和保存/恢复指针。起初,将两个指针都设置为PR0。随着过程被调用且寄存器被分配所述过程,堆栈 顶部指针向上移动。当所有或几乎所有可用物理寄存器都已被分配,且新调用的过程需 要的寄存器数目多于物理寄存器堆1中剩余的未分配寄存器的数目时,堆栈顶部指针将 "绕回(wrap)",并开始从物理寄存器堆1的底部(以PR0开始)分配寄存器。然而在此 情况发生之前,物理寄存器堆1底部的足够数目的寄存器必须已经将其内容保存到后备 存储器3,例如系统存储器(RAM)。寄存器保存引擎2中断处理器,并执行对以下操作来说必要的指令执行寄存器读 取和存储器存储操作,以将物理寄存器堆1底部的最近最少分配的寄存器的内容保存到后备存储器3。寄存器保存引擎2使保存/恢复指针递增,指示所述指针下方的寄存器可 用于分配给新调用的过程。当寄存器保存引擎2完成寄存器保存操作并放弃对处理器的 控制时,处理器控制器将寄存器分配给下一过程,并使堆栈顶部指针递增,从而使其绕 回并使其递增而经过内容被保存到后备存储器3的寄存器,因为这些寄存器被重新分配 并由被调用的过程利用。类似地,在被调用的过程完成执行并将控制返回给调用过程时,堆栈被弹出,且分 配给被调用过程的寄存器被解除分配,或使其可用于分配给其它过程。如果与调用过程 相关联的所有数据仍不在物理寄存器堆1中,也就是说,如果调用过程的寄存器中的一 者或一者以上被重新分配,那么寄存器保存引擎2再次中断处理器,从后备存储器3检 索最近最多保存的寄存器的内容,将数据恢复到物理寄存器堆1,将寄存器分配给调用 过程,并使保存/恢复指针递增以指示寄存器被分配且含有有效数据。堆栈寄存器堆系统以较大物理寄存器堆1、相对较窄的过程嵌套深度和/或相对较少 的分配给每个过程的寄存器来提供最佳性能。在这些条件下,堆栈顶部指针简单地上下 移动通过物理寄存器堆l,在需要时向过程分配寄存器和解除分配寄存器,而没有延迟。 然而,随着过程嵌套的深度增加,且/或一个或一个以上过程需要大量寄存器,处理器经 历寄存器保存引擎2导致的大量中断,以在物理寄存器被从调用过程解除分配和重新分 配给调用过程时,从物理寄存器堆1中的寄存器保存数据和将数据恢复到所述寄存器。提高堆栈寄存器堆系统的性能的一种方式是简单地增加物理寄存器堆1的大小。虽 然这确实提供较高的性能,但物理寄存器堆1中的寄存器通常是高速多端口随机存取寄 存器。每个寄存器可包含(例如)三个到五个读取和写入端口。此外,为了操作调度和 寄存器分配的灵活性,每个物理寄存器的读取端口必须路由到每个管线中的每个执行管 级,且每个管线中的回写管级必须连接到物理寄存器堆中的每个寄存器的写入端口。因 此,增加物理寄存器堆1的大小在门数量和布线复杂性两方面代价较大,且伴随有测试 和检验复杂性以及功率消耗的增加。在任何给定时间,只有一个过程在执行,通常只存 取物理寄存器堆1中的寄存器的较小子集。因此,增加物理寄存器堆1的大小导致相当 大的成本,且高成本硬件的利用率较低。
技术实现思路
在一个或一个以上实施例中,在堆栈寄存器堆结构中, 一个或一个以上影子寄存器 堆插入在包括多个多端口寄存器的物理寄存器堆与备用存储器之间。影本文档来自技高网
...

【技术保护点】
一种管理具有一个或一个以上影子寄存器堆的影子寄存器堆系统的方法,其包括: 将一个或一个以上多端口寄存器从物理寄存器堆分配给第一过程,并将与所述第一过程相关联的数据存储在所述所分配的多端口寄存器中; 选择性地将与所述第一过程相关联的数据从一个或一个以上多端口寄存器保存到一个或一个以上第一双端口寄存器,并释放对应的所述所分配的多端口寄存器以用于分配给第二过程;以及 在所述第一过程继续执行之前,将与所述第一过程相关联的数据从所述第一双端口寄存器恢复到所述多端口寄存器,并将所述寄存器重新分配给所述第一过程。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:厄平德辛格巴贝尔罗希特卡普尔
申请(专利权)人:高通股份有限公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1