处理直接存储器访问请求的设备和方法转让专利

申请号 : CN200680036765.4

文献号 : CN100589089C

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : G·K·巴特利J·M·博肯哈根W·P·郝维斯D·P·考尔兹

申请人 : 国际商业机器公司

摘要 :

设备包括将数据从存储器内的第一块(A)移至第二块(B)的虚拟存储器管理器。在虚拟存储器管理器准备将数据从第一块传送给第二块时,定义存储器的第三临时存储器块(C)。改变DMA控制器内的转换表以使目标为第一块的DMA传送改为目标为临时存储器块。然后,虚拟存储器管理器将数据从第一块传送给第二块。在传送完成时,检验在将数据从第一块写入第二块时DMA是否将数据传送给临时存储器块了。如果是,将写入临时存储器块的数据写入第二块。优选的是,用硬件寄存器来有效地检测临时存储器块的改变。

权利要求 :

1.一种处理直接存储器访问请求的设备,包括:

至少一个处理器;

与至少一个处理器耦接的直接存储器访问控制器;

与直接存储器访问控制器和与至少一个处理器耦接的存储器;以 及驻留在存储器内并由至少一个处理器执行的虚拟存储器管理器, 虚拟存储器管理器在存储器内创建临时块,改变直接存储器访问控制 器内的地址转换表,以使直接存储器访问控制器的未来写操作写入临 时块,在存储器内将数据从第一块移至第二块,在将数据从第一块移 至第二块后确定在虚拟存储器管理器将数据从第一块移至第二块期 间是否出现过直接存储器访问控制器对临时块的任何写操作,以及如 果确定结果为肯定则将在将数据从第一块移至第二块期间直接存储 器访问控制器写入临时位置的数据从临时位置写入第二块。

2.权利要求1的设备,所述设备还包括具有多个比特、每个比 特与所定义的存储器块对应的硬件寄存器,其中如果直接存储器访问 控制器将数据写入与每个比特对应的所定义的块,则该比特的值为1, 并且如果直接存储器访问控制器没有将数据写入与该比特对应的所 定义的块,则该比特的值为0。

3.权利要求2的设备,其中所述硬件寄存器包括修改记录寄存 器。

4.权利要求2的设备,其中所述硬件寄存器驻留在直接存储器 访问控制器中。

5.权利要求2的设备,其中在对应的存储器块内的数据被写入 第二块时,所述硬件寄存器的每个为1的比特被改变为0。

6.一种在存储器内将数据从第一块移至第二块的计算机实施的 方法,所述方法包括下列步骤:(A)在存储器内创建临时块;

(B)改变直接存储器访问控制器内的地址转换表,以使直接存 储器访问控制器的未来写操作写入临时块;

(C)在存储器内将数据从第一块移至第二块;

(D)在步骤(C)的数据移动后,确定在步骤(C)的数据移 动期间是否出现过直接存储器访问控制器对临时块的任何写操作;以 及(E)如果在步骤(C)的数据移动期间出现过直接存储器访问 控制器对临时块的任何写操作,将在步骤(C)的数据移动期间由直 接存储器访问控制器所写的数据从临时位置写入第二块,并且将在执行步骤(E)时直接存储器访问控制器写入临时块的数据 写入第二块中,直至在执行步骤(E)时无数据写入临时块。

7.权利要求6的方法,还包括下列步骤:

(F)如果在步骤(E)的数据写期间出现过直接存储器访问控 制器对临时块的任何写操作,将直接存储器访问控制器在步骤(E) 的数据写期间所写的数据从临时位置写入第二块。

8.权利要求7的方法,还包括下列步骤:

(G)重复步骤(F),直到在步骤(F)的数据写期间没有数据 要被直接存储器访问控制器写入临时单元。

9.权利要求8的方法,其中通过检验硬件寄存器的反映直接存 储器访问控制器对临时块进行改变的状态来实现所述步骤(D)。

10.权利要求9的方法,其中所述硬件寄存器驻留在直接存储器 访问控制器内。

11.权利要求9的方法,其中所述硬件寄存器包括多个比特,每 个比特与所定义的存储器块对应,其中,如果直接存储器访问控制器 将数据写入与每个比特对应的所定义的块,则该比特的值为1,并且 如果直接存储器访问控制器没有将数据写入与该比特对应的所定义 的块,则该比特的值为0。

12.权利要求11的方法,其中在对应的存储器块内的数据被写 入第二块时,所述硬件寄存器的每个为1的比特被改变为0。

说明书 :

技术领域

本发明涉及计算机系统,具体地说,涉及在提供虚拟存储器环境 的计算机系统中处理直接存储器访问(DMA)请求的技术。

背景技术

许多计算机系统具有将虚拟地址映射为存储器内的物理地址的 虚拟存储器环境。一种特定类型的虚拟存储器环境在单个平台上定义 了多个逻辑部分,从而使得每个逻辑部分从客户机角度来看呈现为一 个独立和唯一的计算机系统。在逻辑分区的计算机系统内,通常需要 诸如硬盘驱动器之类的I/O装置来写入存储器。硬盘驱动器与存储器 之间的这种传送通常通过总线芯片组(chipset)中的直接存储器访问 (DMA)控制器进行。由于出现DMA传送相对处理器事件是异步的, 这种DMA传送就可能会引起数据一致性(data coherency)问题。例 如,假设虚拟存储器管理器决定将数据从存储器内的块A移至块B, 在现有技术中,DMA控制器能够在将数据从块A移至块B的移动完 成前,写入块A。如果写入块A出现在已经拷贝到块B的位置,块B 现在有的就是过时的数据,这可能导致总线或系统崩溃。由于还没有 一种方式能保证在包括DMA控制器和虚拟存储器系统的计算机系统 内的数据一致性,计算机产业得继续忍受由于数据一致性问题而引起 的潜在系统性崩溃和其他问题。

发明内容

本发明的第一方面提供了一种设备,这种设备包括:至少一个处 理器;与至少一个处理器耦接的直接存储器访问(DMA)控制器;与 DMA控制器和与至少一个处理器耦接的存储器;以及驻留在存储器 内并由至少一个处理器执行的虚拟存储器管理器。虚拟存储器管理器 在存储器内创建临时块,改变DMA控制器内的地址转换表,以使 DMA控制器的未来写操作写入临时块,在存储器内将数据从第一块 移至第二块,以及在将数据从第一块移至第二块后确定在虚拟存储器 管理器将数据从第一块移至第二块期间是否出现过DMA控制器对临 时块的任何写操作。如果确定结果为肯定,虚拟存储器管理器将在数 据移动期间DMA控制器写入临时位置的数据从临时位置写入第二 块。
本发明的第二方面提供了一种在存储器内将数据从第一块移至 第二块的方法,这种方法包括下列步骤:
(A)在存储器内创建临时块;
(B)改变DMA控制器内的地址转换表,以使DMA控制器的 未来写操作写入临时块;
(C)在存储器内将数据从第一块移至第二块;
(D)在步骤(C)的数据移动后,确定在步骤(C)的数据移 动期间是否出现过DMA控制器对临时块的任何写操作;以及
(E)如果在步骤(C)的数据移动期间出现过DMA控制器对 临时块的任何写操作,将在步骤(C)的数据移动期间由DMA控制 器所写的数据从临时位置写入第二块。
按照这些优选实施例,设备包括在存储器内将数据从第一块移至 第二块的虚拟存储器管理器。在虚拟存储器管理器准备将数据从第一 块传送给第二块时,将存储器的第三存储器块定义为临时存储器块。 改变DMA控制器内的转换表,以使DMA传送指向第三存储器块。 然后,虚拟存储器管理器将数据从第一块传送给第二块。在传送完成 时,检验在将数据从第一块写入第二块时DMA是否将数据传送给临 时存储器块。如果是,则将写入临时存储器块的数据写入第二块。优 选的是,可以用硬件的修改记录寄存器(MRR)来有效地检测临时存 储器块的改变。MRR包括多个比特,每个比特与所定义的存储器块 对应,其中,如果DMA控制器将数据写入与每个比特对应的所定义 的块,则该比特为1,并且如果DMA控制器没有将数据写入与该比 特对应的所定义的块,则该比特为0。如果MRR非零,每次一个比 特地扫描MRR,将与寄存器内为1的比特对应的存储器块从临时块 写入第二块,在将存储器块写入第二块后将为1的比特清为0。一旦 所有的比特都已清零(意味着所有的对应存储器块都已写入第二块), MRR再进行检验,以确保在前一次对MRR比特清零期间没有再出 现DMA传送操作。这个过程继续,直到所有的MRR比特都为零, 表示从上次检验MRR以来没有出现DMA传送。
本发明的其他方面包括具有一组控制数据处理设备使之执行如 上所述的方法的程序代码指令的计算机程序。
从以下对如附图所例示的本发明的优选实施例的更为具体的说 明中可以清楚地看到本发明的以上这些和其他一些特征和优点。

附图说明

以下结合附图对本发明的实施例进行比较详细的例示性说明,在 这些附图中,同样的标记所标的是同样的部分,其中:
图1为作为优选实施例的设备的方框图;
图2为作为优选实施例的方法的流程图;
图3为作为优选实施例的修改记录寄存器(MRR)和对应存储 器块的方框图;以及
图4为作为优选实施例的用如图3所示的MRR具体实现图2中 的步骤240的方法的流程图。

具体实施方式

本发明的实施例提供了在运行虚拟存储器管理器、允许对存储器 进行DMA传送的系统内保证数据完整性的方式。在存储器内的数据 块需从第一位置移至第二位置时,DMA传送被重定向至临时位置。 数据块被移动,随后进行检验,确定在移动期间是否出现写入临时位 置操作。如果是,则将写入临时位置的数据写入第二位置,再进行另 一次检验,确定是否出现任何写入临时位置操作。在最为优选的实现 中,当对临时位置做出改变时,硬件寄存器进行跟踪,从而允许根据 寄存器的状态容易地确定是否有任何数据需要从临时位置拷贝到第 二位置。
参见图1,计算机系统100为作为本发明的优选实施例的设备的 一个适当实现。计算机系统100为IBM的eServer iSeries计算机系统。 然而,本领域的技术人员可以看到,本发明的机理和设备同样适用于 任何计算机系统,无论这计算机系统是复杂的多用户计算设备、单用 户工作站还是嵌入式控制系统。如图1所示,计算机系统100包括处 理器110、主存储器120、大容量存储装置接口130、显示器接口140 和网络接口150。处理器110通过处理器总线162与总线控制器芯片 组180耦接。总线控制器芯片组180通过系统总线164与主存储器120、 大容量存储装置接口130、显示器接口140和网络接口150耦接。大 容量存储装置接口130用来将诸如直接存取存储装置(DASD)155 之类的大容量存储装置接到计算机系统100上。一种特定类型的直接 存取存储装置155是可以将数据存储到CD RW 195上和从CD RW 195读出数据的可读和可写CD RW驱动器。另一种特定类型的直接 存取存储装置155是硬盘驱动器。
按照优选实施例,主存储器120含有数据121、操作系统122、 虚拟存储器管理器123和所定义的存储器块124、125和126。数据 121表示任何输入计算机系统100内的任何程序或从计算机系统100 内任何程序输出的数据。操作系统122是在行业中称为i5/OS的多任 务操作系统,然而,本领域的技术人员可以理解,本发明的精神实质 和专利保护范围不局限于任何操作系统。存储器块124-126由虚拟存 储器管理器123管理。由于单个硬盘驱动器可以划分成用于不同逻辑 分区的独立逻辑驱动器,因此虚拟存储器管理器必须对在逻辑分区之 间共享磁盘驱动器进行管理。这种在多个逻辑分区之间的硬件资源共 享通常需要在存储器位置之间拷贝数据。因此,虚拟存储器管理器123 可以周期性地将数据从存储器120内的一个块移至存储器内的另一个 块。存储器块124-126呈现为可以由虚拟存储器管理器123管理的任 意存储器块。
计算机系统100使用众所周知的虚拟寻址机制,其使得计算机系 统100的程序表现为它们似乎只能访问大的、单个存储实体而不是访 问多个较小的诸如主存储器120和DASD装置155之类的存储实体。 因此,虽然数据121、操作系统122和虚拟存储器管理机构123示为 驻留在主存储器120内,但本领域的技术人员可以认识到这些数据项 不必同时都完全包含在主存储器120内。还应注意的是,所谓“存储 器”在这里用来指计算机系统100的整个虚拟存储器(virtual memory),并可以包括与计算机系统100耦接的其他计算机系统的 虚拟存储器。
处理器110可以由一个或多个微处理器和/或集成电路构成。处 理器110执行存储在主存储器120内的程序指令。主存储器120存储 处理器110可以访问的程序和数据。在计算机系统100启动时,处理 器110最初执行构成操作系统122的程序指令。操作系统122是复杂 的管理计算机系统100的资源的程序。这些资源中的一些是处理器 110、主存储器120、大容量存储装置接口130、显示器接口140、网 络接口150和系统总线160。
虽然计算机系统100示为只含有单个处理器和单个系统总线,但 本领域的技术人员可以理解,本发明可以用具有多个处理器和/或多个 总线的计算机系统实施。此外,在这个优选实施例中所用的这些接口 各包括独立的、完整编程的、用来使处理器110卸下计算强度大的处 理的微处理器。然而,本领域的技术人员可以理解,本发明同样适用 于仅用I/O适配器执行类似功能的计算机系统。
显示器接口140用来直接将一个或多个显示器165连接到计算机 系统100上。这些显示器165可以是非智能(即,低能力)的终端或 可完全编程的工作站,用来使系统管理员和用户可以与计算机系统 100通信。然而,要注意的是,虽然提供了显示器接口140来支持与 一个或多个显示器165通信,但计算机系统100不一定需要显示器 165,因为与用户和其他过程的所有所需交互作用都可以通过网络接 口150进行。
网络接口150用来使计算机系统100可通过网络170与其他计算 机系统和/或工作站(例如,图1中的175)连接。无论计算机系统100 如何与其他计算机系统和/或工作站连接、无论网络连接170是用当今 的模拟和/或数字技术还是通过今后的一些联网机制,本发明同样适 用。此外,可用许多不同的网络协议来实现网络。这些协议是专用的 计算机程序,使计算机可以通过网络170通信。TCP/IP(传输控制协 议/因特网协议)是适当的网络协议的例子。
总线控制器芯片组180可以控制包括(但不局限于)PCI、PCI-X 和PCI快速总线的任何适当总线的功能。注意,这些总线在它们处理 DMA传送上是不同的。在PCI或PCI-X总线的情况下,可以告诉想 要执行DMA传送的设备等待。然而,在PCI快速总线的情况下,没 有办法告诉设备等待。因此,如果虚拟存储器管理器执行将数据从第 一块移至第二块的移动,DMA控制器可能在第一块内的一部分已经 被移动后将数据写入第一块中,从而导致数据一致性问题,使得第二 块内的数据不正确,因为DMA控制器所传送的数据被写入第一块而 不是第二块。
总线控制器芯片组180包括允许设备在没有处理器干预的情况 下直接传送数据的DMA控制器182。DMA控制器182包括提供将虚 拟地址转换成存储器内对应物理地址的转换表184。DMA控制器182 还包括修改记录寄存器(MRR)186。MRR 186具有多个比特,每个 比特对应于一个所定义的存储器块。如果DMA控制器写入MRR在 跟踪的存储器块,则将MRR内的对应比特置位为1,表示该存储器 块已有改变。稍后将结合图3和4较为详细地说明这种呈现为MRR 寄存器186的硬件支持。
注意,总线控制器芯片组180在图1中示为与处理器110分开的。 然而,这些优选实施例明显可以扩展到总线控制器功能集成在处理器 本身内的实现。
在这一点上,重要的是要注意,虽然本发明一直是而且继续是就 功能完全的计算机系统的情况进行说明的,但本领域的技术人员可以 理解本发明能作为各种形式的程序产品销售,无论实际用来销售的计 算机可读信号承载媒体是什么具体类型,本发明同样适用。适当的计 算机可读信号承载媒体的例子包括:诸如软盘和CD RW(例如,图1 中的195)之类的可记录型媒体,以及诸如数字和模拟通信链路之类 的传输型媒体。注意,优选的信号承载媒体是有形媒体。
参见图2,在需要将块A 124内的数据写入块B 125时,由图1 中的虚拟存储器管理器123执行根据优选实施例的方法200。首先, 定义称为块C 126的临时位置(步骤210)。虚拟存储器管理器123 写入DMA转换表184,使得正常要写入块A的任何未来DMA写操 作改为写入块C(步骤220)。然后,虚拟存储器管理器将数据从块 A移至块B(步骤230)。由于DMA传送与正在执行虚拟存储器管 理器123的处理器110异步,有可能在将数据从块A移至块B(步骤 230)期间出现DMA传送。因此,方法200此时必须确定在移动期间 是否执行过任何DMA写操作。这可以通过确定是否有任何数据写入 块C(步骤240)来实现。如果没有(步骤240=否),就知道没有出 现给块C的DMA传送,从而方法200完成。如果有数据写入块C(步 骤240=是),则将块C内的新数据移至块B(步骤250)。然后,方 法200循环回步骤240,查看是否出现了还没有写入块B的另一个写 入块C的操作(步骤240)。这个过程一直继续,直到没有还未写入 块B的对块C的写入(步骤240=否)。通过定义一个新的临时块C, 方法200允许在正在移动存储器内的数据块的同时可以进行DMA传 送。
图2中的步骤240的确定是否对块C执行了写操作的一种方式 是将块C内的每个位置都初始化为某个初始值,诸如零,然后在将数 据从块A移至块B后读块C,以查看块C内哪些位置为非零的。这 种解决方案是基于软件的解决方案,虽然有效,但比较慢。为了提高 性能,可以定义一个硬件寄存器来指出是否有数据被DMA控制器182 写入块C。这个寄存器在这里称为修改记录寄存器(MRR)186,较 为详细地示于图3。MRR包括多个比特,每个比特与一个所定义的存 储器块对应。因此,由图3可见,MRR的比特0与存储器块0对应; MRR的比特1与存储器块1对应,诸如此类,直到最后的与存储器 块N对应的比特N。最初将MRR清为全零。在出现DMA拉制器对 在MRR内具有对应比特的存储器块中的一个的写操作时,对应比特 就被置位为1,以指出该存储器块中有些内容已被DMA控制器修改。 注意,与MRR比特对应的存储器块可以具有任何适当等级的粒度。 在IBM开发的iSeries计算机系统的一个典型实现中,每个存储器段 为一页,或者4k字节。通过为128字节的高速缓存行来完成每个页。 如果页内有任何高速缓存行被DMA控制器修改,与该页对应的比特 就被置位为1。因此,在图2中的步骤230的将数据从块A移至块B 后,就可以扫描MRR,以确定哪些比特被置位为1。在最为优选的实 现中,每次一个比特地对MRR进行扫描。在遇到1时,则将对应的 数据块写入块B,然后将这个比特清为0。以串行方式每次一个比特 一直继续,直到与MRR内所有为1的比特对应的数据都已拷贝到块 B。注意,在对MRR清零的过程期间,可能会出现DMA传送,这可 能会将已经扫描过的比特置位为1。因此,在将MRR内所有为1的 比特清零后,再次对MRR进行扫描,以确定在处理MRR期间有没 有出现DMA传送。如果有比特为1,则将对应的数据块写入块B。 这个过程一直继续,直到MRR为全零,表示从上次检验MRR以来 没有出现过DMA传送。因此,这个优选实施例确保在启用了DMA 访问的情况下当运行虚拟存储器管理器时的数据一致性。
参见图4,方法240表示在使用图3所示的MRR 186时图2中 的步骤240的一个适当实现。对于每个写入块C的操作,将1写入与 写入位置对应的MRR比特(步骤410)。如果MRR为全零(步骤 420=是),DMA控制器没有写入块C,因此将写入C设置为假(步 骤430)。如果MRR不全零(步骤420=否),表明DMA控制器写 入过块C,因此将写入C设置为真(步骤440)。于是方法240完成。 MRR 186为确定DMA控制器是否在虚拟存储器管理器将数据从块A 移至块B期间执行过任何写入块C的操作提供了一种快捷和高效的方 式。再来看图1,DMA控制器182内的硬件在允许转换表184内的地 址被改变前强制MRR 186为全零。
优选实施例提供了一种虚拟存储器管理器在存储器内传送数据 块而不必担心数据会被DMA传送破坏的方式。首先定义临时块,并 改变DMA控制器内的转换表,使得未来写入将是对临时块的。然后, 移动存储器内的数据,再检验在移动期间DMA控制器是否写入过临 时块。如果是,还移动写入临时块的数据,这个过程一直继续,直到 DMA控制器没有写过临时块。这样,就确保在启用了DMA访问的 运行虚拟存储器管理器的系统中的数据一致性。
本领域的技术人员可以理解在本发明的范围内许多变动都是可 行的。因此,虽然本发明是结合其优选实施例具体进行说明的,但本 领域的技术人员可以理解,在不背离本发明的精神和范围的情况下在 形式上和细节上都可以对这些优选实施例进行这些和其他一些改变。