CN101652759B - 可编程数据预取的方法和系统 - Google Patents
可编程数据预取的方法和系统 Download PDFInfo
- Publication number
- CN101652759B CN101652759B CN2008800115597A CN200880011559A CN101652759B CN 101652759 B CN101652759 B CN 101652759B CN 2008800115597 A CN2008800115597 A CN 2008800115597A CN 200880011559 A CN200880011559 A CN 200880011559A CN 101652759 B CN101652759 B CN 101652759B
- Authority
- CN
- China
- Prior art keywords
- identifier
- data structure
- data
- objects
- program
- 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
Images
Classifications
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
本发明提供把数据预取到高速缓冲存储器中的方法、计算机程序产品和系统。当程序被执行时,获得程序的第一对象的对象标识符。对数据结构进行查找操作,以确定所述对象标识符是否存在于所述数据结构中。响应于所述对象标识符存在于所述数据结构中,检索被所述对象标识符引用的被引用对象标识符。随后,把与被引用对象标识符相关联的数据从主存储器预取到高速缓冲存储器中。
Description
技术领域
本申请一般地涉及数据预取。更具体地说,本申请涉及利用可编程对象识别来预取数据的方法、系统和计算机程序产品。
背景技术
中央处理器(CPU)的高速缓冲存储器是计算机的CPU用于减小访问存储器的平均时间的高速缓冲存储器。高速缓冲存储器是用于保存来自最频繁使用的主存储单元的数据的副本的更小、更快的存储器。只要大多数存储器访问针对的是高速缓存的存储单元,存储器访问的平均等待时间就更接近于高速缓冲存储器的等待时间,而不是主存储器的等待时间。
当处理器希望在主存储器中的某个存储单元中进行读取或写入时,处理器首先检查该存储单元是否在高速缓冲存储器中。这是通过比较该存储单元的地址和可能包含该地址的高速缓冲存储器中的所有标记来实现的。当处理器发现该存储单元在高速缓冲存储器中时,这被称为高速缓冲存储器命中。当处理器不能发现该存储单元在高速缓冲存储器中时,这被称为高速缓冲存储器缺失。在高速缓冲存储器命中的情况下,处理器立即在高速缓冲存储器线中读取或写入数据。导致高速缓冲存储器命中的访问的比例被称为命中率,并且是高速缓冲存储器的有效性的度量。
在高速缓冲存储器缺失的情况下,大多数高速缓冲存储器分配新的条目,该条目包含刚刚缺失的标记和来自存储器的数据的副本。随后正如高速缓冲存储器命中的情况一样,可对新条目应用引用。高速缓冲存储器缺失是相对较慢的,因为它们要求从主存储器传送数据。这种传送导致延迟,因为主存储器比高速缓冲存储器慢得多,并且还
一旦高速缓冲存储器已满,则必须从高速缓冲存储器中除去数据,以便为更新的数据留出空间。用于选择从高速缓冲存储器中除去哪些数据的最常见方法是:追踪特定数据块最后被使用的时间,并且从高速缓冲存储器中除去最近最少使用的数据块。因此,如果数据最近未被使用,那么它不可能在高速缓冲存储器中,并且在CPU能够访问该数据之前,必须从主存储器加载该数据。当CPU等待从存储器中检索该数据的时候,这会导致性能的损失。
这个问题的一种解决方案是:预期在不远的将来需要什么数据,并把该数据预取到高速缓冲存储器中。确定预取哪些数据的常用方法有两种:
·顺序读取,和
·接触指令。
在使用顺序读取的情况下,紧邻最后访问的数据之前或之后的数据被读取。在预取具有良好空间局部性的数据时,顺序读取是有效的,但是当访问位于任意位置的数据时,顺序读取是无用的。
对于接触指令的每次执行,[0,尺寸-1]范围内的随机数被加到接触指令的地址操作数中以产生虚拟地址。地址的页面部分构成进程的页面引用串中的下一个元素。当接触指令产生对无效页面的页面引用时,解释器必须向该进程分配帧。此外,接触指令通常是咨询指令。咨询指令是可选的指令,这意味着如果中央处理器忙的话,可能不执行咨询指令。因此,如果硬件忙的话,接触指令可能不工作。另外,就接触指令来说,当对象A涉及对象B,随后对象B涉及对象C时,这些对象中的每一个通常位于软件栈的不同层中。从而,软件栈中作用于对象A的层中的指令将不知道对象C和层次上在对象C之下的任何其它对象,因为既然对象C直接在对象B之下,对象C不会直接在对象A之下。这种情况意味着软件栈的给定层通过接触指令,最多只能预取层次上直接在其之下的对象。即,对象A只能预取对象B, 因为对象B是直接在对象A之下的唯一对象。
发明内容
图解说明的实施例提供了一种根据对象之间的已知层次关系来识别将被访问的对象,使得数据能够被预取到高速缓冲存储器中的智能方法。当执行程序时,获得程序的第一对象的对象标识符。对数据结构进行查找操作,以确定所述对象标识符是否存在于所述数据结构中。响应于所述对象标识符存在于所述数据结构中,检索被所述对象标识符引用的被引用对象标识符。把与被引用对象标识符相关联的数据从主存储器取到高速缓冲存储器中。
图解说明的实施例还提供了响应于对象标识符未能出现在数据结构中,确定第一对象是否引用了第二对象。响应于第一对象引用了第二对象,填充数据结构以包括第一对象信息。图解说明的实施例还确定第二对象是否引用了第三对象。响应于第二对象引用了第三对象,填充数据结构以包括第二对象信息。
在图解说明的实施例中,对象信息至少包括下述之一:对象标识符、偏移量、或者被引用对象标识符,其中,所述偏移量识别第一对象内引用第二对象的地址的位置。第一对象可以是多个对象之一,以及所述多个对象中的每个对象都可被唯一地识别。连接器/加载器程序唯一地识别多个对象中的每个对象。连接器/加载器程序通过向多个对象中的每个对象添加附加标识符来唯一地识别多个对象中的每个对象。
在其它图解说明的实施例中,提供了一种包含具有计算机可读程序的计算机可用介质的计算机程序产品。当在计算设备上执行时,所述计算机可读程序使计算设备执行上面关于举例说明方法的实施例概述的操作中的各个操作和操作的组合。
在另一图解说明的实施例中,提供了一种系统,所述系统可包含处理器和与处理器耦接的存储器。存储器可包含当由处理器执行时,使处理器执行上面关于举例说明方法的实施例概述的操作中的各个 操作和操作的组合的指令。
附图说明
结合附图,参考例证实施例的下述详细说明,将更好地理解本发明以及本发明的优选使用模式与另外的目的和优点,其中:
图1描述其中可实现例证实施例的数据处理系统的方框图;
图2描述按照例证实施例,用于利用可编程对象识别来预取数据的组件的例证方框图;
图3描述按照例证实施例的例证对象关系;
图4描述按照例证实施例的其中引用对象的例证可执行程序代码的一部分;
图5描述按照例证实施例的对象表的例证逻辑表示;
图6描述按照例证实施例的例证对象寻址方案;以及
图7描述按照例证实施例的预取数据操作的流程图。
具体实施方式
例证实施例提供了利用可编程对象识别来预取数据的机制。图1是其中可实现本发明实施例的数据处理环境的例证示图。应认识到,图1只是例证性的,并不意图宣称或意味着对可实现本发明的各个方面或实施例的环境的任何限制。可对所描述的环境做出许多修改,而不脱离本发明的精神和范围。
现在参见图1,图中示出了其中可实现例证实施例的数据处理系统的方框图。数据处理系统100是对于例证实施例来说,实现各个进程的计算机可用代码或指令可位于其中的计算机的例子。
在所描述的例子中,数据处理系统100采用中心体系结构,该中心体系结构包括北桥和存储器控制中心(MCH)102以及南桥和输入/输出(I/O)控制中心(ICH)104。处理单元106、主存储器108和图形处理器110与北桥和存储器控制中心102耦接。处理单元106可包含一个或多个处理器,甚至可以利用一个或多个不同种类的处理器系统来 实现。图形处理器110可通过加速图形端口(AGP)与MCH耦接。
在描述的例子中,局域网(LAN)适配器112与南桥和I/O控制中心104耦接,音频适配器116、键盘和鼠标适配器120、调制解调器122、只读存储器(ROM)124、通用串行总线(USB)端口和其它通信端口132以及PCI/PCIe设备134通过总线138与南桥和I/O控制中心104耦接,硬盘驱动器(HDD)126和CD-ROM驱动器130通过总线140与南桥和I/O控制中心104耦接。例如,PCI/PCIe设备可包括以太网适配器、插入卡、笔记本计算机用PC卡。PCI使用卡总线控制器,而PCIe不使用卡总线控制器。ROM 124可以是例如闪速二进制输入/输出系统(BIOS)。硬盘驱动器126和CD-ROM驱动器130可以使用集成驱动器电子技术(IDE)或串行高级技术附件(SATA)接口。超级I/O(SIO)设备136可与南桥和I/O控制中心104耦接。
操作系统运行于处理单元106上,并且协调和提供图1中的数据处理系统100内的各个组件的控制。操作系统可以是可从市场上获得的操作系统,比如 XP(Microsoft和Windows是Microsoft Corporation在美国、其它国家或者美国和其它国家的注册商标)。面向对象的编程系统,比如JavaTM编程系统可以和操作系统一起运行,并且提供从在数据处理系统100上执行的Java程序或应用程序对操作系统的调用。Java和所有基于Java的商标是SunMicrosystems,Inc.在美国、其它国家或者美国和其它国家的注册商标。
操作系统、面向对象的编程系统、以及应用程序或程序的指令位于存储设备,比如硬盘驱动器126上,并且可被载入主存储器108中供处理单元106执行。例证实施例的进程可由处理单元106利用计算机实现的指令来执行,所述计算机实现的指令可位于诸如主存储器108、只读存储器124之类的存储器中,或者位于一个或多个外围设备中。
图1中的硬件可随实现而变化。除了或者代替图1中描述的硬件之外,可以使用其它内部硬件或外围设备,比如闪存、等效的非易失性存储器、或者光盘驱动器等。另外,例证实施例的进程可应用于多 处理器数据处理系统。
在一些例证的例子中,数据处理系统100可以是个人数字助理(PDA),它通常配置有闪存以提供用于保存操作系统文件和/或用户产生的数据的非易失性存储器。总线系统可由一个或多个总线,比如系统总线、I/O总线和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中,对象A 302引用两个其它对象:对象B 304和对象C 306。从图中可看出,对象B 304进一步引用对象D 308和对象E 310。另外,对象C 306引用对象F 312
在可执行程序的执行期间,当可编程对象预取/识别器模块遇到对象A 302时,通过利用对象A 302内的偏移量,对象B 304和对象C 306被预取到高速缓冲存储器中。当预取对象B 304和对象C 306时,通过利用对象B 304和对象C 306内的偏移量,对象D 308、对象E 310和对象F 312也被预取到高速缓冲存储器中。
图4描述按照例证实施例的其中引用对象的例证可执行程序代码的一部分。可执行程序代码部分400可以是代码,比如图2的可执行程序214。可执行程序代码部分400是表示图3的对象关系300的程序代码。在可执行程序代码部分400中,对象A 402引用两个其它对象:对象B 404和对象C 406。从图中可看出,对象B 404进一步引用对象D 408和对象E 410。另外,对象C 406引用对象F 412。
通过捕获对象关系,可有效地预取可执行程序代码部分400的层次中的其它对象。关键点在于,被预取的对象没有空间局部性,并在表格中建立对象关系。如上所述,对于每个对象类型,保持一个二维 对象表。对象表保存信息,比如唯一识别对象的对象标识符、被唯一识别对象引用的所有对象、以及被引用对象的地址在该唯一识别对象的地址中所位于的每个偏移量。
图5描述按照例证实施例的对象表的例证逻辑表示。对象表500包括对象标识符502、对象中的偏移量504、以及所指向的对象506。对象标识符502是引用另一对象的唯一识别对象的标识符或名称。对象中的偏移量504是唯一识别对象内引用其它对象的地址。所指向的对象506是被唯一识别对象引用的对象的标识符。对象表500可由硬件按照最近最少使用(LRU)方式、最不常用(LFU)方式等来保持。LRU算法首先丢弃最近最少使用的项。LRU算法要求保持追踪什么项何时被使用。LFU算法计数多久需要某一项,并首先丢弃最不常用的那些项。因此,对象表500中的大多数对象引用将是被频繁引用或使用的对象类型。
图6描述按照例证实施例的例证对象寻址方案。在对象寻址方案600中,对象A 602具有虚拟地址(VA)0×1000。利用对象表,比如图5的对象表500,当遇到对象A 602时,可编程对象预取/识别器模块将认识到(VA+0×10)指向对象B 604的虚拟地址(VB)0×200,还将认识到(VA+0×40)指向对象C 606的虚拟地址(VC)0×4000。当可编程对象预取/识别器模块随后遇到对象B 604时,可编程对象预取/识别器模块将认识到(VB+0×80)指向对象D 608的虚拟地址(VD)0×8800,还将认识到(VB+0×88)指向对象E 610的虚拟地址(VE)0×2000。因此,当可编程对象预取/识别器模块随后遇到对象C 606时,可编程对象预取/识别器模块将认识到(VC+0×48)指向对象F 612的虚拟地址(VF)0×100。可编程对象预取/识别器模块,比如图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。
适合于保存和/或执行程序代码的数据处理系统将包括通过系统总线直接或间接与存储器元件耦接的至少一个处理器。存储器元件可包括在程序代码的实际执行期间采用的本地存储器、大容量存储器、和提供至少一些程序代码的临时存储,以便减少在执行期间必须从大 容量存储器检索代码的次数的高速缓冲存储器。
输入/输出或者说I/O设备(包括但不限于键盘、显示器、指示设备等)可直接地或者通过居间的I/O控制器与系统耦接。网络适配器也可与系统耦接,以使数据处理系统能够通过居间的专用或公共网络,与其它数据处理系统或远程打印机或存储设备耦接。调制解调器、线缆调制解调器和以太网卡只是一些目前可用的网络适配器种类。
出于举例说明的目的给出了本发明的描述,本发明的描述不是详尽的,也不把本发明局限于所公开的形式。对本领域的普通技术人员来说,许多修改和变化是明显的。选择和描述实施例是为了更好地解释本发明的原理,实际应用,和使本领域的普通技术人员理解本发明,具有各种修改的各个实施例适合于预期的特定用途。
Claims (12)
1.一种数据处理系统中的把数据预取到高速缓冲存储器中的方法,所述方法包括:
执行程序;
当所述程序执行时,获得所述程序的第一对象的对象标识符;
对数据结构进行查找操作,以确定所述对象标识符是否存在于所述数据结构中,所述数据结构是引用其它唯一识别对象的唯一识别对象的二维对象表;
响应于所述对象标识符存在于所述数据结构中,检索被所述对象标识符引用的被引用对象标识符;以及
把与所述被引用对象标识符相关联的数据从主存储器预取到高速缓冲存储器中。
2.按照权利要求1所述的方法,还包括:
响应于所述对象标识符未出现在所述数据结构中,确定所述第一对象是否引用了第二对象;以及
响应于所述第一对象引用了所述第二对象,填充所述数据结构以包括第一对象信息。
3.按照权利要求2所述的方法,还包括:
确定所述第二对象是否引用了第三对象;以及
响应于所述第二对象引用了所述第三对象,填充所述数据结构以包括第二对象信息。
4.按照权利要求3所述的方法,
其中,所述第一对象信息至少包括下述之一:所述第一对象的对象标识符、识别所述第一对象内引用所述第二对象的地址的位置的偏移量、或者第二对象标识符;
其中所述第二对象信息至少包括下述之一:所述第二对象标识符、识别所述第二对象内引用所述第三对象的地址的位置的偏移量、或者第三对象标识符。
5.按照权利要求1-4任意之一所述的方法,其中,所述第一对象是多个对象之一,以及其中,所述多个对象中的每个对象都被唯一地识别。
6.按照权利要求5所述的方法,其中,连接器/加载器程序唯一地识别多个对象中的每个对象,其中,所述连接器/加载器程序通过向多个对象中的每个对象添加附加标识符来唯一地识别多个对象中的每个对象。
7.一种数据处理系统中的把数据预取到高速缓冲存储器中的系统,包括:
用于执行程序的装置;
用于当所述程序执行时,获得所述程序的第一对象的对象标识符的装置;
用于对数据结构进行查找操作,以确定所述对象标识符是否存在于所述数据结构中的装置,所述数据结构是引用其它唯一识别对象的唯一识别对象的二维对象表;
用于响应于所述对象标识符存在于所述数据结构中,检索被所述对象标识符引用的被引用对象标识符的装置;以及
用于把与所述被引用对象标识符相关联的数据从主存储器预取到高速缓冲存储器中的装置。
8.按照权利要求7所述的系统,其中,还包括:
用于响应于所述对象标识符未出现在所述数据结构中,确定所述第一对象是否引用了第二对象的装置;以及
用于响应于所述第一对象引用了所述第二对象,填充所述数据结构以包括第一对象信息的装置。
9.按照权利要求8所述的系统,其中,还包括:
用于确定所述第二对象是否引用了第三对象的装置;以及
用于响应于所述第二对象引用了所述第三对象,填充所述数据结构以包括第二对象信息的装置。
10.按照权利要求9所述的系统,
其中,所述第一对象信息至少包括下述之一:所述第一对象的对象标识符、识别所述第一对象内引用所述第二对象的地址的位置的偏移量、或者第二对象标识符;
其中,所述第二对象信息至少包括下述之一:所述第二对象标识符、识别所述第二对象内引用所述第三对象的地址的位置的偏移量、或者第三对象标识符。
11.按照权利要求9所述的系统,其中,所述第一对象是多个对象之一,所述多个对象中的每个对象都被唯一地识别。
12.按照权利要求11所述的系统,其中,连接器/加载器程序唯一地识别多个对象中的每个对象,其中,所述连接器/加载器程序通过向多个对象中的每个对象添加附加标识符来唯一地识别多个对象中的每个对象。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/733,352 | 2007-04-10 | ||
US11/733,352 US7640400B2 (en) | 2007-04-10 | 2007-04-10 | Programmable data prefetching |
PCT/EP2008/054327 WO2008122660A1 (en) | 2007-04-10 | 2008-04-10 | Programmable data prefetching |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101652759A CN101652759A (zh) | 2010-02-17 |
CN101652759B true CN101652759B (zh) | 2012-11-28 |
Family
ID=39422701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008800115597A Active CN101652759B (zh) | 2007-04-10 | 2008-04-10 | 可编程数据预取的方法和系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7640400B2 (zh) |
JP (1) | JP5255049B2 (zh) |
KR (1) | KR101159412B1 (zh) |
CN (1) | CN101652759B (zh) |
WO (1) | WO2008122660A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008225915A (ja) * | 2007-03-13 | 2008-09-25 | Fujitsu Ltd | プリフェッチ制御装置、記憶装置システムおよびプリフェッチ制御方法 |
US8032714B2 (en) * | 2007-09-28 | 2011-10-04 | Aggregate Knowledge Inc. | Methods and systems for caching data using behavioral event correlations |
JP2014035431A (ja) * | 2012-08-08 | 2014-02-24 | Renesas Mobile Corp | ボコーダ処理方法、半導体装置、及び電子装置 |
US10268586B2 (en) * | 2015-12-08 | 2019-04-23 | Via Alliance Semiconductor Co., Ltd. | Processor with programmable prefetcher operable to generate at least one prefetch address based on load requests |
CN108073525B (zh) * | 2016-11-08 | 2021-10-19 | 华为技术有限公司 | 预取数据的方法、装置和系统 |
US10860491B2 (en) * | 2019-05-03 | 2020-12-08 | Mediate Inc. | Cache management method using object-oriented manner and associated microcontroller |
US11687611B2 (en) * | 2021-10-15 | 2023-06-27 | Servicenow, Inc. | Intermediate widget cache |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1797326A (zh) * | 2004-12-21 | 2006-07-05 | 三菱电机株式会社 | 控制电路以及控制方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537573A (en) * | 1993-05-28 | 1996-07-16 | Rambus, Inc. | Cache system and method for prefetching of data |
US5822576A (en) * | 1997-03-26 | 1998-10-13 | International Business Machines Corporation | Branch history table with branch pattern field |
US6728726B1 (en) * | 1999-03-05 | 2004-04-27 | Microsoft Corporation | Prefetching and caching persistent objects |
US6560693B1 (en) * | 1999-12-10 | 2003-05-06 | International Business Machines Corporation | Branch history guided instruction/data prefetching |
US6643743B1 (en) | 2000-03-31 | 2003-11-04 | Intel Corporation | Stream-down prefetching cache |
US6662274B2 (en) * | 2001-06-20 | 2003-12-09 | Intel Corporation | Method for using cache prefetch feature to improve garbage collection algorithm |
US6751709B2 (en) * | 2002-05-15 | 2004-06-15 | Sun Microsystems, Inc. | Method and apparatus for prefetching objects into an object cache |
US7266676B2 (en) * | 2003-03-21 | 2007-09-04 | Analog Devices, Inc. | Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays |
US7124253B1 (en) * | 2004-02-18 | 2006-10-17 | Sun Microsystems, Inc. | Supporting directory-based cache coherence in an object-addressed memory hierarchy |
-
2007
- 2007-04-10 US US11/733,352 patent/US7640400B2/en not_active Expired - Fee Related
-
2008
- 2008-04-10 WO PCT/EP2008/054327 patent/WO2008122660A1/en active Application Filing
- 2008-04-10 CN CN2008800115597A patent/CN101652759B/zh active Active
- 2008-04-10 KR KR1020097014497A patent/KR101159412B1/ko active IP Right Grant
- 2008-04-10 JP JP2010502506A patent/JP5255049B2/ja not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1797326A (zh) * | 2004-12-21 | 2006-07-05 | 三菱电机株式会社 | 控制电路以及控制方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20090129395A (ko) | 2009-12-16 |
US7640400B2 (en) | 2009-12-29 |
JP5255049B2 (ja) | 2013-08-07 |
WO2008122660A1 (en) | 2008-10-16 |
CN101652759A (zh) | 2010-02-17 |
KR101159412B1 (ko) | 2012-07-10 |
US20080256302A1 (en) | 2008-10-16 |
JP2010524106A (ja) | 2010-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101652759B (zh) | 可编程数据预取的方法和系统 | |
CN100573477C (zh) | 管理锁定的高速缓冲存储器中的组替换的系统和方法 | |
US8015365B2 (en) | Reducing back invalidation transactions from a snoop filter | |
JP4226057B2 (ja) | 包含キャッシュにおける望ましくない置換動作を低減するための先行犠牲選択のための方法及び装置 | |
KR101385430B1 (ko) | 영구 메모리들을 위한 캐시 일관성 프로토콜 | |
JP7159223B2 (ja) | キャッシュの競合を管理するための方法およびシステム | |
US8140759B2 (en) | Specifying an access hint for prefetching partial cache block data in a cache hierarchy | |
US7571286B2 (en) | Reduced memory traffic via detection and tracking of temporally silent stores | |
US8762651B2 (en) | Maintaining cache coherence in a multi-node, symmetric multiprocessing computer | |
EP3382557B1 (en) | Method and apparatus for persistently caching storage data in a page cache | |
US20200183840A1 (en) | Caching data from remote memories | |
CN104025060A (zh) | 支持近存储器和远存储器访问的存储器通道 | |
US8423736B2 (en) | Maintaining cache coherence in a multi-node, symmetric multiprocessing computer | |
JPH11328015A (ja) | 割振り解除方法およびデ―タ処理システム | |
CN101154192A (zh) | 管理计算机存储器高速缓存中的访问冲突的方法和装置 | |
US6668307B1 (en) | System and method for a software controlled cache | |
CN101354641A (zh) | 一种外部存储器的访问控制方法及访问控制装置 | |
US10430305B2 (en) | Determine whether to rebuild track metadata to determine whether a track format table has a track format code for the track format metadata | |
TWI428754B (zh) | 以主動式預取寬度執行加強式停懸狀態之系統及方法 | |
WO2012137098A1 (en) | Extending cache for an external storage system into individual servers | |
EP0936552A2 (en) | Pseudo precise I-cache inclusivity for vertical caches | |
JP2004199677A (ja) | キャッシュを動作させるためのシステム及び方法 | |
US7395381B2 (en) | Method and an apparatus to reduce network utilization in a multiprocessor system | |
KR20230017244A (ko) | 코어 대 코어 캐시 스태싱 및 타깃 발견 | |
WO2013101060A2 (en) | Efficient support of sparse data structure access |
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 |