CN100359464C - 具有预取指令的微处理器及预取至其高速缓存的方法 - Google Patents

具有预取指令的微处理器及预取至其高速缓存的方法 Download PDF

Info

Publication number
CN100359464C
CN100359464C CNB2005100836620A CN200510083662A CN100359464C CN 100359464 C CN100359464 C CN 100359464C CN B2005100836620 A CNB2005100836620 A CN B2005100836620A CN 200510083662 A CN200510083662 A CN 200510083662A CN 100359464 C CN100359464 C CN 100359464C
Authority
CN
China
Prior art keywords
instruction
buffer
microprocessor
prefetched
prefetch
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
CNB2005100836620A
Other languages
English (en)
Other versions
CN1716188A (zh
Inventor
罗德尼·虎克
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.)
INTELLIGENCE FIRST CO
Original Assignee
INTELLIGENCE FIRST CO
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 INTELLIGENCE FIRST CO filed Critical INTELLIGENCE FIRST CO
Publication of CN1716188A publication Critical patent/CN1716188A/zh
Application granted granted Critical
Publication of CN100359464C publication Critical patent/CN100359464C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及一种执行重复预取指令(REP PREFETCH)的微处理器及预取快取线至其高速缓存的方法。该重复预取指令预取多条快取线,其中快取线的数量可于指令中指定。该指令是由Pentium III PREFETCH运算码所指定,运算码前则有REP字符串指令前置码。程序员于ECX缓存器中知道所要预取快取线的计数值,类似于REP字符串指令的重复计数值。第一条快取线的有效地址,则以类似常见PREFETCH指令的方式来指定。若当前预取的快取线的地址未命中TLB,或者当前处理器级缓存器中的当前特权级改变,则停止REPPREFETCH指令的执行。此外,只有在自由响应缓冲器的数量大于一可程序化的门槛值时,才预取一快取线。该预取动作时在比其它需要存取高速缓存或TLB的动作还低的优先权下执行。

Description

具有预取指令的微处理器及预取至其高速缓存的方法
本申请是申请日为2002年7月5日、申请号为02140501.8、发明名称为的具有预取指令的微处理器及预取至其高速缓存的方法发明专利申请的分案申请。
技术领域
本发明涉及微处理器的预取指令(prefetch instruction)的领域,尤指一具有预取指令的微处理器及预取至其高速缓存的方法,该预取指令是可预取一特定数量的快取线(cache line)。
背景技术
现代的微处理器皆包含高速缓存。高速缓存储存了一部份存于计算机系统的其它内存的数据。当处理器执行一需参照数据的指令时,处理器首先检查该数据是否存于高速缓存中。若是,则既然数据已存在高速缓存中,该指令便可立即执行。否则,该指令必须等到数据从其它内存提取至高速缓存时,才能执行。数据的提取可能得花相当长的时间一一在某些情况下,所花时间是处理器执行指令所需的一个数量级以上。
许多在微处理器上执行的软件程序需要处理大量的连续数据。例如,这大量的连续数据可能介于一百到一百万个字节之间。此种程序的例子如多媒体相关的音频或视频程序,其处理大量的数据,像是视频数据或波形文件(Wave file)数据。一般大量的数据都存在外部的内存,诸如系统内存或视频页框缓冲器(video frame buffer)。为了让处理器能处理数据,必须将数据从外部内存提取至处理器。
若所需的一部分数据不在高速缓存中,则由于数据的提取及处理所需时间并不相同,便可能造成一种情形,即处理器已准备好执行另一个指令以处理数据,但却无法动作,而须坐等数据被提取至处理器。如此处理器的使用便缺乏效率,并可能导致如多媒体系统效能的降低。
在解决这项问题上,现代的微处理器已觉察到在很多时候,程序员会在实际处理数据的指令执行前,像是算术指令(arithmetic instruction),便已知道他需要这些数据。因此,现代的微处理器已将预取指令加入或包含在其指令集中,这些预取指令是在数据被需要前,即提取该数据的一快取线至处理器的高速缓存中。快取线是能在高速缓存与其它内存间移转的最小单位数据。此种具预取指令的微处理器的一例即英特尔(Intel)Pentium III处理器。Pentium III在其串流SIMD延伸(Streaming SIMD Extensions,SSE)指令集中,包含了PREFETCH指令。
在许多软件应用程序中,程序员知道他将要处理到大量的连续数据,即许多快取线。因此,程序员在其程序中加入预取指令,像是Pentium III的PREFETCH,以预取一快取线。程序员在实际要执行快取线数据的算术或逻辑运算的指令的多个指令前,加入预取指令。因此,程序可能有许多预取指令呈点状分布其间。所加入的这些预取指令使得程序代码以及所需执行的指令数都增加了。
再者,在常见的方法中,程序员不仅使预取指令呈点状分布于程序代码中,还需努力将其放至适当位置,使其执行能最佳化。也就是,程序员必须尝试去决定预取指令的执行时机,以使得数据在指令需要用到时,就已经在高速缓存中了。特别是,程序员在将预取指令放进程序代码时,要尝试使其不会相互干扰。即,在现有的处理器中,若一预取指令正在执行且一后续的预取指令随之出现,则其中一预取指令可能会被视为虚拟操作指令(no-opinstruction),只耗费脉冲而未实际执行预取。这样就无法完成程序员想做的,且很可能使效能变得较差。
程序员靠自己动手加入预取指令时,所面临的一项问题是,核心/总线脉冲比(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 purpose register),耦接至该预取计数缓存器,用以储存该计数的一初始值。该初始值由先于该预取指令执行的一指令加载该通用缓存器。该微处理器也包括一控制逻辑电路(controllogic),耦接至该预取计数缓存器,用以将该初始值从通用缓存器复制至预取计数缓存器,以响应译码该预取指令的动作。该微处理器还包括一预取地址缓存器,耦接至该控制逻辑电路,用以储存该组快取线中,所要预取的下一条快取线地址;一比较器,耦接至该控制逻辑电路,用以在存取该组快取线之前,判断微处理器中自由响应缓冲器的数量是否大于一门槛值;一仲裁器,耦接至该控制逻辑电路,用以决定在有其它要求者的情形下,该预取指令是否被允许存取该高速缓存;一重新执行缓冲器,耦接至该控制逻辑电路,在该仲裁器不允许该预取指令存取该高速缓存的情况下,用以储存关联于该预取指令的状态;其中,所述的控制逻辑电路是在预取该组快取线前,将该计数的该初始值从通用缓存器复制至预取计数缓存器。
另一方面,本发明的一项特征是,提供一种微处理器。该微处理器包括一指令译码器(instruction decoder),其译码一指令集中的指令。该指令集包含由一英特尔Pentium III处理器所定义的一多个指令的集合。该指令集也包括一重复预取指令。该重复预取指令包含一Pentium III PREFETCH指令运算码。一位在该运算码前的Pentium III REP字符串指令前置码(prefix)以及指定预取快取线数量的一计数。
另一方面,本发明的一项特征是,提供一种用于具一系统内存的系统中的微处理器。该微处理器包括一用以译码一预取指令的指令译码器,该预取指令指定了从系统内存所要预取快取线的一计数及该快取线在系统内存中的一地址。该微处理器也包括一地址缓存器(address register),耦接至该指令译码器,用以储存该预取指令所指定的地址。该微处理器也包括一计数缓存器,耦接至指令译码器,用以储存指定于该预取指令的该计数。该微处理器也包括一控制逻辑电路,耦接至该地址缓存器,用以控制微处理器从系统内存预取地址缓存器与计数缓存器中所指定的快取线至微处理器的一高速缓存中。
另一方面,本发明的一项特征是,提供一种微处理器预取指令或者快取线至其高速缓存的方法。该方法包括侦测一重复预取指令,该重复预取指令是指定一计数值的快取线,以从一系统内存地址进行预取,并将该计数值从微处理器的一通用缓存器复制至一预取计数缓存器,以及储存该地址于一预取地址缓存器中。该方法也包括预取该预取地址缓存器所指定的一快取线至该高速缓存,递减该预取计数缓存器中的计数,以及递增该预取地址缓存器中的地址。该方法也包括重复该预取递减及递增的步骤,直到预取计数缓存器的值为零。
本发明的一个优点是,其可向下兼容于现有的x86指令集架构。此因Pentium III在一REP前置码位于PREFETCH指令之前时,不会产生异常(exception)。因而,依据本发明,包含本发明的重复预取指令的软件程序,可在一支持重复预取指令的微处理器上执行得更有效率,且该程序也能在一Pentium III处理器上正确执行。
本发明的另一个优点是,通过再使用PREFETCH运算码与REP前置码组合起来,以虚拟地产生新的运算码,而保留x86的运算码空间。再一个优点则是,相较于常见的单一快取线预取指令,本发明潜在地缩短了软件程序代码,此因程序所需的预取指令更少了。还有一个优点是,本发明通过较常见方法更有效率地使用处理器总线,而潜在地增进系统的效能。再有一个优点则是,本发明由于减轻了可能存在不同的核心/总线脉冲比所带来的问题,而能较常见方法将数据更有效率地移入微处理器的高速缓存中,借以潜在地促进处理效能。
本发明提供了一种具有预取指令的微处理器,其特征在于,它包含:一指令译码器,用以译码一指令集中的指令,该指令集至少包含由一英特尔Pentium III处理器所定义的一多个指令的集合,该指令集还包含一重复预取指令,其中该重复预取指令包含:一Pentium III PREFETCH指令运算码;一位在该运算码前的Pentium III REP字符串指令前置码;以及一指定所要预取快取线的数量的计数;一缓存器档案,耦接至该指令译码器,该缓存器档案包含一ECX缓存器,其中该计数是储存于该ECX缓存器中;以及一重复预取计数缓存器,耦接至该指令译码器,其中该计数最初是从该ECX缓存器复制至该重复预取计数缓存器中。
本发明的其它特征与优点,与考察本说明书其余部分与附图后,将可更加明白。
附图说明
图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)中一位置。Pentium III PREFETCH指令是详述于IA-32 Intel Architecture SoftwareDeveloper’s Manual,Volume 2:Instruction Set Reference,2001的3-600至3-601页,通过参照可将此数据并入本说明书。
PREFETCH指令200包含一PREFETCH运算码202。PREFETCH运算码202具一默认值0x 0F18,以便将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-32 Intel Arehitecture Software Developer’s Manual,Volume 2:Instruction Set Reference,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-32 IntelArchitecture Soft()are Developer’s Manual,Volume 2:I()truction SetReference,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,而Mod R/M字节406则类似于图2的Mod R/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。表格扫描地址(tablen 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的当前处理器级(current processor leve1,CPL缓存器112,其储存了微处理器100的CPL。CPL指定了微处理器100的一当前特权级(current privilege leve1)。CPL通常被操作系统用来作为一种保护系统的工具。例如,特权级不足的程序可能无法执行某些特定指令,例如输入/输出指令。在一具体实施例中,CPL包含一范围由0到3的值,实际对应至Pentium III处理器的第0至第3环层级(ring leve)。
微处理器100也包含一耦接至控制逻辑电路144的总线接口单元(bu sinterface 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中查询RPA 186,产生图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中查询RPA 186,而产生图1的快取命中信号162。流程则自方块526进行到判断方块528。
于方块528中,控制逻辑电路144确定快取命中信号162的值是否为真。若是,则流程进行至方块532。否则,流程进行至判断方块536。
于方块532中,发生一快取命中。结果是,由RPA 186指定的快取线即不需被预取,因为其已存在于高速缓存154。因此,控制逻辑电路144递增RPA186及递减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时,该快取线即依据图4 Mod 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 (5)

1.一种具有预取指令的微处理器,其特征在于,它包含:
一指令译码器,用以译码一指令集中的指令,该指令集至少包含由一英特尔Pentium III处理器所定义的一多个指令的集合,该指令集还包含一重复预取指令,其中该重复预取指令包含:一Pentium III PREFETCH指令运算码;一位在该运算码前的Pentium III REP字符串指令前置码;以及一指定所要预取快取线的数量的计数;
一缓存器档案,耦接至该指令译码器,该缓存器档案包含一ECX缓存器,其中该计数是储存于该ECX缓存器中;以及
一重复预取计数缓存器,耦接至该指令译码器,其中该计数最初是从该ECX缓存器复制至该重复预取计数缓存器中。
2.如权利要求1所述的微处理器,其特征在于所述的计数是由执行该重复预取指令前的一条指令加载到该ECX缓存器中。
3.如权利要求1所述的微处理器,其特征在于所述的重复预取计数缓存器于该重复预取指令的执行期间,以可更新的方式储存该计数。
4.如权利要求1所述的微处理器,其特征在于所述的重复预取指令还包括:
一或多个地址操作数,用以指定该快取线的一有效地址。
5.如权利要求4所述的微处理器,其特征在于,它还包括:
一重复预取地址缓存器,耦接至该指令译码器,在该重复预取指令的执行期间,以可更新的方式储存该快取线的该有效地址。
CNB2005100836620A 2002-04-09 2002-07-05 具有预取指令的微处理器及预取至其高速缓存的方法 Expired - Lifetime CN100359464C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/119,435 2002-04-09
US10/119,435 US6832296B2 (en) 2002-04-09 2002-04-09 Microprocessor with repeat prefetch instruction

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB021405018A Division CN1269042C (zh) 2002-04-09 2002-07-05 具有预取指令的微处理器及预取至其高速缓存的方法

Publications (2)

Publication Number Publication Date
CN1716188A CN1716188A (zh) 2006-01-04
CN100359464C true CN100359464C (zh) 2008-01-02

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 Before (1)

Application Number Title Priority Date Filing Date
CNB021405018A Expired - Lifetime CN1269042C (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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI603264B (zh) * 2010-06-23 2017-10-21 英特爾股份有限公司 準確預測記憶體存取之以區域爲基礎的技術
CN111399913A (zh) * 2020-06-05 2020-07-10 浙江大学 一种基于预取的处理器加速取指方法

Families Citing this family (83)

* Cited by examiner, † Cited by third party
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
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
US7299129B2 (en) 2002-04-02 2007-11-20 Garmin Ltd. Portable navigation device with releasable antenna
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
CN1327353C (zh) * 2003-04-21 2007-07-18 智慧第一公司 可选择性撤回预取的微处理器装置
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
JP4603547B2 (ja) * 2003-09-11 2010-12-22 セラノス, インコーポレイテッド 検体の監視および薬物送達のための医療デバイス
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
US7373637B2 (en) 2003-09-30 2008-05-13 International Business Machines Corporation Method and apparatus for counting instruction and memory location ranges
US7395527B2 (en) 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US7421681B2 (en) 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US8381037B2 (en) 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection 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
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
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
CN100428193C (zh) * 2004-02-07 2008-10-22 华为技术有限公司 一种在数据存储系统中预取数据的方法
US7526616B2 (en) * 2004-03-22 2009-04-28 International Business Machines Corporation Method and apparatus for prefetching data from a data structure
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
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
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
US20060248279A1 (en) * 2005-05-02 2006-11-02 Al-Sukhni Hassan F Prefetching across a page boundary
US7506105B2 (en) 2005-05-02 2009-03-17 Freescale Semiconductor, Inc. Prefetching using hashed program counter
JP2008544214A (ja) 2005-05-09 2008-12-04 セラノス, インコーポレイテッド ポイントオブケア流体システムおよびその使用
US20070101100A1 (en) * 2005-10-28 2007-05-03 Freescale Semiconductor, Inc. System and method for decoupled precomputation prefetching
US8741230B2 (en) 2006-03-24 2014-06-03 Theranos, Inc. Systems and methods of sample processing and fluid control in a fluidic system
US11287421B2 (en) 2006-03-24 2022-03-29 Labrador Diagnostics Llc 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
US8521996B2 (en) * 2009-02-12 2013-08-27 Via Technologies, Inc. Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution
US8145890B2 (en) * 2009-02-12 2012-03-27 Via Technologies, Inc. Pipelined microprocessor with fast conditional branch instructions based on static microcode-implemented instruction state
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
CN101882063B (zh) * 2009-08-07 2014-10-29 威盛电子股份有限公司 微处理器以及预取数据至微处理器的方法
US8364902B2 (en) * 2009-08-07 2013-01-29 Via Technologies, Inc. Microprocessor with repeat prefetch indirect instruction
NZ599873A (en) 2009-10-19 2014-09-26 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
CN101819608B (zh) * 2010-01-27 2012-09-05 龙芯中科技术有限公司 一种微处理器指令级随机验证中加速取指的装置和方法
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
US10061675B2 (en) 2013-07-15 2018-08-28 Texas Instruments Incorporated Streaming engine with deferred exception reporting
US9606803B2 (en) 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
US10203958B2 (en) 2013-07-15 2019-02-12 Texas Instruments Incorporated Streaming engine with stream metadata saving for context switching
US10073696B2 (en) * 2013-07-15 2018-09-11 Texas Instruments Incorporated Streaming engine with cache-like stream data storage and lifetime tracking
US10078551B2 (en) 2013-07-15 2018-09-18 Texas Instruments Incorporated Streaming engine with error detection, correction and restart
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
US10318433B2 (en) * 2016-12-20 2019-06-11 Texas Instruments Incorporated Streaming engine with multi dimensional circular addressing selectable at each dimension
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
US10409727B2 (en) 2017-03-31 2019-09-10 Intel Corporation System, apparatus and method for selective enabling of locality-based instruction handling
US10402336B2 (en) * 2017-03-31 2019-09-03 Intel Corporation System, apparatus and method for overriding of non-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
US11567776B2 (en) * 2020-11-03 2023-01-31 Centaur Technology, Inc. Branch density detection for prefetcher
US12111772B2 (en) * 2020-12-23 2024-10-08 Intel Corporation Device, system and method for selectively dropping software prefetch instructions

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20010027510A1 (en) * 2000-03-28 2001-10-04 Kabushiki Kaisha Toshiba Mircoprocessor and cache controlling method

Family Cites Families (10)

* Cited by examiner, † Cited by third party
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
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20010027510A1 (en) * 2000-03-28 2001-10-04 Kabushiki Kaisha Toshiba Mircoprocessor and cache controlling method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Intel Architecture Software Developer’s Manual Volume 2: Instruction Set Reference. Intel,第2-1至2-4页,图2-1,第3-543至3-544页,第3-605至3-607页. 1999 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI603264B (zh) * 2010-06-23 2017-10-21 英特爾股份有限公司 準確預測記憶體存取之以區域爲基礎的技術
CN111399913A (zh) * 2020-06-05 2020-07-10 浙江大学 一种基于预取的处理器加速取指方法

Also Published As

Publication number Publication date
EP1353267A3 (en) 2005-11-02
TW589571B (en) 2004-06-01
CN1716188A (zh) 2006-01-04
EP1353267A2 (en) 2003-10-15
CN1269042C (zh) 2006-08-09
US20030191900A1 (en) 2003-10-09
EP1353267B1 (en) 2014-03-12
US20050080997A1 (en) 2005-04-14
US6832296B2 (en) 2004-12-14
CN1410893A (zh) 2003-04-16
US7234025B2 (en) 2007-06-19

Similar Documents

Publication Publication Date Title
CN100359464C (zh) 具有预取指令的微处理器及预取至其高速缓存的方法
EP0855644B1 (en) Data prefetch apparatus and method
US6216219B1 (en) Microprocessor circuits, systems, and methods implementing a load target buffer with entries relating to prefetch desirability
US6401192B1 (en) Apparatus for software initiated prefetch and method therefor
US5511175A (en) Method an apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
CN107003837B (zh) 用于推测性编译器优化的轻量级受限事务存储器
US6067616A (en) Branch prediction device with two levels of branch prediction cache
US7302527B2 (en) Systems and methods for executing load instructions that avoid order violations
EP0459232B1 (en) Partially decoded instruction cache and method therefor
US5446850A (en) Cross-cache-line compounding algorithm for scism processors
EP1886218B1 (en) Handling cache miss in an instruction crossing a cache line boundary
US20120290780A1 (en) Multithreaded Operation of A Microprocessor Cache
US5649137A (en) Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US7721073B2 (en) Conditional branch execution in a processor having a data mover engine that associates register addresses with memory addresses
US7721074B2 (en) Conditional branch execution in a processor having a read-tie instruction and a data mover engine that associates register addresses with memory addresses
EP0855645A2 (en) System and method for speculative execution of instructions with data prefetch
US8151096B2 (en) Method to improve branch prediction latency
US7721075B2 (en) Conditional branch execution in a processor having a write-tie instruction and a data mover engine that associates register addresses with memory addresses
US11379240B2 (en) Indirect branch predictor based on register operands
Omondi The microarchitecture of pipelined and superscalar computers
US6829700B2 (en) Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
Palermo et al. Branch prediction techniques for low-power VLIW processors
CN104615408A (zh) 微处理器、集成电路与提供微码指令储存空间的方法
TW202344988A (zh) 用於最佳化迴路重放性能的處理器中捕獲迴路的最佳化
WO2007087270A2 (en) Processor having a data mover engine that associates register addresses with memory addresses

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: 20080102

CX01 Expiry of patent term