转换后备缓冲器的制作方法

文档序号:11807789阅读:328来源:国知局
转换后备缓冲器的制作方法与工艺

这里公开的主题总体涉及处理器,更具体地,涉及使用转换后备缓冲器(translation lookaside buffer)的存储器管理。



背景技术:

计算机系统上的存储器管理单元(MMU)可将虚拟地址空间映射到物理地址空间。虚拟地址空间表示对进程可用的逻辑或虚拟地址的集合。例如,虚拟地址空间可划分为页,虚拟地址可由虚拟页号(例如,虚拟地址的一些最高有效位)和页内的偏移(例如,虚拟地址的其余最低有效位)表示。MMU可维持将虚拟页号与物理页号关联的页表。通过使用虚拟页号作为索引查找页表条目,MMU可获得对应的物理页号,物理页号能与偏移组合以获得物理地址。为了加速页表查找,例如可使用相联高速缓存对一些页表条目进行高速缓存。保持页表条目的相联高速缓存称为转换后备缓冲器(TLB)。例如,可基于之前、当前或期望的存储器访问模式更新TLB中的页表条目。

现代处理器经常提供硬件支持虚拟化和/或多线程。虚拟化是指为称作“客户”的程序创建诸如虚拟处理器的模拟环境。例如,单个处理器核(主机)可对于客户看起来是多个处理器核。多个处理器核称为虚拟核或虚拟处理元件(VPE)。通过hypervisor(系统管理程序)来便利虚拟化,hypervisor通过管理特权资源并且为各客户定义资源访问和利用策略来提供信任执行环境。hypervisor还管理子系统的存储器和I/O特权。多线程是指代码段在单个处理器核上并行执行,以改进总体吞吐量。例如,可在线程之间共享诸如处理器周期的硬件资源,使得一个线程可继续执行,而另一个已经停止,从而改进总体利用率和吞吐量。虚拟化和/或多线程的使用可便利硬件资源的高效使用,降低成本,并且减少相对于使用多个物理处理器核的功耗。因此,一些现代处理器可支持虚拟化和多线程二者。

然而,多线程和/或虚拟化的使用经常造成诸如高速缓存或TLB的资源的低效使 用,这然后会成为使性能劣化的瓶颈。因此,一些公开的实施方式提出在各种上下文中用于TLB使用的有效技术。



技术实现要素:

公开的实施方式涉及一种物理转换后备缓冲器(TLB),包括:具有可变页大小条目的物理内容可寻址存储器。在一些实施方式中,内容可寻址存储器可包括:逻辑上连续的第一组条目位置,其中,所述第一组包括多个子组,所述第一组中的每个子组包括供多个可用虚拟处理元件(VPE)中的对应VPE的排他使用的逻辑上连续的条目位置,以及不同于所述第一组的逻辑上连续的第二组条目位置,其中,所述第二组中的条目位置在所述可用VPE之间共享。在一些实施方式中,TLB还可包括:具有固定页大小条目的物理组相联存储器,所述组相联存储器包括不同于所述第一组条目位置和所述第二组条目位置的逻辑上连续的第三组条目位置,其中,所述第三组条目位置在所述可用VPE之间共享。

在另一个方面,公开的实施方式涉及一种可配置为支持多个可用虚拟处理元件(VPE)的处理器,其中所述处理器可包括存储器管理单元(MMU)。在一些实施方式中,MMU可包括物理转换后备缓冲器(TLB)。TLB还可包括具有可变页大小条目的物理内容可寻址存储器,其中,第一内容可寻址存储器包括:逻辑上连续的第一组条目位置,其中,所述第一组包括多个子组,所述第一组中的每个子组包括供所述多个可用虚拟处理元件(VPE)中的对应VPE的排他使用的逻辑上连续的条目位置,以及不同于所述第一组的逻辑上连续的第二组条目位置,其中,所述第二组中的条目位置在所述可用VPE之间共享。在一些实施方式中,TLB还可包括:具有固定页大小条目的物理组相联存储器,所述组相联存储器包括不同于第一组条目位置和第二组条目位置的逻辑上连续的第三组条目位置,其中,所述第三组条目位置在所述可用VPE之间共享。

在又一个方面,一种非瞬时性计算机可读介质可包括用于描述物理转换后备缓冲器(TLB)的可执行指令,其中TLB可包括具有可变页大小条目的物理内容可寻址存储器,其中,第一内容可寻址存储器包括:逻辑上连续的第一组条目位置,其中,所述第一组包括多个子组,所述第一组中的每个子组包括供所述多个可用虚拟处理元件(VPE)中的对应VPE的排他使用的逻辑上连续的条目位置,以及不同于所述第 一组的逻辑上连续的第二组条目位置,其中,所述第二组中的条目位置在所述可用VPE之间共享。在一些实施方式中,所述指令描述的TLB还可包括:具有固定页大小条目的物理组相联存储器,所述组相联存储器包括不同于第一组条目位置和第二组条目位置的逻辑上连续的第三组条目位置,其中,所述第三组条目位置在所述可用VPE之间共享。

公开还涉及实施描述实施方式的指令的电路、处理器、装置、系统和计算机可读介质。在一些实施方式中,计算机可读介质可包括描述与公开的实施方式一致的处理器、MMU和/或TLB的指令。例如,可用诸如VHDL、Verilog的硬件描述语言或任何其它硬件描述语言提供描述。

附图说明

图1示出例示包括能够执行包括数学、逻辑和存储器管理操作的各种操作的处理器的计算机系统的特定示例性特征的简化示意框图。

图2示出例示按照与公开的实施方式一致的方式在多个线程/VPE之间示例性划分和分配TLB的框图。

图3示出TLB中的条目的表,例示按照与公开的实施方式一致的方式的、TLB条目在固定页大小TLB(FTLB)与可变页大小(VTLB)之间的示例分配。

图4示出TLB中的条目的表,例示按照与公开的实施方式一致的方式的、针对多线程环境的、TLB条目在FTLB与VTLB之间的示例分配。

图5示出例示线程/VPE使用的TLB条目号与对应的逻辑条目号之间的示例性映射的表。

图6示出具有分布在根与客户之间的条目的示例性私有VTLB。

图7示出例示按照与公开的实施方式一致的方式的虚拟地址到物理地址的转换的框图。

具体实施方式

下面结合附图阐述的详细描述意图作为一些示例性非限制实施方式的描述,各种其它实施方式可被实践并且被设想,如本领域技术人员将显而易见的。提供描述的实施方式,仅作为本公开的示例或说明。详细描述包括用于提供本公开的透彻理解的目 的的具体细节。然而,对于本领域技术人员而言,明显的是,本公开可在没有这些具体细节中的一个或多个的情况下实践。在一些例子中,公知结构和设备没有以框图示出,以便避免模糊本公开的概念。首字母缩略语和其它描述性术语可仅仅为了方便和清楚而使用,并不意图限制公开的范围。通常,可使用硬件、固件和软件的一些组合实现公开的实施方式。另外,在一些实施方式中,计算机可读介质可包括描述与公开的实施方式一致的处理器和/或FPU、和/或MMU和/或TLB的指令。例如,可用诸如VHDL、Verilog的硬件描述语言或任何其它硬件描述语言提供描述。

图1示出例示包括能够执行包括数学、逻辑和存储器管理操作的各种操作的处理器110的计算机系统100的特定示例性特征的简化示意框图。如图1所示,计算机系统100还可包括输入-输出(I/O)设备150,诸如键盘、鼠标、触摸屏、笔、显示器、扬声器、传感器、多媒体设备、打印机等。处理器110、I/O设备150和其它系统组件可使用总线180连接。存储器130-1也可连接到总线180。存储器130-1可存储操作系统160和在计算机系统100的操作期间可加载到存储器130-2中的应用软件170。

在一些实施方式中,处理器110可包括算术逻辑单元115和寄存器文件140以及存储器130-2。ALU 115可以能够对寄存器文件140中的运算数执行算术运算,包括整数、定点数和/或浮点数的加/减、乘、除、融合乘加、开方、倒数、倒数开方、超越函数等。通常,处理器110可包括若干附加功能单元,诸如可包括整数单元、浮点单元(FPU)117的附加的ALU 115。处理器110也可包括外部总线接口单元、时钟、流水线执行单元、调度单元、时钟和/或其它支持逻辑。这些功能单元中的许多已在图1中省略,仅仅为了简化讨论。处理器110可与一个或多个附加组件一起并入各种电、电子或机电设备。

在一些实施方式中,ALU 115可包括可用于执行浮点运算的FPU 117。FPU 117可包括一个或多个浮点执行单元(FPXU),FPXU可用于执行各种浮点(FP)运算,诸如加、减、乘、除、乘加、开方、倒数、倒数开方、超越函数计算等。

处理器110可使用硬件、固件和软件的组合实现。通常,处理器110可表示可配置为以与公开的实施方式一致的方式执行包括浮点运算的计算的一个或多个电路。处理器110可在一个或多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器、嵌入处理器核、集成电路、电子设备、设计为执行这里描述的 功能的其它电子单元、或其组合内实现。在一些实施方式中,这里公开的技术的部分也可使用固件和/或软件实现。

在这里使用时,术语“存储器”用于指代任何类型的长期、短期、易失性、非易失性或其它存储器,不受存储器的任何特定类型或存储器的数量、或存储存储器的物理介质的类型限制。在一些实施方式中,存储器130-1和130-2(统称为存储器130)可保持指令和/或数据,以便利处理器100执行的操作。例如,指令/数据可从存储器130-2加载到存储器130-1和/或寄存器文件140,供ALU 115使用。例如,接收的指令可属于浮点运算,包括加、减、乘、除、融合乘加、开方、倒数和ALU 115执行的其它运算,运算结果可存储在寄存器文件140和存储器130-2中。在一些实施方式中,存储器130也可包括只读存储器(ROM)或其它非易失性存储器,可用于存储微代码以便利处理器110执行一个或多个操作。

在一些实施方式中,存储器130可包括存储器(诸如,例如,一个或多个高速缓存存储器、主存储器和/或辅存储器)的等级。例如,存储器130-2可以是系统100的主存储器,可代表任何数据存储机制,例如但不限于随机存取存储器(RAM),包括静态RAM(SRAM)、动态RAM(DRAM)。

辅存储器可包括例如与主存储器相同或类似类型的存储器和/或一个或多个数据存储设备或系统(诸如,例如,闪速/USB存储器驱动、存储卡驱动、盘驱动、光盘驱动、带驱动、固态存储器驱动等)中的一些。在特定实现中,辅存储器可以操作性地接收(或者可配置为连接到)连接到处理器110的可移除介质驱动(图1中未示出)中的计算机可读介质。

可由MMU 180管理的存储器130也可包括若干高速缓存存储器。例如,存储器130可包括指令和/或数据高速缓存。高速缓存/主存储器可包括例如内容可寻址存储器(CAM)、组相联存储器、随机存取存储器(RAM)等。

在一些实施方式中,MMU 180可包括TLB 185。如图1所示,MMU 180可使用TLB 185将虚拟地址映射到物理地址。在一些实施方式中,TLB 185可维持虚拟地址与物理地址之间(或者更通常地,一个地址空间中的地址与另一个地址空间中的地址之间)的映射的高速缓存。当被提供虚拟地址(或第一地址空间中的地址)时,TLB返回对应的物理地址(或第二地址空间中的对应的地址)。

例如,MMU 180可维持将虚拟页号与物理页号关联的页表。通过使用虚拟页号 作为索引查找页表条目,MMU可获得对应的物理页号。术语“页表条目”或“条目”在这里近似地使用。为了加速页表查找,一些页表条目可高速缓存在TLB 185中。TLB条目可具有“页大小”,“页大小”是指物理页占据的存储器的连续块。因此,TLB 185输出(例如,响应于输入的虚拟页号)的物理页号可与偏移组合以获得实际物理地址位置。

在一些实施方式中,TLB 185可实现为内容可寻址存储器(CAM),其中CAM搜索关键字可以是虚拟地址(例如,虚拟页号),搜索结果可以是物理地址(例如,物理页号)。CAM可视为全相联高速缓存,使得TLB 185中的各位置可任意映射到任何页。当搜索的地址存在于TLB中时,CAM搜索快速产生匹配,出现TLB“命中”。然后可使用对应于搜索的虚拟地址的(从TLB 185检索的)物理地址访问存储器130。

另一方面,当搜索的虚拟地址没在TLB中时,TLB“未命中”出现。TLB未命中时,通过在称为页遍历的处理中查找页表进行虚拟-物理地址转换。页遍历相对慢,可具有若干处理器周期的延迟,因为在计算对应于虚拟地址的物理地址之前可能读多个存储器位置。通常,一旦已经通过页遍历确定对应于虚拟地址的物理地址,就可将虚拟-物理地址映射存储在TLB 185中,这便利了更快的后续访问。替换算法可通过确定TLB条目的存储、移除和/或交换来管理TLB中的条目。在一些实施方式中,替换算法可基于历史、当前或期望的存储器访问请求基于现有策略管理TLB条目。

TLB有时使用n-路组相联高速缓存实现,其中特定TLB条目能位于n路中的任意一路中。在n路组相联高速缓存中,主存储器中的各页表条目可到达高速缓存中的n个地方中的任一个。在一些实施方式中,n路组相联高速缓存可使用随机存取存储器(RAM)(诸如静态RAM(SRAM))实现。当使用组相联高速缓存(诸如n路高速缓存)时固定页大小经常是优选的。

利用“固定页大小”,TLB(或其部分)中的每个条目属于与任何其它页表条目具有相同大小的页。例如,4千字节(KB)、8KB、16KB、32KB等页大小中的一种可用于组相联高速缓存,使得各页表条目然后将与对应大小的页相关。可通过虚拟地址中的低序位给出的偏移的大小可根据选择的固定页大小改变。如早前指示的,偏移通常与TLB输出的物理页号组合以获得对应于虚拟地址的完整物理地址。许多处理器使用4KB或8KB的固定页大小。

在可以期望大或可变页大小的情况下,常规方案不赞成组相联高速缓存。此外, 组相联高速缓存较慢并且限制灵活性。另一方面,当实现TLB时,CAM:(i)在芯片面积和功耗这两方面昂贵,并且(ii)大小通常小,从而限制它们的效用。

一些公开的实施方式便利TLB的使用,TLB可包括与组相联高速缓存结合使用的CAM。例如,TLB 185可使用CAM和n路组相联高速缓存实现。可使用结合了CAM与组相联高速缓存的TLB的公开的实施方式可用成本和功率有效方式提供高性能。这里公开的实施方式还提出在包括多线程和/或虚拟化环境的各种上下文中供TLB使用的有效技术。

图2示出例示按照与公开的实施方式一致的方式在多个线程/VPE之间示例性划分和分配TLB的框图200。如图2所示,TLB 205可包括固定页大小TLB(FTLB)210和/或可变页大小TLB(VTLB)225,其部分可在线程之间共享。术语“固定”或“可变”与TLB一起使用时限定与TLB中的页表条目关联的页大小。术语“固定”意味着在任何给定时间,页大小不在TLB条目之间改变,而“可变”意味着在任何给定时间,TLB条目的页大小不一定相同。

在TLB中,页表条目的数量可视为TLB在一个时间点能支持的不同虚拟-物理映射的数量。因此,在VTLB中,每个条目可具有被转换为物理地址的不同数量的虚拟地址位(在虚拟地址中)。因此,在一些实现中,TLB可包含或设置有对应于条目的页大小的指示。页大小的指示可确定被转换以获得物理页或物理帧号的虚拟地址位的数量。

在一些实施方式中,页大小可至少部分通过计算机/操作系统、配置设置和/或其它参数确定。在一些实施方式中,可用SRAM实现的共享的FTLB 210可大于用CAM实现的VTLB 225。例如,TLB 205的一个实现可具有512个FTLB条目和64个VLTB条目。术语“VTLB”用在这里时指代具有与可变页大小关联的条目的基于CAM的TLB,而术语“FTLB”用在这里时指代具有与固定页大小关联的条目的基于组相联高速缓存的TLB。

在一些实施方式中,TLB 205可包括共享的FTLB 210、以及VTLB 225。另外,VTLB 225可包括共享的VTLB 220和私有VTLB 230-0,230-1,230-2…230-m,其中m≥0是某个整数,m+1代表线程/VPE的数量。私有VTLB 230-0,230-1,230-2…230-m有时统称为私有VTLB 230。共享的FTLB 210中的各条目的页大小可以固定(例如,设置为某个预定值),而共享的VTLB 220或私有VTLB 230中的页大小可 以可变。在一些实施方式中,共享的FTLB 210和共享的VTLB 220可以在线程240-0,240-1,240-2…240-m之间共享。

如之前概述的,许多现代处理器提供硬件支持虚拟化和/或多线程。虚拟化是指通过称为“根”的程序为称为“客户”的程序创建诸如虚拟处理器的模拟环境。例如,可使单个物理处理器核(主机)对于客户看起来是多个处理器核。多个处理器核称为虚拟核或虚拟处理元件(VPE)。

通过hypervisor便利虚拟化,hypervisor通过管理特权资源并且对于每个客户定义资源访问和利用策略来提供信任执行环境。hypervisor也管理子系统的存储器和I/O特权。多线程是指在单个处理器核(物理或虚拟/VPE)上并行执行代码段以改进总体吞吐量。

在许多常规系统中,hypervisor也可通过确定对VPE/线程的存储器分配并且维持TLB来引导存储器管理。虚拟化的实现也可允许客户未修改地运行。当未修改地运行时,客户操作系统和/或客户软件可无需修改地在虚拟化环境中运行。因此,许多虚拟化环境也支持虚拟化和多线程。作为一个示例,可虚拟化一组硬件资源,使得呈现一个或多个“虚拟核”或VPE供客户使用。hypervisor可调度一个或多个虚拟核上的根和/或客户进程/进程线程。可通过在这种环境中对TLB的硬件支持便利根和/或客户进程未修改地运行。例如,硬件可便利根/客户引导本地TLB的管理的能力,同时确保客户之间的分离、资源效率以及符合总体系统策略。因此,这里公开的实施方式还提出在包括多线程和/或虚拟化环境的各种上下文中供TLB使用的有效技术。

在一些实施方式中,在虚拟化环境中,共享的FTLB 210和/或共享的VTLB 220可在根/客户进程/线程和/或VPE之间共享。另外,每个线程(或VPE)230-i可具有对私有VTLB 230-i(0≤i≤m)的排他读写(R/W)访问。

在一些实施方式中,共享的VTLB 220和私有VTLB 230可实现为全相联高速缓存,而共享的FTLB 210可实现为组相联高速缓存。在一些实施方式中,可使用SRAM实现共享的FTLB 210。在一些实施方式中,FTLB 210可实现为一个物理结构,而VTLB 225可实现为另一个物理结构。

在一些实施方式中,TLB查找请求215同时在FTLB 205和VTLB 220中发起查找给定虚拟地址(VA)。如图2所示,当从线程i(或VPE i)(例如通过MMU 180/TLB205)接收到页表查找请求205时,可同时搜索共享的FTLB 210、共享的VTLB 220、 私有VTLB 230-i中的一个或多个。如果对于查找请求205中的虚拟地址存在TLB条目,则可(例如,通过MMU 180/TLB 205)输出查找结果255。查找结果255可包括对应于查找请求205中的虚拟地址的物理地址。

相应地,在一些实施方式中,TLB 205可包括VTLB 225,VTLB 225可实现为具有可变页大小条目的物理内容可寻址存储器。在一些实施方式中,内容可寻址存储器可包括两组逻辑上连续的条目位置。逻辑上连续的第一组条目位置可包括多个子组,其中每个子组可包括供多个可用虚拟处理元件(VPE)中对应的VPE的排他使用的逻辑上连续的条目位置。例如,在一些实施方式中,私有VTLB 230-0,230-1,230-2…230-m均可形成VTLB 225内的逻辑上连续的位置并且可排他地分别被VPE 240-0,240-1,240-2…240-m访问。内容可寻址存储器中的逻辑上连续的第二组条目位置可不同于第一组并且可在可用VPE之间共享。例如,共享的VTLB 220可包括可以在可用VPE 240-0,240-1,240-2…240-m之间共享的逻辑上连续的条目位置。另外,在一些实施方式中,TLB 205可包括共享的FTLB 210,FTLB 210可实现为具有固定页大小条目的物理组相联存储器。在一些实施方式中,组相联存储器可包括不同于第一组和第二组条目位置的逻辑上连续的第三组条目位置,其中第三组条目位置可在可用VPE之间共享。例如,共享的FTLB 210可包括可在可用VPE 240-0,240-1,240-2…240-m之间共享的逻辑上连续的条目位置。

图3示出TLB(如TLB 205)中的条目的表300,例示按照与公开的实施方式一致的方式的、TLB条目在FTLB(如FTLB 210)与VTLB(如VTLB 225)之间的示例分配320。如图3所示,示例性TLB 205可包括分布在全相联VTLB 225与4-路组相联FTLB 210之间的576个逻辑上连续的条目。另外,逻辑上连续的条目号64-575可形成诸如共享的FTLB 210的FTLB的部分,而逻辑上连续的条目0-63可形成VTLB225的部分。在一些实施方式中,VTLB 225中的条目0-63可分布在共享的VTLB(如共享的VTLB 220)与私有VTLB(如私有VTLB 230)之间。术语“物理上连续的”是指具有相邻物理地址的存储器位置,而术语“逻辑上连续的”用于指具有相邻逻辑地址(如相邻虚拟地址或相邻索引)的一系列存储器位置。逻辑上连续的地址可是或可不是物理上连续的。

在图3中示出为四路组相联高速缓存的共享的FTLB 210可包括四组128个TLB条目,其包括:(i)条目号64-191,示出为“FTLB路0”330;(ii)条目号192-319,示 出为“FTLB路1”331;(iii)条目号320-447,示出为“FTLB路2”332;(iv)条目号448-575,示出为“FTLB路3”333。

图4示出TLB(如TLB 205)中的条目的表400,例示按照与公开的实施方式一致的方式的、针对虚拟化环境的、TLB条目在FTLB(如FTLB 210)与VTLB(如VTLB 225)之间的示例分配320。如图4所示,逻辑上连续的条目号64-575可形成诸如共享的FTLB 210的FTLB的部分。在一些实施方式中,可使用如之前在图3中指示的四路组相联高速缓存在“FTLB路0”330、“FTLB路1”331、“FTLB路2”332、“FTLB路3”333之间分配条目号64-575。

另外,如图4所示,VTLB 225可包括编号为0-63的64个逻辑上连续的TLB条目,它们可如下分配:(i)逻辑上连续的条目号0-7分配至“私有VTLB 0”230-0;(ii)逻辑上连续的条目号8-15分配至“私有VTLB 1”230-1;(iii)逻辑上连续的条目号16-23分配至“私有VTLB 2”230-2;(iv)逻辑上连续的条目号24-31分配至“私有VTLB 3”230-3;逻辑上连续的条目号32-63分配至“共享的VTLB”220。在一些实施方式中,在多线程环境中,可由线程0 240-0、线程1 240-1、线程2 240-2、线程3 240-3分别排他地使用私有VTLB 0 230-0、私有VTLB 1 230-1、私有VTLB 2 230-2、私有VTLB3 230-3。作为另一示例,在虚拟化环境中,利用通过VPE 0、VPE 1、VPE 2、VPE 3给出的四个虚拟处理元件(VPE),可由VPE 0 240-0、VPE 1 240-1、VPE 2 240-2、VPE 3 240-3分别排他地使用私有VTLB 0 230-0、私有VTLB 1 230-1、私有VTLB 2230-2、私有VTLB 3 230-3。

如之前概述的,可实现为全相联高速缓存或CAM的VTLB 225可具有相对少数量的页条目。在一些情况下,与VTLB 225中的条目关联的页大小可以可变。在一些情况下,VTLB 225可便利大小为十亿字节或更大量级的页条目。

在一些实现中,可便利CAM中的页条目的“绑定”。术语“绑定”或“绑定的条目”用于描述VTLB 225中未被替换算法自动管理的条目。例如,可通过至少两个不同指令便利TLB条目。第一指令可导致将TLB条目自动放置在TLB中。例如,替换算法可决定新条目置于TLB中的何处和/或从TLB移除哪个条目以容纳新条目。然而,为了防止通过自动算法将一个或多个条目交换出TLB,软件可将特定条目指定为“绑定的”。

在一些实施方式中,VPE 0 240-0、VPE 1 240-1、VPE 2 240-2和/或VPE 3 240-3 中的一个或多个可分别将私有VTLB 0 230-0、私有VTLB 1 230-1、私有VTLB 2230-2、私有VTLB 3 230-3中的一个或多个条目指定为绑定的。例如,第二指令可用于将TLB条目指定为绑定的。在一些实施方式中,指令也可指示绑定的TLB条目驻留在特定TLB位置。例如,线程i或VPE i可指示新的绑定的条目要置于私有VTLB230-i中的“0”(零)位置。因此,在指定的TLB位置,绑定的条目将可用于线程i或VPE i。相比之下,如上面概述的,不是绑定的条目可通过替换算法管理,并且可根据当前或现有替换策略交换出以容纳新条目。

因此,私有VTLB 230-i可用于确保由线程i或VPE i放置在特定TLB位置处的条目不被替换或交换出。另一方面,共享的VTLB 220或共享的FTLB 210中的条目可根据生效的替换策略替换或交换出,因为不为共享的VTLB 220或共享的FTLB 210中的条目保证保留。另外,在(根和客户这两者)线程i或VPE i均具有私有VTLB 230-i以及对共享的VTLB 220和/或共享的FTLB 210的R/W访问的实施方式中,则:(i)VTLB 230-i中的绑定的条目可用于与VPE i关联的根和每个客户;(ii)VTLB 230-i中,一些随机替换条目也可用于根和每个客户;(iii)共享的FTLB 220中,一些随机替换条目也可用于根和客户;(iv)线程i或VPE i不能对不同线程j或VPE j拒绝非私有TLB资源,其中i≠j。

图5示出例示线程/VPE使用的TLB条目号310与对应的逻辑条目号之间的示例性映射的表500。具体地,表500示出VLTB 225中的64个逻辑上连续的条目在4个虚拟核(如VPE 240-0、240-1、240-2、240-3,图4中未示出)之间的示例性映射分布,其中64个VTLB条目中的32个条目是共享的(如,在共享的VTLB 220中,其中可根据替换策略替换条目),8个VTLB条目被排他地分配给每个虚拟核(如,在私有VTLB的230-0、2301、230-2、230-3中)。在一些实施方式中,可在启动期间和/或硬件中配置可分配给每个VPE/线程的条目。

如表500中示出的,VPE 0逻辑条目号510的索引0-7可对应于TLB条目号310的条目0-7(其可形成私有VTLB 230-0的部分)。类似地,VPE 1逻辑条目号511的索引0-7可对应于TLB条目号310的条目8-15(其可形成私有VTLB 230-1的部分)。另外,VPE 2逻辑条目号512的索引0-7可对应于TLB条目号310的条目16-23(其可形成私有VTLB 230-2的部分)。最后,VPE 3逻辑条目号513的索引0-7可对应于TLB条目号310的条目24-31(其可形成私有VTLB 230-3的部分)。如以上概述的, 在一些实施方式中,私有VTLB 2300、230-1、230-2、230-3可分别专用于线程/VPE 240-0、240-1、240-2、240-3。因此,如表500中示出的,TLB条目0-7不可用于VPE 1、2、3;而TLB条目8-15不可用于VPE 0、2、3;TLB条目16-23不可用于VPE 0、1、3;TLB条目24-31不可用于VPE 0、1、2。

另外,在图5中示出的实施方式中,VPE(或线程)240-0、240-1、240-2、240-3中的每个可使用逻辑索引8-39共享对TLB条目号310的条目32-63(其可形成共享的VTLB 220的部分)的访问。TLB条目64-575可形成共享的FTLB 210的部分,可对应于每个VPE/线程的本地索引40-551。

因此,在一些实施方式中,每个VPE的第一组被索引位置(如索引0-7)可对应于TLB条目310的不同非重叠组。另外,第二组被索引位置(如索引8-39)可对应于共享的VTLB 220中的一组TLB条目。此外,第三组被索引位置可对应于共享的FTLB 210中的一组TLB条目。

在一些实施方式中,VTLB 225中分配给私有VTLB 230的比例可以是可配置的,在系统启动时和/或硬件中设置,和/或基于设计、配置、应用和/或其它参数是绑定的。在一些实施方式中,每个私有VTLB的大小可不相等。例如,私有VTLB的大小可以是可配置的,在系统启动时和/或硬件中设置,和/或基于设计、配置、应用和/或其它参数可以是绑定的。在一些实施方式中,私有VTLB的数量可不等于线程/VPE/核的数量。另外,图中示出的VPE/线程和/或私有VTLB的数量仅是例示性的,仅用于说明目的。通常,公开的技术和实现可按照与公开的实施方式一致的方式应用于任意数量的VPE/线程和/或私有VTLB。

在一些实施方式中,VPE索引或逻辑条目到实际TLB条目之间的映射可通过地址解码器执行,地址解码器可以是固定功能或可配置的。例如,在一些实现中,当实例化新虚拟核或VPE 240时,地址解码器可被编程以在现在当前数量的核/VPE之间分配VTLB 225中的条目(私有和共享的二者)。另外,在一些实施方式中,根在上面执行的核/VPE可使它们各自私有VTLB条目的一些部分分配用于根的绑定的条目。

图6示出具有分布在根与客户之间的条目的示例性私有VTLB 600。在一些情况下,示例性私有VTLB 600可以是私有VTLB 230-0至230-3中的一个。

如图6所示,私有VTLB 600可包括可在根与客户之间分配的8个条目。在一些 情况下,除了对于客户的绑定的条目625,私有VTLB 600可包括对于根的绑定的条目615。因此,私有VTLB 600中的可用条目的一部分可保留用于根绑定的条目615。例如,根绑定的条目615可包括根条目0 610-0和根条目1 610-1。另外,如图6所示,私有VTLB 600中的可用条目的一部分可被客户使用。例如,客户绑定的条目625可包括客户条目0 620-0、客户条目1 620-1、客户条目2 620-2。在一些实施方式中,私有VTLB 600中的不是绑定的条目可在根与客户之间共享。例如,根和客户二者可具有对共享的私有VTLB 640的R/W访问。

在一些实施方式中,私有VTLB 600中,根的条目可优先于客户的条目。例如,在一些情况下,根可以能够使用整个私有VTLB 600。如图6所示,在一些情况下,私有VTLB 600能包括根条目610-0至610-7,其可占据整个私有VTLB 600。作为一个示例,当客户不请求绑定的条目时,全部私有VTLB 600可对于根可用。在一些实施方式中,客户对私有VTLB 600的访问可限于客户可写部分630,其可包括客户绑定的条目625和共享的私有VTLB 640。另外,对根绑定的部分615的访问对客户不是可用的。

作为一种实现,根可在私有VTLB 600中设置多个绑定的根条目615。根也可设置对客户可用的最大数量的绑定的条目。私有VLTB 600中的所有其余(未分配为根绑定的条目或客户绑定的条目)条目和共享的VTLB 220中的条目可以可用于根和客户二者。另外,共享的FTLB 210中的条目也可以可用于根和客户二者。在一些实施方式中,共享的FTLB 210中的条目可出现在VLTB 225中的条目末尾之后。

在一些实施方式中,根和客户索引可相对于TLB条目号在相反方向上扩大,以减少根和客户条目冲突的可能性。例如,对于大小为s的私有VTLB中的TLB条目k,对应的根索引或对应的逻辑根条目也可以是k,而对应的客户条目可以是(s–k–1)。对于私有VTLB 600,其中s=8,VTLB条目3(k=3)可对应于逻辑根条目3 610-3和逻辑客户条目8–3–1=4 610-4。因此,在一些实施方式中,第0个根和客户条目可映射到VTLB 600的相反端。

例如,如果私有VTLB 600中的逻辑上连续的条目对应于私有VTLB 230-0,则可如图6所示执行私有VTLB条目到根和客户的分配。作为一个示例,逻辑上连续的第一组条目可开始利用最低编号的TLB条目作为第0个根索引而顺序分配给根,逻辑上连续的第二组条目开始利用最高编号的TLB条目作为第0个客户索引而顺序分 配。例如,如图6所示,示例性TLB条目0可对应于根索引/条目0 610-0,而示例性TLB条目7可对应于客户索引/条目0。

在一些实施方式中,以上的分配可颠倒,逻辑上连续的第一组条目可开始利用最高编号的TLB条目作为第0个根索引而顺序分配给根,而逻辑上连续的第二组条目开始利用最低编号的TLB条目作为第0个客户索引而顺序分配。相应地,在第二个示例实施方式中,示例性TLB条目7可对应于根索引/条目0 610-0,而示例性TLB条目0可对应于客户索引/条目0 620-0。

相应地,在一些实施方式中,私有VTLB 225(图2)可包括具有多个子组的逻辑上连续的第一组条目位置,其中每个子组可包括供多个可用虚拟处理元件(VPE)中的对应VPE的排他使用的逻辑上连续的条目位置。例如,如果私有VTLB 600中的逻辑上连续的条目对应于私有VTLB 230-0(图2),则私有VTLB 600可排他地被VPE 240-0访问。另外,条目位置的每个子组(如VTLB 230-0,230-1…)可包括逻辑上连续的第一组条目,用于与对应于子组的VPE(如240-0,240-1…)关联的根进程的排他使用。例如,私有VTLB 600可包括根绑定的条目615。条目位置的每个子组(如VTLB 230-0,230-1…)也可包括逻辑上连续的第二组条目,用于与对应于子组的VPE(如240-0,2401…)关联的客户进程的排他使用。例如,私有VTLB 600可包括客户绑定的条目625。另外,条目位置的每个子组(如VTLB 230-0,230-1…)可包括在与对应于子组的VPE(如240-0,240-1…)关联的根进程与客户进程之间共享的逻辑上连续的第三组条目。例如,可专用于VPE的私有VTLB 600可包括可在与VPE关联的根与客户进程之间共享的共享的私有VTLB 640。

另外,如图6所示,每个子组(如私有VTLB 600)中的逻辑上连续的条目可顺序编号,逻辑上连续的第一组条目可通过以顺序升序将第一子组中最低编号的TLB条目映射到根进程使用的最低编号的条目索引以寻址TLB条目来分配给根进程。例如,最低编号的TLB条目号0、1可映射到最低编号的根索引–分别是根索引0 610-0和根索引1 610-1。另外,逻辑上连续的第二组条目可通过以顺序降序将第一子组中最高编号的TLB条目映射到客户进程使用的最低编号的条目索引以寻址TLB条目来分配给客户进程。例如,最高编号的TLB条目号7、6可映射到最低编号的客户索引–分别是客户索引0 620-0和客户索引1 620-1。任何其余条目(可构成逻辑上连续的第三组条目)可在根与客户之间共享,如共享的私有VTLB 640指示的。可根据与管 理私有VTLB 600的VPE关联的替换策略管理共享的私有VTLB 640中的共享的条目。

注意,以上条目的描述和分配仅是示例性的并且设想其它方案。例如,在另一个实施方式中,每个子组(如私有VTLB 600)中逻辑上连续的条目可顺序编号,逻辑上连续的第一组条目可通过以顺序降序将第一子组中最高编号的TLB条目分配给根进程使用的最低编号的条目索引以寻址TLB条目来分配给根进程。例如,最高编号的TLB条目号7、6可映射到最低编号的根索引–分别是根索引610-0和根索引1610-1。另外,逻辑上连续的第二组条目可通过以顺序升序将第一子组中最低编号的TLB条目映射到客户进程使用的最低编号的条目索引以寻址TLB条目来分配给客户进程。例如,最低编号的TLB条目号0、1可映射到最低编号的客户索引–分别是客户索引0 620-0和客户索引1 6201。任何其余条目(可构成逻辑上连续的第三组条目)可在根与客户之间共享,如共享的私有VTLB 640指示的。可根据与管理私有VTLB 600的VPE关联的替换策略管理共享的私有VTLB 640中的共享的条目。

图7示出例示按照与公开的实施方式一致的方式的虚拟地址到物理地址的转换框图700。在一些实施方式中,虚拟地址720可包括虚拟页号(VPN)725和页内的地址(或偏移)727。虚拟地址720可与进程专用的地址空间标识符(ASID)715组合。例如,每个进程710可具有单独的地址空间,其可被分配唯一的ASID 715。ASID715可与每个TLB条目存储,以区分为不同进程加载的页表条目。ASID便利处理器上下文切换而不改变TLB条目。例如,ASID可便利来自不同进程地址空间但是具有相同VPN的条目共存于TLB中。另外,虚拟地址720也可与客户标识符(客户ID)755组合,在虚拟化环境中,客户标识符(客户ID)755可以唯一标识每个客户(如,运行在VPE上)。

在一些实施方式中,当写TLB条目210时,与客户关联的标识符可保存到TLB条目210的客户ID字段755。例如,在一些实施方式中,当客户操作系统写客户TLB条目210时,处理器电路/硬件可配置为向TLB条目210的客户ID字段755进行写,而客户不必明确指定写入客户ID字段755的内容。另外,作为另一个示例,当根代表客户写根TLB条目时,与客户关联的标识符可被处理器电路/硬件写到TLB条目210的客户ID字段755。在一些实施方式中,当根写供根使用的TLB条目210时,值0(零)可写入客户ID字段755,以将条目标识为与根关联。在一些实施方式中, 可以是专用的CPU寄存器可保持与当前运行的客户关联的客户ID。保持当前客户ID的寄存器可便利通过处理器电路/硬件向TLB条目210的客户ID字段755写入客户ID。当执行从虚拟地址720到物理地址760的转换时,客户ID字段755中的当前客户ID与虚拟地址720一起传递到查找逻辑。此外,在一些实施方式中,指示客户或根是否运行的根/客户标志被传递到查找逻辑。在一些实施方式中,查找逻辑可在检测到具有TLB条目的对应子字段的虚拟页号(VPN)725、客户ID 755、根/客户标志的匹配时用信号通知匹配。得到的物理帧号(PFN)765可与页727中的页偏移或地址组合以获得物理地址760。

在一些实施方式中,虚拟地址720、客户ID 755、根/客户标志和与VPE关联的标识符可同时发送到VTLB 225和FTLB 210中的查找逻辑。在一些实施方式中,能并行查找VTLB 205中的所有条目,VTLB 205可以是CAM。如果VTLB 205中的条目匹配输入,则输出对应于到VTLB 205的输入的物理地址760。通常,虚拟地址720中的比特的一部分可用作查找FTLB 210的索引,FTLB 210可以是组相联的,该组的所有路被读出。如果存在匹配,输出对应于到FTLB 210D输入的物理地址760。因为TLB条目是独特的,所以单个匹配可发生在VTLB 205或FTLB 210中,但不会同时发生在二者中。物理地址760可用于检索期望数据。相应地,在一些公开的实施方式中,TLB和/或与TLB关联的查找逻辑可以能够同时在VTLB 225和FTLB 210中查找TLB查找请求,VTLB 225可包括具有可变页大小条目的内容可寻址存储器,FTLB 210可包括具有固定页大小条目的组相联存储器。

ASID 710、客户ID 755、VPN 725和掩码可由MMU 180使用,以生成查找TLB210的TLB查找请求215,并且获得可包括物理帧号(PFN)765的TLB查找结果255。PFN 765可与页727的偏移或地址组合,以获得物理地址760。标志可指示TLB条目的状态。在一些实施方式中,除了根/客户标志,与TLB条目关联的标志字段可指示包括页有效/无效、可写/不可写、可读/不可读或可执行/不可执行的页属性。

在一些实现中,术语“模块”可指示实现归于该模块的功能或多个功能的电路。术语“电路”不意味着单个电连接的元件或电路集合,或者用于实现特定功能的该电路必须专用于或单独分配以执行该功能。例如,电路可以是固定功能、可配置的或可编程的。通常,实现功能单元的电路可以是可配置的,或者可以比具体分配的电路更可配置。例如,地址解码器、MMU或处理器的其它单元可在执行不同操作时用各种 方式使用相同的电路部分。如此,当配置为执行或者互连以执行不同操作中的每个时,电路的该部分对于每个不同操作实际上是电路,或电路的部分。一些配置可来自或基于例如指令、微代码或状态数据。对于这里公开的各种模块,实现相对于这些模块公开的处理或功能的电路提供执行这些处理或功能的手段。

存在设计电路的不同方法,例如,电路可相对于时钟同步或异步。电路可设计为静态或动态的。通常,不同电路设计方法可用于实现不同功能单元或其部分。缺乏一些上下文专用基础,“电路”包括所有这种设计方法。尽管这里描述的电路或功能单元可通过电子电路最频繁实现,更特别地,通过主要依赖实现在半导体中作为主开关元件的晶体管的电路,但此术语要结合公开的技术进行理解。例如,不同物理处理或技术可用于实现给定功能模块的电路中,例如光学、纳米管、微电机械元件、量子开关或存储存储器、磁阻逻辑元件等。尽管用于根据技术构造电路或功能单元的技术的选择可随时间改变,但此选择是要根据技术的当时状态进行的实现决策。

另外,尽管描述包括与特定实施方式有关的说明示例,但公开不限于此。可在不脱离范围的情况下做出各种调整和修改。因此,所附权利要求的精神和范围不应限于之前的描述。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1