微处理器、存储器子系统以及快取数据的方法

文档序号:6439342阅读:121来源:国知局
专利名称:微处理器、存储器子系统以及快取数据的方法
技术领域
本发明涉及微处理器,特别涉及在微处理器的快取存储器中数据的预取。
背景技术
从系统存储器预取数据和/或指令至微处理器的快取存储器的优势是已知的。随着存储器存取的等待时间(latency)以及微处理器核心时钟频率之间的不同会持续增加, 预取数据和/或指令的优势会变的更重要。然而,由微处理器所产生的预取请求会放置额外的载入请求(request)在微处理器的有限资源中,其中微处理器的有限资源亦被正常载入请求以及存储请求所需要,例如微处理器的外部总线、介接(interface)微处理器至外部总线的总线接口单元、以及微处理器的不同快取存储器。因此,设计能有效率地利用微处理器的资源的预取器(prefetcher)是重要的。

发明内容
本发明提供一种存储器子系统,设置于一微处理器内。上述存储器子系统包括一第一级快取存储器;一第二级快取存储器;以及,一预取快取存储器,用以从一外部存储器预测并预取快取列至上述微处理器。上述第二级快取存储器以及上述预取快取存储器允许相同的上述快取列存在于上述第二级快取存储器以及上述预取快取存储器两者。当上述第一级快取存储器所产生的关于一快取列的一请求命中上述第二级快取存储器以及上述预取快取存储器两者时,上述预取快取存储器使存在于上述预取快取存储器的上述快取列无效,而上述第二级快取存储器提供存在于上述第二级快取存储器的上述快取列至上述第一级快取存储器。再者,本发明提供一种快取数据的方法,适用于一微处理器的一存储器子系统,其中上述微处理器用以存取一外部存储器并包括一第一级快取存储器、一第二级快取存储器以及一预取快取存储器,以及上述预取快取存储器用以从上述外部存储器预测并预取至少一快取列至上述微处理器。上述方法包括通过上述第二级快取存储器以及上述预取快取存储器,允许相同的上述快取列存在于上述第二级快取存储器以及上述预取快取存储器两者;决定由上述第一级快取存储器所产生的关于上述快取列的一请求是否命中上述第二级快取存储器以及上述预取快取存储器两者;以及,当上述请求命中上述第二级快取存储器以及上述预取快取存储器两者时通过上述预取快取存储器,使存在于上述预取快取存储器的上述快取列无效;以及,通过上述第二级快取存储器,提供存在于上述第二级快取存储器的上述快取列至上述第一级快取存储器。






图I是显示根据本发明一实施例所述的微处理器的方块图2是显示根据本发明所述的图I中微处理器的存储器子系统的方块图; 图3是显示图2中每一回应缓冲器的相关栏位;
图4是显示图2中第二级预取快取存储器所产生的回应表;以及图5至图7是显示图I中存储器子系统的操作的流程图。
主要元件符号说明
100 微处理器; 102 指令提取单元;
指令解码单元;106 运算元提取单元;
多个执行单元;
结果写回/指令引退单元;114 存储器子系统;
第一级数据快取存储器;
第二级快取存储器;
第二级预取快取存储器;
总线接口单元;134 外部总线;
204,212 命中/未命中回应;
206 数据与快取列状态;208 载入请求;
216 不重试信号;
222 总线核准信号;
226 总线载入请求;
232 取消信号。
104
108
112
122
124
126
128
214
218
224
228
>监听请求;
>取消完成信号; >总线载入请求; >监听回应;以及
具体实施例方式为让本发明的上述和其他目的、特征、和优点能更明显易懂,下文特举出优选实施例,并配合附图,作详细说明如下实施例参考图1,图I是显示根据本发明一实施例所述的微处理器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是显示根据本发明所述的图I中微处理器100的存储器子系统 114的方块图。存储器子系统114包括第一级数据快取存储器122、第二级快取存储器124 以及第二级预取快取存储器126,其分别耦接于图I的总线接口单元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的第I列至第4列以及图5的步骤502至步骤512所显示。参考图5,图5是显示图I中存储器子系统的操作的流程图。流程开始在步骤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亦未命中第二级快取
7存储器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是显示图I中存储器子系统的操作的流程图。流程开始在步骤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。然而,传统的解决方式会引入(intiOduce)在第二级预取快取存储器 126的预取中的等待时间(latency),并且需要额外的逻辑电路。图7的实施例描述通过第二级快取存储器124以及第二级预取快取存储器126回应载入请求208来完全消除标签询问(tag query)。具体地,假如载入请求208命中第二级快取存储器124以及第二级预取快取存储器126两者,第二级快取存储器124会对应于载入请求208来提供数据,其将保证假如有已被修改的数据在第二级快取存储器124内,则第二级快取存储器124的数据将被退回(returned)。再者,假如载入请求208命中第二级快取存储器124以及第二级预取快取存储器126两者,第二级预取快取存储器126会使该数据无效。存储器子系统114的操作描述在图7中。参考图7,图7是显示图I中存储器子系统的操作的流程图。流程开始在步骤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和/或一第一级指令快取存储器。虽然本发明已以优选实施例公开如上,然其并非用以限定本发明,本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰。例如,软件可致能如本发明所述的装置及方法的功能、制造、模型化、模拟、描述和/或测试,其能通过使用通用程序设计语言(例如(、0++)、包括¥61^1呢、册1^、¥!101^等的硬件描述语言(HDL)或其他可用的程序来实现。上述软件可设置在任何已知的计算机可用媒体中,例如磁带、半导体、磁盘、光盘(如⑶-R0M、DVD-R0M等)、网络、有线连线、无线或其他通讯媒体。本发明的装置及方法的实施例可包含在半导体智慧财产权核心内,例如微处理器核心(由HDL具体化),并转换成集成电路的硬件产品。此外,本发明实施例所述的装置及方法可以硬件与软件的结合方式具体化。因此,本发明不应限定于已公开的实施例,而应视后附的申请专利范围所界定者为准。具体而言,本发明可实施于微处理器装置中,其可被使用于通用计算机。最后,本领域技术人员,可基于本发明所公开的概念以及特定实施例,在不脱离本发明的精神和范围内, 可做些许更动与润饰以达到本发明的相同目的。
权利要求
1.一种存储器子系统,设置于一微处理器内,包括一第一级快取存储器;一第二级快取存储器;以及一预取快取存储器,用以从一外部存储器预测并预取快取列至上述微处理器,其中上述第二级快取存储器以及上述预取快取存储器允许相同的上述快取列存在于上述第二级快取存储器以及上述预取快取存储器两者,其中当上述第一级快取存储器所产生的关于一快取列的一请求命中上述第二级快取存储器以及上述预取快取存储器两者时,上述预取快取存储器使存在于上述预取快取存储器的上述快取列无效,而上述第二级快取存储器提供存在于上述第二级快取存储器的上述快取列至上述第一级快取存储器。
2.如权利要求I所述的存储器子系统,其中上述第二级快取存储器以及上述预取快取存储器共同地提供一单一回应至上述第一级快取存储器。
3.如权利要求I所述的存储器子系统,其中上述第二级快取存储器以及上述预取快取存储器皆配置相同数量的管线阶段,其同时地在相同顺序中处理上述第一级快取存储器所产生的上述请求。
4.如权利要求I所述的存储器子系统,其中当上述请求仅命中上述预取快取存储器时,上述预取快取存储器提供上述快取列至上述第二级快取存储器,而上述第二级快取存储器提供上述快取列至上述第一级快取存储器。
5.如权利要求I所述的存储器子系统,其中上述预取快取存储器从上述外部存储器预取一快取列,而不需询问上述第二级快取存储器关于上述快取列的状态。
6.一种快取数据的方法,适用于一微处理器的一存储器子系统,其中上述微处理器用以存取一外部存储器并包括一第一级快取存储器、一第二级快取存储器以及一预取快取存储器,以及上述预取快取存储器用以从上述外部存储器预测并预取至少一快取列至上述微处理器,上述方法包括通过上述第二级快取存储器以及上述预取快取存储器,允许相同的上述快取列存在于上述第二级快取存储器以及上述预取快取存储器两者;决定由上述第一级快取存储器所产生的关于上述快取列的一请求是否命中上述第二级快取存储器以及上述预取快取存储器两者;以及当上述请求命中上述第二级快取存储器以及上述预取快取存储器两者时通过上述预取快取存储器,使存在于上述预取快取存储器的上述快取列无效;以及通过上述第二级快取存储器,提供存在于上述第二级快取存储器的上述快取列至上述第一级快取存储器。
7.如权利要求6所述的快取数据的方法,还包括通过上述第二级快取存储器以及上述预取快取存储器,共同地提供一单一回应至上述第一级快取存储器。
8.如权利要求6所述的快取数据的方法,还包括通过在相同顺序中每一上述第二级快取存储器以及上述预取快取存储器的相同数量的管线阶段,同时地处理上述第一级快取存储器所产生的上述请求。
9.如权利要求6所述的快取数据的方法,还包括当上述请求仅命中上述预取快取存储器时通过上述预取快取存储器,提供上述快取列至上述第二级快取存储器;以及通过上述第二级快取存储器,提供上述快取列至上述第一级快取存储器。
10.如权利要求6所述的快取数据的方法,还包括通过上述预取快取存储器,从上述外部存储器预取一快取列,而不需询问上述第二级快取存储器关于上述快取列的状态。
全文摘要
微处理器、存储器子系统以及快取数据的方法。该微处理器,用以存取一外部存储器。总线接口单元,用以介接第一级快取存储器及第二级快取存储器至用来存取外部存储器的总线。总线接口单元在处理来自第二级快取存储器的请求之前,优先处理来自第一级快取存储器的请求。第二级快取存储器产生第一请求至总线接口单元以从外部存储器提取快取列。当第一请求产生时,第二级快取存储器检测至快取列的由总线接口单元所产生的第二请求与由第一级快取存储器所产生的第三请求。第二级快取存储器判断于总线上完成第一请求的传输是否被重试,以便产生未命中或命中回应。
文档编号G06F13/16GK102591813SQ20111038342
公开日2012年7月18日 申请日期2010年6月25日 优先权日2009年7月10日
发明者柯林.艾迪, 柯林顿.T.戈洛尔, 罗德尼.E.虎克, 艾伯特.J.娄坡 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1