CN102591813B - 微处理器、存储器子系统以及快取数据的方法 - Google Patents
微处理器、存储器子系统以及快取数据的方法 Download PDFInfo
- Publication number
- CN102591813B CN102591813B CN201110383422.8A CN201110383422A CN102591813B CN 102591813 B CN102591813 B CN 102591813B CN 201110383422 A CN201110383422 A CN 201110383422A CN 102591813 B CN102591813 B CN 102591813B
- Authority
- CN
- China
- Prior art keywords
- mentioned
- memory cache
- cache
- level
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- 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
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/6022—Using a prefetch buffer or dedicated prefetch cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
微处理器、存储器子系统以及快取数据的方法。该微处理器,用以存取一外部存储器。总线接口单元,用以介接第一级快取存储器及第二级快取存储器至用来存取外部存储器的总线。总线接口单元在处理来自第二级快取存储器的请求之前,优先处理来自第一级快取存储器的请求。第二级快取存储器产生第一请求至总线接口单元以从外部存储器提取快取列。当第一请求产生时,第二级快取存储器检测至快取列的由总线接口单元所产生的第二请求与由第一级快取存储器所产生的第三请求。第二级快取存储器判断于总线上完成第一请求的传输是否被重试,以便产生未命中或命中回应。
Description
本申请是申请日为2010年6月25日、申请号为201010220129.5、发明名称为“微处理器、存储器子系统以及快取数据的方法”的发明专利申请的分案申请。
技术领域
本发明涉及微处理器,特别涉及在微处理器的快取存储器中数据的预取。
背景技术
从系统存储器预取数据和/或指令至微处理器的快取存储器的优势是已知的。随着存储器存取的等待时间(latency)以及微处理器核心时钟频率之间的不同会持续增加,预取数据和/或指令的优势会变的更重要。然而,由微处理器所产生的预取请求会放置额外的载入请求(request)在微处理器的有限资源中,其中微处理器的有限资源亦被正常载入请求以及存储请求所需要,例如微处理器的外部总线、介接(interface)微处理器至外部总线的总线接口单元、以及微处理器的不同快取存储器。因此,设计能有效率地利用微处理器的资源的预取器(prefetcher)是重要的。
发明内容
本发明提供一种存储器子系统,设置于一微处理器内。上述存储器子系统包括:一第一级快取存储器;一第二级快取存储器;以及,一预取快取存储器,用以从一外部存储器预测并预取快取列至上述微处理器。上述第二级快取存储器以及上述预取快取存储器允许相同的上述快取列存在于上述第二级快取存储器以及上述预取快取存储器两者。当上述第一级快取存储器所产生的关于一快取列的一请求命中上述第二级快取存储器以及上述预取快取存储器两者时,上述预取快取存储器使存在于上述预取快取存储器的上述快取列无效,而上述第二级快取存储器提供存在于上述第二级快取存储器的上述快取列至上述第一级快取存储器。
再者,本发明提供一种快取数据的方法,适用于一微处理器的一存储器子系统,其中上述微处理器用以存取一外部存储器并包括一第一级快取存储器、一第二级快取存储器以及一预取快取存储器,以及上述预取快取存储器用以从上述外部存储器预测并预取至少一快取列至上述微处理器。上述方法包括:通过上述第二级快取存储器以及上述预取快取存储器,允许相同的上述快取列存在于上述第二级快取存储器以及上述预取快取存储器两者;决定由上述第一级快取存储器所产生的关于上述快取列的一请求是否命中上述第二级快取存储器以及上述预取快取存储器两者;以及,当上述请求命中上述第二级快取存储器以及上述预取快取存储器两者时:通过上述预取快取存储器,使存在于上述预取快取存储器的上述快取列无效;以及,通过上述第二级快取存储器,提供存在于上述第二级快取存储器的上述快取列至上述第一级快取存储器。
附图说明
图1是显示根据本发明一实施例所述的微处理器的方块图;
图2是显示根据本发明所述的图1中微处理器的存储器子系统的方块图;
图3是显示图2中每一回应缓冲器的相关栏位;
图4是显示图2中第二级预取快取存储器所产生的回应表;以及
图5至图7是显示图1中存储器子系统的操作的流程图。
【主要元件符号说明】
100~微处理器; 102~指令提取单元;
104~指令解码单元;106~运算元提取单元;
108~多个执行单元;
112~结果写回/指令引退单元;114~存储器子系统;
122~第一级数据快取存储器;
124~第二级快取存储器;
126~第二级预取快取存储器;
128~总线接口单元;134~外部总线;
204、212~命中/未命中回应;
206~数据与快取列状态;208~载入请求;
214~监听请求; 216~不重试信号;
218~取消完成信号; 222~总线核准信号;
224~总线载入请求; 226~总线载入请求;
228~监听回应;以及 232~取消信号。
具体实施方式
为让本发明的上述和其他目的、特征、和优点能更明显易懂,下文特举出优选实施例,并配合附图,作详细说明如下:
实施例:
参考图1,图1是显示根据本发明一实施例所述的微处理器100的方块图。微处理器100包括指令提取单元102、指令解码单元104、运算元提取单元106、多个执行单元108以及结果写回/指令引退(retire)单元112等,其中每一单元可包括多个阶段(stages)。在一实施例中,微处理器100为超纯量(Superscalar)乱序(out-of-order)执行/循序(in-order)引退微处理器。微处理器100亦包括总线接口单元128,其用以介接微处理器100至外部总线134,以便存取系统存储器以及外围装置。在一实施例中,总线134符合由不同英特尔奔腾微处理器中的一个所指定的总线协议。微处理器100亦包括存储器子系统114,其包括第一级数据快取存储器122、第二级快取存储器124以及第二级预取快取存储器126。
参考图2,图2是显示根据本发明所述的图1中微处理器100的存储器子系统114的方块图。存储器子系统114包括第一级数据快取存储器122、第二级快取存储器124以及第二级预取快取存储器126,其分别耦接于图1的总线接口单元128。第二级预取快取存储器126产生总线载入请求(BusLoadRequest)226至总线接口单元128,以便预测(speculatively)并预取快取列(cache line)至第二级预取快取存储器126。因应于由执行单元108所执行的软件预取指令和/或微处理器100本身所产生的硬件预取请求所产生的预取请求,第二级预取快取存储器126产生总线载入请求226。
第二级预取快取存储器126包括多个回应缓冲器(response buffer)202,其可作为从总线134所载入的快取列的中间存储器,直到快取列被引退至第二级预取快取存储器126或是被提供至第二级快取存储器124。在一实施例中,第二级预取快取存储器126具有八个回应缓冲器202。图3是显示图2中每一回应缓冲器202的相关栏位。
在发送总线载入请求226之前,当第二级预取快取存储器126指派一个回应缓冲器202时,第二级预取快取存储器126会将要被预取的快取列的地址存储至被指派的回应缓冲器202的地址栏位302。已预取的快取列数据将被引退至第一级数据快取存储器122或是第二级预取快取存储器126。
第一级数据快取存储器122发送载入请求(LoadRequest)208至第二级快取存储器124,以便从第二级快取存储器124载入一快取列。载入请求208亦被提供至第二级预取快取存储器126。假如由第一级数据快取存储器122所产生的载入请求208与回应缓冲器202的地址栏位302中的一有效值相冲突时,第二级预取快取存储器126会对回应缓冲器202的载入冲突(LoadCollide)栏位306进行设定。
对应于总线134上由外部代理者(agent)所启动的传输(transaction)或是对应于由微处理器100的快取存储器内部所产生的某些传输,总线接口单元128会产生监听(snoop)请求214。监听请求214会被提供至第一级数据快取存储器122、第二级快取存储器124以及第二级预取快取存储器126。假如监听请求214与回应缓冲器202的地址栏位302中的一有效值相冲突时,第二级预取快取存储器126会对回应缓冲器202的监听命中(SnoopHit)栏位308进行设定。
总线接口单元128会提供与每一回应缓冲器202有关的不重试(NoRetry)信号216至第二级预取快取存储器126。总线接口单元128会在总线134的回应阶段(Response Phase)的期间对已编码的位元进行解码,其将指示总线接口单元128是否正在完成目前的传输。亦即在总线134的回应阶段的期间,传输将不会被重试。既然传输将不会被重试,则总线接口单元128会设置(assert)与回应缓冲器202有关的不重试信号216至第二级预取快取存储器126,而第二级预取快取存储器126会对应地对回应缓冲器202内部的不重试栏位312进行设定。
总线接口单元128亦会提供与每一回应缓冲器202有关的总线核准(BusGrant)信号222至第二级预取快取存储器126。当总线接口单元128被核准总线134的所有权来执行传输以提取由回应缓冲器202的地址栏位302所指定的快取列时,总线接口单元128会设置与回应缓冲器202有关的总线核准信号222至第二级预取快取存储器126,而第二级预取快取存储器126会对应地对回应缓冲器202内部的总线核准栏位314进行设定。
第二级预取快取存储器126会提供与每一回应缓冲器202有关的取消(Kill)信号232至总线接口单元128。第二级预取快取存储器126会设置适当的取消信号232,用以指示总线接口单元128来抑制(refrain)于总线134上所执行的传输,以避免提取由回应缓冲器202所指定的快取列或是假如该传输已经开始则终止(terminate)该传输。总线接口单元128会提供与每一回应缓冲器202有关的取消完成(KillOK)信号218至第二级预取快取存储器126。总线接口单元128会设置与回应缓冲器202有关的取消完成信号218至第二级预取快取存储器126,此时总线接口单元128不再抑制或是终止该传输,而第二级预取快取存储器126会对应地清除(clear)回应缓冲器202内部的取消完成栏位316。
第一级数据快取存储器122会产生总线载入请求224来请求总线接口单元128,以便提取快取列至第一级数据快取存储器122。此外,对应于由总线接口单元128所产生的监听请求214,第一级数据快取存储器122会产生监听回应(SnoopResponse)228至总线接口单元128。第二级快取存储器124会产生命中(hit)/未命中(miss)信号212至第一级数据快取存储器122,以便指示载入请求208是否命中或是未命中第二级快取存储器124。第二级预取快取存储器126产生命中/未命中信号204至第二级快取存储器124,以便指示载入请求208是否命中或是未命中第二级预取快取存储器126。最后,第二级预取快取存储器126会提供数据与快取列状态206至第二级快取存储器124。
在一实施例中,在处理来自第二级预取快取存储器126的请求之前,总线接口单元128会优先处理来自第一级数据快取存储器122且具有较高优先权的请求。因此,通常想要尽可能地对第一级数据快取存储器122的载入请求以及第二级预取快取存储器126的载入请求进行解耦合(de-couple),使得第一级数据快取存储器122的载入请求能使其对总线的请求具有较高的优先权。特别地,当第二级预取快取存储器126的总线载入请求226同时由监听请求214以及载入请求208所命中时,存储器子系统114会进行上述解耦合。第二级预取快取存储器126与总线载入请求226有关的回应缓冲器202中载入冲突栏位306以及监听命中栏位308为″真″(True)值以指示总线载入请求226同时由监听请求214以及载入请求208所命中。更特别地,假如总线接口单元128的监听请求214命中第二级预取快取存储器126的总线载入请求226,则传送至第一级数据快取存储器122的回应将为未命中讯息,除非回应阶段发生于总线134上。在与第二级预取快取存储器126的总线载入请求226有关的回应缓冲器202中,不重试栏位312的″真″值会指示回应阶段已发生于总线134上。既然监听代理者将要修改由第二级预取快取存储器126所预提的快取列,则可允许第一级数据快取存储器122对总线载入请求224进行启动(initiate),以便快速地来有效更新快取列。即是,立即地回传未命中讯息至第一级数据快取存储器122能尽快地授权(empower)第一级数据快取存储器122对更新的数据来启动总线载入请求224,如图4的第1列至第4列以及图5的步骤502至步骤512所显示。
参考图5,图5是显示图1中存储器子系统的操作的流程图。流程开始在步骤502。
在步骤502,第二级预取快取存储器126检测到监听请求214及第一级数据快取存储器122的载入请求208皆命中回应缓冲器202中的一个。接着,流程进入步骤504。
在步骤504,判断是否发生重试。如果是,则流程进入步骤506。否则,流程进入步骤514。
在步骤506,第二级预取快取存储器126回传关于第一级数据快取存储器122的载入请求208的未命中讯息至第二级快取存储器124。接着,流程进入步骤508。
在步骤508,第二级快取存储器124回传未命中讯息至第一级数据快取存储器122的载入请求208。接着,流程进入步骤512。
在步骤512,第一级数据快取存储器122发送总线载入请求224至总线(总线接口单元128)以取得更新的快取列。流程结束在步骤512。
其中图5的步骤508系假设监听请求214以及载入请求208亦未命中第二级快取存储器124。
如图4的第5列及第6列以及图5的步骤514至步骤522所显示,在监听请求214的命中系发生在回应阶段之后,第一级数据快取存储器122会等待由第二级预取快取存储器126的总线载入请求226所提取的数据。于是,第一级数据快取存储器122会占住(own)总线134并接收数据,再回应给监听请求214。因为传统上总线134上的数据占有期(tenure)仅会发生在回应阶段之后,所以第一级数据快取存储器122的上述动作系适当的。
在步骤514,第一级数据快取存储器122等待其载入请求208的回应。接着,流程进入步骤516。
在步骤516,第二级预取快取存储器126从总线134(总线接口单元128)接收快取列、回传关于第一级数据快取存储器122的载入请求208的命中讯息至第二级快取存储器124并提供快取列至第二级快取存储器124。接着,流程进入步骤518。
在步骤518,第二级快取存储器124回传命中讯息至第一级数据快取存储器122的载入请求208并提供快取列至第一级数据快取存储器122。接着,流程进入步骤522。
在步骤522,第一级数据快取存储器122取得快取列的所有权并回应于监听请求214。流程结束在步骤522。
再者,来自第二级预取快取存储器126的命中/未命中信号204(以及后续从第二级快取存储器124至第一级数据快取存储器122的命中/未命中信号212)为存储在回应缓冲器202中载入冲突栏位306、监听命中栏位308与不重试栏位312的状态信息的函数。
当执行第二级预取快取存储器126的总线载入请求226时,由于与紧接在总线载入请求226之后的载入请求208会相冲突,如回应缓冲器202中载入冲突栏位306的″真″值所指示,则总线134的频宽可能会无法被充分利用。上述请求将导致重复(duplicate)的总线134的传输提取相同的快取列。图6的实施例系描述通过终止未被核准总线134的第二级预取快取存储器126的总线载入请求226来解决上述问题,如回应缓冲器202中总线核准栏位314的″假″(False)值所指示。假如载入请求208与未被核准总线134的总线载入请求226相冲突时,第二级预取快取存储器126会设置有关的取消信号232来终止总线载入请求226,如图6所显示。对快取列而言,其将允许具有较高优先权的第一级数据快取存储器122的总线载入请求224成为单一总线134的传输。
再者,第二级预取快取存储器126的总线载入请求226的终止可以是存储在回应缓冲器202中载入冲突栏位306、总线核准栏位314与取消完成栏位316的状态信息的函数。再者,尽快地终止第二级预取快取存储器126的总线载入请求226将会允许第二级预取快取存储器126能很快地回传未命中信号204至第二级快取存储器124,其依序允许第一级数据快取存储器122来快速地产生总线载入请求224,其中总线载入请求224在总线接口单元128内具有较高优先权。此外,终止第二级预取快取存储器126的总线载入请求226的另一重要优点是可避免在总线134上对相同快取列进行两次载入,即可降低总线134上的传输量。
参考图6,图6是显示图1中存储器子系统的操作的流程图。流程开始在步骤602。
在步骤602,第二级预取快取存储器126发送快取列的总线载入请求226。接着,流程进入步骤604。
在步骤604,第一级数据快取存储器122随后发送相同快取列的载入请求208。接着,流程进入步骤606。
在步骤606,判断是否设置取消完成信号218且无设置总线核准信号222。如果是,则流程进入步骤608。否则,流程进入步骤614。
在步骤608,第二级预取快取存储器126取消总线载入请求226至总线(总线接口单元128)。接着,流程进入步骤614。
在步骤614,第二级预取快取存储器126重传未命中讯息至第一级数据快取存储器122的载入请求208。接着,流程进入步骤612。
在步骤612,第一级数据快取存储器122发送总线载入请求224至总线(总线接口单元128)。流程结束在步骤612。
明确地,第二级预取快取存储器126必须不会引起非相干性(incoherency)。例如,假如第二级预取快取存储器126回传具有互斥状态(Exclusive status)的数据至第一级数据快取存储器122且在第二级快取存储器124中相同的快取列具有修改状态(Modified status),则将会产生非相干性。传统上,避免非相干性的解决方式系在对快取列执行预取之前,第二级预取快取存储器126会询问第二级快取存储器124;以及,假如上述询问命中第二级快取存储器124时,第二级预取快取存储器126不会进行提取。即,传统的解决方式不允许(disallow)相同快取列同时出现在第二级快取存储器124以及第二级预取快取存储器126。然而,传统的解决方式会引入(introduce)在第二级预取快取存储器126的预取中的等待时间(latency),并且需要额外的逻辑电路。
图7的实施例描述通过第二级快取存储器124以及第二级预取快取存储器126回应载入请求208来完全消除标签询问(tag query)。具体地,假如载入请求208命中第二级快取存储器124以及第二级预取快取存储器126两者,第二级快取存储器124会对应于载入请求208来提供数据,其将保证假如有已被修改的数据在第二级快取存储器124内,则第二级快取存储器124的数据将被退回(returned)。再者,假如载入请求208命中第二级快取存储器124以及第二级预取快取存储器126两者,第二级预取快取存储器126会使该数据无效。存储器子系统114的操作描述在图7中。
参考图7,图7是显示图1中存储器子系统的操作的流程图。流程开始在步骤702。
在步骤702,第一级数据快取存储器122发送总线载入请求224。接着,流程进入步骤704。
在步骤704,判断是否命中第二级预取快取存储器126。如果是,则流程进入步骤706。否则,流程进入步骤716。
在步骤706,判断是否命中第二级快取存储器124。如果是,则流程进入步骤708。否则,流程进入步骤714。
在步骤708,第二级预取快取存储器126使快取列无效。接着,流程进入步骤712。
在步骤712,第二级快取存储器124提供快取列至第一级数据快取存储器122。流程结束在步骤712。
在步骤714,第二级预取快取存储器126提供快取列至第二级快取存储器124。接着,流程进入步骤712。
在步骤716,判断是否命中第二级快取存储器124。如果是,则流程进入步骤712。否则,流程进入步骤718。
在步骤718,第一级数据快取存储器122发送总线载入请求224,以便从总线(总线接口单元128)取得快取列。流程结束在步骤718。
通过在第二级快取存储器124以及第二级预取快取存储器126内设计管线(pipeline),可实现结合第二级快取存储器124以及第二级预取快取存储器126的回应至载入请求208,使得第二级快取存储器124以及第二级预取快取存储器126可同时被执行并在相同顺序中处理相同载入请求208。特别地,第二级预取快取存储器126可看到(see)载入请求208,如图2所显示,并看到第二级快取存储器124何时会处理载入请求208。
虽然,本发明的实施例描述与预取器126有关的个别预取快取存储器,然而其他实施例也可被实现。例如,不具有与预取器126有关的个别预取快取存储器且预取器126会将其预取至回应缓冲器202的快取列引退至微处理器的另一快取存储器,例如第二级快取存储器124、第一级数据快取存储器122和/或一第一级指令快取存储器。
虽然本发明已以优选实施例公开如上,然其并非用以限定本发明,本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰。例如,软件可致能如本发明所述的装置及方法的功能、制造、模型化、模拟、描述和/或测试,其能通过使用通用程序设计语言(例如C、C++)、包括Verilog、HDL、VHDL等的硬件描述语言(HDL)或其他可用的程序来实现。上述软件可设置在任何已知的计算机可用媒体中,例如磁带、半导体、磁盘、光盘(如CD-ROM、DVD-ROM等)、网络、有线连线、无线或其他通讯媒体。本发明的装置及方法的实施例可包含在半导体智慧财产权核心内,例如微处理器核心(由HDL具体化),并转换成集成电路的硬件产品。此外,本发明实施例所述的装置及方法可以硬件与软件的结合方式具体化。因此,本发明不应限定于已公开的实施例,而应视后附的申请专利范围所界定者为准。具体而言,本发明可实施于微处理器装置中,其可被使用于通用计算机。最后,本领域技术人员,可基于本发明所公开的概念以及特定实施例,在不脱离本发明的精神和范围内,可做些许更动与润饰以达到本发明的相同目的。
Claims (10)
1.一种存储器子系统,设置于一微处理器内,包括:
一第一级快取存储器;
一第二级快取存储器;以及
一预取快取存储器,用以从一外部存储器预测并预取快取列,
其中上述第二级快取存储器以及上述预取快取存储器允许相同的上述快取列存在于上述第二级快取存储器以及上述预取快取存储器两者,
其中当上述第一级快取存储器所产生的关于一快取列的一请求命中上述第二级快取存储器以及上述预取快取存储器两者时,上述预取快取存储器使存在于上述预取快取存储器的上述快取列无效,而上述第二级快取存储器提供存在于上述第二级快取存储器的上述快取列至上述第一级快取存储器。
2.如权利要求1所述的存储器子系统,其中上述第二级快取存储器以及上述预取快取存储器共同地提供一单一回应至上述第一级快取存储器。
3.如权利要求1所述的存储器子系统,其中上述第二级快取存储器以及上述预取快取存储器皆配置相同数量的管线阶段,其同时地在相同顺序中处理上述第一级快取存储器所产生的上述请求。
4.如权利要求1所述的存储器子系统,其中当上述请求仅命中上述预取快取存储器时,上述预取快取存储器提供上述快取列至上述第二级快取存储器,而上述第二级快取存储器提供上述快取列至上述第一级快取存储器。
5.如权利要求1所述的存储器子系统,其中上述预取快取存储器从上述外部存储器预取一快取列,而不需询问上述第二级快取存储器关于上述快取列的状态。
6.一种快取数据的方法,适用于一微处理器的一存储器子系统,其中上述微处理器用以存取一外部存储器并包括一第一级快取存储器、一第二级快取存储器以及一预取快取存储器,以及上述预取快取存储器用以从上述外部存储器预测并预取至少一快取列,上述方法包括:
通过上述第二级快取存储器以及上述预取快取存储器,允许相同的上述快取列存在于上述第二级快取存储器以及上述预取快取存储器两者;
决定由上述第一级快取存储器所产生的关于上述快取列的一请求是否命中上述第二级快取存储器以及上述预取快取存储器两者;以及
当上述请求命中上述第二级快取存储器以及上述预取快取存储器两者时:
通过上述预取快取存储器,使存在于上述预取快取存储器的上述快取列无效;以及
通过上述第二级快取存储器,提供存在于上述第二级快取存储器的上述快取列至上述第一级快取存储器。
7.如权利要求6所述的快取数据的方法,还包括:
通过上述第二级快取存储器以及上述预取快取存储器,共同地提供一单一回应至上述第一级快取存储器。
8.如权利要求6所述的快取数据的方法,还包括:
通过在相同顺序中每一上述第二级快取存储器以及上述预取快取存储器的相同数量的管线阶段,同时地处理上述第一级快取存储器所产生的上述请求。
9.如权利要求6所述的快取数据的方法,还包括:
当上述请求仅命中上述预取快取存储器时:
通过上述预取快取存储器,提供上述快取列至上述第二级快取存储器;以及
通过上述第二级快取存储器,提供上述快取列至上述第一级快取存储器。
10.如权利要求6所述的快取数据的方法,还包括:
通过上述预取快取存储器,从上述外部存储器预取一快取列,而不需询问上述第二级快取存储器关于上述快取列的状态。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US22479209P | 2009-07-10 | 2009-07-10 | |
US61/224,792 | 2009-07-10 | ||
US12/763,938 US8234450B2 (en) | 2009-07-10 | 2010-04-20 | Efficient data prefetching in the presence of load hits |
US12/763,938 | 2010-04-20 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102201295A Division CN101859287B (zh) | 2009-07-10 | 2010-06-25 | 微处理器、存储器子系统以及快取数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102591813A CN102591813A (zh) | 2012-07-18 |
CN102591813B true CN102591813B (zh) | 2014-09-17 |
Family
ID=43428336
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102201295A Active CN101859287B (zh) | 2009-07-10 | 2010-06-25 | 微处理器、存储器子系统以及快取数据的方法 |
CN201110383419.6A Active CN102541771B (zh) | 2009-07-10 | 2010-06-25 | 微处理器以及快取数据的方法 |
CN201110383422.8A Active CN102591813B (zh) | 2009-07-10 | 2010-06-25 | 微处理器、存储器子系统以及快取数据的方法 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102201295A Active CN101859287B (zh) | 2009-07-10 | 2010-06-25 | 微处理器、存储器子系统以及快取数据的方法 |
CN201110383419.6A Active CN102541771B (zh) | 2009-07-10 | 2010-06-25 | 微处理器以及快取数据的方法 |
Country Status (3)
Country | Link |
---|---|
US (3) | US8234450B2 (zh) |
CN (3) | CN101859287B (zh) |
TW (3) | TWI497295B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101681282A (zh) | 2006-12-06 | 2010-03-24 | 弗森多系统公司(dba弗森-艾奥) | 用于共享的、前端、分布式raid的装置、系统和方法 |
US8706968B2 (en) * | 2007-12-06 | 2014-04-22 | Fusion-Io, Inc. | Apparatus, system, and method for redundant write caching |
US8234450B2 (en) | 2009-07-10 | 2012-07-31 | Via Technologies, Inc. | Efficient data prefetching in the presence of load hits |
US9552293B1 (en) * | 2012-08-06 | 2017-01-24 | Google Inc. | Emulating eviction data paths for invalidated instruction cache |
US9280474B2 (en) | 2013-01-03 | 2016-03-08 | Intel Corporation | Adaptive data prefetching |
US10799734B2 (en) * | 2013-02-27 | 2020-10-13 | Amazon Technologies, Inc. | Fire suppression system for sub-floor space |
US10647304B2 (en) * | 2013-03-14 | 2020-05-12 | Carl Heinz Reichle | Anti-fogging system for single engine aircraft |
US10558571B2 (en) | 2014-03-20 | 2020-02-11 | Sybase, Inc. | Second level database file cache for row instantiation |
US10216640B2 (en) * | 2014-03-21 | 2019-02-26 | Samsung Electronics Co., Ltd. | Opportunistic cache injection of data into lower latency levels of the cache hierarchy |
US10514920B2 (en) * | 2014-10-20 | 2019-12-24 | Via Technologies, Inc. | Dynamically updating hardware prefetch trait to exclusive or shared at program detection |
US20170123796A1 (en) * | 2015-10-29 | 2017-05-04 | Intel Corporation | Instruction and logic to prefetch information from a persistent memory |
US10073775B2 (en) | 2016-04-01 | 2018-09-11 | Intel Corporation | Apparatus and method for triggered prefetching to improve I/O and producer-consumer workload efficiency |
US11243883B2 (en) * | 2019-05-24 | 2022-02-08 | Texas Instruments Incorporated | Cache coherence shared state suppression |
US11681514B2 (en) * | 2020-12-29 | 2023-06-20 | Pixart Imaging Inc. | Mouse chip easily updating firmware and operating method thereof |
US20240111684A1 (en) * | 2022-09-30 | 2024-04-04 | Advanced Micro Devices, Inc. | Multi-level starvation widget |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065098A (en) * | 1997-09-18 | 2000-05-16 | International Business Machines Corporation | Method for maintaining multi-level cache coherency in a processor with non-inclusive caches and processor implementing the same |
CN1414467A (zh) * | 2002-06-18 | 2003-04-30 | 智慧第一公司 | 选择性执行预取指令的微处理器与方法 |
CN1501259A (zh) * | 2002-10-10 | 2004-06-02 | 英特尔公司 | 便于具有通用读/写模式的存储器数据存取的装置和方法 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5956744A (en) * | 1995-09-08 | 1999-09-21 | Texas Instruments Incorporated | Memory configuration cache with multilevel hierarchy least recently used cache entry replacement |
US5845101A (en) * | 1997-05-13 | 1998-12-01 | Advanced Micro Devices, Inc. | Prefetch buffer for storing instructions prior to placing the instructions in an instruction cache |
US6138206A (en) * | 1997-06-12 | 2000-10-24 | International Business Machines Corporation | Data register for multicycle data cache read |
US6430654B1 (en) * | 1998-01-21 | 2002-08-06 | Sun Microsystems, Inc. | Apparatus and method for distributed non-blocking multi-level cache |
US6345340B1 (en) * | 1998-02-17 | 2002-02-05 | International Business Machines Corporation | Cache coherency protocol with ambiguous state for posted operations |
US6275885B1 (en) | 1998-09-30 | 2001-08-14 | Compaq Computer Corp. | System and method for maintaining ownership of a processor bus while sending a programmed number of snoop cycles to the processor cache |
US6535962B1 (en) * | 1999-11-08 | 2003-03-18 | International Business Machines Corporation | System and method for prefetching data using a hardware prefetch mechanism |
US7000081B2 (en) * | 2002-02-12 | 2006-02-14 | Ip-First, Llc | Write back and invalidate mechanism for multiple cache lines |
US20030167379A1 (en) * | 2002-03-01 | 2003-09-04 | Soltis Donald Charles | Apparatus and methods for interfacing with cache memory |
US20040103251A1 (en) * | 2002-11-26 | 2004-05-27 | Mitchell Alsup | Microprocessor including a first level cache and a second level cache having different cache line sizes |
TWI220944B (en) * | 2003-03-18 | 2004-09-11 | Faraday Tech Corp | Cache controller unit architecture and applied method |
US7188215B2 (en) * | 2003-06-19 | 2007-03-06 | Ip-First, Llc | Apparatus and method for renaming a cache line |
US7177985B1 (en) * | 2003-05-30 | 2007-02-13 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US6862027B2 (en) * | 2003-06-30 | 2005-03-01 | Microsoft Corp. | System and method for parallel execution of data generation tasks |
TWI228681B (en) * | 2003-10-23 | 2005-03-01 | Ip First Llc | Cache memory and method for handling effects of external snoops colliding with in-flight operations internally to the cache |
WO2005119465A1 (en) * | 2004-06-01 | 2005-12-15 | Ssd Company Limited | Data processing unit and bus arbitration unit |
US8407432B2 (en) * | 2005-06-30 | 2013-03-26 | Intel Corporation | Cache coherency sequencing implementation and adaptive LLC access priority control for CMP |
US7590805B2 (en) | 2005-12-29 | 2009-09-15 | Intel Corporation | Monitor implementation in a multicore processor with inclusive LLC |
US8032711B2 (en) * | 2006-12-22 | 2011-10-04 | Intel Corporation | Prefetching from dynamic random access memory to a static random access memory |
US7769955B2 (en) * | 2007-04-27 | 2010-08-03 | Arm Limited | Multiple thread instruction fetch from different cache levels |
US7908439B2 (en) | 2007-06-25 | 2011-03-15 | International Business Machines Corporation | Method and apparatus for efficient replacement algorithm for pre-fetcher oriented data cache |
US8234450B2 (en) | 2009-07-10 | 2012-07-31 | Via Technologies, Inc. | Efficient data prefetching in the presence of load hits |
-
2010
- 2010-04-20 US US12/763,938 patent/US8234450B2/en active Active
- 2010-06-25 CN CN2010102201295A patent/CN101859287B/zh active Active
- 2010-06-25 TW TW102130406A patent/TWI497295B/zh active
- 2010-06-25 CN CN201110383419.6A patent/CN102541771B/zh active Active
- 2010-06-25 TW TW102130405A patent/TWI506437B/zh active
- 2010-06-25 CN CN201110383422.8A patent/CN102591813B/zh active Active
- 2010-06-25 TW TW099120764A patent/TWI411915B/zh active
-
2012
- 2012-06-27 US US13/535,152 patent/US8489823B2/en active Active
- 2012-06-27 US US13/535,188 patent/US8543765B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065098A (en) * | 1997-09-18 | 2000-05-16 | International Business Machines Corporation | Method for maintaining multi-level cache coherency in a processor with non-inclusive caches and processor implementing the same |
CN1414467A (zh) * | 2002-06-18 | 2003-04-30 | 智慧第一公司 | 选择性执行预取指令的微处理器与方法 |
CN1501259A (zh) * | 2002-10-10 | 2004-06-02 | 英特尔公司 | 便于具有通用读/写模式的存储器数据存取的装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201351147A (zh) | 2013-12-16 |
TWI506437B (zh) | 2015-11-01 |
US20120272004A1 (en) | 2012-10-25 |
CN102541771A (zh) | 2012-07-04 |
CN101859287B (zh) | 2012-08-22 |
TW201102817A (en) | 2011-01-16 |
TWI497295B (zh) | 2015-08-21 |
US8234450B2 (en) | 2012-07-31 |
US8543765B2 (en) | 2013-09-24 |
CN102541771B (zh) | 2015-01-07 |
CN101859287A (zh) | 2010-10-13 |
US8489823B2 (en) | 2013-07-16 |
TWI411915B (zh) | 2013-10-11 |
US20120272003A1 (en) | 2012-10-25 |
US20110010501A1 (en) | 2011-01-13 |
CN102591813A (zh) | 2012-07-18 |
TW201351146A (zh) | 2013-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102591813B (zh) | 微处理器、存储器子系统以及快取数据的方法 | |
KR100360064B1 (ko) | 고도로파이프라인된버스구조 | |
US20110167222A1 (en) | Unbounded transactional memory system and method | |
US7484041B2 (en) | Systems and methods for loading data into the cache of one processor to improve performance of another processor in a multiprocessor system | |
US8762651B2 (en) | Maintaining cache coherence in a multi-node, symmetric multiprocessing computer | |
WO2006034289A1 (en) | Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches | |
US7620954B2 (en) | Mechanism for handling load lock/store conditional primitives in directory-based distributed shared memory multiprocessors | |
US8266386B2 (en) | Structure for maintaining memory data integrity in a processor integrated circuit using cache coherency protocols | |
US7058767B2 (en) | Adaptive memory access speculation | |
CN113900968B (zh) | 多副本非原子写的存储序同步操作实现方法与实现装置 | |
US12066941B2 (en) | Method for executing atomic memory operations when contested | |
US20070073979A1 (en) | Snoop processing for multi-processor computing system | |
US11550716B2 (en) | I/O agent | |
US8195892B2 (en) | Structure for silent invalid state transition handling in an SMP environment | |
US7526611B2 (en) | Unified processor cache model in multiprocessor system | |
CN102819420A (zh) | 基于命令取消的高速缓存流水线锁步并发执行方法 | |
WO2022216597A1 (en) | I/o agent | |
US20060129726A1 (en) | Methods and apparatus for processing a command |
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 |