并发访问的组相联溢出缓存的制作方法

文档序号:6533357阅读:241来源:国知局
并发访问的组相联溢出缓存的制作方法
【专利摘要】本发明包括一种用于并发访问主缓存和溢出缓存的装置,包括一种核心逻辑单元,用于执行并行访问所述主缓存和所述溢出缓存的第一指令,确定所述主缓存是否存储请求的数据,确定所述溢出缓存是否存储所述请求的数据,以及当所述主缓存和所述溢出缓存未存储所述请求的数据时访问主存储器,其中所述溢出缓存存储溢出所述主缓存的数据。
【专利说明】并发访问的组相联溢出缓存
[0001]相关申请案交叉申请
[0002]本发明要求2012年3月28日由Yolin Lih等人递交的发明名称为“并发访问的组相联受害者缓存(Concurrently Accessed Set Associative Victim Cache) ” 的第61/616742号美国临时专利申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文本中,如全文再现一般。
[0003]关于由联邦政府赞助的
[0004]研究或开发的声明
[0005]不适用。
[0006]缩微平片附件的引用
[0007]不适用。

【背景技术】
[0008]几十年来,半导体设计和制造的改进极大地提高了处理器性能和主存储器密度。随着处理器的时钟速度增加,主存储器变得更大,当处理器访问主存储器时可能出现较长的时延周期。可实施缓存等级(如,不同缓存级别)以降低由频繁访问主存储器引起的时延和性能瓶颈。缓存可能是一个或多个小型高速相联存储器,其降低访问主存储器的平均时间。为了降低访问主存储器的平均时间,缓存提供了经常引用的主存储器位置的副本。当处理器在主存储器中读取或写入位置时,处理器首先检查缓存存储器中是否存在数据副本。如果存在,处理器指向缓存存储器而不是速度较慢的主存储器。
[0009]若想缓存有效,处理器需要不断地访问缓存而不是主存储器。遗憾的是,缓存的大小通常较小及限制存储主存储器内数据的较小的子集。大小限制可固有地限制缓存内的“命中”率。当缓存保存处理器请求的有效数据副本时,发生“命中”,而当缓存无法保存请求的数据的有效副本时,发生“缺失”。当缓存内发生“缺失”,处理器可随后访问速度较慢的主存储器。因此,缓存内的频繁“缺失”对时延和处理器性能造成负面影响。一种降低“缺失”率的方法是增加缓存的大小和缓存内存储的信息量。但是,当缓存大小增加、变得更加复杂时,缓存性能(如,访问缓存所需的时间)通常降低。因此,通常在最小化“缺失”率和最大化缓存性能之间为缓存取得设计平衡。
[0010]可结合缓存实施受害者缓存以最小化缓存内发生的“缺失”的影响。例如,当缓存用新数据替换缓存中的旧数据时,缓存可移除旧数据并传输到受害者缓存待存储。移除老数据后,当处理器请求老数据时,缓存内可能发生“缺失”。处理器可随后访问受害者缓存以确定老数据是否存储在受害者缓存中。受害者缓存可能有益,因为访问受害者缓存而不是主存储器减少了引用从缓存中移除的缺失数据的时间。但是,受害者缓存可能有点不灵活、应用有限。例如,通常受害者缓存的大小较小,存储的信息比缓存少以避免损害处理器时钟速率。另外,在缓存内发生“缺失”之后,处理器访问受害者缓存时发生时延增加。换句话说,在访问受害者缓存之前,处理器可能需要等待至少一个时钟周期。因此,需要方案增加受害者缓存的灵活性和可用性,从而增加处理器性能。


【发明内容】

[0011]在一项实施例中,本发明包括一种用于访问主缓存和溢出缓存的装置,包括一种核心逻辑单元,用于执行并行访问所述主缓存和所述溢出缓存的第一指令,确定所述主缓存是否存储请求的数据,确定所述溢出缓存是否存储所述请求的数据,以及当所述主缓存和所述溢出缓存未存储所述请求的数据时访问主存储器,其中所述溢出缓存存储从所述主缓存溢出的数据。
[0012]在又一项实施例中,本发明包括一种用于并发访问主缓存和溢出缓存的装置,包括划分成多个主缓存块的主缓存、划分成多个溢出缓存块的溢出缓存、以及用于为所述主缓存和所述溢出缓存进行存储器管理的存储器管理单元(MMU),其中在相同时钟周期内访问所述主缓存和所述溢出缓存。
[0013]在又一项实施例中,本发明包括一种用于并发访问主缓存和溢出缓存的方法,所述方法包括,确定在主缓存内是否发生主缓存缺失,确定在溢出缓存内是否发生溢出缓存缺失,当在主缓存内发生主缓存缺失时使用第一缓存替换策略选择主缓存条目,当在溢出缓存内发生溢出缓存缺失时使用第二缓存替换策略选择溢出缓存条目,其中确定所述主缓存缺失和所述溢出缓存缺失是否发生在相同时钟周期内。
[0014]结合附图和权利要求书,可从以下的详细描述中更清楚地理解这些和其他特征。

【专利附图】

【附图说明】
[0015]为了更完整地理解本发明,现在参考以下结合附图和详细描述进行的简要描述,其中相同参考标号表不相同部分。
[0016]图1是通用计算机系统的实施例的示意图。
[0017]图2是具有在处理芯片上嵌入不同级别的缓存的通用计算机系统的另一实施例的示意图。
[0018]图3是主存储器和主缓存之间的组相联映射的实施例的示意图。
[0019]图4是主存储器和主缓存之间的组相联映射的另一项实施例的不意图。
[0020]图5是使用透写策略将写入指令实施到主存储器的方法的实施例的流程图。
[0021]图6是使用回写策略将写入指令实施到主存储器的方法的实施例的流程图。
[0022]图7是使用透写策略将读取指令实施到主存储器的方法的实施例的流程图。
[0023]图8是使用回写策略将读取指令实施到主存储器的方法的实施例的流程图。
[0024]图9是包括共享MMU/转换表的主缓存和溢出缓存的存储器子系统的实施例的示意图。

【具体实施方式】
[0025]最初应理解,尽管下文提供一个或多个实施例的说明性实施方案,但可使用任意数目的当前已知或现有的技术来实施所公开的系统和/或方法。本发明决不应限于下文所描述的说明性实施方案、图式和技术,包含本文所说明并描述的示范性设计和实施方案,而是可在所附权利要求书的范围以及其均等物的完整范围内修改。
[0026]本文中公开的是一种并发访问主缓存和溢出缓存的方法、装置以及系统。当核心逻辑单元(例如,处理器)执行访问主缓存的应用时,核心逻辑单元也可并行和/或在核心逻辑单元的相同时钟周期内访问溢出缓存。主缓存可配置为M路组相联,而溢出缓存可配置为N路组相联,其中M和N为整数。通过并发访问主缓存和溢出缓存,核心逻辑单元能够访问M+N路组相联存储器元件。溢出缓存可以是单独的存储器元件,其可用于实施与主缓存相同或者不同的替换策略。溢出缓存内的“命中”可提升到主缓存,以避免将数据清除到主存储器和/或到其余存储器子系统(例如,下一级缓存)。在一项实施例中,单个MMU可用于对主缓存和溢出缓存进行存储器管理功能,例如,地址转换和/或存储器保护。
[0027]图1是通用计算机系统100的实施例的不意图。通用计算机系统100可以是计算机或网络部件,其具有足够的处理能力、存储资源和网络吞吐能力来处理其上的必要工作量,例如通过网络传输和处理数据。在一项实施例中,通用计算机系统100可以是用来在网络内传输数据的任意网络设备,例如,路由器、交换机和/或网桥。通用计算机系统100可以包括一个或多个入端口或单元112和一个或多个出端口或单元114。在一项实施例中,入端口或单元112和出端口或单元114可以是物理和/或逻辑端口。入端口或单元112可耦合到接收器(Rx) 108,用于从其他网络设备接收信号和数据,而出端口或单元114可耦合到发射器(Tx) 110,用于向其他网络设备传输信号和数据。RxlOS和TxllO可为如下形式:调制解调器、调制解调器银行、以太网卡、通用串行总线(USB)接口卡、串行接口、令牌环卡、光纤分布式数据接口(FDDI)卡、无线局域网(WLAN)卡、无线收发器卡和/或其他公知网络设备,其中所述无线收发器卡包括码分多址(CDMA)、全球移动通信系统(GSM)、长期演进(LTE)、全球微波接入互操作性(WiMAX)和其他空中接口协议无线收发器卡。
[0028]通用计算机系统100还可包括耦合到Rxl08和TxllO的核心逻辑单元102,其中核心逻辑单元102可用于实施本文所述的任一方案,例如,访问主缓存104、溢出缓存106、主存储器116以及存储器子系统118的其他层。核心逻辑单元102还可用于实施下文详细描述的方法500、600、700和800。核心逻辑单元102可包括一个或多个中央处理器(CPU)芯片、现场可编程门阵列(FPGA)、专用集成电路(ASIC),和/或数字信号处理器(DSP),并且/或者可以是一个或多个ASIC的一部分。在一项实施例中,核心逻辑单元102可包括一个或多个处理器,其中每个处理器为多核处理器。
[0029]图1示出了核心逻辑单元102可耦合到辅助存储器109和存储器子系统118。辅助存储器109通常包括一个或多个磁盘驱动器、磁带驱动器、闪存存储器和/或其他易失性存储器部件。当存储器子系统118的容量不足以存储所有工作数据时,辅助存储器109可配置为溢流数据存储设备。辅助存储器109可以用于存储程序,当选择执行这些程序时,所述程序将加载到存储器子系统118中。存储器子系统118可用于为核心逻辑单元存储易失性数据和指令。在一项实施例中,存储器子系统118可包括一个或多个随机存取存储器(RAM)存储器部件(例如,静态RAM (SRAM)和动态RAM (DRAM))。访问存储器子系统118通常比访问辅助存储器109要快。辅助存储器109和/或存储器子系统118可以是非瞬时计算机可读介质,可以不包括瞬时、传播的信号。任一辅助存储器109和/或存储器子系统118可用来写入和/或读取(如,存储和/或加载)数据。核心逻辑单元102可用来从辅助存储器109和/或存储器子系统118写入和/或读取数据。
[0030]存储器子系统118可包括主缓存104、溢出缓存106和主存储器116。主缓存104可以是可组织成一个或多个缓存级别(例如,级别I(Ll)缓存和级别2 (L2)缓存)的数据缓存。主缓存104可存储从主存储器116获取的实际数据。与主存储器116向比,主缓存104通常可具有更快的访问速度和/或更小的存储容量。主缓存104可用于存储和/或加载物理地址或虚拟地址。例如,当核心逻辑单元102为单个处理器时,主缓存104可以存储虚拟地址。或者,当核心逻辑单元102为多处理器时,主缓存104可以存储物理地址。溢出缓存106可以是单独的存储器元件,用于存储从主缓存104移除的数据。当主缓存104已满、无法存储数据时,溢出缓存106可作为数据的溢出存储器。溢出缓存106的大小和溢出缓存106的配置将在下文详细论述。如上所述,主缓存104和溢出缓存106可以是RAM存储器部件(比如,SRAM)。
[0031]在主缓存104和/或溢出缓存106中发生“缺失”后,可访问主存储器116。在一项实施例中,主存储器116可以是主缓存104和溢出缓存106之后的下一级存储器。和主缓存和溢出缓存106相比,主存储器116的容量可能更大,但是运行较慢。存储队列(未在图1中示出)可缓存指定给主存储器116内的存储的主存储器地址和数据。将数据写入主存储器116之前,数据可以先放入存储队列。存储队列可以防止先读后写和先写后写的依赖错误。在一项实施例中,存储队列可以是内容可寻址存储器(CAM)。同样地,当在主缓存104和溢出缓存106中进行加载指令时,在从主存储器116中进行读取前,加载“缺失”队列(未在图1中示出)可以缓存缺失的主存储器地址。加载“缺失”队列在将从主存储器116读取的数据存储到主缓存104之前也可缓存从主存储器116中读取的数据。
[0032]图2是具有在处理芯片上嵌入不同级别的缓存的通用计算机系统200的另一实施例的示意图。通用计算机系统200包括具有片上缓存的两个处理芯片206。处理芯片206可用于储存核心逻辑单元102和主缓存级别。具体而言,图2示出了 LI缓存202和L2缓存204可嵌入到相同处理芯片206上作为核心逻辑单元102。LI缓存202和L2缓存204可以是主缓存104中发现的不同缓存级别。核心逻辑单元102在访问L2缓存204之前可以访问LI缓存202。在一项实施例中,L2缓存204可以比LI缓存202更大,访问L2缓存204速度比访问LI缓存202更慢。处理芯片206的其他实施例可以包括不含嵌入的缓存或含有嵌入的LI缓存202但是在处理芯片206中不含嵌入的L2缓存204。所属领域的普通技术人员意识到缓存的其他级别可以嵌入到处理芯片206中(例如,级别O(LO)缓存)。入端口和/或单元112、Rxl08、TxllO、出端口和/或单元114以及辅助存储器109已在上文论述。
[0033]存储器子系统208可在处理芯片206外部,可以包括图1所论述的存储器子系统116的部分,但是不嵌入在处理芯片206中。每个处理芯片206可耦合到存储器子系统208,其用于存储易失性数据。如图2所示,其余存储器子系统208可包括一个或多个溢出缓存106,用于存储从不同级别缓存移除的数据。例如,溢出缓存106可用于存储来自LI缓存202的移除数据,而第二溢出缓存106可用于存储来自L2缓存204的移除数据。另外,可以将溢出缓存106分配给在不同处理芯片206内嵌入的每个级别的缓存(例如,LI缓存202)。例如,在图2中,可以将不同的溢出缓存106分配给嵌入到第二处理芯片206中的第二 LI缓存202。在一项实施例中,一些或所有溢出缓存106可嵌入到处理芯片206中。另外,溢出缓存106可分配到一些缓存级别和/或一些处理芯片206。本领域普通技术人员意识到通用计算机系统200可包括未嵌入到处理芯片206中的多于两个级别的缓存(例如,级别3(L3)缓存),其中每个级别的缓存分配到溢出缓存106。
[0034]图3是主存储器300和主缓存302之间的组相联映射的实施例的示意图。主存储器300和主缓存302可大体上分别类似于图1所论述的主存储器116和主缓存104。主存储器300和主缓存302可用存储器地址作为索引,存储器地址表示主存储器300或主缓存302内数据存储的位置。“索引”列304可为主存储器300的地址引用索引字段(例如,地址索引O至N),而“索引”列306为主缓存302的地址引用索引字段(例如,缓存行)。如图3所示,主缓存302可具有地址索引值“O”和“I”。“路”列308可以根据“路”列308中不同“路”值的数目为主缓存302确定组相联。组相联配置可映射主存储器中的每个条目到主缓存内的多于一个条目但少于所有的条目。“路”值的数目可表示主缓存302内的地址位置的数目,主存储器300内的特定地址位置可缓存到主缓存302。图3示出了主缓存302可具有两个不同“路”值“O”和“1”,因此,主缓存302可指定为2路组相联。主存储器地址作为一个2路组相联缓存,可以映射到主缓存302的两个不同地址位置。如图3所示,具有地址索引“O”的主存储器300可映射到主缓存302的地址索引O路O (0-way O)和索引O路I (0-way I),具有地址索引“I”的主存储器300可映射到主缓存302的地址索引I路O (1-way O)和索引I路I (1-way I),具有地址索引“2”的主存储器300可映射到主缓存302的地址索引O m O (0-way O)和索引O路I (0-way I),以及具有地址索引“3”的主存储器300可映射到主缓存302的地址索引I路O (1-way O)和索引I路I (1-way I)。在另一项实施例中,主缓存302可以是M路组相联(比如4路组相联或8路组相联),其中特定主存储器300的位置可映射到主缓存302的M各不同存储器位置。
[0035]主缓存302的其他实施例可以是直接映射缓存或全相联缓存。直接映射缓存可以将主存储器300内的一个存储器位置映射到主缓存302的一个存储器位置。换句话说,直接映射缓存可以是主缓存302的I路组相联。全相联是指主存储器300中的每个条目都可以映射到主缓存302的存储器的任一位置。以图3为例,索引地址“O”可映射到地址索引O路
O(0-way O)、地址索引O路I (0-way I)、地址索引I路O (1-way O)、地址索引I路I (1-wayI)以及主缓存302内的任意其他存储器位置。
[0036]图4是主存储器400和主缓存402之间的组相联映射的另一项实施例的示意图。主存储器400可大体上类似于图3所论述的主存储器300。图4示出了主存储器400可进一步包括数据列400,其代表在索引列304中示出的不同主存储器索引地址处存储的数据。主缓存402可大体上类似于图3所论述的主缓存302,除了主缓存402可包括附加标签列406和数据列408。标签列406可表示存储数据列408内发现的相同数据的主存储器索引地址。图4示出了经由箭头主存储器400到主缓存402的当前映射。如图4所示,分别针对主缓存402的索引O路0(0-way O)、索引O路I (0_way I)、索引I路0(liay O)以及索弓丨1路l(l-Way I),可在数据列408内发现主存储器索引地址0-3处存储的数据。因此,索引O路0(0-way O)、索引O路I (0_way I)、索引I路0(liay O)以及索引I路I (IiayI)的标签列406和数据列408可分别对应于主存储器索引地址0-3的索引列304和数据列404。
[0037]根据溢出缓存性能和主缓存的“缺失”率,可灵活调整溢出缓存的缓存参数,例如,地址到主存储器的映射、容量以及缓存替换策略。和主缓存402类似,溢出缓存可用于作为上文论述的全相联、组相联或者直接映射缓存映射到主存储器400。溢出缓存的映射相联可以和主缓存402相同或者不同。例如,主缓存402和溢出缓存都可以是4路相联缓存并使用1:1比率作为“路”相联的数目。主缓存402的其他实施例可以是M路相联缓存,而溢出缓存是N路相联缓存,其中M的值与N的值不同。此外,溢出缓存的容量可以调整、可以不是固定大小。例如,溢出缓存的初始容量大约为8千字节(KB)。当主缓存的“缺失”率过高时,溢出缓存的容量可增至32KB。主缓存的容量也可以与溢出缓存的容量相同或者不同。
[0038]可使用缓存替换策略的变体,例如Belady算法、最近最少使用算法(LRU)、最近最多使用算法(MRU)、随机替换、先入先出(FIFO),以确定从溢出缓存和/或主缓存402移除哪个缓存条目(例如,缓存线)。可为溢出缓存配置与主缓存402不同的缓存替换策略。例如,可为溢出缓存配置随机替换缓存替换策略,而可为主缓存402配置LRU缓存替换策略。可以调整溢出缓存的缓存替换策略以为主缓存402和溢出缓存最小化“缺失”率。
[0039]图5是使用透写策略将写入指令实施到主存储器的方法500的实施例的流程图。当数据同时写入到主存储器、主缓存和/或溢出缓存时,可使用方法500。方法500最初接收指令将数据写入到某个主存储器位置。接收写入指令后,方法500在块502处开始并确定是否存在主缓存“命中”。如果发生主缓存“命中”,那么方法500移动到块506并将数据写入到主缓存内的对应的“命中”条目。然后,方法500继续到块510以写入数据到主存储器。但是,如果方法500确定块502处未发生主缓存“命中”,然后方法可进入块504。在块504处,方法500确定是否存在溢出缓存“命中”。如果发生溢出缓存“命中”,那么方法500继续到块508并将数据写入到溢出缓存内的对应的“命中”条目。在一项实施例中,在某一时间间隔中发生一个或多个“命中”,方法500可提升溢出缓存内的对应的“命中”条目到主缓存。在另一项实施例中,方法500可能不会将溢出缓存内的对应的“命中”条目提升到主缓存。一旦方法500完成块508,方法500可移动到块510以写入数据到主存储器。回到块504,当方法500确定在块504处未发生溢出缓存“命中”,然后方法500进入块510以写入数据到主存储器。在方法500完成块510后,方法500结束。方法500可并行(例如,在相同计算逻辑单元时钟周期内)完成块502和块504。
[0040]图6是使用回写策略将写入指令实施到主存储器的方法600的实施例的流程图。针对回写策略,数据最初写入主缓存而不是主存储器。当包含数据的溢出缓存条目将要改变/由从主缓存移除的数据替换时,才写入主存储器。主缓存条目可以标记为“脏”,这样数据在从溢出缓存移除后可写入主存储器。当主缓存内的移除数据标记为“脏”时,可能发生写入溢出缓存内的条目。
[0041]方法600可以从块602开始。块602、604、606和608可大体上类似于方法500的块502、504、506和508。另外,块602和604可以由方法600并行进行,类似于方法500可并行执行块502和504。在块610处,方法600可选择主缓存内的条目(例如,缓存线)以写入数据。与透写策略相比,可选择主缓存内的条目,因为回写策略最初写入主缓存而不是主存储器。方法600可在块610处使用任一本领域公知的缓存替换策略(例如,FIFO)。方法600随后移动到块612并确定主缓存内的条目是否为“脏”。如果条目为“脏”(例如,数据未写入到主存储器),随后方法600可移动到块614。相反,如果条目不为“脏”,方法600移动到块622。在块622处,方法600将数据写入到主缓存内所选条目。随后,方法600可继续到块624以标注主缓存内的条目为“脏”,随后结束。
[0042]回到块614,方法600确定是否溢出缓存已满。当为主缓存内的“脏”条目分配的溢出缓存条目已存储数据,溢出缓存已满。例如,针对N路组相联溢出缓存,当为主缓存内的“脏”条目分配的所有N个溢出缓存位置已存储数据,溢出缓存已满。如果溢出缓存已满,那么方法600移动到块616并选择一个溢出缓存条目以写入主缓存的“脏”条目内的数据。如上所述,当选择溢出缓存条目时,方法600可使用本领域公知的任一缓存替换策略。随后,方法600移动到块618并将位于所选溢出缓存条目的数据写入到主存储器。方法600随后移动到块620。回到块614,当溢出缓存未满,那么方法600继续块620。在块620处,方法600将主缓存的“脏”条目内的数据写入到所选溢出缓存条目。在方法600完成块620后,方法600移动到块610并执行如上所述的块功能。
[0043]图7是使用透写策略将读取指令实施到主存储器的方法700的实施例的流程图。当在主缓存和/或溢出缓存中发生“命中”时,方法700可使用来自主缓存和/或溢出缓存的“命中”条目以返回由核心逻辑单元或其他应用要求的数据。当在主缓存和/或溢出缓存中发生“缺失”时,方法700可加载来自主存储器的数据到主缓存。块702和704可分别大体上类似于方法500的块502和504。此外,方法700可并行(例如,在相同时钟周期内)执行块702和704。
[0044]在块704处,如果方法700确定不存在溢出缓存“命中”,方法700可移动到块706以选择主缓存内的替换条目。方法700可执行本领域公知的任一缓存替换策略。随后,方法700可继续到块708并读取来自主存储器的数据。方法700读取来自主存储器的数据,因为主缓存和溢出缓存内未发生“命中”。方法700可随后继续到块710并将从主存储器读取的数据加载到主缓存内的替换条目。方法700加载从主存储器读取的数据,因为主缓存和/或溢出缓存内发生“缺失”。在块710处,当加载从主存储器读取的数据时,方法700可移除已经存储在主缓存里的数据。随后,方法700可继续到块712并返回数据到核心逻辑单元(例如,处理器)。
[0045]图8是使用回写策略将读取指令实施到主存储器的方法800的实施例的流程图。针对主缓存和/或溢出缓存的回写策略中的读取指令引起的“缺失”可能导致请求“缺失的”数据替换缓存条目。读取“缺失”可能导致两种主存储器访问:一种是将来自溢出缓存的替换数据写入到主存储器,另一种是检索来自主存储器的请求“缺失的”数据。块802、804、806、818、820和824分别大体上类似于方法700的块702、704、706、708、710和712。此外,块810、812、814和816分别大体上类似于方法600的块614、616、618和620。在块822处,方法800可标注主缓存内的替换条目为“非脏”,因为替换条目内的数据是从主存储器中获得的。
[0046]图9是包括共享享MMU/转换表904的主缓存和溢出缓存的存储器子系统900的实施例的示意图。存储器子系统900可包括主缓存、溢出缓存、MMU/转换表904、主缓存标签块906和溢出缓存标签块908。图9示出了主缓存和溢出缓存可划分成4个不同块(比如,主缓存块1-4910和溢出缓存块1-4912)以形成4路组相联主缓存和4路组相联溢出缓存。主缓存块1-4910和溢出缓存块1-4912可以是数据缓存块,所述块存储从主存储器获取的实际数据。以图4为例,在数据列408内的数据可表示存储在主缓存块1-4910和溢出缓存块1-4912中的数据。如上所述,主缓存的其他实施例可配置为M路组相联主缓存,而溢出缓存可具有N路组相联溢出缓存,其中“M”和“N”值可能不同。当主缓存配置为M路组相联主缓存和溢出缓存配置为N路组相联溢出缓存,主缓存可划分为M各不同主缓存块910,而溢出缓存可划分为N个不同的溢出缓存块912。
[0047]此外,主缓存和溢出缓存的容量可能互不相同。例如,在一项实施例中,主缓存和溢出缓存的容量可以是1:1比率,例如,主缓存和溢出缓存的容量都为32KB。在这个例子中,每个主缓存块1-4910和每个溢出缓存块1-4912可具有8KB的容量(32KB/4块)。在另一项实施例中,主缓存和溢出缓存的容量可以是1:4比率,例如,主缓存的容量为32KB,溢出缓存的容量为8KB。针对此种配置,每个主缓存块1-4910可具有8KB的容量(32KB/4块),每个溢出缓存块1-4912可具有2KB的容量(8KB/4块)。
[0048]MMU/转换表904可用于将虚拟地址转换为物理地址或者将物理地址转换为虚拟地址。当主缓存块910和溢出缓存块912用于存储物理地址时,MMU/转换表904可用于将虚拟地址转换为物理地址。MMU/转换表404可包括地址转换表,所述表包括将虚拟地址映射到物理地址的条目。MMU/转换表904可还用于维护页面信息、执行权限跟踪以及实施存储器保护。如图9所述,主缓存和溢出缓存间可共享一个MMU/转换表904。分享单个的MMU/转换表904及并行访问溢出缓存和主缓存可降低时延并提高核心逻辑单元的性能。在一项实施例中,MMU/转换表904可以是存储器保护单元(MPU),所述MPU可实施存储器保护,但是不能将虚拟地址转换为物理地址或者将物理地址转换为虚拟地址。
[0049]主缓存标签块906可为每个主缓存块910内存储的数据引用主存储器地址。因此,主缓存标签块906可为每个主缓存块910提供4个不同的标签地址。以图4为例,标签列406内的标签地址可代表存储在主缓存标签块906内的同种类型的标签地址。主缓存标签块906下描绘的4个箭头可代表每个主缓存块1-4910的4个不同标签地址。例如,主缓存块1910可具有主缓存标签块906内存储的“O”的标签地址和主缓存块2910可具有主缓存标签块906内存储的“I”的标签地址。溢出缓存标签块908可大体上类似于主缓存标记块906。除了溢出缓存标签块908可为每个溢出缓存块912内存储的数据引用主存储器地址,溢出缓存标签块908可大体上类似于主缓存标签块906。图9也描绘了溢出缓存标签块908下的4个箭头。每个箭头代表与对应的溢出缓存标签块1-4912相联的不同标签地址。在主缓存标签块906和溢出缓存标签块908内存储的标签地址可以是物理或虚拟存储器地址。当MMU/转换表904将虚拟存储器地址转换为物理存储器地址时,主缓存标签块906和溢出缓存标签块908可存储物理存储器地址。
[0050]图9示出了存储器子系统900可接收来自核心逻辑单元的存储器访问命令902,例如加载/读取来自主存储器地址的数据的指令。当存储器子系统900接收存储器访问命令902时,存储器访问命令902可为MMU/转换表904、溢出缓存标签块908、主缓存标签块906、主缓存块1-4910以及溢出缓存块1-4912提供主存储器地址。在一项实施例中,主存储器地址可以是由程序和/或应用生成的虚拟存储器地址。MMU/转换表904可将虚拟存储器地址转换为物理存储器地址并将物理存储器地址输入到标签对比部件916。本领域普通技术人员意识到核心逻辑单元可输送多个不同类型的指令,例如,获取指令、解码指令和存储器访问命令902。
[0051]主缓存标签块906和溢出缓存标签块908可使用存储器访问命令902提供所选标签地址并将标签地址输入到标签对比部件916。标签对比部件916可以是额外的计算逻辑,其对比输入的标签地址和转换的物理存储器地址以确定是否发生匹配并输出值到“路”复用器914。例如,如果至少一个标签地址匹配转换的物理存储器地址,标签对比部件916可输出选择对应的主缓存块910和/或溢出缓存块912的值。否则,标签对比部件916可生成“空”值(比如,“O”值),所述值可以不选择由主缓存块910和/或溢出缓存块912提供给“路”复用器914的任意数据。
[0052]主缓存块1-4910和溢出缓存块1-4912可使用存储器访问命令902以选择相关缓存条目并输出缓存条目内的数据到“路”复用器914。“路”复用器914可以接收来自标签对比部件916的输入并确定是否选择来自主缓存块1-4910或来自溢出缓存块1-4912的任一数据输入。第一 “路”复用器914可确定主缓存是否存储存储器访问命令902中请求的数据,而第二 “路”复用器914可确定溢出缓存是否存储存储器访问命令902中请求的数据。当主缓存块910之一存储存储器访问命令902中请求的数据时,“路”复用器914可生成主缓存中“命中”对应的主缓存读取数据输出918。当溢出缓存块912之一存储存储器访问命令902中请求的数据时,另一 “路”复用器914可生成溢出缓存中“命中”对应的溢出缓存读取数据输出920。当不存在主缓存读取数据输出918和/或溢出缓存读取数据输出920时,在主缓存和/或溢出缓存内发生“缺失”。
[0053]可分割存储器访问命令902内的主存储器地址,使得溢出缓存标签块908和主缓存标签块906与最高有效位有关,而主缓存块910和溢出缓存块912与最低有效位有关。例如,如果主存储器的容量为4兆字节(GB),可使用32位代表不同的主存储器地址(比如,2~32 = 4,294,967,296)。如果每个主缓存块910的容量为8KB (例如,主缓存的总容量等于32KB),那么可使用低13位为主缓存块910引用存储器地址空间(比如,2~13 = 8192)。例如,如果主存储器地址的低13位为“0000000000000”,“0000000000000”可引用每个主缓存块910的第一地址空间。然后可使用高19位为主缓存标签块910引用存储器地址空间。在另一项实施例中,这缓存和受害者缓存可分割主存储器地址,只要最高有效位(MSB)指定给标签地址,中间位指定给数据块,最低有效位(LSB)为标志位保留,例如指定缓存条目是否为“脏”。本领域普通技术人员意识到可使用和上文所述的分割主存储器地址不同的其他缓存条目结构。
[0054]应理解,通过将可执行指令编程和/或加载至通用计算机系统100,核心逻辑单元102、存储器子系统118和辅助存储器109中的至少之一被改变,将计算机系统500的一部分转换成特定机器或装置,如,本发明宣扬的拥有新颖功能的网络模式。加载可执行软件至计算机所实现的功能可以通过公知设计规则转换成硬件实施,这在电力工程和软件工程领域是很基础的。决定使用软件还是硬件来实施一个概念通常取决于对设计稳定性及待生产的单元数量的考虑,而不是从软件领域转换至硬件领域中所涉及的任何问题。一般来说,经常变动的设计更适于在软件中实施,因为重新编写硬件实施比重新编写软件设计更为昂贵。而稳定及大量生产的设计更适于在硬件中实施,因为大量生产运行实施的硬件较软件实施更为便宜。设计通常可以以软件形式进行开发和测试,之后通过公知设计规则转变成专用集成电路中等同的硬件实施,该集成电路硬线软件指令。由新ASIC控制的机器是一特定的机器或装置,同样地,编程和/或加载有可执行指令的电脑可视为特定的机器或装置。
[0055]本发明公开至少一项实施例,且所属领域的普通技术人员对所述实施例和/或所述实施例的特征作出的变化、组合和/或修改均在本发明公开的范围内。因组合、合并和/或省略所述实施例的特征而得到的替代性实施例也在本发明的范围内。应当理解的是,本发明已明确阐明了数值范围或限制,此类明确的范围或限制应包括涵盖在上述范围或限制(如从大约I至大约10的范围包括2、3、4等;大于0.10的范围包括0.11,0.12,0.13等)内的类似数量级的迭代范围或限制。例如,每当公开具有下限Rl和上限Ru的数值范围时,具体是公开落入所述范围内的任何数字。具体而言,特别公开所述范围内的以下数字:R =尺1+1^0?11-1?1),其中1^为从1%到100%范围内以1%递增的变量,即,k为1%、2%、3%、4%,7%, -.70%,71%,72%,...、97%、96%、97%、98%、99%或 100%。此外,还特此公开了,上文定义的两个R值所定义的任何数值范围。除非另有说明,否则使用术语约是指随后数字的±10%。相对于权利要求的某一要素,术语“可选择”的使用表示该要素可以是“需要的”,或者也可以是“不需要的”,二者均在所述权利要求的范围内。使用如“包括”、“包含”和“具有”等较广术语应被理解为提供对如由“…组成”、“基本上由…组成”以及“大体上由…组成”等较窄术语的支持。因此,保护范围不受上文所述的限制,而是由所附权利要求书定义,所述范围包含所附权利要求书的标的物的所有等效物。每项和每条权利要求作为进一步公开的内容并入说明书中,且权利要求书是本发明的实施例。所述揭示内容中的参考的论述并不是承认其为现有技术,尤其是具有在本申请案的在先申请 优先权日:期之后的
【公开日】期的任何参考。本发明中所引用的所有专利、专利申请案和公开案的揭示内容特此以引用的方式并入本文本中,其提供补充本发明的示例性、程序性或其他细节。
[0056]虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,本发明所公开的系统和方法可以以许多其他特定形式来体现。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或部件可以在另一系统中组合或合并,或者某些特征可以省略或不实施。
[0057]此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其他系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦接或直接耦接或通信的其他项也可以采用电方式、机械方式或其他方式通过某一接口、装置或中间部件间接地耦接或通信。其他变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。
【权利要求】
1.一种用于并发访问主缓存和溢出缓存的装置,其特征在于,包括: 核心逻辑单元,用于 执行并行访问所述主缓存和所述溢出缓存的第一指令; 确定所述主缓存是否存储请求的数据; 确定所述溢出缓存是否存储所述请求的数据;以及 当所述主缓存和所述溢出缓存未存储所述请求的数据时,访问主存储器, 其中所述溢出缓存存储从所述主缓存中溢出的数据。
2.根据权利要求1所述的装置,其特征在于,当所述主缓存和所述溢出缓存未存储所述请求的数据时,使用第一缓存替换策略选择主缓存条目,将存储在所述主缓存条目中的移除数据发送到所述溢出缓存待存储。
3.根据权利要求2所述的装置,其特征在于,所述核心逻辑单元还用于从所述主存储器获得所述请求的数据,所述从主存储器获得的请求的数据存储在所述主缓存条目中。
4.根据权利要求2所述的装置,其特征在于,使用第二缓存替换策略选择溢出缓存条目以存储移除数据。
5.根据权利要求4所述的装置,其特征在于,当所述主缓存条目标记为脏时,所述溢出缓存条目内存储的老数据写入所述主存储器。
6.根据权利要求1所述的装置,其特征在于,所述主缓存用于M路组相联,所述溢出缓存用于N路组相联,以及所述M路组相联不同于所述N路组相联。
7.根据权利要求1所述的装置,其特征在于,当所述溢出缓存存储所述请求的数据时,所述请求的数据提升到所述主缓存。
8.根据权利要求1所述的装置,其特征在于,所述第一指令的请求的数据存储在所述溢出缓存中,所述核心逻辑单元还用于执行并行接入所述主缓存和所述溢出缓存的第二指令,所述第二指令请求所述第一指令的相同请求的数据,以及所述请求的数据在所述第二指令后提升到所述主缓存。
9.根据权利要求1所述的装置,其特征在于,当所述溢出缓存存储所述请求的数据时,所述请求的数据不提升到所述主缓存。
10.根据权利要求1所述的装置,其特征在于,所述并行访问所述主缓存和所述溢出缓存包括在相同时钟周期内访问所述主缓存和所述溢出缓存。
11.根据权利要求1所述的装置,其特征在于,所述主缓存和所述溢出缓存具有相同的存储器容量。
12.一种用于并发访问主缓存和溢出缓存的装置,其特征在于,包括: 划分成多个主缓存块的主缓存; 划分成多个溢出缓存块的溢出缓存; 用于为所述主缓存和所述溢出缓存进行存储器管理的存储器管理单元(MMU), 其中在相同时钟周期内访问所述主缓存和所述溢出缓存。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括主缓存标签块和溢出缓存标签块,所述主缓存标签块用于存储对应于存储在所述主缓存块内的数据的多个第一主存储器地址,所述溢出缓存标签块用于存储对应于存储在所述主缓存块内的数据的多个第二主存储器地址。
14.根据权利要求13所述的装置,其特征在于,所述MMU还用于接收包括主存储器地址的存储器访问命令以及转换所述主存储器地址为解码的主存储器地址,所述解码的主存储器地址用于确定所述主缓存和所述溢出缓存是否存储所述解码的主存储器地址对应的数据。
15.根据权利要求14所述的装置,其特征在于,所述解码的主存储器地址与所述第一主存储器地址之一对比,所述解码的主存储器地址与所述第二主存储器地址之一对比。
16.根据权利要求12所述的装置,其特征在于,所述MMU用于转换虚拟存储器地址为物理存储器地址。
17.一种用于并发访问主缓存和溢出缓存的方法,其特征在于,所述方法包括: 确定主缓存内是否发生主缓存缺失; 确定溢出缓存内是否发生溢出缓存缺失; 当主缓存内发生主缓存缺失时使用第一缓存替换策略选择主缓存条目;以及 当溢出缓存内发生溢出缓存缺失时使用第二缓存替换策略选择溢出缓存条目, 其中在相同时钟周期内确定是否发生所述主缓存缺失和所述溢出缓存缺失。
18.根据权利要求17所述的方法,其特征在于,进一步包括修改所述第二缓存替换策略以选择溢出缓存条目,其中所述第一缓存替换策略和所述第二缓存替换策略不同。
19.根据权利要求17所述的方法,其特征在于,所述溢出缓存具有第一存储器容量,所述方法进一步包括修改所述溢出缓存的所述第一存储器容量。
20.根据权利要求17所述的方法,其特征在于,所述溢出缓存具有与主存储器的大量组相联,所述方法还包括修改与所述主存储器的大量组相联。
【文档编号】G06F12/08GK104169892SQ201380015348
【公开日】2014年11月26日 申请日期:2013年3月27日 优先权日:2012年3月28日
【发明者】林奕林, 理查德·特劳本 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1