CN1269042C - 具有预取指令的微处理器及预取至其高速缓存的方法 - Google Patents
具有预取指令的微处理器及预取至其高速缓存的方法 Download PDFInfo
- Publication number
- CN1269042C CN1269042C CNB021405018A CN02140501A CN1269042C CN 1269042 C CN1269042 C CN 1269042C CN B021405018 A CNB021405018 A CN B021405018A CN 02140501 A CN02140501 A CN 02140501A CN 1269042 C CN1269042 C CN 1269042C
- Authority
- CN
- China
- Prior art keywords
- microprocessor
- address
- fast line
- line taking
- instruction
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 239000000872 buffer Substances 0.000 claims abstract description 124
- 230000004044 response Effects 0.000 claims abstract description 30
- 230000009471 action Effects 0.000 claims description 15
- 230000007423 decrease Effects 0.000 claims description 7
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 230000000694 effects Effects 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 28
- 230000008901 benefit Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 241001269238 Data Species 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 101150064138 MAP1 gene Proteins 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- VEMKTZHHVJILDY-UHFFFAOYSA-N resmethrin Chemical compound CC1(C)C(C=C(C)C)C1C(=O)OCC1=COC(CC=2C=CC=CC=2)=C1 VEMKTZHHVJILDY-UHFFFAOYSA-N 0.000 description 1
- 238000012546 transfer Methods 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
- 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
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- 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
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- 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)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
本发明涉及一种执行重复预取指令(REP PREFETCH)的微处理器及预取快取线至其高速缓存的方法。该重复预取指令预取多条快取线,其中快取线的数量可于指令中指定。该指令是由Pentium III PREFETCH运算码所指定,运算码前则有REP字符串指令前置码。程序员于ECX缓存器中知道所要预取快取线的计数值,类似于REP字符串指令的重复计数值。第一条快取线的有效地址,则以类似常见PREFETCH指令的方式来指定。若当前预取的快取线的地址未命中TLB,或者当前处理器级缓存器中的当前特权级改变,则停止REPPREFETCH指令的执行。此外,只有在自由响应缓冲器的数量大于一可程序化的门槛值时,才预取一快取线。该预取动作时在比其它需要存取高速缓存或TLB的动作还低的优先权下执行。
Description
技术领域
本发明涉及微处理器的预取指令(prefetch instruction)的领域,尤指一具有预取指令的微处理器及预取至其高速缓存的方法,该预取指令是可预取一特定数量的快取线(cache line)。
背景技术
现代的微处理器皆包含高速缓存。高速缓存储存了一部份存于计算机系统的其它内存的数据。当处理器执行一需参照数据的指令时,处理器首先检查该数据是否存于高速缓存中。若是,则既然数据已存在高速缓存中,该指令便可立即执行。否则,该指令必须等到数据从其它内存提取至高速缓存时,才能执行。数据的提取可能得花相当长的时间一一在某些情况下,所花时间是处理器执行指令所需的一个数量级以上。
许多在微处理器上执行的软件程序需要处理大量的连续数据。例如,这大量的连续数据可能介于一百到一百万个字节之间。此种程序的例子如多媒体相关的音频或视频程序,其处理大量的数据,像是视频数据或波形文件(Wave file)数据。一般大量的数据都存在外部的内存,诸如系统内存或视频页框缓冲器(video frame buffer)。为了让处理器能处理数据,必须将数据从外部内存提取至处理器。
若所需的一部分数据不在高速缓存中,则由于数据的提取及处理所需时间并不相同,便可能造成一种情形,即处理器已准备好执行另一个指令以处理数据,但却无法动作,而须坐等数据被提取至处理器。如此处理器的使用便缺乏效率,并可能导致如多媒体系统效能的降低。
在解决这项问题上,现代的微处理器已觉察到在很多时候,程序员会在实际处理数据的指令执行前,像是算术指令(arithmetic instruction),便已知道他需要这些数据。因此,现代的微处理器已将预取指令加入或包含在其指令集中,这些预取指令是在数据被需要前,即提取该数据的一快取线至处理器的高速缓存中。快取线是能在高速缓存与其它内存间移转的最小单位数据。此种具预取指令的微处理器的一例即英特尔(Intel)Pentium III处理器。PentiumIII在其串流SIMD延伸(Streaming SIMD Extensions,SSE)指令集中,包含了PREFETCH指令。
在许多软件应用程序中,程序员知道他将要处理到大量的连续数据,即许多快取线。因此,程序员在其程序中加入预取指令,像是Pentium III的PREFETCH,以预取一快取线。程序员在实际要执行快取线数据的算术或逻辑运算的指令的多个指令前,加入预取指令。因此,程序可能有许多预取指令呈点状分布其间。所加入的这些预取指令使得程序代码以及所需执行的指令数都增加了。
再者,在常见的方法中,程序员不仅使预取指令呈点状分布于程序代码中,还需努力将其放至适当位置,使其执行能最佳化。也就是,程序员必须尝试去决定预取指令的执行时机,以使得数据在指令需要用到时,就已经在高速缓存中了。特别是,程序员在将预取指令放进程序代码时,要尝试使其不会相互干扰。即,在现有的处理器中,若一预取指令正在执行且一后续的预取指令随之出现,则其中一预取指令可能会被视为虚拟操作指令(no-op instruction),只耗费脉冲而未实际执行预取。这样就无法完成程序员想做的,且很可能使效能变得较差。
程序员靠自己动手加入预取指令时,所面临的一项问题是,核心/总线脉冲比(core/bus clock ratio)是不固定的。在许多现代的微处理器中,连接处理器与系统其它部分的处理器总线,其脉冲频率不同于处理器内部逻辑运作的脉冲频率,后者一般称为核心脉冲频率。核心/总线脉冲比即为处理器核心脉冲频率对处理器总线脉冲频率的比率。
核心脉冲与处理器总线脉冲频率的差异,部分要归固于在分类所生产的处理器时,常依据一已知集成电路所能稳定维持的核心脉冲频率。因此,情况可能是,一种已知的处理器设计可能会被分到四个不同核心脉冲频率的类别中,像是800MHz、900MHz、1GHz以及1.2GHz。然而,所有这些处理器类别皆必须在设计为以一或二个固定总线脉冲频率,如100MHz或133MHz来在主机板上运作。所以,在上例中,就可能产生八种不同的核心/总线脉冲比。因此,要完成一典型的预取动作,其所需的核心脉冲有八种不同的可能值。
要完成一典型的预取动作,其所需核心脉冲是存在一变动范围的这个事实,使得程序员很难有效地自己动手加入常见的预取指令。假定最高的核心/总线脉冲比是12,并假设一典型的预取指令要花约10个总线脉冲或约120个核心脉冲。假定程序员正在写一个循环(loop),其用来处理单一快取线的数据,并花大约60个核心脉冲执行,而且除了预取指令所产生的总线动作外,不需要依靠其它总线的动作。
在此例中,程序员可能选择每重复(iteration)一次该循环,即每120个核心脉冲就执行一预取指令,以顾及最高核心/总线脉冲比的情形。在脉冲比为12时,程序员的这项选择可能运作得很好。然而,若使用者系统的脉冲比为6,一典型的预取指令仅需约60个核心脉冲,这只重复一次循环而已。在此情况下,预取指令只有一半的时间有在运作,如此可能导致处理器停顿下来,等待数据被提取至高速缓存中。
因此我们所需要的是一种具备可有效进行预取的预取指令的微处理器,并且,该预取指令可有效地置入Pentium III的运算码空间。
发明内容
本发明提供一种微处理器,其支持一种可允许程序员指定快取线预取数量的预取指令。于是,为达到前述目的,本发明的一项特征是,提供一种微处理器,其执行一预取指令,该预取指令指定一组快取线,以便将其从一系统内存预取至该微处理器的一高速缓存中。该微处理器包括一预取计数缓存器(prefetch count register),以储存所余的待预取快取线的一计数。该微处理器也包括一通用缓存器(general purposeregister),耦接至该预取计数缓存器,用以储存该计数的一初始值。该初始值由先于该预取指令执行的一指令加载该通用缓存器。该微处理器也包括一控制逻辑电路(control logic),耦接至该预取计数缓存器,用以将该初始值从通用缓存器复制至预取计数缓存器,以响应译码该预取指令的动作。该微处理器还包括一预取地址缓存器,耦接至该控制逻辑电路,用以储存该组快取线中,所要预取的下一条快取线地址;一比较器,耦接至该控制逻辑电路,用以在存取该组快取线之前,判断微处理器中自由响应缓冲器的数量是否大于一门槛值;一仲裁器,耦接至该控制逻辑电路,用以决定在有其它要求者的情形下,该预取指令是否被允许存取该高速缓存;一重新执行缓冲器,耦接至该控制逻辑电路,在该仲裁器不允许该预取指令存取该高速缓存的情况下,用以储存关联于该预取指令的状态;其中,所述的控制逻辑电路是在预取该组快取线前,将该计数的该初始值从通用缓存器复制至预取计数缓存器。
另一方面,本发明的一项特征是,提供一种微处理器。该微处理器包括一指令译码器(instruction decoder),其译码一指令集中的指令。该指令集包含由一英特尔Pentium III处理器所定义的一多个指令的集合。该指令集也包括一重复预取指令。该重复预取指令包含一Pentium III PREFETCH指令运算码。一位在该运算码前的Pentium III REP字符串指令前置码(prefix)以及指定预取快取线数量的一计数。
另一方面,本发明的一项特征是,提供一种用于具一系统内存的系统中的微处理器。该微处理器包括一用以译码一预取指令的指令译码器,该预取指令指定了从系统内存所要预取快取线的一计数及该快取线在系统内存中的一地址。该微处理器也包括一地址缓存器(address register),耦接至该指令译码器,用以储存该预取指令所指定的地址。该微处理器也包括一计数缓存器,耦接至指令译码器,用以储存指定于该预取指令的该计数。该微处理器也包括一控制逻辑电路,耦接至该地址缓存器,用以控制微处理器从系统内存预取地址缓存器与计数缓存器中所指定的快取线至微处理器的一高速缓存中。
另一方面,本发明的一项特征是,提供一种微处理器预取指令或者快取线至其高速缓存的方法。该方法包括侦测一重复预取指令,该重复预取指令是指定一计数值的快取线,以从一系统内存地址进行预取,并将该计数值从微处理器的一通用缓存器复制至一预取计数缓存器,以及储存该地址于一预取地址缓存器中。该方法也包括预取该预取地址缓存器所指定的一快取线至该高速缓存,递减该预取计数缓存器中的计数,以及递增该预取地址缓存器中的地址。该方法也包括重复该预取递减及递增的步骤,直到预取计数缓存器的值为零。
本发明的一个优点是,其可向下兼容于现有的x86指令集架构。此因Pentium III在一REP前置码位于PREFETCH指令之前时,不会产生异常(exception)。因而,依据本发明,包含本发明的重复预取指令的软件程序,可在一支持重复预取指令的微处理器上执行得更有效率,且该程序也能在一Pentium III处理器上正确执行。
本发明的另一个优点是,通过再使用PREFETCH运算码与REP前置码组合起来,以虚拟地产生新的运算码,而保留x86的运算码空间。再一个优点则是,相较于常见的单一快取线预取指令,本发明潜在地缩短了软件程序代码,此因程序所需的预取指令更少了。还有一个优点是,本发明通过较常见方法更有效率地使用处理器总线,而潜在地增进系统的效能。再有一个优点则是,本发明由于减轻了可能存在不同的核心/总线脉冲比所带来的问题,而能较常见方法将数据更有效率地移入微处理器的高速缓存中,借以潜在地促进处理效能。
本发明的其它特征与优点,与考察本说明书其余部分与附图后,将可更加明白。
附图说明
图1为本发明的一微处理器的方块图;
图2为相关技术的Pentium III PREFETCH指令的方块图;
图3为相关技术的附有一REP字符串运算前置码的Pentium III字符串指令的方块图;
图4为本发明的一重复预取指令的方块图;
图5为依本发明解说图1的微处理器如何执行图4的重复预取指令的运作流程图;
图6为依本发明进一步解说图1的微处理器如何执行图4的重复预取指令的运作流程图。
具体实施方式
现请参阅图1,其显示本发明的一微处理器100的方块图。微处理器100包含一指令译码器102,其从一指令高速缓存(未显示于图中)接收指令字节。在一具体实施例中,该指令字节包含x86架构的指令字节。指令译码器102译码该指令字节,尤其,指令译码器102依据本发明,组态为译码一重复预取指令,此将在关于图4部分叙述。在叙述图4的重复预取指令前,以下关于图2与图3部份,将先叙述Pentium III的PREFETCH与REP字符串指令。
现请参阅图2,其显示一相关技术的Pentium III PREFETCH指令200的方块图。Pentium III处理器的指令集包括一PREFETCH指令,其将一快取线从系统内存提取至处理器的快取层级体(cache hierarchy)中一位置。PentiumIII PREFETCH指令是详述于IA-32Intel Architecture Software Developer’sManual,Volume 2:Instruction Set Reference,2001的3-600至3-601页,通过参照可将此数据并入本说明书。
PREFETCH指令200包含一PREFETCH运算码202。PREFETCH运算码202具一默认值0x0F18,以便将PREFETCH指令200与Pentium III指令集的其它指令区分开来。PREFETCH指令200也包含一Mod R/M字节204。PREFETCH指令200也包含地址操作数(address operands)206,其指定系统内存中一字节的地址。PREFETCH指令200从系统内存预取含有指定字节的快取线至处理器的快取层级体。
Mod R/M字节204在PREFETCH指令200中执行两项功能。第一项功能是指定一寻址模式(addressing mode)。该寻址模式决定了地址操作数206将如何用于产生包含所要预取快取线的字节的一有效地址。该有效地址可用不同的方式指定。例如,有效地址操作数206可在处理器的缓存器档案(registerfile)的缓存器中,像是DS:ESI缓存器,以节区:偏移量(segment:offset)的格式来指定。依照该寻址模式,附加的字节,诸如SIB字节、位移(displacement)及/或直接(immediate)字节,可能包含用于产生有效地址的地址操作数206。Pentium III指令的一般格式以及该寻址模式的解释是详述于IA-32Intel Arehitecture Software Developer’s Manual,Volume 2:Instruction SetReference,2001的2-1至2-7页,通过参照可将此数据并入本说明书。
PREFETCH指令200的Mod R/M字节204的第二项功能是指定一位置指示(locality hint)。该位置指示指明要将所指定的快取线预取至Pentium III处理器的快取层级体中哪个位置。由每一位置指示204默认值所指明的快取层级体的位置,是因处理器不同而改变。
Pentium III PREFETCH指令200的一项缺点是,其不允许程序员一指定多条所要预取的快取线,而只能确保单一快取线的预取功能。
现请参阅图3,其显示一相关技术的附有一REP字符串运算前置码的Pentium III字符串指令300的方块图。x86架构的指令集,包括Pentium III处理器包含了执行字节、字组或双字组(duble-words)数据演算的字符串运算指令。此种运算的例子()从一连接埠输入、输出至一连接端口、从内存一位置移至另一位置、从内存加载至处理器的缓存器、从处理器的缓存器储存到内存中、比较或搜寻。字符串运算是由一字符串指令运算码304所指定,其包含于REP字符串指令300。REP字符串指令300包含一REP前置码302,可指示处理器重复执字符串指令运算码304所指定的字符串运算,其重复次数则由REP字符串指令300一计数306来指定。REP前置码302具下面两个默认值其中的一:0xF2或0xF3,其视所要重复执行的特定字符串指令而定。程序员在执行REP字符串指令300前,即将计数300加载Pentium III缓存器档案盼ECX缓存器中。REP字符串运算前置码指令300详述于IA-32IntelArchitecture Soft()are Developer’s Manual,Volume 2:I()tructionSet Reference,2001的3-677至3-679页,通过参照可将此数据并入本说明书。
现请参阅图4,其显示本发明的一重复预取指令(REP PREMTCH)400的方块图。重复预取指令400包含一REP前置码402,其后则有一PREFETCH运算码404、一Mod R/M字节406、地址操作数408以及一计数412。REP前置码402类似于图3的REP前置码302。重复预取指令400中REP前置码402的存在,显示将要预取多条快取线。在一具体实施例中,所要预取快取线的数量,即计数412,是由图1的ECX缓存器106所指定。PREFETCH运算码404类似于图2的PREFETCH运算码202,而ModR/M字节406则类似于图2的ModR/M字节204。同样地,地址操作数408类似于图2的地址操作数206。有利地,重复预取指令400使程序员能指定预取多条快取线。重复预取指令400的其它优点将叙述于后。
请再参阅图1,微处理器100也包含耦接至指令译码器102的控制逻辑电路144。在译码图4的重复预取指令400后,指令译码器102即告知控制逻辑电路144,一重复预取指令400已被译码。
微处理器100也包含一缓存器档案104,耦接至指令译码器102。在一具体实施例中,缓存器档案104包含实质上近似于Pentium III缓存器档案的缓存器。尤其,缓存器档案104包含类似于Pentium III缓存器档案的ECX缓存器的一ECX缓存器106。在执行重复预取指令400之前,ECX缓存器106加载了重复预取指令400所要预取快取线的计数值。缓存器档案104也包含其它用来储存图4重复预取指令400的地址操作数408的缓存器该地址操作数408是用以计算重复预取指令400的有效地址。在译码重复预取指令400后,指令译码器102及/或缓存器档案104即提供地址操作数408至地址产生器114。
微处理器100也包含一地址产生器114,耦接至缓存器档案104。地址产生器114从缓存器档案104及/或指令译码器102接收地址操作数408,并依据地址操作数408产生一有效地址108。
微处理器100也包含一多任务器116,耦接至地址产生器114。多任务器116的第一输入端从地址产生器114接收有效地址108。多任务器116的第二输入端接收一递增器(incrementer)126的输出。多任务器116依据由控制逻辑电路144而来的一控制信号,选取两输入端其中之一。
微处理器100也包含一重复预取地址(RPA)缓存器122,耦接至多任务器116的输出端。RPA缓存器122储存及输出一重复预取地址(RPA)186,其是所要预取的快取线的当前地址(current address)。一开始,RPA缓存器122储存了地址产生器114所产生的有效地址108。RPA186则由RPA缓存器122输出至递增器126。递增器126将RPA186递增一快取线的大小,并将递增后的地址送回至多任务器116的第二输入端以使得每次预取一快取线时,RPA缓存器122中的RPA186可以被更新。在一具体实施例中,一快取线的大小为32字节。
微处理器100也包含一第二多任务器146,耦接至RPA缓存器122。多任务器146从RPA缓存器122接收RPA186。多任务器146也从地址产生器114接收有效地址108。多任务器146也接收一重新执行缓冲地址(replay bufferaddress)132、储存缓冲(SB)地址134。表格扫描地址(table walk address)136以及响应缓冲(RB)地址138。
微处理器100也包含一耦接至多任务器146的高速缓存154,其由多任务器146的输出来寻址。高速缓存154是代表微处理器100的快取层级体。在一具体实施例中,高速缓存154包含一一阶(level-1)数据高速缓存与一二阶(level-2)数据高速缓存。重复预取指令400从系统内存所预取的快取线则提取至高速缓存154。
微处理器100也包含一标志数组152,或目录152,耦接至多任务器146。标志数组152也由多任务器146的输出加以寻址。标志数组152储存了关联于存在高速缓存154中的快取线的标志与状态。标志数组152产生一快取命中信号(cache hit signal)162。若多任务器的输出吻合于存于标志数组152的一有效标志,则标志数组152产生一真值的快取命中信号162。否则,标志数组152产生一假值的快取命中信号162。快取命中信号162是被送至控制逻辑电路144。
微处理器100也包含一耦接至多任务器146的转换参照缓冲器(translation lookaside buffer,TLB)156。TLB156也由多任务器146的输出来寻址。TLB156快取了页码表(page table)目录信息,以减少转换页码所需的时间。TLB156产生一TLB命中信号164。若关联于多任务器146所输出地址的有效页码目录信息是存在于TLB156则TLB156产生一真值的TLB命中信号164。反的,则TLB156产生一假值的TLB命中信号164,且必须执行表格扫描以获得所要的页码目录信息。TLB命中信号164则被送至控制逻辑电路144。
微处理器100也包含一耦接至ECX缓存器106的第三多任务器118,其在一第一输入端从ECX缓存器106接收图4的重复预取指令400的计数值412。多任务器118在上第二输入端接收一递减器(decrementer)128的输出。多任务器118依据由控制逻辑电路144而来的一控制信号,选取两输入端其中之一。
微处理器100也包含一重复预取计数(RPC)缓存器124,耦接至多任务器118的输出。RPC缓存器124储存并输出一重复预取计数(RPC)188,其为重复预取指令400当前所余的预取快取线的数量。一开始,RPC缓存器124储存了存于ECX缓存器106的重复预取指令400的计数值412。RPC 188则由RPC缓存器124输出至递减器128。递减器128将RPC 188递减一,并将递减后的计数值送回至多任务器118的第二输入端,以使得每次预取一快取线时,RPC缓存器124中的RPC 188可以被更新。RPC 188也由RPC缓存器124送至控制逻辑电路144。
微处理器100也包含一重复预取有效(RPV)缓存器142,耦接至控制逻辑电路144。RPV缓存器142储存及输出一重复预取有效(RPV)位184。若一重复预取指令400将要执行,则RPV位184为真,如下文关于图5及图6部分所述。
微处理器100也包含一耦接至多任务器146的仲裁器(arbiter)148,其从RPV缓存器142接受RPV位184。仲裁器148也与控制逻辑电路144进行沟通。仲裁器148在微处理器100内的各项资源间进行仲裁,这些资源是要求存取高速缓存154。标志数组152及/或TLB 156。在一具体实施例中,这些资源包括重复预取指令400、表格扫描逻辑电路、储存缓冲器、响应缓冲器166及一重新执行缓冲器158。依据RPV位184及来自控制逻辑电路144的信息(如下所述),仲裁器148控制多任务器146选取多任务器146前述的其中一输入端,以使得其中一项资源可以存取高速缓存154、标志数组152及/或TLB 156的内容。在一具体实施例中,在竞逐高速缓存154、标志数组152及/或TLB 156的存取权的各项资源中,重复预取指令400所具的优先权为最低的。
微处理器100也包含一耦接至控制逻辑电路144的重新执行缓冲器158。当一重复预取指令400未赢得仲裁器148对高速缓存154、标志数组152及/或TLB 156存取权的仲裁,重新执行缓冲器158便用来储存该重复预取指令400的某些状态。重新执行缓冲器158有利地使该重复预取指令400能持续其寿命。这特别重要,因为重复预取指令400很少能赢得足够时间的存取权,以在一具更高优先权的资源先取得存取权前,完成计数412所指定的全部快取线的预取动作。
微处理器100也包含一耦接至控制逻辑电路144的当前处理器级(currentprocessor level,CPL缓存器112,其储存了微处理器100的CPL。CPL指定了微处理器100的一当前特权级(current privilege level)。CPL通常被操作系统用来作为一种保护系统的工具。例如,特权级不足的程序可能无法执行某些特定指令,例如输入/输出指令。在一具体实施例中,CPL包含一范围由0到3的值,实际对应至Pentium III处理器的第0至第3环层级(ring level)。
微处理器100也包含一耦接至控制逻辑电路144的总线接口单元(businterface unit)172,其将微处理器100耦接至一处理器总线174,微处理器乃借以从系统内存提取数据。在本说明书中,系统内存是指微处理器100的高速缓存154外的内存,像是系统的DRAM或视频页框缓冲器。尤其,总线接口单元172从系统内存预取了一重复预取指令400所指定的多条快取线。
微处理器100也包含一耦接至总线接口单元172的响应缓冲器(RB)166。响应缓冲器166通过总线接口单元172接收从系统内存提取的数据。尤其,响应缓冲器166从系统内存接收由重复预取指令400所指定预取的快取线。储存于响应缓冲器166的预取快取线被送至高速缓存154以存于其中。在一具体实施例中,除了重复预取指令400,响应缓冲器166也由从处理器总线174提取数据的其它指令所共享。因此,重复预取指令400与其它可能具更高优先权的指令竟逐响应缓冲器166资源的使用权。在一具体实施例中,有八个响应缓冲器166。
微处理器100也包含一耦接至控制逻辑电路144的自由响应缓冲器(freeRB)缓存器168。每次有一响应缓冲器166被配置或释出,控制逻辑电路144即以自由响应缓冲器166的数量更新自由RB缓存器168的值。
微处理器100也包含一响应缓冲器门槛(RB threshold)缓存器182,其储存下文会提及的一门槛值。在一具体实施例中,该门槛值是预定的。在另一具体实施例中,该门槛值则可由系统程序员以程控。在又一具体实施例中,该门槛值则可由微处理器100的一外在输入端加以控制。
微处理器100也包含一比较器(comparator)178,耦接至自由RB缓存器168及RB门槛缓存器182。比较器178将门槛值182与自由响应缓冲器166的数量做比较,并响应地产生一结果信号192。在一具体实施例中,若自由响应缓冲器166的数量比门槛值182还大,则比较器178产生一真值的信号192。否则,比较器178产生一假值的信号192。结果信号192接着被送至控制逻辑电路144。
现请参阅图5,其为依本发明解说图1的微处理器100如何执行图4的重复预取指令400的运作流程图。在执行重复预取指令400之前,另一个指令加载图1ECX缓存器106中的计数值。流程开始于方块502。
于方块502中,图1的指令译码器102侦测出图4的REP前置码字节402,其后则为图4的PREFETCH运算码404。也就是,指令译码器102译码了图4的重复预取指令400流程则自方块502进行到方块504。
于方块504中,图1的地址产生器114依据图4的Mod R/M字节406与地址操作数408,产生重复预取指令400的图1的有效地址108。流程则自方块504进行到方块506。
于方块506中,控制逻辑电路144将ECX缓存器106中的计数值复制至RPC缓存器124,并将有效地址108复制至图1的RPA缓存器122。ECX缓存器106中的计数值由重复预取指令400前的一指令加载。流程则自方块506进行到方块508。
于方块508中,控制逻辑电路144设定图1RPV缓存器142的RPV位184的值为真,以向图1的仲裁器148指明,一有效的重复预取指令400已准备好取得图1高速缓存154的存取权,以执行快取线的预取动作。流程则自方块508进行到判断方块(decision block)512。
于方块512中,仲裁器148确定RPV位184的值是否被设定为真。若是,流程则进行至判断方块514。否则,流程即结束。
于判断方块514中,仲裁器148决定了重复预取指令400是否赢得了对图1的高速缓存154、标志数组152及/或TLB I56存取权的仲裁。若否,流程进行至方块516。否则,流程进行至方块518。
于方块516中,控制逻辑电路144将重复预取指令400的状态存入图1的重新执行缓冲器158,以使得重复预取指令400未来一旦赢得存取权时,能继续执行。流程从方块516返回至判断方块512,以尝试继续进行重复预取指令400。在流程返回至判断方块512后,若一重复预取指令于方块514中赢得了存取权的仲裁,则该重复预取指令400即从重新执行缓冲器回复原来状态,以便于该重复预取指令400可继续执行。
于方块518中,RPA 186被送至TLB 156,以便在TLB 156中查询RPA186,产生图1的TLB命中信号164。流程则自方块518进行到判断方块522。
于判断方块522中,控制逻辑电路144确定TLB命中信号164的值是否为真。若否,则流程进行至方块524。否则,流程进行至方块526。
于方块524中,控制逻辑电路144清除RPV缓存器142的RPV位184,以显示重复预取指令400不再有效,即重复预取指令400不再要求存取图1的高速缓存154、标志数组152及/或TLB 156。本发明的优点是,若未命中TLB 156,则重复预取指令400即停止预取快取线,因为将需要执行一页码表格扫描。通过不增加处理器总线174额外的流量,而可执行完成重复预取指令400所必须的页码表格扫描,如此潜在地增进了微处理器100及/或系统的效率。流程即结束于方块524。
于方块526中,RPA 186被送至标志数组152,以便在标志数组152中查询RPA186,而产生图1的快取命中信号162。流程则自方块526进行到判断方块528。
于方块528中,控制逻辑电路144确定快取命中信号162的值是否为真。若是,则流程进行至方块532。否则,流程进行至判断方块536。
于方块532中,发生一快取命中。结果是,由RPA186指定的快取线即不需被预取,因为其已存在于高速缓存154。因此,控制逻辑电路144递增RPA 186及递减RPC 188,具有不执行不必要的快取线预取动作的好处,此种预取动作会造成处理器总线174上非必要的流量,而借以潜在地增加微处理器100及/或系统的效率。流程则自方块532进行到判断方块534。
于判断方块534中,控制逻辑电路144判断RPC 188的值是否为0,以确定重复预取指令400所指定的全部快取线是否皆已被预取。若否,流程返回至判断方块512以预取另一快取线。否则,流程结束。
于判断方块536中,控制逻辑电路144判断由图1比较器178产生的图1结果信号192,是否指示出图1自由响应缓冲器缓存器168的值大于图1门槛缓存器182所存的值。若否,流程进行至方块516。否则,流程进行至方块538。为了预取一快取线,控制逻辑电路144必须配置某一响应缓冲器166,这可能导致后续一具高优先权的指令无法配置其急需的响应缓冲器166。本发明的优点是,通过在自由响应缓冲器166不足时即不预取快取线,可潜在地增加微处理器100的效率。
于方块538中,重复预取指令400要预取下一快取线的所有条件皆已符合。因此,控制逻辑电路144配置一响应缓冲器166,并指示图1的总线接口单元172从系统内存提取RPA 186所指定的快取线至所配置的响应缓冲器166。当总线接口单元172将该快取线提取至响应缓冲器166时,该快取线即依据图4Mod R/M字节406所指定的位置指示而被写入高速缓存154。流程则自方块538进行至方块532,以递增RPA 186及递减RPC 188,若有需要且所有条件皆符合,则预取下一条快取线。
现请参阅图6,其为依本发明进一步解说图1的微处理器100如何执行图4的重复预取指令400的运作流程图。流程开始于方块602。
于方块602中,图1的控制逻辑电路144侦测出存于图1CPL缓存器112的CPL产生变化。CPL的变化可能是异步地产生,诸如由于微处理器的中断或异常。流程自方块602进行到判断方块604。
于方块604中,控制逻辑电路144清除图1的RPV位184,如此即能有效地中止重复预取指令400,因为下次流程再进行至图5的判断方块512时,重复预取指令400将被停止。在一具体实施例中,控制逻辑电路144只有在方块602中所侦测的CPL的变化,是从低优先权至高优先权的情况下,才清除RPV位184。有利地本发明通过在一具高优先权的工作或程控了微处理器100的情形下,中止重复预取指令的执行,而得以潜在地增进微处理器100的效率。流程则结束于方块604。
从前述可看出,本发明有利地提供一种重复预取指令,处理器本身可用一有效率的方式,借以控制大方块数据的预取动作,而不用靠程序员手动地加入单一快取线的预取指令,后者是受制于例如可能存在有不同的核心/总线脉冲比所造成的无效率。
虽然本发明及其目的、特征与优点已详细叙述了,其它具体实施例仍涵盖在本发明的范围内。例如,本发明可适用于具有不同指令集与快取层级架构的微处理器中。
虽然本发明已以较佳实施例公开如上,然其并非用以限定本发明,任何本领域普通技术人员,在不脱离本发明的精神和范围内,当可作等效变化与修改,因此本发明的保护范围以权利要求为准。
Claims (23)
1.一种具有预取指令的微处理器,该预取指令指定一组快取线,以将其从一系统内存预取至该微处理器的一高速缓存中,其特征在于,该微处理器包含:
一预取计数缓存器,以储存所余的待预取快取线的一计数;
一通用缓存器,耦接至该预取计数缓存器,用以储存该计数的一初始值,该初始值由先于该预取指令执行的一指令加载于该通用缓存器中;
一控制逻辑电路,耦接至该预取计数缓存器,用以将该初始值从通用缓存器复制至预取计数缓存器,以响应对该预取指令进行译码的动作;
一预取地址缓存器,耦接至该控制逻辑电路,用以储存该组快取线中所要预取的下一条快取线地址;
一比较器,耦接至该控制逻辑电路,用以在存取该组快取线之前,判断微处理器中自由响应缓冲器的数量是否大于一门槛值;
一仲裁器,耦接至该控制逻辑电路,用以决定在有其它要求者的情形下,该预取指令是否被允许存取该高速缓存;
一重新执行缓冲器,耦接至该控制逻辑电路,在该仲裁器不允许该预取指令存取该高速缓存的情况下,用以储存关联于该预取指令的状态;
其中,所述的控制逻辑电路是在预取该组快取线前,将该计数的该初始值从通用缓存器复制至预取计数缓存器。
2.如权利要求1所述的微处理器,其特征在于所述的控制逻辑电路在预取该组快取线的每一条后,即更新预取计数缓存器中的该计数。
3.如权利要求1所述的微处理器,其特征在于所述的预取指令包含一预取运算码,该预取运算码前是有一重复字符串前置码。
4.如权利要求1所述的微处理器,其特征在于,在进行寻址时若该组快取线其中一快取线产生一转换参照缓冲器未命中,则该控制逻辑电路中止预取该组快取线。
5.如权利要求1所述的微处理器,其特征在于,若微处理器的一当前特权级改变时,则该控制逻辑电路中止预取该组快取线。
6.如权利要求1所述的微处理器,其特征在于,若该组快取线的其中一快取线命中该高速缓存,则控制逻辑电路不预取该快取线。
7.一种具有预取指令的微处理器,用于具一系统内存的系统中,其特征在于,该微处理器包含:
一指令译码器,用以译码一预取指令,该预取指令指定了从该系统内存所要预取快取线的一计数及该快取线在系统内存中的一地址;
一地址缓存器,耦接至该指令译码器,用以储存该预取指令所指定的该地址;
一计数缓存器,耦接至指令译码器,用以储存指定于该预取指令的该计数;以及
一控制逻辑电路,耦接至该地址缓存器,组态为控制微处理器从该系统内存预取指定于该地址缓存器与该计数缓存器中的该快取线至微处理器的一高速缓存中。
8.如权利要求7所述的微处理器,其特征在于,它还包括:
一递增器,耦接至该地址缓存器,用以递增存于该地址缓存器的该地址,以响应预取每一该快取线的动作。
9.如权利要求8所述的微处理器,其特征在于所述的递增器将存于地址缓存器的该地址,递增该快取线其中之一的大小。
10.如权利要求7所述的微处理器,其特征在于,它还包括:
一递减器,耦接至该计数缓存器,用以递减该计数,以响应预取每一该快取线的动作。
11.如权利要求10所述的微处理器,其特征在于所述的控制逻辑电路持续预取该快取线,直至存于计数缓存器的该计数被该递减器递减至零为止。
12.如权利要求7所述的微处理器,其特征在于,它还包括:
一地址产生器,耦接至该地址缓存器,用以依据该预取指令所指定的操作数,产生存于地址缓存器的该地址。
13.如权利要求7所述的微处理器,其特征在于所述的控制逻辑电路以一背景模式执行预取该快取线的动作,而不会使当前非预取指令的执行受到影响。
14.如权利要求7所述的微处理器,其特征在于,它还包括:
一重新执行缓冲器,耦接至该控制逻辑电路,用来储存在一预定条件下该预取指令的一状态,借以在未来该预定条件终止后,使该预取指令能恢复执行。
15.如权利要求7所述的微处理器,其特征在于,它还包括:
一转换参照缓冲器,耦接为从该地址缓存器接受该地址,用以储存页码表信息,其中若该转换参照缓冲器指出存于该地址缓存器中的该地址未命中于该转换参照缓冲器,则控制逻辑电路即停止预取该快取线。
16.如权利要求7所述的微处理器,其特征在于,若微处理器改变其当前特权级,则控制逻辑电路停止预取该快取线。
17.如权利要求7所述的微处理器,其特征在于,若该地址命中该高速缓存,则控制逻辑电路递减存于该计数缓存器的该计数,而不需预取由存于地址缓存器的该地址所指定的该快取线其中之一。
18.一种微处理器预取指令至其高速缓存的方法,其特征在于,该方法包含:
(a)侦测一重复预取指令,该重复预取指令是指定快取线的一计数,以从一系统内存地址预取该快取线;
(b)将该计数从微处理器的一通用缓存器复制至一预取计数缓存器;
(c)储存该地址于一预取地址缓存器中;
(d)预取该预取地址缓存器所指定的一快取线至该高速缓存;
(e)递减该预取计数缓存器中的计数;
(f)递增该预取地址缓存器中的地址;以及
(g)重复步骤(d)、(e)及(f),直到该预取计数缓存器的值为零。
19.如权利要求18所述的方法,其特征在于,它还包括:
若当前处理器级缓存器中的当前特权级改变,则终止步骤(d)至(g)的执行。
20.如权利要求18所述的方法,其特征在于,它还包括:
在进行寻址时若该地址未命中转换参照缓冲器,则终止步骤(d)至(g)的执行。
21.如权利要求18所述的方法,其特征在于,它还包括:
若微处理器的自由响应缓冲器的一数量小于储存在微处理器的一门槛缓存器的一门槛值,则暂停该预取动作,直至该自由响应缓冲器的数量大于该门槛值。
22.如权利要求18所述的方法,其特征在于,它还包括:
在进行寻址时若该地址命中该高速缓存,则略过步骤(d)。
23.如权利要求18所述的方法,其特征在于,它还包括:
若该预取指令具有最低的优先权,则暂停该预取动作,直至具较高优先权的资源未再要求该高速缓存的存取权。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/119,435 US6832296B2 (en) | 2002-04-09 | 2002-04-09 | Microprocessor with repeat prefetch instruction |
US10/119,435 | 2002-04-09 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100836620A Division CN100359464C (zh) | 2002-04-09 | 2002-07-05 | 具有预取指令的微处理器及预取至其高速缓存的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1410893A CN1410893A (zh) | 2003-04-16 |
CN1269042C true CN1269042C (zh) | 2006-08-09 |
Family
ID=22384402
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021405018A Expired - Lifetime CN1269042C (zh) | 2002-04-09 | 2002-07-05 | 具有预取指令的微处理器及预取至其高速缓存的方法 |
CNB2005100836620A Expired - Lifetime CN100359464C (zh) | 2002-04-09 | 2002-07-05 | 具有预取指令的微处理器及预取至其高速缓存的方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100836620A Expired - Lifetime CN100359464C (zh) | 2002-04-09 | 2002-07-05 | 具有预取指令的微处理器及预取至其高速缓存的方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US6832296B2 (zh) |
EP (1) | EP1353267B1 (zh) |
CN (2) | CN1269042C (zh) |
TW (1) | TW589571B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819608B (zh) * | 2010-01-27 | 2012-09-05 | 龙芯中科技术有限公司 | 一种微处理器指令级随机验证中加速取指的装置和方法 |
Families Citing this family (84)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7089371B2 (en) | 2002-02-12 | 2006-08-08 | Ip-First, Llc | Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory |
US7080210B2 (en) | 2002-02-12 | 2006-07-18 | Ip-First, Llc | Microprocessor apparatus and method for exclusive prefetch of a cache line from memory |
US7080211B2 (en) | 2002-02-12 | 2006-07-18 | Ip-First, Llc | Microprocessor apparatus and method for prefetch, allocation, and initialization of a cache line from memory |
US7089368B2 (en) * | 2002-02-12 | 2006-08-08 | Ip-First, Llc | Microprocessor apparatus and method for exclusively prefetching a block of cache lines from memory |
US7299129B2 (en) | 2002-04-02 | 2007-11-20 | Garmin Ltd. | Portable navigation device with releasable antenna |
US6795770B1 (en) * | 2002-04-02 | 2004-09-21 | Garmin Ltd. | Portable navigation device with instant on configuration on navigational display |
US7111125B2 (en) | 2002-04-02 | 2006-09-19 | Ip-First, Llc | Apparatus and method for renaming a data block within a cache |
US6832296B2 (en) * | 2002-04-09 | 2004-12-14 | Ip-First, Llc | Microprocessor with repeat prefetch instruction |
TW569236B (en) * | 2002-10-03 | 2004-01-01 | Via Tech Inc | Multiple-grant controller with parallel arbitration mechanism and related method |
DE10256586A1 (de) * | 2002-12-04 | 2004-06-17 | Philips Intellectual Property & Standards Gmbh | Datenverarbeitungseinrichtung mit Mikroprozessor und mit zusätzlicher Recheneinheit sowie zugeordnetes Verfahren |
US7188215B2 (en) | 2003-06-19 | 2007-03-06 | Ip-First, Llc | Apparatus and method for renaming a cache line |
CN100489813C (zh) * | 2003-04-21 | 2009-05-20 | 智慧第一公司 | 可选择性撤回预取的方法 |
US7143267B2 (en) * | 2003-04-28 | 2006-11-28 | International Business Machines Corporation | Partitioning prefetch registers to prevent at least in part inconsistent prefetch information from being stored in a prefetch register of a multithreading processor |
US6871246B2 (en) * | 2003-05-07 | 2005-03-22 | Freescale Semiconductor, Inc. | Prefetch control in a data processing system |
US7139878B2 (en) * | 2003-06-20 | 2006-11-21 | Freescale Semiconductor, Inc. | Method and apparatus for dynamic prefetch buffer configuration and replacement |
US7200719B2 (en) * | 2003-07-31 | 2007-04-03 | Freescale Semiconductor, Inc. | Prefetch control in a data processing system |
US7076611B2 (en) * | 2003-08-01 | 2006-07-11 | Microsoft Corporation | System and method for managing objects stored in a cache |
TWI227853B (en) * | 2003-08-29 | 2005-02-11 | Rdc Semiconductor Co Ltd | Data accessing method and system for processing unit |
KR101496392B1 (ko) * | 2003-09-11 | 2015-02-27 | 테라노스, 인코포레이티드 | 피분석물의 모니터링 및 약물 전달을 위한 의료 기기 |
US7937691B2 (en) | 2003-09-30 | 2011-05-03 | International Business Machines Corporation | Method and apparatus for counting execution of specific instructions and accesses to specific data locations |
US7395527B2 (en) | 2003-09-30 | 2008-07-01 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses |
US7373637B2 (en) | 2003-09-30 | 2008-05-13 | International Business Machines Corporation | Method and apparatus for counting instruction and memory location ranges |
US8381037B2 (en) | 2003-10-09 | 2013-02-19 | International Business Machines Corporation | Method and system for autonomic execution path selection in an application |
US7421681B2 (en) | 2003-10-09 | 2008-09-02 | International Business Machines Corporation | Method and system for autonomic monitoring of semaphore operation in an application |
US7496908B2 (en) | 2004-01-14 | 2009-02-24 | International Business Machines Corporation | Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information |
US7415705B2 (en) | 2004-01-14 | 2008-08-19 | International Business Machines Corporation | Autonomic method and apparatus for hardware assist for patching code |
US7895382B2 (en) | 2004-01-14 | 2011-02-22 | International Business Machines Corporation | Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs |
US7392370B2 (en) * | 2004-01-14 | 2008-06-24 | International Business Machines Corporation | Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics |
US7526757B2 (en) | 2004-01-14 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program |
CN100428193C (zh) * | 2004-02-07 | 2008-10-22 | 华为技术有限公司 | 一种在数据存储系统中预取数据的方法 |
US7421684B2 (en) | 2004-03-22 | 2008-09-02 | International Business Machines Corporation | Method and apparatus for autonomic test case feedback using hardware assistance for data coverage |
US8135915B2 (en) * | 2004-03-22 | 2012-03-13 | International Business Machines Corporation | Method and apparatus for hardware assistance for prefetching a pointer to a data structure identified by a prefetch indicator |
US7526616B2 (en) * | 2004-03-22 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for prefetching data from a data structure |
JP2006031383A (ja) * | 2004-07-15 | 2006-02-02 | Hitachi Global Storage Technologies Netherlands Bv | リアルタイム性能向上方式を実装したディスク装置 |
JP4520790B2 (ja) * | 2004-07-30 | 2010-08-11 | 富士通株式会社 | 情報処理装置およびソフトウェアプリフェッチ制御方法 |
US20060179277A1 (en) * | 2005-02-04 | 2006-08-10 | Flachs Brian K | System and method for instruction line buffer holding a branch target buffer |
US8161245B2 (en) * | 2005-02-09 | 2012-04-17 | International Business Machines Corporation | Method and apparatus for performing data prefetch in a multiprocessor system |
US7506105B2 (en) | 2005-05-02 | 2009-03-17 | Freescale Semiconductor, Inc. | Prefetching using hashed program counter |
US20060248279A1 (en) * | 2005-05-02 | 2006-11-02 | Al-Sukhni Hassan F | Prefetching across a page boundary |
AU2006244617B2 (en) | 2005-05-09 | 2013-04-18 | Labrador Diagnostics Llc | Point-of-care fluidic systems and uses thereof |
US20070101100A1 (en) * | 2005-10-28 | 2007-05-03 | Freescale Semiconductor, Inc. | System and method for decoupled precomputation prefetching |
US11287421B2 (en) | 2006-03-24 | 2022-03-29 | Labrador Diagnostics Llc | Systems and methods of sample processing and fluid control in a fluidic system |
US8741230B2 (en) | 2006-03-24 | 2014-06-03 | Theranos, Inc. | Systems and methods of sample processing and fluid control in a fluidic system |
US8007999B2 (en) | 2006-05-10 | 2011-08-30 | Theranos, Inc. | Real-time detection of influenza virus |
US20080113391A1 (en) | 2006-11-14 | 2008-05-15 | Ian Gibbons | Detection and quantification of analytes in bodily fluids |
JP2008262390A (ja) * | 2007-04-12 | 2008-10-30 | Toshiba Corp | プログラム |
US8158430B1 (en) | 2007-08-06 | 2012-04-17 | Theranos, Inc. | Systems and methods of fluidic sample processing |
GB0722707D0 (en) * | 2007-11-19 | 2007-12-27 | St Microelectronics Res & Dev | Cache memory |
US8549255B2 (en) * | 2008-02-15 | 2013-10-01 | International Business Machines Corporation | Microprocessor, method and computer program product for direct page prefetch in millicode capable computer system |
US8041896B2 (en) * | 2008-04-30 | 2011-10-18 | Hewlett-Packard Development Company, L.P. | Virtualization platform with dedicated cache access |
US8635437B2 (en) * | 2009-02-12 | 2014-01-21 | Via Technologies, Inc. | Pipelined microprocessor with fast conditional branch instructions based on static exception state |
US8521996B2 (en) * | 2009-02-12 | 2013-08-27 | Via Technologies, Inc. | Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution |
US8161246B2 (en) * | 2009-03-30 | 2012-04-17 | Via Technologies, Inc. | Prefetching of next physically sequential cache line after cache line that includes loaded page table entry |
US8533437B2 (en) * | 2009-06-01 | 2013-09-10 | Via Technologies, Inc. | Guaranteed prefetch instruction |
CA2672337C (en) | 2009-07-15 | 2017-01-03 | Ibm Canada Limited - Ibm Canada Limitee | Compiler instrumentation infrastructure to facilitate multiple pass and multiple purpose dynamic analysis |
US8364902B2 (en) * | 2009-08-07 | 2013-01-29 | Via Technologies, Inc. | Microprocessor with repeat prefetch indirect instruction |
CN101882063B (zh) * | 2009-08-07 | 2014-10-29 | 威盛电子股份有限公司 | 微处理器以及预取数据至微处理器的方法 |
NZ624935A (en) | 2009-10-19 | 2016-01-29 | Theranos Inc | Integrated health data capture and analysis system |
US8595471B2 (en) * | 2010-01-22 | 2013-11-26 | Via Technologies, Inc. | Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register |
US9418011B2 (en) * | 2010-06-23 | 2016-08-16 | Intel Corporation | Region based technique for accurately predicting memory accesses |
US9280344B2 (en) * | 2012-09-27 | 2016-03-08 | Texas Instruments Incorporated | Repeated execution of instruction with field indicating trigger event, additional instruction, or trigger signal destination |
US10203958B2 (en) * | 2013-07-15 | 2019-02-12 | Texas Instruments Incorporated | Streaming engine with stream metadata saving for context switching |
US9606803B2 (en) * | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
US10078551B2 (en) | 2013-07-15 | 2018-09-18 | Texas Instruments Incorporated | Streaming engine with error detection, correction and restart |
US10073696B2 (en) * | 2013-07-15 | 2018-09-11 | Texas Instruments Incorporated | Streaming engine with cache-like stream data storage and lifetime tracking |
US10061675B2 (en) | 2013-07-15 | 2018-08-28 | Texas Instruments Incorporated | Streaming engine with deferred exception reporting |
US9542332B2 (en) * | 2014-11-13 | 2017-01-10 | Via Alliance Semiconductor Co., Ltd. | System and method for performing hardware prefetch tablewalks having lowest tablewalk priority |
US9792215B2 (en) * | 2015-03-28 | 2017-10-17 | Qualcomm Incorporated | Command-driven translation pre-fetch for memory management units |
US9535696B1 (en) * | 2016-01-04 | 2017-01-03 | International Business Machines Corporation | Instruction to cancel outstanding cache prefetches |
US10678545B2 (en) | 2016-07-07 | 2020-06-09 | Texas Instruments Incorporated | Data processing apparatus having streaming engine with read and read/advance operand coding |
US20180011709A1 (en) | 2016-07-08 | 2018-01-11 | Texas Instruments Incorporated | Stream reference register with double vector and dual single vector operating modes |
US10339057B2 (en) | 2016-12-20 | 2019-07-02 | Texas Instruments Incorporated | Streaming engine with flexible streaming engine template supporting differing number of nested loops with corresponding loop counts and loop offsets |
US9965278B1 (en) | 2016-12-20 | 2018-05-08 | Texas Instruments Incorporated | Streaming engine with compressed encoding for loop circular buffer sizes |
US10318433B2 (en) * | 2016-12-20 | 2019-06-11 | Texas Instruments Incorporated | Streaming engine with multi dimensional circular addressing selectable at each dimension |
US10402336B2 (en) * | 2017-03-31 | 2019-09-03 | Intel Corporation | System, apparatus and method for overriding of non-locality-based instruction handling |
US10409727B2 (en) * | 2017-03-31 | 2019-09-10 | Intel Corporation | System, apparatus and method for selective enabling of locality-based instruction handling |
US10761850B2 (en) * | 2017-12-28 | 2020-09-01 | Texas Instruments Incorporated | Look up table with data element promotion |
CN111124955B (zh) * | 2018-10-31 | 2023-09-08 | 珠海格力电器股份有限公司 | 一种高速缓存控制方法及设备和计算机存储介质 |
CN109598427B (zh) * | 2018-11-23 | 2022-03-01 | 泰康保险集团股份有限公司 | 机器人的管理方法、装置及电子设备 |
CN110442382B (zh) * | 2019-07-31 | 2021-06-15 | 西安芯海微电子科技有限公司 | 预取缓存控制方法、装置、芯片以及计算机可读存储介质 |
US20210342134A1 (en) * | 2020-04-29 | 2021-11-04 | Intel Corporation | Code prefetch instruction |
CN111399913B (zh) * | 2020-06-05 | 2020-09-01 | 浙江大学 | 一种基于预取的处理器加速取指方法 |
US11567776B2 (en) * | 2020-11-03 | 2023-01-31 | Centaur Technology, Inc. | Branch density detection for prefetcher |
US20220197821A1 (en) * | 2020-12-23 | 2022-06-23 | Intel Corporation | Device, system and method for selectively dropping software prefetch instructions |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4926323A (en) * | 1988-03-03 | 1990-05-15 | Advanced Micro Devices, Inc. | Streamlined instruction processor |
US5835967A (en) * | 1993-10-18 | 1998-11-10 | Cyrix Corporation | Adjusting prefetch size based on source of prefetch address |
US6173410B1 (en) * | 1996-08-21 | 2001-01-09 | Texas Instruments Incorporated | Microprocessor circuits, systems and methods for conditioning information prefetching based on resource burden |
US6119222A (en) * | 1996-12-23 | 2000-09-12 | Texas Instruments Incorporated | Combined branch prediction and cache prefetch in a microprocessor |
US6138213A (en) * | 1997-06-27 | 2000-10-24 | Advanced Micro Devices, Inc. | Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line |
US6119203A (en) * | 1998-08-03 | 2000-09-12 | Motorola, Inc. | Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system |
JP2001273137A (ja) * | 2000-03-28 | 2001-10-05 | Toshiba Corp | マイクロプロセッサ |
EP1182559B1 (en) * | 2000-08-21 | 2009-01-21 | Texas Instruments Incorporated | Improved microprocessor |
US6584549B2 (en) * | 2000-12-29 | 2003-06-24 | Intel Corporation | System and method for prefetching data into a cache based on miss distance |
US6832280B2 (en) * | 2001-08-10 | 2004-12-14 | Freescale Semiconductor, Inc. | Data processing system having an adaptive priority controller |
JP4162184B2 (ja) * | 2001-11-14 | 2008-10-08 | 株式会社日立製作所 | データベース管理システムの実行情報を取得する手段を有する記憶装置 |
US6832296B2 (en) * | 2002-04-09 | 2004-12-14 | Ip-First, Llc | Microprocessor with repeat prefetch instruction |
-
2002
- 2002-04-09 US US10/119,435 patent/US6832296B2/en not_active Expired - Lifetime
- 2002-06-11 TW TW091112588A patent/TW589571B/zh not_active IP Right Cessation
- 2002-07-05 CN CNB021405018A patent/CN1269042C/zh not_active Expired - Lifetime
- 2002-07-05 CN CNB2005100836620A patent/CN100359464C/zh not_active Expired - Lifetime
-
2003
- 2003-03-19 EP EP03251721.1A patent/EP1353267B1/en not_active Expired - Lifetime
-
2004
- 2004-11-03 US US10/980,344 patent/US7234025B2/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819608B (zh) * | 2010-01-27 | 2012-09-05 | 龙芯中科技术有限公司 | 一种微处理器指令级随机验证中加速取指的装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100359464C (zh) | 2008-01-02 |
US7234025B2 (en) | 2007-06-19 |
US6832296B2 (en) | 2004-12-14 |
CN1410893A (zh) | 2003-04-16 |
US20030191900A1 (en) | 2003-10-09 |
EP1353267B1 (en) | 2014-03-12 |
CN1716188A (zh) | 2006-01-04 |
EP1353267A2 (en) | 2003-10-15 |
TW589571B (en) | 2004-06-01 |
US20050080997A1 (en) | 2005-04-14 |
EP1353267A3 (en) | 2005-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1269042C (zh) | 具有预取指令的微处理器及预取至其高速缓存的方法 | |
EP0855644B1 (en) | Data prefetch apparatus and method | |
US6401192B1 (en) | Apparatus for software initiated prefetch and method therefor | |
CN1147794C (zh) | 具有静态转移预测支持的去耦取指令-执行引擎 | |
US6216219B1 (en) | Microprocessor circuits, systems, and methods implementing a load target buffer with entries relating to prefetch desirability | |
US6151662A (en) | Data transaction typing for improved caching and prefetching characteristics | |
US6978350B2 (en) | Methods and apparatus for improving throughput of cache-based embedded processors | |
US5446850A (en) | Cross-cache-line compounding algorithm for scism processors | |
JP3218317B2 (ja) | 集積キャッシュユニットおよびその構成方法 | |
US7774531B1 (en) | Allocating processor resources during speculative execution using a temporal ordering policy | |
EP1886218B1 (en) | Handling cache miss in an instruction crossing a cache line boundary | |
US6487639B1 (en) | Data cache miss lookaside buffer and method thereof | |
CN1266589C (zh) | 多重高速缓冲存储器线写回和作废技术 | |
WO2012076391A1 (en) | Vector gather buffer for multiple address vector loads | |
CN1384935A (zh) | 紧密耦合式多处理器的快速多线程执行 | |
CN101154192A (zh) | 管理计算机存储器高速缓存中的访问冲突的方法和装置 | |
CN101971140A (zh) | 用于实施锁定操作的系统及方法 | |
CN1196997C (zh) | 不按序执行指令的装置和检测不按序指令的方法 | |
CN112579175B (zh) | 分支预测方法、分支预测装置和处理器核 | |
Tse et al. | CPU cache prefetching: Timing evaluation of hardware implementations | |
US20030088636A1 (en) | Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system | |
US6823430B2 (en) | Directoryless L0 cache for stall reduction | |
US9342303B2 (en) | Modified execution using context sensitive auxiliary code | |
Bardizbanyan et al. | Improving data access efficiency by using context-aware loads and stores | |
Williams | An illustration of the benefits of the MIPS R12000 microprocessor and OCTANE system architecture |
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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20060809 |
|
CX01 | Expiry of patent term |