CN110232030A - 多芯片系统及缓存处理方法 - Google Patents
多芯片系统及缓存处理方法 Download PDFInfo
- Publication number
- CN110232030A CN110232030A CN201910504889.XA CN201910504889A CN110232030A CN 110232030 A CN110232030 A CN 110232030A CN 201910504889 A CN201910504889 A CN 201910504889A CN 110232030 A CN110232030 A CN 110232030A
- Authority
- CN
- China
- Prior art keywords
- find out
- try
- update
- new information
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种多芯片系统及缓存处理方法。多芯片系统包括多个芯片。各芯片包括多个集群、交叉接口及探听系统。各集群对应有本地缓存。交叉接口耦接集群,并耦接另一芯片的交叉接口。探听系统耦接交叉接口,并与交叉接口单向传输。探听系统包括探听表模块及多个跟踪器。探听表模块包括共享缓存,而共享缓存记录有探听表。多个跟踪器耦接探听表模块,依据多个集群中的一个发起的内存访问要求查询共享缓存中的探听表,并依据查询结果更新探听表。探听表对应到所有芯片中集群对应本地缓存的存储结构。藉此,可避免过多探听而影响各个芯片的运作效率。
Description
技术领域
本发明涉及一种缓存(cache)技术,且特别是涉及一种多芯片系统及缓存处理方法。
背景技术
现今主流的处理器架构之一是由多个芯片(chip)所组成,而各芯片还可能包括多个集群(cluster)。而为了达到缓存一致(cache coherency),当某一集群发出内存访问要求时,需要至其他群集的缓存中查询是否有数据。然而,若某一集群发出的要求过多,则可能会频繁地查询其他群集,进而影响这些群集的处理效率。由此可知,为了改善这些群集的运作效率,势必要提出对于既有缓存一致的改进方案。
发明内容
有鉴于此,本发明是针对一种多芯片系统及缓存处理方法,其可避免过多探听(snoop)而影响各个芯片的运作效率。
根据本发明的实施例,多芯片系统包括多个芯片。各集群可以包括数个内核且共享缓存(Cache),且多个集群同时连接到一个交叉(crossbar)接口。各芯片包括多个集群(cluster)、交叉(crossbar)接口及探听系统。各集群对应有本地缓存。交叉接口耦接集群,并耦接另一芯片的交叉接口。探听系统耦接交叉接口,并与交叉接口单向传输。探听系统包括探听表模块及多个跟踪器。探听表模块包括共享缓存,而共享缓存记录有探听表。多个跟踪器耦接探听表模块,依据多个集群中的一个发起的内存访问要求查询共享缓存中的探听表,并依据查询结果更新探听表。
根据本发明的实施例,缓存处理方法包括下列步骤。提供多个芯片,其中各芯片包括多个集群,各集群对应有本地缓存。对各芯片提供共享缓存,其中共享缓存记录有探听表。依据集群中的一个发起的内存访问要求查询共享缓存中的探听表。依据查询结果更新探听表而不查询集群对应的本地缓存。
综上所述,本发明实施例是针对多芯片系统提出探听表,此探听表与各集群对应的本地缓存的存储结构及缓存内容一致。而响应于内存访问要求的发起,即可对此探听表的缓存内容进行探听,并据以更新探听表,从而无须打扰集群的本地缓存,进而提升系统运行效率。
附图说明
包含附图以便进一步理解本发明,且附图并入本说明书中并构成本说明书的一部分。附图说明本发明的实施例,并与描述一起用于解释本发明的原理。
图1为依据本发明一实施例的多芯片系统的示意图;
图2为依据本发明一实施例的探听表的示意图;
图3为依据本发明一实施例的处理内存访问要求的流程图;
图4为依据本发明一实施例的更新信息的示意图;
图5为依据本发明一实施例的处理内存读取要求的流程图;
图6为依据本发明一实施例的处理程序的时序图;
图7为依据本发明一实施例的处理内存读取要求的流程图;
图8为依据本发明一实施例的处理程序的时序图;
图9为依据本发明一实施例的缓存处理方法的流程图。
具体实施方式
现将详细地参考本发明的示范性实施例,示范性实施例的实例说明于附图中。只要有可能,相同组件符号在图式和描述中用来表示相同或相似部分。
图1为依据本发明一实施例的多芯片系统1的示意图。请参照图1,多芯片系统1至少包括两芯片S0,S1。需说明的是,本发明实施例以两个芯片S0,S1作为范例说明,然于其他实施例中,芯片的数量可依据需求而改变,例如三个,四个,以及更多。
芯片S0至少包括但不仅限于两集群(cluster)CL0_0,CL1_0、交叉(crossbar)接口CB0、探听(snoop)系统SS、内存访问模块C2M、及内存控制器DMC。芯片S1结构和芯片S0结构相同
各集群CL0_0,CL1_0可包括一个或更多个内核(图未示)、及本地缓存L2_00,L2_10(例如,二级(L2)缓存,并可由静态随机存储器(Static Random Access Memory,SRAM)实现)。即,集群CL0_0对应到本地缓存L2_00,而集群CL1_0对应到本地缓存L2_10。需说明的是,本发明实施例的单一芯片S0,S1以两个集群作为范例说明,然而在其他实施例中,集群的数量可依据需求而改变。
交叉接口CB0耦接集群CL0_0,CL1_0。此外,本实施例的交叉接口CB0包括两多任务器MUX并耦接芯片S1的交叉接口CB1。需说明的是,交叉接口CB0还可能由其他互连结构实现,并可输入所有集群CL0_0,CL1_0,CL0_1,CL1_1发起的要求。
探听系统SS耦接交叉接口CB0,并与交叉接口CB0单向传输,即由交叉接口CB0朝向探听系统SS传输数据和请求。探听系统SS至少包括但不仅限于一个或更多个读取跟踪器RTK、一个或更多个写入跟踪器WTK及一个探听表模块STM,其中探听表模块STM可以包括多个子探听表模块(图中未绘示)。为清楚说明,图中仅画出一个读取跟踪器RTK以及写入跟踪器。
各读取跟踪器RTK用以处理一笔由任一集群CL0_0,CL1_0发起的内存访问要求,其运作内容待后续实施例详述。在实施例中,读取跟踪器RTK处理的内存访问要求是对系统内存(systemmemory,可由动态随机存储器(Dynamic Random Access Memory,DRAM)实现)提出的内存读取要求。而内存读取要求是读取系统内存中指定物理地址的数据。
各写入跟踪器WTK用以处理一笔由任一集群CL0_0,CL1_0发起的内存访问要求,其运作内容待后续实施例详述。在本实施例中,写入跟踪器WTK处理的内存访问要求是对系统内存提出的内存写入要求、或是逐出(eviction)要求。而内存写入要求是对指定物理地址写入数据;逐出要求则是清除/移除数据。需说明的是,本发明实施例的跟踪器包括读取跟踪器RTK及写入跟踪器WTK,并通过读取跟踪器RTK及写入跟踪器WTK来分别处理不同种类的内存访问要求;然而在其他实施例中,也可通过一种跟踪器来处理多种内存访问要求,即同一个跟踪器具有读取和写入的功能。
探听表模块STM与跟踪器(例如,读取跟踪器RTK及写入跟踪器WTK)耦接,探听表模块STM并包括共享缓存SC、及控制电路(图未示,并用以执行探听表模块STM的逻辑运作)。共享缓存SC可以为例如三级(L3)缓存、或最后一级缓存(Last Level Cache,LLC)等,并可由静态随机存储器(SRAM)实现,共享缓存SC记录一探听表。在本发明实施例中,探听表对应到所有芯片S0,S1中所有集群CL0_0,CL1_0,CL0_1,CL1_1对应的本地缓存L2_00,L2_10,L2_01,L2_11的存储结构。
例如,各本地缓存L2_00,L2_10,L2_01,L2_11是包括若干缓存块(Cache Block或称缓存线(Cache Line)并分别对应到一条入口(entry)/组合(set))。假设各本地缓存L2_00,L2_10,L2_01,L2_11包括16路(way),而各路包括256笔入口,总共4096笔入口,且各入口至少包括22个比特用于记录系统内存的物理地址标签(tag)、及1个比特用于记录有效(valid)状态/值。以图2所绘示依据本发明一实施例的探听表的示意图为例,一个共享缓存SC所记录的探听表包括所有本地缓存L2_00,L2_10,L2_01,L2_11的缓存块。第一探听表LC0ST包括16路way0~way15,且各路包括256笔入口/组合,与本地缓存L2_00的存储结构一致,即探听表的行列数目与本地缓存的行列数目对应。第一探听表LC0ST内各入口包括24比特的数据,其中1个比特保留Rev、22个比特用于记录系统内存的物理地址标签Tag(与对应本地缓存L2_00同路及同个缓存块所记录的物理地址标签一致)、以及1个比特用于记录对应本地缓存L2_00的有效状态Status(与对应本地缓存L2_00同路及同个缓存块所记录的有效状态一致)。第二至四探听表LC1ST,RC0ST,RC1ST可参考第一探听表LC0ST的说明并分别对应到本地缓存L2_10,L2_01,L2_11。由此可知,芯片S0记录有四个探听表,其分别记录本地集群CL0_0,CL1_0的本地缓存L2_00,L2_10的缓存内容、以及远程集群CL0_1,CL1_1的本地缓存L2_01,L2_11的缓存内容。此外,各探听表的存储结构与对应本地缓存一致,使得探听表模块STM无须返回探听/查询对应集群CL0_0,CL1_0,CL0_1,CL1_1的本地缓存L2_00,L2_10,L2_01,L2_11,直接探听本地的探听表即可,即达成单向传输的功能(其运作待后续实施例详细说明)。
当探听表模块STM取得来自任一个集群CL0_0,CL1_0,CL0_1,CL1_1发起的内存访问要求时,由内存访问要求所记录的地址Req addr中第6至17比特可得知第几个组合(set),并由第18至39比特可得知物理地址标签(tag),即可对四个探听表查询(例如,对四个探听表中各路的指定组合所记录的内容比对是否有相符的物理地址标签)。
查询的结果有以下情况可以发生。第一情况为:若某一路相符物理地址标签对应的有效状态相关于有效(valid),则表示对应本地缓存L2_00,L2_10,L2_01或L2_11的相同路上具有有效存储块/线。
而第二情况为:若发起内存访问要求的集群CL0_0,CL1_0,CL0_1或CL1_1对应本地缓存L2_00,L2_10,L2_01或L2_11的相同路上的物理地址标签与内存访问要求不相符但对应的有效状态相关于有效,则在对应本地缓存L2_00,L2_10,L2_01或L2_11中既有/旧的有效存储块/线将被新的要求替换,且进行对此存储块/线的数据逐出或其他使其无效(invalid)的操作。此无效操作代表来自其他CL0_0,CL1_0,CL0_1或CL1_1(即,非发起内存访问要求的集群)会通过非分享(non-share)-OK的探听要求来使既有/旧的有效存储块/线无效,对应本地缓存L2_00,L2_10,L2_01或L2_11将执行无效(INVD)指令、或其他使既有/旧的有效存储块/线无效的操作。
需说明的是,本实施例中探听表的结构会因为不同本地缓存的结构而改变,且各入口记录的内容不限于物理地址标签及有效状态。
内存访问模块C2M(可由控制电路实现)耦接探听系统SS,内存访问模块C2M依据内存访问要求来访问系统内存,并将内存访问要求所取得或写入的内容整合探听响应所指示有修改的数据。
内存控制器DMC耦接内存访问模块C2M及系统内存(图未示),内存控制器DMC并用以依据内存访问要求来访问系统内存。
另一方面,芯片S1至少包括但不仅限于两集群CL0_1,CL1_1、交叉接口CB1、探听系统SS、内存访问模块C2M、及内存控制器DMC。各集群CL0_0,CL1_0可包括一个或更多个内核(图未示)、及本地缓存L2_01,L2_11(例如,L2缓存,并可由SRAM实现)。即,集群CL0_1对应到本地缓存L2_01,而集群CL1_1对应到本地缓存L2_11。
需说明的是,芯片S1的交叉接口CB1、探听系统SS、内存访问模块C2M、及内存控制器DMC可分别对应到芯片S0的交叉接口CB0、探听系统SS、内存访问模块C2M、及内存控制器DMC,故其内容将不再赘述。由此可知,芯片S1也包括可对应到所有本地缓存L2_00,L2_10,L2_01,L2_11的存储结构/存储内容的探听表。
为了方便理解本发明实施例的操作流程,以下将举诸多实施例详细说明本发明实施例中多芯片系统1的运作流程。下文中,将搭配多芯片系统1的各项组件说明本发明实施例所述的方法。本方法的各个流程可依照实施情形而随之调整,且并不仅限于此。
图3为依据本发明一实施例的处理内存访问要求的流程图。请参照图3,在探听系统SS对特定要求探听特点内存访问地址之前,可先询问探听表,以取得关于探听本地缓存L2_00,L2_10,L2_01,L2_11中目标有关的信息。此外,探听表需要响应于内存访问要求的提出而被更新,使得探听表记录的内容可与本地缓存L2_00,L2_10,L2_01,L2_11缓存的内容一致。
值得注意的是,读取跟踪器RTK或写入跟踪器WTK可发出探听要求给探听表STM,以探听探听表中对应于特定集群CL0_0,CL1_0,CL0_1或CL1_1的对应缓存线/块所记录的内容。而探听要求中可能夹带的两个属性须特别留意,即探听缓存要求和分享要求。其一是可缓存(cacheable),若探听要求记录有可缓存,则当内存访问要求由集群CL0_0,CL1_0,CL0_1或CL1_1发起时,其夹带的内容可能缓存在对应本地缓存L2_00,L2_10,L2_01或L2_11内、以及对应探听表中。例如,读取要求所得数据伴随着回写(write-back,WB)类型占用本地缓存L2_00的某一个入口中,而对应此本地缓存L2_00(,即对应到发起要求的集群)的探听表中对应组合及路由也需要有效。又例如,写入要求对应的所有数据将会在发起者(假设是集群CL1_0)对应的本地缓存L2_10被无效,而对应于此本地缓存L2_10的探听表中的相同路及组合也同样需要被无效。其二是可分享请求或称为分享-OK请求,当某一要求(例如,读取无效要求)专门(exclusively)占用在发起者(假设是集群CL0_1)对应的本地缓存L2_01中的某一个缓存块/线时,或当要求(例如,写入要求)预计将所有本地缓存L2_00,L2_10,L2_01,L2_11无效时,跟踪器可发送伴随着非分享-OK的信息,以要求使其他本地缓存L2_00,L2_10,L2_01和/或L2_11无效。对于探听表而言,例如是包含可分享请求的读取要求不会使这些集群CL0_0,CL1_0,CL0_1,CL1_1中非要求发起集群对应存储块/条中的记录失效。简单而言,分别具有这两个属性的探听要求之间的差异在于,可缓存属性针对要求发起集群,而可分享请求则是针对要求发器集群以外的所有集群。
接着详细说明整体流程,探听系统SS对任一集群CL0_0,CL1_0,CL0_1,CL1_1发起的内存访问要求提取夹带的请求或其他要求信息(步骤S101)。首先针对集群发起正常要求(例如,内存读取要求),探听表模块STM依序处理数笔要求(步骤S131),并据以查询共享缓存SC中的探听表(步骤S132)例如,依据内存读取要求取得对应探听表记录的对应内容,且依据查询结果决定探听这些集群CL0_0,CL1_0,CL0_1,CL1_1中的一个、及是否需要探听(步骤S133)。而一笔正常要求是由一个读取跟踪器RTK负责。假设一组读取跟踪器RTK可处理48个要求,即有48个读取跟踪器RTK分别处理这些要求,但其他实施例中读取跟踪器RTK的数量可能不同。而某一个读取跟踪器RTK取得来自探听表模块STM的查询结果即步骤S133所得结果,可能会花费五个时间单位来取得结果(步骤S111),以决定探听这些集群CL0_0,CL1_0,CL0_1,CL1_1中的某一个,并据以对探听表模块STM发出探听要求(步骤S112)以探听探听表中对应于指定集群CL0_0,CL1_0,CL0_1或CL1_1的对应缓存线所记录的内容。读取跟踪器RTK取得来自探听表模块STM响应于探听要求的探听回应后,将对探听表模块STM发出更新信息以更新探听表(步骤S114)。需说明的是,此更新信息是基于要求的类型所产生,例如根据要求的属性(可缓存、及分享-OK)。
探听表模块STM通过探听表队列STQ而依据各集群发起内存访问要求的时间顺序依序缓存那些更新信息(步骤S134),即对探听表模块STM发出的更新信息,且探听表模块STM将依据缓存的顺序依序处理那些更新信息(步骤S136)。探听表模块STM会在特定时间对探听表写入更新信息(步骤S132)。需说明的是,在其他实施例中的更新信息并非取得探听回应后才出栈(pop)到探听表队列STQ,更新信息与探听回应之间不一定存在依赖性。
接着,前述读取跟踪器RTK通过内存访问模块C2M、及内存控制器DMC对系统内存发出读取要求(步骤S115),并据以自系统内存读回指定物理地址的数据(步骤S116)。此外,响应于更新探听表的完成,此读取跟踪器RTK将内存读取要求所要求的数据(即,步骤S116所得数据)出栈(pop)给对应集群,即要求发起集群(步骤S117),据以对此要求的处理结束(步骤S118)。而此可知,针对内存读取要求的更新,在将数据出栈至要求发起集群之前,需要将对应更新要求写入至探听表对应缓存块/线中。否则,对此缓存块/线的逐出可能在探听表更新前发生,并导致错误排序或其他错误发生。
而针对逐出相关要求(包括内存写入要求及逐出要求)的发起,探听表模块STM多任务处理更新信息及逐出相关要求(步骤S135),并依序处理更新信息及逐出相关要求(步骤S136),再据以将要求的内容写入共享缓存SC中的探听表(步骤S132)(例如,依据内存写入要求或逐出要求对探听表中对应本地缓存L2_00,L2_10,L2_01或L2_11所记录的对应入口写入以更新记录),且依据查询结果决定探听这些集群CL0_0,CL1_0,CL0_1,CL1_1中的一个、及是否需要探听(步骤S133)。而一笔逐出相关要求是由一个写入跟踪器WTK负责。假设一组写入跟踪器WTK可处理36个要求(即,有36个写入跟踪器WTK分别处理这些要求,但其他实施例中写入跟踪器WTK的数量可能不同)。而某一个写入跟踪器WTK取得来自探听表模块STM的查询结果(即,步骤S133所得结果)(步骤S121),以决定探听这些集群CL0_0,CL1_0,CL0_1,CL1_1中的某一个,并据以对探听表模块STM发出探听要求(步骤S122)以探听探听表中对应于指定集群CL0_0,CL1_0,CL0_1或CL1_1的对应缓存线所记录的内容。写入跟踪器WTK取得来自探听表模块STM响应于探听要求的探听回应后,将对探听表模块STM发出更新信息以更新探听表(步骤S124)。
值得注意的是,在步骤S135中,探听表队列STQ缓存的更新信息会在没有正常内存写入要求或逐出要求发生的情况下被写入至探听表中。也就是说,针对写入探听表的优先级,更新信息的优先级较低于内存写入要求或逐出要求。内存写入要求或逐出要求是被探听表模块STM解析后即对探听表更新/写入;而更新信息则是对探听表查询后才对探听表更新。因此,针对更新信息的处理是依据通过探听表队列STQ缓存中的排列顺序来处理,而逐出相关要求的处理则可忽略此排列顺序而优先处理。
接着,响应于更新探听表的完成,前述写入跟踪器WTK通过内存访问模块C2M、及内存控制器DMC对系统内存发出写入要求(步骤S125),并据以将数据出栈至系统内存中指定物理地址(步骤S126),使对此要求的处理结束(步骤S127)。在本实施例中,针对内存写入要求的更新,在将对应更新要求写入至探听表对应缓存块/线之后,才对系统内存发送写入要求。需说明的是,在其他实施例中,只要在步骤S127结束之前完成对探听表的更新即可,或者不用考虑步骤S127是否结束。
接着详细说明更新流程,先前提及,除了逐出相关要求,更新信息需要依据要求发起时间顺序来排序处理。针对逐出要求,仅需要使要求发起集群在对应组合中的那路无效,其中路对应到探听模块中的列。且不会干扰到其他集群对应的探听表。针对内存写入要求,对应于所有集群中有效的组合将被无效。针对内存读取要求较为复杂,若要求伴随着可缓存则需要使要求发起集群的记录有效,而若是专门(exclusive)访问则需要使其他集群的记录有效。
图4为依据本发明一实施例的更新信息的示意图。请参照图4,针对内存读取或写入要求,不同集群CL0_0,CL1_0,CL0_1,CL1_1的更新信息的格式可相同。更新信息至少包括但不仅限于有效值(valid)、状态值(state)、路(way)、二次查询(SecQury)、及更新监视(upMon)。
针对更新信息中的有效值,当对应集群CL0_0,CL1_0,CL0_1或CL1_1需要更新时,将宣告此有效值(例如,设为“1”,不宣告则设为“0”)。即,有效值相关于是否更新探听表。例如,针对内存写入要求,若对探听表的查询为有值,则会宣告此有效信息(即,有效值相关于更新探听表)。针对内存读取要求,请参照以下真值表(1):
表(1)
其中,要求发起集群为0代表非为要求发起集群而1代表是要求发起集群;可缓存为0代表不可缓存、1代表是可缓存、且x代表不考虑;分享-OK为0代表非分享-OK、1代表是分享-OK、且x代表不考虑;探听表中是否有值为0代表没有值而1代表有值;有效值为0代表不宣告而1代表宣告。也就是说,若所欲更新探听表中那些集群中的一个CL0_0,CL1_0,CL0_1或CL1_1对应到发起内存读取要求的集群,且此内存访问要求记录可缓存并在探听表中对应入口没有值,则有效值表示更新探听表;若所欲更新探听表中那些集群中的一个CL0_0,CL1_0,CL0_1或CL1_1对应到发起此内存读取要求的集群,且此内存访问要求记录不可缓存并在探听表中对应入口有值,则有效值相关于更新探听表;而若所欲更新探听表中那些集群中的一个CL0_0,CL1_0,CL0_1或CL1_1未对应到发起此内存读取要求的集群,且在探听表中对应入口有值,则有效值表示更新探听表。而其余条件则是有效值表示不更新探听表。
针对更新信息中的状态值,其为探听表中如图2所示有效状态Status。即,状态值相关于探听表中对应入口是否有效。而若对应入口为有效值,探听表模块STM才会将状态值更新到探听表中。针对内存访问要求为内存读取要求,若所欲更新探听表中那些集群中的一个CL0_0,CL1_0,CL0_1或CL1_1对应到发起内存读取要求的集群,且此内存读取要求记录可缓存,则状态值相关于探听表中对应入口有效。而针对内存访问要求为内存写入要求,状态值则是相关于探听表中对应入口无效。
针对更新信息中的路,针对要求发起集群且伴随可缓存的要求,此路信息是来自于要求。而针对其他情况,此路信息是来自探听表的查询结果。
针对更新信息中的二次查询,其相关于是否对探听表二次查询。在一些情况中,探听表中的记录可能会被无效。而在依据某一笔要求而对探听表更新之前,可能有其他要求已经占用存储线/块或更新记录。因此,在对此笔要求更新之前,需要二次查询探听表,以确认前述其他要求占用的情况是否发生。请参照以下真值表(2):
表(2)
其中,读取/写入为0代表写入而1代表是读取;要求发起集群为0代表非为要求发起集群而1代表是要求发起集群;可缓存为0代表不可缓存而1代表是可缓存;分享-OK为0代表非分享-OK而1代表是分享-OK;探听表中是否有值为0代表没有值而1代表有值;二次查询为0代表不宣告而1代表宣告;x代表不考虑。也就是说,针对内存访问要求为内存读取要求,若所欲更新探听表中那些集群中的一个CL0_0,CL1_0,CL0_1或CL1_1对应到发起内存读取要求的集群,且在探听表中对应入口有值,则二次查询相关于对探听表二次查询;针对内存访问要求为内存读取要求,若所欲更新探听表中那些集群中的一个CL0_0,CL1_0,CL0_1或CL1_1未对应到发起内存读取要求的集群,且内存访问要求记录可分享-OK并在探听表中对应入口有值,则二次查询相关于对述探听表二次查询;针对内存访问要求为内存写入要求,若在探听表中对应入口有值,则二次查询相关于对探听表二次查询。而其余条件则是二次查询相关于不对探听表二次查询。
针对更新信息中的更新监视,其在要求命中监视周期(cycle)时使用,以在更新探听表时能清除监视标识(flag)。
另一方面,针对内存写入要求,写入跟踪器WTK只要在对探听表的查询完成后将对应更新信息送入探听表队列STQ即可。而针对内存读取要求,若记录有可缓存,则需要先使要求发起集群的记录有效。然而,应该在更新前对相同组合/路无效的逐出作业可能会发生在更新之后,使得多笔更新信息的排序不正常/乱序。以下将说明伴随可缓存的内存读取要求需要等待某些情况(例如,期待的逐出要求、或确认逐出不会发生/被取消)后在出栈更新信息到探听表队列STQ的两种情况,同时按照更新信息的顺序命名为第一笔更新信息,第二笔更新信息,第三笔更新信息等。在两种情况中,目标内存读取要求的内容将取代缓存中存储线/块的数据,且逐出可能会发生。
其第一情况是组合路匹配(match set way,在此简称为MatSetWay),当目标要求欲查询探听表时,早于此目标要求发出(排序在前)的其他要求可能还在在线(on the fly,在某时间窗口内尚未处理,并在此时间窗口结果会出栈数据至其对应集群CL0_0,CL1_0,CL0_1或CL1_1)。而这些其他要求满足以下条件则满足MatSetWay情况:假设至少一笔第一更新信息属于那些其他要求且第二更新信息属于目标要求,探听表模块STM判断此第一及第二更新信息都记录可缓存、第二更新信息与第一更新信息对应相同集群、且第二更新信息与第一更新信息对应相同入口/组合及路。也就是说,某一个集群连续发出多笔相同组合移路的内存读取要求。而响应于第一更新信息对所述探听表的完成,探听表模块STM才会处理第二更新信息。MatSetWay是用于侦测属于尚未更新探听表的某一要求的对应存储线/块。当侦测的要求出栈数据时,可确认此要求对应的更新信息已更新到探听表。
图5为依据本发明一实施例的处理内存读取要求的流程图。请参照图5,探听表模块STM自内存访问要求提取夹带的属性(步骤S501),且依据处理数笔要求(步骤S502)。探听表模块STM处理到目标要求时(步骤S504),会进一步判断目标要求对应的更新信息是否可缓存、与前一笔伴随可缓存的更新信息是否属于相同集群CL0_0,CL1_0,CL0_1或CL1_1、及与前一笔伴随可缓存的更新信息是否相同组合及路(步骤S503)。若皆符合,则探听表模块STM判断符合MatSetWay(步骤S505),且会记录此前一笔更新信息的标识符ID(此标识符与对应要求发起的顺序相关)。另一方面,探听表模块STM会多任务处理那些伴随可缓存的更新信息,通过对应到各集群CL0_0,CL1_0,CL0_1或CL1_1的标签位移队列(可简称为TagShiftQ)(步骤S507)来取得最早一笔更新信息(可缓存且相同组合/路)对应入口所记录的内存物理地址(此受选的标签可简称为MSWHitTag)(步骤S508)。而此MSWHitTag即可用于判断对应要求是否已更新。需说明的是,各TagShiftQ的深度与读取跟踪器RTK一致(例如,48、36、72等)。
另一方面,其第二情况是探听表忙碌(在此简称为STBusy)。而其他要求满足以下条件则满足STBusy:假设至少一笔第三更新信息属于那些其他要求且第四更新信息属于目标要求,探听表模块STM判断第三及第四更新信息记录皆可缓存、第四更新信息与第三更新信息对应相同集群、且第四更新信息与第三更新信息对应不同内存物理地址(即,不同标签)。在此第二情况中,探听表模块STM只需要考虑来自要求发起集群的探听查询结果,若其查询结果是要求对应的路将成为有效状态且其探听表中的对应标签与要求的标签不一致,则可判断为STBusy情况。换句而言,当STBusy情况发生时,在查询程序中可找到对应的标签,此标签(可简称为BusyTag)为有效标签且与要求内记录的标签不同。相似地,BusyTag与MSWHitTag都是用于判断先前的更新是否完成,并确认更新完成后探听表模块STM才将目标要求的更新信息更新到探听表中。即,响应于第三更新信息对探听表的完成,探听表模块STM才会处理第四更新信息。
在一实施例中,若对目标要求的处理发生STBusy情况但非MatSetWay情况,有以下三种事件可能会发生:
第一事件是,相同组合及相同路的逐出由相同集群发起。需说明的是,若查询结果符合STBusy情况,代表针对此集群的相同集合及相同路中的记录逐出已发生,因此探听表模块STM不需要比较其他标签。
第二事件是,探听表模块STM侦测到对相同集合及相同路的更新信息已宣告有效值且已更新到探听表中。此事件代表存在其他要求早于目标要求,且其他要求将会使BusyTag无效。因此,若发生此第二事件且事件之前没有对此BusyTag逐出,则对此BusyTag逐出将可能不会发生。此时,探听表模块STM可将目标要求的更新信息更新到探听表中。
第三事件是,若将BusyTag无效的要求是在目标要求之后发起,则第二事件将不会在目标要求更新到探听表之前发生。可确定的是,对于此BusyTag的逐出将不会在此事件后发生,且接着可依据此目标要求而对探听表更新。
图6为依据本发明一实施例的处理程序的时序图。请参照图6,对BusyTag无效的要求发起(步骤S601)后,目标要求才发起(步骤S602)。经过四个时间单位后,读取跟踪器RTK对探听表查询(步骤S603)。在一个侦测窗口中(步骤S606),探听表模块STM发现查询结果符合STBusy情况(步骤S604),并将STBusy情况回应给读取跟踪器RTK(步骤S605)。探听表模块STM会待其他要求的更新完成(步骤S607)后,才会将目标要求的更新信息更新到探听表中。
图7为依据本发明一实施例的处理内存读取要求的流程图。请参照图7,其是针对第三事件的应用情境。探听表模块STM自内存访问要求提取夹带的属性(步骤S701)。探听表模块STM会查询探听表(步骤S702),并回应探听表忙碌(STBusy)情况及忙碌标签(BusyTag)(步骤S703)。而在延迟五个时间单位(步骤S704)后的检查点,目标要求的读取跟踪器RTK判断目标要求对应标签、组合、路是否匹配、以及下表(3)是否为匹配(步骤S705),其中路对应到探听模块中的列,组对应到行。
表(3)
序号 | 读取/写入 | 来自相同集群 | 可缓存 | 分享-OK | 匹配 |
1 | 1 | 1 | 1 | x | 0 |
2 | 1 | 1 | 0 | x | 1 |
3 | 1 | 0 | x | 1 | 0 |
4 | 1 | 0 | x | 0 | 1 |
5 | 0 | x | 0 | 0 | 1 |
其中,读取/写入为0代表写入而1代表是读取;来自相同集群为0代表不同集群1代表是相同集群;可缓存为0代表不可缓存而1代表是可缓存;分享-OK为0代表非分享-OK而1代表是分享-OK;匹配为0代表不匹配而1代表匹配;x代表不考虑。也就是说,若目标内存读取要求与忙碌标签对应的要求来自相同集群且忙碌标签对应的要求记录不可缓存,则为匹配(符合STBusy情况);若目标内存读取要求与忙碌标签对应的要求来自不同集群且忙碌标签对应的要求记录非分享-OK,则为匹配;而若忙碌标签对应的要求记录不可缓存且非分享-OK,则为匹配。而其余条件则是不匹配。若判断结果为匹配,则目标要求的读取跟踪器RTK等待探听响应(步骤S706)后再入栈更新信息到探听表(步骤S707)。
另一方面,当面临到MatSetWay情况时,即便同时发生STBusy情况,探听表模块STM仍会等待在线的其他要求的逐出进行后,才处理目标要求的更新。以下将说明两种事件以使更新作业能继续。
第四事件是,侦测到对MSWHitTag的逐出。目标要求发起后,读取跟踪器RTK将侦测针对相同组合及相同路的逐出是否有匹配MSWHitTag的标签。而期望的逐出在数据读回后将会发生,此时目标要求尚未或刚读回数据。
而第五事件是,在解析要求的属性时即侦测到欲对MSWHitTag无效,此将导致取消前述期望的逐出。与第三事件相似,探听表模块STM侦测到有要求欲对MSWHitTag无效且等待其对应的探听回应。以图8所绘示依据本发明一实施例的处理程序的时序图为例,目标要求发起(步骤S801)后,探听表模块STM判断发生MatSetWay情况(步骤S803),并将此MatSetWay情况及MSWHitTag响应给目标要求的读取跟踪器RTK(步骤S804)。而前述那段时间没有遇见期望的要求(具有与MSWHitTag相同的标签、与目标邀吽相同的组合、且符合表(3)中的匹配)(步骤S802)。而在接下来的侦测窗口(步骤S806)中,对此MSWHitTag无效的期望要求将会发生(步骤S805)。
请参照图9,其是依据本发明一实施例的缓存处理方法的流程图。首先,在步骤S910中,可依据集群发起的内存访问要求来查询共享缓存SC中的探听表(如图2所示对应到所有本地缓存的存储结构)。在步骤S920中,可依据查询结果来更新探听表。
以上各步骤的细节可参照先前实施例中的说明,在此不再赘述。
综上所述,本发明实施例提出的多芯片系统及缓存处理方法,在各芯片设有记录所有本地集群及远程集群对应本地缓存的探听表,且此探听表的存储结构与所有集群的本地缓存的存储结构一致,探听表缓存的内容也随着本地缓存的内容改变。藉此,仅需要对此探听表探听缓存内容即可,无须反向干扰本地缓存。此外,响应于探听结束,更新信息将依据内存访问要求的内容而产生,此更新信息并需要写入至探听表中,使探听表与本地缓存的内容一致。另一方面,为了使更新信息的排序能正常进行,本发明实施例提出了组合路匹配及探听表忙碌情况的判断。当符合这两状况时,须待先前要求的更新完成后,才将目标要求的内容更新到探听表中。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (34)
1.一种多芯片系统,其特征在于,包括:
多个芯片,其中每个芯片包括:
多个集群,其中各所述多个集群对应多个本地缓存;
交叉接口,耦接所述多个集群,并耦接另一所述芯片的交叉接口;以及
探听系统,耦接所述交叉接口,与所述交叉接口单向传输,并包括:
探听表模块,包括共享缓存,而所述共享缓存记录有探听表;以及
多个跟踪器,耦接所述探听表模块,依据所述多个集群中的一个发起的内存访问要求查询所述共享缓存中的所述探听表,并依据查询结果更新所述探听表。
2.根据权利要求1所述的多芯片系统,其特征在于,所述探听表对应到所有所述多个芯片中的所述多个集群对应的所述多个本地缓存的存储结构。
3.根据权利要求1所述的多芯片系统,其特征在于,各所述多个跟踪器依据所述查询结果决定探听所述多个集群中的第一个,并根据所述查询结果而对所述探听表模块发出更新信息以更新所述探听表。
4.根据权利要求3所述的多芯片系统,其特征在于,所述多个跟踪器对所述探听表模块发出探听要求以探听所述探听表中对应于所述第一个的对应缓存线所记录的内容,并根据对应所述探听要求的探听响应的接收而发出所述更新信息以更新所述探听表。
5.根据权利要求1所述的多芯片系统,其特征在于,所述多个跟踪器包括多个读取跟踪器,且所述内存访问要求包括内存读取要求,而各所述多个读取跟踪器依据所述内存读取要求取得所述探听表记录的对应内容。
6.根据权利要求5所述的多芯片系统,其特征在于,当所述探听表的更新完成时,所述多个读取跟踪器中的一个将所述内存读取要求所要求的数据出栈给对应所述集群。
7.根据权利要求1所述的多芯片系统,其特征在于,所述多个跟踪器中的一个跟踪器包括多个写入跟踪器,且所述内存访问要求包括内存写入要求及输出要求,而各所述多个写入跟踪器依据所述内存写入要求或所述输出要求对所述探听表中对应所述本地缓存所记录的对应入口写入。
8.根据权利要求7所述的多芯片系统,其特征在于,当所述探听表的更新完成时,所述多个写入跟踪器中的一个将向所述内存发出所述内存写入要求。
9.根据权利要求3所述的多芯片系统,其特征在于,所述探听表模块包括探听表队列用以依据所述集群发起的所述内存访问要求的时间顺序依序缓存所述更新信息,且所述探听表模块依序处理所述更新信息。
10.根据权利要求3所述的多芯片系统,其特征在于,所述更新信息包括有效值,所述有效值用于表示是否更新所述探听表。
11.根据权利要求10所述的多芯片系统,其特征在于,针对所述内存访问要求为内存读取要求,
当更新所述探听表中所述多个集群中的一个对应到发起所述内存读取要求的所述集群,且所述内存访问要求记录可缓存并在所述探听表中对应入口没有值时,则所述有效值相关于更新所述探听表;
当更新所述探听表中所述多个集群中的一个对应到发起所述内存读取要求的所述集群,且所述内存访问要求记录不可缓存并在所述探听表中对应入口有值时,则所述有效值相关于更新所述探听表;以及
当更新所述探听表中所述多个集群中的一个未对应到发起所述内存读取要求的所述集群,且在所述探听表中对应入口有值时,则所述有效值相关于更新所述探听表。
12.根据权利要求10所述的多芯片系统,其特征在于,当所述内存访问要求为内存写入要求,且在所述探听表中对应入口有值,则所述有效值表示更新所述探听表;
13.根据权利要求3所述的多芯片系统,其特征在于,所述更新信息包括状态值,所述状态值相关于所述探听表中对应入口是否有效,而针对所述内存访问要求为内存读取要求,当更新所述探听表中所述多个集群中的一个对应到发起所述内存读取要求的所述集群,且所述内存读取要求记录可缓存,则所述状态值相关于所述探听表中对应入口有效;以及
针对所述内存访问要求为内存写入要求,所述状态值相关于所述探听表中对应入口无效。
14.根据权利要求3所述的多芯片系统,其特征在于,所述更新信息包括二次查询,所述二次查询相关于是否对所述探听表二次查询,而针对所述内存访问要求为内存读取要求,当更新所述探听表中所述多个集群中的一个对应到发起所述内存读取要求的所述集群,且在所述探听表中对应入口有值,则所述二次查询相关于对所述探听表二次查询;
针对所述内存访问要求为内存读取要求,当更新所述探听表中所述多个集群中的一个未对应到发起所述内存读取要求的所述集群,且所述内存访问要求记录可分享-OK并在所述探听表中对应入口有值,则所述二次查询相关于对所述探听表二次查询;以及
针对所述内存访问要求为内存写入要求,若在所述探听表中对应入口有值,则所述二次查询相关于对所述探听表二次查询。
15.根据权利要求3所述的多芯片系统,其特征在于,针对所述内存访问要求为内存读取要求,所述更新信息包括至少一第一更新信息及第二更新信息,且所述至少一第一更新信息早于所述第二更新信息发出并记录可缓存,而若所述探听表模块判断所述第二更新信息记录可缓存、所述第二更新信息与所述至少一第一更新信息对应相同所述集群、且所述第二更新信息与所述至少一第一更新信息对应相同入口及路,则响应于所述至少一第一更新信息对所述探听表的完成,所述探听表模块处理所述第二更新信息。
16.根据权利要求15所述的多芯片系统,其特征在于,所述探听表模块取得所述至少一第一更新信息中最早者对应入口记录的内存物理地址,并响应于所述最早者所记录的所述内存物理地址对应的逐出已完成,所述探听表模块确认所述至少一第一更新信息对所述探听表更新的完成。
17.根据权利要求3所述的多芯片系统,其特征在于,针对所述内存访问要求为内存读取要求,所述更新信息包括第三更新信息及第四更新信息,且所述第三更新信息早于所述第四更新信息发出并记录可缓存,而若所述探听表模块判断所述第四更新信息记录可缓存、所述第四更新信息与所述第三更新信息对应相同所述集群、且所述第四更新信息与所述第三更新信息对应不同内存物理地址,则响应于所述第三更新信息对所述探听表更新的完成,所述探听表模块处理所述第四更新信息。
18.一种缓存处理方法,其特征在于,包括:
提供多个芯片,其中各所述多个芯片包括多个集群,各所述多个集群对应有本地缓存;
对各所述多个芯片提供共享缓存,其中所述共享缓存记录有探听表;
依据所述多个集群中的一个发起的内存访问要求查询所述共享缓存中的所述探听表;以及
依据查询结果更新所述探听表而不查询所述多个集群对应的所述本地缓存。
19.根据权利要求18所述的缓存处理方法,其特征在于,所述探听表对应到所有所述多个芯片中所述多个集群对应的所述本地缓存的存储结构。
20.根据权利要求18所述的缓存处理方法,其特征在于,依据所述查询结果更新所述探听表的步骤包括:
依据所述查询结果决定探听所述多个集群中的第一个;以及
响应于所述查询结果的接收而发出更新信息以更新所述探听表。
21.根据权利要求20所述的缓存处理方法,其特征在于,响应于所述查询结果的接收而发出更新信息以更新所述探听表的步骤包括:
发出探听要求以探听所述探听表中对应于所述第一个的对应缓存线所记录的内容;以及
响应于对应所述探听要求的探听响应的接收而发出所述更新信息以更新所述探听表。
22.根据权利要求18所述的缓存处理方法,其特征在于,所述内存访问要求包括内存读取要求,而依据所述多个集群中的一个发起的内存访问要求查询所述共享缓存中的所述探听表的步骤包括:
依据所述内存读取要求取得所述探听表记录的对应内容。
23.根据权利要求22所述的缓存处理方法,其特征在于,依据查询结果更新所述探听表的步骤之后,还包括:
响应于更新所述探听表的完成,将所述内存读取要求所要求的数据出栈给对应所述集群。
24.根据权利要求18所述的缓存处理方法,其特征在于,所述内存访问要求包括内存写入要求及逐出要求,而依据所述多个集群中的一个发起的内存访问要求查询所述共享缓存中的所述探听表的步骤包括:
依据所述内存写入要求或所述逐出要求对所述探听表中对应所述本地缓存所记录的对应入口写入。
25.根据权利要求24所述的缓存处理方法,其特征在于,依据查询结果更新所述探听表的步骤之后,还包括:
响应于更新所述探听表的完成,向内存发出所述内存写入要求。
26.根据权利要求20所述的缓存处理方法,其特征在于,还包括:
依据所述集群发起所述内存访问要求的时间顺序依序缓存所述更新信息;以及
依序处理所述更新信息。
27.根据权利要求20所述的缓存处理方法,其特征在于,所述更新信息包括有效值,所述有效值相关于是否更新所述探听表。
28.根据权利要求27所述的缓存处理方法,其特征在于,依据查询结果更新所述探听表的步骤包括:
针对所述内存访问要求为内存读取要求,
若所欲更新所述探听表中所述多个集群中的一个对应到发起所述内存读取要求的所述集群,且所述内存访问要求记录可缓存并在所述探听表中对应入口没有值,则所述有效值相关于更新所述探听表;
若所欲更新所述探听表中所述多个集群中的一个对应到发起所述内存读取要求的所述集群,且所述内存访问要求记录不可缓存并在所述探听表中对应入口有值,则所述有效值相关于更新所述探听表;以及
若所欲更新所述探听表中所述多个集群中的一个未对应到发起所述内存读取要求的所述集群,且在所述探听表中对应入口有值,则所述有效值相关于更新所述探听表。
29.根据权利要求27所述的缓存处理方法,其特征在于,依据查询结果更新所述探听表的步骤包括:
针对所述内存访问要求为内存写入要求,若在所述探听表中对应入口有值,则所述有效值相关于更新所述探听表;
30.根据权利要求20所述的缓存处理方法,其特征在于,所述更新信息包括状态值,所述状态值相关于所述探听表中对应入口是否有效,而依据查询结果更新所述探听表的步骤包括:
针对所述内存访问要求为内存读取要求,若所欲更新所述探听表中所述多个集群中的一个对应到发起所述内存读取要求的所述集群,且所述内存读取要求记录可缓存,则所述状态值相关于所述探听表中对应入口有效;以及
针对所述内存访问要求为内存写入要求,所述状态值相关于所述探听表中对应入口无效。
31.根据权利要求20所述的缓存处理方法,其特征在于,所述更新信息包括二次查询,所述二次查询相关于是否对所述探听表二次查询,而依据查询结果更新所述探听表的步骤包括:
针对所述内存访问要求为内存读取要求,当更新所述探听表中所述多个集群中的一个对应到发起所述内存读取要求的所述集群,且在所述探听表中对应入口有值,则所述二次查询相关于对所述探听表二次查询;
针对所述内存访问要求为内存读取要求,当更新所述探听表中所述多个集群中的一个未对应到发起所述内存读取要求的所述集群,且所述内存访问要求记录可分享-OK并在所述探听表中对应入口有值,则所述二次查询相关于对所述探听表二次查询;以及
针对所述内存访问要求为内存写入要求,若在所述探听表中对应入口有值,则所述二次查询相关于对所述探听表二次查询。
32.根据权利要求20所述的缓存处理方法,其特征在于,针对所述内存访问要求为内存读取要求,所述更新信息包括至少一第一更新信息及第二更新信息,且所述至少一第一更新信息早于所述第二更新信息发出并记录可缓存,而依据查询结果更新所述探听表的步骤包括:
若判断所述第二更新信息记录可缓存、所述第二更新信息与所述至少一第一更新信息对应相同所述集群、且所述第二更新信息与所述至少一第一更新信息对应相同入口及路,则响应于所述至少一第一更新信息对所述探听表的完成,处理所述第二更新信息。
33.根据权利要求32所述的缓存处理方法,其特征在于,响应于所述至少一第一更新信息对所述探听表的完成的步骤之前,还包括:
取得所述至少一第一更新信息中最早者对应入口记录的内存物理地址;以及
响应于所述最早者所记录的所述内存物理地址对应的逐出已完成,确认所述至少一第一更新信息对所述探听表更新的完成。
34.根据权利要求20所述的缓存处理方法,其特征在于,针对所述内存访问要求为内存读取要求,所述更新信息包括第三更新信息及第二更新信息,且所述第三更新信息早于所述第四更新信息发出并记录可缓存,而依据查询结果更新所述探听表的步骤包括:
若判断所述第四更新信息记录可缓存、所述第四更新信息与所述第三更新信息对应相同所述集群、且所述第四更新信息与所述第一更新信息对应不同内存物理地址,则响应于所述第三更新信息对所述探听表更新的完成,处理所述第四更新信息。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910504889.XA CN110232030B (zh) | 2019-06-12 | 2019-06-12 | 多芯片系统及缓存处理方法 |
US16/855,996 US11321233B2 (en) | 2019-06-12 | 2020-04-22 | Multi-chip system and cache processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910504889.XA CN110232030B (zh) | 2019-06-12 | 2019-06-12 | 多芯片系统及缓存处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110232030A true CN110232030A (zh) | 2019-09-13 |
CN110232030B CN110232030B (zh) | 2021-08-10 |
Family
ID=67858992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910504889.XA Active CN110232030B (zh) | 2019-06-12 | 2019-06-12 | 多芯片系统及缓存处理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11321233B2 (zh) |
CN (1) | CN110232030B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111241009A (zh) * | 2019-12-31 | 2020-06-05 | 西安翔腾微电子科技有限公司 | 一种数据反馈方法及装置 |
CN111679998A (zh) * | 2020-06-03 | 2020-09-18 | 上海兆芯集成电路有限公司 | 多芯片系统及其数据传输方法 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1609823A (zh) * | 2003-10-23 | 2005-04-27 | 英特尔公司 | 用于维持共享高速缓存一致性的方法和设备 |
CN101149706A (zh) * | 2006-09-19 | 2008-03-26 | 国际商业机器公司 | 支持掷出的一致性管理的处理器、数据处理系统和方法 |
CN101470669A (zh) * | 2007-12-28 | 2009-07-01 | 无锡江南计算技术研究所 | 多缓存数据一致性的处理方法及主存处理机 |
US7818509B2 (en) * | 2007-10-31 | 2010-10-19 | International Business Machines Corporation | Combined response cancellation for load command |
CN103324585A (zh) * | 2012-03-20 | 2013-09-25 | 苹果公司 | 分级缓存的处理器中的协作预取处理 |
CN104407995A (zh) * | 2014-11-28 | 2015-03-11 | 上海兆芯集成电路有限公司 | 基于缓存一致性的控制系统和方法 |
US9009541B2 (en) * | 2012-08-20 | 2015-04-14 | Apple Inc. | Efficient trace capture buffer management |
CN104978283A (zh) * | 2014-04-10 | 2015-10-14 | 华为技术有限公司 | 一种内存访问控制方法,及装置 |
CN105745630A (zh) * | 2013-12-23 | 2016-07-06 | 英特尔公司 | 用于在集群宽执行机器中的存储器访问的指令和逻辑 |
US9727464B2 (en) * | 2014-11-20 | 2017-08-08 | International Business Machines Corporation | Nested cache coherency protocol in a tiered multi-node computer system |
CN107810490A (zh) * | 2015-06-18 | 2018-03-16 | 华为技术有限公司 | 用于基于目录的缓存一致性的系统和方法 |
CN108885583A (zh) * | 2016-04-11 | 2018-11-23 | 国际商业机器公司 | 高速缓存存储器访问 |
CN109213641A (zh) * | 2017-06-29 | 2019-01-15 | 展讯通信(上海)有限公司 | 缓存一致性检测系统及方法 |
CN109614153A (zh) * | 2018-11-06 | 2019-04-12 | 西安中兴新软件有限责任公司 | 多核芯片及系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6601126B1 (en) * | 2000-01-20 | 2003-07-29 | Palmchip Corporation | Chip-core framework for systems-on-a-chip |
US6668308B2 (en) * | 2000-06-10 | 2003-12-23 | Hewlett-Packard Development Company, L.P. | Scalable architecture based on single-chip multiprocessing |
US6839808B2 (en) * | 2001-07-06 | 2005-01-04 | Juniper Networks, Inc. | Processing cluster having multiple compute engines and shared tier one caches |
US7337279B2 (en) * | 2003-06-27 | 2008-02-26 | Newisys, Inc. | Methods and apparatus for sending targeted probes |
US7404044B2 (en) * | 2004-09-15 | 2008-07-22 | Broadcom Corporation | System and method for data transfer between multiple processors |
US20060176890A1 (en) * | 2005-02-10 | 2006-08-10 | International Business Machines Corporation | Data processing system, method and interconnect fabric for improved communication in a data processing system |
US9274955B2 (en) * | 2012-08-17 | 2016-03-01 | Futurewei Technologies, Inc. | Reduced scalable cache directory |
US10339060B2 (en) * | 2016-12-30 | 2019-07-02 | Intel Corporation | Optimized caching agent with integrated directory cache |
US11314648B2 (en) * | 2017-02-08 | 2022-04-26 | Arm Limited | Data processing |
-
2019
- 2019-06-12 CN CN201910504889.XA patent/CN110232030B/zh active Active
-
2020
- 2020-04-22 US US16/855,996 patent/US11321233B2/en active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1609823A (zh) * | 2003-10-23 | 2005-04-27 | 英特尔公司 | 用于维持共享高速缓存一致性的方法和设备 |
CN101149706A (zh) * | 2006-09-19 | 2008-03-26 | 国际商业机器公司 | 支持掷出的一致性管理的处理器、数据处理系统和方法 |
US7818509B2 (en) * | 2007-10-31 | 2010-10-19 | International Business Machines Corporation | Combined response cancellation for load command |
CN101470669A (zh) * | 2007-12-28 | 2009-07-01 | 无锡江南计算技术研究所 | 多缓存数据一致性的处理方法及主存处理机 |
CN103324585A (zh) * | 2012-03-20 | 2013-09-25 | 苹果公司 | 分级缓存的处理器中的协作预取处理 |
US9009541B2 (en) * | 2012-08-20 | 2015-04-14 | Apple Inc. | Efficient trace capture buffer management |
CN105745630A (zh) * | 2013-12-23 | 2016-07-06 | 英特尔公司 | 用于在集群宽执行机器中的存储器访问的指令和逻辑 |
CN104978283A (zh) * | 2014-04-10 | 2015-10-14 | 华为技术有限公司 | 一种内存访问控制方法,及装置 |
US9727464B2 (en) * | 2014-11-20 | 2017-08-08 | International Business Machines Corporation | Nested cache coherency protocol in a tiered multi-node computer system |
CN104407995A (zh) * | 2014-11-28 | 2015-03-11 | 上海兆芯集成电路有限公司 | 基于缓存一致性的控制系统和方法 |
CN107810490A (zh) * | 2015-06-18 | 2018-03-16 | 华为技术有限公司 | 用于基于目录的缓存一致性的系统和方法 |
CN108885583A (zh) * | 2016-04-11 | 2018-11-23 | 国际商业机器公司 | 高速缓存存储器访问 |
CN109213641A (zh) * | 2017-06-29 | 2019-01-15 | 展讯通信(上海)有限公司 | 缓存一致性检测系统及方法 |
CN109614153A (zh) * | 2018-11-06 | 2019-04-12 | 西安中兴新软件有限责任公司 | 多核芯片及系统 |
Non-Patent Citations (1)
Title |
---|
黄安文;张民选: "多核处理器Cache一致性协议关键技术研究", 《计算机工程与科学 》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111241009A (zh) * | 2019-12-31 | 2020-06-05 | 西安翔腾微电子科技有限公司 | 一种数据反馈方法及装置 |
CN111241009B (zh) * | 2019-12-31 | 2023-05-16 | 西安翔腾微电子科技有限公司 | 一种数据反馈方法及装置 |
CN111679998A (zh) * | 2020-06-03 | 2020-09-18 | 上海兆芯集成电路有限公司 | 多芯片系统及其数据传输方法 |
CN111679998B (zh) * | 2020-06-03 | 2023-07-25 | 上海兆芯集成电路股份有限公司 | 多芯片系统及其数据传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110232030B (zh) | 2021-08-10 |
US20200394138A1 (en) | 2020-12-17 |
US11321233B2 (en) | 2022-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6304945B1 (en) | Method and apparatus for maintaining cache coherency in a computer system having multiple processor buses | |
US6990559B2 (en) | Mechanism for resolving ambiguous invalidates in a computer system | |
KR102429404B1 (ko) | 상이한 캐시 레벨에서의 캐시라인의 상태를 모니터하기 위한 쉐도우 태그 메모리 | |
US8103835B2 (en) | Low-cost cache coherency for accelerators | |
KR101497002B1 (ko) | 스누프 필터링 메커니즘 | |
CN103714015B (zh) | 减少来自侦听过滤器的后无效事务的方法、装置和系统 | |
US5297269A (en) | Cache coherency protocol for multi processor computer system | |
US7836144B2 (en) | System and method for a 3-hop cache coherency protocol | |
US20050188159A1 (en) | Computer system supporting both dirty-shared and non dirty-shared data processing entities | |
US20050251626A1 (en) | Managing sparse directory evictions in multiprocessor systems via memory locking | |
JP2005539282A (ja) | 単一のコヒーレントなシステム内の分散コンピュータ・ノードにキャッシュ・コヒーレンスを提供するのにグローバル・スヌープを使用する方法および装置 | |
US6662276B2 (en) | Storing directory information for non uniform memory architecture systems using processor cache | |
JPH10289154A (ja) | Smpバスの排他状態でのキャッシュ・ラインの共用を行う方法及び装置 | |
US20040088496A1 (en) | Cache coherence directory eviction mechanisms in multiprocessor systems | |
US20140229678A1 (en) | Method and apparatus for accelerated shared data migration | |
US7325102B1 (en) | Mechanism and method for cache snoop filtering | |
CN110232030A (zh) | 多芯片系统及缓存处理方法 | |
EP0936558A3 (en) | Cache coherency protocol having hovering (H) and recent (R) states | |
US20080307169A1 (en) | Method, Apparatus, System and Program Product Supporting Improved Access Latency for a Sectored Directory | |
US6950906B2 (en) | System for and method of operating a cache | |
KR20230028145A (ko) | 상호 연결된 장치들 간의 데이터 전송을 위한 시스템, 방법 및 장치 | |
EP1652091B1 (en) | Methods and apparatus for providing early responses from a remote data cache | |
US7000080B2 (en) | Channel-based late race resolution mechanism for a computer system | |
JPH07152647A (ja) | 共有メモリマルチプロセッサ | |
US20040268052A1 (en) | Methods and apparatus for sending targeted probes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |
|
CP03 | Change of name, title or address |