用于实时迁移为dma锁定的页的技术和机制的制作方法

文档序号:6494773阅读:224来源:国知局
用于实时迁移为dma锁定的页的技术和机制的制作方法
【专利摘要】用于将来白第一范围的物理存储单元的数据迁移到第二范围的物理存储单元的技术。分配第二范围的物理存储单元,以用于来自第一范围的物理存储单元的数据的迁移。清除针对第一范围的物理存储单元的未决事务。对一个或多个地址转换条目进行重新编程。将数据从第一范围的物理存储单元迁移到第二范围的物理存储单元。对后续的存储器事务进行处理,以使这些事务被定向到第二范围的物理存储单元。
【专利说明】用于实时迁移为DMA锁定的页的技术和机制
【技术领域】
[0001]本发明的实施例涉及存储器管理技术。具体地说,本发明的实施例涉及用于管理去往各个存储器模块的直接存储器存取(DMA)业务的技术。
【背景技术】
[0002]通常需要关键任务环境中的处理器提供高可靠性、服务性和可用性特性。存储器模块(例如,双列直插式存储器模块(DIMM))是频繁地遭遇故障的组件,并且可能会造成灾难性的存储器系统故障。大多数现代操作系统使用的技术通过监测存储器模块组件中的软差错率,从而不使用具有高故障概率的模块,来防止这些故障。这种技术可以称为预测故障分析(PFA)。例如,如果检测到的差错的数量超过门限量,则可以建议进行替换。在这些系统中,存储器模块替换需要进行停工。
【专利附图】

【附图说明】
[0003]在附图的图中,通过示例的方式,而不是限制的方式来描绘本发明的实施例,在附图中,相似的附图标记指代类似的部件。
[0004]图1是可以接收要通过直接存储器存取(DMA)机制传送到存储器的数据的系统的一个实施例的概念图,其中DMA机制支持如本申请所描述的数据迁移。
[0005]图2是涉及DMA机制的用于将来自于一个物理存储器地址集的数据重新安置到第二物理存储器地址集的技术的一个实施例的流程图。
[0006]图3是可以提供如本申请所描述的数据迁移的电子系统的一个实施例的框图。【具体实施方式】
[0007]在下面的描述中,对众多特定的细节进行了阐述。但是,可以在不使用这些特定细节的情况下实现本发明的实施例。在其它实例中,为了避免对本说明书的理解造成模糊,没有详细地示出公知的电路、结构和技术。
[0008]操作系统具有对可用于本操作系统的用户页进行迁移的能力。但是,操作系统不能对为了直接存储器存取(DMA)用途而锁定的物理存储器进行很容易地迁移,这是由于这需要在有关的物理存储器区域可以退出使用之前与设备进行通信。本申请描述了允许对存储在为了 DMA用途所锁定的物理存储器之中的数据进行迁移的技术。在一个实施例中,将输入/输出存储器管理单元(IOMMIU)连同操作系统(OS)和/或虚拟机器管理器(VMM)支持一起使用,以便提供对存储在为了 DMA用途所锁定的物理存储单元中的数据进行的迁移。
[0009]当前技术并不支持DMA页的迁移。允许存储器移除的大多数操作系统将DMA页共置在单个节点中,并且期望该存储器具有足够的冗余,以便具有更大的弹性。将所有的存储器强制到单个节点,会增加通往存储器的路径,并增加时延,包括由于NUMA特性而引起的带宽问题。
[0010]例如,本申请所描述的技术可以用于将来自有故障DMM的物理页重新安置到另一个DIMM。可以对IOMMU页表进行重新编程或修改,使得后续的DMA转换使用新的页。这可以准许从有故障的(或者不期望的)物理存储器中移除旧的页。
[0011]图1是可以接收要通过直接存储器存取(DMA)机制传送到存储器的数据的系统的一个实施例的概念图,其中DMA机制支持如本申请所描述的数据迁移。图1的系统可以是任何类型的电子系统。下面提供电子系统的进一步细节。
[0012]可以将主机电子系统概念性地至少划分成用户空间110和内核空间120。用户空间110可以指代用于应用程序和其它面向用户的操作的资源,例如存储单元。内核空间120可以指代用于操作系统和其它系统功能目的的资源。
[0013]内核130位于内核空间120中。内核130是在图1的电子系统上运行的操作系统的中心组件。在一个实施例中,I/O存储器管理单元(IOMMU)驱动器135与内核130进行交互,以便向主机系统提供存储器管理功能。在一个实施例中,设备驱动器140与内核130和/或IOMMU驱动器135进行交互,以便向一个或多个应用程序提供低层级系统服务。仅仅是为了简化的理由,在图1中只描绘了一个设备驱动器,可以支持任意数量的设备驱动器。设备驱动器140可以使用DMA机制来访问存储单元。
[0014]当系统在运行时,远程设备195可以发送一请求,该请求导致通过DMA机制进行存储器存取。远程设备195可以通过网络190与该系统进行通信。网络接口 170向主机系统提供去往网络190的接口。网络接口 170可以是本领域已知的任何类型的网络接口。
[0015]来自于远程设备的消息被网络接口 170接收。在将从网络接口 170接收的I/O虚拟地址进行转换之后,将这些消息从网络接口 170传递到10MMU155。存储器控制器150提供去往10MMU155的接口,后者可以维持成一个表格或者其它适当的结构。10MMU155提供到存储器系统160中所包括的物理地址的映射。
[0016]存储器控制器150与IOMMU驱动器135进行交互,以便管理包括DMA存储器存取在内的存储器存取。IOMMU驱动器135和/或设备驱动器140可以如下文所描述那样地进行工作,以便针对于DMA机制,至少管理和控制虚拟地址到物理地址的映射。IOMMU驱动器135和设备驱动器140也可以提供另外的功能。
[0017]IOMMU驱动器135和存储器控制器150用于使用10MMU155来管理存储器存取。10MMU155提供到物理存储器系统160中的多个物理存储单元的映射。物理存储器系统160可以包括多个物理存储器器件(例如,多个DIMM)。例如,与存储单元167相比,存储单元165可能位于不同的物理存储器件上。
[0018]在操作期间,IOMMU驱动器135和存储器控制器150可以如本申请所描述那样地进行工作,以便将数据从例如存储单元165迁移到存储单元167。在一个实施例中,存储器控制器150或者其它系统组件与物理存储器系统160相耦合,以便监测与物理存储器系统160的性能有关的差错和其它统计信息。可以使用该信息来确定应当何时在物理存储器器件之间迁移数据。在一个实施例中,PFA统计数据可以由操作系统代理进行编译,或者可以在系统B10S/BMC中执行,等等。
[0019]图2是涉及DMA机制的用于将来自于一个物理存储器地址集的数据重新安置到第二物理存储器地址集的技术的一个实施例的流程图。参照图2所提供的示例涉及:将页从产生过多的校正错误的DIMM移到另一个DIMM。但是,参照图2所描述的技术也可适用于其它应用。[0020]可以针对物理存储器模块的每一个页,执行参照图2所描述的技术,直到该物理存储器模块中的所有数据都已经被迁移为止。操作系统或者其它系统实体可以指示该存储器模块可以被安全地替换。如果IOMMU使用较大的页,那么复制一个较大的页具有时延暗示,以便在页复制期间保持DMA。在一个实施例中,执行页重新安置的IOMMU驱动器可以在进行较大的页迁移之前,选择将该页分割成多个较小(例如,4k字节、16k字节、32k字节)的块,随后再重组回较大的页。
[0021]在一个实施例中,IOMMU驱动器或者其它系统组件可以为迁移,分配新的物理页210。在一个实施例中,与要被迁移的数据所处的页相比,该新的页物理地位于不同的物理存储器器件上。例如,该迁移可以由操作系统进行触发,或者可以由检测到存储器故障超过预先选定的门限的其它实体进行触发。再举一个例子,操作系统或其它实体可以触发迁移,使得可以将有缺陷的存储器模块换成良好的存储器模块。
[0022]可以将排队无效提交给事务队列,以便清除未完成的事务,并停止进一步的事务220。在一个实施例中,针对特定的存储器区域,执行该无效和清除命令。该无效和清除允许在转换到新的物理存储单元之前,使用旧的物理存储器对未决的事务/转换进行处理。这防止了数据的丢失和/或损坏。
[0023]当已经清除了该未决队列时,将控制转交给IOMMU驱动器230。此时,对于DMA不存在未决事务,输入的事务已被停止和存储,直到重新启动这些事务为止。
[0024]IOMMU驱动器将存储在旧物理存储单元之中的数据复制到新物理存储单元240。该新物理存储单元可以位于单个物理存储器模块上,或者可以分布在多个物理存储器模块上。
[0025]IOMMU驱动器或者其它系统实体对一个或多个转换结构进行重新编程250。在一个实施例中,对转换表格的最高级进行重新编程,以指示将使用新的物理地址。在一个实施例中,IOMMU驱动器更新与该新页相对应的页表项(PTE)条目。在多级表格结构中,只有最后一级可能是必须更新的。
[0026]可以至少部分地基于在页之间传送数据所需要的时间量,来确定要使用的页大小。页越小,所需要的时间也越少,这使得在进行迁移时具有更低的存储器时延。在一个实施例中,可以将页分段成更小的片段(例如,4k字节)。此外,也可以支持其它片段和/或页大小。
[0027]IOMMU驱动器可以提交用于重新启动转换的命令260。此时,新的DMA请求或者转换由新的物理存储单元进行服务270。旧的物理存储单元可以退出使用。在一个实施例中,在设备使用地址转换服务(ATS)的情况下,在继续进行上面的步骤之前,IOMMU驱动器可以使任何转换无效。否则,目标设备可鞒具有不会意识到该新的物理页的状态转换。
[0028]一些IOMMU实现具有在某些条件之下保持针对给定的页的转换的能力,例如,如果现有的转换导致造成页行走(page walk)的未命中,则到相同页的后续转换将被阻止,直到完成该未决的页行走为止。类似地,当例如用于页的IOTLB无效时,本申请所描述的技术可以保证在完成无效命令之前,完成任何已转换的请求。
[0029]IOMMU能力提供了对新请求进行拖延的能力,其可以用于支持本申请所描述的技术。具体而言,当操作系统提交一个无效命令时,其还可以指定用于暂停而不是立即恢复的标志。稍后,当操作系统或其它系统实体已经执行了页复制时,其可以提交具有恢复标志的另一个无效命令,来准许转换继续进行。
[0030]在一个实施例中,本申请所描述的技术可以实现短期静默,并恢复IOTLB无效的流,其中当在驱动器帮助的情况下使用时,其可以用于存储器过量使用的场景。在一个实施例中,当存储器过量使用时,在不设置PTE的情况下但是通过清除许可,IOMMU驱动器可以建立页表。当对写进行复制时,可以允许读,但可以通过在叶PTE条目中适当地清除许可,来阻止写。
[0031]在一个实施例中,当尝试执行针对IO虚拟地址的DMA写时,IOMMU驱动器可以拦截故障,执行页锁定(page pin)或者建立PTE,并提交恢复命令。如果需要重新安置页,则可以在更新叶PTE许可并提交恢复命令之前,执行复制。
[0032]图3是可以提供如本申请所描述的数据迁移的电子系统的一个实施例的框图。图3中所示的电子系统旨在表示一系列的电子系统(无论是有线系统还是无线系统),其包括:例如,桌面型计算机系统、膝上型计算机系统、蜂窝电话、个人数字助理(PDA)(其包括具有蜂窝能力的PDA)、机顶盒。替代性的电子系统可以包括更多、更少和/或不同的组件。
[0033]在一个实施例中,电子系统300是平板设备或者智能电话设备。这些设备可以具有多个无线接口(例如,WiFi和/或蜂窝、或者无线接口的其它组合)。此外,这些设备可以具有触摸屏接口或者其它类型的用户接口,其中这些接口允许用户在不需要诸如键盘、鼠标、指示器等等之类的外部组件的情况下与设备进行交互。
[0034]电子系统300包括用于传输信息的总线305或者其它通信设备,以及耦接到总线305的处理器310,其中处理器310可以对信息进行处理。虽然电子系统300被示为具有单个处理器,但电子系统300可以包括多个处理器和/或协处理器。此外,电子系统300还可以包括耦接到总线305的随机存取存储器(RAM)或者其它动态存储设备320 (本申请称为主存储器),并且可以存储可以由处理器310执行的信息和指令。此外,主存储器320还可以用于在处理器310执行指令期间,存储临时变量或者其它中间信息。
[0035]此外,电子系统300还可以包括耦接到总线305的只读存储器(ROM)和/或其它静态存储设备330,其可以存储用于处理器310的静态信息和指令。数据存储设备340可以耦接到总线305,以存储信息和指令。诸如磁盘或光盘之类的数据存储设备340和相应的驱动器可以耦接到电子系统300。
[0036]此外,电子系统300还可以通过总线305耦接到显示设备350 (例如,阴极射线管(CRT)或液晶显示器(IXD)),以便向用户显示信息。字母数字式输入设备360 (其包括字母数字键和其它键)可以耦接到总线305,以便向处理器310传输信息和命令选择。另一种类型的用户输入设备是光标控制370(例如,鼠标、跟踪球或者光标指示键),用于向处理器310传输方向信息和命令选择,并控制显不器350上的光标移动。
[0037]此外,电子系统300还可以包括网络接口 380,以便提供针对网络(例如,局域网)的接入。网络接口 380可以包括:例如,具有天线385的无线网络接口,其中天线385可以表示一付或多付天线。此外,网络接口 380还可以包括:例如,用于通过网络电缆387与远程设备进行通信的有线网络接口,例如,该网络电缆387可以是以太网电缆、同轴电缆、光纤光缆、串行电缆或者并行电缆。
[0038]在一个实施例中,例如,网络接口 380可以通过遵循IEEE802.1lb和/或IEEE802.1lg标准来提供针对局域网的接入,和/或无线网络接口可以例如通过遵循蓝牙标准来提供针对个域网的接入。还可以支持其它无线网络接口和/或协议。
[0039]IEEE802.1lb 与 1999 年 9 月 16 日批准的、题目为“Local and Metropolitan AreaNetworks, Partll:ffireless LAN Medium Access Control(MAC)and Physical Layer(PHY)Specifications:Higher-Speed Physical Layer Extension in the2.4GHz Band,,的 IEEE标准802.llb-1999以及有关的文档相对应。IEEE802.1lg与2003年6月27日批准的、题目为 “Local and Metropolitan Area Networks, Partll:ffireless LAN Medium AccessControl (MAC)and Physical Layer (PHY)Specifications, Amendment4:Further HigherRate Extension in the2.4GHz Band” 的 IEEE 标准 802.llg-2003 以及有关的文档相对应。在蓝牙技术联盟、公司于2001年2月22日公布的“Specification of the BluetoothSystem:Core, Versionl.1”中,描述了蓝牙协议。此外,还可以支持相关协议以及该蓝牙标准的前一版本或者后续版本。
[0040]除了或替代通过无线LAN标准的通信,网络接口 380还可以使用例如时分多址(TDMA)协议、全球移动通信系统(GSM)协议、码分多址(CDMA)协议和/或任何其它类型的无线通信协议来提供无线通信。
[0041]说明书中对于“一个实施例”或“实施例”的提及是指结合该实施例描述的具体特征、结构或特性包括在本发明的至少一个实施例中。在本说明书的各个地方出现的短语“在一个实施例中”未必都是表不相同的实施例。
[0042]虽然通过一些实施例对本发明进行了描述,但本领域技术人员应当认识到,本发明并不限于所描述的实施例,而是在所附权利要求书的精神和范围内,可以用修改和改变来实施。因此应将所描述内容视作为示例性的,而非限制性的。
【权利要求】
1.一种用于将来自第一范围的物理存储单元的数据迁移到第二范围的物理存储单元的方法,包括: 分配所述第二范围的物理存储单元,以用于来自所述第一范围的物理存储单元的数据的迁移; 清除针对所述第一范围的物理存储单元的未决事务; 对一个或多个地址转换条目进行重新编程; 将来自所述第一范围的物理存储单元的数据迁移到所述第二范围的物理存储单元;以及 对后续的存储器事务进行处理,以使所述事务被定向到所述第二范围的物理存储单J Li ο
2.根据权利要求1所述的方法,其中,所述第一范围的物理存储单元位于第一物理存储器器件上,并且所述第二范围的物理存储单元位于第二物理存储器器件上。
3.根据权利要求1所述的方法,还包括: 监测至少所述第一范围的物理存储单元的一个或多个差错率;以及响应于所述一个或多个差错率中的至少一个满足或者超过相应的门限值,发起所述数据的迁移。
4.根据权利要求1所述的方法,其中,对一个或多个地址转换条目进行重新编程包括:对多级转换结构中的最后一级条目进行重新编程。
5.根据权利要求1所述的方法,其中,对所述第一范围的物理存储单元进行的存储器存取是通过直接存储器存取(DMA)机制提供的。
6.根据权利要求5所述的方法,其中,对所述第二范围的物理存储单元进行的存储器存取是通过所述直接存储器存取(DMA)机制提供的。
7.一种系统,包括: 用于存储数据的物理存储器系统; 与所述物理存储器系统相耦合的存储器控制器,所述存储器控制器有权访问用于存储虚拟地址和物理地址之间的映射的信息的一个或多个结构,所述物理存储器系统至少包括第一范围的物理存储单元和第二范围的物理存储单元; 与所述存储器控制器相耦合的输入/输出存储器管理单元(IOMMU),所述IOMMU使得所述第二范围的物理存储单元被分配以用于来自所述第一范围的物理存储单元的数据的迁移,使得清除针对所述第一范围的物理存储单元的未决事务,使得对一个或多个地址转换条目进行重新编程,使得将来自所述第一范围的物理存储单元的数据迁移到所述第二范围的物理存储单元,以及使得对后续的存储器事务进行处理以使所述事务被定向到所述第二范围的物理存储单元。
8.根据权利要求7所述的系统,其中,所述第一范围的物理存储单元位于第一物理存储器器件上,并且所述第二范围的物理存储单元位于第二物理存储器器件上。
9.根据权利要求7所述的系统,其中,所述IOMMU还使得:
监测至少所述第一范围的物理存储单元的一个或多个差错率;以及 响应于所述一个或多个差错率中的至少一个满足或者超过相应的门限值,发起所述数据的迁移。
10.根据权利要求7所述的系统,其中,对一个或多个地址转换条目进行重新编程包括:对多级转换结构中的最后一级条目进行重新编程。
11.根据权利要求7所述的方法,其中,对所述第一范围的物理存储单元进行的存储器存取是通过直接存储器存取(DMA)机制提供的。
12.根据权利要求11所述的方法,其中,对所述第二范围的物理存储单元进行的存储器存取是通过所述直接存储器存取(DMA)机制提供的。
13.一种用于将来自第一范围的物理存储单元的数据迁移到第二范围的物理存储单元的装置,包括: 用于分配所述第二范围的物理存储单元,以用于来自所述第一范围的物理存储单元的数据的迁移的模块; 用于清除针对所述第一范围的物理存储单元的未决事务的模块; 用于对一个或多个地址转换条目进行重新编程的模块; 用于将来自所述第一范围的物理存储单元的数据迁移到所述第二范围的物理存储单元的模块;以及 用于对后续的存储器事务进行处理,以使所述事务被定向到所述第二范围的物理存储单元的模块。
14.根据权利要求13所述的装置,其中,所述第一范围的物理存储单元位于第一物理存储器器件上,并且所述第二范围的物理存储单元位于第二物理存储器器件上。
15.根据权利要求13所述的装置,`还包括: 用于监测至少所述第一范围的物理存储单元的一个或多个差错率的模块;以及 用于响应于所述一个或多个差错率中的至少一个满足或者超过相应的门限值,发起所述数据的迁移的模块。
【文档编号】G06F13/16GK103502954SQ201280016387
【公开日】2014年1月8日 申请日期:2012年2月9日 优先权日:2011年3月31日
【发明者】A·拉伊, R·M·桑卡兰 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1