CN100357917C - 存储器控制设备和存储器控制方法 - Google Patents

存储器控制设备和存储器控制方法 Download PDF

Info

Publication number
CN100357917C
CN100357917C CNB2005100554111A CN200510055411A CN100357917C CN 100357917 C CN100357917 C CN 100357917C CN B2005100554111 A CNB2005100554111 A CN B2005100554111A CN 200510055411 A CN200510055411 A CN 200510055411A CN 100357917 C CN100357917 C CN 100357917C
Authority
CN
China
Prior art keywords
data
processor
request
processing
memory
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.)
Expired - Fee Related
Application number
CNB2005100554111A
Other languages
English (en)
Other versions
CN1779664A (zh
Inventor
松井孝夫
冈田诚之
伊藤大介
畑井田诚
植木俊和
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of CN1779664A publication Critical patent/CN1779664A/zh
Application granted granted Critical
Publication of CN100357917C publication Critical patent/CN100357917C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

存储器控制设备和存储器控制方法。目标数据的地址信息在开始由反向驱逐进行高速缓存逐出处理时被存储在ELA寄存器中,并且当由处理器请求获得的数据的地址在ELA寄存器中存在时,请求处理单元连续地再次进行数据获取处理。目标数据的地址信息在开始由处理器进行自主移出时被存储在EWB缓存中,并且当被反向驱逐的数据的地址在EWB缓存中存在时,停止由反向驱逐进行的高速缓存逐出处理。

Description

存储器控制设备和存储器控制方法
技术领域
本发明涉及一种可靠地保持高速缓存之间的一致性(consistency)的技术。
背景技术
近年来,为了解决处理器和与处理器连接的主存储器之间的速度上的差异,通常在处理器中提供高速缓存存储器。虽然这样获得了更高的处理速度,但由于高速缓存存储器的存储容量比主存储器小得多,所以主存储器中的数据仅有一小部分可被存储在高速缓存存储器中。因此,只有频繁使用的数据被顺序地依次存储在高速缓存存储器中。用从主存储器中读出的新数据写覆盖高速缓存存储器中存在的旧数据的操作称为高速缓存替换。
用于进行高速缓存替换的技术公开在(例如)日本专利申请特开No.H10-55305中。下文将详细解释在多处理器***中怎样进行高速缓存替换操作。
图9是用于解释高速缓存替换操作的示意图。图9示出的结构包括多处理器***、存储器控制设备100、和主存储器40。该多处理器***包括两个处理器10和20。处理器10包括高速缓存存储器11,处理器20包括高速缓存存储器21。假设以4路(W0到W3)集相关方式(4-way setassociative scheme)控制高速缓存存储器11和21。还假设某高速缓存索引的四个通路都处于有效状态,并且数据A到D分别存储在该四个通路中。
处理器10和20通过存储器控制设备100与主存储器40通信。存储控制设备100进行处理器10和20与主存储器40之间的数据输入/输出控制,并且包括两个TAG-RAM(标签随机存取存储器)130和131以便有效地进行高速缓存的一致性控制。TAG-RAM 130和131分别存储在高速缓存存储器11和21中分别存储的数据的地址信息。
为了解释的目的,假设处理器10请求来自主存储器40的具有与数据A到D相同的高速缓存索引的数据E(步骤S1301)。接着处理器10查阅高速缓存存储器11以确定数据E在高速缓存中存储的位置。因为全部通路有效,所以处理器10确定某一通路必须被无效。假设处理器10选择W1作为被无效的块(步骤S1302)。
处理器10进行高速缓存逐出处理,该高速缓存逐出处理包括从W1中逐出旧数据B并使逐出了数据B的块无效。随后,处理器10通知存储器控制设备100:对数据B的高速缓存逐出处理已经完成(步骤S1303)。响应于该通知,存储器控制设备100使TAG-RAM130的W1无效并将被处理器10逐出的数据B写入主存储器40。
此后,主存储器40将数据E传送给存储器控制设备100。该存储器控制设备100接收数据E并在TAG-RAM 130的W1中存储数据E的地址信息,并且将数据E发送给处理器10。处理器10接收数据E并在W1中存储该数据E。这样完成了高速缓存替换操作。
因此,在传统的方法中,不仅高速缓存存储器中的内容被更新,而且TAG-RAM中的内容也被更新。存储器控制设备通过查阅TAG-RAM来确定数据的输入/输出路线(route)。因此,在执行高速缓存的一致性管理中,保持处理器的高速缓存存储器的内容与存储器控制设备的TAG-RAM的内容的一致性是绝对强制的要求。
然而,某些已知的处理器不将有关高速缓存逐出处理的信息通知给存储器控制设备。如果多处理器***包括这样的处理器,则TAG-RAM中的内容不能与高速缓存存储器中的内容一致,以至于存储器控制设备不能维持高速缓存之间的一致性。解决该问题的一种方法是根本不提供TAG-RAM,但是,在这种情况下,每次进行存储器访问时都需要检查全部处理器中高速缓存的存在/不存在,这降低了***的性能。
发明内容
本发明的一个目的是至少解决传统技术中的问题。
根据本发明的一个方面,被连接到主存储器和各自具有高速缓存存储器的多个处理器之间的,并且控制由处理器对主存储器的访问的存储器控制设备包括:标签信息存储单元,具有多个存储有高速缓存存储器中保存的数据的地址信息的块,其中所述块可被有效或者无效;请求处理单元,用于处理处理器的存储器访问请求,并且当所述标签信息存储单元的任何一个所述块必须被无效时,用于请求其高速缓存存储器中保存有与将被无效的标签信息存储单元的块中存储的数据相同的待逐出数据的处理器进行将该待逐出的数据从该高速缓存存储器逐出到主存储器的高速缓存逐出处理;逐出目标数据存储单元,用于在请求处理单元请求处理器进行高速缓存逐出处理时,在一条目中存储待逐出数据的地址信息,直到处理器完成高速缓存逐出处理;和再次执行决定单元,在所述请求处理单元确定了用于获得处理器所请求的数据的获取路线决定处理时,检查存储在所述逐出目标数据存储单元中的地址信息,并且如果所请求的数据的地址信息包括在任何一条所述条目中,则使所述请求处理单元再次进行数据的获取路线决定处理。
根据本发明的一个方面,一种控制多个各自具有高速缓存存储器的处理器对主存储器的访问的方法包括:对处理器的存储器访问请求进行处理,并且当保存有处理器的高速缓存存储器中所保存的数据的地址信息的标签信息存储单元的任何一个所述块必须被无效时,请求其高速缓存存储器保存有待逐出的数据的处理器进行将该待逐出的数据从高速缓存存储器逐出到主存储器的高速缓存逐出处理,该待逐出的数据与将被无效的标签信息存储单元的块中存储的数据相同;当处理器在处理步骤被请求进行高速缓存逐出处理时,将待逐出数据的地址信息存储在逐出目标数据存储单元的一个条目中,直到处理器完成高速缓存逐出处理;以及当由任何一个所述处理器请求的获得数据的获取路线决定处理在处理步骤中被确定时,检查存储在逐出目标数据存储单元中的地址信息,并且如果所请求的数据的地址信息被包括在任何一条所述条目中,则使处理步骤再次进行,以便再次进行数据的获取路线决定处理。
本发明的其它目的,特征和优点将在下面的详细说明中具体阐述,或者将在结合附图阅读下面的详细说明时显而易见。
附图说明
图1是根据本发明的实施例的存储器控制设备的功能框图;
图2是用于解释图1所示的EWB缓冲器进行的寄存/释放操作的示意图;
图3是用于解释图1所示的ELA寄存器进行的寄存操作的示意图;
图4是用于解释图1所示的ELA寄存器进行的另一寄存操作的示意图;
图5是用于解释图1所示的再次执行决定单元的操作的示意图;
图6是用于解释图1所示的取消决定单元的操作的示意图;
图7是用于解释同一缓存行的数据在反向驱逐(BackEviction)完成之前被另一个处理器请求获得时进行的操作的示例的示意图;
图8是用于解释当被反向驱逐的缓存行通过自主移出被无效时进行的操作的示例的示意图;
图9是用于解释高速缓存替换操作的示例的示意图;
图10是用于解释利用反向驱逐的高速缓存替换操作的示例的示意图;
图11是用于解释当相同缓存行的数据在反向驱逐完成之前被另一处理器请求获得时进行的操作的示例的示意图;
图12是用于解释当被反向驱逐的缓存行被自主移出而无效时进行的操作的示例的示意图。
具体实施方式
下面将参照附图说明本发明的示例性实施例。
在本发明中使用被称为反向驱逐(BackEviction)的存储器控制方法。然而首先将描述反向驱逐具有的某些缺陷。
当多处理器***由不会将关于高速缓存逐出处理的信息传送给存储器控制设备的处理器所构建时,绝大部分问题可通过使存储器控制设备指定处理器进行高速缓存逐出处理来解决。存储器控制设备指定处理器进行高速缓存逐出处理的过程被称为反向驱逐。
下面将描述使用反向驱逐的存储器控制方案的示例。图10是用于解释利用反向驱逐进行高速缓存替换操作的示例的示意图。与图9中示出的部件具有相同或者类似的配置或者执行相同或者类似功能的部件由相同的附图标记指示。在图10中,假设处理器10的高速缓存存储器11是通过4路(W0到W3)集相关方式控制的,并且特定高速缓存索引的全部四个通路都处于有效状态,并且数据A到D被分别存储在该四个通路中。
假设处理器10向主存储器40请求与数据A到D具有相同高速缓存索引的数据E(步骤S1401)。处理器10查阅高速缓存存储器11来确定数据E在高速缓存中存储的位置。因为全部四路都有效,所以处理器10确定某一通路必须被无效。假设处理器10选择W2作为要被无效的块(步骤S1402)。存储器控制设备100不会被通知处理器10已经选择了W2作为要被无效的块。
另一方面,存储器控制设备100接收对主存储器40的数据E的请求,并且查阅TAG-RAM 130来确定数据E的地址信息在高速缓存中存储的位置。因为相同高速缓存索引的通路全部有效,所以确定某一通路必须被无效。假设存储了数据B的地址信息的W1被确定要被无效(步骤S1403)。
在此情况下,存储器控制设备100请求处理器10对存储有数据B的通路进行高速缓存逐出处理(步骤S1404)。响应该请求,处理器10进行对存储有数据B的通路的高速缓存逐出处理,由此使W1无效(步骤S1405)。
此后,主存储器40将数据E发送给存储器控制设备100。该存储器控制设备100接收数据E并将数据E的地址信息存储在TAG-RAM 130的W1中,并将数据E发送给处理器10。该处理器10接收数据E并且将数据E存储到W2中。这样就完成了高速缓存替换操作。
当以这种方式进行高速缓存替换操作时,如图10所示,高速缓存存储器11的W1和W2中的内容与TAG-RAM 130的W1和W2中的内容不相同。然而,因为存储在高速缓存存储器11中的数据的所有地址信息都被存储在TAG-RAM 130中,所以存在数据之间的一致性。这是因为,虽然在高速缓存存储器11中存在数据A、E和D的最新的数据,但在存储器控制设备100查阅TAG-RAM 130情况下,不能从主存储器40获得这些数据。
这样,即使多处理器***包括不将有关高速缓存逐出处理的信息传送给存储器控制设备的处理器,在大多数情况下,也可通过使存储器控制设备指定处理器进行高速缓存逐出处理来保持数据之间的一致性。然而,存在不能保持数据之间的一致性的两种例外情况。下面将详细描述这些例外情况。
第一例外情况是,同一缓存行(line)的数据在反向驱逐完成之前被另一个处理器请求。在反向驱逐期间,虽然在高速缓存存储器11中存在最新数据,但存在这样的时段,在该时段中TAG-RAM 130的相应数据的块被无效了。如果在该时段中,与该数据的缓存行相同的缓存行被另一处理器请求,则从主存储器40获取了不合需要的数据,获取了旧数据而没有获取新数据。
第二种例外情况是,将被反向驱逐的缓存行被自主移出(autonomousmove-out)无效。为了有效地使用高速缓存,处理器可能会自主地将旧数据从高速缓存存储器中逐出。当已被自主移出而无效的块的数据被不知情地由反向驱逐再次逐出时,主存储器40中的最新数据会被旧数据写覆盖。
下面将描述两个示例。图11是用于解释在反向驱逐完成之前,另一处理器请求获得同一缓存行的数据时进行的操作的示例的示意图。假设处理器10的高速缓存存储器11的某个高速缓存索引的全部四个通路都处于有效状态,并且数据A到D被分别存储在该四个通路中。
假设处理器10向主存储器40请求与数据A到D具有相同高速缓存索引的数据E(步骤S1501)。处理器10查阅高速缓存存储器11确定数据E在高速缓存中的存储位置。因为所有这四路都有效,所以处理器10确定某一通路必须被无效。假设处理器10选择W2作为要被无效的块(步骤S1502)。
另一方面,存储器控制设备100一旦检测出处理器10已经请求来自主存储器40的数据E,则查阅TAG-RAM 130确定数据E所存储的位置。因为相同高速缓存索引的所有四个通路全部有效,所以它确定某一通路必须被无效。此时,确定存储有数据B的地址信息的W1将被无效(步骤S1503)。
存储器控制设备100请求处理器10进行针对存储有数据B的通路的高速缓存逐出处理(步骤S1504)。此时,TAG-RAM 130的W1被无效。在高速缓存存储器11中存在着数据B的最新数据,并且高速缓存逐出处理尚未结束。因此,没有被更新的旧数据存储在主存储器40中。
假设另一个处理器(处理器20)此时请求来自主存储器40的数据B(步骤S1505)。因为存储有数据B的TAG-RAM 130的块被无效,所以处理器20请求的数据在TAG-RAM 130中没有命中(hit),所以确定数据B在所有处理器的高速缓存中都不存在。从主存储器40获得的数据B被处理器20确认(步骤S1506)。因为数据不是最新数据B,所以数据之间出现了不一致性。
图12是用于解释当将被反向驱逐的缓存行已被自主移出无效时进行的操作的示例的示意图。假设某个高速缓存索引的全部四个通路都处于有效状态,并且数据A到D被分别存储在该四个通路中。
假设处理器10向主存储器40请求与数据A到D具有相同高速缓存索引的数据E(步骤S1601)。处理器10查阅高速缓存存储器11以确定数据E在高速缓存中存储的位置。因为全部四个通路都有效,所以处理器10确定某一通路必须被无效。在这种情况下,处理器10确定将W2选为要被无效的块(步骤S1602)。
另一方面,存储器控制设备100一旦检测到处理器10已经请求来自主存储器40的数据E,就查阅TAG-RAM 130以确定存储数据E的地址信息的位置。因为相同高速缓存索引的四个通路全部有效,所以它确定某一通路必须被无效。此时,其确定存储数据B的地址信息的W1将被无效(步骤S1603)。
现在,假设处理器10自主移出存储数据B的块(步骤S1604)。结果,存储数据B的高速缓存存储器11的W1因移出而被无效,从而最新数据B被存储在主存储器40中。
此外,假设由存储器控制设备100向处理器10发出的针对存储数据B的通路的高速缓存逐出处理请求被执行(步骤S1605)。结果,如果高速缓存逐出处理被执行,将高速缓存存储器11的W1中的内容写入主存储器40中(步骤S1606),则主存储器中的数据B就会被非最新的数据写覆盖,而出现数据之间的不一致性。
因此,基于反向驱逐的存储器控制方案在上述例外情况中会失败。下面将说明即使在上述例外情况中也不会失败的存储器控制方案。
图1是根据本发明的实施例的存储器控制设备100的功能框图。存储器控制设备100与多个处理器(图1中为三个处理器10到30)以及主存储器40通信。
处理器10到30是进行各种算术运算的运算设备。处理器10包括高速缓存存储器11、处理器20包括高速缓存存储器21、并且处理器10包括高速缓存存储器31。假设这些高速缓存存储器以4路集相关方式管理。虽然图1中示出了三个处理器,但处理器的数目不限于三个。主存储器40是临时存储被处理器10、20和30使用的数据或者计算机程序的存储设备。
存储器控制设备100根据来自处理器10、20和30的请求,在主存储器40和高速缓存存储器11、21和31之间输入和输出数据,并且对存储设备进行控制以防止存储设备中的数据之间出现不一致性。存储器控制设备100包括请求接收单元110、请求处理单元120、TAG-RAM 130、高速缓存控制单元140、EWB(早回写,Early Write Back)缓存150、ELA(驱逐锁定地址,Eviction Lock Address)寄存器160、再次执行决定单元170、和取消决定单元180。
EWB缓存150和ELA寄存器160分别对应于自主逐出目标数据存储单元和逐出目标数据存储单元。
请求接收单元110是从处理器10到30接收数据输入/输出请求的接收单元,并且包括多个端口。这些端口监控请求处理单元120中的处理状态,直到完成所接收的数据输入/输出请求。请求处理单元120处理请求接收单元110所接收的请求,并且被管道化(pipelined)以进行多个请求的并行处理。
TAG-RAM 130是存储高速缓存存储器11、21和31中所存储的数据的地址信息的存储单元。高速缓存控制单元140将处理器10到30请求输入或者输出的数据的地址信息与TAG-RAM 130中存储的地址信息相比较,以确定数据的输入/输出目的地或者输入/输出过程,高速缓存存储器11、21和31以及TAG-RAM 130的更新内容等。
EWB缓存150存储被处理器10、20和30请求自主移出的数据的地址信息。EWB缓存150在自主移出开始时存储地址信息,并且保留该地址信息,直到自主移出完成。
图2是用于解释EWB缓存150的寄存/释放操作的示意图。当一个或者多个处理器10、20和30请求自主移出时,该请求由请求接收单元110接收,并且所请求的数据的地址信息被存储在EWB缓存150中(步骤S101)。当请求处理被请求处理单元120完成时,所请求的数据的地址信息被从EWB缓存150中删除(步骤S102)。
ELA寄存器160存储将被反向驱逐进行高速缓存逐出处理的数据的地址信息。在ELA寄存器160中,在由反向驱逐进行的高速缓存逐出处理开始时,待处理的地址信息被寄存在条目中(entry-registered),并且一旦高速缓存逐出处理完成,就将该条目无效。
图3是用于解释ELA寄存器160的寄存操作的示意图。当处理器10、20和30之一发出了存储器获取请求时(步骤S201),该请求获得请求接收单元110的多个端口中的任一个端口。此后,该请求在有效定时被输入到请求处理单元120的管道中(步骤S202)。
假设高速缓存控制单元140搜索TAG-RAM 130以便检查所请求的数据是否被存储在高速缓存存储器11、21或者31中,并检查具有与所请求的数据的索引相同的索引的高速缓存的四个通路是否都有效。在本例中,高速缓存控制单元140通知请求处理单元120:所请求的数据应该从主存储器40获得并且应该进行高速缓存逐出处理,以在高速缓存上确保存储所获得的数据的空间(步骤S203)。
请求处理单元120接收该通知,向主存储器40发送数据获取请求,并且向请求该数据的处理器发送针对被高速缓存控制单元140选择为高速缓存逐出处理的目标通路中的数据的高速缓存逐出处理请求。此时,被选择作为高速缓存逐出处理的目标通路中存储的数据的地址信息被寄存在ELA寄存器160的条目中(步骤S204)。
如图3所示,在ELA寄存器160中的每个条目都具有用于存储物理地址和表示条目有效性的有效位(V位)的区域。当地址信息被寄存在条目中时,进行改写物理地址区域中的地址信息并打开有效位的处理。
图4是用于解释ELA寄存器160的释放操作的示意图。当与步骤S204中的向处理器请求进行高速缓存逐出处理的请求相对应的响应请求被发出时(步骤S301),该请求获得请求接收单元110的多个端口中的某个端口。此后,该请求在有效定时被输入到请求处理单元120的管道中(步骤S302)。
一旦完成了请求处理单元120中的处理,该请求就在ELA寄存器160中找出用于存储被高速缓存逐出处理的数据的地址的条目,并且开启条目的有效位(步骤S303)。
当处理器做出了存储器获取请求时,再次执行决定单元170参照ELA寄存器160检查所请求的数据是否正被反向驱逐处理。在该数据正在被处理的情况下,处理单元指示请求接收单元110再次执行该请求。
图5是用于解释再次执行决定单元170的操作的示意图。在本例中,假设处理器所请求的数据正被反向驱逐处理。因此,假设TAG-RAM 130中的该数据的块是无效的,并且假定处理器的高速缓存存储器中的最新数据没有被写入主存储器40中。假设该数据的地址信息通过图3中的操作被有效地寄存在ELA寄存器160中。
如图5所示,当存储器获取请求被处理器10、20和30中任何一个发出时(步骤S401),该请求获得请求接收单元110的多个端口中的任意一个端口。此后,该请求在有效定时被输入到请求处理单元120的管道中(步骤S402)。由于数据在TAG-RAM 130中没有被命中,所以请求处理单元120向主存储器40发出数据获得请求。
此时,再次执行决定单元170搜索ELA寄存器160以检测与所请求的数据具有相同的地址的有效条目是否存在,并且指示请求处理单元120再次执行该处理(步骤S403)。结果,该存储器获得请求被返回给请求接收单元110并且再次被输入到请求处理单元120的管道中(步骤S404)。重复由再次执行决定单元170在步骤S403进行的操作,直到反向驱逐被完成,以释放ELA寄存器160中的条目。
以这种方式,被反向驱逐的数据的地址被存储在ELA寄存器160中,并且在与处理器请求获得的数据具有相同地址的有效条目在ELA寄存器160中存在的情况下,再次执行决定单元170连续指定再次执行从主存储器获得数据的处理。因此,可避免在反向驱逐执行期间由TAG-RAM 130的无效数据引起的数据之间的不一致性。
当向处理器请求由反向驱逐执行的高速缓存逐出处理时,取消决定单元180查阅EWB缓存150以检查被高速缓存逐出处理的数据是否正被自主移出而逐出。当数据正被自主移出处理逐出时,停止被反向驱逐执行的高速缓存逐出处理。
图6是用于解释取消决定单元180的操作的示意图。当处理器10、20和30中的任一个发出了存储器获取请求时(步骤S501),该请求获得请求接收单元110的多个端口中的任一个端口。此后,该请求在有效定时被输入到请求处理单元120的管道中(步骤S502)。当高速缓存控制单元140查阅TAG-RAM 130时,高速缓存控制单元140确定反向驱逐是必要的。假设请求处理单元120将被反向驱逐的数据的地址寄存在ELA寄存器160中,并且请求处理器进行高速缓存逐出处理。
此时,取消决定单元180搜索EWB缓存150的全部条目以检查与寄存在ELA寄存器160中的数据具有相同地址的条目是否存在。当具有相同地址的条目存在时,取消决定单元180关闭ELA寄存器160中的条目的有效位,以取消高速缓存逐出处理的请求(步骤S503)。
因此,在自主移出请求被存储在EWB缓存150中的情况下,由取消决定单元180取消对被请求要移出的数据的高速缓存逐出处理。结果,可防止主存储器40上的最新数据被不恰当的反向驱逐用旧数据写覆盖。
下面将解释存储器控制设备100的操作。图7是用于解释当相同缓存行的数据在反向驱逐完成之前被另一处理器请求时,存储器控制设备100进行的操作的示意图。图7与结合图11解释的第一例外情况相关。
假设处理器10向主存储器40请求与数据A到D具有相同的高速缓存索引的数据E(步骤S1101)。处理器10查阅高速缓存存储器11以确定数据E在高速缓存中存储的位置。因为四个通路全部有效,所以处理器10确定某一通路必须无效。在本实施例中,假设处理器10选择W2作为被无效的块(步骤S1102)。
另一方面,存储器控制设备100一旦检测到处理器10已经请求来自主存储器40的数据E,则查阅TAG-RAM 130来确定存储数据E的地址信息的位置。因为四个通路全部有效,所以确定某一通路必须被无效。在本实施例中,假设其中存储了数据B的地址信息的W1被确定将被无效(步骤S1103)。
在此情况下,存储器控制设备100将经过高速缓存逐出处理的数据B的地址信息寄存到ELA寄存器160中(步骤S1104),并且请求处理器10进行用于其中存储有数据B的通路的高速缓存逐出处理(步骤S1105)。在此时,TAG-RAM 130的W1是无效的。另外,数据B的最新数据存在于高速缓存存储器11中,并且高速缓存逐出处理没有完成。因此,未更新的旧数据被存储在主存储器40中。
假设此时处理器20请求来自主存储器40的数据B(步骤S1106)。因为其中存储有TAG-RAM的数据B的块是无效的,所以处理器20请求的数据B在TAG-RAM 130中没有命中。因此,请求处理单元120试图从主存储器40获得数据B。然而,再次执行决定单元170一旦检测到数据B的地址信息在ELA寄存器160中存在,则指令请求处理单元120再次执行该处理(步骤S1107)。当存储数据B的地址信息的有效条目存在时,重复该处理的再次执行。
一旦步骤S1105中请求的高速缓存逐出处理完成,高速缓存存储器11上的数据B的最新数据就被写入主存储器40中,并且ELA寄存器160中的对应条目被无效(步骤S1108)。由于ELA寄存器160中的条目被无效,所以再次执行决定单元不再要求再次执行该处理。主存储器40被请求以获得数据B(步骤S1109),并将该数据B发送给处理器20。
在此所发送的数据B是由处理器10的高速缓存存储器11写入的最新数据,不会出现数据之间的不一致性。以这种方式,根据本实施例的存储控制方案,即使在第一例外情况下,也可保持数据的一致性。
图8是用于解释当被反向驱逐的缓存行已被自主移出无效时进行的操作的示例的示意图。图8与结合图12所解释的第二例外情况相关。
假设处理器10请求主存储器40的与数据A到D具有相同的高速缓存索引的数据E(步骤S1201)。处理器10查阅高速缓存存储器11以确定数据E在高速缓存中存储的位置。因为全部四个通路都有效,所以处理器10确定某一通路必须被无效。此时,假设处理器10选择W2作为要被无效的块(步骤S1202)。
另一方面,存储器控制设备100一旦检测到处理器10已经请求主存储器40的数据E,就查阅TAG-RAM 130以确定数据E的地址信息被存储的位置。因为四个通路全部有效,所以确定某一通路必须被无效。此时,假设确定存储数据B的地址信息的W1将被无效(步骤S1203)。
请求处理单元120无效W1并且将W1中存储的数据B的地址信息寄存在ELA寄存器160中。请求处理单元120试图请求处理器10来进行存储有数据B的块的高速缓存逐出处理(步骤S1204)。
假设处理器10此时自主地移出了存储有数据B的块。存储有数据B的高速缓存存储器11的W1被移出而无效,使得最新数据B被存储在主存储器40中。在移出完成之前,数据B的地址信息一直保存在EWB缓存150中(步骤S1205)。
在此情况下,取消决定单元180检测到被请求经受高速缓存逐出处理的数据B的地址信息在EWB缓存150的条目中存在(步骤S1206)。取消决定单元180取消向处理器10发出的对存储有数据B的块进行高速缓存逐出处理的请求,并且释放ELA寄存器160中的条目(步骤S1207)。
当高速缓存逐出处理请求被取消时,可避免对已被自动移出的块进行不适当的高速缓存逐出处理。这样,根据本实施例的存储器控制方案即使在第二例外情况下也可维持数据的一致性。
如上所述,在开始由反向驱逐进行的高速缓存逐出处理时,目标数据的地址信息被存储在ELA寄存器160中。当处理器请求获得的数据的地址在ELA寄存器160中存在时,请求处理单元连续地再次执行数据获得处理。因此即使相同缓存行的数据在反向驱逐完成之前被另一处理器请求,也不会获得不正确的数据。
此外,在处理器开始进行自主移出时,目标信息的地址信息被存储在EWB缓存150中。当被反向驱逐的数据的地址在EWB缓存150中存在时,停止由反向驱逐进行的高速缓存逐出处理。因此,即使被反向驱逐的缓存行因自主移出而无效,不正确的数据也不会被写覆盖到主存储器40中。
根据本发明,即使使用不通知存储器控制设备关于高速缓存逐出处理的信息的处理器,也可保持高速缓存存储器中的数据的一致性。此外,还可抑制等待时间,简化结构。
虽然为了完整清晰地公开而根据具体实施例来描述本发明,但所附的权利要求并不因此受到限制,而是应该被解释为包含了本领域技术人员所能想到的,落入在此阐述的基本教导中的全部变型和替代结构。

Claims (10)

1.一种存储器控制设备,连接在主存储器和各自具有高速缓存存储器的多个处理器之间,用于控制所述处理器对所述主存储器的访问,所述存储器控制设备包括:
标签信息存储单元,具有多个存储所述高速缓存存储器中保存的数据的地址信息的块,其中所述块可被有效或者无效;
请求处理单元,用于处理所述处理器的存储器访问请求,并且当所述标签信息存储单元的任一个所述块必须被无效时,用于请求这样的处理器执行高速缓存逐出处理,在该处理器的高速缓存存储器中保存有这样的待逐出数据,该待逐出数据与所述标签信息存储单元的将被无效的块中存储的数据相同,所述高速缓存逐出处理将所述待逐出的数据从所述高速缓存存储器逐出到所述主存储器中;
逐出目标数据存储单元,用于当所述请求处理单元请求所述处理器进行所述高速缓存逐出处理时,在一条目中存储待逐出数据的地址信息,直到所述处理器完成所述高速缓存逐出处理;和
再次执行决定单元,用于在所述请求处理单元确定用于获得所述处理器请求的数据的获取路线决定处理时,检查存储在逐出目标数据存储单元中的地址信息,并且如果任何一条所述条目中包括所请求的数据的地址信息,则使所述请求处理单元再次进行数据的获取路线决定处理。
2.根据权利要求1所述的存储器控制设备,其中当任一所述处理器请求的数据的地址与逐出目标数据存储单元的任何条目中存储的数据地址都不一致时,所述再次执行决定单元不使所述请求处理单元再次进行所述获取路线决定处理。
3.根据权利要求1所述的存储器控制设备,进一步包括:
请求接收单元,用于从任何一个所述处理器接收存储器访问请求,并且指示所述请求处理单元进行与所述存储器访问请求对应的处理,并且监控所述请求处理单元中的处理状态,直到完成所述对应处理,并且其中
当所述再次执行决定单元确定必须再次进行所述获取路线决定处理时,所述请求处理单元指示所述请求接收单元再次进行所述对应处理。
4.根据权利要求1所述的存储器控制设备,其中
所述逐出目标数据存储单元包括表示每个用于保存信息的条目中的数据的有效性的有效位。
5.根据权利要求1所述的存储器控制设备,进一步包括:
自主逐出目标数据存储单元,用于在自主高速缓存逐出处理完成之前,存储自主高速缓存逐出处理的目标数据的地址信息,在该自主高速缓存逐出处理中,所述处理器中的任何一个处理器自主地逐出高速缓存数据;和
取消决定单元,用于当所述请求处理单元试图请求任何一个所述处理器进行数据逐出处理时,检索存储在自主逐出目标数据存储单元中的地址信息,并在被所述请求处理单元请求进行逐出处理的数据的地址信息被包括在任何一条所述条目中时,使所述请求处理单元停止所述数据逐出处理的请求。
6.根据权利要求5的存储器控制设备,其中
所述取消决定单元在所述请求处理单元试图请求任何一个所述处理器进行数据逐出处理时,检索存储在所述自主逐出目标数据存储单元中的信息,并且当被所述请求处理单元请求逐出处理的数据的地址信息没有被包括在任何一条条目中时,不使所述请求处理单元停止所述逐出处理的请求。
7.一种控制多个各自具有高速缓存存储器的处理器对主存储器进行的访问的方法,包括:
对所述处理器的存储器访问请求进行处理,并且当保存有所述处理器的高速缓存存储器中所保存的数据的地址信息的标签信息存储单元的任何一块必须被无效时,请求这样的处理器执行高速缓存逐出处理,在该处理器的高速缓存存储器中保存有这样的待逐出数据,该待逐出数据与所述标签信息存储单元的将被无效的块中存储的数据相同,所述高速缓存逐出处理将待逐出的数据从所述高速缓存存储器逐出到所述主存储器中;
当所述处理器在所述处理步骤被请求进行高速缓存逐出处理时,将待逐出的数据的地址信息存储在逐出目标数据存储单元的一个条目中,直到所述处理器完成所述高速缓存逐出处理;和
在所述处理步骤中确定了用于获得任何一个所述处理器请求的数据的获取路线决定处理时,检查存储在所述逐出目标数据存储单元中的地址信息,并且如果任何一个所述条目中包括所请求的数据的地址信息,则使所述处理步骤再次执行以再次进行数据的获取路线决定处理。
8.根据权利要求7的方法,其中当任何一个所述处理器所请求的数据的地址与逐出目标数据存储单元的任何一条所述条目中存储的数据的地址不一致时,所述检查步骤不引起所述处理步骤被再次执行。
9.根据权利要求7的方法,进一步包括:
将自主高速缓存逐出处理的目标数据的地址信息存入自主逐出目标数据存储单元中,直到自主高速缓存逐出处理完成,在该自主高速缓存逐出处理中,任何一个所述处理器自主地逐出高速缓存数据;和
当所述处理步骤试图请求任何一个所述处理器进行数据逐出处理时,检查存储在自主逐出目标数据存储单元中的地址信息,并且当在所述处理步骤中被请求进行逐出处理的数据的地址信息包括在任何一条所述条目中时,使所述处理步骤停止所述数据逐出处理的请求。
10.根据权利要求9的方法,其中
所述检查步骤包括当所述处理步骤试图请求任何一个所述处理器进行数据逐出处理时,检查存储在自主逐出目标数据存储单元中的信息,并且,当在所述处理步骤中被请求进行逐出处理的数据的地址信息没有被包括在任何一条所述条目中时,不使所述处理步骤停止所述数据逐出处理的请求。
CNB2005100554111A 2004-11-26 2005-03-17 存储器控制设备和存储器控制方法 Expired - Fee Related CN100357917C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004342802A JP2006155080A (ja) 2004-11-26 2004-11-26 メモリ制御装置およびメモリ制御方法
JP2004342802 2004-11-26

Publications (2)

Publication Number Publication Date
CN1779664A CN1779664A (zh) 2006-05-31
CN100357917C true CN100357917C (zh) 2007-12-26

Family

ID=36036104

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100554111A Expired - Fee Related CN100357917C (zh) 2004-11-26 2005-03-17 存储器控制设备和存储器控制方法

Country Status (5)

Country Link
US (2) US20060117140A1 (zh)
EP (1) EP1662401A3 (zh)
JP (1) JP2006155080A (zh)
KR (1) KR100706852B1 (zh)
CN (1) CN100357917C (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5011885B2 (ja) * 2006-08-18 2012-08-29 富士通株式会社 スヌープタグの制御装置
WO2008095025A1 (en) * 2007-01-31 2008-08-07 Qualcomm Incorporated Apparatus and methods to reduce castouts in a multi-level cache hierarchy
CN102103549A (zh) * 2009-12-18 2011-06-22 上海华虹集成电路有限责任公司 一种缓存替换方法
US20160316450A1 (en) * 2015-04-22 2016-10-27 Pebble Technology Corp. Living notifications
WO2016191569A1 (en) * 2015-05-27 2016-12-01 Google Inc. Memory system architecture

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6393540B1 (en) * 1998-06-30 2002-05-21 Emc Corporation Moving a logical object from a set of source locations to a set of destination locations using a single command
CN1504902A (zh) * 2002-12-05 2004-06-16 国际商业机器公司 在存储器部件之间保持数据一致性的方法和***
US6813522B1 (en) * 2000-12-29 2004-11-02 Emc Corporation Method of sharing memory in a multi-processor system including a cloning of code and data

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4503497A (en) * 1982-05-27 1985-03-05 International Business Machines Corporation System for independent cache-to-cache transfer
US5269009A (en) * 1990-09-04 1993-12-07 International Business Machines Corporation Processor system with improved memory transfer means
US5692151A (en) * 1994-11-14 1997-11-25 International Business Machines Corporation High performance/low cost access hazard detection in pipelined cache controller using comparators with a width shorter than and independent of total width of memory address
US6145059A (en) * 1998-02-17 2000-11-07 International Business Machines Corporation Cache coherency protocols with posted operations and tagged coherency states
JP2003524248A (ja) * 2000-02-25 2003-08-12 サン・マイクロシステムズ・インコーポレイテッド アトミック操作中のキャッシュ・データ追出し防止及び高スヌープ・トラフイック処理能力を維持する方法およびその装置
US6347360B1 (en) * 2000-02-25 2002-02-12 Sun Microsystems, Inc. Apparatus and method for preventing cache data eviction during an atomic operation
EP1402349A2 (en) * 2001-06-26 2004-03-31 Sun Microsystems, Inc. Method and apparatus for facilitating speculative stores in a multiprocessor system
US6925536B2 (en) * 2002-11-05 2005-08-02 Newisys, Inc. Cache coherence directory eviction mechanisms for unmodified copies of memory lines in multiprocessor systems
US7152154B2 (en) * 2003-01-16 2006-12-19 Ip-First, Llc. Apparatus and method for invalidation of redundant branch target address cache entries

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6393540B1 (en) * 1998-06-30 2002-05-21 Emc Corporation Moving a logical object from a set of source locations to a set of destination locations using a single command
US6813522B1 (en) * 2000-12-29 2004-11-02 Emc Corporation Method of sharing memory in a multi-processor system including a cloning of code and data
CN1504902A (zh) * 2002-12-05 2004-06-16 国际商业机器公司 在存储器部件之间保持数据一致性的方法和***

Also Published As

Publication number Publication date
EP1662401A2 (en) 2006-05-31
JP2006155080A (ja) 2006-06-15
US20110072216A1 (en) 2011-03-24
US20060117140A1 (en) 2006-06-01
KR20060059149A (ko) 2006-06-01
EP1662401A3 (en) 2009-01-21
KR100706852B1 (ko) 2007-04-13
CN1779664A (zh) 2006-05-31

Similar Documents

Publication Publication Date Title
US12001345B2 (en) Victim cache that supports draining write-miss entries
KR100704089B1 (ko) L2 디렉토리를 이용한 멀티프로세서 시스템의 가-로드촉진 방법 및 장치
US6782452B2 (en) Apparatus and method for processing data using a merging cache line fill to allow access to cache entries before a line fill is completed
US20020010839A1 (en) Multiple variable cache replacement policy
US20100325365A1 (en) Sectored cache replacement algorithm for reducing memory writebacks
KR20040012812A (ko) L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치
US7237067B2 (en) Managing a multi-way associative cache
US8621152B1 (en) Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
CN100357917C (zh) 存储器控制设备和存储器控制方法
US20080307169A1 (en) Method, Apparatus, System and Program Product Supporting Improved Access Latency for a Sectored Directory
KR20080089622A (ko) 메모리 액세스 제어 장치 및 메모리 액세스 제어 방법
EP0173893B1 (en) Computing system and method providing working set prefetch for level two caches
US6934810B1 (en) Delayed leaky write system and method for a cache memory
JPH08263374A (ja) キャッシュ制御方法およびそれを用いたマルチプロセッサシステム
JPH0635801A (ja) 階層メモリ制御方式
JPS62226348A (ja) 主記憶装置兼主記憶制御装置
JPH01134547A (ja) キャッシュメモリ装置

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20071226

Termination date: 20120317