可编程数据预取的制作方法

文档序号:6476841阅读:122来源:国知局
专利名称:可编程数据预取的制作方法
技术领域
本申请一般地涉及数据预取。更具体地说,本申请涉及利用可编 程对象识别来预取数据的方法、系统和计算机程序产品。
背景技术
中央处理器(CPU)的高速緩沖存储器是计算机的CPU用于减小
访问存储器的平均时间的高速緩冲存储器。高速緩冲存储器是用于保 存来自最频繁使用的主存储单元的数据的副本的更小、更快的存储 器。只要大多数存储器访问针对的是高速緩存的存储单元,存储器访 问的平均等待时间就更接近于高速緩冲存储器的等待时间,而不是主 存储器的等待时间。
当处理器希望在主存储器中的某个存储单元中进行读取或写入 时,处理器首先检查该存储单元是否在高速緩冲存储器中。这是通过 比较该存储单元的地址和可能包含该地址的高速緩冲存储器中的所 有标记来实现的。当处理器发现该存储单元在高速緩沖存储器中时, 这被称为高速緩冲存储器命中。当处理器不能发现该存储单元在高速 緩冲存储器中时,这被称为高速緩冲存储器缺失。在高速緩冲存储器 命中的情况下,处理器立即在高速緩沖存储器线中读取或写入数据。 导致高速緩冲存储器命中的访问的比例被称为命中率,并且是高速緩 冲存储器的有效性的度量。
在高速緩沖存储器缺失的情况下,大多数高速緩沖存储器分配新 的条目,该条目包含刚刚缺失的标记和来自存储器的数据的副本。随 后正如高速緩冲存储器命中的情况一样,可对新条目应用引用。高速 緩冲存储器缺失是相对较慢的,因为它们要求从主存储器传送数据。 这种传送导致延迟,因为主存储器比高速緩沖存储器慢得多,并且还200880011559. 7
说明书第2/12页
导致用于在把新的数据传给处理器之前,把新数据记录在高速緩冲存 储器中的开销。
一旦高速緩冲存储器已满,则必须从高速緩沖存储器中除去数 据,以便为更新的数据留出空间。用于选择从高速緩冲存储器中除去
哪些数据的最常见方法是追踪特定数据块最后被使用的时间,并且 从高速緩冲存储器中除去最近最少使用的数据块。因此,如果数据最 近未被使用,那么它不可能在高速緩冲存储器中,并且在CPU能够 访问该数据之前,必须从主存储器加载该数据。当CPU等待从存储 器中检索该数据的时候,这会导致性能的损失。
这个问题的一种解决方案是预期在不远的将来需要什么数据, 并把该数据预取到高速緩沖存储器中。确定预取哪些数据的常用方法 有两种
-顺序读取,和
-接触指令。
在使用顺序读取的情况下,紧邻最后访问的数据之前或之后的数 据被读取。在预取具有良好空间局部性的数据时,顺序读取是有效的, 但是当访问位于任意位置的数据时,顺序读取是无用的。
对于接触指令的每次执行,[O,尺寸-l范围内的随机数被加到 接触指令的地址操作数中以产生虚拟地址。地址的页面部分构成进程 的页面引用串中的下一个元素。当接触指令产生对无效页面的页面引 用时,解释器必须向该进程分配帧。此外,接触指令通常是咨询指令。 咨询指令是可选的指令,这意味着如果中央处理器忙的话,可能不执 行咨询指令。因此,如果硬件忙的话,接触指令可能不工作。另外, 就接触指令来说,当对象A涉及对象B,随后对象B涉及对象C时, 这些对象中的每一个通常位于软件栈的不同层中。从而,软件栈中作 用于对象A的层中的指令将不知道对象C和层次上在对象C之下的 任何其它对象,因为既然对象C直接在对象B之下,对象C不会直 接在对象A之下。这种情况意味着软件栈的给定层通过接触指令,最 多只能预取层次上直接在其之下的对象。即,对象A只能预取对象B,因为对象B是直接在对象A之下的唯一对象。

发明内容
图解说明的实施例提供了 一种根据对象之间的已知层次关系来 识別将被访问的对象,使得数据能够被预取到高速援冲存储器中的智 能方法。当执行程序时,获得程序的第一对象的对象标识符。对数据 结构进行查找操作,以确定所述对象标识符是否存在于所述数据结构 中。响应于所述对象标识符存在于所述数据结构中,检索被所述对象 标识符引用的被引用对象标识符。把与被引用对象标识符相关联的数 据从主存储器取到高速緩冲存储器中。
图解说明的实施例还提供了响应于对象标识符未能出现在数据 结构中,确定第一对象是否引用了第二对象。响应于第一对象引用了 第二对象,填充数据结构以包括第一对象信息。图解说明的实施例还 确定第二对象是否引用了第三对象。响应于第二对象引用了第三对 象,填充数据结构以包括第二对象信息。
在图解说明的实施例中,对象信息至少包括下述之一对象标识 符、偏移量、或者被引用对象标识符,其中,所述偏移量识别第一对 象内引用第二对象的地址的位置。第一对象可以是多个对象之一,以 及所述多个对象中的每个对象都可被唯一地识别。连接器/加载器程序 唯一地识别多个对象中的每个对象。连接器/加载器程序通过向多个对 象中的每个对象添加附加标识符来唯一地识别多个对象中的每个对象。
在其它图解说明的实施例中,提供了 一种包含具有计算机可读程 序的计算机可用介质的计算机程序产品。当在计算设备上执行时,所 述计算机可读程序使计算设备执行上面关于举例说明方法的实施例 概述的操作中的各个操作和操作的组合。
在另一图解说明的实施例中,提供了一种系统,所述系统可包含 处理器和与处理器耦接的存储器。存储器可包含当由处理器执行时, 使处理器执行上面关于举例说明方法的实施例概述的操作中的各个
7操作和操作的组合的指令。


结合附图,参考例证实施例的下述详细说明,将更好地理解本发
明以及本发明的优选使用模式与另外的目的和优点,其中
图1描述其中可实现例证实施例的数据处理系统的方框图2描述按照例证实施例,用于利用可编程对象识别来预取数据
的组件的例证方框图3描述按照例证实施例的例证对象关系;
图4描述按照例证实施例的其中引用对象的例证可执行程序代
码的一部分;
图5描述按照例证实施例的对象表的例证逻辑表示; 图6描述按照例证实施例的例证对象寻址方案;以及 图7描述按照例证实施例的预取数据操作的流程图。
具体实施例方式
例证实施例提供了利用可编程对象识别来预取数据的机制。图1 是其中可实现本发明实施例的数据处理环境的例证示图。应认识到, 图l只是例证性的,并不意图宣称或意味着对可实现本发明的各个方 面或实施例的环境的任何限制。可对所描述的环境做出许多修改,而 不脱离本发明的精神和范围。
现在参见图1,图中示出了其中可实现例证实施例的数据处理系 统的方框图。数据处理系统100是对于例证实施例来说,实现各个进 程的计算机可用代码或指令可位于其中的计算机的例子。
在所描述的例子中,数据处理系统100采用中心体系结构,该中 心体系结构包括北桥和存储器控制中心(MCH)102以及南桥和输入/ 输出(I/0)控制中心(ICH)104。处理单元106、主存储器108和图形处 理器110与北桥和存储器控制中心102耦接。处理单元106可包含一 个或多个处理器,甚至可以利用一个或多个不同种类的处理器系统来
8实现。图形处理器110可通过加速图形端口(AGP)与MCH耦接。
在描述的例子中,局域网(LAN)适配器112与南桥和I/0控制中 心104耦接,音频适配器116、键盘和鼠标适配器120、调制解调器 122、只读存储器(ROM)124、通用串行总线(USB)端口和其它通信端 口 132以及PCI/PCIe设备134通过总线138与南桥和I/O控制中心 104耦接,硬盘驱动器(HDD)126和CD-ROM驱动器130通过总线140 与南桥和1/0控制中心104耦接。例如,PCI/PCIe设备可包括以太网 适配器、插入卡、笔记本计算机用PC卡。PCI使用卡总线控制器, 而PCIe不使用卡总线控制器。ROM 124可以是例如闪速二进制输入 /输出系统(BIOS)。硬盘驱动器126和CD-ROM驱动器130可以使用 集成驱动器电子技术(IDE)或串行高级技术附件(SATA)接口 。超级 1/0(SIO)设备136可与南桥和I/O控制中心104耦接。
操作系统运行于处理单元106上,并且协调和提供图1中的数据 处理系统100内的各个组件的控制。操作系统可以是可从市场上获得 的操作系统,比如Microsoft Windows XP(Microsoft和Windows 是Microsoft Corporation在美国、其它国家或者美国和其它国家的注 册商标)。面向对象的编禾呈系统,比如JavaTM编程系统可以和操作系 统一起运行,并且提供从在数据处理系统100上执行的Java程序或 应用程序对操作系统的调用。Java和所有基于Java的商标是Sun Microsystems,Inc.在美国、其它国家或者美国和其它国家的注册商标。 操作系统、面向对象的编程系统、以及应用程序或程序的指令位 于存储设备,比如硬盘驱动器126上,并且可被载入主存储器108中 供处理单元106执行。例证实施例的进程可由处理单元106利用计算 机实现的指令来执行,所述计算机实现的指令可位于诸如主存储器 108、只读存储器124之类的存储器中,或者位于一个或多个外围设 备中。
图1中的硬件可随实现而变化。除了或者代替图1中描述的硬件 之外,可以使用其它内部硬件或外围设备,比如闪存、等效的非易失 性存储器、或者光盘驱动器等。另外,例证实施例的进程可应用于多处理器数据处理系统。
在一些例证的例子中,数据处理系统100可以是个人数字助理(PDA),它通常配置有闪存以提供用于保存操作系统文件和/或用户产生的数据的非易失性存储器。总线系统可由一个或多个总线,比如系统总线、1/0总线和PCI总线构成。当然,可以利用任意种类的通信架构或体系结构来实现总线系统,所述通信架构或体系结构提供附接
于该架构或体系结构的不同组件或设备之间的数据传输。通信单元可以包括用于发送和接收数据的一个或多个设备,比如调制解调器或网络适配器。例如,存储器可以是主存储器108,或者诸如存在于北桥和存储器控制中心102中的高速緩沖存储器。处理单元可以包括一个或多个处理器或CPU。在图1和上述例子中描述的例子并不意味着任何体系结构限制。例如,除了釆取PDA的形式之外,数据处理系统100也可以是平板式计算机、膝上型计算机或者电话设备。
图2描述按照例证实施例,用于利用可编程对象识别来预取数据的组件的例证方框图。例证的实施例使用术语"对象,,而不是"数据",因为对象是用作程序的基本构件块的运行时数据存储的个体单元。为了利用可编程对象识别来预取对象,编译器204必须首先编译源代码202。源代码202可以是由数据处理系统,比如图1的数据处理系统100执行的程序或应用程序。编译器204是把用源计算机语言编写的源代码202的文本转换成目标计算机语言或目标代码206的计算机程序或程序集。目标代码206通常具有适合于由其它程序,比如连接器/加载器模块208处理的形式,但是目标代码206还可以是人类可读的文本文件。在源代码202的编译期间,编译器204使用对象识别器210来识别源代码202内的对象。随后,对象唯一标识符生成器212向对象识别器210所识别的每个对象分配唯一的标识符。唯一识别的对象随后^皮包括在目标代码206中。
当用户请求执行程序时,连接器/加载器模块208识别目标代码206中由编译器204产生的唯一识别对象。连接器/加栽器模块208可通过向每个唯一识别对象添加辅助标识符,使得可把一个程序的对象与另一个程序的对象区分开来,来进一步唯一地识别唯一识别对象。如下所述,通过允许容易地识别对象,借助程序特有的唯一标识符来进一步区分对象可以提高高速緩沖存储器性能。随后,连接器/加载器
模块208获得由编译器204产生的目标代码206,并把目标代码206汇编成可执行程序214。存储器216,比如图1中的主存储器108保存由连接器/加载器模块208产生的可执行程序214。
可执行程序214是几层组件代码的堆栈,每个组件通过作用于给定组件所拥有的对象来完成一组任务。組件是待安装程序的一个片段,比如单个文件、 一组相关文件、对象、注册、注册表项、快捷方式、资源、分成目录的程序库、共享代码段等。 一个简单例子是由几层驱动程序构成,比如位于协议驱动程序之下的适配器驱动程序,协议驱动程序又位于阵列驱动程序之下,阵列驱动程序再位于逻辑巻驱动程序之下,等等。
处理单元218随后执行可执行程序214。当处理单元218执行可执行程序214时,在唯一识别的对象出现在可执行程序214中的时候,可编程对象预取/识别器模块220识别它们。随后,可编程对象预取/识别器模块220参考对象表222来确定在对象表222中是否提及了引用另一对象的唯一识别对象。对象表222是引用其它唯一识别对象的唯一识别对象的二维数据结构。当在程序的执行过程中遇到唯一识别对象时,可编程对象预取/识别器模块220填充对象表222。如果在对象表222中未提及引用另一对象的唯一识别对象,那么可编程对象预取/识别器才莫块220用唯一识别对象的对象标识符、被该唯一识别对象引用的所有对象、以及在该唯一识别对象的地址中被引用对象的地址所位于的每个偏移量来填充对象表222。
随后,可编程对象预取/识别器模块220确定被引用对象是否引用其它对象。如果被引用对象引用其它对象,那么可编程对象预取/识别器模块220用该被引用对象的对象标识符、被该被引用对象引用的所有对象、以及在该被引用对象的地址中其它被引用对象的地址所位于的每个偏移量来填充对象表222。如果可执行程序214中的被引用对象没有引用其它对象,那么在对象表222中不填充任何信息,因为对象表222只包含引用其它对象的对象的对象信息,以便通过预取被其它对象引用的对象来提高系统性能。
如果引用另 一对象的唯一识别对象存在于对象表222中,那么可编程对象预取/识别器模块220使用对象表222中所识别的偏移量,从唯一识别对象荻得地址,以便预取主存储器224中的被引用对象。可编程对象预取/识别器模块220随后把预取的对象放入高速緩冲存储器226中。可编程对象预取/识别器^^莫块220利用在对象表222中识别的偏移量,来识别每个被引用对象在唯一识别对象内的地址,并把每个被引用对象预取到高速緩冲存储器226中。
图3描述按照例证实施例的例证对象关系。对象关系300是存在于可执行程序,比如图2的可执行程序214内的对象的对象关系。在对象关系300中,对象A302引用两个其它对象对象B 304和对象C 306。从图中可看出,对象B304进一步引用对象D308和对象E310。另外,对象C 306引用对象F312
在可执行程序的执行期间,当可编程对象预取/识别器模块遇到对象A302时,通过利用对象A302内的偏移量,对象B 304和对象C 306被预取到高速緩冲存储器中。当预取对象B 304和对象C 306时,通过利用对象B 304和对象C 306内的偏移量,对象D 308、对象E 310和对象F 312也^f皮预取到高速緩冲存储器中。
图4描述按照例证实施例的其中引用对象的例证可执行程序代码的一部分。可执行程序代码部分400可以是代码,比如图2的可执行程序214。可执行程序代码部分400是表示图3的对象关系300的程序代码。在可执行程序代码部分400中,对象A402引用两个其它对象对象B 404和对象C 406。从图中可看出,对象B 404进一步引用对象D408和对象E410。另外,对象C406引用对象F412。
通过捕获对象关系,可有效地预取可执行程序代码部分400的层次中的其它对象。关键点在于,被预取的对象没有空间局部性,并在表格中建立对象关系。如上所述,对于每个对象类型,保持一个二维
12对象表。对象表保存信息,比如唯一识别对象的对象标识符、被唯一 识别对象引用的所有对象、以及被引用对象的地址在该唯一识别对象 的地址中所位于的每个偏移量。
图5描述按照例证实施例的对象表的例证逻辑表示。对象表500 包括对象标识符502、对象中的偏移量504、以及所指向的对象506。 对象标识符502是引用另一对象的唯一识别对象的标识符或名称。对 象中的偏移量504是唯一识别对象内引用其它对象的地址。所指向的 对象506是被唯一识别对象引用的对象的标识符。对象表500可由硬 件按照最近最少使用(LRU)方式、最不常用(LFU)方式等来保持。LRU 算法首先丢弃最近最少使用的项。LRU算法要求保持追踪什么项何时 被使用。LFU算法计数多久需要某一项,并首先丢弃最不常用的那些 项。因此,对象表500中的大多数对象引用将是被频繁引用或使用的 对象类型。
图6描述按照例证实施例的例证对象寻址方案。在对象寻址方案 600中,对象A 602具有虛拟地址(VA)0xi000。利用对象表,比如图 5的对象表500,当遇到对象A 602时,可编程对象预取/识别器模块 将认识到(VA十OxlO)指向对象B 604的虚拟地址(VB)0x200,还将认 识到(VA十0x40)指向对象C 606的虛拟地址(VC)0x4000。当可编程对 象预取/识别器模块随后遇到对象B 604时,可编程对象预取/识别器 才莫块将《人识到0^+ 0x80)指向对象D 608的虚拟地址(VD)0x8800,还 将认识到(VB十0x88)指向对象E 610的虚拟地址(VE)0x2000。因此, 当可编程对象预取/识别器模块随后遇到对象C 606时,可编程对象预 取/识别器模块将^人识到0^+ 0x48)指向对象F 612的虚拟地址 (VF)OxlOO。可编程对象预取/识别器才莫块,比如图2的可编程对象预 取/识别器模块220的这种对象识别有效地跨越软件栈的整个层实时 地取对象。
图7描述按照例证实施例预取数据的操作的流程图。如上所述, 图解说明的实施例使用术语"对象"而非"数据",因为对象是用作程序 的基本构件块的运行时数据存储的个体单元。当操作开始时,编译器,比如图2的编译器204编译源代码(步骤702)。在源代码的编译期间, 编译器使用对象识别器来识别源代码内的对象(步骤704)。随后,编 译器使用对象唯一标识符生成器向对象识别器所识别的每个对象分 配唯一标识符(步骤706)。编译器随后创建包括唯一识别对象的目标 代码(步骤708)。
当处理单元,比如图2的处理单元218接收执行程序的请求时(步 骤710),连接器/加载器模块,比如图2的连接器/加栽器模块208识 别由编译器产生的目标代码中的唯一识别对象(步骤712)。随后,连 接器/加载器模块通过向唯一识别对象添加辅助标识符,来进一步唯一 地识别唯一识别对象(步骤714)。随后,连接器/加载器模块把目标代 码和对象汇编成保存在存储器中的单个可执行程序(步骤716)。
处理单元随后执行可执行程序(步骤718)。当处理单元执行可执 行程序时,在唯一识别对象出现在可执行程序中的时候,可编程对象 预取/识别器模块,比如图2的可编程对象预取/识别器模块220识别 它们(步骤720)。随后,可编程对象预取/识别器模块参考对象表,比 如图2的对象表222(步骤722)。可编程对象预取/识别器模块确定引 用另 一对象的唯一识别对象是否在对象表中被提及(步骤724)。
如果在步骤724引用另一对象的唯一识别对象在对象表中未被 提及,那么可编程对象预取/识别器模块用唯一识别对象的对泉标识 符、被该唯一识别对象引用的所有对象、以及在该唯一识别对象的地 址中被引用对象的地址所位于的每个偏移量来填充对象表(步骤726)。 随后,可编程对象预取/识别器模块确定被引用对象是否引用其它对象 (步骤728)。在步骤728,如果被引用对象引用其它对象,那么可编程 对象预取/识别器模块用该被引用对象的对象标识符、被该被引用对象 引用的所有对象、以及在该被引用对象的地址中其它被引用对象的地 址所位于的每个偏移量来填充对象表(步骤730),之后操作返回步骤 718。在步骤728,如果对象表中的被引用对象没有引用其它对象,那 么操作返回步骤718。
返回步骤724,如果在对象表中存在引用另一对象的唯一识别对象,那么可编程对象预取/识别器模块使用所识别的对象表222中的偏 移量,从唯一识别对象获得地址,以便从主存储器中的对象中预取被 引用对象,并把预取的对象放入高速緩冲存储器中(步骤732),操作 返回步骤718。
从而,例证实施例利用可编程对象识别来预取数据。当执行程序 时,获得程序的第一个对象的对象标识符。对数据结构进行查找操作, 以确定在数据结构中是否存在对象标识符。响应于在数据结构中存在 对象标识符,检索由对象标识符引用的被引用对象标识符。把与被引 用对象标识符相关联的数据从主存储器取到高速緩冲存储器中。
应认识到,图解说明的实施例可以采取纯石更件实施例的形式、纯 软件实施例的形式、或者包含硬件和软件元件的实施例的形式。在一 个例证实施例中,图解说明的实施例的机制是用软件实现的,所述软 件包括(但不限于)固件、驻留软件、微代码等。
此外,图解说明的实施例可以采取可从计算机可用或计算机可读 介质访问的计算机程序产品的形式,所述计算机程序产品提供供计算 机或者任何指令执行系统使用,或者结^^计算机或者任何指令执行系 统使用的程序代码。对于本说明来说,计算机可用或计算机可读介质 可以是能够包含、保存、传递、传播、或传输所述程序以便供指令执 行系统、设备或装置使用或者结合指令执行系统、设备或装置使用的 任意设备。
所述介质可以是电、磁、光、电磁、红外或半导体系统(或设备 或装置)或者传播介质。计算机可读介质的例子包括半导体或固态存储 器、磁带、可拆卸的计算机磁盘、随机存取存储器(RAM)、只读存储 器(ROM)、硬磁盘和光盘。光盘的当前例子包括光盘-只读存储器 (CD-ROM)、读/写光盘(CD-R/W)和DVD。
适合于保存和/或执行程序代码的数据处理系统将包括通过系统 总线直接或间接与存储器元件耦接的至少一个处理器。存储器元件可 包括在程序代码的实际执行期间采用的本地存储器、大容量存储器、 和提供至少 一些程序代码的临时存储,以便减少在执行期间必须从大
15容量存储器检索代码的次数的高速緩冲存储器。
输入/输出或者说i/o设备(包括但不限于键盘、显示器、指示设
备等)可直接地或者通过居间的1/0控制器与系统耦接。网络适配器也
可与系统耦接,以使数据处理系统能够通过居间的专用或公共网络,
与其它数据处理系统或远程打印机或存储设备耦接。调制解调器、线
缆调制解调器和以太网卡只是一些目前可用的网络适配器种类。
出于举例说明的目的给出了本发明的描述,本发明的描述不是详
尽的,也不把本发明局限于所公开的形式。对本领域的普通技术人员
来说,许多修改和变化是明显的。选择和描述实施例是为了更好地解
释本发明的原理,实际应用,和使本领域的普通技术人员理解本发明, 具有各种修改的各个实施例适合于预期的特定用途。
权利要求
1、一种数据处理系统中的把数据预取到高速缓冲存储器中的方法,所述方法包括执行程序;当程序执行时,获得程序的第一对象的对象标识符;对数据结构进行查找操作,以确定所述对象标识符是否存在于所述数据结构中;响应于所述对象标识符存在于所述数据结构中,检索被所述对象标识符引用的被引用对象标识符;以及把与所述被引用对象标识符相关联的数据从主存储器预取到高速缓冲存储器中。
2、 按照权利要求1所述的方法,还包括 响应于所述对象标识符未出现在所述数据结构中,确定所述第一对象是否引用了第二对象;以及 响应于所述第一对象引用了第二对象,填充所述数据结构以包括 第一对象信息。
3、 按照权利要求2所述的方法,还包括 确定所述第二对象是否引用了第三对象;以及 响应于所述第二对象引用了第三对象,填充所述数据结构以包括第二对象信息。
4、 按照权利要求2所述的方法,其中,所述对象信息至少包括 下述之一所述对象标识符、偏移量、或者所述被引用对象标识符, 以及可选的,所述偏移量识别所述第一对象内引用第二对象的地址的 位置。
5、 按照权利要求1-4任意之一所述的方法,其中,所述第一对 象是多个对象之一,以及其中,所述多个对象中的每个对象都被唯一 地识别。
6、 按照权利要求5所述的方法,其中,连接器/加载器程序唯一地识别多个对象中的每个对象,以及可选的,所述连接器/加载器程序 通过向多个对象中的每个对象添加附加标识符来唯一地识别多个对 象中的每个对象。
7、 一种包含具有计算机可读程序的计算机可用介质的计算机程 序产品,其中,当在数据处理系统中执行时,所述计算机可读程序使 数据处理系统执行程序;当程序执行时,获得程序的第一对象的对象标识符; 对数据结构进行查找操作,以确定所述对象标识符是否存在于所 述数据结构中;响应于所述对象标识符存在于所述数据结构中,检索被所述对象 标识符引用的被引用对象标识符;以及把与所述被引用对象标识符相关联的数据从主存储器预取到高 速緩冲存储器中。
8、 按照权利要求7所述的计算机程序产品,其中,所述计算机 可读程序还使数据处理系统响应于所述对象标识符未出现在所述数据结构中,确定所述第一 对象是否引用了第二对象;以及响应于所述第一对象引用了第二对象,填充所述数据结构以包括 第一对象信息。
9、 按照权利要求8所述的计算机程序产品,其中,所述计算机 可读程序还使数据处理系统确定所述笫二对象是否引用了第三对象;以及 响应于所述第二对象引用了第三对象,填充所述数据结构以包括 第二对象信 息o
10、 按照权利要求9所述的计算机程序产品,其中,所述对象信 息至少包括下述之一所述对象标识符、偏移量、或者所述被引用对 象标识符,其中,所述偏移量识别所述第一对象内引用所述第二对象 的地址的位置。
11、 按照权利要求9所述的计算机程序产品,其中,所述第一对 象是多个对象之一,所述多个对象中的每个对象都被唯一地识别,可 选的,连接器/加载器程序唯一地识别多个对象中的每个对象,其中, 所述连接器/加载器程序通过向多个对象中的每个对象添加附加标识 符来唯一地识别多个对象中的每个对象。
12、 一种系统,包括 处理器;和与处理器耦接的存储器,其中,所述存储器包含指令,当由处理 器执行时,所述指令使处理器 执行程序;当程序执行时,获得程序的第一对象的对象标识符; 对数据结构进行查找操作,以确定所述对象标识符是否存在于所 述数据结构中;响应于所述对象标识符存在于所述数据结构中,检索被所述对象 标识符引用的被引用对象标识符;以及把与所述被引用对象标识符相关联的数据从主存储器预取到高 速緩冲存储器中。
13、 按照权利要求12所述的系统,其中,所述指令还使处理器 响应于所述对象标识符未出现在所述数据结构中,确定所述第一对象是否引用了第二对象;以及响应于所述第一对象引用了第二对象,填充所述数据结构以包括 第一对象信息。
14、 按照权利要求13所述的系统,其中,所述指令还使处理器: 确定所述第二对象是否引用了第三对象;以及 响应于所述第二对象引用了第三对象,填充所述数据结构以包括第二对象信息。
15、 按照权利要求13所述的系统,其中,所述对象信息至少包 括下述之一所述对象标识符、偏移量、或者所述4皮引用对象标识符, 其中,所述偏移量识别所述第一对象内引用所述第二对象的地址的位置。
全文摘要
提供把数据预取到高速缓冲存储器中的方法、计算机程序产品和系统。当程序被执行时,获得程序的第一对象的对象标识符。对数据结构进行查找操作,以确定所述对象标识符是否存在于所述数据结构中。响应于所述对象标识符存在于所述数据结构中,检索被所述对象标识符引用的被引用对象标识符。随后,把与被引用对象标识符相关联的数据从主存储器预取到高速缓冲存储器中。
文档编号G06F12/08GK101652759SQ200880011559
公开日2010年2月17日 申请日期2008年4月10日 优先权日2007年4月10日
发明者D·B·维特沃斯, G·米维尼, S·M·斯里尼瓦斯, W·玛罗恩 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1