CN103294608A - 处理器、信息处理设备和算术方法 - Google Patents
处理器、信息处理设备和算术方法 Download PDFInfo
- Publication number
- CN103294608A CN103294608A CN2012105075429A CN201210507542A CN103294608A CN 103294608 A CN103294608 A CN 103294608A CN 2012105075429 A CN2012105075429 A CN 2012105075429A CN 201210507542 A CN201210507542 A CN 201210507542A CN 103294608 A CN103294608 A CN 103294608A
- Authority
- CN
- China
- Prior art keywords
- sector
- data
- cpu
- cache lines
- cache
- 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.)
- Pending
Links
Images
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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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
-
- 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/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- 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/1012—Design facilitation
-
- 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/1056—Simplification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了一种处理器、信息处理设备和算术方法。处理器(12至12g)包括暂时保存存储在主存储装置(17至24)中的数据的缓存存储器(12a)。该处理器包括通过使用保存在缓存存储器(12a)中的数据来执行应用的处理单元(40至40b)。该处理器包括在其中存储更新信息的存储单元(12c、12e、42、46),该更新信息指示由处理单元(40至40b)在处理单元(40至40b)执行的应用指定的时间段内已更新的数据。该处理器包括回写单元(52),当应用指定的时间段结束时,该回写单元将下述数据从缓存存储器(12a)回写到主存储装置(17至24):该数据来自保存在缓存存储器(12a)中的数据之中并由存储在存储单元(12c、12e、42、46)中的更新信息来指示。
Description
相关申请的交叉引用
本申请基于2012年2月29日提交的在前日本专利申请第2012-044881号并要求其优先权的权益,其全部内容通过引用并入本申请。
技术领域
这里讨论的实施例涉及处理器、信息处理设备和算术方法。
背景技术
已知多个算术单元共享存储器的传统信息处理系统。使用下述共享存储器方法的信息处理系统是这种传统信息处理系统的已知示例:其中每个算术单元将存储在存储器中的数据缓存。
在该类信息处理系统中,在共享存储器中创建备份数据,使得如果算术单元之一故障,则可以容易地恢复备份数据。然而,当更新备份数据时,具有缓存功能的算术单元将要备份的数据和旧备份数据二者缓存,然后更新所缓存的备份数据。因此,如果在算术单元将更新后的备份数据回写到存储器之前算术单元中出现故障,则更新后的备份数据有时不可以回写到存储器。
因此,存在以下已知技术:其中,修改程序,以使得发出用于将存储在缓存存储器中的数据回写到存储器的刷新(flush)请求,并且将算术单元缓存的备份数据回写到存储器。下面,将参照图37到39描述用于将算术单元缓存的数据回写到存储器的缓存刷新处理。
图37是示出备份处理的示意图。图38是示出刷新处理的示意图。图39是示出算术单元出故障时的处理的示意图。在图37中示出的示例中,从软件侧角度示出算术单元将数据回写到共享存储器的处理。图38和图39均示出从硬件侧观看的处理。
在图37中示出的示例中,算术单元70和算术单元71中的每个均包括核和缓存存储器,并且共享连接到算术单元71的存储器72。首先,如图37的(A)所示,当算术单元70执行的程序执行当前数据(即,存储在存储器72中的数据)的备份时,程序发出对当前数据的加载请求。然后,如图37的(B)所示,为了将所读取的当前数据的备份数据存储在存储器72中,算术单元70执行的程序发出存储请求和刷新请求两者。
相反,如图38的(C)和(D)所示,从程序接收所发出的加载请求的算术单元70将存储在共享存储器中的备份数据和当前数据缓存。此外,当算术单元70从程序接收到所发出的存储请求时,算术单元70更新缓存存储器中的备份数据,如图38的(E)所示。当程序发出刷新请求时,算术单元70将存储在缓存存储器中的备份数据回写到共享存储器,如图38的(F)所示。
然后,存储器72中存在由于刷新请求而被回写的最新备份数据。因此,如图39的(G)所示,即使算术单元70出故障,信息处理系统也通过使用图39的(H)中示出的最新备份数据来执行恢复。
专利文献1:日本公开专利公布第2009-163450号
专利文献2:日本公开专利公布第2011-018196号
专利文献3:日本公开专利公布第11-259362号
专利文献4:日本公开专利公布第06-19797号
专利文献5:日本公开专利公布第04-175946号
专利文献6:日本公开专利公布第08-44626号
然而,对于修改程序以使得发出刷新请求的技术,存在以下问题:因为修改程序以使得每次缓存要被回写到存储器的数据时发出刷新请求,所以程序变得复杂。
图40是示出对其添加刷新请求的程序的示意图。图40示出包括共享存储器的、具有簇配置的系统所执行的程序。例如,如图40的(I)所示,在具有簇配置的系统执行的程序中,主程序调用多个子程序以允许硬件向每个子程序发出存储请求。
因此,如图40的(J)所示,当地址A(Adr_A)和地址B(Adr_B)中的每个的刷新请求添加到程序时,修改程序以使得每个子程序发出刷新请求。此外,如果在具有簇配置的系统中共享程序,则修改程序以使得根据执行程序的簇的配置来确定是否执行刷新请求。因此,程序变得复杂。
此外,为了避免复杂程序,还可以使用下述直写方法:其中,每次更新缓存中的数据时,数据被回写到存储器。图41是示出直写方法的示意图。例如,如图41的(K)所示,算术单元70缓存来自共享存储器的数据,并且如图41的(L)所示,更新缓存数据。
然后,如图41的(M)所示,每次更新缓存数据时,算术单元70将缓存中的数据回写到共享存储器。然而,在直写方法中,每次算术单元70更新缓存数据时,发生用于将缓存存储器中的数据回写到共享存储器的处理,这是个瓶颈。
此外,还可想到在要替换缓存存储器时适当地使用用于回写数据的回写方法和直写方法。然而,当根据状态适当地使用回写方法和直写方法时,在程序中确定存储请求的目标是否为要回写到存储器的数据,这使得难以创建程序。此外,执行回写方法和直写方法两者的硬件具有复杂的电路。
此外,还可想到在所有缓存线上执行刷新处理;然而,如果在所有缓存线上执行刷新处理,则执行刷新处理花费的时间是长的。此外,在缓存存储器中,会存在没有被回写到存储器的数据,诸如用于算术处理的数据;因此,使处理能力退化。
因此,本发明的实施例的一方面的目的是减少由程序发出的刷新请求的修改量。
发明内容
根据实施例的一方面,处理器包括暂时保存存储在主存储装置中的数据的缓存存储器。该处理器包括通过使用保存在缓存存储器中的数据来执行应用的处理单元。该处理器包括在其中存储更新信息的存储单元,该更新信息指示由处理单元在处理单元执行的应用指定的时间段内已更新的数据。该处理器包括回写单元,当应用指定的时间段结束时,该回写单元将下述数据从缓存存储器回写到主存储装置:该数据来自保存在缓存存储器中的数据之中并由存储在存储单元中的更新信息来指示。
附图说明
图1是示出根据第一实施例的信息处理系统的示意图;
图2是示出根据第一实施例的节点的功能配置的示意图;
图3是示出根据第一实施例的存储器的分配的示意图;
图4是示出存储器映射的示意图,在该存储器映射中根据第一实施例的信息处理系统映射到每个存储器;
图5是示出根据第一实施例的信息处理系统分配的共享存储器区域的示意图;
图6是示出根据第一实施例的信息处理系统中的硬件和软件之间的关系的示意图;
图7是示出根据第一实施例的中间件和应用之间执行的操作的示意图;
图8是示出根据第一实施例的CPU执行的处理的示意图;
图9是示出根据第一实施例的CPU的缓存刷新的效果的示意图;
图10是示出根据第一实施例的CPU的效果的示意图;
图11是示出根据第二实施例的节点的功能配置的示意图;
图12是示出通过使用概要扇区标志执行缓存刷新的示意图;
图13是示出根据第三实施例的节点的功能配置的示意图;
图14是示出多核支持的概要扇区标志的示意图;
图15是示出根据第四实施例的节点的功能配置的示意图;
图16是示出用于限制要刷新的特定路径的处理的示例的示意图;
图17是示出根据第五实施例的CPU的功能配置的示意图;
图18是示出L1缓存标签的示意图;
图19是示出L1缓存的示意图;
图20是示出根据第五实施例的扇区ID创建单元执行的处理的示意图;
图21是示出L2缓存标签、L2缓存和L2缓存概要扇区标记的示意图;
图22是示出根据第五实施例的L2缓存访问控制器发送和接收的信号的示意图;
图23是示出用于创建存储在L1缓存标签中的扇区ID的处理的流程的流程图;
图24是示出用于登记/更新L1缓存的扇区ID的处理的流程的流程图;
图25是示出登记在L1缓存标签中的扇区ID的移位的示意图;
图26是示出用于登记L2缓存的扇区ID的处理的流程的流程图;
图27是示出用于仅在共享存储器区域上刷新的处理的流程的流程图;
图28是示出用于当要刷新的路径具有上限时登记扇区ID的处理的流程的流程图;
图29是示出当要刷新的路径具有上限时执行的处理的变型的流程图;
图30是示出L2缓存的扇区ID的移位的示意图(编号1);
图31是示出L2缓存的扇区ID的移位的示意图(编号2);
图32是示出用于设置L2缓存概要扇区标志的处理的流程的流程图;
图33是示出用于执行刷新的处理的流程的流程图;
图34是示出当存储时出现缓存未命中(cache miss)时软件和硬件的操作的序列图;
图35是示出当存储时出现缓存命中时软件和硬件的操作的序列图;
图36是示出当出现上下文切换时软件和硬件的操作的序列图;
图37是示出备份处理的示意图;
图38是示出刷新处理的示意图;
图39是示出当算术单元出故障时的处理的示意图;
图40是示出向其添加刷新请求的程序的示意图;以及
图41是示出直写方法的示意图。
具体实施方式
将参照附图说明本发明的优选实施例。
[a]第一实施例
在下述第一实施例中,将参照图1描述信息处理系统的示例。图1是示出根据第一实施例的信息处理系统的示意图。在图1示出的示例中,信息处理系统1包括客户终端2、客户终端2a、局域网(LAN)交换机3、管理终端4、LAN交换机5、双全局纵横式交换矩阵(crossbar)6、以及节点10至10m。全局纵横式交换矩阵6包括服务处理器7。
在第一实施例中,节点是其中运行有单一且独立的操作系统(OS)的单元,并且包括用于运行OS需要的绝对最少的装置。如稍后将描述的,节点包括一个或更多个CPU、存储器、以及硬盘驱动器(HDD)或取代HDD的外部存储装置。节点还可以是单个物理装置,或还可以由通过使用例如线缆连接的多个装置物理地构成。
节点10至10m经由服务LAN连接到LAN交换机3和客户终端2和2a。此外,节点10至10m经由内部LAN连接到LAN交换机5。此外,节点10至10m经由管理LAN连接到管理终端4。此外,节点10至10m连接到双全局纵横式交换矩阵6,并且通过互连的方式彼此连接。
客户终端2和2a中的每个经由服务LAN从节点10至10m中的每个获得服务。虽然未在图1中示出,但是信息处理系统1还可包括任意数量的附加客户终端。
节点10包括服务处理器11、CPU 12、以及本地XB(纵横式交换矩阵)16。与节点10类似,其它节点10a至10m均分别包括服务处理器、CPU、以及本地XB。在下面的描述中,节点10a至10m具有与节点10执行的功能相同的功能,因此,将省略其描述。
服务处理器11经由管理LAN连接到管理终端4,并且执行管理控制,诸如节点10中的供电管理。包括在全局纵横式交换矩阵6中的服务处理器7作为服务处理器11的主机而操作并且执行整体管理控制。服务处理器7和11中的每个执行的管理控制的示例包括供电管理、复位、操作模式的变化、节点的添加或删除的设置、错误日志的收集、以及退化(degeneracy)的操作控制。
此外,节点10至10m独立地执行操作系统(OS)。虽然未在图1中示出,但是除了CPU 12之外,节点10还包括多个CPU。CPU经由本地XB 16连接到全局纵横式交换矩阵6。
节点10中的CPU向本地XB 16输出存储器访问请求(该请求是对于存储器访问的请求),由此CPU向其它节点传递存储器访问请求。然后,当节点10中的CPU获得存储器访问请求时,CPU按照与CPU访问连接到CPU的存储器时执行的方式类似的方式执行存储器访问。具体地,在信息处理系统1中使用非均匀存储器访问(NUMA)技术;因此,节点10至10m中的每个通过共享相应的存储器来执行处理。
下面,将参照图2描述节点10的功能配置。图2是示出根据第一实施例的节点的功能配置的示意图。在图2中示出的示例中,节点10包括服务处理器11、CPU 12至15、本地XB 16、存储器17至24、以及外围部件高速互连(PCIe)交换机25。此外,节点10包括连接到服务LAN的LAN适配器26、连接到管理LAN的LAN适配器27、串行连接SCSI(SAS)28、以及硬盘驱动器(HDD)29。
存储器17和存储器18连接到CPU 13,并且是接收CPU 13执行的存储器访问的存储装置。存储器19和存储器20连接到CPU 12,并且是接收CPU 12执行的存储器访问的存储装置。存储器21和存储器22连接到CPU 14,并且是接收CPU 14执行的存储器访问的存储装置。
存储器23和存储器24连接到CPU 15,并且是接收CPU 15执行的存储器访问的存储装置。在图2中示出的示例中,节点10包括HDD 29;然而,本实施例不限于此。例如,HDD 29还可通过使用诸如存储区域网(SAN)技术的技术被布置在节点10外部。
服务处理器11执行对节点10的管理控制。具体地,服务处理器11包括处理器和现场可编程门阵列(FPGA),其执行处理并且经由管理LAN从管理终端4接收用于执行管理控制的指令。然后,服务处理器11根据从管理终端4接收的指令执行各种管理控制。
PCIe交换机25是下述交换机:其控制例如对I/O装置的访问,该I/O装置经由PCIe槽连接到CPU 12至15中的每个。LAN适配器26是将服务LAN连接到节点10的LAN适配器。此外,LAN适配器27是将管理LAN连接到节点10的LAN适配器。SAS 28是用于安装到PCIe槽的SAS或LAN的适配器,并且中继HDD 29和CPU 12至15中的每个之间的连接。
下面,将描述CPU 12至15。CPU 12至15分别包括缓存存储器12a至15a。此外,CPU 12至15彼此连接,并且可以彼此传送和接收存储器访问请求和答复。下面,将描述CPU 12。CPU 12与其它CPU 13至15彼此连接。CPU 13至15具有与CPU 12执行的功能相同的功能,因此,将省略其描述。
CPU 12包括将存储器19或存储器20存储的数据缓存的缓存存储器,并且通过使用缓存数据来执行算术处理。此外,CPU 12具有下述存储器接口的功能:该功能执行对存储器19和存储器20中的每个的存储器访问。此外,CPU 12具有下述PCIe接口功能:该功能经由PCIe交换机25通过使用HDD 29、内部LAN、或管理LAN来控制访问。
包括在CPU 12中的缓存存储器12a具有多个缓存线。如果CPU 12在应用35指定的时间段内更新数据,则CPU 12在存储更新后数据的缓存线上存储指示数据被更新的扇区标志。然后,如果应用35指定的时间段结束,则CPU 12执行如下刷新处理:该刷新处理用于将缓存存储器12a中的缓存线当中的、包含扇区标志的缓存线中存储的数据回写到存储器17至24。
此外,CPU 12通过互连的方式、经由本地XB 16和全局纵横式交换矩阵6而连接到包括在其它节点10a至10m中的CPU,并且具有在每个CPU之间传送和接收存储器访问请求的互连路由器的功能。具有这样的配置的CPU 12在例如通过要执行的处理向存储器19或存储器20发出存储器访问请求时执行下面的处理。具体地,CPU 12访问存储器19或存储器20并且缓存要访问的数据。
此外,当通过要执行的处理向除了存储器19和存储器20之外的存储器发出存储器访问请求时,CPU 12识别出连接到作为存储器访问目标的存储器的CPU,并且将存储器访问请求发送到所识别的CPU。具体地,CPU 12具有节点图,在该节点图中,要访问的存储器地址与唯一地指示如下CPU的信息相关联:该CPU访问由该储器地址指示的存储区域。
然后,如果处理发出存储器访问请求,则CPU 12参考节点图并且识别与作为存储器访问目标的存储器地址相关联的CPU。此后,CPU 12创建目的地是所识别的CPU的分组,将存储器访问请求存储在所创建的分组中,并且将分组输出到彼此连接的CPU 12至15或输出到本地XB 16。如果分组输出到本地XB 16,则本地XB 16经由全局纵横式交换矩阵6将分组传送到与分组的目的地相对应的CPU。
此时,除了以上处理之外,CPU 12还执行下面的处理。首先,CPU12在存储器19和存储器20中的存储区域之间的、与其它节点共享的存储区域中事先设置被称为存储器令牌的值。然后,CPU 12向对存储器19或存储器20发出存储器访问请求的CPU通知允许访问的存储区域,并且向该CPU通知与所通知的存储区域相关联的存储器令牌作为访问令牌。
此外,CPU 12事先从传送存储器访问请求的节点获得访问令牌,并且保存所获得的访问令牌。然后,如果CPU 12发出存储器访问请求,则CPU 12将所保存的访问令牌连同存储器访问请求存储在分组中并发送该分组。
此外,如果CPU 12从其它节点中的CPU接收存储器访问请求,则CPU 12确定与存储器访问请求一起接收的访问令牌是否匹配于与要访问的存储区域相关联的存储器令牌。如果访问令牌与存储器令牌匹配,则CPU 12执行存储器访问,然而,如果访问令牌与存储器令牌不匹配,则CPU 12拒绝执行存储器访问。
如果CPU 12对存储器19或存储器20执行存储器访问,则CPU 12执行用于保存存储器19或存储器20所缓存的数据的相干性的处理。例如,CPU 12将侦听发送到已缓存来自存储器19或存储器20的数据的CPU并且执行缓存数据的回写。
本地XB 16是如下交换机:其向指定目的地传递在包括在节点10中的CPU 12至15和包括在其它节点10a至10m中的CPU之间交换的分组。例如,本地XB 16经由全局纵横式交换矩阵6向包括在节点10a中的CPU发送下述分组:该分组由CPU 12发出并要传送到包括在节点10a中的CPU。
存储器17至存储器24是在其中存储由OS或应用中的每个使用的数据的存储器,并且例如是双列直插式存储模块(DIMM)。此外,存储器17至24映射在相同的存储器地址空间中。
此外,存储器17至24均具有可以仅由同一节点中的CPU 12至15访问的区域,即,作为专用于包括CPU 12至15的节点的区域的本地区域。此外,存储器17至24均具有可以由包括在信息处理系统1中的任意CPU访问的区域,即,具有可以由所有节点使用的共享存储器区域。用于存储器17至24的共享存储器区域被划分成多个片段。每个片段是由存储器令牌执行访问控制的保护区域、或者不由存储器令牌执行访问控制的非保护区域。
下面,将参照图3和4描述存储器17至24映射的存储器地址。图3是示出根据第一实施例的存储器的分配的示意图。例如,在包括在每个CPU中的两个存储器之间,信息处理系统1使用一个存储器作为仅用于本地区域的存储器,并且使用另一存储器作为仅用于共享存储器区域的存储器。具体地,如图3的(a)所示,存储器17、存储器19、存储器21、以及存储器23用作专用于节点的存储器,并且如图3的(b)所示,存储器18、存储器20、存储器22、以及存储器24用作共享存储器。
图4是示出存储器映射的示意图,在存储器映射中,根据第一实施例的信息处理系统映射到每个存储器。图4示出了如下示例:准备总共128太字节(TB)存储器地址空间,其中128太字节中的64太字节分配给本地区域,而128太字节中的64太字节分配给共享存储器区域。
例如,信息处理系统1在包括在节点10至10m中的存储器中的用作本地区域的区域中分配“0”到“246-1”的存储器地址。此外,信息处理系统1在包括在节点10至10m中的存储器中的用作共享存储器区域的区域中分配“246”到“247-1”的存储器地址。
具体地,在图3和4中示出的示例中,信息处理系统1将图4的(c)中示出的区域中的存储器地址映射到图3的(a)中示出的存储器17、存储器19、存储器21、以及存储器23。此外,信息处理系统1将图4的(d)中示出的区域中的存储器地址映射到图3的(b)中示出的存储器18、存储器20、存储器22、以及存储器24。图4中示出的地址“247”至“248-1”是用作不可缓存(UC)区域的地址范围,并且例如是由诸如HDD 29的I/O装置使用的I/O空间的地址范围。
如上所述,信息处理系统1将单条存储器地址空间映射到包括在节点10至10m中的存储器。因此,任意CPU可以直接访问任意节点中的共享存储器区域。图4中示出的存储器映射仅是示例,因此,还可执行任意分配。
具体地,不需要将存储器映射上的所有存储器地址分配给存储器。例如,还可以出现存储器洞(memory hole)。此外,还可以设置存储器映射,以使得在包括在信息处理系统1中的每个节点中存在OS使用的本地区域,而在一个或更多个节点中存在共享存储器区域。
如果信息处理系统1将连续存储器地址映射到包括在单个节点中的存储器(例如,存储器17和存储器18),则信息处理系统1可以删除控制资源。此外,信息处理系统1分配存储器地址以使得至少对准片段区。
下面,将参照图5描述分配给每个节点中的存储器的共享存储器区域。图5是示出根据第一实施例的信息处理系统分配的共享存储器区域的示意图。在图5示出的示例中,将给出如下情况的描述:信息处理系统1包括节点#0至#n,并且将共享存储器区域分发给节点#0至#n。
例如,如图5的(e)所示,信息处理系统1向节点#0至#n中的每个分配64太字节本地区域和64太字节共享存储器区域。具体地,如图5的(f)所示,信息处理系统1向节点#0至#n中的每个均等地分发64太字节共享存储器区域。
此时,节点#0至#n中的每个将所分发的共享存储器区域划分成保护区域和非保护区域。这里提到的保护区域是如下区域:当从其它节点接收存储器访问请求时,通过确定访问令牌是否与存储器令牌匹配来保护访问。这里提到的非保护区域是其它节点可以自由地执行存储器访问的区域。
例如,如图5的(g)所示,对于分配给节点#1的共享存储器区域,节点#1可以使用最大4太字节作为保护区域或非保护区域。此外,如图5的(h)所示,节点#1将共享存储器区域划分成与2千兆字节的片段#0至#2047相对应的片段。然后,如图5的(i)所示,节点#1对于每个片段设置存储器令牌。
此外,在图5示出的示例中,节点#1使用片段#0至#2作为保护区域,并且在每个片段中设置存储器令牌。存储器令牌例如是13比特值。在图5示出的示例中,节点#1将片段#3至#2047设置为非保护区域,并且将“全部0”设置为存储器令牌。具体地,当节点#0至#n中的每个访问相应的非保护区域时,节点可以通过使用“全部0”的访问令牌来访问非保护区域。
此外,节点#m也将其自己的共享存储器区域划分成片段#0至#2047,并且在片段#0至#2047的每个中设置存储器令牌。如图5的(j)所示,节点#m在片段#0至#2047的每个中设置的存储器令牌由节点#1使用作为访问令牌。因此,当节点#1访问节点#m中的共享存储器区域时,节点#1获得节点#m设置的存储器令牌,并且使用所获得的存储器令牌作为访问令牌,由此节点#1访问节点#m中的共享存储器区域。
下面,将参照图6描述CPU 12至15的每个中的硬件和CPU 12至15中的每个执行的软件之间的关系。图6是示出根据第一实施例的信息处理系统中硬件和软件之间的关系的示意图。在图6中示出的示例中,包括在CPU 12中的硬件被定义为硬件30,并且包括在CPU 13中的硬件被定义为硬件30a。在图6中示出的示例中,假设包括在CPU 14中的硬件为硬件30b,并且假设包括在CPU 15中的硬件为硬件30c。
例如,CPU 12包括硬件30并访问作为专用于CPU 12的本地存储器的存储器17,并访问共享存储器18、20、22和24。此外,CPU 12在硬件30上操作管理程序31、操作系统32、驱动器33、以及中间件34。此外,CPU 12在中间件34上执行由CPU 12至15中的每个协同操作的应用35。
此外,与CPU 12类似,其它CPU 13至15分别包括硬件30a至30c,并且分别操作管理程序31a至31c、操作系统32a至32c、驱动器33a至33c、以及中间件34a至34c。
下面,将参照图7描述在CPU 12执行的应用和中间件之间执行的操作。图7是示出根据第一实施例的在应用和中间件之间执行的操作的示意图。例如,在图7中示出的部分A中,应用35对于存储在要读取的地址1中的数据发出加载请求(LD:Load),并且对于要存储在地址2中的加载数据发出设置请求(ST:Set)。然后,虽然在图7中未示出,但是中间件34向硬件30传送由应用35发出的加载请求和设置请求,并且允许硬件30执行处理。
然后,应用35通知中间件34记录开始,并且通知中间件34从部分A到部分B转移。然后,中间件34设置指示已执行到部分B的转移的扇区模式(sector mode)。具体地,中间件34执行如下设置:该设置指示该部分处于应用35所指定的时间段内。
此后,为了备份数据,应用35发出针对存储在地址3中的数据的加载请求和针对存储在地址4中的数据的存储请求。在这种情况下,中间件34允许硬件30执行所发出的加载请求和存储请求,并且在作为存储请求的目标的地址4的缓存线上设置扇区标志。
此后,应用35向中间件34发出指示记录结束的SYNC。然后,中间件34识别出部分B结束并且取消扇区模式。然后,中间件34向硬件30发出扇区刷新请求。这里提到的扇区刷新请求是对于设置有扇区标志的缓存线的回写请求。具体地,中间件34请求硬件30仅将部分B中的作为存储请求目标的地址4中的数据回写到存储器17至24。然后,中间件34执行正常处理。
可以通过使用例如地址空间标识符(ASI)寄存器写入来以静态模式切换部分A和部分B。可以由应用35指定模式的切换。如果出现上下文切换,则存储或复原状态。
例如,如果在CPU 12执行的应用A已将扇区模式切换到部分B之后出现到应用B的上下文切换,则在部分A中保持应用A的扇区模式。如果CPU 12执行的应用从应用B变为应用A,则出现上下文切换并且该部分再次移动至部分B。
如果执行扇区刷新,则设置有扇区标志的缓存线的状态变为无效的。因此,在图7中示出的示例中,如果在中间件34发出扇区刷新请求之后向地址4发出加载请求等,则出现缓存未命中。
下面,将参照图8描述根据第一实施例的CPU 12执行的应用35和CPU 12中的硬件30执行的处理。图8是示出根据第一实施例的CPU执行的处理的示意图。图8作为示例示出了缓存存储器12a对存储在存储器17中的数据进行缓存。
在图8中示出的示例中,硬件30包括扇区模式寄存器,以确定当前处理是部分A的处理还是部分B的处理。例如,扇区模式寄存器是包括在CPU 12中的ASI寄存器之一。如果值是“0”,则这指示当前处理是部分A的处理,然而如果值是“1”,则这指示当前处理是部分B的处理。
此外,在图8中示出的示例中,缓存存储器12a包含多个缓存线。每个缓存线在其中存储有条目、扇区、状态、地址、以及数据。条目是用于标识缓存线的信息。扇区是指示是否在应用35指定的时间段内执行更新的扇区标志。
状态是指示数据状态的信息,例如,基于MESI协议(伊利诺斯协议)指示缓存线状态的信息。具体地,如果“M:Modify(M:修改)”存储在状态数据中,则这指示存储在同一缓存线中的数据被独占地缓存,并且缓存数据通过处理器核被更新到最新状态。
如果“E:Exclusive(E:独占)”存储在状态数据中,则这指示存储在同一缓存线中的数据被独占地缓存并且处理器核不更新缓存数据。如果“S:Shared(S:共享)”存储在状态数据中,则这指示其它缓存存储器15b和15c缓存同一共享数据。如果“I:Invalid(I:无效)”存储在状态数据中,则这指示存储在同一缓存线中的数据是无效的。
此外,地址指示存储了缓存源数据的存储器17中的存储器地址。数据是要缓存的数据。在图8示出的示例中,硬件30包括扇区刷新控制状态机,其根据每个缓存线的扇区的值来执行到存储器17的回写。具体地,扇区刷新控制状态机根据来自应用35的请求,仅将在部分B中更新的缓存线的数据回写到存储器17。
下面,将描述应用35和硬件30的操作。例如,如图8的(k)所示,应用35发出对于要存储在地址“100”中的数据“xx”的设置请求。然后,硬件30识别出数据“aa”存储在缓存存储器12a中包括的条目“5”的缓存线中的地址“100”中,并且然后将条目“5”的缓存线中的数据从“aa”重写为“xx”。
此外,因为硬件30更新了数据,因此硬件30将状态从“E”改变为“M”。此时,扇区模式寄存器的值是“0”。因此,对于条目“5”的缓存线中的数据,硬件30将扇区的值未改变地保留为“0”。
然后,应用35发出对于要存储在扇区模式寄存器(SctRg)中的“1”的设置请求。具体地,应用35请求扇区模式从部分A转移到部分B。然后,硬件30将“1”存储在扇区模式寄存器中。
随后,如图8的(l)所示,应用35发出对于要存储在地址“200”中的数据“yy”的设置请求。然后,硬件30识别出数据“bb”存储在条目“50”的缓存线中的地址“200”中,将条目“50”的缓存线中的数据从“bb”重写为“yy”,并且将状态从“E”改变为“M”。
此外,因为扇区模式寄存器的值为“1”,则硬件30将扇区标志“1”存储在条目“50”的缓存线中。具体地,硬件30在应用35指定的部分中设置指示已更新条目“50”的缓存线中的数据的扇区标志。
随后,应用35发出对于要存储在扇区模式寄存器中的“0”的设置请求。具体地,应用35请求进行从部分B到部分A的转移。然后,硬件30将“0”存储在扇区模式寄存器中。此后,如图8的(m)所示,通过发出将“1”存储在扇区刷新控制状态机(Sctq)中的请求,应用35请求缓存刷新的执行。如图8的(n)所示,硬件30检查每个缓存线,并且搜索扇区中包含“1”的条目。
然后,如图8的(o)所示,硬件30确定条目“50”的扇区为“1”。因此,如图8的(p)所示,硬件30将条目“50”的缓存线中的数据“yy”回写到存储器17。具体地,硬件30仅将部分B中更新的数据回写到存储器17。然后,硬件30将条目“50”的缓存线中的扇区改变为“0”,并且还将状态改变为“I”。
如上所述,从包括在缓存存储器12a中的多个缓存线当中,硬件30在包含有在应用35指定的时间段内更新的数据的缓存线中(即在部分B中)将扇区标志设置为“1”。然后,如果应用35指定的时间段结束并且如果硬件30从应用35接收缓存刷新请求,则硬件30仅将存储在包含扇区标志“1”的缓存线中的数据回写到存储器17。
因此,应用35不需要在每次发出要回写到存储器17的数据的存储请求时发出对指定地址的刷新请求。具体地,应用35仅需要指定如下部分并且仅需要发出刷新请求:在该部分中,需要要回写到存储器17的数据的存储请求。因此,包括硬件30的CPU 12可以减少应用35中的程序的修改量。
此外,从包括在缓存存储器12a中的缓存线当中,CPU 12仅将存储在包含扇区标志“1”的缓存线中的数据回写到存储器17;因此,可以减少缓存刷新的处理时间。此外,CPU 12仅将存储在包含扇区标志“1”的缓存线中的数据回写到存储器17;因此,减少不想要的缓存刷新的量,从而可以将归因于缓存刷新的性能退化减至最低。
图9是示出根据第一实施例的CPU的缓存刷新的效果的示意图。如图9的(x)所示,对于传统CPU,即使更新后的数据仅是缓存数据的一部分,所有缓存数据也被回写到存储器;因此,缓存刷新的处理时间增大并且因此整个系统的性能退化。
然而,如图9的(y)所示,CPU 12通过使用扇区标志来从存储在缓存存储器12a中的数据当中仅检测要回写到存储器17至24的数据,并且仅将检测到的数据回写到存储器17至24。因此,CPU 12可以减少缓存刷新的处理时间并且防止信息处理系统1的性能退化。
图10是示出根据第一实施例的CPU的效果的示意图。如图10所示,对于传统信息处理系统执行的应用,向中间件发出主程序“Sync”。中间件是关于该Sync的空操作(NOP)中间件。然后,主程序调用多个子程序,并且每个子程序向相应的中间件发出存储请求。此后,主程序向相应的中间件发出刷新请求。然后,中间件通过使用直接存储器访问(DMA)来将刷新请求复制到另一节点。
相反,如果信息处理系统1执行与以上类似的应用35,则中间件34在应用35发出“Sync”时向CPU 12传送“Sync”。因此,CPU 12确定由应用指定的时间段(即,刷新扇区的时间段)开始。随后,主程序调用子程序,并且每个子程序发出存储请求。然后,主程序发出刷新请求。然后,CPU 12在刷新扇区期间对归因于存储请求而更新的数据执行刷新处理。
因此,即使当CPU 12使用传统信息处理系统通常使用的应用时,CPU 12也可以将数据从缓存存储器12a写到存储器17和存储器18中的每个。因此,CPU 12可以减少应用需要修改(即,添加回写到存储器的刷新请求)的量。
第一实施例的优点
如上所述,CPU 12包括多个缓存线和暂时保存数据的缓存存储器12a。此外,CPU 12针对每个缓存线包括扇区标志,其指示是否在应用35指定的时间段内更新数据。然后,从包括在缓存存储器12a中的缓存线当中,CPU 12将存储在如下缓存线中的数据回写到存储器17至24:在该缓存线中,扇区标志指示在应用35指定的时间段内已更新数据。
因此,CPU 12可以减少应用35的程序的修改量。此外,CPU 12可以减少数据回写的处理时间,并且可以防止信息处理系统1的性能退化。
[b]第二实施例
在第二实施例中,除了CPU 12执行的功能之外,将给出包括概要扇区标志的CPU的描述,该概要扇区标志对于每组缓存线指示是否在应用指定的时间段内执行更新。
图11是示出根据第二实施例的节点的功能配置的示意图。图11示出了根据第二实施例的节点10n的功能配置。节点10n是包括在具有与第一实施例中的信息处理系统相同功能的信息处理系统1a中的节点。此外,具有与第一实施例相同的附图标记的、图11中示出的节点10n中的部件具有与第一实施例中描述的部件相同的功能;因此,将省略其描述。在图11中示出的示例中,节点10n包括CPU 12b至15b。
CPU 12b包括缓存存储器12a和概要扇区标志12c。类似地,其它CPU 13b至15b也分别包括缓存存储器13a至15a和概要扇区标志13c至15c。在以下描述中,假设CPU 13b至15b具有与CPU 12b执行的功能相同的功能,因此,将省略其描述。
CPU 12b具有与根据第一实施例的CPU 12执行的功能相同的功能,并且具有以下功能。即,CPU 12b针对多个缓存线的每个组包括多个概要扇区标志12c,概要扇区标志12c指示是否在应用指定的时间段内执行更新。另外,图11示出了概要扇区标志12c之一。
例如,CPU 12b将包括在缓存存储器12a中的多个缓存线划分成多个组并且将组与概要扇区标志12c相关联。然后,CPU 12b在与缓存线相关联的概要扇区标志12c之一中设置指示出现更新后数据的标志,该缓存线在其中存储在应用指定的时间段内更新的数据。例如,如果CPU 12b在应用指定的时间段内更新数据,则CPU 12b将包含更新后的数据的缓存线中的扇区标志改变为“1”。此外,CPU 12b将与存储更新后的数据的缓存线相关联的概要扇区标志12c设置为“1”。
然后,如果应用指定的时间段结束并且如果从应用发出刷新请求,则CPU 12b检查与其值为“1”的概要扇区标志12c相关联的缓存线。然后,从所检查的缓存线当中,CPU 12b识别出包含扇区标志“1”的缓存线,并且将存储在所识别的缓存线中的数据回写到存储器17至24。
如上所述,CPU 12b针对多个缓存线的每个组包括概要扇区标志12c,其指示是否在应用指定的时间段内更新数据。如果发出刷新请求,则CPU12b检查与指示更新了数据的概要扇区标志12c相关联的缓存线。此后,CPU 12仅将存储在设置了扇区标志“1”的缓存线中的数据回写到存储器17至24。
因此,当发出刷新请求时,CPU 12b可以识别出在其中存储有在应用指定的时间段内更新的数据的缓存线,而无需检查包括在缓存存储器12a中的全部缓存线。因此,CPU 12b可以减少刷新请求的处理时间并且可以改进整个信息处理系统的性能。
下面,将参照图12描述根据第二实施例的CPU 12b执行的处理和CPU 12执行的应用35。图12是示出通过使用概要扇区标志执行的缓存刷新的示意图。在图12中示出的示例中,假设包括在缓存存储器12a中的缓存线被划分成多个组。此外,图12作为示例示出了包括在CPU 12b中的硬件30d执行的处理。
概要扇区标志12c包括多个条目,在每个条目中,用于识别组的标号与标志相关联。组是用于识别缓存线的每个组的标号,例如从“1”至“M”的标号分别分配给所述组。在图12中示出的示例中,条目“5”的缓存线分配在组“1”中,而条目“50”的缓存线分配在组“A”中。
此外,这里提到的标志是如下标志:该标志指示是否在应用35指定的时间段内更新了存储在分配给相关联的组标号的缓存线中的数据。例如,如果组“1”中的标志是“1”,则概要扇区标志12c指示在应用35指定的时间段内更新了组“1”中的缓存线中存储的数据。此外,如果组“1”的标志是“0”,则概要扇区标志12c指示没有在应用35指定的时间段内更新组“1”中的缓存线中存储的数据。
下面,将参照图12描述CPU 12b执行的处理。如图12的(q)所示,首先,应用35发出对于要存储在地址“100”中的数据“xx”的设置请求。然后,硬件30d将条目“5”的缓存线中的数据从“aa”重写为“xx”,并且将状态从“E”改变为“M”。此外,由于扇区模式寄存器的值是“0”,因此硬件30b使针对条目“5”的缓存线中的数据的扇区的值未改变地保留为“0”。此外,由于扇区模式寄存器的值是“0”,因此硬件30b使概要扇区标志12c中的组“1”中的标志未改变地保留为“0”。
然后,应用35发出对于要存储在扇区模式寄存器中的“1”的设置请求,并且请求扇区模式从部分A转移到部分B。然后,硬件30在扇区模式寄存器中存储“1”。随后,如图12的(r)所示,应用35发出对于要存储在地址“200”中的数据“yy”的设置请求。然后,硬件30d将条目“50”的缓存线中的数据从“bb”重写为“yy”,并且将状态从“E”改变为“M”。
此外,由于扇区模式寄存器的值为“1”,因此硬件30b在条目“50”的缓存线中存储扇区标志“1”。具体地,硬件30设置扇区标志,该扇区标志指示在应用35指定的时间段内更新了条目“50”的缓存线中的数据。此外,在概要扇区标志12c中,硬件30b将分配有条目“50”的缓存线的组“A”中的标志改变为“1”。
随后,应用35发出对于要存储在扇区模式寄存器中的“0”的设置请求,并且请求扇区模式从部分A转移到部分B。然后,硬件30b在扇区模式寄存器中存储“0”。此后,如图12的(s)所示,通过发出对于要存储在扇区刷新控制状态机中的“1”的请求,应用35请求执行缓存刷新。
然后,如图12的(t)所示,硬件30d检查各自与概要扇区标志12c中的组相关联的标志,并且搜索在其中存储有标志“1”的条目。然后,如图12的(u)所示,对于包含标志“0”的组“1”中的缓存线,硬件30d不执行检查,并且如图12的(v)所示,仅检查在其中存储有标志“1”的组“A”中的缓存线。此后,如图12的(w)所示,硬件30d仅将在扇区中存储“1”的条目“50”中存储的数据回写到存储器17。因此,CPU12b可以在无需检查包括在缓存存储器12a中的所有缓存线的情况下,将在应用35指定的时间段内更新的数据回写到存储器17。
第二实施例的优点
如上所述,CPU 12b包括针对多个缓存线的每个组的概要扇区标志,该概要扇区标志指示是否在应用35指定的时间段内更新了数据。然后,如果发出刷新请求,则CPU 12b检查与指示更新了数据的概要扇区标志相关联的缓存线。
此后,从所检查的缓存线当中,CPU 12b将包含如下扇区标志的缓存线中的数据回写到存储器17至24:该扇区标志指示在应用35指定的时间段内更新了数据。因此,CPU 12b可以将在应用35指定的时间段内更新的数据回写到存储器17至24。而无需检查包括在缓存存储器12a中的所有缓存线。
[c]第三实施例
在第三实施例中,除了CPU 12和CPU 12b执行的功能之外,还将给出多核CPU的描述,该多核CPU对于每个核包括概要扇区标志,该概要扇区标志对于每组缓存线指示是否在应用35指定的时间段内执行更新。
图13是示出根据第三实施例的节点的功能配置的示意图。图13示出根据第三实施例的节点10o的功能配置。节点10o是包括在具有与第一实施例中的信息处理系统相同功能的信息处理系统1b中的节点。此外,具有与第一和第二实施例相同附图标记的、图13中示出的节点10o中的部件具有与第一和第二实施例中描述的部件相同的功能;因此,将省略其描述。在图13中示出的示例中,节点10o包括CPU 12d至15d。
CPU 12d包括缓存存储器12a和概要扇区标志12e。类似地,其它CPU 13d至15d分别包括缓存存储器13a至15a和概要扇区标志13e至15e。在下面的描述中,假设CPU 13d至15d具有与CPU 12d执行的功能相同的功能,因此,将省略其描述。
CPU 12d具有与根据第一实施例的CPU 12和根据第二实施例的CPU 12b执行的功能相同的功能。具体地,CPU 12d包括执行算术处理的多个核,并且通过使用每个核来执行算术处理。例如,CPU 12d包括四个核,即,核A至D。
此外,CPU 12d对于每个核包括多个标志,所述多个标志对于多个缓存线指示是否在应用35指定的时间段内执行了更新。如果核执行的应用35请求缓存刷新,则CPU 12d将在应用35指定的时间段内更新的数据回写到存储器17至24。
具体地,CPU 12d包括概要扇区标志12e。概要扇区标志12e是多核支持的概要扇区标志12c,并且包括针对每个核的标志,该标志对于每个缓存线指示是否在应用35指定的时间段内执行更新。下面,将参照图14描述概要扇区标志12e的示例。
图14是示出多核支持的概要扇区标志的示意图。图14示出了概要扇区标志12e和缓存存储器12a。在图14示出的示例中,缓存存储器12a在单个缓存线中包括多条路径“0”至“W”。此外,在图14中示出的示例中,CPU 12d包括四个核A至D。
此外,在图14中示出的示例中,缓存存储器12a包括缓存标签部和数据部。扇区、状态、以及地址被存储在缓存标签部的每条路径“0”至“W”中。此外,包括在缓存存储器12a中的缓存线被划分成多个组。例如,索引“1”至“32”分配在组“1”中,索引“B”至“B+31”分配在组“A”中,以及索引“M-31”至“M”分配在组“M”中。
概要扇区标志12e包括针对每个核的标志,该标志指示在每个核执行的应用35指定的时间段内更新的数据是否被存储在每个组的缓存线中。具体地,概要扇区标志12e包括指示是否在每个组中的缓存线中出现如下数据的标志:该数据在核A执行的应用35指定的时间段内、根据来自核A执行的应用35的请求而被更新。类似地,概要扇区标志12e包括指示是否在每个组中的缓存线中出现如下数据的标志:该数据在核B至C之一执行的应用35指定的时间段内、响应于来自核B至C之一执行的应用35的请求而被更新。
例如,包括概要扇区标志12e的CPU 12d在核A执行的应用35指定的时间段内,根据来自核A执行的应用35的请求来更新存储在组1中的缓存线中的数据。然后,CPU 12d从包括在概要扇区标志12e中的核A中的标志当中,将组1中的标志设置为“1”。
随后,CPU 12d在核D执行的应用35指定的时间段内,根据来自核D执行的应用35的请求来更新存储在组A中的缓存线中的数据。然后,CPU 12d从包括在概要扇区标志12e中的核D中的标志当中,将组A中的标志设置为“1”。如果核A执行的应用35请求缓存刷新,则CPU 12d检查概要扇区标志12e中的组A中的标志,并且识别出组1中的标志为“1”。因此,CPU 12d仅检查组1中的缓存线,而无需检查组A中的缓存线。
第三实施例的优点
如上所述,CPU 12d对于核A至D中的每个包括概要扇区标志12e,概要扇区标志12e指示在应用35指定的时间段内更新的数据是否被存储在每个组中的缓存线中。当在例如核A执行的应用35指定的时间段内、根据来自核A执行的应用35的请求来更新存储在组之一的缓存线中的数据时,CPU 12d执行下面的处理。即,对于核A,CPU 12d设置概要扇区标志,其指示在组1中的缓存线中出现更新后的数据。
然后,如果核A执行的应用35发出刷新请求,则CPU 12d检查核A中的概要扇区标志并且检查指示出现更新后的数据的概要扇区标志被设置的缓存线。然后,从所检查的缓存线当中,CPU 12d将更新后的数据回写到存储器17至24。
因此,即使包括多个核,CPU 12d也可以有效地执行缓存刷新。具体地,即使每个核包括共享缓存存储器,CPU 12d也可以独立地对于每个核执行缓存刷新。因此,即使CPU 12d包括多个核,CPU 12d也不执行不想要的缓存刷新,因此,CPU 12有效地执行缓存刷新,从而防止信息处理系统1b的性能退化。
[d]第四实施例
在第四实施例中,除了CPU 12、CPU 12b、CPU 12d执行的功能之外,还将给出如下CPU的描述:该CPU仅使用来自每个缓存线中包括的多个路径当中的特定路径中存储的数据作为缓存刷新目标。
图15是示出根据第四实施例的节点的功能配置的示意图。图15示出根据第四实施例的节点10p的功能配置。节点10p是包括在具有与第一实施例中的信息处理系统相同功能的信息处理系统1c中的节点。此外,具有与第一至第三实施例相同的附图标记的、图15中示出的节点10p中的部件具有与第一至第三实施例中描述的部件相同的功能;因此,将省略其描述。在图15中示出的示例中,节点10p包括多个CPU 12f至15f。
CPU 12f包括缓存存储器12a和概要扇区标志12c。类似地,其它CPU13d至15d分别包括缓存存储器13a至15a和概要扇区标志12c至15c。此外,与根据第三实施例的缓存存储器12a至15a类似,缓存存储器12a至15a中的每个包括多个缓存线“0”至“W”,并且在每个缓存线中存在多个路径。
包括在各个CPU 12f至15f中的概要扇区标志12c至15c与第二实施例中描述的概要扇区标志相同,然而,CPU 12f至15f中的每个还可包括在第三实施例中描述的概要扇区标志12e至15e。在以下描述中,CPU13f至15f具有与CPU 12f执行的功能相同的功能,因此,将省略其描述。
CPU 12f具有与根据第一实施例的CPU 12和根据第二实施例的CPU12b执行的功能相同的功能,并且具有以下功能。即,CPU 12f仅在特定路径中存储在应用35指定的时间段内更新的数据。然后,如果应用35发出刷新请求,则CPU 12f仅检查每个缓存线中的特定路径,并且识别设置有扇区标志的数据。然后,CPU 12f将所识别的数据回写到存储器17至24。
图16是示出用于将缓存刷新限制于特定路径的处理示例的示意图。例如,如果在应用35指定的时间段内执行更新,则CPU 12f在包括在缓存存储器12a中的缓存线之一的路径“0”中存储要更新的数据。此外,如图16的(z)所示,从路径“0”的缓存标签当中,CPU 12f在其中存储数据的缓存线中的缓存标签中存储扇区标志“1”、状态、以及地址。
如果应用发出刷新请求,则CPU 12f仅检查路径“0”的缓存标签,并且识别其中存储扇区标志“1”的缓存线。此后,从所识别的缓存线当中,CPU 12f将路径“0”的数据回写到存储器17至24。
第四实施例的优点
如上所述,缓存存储器12a包括多个缓存线,每个缓存线包括多个路径“0”至“W”。CPU 12f将在应用指定的时间段内更新的数据存储在缓存线之一的路径“0”中。当发出刷新请求时,CPU 12f仅检查每个缓存线中的路径“0”。此后,在检查路径“0”之后,CPU 12f将如下缓存线中的路径“0”中存储的数据回写到存储器17至24:该缓存线中存储指示更新数据的扇区标志。
因此,CPU 12f可以限制刷新的目标,因此,可以减少用于刷新的处理时间并改进信息处理系统1c的性能。此外,CPU 12f将存储在特定路径中的数据回写到存储器17至24。因此,例如,由于频繁地用于算术处理的数据(诸如没有被回写到存储器17至24的数据)存储在路径“1”至“W”中,因此CPU 12f可以使该数据免受缓存刷新。因此,CPU 12f可以改进算术处理的效率并且因此改进信息处理系统1c的性能。
[e]第五实施例
在第五实施例中,将给出如下CPU的描述:该CPU包括核、1级(L1)缓存、2级(L2)缓存、布置用于缓存线的扇区标志、以及布置用于每个核的概要扇区标志。
图17是示出根据第五实施例的CPU的功能配置的示意图。CPU 12g是包括在具有与第一实施例中的信息处理系统相同配置的信息处理系统1c中的CPU。与CPU 12类似地,CPU 12b、CPU 12d、CPU 12f、以及CPU 12g是布置在信息处理系统1d中包括的节点中的多个CPU之一。图17示出根据第五实施例的CPU 12g的功能配置。
在图17示出的示例中,CPU 12g连接到本地XB 16、存储器17、存储器18、以及PCIe交换机25。此外,CPU 12g包括核40至40b、扇区标识(ID)创建单元41至41b、L1缓存标签42至42b、L1缓存43至43b、以及转换旁视缓冲(translation lookaside buffer,TLB)44至44b。
此外,CPU 12g包括L2缓存访问控制器45、L2缓存标签46、L2缓存47、L2缓存概要扇区标志48、地址映射49、以及非缓存请求状态机50。此外,CPU 12g包括设置寄存器组51、刷新控制单元52、PCI控制单元53、目录控制单元54、侦听控制单元55、以及请求控制单元56。
核40a和40b具有与核40执行的功能相同的功能,并且扇区ID创建单元41a和41b具有与扇区ID创建单元41执行的功能相同的功能,因此,以下将省略其描述。此外,L1缓存标签42a和42b具有与L1缓存标签42执行的功能相同的功能,并且L1缓存43a和43b具有与L1缓存43执行的功能相同的功能,因此,以下将省略其描述。此外,TLB 44a和44b具有与TLB 44执行的功能相同的功能,因此,以下将省略其描述。
核40是通过使用存储在L1缓存43中的数据来执行算术处理的算术单元。扇区ID创建单元41根据从核40输出的关于寄存器的设置信息和指令代码来创建扇区ID,并且向L1缓存标签42输出所创建的ID。这里提到的扇区ID是指示是否在核40执行的应用指定的时间段内执行更新的信息。
L1缓存标签42是L1缓存43的标签数据,并且在其中存储L1缓存43中的缓存线中存储的数据的扇区ID、以及要替换的最近最少使用(LRU)信息、状态、地址。
L1缓存43是如下缓存存储器:其可以以高速被访问,并且将存储在存储器17、存储器18和L2缓存47中的部分数据缓存。此外,L1缓存43是专用于核40的主要缓存。例如,L1缓存43的容量对于指令区域和数据区域中的每个是64千字节。此外,TLB 44通过使用转换表将核40输出的虚拟地址转换为物理地址。
下面,将参照图18和19描述L1缓存标签42和L1缓存43。图18是示出L1缓存标签的示意图。在图18中示出的示例中,L1缓存标签42使用虚拟地址的索引(即,从“0000000”到“1111111”的低位7比特)作为索引。此外,对于每个索引,L1缓存标签42将标签数据(IF)存储在缓存指令的区域中,并且将标签数据存储在缓存数据(即,操作数(OP))的区域中。
此外,L1缓存标签42在其中存储对于每个索引的路径0至路径3的标签数据。此外,L1缓存标签在其中存储以下数据作为标签数据:Val(值);2比特状态[1:0];2比特扇区ID[1:0];作为逻辑地址的高位33比特的LA[46:14];以及作为校验比特的校验比特(CB)[7:0]。在以下描述中,假设状态“00”指示无效(I)、状态“01”指示共享(S)、状态“10”指示独占(E)、以及状态“11”指示修改(M)。
下面,将参照图19描述L1缓存43。图19是示出L1缓存的示意图。在图19中示出的示例中,与L1缓存标签42类似,L1缓存43包括缓存指令的区域和缓存数据的区域。包括在L1缓存43中的每个缓存线与逻辑地址中的每个索引相关联,并且具有四个路径,即,路径“0”至“3”。此外,128字节数据和16字节校验比特被存储在每个缓存线中的每个路径中。
下面,以下将参照图20详细描述核40、扇区ID创建单元41、L1缓存标签42、L1缓存43和TLB 44执行的处理。图20是示出根据第五实施例的扇区ID创建单元执行的处理的示意图。在图20中示出的示例中,扇区ID创建单元41包括ASI寄存器41c、扇区ID选择控制单元41d、以及扇区ID选择单元41e。
此外,在图20中示出的示例中,ASI寄存器41c在其中存储使用管理程序(HPV)的特权指令访问的扇区使能位(enable)和刷新使能位。此外,ASI寄存器41c在其中存储刷新扇区模式,该刷新扇区模式指示核40执行的应用指定的时间段的开始和结束。
如果核40将扇区标志置位,则核40在扇区使能位中存储“1”,然而,如果核40不将扇区标志置位,则核40在扇区使能位中存储“0”。当核40启用扇区刷新的功能时,核40在刷新使能位中存储“1”。相反,当核40禁用扇区刷新的功能时,核40在刷新使能位中存储“0”。此外,当核40执行扇区刷新时,核40在刷新扇区模式中存储“1”。当核40执行其它处理时,核40在刷新扇区模式中存储“0”。
刷新扇区模式被存储在可以由核40执行的应用访问的寄存器中。ASI寄存器41c在其中存储先前定义的2比特扇区ID。具体地,ASI寄存器41c在其中存储指示ID0的“00”、指示ID1的“01”、指示FL(刷新)的“11”、以及指示Def(默认)的“00”,来作为扇区ID。
例如,核40向ASI寄存器41c发出用于读取或存储ASI寄存器的命令(ASI寄存器读/写命令,ASI Reg R/W command)。命令在其中存储10比特地址(地址[11:2],Address[11:2])和4比特字节使能位(字节使能位[3:0],Byte Enable[3:0])。
如果核40请求ASI寄存器41c存储数据,则核40输出作为存储目标的32比特数据(ASI寄存器写入数据[31:0],ASI Reg Write Data[31:0])。相反,如果核40请求读取数据,则ASI寄存器41c向核40输出所读取的32比特数据(ASI寄存器读取数据[31:0],ASI Reg Read Data[31:0])。
此外,核40发出使用L1缓存请求作为字段的L1缓存请求,L1缓存请求进而使用“Request val(请求值)”、“Request ID(请求ID)”、“Code(代码)”、“Logic Address(逻辑地址)”、“Sector Sel(扇区Sel)”、以及“Store Data(存储数据)”作为字段。具体地,核40向L1缓存访问控制器57和扇区ID选择控制单元41d发出L1缓存请求。
“Request val(请求值)”是指示数据是请求的信息。“Request ID”是用于标识请求的8比特标识符。“Code”是指示请求的内容(诸如对于要存储的数据或要加载的数据的请求)的信息。“Logic Address”是作为请求目标的41比特虚拟地址。
此外,“Sector Sel”是指示扇区ID的信息,由扇区ID创建单元41请求该“Sector Sel”的创建,并且在该Sector Sel中存储例如“ID0”或“ID1”。“Store Data”是被添加到对存储数据的请求的信息,并且是存储在L1缓存43中的128字节数据。
此外,核40向非缓存请求状态机50发出NC请求,该NC请求是关于NC(非相干)空间的读取请求或写入请求。具体地,核40发出NC请求,其包含“Req val(请求值)”、“Request ID”、“Code”、“Logic Address(LA)”、“Byte Enable(BE)”以及“Store Data”作为字段。
“Req val”是指示数据是请求信号的信息。“Request ID”是用于识别请求的8比特信息。“Code”是指示请求的内容的信息。例如,“Code”在其中存储指示数据被存储的“Store”和指示数据被读取的“Load(加载)”。
此外,“Logic Address”是要请求的48比特虚拟地址。“Byte Enable”是指示使能的129比特信息。“Store Data”是当请求类型是“Store”时存储的128字节数据。
ASI寄存器41c向扇区ID选择控制单元41d输出扇区使能位、刷新使能位和刷新扇区模式的值。此外,ASI寄存器41c向扇区ID选择单元41e输出扇区ID。扇区ID选择控制单元41d获取核40发出的L1缓存请求,并且获取L1缓存请求中的Sector Sel的值。扇区ID选择控制单元41d从ASI寄存器41c获取扇区使能位、刷新使能位和刷新扇区模式的值。
如果扇区使能位的值为“0”,则扇区ID选择控制单元41d指示扇区ID选择单元41e选择Def(00)。如果扇区使能位、刷新使能位和刷新扇区模式的值都为“1”并且L1缓存请求的内容是数据的存储,则扇区ID选择控制单元41d指示扇区ID选择单元41e输出FL(11)。具体地,对于在应用指定的时间段内更新的数据,扇区ID选择控制单元41d指示扇区ID选择单元41e输出扇区ID“11”。
此外,如果扇区使能位、刷新使能位和刷新扇区模式是“1”并且如果L1缓存请求的内容不是数据的存储,则扇区ID选择控制单元41d执行下述处理。此外,如果扇区使能位为“1”并且如果刷新使能位和刷新扇区模式之一或两者是“0”,则如下所述扇区ID选择控制单元41d执行相同处理。
即,扇区ID选择控制单元41d识别L1缓存请求中的Sector Sel的值。如果Sector Sel的值为“ID1”,则扇区ID选择控制单元41d指示扇区ID选择单元41e选择ID1。如果“Sector Sel”的值为“ID0”,则扇区ID选择控制单元41d指示扇区ID选择单元41e选择ID0。
扇区ID选择单元41e从ASI寄存器41c获取每个扇区ID。然后,扇区ID选择单元41e向L1缓存访问控制器57输出扇区ID选择控制单元41d通知的扇区ID。
L1缓存访问控制器57从核40获取L1缓存请求。如果L1缓存请求是对于要读取的数据的请求,则L1缓存访问控制器51通过使用L1缓存标签42读取来自L1缓存43的数据。
此外,如果要读取的数据没有存储在L1缓存43中并且因此出现缓存未命中,则L1缓存访问控制器57执行下面的处理。即,L1缓存访问控制器57经由L1缓存-L2缓存访问总线向L2缓存访问控制器45传送对于数据的请求。
当L1缓存访问控制器57向L2缓存访问控制器45传送对于数据的请求时,L1缓存访问控制器57通过使用TLB 44来将逻辑地址转换成物理地址。然后,L1缓存访问控制器57向L2缓存访问控制器45传送转换后的物理地址。
然后,L1缓存访问控制器57从L2缓存访问控制器45获取扇区ID连同数据。L1缓存访问控制器57将所获取的数据存储在L1缓存43中,并且将所获取的扇区ID存储在L1缓存标签42中而无需改变扇区ID。
此后,L1缓存访问控制器57在L1缓存43中搜索要读取的数据。然后,因为出现缓存命中,因此L1缓存访问控制器57获取数据并且将所获取的数据传送到核40作为L1缓存响应。L1缓存响应包含指示响应的“Req val”、读取请求的“Request ID”、以及与读取的128字节数据相对应的“Read Data”作为字段。
此外,如果L1缓存请求指示对于要存储的数据的请求,则L1缓存访问控制器57从扇区ID创建单元41获取扇区ID。然后,L1缓存访问控制器57将数据存储在L1缓存43中,并且还将从扇区ID创建单元41获取的扇区ID存储在L1缓存标签42中。
此外,当替换存储在L1缓存43中的数据时,L1缓存访问控制器57向L2缓存访问控制器45传送包含在标签数据中的扇区ID连同存储在L1缓存43中的数据。此外,如果更新存储在L1缓存43中的数据并且改变扇区ID,则L1缓存访问控制器57向L2缓存访问控制器45传送改变后的扇区ID。
此外,如果稍后将描述的刷新控制单元52执行刷新,则L1缓存访问控制器57向L2缓存访问控制器45传送包含在标签数据中的扇区ID连同存储在L1缓存43中的数据。然后,L2缓存访问控制器45将从L1缓存访问控制器57获取的扇区ID存储在L2缓存标签46中,并且将数据存储在L2缓存47中。
如上所述,对于在应用指定的时间段内更新的数据,L1缓存访问控制器57将扇区ID“11”作为标签数据存储在L1缓存标签42中,其中,扇区ID“11”指示在应用指定的时间段内执行了更新。如果执行替换或刷新,则L1缓存访问控制器57向L2缓存访问控制器45传送扇区ID“11”连同数据,其中,扇区ID“11”指示在应用指定的时间段内执行了更新。
如果L1缓存访问控制器57确定L1缓存请求是对于读取的请求,则L1缓存访问控制器57向L1缓存标签42发出作为读取请求的“Read Req(读取请求)”。此时,指示请求是读取请求的“Val”和要读取的逻辑地址“LA[46:7]”存储在“Read Req”中。
此外,如果L1缓存访问控制器57确定请求包含L1缓存请求,则L1缓存访问控制器57执行下面的处理。即,L1缓存访问控制器57发出作为存储请求的“Write(写入)”。此时,要写入的数据、从扇区ID创建单元41接收的扇区ID、路径ID、以及指示数据是否是指令数据的信息被存储在“Write”中。
此外,通过在L1缓存和L2缓存之间发出请求或响应,L1缓存访问控制器57与L2缓存访问控制器45一起执行对于扇区ID和数据的传送的请求。
当L1缓存标签42从L1缓存访问控制器接收“Read Req”时,L1缓存标签42确定所获取的逻辑地址的高位33比特是否被存储在与所获取的逻辑地址的低位7比特匹配的索引的标签数据中。如果存在包含所获取的逻辑地址的高位33比特的标签数据,则L1缓存标签42确定出现缓存命中。相反,如果不存在包含所获取的逻辑地址的高位33比特的标签数据,则L1缓存标签42确定出现缓存未命中。
然后,L1缓存标签42向L1缓存访问控制器57发出与响应相对应的“Read Rep(读取响应)”。此时,“Read Rep”在其中包含指示是否出现缓存命中的信息、指示数据是否是指令数据的信息、路径ID、以及扇区ID。此外,如果出现缓存命中,则L1缓存标签42向L1缓存43发出读取请求,并且允许L1缓存访问控制器57向L1缓存43输出要读取的数据。
此外,L1缓存标签42从L1缓存访问控制器57接收作为写入请求的“Write”。然后,L1缓存标签42将标签数据存储在写入请求的路径ID和扇区ID指示的路径中,并且将数据存储在L1缓存43中。
如果L1缓存标签42在其中存储关于要写入的虚拟地址的数据,则L1缓存标签42改变标签数据的状态,并且将标签数据的扇区ID改变为从L1缓存访问控制器57获取的扇区ID。具体地,L1缓存标签42在标签数据中存储如下扇区ID:该扇区ID指示在核40执行的应用指定的时间段内执行了更新。
此外,当控制对UC区域的访问时以及当从核40接收NC请求时,非缓存请求状态机50经由PICe等执行处理。例如,如果核40至40b中的每个获取NC请求(其是对于关于诸如HDD 29的I/O装置要存储或者要获取的数据的请求),则非缓存请求状态机50向PCI控制单元53发出所获取的NC请求。然后,如果非缓存请求状态机50从PCI控制单元53获取对该请求的响应,则非缓存请求状态机50向核40至40b传送所获取的响应作为NC响应。
这里将通过返回参照图17给出描述。L2缓存访问控制器45是用于L2缓存标签46或L2缓存47的访问控制器,并且是用于访问L2缓存标签46或L2缓存47的途径。通过执行与L1缓存访问控制器57执行的处理相同的处理,L2缓存访问控制器45控制存储在L2缓存47中的数据。L2缓存访问控制器45具有执行使相同地址序列化的序列化处理的功能。
L2缓存标签46在其中存储对于L2缓存47的、与存储在L1缓存标签42中相同的标签数据。L2缓存47是核40至40b共享的二级缓存存储器。此外,L2缓存47包括被划分成多个组的多个缓存线。
L2缓存概要扇区标志48对于每个核具有如下标志:该标志用来确定在核40至40b中的每个执行的应用指定的时间段内更新的数据是否被存储在每个组的缓存线中。具体地,L2缓存概要扇区标志48是与根据第三实施例的概要扇区标志12e相同的标志。
下面,将参照图21描述L2缓存标签46、L2缓存47、以及L2缓存概要扇区标志48的关系。图21是示出L2缓存标签、L2缓存、以及L2缓存概要扇区标志的示意图。如图21所示,与概要扇区标志12e类似,L2缓存概要扇区标志48对于核40至40b中的每个包括如下标志:该标志指示应用指定的时间段内更新的数据是否出现在缓存线的每个组中。
具体地,对于通过将包括在L2缓存47中的每个缓存线分组成“0”至“63”而获得的每个组,以下标志被存储在L2缓存概要扇区标志48中。即,L2缓存概要扇区标志48在其中存储如下标志:该标志对于核40至40b中的每个指示在核40至40b中的每个执行的应用指定的时间段内更新的数据是否出现在缓存线的每个组中。
此外,在图21中示出的示例中,L2缓存标签46和L2缓存47包括多个缓存线,每个缓存线与物理地址的低位13比特指示的索引相关联。在图21中示出的示例中,以十进制表示索引的值。此外,L2缓存标签46和L2缓存47对于每个缓存线包括具有路径ID“0”至“15”的路径。
此外,与L1缓存标签42类似,“Val”、状态、地址的高位27比特、扇区ID以及CB作为标签数据被存储在L2缓存标签46中的每个缓存线中的每个路径中。此外,与L1缓存43类似,128字节数据和16字节数据被存储在L2缓存47中的每个缓存线中的每个路径中。
这里将通过返回参照图17给出说明。地址映射49以关联的方式,在其中存储要请求的物理地址和访问物理地址所指示的存储区域的CPU的标识符,并且然后将物理地址转换成CPU的标识符。具体地,如果CPU12g向连接到另一CPU的存储器发出访问的请求,则地址映射49根据要访问的物理地址识别出作为请求目的地的CPU的标识符。然后,地址映射49向请求控制单元56通知作为请求目的地的CPU的标识符。
设置寄存器组51包含执行CPU 12g的各种设置的多个寄存器。刷新控制单元52由于来自核40到40b中的任意一个的指令而对L2缓存47执行缓存刷新。具体地,刷新控制单元52执行用于将存储在L2缓存47中的数据回写到存储器17和18的处理。此外,如果要回写的数据是从不同于CPU 12g的CPU访问的存储器缓存的数据,则刷新控制单元52将数据回写到源存储器。
PCI控制单元53是使CPU与高速PCI(PCI express)连接的根复合体装置。目录控制单元54使用NUMA技术控制存储器访问。此外,如果目录控制单元54使用例如直接存储器访问(DMA)获得存储器请求,则目录控制单元54通过使用存储在存储器17和存储器18中的目录信息来保持缓存相干性。例如,通过使用侦听控制单元55,目录控制单元54向其它CPU发出侦听,或者响应于另一CPU发出的侦听。
如果侦听控制单元55经由本地XB 16接收来自不同于CPU 12g的CPU之一的侦听,则侦听控制单元55检查L2缓存47并且回复检查结果作为响应。此外,如果目录控制单元54请求侦听控制单元55发出侦听,则侦听控制单元55向不同于CPU 12g的CPU传送侦听。例如,如果存储在L2缓存47中的要侦听的数据的状态是“M”,则侦听控制单元55传送缓存数据作为对侦听的响应。
当在L2缓存47中出现缓存未命中时,请求控制单元56管理从向其它CPU发出请求到从其它CPU接收响应的处理。例如,请求控制单元56向地址映射49输出物理地址,并且获取与请求目的地对应的CPU的标识符。然后,请求控制单元56通过使用所获取的标识符作为目的地来向本地XB 16输出请求。
此外,请求控制单元56包括多个条目,每个条目保存要请求的地址。如果从核40到40b之一向当前正被处理的物理地址发出请求,则请求控制单元56将请求存储在条目中,以便允许等待随后请求。然后,如果请求控制单元56发出存储在条目中的请求,则请求控制单元56将其中存储有请求的条目的标识符附接于该请求并且然后输出该请求。
本地XB 16是用于互连的路由器,并且向与CPU的标识符相关联的目的地传送请求。此外,本地XB 16对要传送的请求分组或者附接循环冗余校验(CRC)值。
下面,将参照图22描述L2缓存访问控制器45如何传送和接收信号的示例。图22是示出根据第五实施例的L2缓存访问控制器传送和接收信号的示意图。例如,在图22中示出的示例中,L2缓存访问控制器45从L1缓存访问控制器57接收在L1缓存和L2缓存之间传送的请求。
然后,L2缓存访问控制器45向L2缓存标签46发出L2缓存读取请求并且从L2缓存标签46接收L2缓存读取响应。然后,如果L2缓存读取响应中包含缓存命中,则L2缓存访问控制器45从L2缓存47获取读取数据并且从L2缓存标签46获取扇区ID。然后,L2缓存访问控制器45向L1缓存访问控制器57输出所获取的读取数据和扇区ID作为响应。
此外,如果L2缓存读取响应中包含缓存未命中,则L2缓存访问控制器45向请求控制单元56请求发出请求。然后,请求控制单元56发出请求并且获取被请求的数据。
例如,请求控制单元56经由目录控制单元54从存储器17和18获取数据。此外,例如,请求控制单元56经由本地XB 16向不同于CPU 12g的CPU发出请求,并且从连接到不同于CPU 12g的CPU的存储器中的共享区域获取数据。然后,请求控制单元56向L2缓存访问控制器45输出所获取的数据。
此外,如果L2缓存访问控制器45从请求控制单元56获取数据,则L2缓存访问控制器45向L2缓存标签46发出L2缓存写入请求,并且向L2缓存47传送写入数据。具体地,L2缓存访问控制器45将新数据存储在L2缓存47中。
如果出现L1缓存的替换并且如果L2缓存访问控制器45获取从L1缓存输出的数据,则L2缓存访问控制器45向L2缓存标签46发出L2缓存写入请求,并且更新输出数据。此外,L2缓存访问控制器45接收从L1缓存输出的数据连同扇区ID,并且将所接收的扇区ID存储在L2缓存标签46中。
此外,当L2缓存访问控制器45将数据存储在L2缓存47中时,L2缓存访问控制器45执行下面的处理。即,L2缓存访问控制器45根据要存储的数据的扇区ID来将概要扇区标志存储在L2缓存概要扇区标志48中。
具体地,如果扇区ID为“11”,则L2缓存访问控制器45将概要扇区标志“1”存储在L2缓存概要扇区标志48中,其中,概要扇区标志“1”指示在包含其中存储有数据的缓存线的组中出现更新后的数据。
此外,当存储概要扇区标志时,L2缓存访问控制器45通过使用任意方法来识别执行更新数据的应用的核,并且然后存储所识别的核的概要扇区标志。例如,L2缓存访问控制器45还可通过使用请求ID来识别执行更新数据的应用的核。此外,L2缓存访问控制器45通过使用存储在LRU59中的LRU来选择要替换的缓存线。
当获取核40至40b之一发出的刷新请求时,非缓存请求状态机50指示刷新控制单元52执行刷新。然后,刷新控制单元52从L2缓存概要扇区标志48获取概要扇区标志,并且向L2缓存访问控制器45发出关于与概要扇区标志相关联的缓存线的刷新请求。
具体地,从包括在L2缓存概要扇区标志48中的标志当中,刷新控制单元52检查发出刷新请求的核的概要扇区标志,并且搜索在其中存储标志“1”的组。然后,刷新控制单元52顺序地向L2缓存访问控制器45发出关于检测到标志“1”的组中的缓存线的刷新请求。如果刷新控制单元52结束刷新请求的发出,则刷新控制单元52根据作为刷新请求目标的缓存线的组以及发出刷新请求的核两者,来重置将L2缓存概要扇区标志48。
相反,L2缓存访问控制器45根据从刷新控制单元52接收的刷新请求,执行L2缓存47的缓存刷新。具体地,L2缓存访问控制器45检查作为刷新请求目标的缓存线中的标签数据,并且在每个路径中搜索扇区ID为“11”且状态为“M”的条目。如果L2缓存访问控制器检测到扇区ID为“11”且状态为“M”的条目,则L2缓存访问控制器对所检测的条目执行刷新。
具体地,L2缓存访问控制器45从L2缓存47获取扇区ID为“11”且状态为“M”的条目的数据,并且将状态更新为“I”。然后,L2缓存访问控制器45将所获取的数据传送到目录控制单元54,并请求将数据回写到存储器17和18或回写到连接到其它CPU的存储器。
如果目录控制单元54将数据回写到不同于连接到CPU 12g的存储器17和18的存储器时,与请求控制单元56类似,目录控制单元54通过使用地址映射49,来识别与数据被回写到的存储器连接的CPU。然后,目录控制单元54经由本地XB 16向所识别的CPU传送数据。
此外,基于目录信息,目录控制单元54请求侦听控制单元55发出侦听,并且允许L2缓存访问控制器45或其它CPU发出侦听。当L2缓存访问控制器45获取由侦听控制单元55发出的侦听或由请求控制单元56从其它CPU接收的侦听时,L2缓存访问控制器45输出存储在L2缓存47中的数据。
此时,根据来自核40至40b的请求,非缓存请求状态机50在扇区最大值寄存器58中设置要刷新的路径数的最大值。具体地,非缓存请求状态机50在扇区最大值寄存器58中并且对于每个扇区ID值,设置可以在每个缓存线中的路径中登记的标签数据的条数。
如果L2缓存访问控制器45存储新数据,并且因此如果其总量超过可以登记的数据量,则L2缓存访问控制器45根据要存储的数据的扇区ID值来执行替换。例如,如果要存储的新数据的扇区ID为“11”,则L2缓存访问控制器45替换扇区ID“01”或扇区ID“10”的数据。此外,如果要存储的新数据的扇区ID为“01”,则L2缓存访问控制器45替换扇区ID“01”或扇区ID“00”的数据。
核40至40b、扇区ID创建单元41至41b、TLB 44至44b、L2缓存访问控制器45、L2缓存概要扇区标志48、以及非缓存请求状态机是电子电路。此外,刷新控制单元52、PCI控制单元53、目录控制单元54、侦听控制单元55、请求控制单元56、以及L1缓存访问控制器57是电子电路。这里使用的电子电路的示例包括诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA)的集成电路、中央处理单元(CPU)、或微处理单元(MPU)。
此外,L1缓存标签42至42b、L1缓存43至43b、L2缓存标签46、L2缓存47、以及LRU 59是存储装置,诸如包括随机存取存储器(RAM)和闪存(flash memory)的半导体存储器装置。设置寄存器组51和扇区最大值寄存器58是寄存器。
下面,将参照图23描述通过扇区ID创建单元41进行的、用于创建存储在L1缓存标签42中的扇区ID的处理的流程。图23是示出用于创建存储在L1缓存标签中的扇区ID的处理的流程的流程图。
例如,扇区ID创建单元41确定扇区使能位是否是“1”(步骤S101)。如果扇区使能位不是“1”(步骤S101的“否”),即,如果没有执行使用扇区标志的刷新,则扇区ID创建单元41将扇区ID设置为“00”(步骤S102),并且结束处理。相反,如果扇区使能位是“1”(步骤S101的“是”),则扇区ID创建单元41确定刷新使能位是否是“1”(步骤S103)。
如果刷新使能位不是“1”(步骤S103的“否”),则扇区ID创建单元41确定扇区选择器是否是“1”(步骤S104)。如果扇区选择器不是“1”(步骤S104的“否”),则扇区ID创建单元41将扇区ID设置为“00”(步骤S105),并且结束处理。相反,如果扇区选择器是“1”(步骤S104的“是”),则扇区ID创建单元41将扇区ID设置为“01”(步骤S106),并且结束处理。
此外,如果扇区ID创建单元41确定刷新使能位是“1”(步骤S103的是),则扇区ID创建单元41确定刷新扇区模式是否是“1”(步骤S107)。如果刷新扇区模式是“1”(步骤S107的“是”),则扇区ID创建单元41确定L1缓存请求的Code是否是“Store”(步骤S108)。
此外,如果Code是“Store”(步骤S108的“是”),则扇区ID创建单元41将扇区ID设置为“11”(步骤S109),并且结束处理。相反,如果刷新扇区模式不是“1”(步骤S107的“否”),并且如果Code不是“Store”(步骤S108的“否”),则扇区ID创建单元41执行步骤S104处的处理。
下面,将参照图24描述L1缓存访问控制器57执行的、用于登记/更新L1缓存标签42的扇区ID的处理的流程。图24是示出用于登记/更新L1缓存的扇区ID的处理的流程的流程图。例如,L1缓存访问控制器57通过使用L1缓存标签42搜索L1缓存,并且确定是否出现L1缓存命中(步骤S201)。
如果L1缓存访问控制器57确定出现了L1缓存命中(步骤S201的“是”),则L1缓存访问控制器57读取命中条目的扇区ID(步骤S202)。然后,L1缓存访问控制器57确定所读取的扇区ID是否是“11”(步骤S203)。如果扇区ID是“11”(步骤S203的“是”),则L1缓存访问控制器57将扇区ID更新为“11”(步骤S204),并且结束处理。
相反,如果所读取的扇区ID不是“11”(步骤S203的“否”),则L1缓存访问控制器57确定扇区ID创建单元41创建的扇区ID是否是“11”(步骤S205)。如果所创建的扇区ID是“11”(步骤S205的“是”),则L1缓存访问控制器57向L2缓存访问控制器45传送扇区ID改变请求(步骤S206)。
此外,当L1缓存访问控制器57从L2缓存访问控制器45接收改变请求完成通知时(步骤S207),L1缓存访问控制器57将扇区ID更新为“11”(步骤S204),并且结束处理。此外,如果所创建的扇区ID不是“11”(步骤S205的“否”),则L1缓存访问控制器57确定所创建的扇区ID是否是“00”(步骤S208)。
此外,如果所创建的扇区ID是“00”(步骤S208的“是”),则L1缓存访问控制器57确定所创建的扇区ID是否与所读取的扇区ID匹配(步骤S209)。如果所创建的扇区ID与所读取的扇区ID匹配(步骤S209的“是”),则L1缓存访问控制器57将扇区ID更新为“00”(步骤S210),并且结束处理。
如果所创建的扇区ID与所读取的扇区ID不匹配(步骤S209的“否”),则L1缓存访问控制器57向L2缓存访问控制器45传送扇区ID改变请求(步骤S211)。此外,当L1缓存访问控制器57从L2缓存访问控制器45接收改变请求完成通知时(步骤S212),L1缓存访问控制器57将扇区ID更新为“00”(步骤S210),并且结束处理。
如果所创建的扇区ID不是“00”(步骤S208中的“否”),则L1缓存访问控制器57确定所创建的扇区ID是否与所读取的扇区ID匹配(步骤S213)。如果所创建的扇区ID与所读取的扇区ID匹配(步骤S213的“是”),则L1缓存访问控制器57将扇区ID更新为“01”(步骤S214),并且结束处理。
相反,如果所创建的扇区ID与所读取的扇区ID不匹配(步骤S213的“否”),则L1缓存访问控制器57向L2缓存访问控制器45传送扇区ID改变请求(步骤S215)。此外,当L1缓存访问控制器57从L2缓存访问控制器45接收改变请求完成通知时(步骤S216),L1缓存访问控制器57将扇区ID更新为“01”(步骤S214),并且结束处理。
此外,如果没有出现L1缓存命中(步骤S201的“否”),则L1缓存访问控制器57向L2缓存访问控制器45发出补充请求(步骤S217)。然后,L1缓存访问控制器57获取包含在响应中的扇区ID(步骤S218)。然后,L1缓存访问控制器57确定从响应中获取的扇区ID是否是“00”(步骤S219)。
此时,如果从响应获取的扇区ID是“00”(步骤S219的“是”),则L1缓存访问控制器57登记扇区ID“00”(步骤S220),并且结束处理。相反,如果从响应获取的扇区ID不是“00”(步骤S219的“否”),则L1缓存访问控制器57确定从响应获取的扇区ID是否是“01”(步骤S221)。
如果从响应获取的扇区ID是“01”(步骤S221的“是”),则L1缓存访问控制器57登记扇区ID“01”(步骤S222),并且结束处理。相反,如果从响应获取的扇区ID不是“01”(步骤S221的“否”),则L1缓存访问控制器57登记扇区ID“11”(步骤S223),并且结束处理。具体地,L1缓存访问控制器57在不进行任何处理的情况下登记从L2缓存访问控制器45接收的扇区ID。
通过执行图23中示出的处理,L1缓存访问控制器57创建指示是否在应用执行的时间段内更新数据的扇区ID,并且通过执行图24中示出的处理,L1缓存访问控制器57登记扇区ID。因此,如图25所示,L1缓存访问控制器57使登记在L1缓存标签42中的扇区ID移位。
图25是示出登记在L1缓存标签中的扇区ID的移位的示意图。在图25中示出的示例中,扇区ID“00”、“01”以及“11”中的任意一个被登记在未定义(空的)的扇区ID中,并且因此扇区ID可以移位到“00”、“01”或者“11”。此外,如果执行缓存替换或者如果状态改变为无效,则每个扇区ID值变为未定义。
此外,扇区ID“00”或扇区ID“01”根据要更新的扇区ID值而移位到扇区ID“00”、“01”以及“11”之一。然而,如果扇区ID值变成“11”,则除了在替换或状态无效的情况下,扇区ID值不会移位。因此,CPU 12g必定可以刷新一次扇区ID变成“11”的数据。
下面,将参照图26描述用于登记L2缓存的扇区ID的处理的流程。图26是示出用于登记L2缓存的扇区ID的处理的流程的流程图。
例如,L2缓存访问控制器45通过使用L2缓存标签46搜索L2缓存,并且确定是否出现L2缓存命中(步骤S301)。如果L2缓存访问控制器45确定出现L2缓存命中(步骤S301的“是”),则L2缓存访问控制器45读取命中条目的扇区ID(步骤S302)。
然后,L2缓存访问控制器45确定所读取的扇区ID是“00”还是“01”(步骤S303)。如果扇区ID是“00”或者如果扇区ID是“01”(步骤S304),则L2缓存访问控制器45确定扇区ID是否是“00”(步骤S304)。
如果扇区ID是“00”(步骤S304的“是”),则L2缓存访问控制器45将所读取的扇区ID更新为“00”(步骤S305)。相反,如果扇区ID不是“00”(步骤S304的“否”),则L2缓存访问控制器45确定扇区ID是否是“01”(步骤S306)。如果扇区ID是“01”(步骤S306的“是”),则L2缓存访问控制器45将所读取的扇区ID更新为“01”(步骤S307)。
相反,如果扇区ID不是“01”(步骤S306的“否”),则L2缓存访问控制器45将所读取的扇区ID更新为“11”(步骤S308)。此外,如果所读取的扇区ID不是“00”,也不是“01”(步骤S303的“否”),则L2缓存访问控制器45将所读取的扇区ID更新为“11”(步骤S308)。
此外,如果没有出现L2缓存命中(步骤S301的“否”),则L2缓存访问控制器45确定要搜索的数据的本地地址(home address)是否是CPU12g的地址(步骤S309)。如果要搜索的数据的本地地址是CPU 12g的地址(步骤S309的“是”),则L2缓存访问控制器45向目录控制单元54发出数据补充请求(步骤S310)。
相反,如果要搜索的数据的本地地址不是CPU 12g的地址(步骤S309的“否”),则L2缓存访问控制器45向其它CPU发出数据补充请求(步骤S311)。然后,当L2缓存访问控制器45接收数据补充响应时(步骤S312),L2缓存访问控制器45确定与数据一起接收的扇区ID是否是“00”(步骤S313)。
如果所接收的扇区ID是“00”(步骤S313的“是”),则L2缓存访问控制器45将所接收的扇区ID更新为“00”(步骤S314),并且结束处理。相反,如果所接收的扇区ID不是“00”(步骤S313的“否”),则L2缓存访问控制器45确定所接收的扇区ID是否是“01”(步骤S315)。
如果所接收的扇区ID是“01”(步骤S315的“是”),则L2缓存访问控制器45将所接收的扇区ID更新为“01”(步骤S316)。相反,如果所接收的扇区ID不是“01”(步骤S315的“否”),则L2缓存访问控制器45将所接收的扇区ID更新为“11”(步骤S317)。
此后,如果L2缓存访问控制器45更新扇区ID(步骤S305、S307、S308、S314、S316、以及S317),则L2缓存访问控制器45执行下面的处理。即,L2缓存访问控制器45向L1缓存访问控制器57回复更新后的扇区ID作为响应(步骤S318),并且结束处理。
CPU 12g具有与根据第一实施例的CPU 12执行的功能相同的功能。因此,CPU 12g也可以使用连接到CPU 12g的存储器17和18的部分作为共享存储器区域,并且仅使用共享存储器区域作为刷新的目标。因此,作为图26中示出的L2缓存访问控制器45执行的处理的变型,将给出当仅对共享存储器区域执行刷新时L2缓存访问控制器45执行的处理的描述。
图27是示出用于仅对共享存储器区域刷新的处理的流程的流程图。从图27中示出的处理当中,步骤S301至S318执行的处理与图26中示出的步骤S301至S318执行的处理相同,因此,将省略其描述。
例如,如果出现缓存命中的条目的扇区ID不是“01”(步骤S306的“否”),则L2缓存访问控制器45执行下面的处理。即,L2缓存访问控制器45确定出现缓存命中的条目的数据是否是从不同于存在CPU 12g的节点的节点缓存的数据(步骤S319)。
如果缓存命中数据不是其它节点的数据(步骤S319的“否”),则L2缓存访问控制器45将扇区ID更新为“00”(步骤S305)。相反,如果缓存命中数据是其它节点的数据(步骤S319的“是”),则L2缓存访问控制器45将扇区ID更新为“11”(步骤S308)。
此外,如果补充数据的扇区ID不为“01”(步骤S315的“否”),则L2缓存访问控制器45确定数据是否从其它节点缓存(步骤S320)。如果L2缓存访问控制器45确定数据不是从其它节点缓存(步骤S320的“否”),则L2缓存访问控制器45将扇区ID更新为“00”(步骤S314)。相反,如果L2缓存访问控制器45确定数据从其它节点缓存(步骤S320的“是”),则L2缓存访问控制器45将扇区ID更新为“11”(步骤S317)。
如上所述,L2缓存访问控制器45仅对从其它节点缓存的数据执行刷新,并且不对从存在CPU 12g的节点(在下文中,被成为其自己的节点)缓存的数据执行刷新。具体地,在信息处理系统1d中,即使CPU 12g对从其自己的节点缓存的数据执行刷新,当其自己的节点出故障时,也不执行使用经受刷新的数据的恢复。因此,通过仅对从其它节点缓存的数据执行刷新,CPU 12g可以更有效地执行刷新处理。
下面,将参照图28描述用于在要刷新的路径具有上限时登记扇区ID的处理的流程。图28是示出用于在要刷新的路径具有上限时登记扇区ID的处理的流程的流程图。
在图28中示出的示例中,MAX 00表示可以登记的具有扇区ID“00”的数据的量,MAX 01表示可以登记的具有扇区ID“01”的数据的量,以及MAX 11表示可以登记的具有扇区ID“11”的数据的量。此外,在图28中示出的示例中,NUM 00表示当前登记的具有扇区ID“00”的数据的量,NUM 01表示当前登记的具有扇区ID“01”的数据的量,以及NUM 11表示当前登记的具有扇区ID“11”的数据的量。MAX 01和MAX11是存储在扇区最大值寄存器58中的值。
例如,L2缓存访问控制器45确定要存储的数据的扇区ID是否为“11”(步骤S401)。如果扇区ID为“11”(步骤S401的“是”),则L2缓存访问控制器45确定MAX 11的值是否与NUM 11的值相同(步骤S402)。
如果MAX 11的值与NUM 11的值相同(步骤S402的“是”),则L2缓存访问控制器45将数据登记在扇区ID为“11”的路径的任意之一中(步骤S403)并且结束处理。相反,如果MAX 11的值与NUM 11的值不相同(步骤S402的“否”),则L2缓存访问控制器45确定路径是满的(步骤S404)。
如果所有路径是满的(步骤S404的“是”),则L2缓存访问控制器45确定MAX 00是否等于或小于NUM 00(步骤S405)。如果MAX 00等于或小于NUM 00(步骤S405的“是”),则L2缓存访问控制器45将数据登记在当前扇区ID为“00”的路径的任意之一中(步骤S406),并且结束处理。
相反,如果MAX 00大于NUM 00(步骤S405的“否”),则L2缓存访问控制器45将数据登记在当前扇区ID为“01”的路径的任意之一中(步骤S407),并且结束处理。此外,如果并不是所有路径全满(步骤S404的“否”),则L2缓存访问控制器45将数据登记在空路径中(步骤S408),并且结束处理。
此外,如果扇区ID不是“11”(步骤S401的“否”),则L2缓存访问控制器45确定是否所有路径都为满的(步骤S409)。如果并不是所有路径全满(步骤S409的“否”),则L2缓存访问控制器45将数据登记在空路径中(步骤S408),并且结束处理。
此外,如果所有路径都是满的(步骤S409的“是”),则L2缓存访问控制器45确定扇区ID是否为“01”(步骤S410)。如果扇区ID为“01”(步骤S410的“是”),则L2缓存访问控制器45确定MAX 01是否等于或小于NUM 01(步骤S411)。
如果MAX 01等于或小于NUM 01(步骤S411的“是”),则L2缓存访问控制器45将数据登记在当前扇区ID为“01”的路径的任意之一中(步骤S412),并且结束处理。相反,如果MAX 01大于NUM 01(步骤S411的“否”),则L2缓存访问控制器45将数据登记在当前扇区ID为“00”的路径的任意之一中(步骤S413),并且结束处理。
此外,如果扇区ID不是“01”(步骤S410的“否”),则L2缓存访问控制器45确定MAX 00是否等于或小于NUM 00(步骤S414)。如果MAX 00等于或小于NUM 00(步骤S414的“是”),则L2缓存访问控制器45将数据登记在当前扇区ID为“00”的路径的任意之一中(步骤S413)并且结束处理。相反,如果MAX 00大于NUM 00(步骤S414的“否”),则L2缓存访问控制器45将数据登记在当前扇区ID为“01”的路径的任意之一中(步骤S415),并且结束处理。
如上所述,对于扇区ID为“11”的数据,L2缓存访问控制器45设置可以登记的路径的最大数量。如果路径数超过最大数量,则L2缓存访问控制器45替换数据。此外,如果不存在空路径,则L2缓存访问控制器45替换扇区ID超过上限的数据。
此外,对于要刷新的数据,L2缓存访问控制器45还可通过积极地(actively)替换数据来将数据回写到存储器。因此,下面,将参照图29描述L2缓存访问控制器45执行的处理的变型。
图29是示出在要刷新的路径具有上限时执行的处理的变型的流程图。假设图29中示出的步骤S401至S415处执行的处理与图28中示出的步骤S401至S415处执行的处理相同,因此,将省略其描述。
例如,如果L2缓存访问控制器45确定所有路径是满的(步骤S409的“是”),则L2缓存访问控制器45确定是否存在扇区ID“11”的登记(步骤S416)。如果存在扇区ID“11”的登记(步骤S416的“是”),则L2缓存访问控制器45将数据登记在扇区ID为“11”的路径的任意之一中(步骤S417)。
具体地,L2缓存访问控制器45替换扇区ID为“11”的路径的任意之一并且将数据写入到存储器17和18。相反,如果不存在扇区ID“11”的登记(步骤S416的“否”),则L2缓存访问控制器45确定扇区ID是否为“01”(步骤S410)。
图30是示出L2缓存的扇区ID的移位的示意图(编号1)。图31是示出L2缓存的扇区ID的移位的示意图(编号2)。通过执行图28和29中示出的处理(即,通过登记扇区ID),L2缓存访问控制器45使登记在L2缓存标签46中的扇区ID移位,如图30或31所示。图30作为示例示出了回写时目标数据的标签的状态从“M”改变成“I”时扇区ID的移位。图31作为示例示出了回写时目标数据的标签的状态从“M”改变成“E”时扇区ID的移位。
在图30示出的示例中,L2缓存访问控制器45不将扇区ID“11”移位到其它值,直到L2缓存访问控制器45替换数据或使得状态无效为止。相反,在图31示出的示例中,L2缓存访问控制器45有时可使状态从“M”改变成“E”的缓存降级。因此,如果L2缓存访问控制器45使缓存降级,则L2缓存访问控制器45有时可将扇区ID“11”移位到扇区ID“00”。
具体地,如图30和31所示,通过使扇区ID的值移位,L2缓存访问控制器45保存扇区ID“11”,直到可靠地保存存储器和缓存之间的相干性为止。因此,CPU 12g适当地执行缓存刷新。
下面,将参照图32描述L2缓存访问控制器45执行的、用于设置L2缓存概要扇区标志48的处理的流程。图32是示出用于设置L2缓存概要扇区标志的处理的流程的流程图。例如,L2缓存访问控制器45确定要存储的数据的扇区ID是否为“11”(步骤S501)。
如果扇区ID为“11”(步骤S501的“是”),则L2缓存访问控制器45读取L2缓存概要扇区标志48(步骤S502)。具体地,在与进行对于要存储的数据的请求的核相关联的L2缓存概要扇区标志48中,L2缓存访问控制器45读取在其中存储数据的缓存线中的组中的标志。
然后,L2缓存访问控制器45确定所读取的标志是否为“1”(步骤S503)。如果所读取的标志不为“1”(步骤S503的“否”),则L2缓存访问控制器45在L2缓存概要扇区标志48中将标志设置为“1”(步骤S504),并且结束处理。
如果扇区ID不为“11”(步骤S501的“否”)或者如果所读取的标志为“1”(步骤S503的“否”),则L2缓存访问控制器45在不进行任何处理的情况下结束处理。
下面,将参照图33描述CPU 12g执行的刷新的处理的流程。图33是示出用于执行刷新的处理的流程的流程图。在图33中示出的示例中,对于L2缓存概要扇区标志48,由“i”表示CPU 12g参考的条目。此外,在图33中示出的示例中,由“j”表示要刷新的缓存线的索引。此外,在图33中示出的示例中,假设L2缓存47中的缓存线被划分成从“0”至“63”的组,其中128个缓存线包含在一个组中。
例如,在图33中示出的示例中,刷新控制单元52执行在核40至40b之一执行的应用发出刷新请求(步骤S601)时触发的刷新处理。首先,刷新控制单元52设置“i=0”(步骤S602)。
然后,刷新控制单元52从与发出刷新请求的核相关联的L2缓存概要扇区标志48读取第“i”个条目(步骤S603)。然后,刷新控制单元52确定所读取的概要扇区标志是否为“1”(步骤S604)。如果所读取的概要扇区标志为“1”(步骤S604的“是”),则刷新控制单元52将所读取的概要扇区标志复位为“0”(步骤S605)。
然后,刷新控制单元52设置“j=0”(步骤S606),并且关于L2缓存的索引(i,j)发出刷新请求(步骤S607)。具体地,刷新控制单元52关于属于第“i”组的第“j”个缓存线发出刷新请求。然后,L2缓存访问控制器45检查索引(i,j)的所有路径中的扇区ID(步骤S608),并且确定是否存在扇区ID为“11”并且状态为“M”的条目(步骤S609)。
如果L2缓存访问控制器45检测到扇区ID为“11”并且状态为“M”的条目(步骤S609的“是”),则L2缓存访问控制器45刷新来自L2缓存47的、具有所检测到的条目中最小标号的路径中的数据(步骤S610)。然后,L2缓存访问控制器45确定是否依然存在扇区ID为“11”并且状态为“M”的其它条目(步骤S611)。
如果L2缓存访问控制器45确定不再存在扇区ID为“11”并且状态为“M”的条目(步骤S611的“否”),则刷新控制单元52确定“j”的值是否为“127”(步骤S612)。如果“j”的值不为“127”(步骤S612的“否”),则刷新控制单元52将j的值递增一(步骤S613),并且执行步骤S607处的处理。
相反,如果j的值为“127”(步骤S612的“是”),则刷新控制单元52确定i的值是否为“63”(步骤S614)。如果i的值为“63”(步骤S614的“是”),则刷新控制单元52在不进行任何处理的情况下结束处理。相反,如果“i”的值不为“63”(步骤S614的“否”),则刷新控制单元52将“i”的值递增一(步骤S615)并且在步骤S604结束处理。此外,如果所读取的概要扇区标志不为“1”(步骤S604),则刷新控制单元52执行步骤S614的处理。
下面,将参照图34至36描述CPU 12g执行的软件和硬件的操作。首先,将参照图34描述在出现缓存未命中时执行的软件和硬件的操作。图34是示出存储时出现缓存未命中时的软件和硬件的操作的序列图。
首先,应用35发出“Sync Start(Sync开始)”(步骤S701)。然后,与应用指示的时间段相对应的扇区刷新模式进入ON(开启)状态(步骤S702)。此后,应用35发出“Store(存储)”(步骤S703)。然后,因为L1缓存43中没有存储数据,因此出现缓存未命中(步骤S704)。因此,L1缓存访问控制器57发出作为对于要补充的数据的请求的“Read Ex(读取Ex)”(步骤S705)。此时,L1缓存访问控制器57指定扇区ID为“11”。
然后,执行来自存储器17至24的读取(步骤S706),输出所读取的数据(步骤S707),并且数据被缓存在L2缓存47中(步骤S708)。所读取的数据存储在L1缓存43中,其中状态为“M”并且扇区ID为“11”(步骤S709)。随后,应用35发出“Sync end(Sync结束)”(步骤S710)。然后,扇区刷新模式进入OFF(关闭)状态(步骤S711)。
随后,刷新控制单元52执行扇区刷新(步骤S712)并且刷新请求被发出到每个缓存线(步骤S713)。此时,因为步骤S708缓存的数据的状态为“E”并且扇区ID为“11”,则出现缓存命中作为刷新的目标(步骤S714)。因此,L2缓存访问控制器45发出指示在状态“M”中出现缓存命中的信息并且发出回写请求(步骤S715)。
然后,L1缓存43中的数据的状态改变为“I”(步骤S716)。随后,L2缓存访问控制器57执行回写(步骤S717)并且将L2缓存的状态改变为“I”(步骤S718)。如果刷新控制单元52完成扇区刷新(步骤S719),则刷新控制单元52向应用35发出完成响应。
下面,将参照图35描述存储时出现缓存命中时执行的软件和硬件之间的操作。图35是示出存储时出现缓存命中时的软件和硬件的操作的序列图。在图35中示出的示例中,在L1缓存43中,将状态为“E”且扇区ID为“00”的数据缓存(步骤S801)。
核40执行的应用35发出“Sync Start”(步骤S802)。然后,扇区刷新模式进入ON状态(步骤S803)。随后,应用35发出“Store”(步骤S804)。
然后,因为关于“Store”的目标在L1缓存43中出现缓存命中(步骤S805),因此L1缓存访问控制器57向L2缓存47通知指示扇区ID要改变为“11”的信息(步骤S806)。此时,在L2缓存47中,与L1缓存43类似,将状态为“E”且扇区ID为“00”的数据缓存(步骤S807)。因此,对于状态为“E”的数据,L2缓存访问控制器45将扇区ID改变为“11”(步骤S808),并且发出改变完成通知(步骤S809)。
随后,L1缓存访问控制器57将数据的状态设置为“M”并且将扇区ID设置为“11”,其中数据的状态和扇区ID存储在L1缓存43中(步骤S810)。此后,应用35发出“Sync end”(步骤S811)。然后,扇区刷新模式进入OFF状态(步骤S812)。
此后,刷新控制单元52执行扇区刷新(步骤S813)并且对于L2缓存47中的每个缓存线执行刷新(步骤S814)。然后,对于状态为“E”并且扇区ID为“11”的缓存出现缓存命中(步骤S815)。因此,L2缓存访问控制器45发出指示命中状态“M”的响应并且发出回写请求(步骤S816)。
然后,L1缓存访问控制器57将缓存命中数据的状态从“M”改变为“I”(步骤S817)。随后,L2缓存访问控制器45还将缓存命中数据的状态从“M”改变为“I”(步骤S818),并且然后将数据回写到存储器17至24(步骤S819)。此外,在执行扇区刷新之后,刷新控制单元52向应用35发出指示完成了扇区刷新的响应(步骤S820)。
下面,将参照图36描述出现上下文切换时软件和硬件的操作的流程。图36是示出出现上下文切换时的软件和硬件的操作的序列图。在图36中示出的示例中,状态为“E”并且扇区ID为“00”的数据存储在L1缓存43和L2缓存47两者中(步骤S901和S902)。
核40执行的应用35发出“Sync Start”(步骤S903)。然后,扇区刷新模式进入ON状态(步骤S904)。随后,应用35发出“Store”(步骤S905)。
然后,在L1缓存43中出现关于“Store”的缓存命中(步骤S906),L1缓存访问控制器57向L2缓存47通知指示扇区ID要改变为“11”的信息。因此,对于状态为“E”的数据,L2缓存访问控制器45将扇区ID改变为“11”(步骤S907)并且发出改变完成通知(步骤S908)。此外,L1缓存访问控制器57将其中存储状态“M”的数据的扇区ID改变为“11”(步骤S909)。
此时,发出中断指令(步骤S910)。驱动器33执行上下文切换并且执行将寄存器的值存储在存储器17、19、21和23中的上下文存储(步骤S911)。此外,如果出现上下文存储,则驱动器33请求扇区刷新而不等待扇区刷新模式进入OFF状态,因此,刷新控制单元52执行扇区刷新(步骤S912)。此外,刷新控制单元52对包含扇区ID为“11”的数据的缓存线执行刷新(步骤S913),因此存在对于扇区ID为“11”的数据的命中(步骤S914)。
因此,L2缓存访问控制器45发出指示存在对于状态“M”的命中的响应并且发出回写请求(步骤S915)。然后,L1缓存访问控制器57将缓存命中数据的状态从“M”改变为“I”(步骤S916),并且将数据回写到存储器17至24(步骤S917)。此外,L2缓存访问控制器45将缓存命中数据的状态从“M”改变为“I”(步骤S918)。
此外,在执行扇区刷新之后,刷新控制单元52向应用35发出指示扇区刷新的完成的响应(步骤S919)。然后,操作系统32调用应用2(步骤S920)并且出现中断(步骤S921)。然后,驱动器33执行上下文加载(步骤S922)。
随后,如果应用35发出“Sync end”(步骤S923),则扇区刷新模式进入OFF状态(步骤S924)。然后,刷新控制单元52执行扇区刷新(步骤S925),并且然后发出刷新(步骤S926)。此后,刷新控制单元52发出扇区刷新完成通知(步骤S927)。
第五实施例的优点
如上所述,CPU 12g将扇区ID“11”添加到在应用35指定的时间段内更新的数据,并且存储数据。然后,如果应用35指定的时间段结束,则CPU 12g执行如下刷新:其中,仅具有扇区ID“11”的数据从L2缓存43回写到存储器17至24。
因此,CPU 12可以减少应用35的需要被修改的程序量。此外,CPU12可以减少数据回写的处理时间,并且可以防止信息处理系统1的性能退化。
此外,CPU 12g对于核40至40b中的每个以及对于多个缓存线中的每个组,包括L2缓存概要扇区标志,其指示是否在应用35指定的时间段内更新数据。如果发出刷新请求,则CPU 12g对于发出刷新请求的每个核检查L2缓存概要扇区标志为“1”的组中的缓存线。
此后,从所检查的缓存线当中,CPU 12g将所检查的扇区ID为“11”的数据回写到存储器17至24。因此,CPU 12g可以将在应用35指定的时间段内更新的数据回写到存储器17至24,而无需检查存储在缓存存储器12a中的所有缓存线。此外,当CPU 12g包括核时,CPU 12g可以有效地执行刷新。
此外,如果出现上下文切换,则CPU 12g在应用指定的时间段结束之前执行刷新,并且在应用指定的时间段结束之后再次执行刷新。因此,CPU 12g具有上下文切换功能,并且可以有效地执行刷新,即使每次发生上下文切换时核40至40b中的每个执行的应用改变。
[f]第六实施例
在上述说明中,给出了根据本发明的实施例的描述;然而,实施例不限于此,并且可以以不同于上述实施例的各种实施例来实现本发明。因此,下面,将描述包括在本发明中的另一实施例,作为第六实施例。
(1)实施例的组合
在上述第五实施例中,描述了具有第一至第三实施例中描述的功能的CPU 12g;然而,实施例不限于此。例如,可以以任意组合执行第一至第三实施例中的每个描述的功能。此外,即使当CPU包括多个核时,也可以通过使用第一实施例中描述的扇区标志或第二实施例中描述的概要扇区标志来执行处理。此外,也可以将第四实施例中描述的功能添加到CPU12g,并且当执行刷新时,可以仅使用特定路径作为刷新的目标。
(2)应用
在上述第一至第五实施例中,描述了如下示例:其中,根据应用发出的刷新请求来执行刷新;然而,实施例不限于此。如果在应用等的程序指定的时间段结束之后发出刷新请求,则也可以由诸如中间件的任意程序发出刷新请求。
(3)缓存的分级
在上述第五实施例中,给出了如下示例的描述:其中,包括L2缓存47,L2缓存47分别由核40至40b中的L1缓存43至43b共享,并且由核40至40b中的每个共享;然而,实施例不限于此。例如,实施例还可用于包括3级缓存等的CPU。
根据本发明的实施例的一个方面,提供的优点在于,可以减少程序发出的刷新请求的修改量。
Claims (8)
1.一种处理器(12至12g),包括:
缓存存储器(12a),其暂时保存存储在主存储装置(17至24)中的数据;
处理单元(40至40b),其通过使用保存在所述缓存存储器(12a)中的数据来执行应用;
存储单元(12c、12e、42、46),在其中存储更新信息,所述更新信息指示由所述处理单元(40至40b)在所述处理单元(40至40b)执行的所述应用指定的时间段内已更新的数据;以及
回写单元(52),当所述应用指定的所述时间段结束时,所述回写单元将下述数据从所述缓存存储器(12a)回写到所述主存储装置(17至24):所述数据来自保存在所述缓存存储器(12a)中的数据之中并且由存储在所述存储单元(12c、12e、42、46)中的所述更新信息来指示。
2.根据权利要求1所述的处理器(12至12g),其中
所述缓存存储器(12a)包括多个缓存线,所述多个缓存线中的每个缓存线在其中存储数据;
所述存储单元(12c、12e、42、46)对于每个缓存线在其中存储扇区标志作为所述更新信息,所述扇区标志指示是否在所述应用指定的所述时间段内更新了数据;并且
所述回写单元(52)向所述主存储装置(17至24)回写存储在下述缓存线中的数据:在所述缓存线中由所述扇区标志指示更新并且所述缓存线来自包括在所述缓存存储器(12a)中的所述多个缓存线之中。
3.根据权利要求2所述的处理器(12至12g),其中
所述存储单元(12c、12e、42、46)对于多个缓存线的每个组在其中存储概要扇区标志(12c),所述概要扇区标志(12c)指示是否在所述应用指定的所述时间段内更新了数据;并且
所述回写单元(52)向所述主存储装置(17至24)回写存储在下述缓存线中的数据:在所述缓存线中由所述扇区标志指示更新,并且所述缓存线来自多个缓存线的组之中,在每个缓存线中由所述概要扇区标志(12c)指示更新。
4.根据权利要求2所述的处理器(12至12g),还包括多个处理单元(40至40b),其中
所述存储单元(12c、12e、42、46)对于多个缓存线的每个组在其中存储算术标志(48),所述算术标志(48)指示是否在所述处理单元(40至40b)中的任一个执行的所述应用指定的所述时间段内更新了数据;并且
当所述处理单元(40至40b)之一执行的所述应用指定的所述时间段结束时,所述回写单元(52)向所述主存储装置(17至24)回写存储在下述缓存线中的数据:在所述缓存线中由所述扇区标志指示更新,并且所述缓存线来自由所述算术标志(48)指示的所述多个缓存线之中,所述算术标志(48)指示在所述处理单元(40至40b)之一执行的所述应用指定的所述时间段内更新了数据。
5.根据权利要求2所述的处理器(12至12g),其中
所述缓存存储器(12a)包括多个缓存线,所述多个缓存线中的每个缓存线包括多个路径;并且
所述回写单元(52)向所述主存储装置(17至24)仅回写存储在下述缓存线的特定路径中的数据:在所述缓存线中由所述扇区标志指示更新。
6.根据权利要求1所述的处理器(12至12g),其中
所述处理单元(40至40b)具有执行用于改变要执行的应用的上下文切换的功能;并且
当所述应用指定的所述时间段结束时或当所述处理单元(40至40b)执行所述上下文切换时,所述回写单元(52)向所述主存储装置(17至24)回写存储在下述缓存线中的数据:在所述缓存线中由所述扇区标志指示更新。
7.一种信息处理设备,包括:
在其中存储数据的主存储装置(17至24);以及
共享所述主存储装置(17至24)的多个处理器(12至12g),其中所述处理器(12至12g)中的每个包括:
缓存存储器(12a),其暂时保存由所述主存储装置(17至24)存储的数据;
处理单元(40至40b),其通过使用由所述缓存存储器(12a)保存的数据来执行应用;
存储单元(12c、12e、42、46),在其中存储扇区信息,所述扇区信息指示由所述处理单元(40至40b)在所述处理单元(40至40b)执行的所述应用指定的时间段内已更新的数据;以及
回写单元(52),当所述应用指定的所述时间段结束时,所述回写单元将下述数据从所述缓存存储器(12a)回写到所述主存储装置(17至24):所述数据来自保存在所述缓存存储器(12a)中的数据之中并且由存储在所述存储单元(12c、12e、42、46)中的所述扇区信息来指示。
8.一种由处理器(12至12g)执行的算术方法,所述处理器(12至12g)具有将存储在主存储装置(17至24)中的数据缓存的功能,所述算术方法包括:
存储扇区信息,所述扇区信息指示在应用指定的时间段内已更新的缓存数据;以及
当所述应用指定的所述时间段结束时,向主存储装置(17至24)回写由所述扇区信息指示的缓存数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012-044881 | 2012-02-29 | ||
JP2012044881A JP5565425B2 (ja) | 2012-02-29 | 2012-02-29 | 演算装置、情報処理装置および演算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103294608A true CN103294608A (zh) | 2013-09-11 |
Family
ID=47522280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012105075429A Pending CN103294608A (zh) | 2012-02-29 | 2012-11-30 | 处理器、信息处理设备和算术方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20130227219A1 (zh) |
EP (1) | EP2634702B1 (zh) |
JP (1) | JP5565425B2 (zh) |
KR (1) | KR101414384B1 (zh) |
CN (1) | CN103294608A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104794069A (zh) * | 2015-04-01 | 2015-07-22 | 北京创毅视讯科技有限公司 | 一种cpu中缓存的用户态分配方法和系统 |
CN107870871A (zh) * | 2016-09-23 | 2018-04-03 | 华为技术有限公司 | 分配缓存的方法和装置 |
CN109556643A (zh) * | 2017-09-25 | 2019-04-02 | 罗伯特·博世有限公司 | 用于输出传感器数据的传感器系统 |
CN113360088A (zh) * | 2020-03-04 | 2021-09-07 | 美光科技公司 | 基于硬件的相干性检查技术 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014113056A1 (en) * | 2013-01-17 | 2014-07-24 | Xockets IP, LLC | Offload processor modules for connection to system memory |
US10684973B2 (en) | 2013-08-30 | 2020-06-16 | Intel Corporation | NUMA node peripheral switch |
KR101996266B1 (ko) | 2014-09-18 | 2019-10-01 | 삼성전자주식회사 | 호스트 및 이를 포함하는 컴퓨터 시스템 |
US10635505B2 (en) * | 2015-06-30 | 2020-04-28 | Coursera, Inc. | Automated batch application programming interfaces |
KR101968474B1 (ko) * | 2017-06-02 | 2019-04-15 | 주식회사 애포샤 | 플래시 캐시에서 트랜잭션 지원 방법 및 장치 |
US11403229B2 (en) * | 2019-05-24 | 2022-08-02 | Texas Instruments Incorporated | Methods and apparatus to facilitate atomic operations in victim cache |
US11189327B2 (en) | 2019-08-21 | 2021-11-30 | Micron Technology, Inc. | Methods for providing device status in response to read commands directed to write-only mode register bits and memory devices and systems employing the same |
CN114556314A (zh) * | 2019-10-31 | 2022-05-27 | 华为技术有限公司 | 处理非缓存写数据请求的方法、缓存器和节点 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050125801A1 (en) * | 2002-03-28 | 2005-06-09 | Colin King | Method and apparartus for context switching in computer operating systems |
CN101689141A (zh) * | 2007-06-20 | 2010-03-31 | 富士通株式会社 | 高速缓存装置、运算处理装置及其控制方法 |
US20110082983A1 (en) * | 2009-10-06 | 2011-04-07 | Alcatel-Lucent Canada, Inc. | Cpu instruction and data cache corruption prevention system |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2531538B2 (ja) * | 1990-03-14 | 1996-09-04 | 富士通株式会社 | キャッシュメモリデ―タ書き戻し方法及びディスクキャッシュ制御装置 |
JPH04175946A (ja) | 1990-11-09 | 1992-06-23 | Hitachi Ltd | マルチプロセッサ・データ処理システムおよびそれに用いられるキャッシュ装置 |
US5353425A (en) | 1992-04-29 | 1994-10-04 | Sun Microsystems, Inc. | Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature |
JPH05346889A (ja) * | 1992-06-15 | 1993-12-27 | Hitachi Ltd | キャッシュ制御方法およびキャッシュ制御装置 |
JPH0844626A (ja) * | 1994-07-28 | 1996-02-16 | Nec Niigata Ltd | キャッシュシステムのフラッシュサイクル制御方法 |
JP2916421B2 (ja) * | 1996-09-09 | 1999-07-05 | 株式会社東芝 | キャッシュフラッシュ装置およびデータ処理方法 |
JPH11259362A (ja) | 1998-03-13 | 1999-09-24 | Nec Corp | キャッシュメモリ制御方法及び装置 |
JP2000322202A (ja) * | 1999-05-12 | 2000-11-24 | Toshiba Corp | 階層型情報記憶システム及び同システムに於ける記憶制御方法 |
US6810489B1 (en) * | 2000-09-06 | 2004-10-26 | Hewlett-Packard Development Company, L.P. | Checkpoint computer system utilizing a FIFO buffer to re-synchronize and recover the system on the detection of an error |
US6983388B2 (en) * | 2000-10-25 | 2006-01-03 | Agere Systems Inc. | Method and apparatus for reducing leakage power in a cache memory by using a timer control signal that removes power to associated cache lines |
US6934810B1 (en) * | 2002-09-26 | 2005-08-23 | Unisys Corporation | Delayed leaky write system and method for a cache memory |
JP2007011580A (ja) * | 2005-06-29 | 2007-01-18 | Toshiba Corp | 情報処理装置 |
US7809892B1 (en) * | 2006-04-03 | 2010-10-05 | American Megatrends Inc. | Asynchronous data replication |
JP5101128B2 (ja) * | 2007-02-21 | 2012-12-19 | 株式会社東芝 | メモリ管理システム |
JP5217432B2 (ja) | 2007-12-28 | 2013-06-19 | 富士通株式会社 | セクタ機能付きキャッシュメモリ |
JP2009211270A (ja) * | 2008-03-03 | 2009-09-17 | Fujitsu Microelectronics Ltd | コンピュータシステム |
US8380935B2 (en) * | 2009-06-12 | 2013-02-19 | Cray Inc. | Atomic memory operation cache protocol with opportunistic combining |
JP5413001B2 (ja) | 2009-07-09 | 2014-02-12 | 富士通株式会社 | キャッシュメモリ |
-
2012
- 2012-02-29 JP JP2012044881A patent/JP5565425B2/ja active Active
- 2012-11-16 US US13/678,978 patent/US20130227219A1/en not_active Abandoned
- 2012-11-23 EP EP12194012.6A patent/EP2634702B1/en not_active Not-in-force
- 2012-11-29 KR KR1020120137109A patent/KR101414384B1/ko not_active IP Right Cessation
- 2012-11-30 CN CN2012105075429A patent/CN103294608A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050125801A1 (en) * | 2002-03-28 | 2005-06-09 | Colin King | Method and apparartus for context switching in computer operating systems |
CN101689141A (zh) * | 2007-06-20 | 2010-03-31 | 富士通株式会社 | 高速缓存装置、运算处理装置及其控制方法 |
US20110082983A1 (en) * | 2009-10-06 | 2011-04-07 | Alcatel-Lucent Canada, Inc. | Cpu instruction and data cache corruption prevention system |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104794069A (zh) * | 2015-04-01 | 2015-07-22 | 北京创毅视讯科技有限公司 | 一种cpu中缓存的用户态分配方法和系统 |
CN104794069B (zh) * | 2015-04-01 | 2017-12-12 | 北京创毅视讯科技有限公司 | 一种cpu中缓存的用户态分配方法和系统 |
CN107870871A (zh) * | 2016-09-23 | 2018-04-03 | 华为技术有限公司 | 分配缓存的方法和装置 |
CN107870871B (zh) * | 2016-09-23 | 2021-08-20 | 华为技术有限公司 | 分配缓存的方法和装置 |
CN109556643A (zh) * | 2017-09-25 | 2019-04-02 | 罗伯特·博世有限公司 | 用于输出传感器数据的传感器系统 |
CN109556643B (zh) * | 2017-09-25 | 2023-03-03 | 罗伯特·博世有限公司 | 用于输出传感器数据的传感器系统 |
CN113360088A (zh) * | 2020-03-04 | 2021-09-07 | 美光科技公司 | 基于硬件的相干性检查技术 |
Also Published As
Publication number | Publication date |
---|---|
EP2634702A1 (en) | 2013-09-04 |
KR101414384B1 (ko) | 2014-07-01 |
EP2634702B1 (en) | 2014-10-29 |
KR20130099805A (ko) | 2013-09-06 |
US20130227219A1 (en) | 2013-08-29 |
JP2013182356A (ja) | 2013-09-12 |
JP5565425B2 (ja) | 2014-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103294608A (zh) | 处理器、信息处理设备和算术方法 | |
US5257361A (en) | Method and apparatus for controlling one or more hierarchical memories using a virtual storage scheme and physical to virtual address translation | |
CN101593161B (zh) | 确保微处理器的快取存储器层级数据一致性的装置与方法 | |
EP0062165B1 (en) | Multiprocessors including private and shared caches | |
US6920521B2 (en) | Method and system of managing virtualized physical memory in a data processing system | |
EP3433742B1 (en) | Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations | |
KR100515229B1 (ko) | 멀티프로세서 시스템에서 가상화된 물리적 메모리를관리하는 방법 및 시스템 | |
JP2003067357A (ja) | 不均一メモリ・アクセス(numa)データ処理システムおよびその操作方法 | |
JP2011198091A (ja) | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム | |
JPH11232173A (ja) | ローカルメモリに組み込んでいるリモートキャッシュとcc−NUMA(キャッシュ整合型の不均一メモリアクセス)アーキテクチュアを有するデータ処理システム | |
JPH04227552A (ja) | ストアスルーキャッシュ管理システム | |
KR20130076696A (ko) | 정보 처리 장치 및 부정 액세스 방지 방법 | |
US20010032299A1 (en) | Cache directory configuration method and information processing device | |
CN105550155A (zh) | 用于多处理器系统的探听过滤器以及相关探听过滤方法 | |
CN114385516A (zh) | 计算系统以及用于共享不同计算设备的设备存储器的方法 | |
KR20050011152A (ko) | 멀티프로세서 시스템 및 멀티프로세서 시스템의 캐쉬일관성 유지 방법 | |
CN103052945A (zh) | 管理计算机存储器的方法、程序产品及数据存储设备 | |
US6314500B1 (en) | Selective routing of data in a multi-level memory architecture based on source identification information | |
KR20220001016A (ko) | 게스트 운영체제에 입출력 메모리 관리 유닛 레지스터 복사본을 제공하는 방법 | |
CN113906396A (zh) | 用于存取借用存储器的存储器管理单元(mmu) | |
EP0531123B1 (en) | A dynamic address translation processing apparatus in a data processing system | |
US20220206700A1 (en) | Migrating Pages of Memory Accessible by Input-Output Devices | |
US6298419B1 (en) | Protocol for software distributed shared memory with memory scaling | |
KR20140038075A (ko) | 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치 | |
US10565111B2 (en) | Processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130911 |