访问作为缓存一致性域的部分的内存刀片的内存代理的制作方法

文档序号:6596499阅读:188来源:国知局
专利名称:访问作为缓存一致性域的部分的内存刀片的内存代理的制作方法
访问作为缓存一致性域的部分的内存刀片的内存代理
背景技术
基于多核的计算可用于解决多个数据密集的问题。具有多核的计算机可被实现为位于刀片式机架中的计算刀片(compute blade)、被组织为一个或多个计算集群的多个计算机或一些其它合适的组织。这些具有多核的计算机可被用于数据中心、服务器群或其它合适的机构中。


參考附图通过示例的方式描述本发明的一些实施例图I为根据示例实施例的示出使用内存代理的计算刀片架构的系统的图。图2为根据示例实施例的使用内存代理来管理计算刀片的内存的系统的图。图3为根据示例实施例的被实现为内存代理的部分的内存代理逻辑架构的图。图4为根据示例实施例的示出远程内存页面的移动的系统的图。图5为根据示例实施例的示出本地内存页面的移动的系统的图。图6为根据示例实施例的、采用计算刀片形式用于执行内存代理来处理内存命令的计算机系统的框图。图7为根据示例实施例的、采用计算刀片形式用于执行内存代理来維持缓存一致性的计算机系统的框图。图8为根据示例实施例的、采用用于将收回的脏数据存储到回写缓冲器的计算刀片形式的计算机系统的框图。图9为示出根据示例实施例的、在计算刀片上运行以处理内存命令的方法的流程图。图10为示出根据示例实施例的、在计算刀片上运行以执行内存代理来維持缓存一致性的方法的流程图。图11为示出根据示例实施例的、在计算刀片上运行以将数据存储到回写缓冲器的方法的流程图。图12为示出根据示例实施例的、用于开始具有内存代理的计算刀片引导的启动的方法的流程图。图13为示出根据示例实施例的、用于进行容量选项选择的操作的运行的流程图。图14为示出根据示例实施例的用于页面缓存访问的方法的流程图。图15为根据示例实施例的、用于存储作为页面缓存的部分的生成位和參考计数器值的向量的图。图16为示出根据示例实施例的、用于方便页面移动的方法的流程图。图17为根据示例实施例的计算机系统的图。
具体实施例方式图示了用于计算刀片架构的系统和方法,该计算刀片架构使用内存代理以便基于载入/存储(load/store)的处理器访问远程内存,且通过选择性运行本地和远程虚拟内存页面交换而使性能最优化。计算刀片,如本文所提及的那样,是具有读取命令和数据的内存以及执行操纵该数据的命令的处理器的计算机系统。命令,如本文所提及的,可以为内存命令。在一些示例实施例中,计算刀片还包括存储结果的备用存储器(例如上面提及的内存)。该备用存储可位于计算刀片本地或内存刀片(memory blade)中计算刀片的远处。这里所使用的远程内存代理为内存代理。虚拟内存页面或内存页面为在物理内存寻址和虚拟内存寻址中都不间断的固定长度的存储块。该内存可以为静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或另ー主内存实施方式(例如基于光学的、磁的内存或闪存)。本地虚拟内存页面位于计算机刀片上,而远程内存页面通过网络访问且可驻留在内存刀片上。在一些示例实施例中,执行交換体制,其中跟踪对虚拟内存页面的访问,交换是基于该跟踪。这里所示的交換包括移动。跟踪可包括维持每一个虚拟内存页面的參考计数器值,其中记录通过ー个阶段访问虚拟内存页面的次数。如果虚拟内存页面与另ー个虚拟页 面相比具有较大的与其相关联的參考计数器值,则该具有较大的參考计数器值的虚拟内存页面被视为“热门页面(hot page)”,且将不太可能被用在本地虚拟内存页面的远程交換。与另ー个虚拟内存页面相比具有相对较低的參考计数器值的虚拟内存页面被视为“冷门页面(cold page)”。图I为示出了使用内存代理的计算刀片的示例系统100的示图。示出了计算刀片101、计算刀片102、计算刀片103和内存刀片104以及内存刀片105。每ー个计算刀片和内存刀片被置于刀片式机架106的附近。计算刀片101-103可操作地通过逻辑或物理连接被连接到网络107。网络107可为互联网、企业内部网、广域网(WAN)、局域网(LAN)、或ー些其它网络和与网络相关联的适当的拓扑。在一些示例实施例中,包括手机106、个人数字助理(PDA) 107、计算机系统108以及电视机或监视器109的多个装置可操作地被连接到网络107。在一些示例实施例中,计算刀片101-103通过网络107与多个装置通信。图2为使用内存代理以管理计算刀片的内存的示例系统200的示图。示出了计算刀片101、计算刀片102和计算刀片103,其中每ー个通过多个通信信道205可操作地被连接到内存刀片104。在一些示例实施例中,通信信道205为逻辑或物理连接。快捷外设互联(PCIe)为通信信道205的ー个示例。进ー步,通信信道205可路由通过背板204,以可操作地将各个计算刀片和内存刀片连接。计算刀片101可包括位于计算刀片101的母板上的远程内存代理。该位于计算刀片101的母板上的远程内存代理以219表示。进ー步,示出了通过多个点对点连接203可操作地彼此连接的多个中央处理单元(CPU)裸片201。这些点对点连接203可包括相干光纤(coherent fabric),例如快速通道互联 (QUICKPATHINTERCONNECT (QPI))。另外,示出了可操作地被连接到多个CPU裸片201的内存代理202,并且该连接可包括QPI。通信信道205可操作地将内存代理202连接到内存刀片104。另外,示出了包括具有内存代理的、以213表示的插座(socket)的计算刀片102。这里使用的插座为CPU插座。内存代理217作为CPU插座(以213表示)的部分被包括。CPU 218可操作地被连接到内存代理217。进ー步,多个内存模块208可操作地被连接到内存代理217和CPU 218两者。如同内存代理202,内存代理217管理经由通信信道205在计算刀片102和内存刀片104之间的通信量。通信量包括内存命令,例如读和写命令。
还示出了计算刀片103,图示了作为内存控制器的部分的内存代理215,该内存控制器驻留有CPU 216的一部分。内存代理215和CPU 216共同地由214表示。如这里使用的,内存控制器为管理流向和来自内存模块的数据流的数字电路。CPU 216可操作地被连接到内存模块208。与内存代理202和217 —祥,内存代理215管理计算刀片103和内存刀片104之间的通信量。在一 些示例实施例中,内存代理被实现为位于计算刀片板上的独立芯片(參见例如内存代理202)、或为位于处理器插座上的零-CPU芯片(參见例如内存代理217)、或为片上内存控制器的一部分(參见例如内存代理215)。内存代理充当在内存刀片104或105上分配的数据的主节点(home node),并接收关于该数据的所有缓存一致性请求。针对该数据的请求,内存代理启动和处理缓存一致性协议,从而在内存刀片104或105上不需要受支持的一致性。当启动载入/存储以访问内存刀片104或105时,根据其一致性请求指示的,内存代理将该请求转换为内存刀片数据访问命令(例如内存命令),该命令例如通过PCIe光纤作为包被传输。如本文所使用的,缓存一致性请求是在管理由ー个以上CPU使用的缓存之间的冲突中使用的以及在维持这些缓存和内存之间的连贯性中使用的请求。在一些示例实施例中,内存代理可具有将多个内存刀片连接以保证最大的内存容量的多个PCIe通道。一个内存刀片还可被连接到多个计算刀片以共享容量。例如,内存刀片104可被可操作地连接到内存刀片105。还示出了包括许多模块的内存刀片104。这些模块可以为硬件、软件或固件。另夕卜,这些模块可包括协议代理206、内存控制器210、地址映射模块211以及加速器模块212。协议代理管理从计算刀片101-103接收的内存命令。例如,协议代理201与计算刀片(例如计算刀片101和102)通信。该通信可经由包括PCIe、QPI、HYPERTRANSPORT (超传输)的某种协议或一些其它合适的协议。进一歩,该通信包括利用上述协议对请求、命令和应答进行的包装/解包。不能直接满足于内存刀片的请求被转发到其它内存刀片或计算刀片。转发到其它内存刀片的请求在这里称为内存侧请求。图示的内存控制器210处理读或写请求。在一些示例实施例中,这些读和写请求为包括刀片ID和计算刀片机器地址(如SM)的数据对。地址映射模块211被实现以检查读和写请求是否具有适当的许可。当适当的许可存在吋,允许被请求的访问,且由地址映射模块211检索远程内存地址(RMMA)。内存控制器210通过内存信道将RMMA转发到相应的中继缓冲器(例如缓冲器)207和209。通过对目标数据位于其上的内存模块208进行必要的编码和解码操作,缓冲器207或209对该请求作出应答。这些内存模块208可以是双列直插式内存模块(DIMMS)。虚拟内存页面可位于内存模块208上。图示的加速器模块212可在内存控制器210或中继缓冲器207和209内被实现,以进行数据的特殊用途计算。该加速器可为CPU、特殊用途处理器、专用集成电路(ASIC)或现场可编程门阵列(FPGA)。特殊用途计算包括散列算法(例如安全散列算法(SHA))、压缩/解压算法、加密/解密算法(例如高级加密标准(AES))或纠错码(ECC) /芯片删除码(chip kill coding)。缓冲器207或209可被实现以隐藏来自中央内存控制器的内存模块的密度/时序/控制细节。进一歩,一缓冲器在另ー个缓冲器出现故障的情况下可用于独立地操作其它缓冲器。图3是属于内存代理202或217部分的示例内存代理逻辑架构的图。可以采用软件、固件或硬件实现该内存代理逻辑架构。示出了处理从内存刀片104接收的内存命令的缓存一致性协议引擎301。该缓存一致性协议引擎301可操作地连接到页面缓存302。一组标记和存在位303属于该页面缓存302的一部分。该组标记和存在位303可被组织为某种类型的合适数据结构,该数据结构包括数組/向量、散列表或其它合适的数据结构。进ー歩,多个生成位和对生成位进行合计的參考计数器位位于页面缓存302上。生成位和參考计数器位可存储成某种类型的合适的数据结构,包括数組/向量或散列表。生成位追踪在访问虚拟内存页面期间的具体事件。生成是事件的示例。參考计数器包括在页面缓存中存储的页面中数据的访问量。在页面缓存302上还存储有DRAM刷新逻辑和页面缓存ECC,共同地以304表示。DRAM刷新逻辑包括电路和被执行以刷新DRAM的指令。在一些示例实施例中,缓存一致性协议引擎301被实现,以处理进入的一致性请求。缓存一致性协议引擎301启动和处理一致性事务,如果在任意处理器插座上不存在内存中的本地副本,则缓存一致性协议引擎301可从其页面缓存(例如计算刀片101、102或103的页面缓存)或内存刀片104或105获得数据。一致性消息可仅仅被发送到处理器插座。回写请求可更新其页面缓存或向内存刀片104或105触发写命令。通过PCIe或其它适合于计算刀片和内存刀片之间的连接的数据格式,将对内存刀片104或105的请求进行 封装,且来自内存刀片104或105的响应也需要由缓存一致性协议引擎301处理。数据可存储在页面缓存中,以加速随后的访问。在一些示例实施例中,内存代理实现页面缓存标记数组303。页面缓存标记数组303可被实现为内存模块208的部分,内存模块208被实现为内存代理202、215或217的部分。计算刀片101-103可具有多个代理芯片或多个代理插座,以进一歩支持更多的内存刀片连接。图4是图不了远程内存页面的移动的不例系统400的图。图不了计算刀片102通过通信信道205可操作地被联结到内存刀片104。通信信道205可以为逻辑或物理连接。进一歩,在一些示例实施例中,通信信道205穿过背板204。内存刀片104通过通信信道205将虚拟内存页面401传输到计算刀片102,作为虚拟内存页面401移动的一部分,这里以402表示。虚拟内存页面402可以为热门页面。虚拟内存页面401用于改写计算刀片102所选择的受害者页面(victim page)。这里,本地内存页面,例如虚拟内存页面403,已被选为受害者页面。在一些示例实施例中,例如虚拟内存页面404的临时页面用于存储受害者页面(例如虚拟内存页面403)的数据。图5是图示了本地内存页面的移动的示例系统500的图。示出了计算刀片102通过通信信道205可操作地被联结到内存刀片104。图示了本地虚拟内存页面403的移动,以501表示。该本地虚拟内存页面403可以为冷门页面。虚拟内存页面210通过通信信道205被传输,且被内存刀片104接收。该本地虚拟内存页面403用于改写例如之前位于远处的虚拟内存页面401。在一些其它示例实施例中,可选择其它位于远处的内存页面以进行改与。图6是采用用于实现内存代理以处理内存命令的计算刀片102形式的示例计算机系统的框图。这些各个框可以硬件、固件或软件被实现为计算刀片101、计算刀片102或计算刀片103的部分。示出了可操作地被连接到内存模块602的CPU 601。可操作地连接包括逻辑或物理连接。图示了内存代理模块603 (例如内存代理),以识别和与内存刀片相关联的虚拟内存页面有关的内存命令。该内存代理模块603可操作地被连接到CPU 601。另夕卜,示出了可操作地被连接到内存代理模块603的内存模块604,其包括内存代理所使用的页面缓存以管理虚拟内存页面。内存模块604可为DIMM或DRAM芯片。示出了可操作地被连接到内存代理模块603的传输模块605,传输模块605将内存命令传输到内存刀片。在一些示例实施例中,如果命令不能满足于在页面缓存中存储的数据,则传输内存命令。内存代理模块603可包括位于计算机系统的母板上的内存代理、将插座组装在计算机系统上的内存代理或作为计算机系统上的内存控制器的部分的内存代理中至少ー个。进一歩,内存代理模块603可包括缓存一致性协议引擎,还有逻辑电路,以过滤掉对内存刀片不必要的访问,并更新包括于内存代理所使用的页面缓存中的生成位和參考计数器值。如这里所使用的,不必要的访问是在给定时间周期内,相对于先前的或将来的内存命令为多余的内存命令。另外,如这里所使用·的,不必要的访问意味着试图访问本地内存的内存命令,这样内存命令就不必被发送到内存刀片。识别可包括检查进入的请求的目标数据地址是否落入内存刀片所包含的地址范围中。如果是,则内存代理可进行缓存一致性请求到内存命令的转换。内存命令可包括读命令、写命令或交换命令中的至少ー种。如这里所使用的,交换命令便于如在图4、图5和图16中概括的页面移动的执行。页面缓存可包括含有虚拟内存页面的预取缓冲器。图7是采用用于实现内存代理以维持缓存一致性的计算刀片102形式的示例计算机系统的框图。这些各个框可以硬件、固件或软件被实现为计算刀片101、计算刀片102或计算刀片103的部分。示出了可操作地被连接到内存模块702的CPU 701。可操作地连接包括逻辑或物理连接。图示了可操作地被连接到CPU 701的内存代理模块703。内存代理模块703用于接收可识别驻留在待访问的内存刀片上的数据的一致性请求。内存代理模块703将一致性请求转换成基于内存刀片所使用的协议而被格式化的内存命令。进一歩,内存代理模块703将内存命令传输到内存刀片(例如内存刀片105),以访问驻留在内存刀片上的数据。另外,内存代理模块703用于更新可识别访问包括数据的虚拟内存页面的总次数的參考计数器值。该更新还可由驻留在内存代理模块703上的或可操作地被连接到内存代理模块703的缓存一致性协议引擎301来执行。而且,内存代理模块703用于设置生成位,该生成位用于识别在访问包括数据的虚拟内存页面期间的事件。该生成位的设置还可由驻留在内存代理模块703上的缓存一致性协议引擎301来执行。在一些示例实施例中,该事件包括多个CPU周期、内存命令或时钟时间中的至少ー个。内存代理模块703用于通过访问本地内存代替访问内存刀片来响应一致性请求。内存代理模块703还可用于在预置数目的事件終止之后清除生成位。另外,基干与虚拟内存页面相关联的參考计数器值,内存代理模块703可用于识别包括数据的虚拟内存页面,该识别基于參考计数器值和与另ー个虚拟内存页面相关联的另ー个參考计数器值的比较。交换模块704可作为内存代理模块的一部分,或被可操作地连接到内存代理模块,以基于參考计数器值和与另ー个虚拟内存页面相关联的另ー个參考计数器值的比较,来交换虚拟内存页面和另ー个内存页面或便于虚拟内存页面的移动。在一些示例实施例中,内存命令包括利用PCIe协议对内存命令进行封装。图8是采用用于将数据(例如收回(evicted)的脏数据)存储到回写缓冲器的计算刀片102的形式的示例计算机系统的框图。这些各个框可以硬件、固件或软件被实现为计算刀片101、计算刀片102或计算刀片103的部分。示出了可操作地被连接到内存模块802的CPU 801。可操作地连接包括逻辑或物理连接。示出了被可操作地连接到CPU 801以识别虚拟内存页面的内存代理模块803,该虚拟内存页面部分地基于參考计数器值被识别。内存代理模块803还用于从虚拟内存页面获得数据,基于參考计数器值和与另ー个虚拟内存页面相关联的另ー个參考计数器值的比较,该虚拟内存页面与另ー个虚拟内存页面相比不常被访问。该比较可由驻留在内存代理模块803上的或可操作地被连接到内存代理模块803的缓存一致性协议引擎301来执行。内存代理模块803还可用于将数据存储到回写缓冲器中。在一些示例实施例中,參考计数器值被存储在由内存代理模块803管理的页面缓存中。该页面缓存可以为页面缓存302。某个示例实施例可包括回写缓冲器被存储在页面缓存,例如由内存代理模块803管理的页面缓存302中。内存代理模块803还可用于将在回写缓冲器中存储的数据写入由例如内存刀片104的内存刀片管理的内存模块。内存模块可以为内存模块208。在一些示例实施例中,虚拟内存页面或另ー个虚拟内存页面中的至少一个被存储到例如内存刀片104的内存刀片。图9是图示了在计算刀片上执行以处理内存命令的示例方法900的流程图。计算刀片可包括计算刀片101、计算刀片102或计算刀片103。内存代理模块603执行操作901,以识别关于与内存刀片相关联的虚拟内存页面的内存命令。对于由不应包含内存刀片的内 存代理接收的其它请求,例如使一组缓存数据无效的请求,内存代理可代表内存刀片直接响应,以维持缓存一致性。内存代理模块603执行操作902,以管理包括在页面缓存中的虚拟内存页面。内存代理模块603执行操作903,以将内存命令传输到内存刀片105。内存代理模块603执行操作904,以更新包括在内存代理模块603所使用的页面缓存中的生成位和參考计数器值。在一些示例实施例中,识别可包括检查进入的请求的目标数据地址是否落入内存刀片所包含的地址范围中。如果是,则内存代理可进行缓存一致性请求到内存命令的转换。在一些示例实施例中,内存命令包括读命令、写命令或交换命令中的至少ー种。在一些示例实施例中,页面缓存包括含有虚拟内存页面的预取缓冲器。图10是图示了在计算刀片上执行以实现内存代理来維持缓存一致性的示例方法1000的流程图。计算刀片可包括计算刀片101、计算刀片102或计算刀片103。内存代理模块703执行操作1001,以接收用于识别驻留在待访问的内存刀片上数据的一致性请求。内存代理模块703执行操作1002,以利用内存代理将一致性请求转换为基于内存刀片所使用的协议而被格式化的内存命令。内存代理模块703执行操作1003,以将内存命令传输到内存刀片,以访问驻留在内存刀片上的数据。内存代理模块703执行操作1004,以更新用于识别访问包括数据的虚拟内存页面的总次数的參考计数器值。内存代理模块703执行操作1005,以设置生成位,生成位用于识别在访问包括数据的虚拟内存页面期间的事件。在ー些示例实施例中,该事件包括多个CPU周期、内存命令或时钟时间中的至少ー种。内存管理模块703执行操作1006,以通过访问本地内存代替访问内存刀片来响应一致性请求。内存管理模块703执行操作1007,以在预置数目的事件終止之后清除生成位。内存代理模块703执行操作1008,以基于与虚拟内存页面相关联的參考计数器值识别包括数据的虚拟内存页面,该识别基于參考计数器值和与另ー个虚拟内存页面相关联的另ー个參考计数器值的比较。内存代理模块703执行操作1009,以基于參考计数器值和与另ー个虚拟内存页面相关联的另ー个參考计数器值的比较,来交换虚拟内存页面和另ー个虚拟内存页面(參见例如这里的图4、图5和图16)。在一些示例实施例中,内存命令的传输包括利用PCIe协议对内存命令进行封装。
图11是图示了在计算刀片上执行以将数据存储到回写缓冲器的示例方法1100的流程图。计算刀片可包括计算刀片101、计算刀片102或计算刀片103。内存代理模块803执行操作1101以识别虚拟内存页面,虚拟内存页面部分地基于參考计数器值被识别。内存代理模块803执行操作1102以从虚拟内存页面获取数据,基于该參考计数器值和与另ー个虚拟内存页面相关联的另ー个參考计数器值的比较,该虚拟内存页面与另ー个虚拟内存页面相比不常被访问。内存代理模块803执行操作1103,以利用内存代理将数据存储到回写缓冲器中。在一些示例实施例中,该參考计数器值被存储在由内存代理管理的页面缓存中。进ー步,在一些示例实施例中,回写缓冲器被存储在由内存代理管理的页面缓存中。内存代理模块803执行操作1104,以将回写缓冲器写到由内存刀片管理的内存模块。内存模块可包括内存模块208。在一些示例实施例中,虚拟内存页面或另ー个虚拟内存页面中的至少ー个被存储到例如内存刀片104的内存刀片。图12是图示了用于开始启动具有内存代理的计算刀片引导的示例方法1200的流程图。图示了在计算刀片101上执行的各个操作1201至1210。执行操作1201,以进行计 算刀片101的系统引导。执行操作1202,以获得关于内存刀片容量分配的用户选项。如这里所使用的,获得包括识别、检索或一些其它合适的操作。这些用户选项可由服务等级协议(SLA)或引导项指定。执行操作1203,以获得处理器插座的数目和与在其上执行方法1200的计算刀片(例如计算刀片101)相关联的内存大小。在一些示例实施例中,操作1203的执行包括处理器速度、总线速度或其它的与性能有关的信息的检索。执行操作1204,以获得远程内存代理和与每ー个远程内存代理相关联的主动式内存刀片连接的数量。主动式内存刀片连接可包括通信信道205、执行线程或一些其它合适的连接。执行操作1205,以寄存和对应的内存刀片之间的主动式内存刀片连接,来检索在每ー个内存刀片上可利用的闲置空间大小。执行操作1206,以进行由例如服务等级协议所指定的容量选项选择。容量选项选择可包括与计算刀片或内存刀片相关联的内存容量。执行操作1207,以从所有可利用的内存刀片请求可利用速度的闲置空间。可利用的内存刀片为可操作地被连接到计算刀片101的内存刀片。执行操作1208,以将处理器插座和远程代理之间的物理地址空间分割开。该分割可基于将SMA复制到RMMA,且将偏移值指派到RMMA。此外,内存代理记录每一个主动式内存刀片所包含的地址范围,地址范围将用于识别与内存刀片所存储的或所包含的虚拟页面相关联的请求。当在计算刀片上仅存在一个处理器插座时,执行操作1209。在该示例情况下,实现旁路使得一致性事务对于数据请求被迂回。执行终止操作1210,以重新开始通常的系统引导。在一些示例实施例中,SMA被内存刀片104使用,以映射成RMMA。具体地,利用唯一地识别内存刀片的刀片ID对处于地址映射模块211中的映射寄存器索引,其中在映射寄存器中的每ー个条目表示由利用刀片ID被识别的内存刀片管理的超页面的数量。进一歩,从SMA解析的基础条目和超页面用于索引成RMMA映射。也驻留在地址映射模块211上的RMMA映射中的每个条目表示超页面与该超页面相关联的许可。超页面为例如16KB以上的虚拟内存页面。子页面为例如小于16KB的虚拟内存页面。图13是图示了示例操作1206的执行的流程图。执行操作1301,以基于所请求的远程内存容量除以内存刀片的数量而得到的商为“需要闲置(needfree)”变量赋予ー个值。执行操作1302,以基于在计算刀片101可操作地被连接到的所有内存刀片上的可利用的最小闲置空间,为“最小闲置”变量赋予一个值。示出了判定“最小闲置”变量是否小于(<)“需要闲置”变量的判定操作1303。在判定操作1303评估为“真”的情况下,执行操作1305。在判定操作1303评估为“假”的情况下,执行操作1304。操作1304在被执行时从每ー个内存刀片分配容量,使得分配最小量的闲置内存,该分配由“最小闲置”变量来定义。操作1305在被运行时从每ー个内存刀片分配内存容量,使得开始从该具有最大量的闲置内存的内存刀片分配容量。在一些示例实施例中,代替操作1305,执行另一个合适的方法来分配闲置内存。该合适的方法可包括内存分配体制,由此从计算刀片101可操作地被连接到的每ー个内存刀片平均分配内存。
图14为图示了用于页面缓存访问的示例方法1400的流程图。该方法1400可由例如计算刀片101的计算刀片来执行。执行操作1401,以处理进入的内存请求。进入的内存请求可为内存命令,例如读或写命令。执行判定操作1402,以确定该进入的请求是否是针对包括ー标记的虚拟内存页面,该标记用于表示所请求的虚拟内存页面是否为“热门页面”或“冷门页面”。在判定操作1401评估为“假”的示例情况下,执行操作1403。在判定操作1402评估为“真”的情况下,执行判定操作1404。操作1403在被执行时选择受害者页面、将受害者页面的脏块放入回写缓冲器中、配置新的页面缓存条目以及清除存在位。可基于由在ー个以上的生成中选择受害者页面的次数所产生的统计值来选择受害者页面。另外,受害者页面的脏块可被放入计算刀片的主内存中代替放入回写缓冲器中。判定操作1404判定具体的内存块是否存在。在判定操作1404评估为“假”的情况下,执行操作1405。在判定操作1404评估为“真”的情况下,执行操作1406。操作1405在被执行时从内存刀片104读取所请求的块。在顺利地执行操作1405的情况下,执行操作1407。操作1406在被运行时计算DRAM地址,并读取来自内存代理所管理的DRAM的块。执行操作1407,以将数据配置到页面缓存中,且设置存在位。该存在位表示虚拟内存页面内的对应块被配置在页面缓存中。运行操作1408,以更新生成位值、參考计数器和存在位。操作1407的运行可通过内存代理217而加快,以反映远程和本地内存页面的交換。运行终止操作1409,以重新开始与内存刀片101相关联的通常的系统引导。在一些示例实施例中,数据来自于计算刀片101的页面缓存,因此可避免将请求发送到内存刀片104。为实现快速访问,页面缓存在SRAM中維持缓存标记数组,并存储数据数组DRAM。除了每ー个缓存条目对应于4K虚拟内存页面而不是典型的64字节缓存块之夕卜,该标记数组的结构可类似于处理器缓存。块存在向量可用于记录在页面缓存中什么块当前存在和有效。对非存在块的访问触发内存刀片读取,并且页面缓存收回触发内存刀片针对脏块进入写入。—些示例实施例包括可被集成到页面缓存中的缓存块预取。该集成可利用以缓存块间隔尺寸标记的小型预取缓冲器被完成,或直接被完成在页面缓存中。类似于处理器缓存,如果缓存块在被请求之前从内存刀片被获取,则各个预取策略可用于部分地或完全地隐藏远程内存访问等待时间。一个简单的策略是下N个块预取,每当存在页面缓存丢失吋,就预取下N个块。为便于受害者页面的选择和促进页面移动(例如參见图4和图5),页面缓存维持每页访问统计数字。这些统计数字可涉及(I)生成替换的访问近因信息和(2)页面升级的访问频率信息。这些统计信息可被分成单个的数组,并保持在页面缓存SRAM中用于快速访问。
图15是存储作为页面缓存部分的生成位和參考计数器值的示例向量的图。例如示出了生成第一行1501、生成第二行1502以及生成第三行1503。生成行是向量中表示虚拟内存页面在对应的生成中已被访问的行。生成可以为许多CPU周期、许多内存命令、许多时钟时间或ー些其它的合适时段或事件的发生。向量中的每列表示特定的虚拟内存页面。在一些示例实施例中,如以1507所表示的,清除生成行(例如生成第一行1501)。可基于如在SLA中表示的预置数目的生成来清除行。如在生成第二行1502中所反映的,每次访问虚拟内存页面时,位就浮动(flip)以表示虚拟内存页面的访问。在生成第二行1502中,两个虚拟内存页面已被访问。生成第三行1503反映參考计数器值,该值对在某数量的生成内访问虚拟内存页面的次数进行合计。该參考计数器值可用于确定“热门页面”、“冷门页面”或受害者页面。在预定数量的生成(例如两个生成)内没有被访问的特定虚拟内存页面可称作“冷门页面”,也可以为受害者页面。“冷门页面”可以被视作受害者页面,且可被随后交換(參见例如图4和图5)。可能的受害者页面以1504-1506来表示。还示出了最近已被访问且不能被视作用于交换的“热门页面”。“热门页面”以1508-1510来表示,且通过位值“I”以向量来表示。作为“热门页面”的虚拟内存页面同样地可以被标记在内存缓存305中。根据生成所定义的,标记可以为识别最近被访问的虚拟内存页面的位值或位值的集合。 图16为图示出用于加快页面移动的示例方法1600的流程图。示出了处理进入的请求的过程1601,其中这些进入的请求为与将热门远程页面移动到本地内存有关的内存命令。运行操作1602,以选择被标记为“热门页面”的虚拟内存页面。示出了用于确定热门页面的数量是否大于0的判定操作1603。若判定操作1603评估为“假”,则运行操作1604。若判定操作1603评估为“真”,则运行判定操作1605。运行操作1604,以从另ー个随意选择的缓存组选择“热门页面”。判定操作1605确定“热门页面”的数量是否大于I。若判定操作1605评估为“假”,则运行操作1606。若判定操作1605评估为“真”,则运行操作1607。操作1606在被运行时将非存在块读入到来自内存刀片的虚拟内存页面中。操作1607在被运行时选择具有最小数量的非存在缓存块的“热门页面”。在完成操作1606和1607之后,运行操作1608。操作1608在被运行时将“冷门页面”复制到页面缓存的回写缓冲器中。运行操作1609,以将“热门页面”复制到之前存储“冷门页面”的地方。运行操作1610,以更新计算刀片的页面表。运行操作1611,以成批地使TLB条目无效并刷等级2 (L2)缓存来确保正确性。运行操作1612,以重新开始计算刀片的正常运行。在一些示例实施例中,页面缓存不仅存储最近使用的虚拟内存页面和块,还提供用于加快页面选择的近因信息(例如访问生成位)和页面级访问频率信息。进ー步,页面缓存还提供用于临时存储被降级的本地页面的回写缓冲器。在ー些示例情况中,当页面移动被启动时(例如參见图5),其可从页面缓存请求多个热门页面。所述热门页面可选自热门页面向量。热门页面向量包括參考计数器的最高位。生成位和參考计数器两者都可被周期性地清除,从而较早的生成位被清除且用于记录最近的生成访问信息;參考计数器的较低位被清除,并且较高位被转换为较低位,以记录历史信息。在一些实施例中,生成位用于受害者页面选择。该选择逻辑在缓存组内选择受害者页面,且选出在更近的生成中没有被访问的第一页面。该选择可通过对这些位进行逻辑与(AND)来完成。第一零逻辑可用于选择所述页面。在一些示例实施例中,运行方法1600,以利用參考历史信息(例如在图15中所示的页面表访问位中可得到的)从待取代的本地内存中选择冷门页面。运行方法1600,以识另IJ“热门页面”、“冷门页面”,并交换每对“冷门”页面和“热门”页面。该交换包括页面内容和地址映射/再映射两者的交換。处理器转换后备缓冲器(TLB)被潜在成批地刷新(例如TLB击毁(shootdown)被执行),以反映这种地址映射变化。在交換之前从内存刀片读取位于每ー个“热门页面”中的非存在块,并且“冷门页面”还可临时存储在页面缓存中且逐渐地被回写到内存刀片。在一些示例实施例中,如果页面此时在多个计算刀片之间只读式共享,则内存刀片可限制该页面被移动到计算刀片的本地内存中。只读信息和访问页面的计算刀片的数量被记录在页面缓存中,且用于避免选择这种热门页面来移动。图17是示例计算机系统1700的图。示出了 CPU 1701。处理器裸片201可以为CPU 1701。在一些示例实施例中,可可以多个核的形式(例如多核计算机系统)或以ー些其它合适的配置在计算机系统1700上实现多个CPU。一些示例CPU包括x86系列CPU。SRAM1702可操作地被连接到CPU 1701。可操作地连接包括物理或逻辑连接,例如点对点连接、光学连接、总线连接或一些其它合适的连接。示出了同时作为内存控制集线器(MCH)或集成内存控制器(MC)已知的北桥1704,其处理CPU和PCIe、DRAM和南桥之间的通信。示出 了提供用于到图形卡和相关联的图形处理单元(GPU)的连接的计算机扩展端ロ的PCIe端ロ 1703。示出了可操作地被连接到北桥1704的以太网端ロ 1705。示出了可操作地被连接到北桥1704的数字视频接ロ(DVI)端ロ 1707。另外,示出了可操作地被连接到北桥1704的模拟视频图形阵列(VGA)端ロ 1706。将北桥1704与南桥1711连接的是点对点链接1709。在一些示例实施例中,点对点链接1709可被上述提及的物理或逻辑连接中的ー个代替。还图示了作为I/O控制集线器(ICH)或平台控制集线器(PCH)也已知的南桥1711。高分辨率(HD)音频端ロ 1708、引导RAM端ロ 1712、PCI端ロ 1710、通用串行总线(USB)端ロ 1713、串行高级技术附件(SATA)的端ロ 1714以及低引脚计数(LCP)总线的端ロ 1715可操作地被连接到南桥1711。超级输入/输出(I/O)控制器1716可操作地被连接到南桥1711,以提供低带宽设备(例如键盘、鼠标、串行端ロ、并行端ロ、磁盘控制器)的接ロ。并行端ロ 1717和串行端ロ 1718可操作地被连接到超级I/O控制器。SATA端ロ 1714可与永久性存储介质(例如光存储设备或磁存储设备)连接,永久型存储介质包括存储由这里所图示的方法或功能中任意ー个或多个使用或采用的ー个或多个指令集和数据结构(例如软件)的机器可读介质。软件还可在其被计算机系统1700运行期间完全地或至少部分地驻留在SRAM 1702中和/或CPU 1701中。该指令可进ー步通过10/100/1000以太网端ロ 1705、USB端ロ 1713或这里所图示的一些其它合适的端ロ被传输或被接收。在一些示例实施例中,可移动的物理存储介质被示出为单个介质,并且术语“机器可读介质”应当被看作包括存储ー个或多个指令集的单个介质或多个介质(例如集中式或分布式数据库,和/或相关的缓存和服务器)。术语“机器可读介质”还应当被看作包括能够存储、编码或传输由机器执行的指令集且使得机器执行这里所图示的ー种或多种方法中任意方法的任意介质。术语“机器可读介质”因此应当被看作包括但不限于固态内存、光学和磁介质以及载波信号。(软件的)数据和指令被存储在实现为一个或多个计算机可读或计算机可用存储介质的相应存储设备中。存储介质包括不同形式的存储器,包括例如DRAM或SRAM、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪存的半导体存储设备;例如硬盘、软盘和可移动盘的磁盘;包括磁带的其它磁性介质;和例如光盘(CD)或数字多功能磁盘(DVD)的光学介质。注意,上述的软件指令可被提供在分布于可能具有多个节点的大系统中的多个计算机可读或计算机可用存储介质上。这种计算机可读或计算机可用存储介质被看作是物品(或制造品)的部分。物品或制造品可指代所制造的任意单个部件或多个部件。在前述描述中,记载了众多细节以提供对本发明的理解。然而,本领域技术人员可以理解,本发明可以在没有这些细节的情况下实现。尽管针对有限数目的实施例公开了本发明,但是本领域技术人员可以理解基于所公开实施例的众多修改和变化。g在由所附的权利要求覆盖落入本发明的“真正”精神和范围内的这种修改和变化。·
权利要求
1.一种计算机系统,包括 内存代理模块,用于识别关于与内存刀片相关联的虚拟内存页面的内存命令; 可操作地被连接到所述内存代理的内存模块,包括由所述内存代理使用的用于管理所述虚拟内存页面的页面缓存;和 用于将所述内存命令传输到所述内存刀片的传输模块。
2.根据权利要求I所述的计算机系统,其中所述内存代理包括位于所述计算机系统的母板上的内存代理、作为所述计算机系统上的插座的部分的内存代理或作为所述计算机系统上的内存控制器的部分的内存代理中的至少一个。
3.根据权利要求I所述的计算机系统,其中所述内存代理包括缓存一致性协议引擎,以过滤掉对所述内存刀片的不必要的访问,并更新包括在由所述内存代理使用的所述页面缓存中的生成位和参考计数器值。
4.根据权利要求I所述的计算机系统,其中识别包括将缓存一致性请求转换成用于所述内存刀片的所述内存命令。
5.根据权利要求I所述的计算机系统,其中所述内存命令包括读命令、写命令或交换命令中的至少一个。
6.一种计算机实现的方法,包括 利用内存代理接收用于识别驻留在待访问的内存刀片上的数据的一致性请求; 利用所述内存代理将所述一致性请求转换为基于所述内存刀片所使用的协议而被格式化的内存命令;和 利用所述内存代理将所述内存命令传输到所述内存刀片,以访问驻留在所述内存刀片上的所述数据。
7.根据权利要求6所述的计算机实现的方法,进一步包括利用所述内存代理更新用于识别访问包括所述数据的虚拟内存页面的总次数的参考计数器值。
8.根据权利要求6所述的计算机实现的方法,进一步包括利用所述内存代理设置生成位,所述生成位识别在访问包括所述数据的虚拟内存页面期间的事件。
9.根据权利要求6所述的计算机实现的方法,进一步包括通过访问本地内存代替访问所述内存刀片来响应所述一致性请求。
10.根据权利要求6所述的计算机实现的方法,进一步包括在终止预置数量的事件之后,利用所述内存代理清除生成位。
11.根据权利要求6所述的计算机实现的方法,进一步包括利用所述内存代理基于与所述虚拟内存页面相关联的参考计数器值来识别包括所述数据的虚拟内存页面,所述识别基于所述参考计数器值和与另一个虚拟内存页面相关联的另一个参考计数器值的比较。
12.根据权利要求11所述的计算机实现的方法,进一步包括基于所述参考计数器值和与所述另一个虚拟内存页面相关联的另一个参考计数器值的比较,交换所述虚拟内存页面和所述另一个内存页面。
13.根据权利要求6所述的计算机实现的方法,其中,所述内存命令的传输包括利用快捷外设互联(PCIe)协议、快速通道互联(QPI)或超传输协议对所述内存命令进行封装。
14.一种计算机实现的方法,包括 利用内存代理识别虚拟内存页面,所述虚拟内存页面部分地基于参考计数器值被识别; 利用所述内存代理从所述虚拟内存页面获取数据,基于所述参考计数器值和与另一个虚拟内存页面相关联的另一个参考计数器值的比较,所述虚拟内存页面与所述另一个虚拟内存页面相比不常被访问;以及 利用所述内存代理将所述数据存储到回写缓冲器中。
15.根据权利要求14所述的计算机实现的方法,进一步包括利用所述内存代理将所述回写缓冲器写到所述内存刀片所管理的内存模块。
全文摘要
示出了一种系统和方法,其中内存代理模块用于识别关于与内存刀片相关联的虚拟内存页面的内存命令,并且针对这种页面维持和优化缓存一致性。该系统和方法还包括可操作地被连接到所述内存代理的内存模块,其包括由内存代理所使用的页面缓存,以管理虚拟内存页面。进一步,该系统和方法包括传输模块,以将内存命令和数据结构传输到内存刀片,以便于在计算刀片的本地内存和位于内存刀片上的远程内存之间的页面移动。
文档编号G06F12/06GK102804151SQ200980160199
公开日2012年11月28日 申请日期2009年6月29日 优先权日2009年6月29日
发明者常继川, 帕塔·帕拉纳森, 凯文·林 申请人:惠普开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1