CN101916232B - 存储器配置装置以及方法 - Google Patents
存储器配置装置以及方法 Download PDFInfo
- Publication number
- CN101916232B CN101916232B CN2010102566699A CN201010256669A CN101916232B CN 101916232 B CN101916232 B CN 101916232B CN 2010102566699 A CN2010102566699 A CN 2010102566699A CN 201010256669 A CN201010256669 A CN 201010256669A CN 101916232 B CN101916232 B CN 101916232B
- Authority
- CN
- China
- Prior art keywords
- mentioned
- rheme
- tree
- virtual
- recently used
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
存储器配置装置以及方法。该存储器配置装置,适用于在集合关联式快取存储器中配置项目,包括:阵列,该阵列根据来自第一功能单元的第一配置请求提供第一PLRU向量。第一PLRU向量从快取存储器的集合指定第一项目,该集合由第一配置请求所指定。第一PLRU向量是包括多层的位树。反转逻辑单元接收第一PLRU向量并反转多个既定位并根据自第二功能单元的第二配置请求以产生第二PLRU向量,而第二配置请求和第一配置请求同时产生,并指定快取存储器的相同集合,而相同集合由第一配置请求所指定。第二PLRU向量指定第二项目,该第二项目有别于来自相同集合的第一项目。既定位包括多层位树的一既定层的所有位。
Description
技术领域
本发明涉及快取存储器的领域,特别涉及快取存储器的项目的配置。
背景技术
当一单元(unit)(例如:载入单元(load unit)或存储单元(store unit)),在集合关联式(set-associative)快取(cache)中未命中(miss)时,它从上述快取中选择的集合的其中一路(way),配置(allocate)一项目(entry)。上述快取配置由一向量指定的路,该向量指定一取代方案(replacement scheme),而该向量通常是一虚拟最近最少使用(pseudo-least recently used,PLRU,以下皆简称PLRU)向量。上述快取须更新该PLRU向量,否则下一次快取执行配置时,将会配置到相同的路。有时候,两单元(例如:载入单元和存储单元)在该快取中皆未命中,且同时初始化配置。在此情形下有三个问题必须解决。首先,必须确定相同的路未被配置给两个单元,否则一个单元会踢掉(kick out)另一个刚配置的单元,这对执行效果不好。第二,为了避免降低执行效能,最好将PLRU向量更新至不会很快被配置的路。第三,必须以较快的逻辑解决前两个问题以避免产生时序的问题(timing problem)。
发明内容
在一方面,本发明提供一装置,用于在集合关联式的一快取存储器中配置项目。该装置包括一阵列,根据来自第一功能单元(functional units)的第一配置请求以提供一第一PLRU向量。该第一PLRU向量从快取存储器的一集合中,指定一第一项目,该集合由第一配置请求所指定。该第一PLRU向量是包括多层的一位树。该装置也包括一反转逻辑(toggling logic)单元,该反转逻辑用以接收上述第一PLRU向量,并根据来自第二功能单元的第二配置请求反转既定位以产生一第二PLRU向量,而该第二配置请求和上述第一配置请求同时产生,并指定由上述第一配置请求指定的相同快取存储器集合。上述既定位包括上述位树的多层中的一既定层的所有位。
在另一方面,本发明提供一方法,适用于在集合关联式的一快取存储器中配置项目。该方法包括:根据一第一功能单元请求配置来自上述快取存储器集合的一项目,从该快取存储器的一阵列提供第一PLRU向量。该第一PLRU向量是包括多层的一位树。该方法也包括:根据一第二功能单元同时请求配置来自上述快取存储器相同集合的一项目,反转第一PLRU向量的既定位以产生第二PLRU向量。上述既定位包括上述位树的多层中的一既定层的所有位。
附图说明
图1为说明一微处理器的方块图;
图2为说明图1微处理器的数据快取的方块图;
图3为说明图2操作数据快取的流程图;以及
图4、图5是根据图3的流程图,说明图2操作数据快取的示例。
【主要元件符号说明】
100~微处理器;
106~指令快取;
108~指令解码器;
134~寄存器别名表;
136~保留站;
138~执行单元;
152~重排序缓冲器;
162~寄存器集;
172~载入单元;
174~存储单元;
182~存储器子系统
186~数据快取;
202~PLRU阵列;
204~输入索引;
206~反相器;
208~新PLRU产生器;
212~第一向量;
214~第二向量;
216~新PLRU向量;
222~PLRU向量。
具体实施方式
在此所述的快取存储器的实施例,将目前的PLRU向量所指定的路,配置给二功能单元(例如:载入单元和存储单元)的第一个功能单元。该实施例也切换(toggle)在PLRU树(tree)低阶(low level)的向量位,并将切换向量(toggled vector)所指定的路,配置给二功能单元的第二个功能单元。该实施例也根据上述的切换向量,产生新的PLRU向量,该切换向量为快速且可扩展到一包括大量路的设计。
如图1所示,图1说明一微处理器100的方块图。该微处理器100包括:指令快取(instruction cache)102、指令解码器(instruction decoder)108、寄存器别名表(register alias table,RAT)134、保留站(reservation stations)136、寄存器集(register set)162、重排序缓冲器(recorder buffer,ROB)152、以及多个执行单元(execution units)138。执行单元138包括一存储器子系统(memorysubsystem)182,该存储器子系统又包括一载入单元172和一存储单元174,分别用来从存储器载入数据,和存储数据到存储器。特别是,载入单元172和存储单元174存取微处理器100的数据快取(data cache)186。有利的是,数据快取186利用一快而有效率的PLRU方案,以解决冲突尝试(conflictingattempt),该冲突尝试因由载入单元172和存储单元174欲配置一快取项目于相同的集合(set),将会在以下作详细讨论。
参阅图2,图2说明图1所示的微处理器100的数据快取186的方块图。该数据快取186包括一PLRU阵列202,该PLRU阵列202又包括一PLRU向量222的阵列。在一实施例中,PLRU阵列202可被纳入数据快取186的标签阵列(tag array)(未图示),该标签阵列存储地址标签(address tag)且/或快取线(cache line)情况(例如:MESI状态)信息。该数据快取186也包括一数据阵列(data array)(未图示),存储实际的快取线数据。各标签阵列和数据阵列是集合关联式的(set-associative)。也就是说,上述的标签阵列和数据阵列各有多条路,这是快取存储器设计的技术领域中为人熟知的。
当PLRU阵列202被存取时,输入索引(index)204选择上述PLRU向量222的其中之一,该输入索引204包括由操作(例如:载入或存储)存取数据快取186所指定的存储器地址(memory address)的较低位(lower bits)。在对相同集合同时载入和存储的操作中,发生快取中未命中且要配置一项目于数据快取186的情形下,该输入索引204的值是相同的。该PLRU阵列202,在输出端输出所选择的PLRU向量222给两操作的第一个(第一操作)。
数据快取186也包括一组反相器(inverter)206,反相器206接收PLRU阵列202输出的第一向量212,并反转(反相)(invert)第一向量212的一部分位,以产生第二向量214,提供给两操作的第二者(第二操作)。该反转的位是第一向量212在PLRU树的同一层级(level)中的所有位(如图4与图5所示)。不同的层级选择对于PLRU取代方案(replacement scheme)产生不同的影响,设计者可选择特定层级以获取需要的特性(characteristics)。在一实施例中,第一向量212提供给载入单元172,而第二向量214提供给存储单元174。
即使图2只有图示单一输入索引204,要注意的是,载入单元172和存储单元174有各自的输入索引204,以及比较器(comparator)(未图示)比较上述两个输入索引204,以检测(detect)在同时载入和存储的操作中,上述两索引相等的情况。此外,虽然图示来自PLRU阵列202只有单一输出,要注意的是,PLRU阵列202的输出包括第一输出和第二输出,该第一输出提供由载入单元172的输入索引204所选择的PLRU向量222,而该第二输出提供由存储单元174的输入索引204所选择PLRU向量222。第一输出总是提供给载入单元172。当载入单元172的输入索引204和存储单元174的输入索引204不相符合的时候,第二输出提供给存储单元174。然而,当载入单元172的输入索引204和存储单元174的输入索引204相符合的时候,反相器206的输出提供给存储单元174。
数据快取186也包括一新PLRU产生器208。该新PLRU产生器208接收第二向量214,并产生一新PLRU向量216,以更新在该PLRU阵列202中的选择PLRU向量222。该新PLRU产生器208,根据众所皆知的PLRU产生方案,产生新PLRU向量216,也就是反转在PLRU树探访(visited)的各位,以到达(reach)指定的叶(leaf)、路、或树。要注意的是,选择第0层反转会产生一潜在非期望的新PLRU向量216,因为该新PLRU向量216指向和第一向量212相同的路,这导致几乎即刻配置的路与刚配置给第一操作的路相同。即使在图2图示只有单一个新PLRU产生器208,要注意的是,数据快取186也包括第二新PLRU产生器208。正常情况下,第一新PLRU产生器208接收提供给载入单元172的输出,而第一新PLRU产生器208的输出216用来更新PLRU向量222,该PLRU向量222在由载入单元172的输入索引204所选择PLRU阵列202之中。另外,第二新PLRU产生器208接收提供给存储单元174的输出,而第二新PLRU产生器208的输出216用来更新PLRU向量222,该PLRU向量222在由存储单元174的输入索引204所选择PLRU阵列202之中。然而,当载入单元172的输入索引204和存储单元174的输入索引204相符合时,反相器206的输出提供给第二新PLRU产生器208(如图示),且第二新PLRU产生器208的输出216,以更新相同的PLRU向量222,该PLRU向量222在由载入单元172和存储单元174共同选择PLRU阵列202之中。
如图3所示,图3说明图2所示的数据快取186操作的流程图。流程从方块302开始。
在方块302,二个操作(例如:载入和存储操作)同时存取在数据快取186中相同的集合,也就是说,它们指定相同的输入索引204的值。流程往方块304进行。
在方块304,PLRU阵列202输出所选择的PLRU向量222,并提供被选择的向量212或第一向量212给第一操作。流程往方块306进行。
在方块306,反相器206反转在第一PLRU向量树的其中一层(at onelevel)的所有位以产生第二向量214。流程往方块308进行。
在方块308,反相器206提供第二向量214给第二操作。流程往方块312进行。
在方块312,新PLRU产生器208从第二向量214的值,产生新PLRU向量216,流程往方块314进行。
在方块314,数据快取186写入新PLRU向量216给PLRU阵列202中的PLRU向量222。流程终止于方块314。
图4是显示图2的数据快取186根据图3所示的流程操作的实施例。在图4的示例中,数据快取186是一8路(8-way)集合关联式的快取;因此,各PLRU向量222是7位,如图所示。图4亦显示一8路PLRU向量222的PLRU树,此为众所皆知的。特别的是,节点0在第0层;节点1、节点2在第1层;节点3到节点6在第2层。图4所示的第一个示例,反相器206反转上述PLRU树的第1层的位,而第二个示例,反相器206反转上述PLRU树的第2层的位。
图5是显示图2的数据快取186根据图3所示的流程操作的实施例。在图5的示例中,数据快取186是一16路集合关联式的快取。因此,各PLRU向量222是15位,如图所示。图5亦显示一16路PLRU向量222的PLRU树,此为众所皆知的。特别的是,节点0在第0层;节点1、节点2在第1层;节点3到节点6在第2层;节点7到节点14在第3层。图5所示的第一个示例,反相器206反转上述PLRU树的第1层的位,第二个示例,反相器206反转上述PLRU树的第2层的位,而第三个示例,反相器206反转上述PLRU树的第3层的位。即使在所示的实施例中,一8路快取包括3层、7位PLRU向量,以及一16路快取包括4层、15位PLRU向量,其他实施例可考虑用不同数目的路(例如:4或32),和不同层数(例如:2或5)。如同观察到的,有利的地方是用来执行上述PLRU方案的电路很快速,也就是说,不太可能引发时间的问题,并且可扩展到一个大型PLRU向量,以容纳多种快取的设计。
进一步来说,即使实施例是关于数据快取186,上述PLRU方案可用于指令快取、合并式快取(unified caches)、分支目标地址快取(branch targetaddress caches)、或任何有多个请求者(requestors)同时要求配置一快取项目的快取。再进一步来说,即使实施例是关于快取存储器,上述PLRU方案可用在其他应用上,该应用中,一配置方案(allocation scheme)是必须的,且适用于具有多个请求者的来源(resource)。
必须了解到的是,虽然本发明在此叙述了各式各样的实施例,它们仅被当成示例的方法,而不是限制。对于熟知计算机领域技术的人士而言,很明显的是,各种形式和细节的改变,并不脱离本发明的范围。例如,软件可实现例如:功能、制造、建模、仿真、叙述且/或测试这里上述的装置和方法。这可以用一般程序语言(例如C、C++)及硬件描述语言(hardware descriptionlanguage,HDL)(包含Verilog HDL,VHDL等等),或其他可获得的程序来完成。上述的软件可以用于任何熟知的计算机可用媒介,例如磁带、半导体、磁盘、或光盘(例如CD-ROM、DVD-ROM等等)、网络、有线、无线或其他通信媒介。这里所叙述的装置和方法的实施例,可包含在一半导体知识产权内核(semiconductor intellectual property core),例如微处理器内核(例如:实施在HDL上),以及转为在生产集成电路的硬件。另外,其中所述的装置和方法可被实施于一硬件和软件的结合。因此,本发明不应被任何这里所述的示例实施例所限制,而应该只根据接下来的申请专利范围和其同等事物所定义。特别的是,本发明可实施在一微处理器装置中,该微处理器装置可用于一般用途的计算机。最后,本领域技术人员应可了解:他们可以用上述公开的概念和说明的实施例为基础,以设计或修改成其他结构,来实现和本发明相同的目的,而不脱离权利要求书所定义的范围。
Claims (14)
1.一种存储器配置装置,适用于在集合关联式的一快取存储器中配置项目,包括:
一阵列,用以根据来自一第一功能单元的一第一配置请求提供一第一虚拟最近最少使用向量,其中上述第一虚拟最近最少使用向量指定来自上述快取存储器的一集合的一第一项目,上述集合由上述第一配置请求所指定,其中上述第一虚拟最近最少使用向量是包括多层的一位树;以及
一反转逻辑单元,用以接收上述第一虚拟最近最少使用向量,并反转多个既定位以根据来自一第二功能单元的一第二配置请求产生一第二虚拟最近最少使用向量,而上述第二配置请求和上述第一配置请求同时产生,并指定由上述第一配置请求指定的相同快取存储器集合,其中上述既定位包括上述位树的多层中的一既定层的所有位。
2.如权利要求1所述的存储器配置装置,其中上述第一虚拟最近最少使用向量指定上述集合的一第一项目,其中上述第二虚拟最近最少使用向量指定上述集合的一第二项目,上述第二项目有别于上述第一项目。
3.如权利要求1所述的存储器配置装置,其中上述位树的多层中的上述既定层为上述位树的其中一层。
4.如权利要求1所述的存储器配置装置,其中上述快取存储器是8路集合关联式,其中上述位树包括三层,其中上述位树的多层中的上述既定层是上述位树的一第二层。
5.如权利要求1所述的存储器配置装置,其中上述快取存储器是16路集合关联式,其中上述位树包括四层,其中上述位树的多层中的上述既定层是上述位树的一第二层。
6.如权利要求1所述的存储器配置装置,其中上述快取存储器是16路集合关联式,其中上述位树包括四层,其中上述位树的多层中的上述既定层是上述位树的一第三层。
7.如权利要求1所述的存储器配置装置,还包括:
一虚拟最近最少使用向量产生器,用以根据具有反转既定位的上述第二虚拟最近最少使用向量,产生一新虚拟最近最少使用向量,并用以更新具有上述新虚拟最近最少使用向量的上述阵列。
8.一种存储器配置方法,适用于在集合关联式的一快取存储器中配置项目,包括:
根据一第一功能单元请求配置来自上述快取存储器的一集合的一项目,从上述快取存储器的一阵列提供一第一虚拟最近最少使用向量,其中上述第一虚拟最近最少使用向量是包括多层的一位树;以及
根据一第二功能单元同时请求配置来自上述快取存储器的相同集合的一项目,反转上述第一虚拟最近最少使用向量的既定位以产生一第二虚拟最近最少使用向量,其中上述既定位包括上述位树的多层中的一既定层的所有位。
9.如权利要求8所述的存储器配置方法,其中上述第一虚拟最近最少使用向量指定上述集合的一第一项目,其中上述第二虚拟最近最少使用向量指定上述集合的一第二项目,而上述第二项目有别于第一项目。
10.如权利要求8所述的存储器配置方法,其中上述位树的多层中的上述既定层为上述位树的其中一层。
11.如权利要求8所述的存储器配置方法,其中上述快取存储器是8路集合关联式,其中上述位树包括三层,其中上述位树的多层中的上述既定层是上述位树的一第二层。
12.如权利要求8所述的存储器配置方法,其中上述快取存储器是16路集合关联式,其中上述位树包括四层,其中上述位树的多层中的上述既定层是上述位树的一第二层。
13.如权利要求8所述的存储器配置方法,其中上述快取存储器是16路集合关联式,其中上述位树包括四层,其中上述位树的多层中的上述既定层是上述位树的一第三层。
14.如权利要求8所述的存储器配置方法,还包括:
根据具有上述既定反转位的上述第二虚拟最近最少使用向量产生一新虚拟最近最少使用向量;以及
更新具有上述新虚拟最近最少使用向量的上述阵列。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US23695109P | 2009-08-26 | 2009-08-26 | |
US61/236,951 | 2009-08-26 | ||
US12/830,588 US8301842B2 (en) | 2009-08-26 | 2010-07-06 | Efficient pseudo-LRU for colliding accesses |
US12/830,588 | 2010-07-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101916232A CN101916232A (zh) | 2010-12-15 |
CN101916232B true CN101916232B (zh) | 2012-09-05 |
Family
ID=43323748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102566699A Active CN101916232B (zh) | 2009-08-26 | 2010-08-17 | 存储器配置装置以及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101916232B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9911508B2 (en) * | 2014-09-18 | 2018-03-06 | Via Alliance Semiconductor Co., Ltd | Cache memory diagnostic writeback |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6347318B1 (en) * | 1999-09-01 | 2002-02-12 | Hewlett-Packard Company | Method, system, and apparatus to improve performance of tree-based data structures in computer programs |
US20090113137A1 (en) * | 2007-10-30 | 2009-04-30 | Grayson Brian C | Pseudo least recently used (plru) cache replacement |
CN101430926A (zh) * | 2007-11-08 | 2009-05-13 | 英业达股份有限公司 | 存储器重设装置 |
EP2090347A1 (en) * | 2008-02-15 | 2009-08-19 | Nintendo Co., Ltd. | Computer-readable storage medium storing information processing program and information processing device |
-
2010
- 2010-08-17 CN CN2010102566699A patent/CN101916232B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6347318B1 (en) * | 1999-09-01 | 2002-02-12 | Hewlett-Packard Company | Method, system, and apparatus to improve performance of tree-based data structures in computer programs |
US20090113137A1 (en) * | 2007-10-30 | 2009-04-30 | Grayson Brian C | Pseudo least recently used (plru) cache replacement |
CN101430926A (zh) * | 2007-11-08 | 2009-05-13 | 英业达股份有限公司 | 存储器重设装置 |
EP2090347A1 (en) * | 2008-02-15 | 2009-08-19 | Nintendo Co., Ltd. | Computer-readable storage medium storing information processing program and information processing device |
Also Published As
Publication number | Publication date |
---|---|
CN101916232A (zh) | 2010-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101375228B (zh) | 具有省电指令高速缓存通路预测器和指令代替方案的微处理器 | |
KR100772863B1 (ko) | 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치 | |
EP3447647B1 (en) | Handling memory requests | |
CN100421088C (zh) | 用于管理高速缓存数据的数字数据处理设备和方法 | |
CN103119570B (zh) | 用于实现微页表的装置、方法和系统 | |
CN101606130B (zh) | 在处理器系统的指令级使能资源分配标识的方法和装置 | |
US11132300B2 (en) | Memory hierarchy using page-based compression | |
CN101097547B (zh) | 用智能最近最少使用方案在高速缓存中进行功率性能调整 | |
CN101593161B (zh) | 确保微处理器的快取存储器层级数据一致性的装置与方法 | |
CN100367242C (zh) | 用于在处理环境中提供路径记忆的系统和方法 | |
EP3433742B1 (en) | Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations | |
US20120290793A1 (en) | Efficient tag storage for large data caches | |
US9317448B2 (en) | Methods and apparatus related to data processors and caches incorporated in data processors | |
US8301842B2 (en) | Efficient pseudo-LRU for colliding accesses | |
CN102073533B (zh) | 支持动态二进制翻译的多核体系结构 | |
CN101523359A (zh) | 具有减小数据高速缓存访问功率的微标签阵列的处理器及其应用 | |
CN102693187A (zh) | 用以减少多级高速缓冲存储器层级中的掷出的设备和方法 | |
US20150019813A1 (en) | Memory hierarchy using row-based compression | |
WO2006078837A2 (en) | Methods and apparatus for dynamically managing banked memory | |
CN102859504A (zh) | 有效分区存储缓存 | |
CN112997161A (zh) | 将储存系统用作主存储器的方法和装置 | |
US8468297B2 (en) | Content addressable memory system | |
CN101916232B (zh) | 存储器配置装置以及方法 | |
US20070266199A1 (en) | Virtual Address Cache and Method for Sharing Data Stored in a Virtual Address Cache | |
US8065496B2 (en) | Method for updating information used for selecting candidate in LRU control |
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 |