用来保护存储器页面的内容的方法和系统的制作方法

文档序号:6561880阅读:215来源:国知局
专利名称:用来保护存储器页面的内容的方法和系统的制作方法
技术领域
本发明总体上涉及信息处理系统的领域,并且更具体地说,涉及在信息处理系统中的存储器复制操作。
背景技术
存储器复制操作是一种非常频繁地进行的数据处理操作。这样的操作由在应用程序级、在操作系统(OS)级下的软件并且由中间件编程而启动。存储器复制操作典型地编程有把数据从存储器中的一个位置复制到另一个位置的重复加载和存储操作。这使数据传输分段通过中央处理单元(CPU,或更简单地“处理器”)。这因为如下原因导致数据处理系统的整体操作低效(1)复制操作的性能由适用的存储器带宽限制,该带宽常常不足以匹配CPU的速度;(2)数据传输经加载和存储指令分段通过CPU,基本上在移动操作期间约束住CPU,这阻止CPU参与其他任务;(3)因为CPU一般比存储器子系统快得多,所以CPU当它等待数据从存储器到达CPU中时闲置。
如可从以上讨论看到的那样,对于应用程序、中间件及操作系统,存储器复制操作是性能敏感过程。用来进行存储器复制操作的多种方法借助于重复的加载和存储操作使数据分段通过CPU。如以上指示的那样,这种本性的操作约束CPU比较长的时间段,特别是当要复制大量数据时。这样的操作也较慢,因为存储器时延和存储器带宽导致与CPU速度相比较慢的整体传输速率,由此导致不希望的性能水平。
然而,对于固定页面(pinned page)的实模式(和因此实存储器地址)的存储器复制操作,的确存在某些方案,但对于由应用程序、由中间件及由操作系统一般使用的不存在。换句话说,当数据处理器在虚拟寻址模式中起作用时,高效的存储器复制操作简直是不可能的或不容许的。直到本发明的出现,只有当采用实寻址模式时,才进行改进存储器复制操作效率的努力,并且甚至在这种情况下都要求“页面的固定”。固定是当存储器配置成防止在存储器的该部分中存储的数据分页出去。这保证对于对临时缓冲器的数据存取不发生页面故障。另一个问题是,存储操作的典型实现使目的地高速缓冲存储器行从存储器读取,即使整个高速缓冲存储器行最终被重写。这也不希望地浪费存储器带宽的大部分。
传统存储器复制的另一个低效源是不良数据对准。典型计算机系统当加载和存储自然对准的数据时更高效。它们当加载和存储较大数据粒度时更高效(例如,64-位操作比32-位操作更高效)。不幸的是,大量类别应用软件当涉及相对于存储器子系统的数据的自然对准时表现不好。代之以,大多数应用软件依赖于操作系统(OS)指令,如bcopy或类似指令,以实现存储器复制操作。bcopy例行程序不知道应用程序对准行为,并且必须设计成在所有对准条件下高效地工作。
因此,存在克服与以上所讨论的现有技术相关的问题的需要。

发明内容
简短地说,按照本发明,公开的是一种用来保护存储器页面的内容的系统、方法、及计算机可读介质。该方法包括确定半同步存储器复制操作的开始。确定其中正在进行半同步存储器复制操作的地址范围。探测除去页面表条目的发出指令。该方法还包括确定发出指令是否注定为除去与在地址范围中的至少一个地址相关的页面表条目。响应发出指令注定为除去页面表条目,停止发出指令的执行,直到完成半同步存储器复制操作。
在本发明的另一个实施例中,公开了一种用来保护存储器页面的内容的系统。该系统包括处理器,该处理器具有耦合到其上的至少一个源寄存器和至少一个目标寄存器。也包括通信地耦合到处理器上的存储器。包括由处理器解释的、用于半同步存储器复制操作的第一操作码。与半同步存储器复制操作相关的源地址范围存储在至少一个源寄存器中,并且与半同步存储器复制操作相关的目标地址范围存储在至少一个目标寄存器中。系统还包括由处理器解释的、用来除去存储器页面表条目的第二操作码。包括地址比较器,用来比较与第二操作码相关的地址集和与半同步存储器复制操作相关的源地址范围和目标地址范围。处理器,响应与第二操作码相关的地址集对应于与半同步存储器复制操作相关的源地址范围和目标地址范围的至少一个,停止第二操作码的执行,直到完成半同步存储器复制操作。
在本发明的又一个实施例中,公开了一种用来保护存储器页面的内容的计算机可读介质。该计算机可读介质包括用来确定半同步存储器复制操作开始的指令。确定其中正在进行半同步存储器复制操作的地址范围。探测除去页面表条目的发出指令。该方法还包括确定发出指令是否注定为除去与在地址范围中的至少一个地址相关的页面表条目。响应发出指令注定为除去页面表条目,停止发出指令的执行,直到完成半同步存储器复制操作。
以上实施例的优点在于,它们提供允许处理器在存储器复制操作期间继续执行随后指令的存储器复制操作,由此避免不必要的处理器停机时间。本发明的另一个优点在于,因为存储器复制指令把有效(虚拟)地址当作变元,所以由存储器复制指令的源和目标引用的虚拟存储器页面不固定,并且可容许页面故障。这允许避免固定页面先验的开销。本发明的又一个优点在于,存储器复制指令对于地址的对准不施加约束,该地址作为指令变元传到它。本发明的另外优点在于,通过使用与数据完善结合的高速缓冲存储器注入,可避免存储器时延。


其中类似附图标记贯穿各个视图指相同或功能类似元件、并且与下面的详细描述一起并入说明书和形成其部分的附图,用来进一步示出各种实施例、和解释所有按照本发明的各种原理和优点。
图1是方块图,示出了根据本发明实施例的用来处理指令的示例性处理器;图2是方块图,示出了根据本发明实施例的在图1中的处理器的更简单版本,它包括示例性存储器复制机制;图3是操作流程图,示出了根据本发明实施例的把示例性存储器复制操作排队到存储器控制器的示例性过程;图4是操作流程图,示出了根据本发明实施例的示例性半同步存储器复制操作;图5是操作流程图,示出了根据本发明实施例的发出多个存储器复制指令的示例性过程;图6是操作流程图,示出了根据本发明实施例的目的地数据的高速缓冲存储器注入的示例性过程;图7是操作流程图,示出了根据本发明实施例的阻塞转换后备缓冲区无效条目指令的示例性过程。
具体实施例方式
如要求的那样,这里公开本发明的详细实施例;然而,要理解,公开的实施例只是本发明的示例,本发明能以各种形式体现。因此,这里公开的特定结构和功能细节不应解释成是限制性的,而是仅作为用于权利要求书的基础和作为用来教导本领域技术人员在实际任何适当详细结构中多样地使用本发明的代表性基础。而且,这里使用的术语和短语不旨在是限制性的;而是,提供本发明的可理解描述。
这里所使用的术语一个定义为一个或多于一个。这里所使用的术语多个定义为两个或多于两个。这里所使用的术语另一个定义为至少一个第二个或多个。这里所使用的术语包含和/或具有定义为包括(即开放性语言)。这里所使用的术语耦合定义为连接,尽管不必直接地,并且不必机械地。
这里所使用的术语“存储器复制操作”和“存储器复制”是在信息处理系统内执行的过程,在其中在其随机存取存储器的一部分中的数据复制到同一随机存取存储器的另一部分,而不改变源存储位置的存储器内容。然而,在本发明的示例性实施例中,术语“存储器复制”是指涉及多个千字节或甚至兆字节数据的复制的存储器复制操作。
本发明,根据实施例,通过提供用于存储器复制操作的更有效机制而克服与现有技术有关的问题。本发明允许处理器在存储器复制操作期间继续执行随后指令,由此避免不必要的处理器停机时间。
示例性处理器根据本发明的实施例,如图1中所示,示出了一种按照本发明的示例性处理器,总体上指示为100,用来处理指令和数据。处理器100包括单个集成电路处理器,如超标量处理器,它,如下面进一步讨论的那样,包括都由集成电路形成的各种执行单元、寄存器、缓冲器、存储器、及其他功能单元。
如图1中所示的那样,处理器100可以由互连结构106耦合到其他装置上,如系统存储器102,以及在一个实施例中,到第二处理器104上,以形成诸如计算机系统之类的较大数据处理系统。处理器100具有芯片上多级高速缓冲存储器分级结构,其分别包括例如统一级二(“L2”)高速缓冲存储器108、和分支级一(“L1”)指令(“I”)和数据(“D”)高速缓冲存储器110、112。如对于本领域的技术人员已知的那样,高速缓冲存储器108、110、112对于与在系统存储器102中的存储器位置相对应的高速缓冲存储器行提供低时延访问。
响应驻留在指令读取地址寄存器(“IFAR”)114中的有效地址(“EA”),从L1I-高速缓冲存储器110读取用于处理的指令。在每个周期期间,新指令读取地址可以从如下三个源的一个加载到IFAR114中分支预测单元(“BPU”)116,它提供由条件分支指令的预测生成的推测路径地址;组完成表(“GCT”)118,在完成单元(“CU”)118中,它提供非推测路径地址;及分支执行单元(“BEU”)120,它提供由非正确预测的条件分支指令的分辨生成的非推测路径地址。如果命中/不命中逻辑122,在由有效-至-实地址转换(“ERAT”)124转换包含在IFAR114中的EA和查阅在I-高速缓冲存储器目录126中的实地址(“RA”)之后,确定与在IFAR114中的EA相对应的指令的高速缓冲存储器行没有驻留在L1I-高速缓冲存储器110中,然后命中/不命中逻辑122经I-高速缓冲存储器请求总线128把RA作为请求地址提供给L2高速缓冲存储器108。这样的请求地址也可以基于最近访问图案由在L2高速缓冲存储器108内的预读取逻辑产生。响应请求地址,L2高速缓冲存储器108输出指令的高速缓冲存储器行,上述指令可能在通过可选择的预译码逻辑134之后,加载到预读取缓冲器(“PB”)130和L1I-高速缓冲存储器重加载总线132中。
一旦由在IFAR114中的EA规定的高速缓冲存储器行驻留在L1高速缓冲存储器110中,L1I-高速缓冲存储器110就把该高速缓冲存储器行输出到分支预测单元(“BPU”)116和指令读取缓冲器(“IFB”)136。BPU116扫描用于分支指令的指令高速缓冲存储器行,并且预测条件分支指令的结果,如果有的话。在分支预测之后,BPU116把推测指令读取地址供给到IFAR114,如以上讨论的那样,并且把预测传到分支指令队列(“BIQ”)138,从而当条件分支指令随后由分支执行单元120分辨时,可确定预测精度。
IFB136临时缓冲从L1I-高速缓冲存储器110接收的指令的高速缓冲存储器行,直到指令的高速缓冲存储器行可由指令转换单元(“ITU”)140转换。在所示的处理器100的实施例中,ITU140把来自用户指令集体系结构(“UISA”)指令的指令转换成直接可由处理器100的执行单元执行的可能不同数目的内部ISA(“IISA”)指令。这样的转换例如可以通过参考在只读存储器(“ROM”)模板中存储的微码而进行。在至少一些实施例中,UISA-至-IISA转换导致与UISA指令不同数目的IISA指令、和/或与对应UISA指令不同长度的IISA指令。得到的IISA指令然后由组完成表118分配到指令组,该指令组的成员允许被调度,并且相对于彼此乱序地被执行。组完成表118通过至少一个相关EA跟踪每个对于其执行还没有完成的指令组,该相关EA优选地是在指令组中的最老指令的EA。
在UISA-至-IISA指令转换之后,基于指令类型,指令可能乱序地被调度到锁存器142、144、146、148之一。就是说,分支指令和其他条件寄存器(“CR”)修改指令被调度到锁存器142,定点和加载-存储指令被调度到锁存器144、146的任一个,及浮点指令被调度到锁存器148。要求用来临时存储执行结果的重命名寄存器的每条指令,由适当CR映射器150、链接和计数(“LC”)寄存器映射器152、异常寄存器(“XER”)映射器154、通用目的寄存器(“GPR”)映射器156、或浮点寄存器(“FPR”)映射器158分配到一个或多个重命名寄存器。
调度的指令然后被临时放置在适当CR发出队列(“CRIQ”)160、分支发出队列(“BIQ”)138、定点发出队列(“FXIQ”)162、164、或浮点发出队列(“FPIQ”)166、168中。从发出队列160、138、162、164、166、168,指令有机会发出到用于执行的处理器100的执行单元,只要观察到数据相关性和反相关性。然而,指令保持在发出队列160、138、162、164、166、168中,直到指令的执行完成,并且在指令的任一条需要重新发出的情况下,结果数据,如果有的话,被写回。
如所示的那样,处理器100的执行单元包括用来执行CR-修改指令的CR单元(“CRU”)172、用来执行分支指令的分支执行单元(“BEU”)120、用来执行定点指令的两个定点单元(“FXU”)174、176、用来执行加载和存储指令的两个加载-存储单元(“LSU”)178、180、及用来执行浮点指令的两个浮点单元(“FPU”)182、184。执行单元172、120、174、176、178、180、182、184的每一个优选地实施成具有多个流水线级的执行流水线。
在执行单元172、120、174、176、178、180、182、184之一内的执行期间,指令从在耦合到执行单元上的寄存器文件内的一个或多个构造的和/或重命名寄存器接收操作数,如果有的话。当执行CR-修改或CR-依赖指令时,CRU172和BEU120访问CR寄存器文件186,该CR寄存器文件186在一个优选实施例中,包含CR和多个CR重命名寄存器,它们每个包括多个由一个或多个位形成的相异字段。在这些字段中,是LT、GT、及EQ字段分别指示一个值(典型地为指令的操作数或结果)是小于零、大于零、或等于零。链接和计数寄存器(“LCR”)寄存器文件188包含每一个的重命名寄存器、计数寄存器(“CTR”)、链接寄存器(“LR”),通过它们BEU120也可以分辨条件分支以得到路径地址。被同步的通用目的寄存器文件(“GPR”)190、192复制寄存器文件,存储由FXU174、176和LSU178、180访问和产生的定点和整数值。像GPR190、192也可以实施为同步的寄存器的复制集的浮点寄存器文件(“FPR”)158,包含从由FPU182、184的浮点指令和由LSU178、180的浮点加载指令的执行得到的浮点值。
在执行单元结束指令的执行之后,执行单元把结果写到由指令所规定的指定目的地,并且从发出队列除去指令,通知CU186,该CU186按程序顺序计划指令的完成。为了完成由CRU172、FXU174、176、或FPU182、184之一执行的指令,CU194向执行单元发信号,该执行单元把来自指定的重命令寄存器的结果数据,如果有的话,写回在适当寄存器文件内的一个或多个构造的寄存器。一旦在其指令组内的所有指令已经完成,就把它从GCT118除去。然而,其他类型的指令被不同地完成。
当BEU120分辨条件分支指令,并且确定应该采取的执行路径的路径地址时,路径地址相对于由BPU116预测的推测路径地址被比较。如果路径地址匹配,则不要求进一步的处理。然而如果计算的路径地址与预测的路径地址不匹配,则BEU120把正确的路径地址供给到IFAR114。在任一种情况下,分支指令然后可从BIQ138除去,并且当已经完成在同一指令组内的所有其他指令时,从GCT118除去。
在加载指令的执行之后,由执行加载指令计算的有效地址由数据ERAT(未示出)转换到实地址,并且然后作为请求地址提供给L1D-高速缓冲存储器112。在这时,加载指令从FXIQ162、164的任一个除去,并且放置在加载重排序队列(“LRQ”)196中,直到进行了指示的加载。如果请求地址在L1D-高速缓冲存储器112中不命中,则请求地址放置在加载不命中队列(“LMQ”)198中,从这,请求的数据从L2高速缓冲存储器108检索,并且如果失败,从另一个处理器104或从系统存储器102检索。LRQ196探听独占访问请求(例如,意图在于修改的读),在互连结构106上相对于飞行的加载清仓或删除,并且如果命中发生,则取消并重新发出加载指令。
利用存储队列(“STQ”)103类似地完成存储指令,在存储指令的执行之后把用于存储的有效地址加载到该存储队列103中。从STQ103,数据可存储到L1D-高速缓冲存储器112和L2高速缓冲存储器108的任一个或两者中。处理器100也包括存储器管理单元(“MMU”)105。MMU105包括用来处置由处理器请求的存储器访问的各种组件。例如,存储器管理单元202包括转换后备缓冲区(“TLB”),对于其包括用来把虚拟地址转换成实地址的页面表的部分(包括在MMU105中)。MMU105也包括用于存储器保护和高速缓冲存储器控制的组件。
示例性存储器复制机制图2是方块图,示出了根据本发明实施例的在图1中的处理器的更简单视图,它包括示例性存储器复制机制。图2示出了包括GPR190、192;L1高速缓冲存储器110、112;及MMU/TLB105的处理器核100。处理器100也包括操作码202,如本发明的示例性存储器复制指令。
新存储器复制指令(“mc”)添加到处理器100指令体系结构上,用来提供把数据从存储器的第一部分复制到存储器的第二部分的高效和灵活手段。本发明的存储器复制操作对于处理器半同步地操作。换句话说,处理器在存储器复制操作期间可执行随后指令。然而,存储器复制指令分别对于与在存储器102中的源和目标位置相对应的虚拟源和目标地址保持有效性的临时持续。在本发明的一个实施例中,存储器复制指令包括如下句法/语义mcRT、RS、RN。
RT寄存器包括用于存储器复制操作的目标存储器位置的有效(虚拟)地址。RS寄存器包括用于存储器复制操作的源存储器位置的有效(虚拟)地址。RN寄存器包括在存储器复制操作中待传输的字节数目。在一个实施例中,存储器复制指令也包括高速缓冲存储器注入(“CI”)寄存器,该寄存器包括用来识别接收预定数目的数据行的高速缓冲存储器的一个或多个级的信息。例如,CI寄存器在一个实施例中指示第一一些数据行要复制到L1高速缓冲存储器112,下十行要复制到L2高速缓冲存储器108,及下二十行要复制到L3高速缓冲存储器204。待复制的数据行的数目基于各个信息处理系统而变化。例如,在一个实施例中,数据行的数目由系统控制,以反映最好高速缓冲存储器命中可能性,其在高速缓冲存储器中的工作集的污染最小。系统分配用于指令流的数据行的数目和高速缓冲存储器的当前状态。
应该注意,如“mcRT、RS、RN”的指令格式的描述包括几个任意规定项,上述任意规定项包括用于指令操作码的名称和缩写、以及用于指示的寄存器的名称和缩写。操作码只需要唯一可识别并且与存储器复制操作相关;同样,尽管要求把虚拟(即有效)开始地址和结束地址提供给指令,但它们的缩写的名称和句法定位不是关键的;并且对于涉及待传输的数据的字节的数目的RN同样如此。另外,与RN参考标记相关的值也可称作待传输的数据的另一个量,而不是称作“数据的字节”;例如,它也可称作数据的“字”,其中字可以包括诸如32位之类的值。
存储器复制指令经非可高速缓冲单元(“NCU”)206排队到存储器控制器(MC)208。例如,NCU206允许存储器复制指令直接排队到存储器指令队列212中,而不首先加载到L1I-高速缓冲存储器110中。诸如纵横开关之类的结构控制器230仲裁存储器控制器与NCU230、L2高速缓冲存储器108、及L3高速缓冲存储器204之间的通信。结构控制器230也将L2高速缓冲存储器108、L3高速缓冲存储器204及NCU206彼此耦合。L2高速缓冲存储器108、L3高速缓冲存储器204及NCU206的每一个包括用来排队待通信到存储器控制器208的数据的队列323、234、236。
存储器指令队列212包括存储器复制指令214。存储器复制指令队列212在一个实施例中设计成能够并行容纳多到使可用存储器带宽饱和的存储器复制指令。存储器复制单元210根据存储器复制指令进行存储器复制操作。例如,数据从源地址216复制到存储器102的目的地地址218。
核100也包括由半同步存储器复制操作利用的源寄存器220、222和目标寄存器224、226。有效位228与寄存器220、222、224、226内的地址相关。在一个实施例中,可进行多个半同步存储器复制操作,并且每个半同步具有其自己的源和目标寄存器对和与它相关的有效位。保护与这些寄存器220、222、224、226相关的地址范围。例如,在存储器复制操作期间,有效位228为源地址范围Rs、Rs+Rn及目标地址范围Rt、Rt+Rn设置。如果在存储器复制操作正在被执行的同时,例如在有效位228被设置的同时,存储操作试图写地址范围Rs、Rs+Rn,则该存储指令将被阻塞或停止,直到完成存储器复制操作。允许用来从地址范围Rs、Rs+Rn读的加载操作。如果在存储器复制操作正在被执行的同时,例如在有效位228被设置的同时,存储或加载操作试图读/写地址范围Rt、Rt+Rn,则加载或存储指令将都被阻塞或停止,直到完成存储器复制操作,例如,对于地址范围Rt、Rt+Rn不再设置有效位228。
本发明的一个优点在于,阻止了与在源寄存器220、222和目标寄存器224、226中的地址范围相关的存储器页面被分页而没有固定。例如,在源寄存器220、222和目标寄存器224、226内的地址范围与由用于存储器分页的指令所瞄准的地址范围相比较。如果在源寄存器220、222和目标寄存器224、226内的地址范围被诸如转换后备缓冲区无效条目(“tlbie”)指令之类的存储器分页指令所瞄准,则这条指令将被停止,直到完成与该地址范围相关的存储器复制操作。例如,在页面表更新的情况下,由处理器100停止更新,直到完成所有未决存储器操作(就是说,发出隐式同步指令),并且不修改转换后备缓冲区(“TLB”)条目,直到完成存储器复制(就是说,发出隐式转换后备缓冲区无效条目(“tlbie”)指令)。
排队存储器复制操作的示例性过程图3是操作流程图,示出了把示例性半同步存储器复制操作排队到存储器控制器208的过程。图3的操作流程图在步骤302处开始,并且直接转到步骤304。处理器100接收用于存储器复制操作的调用。例如,用户代码调用存储器复制指令,并且把变元传到存储器复制指令。存储器复制指令的目标寄存器(“RT”)组件,在步骤306处,从用户代码接收用于存储器复制操作的目标存储器位置的有效(虚拟)地址。存储器复制指令的源寄存器(“RS”)组件,在步骤308处,从用户代码接收用于存储器复制操作的源存储器位置的有效(虚拟)地址。
存储器复制指令的字节寄存器(“RN”)组件,在步骤310处,接收在存储器复制操作中待传输的字节的数目。存储器复制指令的高速缓冲存储器注入寄存器(“CI”)组件,在步骤312处,接收指示目的地数据是复制到高速缓冲存储器还是到存储器的数据。在接收存储器复制指令的所有参数之后,指令在步骤314处经不可高速缓冲单元206排队到存储器控制器208。控制流程然后在步骤316处退出。
本发明的一个优点在于,因为存储器复制指令把有效(虚拟)地址作为变元,所以由存储器复制指令的源和目标引用的虚拟存储器页面不固定,并且可容许页面故障。这允许避免固定页面先验的开销。本发明的另一个优点在于,存储器复制指令对于地址的对准不施加约束,该地址作为指令变元传到它。
存储器复制指令的半同步操作图4是操作流程图,示出了示例性存储器复制指令的半同步属性。图4的操作流程图在步骤402处开始,并且直接转到步骤404。处理器100在步骤404处监视由存储器复制指令使用的地址范围。注意,这不对处理器-存储器子系统施加任何新要求,而是处理器100的现有功能和惯例。处理器100在步骤406处确定存储器复制指令是否已经排队到存储器控制器208用于执行。例如,示例性存储器复制操作与处理器核100是半同步的,由此允许处理器核100在存储器复制操作期间执行随后指令。
如果该确定的结果是否定的,则处理器100在步骤408处等待,直到存储器复制指令被排队以继续执行随后指令。如果该确定的结果是肯定的,则处理器100在步骤410处相对于用于存储器复制指令的地址范围,例如在源寄存器220、222及目标寄存器224、226中的地址范围,检查随后加载和存储。例如,到在存储器中不与存储器复制指令的源和目的地地址重叠的位置的随后加载和存储非禁止地继续。
处理器100在步骤412处确定随后加载操作是否到存储器复制指令的目的地。如果该确定的结果是肯定的,则处理器100在步骤414处悬置这些加载操作的执行,直到完成存储器复制操作。例如,在存储器复制操作期间,为源地址范围Rs、Rs+Rn及目标地址范围Rt、Rt+Rn设置有效位228。如果在存储器复制操作正在被执行的同时,例如在有效位228被设置的同时,存储或加载操作试图读/写地址范围Rt、Rt+Rn,则加载或存储指令将都被阻塞或停止,直到完成存储器复制操作,例如,对于地址范围Rt、Rt+Rn不再设置有效位228。当完成存储器复制操作时,处理器100在步骤416处接收完成存储器复制操作的通知。处理器100然后在步骤424处继续执行变得从指令流水线可得到的指令。
如果在步骤412处的确定结果是否定的,则处理器100在步骤418处确定随后存储操作是否到存储器复制指令的源和/或目的地。如果该确定的结果是肯定的,则处理器100在步骤420处悬置这些存储操作的执行,直到完成存储器复制操作。把加载/存储操作的地址范围同与存储器复制操作相关的地址范围(Rs至Rs+Rn、Rt至Rt+Rn)相比较,保护了在存储器复制操作期间的存储器复制地址范围。换句话说,保持了存储器复制地址范围的有效性的临时持续。当完成存储器复制操作时,处理器100在步骤420处接收完成存储器复制操作的通知。
本发明的半同步存储器复制操作避免对通知用户存储器复制操作完成的复杂机制的需要,例如通过使存储器复制指令与标记相关并且使得用户发出在标记上的等待指令以保证完成。在一个实施例中,当完成存储器复制操作时,“移动者完成(mover done)”脉冲发送到核100,并且关闭有效位228。这向处理器发出信号,存储器复制操作完成。如果在步骤418处的确定结果是否定的,则处理器100在步骤424处继续执行随后指令。控制流程然后在步骤426处退出。
通过停止到存储器复制指令的源的存储操作或到存储器复制指令的目的地的加载/存储,直到完成存储器复制操作,处理器100按照处理器100的相干性和一致性规则把存储器复制指令作为存储指令序列来处理。这个方面是重要的,因为它允许计算与存储器复制操作重叠,同时保证其他存储器操作被保持并且与存储操作序列相一致。
在本发明的一个实施例中,处理器体系结构要求按预定顺序(顺序一致性)进行加载/存储操作。因此,不管加载/存储操作是否瞄准在源寄存器220、222或目标寄存器224、226内的地址范围,在半同步存储器复制操作期间都阻塞/停止加载/存储操作。在另一个实施例中,处理器体系结构仅要求按预定顺序进行存储操作(中间一致性)。因此,存储操作的瞄准地址与源寄存器220、222的地址范围相比较。如果瞄准地址在源寄存器220、222的地址范围内,则阻塞/停止存储操作,直到完成半同步存储器复制操作。在另外实施例中,处理器体系结构不要求按预定顺序进行加载/存储操作(弱一致性)。因此,加载/存储操作的瞄准地址与源寄存器220、222和目标寄存器224、226相比较,如以上对于图4讨论的那样。
本发明的另一个优点在于,不要求页面边界限制。然而,可能利用本发明的存储器复制指令的效率的中间件和字节级复制(“bcopy”)功能可以结束复制功能,以便不穿过页面边界(对于源和目的地都是)。换句话说,存储器复制指令在一个实施例中在用于跨过多个页面边界的存储器复制的循环中被调用。这实际上是良好设计点,该设计点给出对于页面表更新首先完成所有未决存储器操作的约束。如果存储器复制的大小是不受约束的,则它可能导致一个具有独占系统资源的巨大存储器复制的过程,由此影响操作系统的公平性方面。
本发明的另一个优点在于,为了实施本发明的各种实施例,不必改变由编程者使用的编程指令和编程语义。
应该注意,这个机制对于不同的页面大小可调节,以便保证高效存储器复制操作以及允许由过程的系统资源使用的公平性。另外,注意,由于源和目的地地址可能在其相应页面内在不同偏移处,所以这意味着实施“地址移位”,以便为了高效存储器复制更理想地对准偏移。
发出多个存储器复制指令的示例性过程图5是操作流程图,示出了以流水线方式发出多个存储器复制指令的示例性过程。图5的操作流程图在步骤502处开始,并且直接转到步骤504。在至少一个存储器复制指令已经排队到存储器控制器208之后,处理器100在步骤504处发出至少一个另外的存储器复制指令。存储器控制器208在步骤506处确定存储器复制指令队列212是否是充满的。如果该确定的结果是肯定的,则忙信号在步骤508处返回到处理器100。例如,存储器复制指令可返回指示资源忙的条件代码。
在另一个实施例中,存储器复制指令被停止,直到存储器复制指令队列212具有用于新发出存储器复制指令的足够空间。本发明能够配置成,实现指示存储器复制指令队列充满的各种方法。停止的一个优点在于,它保证用来访问存储器复制资源的“顺序公平性”。在一个实施例中,如果返回忙信号,则对于在加载系统中,过程的某些可能极需存储器复制资源的推断,而重新尝试操作。另外,如果返回忙信号,则请求存储器复制操作的应用程序在它等待存储器复制指令队列212空闲的同时具有做其他工作的潜力。
如果在步骤506处的确定结果是否定的,则另外的存储器复制指令在步骤510处排队到存储器复制指令队列212。控制流程然后在步骤512处退出。存储器复制指令队列212在一个实施例中设计成,能够并行容纳多到使可用存储器带宽饱和的存储器复制指令。即使队列212比适用的存储器带宽深,存储器复制指令与随后指令的重叠仍然对于运行应用程序产生有形好处。如果源和目的地地址范围重叠,则存储器复制指令的重叠区域的内容在一个实施例中是未限定的,并且编程错误典型地发生。然而,在本发明的可选择实施例中,重叠的源和目的地地址范围不引起编程错误。在这个实施例中,来自源地址的数据允许复制到目的地地址,但将给予编程者可能损坏的警告。
高速缓冲存储器注入的示例性过程图6是操作流程图,示出了基于在存储器复制指令的高速缓冲存储器注入寄存器中的信息的目的地数据的高速缓冲存储器注入的示例性过程。图6的操作流程图在步骤602处开始,并且直接转到步骤604。处理器100在步骤604处针对高速缓冲存储器注入位检查存储器复制指令。高速缓冲存储器注入位例如位于指令的不同寄存器中,或者可以可选择地位于指令的RN寄存器中。高速缓冲存储器注入位向存储器复制单元210指示何处复制数据的全部或一些。例如,为了数据的更快处理,存储器复制指令包括高速缓冲存储器位,从而当处理器加载数据时,它从高速缓冲存储器而不是从存储器加载。
如果在步骤606处确定高速缓冲存储器位不存在,则存储器复制单元210在步骤608处把目的地数据复制到存储器102中。控制流程然后在步骤610处退出。如果在步骤606处确定高速缓冲存储器位存在,则存储器复制单元210在步骤612处把目的地数据的预定数目行复制到由高速缓冲存储器注入位所指示的适当级的高速缓冲存储器中。例如,一些行可移动到级1高速缓冲存储器112,下十行复制到级2高速缓冲存储器108,及下二十行复制到级3高速缓冲存储器204。这样,高速缓冲存储器的上部级不被损坏。待复制到高速缓冲存储器中的行的数目例如基于信息处理系统而变化。目的地数据的拷贝在步骤614处复制到存储器102中。高速缓冲存储器注入的一个优点是,当与数据完善结合时,可避免存储器时延。
也要注意,存储器复制操作的结果常常以不同的方式使用。在多种情况下,在目的地存储器中的数据立即由处理器用于随后指令的消耗。这样一种使用模型的例子是在读操作之后从用户缓冲器移动数据文件。在这样的情况下,有用的是,处理器100把目的地数据上载到高速缓冲存储器中以便由处理器100消耗。在其他情况下,如把数据从用户缓冲器移动到网络缓冲器以经直接存储器访问(“DMA”)传送到网络(或I/O装置)中,目的地数据放置在用于进行DMA操作的存储器中(就是说,它不高速缓冲)。
阻塞TLBIE指令的示例性过程图7是操作流程图,示出了在半同步存储器复制操作期间阻塞转换后备缓冲区无效条目指令的示例性过程。图7的操作流程图在步骤702处开始,并且直接转到步骤704。处理器100在步骤704处确定是否已经发出tlbie指令。如果该确定的结果是否定的,则处理器在步骤704处继续确定是否已经发出tlbie指令。如果该确定的结果是肯定的,则处理器100在步骤706处检查由tlbie指令所瞄准的地址。
处理器100在步骤708处确定由tlbie指令所瞄准的地址是否在与半同步存储器复制操作相关的地址范围内。例如,处理器100把由tlbie指令瞄准的地址与在源和目标寄存器220、222、224、226内找到的地址范围相比较。如果该确定的结果是否定的,则处理器100在步骤710处允许tlbie指令执行。如果该确定的结果是肯定的,则处理器100在步骤714处停止tlbie指令,直到已经完成存储器复制操作。控制流程然后在步骤716处退出。
图7的示例性过程也适用于在存储器分页时涉及的其他指令。通过停止瞄准与半同步存储器复制操作相关的地址的tlbie指令,保护了地址免到页外(page-out)。换句话说,保持了对于在源和目的地寄存器220、222、224、226内的地址的有效性的临时持续。地址不必固定,这是昂贵的。
非限制例子本发明的以上实施例是有利的,因为它们提供在存储器复制操作期间允许处理器继续执行随后指令的存储器复制操作,由此避免不必要的处理器停机时间。本发明的另一个优点在于,因为存储器复制指令采用有效(虚拟)地址作为变元,所以由存储器复制指令的源和目标引用的虚拟存储器页面不固定,并且可容许页面故障。这允许避免固定页面先验的开销。本发明的又一个优点在于,存储器复制指令对于地址的对准不施加约束,上述地址作为指令变元传到它。本发明的另外优点在于,通过使用与数据完善结合的高速缓冲存储器注入,可避免存储器时延。
本发明可以以硬件、软件、或硬件和软件的组合实现。根据本发明优选实施例的一种系统可以以集中形式在一个计算机系统中实现,或者以其中不同组件跨过几个互连的计算机系统分布的分布式形式实现。任何种类的计算机系统-或适于实现这里描述的方法的其他设备,是适合的。硬件和软件的典型组合可以是具有计算机程序的通用目的计算机系统,该计算机程序当被加载和执行时,控制计算机系统,从而该计算机系统实现这里描述的方法。
一般地,执行以实现本发明的实施例的例行程序,不管是否作为操作系统的部分,或特定应用程序、组件、程序、模块、对象或指令序列实现,这里都可以称作“程序”。计算机程序典型地包括将由本机计算机转换成机器可读格式并因此可执行指令的多条指令。而且,程序包括局部驻留到程序或在存储器中或在存储装置上发现的变量和数据结构。另外,这里描述的各种程序可以基于用途而被识别,为了该用途它们在本发明的特定实施例中被实施。然而,应该认识到,遵循的任何特定程序命名法仅为了方便而使用,并因而本发明不应该限于仅以由这样的命名法识别和/或所指的任何特定用途而使用。
尽管已经公开了本发明的特定实施例,但本领域的技术人员将理解,不脱离本发明的精神和范围,可对特定实施例进行改变。本发明的范围因此不限于特定实施例,并且旨在所附权利要求覆盖在本发明的范围内的任何和所有这样的应用、修改、及实施例。
权利要求
1.一种在超标量处理器中用来保护存储器页面的内容的方法,该方法包括确定半同步存储器复制操作的开始;确定其中正在进行所述半同步存储器复制操作的地址范围;探测除去页面表条目的发出指令;确定所述发出指令是否注定为除去与在所述地址范围中的至少一个地址相关的页面表条目;及响应所述发出指令注定为除去所述页面表条目,停止所述发出指令的执行,直到完成所述半同步存储器复制操作。
2.根据权利要求1所述的方法,其中所述发出指令是转换后备缓冲区无效输入指令。
3.根据权利要求1所述的方法,还包括防止对于其中正在进行所述半同步存储器复制操作的地址范围的写操作。
4.根据权利要求1所述的方法,还包括允许从在其中正在进行所述半同步存储器复制操作的地址范围内的源区域的读操作。
5.根据权利要求1所述的方法,还包括防止从在其中正在进行所述半同步存储器复制操作的地址范围内的目标区域的读操作。
6.根据权利要求1所述的方法,其中停止保持对于其中正在进行所述半同步存储器复制操作的地址范围的有效性的临时持续。
7.一种用来保护存储器页面的内容的系统,该系统包括处理器,具有耦合到其上的至少一个源寄存器和至少一个目标寄存器;存储器,通信地耦合到所述处理器上;第一操作码,其由所述处理器解释,用于半同步存储器复制操作,其中与所述半同步存储器复制操作相关的源地址范围存储在所述至少一个源寄存器中,并且与所述半同步存储器复制操作相关的目标地址范围存储在所述至少一个目标寄存器中;第二操作码,其由所述处理器解释,用来除去存储器页面表条目;及地址比较器,用来比较与所述第二操作码相关的地址集和与所述半同步存储器复制操作相关的源地址范围和目标地址范围;其中所述处理器,响应与所述第二操作码相关的地址集对应于与所述半同步存储器复制操作相关的源地址范围和目标地址范围的至少一个,停止所述第二操作码的执行,直到完成所述半同步存储器复制操作。
8.根据权利要求7所述的系统,其中所述第二操作码是转换后备缓冲区无效输入指令。
9.根据权利要求7所述的系统,其中在正在进行所述半同步存储器复制操作时,所述处理器阻止对于与所述半同步存储器复制操作相关的源地址范围和目标地址范围的写操作。
10.根据权利要求7所述的系统,其中所述处理器允许从与所述半同步存储器复制操作相关的源地址的读操作。
11.根据权利要求7所述的系统,其中在正在进行所述半同步存储器复制操作时,所述处理器阻止从与所述半同步存储器复制操作相关的目标地址范围的读操作。
12.根据权利要求7所述的系统,其中停止保持了对于其中正在进行所述半同步存储器复制操作的地址范围的有效性的临时持续。
13.一种用来保护存储器页面的内容的计算机可读介质,该计算机可读介质包括用来执行在根据权利要求1-6的任一项的方法中的步骤的指令。
全文摘要
公开了一种用来保护存储器页面的内容的系统、方法、及计算机可读介质。该方法包括确定半同步存储器复制操作的开始。确定其中正在进行半同步存储器复制操作的地址范围。探测除去页面表条目的发出指令。该方法还包括确定发出指令是否注定为除去与在地址范围中的至少一个地址相关的页面表条目。响应发出指令注定为除去页面表条目,停止发出指令的执行,直到完成半同步存储器复制操作。
文档编号G06F9/38GK1987826SQ20061013224
公开日2007年6月27日 申请日期2006年10月12日 优先权日2005年12月22日
发明者塞特雅·P·沙玛, 布鲁斯·G·米利, 贝拉拉姆·辛哈罗伊, 彼得·H·霍克希尔德, 拉维·K·阿里米利, 拉姆·K·戈文达拉贾 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1