处理直接存储器访问请求的设备和方法转让专利
申请号 : CN200680036765.4
文献号 : CN100589089C
文献日 : 2010-02-10
发明人 : G·K·巴特利 , J·M·博肯哈根 , W·P·郝维斯 , D·P·考尔兹
申请人 : 国际商业机器公司
摘要 :
权利要求 :
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)请求的技术。
背景技术
发明内容
本发明的第二方面提供了一种在存储器内将数据从第一块移至 第二块的方法,这种方法包括下列步骤:
(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的方法的流程图。
具体实施方式
参见图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访问的 运行虚拟存储器管理器的系统中的数据一致性。
本领域的技术人员可以理解在本发明的范围内许多变动都是可 行的。因此,虽然本发明是结合其优选实施例具体进行说明的,但本 领域的技术人员可以理解,在不背离本发明的精神和范围的情况下在 形式上和细节上都可以对这些优选实施例进行这些和其他一些改变。