具体实施例
本发明的基本原理在于:将L1高速缓存划分成为两部分,即L1高速缓存A,用于保存修改之后的新数据;以及L1高速缓存B,用于保存修改之前的旧数据。当进程需要执行回滚操作时,将L1高速缓存B中的旧数据恢复到L2高速缓存中相应的L1高速缓存线。
另外,在本发明中,为了实现以高速缓存线为单位来进行高效的数据拷贝,针对L2高速缓存中的每条L2高速缓存线设置一个标识位T,用于表示是否对L2高速缓存线进行了修改。这样,本发明提出了一种以高速缓存线为拷贝单位并且在靠近处理器核的L1高速缓存和L2高速缓存中进行写拷贝的方法,用以实现精细粒度以及高效的基于硬件的写拷贝。
下面参考附图详细说明根据本发明的实施例。应该理解,这些实施例仅仅是说明书性的,而并非对本发明范围的限制。
下面,首先参考附图描述本发明的应用环境。
首先参考图1,图1示出了其中可以应用本发明的具有单处理器核的计算机系统架构100。该架构100可以包括处理器101、内存140、以及外部存储设备150(例如硬盘、光盘、闪存等)。
处理器101可以包括处理器核110、L1高速缓存120和L2高速缓存130等。众所周知,处理器核110对以上L1高速缓存120、L2高速缓存130、内存140和外部存储设备150的访问速度依次降低。
通常,在处理器101内部,L1高速缓存120用于在处理器核110处理数据过程期间暂时存储数据。由于缓存指令和数据与处理器在相同频率下工作,L1高速缓存120的存在可减少处理器101与内存140之间的数据交换次数,从而提高处理器101的运算效率。由于L1高速缓存120的容量有限,为了再次提高处理器核的运算速度,设置了L2高速缓存130。
处理器核110在读取数据时,顺序依次为L1高速缓存120、L2高速缓存130、内存140、以及外部存储设备150。在设计上述多级存储结构的过程中,采用“包含性”原则。即,L1高速缓存120中的所有数据均包含在L2高速缓存130之中,L2高速缓存130中的所有数据均包含在内存140和外部存储设备150之中,依次类推。即,L1高速缓存120
L2高速缓存130
内存140
外部存储设备150。
按照本发明的一个实施例,该架构100还可以包括用于分别控制L1高速缓存120、L2高速缓存130、内存140以及外部存储设备150的操作的相应存储控制器(没有示出)。当然,也可以通过单个存储控制器来实现上述多级存储结构的控制。
图2示出了其中可以应用本发明的处理器200中的高速缓存层次结构。在处理器200中,处理器核110可以耦合到L1高速缓存120,并且L1高速缓存120可以耦合到L2高速缓存130。
当处理器核110进行装载操作时,处理器核110首先在L1高速缓存120中进行查找,如果命中,则直接从L1高速缓存120中返回数据;否则,将尝试从L2高速缓存130中装载数据。如果命中L2高速缓存130,则从L2高速缓存130中返回数据。已知的是,处理器核110对L1高速缓存120以及L2高速缓存130进行操作时,所占用的时钟周期数目存在显著差异,即对L1高速缓存120以及L2高速缓存130两者的操作效率显著不同。对L1高速缓存120的访问通常只需要几个时钟周期,但是对于L2高速缓存130的访问通常需要几十个时钟周期。
当处理器核110进行存储操作时,如果L1高速缓存120未命中,则直接将数据发送至L2高速缓存130,而并不通过L1高速缓存120。如果L1高速缓存120命中,则同时将数据发送至L1高速缓存120和L2高速缓存130两者。这是因为,正如上面所述的,在设计L1、L2两级高速缓存结构时,采用“包含性”的方法,即,L1高速缓存120中的所有数据均包含在L2高速缓存130之中。正如下面将描述的,本发明对处理器核的存储操作过程中做出了改进。
同样地,处理器200也可以包括可用于分别控制L1高速缓存120和L2高速缓存130的各种操作的高速缓存控制器(没有示出)。应该理解,也可以通过单个高速缓存控制器来实现对L1高速缓存120和L2高速缓存130的控制。
下面描述其中可以应用本发明的多核处理器系统。在多核处理器中,处理器中的存储器层次结构设计与图2中类似,不同之处在于需要在多个处理器核之间维护数据的一致性。
参考图3,图3示出了其中可以应用本发明的多核处理器系统300的示意图。
如图3所示,处理器核1 110可以耦合到L1高速缓存120,L1高速缓存120可以耦合到L2高速缓存130,以及L2高速缓存130可以进一步耦合到总线340。同样,处理器核2 310可以耦合到L1高速缓存320,L1高速缓存320可以耦合到L2高速缓存330,以及L2高速缓存330可以进一步耦合到总线340。
当在计算机系统中存在两个或者多个处理器核时,可以通过总线340来在各个处理器核之间传送表示多个处理器核的高速缓存一致性的消息。所述的高速缓存一致性消息是指,当多个处理器核中的一个对由多个处理器核共享的高速缓存中的数据进行修改之后,为保证该数据在多个高速缓存中的副本的数据的一致性而在总线上传送的消息。如图3所示,例如处理器核1 110和处理器核2 310将同一数据分别装载到L1高速缓存120以及L1高速缓存320之中,如果其中某个处理器核(例如,处理器核2 310)修改了所述数据,则其将通过总线340来向其他的处理器核发送高速缓存一致性消息,告知所述数据已经被修改并且进行后续的高速缓存一致性处理操作。通常,通过高速缓存一致性协议来维护存储器中数据的一致性。
从以上描述可知,通常以下情况可能改变高速缓存线的状态:(1)在处理器核中装载/存储操作;(2)来自总线的高速缓存一致性消息。
以上具体描述了可以应用本发明的环境。下面将具体描述根据本发明的实施例的用于实现基于硬件的写拷贝的方法和系统。
从上面的描述中可知,处理器核对L1高速缓存120的操作速度远远大于对L2高速缓存130的操作速度。因此本发明在实现写拷贝时,针对L1高速缓存120提出了一种双高速缓存的方法来实现高效的写拷贝。在L1高速缓存中实现写拷贝的另一优点在于,可以提供精细粒度的写拷贝,即,以每条高速缓存线为单位来进行写拷贝,这种写拷贝的颗粒度远远优于现有技术的在内存中以页面为单位(4k)来进行的写拷贝。另外,由于每次进行写拷贝时颗粒度较小而需要更短的时间,由此更进一步提高了写拷贝的效率。
下面参考图4来详细说明根据本发明的实施例的包括双L1高速缓存的处理器系统400。
如图4所示,处理器系统400可以包括处理器核110。处理器核110可以耦合至L1高速缓存120,以及L1高速缓存120可以耦合至L2高速缓存130,L2高速缓存130接着可以通过总线耦合到内部存储器或者其他处理器。
另外,系统400还可以包括可用于分别控制L1高速缓存120和L2高速缓存130的各种操作的L1高速缓存控制器和L2高速缓存控制器(没有示出)。应该理解,也可以通过单个高速缓存控制器来实现对L1高速缓存120和L2高速缓存130的控制。
根据本发明,L1高速缓存120可以在逻辑上分成L1高速缓存A 122和L1高速缓存B 124两部分。当处理器核110在非HCOW上下文中执行处理时,L1高速缓存A 122和L1高速缓存B 124两者均用作L1高速缓存。
另外,根据本发明的实施例,对于处于L2高速缓存130中的每条高速缓存线,设置一标识位T 532,用于指示所述高速缓存线中数据的状态,例如,当高速缓存线没有被修改时,对应于该高速缓存线的标识位被设置为0,而当该高速缓存线被修改时,该标识位被置位为1。例如,当由HCOW存储指令(在HCOW上下文中的存储指令)修改某高速缓存线中数据时,对应于该高速缓存线的标识位置位为1。
可替换地,也可以将标识位T设置为:当高速缓存线没有被修改时,对应于该高速缓存线的标识位被设置为1,而当该高速缓存线被修改时,该标识位被置位为0。
可替换地,也可以通过表的形式来分别记录各个L1高速缓存线的状态。应当理解,在本发明中,只要能够实现L1高速缓存中的每条L1高速缓存线的状态的记录即可,并不限于上述形式。
在本发明的实施例中,当处理器核110在HCOW上下文中执行操作时,L1高速缓存A 122的操作与常规的高速缓存相同,但是在L1高速缓存B 124之中仅保存数据的旧值。此时,通过HCOW存储指令存储的每个数据都具有两个拷贝,分别处于L1高速缓存A 122和L1高速缓存B 124之中,并且L1高速缓存A 122中保存新值,而在L1高速缓存B 124中保存旧值。一旦需要执行回滚操作时,则利用L1高速缓存B 124中保存的旧数值进行恢复,并丢弃在L1高速缓存A 122中保存的值。
现在参考图5,其中示出了本发明的一个实施例的用于执行写拷贝方法的基本原理。
在图5的处理器系统500中,处理器核110可以耦合至L1高速缓存120,以及L1高速缓存120可以耦合至L2高速缓存130。正如以上所述的,可以将L1高速缓存120在逻辑上划分成为L1高速缓存A 122以及L1高速缓存B 124两部分。
如图5所示,当处理器核110向高速缓存存储数据(存储操作)时,如图5中的箭头A所示,如果处理器核100命中L1高速缓存A112中高速缓存线532,则处理器核110将新数据保存在高速缓存线532处,接着如箭头B所示从高速缓存A 122返回。
然后,在L2高速缓存130中查找与高速缓存线532相对应的L2高速缓存线,并且找到L2高速缓存线536(如箭头C所示)。
根据本发明的实施例,如果与L2高速缓存线536对应的标识位T 532的值为0,表示该L1高速缓存536没有被修改过,这时,将L2高速缓存线536中的数据拷贝到L1高速缓存B 124之中相应的L1高速缓存线534处(如箭头D所示)。然后将新数据写入L2高速缓存线536,并且将L2高速缓存线536的标识位的值设置为1,表示L2高速缓存线536已经被修改过
另一方面,如果与L2高速缓存线536相应的标识位T532的值为1,表示L2高速缓存线536中的数据之前已经由HCOW存储指令修改过。这种情况下,不必将L2高速缓存线536中的数据拷贝到L1高速缓存B 124之中的L1高速缓存线534处(因为该高速缓存线保存的是修改的数据)。
本发明一个实施例的特点包括:
首先,将L1高速缓存120在逻辑上划分成为L1高速缓存A 122和L1高速缓存B 124两部分,分别用于保存修改之后的新数据以及修改之前的旧数据。
其次,针对L1高速缓存中的每条高速缓存线设置标识位T,用于表示在该高速缓存线中的数据是否被修改,并根据标识位T的值来确定是否将L2中的高速缓存线拷贝到L1高速缓存B 124中相应的高速缓存线。
经过上述操作之后,在L1高速缓存A 122中存储最新版本的新数据,而在L1高速缓存B 124中存储相应的旧版本的旧数据。当需要执行回滚操作时,只须用L1高速缓存B 124中的数据作为当前数据拷贝到L2高速缓存中相应高速缓存线,并且将了L1高速缓存A122中的数据无效。如果不需要执行回滚操作,则仅须将L1高速缓存B 124中的数据无效。
下面,参考图6并结合图5,详细描述根据本发明实施例的用于在处理器中执行写拷贝的方法。
通常,在步骤602处,当处理器核执行存储操作时,启动根据本发明的实施例的用于在处理器中执行写拷贝的方法。
在步骤S604处,判断是否L1高速缓存A 122命中并且在L2高速缓存130中相应的高速缓存线的标识位的值为0。如果是,处理前进至步骤S606。如果否,则处理直接前进至步骤S608。
在步骤S606处,将L2高速缓存130中相应的高速缓存线中的数据读入L1高速缓存B 124,并且然后将新数据写入L1高速缓存A122和L2高速缓存130,同时设置相应的L2高速缓存线的标识位T=1。然后处理前进至步骤620结束。
在步骤S608中,判断是否L1高速缓存A 122命中并且在L2高速缓存130中相应的高速缓存线的标识位的值为1,如果是,则处理前进至步骤S610。如果否,则处理直接前进至步骤S612。
在步骤S610中,直接向L1高速缓存A 122和L2高速缓存130写入新数据值。然后,处理前进至步骤S620结束。
在步骤S612中,判断是否L1高速缓存A 122未命中但L2高速缓存130命中并且相应的L2高速缓存线中的标识位为0。如果是,则处理前进至步骤S614。如果否,则处理直接前进至步骤S616。
在步骤S614中,将L2高速缓存130中相应的高速缓存线中的数据读入L高速缓存B 124,并将新数据写入L2高速缓存130,同时将L2高速缓存130中相应的高速缓存线的标识位的值设置为1。然后,处理前进至步骤S620结束。
在步骤S616中,判断是否L1高速缓存A 122未命中但L2高速缓存130命中并且相应L2高速缓存线中的标识位为1。如果是,则处理前进至步骤S618。如果否,则处理直接前进至步骤S620结束。
在步骤S618中,直接将新值写入L2高速缓存130。然后,处理前进至步骤S620结束。
应该理解,图1中的各个步骤并非必须严格按照所示的顺序,它们顺序上的变化也可以在本发明的范围之内。
另外,应该理解,在L1高速缓存命中的情况下,可以先将新数据写入L1高速缓存,然后再判断相应的L2高速缓存线是否曾经被修改。
进一步,应该理解,在本发明的实施例中,L1高速缓存A 122和L1高速缓存B 124之间的比例可以动态调整。由于L1高速缓存B 124中保存的是L1高速缓存A 122中数据的旧值,因而L1高速缓存B 124中高速缓存线数目的最大值是与L1高速缓存A 122中的高速缓存线的数据相等。
根据本发明的实施例,在L1高速缓存A 122总是保存新数据,而L1高速缓存B 124总是保存就数据。在进程需要执行回滚操作时,只需要将L1高速缓存B 124中的旧数据回滚至L2高速缓存130中的相应高速缓存线即可。这样,根据本发明第一实施例,可以实现精细拷贝粒度以及高效率的基于硬件的写拷贝方法。
进一步,本申请也提出了针对多核处理器系统中来自总线的高速缓存一致性消息的方案。该方案中,利用上述针对每个L2高速缓存线设置的标识位T。
具体地,参考图7,其中示出了来自总线的读取消息的流程图。在步骤S702中开始流程。在步骤S704中,如果命中L2并且在相应L2高速缓存线中的标识位T=0,则L2在处理此消息时步骤与常规情况相同。否则,如果在相应L2高速缓存线中的标识位T=1,则表示出现冲突。接着,触发中断来通知出现冲突事件。
另外在处理来自总线的删除(kill)消息时,操作步骤与上文中处理来自总线的读取消息相同,其处理流程图同样如图7所示,在此不再赘述。
应该理解,在实际环境中,可以对上述实施例及其变型中的各个特征和步骤进行任意组合。
另外,应该理解,本发明可以以硬件、软件、固件以及它们的组合来实现。本领域技术人员应该认识到,也可以在供任何合适数据处理系统使用的信号承载介质上所设置的计算机程序产品中体现本发明。这种信号承载介质可以是传输介质或用于机器可读信息的可记录介质,包括磁介质、光介质或其他合适介质。可记录介质的例子包括:硬盘驱动器中的磁盘或软盘、用于光驱的光盘、磁带,以及本领域技术人员所能想到的其他介质。本领域技术人员应该认识到,具有合适编程装置的任何通信终端都将能够执行如程序产品中体现的本发明方法的步骤。
从上述描述应该理解,在不脱离本发明精神的情况下,可以对本发明各实施例进行修改和变更。本说明书中的描述仅仅是用于说明性的,而不应被认为是限制性的。本发明的范围仅受权利要求书的限制。