CN101859287B - 微处理器、存储器子系统以及快取数据的方法 - Google Patents
微处理器、存储器子系统以及快取数据的方法 Download PDFInfo
- Publication number
- CN101859287B CN101859287B CN2010102201295A CN201010220129A CN101859287B CN 101859287 B CN101859287 B CN 101859287B CN 2010102201295 A CN2010102201295 A CN 2010102201295A CN 201010220129 A CN201010220129 A CN 201010220129A CN 101859287 B CN101859287 B CN 101859287B
- Authority
- CN
- China
- Prior art keywords
- mentioned
- memory cache
- request
- order
- level
- 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
Images
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
技术领域
本发明涉及微处理器,特别涉及在微处理器的快取存储器中数据的预取。
背景技术
从系统存储器预取数据和/或指令至微处理器的快取存储器的优势是已知的。随着存储器存取的等待时间(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 (8)
1.一种微处理器,用以存取一外部存储器,包括:
一第一级快取存储器;
一第二级快取存储器;以及
一总线接口单元,用以介接上述第一级快取存储器及上述第二级快取存储器至一总线,其中上述总线用以存取上述外部存储器,以及上述总线接口单元在处理来自上述第二级快取存储器的请求之前,优先处理来自上述第一级快取存储器的请求;
其中上述第二级快取存储器用以:
产生一第一请求至上述总线接口单元,以从上述外部存储器提取一快取列;
当上述第一请求产生时,检测至上述快取列的一第二请求以及一第三请求的产生,其中上述第二请求由上述总线接口单元所产生的一监听请求,而上述第三请求由上述第一级快取存储器所产生;
如果该第二请求与第三请求同时产生,则判断于上述总线上完成上述第一请求的一传输是否被重试;
当上述传输被重试时,产生一未命中回应;以及
当上述传输不被重试时,产生一命中回应。
2.如权利要求1所述的微处理器,其中上述第二级快取存储器包括:
一预取快取存储器,用以从上述外部存储器预测并预取快取列。
3.如权利要求1所述的微处理器,其中上述第二级快取存储器用以在产生上述命中回应之后,提供上述快取列至上述第一级快取存储器,其中对应于从上述第二级快取存储器所接收的上述快取列,上述第一级快取存储器取得上述快取列的所有权并回应上述监听请求。
4.如权利要求1所述的微处理器,其中对应于上述第二级快取存储器产生上述未命中回应,上述第一级快取存储器产生关于上述快取列的一请求至上述总线接口单元。
5.一种快取数据的方法,适用于一微处理器,其中上述微处理器用以存取一外部存储器并包括一第一级快取存储器、一第二级快取存储器以及一总线接口单元,以及上述总线接口单元用以介接上述第一级快取存储器及上述第二级快取存储器至用来存取上述外部存储器的一总线,上述方法包括:
通过上述第二级快取存储器,产生一第一请求至上述总线接口单元,以从上述外部存储器提取一快取列,其中上述总线接口单元在处理来自上述第二级快取存储器的请求之前,优先处理来自上述第一级快取存储器的请求;
当上述第一请求产生时,通过上述第二级快取存储器来检测至上述快取列的一第二请求以及一第三请求的产生,其中上述第二请求由上述总线接口单元所产生的一监听请求,而上述第三请求由上述第一级快取存储器所产生;
如果该第二请求与第三请求同时产生,则通过上述第二级快取存储器,判断于上述总线上完成上述第一请求的一传输是否被重试;
当上述传输被重试时,产生一未命中回应;以及
当上述传输不被重试时,产生一命中回应。
6.如权利要求5所述的快取数据的方法,其中上述第二级快取存储器包括:
一预取快取存储器,用以从上述外部存储器预测并预取快取列。
7.如权利要求5所述的快取数据的方法,还包括:
在产生上述命中回应之后,通过上述第二级快取存储器,提供上述快取列至上述第一级快取存储器;以及
对应于从上述第二级快取存储器所接收的上述快取列,通过上述第一级快取存储器,取得上述快取列的所有权并回应上述监听请求。
8.如权利要求5所述的快取数据的方法,还包括:
对应于上述第二级快取存储器产生上述未命中回应,通过上述第一级快取存储器,产生关于上述快取列的一请求至上述总线接口单元。
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 Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110383419.6A Division CN102541771B (zh) | 2009-07-10 | 2010-06-25 | 微处理器以及快取数据的方法 |
CN201110383422.8A Division CN102591813B (zh) | 2009-07-10 | 2010-06-25 | 微处理器、存储器子系统以及快取数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101859287A CN101859287A (zh) | 2010-10-13 |
CN101859287B true CN101859287B (zh) | 2012-08-22 |
Family
ID=43428336
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110383419.6A Active CN102541771B (zh) | 2009-07-10 | 2010-06-25 | 微处理器以及快取数据的方法 |
CN2010102201295A Active CN101859287B (zh) | 2009-07-10 | 2010-06-25 | 微处理器、存储器子系统以及快取数据的方法 |
CN201110383422.8A Active CN102591813B (zh) | 2009-07-10 | 2010-06-25 | 微处理器、存储器子系统以及快取数据的方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110383419.6A Active CN102541771B (zh) | 2009-07-10 | 2010-06-25 | 微处理器以及快取数据的方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110383422.8A Active CN102591813B (zh) | 2009-07-10 | 2010-06-25 | 微处理器、存储器子系统以及快取数据的方法 |
Country Status (3)
Country | Link |
---|---|
US (3) | US8234450B2 (zh) |
CN (3) | CN102541771B (zh) |
TW (3) | TWI411915B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080140724A1 (en) | 2006-12-06 | 2008-06-12 | David Flynn | Apparatus, system, and method for servicing object requests within a storage controller |
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 |
WO2014107148A1 (en) | 2013-01-03 | 2014-07-10 | 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 |
US9891916B2 (en) | 2014-10-20 | 2018-02-13 | Via Technologies, Inc. | Dynamically updating hardware prefetch trait to exclusive or shared in multi-memory access agent system |
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 |
---|---|---|---|---|
US6535962B1 (en) * | 1999-11-08 | 2003-03-18 | International Business Machines Corporation | System and method for prefetching data using a hardware prefetch mechanism |
CN1820257A (zh) * | 2002-11-26 | 2006-08-16 | 先进微装置公司 | 包括具有不同缓存线大小的第一级高速缓存及第二级高速缓存的微处理器 |
CN101241475A (zh) * | 2006-12-22 | 2008-08-13 | 英特尔公司 | 从动态随机存取存储器到静态随机存取存储器的预取 |
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 |
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 |
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 |
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 |
TWI227402B (en) * | 2002-06-18 | 2005-02-01 | Ip First Llc | Microprocessor and method for performing selective prefetch based on bus activity level |
US6957317B2 (en) * | 2002-10-10 | 2005-10-18 | Intel Corporation | Apparatus and method for facilitating memory data access with generic read/write patterns |
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 |
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 CN201110383419.6A patent/CN102541771B/zh active Active
- 2010-06-25 CN CN2010102201295A patent/CN101859287B/zh active Active
- 2010-06-25 TW TW099120764A patent/TWI411915B/zh active
- 2010-06-25 TW TW102130406A patent/TWI497295B/zh active
- 2010-06-25 CN CN201110383422.8A patent/CN102591813B/zh active Active
- 2010-06-25 TW TW102130405A patent/TWI506437B/zh active
-
2012
- 2012-06-27 US US13/535,188 patent/US8543765B2/en active Active
- 2012-06-27 US US13/535,152 patent/US8489823B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6535962B1 (en) * | 1999-11-08 | 2003-03-18 | International Business Machines Corporation | System and method for prefetching data using a hardware prefetch mechanism |
CN1820257A (zh) * | 2002-11-26 | 2006-08-16 | 先进微装置公司 | 包括具有不同缓存线大小的第一级高速缓存及第二级高速缓存的微处理器 |
CN101241475A (zh) * | 2006-12-22 | 2008-08-13 | 英特尔公司 | 从动态随机存取存储器到静态随机存取存储器的预取 |
Also Published As
Publication number | Publication date |
---|---|
CN102541771A (zh) | 2012-07-04 |
CN101859287A (zh) | 2010-10-13 |
US8489823B2 (en) | 2013-07-16 |
US8234450B2 (en) | 2012-07-31 |
US20120272004A1 (en) | 2012-10-25 |
TW201351147A (zh) | 2013-12-16 |
TWI506437B (zh) | 2015-11-01 |
TWI497295B (zh) | 2015-08-21 |
CN102591813A (zh) | 2012-07-18 |
CN102591813B (zh) | 2014-09-17 |
TWI411915B (zh) | 2013-10-11 |
US20120272003A1 (en) | 2012-10-25 |
US8543765B2 (en) | 2013-09-24 |
US20110010501A1 (en) | 2011-01-13 |
TW201351146A (zh) | 2013-12-16 |
CN102541771B (zh) | 2015-01-07 |
TW201102817A (en) | 2011-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101859287B (zh) | 微处理器、存储器子系统以及快取数据的方法 | |
US8706973B2 (en) | Unbounded transactional memory system and method | |
CN101322103B (zh) | 无约束事务存储器系统及其方法 | |
JP4680851B2 (ja) | システムコントローラ,同一アドレスリクエストキューイング防止方法および情報処理装置 | |
US8423736B2 (en) | Maintaining cache coherence in a multi-node, symmetric multiprocessing computer | |
JP5623370B2 (ja) | キャッシュ・メモリに対する直接アクセスのための装置および方法 | |
US8266386B2 (en) | Structure for maintaining memory data integrity in a processor integrated circuit using cache coherency protocols | |
WO2009054959A1 (en) | Coherent dram prefetcher | |
CN113515470A (zh) | 高速缓冲存储器寻址 | |
US7058767B2 (en) | Adaptive memory access speculation | |
US20200319889A1 (en) | Speculative instruction wakeup to tolerate draining delay of memory ordering violation check buffers | |
JP5607603B2 (ja) | キャッシュ管理のための方法、装置、およびコンピュータ・プログラム | |
US11586462B2 (en) | Memory access request for a memory protocol | |
US20060143333A1 (en) | I/O hub resident cache line monitor and device register update | |
KR101110550B1 (ko) | 프로세서 장치, 멀티 프로세서 시스템 및 멀티 프로세서 시스템의 공유메모리 접근 방법 | |
US8108618B2 (en) | Method and apparatus for maintaining memory data integrity in an information handling system using cache coherency protocols | |
US8195892B2 (en) | Structure for silent invalid state transition handling in an SMP environment | |
KR20230054447A (ko) | 경합 시 원자 메모리 동작을 실행하는 방법 | |
WO2023055485A1 (en) | Suppressing cache line modification | |
US20060129726A1 (en) | Methods and apparatus for processing a command | |
JP2006318194A (ja) | メモリ制御システム、コンピュータシステム、メモリ制御方法、プログラム及び記憶媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |