首页> 中国专利> 具有增强的翻译能力的翻译后援缓冲器及其方法

具有增强的翻译能力的翻译后援缓冲器及其方法

摘要

用于增加多线程CPU通过翻译后援缓冲器(TLB)可访问的实际存储器地址数目的方法和装置。该缓冲器条目包括一虚拟地址、一实际地址和一指示该地址是否代表该CPU正在处理的多个线程中的一个线程的特殊模式位。如果设置该特殊模式位,则将与该虚拟地址较高位相关联的实际地址和正在处理的该线程标识号连接在一起以获得一实际地址。通过使用与在该翻译后援缓冲器(TLB)中存储的虚拟地址相关联的实际地址的全长来处理不包含特殊模式位,或者其中包含的特殊模式位被设置为零的缓冲器条目。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2011-11-23

    未缴年费专利权终止 IPC(主分类):G06F12/08 授权公告日:20070321 终止日期:20100830 申请日:20040830

    专利权的终止

  • 2007-03-21

    授权

    授权

  • 2005-07-20

    实质审查的生效

    实质审查的生效

  • 2005-05-18

    公开

    公开

说明书

技术领域

本发明涉及提供多线程执行的数字计算机系统。具体地,提供一翻译后援缓冲器,该翻译后援缓冲器(TLB)减小了服务于多线程计算机系统所需的主存储器的条目数。

背景技术

为了提高计算机程序的总体执行速度,多线程计算机处理单元同时执行与程序相关联的多个线程。将程序的执行分成多个同时激活的线程,并且处理器的各种硬件资源可以同时执行这些激活的线程。同时处理多个独立的指令流使处理器的计算硬件资源保持活跃。多线程计算机处理器可以提高执行效率,并可以避免由指令相关性导致的并可能在单线程处理器中出现的通常的流水线停滞(stall)。

高性能多线程处理器具有来自多个线程的指令,这些指令在同一个时刻在执行流水线的不同部分执行。将每个线程看做一上下文(context),并给每个线程分配物理存储元件以保存与该线程相关联的状态。在任何一种情况下,都会有一物理寄存器以保存执行中的线程的结构的上下文。这样,用线程ID给正在执行的多个进程加上标签,从而可以将与每个线程上下文相关联的计算结果应用到该多线程系统中适当的结构资源上。

在单线程处理器和多线程处理器两者中,必须进行存储器管理从而程序可以相对快地检索出存储在一存储器内的值。一种常用的存储器管理技术使用高速缓存了地址变换关键字对的翻译后援缓冲器(TLB)。通常TLB是内容可寻址存储器(CAM),其具有虚拟地址作为其查找关键字。程序执行识别被后援缓冲器(TLB)翻译的虚拟地址以获得该程序线程执行所需的值的存储单元的实际地址。

通常,翻译后援缓冲器(TLB)的条目被这样组织,使得由代码执行中识别出的虚拟页码识别出一存储在该存储器内的实际页码。从一虚拟页码(VPN)识别出的位置开始,TLB从该虚拟页码中识别出一组页。由该虚拟页码的较低位识别所述的一组页内的位置,以节省翻译后援缓冲器(TLB)内的空间。重要的是,因为翻译后援缓冲器(TLB)是一具有固定容量的硬件表,而且如果CPU使用比TLB映射高速缓存条目的数目更多的存储器页,则必须从一外部存储器更新TLB。访问外部存储器和获得更新的过程使存储器管理过理变慢,并且因此降低了执行的整体相对速度。当许多线程差不多同时在CPU上运行时,每个激活的线程必须在该翻译后援缓冲器(TLB)内保持一组激活的映射以避免读取没有位于TLB内的映射所带来的任何严重的不利影响。不幸的是,增加翻译后援缓冲器(TLB)的条目数会增加所需的芯片面积并增加了翻译后援缓冲器(TLB)的访问时间和功耗。

因此,需要组织翻译后援缓冲器(TLB)的内容以减小频繁更新存储信息的需要,同时不增加用于转换数据的存储器单元的总数。

发明内容

提供一种增加通过翻译后援缓冲器(TLB)可访问的实际存储器地址的数量的方法和装置。TLB内的每个条目包括存储单元的虚拟地址,实际地址以及一指示该虚拟地址是否代表正在处理的多个线程中的一个的特殊线程暗示模式位。当该缓冲器内的一虚拟地址与CPU在处理期间查找的虚拟地址一致时,从对应于该虚拟地址的缓冲器条目中读取实际地址。当设置了该特殊模式位以指示多个线程中的一个线程正在被CPU处理时,该CPU将代表正在处理的一线程的值与该实际地址的较高位连接在一起。如果不设置该特殊模式位,意味着该缓冲器条目代表一传统的翻译后援缓冲器条目,则使用包括其较低位的整个实际地址来识别一存储器存储区域,以便为该处理器获得数据。还可以进一步地将该实际地址与虚拟地址的较低位连接在一起以便为该实际地址提供另外的粒度。

本发明在多线程CPU处理中尤其有用。通过将线程标识用作一部分实际地址,可使用单个翻译后援缓冲器(TLB)条目来识别与正在处理的线程数对应的多个地址。通过将该线程暗示模式位设置为零,本发明可以与传统的翻译后援缓冲器条目同时共存。当这种情况发生时,将虚拟地址映射到实际地址上,对于单个虚拟地址来说该实际地址是唯一的。

附图说明

图1示出了一多线程处理器(CPU)和使用后援缓冲器(TLB)的存储器管理单元;

图2示出了翻译后援缓冲器(TLB)的各个组件;

图3示出根据本发明的一优选实施例将虚拟地址译码成实际地址;以及

图4以流程图形式示出根据一优选实施例的翻译后援缓冲器(TLB)执行的过程。

具体实施方式

根据图1,示出了根据本发明的一个优选实施例,附带有翻译后援缓冲器(TLB)的多线程处理器的方块图。多线程CPU计算系统10被描述为多个处理器11A-11N,代表多线程CPU的N个线程。线程11A-11N的每一个线程都在一流水线处理器中执行。在多个线程同时执行期间,可能需要访问主存储器17以完成一指令的执行。

通过存储器管理单元13访问该主存储器17。翻译后援缓冲器(TLB)15与存储器管理单元13相关联。翻译后援缓冲器(TLB)15在存储器管理单元13的协助下实现从存储器17中获取数据以及向存储器17写入数据处理。存在保存每个执行中的线程的结构的上下文的物理寄存器的一个实例。对于每个可以同时执行的线程,都存在GPRS、LR、CTR、XER和CR的一个副本。为每个正在执行的线程在主存储器17中分配一些专用的物理存储元件以保存与该线程相关联的状态,由在结构上定义的寄存器的内容表示所述的状态。用线程ID对CPU流水线内的每个指令加标签从而可以将由此产生的结构结果应用于适当的线程的结构资源。线程ID寄存器12保存该线程标识ID从而可用特定线程来识别执行结果。

存储器管理单元13从程序设计人员可见的地址进行操作,该地址被称为有效地址(EA)。有效地址(EA)通过翻译后援缓冲器(TLB)15与主存储器中的实际地址(RA)联系起来。程序的多个实例可按时间片方式运行并且在程序设计人员看来每个程序实例可使用同样的存储器地址,但是使用翻译后援缓冲器(TLB)15的映射,这些存储器地址指向不同的物理存储单元。

在翻译后援缓冲器(TLB)15的一个实现中,有效地址(EA)和一进程标识符(PID)一起使用,该PID对于每个进程实例而言是唯一的。连接有效地址(EA)和该进程标识符(PID)形成一虚拟地址(VA)。这些实体共同构成虚拟地址与主存储器17中相应的实际地址之间的一对一映射。

图2更具体地示出根据本发明的一优选实施例的翻译后援缓冲器(TLB)15的构成。进程标识符(PID)和有效地址(EA)作为虚拟地址连同主存储器17的实际地址一起存储在内容可寻址存储器22中。包括进程标识符(PID)和有效地址(EA)的虚拟地址被用作查找关键字。翻译后援缓冲器包括搜索引擎25,该搜索引擎使用包括进程标识符(PID)和有效地址(EA)的较高位的虚拟地址的一部分来定位存储在单元23中的特定的实际地址(RA)。与传统的翻译后援缓冲器结构不同,图2包括一线程暗示标识符位(Tbit)。使用Tbit来识别TLB内的条目23是否与正在执行的多个线程11A-11N中的一个线程相关联。

可利用搜索引擎25通过使用从虚拟地址(VA)得到的虚拟页码(VPN)和标识线程(正在为该线程而访问该主存储器)的线程ID,获得主存储器17的实际地址。图3示出如何对翻译后援缓冲器(TLB)条目13解码以表示用于存储器17的多个实际地址。

正在执行的线程所调用的虚拟地址(VA)有0-39位,其中(如图3所示)包括进程标识号(PID 0:7)位、有效地址的较高位(EA 0:21)和较低位(EA 22:31)。根据本发明的本实施例,虚拟页码(VPN)包括进程标识号(PID 0:7)和有效地址的较高位(EA 0:21)。使用VPN(0:29),在存储单元23内定位代表实际地址RA的较高位(0:22)的RPN。

主存储器17中的存储单元的实际地址的剩余部分或者是实际地址RPN的较低位(22:25)或者是该线程ID。如图3所示,受线程暗示模式位(Tbit)的值控制的门34或者从寄存器12中选择该线程ID,或选择该实际地址RPN的较低位RPN(22:25)。缓冲器硬件35中的第二逻辑电路将从门34得到的结果和有效地址的较低位EA(22:31)连接在一起。当将该线程暗示模式位(Tbit)设为1时,主存储器17中的单元的实际地址包括RPN(0:22)、线程ID和有效地址的较低位EA(22:31)。如果没有设置该线程暗示模式位,则门34插入该实际地址RPN的较低位(22:25)来替换该线程ID(在8比特线程ID的情况下是0:2)。

因此,可以使用同样的虚拟地址来识别一组页,其中通过实际地址的较低位或线程ID来识别组内的特定页。

上述说明的优点是该翻译后援缓冲器(TLB)可以用于存储包括线程暗示位的与多线程处理器的一个线程的地址有关的虚拟地址,或存储与单线程处理系统有关的虚拟地址。

上述用于存储并利用包括线程暗示(TI)位的翻译后援缓冲器(TLB)条目的装置执行如图4所示的过程。根据图4,从该翻译后援缓冲器(TLB)中读取数据的过程从步骤41开始。该过程需要确定一个与该处理器请求的特定虚拟地址相关联的线程ID。该虚拟地址(VA)包括有效地址(EA)和进程标识符(PID)。在如图1所示的多线程处理器中,从线程ID寄存器12中可得到线程ID。

在步骤43中该翻译后援缓冲器(TLB)的硬件引擎25确定VPN,该VPN表示该进程标识符PID(0:7)和CPU的流水线处理器中正在执行的进程请求的有效地址EA的前22位(0:21)。

一旦已知该VPN,则在步骤44中确定与该VPN相关联的实际地址,该实际地址包括高位RPN(0:22)和与该虚拟页码(VPN)一起存储的较低位实际地址位RPN(22:25)。在判断块45内确定是否设置了线程暗示模式位(Tbit)。如果已经设置了该位(指示查找到的地址对于一特殊线程ID是特定的),则在步骤46中通过连接该线程ID和较高位实际地址位RPN(0:22),用该线程ID替换较低位实际地址位RPN(22:25)。步骤47是最终步骤,其中连接该实际地址和该有效地址的较低位EA(22:31)。

如果判断块45确定该线程暗示位没有设为1——表示是一传统的翻译后援缓冲器(TLB)条目,则在步骤47中通过使用全部与该有效地址(EA)的较低位数据位连接的实际地址数据位来处理该翻译后援缓冲器(TLB)的内容。

上述说明阐述并说明了本发明。另外,本公开只示出和描述了在用于多线程计算机处理的具有增强的翻译能力的翻译后援缓冲器(TLB)的情况下的本发明的优选实施例,但是,如上面提到的,应理解本发明能够用于各种其它的组合、变型和环境中,并且能够在如此处表达的本发明的概念的范围内,根据与上述教导和/或相关技术或知识而进行各种变化或修改。上述实施例还可用于解释实施本发明已知的最好方式,并使本领域其它技术人员能够以这个或其它实施例来利用本发明,并且进行由本发明的特定应用或用途所要求的各种变型。因此,该说明并不旨在将本发明限制在这里所公开的形式或应用,而是旨在将所附权利要求解释成包括各种可选择的实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号