CN100576190C - 使用替代页池管理dma写入页错误的计算机实现方法和装置 - Google Patents
使用替代页池管理dma写入页错误的计算机实现方法和装置 Download PDFInfo
- Publication number
- CN100576190C CN100576190C CN200710091553A CN200710091553A CN100576190C CN 100576190 C CN100576190 C CN 100576190C CN 200710091553 A CN200710091553 A CN 200710091553A CN 200710091553 A CN200710091553 A CN 200710091553A CN 100576190 C CN100576190 C CN 100576190C
- Authority
- CN
- China
- Prior art keywords
- page
- leaf
- data
- adapter
- exclusively used
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000006243 chemical reaction Methods 0.000 claims description 31
- 238000013500 data storage Methods 0.000 claims description 17
- 238000010200 validation analysis Methods 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 11
- 238000011084 recovery Methods 0.000 claims description 10
- 238000012423 maintenance Methods 0.000 claims 4
- 238000004590 computer program Methods 0.000 abstract description 5
- 230000008569 process Effects 0.000 description 41
- 230000007246 mechanism Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 235000019580 granularity Nutrition 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/141—Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Bus Control (AREA)
Abstract
本发明披露了一种使用替代页池来管理DMA写入页错误的计算机实现的方法、装置和计算机程序产品。计算机系统的平台解决专用于I/O适配器的页的DMA写入页错误。所述I/O适配器尝试将DMA数据写入所述页。做出所述页不可用于写入的判定。然后将所述DMA数据写入从所述替代页池中选择的替代页中的数据位置。随后在所述数据位置中的每个位置的标志位置中设置标志。所述标志位置对应于所述数据位置。当设置了标志时,所述标志指示DMA写入数据存在于与该标志的标志位置对应的数据位置中。
Description
技术领域
优选的实施例一般地涉及数据处理系统,并且更具体地说,涉及用于使用替代写入缓冲器页池来管理DMA写入页错误的计算机实现的方法、装置和计算机程序产品。
背景技术
根据计算机系统的趋势,可以在系统运行时重新配置系统而无需中断数据处理。例如,对于在计算机上运行的多个操作系统,当第一个操作系统正在使用特定的存储器块时,可能需要重新分配该存储器块以供第二操作系统使用。在这种情况下,第一操作系统必须首先停止使用该物理存储器块,然后才可以重新分配存储器。否则,例如,可能在物理存储器块中检测到问题,在这种情况下,可能需要从操作中移除存储器以便可以替换存储器。再次地,任何正在使用该存储器块的操作系统都必须停止使用该存储器块。
在某些方面,停止使用一个物理存储器块而开始使用其他块是相对简单的,因为在常规操作系统中已经存在与虚拟存储器管理相关的机制,以处理与访问该存储器的操作系统有关的此方面的问题。但是这些机制取决于用于仅由操作系统访问而非由I/O设备访问的程序数据的存储器块。如果存储器块由I/O设备访问,则问题更复杂。此I/O设备进行的访问通常是直接存储器访问(DMA),尽管并非始终是这种情况。
由I/O设备通过I/O设备的I/O适配器访问的存储器块通常是“钉扎的(pinned)”,即,免于移动,因为对它们的访问受本质上无尽的I/O程序(只要操作系统运行就会运行)的限制。停止此类钉扎存储器的I/O程序对系统来说是破坏性的。通过钉扎这些存储器块,所述存储器块本质上专用于钉扎存储器的I/O设备。通过钉扎,可以保留一个或多个单独的存储器块以供特定的单独I/O设备使用。
但是,对于包括钉扎存储器以供其使用的I/O设备的计算机系统来说,钉扎存储器块不是特别有效。这些存储器块通常都未充分利用。虽然I/O设备在某些时刻需要通过写入其钉扎的存储器来使用该存储器,但是该存储器经常处于未使用状态。
发明内容
本发明披露了一种使用替代页池来管理DMA写入页错误的计算机实现的方法、装置和计算机程序产品。计算机系统的平台解决专用于I/O适配器的页的DMA写入页错误。所述I/O适配器尝试将DMA数据写入所述页。做出所述页不可用于写入的判定。然后将所述DMA数据写入从所述替代页池中选择的替代页中的数据位置。随后在数据写入其中的所述数据位置中的每个位置的标志位置中设置标志。所述标志位置对应于数据写入其中的所述数据位置。当设置了标志时,所述标志指示DMA写入数据存在于与该标志的标志位置对应的数据位置中。
附图说明
在所附权利要求中说明了被认为是本发明特性的新颖特征。但是,当结合附图阅读时,通过参考以下对示例性实施例的详细说明,可以最佳地理解发明本身及其优选使用方式、进一步的目的和优点,这些附图是:
图1A示出了包括本发明的示例性实施例的计算机系统;
图1B示出了根据本发明的示例性实施例的包括每个表项的控制字段的地址验证和转换表的一部分;
图1C示出了根据本发明的示例性实施例的用于存储DMA写入数据的替代数据页;
图1D示出了根据本发明的示例性实施例的用于存储标志的替代标志页;
图1E示出了根据本发明的示例性实施例的用于将存储在原始目标页中的原始数据与DMA写入数据集成的恢复页;
图1F示出了根据本发明的示例性实施例的包括数据位置和标志位置两者的替代页;
图2A和2B是共同示出了根据本发明的示例性实施例的利用控制设置确定如何执行DMA写入以及当原始目标页被换出页时利用替代页的高级流程图;
图3是示出了根据本发明的示例性实施例的当可用替代页数低于预定阈值时生成中断的高级流程图;
图4是示出了根据本发明的示例性实施例的分配其他替代页的高级流程图;
图5是示出了根据本发明的示例性实施例的平台为已被换出页的物理页更新地址验证和转换表表项的高级流程图;以及
图6是示出了根据本发明的示例性实施例的将来自替代页中的数据位置的数据与来自原始目标页的数据重新集成以形成恢复页的高级流程图。
具体实施方式
本发明的示例性实施例是计算机实现的方法、装置和计算机程序产品,用于允许计算机系统的平台解决通过I/O设备的I/O适配器专用于那些设备的页的I/O写入页错误(例如DMA写入页错误)。因为该平台能够解决I/O写入页错误,所以该平台可以将专用于I/O适配器的页临时用作其他目的,直到该I/O适配器需要写入该页。
所述平台的I/O子系统提供了用于DMA写入数据的临时替代页,所述DMA写入数据旨在存储在被虚拟存储器子系统换出页的目标页中。所述临时替代页结合了每字节使用指示符(在此称为标志),当将所述DMA写入数据与被虚拟存储器子系统恢复的换出页的数据重新集成时,将使用所述指示符。
当I/O设备通过其I/O适配器尝试将DMA数据写入特定目标页且I/O设备无法在虚拟存储器中找到该目标页时,将发生DMA写入页错误。当发生DMA写入页错误时,所述平台将写入数据存储在替代页内的数据位置中,就好像所述替代页是原始目标页。替代页中的数据位置对应于原始目标页中的位置,数据将存储在该位置,假如没有将原始目标页从虚拟存储器换出页的话。
然后在特定的标志位置中设置标志。这些特定的标志位置与在替代页中存储DMA写入数据的数据位置相对应。
在一个实施例中,使用单个替代页并且其包括数据位置和标志位置两者。将DMA写入数据存储在这些数据位置中的特定位置。然后设置存储在此同一替代页中的标志。设置的标志是存储在与存储DMA写入数据的数据位置对应的标志位置中的标志。不设置其余标志位置中的标志。
在另一个实施例中,使用了两个替代页。第一替代页仅包括数据位置,而第二替代页仅包括标志位置。将DMA写入数据存储在第一替代页内的数据位置中的特定位置。随后在第二替代页中设置标志。第二替代页中的每个标志位置都与第一替代页中的数据位置相对应。设置标志,所述标志存储在与存储DMA写入数据的第一页中的数据位置对应的第二页内的标志位置中。
如果在特定标志位置中设置了标志,则其相应的数据位置包含有效的DMA写入数据。如果未在特定标志位置中设置标志,则其相应的数据位置不包含有效的DMA写入数据。
所述替代页是临时页。当原始目标页再次位于存储器中并不再被换出页时,则可以在DMA写入时,将DMA写入数据与存储在原始目标页中的数据重新集成。所述数据和标志用于恢复所述DMA写入数据。标志用于判定哪些数据位置包含DMA写入数据。一旦定位了DMA写入数据,就将其与来自原始目标页的数据重新集成以创建恢复的页。
所述计算机系统通常包括用于将物理页与特定I/O适配器关联的地址验证和转换表。表中的每个表项都与特定的物理页关联。使用DMA操作的地址来对该表进行索引。本发明的示例性实施例向该表添加了控制字段。所述控制字段用于指示每个物理页的当前状态。
计算机系统的平台包括当执行I/O操作时使用地址验证和转换表的I/O转换软件。根据本发明的示例性实施例,所述I/O转换软件还维护如在此描述的那样使用的替代页的列表。可以使用任何形式的列表,例如,链接列表、多级表、队列,或任何其他适合类型的列表。此列表形成可用替代页池。
当需要替代页时,I/O转换硬件从此列表选择页。当列表中包括的替代页的数量低于预定阈值时,将生成中断。在示例性实施例中,由硬件(例如I/O转换硬件或机制)生成所述中断。所述平台的存储器虚拟化软件随后通过分配其他可以用作替代页的页来响应所述中断。
对于地址验证和转换表中的每个表项,使用控制字段设置来指示与该表项关联的物理页的当前状态。第一控制字段设置指示物理页可以发生正常的DMA写入处理。在这种情况下,目标物理页位于存储器中并且不会被换出页。
第二控制字段设置指示必须挂起DMA写入处理。当物理页被换出页并使用替代页时将使用此设置。在这种情况下,此物理页的替代页正处于与原始目标页的数据重新集成的过程中。
第三控制字段设置指示必须在执行DMA写入之前获取替代页。在这种情况下,物理页被换出页,并且尚未选择将用于临时存储DMA写入数据的替代页。如果使用包括数据和标志位置的单个替代页,一旦选择了替代页,就将所述替代页的地址存储在地址验证和转换表内与目标页关联的表项中。如果使用两个替代页,一旦选择了替代页,就将包含替代页地址的描述符的地址存储在地址验证和转换表内与目标页关联的表项中。
第四控制字段设置指示可以处理DMA写入,但是必须处理到所选择的替代页(多个)而不是目标页。当控制字段设置为第四设置时,将DMA写入数据存储在适当的数据位置中后,将设置相应标志位置中的标志。所述页内的其余标志位置中的所有其他标志都保持未设置。
当平台的存储器虚拟化软件决定征用是DMA写入的目标的页时(即,将被换出页的页),平台的存储器虚拟化软件将地址验证和转换页中该页的表项中的控制字段设置为第三设置。然后平台的存储器虚拟化软件清除该表项的地址字段。
如果该页随后在恢复页之前变为DMA写入操作的目标,则平台的I/O转换硬件/机制将发现控制字段设置为第三设置。由于所述设置为第三设置,所以平台的I/O转换硬件/机制从其替代页列表中选择替代页。I/O转换硬件随后将包括数据位置的替代页的地址输入地址验证和转换表的地址字段中。所述I/O转换硬件/机制还将控制字段设置为第四设置。然后将DMA写入数据写入特定的数据位置。在与存储了DMA写入数据的数据位置对应的标志位置中设置标志。
当再次在存储器中定位了原始目标页并且其不再被换出页时,可以检索当前存储在替代页中的数据并将该数据与当前存储在原始目标页中的数据重新集成。当重新集成过程开始时,虚拟存储器软件将该特定物理页的表项的控制字段设置为第三设置,以便避免无尽的连续替代页写入。所述第三设置导致在此重新集成过程期间推迟其他DMA写入的处理。
然后选择替代页用作恢复页。将来自特定数据位置的数据存储在与数据位置对应的恢复页内的位置中。所述标志用于标识哪些数据位置是包含有效DMA写入数据的特定位置。然后将此恢复页的地址存储在地址验证和转换表表项的地址字段中。
此时,所述页再次位于虚拟存储器中并可以用于正常的DMA写入处理。因此,将此表项的控制字段设置为第一设置。
如本领域的技术人员将认识到的,替代页中字段的物理大小可以为优化存储单元利用率的大小,而不会影响本发明的示例性实施例的新颖性。虽然在大多数情况下,必须可在字节级别写入数据位置以匹配多数I/O总线的特性,但是可以使用其他粒度,如果它们匹配DMA生成设备的特性的话。
此外,所述标志位置可以仅包含单个数据位置字节的信息,或者可以包含多个字节的信息。
虽然上述的存储器虚拟化软件和I/O转换硬件/机制执行特定功能,但是任何适合的平台软件都可以执行上述功能。
图1A示出了包括本发明的示例性实施例的计算机系统110。计算机系统110包括平台101。计算机系统100可以是包括多个处理器102和104的对称多处理器(SMP)系统。备选地,可以使用单处理器系统。
在系统100中,将包括指令的数据106存储在非易失性存储器(例如盘存储装置135)中,并且将数据106的块108从非易失性存储器写入易失性存储器110。就它们在易失性存储器中的实际物理位置而言,将数据106的块108称为数据的“物理页”115,以从虚拟存储器映射的角度区分对数据106的引用。因此,有时还将易失性存储器110称为“物理存储器”。
对于易失性存储器110中的数据块,它们可由系统100的I/O设备135、140、145和中央处理单元(CPU)104访问。如在此使用的,术语“I/O设备”指连接到计算机系统110并向系统提供信息或从系统接收信息的各种设备中的任何设备。I/O设备的实例包括存储器(如非易失性盘存储装置135)、鼠标、轨迹球、触摸板(或类似设备)、键盘、显示器、打印机、摄像机、调制解调器、光学扫描仪、麦克风以及音频扬声器。
更具体地说,物理页115由第一总线125连接到I/O桥130,并且每个I/O设备135都由相应的I/O适配器136、141、146和I/O总线176的段137、142连接到I/O桥130。
可以通过调制解调器148和/或通信适配器149提供到其他计算机的通信链路。
I/O桥130还具有逻辑150,包括在I/O设备135之间仲裁的总线逻辑,即,每次许可一个I/O设备访问I/O总线176,以及从I/O总线176访问第一总线125。I/O桥130还包括用于缓存来自物理页115或I/O设备(如非易失性存储器135)的数据106的I/O数据缓冲器155,以响应I/O设备的请求,并且逻辑150包括处理数据缓冲的逻辑。在示例性实施例中,I/O桥逻辑150包括I/O处理器154。
CPU 104执行操作系统和固件指令,它们的图像在图1的CPU中表示为操作系统160和固件165。CPU 104执行的指令包括固件指令165、在固件165的支持下运行的操作系统指令160,以及在固件165和操作系统160的支持下运行的应用指令(未示出)。应当理解,在处理器104上运行的固件165实际上与操作系统160无关并且提供了低级接口,因此比操作系统160提供了更多的对硬件组件(如处理器104)的访问。在某些方面,操作系统160向在CPU 104上运行的应用提供了数据106的块108的视图作为虚拟存储器162的页,使得数据106的实际位置相当透明,例如,无论数据是位于易失性存储器110还是盘存储装置135中。相应地,操作系统160包括分页机制163和页表164,用于在某种程度上透明地将数据106移入和移出易失性存储器110。
关于I/O设备虚拟存储器152,操作系统160引导I/O逻辑150通过转换控制表项(TCE)表175中的表项,将数据106的块108映射到物理页115。在示例性实施例中,固件165提供了用于从物理页115中的第一页将数据移动到物理页115中的第二页的服务,以便使第一页用于其他服务或空闲。要执行此操作,操作系统160在TCE表175中查找一组用于物理页115中的第一页的一个或多个表项。然后,操作系统160引导固件165组件(即,系统管理程序170)将数据从与给定I/O设备虚拟存储器页152关联的第一物理页115复制到第二物理页115,然后更改TCE表175中的关联映射,以便将未来对I/O设备虚拟存储器页152的访问引导到第二物理页。系统管理程序170具有许多功能,其中包括,保持TCE表175更新,以及维护关于I/O操作的存储器一致性。
存储器的物理页由输入/输出(I/O)适配器访问。TCE表175包括将物理页与I/O适配器关联的表项。每个表项都将特定物理页与特定I/O适配器相关联。
为了理解TCE表175,考虑I/O设备135具有它们自己的数据106的视图作为虚拟存储器152的页,类似于CPU 104的虚拟存储器视图。I/O桥逻辑150将该视图提供给I/O设备135。在其他实施例中,I/O处理器154和固件165将该视图提供给I/O设备135。为了维护该视图,TCE表175中的表项(图1未示出)将数据106的块108映射到I/O虚拟存储器页152。因此,I/O设备135可以通过参考虚拟页152来引用数据106,而与数据的实际位置无关,即,与哪个物理页115当前存储数据无关。
I/O桥130提供了位于总线125和总线176之间的逻辑150。总线176上的存储器请求从I/O设备进入,其带有虚拟地址以反映I/O设备虚拟存储器152。I/O转换硬件(地址转换逻辑)156高效地访问TCE表175(其保持I/O设备虚拟页顺序)来确定应当应用于总线125的物理页地址,以便访问与来自总线176的存储器请求关联的正确物理页115。(上文使用了术语“高效地”,因为实际上逻辑150包含TCE表175的相关部分的缓存的副本,以便加速所述过程。)
TCE表175是由DMA操作的I/O总线地址索引的I/O地址验证和转换表。该表用于确保I/O适配器仅访问分配的存储位置,以及允许平台软件相对于由I/O适配器的设备驱动器生成的I/O命令所包含的DMA地址来重新定位物理存储块。
如上所述,平台101包括硬件,还包括操作系统177、驱动器178、应用179和其他软件180。
图1B示出了根据本发明的示例性实施例的地址验证和转换表(也称为TCE表)的一部分,该表包括用于每个表项的控制字段。表182包括每个物理页的地址字段183和控制字段184。如图1A所示,根据本发明的示例性实施例,将其他字段(即,字段184)添加到TCE表175。
例如,表项185包括用于访问物理页“a”的地址和物理页“a”的当前控制设置。用于访问物理页“a”的地址存储在表项185的字段183a中。物理页“a”的当前控制设置存储在字段184a中。
表项186包括用于访问物理页“b”的地址和物理页“b”的当前控制设置。用于访问物理页“b”的地址存储在表项186的字段183b中。物理页“b”的当前控制设置存储在字段184b中。
图1C示出了根据本发明的示例性实施例的用于存储DMA写入数据的替代数据页187。所述DMA写入数据的目标是存储在原始目标页的数据位置,从该页的位置XXX到位置YYY。因此,该DMA写入数据存储在替代页187中从位置XXX到位置YYY的数据位置。从位置0到位置XXX和从位置YYY到位置ZZZ的数据位置不包含任何数据或包含不相关的数据。
图1D示出了根据本发明的示例性实施例的用于存储标志的替代标志页188。标志页188包括0到ZZZ的标志位置。标志页188中的每个标志位置在数据页187中具有对应的数据位置。
将标志存储在每个标志位置中。如果设置了特定标志位置中的标志,则与该标志位置对应的数据页中的数据位置是需要恢复的有效DMA写入数据。如果未设置特定标志位置中的标志,则与该标志位置对应的数据位置中的数据是无效的DMA写入数据并应被忽略。
因此,未设置位置0到XXX和从YYY到ZZZ的位置中的标志,而设置了位置XXX到YYY中的标志。
图1E示出了根据本发明的示例性实施例的用于在DMA写入时将存储在原始目标页中的原始数据与DMA写入数据重新集成的恢复页189。从原始目标页检索原始数据,并将其复制到恢复页189中与原始目标页中它们的原始位置对应的数据位置。
然后使用来自标志页188的标志从数据页187检索DMA写入数据并将其覆盖原始数据。通过为标志页188中的每个位置判定是否设置了该位置中的标志来完成覆盖DMA写入数据的过程。如果设置了标志,则将存储在数据页内相应数据位置中的数据存储在恢复页内的相应位置中。如果未设置标志,则忽略任何可能存储在数据页中相应数据位置的数据,并且不将所述数据存储在恢复页的相应位置。
图1F示出了根据本发明的示例性实施例的包括数据位置和标志位置两者的单个替代页190。如图1F所示,标志位置和数据位置在页190中交替出现。因此,页190中的第一位置是标志位置“a”。下一位置是与标志位置“a”对应的数据位置“a”。单个替代页190可以用于替换替代页187和188。
可以按照上述方式使用替代页190。通过为页190中的每个标志位置判定是否设置了标志来完成覆盖DMA写入数据的过程。如果在标志位置中设置了标志,则将存储在相应数据位置的数据存储到恢复页中的相应位置。如果未设置标志,则忽略任何可能存储在相应数据位置的数据,并且不会将其存储在恢复页中的相应位置。
图2A和2B是共同示出了根据本发明的示例性实施例的利用控制设置确定如何执行DMA写入以及当原始目标页被换出页时利用替代页的高级流程图。过程开始于方块200(如图所示)并从此进行到方块202,方块202示出了I/O设备尝试执行到特定目标页的DMA写入。
接着,方块204示出了在地址验证和转换表中定位与该特定页关联的表项。虽然地址验证和转换表可以位于存储控制器、I/O桥、PCI总线桥、I/O适配器或类似设备中,但是其优选地位于主存储装置中。
然后方块206示出了读取该表项的控制字段的当前设置。该过程随后进行到方块208,其示出了判定控制字段设置是否为“a”。控制字段设置“a”是第一控制字段设置。如果判定控制字段设置是“a”,则过程进行到方块210,方块210示出了继续正常的DMA处理。过程然后返回方块202。
再次参考方块208,如果判定控制字段设置不是“a”,则过程进行到方块212,方块212示出了判定控制字段设置是否为“b”。控制字段设置“b”是第二控制字段设置。如果判定控制字段设置是“b”,则过程返回方块206。
再次参考方块212,如果判定控制字段设置不是“b”,则过程进行到方块214,方块214示出了判定控制字段设置是否为“c”。控制字段设置“c”是第三控制字段设置。如果判定控制字段设置是“c”,则过程进行到方块216,方块216示出了从可用替代页列表中选择两个替代页。一个页将是数据替代页,而另一个页将是标志替代页。这两个页将互相关联。
将这两个页关联的一个方法是使它们在实存储器中成为连续页。通常使用奇/偶地址对来完成此操作。
存在多种配置这些页的方法。在一种方法中,偶数页包含DMA数据而奇数页包含标志。
除了使用两个单独的页,还可以使用包括数据和标志的单个替代页。例如,DMA字节0写入第一页的字节0(即,第一字节),而其相应的标志字节写入第一页的字节1。这持续到第2048个标志字节写入第二页的第二字节。对本领域的技术人员来说,DMA和相应标志字节之间的若干其他映射是可能和显而易见的。
接着,方块218示出了使用包括数据位置的选定数据替代页的地址更新地址验证和转换表表项并将控制字段设置为“d”。然后过程进行到方块206。
再次参考方块214,如果判定控制字段设置不是“c”,则过程进行到方块220,方块220示出了判定控制字段设置是否是“d”。控制字段设置“d”是第四控制字段设置。如果判定控制字段设置是“d”,则过程进行到方块230,如连接符A所示。
方块230示出了将DMA写入数据存储在数据页中,所述数据页由存储在地址验证和转换表表项的地址部分的地址来标识。接着,方块232示出了定位与此数据页关联的标志页。此后,方块234示出了在标志页中与DMA写入期间其中存储数据的数据页中的每个数据位置对应的每个标志位置内的设置标志。然后过程返回方块202,如连接符B所示。
再次参考方块220,如果判定控制字段设置不是“d”,则过程进行到方块222,方块222示出了报告错误。然后过程返回方块202。
图3是示出了根据本发明的示例性实施例的当可用替代页数低于预定阈值时生成中断的高级流程图。过程在方块300开始(如图所示),并在此后进行到方块302,方块302示出了监视替代页列表(即,池)。这些列出的页可用作替代页。接着,方块304示出了判定列表中页的数量是否高于预定阈值。如果判定列出的替代页的数量高于阈值,则过程返回方块302。如果判定列出的替代页的数量不高于阈值,则过程进行到方块306,方块306示出了生成“短缺”中断。然后过程返回方块302。
图4是示出了根据本发明的示例性实施例的分配其他替代页的高级流程图。过程在方块400开始(如图所示),并在此后进行到方块402,方块402示出了判定存储器虚拟化软件是否接收到“短缺”中断。如果判定存储器虚拟化软件未接收到“短缺”中断,则过程返回方块402。如果判定存储器虚拟化软件已接收到“短缺”中断,则过程进行到方块404,方块404示出了存储器虚拟化软件分配其他页以用作替代页。这些新分配的页然后被列为可用替代页并因此成为可用替代页池的一部分。然后过程返回方块402。
图5是示出了根据本发明的示例性实施例的平台为已被换出页的物理页更新表项的高级流程图。过程在方块500开始(如图所示),并在此后进行到方块502,方块502示出了存储器虚拟化软件选择专用于I/O适配器的页以用于其他处理。接着,方块504示出了判定特定页是否是DMA写入的目标。存储器虚拟化软件检查用于验证所有DMA操作的地址验证和转换表来判定此特定页是否是DMA写入的目标。所述地址验证和转换表包含可能是DMA操作的目标的所有页的地址连同写入允许标志。
再次参考方块504,如果判定特定页不是DMA写入的目标,则过程在方块512终止(如图所示)。如果判定特定页是DMA写入的目标,则过程进行到方块506,方块506示出了在地址验证和转换表中定位与该特定页关联的表项。
接着,方块508示出了通过将控制字段设置为“c”来更新该表项的控制字段。此后,方块510示出了清除该表项的所述字段的地址部分。然后过程在方块512终止(如图所示)。
图6是示出了根据本发明的示例性实施例的将来自替代页中的数据位置的数据与来自原始目标页的数据重新集成以形成恢复页的高级流程图。
过程在方块600开始(如图所示),并在此后进行到方块602,方块602示出了需要恢复特定页。例如,当写入页的I/O操作完成时,需要恢复该页。执行写入的I/O适配器向其控制操作系统发送中断。最终通知请求原始I/O的终端用户操作完成。当终端用户尝试访问页中的数据时,由于虚拟存储器页在物理上并未位于主存储装置中,因此尝试的访问将导致页错误。这然后引发了恢复该页的需要。
接着,方块604示出了从替代页列表中选择替代页来用作恢复页。然后,方块606示出了将换出页的数据从后备存储装置读入到用作恢复页的替代页中。因此,在DMA写入时存储在原始目标页中的数据现在存储在恢复页中。此数据存储在恢复页内与在原始目标页中存储数据的位置对应的位置中。
所述后备存储装置是当原始目标页被换出页时存储原始数据的场所。现在原始数据存储在恢复页中它们的原始数据位置。因此,此时所述恢复页与换出页之前存在的原始页完全相同。
然后过程进行到方块608,方块608示出了判定原始页是否是DMA写入的目标。如果判定原始页不是DMA写入的目标,则过程在方块624终止(如图所示)。再次参考方块608,如果判定原始页是DMA写入的目标,则过程进行到方块610,方块610示出了定位地址验证和转换表中与此替代页的地址关联的表项。
接着,方块612示出了判定该表项的控制字段是否设置为“d”。这是判定在原始页被换出页时是否将DMA写入处理到原始页。如果处理了DMA写入,则将数据写入替代数据页而不是期望的原始DMA页。如果判定未将控制字段设置为“d”,即,当原始页被换出页时没有将DMA写入处理到原始页,则过程进行到方块620。如果判定将控制字段设置为“d”,即,当原始页被换出页时将DMA写入处理到原始页,则过程进行到方块614,方块614示出了通过将控制字段设置为“b”来更新此表项的控制字段。此后,方块616示出了将存储在标志位置中的标志与存储在相应数据位置的数据相比较以标识有效的DMA写入数据。
然后过程进行到方块618,方块618示出了将数据存储在恢复页中与存储了有效DMA写入数据的数据位置对应的每个位置。以这种方式,来自替代页的数据覆盖了原始数据。然后过程进行到方块619,方块619示出了释放替代数据和标志页以便将它们再次包括在替代页列表中。以这种方式,这些释放的页再次成为替代页池的一部分。然后,方块620示出了将恢复页的地址存储在此表项的地址部分。接着,方块622示出了通过将控制字段设置为“a”来更新此表项的控制表项字段。然后过程在方块624终止(如图所示)。
本发明可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元素两者的实施例的形式。在一个优选实施例中,本发明以硬件和软件的组合实现,所述软件包括但不限于固件、驻留软件、微代码等。
此外,本发明可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,所述计算机可用或计算机可读介质提供了可以被计算机或任何指令执行系统使用或与计算机或任何指令执行系统结合的程序代码。出于在此说明的目的,计算机可用或计算机可读介质可以是任何能够包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的有形装置。
所述介质可以是电、磁、光、电磁、红外线或半导体系统(或装置或设备)或传播介质。计算机可读介质的实例包括半导体或固态存储器、磁带、可移动计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前实例包括光盘-只读存储器(CD-ROM)、光盘-读/写(CR-R/W)和DVD。
适合于存储和/或执行程序代码的数据处理系统将包括至少一个通过系统总线直接或间接连接到存储器元件的处理器。所述存储器元件可以包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至少某些程序代码的临时存储以减少必须在执行期间从大容量存储装置检索代码的次数的高速缓冲存储器。
输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等)可以直接或通过中间I/O控制器与系统相连。
网络适配器也可以被连接到系统以使所述数据处理系统能够通过中间专用或公共网络变得与其他数据处理系统或远程打印机或存储设备相连。调制解调器、电缆调制解调器和以太网卡只是几种当前可用的网络适配器类型。
出于示例和说明目的给出了对本发明的描述,并且所述描述并非旨在是穷举的或是将本发明限于所公开的形式。对于本领域的技术人员来说,许多修改和变化都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理、实际应用,并且当适合于所构想的特定使用时,使得本领域的其他技术人员能够理解本发明的具有各种修改的各种实施例。
Claims (18)
1.一种用于解决专用于I/O适配器的页的DMA写入页错误的计算机实现的方法,所述页专用于保持可供所述I/O适配器使用,所述计算机实现的方法包括:
由所述I/O适配器尝试将DMA数据写入所述页;
判定所述页不可用;
将所述DMA数据写入替代页中的数据位置;以及
在与所述数据位置中的每个位置对应的标志位置中设置标志,当在特定标志位置中设置了特定标志时,所述特定标志指示DMA写入数据存在于与所述特定标志位置对应的特定数据位置中。
2.根据权利要求1的计算机实现的方法,还包括:
维护用于DMA写入页错误的替代页池;以及
从所述替代页池选择所述替代页。
3.根据权利要求1的计算机实现的方法,还包括:
当所述专用于I/O适配器的页位于虚拟存储器中时,所述专用于I/O适配器的页可用;以及
当将所述专用于I/O适配器的页移出虚拟存储器时,所述专用于I/O适配器的页不可用。
4.根据权利要求1的计算机实现的方法,还包括:
响应于所述I/O适配器尝试将DMA数据写入所述专用于I/O适配器的页,标识与所述专用于I/O适配器的页关联的地址验证和转换表中的表项;
从所述表项读取与所述专用于I/O适配器的页关联的当前控制设置;以及
根据所述当前控制设置来处理所述将DMA数据写入所述专用于I/O适配器的页的尝试。
5.根据权利要求4的计算机实现的方法,还包括:
响应于所述当前控制设置是第一控制字段设置,判定所述专用于I/O适配器的页可用并将所述DMA数据写入所述专用于I/O适配器的页。
6.根据权利要求4的计算机实现的方法,还包括:
响应于所述当前控制设置是第二控制字段设置,推迟将所述DMA数据写入所述专用于I/O适配器的页,直到所述当前控制设置不再是所述第二控制字段设置。
7.根据权利要求4的计算机实现的方法,还包括:
响应于所述当前控制设置是第三控制字段设置,判定所述专用于I/O适配器的页不可用;
选择所述替代页;以及
更新所述表项以使用所述替代页的地址来替换所述专用于I/O适配器的页的所述地址。
8.根据权利要求4的计算机实现的方法,还包括:
响应于所述当前控制设置是第四控制字段设置,将所述DMA数据写入所述替代页中的数据位置;以及
在与所述数据位置对应的标志位置中设置标志。
9.根据权利要求1的计算机实现的方法,还包括:
判定需要使所述专用于I/O适配器的页可用;
选择作为恢复页的替代页;
将来自所述专用于I/O适配器的页的原始数据存储在所述恢复页中;
选择存储在与包括已设置标志的标志位置关联的数据位置中的数据;以及
将所述选择的数据复制到所述恢复页,所述选择的数据存储在与所述数据位置对应的所述恢复页内的位置中。
10.一种数据处理系统中的装置,所述装置包括连接到I/O适配器的平台以便解决专用于所述I/O适配器的页的DMA写入页错误,所述页专用于保持可供所述I/O适配器使用,所述装置包括:
I/O适配器,用于尝试将DMA数据写入所述页;
其中所述平台被配置为:
判定所述页不可用;
将所述DMA数据写入替代页中的数据位置;以及
在与所述数据位置中的每个位置对应的标志位置中设置标志,当在特定标志位置中设置了特定标志时,所述特定标志指示DMA写入数据存在于与所述特定标志位置对应的特定数据位置中。
11.根据权利要求10的装置,其中所述平台还被配置为:
维护用于DMA写入页错误的替代页池;以及
所述平台从所述替代页池选择所述替代页。
12.根据权利要求10的装置,其中:
当所述专用于I/O适配器的页位于虚拟存储器中时,所述专用于I/O适配器的页可用;以及
当将所述专用于I/O适配器的页移出虚拟存储器时,所述专用于I/O适配器的页不可用。
13.根据权利要求10的装置,其中所述平台还被配置为:
响应于所述I/O适配器尝试将DMA数据写入所述专用于I/O适配器的页,标识与所述专用于I/O适配器的页关联的地址验证和转换表中的表项;
从所述表项读取与所述专用于I/O适配器的页关联的当前控制设置;以及
根据所述当前控制设置来处理所述将DMA数据写入所述专用于I/O适配器的页的尝试。
14.根据权利要求13的装置,其中所述平台还被配置为:
响应于所述当前控制设置是第一控制字段设置,判定所述专用于I/O适配器的页可用并将所述DMA数据写入所述专用于I/O适配器的页。
15.根据权利要求13的装置,其中所述平台还被配置为:
响应于所述当前控制设置是第二控制字段设置,推迟将所述DMA数据写入所述专用于I/O适配器的页,直到所述当前控制设置不再是所述第二控制字段设置。
16.根据权利要求13的装置,其中所述平台还被配置为:
响应于所述当前控制设置是第三控制字段设置,判定所述专用于I/O适配器的页不可用;
选择所述替代页;以及
更新所述表项以使用所述替代页的地址来替换所述专用于I/O适配器的页的所述地址。
17.根据权利要求13的装置,其中所述平台还被配置为:
响应于所述当前控制设置是第四控制字段设置,将所述DMA数据写入所述替代页中的数据位置;以及
在与所述数据位置对应的标志位置中设置标志。
18.根据权利要求10的装置,其中所述平台还被配置为:
判定需要使所述专用于I/O适配器的页可用;
选择作为恢复页的替代页;
将来自所述专用于I/O适配器的页的原始数据存储在所述恢复页中;
选择存储在与包括已设置标志的标志位置关联的数据位置中的数据;以及
将所述选择的数据复制到所述恢复页,所述选择的数据存储在与所述数据位置对应的所述恢复页内的位置中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/390,790 US7734842B2 (en) | 2006-03-28 | 2006-03-28 | Computer-implemented method, apparatus, and computer program product for managing DMA write page faults using a pool of substitute pages |
US11/390,790 | 2006-03-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101046774A CN101046774A (zh) | 2007-10-03 |
CN100576190C true CN100576190C (zh) | 2009-12-30 |
Family
ID=38662427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710091553A Active CN100576190C (zh) | 2006-03-28 | 2007-03-27 | 使用替代页池管理dma写入页错误的计算机实现方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7734842B2 (zh) |
JP (1) | JP5063152B2 (zh) |
CN (1) | CN100576190C (zh) |
TW (1) | TWI417724B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9535849B2 (en) * | 2009-07-24 | 2017-01-03 | Advanced Micro Devices, Inc. | IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect |
US8386745B2 (en) * | 2009-07-24 | 2013-02-26 | Advanced Micro Devices, Inc. | I/O memory management unit including multilevel address translation for I/O and computation offload |
US8973144B2 (en) | 2011-10-13 | 2015-03-03 | Mcafee, Inc. | System and method for kernel rootkit protection in a hypervisor environment |
US9069586B2 (en) * | 2011-10-13 | 2015-06-30 | Mcafee, Inc. | System and method for kernel rootkit protection in a hypervisor environment |
CN103309619A (zh) * | 2012-03-16 | 2013-09-18 | 国民技术股份有限公司 | 一种闪存数据存储方法 |
US20160019168A1 (en) * | 2014-07-18 | 2016-01-21 | Qualcomm Incorporated | On-Demand Shareability Conversion In A Heterogeneous Shared Virtual Memory |
US9658918B2 (en) * | 2015-02-20 | 2017-05-23 | Dell Products, Lp | User prompted volume recovery |
US10216533B2 (en) | 2015-10-01 | 2019-02-26 | Altera Corporation | Efficient virtual I/O address translation |
US10528476B2 (en) * | 2016-05-24 | 2020-01-07 | International Business Machines Corporation | Embedded page size hint for page fault resolution |
CN106775477B (zh) * | 2016-12-19 | 2021-01-01 | 湖南国科微电子股份有限公司 | Ssd主控数据传输管理装置及方法 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5423335A (en) | 1977-07-22 | 1979-02-21 | Nec Corp | Page detection mechanism |
US4277826A (en) | 1978-10-23 | 1981-07-07 | Collins Robert W | Synchronizing mechanism for page replacement control |
USRE37305E1 (en) | 1982-12-30 | 2001-07-31 | International Business Machines Corporation | Virtual memory address translation mechanism with controlled data persistence |
US4868738A (en) | 1985-08-15 | 1989-09-19 | Lanier Business Products, Inc. | Operating system independent virtual memory computer system |
US5123101A (en) | 1986-11-12 | 1992-06-16 | Xerox Corporation | Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss |
US5295258A (en) * | 1989-12-22 | 1994-03-15 | Tandem Computers Incorporated | Fault-tolerant computer system with online recovery and reintegration of redundant components |
JP2774862B2 (ja) * | 1990-07-16 | 1998-07-09 | 株式会社日立製作所 | Dma制御装置および情報処理装置 |
JPH04308953A (ja) * | 1991-04-05 | 1992-10-30 | Kyocera Corp | 仮想アドレス計算機装置 |
JPH05173930A (ja) * | 1991-12-19 | 1993-07-13 | Yokogawa Electric Corp | Dma制御回路 |
JP3590075B2 (ja) * | 1992-01-20 | 2004-11-17 | 株式会社東芝 | 仮想記憶方式のデータ処理装置及び方法 |
US5440710A (en) | 1994-03-08 | 1995-08-08 | Exponential Technology, Inc. | Emulation of segment bounds checking using paging with sub-page validity |
US5729710A (en) * | 1994-06-22 | 1998-03-17 | International Business Machines Corporation | Method and apparatus for management of mapped and unmapped regions of memory in a microkernel data processing system |
US5842225A (en) | 1995-02-27 | 1998-11-24 | Sun Microsystems, Inc. | Method and apparatus for implementing non-faulting load instruction |
JPH0997214A (ja) * | 1995-09-29 | 1997-04-08 | Internatl Business Mach Corp <Ibm> | 補助プロセッサのためのアドレス変換を含む情報処理システム |
US6061773A (en) | 1996-05-03 | 2000-05-09 | Digital Equipment Corporation | Virtual memory system with page table space separating a private space and a shared space in a virtual memory |
US6055619A (en) * | 1997-02-07 | 2000-04-25 | Cirrus Logic, Inc. | Circuits, system, and methods for processing multiple data streams |
US6338119B1 (en) * | 1999-03-31 | 2002-01-08 | International Business Machines Corporation | Method and apparatus with page buffer and I/O page kill definition for improved DMA and L1/L2 cache performance |
US6622263B1 (en) | 1999-06-30 | 2003-09-16 | Jack Justin Stiffler | Method and apparatus for achieving system-directed checkpointing without specialized hardware assistance |
US6745306B1 (en) | 1999-07-29 | 2004-06-01 | Microsoft Corporation | Method and system for restricting the load of physical address translations of virtual addresses |
US6856420B1 (en) * | 2000-07-31 | 2005-02-15 | Hewlett-Packard Development Company, L.P. | System and method for transferring data within a printer |
US6986016B2 (en) * | 2002-09-30 | 2006-01-10 | International Business Machines Corporation | Contiguous physical memory allocation |
US6804729B2 (en) * | 2002-09-30 | 2004-10-12 | International Business Machines Corporation | Migrating a memory page by modifying a page migration state of a state machine associated with a DMA mapper based on a state notification from an operating system kernel |
-
2006
- 2006-03-28 US US11/390,790 patent/US7734842B2/en not_active Expired - Fee Related
-
2007
- 2007-03-07 TW TW096107838A patent/TWI417724B/zh active
- 2007-03-20 JP JP2007071774A patent/JP5063152B2/ja active Active
- 2007-03-27 CN CN200710091553A patent/CN100576190C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US20070260769A1 (en) | 2007-11-08 |
TW200821833A (en) | 2008-05-16 |
JP2007272885A (ja) | 2007-10-18 |
TWI417724B (zh) | 2013-12-01 |
US7734842B2 (en) | 2010-06-08 |
JP5063152B2 (ja) | 2012-10-31 |
CN101046774A (zh) | 2007-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100576190C (zh) | 使用替代页池管理dma写入页错误的计算机实现方法和装置 | |
CN100543709C (zh) | 迁移数据页面的方法和装置 | |
CN102906721B (zh) | 与访问地址空间并行地对地址空间调整大小 | |
CN100583046C (zh) | 用于单根无状态虚拟功能迁移的系统和方法 | |
CN103562897B (zh) | 存储存储级内存信息命令 | |
CN101206633B (zh) | 用事务协议和共享存储器在主机系统间通信的系统和方法 | |
CN1248118C (zh) | 以推测方式使高速缓存中的缓存行失效的方法及系统 | |
CN101981541B (zh) | 使用闪存和有限功能存储器控制器来引导电子设备 | |
CN101206632B (zh) | 用套接字连接和共享存储器在主机系统间通信的系统和方法 | |
CN100399300C (zh) | 用于数据处理的系统和方法和用于分配资源的系统和方法 | |
CN103582878B (zh) | 在计算机环境中执行开始子通道指令的方法和系统 | |
CN102483719B (zh) | 基于块的非透明高速缓存 | |
CN103383672B (zh) | 高速缓存控制以减少事务回滚 | |
CN101211289B (zh) | 恢复操作管理系统和方法 | |
CN102906702B (zh) | 对适配器的地址空间的访客端访问 | |
CN100487674C (zh) | 利用镜像锁定高速缓存传播数据的方法和处理器节点 | |
CN1786927B (zh) | 应用层高速缓存映像知晓和再分配的系统和方法 | |
CN103562874B (zh) | 解除配置存储级内存命令 | |
CN103562857B (zh) | 在计算环境中执行启动子通道指令的方法和系统 | |
CN103365794B (zh) | 数据处理方法、装置和系统 | |
CN101097544A (zh) | 虚拟化事务存储器的全局溢出方法 | |
CN104636181A (zh) | 用于迁移虚拟机的方法和系统 | |
CN101206629A (zh) | 在运行的PCIe架构中热插/拔新组件的系统和方法 | |
CN1629775A (zh) | 用于机器存储器功率和可用性管理的方法和系统 | |
CN101206634A (zh) | 用于初始化共享存储器的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |