静默活动页面迁移错误的制作方法

文档序号:19350616发布日期:2019-12-06 21:21阅读:137来源:国知局
静默活动页面迁移错误的制作方法



背景技术:

相关技术的描述

许多计算装置使用虚拟存储器技术来处理软件程序对数据的存取。虚拟存储器页面转换机制使得系统软件能够为每个进程或应用程序创建单独的地址空间。这些地址空间被称作虚拟地址空间。系统软件使用分页机制来使用一组分层地址转换表选择性地将物理存储器的单独页面映射到所述虚拟地址空间中,该组分层地址转换表被统称为页面表。虚拟存储器可以用任何处理器来实施,包括但不限于中央处理单元(cpu)、图形处理单元(gpu)和加速处理单元(apu)。

当程序存取数据时,将包括所述数据的具有给定大小(例如,4千字节(kb))的存储器的块(被称作存储器的“页面”)从备份存储体(例如,磁盘驱动器或半导体存储器)复制到计算装置中的主存储器中的可用物理位置。一些系统具有存储于存储器中的多个不同的页面大小。胜于使用程序来管理页面的物理位置,计算装置中的存储器管理单元管理页面的物理位置。替代使用基于页面的物理位置的地址(或“物理地址”)来存取存储器,所述程序使用虚拟地址空间中的虚拟地址来存取存储器。从程序的观点来看,虚拟地址指示数据存储于存储器中的页面内的实际物理地址(即,物理位置),并且因此通过程序使用所述虚拟地址来进行存储器存取。然而,虚拟地址并未直接映射到存储数据的物理位置的物理地址。因此,作为管理页面的物理位置的部分,存储器管理单元将所述程序使用的虚拟地址转换成数据实际上所处的物理地址。随后使用经转换的物理地址来执行所述程序的存储器存取。为了执行上述转换,存储器管理单元使用存储器中的页面表,所述页面表包括所述存储器中存储的页面的从虚拟地址到物理地址的一组转换。

不时地,系统可以在存储器位置之间迁移页面,致使虚拟到物理地址转换改变。在一些情况中,系统确定要将页面从第一存储器移动到第二存储器。可选地,所述系统可以作为垃圾回收操作的部分在单个存储器内移动页面。然而,在进程正在运行时(例如,图形程序正在执行渲染任务),对页面进行迁移可能会中断。

附图说明

结合附图,通过参考以下描述将能更好地理解本文中描述的方法和机制的优点,在附图中:

图1是计算系统的一个实施方案的框图。

图2示出页面表项(pte)格式的实例。

图3是页面迁移正在进行中的系统的一个实施方案的框图。

图4是页面迁移完成之后的系统的一个实施方案的框图。

图5是示出用于在存储器位置之间迁移第一页面的方法的一个实施方案的一般化流程图。

图6是示出用于处理转换请求的方法的一个实施方案的一般化流程图,所述转换请求命中具有迁移挂起指示的pte。

图7是示出用于处理转换请求的方法的一个实施方案的一般化流程图。

具体实施方式

在以下描述中,陈述众多具体细节以提供对本文中呈现的方法和机制的全面理解。然而,本领域的普通技术人员应认识到,可以在没有这些具体细节的情况下实施各种实施方案。在一些情况中,未详细地示出熟知的结构、部件、信号、计算机程序指令和技术以免掩盖本文中描述的方法。将了解,为了简单地并清楚地进行说明,图式中所示的元件不一定按比例绘制。举例来说,所述元件中的一些元件的尺寸可以相对于其它元件放大。

本文中公开用于在存储器位置之间迁移页面的系统、设备和方法。在一个实施方案中,一种系统包括至少一个处理器、存储器管理单元(mmu)和存储器子系统。在一个实施方案中,检测第一页面将从所述存储器子系统中的第一存储器位置迁移到第二存储器位置的指示。在迁移所述第一页面之前,对与所述第一页面对应的第一页面表项(pte)定位。随后,将迁移挂起指示存储于所述第一pte中。在一个实施方案中,通过禁用所述第一页面的读取权限和写入权限来将所述迁移挂起指示编码在所述第一pte中。在将所述迁移挂起指示存储于所述第一pte中之后,可以开始所述第一页面的迁移。

在一个实施方案中,在将所述迁移挂起指示编码在所述第一pte中时,由所述mmu接收以所述第一pte为目标的转换请求。如果所述转换请求对应于读取请求,那么允许对所述第一页面执行读取操作。否则,如果所述转译请求对应于以所述第一页面为目标的写入请求,那么防止对所述第一页面执行写入操作,并且生成静默重试请求并将所述静默重试请求传送到请求客户端。在一个实施方案中,所述静默重试被称作“静默”是因为它不包括生成中断或更新状态寄存器。因此,所述请求客户端被配置为在之后的时间点重试所述写入请求。

现在参看图1,示出计算系统100的一个实施方案的框图。在一个实施方案中,计算系统100包括经由中央处理单元(cpu)芯片集140联接到系统存储器150的系统单芯片(soc)105。soc105还可以被称作集成电路(ic)。在一个实施方案中,soc105至少包括输入/输出(i/o)接口155、结构120、图形处理单元(gpu)130和本地存储器110。soc105还可以包括为了避免使图式难懂而未在图1中示出的其它部件。在另一个实施方案中,gpu130可以是另一种类型的处理单元(例如,中央处理单元(cpu)、专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp))。

gpu130至少包括转换后备缓冲器(tlb)复合体135和计算机单元145a-n,所述计算机单元表示用于图形处理或通用处理的任何数目和类型的计算单元。gpu130经由结构120联接到本地存储器110。在一个实施方案中,使用高带宽存储器(hbm)来实施本地存储器110。在一个实施方案中,gpu130被配置为执行图形管线操作,诸如绘图命令、像素操作、几何计算以及用于向显示器呈现图像的其它操作。在另一个实施方案中,gpu130被配置为执行与图形无关的操作。在另一个实施方案中,gpu130被配置为执行图形操作和非图形相关操作。

在一个实施方案中,gpu130使用tlb来高速缓存被分配给在这些装置上执行的不同进程的虚拟地址的、虚拟地址到物理地址的映射。这些tlb被示出为计算单元145a-n中相应的l1tlb170a-n以及tlb复合体135中的l2tlb160。tlb复合体135还包括表格查看器165。一般来说,取决于实现方式,存储器管理单元可以包括一个或多个tlb、表格查看逻辑、故障处理程序和电路。在一些实施方案中,可以在gpu130内为指令或数据实施不同的tlb。举例来说,由执行查找需要更多循环的较大l2tlb给相对较小且较快的l1tlb做后备。与对页面表125a-b的表格查看相比,由l2tlb执行的查找相对较快。取决于实施方案,页面表125a-b可以位于本地存储器110、系统存储器150中,或者页面表125a-b的部分可以位于本地存储器110和系统存储器150中。tlb复合体的一些实施方案包括指令tlb(itlb)、一级数据tlb(l1dtlb)以及二级数据tlb(l2dtlb)。tlb复合体的其它实施方案可以包括其它配置和/或层级的tlb。

可以通过将对虚拟地址转换的请求传递到l1tlb来执行针对gpu130中的载入指令或存储指令的地址转换。如果在l1tlb的项中发现所述虚拟地址,那么l1tlb返回物理地址。如果所述对虚拟地址转换的请求在l1tlb中未命中,那么将所述请求传递到l2tlb。如果所述对虚拟地址的请求在l2tlb中未命中,那么针对所述请求执行页面表查看。页面表查看可能会导致对页面表层级的一个或多个查找。

将页面从系统存储器150移动到本地存储器110或将页面从本地存储器110移动到系统存储器150的过程在本文中被称作“页面迁移”。另外,在系统存储器150内移动页面或在本地存储器110内移动页面在本文中也被称作“页面迁移”。本地存储器110与系统存储器150的组合在本文中可以被称作“存储器子系统”。可选地,本地存储器110或系统存储器150在本文中可以被称作“存储器子系统”。系统100被配置为生成一个指示,所述指示是在给定页面将在存储器子系统中的位置之间移动时,所述给定页面处于页面迁移状态。这样允许无缝地继续进行其它操作。在一个实施方案中,系统100被配置为修改给定页面的页面表项并且在给定页面处于页面迁移状态时关闭读取特权和写入特权。此特定组合(读取特权和写入特权被禁用)的含义已变成指示给定页面处于页面迁移状态。在其它实施方案中,对给定页面处于页面迁移状态进行编码的其它方式是可能的并且能设想到。

如本文中使用,术语“页面”被定义为虚拟存储器的固定长度的相连块。“页面”还被定义为系统100用于进行存储器管理的数据单位。页面的大小可以依照实施方案而改变,并且在单个实施方案中可以利用多个不同的页面大小。应理解,术语“存储器页面”和“页面”意欲表示任何大小的存储器区。

在一个实施方案中,响应于检测到第一页面在存储器位置之间的迁移开始,对与第一页面对应的第一页面表项(pte)定位并且将迁移挂起指示存储于第一pte中。在一个实施方案中,通过禁用读取权限和写入权限来将所述迁移挂起指示编码在第一pte中。如果在迁移挂起指示编码在第一pte中时以第一pte为目标的转换请求被所述mmu接收到并且所述转换请求对应于读取请求,那么允许对所述第一页面进行读取操作。否则,如果所述转换请求对应于写入请求,那么防止对所述第一页面进行写入操作,并且生成静默重试请求并将所述静默重试请求传送到请求客户端。所述请求客户端随后可以在之后的时间点重试所述写入请求。在另一个实施方案中,如果所述转换请求对应于读取请求,那么阻止所述读取请求,并且针对所述读取操作生成重试请求。

i/o接口155联接到结构120和cpu芯片集140,并且i/o接口155表示任何数目和类型的接口(例如,外围部件互连(pci)总线、pci-扩展(pci-x)、pcie(pci快速)总线、千兆以太网(gbe)总线、通用串行总线(usb))。soc105经由cpu芯片集140联接到存储器150,其中存储器150包括一个或多个存储器模块。所述存储器模块中的每一者包括安装在其上的一个或多个存储器装置。在一些实施方案中,存储器150包括安装在母板或其它载体上的一个或多个存储器装置,soc105也安装在所述母板或其它载体上。在一个实施方案中,存储器150用于实施随机存取存储器(ram)以在操作期间与soc105一起使用。所实施的ram可以是静态ram(sram)、动态ram(dram)、电阻式ram(reram)、相变ram(pcram)或任何其它易失性或非易失性ram。用于实施存储器150的dram的类型包括(但不限于)双倍数据速率(ddr)dram、ddr2dram、ddr3dram等等。

在各种实施方案中,计算系统100可以是计算机、膝上型计算机、移动装置、服务器或各种其它类型的计算系统或装置中的任一者。请注意,计算系统100和/或soc105的部件的数目可以依照实施方案而改变。各个部件/子部件的数目可以比图1中所示的数目多或少。举例来说,在另一个实施方案中,soc105可以包括联接到多个存储器的多个存储器控制器。还请注意,计算系统100和/或soc105可以包括图1中未示出的其它部件。举例来说,在另一个实施方案中,soc105还可以包括具有一个或多个处理器核心的中央处理单元(cpu)。另外,在其它实施方案中,计算系统100和soc105可以通过与图1中所示的方式不同的其它方式来建构。

现在转向图2,示出页面表项(pte)格式的实例。图2顶部处的pte格式205示出了根据一个实施方案的pte格式。在一个实施方案中,物理页面地址存储于位39到12中。在一个实施方案中,由pte格式205中的物理页面地址指向的页面的大小是4kb。因此,可寻址存储器的每个4kb逻辑页面各有一个pte。在其它实施方案中,由pte格式205中的物理页面地址指向的页面可以是各种其它大小中的任一者。

在pte格式205中示出写入权限字段210和读取权限字段215。在一个实施方案中,当这两个字段被设为“0”时,这指示由该项指向的页面处于页面迁移状态。举例来说,在图2的中间示出页面迁移状态220的pte格式以说明指向将在存储器位置之间迁移的页面的项的写入权限字段和读取权限字段的值。项220还包括地址225以及pte格式205中示出的其它字段。请注意,在其它实施方案中,在pte内对页面迁移状态指示进行编码的其它方式是可能的并且能设想到。

根据另一个实施方案的pte格式的实例在图2的底部处示出为pte格式235。在pte格式235中,t字段240用于指示对应的页面是否具有读取权限。在pte格式235中使用t字段240来对读取权限进行编码实现了仅写入页面的迁移。在一个实施方案中,如果t字段240被设为一,那么对应的页面具有读取权限。否则,如果t字段240被设为零,那么对应的页面不具有读取权限。在一个实施方案中,当给定页面的r和w字段等于零(即,给定页面处于页面迁移状态)时,如果t字段240被设为一,那么允许对给定页面进行读取。然而,如果给定页面的r和w字段等于零,那么如果t字段240被设为零,那么阻止对给定页面进行读取。请注意,在其它实施方案中,可以利用与图2中所示的pte格式不同的其它合适的pte格式。

现在参看图3,示出页面迁移正在进行中的系统300的一个实施方案的框图。示出页面表块305中的页面表项330,并且项330至少包括页面地址310、写入权限字段315和读取权限字段320。如项330中所示,写入权限字段315与读取权限字段320均被设为零。在一个实施方案中,这指示由项330指向的页面345a处于页面迁移状态。在其它实施方案中,可以利用对对应的页面处于页面迁移状态进行编码的其它方式。在页面迁移之前,页面345a存储于本地存储器340中。为了进行此讨论,假定页面345a正迁移到系统存储器350。这示出为系统存储器350中的已迁移页面345b。在其它实施方案中,页面345a可以迁移到其它位置。举例来说,页面345a可以迁移到本地存储器340内的另一个位置或迁移到除系统存储器350之外的另一个存储器。

在一个实施方案中,当转换请求命中项330时,如果存储器请求是读取请求,那么将允许对页面地址310的后续存储器请求继续进行。随后将对本地存储器340的页面345a执行读取请求。否则,如果存储器请求是写入请求,那么将生成静默重试请求并将所述静默重试请求发送到请求客户端。在此时间点将不会允许写入请求继续进行。客户端可以在之后的时间点重试写入请求,并且如果在处理针对重试的写入请求的另一个转换请求时页面迁移已完成,那么将允许写入请求继续。

现在转向图4,在页面迁移完成之后的系统400的一个实施方案的框图。系统400的页面表块405、本地存储器440和系统存储器450意欲表示在对于已迁移页面445已完成页面迁移操作之后的之后的时间点时的系统300(图3)相应的页面表块305、本地存储器340和系统存储器350,所述已迁移页面现在位于地址410处。因此,项430的写入权限字段415和读取权限字段420均被设为一以指示页面迁移已完成并且写入权限和读取权限已归还给已迁移页面445。可选地,如果已迁移页面445仅具有写入特权或读取特权,那么在页面迁移完成之后将设置这些字段中的仅一者。如果以已迁移页面445为目标的转换请求被页面表块405接收到,那么将响应于检测到在项430中启用写入权限或读取权限而以典型方式来处理转换请求和后续的存储器请求。

现在参看图5,示出用于在存储器位置之间迁移第一页面的方法500的一个实施方案。为了进行讨论,按顺序的次序示出这个实施方案中的步骤以及图6到图7的那些步骤。然而,请注意,在所描述的方法的各种实施方案中,同时地、按与所示次序不同的次序来执行所描述的元件中的一者或多者或完全省去所描述的元件中的一者或多者。还按需要执行其它额外元件。本文中描述的各种系统或设备中的任一者被配置为实施方法500。

检测第一页面将从第一存储器位置迁移到第二存储器位置的指示(框505)。在一个实施方案中,第一存储器位置是在第一存储器(例如,本地存储器)中,并且第二存储器位置是在第二存储器(例如,全局存储器)中。在另一个实施方案中,第一与第二存储器位置均位于单个存储器内。

接下来,对与第一页面对应的第一页面表项(pte)以及第一pte的任何高速缓存的副本定位(框510)。将第一页面处于页面迁移状态的指示存储于第一pte和第一pte的任何高速缓存的副本中(框515)。在一个实施方案中,通过禁用第一页面的读取权限和写入权限来将所述指示编码在pte中。在其它实施方案中,可以利用将迁移挂起指示编码在第一pte中的其它方式。此外,将对第一页面的无效请求发送到tlb,并且清除对存储器的任何未决写入(框520)。一旦对存储器的未决写入作出决定,那么可以开始第一页面的页面迁移复制过程(框522)。

如果第一页面的迁移已完成(条件框525,“是”分支),那么从第一pte和第一pte的任何高速缓存的副本清除迁移挂起指示(框530)。此外,第一pte被修改成指向第一页面已迁移到的第二存储器位置(框535)。此外,为第一pte的任何高速缓存的副本生成无效请求(框540)。随后,所述系统等待无效完成确认,然后重新使用第一存储器位置(框542)。在框542处,方法500结束。如果第一页面的迁移还未完成(条件框525,“否”分支),那么所述系统等待页面迁移完成(框545)并且随后返回到条件框525。

现在转向图6,示出用于处理转换请求的方法600的一个实施方案,所述转换请求命中具有迁移挂起指示的pte。处理器生成针对给定虚拟地址的转换请求(框605)。在一个实施方案中,所述处理器是包括至少一个处理器、mmu和存储器子系统的系统(例如,图1的系统100)的部分。取决于所述实施方案,所述系统还可以包括任何数目的其它部件。mmu检测给定虚拟地址的pte包括迁移挂起指示(框610)。如果以给定虚拟地址为目标的存储器请求是读取请求(条件框615,“是”分支),那么确定是否允许对目标物理页面进行读取(条件框620)。在一个实施方案中,是否允许对目标物理页面进行读取可以受到可编程控制。如果允许对目标物理页面进行读取(条件框620,“是”分支),那么允许对目标物理页面执行读取操作(框635)。在框635之后,方法600结束。如果不允许对目标物理页面进行读取(条件框620,“否”分支),那么防止对目标物理页面执行读取操作并且生成静默重试错误并将所述静默重试错误传送到请求客户端(框640)。在之后的时间点,客户端重试对给定虚拟地址的读取请求(框645)。在框645之后,方法600结束。

如果以所述虚拟地址为目标的存储器请求是写入请求(条件框615,“写入”分支),那么防止对目标物理页面执行写入操作,并且生成静默重试错误并将所述静默重试错误传送到请求客户端(框625)。在一个实施方案中,所述静默重试错误被称作“静默”是因为所述错误不包括生成中断或更新状态寄存器。静默重试错误向客户端指示其应在之后的时间点重试所述写入请求。在之后的时间点,客户端将重试对给定虚拟地址的写入请求(框630)。一旦迁移完成,将对新位置处的物理页面执行写入请求。在框630之后,方法600结束。

现在参看图7,示出用于处理转换请求的方法700的一个实施方案。检测对读取权限和写入权限被禁用的页面表项(pte)的命中(框705)。在一个实施方案中,当禁用pte的读取权限和写入权限时,这指示对应的物理页面目前正在存储器位置之间迁移。如果后续的存储器请求是读取请求(条件框710,“读取”分支),那么允许对目标物理页面执行读取请求,尽管禁用了所述页面的读取权限(框715)。此外,系统软件防止针对所述存储器请求生成错误(框720)。在框720之后,方法700结束。如果后续的存储器请求是写入请求(条件框710,“写入”分支),那么将重试请求发送给客户端并且阻止写入请求(框725)。在之后的时间点,客户端可以重试写入请求(框730)。在框730之后,方法700结束。

在各种实施方案中,使用软件应用程序的程序指令来实施先前描述的方法和/或机制。所述程序指令以高级编程语言(诸如c)来描述硬件的行为。可选地,使用硬件设计语言(hdl),诸如verilog。所述程序指令存储于非暂时性计算机可读存储介质上。众多类型的存储介质是可用的。所述存储介质在使用期间可由计算系统存取以将程序指令和随附数据提供给计算系统以实现程序执行。所述计算系统包括至少一个或多个存储器以及被配置为执行程序指令的一个或多个处理器。

应强调,上述实施方案仅是实现方式的非限制性实例。一旦完全了解了以上公开内容,众多变化和修改将变成本领域的技术人员显而易见的。以下权利要求意欲被解释为包括所有此类变化和修改。

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