用于将数据线写入l2高速缓存的方法

文档序号:6570954阅读:409来源:国知局
专利名称:用于将数据线写入l2高速缓存的方法
技术领域
本发明涉及存储器高速缓存,其中,在一个或多个请求处理器与主存储器之间将较慢主存储器中存储的数据的各部分传送到较快存储器中,特别是由局部改变位(local change bit)来将所选数据从主存储器指引到高速缓存中。
背景技术
当数据在多处理器系统中第一次引用时,难以预测是否会例如通过请求处理器的“存储(store)”或单纯的“读取(read)”而最终改变该数据。如果将数据以“读取”状态安装在高速缓存中,且处理器不“存储”该线(line),则为了确保高速缓存一致性而需要额外延迟。也就是,必须从其他高速缓存去除该线(line)的所有其他拷贝。
另一方面,可以认为将例如经由“存储”来改变一个数据线,且将该线“独占(exclusive)”地安装到处理器。然而,这也导致该线的所有其他拷贝被从其他高速缓存中去除。现在,如果数据仅是由两个处理器“读取”,也就是说,它是共享数据,则该线将经受高速缓存之间的“激烈争夺(tug of war)”,这降低了性能。
从而,显然需要获得如下效果使软件指示硬件如何使用每个线,即只读或改变,而无需修改在软件堆栈中的所有软件以指示将如何使用每个线。

发明内容
该问题通过基于历史的安装来解决,其中,使用局部改变位来指示数据线的安装状态。具体而言,当第一次从存储器访问数据线时,当前系统实现“独占”地将该线安装在所有高速缓存中,从而为最终存储做好准备。在此不与任何其他处理器共享该线。从而,这表示最高有效状态。
然而,一旦第二个处理器请求该线,则该线对于两个处理器表现为“只读的”。不管该线是否仍为第一或请求处理器使用,也不管第一处理器用完该线并且第二个处理器现在成为该数据线的完全用户,这一点均成立。
根据此处所述的方法,本发明使用数据线的历史来确定将该线安装在新高速缓存中的状态。如果在该线在第一处理器的高速缓存中的占用期间改变了该线,则模拟结果表明很可能会由新处理器将该线改变。但是,如果在该线在第一处理器的高速缓存中的占用期间没有被改变,则模拟结果表明不太可能由该新处理器将该线改变。
这对于整个软件堆栈均得到遵循,而不使用附加软件指令。


附图示出本发明的各个实施例和示例,其中图1表示出处理器和L1高速缓存、L2高速缓存和主存储器;以及图2表示出包括具有L1高速缓存的两个处理器、共享L2高速缓存和主存储器。
具体实施例方式
此处描述具有多个独立处理器的多处理器系统。每个处理器具有相关联的L1高速缓存,多处理器系统具有至少一个共享主存储器和至少一个共享L2高速缓存。此处所述方法涉及将数据线写入L2高速缓存中,该L2高速缓存包括用于指示数据线的安装状态的局部改变位。
局部改变位是与存储在任何高速缓存中的每个线相关联的位,它保持有各高速缓存的特定高速缓存中存储的各线的特定线的局部改变状态信息。具体而言,当驻留于各高速缓存的特定高速缓存中时,局部改变位指示该特定高速缓存中存储的各线的特定线是否已被多处理器系统中的任何一个处理器修改。
图1表示出包括处理器111和L1高速缓存113、L2高速缓存121和主存储器131的处理器系统101。运行在系统上的应用程序通过从高速缓存而非主存储器取得数据,从而利用该增强。由于对高速缓存的访问时间更短,使应用程序性能得到提高。当然,在存储器与高速缓存之间仍存在一定业务量,不过是最小量的。
系统101首先将处理器111所需的数据从主存储器131拷贝到L2高速缓存121中,然后,从L2高速缓存121拷贝到L1高速缓存113,再拷贝到处理器111中的寄存器(未示出)中。关于结果的存储按照相反的方向进行。首先,系统将数据从处理器111拷贝到L1高速缓存113中,再拷贝到L2高速缓存121。根据高速缓存体系结构的细节,然后将数据立即拷贝回存储器131(直写(write-through)),或拷贝受到延迟(回写(write-back))。如果应用程序再次需要同样的数据,若数据仍处在L1高速缓存113和L2高速缓存121中或仅在L2高速缓存121中,则大大减少数据访问时间。为进一步缩减存储器传送成本,将多于一个的单元加载到高速缓存中。传送的单位被称为高速缓存块或高速缓存线。对单个数据单元的访问将整个线带到高速缓存中。保证该线包含所请求的单元。
时延和带宽是与高速缓存和存储器相关联的两个度量。它们均不是一致的,而是对于存储器层次结构的具体部件为特定的。时延通常以处理器周期或纳秒表示,而带宽通常以兆字节每秒或吉字节每秒表示。
实际上,将存储器部件的时延作为获取传送单位(通常是高速缓存线)的第一部分所花费的时间进行测量。由于部件的速度取决于其在层次结构中的相对位置,时延并不一致。作为控制规则(rull ofthumb),稳妥地说,当从L1高速缓存113移动到L2高速缓存121、再到主存储器131时,时延增大。
其中某些存储器部件,例如L1高速缓存113,可物理地位于处理器111上。其优点在于,其速度将与处理器时钟成比例。因此,以处理器时钟周期而非纳秒表示这样部件的时延是有意义的。
在某些微处理器上,诸如L1高速缓存113的集成(芯片上)高速缓存并不总是以处理器的速度运行。它们以处理器时钟的整数分之一(1/2、1/3,等)的时钟速率运行。
处理器外部的高速缓存部件并不经常或仅仅是部分地从处理器时钟升级中受益。它们的时延通常以纳秒表示。主存储器时延几乎总是以纳秒表示。
带宽是对存储器部件的渐进速度(asymptotic speed)的测量。该量反映出移入和移出大容量数据的速度有多快。就像时延那样,带宽并不一致。一般而言,越远离处理器111,带宽就越低。
如果能够减少数据获取的步骤数,则会减小时延。
图2表示出包括具有L1高速缓存213a、213b的两个处理器211a、211b,共享L2高速缓存221和主存储器231的系统201。数据线241和控制线251执行其正常功能。参照图2,当独占线因过期而被逐出L1高速缓存213a或213b(age out)时,L1高速缓存213a或213b向L2高速缓存221发送信号,指示该线不再存在于L1高速缓存213a或213b中。这导致L2高速缓存221被更新以指示该线“不被拥有”。也就是,将拥有关系从特定处理器改变到“不被拥有”。
参看图2,通过减少以及在某些情形中甚至消除交叉询问处理(cross interrogate processing),这改善了性能。对于因L1替换或过期替换(age out replacement)而不再存在于L1高速缓存213a或213b中的线,消除交叉询问处理避免了向L1高速缓存213a或213b发送交叉询问。从而,这导致当另一处理器请求该线时使时延更短,并且避免在其他L1高速缓存处的无果目录查找。
另外,对于将在L2高速缓存221中被更换的线,消除交叉询问处理避免了向L1高速缓存213a或213b发送交叉无效(crossinvalidate)。一般而言,当线因过期而被逐出L2高速缓存221时,也必须在L1高速缓存213a或213b中使该线无效。这在L1高速缓存213a或213b与L2高速缓存221之间保持子集规则。这两个无效干扰在L1高速缓存213a或213b处的正常处理。如果线不再存在于L1高速缓存213a或213b中,该干扰是不必要的,且对性能产生负面影响。
根据此处所述的方法,本发明使用数据线的历史来确定将该线安装在新高速缓存中的状态。也就是,使用局部改变位来指示数据线的安装状态。如果在该线在第一处理器的高速缓存中的占用期间改变了该线,则模拟结果表明很可能会由新处理器将该线改变。但是,如果在该线在第一处理器的高速缓存中的占用期间没有被改变,则模拟结果表明不太可能由该新处理器将该线改变。
这对于整个软件堆栈均成立,而不使用附加软件指令。
最初,所有存储在高速缓存目录项中设置“局部改变”位。这是对关于所有高速缓存数据线都存在的全局改变位的补充。全局改变位指示存储器需要最终用所有累积的改变进行刷新。
如果数据获取错过局部处理器数据高速缓存,但在另一高速缓存中命中,并且在该另一高速缓存中使能局部改变位,则将该线从该另一处理器高速缓存中去除,并“独占”地安装到新处理器。此外,在新高速缓存中复位(关闭)局部改变位。这与早先的做法形成对比,在早先的做法中,是将其只读地安装到多个处理器。
如果数据获取错过局部处理器数据高速缓存,但在另一高速缓存中命中,并且在该另一高速缓存中局部改变位为“关闭”,则将该线“只读”地安装到新处理器,并对这两个高速缓存状态都进行设置,以指示存在在系统中安装的该线的多个拷贝。在两个高速缓存中,将局部改变位设置为“关闭”。
以此方式,使用局部改变位指示数据线的安装状态。
尽管参照某些优选实施例和示例描述了本发明,但并不意在限制本发明的范围。本发明的范围仅由所附权利要求来限定。
权利要求
1.一种具有多个独立处理器的多处理器系统中将数据线写入L2高速缓存中的方法,所述处理器的每个都具有相关联的L1高速缓存,所述多处理器系统具有至少一个共享主存储器和至少一个共享L2高速缓存,所述方法包括使用局部改变位来指示数据线的安装状态。
2.根据权利要求1的方法,其中,数据线的历史确定在高速缓存中安装所述线的状态,该方法包括第一次时引用主存储器中的数据线;以及当第二个处理器请求该线时使得该线看上去是“只读”的。
3.根据权利要求1的方法,包括最初将所有的存储设置到“局部改变的”高速缓存目录项。
4.根据权利要求1的方法,其中,当局部处理器数据获取错过第一个L1高速缓存中的局部处理器数据L1高速缓存,但在第二个L1高速缓存中命中时,在该第二个第一高速缓存中使能局部改变位,将该线从该第二个处理器L1高速缓存中去除,并将“独占”安装到该第二个处理器。
5.根据权利要求4的方法,包括在该第二个高速缓存中将局部改变位复位为“关闭”。
6.根据权利要求1的方法,其中,当数据获取错过局部处理器L1数据高速缓存,但在局部改变位为“关闭”的另一个处理器L1高速缓存中命中时,将该线“只读”地安装到新处理器,并对这两个高速缓存状态都进行设置,以指示存在在系统中安装的该线的多个拷贝。
7.根据权利要求6的方法,包括在两个高速缓存中将局部改变位改变为“关闭”。
全文摘要
使用局部改变位指示数据线的安装状态。一种具有多个独立处理器的多处理器系统,其中每个处理器都具有相关联的L1高速缓存,所述多处理器系统具有至少一个共享主存储器和至少一个共享L2高速缓存。将数据线写入L2高速缓存中的方法包括使用局部改变位来指示数据线的安装状态。
文档编号G06F12/08GK101013399SQ20071000183
公开日2007年8月8日 申请日期2007年1月5日 优先权日2006年1月30日
发明者凯瑟林·M.·杰克逊, 麦柏乾, 基思·N.·兰斯顿, 小亚瑟·J.·奥内尔, 戴维·S.·赫顿 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1