CN100371886C - 基于存储区的数据预取的处理器和方法 - Google Patents

基于存储区的数据预取的处理器和方法 Download PDF

Info

Publication number
CN100371886C
CN100371886C CNB038097249A CN03809724A CN100371886C CN 100371886 C CN100371886 C CN 100371886C CN B038097249 A CNB038097249 A CN B038097249A CN 03809724 A CN03809724 A CN 03809724A CN 100371886 C CN100371886 C CN 100371886C
Authority
CN
China
Prior art keywords
data
processor
prefetch
memory
step pitch
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.)
Expired - Lifetime
Application number
CNB038097249A
Other languages
English (en)
Other versions
CN1650260A (zh
Inventor
J·-W·范德瓦尔德特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nytell Software LLC
Original Assignee
Koninklijke Philips Electronics NV
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1650260A publication Critical patent/CN1650260A/zh
Application granted granted Critical
Publication of CN100371886C publication Critical patent/CN100371886C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

随着微处理器速度的提高,处理器的性能越来越受到数据访问操作的影响。当由于数据取出时间较慢,使得处理器在执行过程中需要等待数据时,这被称为处理器停顿,定量地来说,称之为处理器停顿周期。可以预料,从RAM存储器中实现预取数据是为了减少处理器停顿周期,在基于处理器的系统中进行预取的目的是减少处理器停顿周期中引起的处理时间拖延。提供一种软件和硬件组合控制的预取方法是非常有利的,因为:通过限制程序流中附加指令的数量,可以不牺牲指令带宽,并可使附加硬件资源的数量最小化。不象以前的技术中那样要利用软件或硬件检测存储器访问的规律性,硬件和软件控制的预取技术在执行时,程序流中没有明显的预取指令,并且占用最少量的附加芯片面积。为使处理器的指令带宽最小化,硬件和软件控制的预取技术使用位于处理器体系层中的附加寄存器,以规定预取区域,和每个区域使用的预取步距。有利的是,对处理器执行指令的指令带宽的影响,仅限于包含在应用程序中的用于设置这些寄存器的那些附加指令。这里,利用包含在应用程序中的存储器访问指令的间距来控制预取操作的出现频率。

Description

基于存储区的数据预取的处理器和方法
技术领域
本发明有关从一个计算机存储器中预取数据的领域,更具体的,有关以使得处理器停顿周期最小化的方式来从一个计算机存储器中预取数据的领域。
发明背景
随着微处理器速度的提高,处理器的性能越来越受数据存取操作的影响。在操作中,当由于数据取出时间较慢,使得处理器需要等待数据时,则称之为处理器停顿,定量地来说,则称之为处理器停顿周期。较大量的处理器停顿周期表明一个较长的延迟。
早期的计算机系统,受到磁存储介质速度的限制。为此,将磁盘驱动器数据进行高速缓存,以增强数据存取性能是已知的。在一个典型的高速缓存操作中,将数据从其存储位置提取或预取到一个高速缓存(一个临时但更快的存储器)中,以便能由处理器更快地访问。因此,如果将所存储的全部数据储存到例如RAM存储器中,则可以避免海量存储介质的速度限制。
当前,处理器的速度更快了,以至于即使是从RAM中提取数据,仍会出现处理器停顿周期。处理器停顿周期用于增加时间以使数据存取操作完成。可以预料,现在需要从RAM存储器中预取数据以减少处理器停顿周期。因此,使用支持不同存储器访问速度的不同级别的高速缓存来存储不同的预取数据。当不正确的数据被预取到高速缓存中时,会出现高速缓存错误的情况,通过处理器停顿周期该情况可被解决。将不正确的数据预取到高速缓存中会引起高速缓存污染,即,删除了有用的缓存数据,以便为无用的预取数据留出空间。这会引起一个不必要的缓存错误,该错误是由处理器再次需要被替换掉的数据引起的。
存储器是按数据块移动的,以便更快地传输较大的存储块。一个数据块代表传入的数据或在不同级别的高速缓存层间进行传输的数据的基本单元;一般说来,一个数据块包含多个数据元。在处理器实际需要一个数据块之前,将该数据块提取到一个更高级别的高速缓存层,可以避免缓存错误所引起的处理器停顿周期。最高级别的高速缓存层最好是这样的:处理器提取预先取入所述高速缓存层中的数据块时,不会有任何停顿损失;这就能得到最高的处理器性能。当然,需要被提取并且还没出现在最高级别的高速缓存层中的数据块,要么是在需要它们之前被预取,要么是它们会降低整个的处理器性能。
在基于处理器的系统中进行数据预取的目的是,有利地降低处理器高速缓存错误引起的处理时间损失。这一点在以前的技术中已经有所描述。例如,在美专利NO.6,272,516中,描述了一种方法,其中利用多个处理器来降低高速缓存错误。美专利N0.5,761,506名为“Method and apparatus for handling cache misses in a computersystem”,其中也描述了一种减少高速缓存错误的方式。
在题为“Improving Processor Performance by DynamicallyPre-Processi ng the Instruction Stream”,Dundas J.D.,TheUniversity of Michigan 1997,的文章中,描述了多重动态预取技术,并描述了这些技术的使用方法。目前的预取技术状态通常依靠的是处理器所执行的指令对RAM中存储的数据进行访问时的某些规律性。例如,连续执行一条诸如处理器装入指令之类的存储器访问指令,会指向一些由一个固定值分开的存储器地址,称之为步距。该步距用于指导对一个包含在预期将被访问的存储地址中的数据块的预取。因此,预取充分利用了存储器访问之间的空间相关性,以提高处理器性能,这里,数据块之间的空间相关性被用于提高处理器性能。在有些情况下,在高速缓存中,数据块的空间位置对改善处理器性能很有用。题为“Stride-based data address prediction structure”的现有技术美国专利NO.6,079,006中,描述了一种数据预报结构,其中在一个预报矩阵中存储一个基地址和步距值。
预取可以是通过软件,通过编程,通过由编译程序插入的预取指令控制的,或者可以是由硬件控制的。在硬件控制预取的情况下,硬件试图检测存储器访问的规律性并自动生成数据块的预取,而不需在程序流中出现显性的预取指令。在以前的技术中软硬件结合的控制方式也是已知的。尽管以前的预取技术试图改善处理器性能,但使用这些技术对处理器性能也有不利影响。
例如,连续访问存储地址A,A+200,A+400和A+600,假设步距为200,当包含在地址A+800中的数据块尚未出现在更高的高速缓存层中,并且尚未被请求时,会控制预取机制会去预取该数据块。
预取数据块的过程要使用总线,总线用于提供存储器(其形式为RAM)和高速缓存间的通信,由于从存储器中预取数据块需要使用总线,因此增加了总线的占用并降低了总线带宽。预取过程还会导致取出处理器不需要的数据,从而增加了不必要的总线占用负荷,影响处理器为获得所需数据必须进行的取数操作。将一个数据块取入某一层次的高速缓存要求替换一个原有的缓存数据块,替换这样一个数据块会导致额外的总线占用。通常,高速缓存数据块会被重新组织,以使被替换的块移入一个更低层次的高速缓存。另外,在随后的访问操作中,被移出的数据块不再能够在最高的高速缓存层中获得,会导致其它的高速缓存错误。
另一方面,预期处理器将使用一些数据块,并预取这些额外的数据块,会导致突发的总线占用,此时,预取不是在时间上分散开的,而是迅速连续地互相紧接着进行的。例如,为了取出含有与一个较大的两维结构的一个两维子结构相关的数据的多个数据块,要启动一系列的预取进程,此时突发总线占用现象最为明显。这例如在对存储在一个以行为序的格式的存储器中一个较大的图像中的一个子图像进行剪切和粘贴操作时。突发总线占用会引起其它要求共享总线资源的处理器部件的临时性资源短缺,这会引起其它类型的处理器停顿周期,从而降低处理器性能。软件控制的预取通常要求在处理器执行的程序流中插入预取指令,这会降低处理器指令带宽。硬件控制的预取通常要求一个不可忽视的大小的芯片面积量,以检测存储器访问的规律性。在以前的技术中,已知在基于硬件的技术中,需要几K字节的存储器来监测对存储器的访问。使用这类基于硬件的技术,以便能足够早地启动数据块的预取,从而在处理器实际使用这些数据之前完成这些数据的提取,否则的话,处理器就需要停顿以解决高速缓存错误情况。
有效的预取可以显著提高处理器的性能,同时能限制不利影响。因此,提供一种不依赖于动态地检测出程序流中的指令对数据存储器访问的规律性的预取技术是很有利的,同时,提供一种支持少量地出现由高速缓存错误造成处理器停顿周期的预取技术也是有利的。
存在这样的需要,即以这种方式提供一种硬件和软件控制的数据预取方案,以减少处理器停顿周期的出现。
发明概述
按本发明,提供了一个处理器,用于处理包含用于访问一个外部RAM存储器的存储器访问指令的指令数据,该处理器包括:一个用于存储预取操作步距(stride)的区域步距存储单元;一个存储区域标识符,用于存储指明外部RAM存储器中的一个存储区域的数据,在该区域内要应用所存储的预取操作步距;一个预取电路,用于从外部RAM存储器中预取数据,当访问预取存储区域中的数据以便利用所述步距从所述存储器中取数据时,该预取电路响应于该预取存储步距。
按本发明,还提供了一种从外部RAM存储器中预取数据的方法,包括以下步骤:向一个用于在存储单元中进行存储的处理器提供一个步距和指定外部RAM存储器中一个存储区域的数据,该步距用于从所述存储区域中预取数据;确定一个区域,在该区域中存储要从其中预取的数据;确定处理器中存储的与该区域相关的预取步距;定义一个数据块,该数据块具有一个基于预取步距的长度和一个基于外部存储器中前一次预取的数据块的存储位置的起始位置;以及将位于该起始位置处的数据块拷贝入一个目的存储器位置。
按本发明,提供了从数据存储器向缓冲存储器预取数据块的方法,包括以下步骤:提供一个其中具有存储器和预取电路的处理器;提供随机存取存储器;在处理器的存储器中提供一个查询表,该查询表中存有至少一个区域与其相应步距的对应关系;将数据存储器访问指令的数据存储器访问地址与查询表中的至少一个区域进行比较,以确定该数据存储器访问指令的数据存储器访问地址所在的区域;并向处理器的预取电路提供与数据存储器访问指令的数据存储器访问地址所在的该区域相关的区域步距。
按本发明的一个方面,提供了一个其上存储有数据的存储介质,该数据表示执行以下步骤的可执行指令:在处理器的存储器中存储指明第一预取步距的数据;以及在处理器的存储器中存储指明存储器的第一区域的数据,其中在该第一存储区域中要使用该第一预取步距。
按本发明的另一个实例,提供了一个执行下列步骤的处理过程:执行一个存储器分配操作,该存储器分配操作取决于在所分配存储器中存储的数据类型,该存储器分配操作包括以下步骤:在存储器中分配一个存储区域;在处理器的存储器中存储指明用于所分配的存储区域的一个第一预取步距的数据;和在处理器的存储器中存储指明要在其中使用该第一预取步距的所分配存储区域的位置和长度的数据。
附图概述:
以下将结合附图描述本发明的例证实例,附图中:
图1描述了一个现有技术的计算机存储器的数据存储部分的映象;
图2列出了按现有技术教导硬件和软件预取中使用的类任务集;
图3列出了按现有技术教导的另一个实施例中硬件和软件预取中使用的同一组类任务集;
图4列出了按现有技术教导的另一个实施例中硬件和软件预取中使用的类任务集;
图5列出了按现有技术教导的另一个实施例中硬件和软件预取中使用的一个不同的类任务集;
图6举例说明了本发明的一个例证实施例,用于软件和硬件控制的基于区域的预取操作;
图7举例说明了按推荐实施例的对应用程序头部的修改;
图8举例说明了为了方便按本发明例证实施例的基于区域的软件和硬件控制的预取方案而实施的存储器的组织;
图9列出了处理器执行数据预取时采用的步骤;
图10举例说明了按本发明例证实施例执行的一个顺序拷贝操作中存储器的组织;
图11举例说明了对存储器中按同样间距存储的多个数据块的拷贝。
详细描述
一般,软件应用程序文件都有一个头部,常见于应用程序文件的开始处。在装入应用程序时,该头部被操作系统该取并由处理器处理,以确定该应用程序指令代码部分的存储器(其形式为计算机随机存取存储器(RAM))需求。根据所需存储器的大小和类型,操作系统为应用程序分配一个程序存储器部分。在执行过程中,该应用程序以数据存储器的形式为数据分配存储器。当然,有时是根据头部为应用程序分配最大的可用数据存储器。对运行期间请求的每个数据存储器的块,都提供有一个指向该数据存储器块的句柄——一个指向内存管理指针表中的一个指针的指针,以便将来由应用程序的程序流中的指令访问。就应用程序而言,分配给它的数据存储块是连续并固定的。也就是说,这些块既不需要是连续,也不需要是固定的。存储器管理指针表将指向正在访问数据的当前位置。提供给应用程序的只有指向每个已分配数据存储块的一个句柄,该句柄使操作系统能移动存储内容,以便更有效地利用现有的存储器。由于为应用程序要访问的每个数据存储块都分配了一个句柄,操作系统不需引起应用程序的改变,就能够在数据存储器中灵活地交换存储块的绝对位置。
参照图1,其中显示了按已知的存储映象技术的、一个计算机存储器101的数据存储器部分100的现有技术映象。当使用诸如WindowsTM之类的多任务操作系统时,就产生这种存储映象。多任务操作系统能执行存储在存储器中的一些不同的应用程序。为了能够做到这一点,每个应用程序都有专门分配给它使用的一个数据存储器部分。在本例中,多个应用程序都将它们的数据元素存储在它们各自的数据存储块中。这些数据存储块具有不同的类型和大小,其中存有应用程序专用的变量,即,每个应用程序都访问它自己的数据存储块,并不覆盖其它应用程序的数据存储块,以方便实现多任务。例如APP1具有分配给图像数据102的数据存储块,另一组分配给音频数据103的数据存储块,另一组分配给选择数据104的数据存储块。而另一方面APP3使用的存储部分有:分配给图像数据105的数据存储块,分配给选择数据106的数据存储块,而为APP4分配的数据存储块分别存储图像数据107,视频数据108和控制数据109。这些数据存储块是根据软件应用程序中数据分配请求的先后顺序,为每个应用程序分配的。因此,相似类型的数据一般会存储在许多不同的位置。这类存储器分配技术在现有技术中是已知的,因此,有各种已知的方法用于从这些数据存储块中预取数据单元。
在图2中,列出了硬件和软件预取所使用的类任务集。处理器与操作系统联合装入并执行一个软件应用程序,该应用程序具有包含各指令10的程序流。在处理器执行程序流10中的指令时,在软件18中执行存储器访问操作,以便从存储器100中取出数据16供指令使用。在指令访问存储器100时,硬件17分析一个存储器访问模式,以确定一个步距12。一旦根据访问模式确定了步距,则硬件根据所确定的步距执行一个数据预取14。预取操作从存储器中取出预计将会被程序流中的一条指令使用的预期数据。不幸的是,使用硬件来分析存储器存取模式需要相当大的硬件资源,有时有必要使用一个第二处理器以便有效地执行数据预取。由于这种方案需要大量的附加硬件资源,因此大家都知道它是昂贵的。另外,硬件需要时间来检测一个存储器存取模式,有时由于存储器访问方式的原因,该硬件方案不能提供有用的步距信息。
在图3中,列出了硬件和软件预取所使用的同一类任务集。处理器与操作系统联合装入并执行一个软件应用程序,该应用程序具有包含指令20的程序流。在处理器执行程序流中的指令时,执行存储器访问操作26,以便从存储器100中取出数据。在指令访问存储器时,软件分析存储器访问模式,以确定一个步距22。一旦根据存取模式确定了步距,则软件启动一个数据预取,随后由硬件根据所确定的步距执行预取操作25。一般,启动预取操作24的步骤需要另外在程序流中插入指令或中断,以便通知硬件何时执行预取操作25。不幸的是,由于步骤22是由软件28执行的,并且在程序流中另外插入了指令,因此,由于处理器要执行分析存储器存取模式的额外的指令,处理器带宽被明显降低,与处理过程12(其中是使用附加硬件来分析存储器)相比,使得程序流执行速度变慢了。不过,使用软件确实能降低用于确定步距的附加电路的费用。
在图4中,列出了硬件和软件预取中使用的类任务集。处理器与操作系统联合执行一个软件应用程序,该应用程序具有包含指令30的程序流。在处理器执行程序流中的指令时,在软件38中执行存储器访问操作36,以便从数据存储器100中取出数据。在指令访问存储器时,在软件中分析一个存储器存取模式,以确定一个步距32。一旦根据存取模式确定了步距,就启动一个由硬件37执行的预取操作,以便根据所确定的步距访问数据。预取操作从存储器100(图1)中取出预期的数据,供程序流中的一条指令以后使用。不幸的是,该步距是动态计算的,或者,一旦执行了该程序流,该步距被计算一次而不可改变,或者,为主要的数据存储器访问操作计算一次步距,因此,在应用程序要求不同类型数据的不同步距时,会有一些不足,例如在执行多个应用程序时。
在图5中,列出了硬件和软件预取中使用的一个不同类的任务集。处理器与操作系统联合执行一个软件应用程序,该应用程序具有包含指令及预取指令40的程序流。在处理器执行程序流中的指令时,在软件中,程序流中的预取指令从存储器44中预取数据,同时与在软件48中与所执行的存储器访问操作相结合以便从存储器46中取出数据。编程员或编译程序插入预取指令。一般,为了有效地处理指令流,事先必须已知硬件平台的结构,因此必须改变软件应用程序以便能在其它的硬件平台上有效执行。
提供一个硬件和软件综合的预取方案是有利的,因为:通过限制程序流中附加指令的数量,可以不损害指令带宽,并且可以使附加硬件资源的数量最小化。硬件资源意味着实现这些附加特性所需要的芯片面积的数量。和以前技术中试图利用硬件和软件检测存储访问的规律性不同,按本发明的一个例证实例,硬件和软件控制的预取技术不需在程序流中使用显式的预取指令,并且可以具有最少量的附加芯片面积。
图6举例说明了本发明的一个实施例,用于软件和硬件控制的基于区域的预取技术。在推荐实施例中,一个处理器60与高速缓存63以及缓冲存储器65电连接。一个预取电路62也与处理器60及两个存储器65和63电连接。一个随机存取存储器(RAM)形式的存储器61与总线64电连接,总线用于从存储器61向缓冲存储器65和高速缓存63提供数据。处理器执行包含程序流的软件应用程序,从而使预取电路62根据处理器60的指令控制从存储器61向这两个存储器65和63传送数据块。一般,高速缓存63与处理器60和预取电路62集成在一起。一个数据块是在存储器和高速缓存之间、存储器和缓冲存储器之间、高速缓存和缓冲存储器之间、或高速缓存中不同级别的层之间传递的基本数据单元。例如,数据块大小可以等于高速缓存63中一个单独的缓存行。处理器还包括用于禁止预取62a的电路。
为了使处理器的指令带宽最小化,软件和硬件控制的预取方案使用了位于处理器体系层的附加寄存器,以便指定预取区域及每个区域使用的步距。例如,在处理器中提供附加寄存器,它们是:在一个多行寄存器搜索表601中的区域基地址寄存器66、区域长度寄存器67和区域步距寄存器68。区域基地址寄存器66、区域长度寄存器67、和区域步距寄存器以三个一组的形式互相关联,并对应于寄存器查询表中的一行,这里,利用表中多个区域基地址寄存器中的一个区域基地址寄存器来访问每个三联组-区域基地址寄存器、区域步距寄存器和区域尺寸寄存器。任选地,寄存器查询表可以有多个行,以容纳多个三联组(区域基地址寄存器、区域尺寸寄存器和区域步距寄存器)。
在寄存器查询表的一个单个行中,区域基地址寄存器用于接收存储器61内一个源存储区域的基地址。区域长度寄存器用于接收源存储区域的长度。区域步距寄存器用于接收在源存储区域中预取数据时所用的步距。对处理器处理指令的指令带宽的影响,仅限于包含在应用程序中的用于设置这些寄存器的那些附加指令。一旦在应用程序装入期间设置了这些寄存器,则在应用程序执行期间,不再需要时间向这些寄存器提供另外的值。
为实现基于区域的硬件和软件控制预取方案,利用与图1所述技术不同的方式存储分配给每个应用程序的数据存储器。参照图8,现在对存储器进行组织以实现基于区域的硬件和软件控制预取方案。在基于区域的方案中,将数据存储块分配到数据存储器中合适的区域内是很重要的,如图8所示。为将应用程序数据分配到区域中,对应用程序头部进行修改,如图7所示,以便于这种改进的存储器组织。
在向存储器61装入一个应用程序时,该应用程序的头部70被操作系统读出,并由处理器60处理,以确定该应用程序的存储要求。在头部中存有一个查询表601。查询表601将步距74和数据类型73及该数据类型的长度72关联起来。基于所要求存储器的长度72和数据类型73,操作系统根据该区域中将要存储的数据类型73分配数据存储器中的区域。对所请求的每个数据存储器区域都向该区域提供一个句柄,该句柄被存储在寄存器查询表中的区域基地址寄存器66之一中。相对应的区域长度72保存在一个相对应的区域长度寄存器67a中,该区域的步距74被保存在一个相应的区域步距寄存器中。存储在区域步距寄存器中的值是由插入的编程员或编译程序在程序的头部中产生的。区域长度可以由编程员或编译程序插入,不过在有些情况下,区域长度可能是不知道的,只知道其中存储的数据类型,因此,只为该给定区域预定一个步距。
例如,APP1被处理器和操作系统装入存储器中。在处理APP170的头部时,处理器确定APP1使用图像数据、视频数据、音频数据和特选数据。因此,APP1为存储这些数据类型的每一个存储区域申请一个句柄。在数据存储器69中,处理器分配一个图像存储区域30,并在区域基地址寄存器66a中为该存储区域提供一个句柄。APP1还使用视频数据,因此处理器在数据存储器69中分配一个视频存储区域34,并在区域基地址寄存器66d中提供一个该存储区域的句柄。APP1还要求音频数据存储空间,因此处理器在数据存储器69中提供一个音频存储区域31,并在区域基地址寄存器66b中提供一个该存储区域的句柄。APP1还使用选择数据,因此处理器在数据存储器69中分配一个选择存储区域32,并在区域基地址寄存器66c中提供一个该存储区域的句柄。如果存储器中还装入了另一个应用程序,例如APP3,并且该应用程序使用图像数据,则处理器在数据存储器69中指定一个供APP3使用的图像数据区域33,并在区域基地址寄存器66e中为该存储区域提供一个句柄。
图9列出了处理器执行数据预取时采用的步骤。在使用中,处理器与操作系统一起,执行存储器指令部分中存储的软件应用程序所提供的程序流中的指令。程序流中的存储器访问指令,使处理器60按指令900提供的地址去访问900数据存储器69中的各存储区域以处理除了指令数据以外的数据。处理器将存储器访问指令提供的地址与寄存器查询表中的区域基地址寄存器66和区域长度寄存器67进行比较。若找到匹配,则处理器利用查询表901中提供的相应的区域步距执行存储器访问指令,以便从存储器访问指令所访问的区域预取下一个数据块。当程序流中的一条指令对存储器中一个指定区域进行存储器地址访问时,就启动对该存储地址中保存的数据元素的一个预取操作,其偏移量为指定给所访问区域902的步距。在预取操作的初始化中,为预取电路提供一个数据块的起始地址和该数据块所在存储区域903所使用的步距。这种基于区域的预取方案使得能够根据所访问的存储区域预取904,或拷贝数据元素,而不需要象现有技术的预取技术那样,找出数据存储器访问的规律性。以这种方式,对开始于区域基地址的存储器900的访问,可以预取出位于区域基地址+区域步距中的数据。因此,进一步访问900区域基地址+区域步距,可以装入位于区域基地址+区域步距*2位置处的下一个数据块902,以此类推。当区域步距的大小等于高速缓存中的一个缓存行时,该技术被称为顺序数据块预取。
通常,总能找出存储器访问指令地址与区域基地址寄存器中存储的地址值之间的匹配,这是因为,区域基地址寄存器中的地址是根据程序流中使用的数据区域生成的。这一寄存器查询表代表程序流中的指令使用的存储器访问地址。当然,指令数据在不被执行时,也可以形成数据部分中的数据。例如,在执行一个编译程序时就是这种情况。编译程序生成输出数据,这些输出数据是指令数据,但它们被作为数据来管理,在编译程序操作期间不被看作指令。当然,本技术专业人员很清楚这种区别。
预取出的数据要么被存入缓冲存储器65(图6),要么被存入高速缓存63。将预取出的一个或多个数据块存入高速缓存会覆盖上层高速缓存中的数据,以前位于高层高速缓存中的数据被降到高速缓存中的较低层,因此不能被处理器立刻访问。当处理器试图解决高速缓存错误时,这种情况会造成处理器停顿。照这样,当预取出的数据被存入缓冲存储器中时,它并不干扰高速缓存层中的数据,因此更加有利。为实现处理速度的优化,处理器首先检查位于较高层的高速缓存中的数据块然后往下到较低层次。一旦一个或多个数据块已被存入缓冲存储器,则它们可被按要求传入高速缓存,不过,在有些情况下,如果发出一条从源存储位置到目的存储位置的拷贝指令,则直接从缓冲存储器向目的存储器中拷贝,根本不需拷入高速缓存。
在从源存储位置向目的存储位置拷贝数据时,硬件和软件控制的预取方案是高效的,例如,在拷贝操作中,在同一存储区域中,包含数据元素的一定数量的数据块被从源存储位置拷贝到目的存储位置。该拷贝操作被转换成送给处理器的一系列装入和存储指令。一般,源位置处的数据元素并不出现在高速缓存的高层中或缓冲存储器中。在以存储器访问指令的形式的装入指令实际请求一个数据块之前,预期该数据块将被处理器请求,并取出该预期数据块,这种预取操作可能改善处理器性能。
举例来说,图10例证了在将数据块从源存储位置30拷贝到目的存储位置(未示出)的顺序拷贝操作(未示出)中使用的图像存储器30中的数据块。每个数据块121-125都包含多个数据元素。装入指令与区域基地址寄存器比较以找出匹配,一旦找到匹配,则处理器使用相应的区域步距和区域长度值。通过将区域步距寄存器设置成该区域中一个数据块的长度(该值一般是由一个编程员或一个编译程序设置的),一个访问源数据区域中第一个数据块的存储器访问操作将启动对同一区域中第二个数据块的预取。一个访问第二个数据块的操作将启动第三个数据块的预取,等等。这种技术被称为顺序数据块预取。在处理器执行拷贝操作之前,程序流向处理器提供与该拷贝操作有关的信息。这有助于提高从源存储位置向目的存储位置的拷贝操作的性能,这是因为,该区域的步距是预先确定的,因此能减少处理器停顿周期。包含在一些存储区域中的数据的数据处理速度可能会比包含在其它区域中的数据快。因此,对数据处理速度快的区域使用的步距,比对数据处理速度慢的区域使用的步距大。
图10举例说明了存储在图像源存储区域30内并与APP1相关的多个数据块(121-124)。该区域的步距由一个编程员或编译程序预先确定,并存入区域步距寄存器。按照硬件和软件控制的预取方案,当一个装入指令访问第一数据块121时,数据块122被自动预取;当第二数据块122被访问时,数据块123被预取,等等。此时步距是数据块的长度。
当然,若执行一个数据块的预取操作所需时间大于将一个单独的数据块拷入目的地址的时间,由于数据块不能被处理器使用,则会出现处理器停顿。在此情况下,可以将给定区域的步距设置为两个数据块长,从而可以在源区域内搜索得更远,由于处理器要用相对更长的时间处理更多的数据,就为随后的预取操作提供了较长的时间,以取出所需数据。
再次参照图10,在将该区域的步距设置为两个数据块长度时,导致下面的预取序列。在一条装入指令访问第一数据块121时,第一数据块121和第二数据块122一起存储在缓冲存储器中。数据块123和124被预取出来;在访问第三数据块时,预取数据块125和126。
参照图11,在多个拷贝操作的情况下,当它们的源存储器起始位置是在同一存储区域内(例如在图像存储区域30中)由一个固定值隔开时,划分到每个拷贝操作所要拷贝的数据块中的数据元素数量是相同的。最好将步距设置为分隔各个源存储器起始位置的值,例如分隔数据块500和501的地址差值。在这一多拷贝操作中,访问数据块500,则预取位于第二数据块501中的所有数据元素130,131,132。访问下一个数据块501的存储位置,导致预取第三数据块502中的数据元素133、134、135。每个存储位置的起始地址都递增一个该给定区域的步距。这种多拷贝操作对拷贝一个较大的二维结构的两个维度的子结构也是有用的。
例如,预取多重数据块的操作可适用于存储器中存储的压缩图像,例如JPEG压缩图像。在这种情况下,由于压缩的特性,需要处理图像的数据块。以这种方式,当处理器从存储器的图像区域内保存的图像数据中读出一些数据块时,处理器就有了足够的从图像存储区域中预取出的数据,以执行图像的至少部分解压。否则,若没有从存储器的图像区域中读出足够的数据块,则处理器会经历一个停顿周期,此时,它必须重新访问存储器的图像区域,以获得下一个数据块来继续前一个数据块的部分解压。这样一种导致处理器停顿的情况是由于数据块长度不足以满足它自身的处理。反之,如果读出了过多的数据块,则处理器要么没有使用余下的数据,要么将在一个时间内占用过多的总线,导致其它使用总线的设备不必要的延迟。因此,对于压缩图像文件,可以有选择地指定存储器中一个专用的区域。这种基于区域的预取方案对于多任务环境来说是理想的。在这种情况下,当利用多任务环境操作时,操作系统跟踪当前执行的应用程序。当选择一个应用程序以便执行时,操作系统装入与当前应用程序相对应的寄存器查询表,因此,一旦选择执行一个随后的应用程序时,则第一个应用程序的寄存器查询表就被储存起来,随后的应用程序的寄存器查询表被装入处理器。以这种方式,当在程序流中执行存储器访问指令时,操作系统比较当前指令流中的指令访问的存储区域,并使用应用程序提供的最当前的步距,以便为一个给定应用程序提供有效的数据处理。
这类步距和相关的处理系统还可用于具有一些“哑”终端的服务器,这些终端与服务器内的主处理器相连。这里,哑终端具有有限的处理能力,服务器中的主处理器用于处理来自这些哑终端的数据。因此,当哑终端上执行的应用程序被装入处理器以便执行时,该应用程序的专用寄存器查询表被装入处理器,以便能够以减少处理器停顿的方式来有效地处理程序流。以这种方式,在进行处理例如多媒体应用程序时,具有一个指定步距是有好处的,因为它能为每个应用程序提供更有效的处理。
在另一个实例中,根据处理器对预定存储区域的访问特性,重新估计区域步距寄存器中存储的步距。例如,如果基区域是使用一个初始区域步距来进行访问的,但是在程序流中或处理器硬件中其它的指令已确定了这一情况,即,使用该步距进行预取会引起处理器停顿,于是,软件就改变该步距,以便使预定存储区域中要取出的数据有更多的超前。如果改变区域步距后,处理时间稍稍快了些,则软件再次改变区域步距,直到该步距大概为最大可接受的步距,或是直到获得了预定的性能改善。这个改善后的步距以自修正代码的形式插入到编译后的代码中。因此,一旦以后执行包含该给定程序流的软件应用程序时,存储在区域步距存储器中的就是根据以上修改改善后的步距。最好是周期性地执行步距估算,以使系统性能可以微调。
执行指令流中带有存储器访问指令的软件应用程序,会导致对一个存储区域的相对频繁的预取操作。在这种方式下,通过对软件应用程序进行有效编码并严格编译,硬件和软件控制的预取方案能将预取数据块的操作在时间上分散开,以避免可能的突发总线占用并减少处理器停顿周期的概率。按照例证实施例,利用软件提供有关存储器地址区域的步距信息,而不是利用硬件确定步距信息,这里,由访问数据存储器中存储单元的指令在程序流中的位置,来控制预取操作的频率。当然,预取操作在时间上的分散是与存储访问模式相关的,存储访问模式由程序流中包含的存储器访问指令的频率得出。存储访问指令间隔得越近,越容易引起处理器停顿。
通过使编译器在存储器访问指令中插入一个指示,可以有利地进一步改善预取操作,该指示的优选形式为一个位,它指示是否要对访问一个给定区域的存储器访问指令启动预取。可以在处理器中提供一个附加硬件62a,利用包含在存储器访问指令中的指示,有选择地禁止预取电路62的预取操作。在有些情况下,数据预取可能是不利的。如果没有指示,处理器将预取数据,除非明确指示不进行数据预取。在编译时间内,如果已知预取数据块会导致处理器停顿,则通过利用该指示可以避免停顿情况的出现。另外,可以增加单独的数据块预取硬件,或者,现有的数据块提取硬件资源可用于执行预取操作。
这种硬件和软件控制的预取方案有利地对处理器的指令处理带宽影响最小,因为在访问一个存储区之前,只向处理器提供区域基地址,区域长度和步距长度。另外,这些寄存器只占用芯片上很少的附加硬件资源。
另外,通过在时间上分散开预取操作,通过使用附加的寄存器,通过在存储器访问指令中指明是否要采用预取操作,可以减少处理器高速缓存错误,这是因为软件被用于向预取硬件传送存储器访问模式——存储器访问指令之间的间隔。利用软件和硬件结合的方式控制预取操作是有利的,可以得到比现有技术中更简单的设计和实现,并能提供一种减少处理器高速缓存错误的方式,而不是在出现高速缓存错误时对它进行处理。
或者,一个支持结构型存储器分配体系结构的处理器自动在具有合适步距的区域内部分配存储器,或者,自动规定有关所分配存储器的具有合适步距的区域。因此,当请求图像存储器时,操作系统在支持图像数据的区域内部分配它。这样,每个句柄都指向一个应用程序的指针表,但是应用程序的数据则是由操作系统按照步距要求而非连续地进行存储。从而,操作系统向处理器提供步距数据,而不需应用程序软件的介入和确认。因此,应用程序不需被修改就可以支持不同的操作系统硬件或新的更好的预取步距值。
本发明是非常有利的,因为它可以在希望的时候在对应用程序开发者可能是透明的若干系统层中的任一层中实现。
本发明可以有许多不同的实例而不脱离本发明的精神和实质。

Claims (15)

1.一个用于处理包含用于访问一个外部RAM存储器的存储访问指令的指令数据的处理器,包含:
-一个用于存储预取操作步距的区域步距存储单元;
-一个存储区域标识符,用于存储指明外部RAM存储器中的一个存储区域的数据,在该区域内要应用上述所存储的预取操作步距;
-一个预取电路,用于从外部RAM存储器中预取数据,当访问预取存储区域内的数据以便利用所述步距从所述存储器内取数据时,该预取电路响应于该预取存储步距。
2.权利要求1中的处理器,其中的存储器区域标识符至少包括处理器中的一个预取存储器起始地址区域基地址寄存器。
3.权利要求2中的处理器,其中的存储器区域标识符至少包括处理器中的一个预取存储器长度区域长度寄存器。
4.权利要求3中的处理器,其中的区域步距存储单元至少包括处理器中的一个预取步距区域步距寄存器。
5.权利要求4中的处理器,其中,至少一个区域步距寄存器可以被存储预取操作步距的指令数据的执行所改变。
6.权利要求5中的处理器,其中的处理器没有预取动态步距计算电路。
7.权利要求4中的处理器,包含一个寄存器查询表,用于存储其形式为预取存储器起始地址寄存器、预取存储器长度寄存器、和预取步距存储器寄存器的一组寄存器。
8.权利要求7中的一个处理器,其中的查询表按预取存储器起始地址寄存器而被索引,该寄存器来自查询表中所存储的多个预取存储器起始地址寄存器之中。
9.权利要求1中的处理器,其中的处理器没有预取步距计算电路。
10.权利要求1中的处理器,包含一个用于禁止预取的电路,该电路响应于一个被包含在存储器访问指令中的指示符,用于有选择地禁止预取电路进行预取操作。
11.一种从外部RAM存储器中预取数据的方法,包含以下步骤:
-向一个用于在存储单元内进行存储的处理器提供一个步距和指定外部RAM存储器中一个存储区域的数据,该步距用于从该存储区域中预取数据;
-确定一个区域,在该区域中存储要从其中预取的数据;
-确定处理器中存储的与该区域相关的预取步距;
-定义一个数据块,该数据块具有一个基于预取步距的长度和一个基于外部存储器中前一次预取的数据块的存储位置的起始位置;以及
-将位于该起始位置的数据块拷贝入一个目的存储位置。
12.权利要求11中的预取数据方法,其中预取步距是由软件在执行中提供给处理器的,预取步距与该软件所识别的一个区域相关。
13.权利要求11中的预取数据方法,其中,该区域用于存储利用同样的步距访问的数据。
14.权利要求11中的预取数据方法,其中来自一些不同软件应用程序的数据存储在同一区域内。
15.权利要求11中的预取数据方法,其中的该区域是从多个区域中选出的,每个区域都有一个相关的步距,该相关的步距与区域相关联地事先被存储在处理器中。
CNB038097249A 2002-05-01 2003-04-22 基于存储区的数据预取的处理器和方法 Expired - Lifetime CN100371886C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/136,732 2002-05-01
US10/136,732 US6760818B2 (en) 2002-05-01 2002-05-01 Memory region based data pre-fetching

Publications (2)

Publication Number Publication Date
CN1650260A CN1650260A (zh) 2005-08-03
CN100371886C true CN100371886C (zh) 2008-02-27

Family

ID=29268998

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB038097249A Expired - Lifetime CN100371886C (zh) 2002-05-01 2003-04-22 基于存储区的数据预取的处理器和方法

Country Status (6)

Country Link
US (1) US6760818B2 (zh)
EP (1) EP1504341A2 (zh)
JP (1) JP4566737B2 (zh)
CN (1) CN100371886C (zh)
AU (1) AU2003219446A1 (zh)
WO (1) WO2003093981A2 (zh)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4093741B2 (ja) * 2001-10-03 2008-06-04 シャープ株式会社 外部メモリ制御装置およびそれを含んだデータ駆動型情報処理装置
US20040006667A1 (en) * 2002-06-21 2004-01-08 Bik Aart J.C. Apparatus and method for implementing adjacent, non-unit stride memory access patterns utilizing SIMD instructions
US6816946B2 (en) * 2002-07-01 2004-11-09 Sony Computer Entertainment, Inc. Methods and apparatus for controlling a cache memory
US7143264B2 (en) * 2002-10-10 2006-11-28 Intel Corporation Apparatus and method for performing data access in accordance with memory access patterns
US6957317B2 (en) * 2002-10-10 2005-10-18 Intel Corporation Apparatus and method for facilitating memory data access with generic read/write patterns
JP4116413B2 (ja) 2002-12-11 2008-07-09 株式会社日立製作所 プリフェッチアプライアンスサーバ
TWI220194B (en) * 2002-12-26 2004-08-11 Rdc Semiconductor Co Ltd Method and system for accessing memory data
US7284014B2 (en) 2003-04-07 2007-10-16 Hitachi, Ltd. Pre-fetch computer system
US7124255B2 (en) * 2003-06-30 2006-10-17 Microsoft Corporation Message based inter-process for high volume data
DE10335643B4 (de) * 2003-08-04 2007-10-31 Infineon Technologies Ag Vorrichtung und Verfahren zum Steuern des Zugriffs von mehreren Datenverarbeitungseinrichtungen auf einen Speicher
WO2005013105A1 (ja) * 2003-08-04 2005-02-10 Fujitsu Limited ルックアップテーブル及びデータ取得方法
KR100546403B1 (ko) * 2004-02-19 2006-01-26 삼성전자주식회사 감소된 메모리 버스 점유 시간을 가지는 시리얼 플레쉬메모리 컨트롤러
JP4212521B2 (ja) * 2004-06-30 2009-01-21 株式会社東芝 先読み制御装置、プロセッサの一時記憶装置へデータの先読みを制御する先読み制御方法およびプログラム
US7539831B2 (en) * 2004-08-18 2009-05-26 Intel Corporation Method and system for performing memory clear and pre-fetch for managed runtimes
US20090217004A1 (en) * 2004-11-15 2009-08-27 Koninkliijke Phillips Electronics N.V. Cache with prefetch
US20060174228A1 (en) * 2005-01-28 2006-08-03 Dell Products L.P. Adaptive pre-fetch policy
US7206889B2 (en) * 2005-03-22 2007-04-17 Hewlett-Packard Development Company, L.P. Systems and methods for enabling communications among devices in a multi-cache line size environment and disabling communications among devices of incompatible cache line sizes
US8607005B2 (en) * 2006-02-17 2013-12-10 International Business Machines Corporation Monitoring program execution to learn data blocks accessed by software process for facilitating efficient prefetching
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US20070276989A1 (en) * 2006-05-29 2007-11-29 Sandisk Il Ltd. Predictive data-loader
JP2008083983A (ja) * 2006-09-27 2008-04-10 Toshiba Corp 情報処理装置及び情報処理方法
CN101627365B (zh) * 2006-11-14 2017-03-29 索夫特机械公司 多线程架构
EP2115598B1 (en) * 2007-01-25 2011-03-30 Nxp B.V. Hardware triggered data cache line pre-allocation
JP5332721B2 (ja) * 2009-02-25 2013-11-06 富士通セミコンダクター株式会社 メモリアクセス制御回路、メモリアクセス制御方法および電子機器
JP5574455B2 (ja) * 2009-07-20 2014-08-20 フリースケール セミコンダクター インコーポレイテッド プリフェッチ・モジュールを備える信号処理システムおよび集積回路、並びにそのための方法
US8321703B2 (en) * 2009-12-12 2012-11-27 Microsoft Corporation Power aware memory allocation
WO2011111009A1 (en) * 2010-03-09 2011-09-15 Happy Cloud Inc. Data streaming for interactive decision-oriented software applications
CN102023931B (zh) * 2010-12-17 2015-02-04 曙光信息产业(北京)有限公司 一种自适应缓存预取方法
CN103635875B (zh) 2011-03-25 2018-02-16 英特尔公司 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
TW201327161A (zh) * 2011-12-23 2013-07-01 Ibm 記憶體控制方法與實施此方法之電腦系統
CN103729142B (zh) * 2012-10-10 2016-12-21 华为技术有限公司 内存数据的推送方法及装置
US20140189249A1 (en) * 2012-12-28 2014-07-03 Futurewei Technologies, Inc. Software and Hardware Coordinated Prefetch
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9280476B2 (en) * 2014-06-04 2016-03-08 Oracle International Corporation Hardware stream prefetcher with dynamically adjustable stride
US9594513B1 (en) * 2015-06-29 2017-03-14 EMC IP Holding Company LLC Data storage system with file system stream detection
US10185561B2 (en) 2015-07-09 2019-01-22 Centipede Semi Ltd. Processor with efficient memory access
US9575897B2 (en) * 2015-07-09 2017-02-21 Centipede Semi Ltd. Processor with efficient processing of recurring load instructions from nearby memory addresses
CN105607892A (zh) * 2015-10-26 2016-05-25 珠海格力电器股份有限公司 一种多程序的并发执行方法和系统
CN106933539B (zh) * 2016-04-20 2019-03-15 上海兆芯集成电路有限公司 侦测自修正程序码的处理器与方法
JP2018124915A (ja) * 2017-02-03 2018-08-09 富士通株式会社 解析プログラム、解析方法及びストレージシステム
CN107193757B (zh) * 2017-05-16 2020-03-13 龙芯中科技术有限公司 数据预取方法、处理器和设备
US10671536B2 (en) * 2017-10-02 2020-06-02 Ananth Jasty Method and apparatus for cache pre-fetch with offset directives
US11061591B2 (en) 2018-11-02 2021-07-13 Samsung Electronics Co., Ltd. Storage device processing stream data, system including the same, and operation method thereof
CN114691024A (zh) * 2020-12-31 2022-07-01 华为技术有限公司 数据预取的方法、装置和设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5357618A (en) * 1991-04-15 1994-10-18 International Business Machines Corporation Cache prefetch and bypass using stride registers
CN1306246A (zh) * 1999-12-10 2001-08-01 国际商业机器公司 预取由转移历史引导的指令/数据

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6356731A (ja) * 1986-08-27 1988-03-11 Mitsubishi Electric Corp デ−タ処理装置
US5146578A (en) * 1989-05-01 1992-09-08 Zenith Data Systems Corporation Method of varying the amount of data prefetched to a cache memory in dependence on the history of data requests
JPH0454653A (ja) * 1990-06-25 1992-02-21 Hitachi Ltd キャッシュメモリ
SE469402B (sv) 1991-05-02 1993-06-28 Swedish Inst Of Computer Scien Foerfarande foer att haemta data till ett cache-minne
US5423048A (en) * 1992-08-27 1995-06-06 Northern Telecom Limited Branch target tagging
US5442767A (en) 1992-10-23 1995-08-15 International Business Machines Corporation Address prediction to avoid address generation interlocks in computer systems
JPH06314241A (ja) * 1993-03-04 1994-11-08 Sharp Corp 高速半導体記憶装置及び高速連想記憶装置
JPH07129464A (ja) * 1993-11-05 1995-05-19 Hitachi Ltd 情報処理装置
JP2778623B2 (ja) 1995-07-21 1998-07-23 日本電気株式会社 プリフェッチ制御装置
US5854921A (en) 1995-08-31 1998-12-29 Advanced Micro Devices, Inc. Stride-based data address prediction structure
US5802569A (en) * 1996-04-22 1998-09-01 International Business Machines Corp. Computer system having cache prefetching amount based on CPU request types
US5761506A (en) 1996-09-20 1998-06-02 Bay Networks, Inc. Method and apparatus for handling cache misses in a computer system
US5961631A (en) 1997-07-16 1999-10-05 Arm Limited Data processing apparatus and method for pre-fetching an instruction in to an instruction cache
US6047363A (en) * 1997-10-14 2000-04-04 Advanced Micro Devices, Inc. Prefetching data using profile of cache misses from earlier code executions
US6202130B1 (en) * 1998-04-17 2001-03-13 Motorola, Inc. Data processing system for processing vector data and method therefor
GB2339037B (en) 1998-07-03 2002-11-20 Advanced Risc Mach Ltd Memory address translation in a data processing system
US6073215A (en) * 1998-08-03 2000-06-06 Motorola, Inc. Data processing system having a data prefetch mechanism and method therefor
US6542968B1 (en) * 1999-01-15 2003-04-01 Hewlett-Packard Company System and method for managing data in an I/O cache
US6321330B1 (en) * 1999-05-28 2001-11-20 Intel Corporation Each iteration array selective loop data prefetch in multiple data width prefetch system using rotating register and parameterization to avoid redundant prefetch

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5357618A (en) * 1991-04-15 1994-10-18 International Business Machines Corporation Cache prefetch and bypass using stride registers
CN1306246A (zh) * 1999-12-10 2001-08-01 国际商业机器公司 预取由转移历史引导的指令/数据

Also Published As

Publication number Publication date
AU2003219446A1 (en) 2003-11-17
US6760818B2 (en) 2004-07-06
WO2003093981A2 (en) 2003-11-13
EP1504341A2 (en) 2005-02-09
US20030208660A1 (en) 2003-11-06
JP4566737B2 (ja) 2010-10-20
JP2005524171A (ja) 2005-08-11
WO2003093981A3 (en) 2004-03-04
CN1650260A (zh) 2005-08-03

Similar Documents

Publication Publication Date Title
CN100371886C (zh) 基于存储区的数据预取的处理器和方法
US6857047B2 (en) Memory compression for computer systems
US5394531A (en) Dynamic storage allocation system for a prioritized cache
US5559978A (en) Method for increasing the efficiency of a virtual memory system by selective compression of RAM memory contents
US5577224A (en) Method and system for caching data
US8307053B1 (en) Partitioned packet processing in a multiprocessor environment
US20030140198A1 (en) Control method of the cache hierarchy
US20150032967A1 (en) Systems and methods for adaptive prefetching
EP0359923A2 (en) Multiuser dynamic cache
JPH03218514A (ja) I/oバッファのサイズを最適にする方法および最適にされたi/oバッファを有するコンピュータ装置
JPS63150731A (ja) コンピュータシステムおよびその実行方法
JP4801761B2 (ja) データベース管理方法およびシステム並びにその処理プログラム
Bukkapatnam et al. Smart memory management (SaMM) for embedded systems without MMU
JPH07271674A (ja) キャッシュ最適化の方法
CN113015966A (zh) 压缩式计算机存储器访问
KR20170002866A (ko) 분산 환경에서 사용자 애플리케이션의 액세스 특성에 따른 적응형 캐시 관리 방법
US9934147B1 (en) Content-aware storage tiering techniques within a job scheduling system
CN101853218A (zh) 用于磁盘阵列的读取方法和系统
US7139872B1 (en) System and method for assessing the effectiveness of a cache memory or portion thereof using FIFO or LRU using cache utilization statistics
CN114253458A (zh) 内存缺页异常的处理方法、装置、设备及存储介质
EP1702270B1 (en) Dedicated cache memory
CN117099086A (zh) 用于通过存储器接口的合并多播数据传输的系统和方法
CN101202758B (zh) 多客户端的网络虚拟存储方法
US20210026809A1 (en) Data caching method and node based on hyper-converged infrastructure
JPH06266619A (ja) ページ退避/復元装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: NXP CO., LTD.

Free format text: FORMER OWNER: KONINKLIJKE PHILIPS ELECTRONICS N.V.

Effective date: 20070914

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20070914

Address after: Holland Ian Deho Finn

Applicant after: NXP B.V.

Address before: Holland Ian Deho Finn

Applicant before: Koninklijke Philips Electronics N.V.

C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: NITAI SOFTWARE CO., LTD.

Free format text: FORMER OWNER: KONINKL PHILIPS ELECTRONICS NV

Effective date: 20120321

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20120321

Address after: Delaware

Patentee after: NYTELL SOFTWARE LLC

Address before: Holland Ian Deho Finn

Patentee before: NXP B.V.

CX01 Expiry of patent term

Granted publication date: 20080227

CX01 Expiry of patent term