可选择性撤回预取的方法

文档序号:6561948阅读:165来源:国知局
专利名称:可选择性撤回预取的方法
技术领域
本发明涉及高速缓存(cache)的领域,尤指快取线(cache line)的预取运算(prefetching),即涉及可选择性撤回预取的微处理器装置及方法。
背景技术
今天的计算机系统中均包括有一微处理器及一系统内存,该系统内存是用以储存微处理器指令与为该微处理器指令所处理的数据。一般来说,从系统内存读取数据所需的时间会远比微处理器执行一或多个指令所需的时间要多-在某些情况下,甚至于是十倍或二十倍以上,因此,当从系统内存加载数据时,微处理器常是处于闲置状态,此种情形是非常没有效率的,而且会降低系统的性能。
为缓和上述问题对系统的影响,通常会在微处理器内构建一高速缓存,此高速缓存是内建在微处理器内,并且其记忆容量小于系统内存,用以储存系统内存所存数据的一子集合。当处理器在执行一指令而须取用数据时,该处理器首先会从一先前的数据加载中检查该所需数据是否存在于该高速缓存中,此步骤一般称之为“快取命中”(cache hit)。如果在该先前的数据加载中,所需数据“命中”该高速缓存,换言之,即所需数据已被存入该高速缓存,此时该指令可立即被执行,但若是在该先前的数据加载中,所需数据“快取未中”(miss)该高速缓存,则再延缓该指令的执行,以等待从系统内存取得所需数据到处理器内。
微处理器的设计人员知道软件程序对数据与指令的存取常是连续性的,因此,如果一数据加载未命中该高速缓存时,则紧接着该数据加载未命中地址(load miss address)的内存地址上的数据很可能很快地会被该程序所需求,所以一微处理器预期到未来对下一数据的需求,因此甚至在程序尚未要求下一数据之前,常会预先将紧接着该未命中地址数据的随后的数据块加载到其高速缓存中,此动作一般称之为预取(prefetch)。
此被预取的数据块的大小通常是等同于一快取线的大小,高速缓存是将数据储存快取线中,一般快取线的大小常是32字节或是64字节。快取线为可在该高速缓存与该系统内存之间传输的数据的最小单位,换言之,当一微处理器所欲读取的可被快取数据不存在于其高速缓存时,此微处理器即会从系统内存读取包含该可被快取数据的整个快取线,并且将该快取线储存于其高速缓存中,相似地,当需要将一新的快取线写入到其高速缓存时,即会导致一被修改过的快取线的被取代,此时微处理器也将整个该被取代的快取线写入到系统内存。
传统上,该预取快取线均被视为等同于一普通快取线填充(line fill)。一普通快取线填充为从系统内存提取的一快取线,因为一指令是从该快取线存取数据,所以利用一普通快取线填充,该被提取的快取线可以无条件的被写入或撤回到其高速缓存。无条件的撤回一先期预取快取线到其高速缓存会有一缺点,此缺点为该被撤回的快取线可能会取代一正被使用或是即将被使用的快取线,因而可能对高速缓存的效率有不利的影响。因此,欲改善高速缓存的效率,必须要解决此缺点。

发明内容
在本发明的一第一具体实施例中,本发明可区别一预取快取线与一普通快取线填充,并且基于对该预取快取线的同时存取(contemporaneousaccess),本发明可选择性的将该预取快取线撤回至其高速缓存。在本发明的一第二具体实施例中,基于对该高速缓存内的一快取线的同时存取,并且该快取线为将被该预取快取线所取代,该预取快取线是可选择性的撤回。因此,为达上述目的,本发明提供一微处理器,该微处理器包括一高速缓存与一耦接至该高速缓存的预取缓冲器,该预取缓冲器是用以接收来自一系统内存的一预取快取线。该微处理器还包括耦接至该预取缓冲器的控制逻辑器,该控制逻辑器是根据实质上同时的存取该预取快取线与预取该预取快取线至该预取缓冲器,以将该预取快取线撤回到其高速缓存。
另一方面,本发明提供一种在一微处理器内的装置,该装置是根据对一预取快取线的存取,以选择性的将多个预取快取线撤回至该微处理器的一高速缓存。该装置包括一预取缓冲器,该预取缓冲器是用以储存一预取快取线。该装置还包括一耦接至该预取缓冲器的一缓存器,该缓存器是用以储存该预取快取线的一预取地址。该装置也包括耦接至该缓存器的控制逻辑器,该控制逻辑器接收一内存存取运算的存取地址,并且将该存取地址与该预取地址作一比较。该装置也包括耦接至该控制逻辑器的一计数器,该计数器是用以储存一存取该预取快取线的计数。如果该存取地址与该预取地址相同,则该控制逻辑器将该计数器的计数增加。该控制逻辑器并且根据该计数以选择性的将该预取快取线撤回至该高速缓存。
又另一方面,本发明提供一种在一微处理器内的装置,该装置可以选择性的将一预取快取线撤回至该微处理器的一高速缓存。该装置包括用以储存该预取快取线的一预取缓冲器,与耦接至该预取缓冲器的一计数器,该计数器用以储存一存取在高速缓存内的一储备快取线的计数。该装置也包括耦接至该计数器的一控制逻辑器,该控制逻辑器根据该计数以选择性的将该预取快取线撤回至该高速缓存。
又另一方面,本发明提供一种方法,该方法是在一微处理器内,选择性的从一预取缓冲器将一预取快取线撤回至一高速缓存。该方法的步骤包括保存一存取该预取快取线的第一计数,与接收一要求以预取一新的快取线至该预取缓冲器。该方法的步骤也包括判断在接收到该要求之前的存取在高速缓存内的一储备快取线的一第二计数是否小于该第一计数,以做为接收该要求的响应,并且如果该第二计数小于该第一计数,则将该新的快取线重写(overwrite)到该预取缓冲器的该预取快取线上。
又另一方面,本发明提供一种方法,该方法在一微处理器内,选择性的从一预取缓冲器将一预取快取线撤回至一高速缓存。该方法的步骤包括预取该预取快取线至该预取缓冲器,以做为该高速缓存的一快取未中与接收一要求预取一新的快取线至该预取缓冲器的响应。该方法的步骤也包括判断在该高速缓存内的一储备快取线是否为无效,如果该储备快取线为无效,则以该预取快取线取代在该高速缓存内的该储备快取线。
又另一方面,本发明提供一包含在一传输组件的一计算机数据信号,该计算机数据信号包括计算机可辨识程序代码以供一微处理器所用。该程序代码包括第一程序代码以供一高速缓存所用。该程序代码也包括第二程序代码以供一预取缓冲器所用,该预取缓冲器耦接至该高速缓存,以从一系统内存接收一预取快取线。该程序代码也包括第三程序代码以供一耦接至该预取缓冲器的控制逻辑器所用,该控制逻辑器根据实质上同时的存取该预取快取线与预取该预取快取线至该预取缓冲器,以将该预取快取线撤回到其高速缓存。
本发明的优点在于只要增加一些额外的硬件,本发明即可减低预取快取线取代了还可能即将会被存取的快取线的不利可能性,从而增进高速缓存的效率。
本发明的其它目的及优点由随后的详细说明及随附的图表可更加清楚。


图1为本发明的一方块图,其描述在一微处理器内的一装置,该装置是用以选择性的撤回多数的预取快取线。
图2为本发明的一流程图,其说明在图1所示的微处理器内,选择性的从该预取缓冲器撤回一预取快取线至其高速缓存的作业。
图3为本发明另一具体实施例的一方块图,其描述在一微处理器内的一装置,该装置是用以选择性的撤回多数的预取快取线。
图4为本发明的一流程图,其说明在图3所示的微处理器内,选择性的从该预取缓冲器撤回一预取快取线至其高速缓存的作业。
其中,附图标记说明如下100微处理器 102控制逻辑器104高速缓存 106预取线缓冲器108预取地址缓存器(PAR)112A储备路径0存取计数缓存器(CWAC0)112B储备路径1存取计数缓存器(CWAC1)112C储备路径2存取计数缓存器(CWAC2)112D储备路径3存取计数缓存器(CWAC3)114最小选取逻辑器116存取计数(PBAC)缓存器118比较器122min_AC124比较结果 126min_way信号128预取缓冲存取计数(PBAC)132加载/储存地址134状态信息 136预取快取线138预取地址 300微处理器
302控制逻辑器314储备快取线存取计数316存取定限缓存器318储备路径缓存器具体实施方式
请参阅图1,其是一方块图,其描述在一微处理器100内的一装置,该装置是用以选择性的撤回多数的预取快取线。该微处理器100包括一彼此耦接以构成一管线(pipeline)的多个阶段。一或多个该管线阶段包括一地址产生器,该地址产生器用以产生一内存存取运算地址,如图1所示的加载/储存地址132。该加载/储存地址132具体指定一加载或储存运算的地址。一加载运算从内存读取数据至微处理器100,而储存运算将数据从微处理器100写入到内存。在一具体实施例中,该加载/储存地址132为一物理内存地址。
微处理器100也包括一高速缓存104,该高速缓存包括一N路径集合联合方式的高速缓存。在一具体实施例中,该高速缓存104包括一4路径集合联合方式(4-way set associative)的64KB高速缓存。在一具体实施例中,该高速缓存104为一第一层数据高速缓存(level-1 data cache);但是本发明并不局限于应用在一数据高速缓存,而是可应用于一指令高速缓存,或是一联合数据/指令高速缓存,并且本发明也不局限于只使用第一层数据高速缓存,而是可使用在快取层级体系中任一层级的高速缓存。
高速缓存104储存地址卷标及储存于其内的每一快取线的状态。该卷标包括储存于高速缓存104内多个快取线的内存地址的上层部份。在一具体实施例中,该状态包括MESI(修改,排他,共享,无效)(modified,exclusive,shared,invalid)协议信息。高速缓存104接收加载/储存地址132。该加载/储存地址132的一下层部份是用以在高速缓存104中做为选取一集合(set),或行(row),或路径(ways)的索引。高速缓存104将该加载/储存地址132的上层部份与该被选取集合中每一路径的地址卷标作一比较,以判断该加载/储存地址132是否“命中”该高速缓存,换言之,即该加载/储存地址132是否与任一存在于该高速缓存104内的卷标相符,并且为有效状态。高速缓存104将状态信息134输出,该状态信息134包括被选取集合中每一路径的MESI状态,以及表明该被选取集合中的任一卷标是否与加载/储存地址132相符的一指示。如果加载/储存地址132源自一加载运算,并且“命中”高速缓存104,则该命中的快取线数据将被提供给要求该快取线数据的该微处理器100的管线阶段。
微处理器100也包括耦接至高速缓存104的控制逻辑器102。该控制逻辑器102接收源自高速缓存104的状态信息134及加载/储存地址132。控制逻辑器102响应的产生多个控制信号以控制高速缓存104的运作。该控制逻辑器的运作将会在下文中详述。
微处理器100也包括耦接至高速缓存104的一预取线缓冲器106。预取线缓冲器106是从一总线接口单元接收一预取快取线136,而该总线接口单元是经由一处理器总线,以从一系统内存提取数据到该微处理器100。如下所述,若加载/储存地址132快取未中该高速缓存104,则该控制逻辑器102将会促使一快取线紧跟着该加载/储存地址132所指向的快取线,换言之,预取快取线136被从系统内存预取至该预取线缓冲器106。因此,如下所述,该控制逻辑器102即可有利的根据对该预取快取线136的同时存取,以选择性的将该预取快取线136撤回至该高速缓存104。
预取线缓冲器106将该预取快取线136提供给该高速缓存104,此外,该预取线缓冲器106并且将预取快取线136提供给从该预取快取线136要求数据的该微处理器100之一或多个管线阶段。就这一点而言,该预取线缓冲器106可以视为是该高速缓存104的一延伸。即是,如果该控制逻辑器102判定一加载运算具体指定的一加载/储存地址132快取未中该高速缓存104,但是却命中该预取线缓冲器106,则该控制逻辑器102可将该预取快取线136的数据提供给该微处理器100的管线阶段。
微处理器100也包括耦接至控制逻辑器102的一预取地址缓存器(prefetch address register,PAR)108。该预取地址缓存器108是储存在该预取线缓冲器106内的预取快取线136的地址,此地址称之为预取地址138。当控制逻辑器102促使该预取快取线136被预取至该预取线缓冲器106内,该控制逻辑器102即将预取地址缓存器108更新为该预取快取线地址138。此外,该控制逻辑器102将该预取地址缓存器108与该加载/储存地址132作一比较,以侦测随后的对该预取快取线136的存取。
微处理器100也包括耦接至控制逻辑器102的一预取缓冲存取计数(prefetch buffer access count,PBAC)缓存器116。预取缓冲存取计数缓存器116是储存对在该预取线缓冲器106内的该预取快取线136的存取次数,此存取次数称之为预取缓冲存取计数(PBAC)128。当该控制逻辑器102侦测到对该预取快取线136的一存取,则该控制逻辑器102即增加该PBAC缓存器116。在一具体实施例中,一存取包括对该预取快取线136的一读取,但是,在其它的具体实施例中,一对该预取快取线136的存取也包括写入及/或窥视(snoop)运算。当一新的预取快取线136被预取到该预取线缓冲器106时,该控制逻辑器102即清除该PBAC缓存器116。
微处理器100也包括耦接至控制逻辑器102的多个储备路径存取计数(candidate way access count,CWAC)缓存器112。N个第二计数器可耦接至该控制逻辑器,在图1的具体实施例包括四个储备路径存取计数缓存器,分别注记为CWAC0 112A,CWAC1 112B,CWAC2 112C,及CWAC3 112D,还分别对应于4路径集合联合方式高速缓存104的每一路径。每一CWAC缓存器112储存该储备集合中各自所对应的路径的存取次数。该储备集合为在该高速缓存104中,由该预取地址138所选取的路径的集合。当该控制逻辑器102侦测到对该高速缓存104中的该选取集合的一路径的存取时,则该控制逻辑器102即增加相对应的一该CWAC缓存器112。当一新的预取快取线136被预取到该预取线缓冲器106时,该控制逻辑器102即清除该CWAC缓存器112。
微处理器100也包括耦接至CWAC缓存器112的最小选取逻辑器(minimumselection logic)114。该最小选取逻辑器114接收来自各CWAC缓存器112的CWAC,并且输出其所接收的CWAC的最小值,该最小值可记为min_AC 122。此外,该最小选取逻辑器114并且输出min_way信号126至该控制逻辑器102,该min_way信号126具体指定该拥有从该CWAC缓存器112接收到的最小值的路径编号。
微处理器100也包括一比较器118,该比较器118是与该最小选取逻辑器114与该PBAC缓存器116相耦接。该比较器118将该min_AC 122与该PBAC128作一比较,如果该PBAC 128大于该min_AC 122,则产生一逻辑器真值(truevalue)以作为比较结果124输出,否则输出一逻辑器假值(false value)。在另一具体实施例中,该比较器118将该min_AC 122与该PBAC 128作一比较,如果该PBAC 128大于或等于该min_AC 122,则产生一逻辑器真值(true value)以作为比较结果124输出,否则输出一逻辑器假值(false value)。该比较结果124然后被提供给该控制逻辑器102。
请参阅图2,其为本发明的一流程图,说明在图1所示的微处理器100内,选择性的从该预取缓冲器106撤回一预取快取线至其高速缓存104的作业。流程开始于判断方块202。
在判断方块202中,该控制逻辑器102将对图1的状态信号134进行检查,用以判断该加载/储存地址132是否快取未中该高速缓存104。若答案为是,则流程进行到方块204;若答案为否,则流程回到判断方块202。
在方块204中,在开始从内存提取该快取未中快取线至该高速缓存104之后,该控制逻辑器102指令其总线接口组件进行预取其下一个快取线至图1的预取线缓冲器106,该下一个快取线为紧接着该快取未中加载/储存地址132指向的预取快取线。在下一个快取线被预取至该预取线缓冲器106之前,该控制逻辑器102核查该下一个快取线也为快取未中该高速缓存104。当该预取快取线136已被预取至该预取线缓冲器106后,该控制逻辑器102即将该预取地址缓存器108更新为图1的预取地址138,换言之,即将之更新为该下一个快取线的地址。流程接着进行到判断方块206。
在判断方块206中,控制逻辑器102向高速缓存104查询(query)预取地址138,并且对图1的状态信息134进行一项检查用以判断在其储备集合中是否有任何路径是处于无效(invalid)状态。若答案为是,则流程进行到方块208;若答案为否,则流程进行到方块212。
在方块208中,控制逻辑器102将该预取快取线136撤回到该处于无效状态的路径,该路径在高速缓存104内的储备集合中。流程接着回到方块202。
在方块212中,控制逻辑器102清除图1的PBAC缓存器116与CWAC缓存器112,并将其值设定为0。流程接着进行到判断方块214。
在判断方块214中,当加载/储存运算对高速缓存104进行存取时,控制逻辑器102将进行一项检查用以判断是否有任一运算使得在其储备集合中的任一路径变成无效状态。例如在储备集合中的一路径可以经一无效窥视存取(invalidating snoop access)而变成无效状态。若有其储备集合中的任一路径被变成无效状态,则流程从判断方块214回到方块208;若答案为否,则流程进行到判断方块216。
在判断方块216中,该控制逻辑器102将进行一项检查用以判断是否有新的预取要求,换言之,该控制逻辑器102将进行一项检查用以判断一新的加载/储存地址132是否快取未中该高速缓存104,因而导致需要该预取线缓冲器106预取一新的快取线。若答案为是,则流程进行到判断方块218;若答案为否,则流程进行到判断方块224。
在判断方块218中,该控制逻辑器102将对图1的比较结果信号124进行一项检查用以判断PBAC 128是否大于min_AC 122。若答案为是,则流程进行到方块222;若答案为否,则流程回到方块204,以致储存于预取线缓冲器106的该预取快取线136不会被撤回到该高速缓存104,而是被丢弃,换言之,该预取快取线136被随后的新的预取快取线所覆盖重写。
在方块222中,该控制逻辑器102将该预取快取线136撤回到由min_way信号126所具体指定的路径,该路径在高速缓存104内的储备集合中。流程接着从方块222回到方块204。
在判断方块224中,该控制逻辑器102将状态信息134进行一项检查用以判断在储备集合中的一路径是否已被存取。在一具体实施例中,一路径之所以被存取,是因为该加载/储存地址132快取命中该高速缓存104,换言之,是因为该路径为有效状态,并且该路径的卷标与该加载/储存地址132的卷标部份相符。若该储备集合已被存取,则流程进行到判断方块226;若答案为否,则流程进行到判断方块228。
在判断方块226中,该控制逻辑器102响应于判断方块224所决定的存取路径,以增加CWAC缓存器112。例如,若路径2被存取,则该控制逻辑器102增加CWAC 112C。流程接着从方块226进行到判断方块228。
在判断方块228中,该控制逻辑器102将比较该预取地址138与该加载/储存地址132,以进行一项检查用以判断该预取快取线136是否已被存取。若答案为是,则流程进行到方块232;若答案为否,则流程回到判断方块214。
在方块232中,该控制逻辑器102增加PBAC缓存器116。流程接着从方块232回到判断方块214。
下列表格1所示的伪代码(pseudocode)也用以描述图2的微处理器100的运算。
<pre listing-type="program-listing">If(anyWayInCandidateSetInvalid){ RetirePrefetchedLineToCache();  }else{   PBAC=CWAC
=CWAC[1]=CWAC[2]==CWAC[3]=0;  while(noNewPrefetchRequested&amp;amp;&amp;amp;noWayInCandidateSetInvalided){   if(candidateSetAccessed)</pre><pre listing-type="program-listing">  CWAC[accessedWay]++;   if(PrefetchedLineAccessed)  PBAC++;   }   if(newPrefetchRequested){   if(PBAC>min_AC)  RetirePrefetchLineToCache();   else/*throw away prefetched cache line*/  OverwritePrefetchBufferWithNewPrefetchData();   }else{ /*way in candidate set was invalidated*/   RetirePrefetchedLineToCache();   }  }</pre>表格1.
如图1及图2所示,本发明的优点在于根据对应于该储存集合的路径的被存取次数的该预取快取线136的被存取次数,可以选择性的将该预取快取线136撤回至其高速缓存104,而不是不加选择的将该预取快取线136撤回至其高速缓存104。
请参阅图3,其为本发明另一具体实施例的一方块图,其描述在一微处理器300内的一装置,该装置是用以选择性的撤回多数的预取快取线。
如图1相同标号的组件,该微处理器300包括一高速缓存104,预取线缓冲器106,预取地址缓存器(PAR)108,加载/储存地址132,状态信息134,预取快取线136,以及预取地址138。
微处理器300也包括耦接至该高速缓存104的控制逻辑器302,如同图1的控制逻辑器102,与预取线缓冲器106;但是图3的控制逻辑器302是根据多个数值以选择性的将该预取快取线136撤回至该高速缓存104,该多个数值是储存在一储备快取线存取计数(candidate line access counter,CLAC)缓存器314,一存取定限缓存器(access threshold register,ATR)316,及一储备路径缓存器(candidate way register,CWR)318。上述的CLAC缓存器314,ATR 316及CWR 318均耦接至该控制逻辑器302。
CWR 318储存一数值,该数值具体指定一储备路径,并且该路径为在该储备集合中,将被预取快取线136所选择性取代的路径。在一具体实施例中,该控制逻辑器302开始就将一在该储备集合中的最近使用过的路径进驻CWR318,该路径由状态信息134所决定。若前述的储备路径在一新的预取被要求之前,即已被取代,则该控制逻辑器302将CWR 318更新为其一新的最近使用过的路径。
CLAC 314储存一数值,该数值为计算从预取快取线136被预取至预取线缓冲器106之后,该被CWR 318所具体指定的储备快取线或是储备路径被存取的次数。
ATR 316储存一定限数值,该定限数值被控制逻辑器302用以与储存在CLAC 314的数值做比较,以选择性的撤回该预取快取线136,详述如下。在一具体实施例中,储存在ATR 316的该数值为预定值。在一具体实施例中,储存在ATR 316的该数值是可程控的。
请参阅图4,其为本发明的一流程图,其说明在图3所示的微处理器300内,选择性的从该预取缓冲器106撤回一预取快取线至其高速缓存104的作业。流程开始于判断方块402。
在判断方块402中,该控制逻辑器302将对图3的状态信号134进行检查,用以判断该加载/储存地址132是否快取未中该高速缓存104。若答案为是,则流程进行到方块404;若答案为否,则流程回到判断方块402。
在方块404中,在开始从内存提取该快取未中快取线至该高速缓存104之后,该控制逻辑器302即将具体指定该储备快取线的最近使用过路径(LRU)的一数值进驻至CWR 318。并且,该控制逻辑器302指令其总线接口组件进行预取其下一个快取线至图三的预取线缓冲器106,该下一个快取线为紧接着该快取未中加载/储存地址132指向的预取快取线。在下一个快取线被预取至该预取线缓冲器106之前,该控制逻辑器102查核该下一个快取线也为快取未中该高速缓存104。此外,该控制逻辑器302即将该快取未中快取线的下一个快取线的地址进驻至预取地址缓存器108。流程接着进行到判断方块406。
在判断方块406中,控制逻辑器302向高速缓存104查询(query)预取地址138,并且对图3的状态信息134进行一项检查用以判断在其储备集合中是否有任何路径是处于无效(invalid)状态。若答案为是,则流程进行到方块408;若答案为否,则流程进行到方块412。
在方块408中,控制逻辑器302将该预取快取线136撤回到被CWR 318所具体指定的在高速缓存104的储备路径。流程接着回到判断方块402。
在方块412中,控制逻辑器102清除图3的CLAC 314,并将其值设定为0。流程接着进行到判断方块414。
在判断方块414中,当加载/储存运算对高速缓存104进行存取时,控制逻辑器302将进行一项检查用以判断是否有任一运算使得在其储备路径变成无效状态。若答案为是,则流程从判断方块414回到方块408;若答案为否,则流程进行到判断方块416。
在判断方块416中,该控制逻辑器302将进行一项检查用以判断是否有新的预取要求。若答案为是,则流程进行到判断方块418;若答案为否,则流程进行到判断方块424。
在判断方块418中,该控制逻辑器302将进行一项检查用以判断CLAC 314是否大于储存于图3的ATR 316内的数值。若答案为是,则流程进行到方块422;若答案为否,则流程回到方块404,以致储存于预取线缓冲器106的该预取快取线136不会被撤回到该高速缓存104,而是被丢弃,换言之,该预取快取线136被随后的新的预取快取线所覆盖重写。
在方块422中,该控制逻辑器302将该预取快取线136撤回到被CWR 318所具体指定的在高速缓存104的储备路径。流程接着从方块422回到方块404。
在判断方块424中,该控制逻辑器302将状态信息134进行一项检查用以判断该储备路径是否已被存取。在一具体实施例中,该储备路径之所以被存取,是因为该路径为有效状态,并且该路径的卷标与该加载/储存地址132的卷标部分相符。若该储备集合已被存取,则流程进行到判断方块426;若答案为否,则流程进行到判断方块428。
在判断方块426中,该控制逻辑器302增加CLAC 314。流程接着从方块426进行到判断方块428。
在判断方块428中,该控制逻辑器302将进行一项检查用以判断储备路径是否已被一储存运算所取代。若答案为是,则流程进行到方块432;若答案为否,则流程回到判断方414。
在方块432中,该控制逻辑器302将CWR 318更新为在其储备集合中的一新的最近使用过的路径,并且清除CLAC 314,并将其值设定为0。流程接着从方块432回到判断方块414。
下列表格2所示的伪代码(pseudocode)也用以描述图4的微处理器300的运算。
<pre listing-type="program-listing">  If(Cache[PrefetchIndex][CandidateWay].Valid==0){  RetirePrefetchedToCache();  }else{   CandidateLineAccessCount=0;   while(!NewPrefetchRequest&amp;amp;&amp;amp;!CandidateLineInvalidated){   if(CandidateLineAccessed){   CandidateLineAccessCount++;   }else if(CandidateLineInvalidated){/*e.g.,byexternal snoop*/   RetirePrefetchToCache();   }else if(CandidateLineReplaced){ /*i.e.,with validmiss data*/   UpdateCandidateWayRegister();   CandidateLineAccessCount=0;   }  }  if((CandidateLineAccessCount<AccessThreshold)&amp;amp;&amp;amp;  (!CandidateLineInvalidate))   {   RetirePrefetchToCache();   }else{   OverWritePrefetchBufferWithNewPrefetchData();   /*i.e.,flush old prefetch data*/   }  }</pre>表格2.
虽然本发明的具体实施例已叙述如前,但本发明并未受限于此。例如,本发明可适用于一数据高速缓存,一指令高速缓存,或是一指令/数据高速缓存。除此之外,虽然在一具体实施例中已详述在预取快取线已被预取至其预取缓冲器中之后,如何追踪(track)该预取快取线的存取与储备快取线的取代,但其它的同时存取也可被追踪,并且做为选择性的撤回该预取快取线的基础,例如在该预取的需求被确定为与该预取快取线到达该预取缓冲器的时间之间,对该预取快取线及/或储备快取线的存取。此外,读取、写入、窥视及其它存取的组合也可被追踪,并且用之以选择性的撤回该预取快取线。换言之,有各种各样的试误规则可以被具体实现以判断在高速缓存内的该预取快取线,或是一储备快取线在未来有较大的被存取可能性,因此本发明比传统的无条件将该预取快取线撤回至其高速缓存更为有利。最后,虽然本发明是有关于由快取未中所产生的预取,本发明也可适用于任何型式的预取,例如由预取程序指令所产生的预取。
本发明不但可以硬件实现,也可以通过在一计算机可运用(例如,可辨识)组件具体实现的计算机可辨识码(例如,计算机可辨识程序代码、数据等等)来实现。该计算机程序码促成此处所揭示的本发明的功能,或制造,或两者均有的实现。举例来说,本发明可以下列计算机程序码来实现之一般的程序语言(例如,C、C++、JAVA等等);GDSII数据库;硬件描述语言(hardwaredescription languages,HDL),包括Verilog HDL、VHDL、Altera HDL(AHDL)等等;或是其它本技术领域中的编制程序及/或电路(即是,图标的)捕捉工具。该计算机程序码可适用于任何已知的计算机可运用(例如,可辨识)组件,此计算机可运用组件包括半导体内存,磁盘片,光盘片(例如,CD-ROM、DVD-ROM等等),以及如同在一计算机可运用(例如,可辨识)传输组件(例如,载波,或是包括数字、光学,或模拟式组件)具体实现的一计算机数据信号。就其本身而论,该计算机程序码可以在通信网路上传输,该通信网路包括网际网络与企业网络。可以理解的是本发明可以计算机程序码来实现(例如,一知识产权(Intellectual property,IP)核心的一部分,如一微处理器核心,或是如一系统层级的设计,例如一系统单芯片(System-on-Chip,SoC),并且将之转移至硬件以成为集成电路的一部分。本发明也可以一硬件与计算机程序码的组合来实现。
本发明的具体实施例已叙述如前,但本发明并未受限于此。上述仅为本发明的较佳实施例,不能以之限制本发明的范围。凡依本发明权利要求所做的均等变化及修改,仍属于本发明的保护范围,其并未脱离本发明的构思和范围,所以都应视为本发明的进一步实施状况。
权利要求
1.一种方法,该方法是选择性地从一预取缓冲器将一预取快取线撤回至该微处理器的一高速缓存,该方法的步骤包括保存一存取该预取快取线的第一计数;接收一要求以预取一新的快取线至该预取缓冲器;判断存取在高速缓存内的一替代储备快取线的一第二计数是否小于该第一计数,以做为接收该要求的响应;如果该第二计数小于该第一计数,则将该新的快取线重写到该预取缓冲器的该预取快取线上。
2.如权利要求1所述的方法,该方法还包括预取该预取快取线到该预取缓冲器,以做为一快取未中该高速缓存的响应,并且该预取步骤早于保存该第一计数的步骤。
3.一种方法,该方法是选择性地从一预取缓冲器将一预取快取线撤回至该微处理器的一高速缓存,该方法的步骤包括预取该预取快取线到该预取缓冲器,以做为一快取未中该高速缓存的响应;接收一要求以预取一新的快取线至该预取缓冲器;判断存取在高速缓存内的一替代储备快取线是否处于无效状态;如果该替代储备快取线是处于无效状态,则以该预取快取线取代在高速缓存内的该替代储备快取线。
4.如权利要求3所述的方法,该方法还包括如果该替代储备快取线为有效状态,则不将该预取快取线撤回至该预取缓冲器,而是由预取的新的快取线取代该预取快取线。
全文摘要
本发明公开了一种方法,该方法是选择性地从一预取缓冲器将一预取快取线撤回至该微处理器的一高速缓存,该方法的步骤包括保存一存取该预取快取线的第一计数;接收一要求以预取一新的快取线至该预取缓冲器;判断存取在高速缓存内的一替代储备快取线的一第二计数是否小于该第一计数,以做为接收该要求的响应;如果该第二计数小于该第一计数,则将该新的快取线重写到该预取缓冲器的该预取快取线上。
文档编号G06F12/06GK101063956SQ200610135600
公开日2007年10月31日 申请日期2003年10月17日 优先权日2003年4月21日
发明者罗德尼·E·胡克, G·葛兰·亨利 申请人:智慧第一公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1