CN103294616B - 信息处理设备和控制方法 - Google Patents
信息处理设备和控制方法 Download PDFInfo
- Publication number
- CN103294616B CN103294616B CN201210390225.3A CN201210390225A CN103294616B CN 103294616 B CN103294616 B CN 103294616B CN 201210390225 A CN201210390225 A CN 201210390225A CN 103294616 B CN103294616 B CN 103294616B
- Authority
- CN
- China
- Prior art keywords
- node
- memory area
- access
- unit
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
- G06F11/0724—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/076—Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
-
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Multi Processors (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开了一种信息处理设备和控制方法。信息处理设备中的多个节点中的至少一个节点执行用于包括在一个节点或其它节点的存储器中且存储在一个节点和其它节点访问的共享存储器区域中的数据的以下处理。即,该节点检测在预定时间内发生超过预定次数的ICE或在共享存储器区域中的单一位置处发生的PCE。当检测到错误时,节点执行控制以阻止该节点和其它节点访问共享存储器。节点在不同于共享存储器区域的存储器区域中恢复数据。节点向其它节点通知关于不同存储器区域的信息。节点执行控制以重新开始从节点和其它节点对数据的访问。
Description
技术领域
在本文中讨论的实施例针对一种信息处理设备、控制方法以及控制程序。
背景技术
传统上,多个计算处理装置共享存储装置的SMP(对称多处理器)技术是公知的。应用这样的SMP技术的信息处理系统的示例是如下信息处理系统(信息处理设备):其通过单条总线连接每一个均具有计算处理装置和存储装置的多个节点,并且在其中,每个计算处理装置共享每个存储装置。即,该信息处理系统具有在多个节点之间共享的存储装置(共享存储器)。
ECCICE(错误检查和校正间歇的可校正错误)或ECCPCE(永久的可校正错误)发生在这样的共享存储器的数据中。同时,“ECCICE”是间歇的可校正错误。即,“ECCICE”是在预定时间内发生超过预定次数的可校正错误。另外,“ECCPCE”是固定的可校正错误。即,“ECCPCE”是在存储器区域中的单一位置处发生的可校正错误。
另外,存在这样的一种技术:当在给定页内频繁地执行错误校正时,将该页的内容从包括错误被校正的位置的第一存储器区域复制到第二存储器区域,并且将在TLB中的物理页从第一存储器区域的地址写入到第二存储器区域的地址。
此外,存在这样的一种技术:当在对共享存储器进行访问时发生了可校正的一位错误时,在给定装置写回数据的同时阻止另一装置访问给定装置正在访问的存储器。
专利文献1:第11-175409号日本早期公开专利公布
专利文献1:第09-128303号日本早期公开专利公布
专利文献1:第08-077078号日本早期公开专利公布
然而,上述技术具有如下问题:如果CE(诸如ICE或PCE)留在存储器上,则在一些情况下(诸如,在已存在ICE或PCE的存储器空间发生软错误),信息处理设备发生故障(godown)。
因此,本发明的实施例的一个方面的目的是抑制信息处理设备发生故障的可能性。
发明内容
根据实施例的一方面,一种信息处理设备包括每一个均包括存储装置的多个节点和连接在多个节点之间的互连装置,其中多个节点中的至少一个节点包括:检测单元,检测包括在这一个节点或其它节点的存储装置中的共享存储器区域中所存储的数据的可校正错误,该共享存储器区域是这一个节点和其它节点访问的区域,并且该可校正错误是(i)在预定时间段内发生多于预定次数的错误或者(ii)在共享存储器区域中的单一位置处发生的错误;阻止控制单元,当检测单元检测到可校正错误时,执行控制以阻止这一个节点和其它节点访问共享存储器区域;恢复单元,在与共享存储器区域不同的存储器区域中恢复存储在共享存储器区域中的数据;通知单元,向其它节点通知关于不同的存储器区域的信息;以及重新开始(resumption)控制单元,执行控制以重新开始从这一个节点和其它节点对所恢复的数据的访问。
附图说明
图1是用于说明根据实施例的信息处理系统的示例的图;
图2是用于说明根据实施例的构件块(buildingblock)的功能配置的图;
图3是示出当另一节点附接到被分配了共享存储器的节点时存储器映射的示例的图;
图4是用于说明根据实施例的CPU的功能配置的图;
图5是用于说明根据实施例的节点映射的数据配置的示例的图;
图6是用于说明根据实施例从CPU发送的分组(packet)的图;
图7是用于说明根据实施例从CPU发送请求的处理的示例的图;
图8是用于说明根据实施例当CPU接收分组时所执行的处理的示例的图;
图9是用于说明根据实施例从I/O装置发送请求的处理的示例的图;
图10是用于说明根据实施例在I/O装置处接收响应的处理的示例的图;
图11是用于说明控制共享区域的处理的流程的流程图;
图12是用于说明分配共享存储器的处理的流程图;
图13是用于说明共享存储器附接处理的流程图;
图14是用于说明在应用程序中使用共享存储器的处理的流程图;
图15是用于说明拆卸在节点之间的共享存储器的处理的流程图;
图16是用于说明释放节点间共享存储器的处理的流程图;
图17是用于说明发出请求的处理的流程的流程图;
图18是用于说明当接收到请求时所执行的处理的流程的流程图;
图19是用于说明ECC检查单元执行的处理的流程的流程图;
图20是用于说明ECC检查单元执行的处理的流程的流程图;
图21是用于说明ECC检查单元执行的检测ICE的发生的处理的示例的图;
图22是用于说明ECC检查单元执行的检测ICE的发生的处理的示例的图;
图23是用于说明ECC检查单元执行的检测ICE的发生的处理的示例的图;
图24是用于说明ECC检查单元执行的检测ICE的发生的处理的示例的图;
图25是用于说明ECC检查单元执行的检测ICE的发生的处理的示例的图;
图26是用于说明ECC检查单元执行的检测ICE的发生的处理的示例的图;
图27是用于说明ECC检查单元执行的检测ICE的发生的处理的示例的图;
图28A是示出根据实施例由CPU执行的OS的功能配置的示例的图;
图28B是示出在OS的处理中所参考的表的数据配置的示例的图;
图28C是示出在OS的处理中所参考的表的数据配置的示例的图;
图29是用于说明OS执行的处理的流程的流程图;
图30是用于说明OS执行的处理的流程的流程图;
图31是用于说明OS执行的处理的流程的流程图;
图32是用于说明OS执行的处理的流程的流程图;
图33是用于说明OS执行的处理的流程的流程图;
图34是示出存储器管理表的数据配置的示例的图;
图35是示出地址转换表的数据配置的示例的图;
图36是用于说明OS执行的处理的流程的流程图;
图37是示出访问重新开始等待列表的数据配置的示例的图;
图38是示出调度等待列表的数据配置的示例的图;
图39是用于说明OS执行的处理的流程的流程图;以及
图40是示出根据实施例的CPU执行的处理和OS的功能配置的示例的图。
具体实施方式
将参照附图说明本发明的优选实施例。
将使用图1以下述实施例描述具有多个节点的信息处理系统的示例。图1是用于说明根据实施例的信息处理系统的示例的图。根据图1所示的示例,信息处理系统1具有XB2(交叉开关)和多个构件块10至10e。XB2是将各构件块10至10e相互连接的交叉开关。另外,XB2具有未示出的服务处理器,该服务处理器用作以下描述的构件块10至10e中的每个构件块的各自服务处理器的母机(master)。另外,在连接有少量节点的小规模配置的情况下,构件块可在没有XB2的情况下直接相连。
另外,构件块10具有多个CPU(中央处理单元)21至21c和多个存储器22至22c。此外,其它构件块10a至10e还使用与构件块10相同的配置,因此,以下将不进行描述。另外,根据图1所示的示例,没有绘出CPU21b和21c以及存储器22b和22c。另外,在每个构件块中设置有未示出的I/O(输入/输出)装置。同时,根据本示例,CPU之间的高速缓存一致性控制通过目录系统来实现,并且以下描述的、具有存储器上的数据的主CPU管理该目录。
构件块10至10e中的每一个均独立地操作OS。即,CPU21至21c中的每一个均独立地执行OS。由构件块10至10e中的每一个执行的OS在每个构件块不同的分区中运行。同时,分区指的是同一OS运行且从运行的OS来看为一个系统运行的一组构件块。
例如,构件块10和10a作为分区#A来进行操作,并且构件块10b至10d作为分区#B来进行操作。在这种情况下,由构件块10操作的OS将构件块10和10a识别为一个操作系统,并且由构件块10b操作的OS将构件块10b至10d识别为一个操作系统。
接下来,将使用图2描述构件块的配置示例。图2是用于说明根据实施例的构件块的功能配置的图。根据图2所示的实施例,构件块10具有节点20、服务处理器24、XB连接单元27和27a以及PCIe(外围组件互联高速)连接单元28。
节点20具有多个CPU21至21c、多个存储器22至22c以及通信单元23。
服务处理器24具有控制单元25和通信单元26。另外,根据图2所示的示例,各CPU21至21c相互连接,并与通信单元23相连。另外,存储器22至22c分别与CPU21至21c相连。服务处理器24通过未示出的网络(诸如,LAN(局域网))连接到服务器的管理终端,并且响应于来自管理终端的指令而执行改变节点或构件块10中的各种设置的控制。
另外,CPU21至CPU21c中的每一个均与XB连接单元27或XB连接单元27a相连。另外,XB连接单元27和27a可以是相同的XB连接单元。另外,CPU21至CPU21c中的每一个均与PCIe连接单元28相连。此外,通信单元23与服务处理器24的通信单元26相连。另外,控制单元25、通信单元26、通信单元23以及各CPU21至CPU21c通过例如I2C(集成电路之间)相连。
CPU21至CPU21c是执行应用程序的计算处理装置。另外,CPU21至CPU21c分别与存储器22至22c相连。此外,当执行的应用程序要求请求分配共享存储器时,各CPU21至CPU21c相互通信,并且分配由应用程序使用的共享存储器。另外,各CPU21至CPU21c使用各存储器22至22c或其它构件块10a至10e中的存储器的一部分作为共享存储器。
图3是示出在另一节点附接到分配有共享存储器实体的节点时的存储器映射的示例的图。根据图3中的示例,当共享存储器被分配给直接连接到其中存在共享存储器的物理存储器的节点(被称为“主节点(homenode)”)时,主节点将共享存储器分割成一定的区域大小。尽管该分割单位被称为“段(segment)”,但是将共享存储器分割成段不是不可缺少的。当另一节点请求分配主节点所具有的共享存储器时,可以通过附接共享存储器来使用主节点的共享存储器。该远程节点使用的存储器区域被称为“共享存储器镜像区域”。该共享存储器镜像区域可通过单个远程节点或多个远程节点附接。
回到图2,CPU21至21c中的每一个均具有使存储器的物理地址和CPUID(标识)相关联的节点映射,其中CPUID是与存储器相连的CPU的标识符。另外,该CPUID是由系统1唯一确定的并且不会重复。
CPU21至21c中的每一个均使用节点映射来与另一CPU通信。例如,当与访问目标物理地址相关联的CPUID表示不同于CPU21至21c的CPU时,CPU21通过XB连接单元27或XB连接单元27a和XB2将存储器访问请求发送至另一节点。另外,当从另一节点接收到对与CPU21连接的存储器的请求时,CPU21从与CPU21连接的存储器22读取请求目标数据,并且将数据发送至请求源。其它CPU21a至21c也执行相同处理。
另外,CPU21至21c中的每一个均具有如下功能:使用TLB(转换后备缓冲器)来转换地址,并且当TLB失误发生时,执行与在传统CPU中相同的处理(诸如,陷阱处理)。
存储器22至22c是信息处理系统1的所有CPU共享的存储器。另外,在信息处理系统1中,构件块10至10e中的每一个的服务处理器将映射到同一物理地址空间的物理地址分给所有构件块10至10e的存储器。即,具有没有赋值的值的物理地址被分配给信息处理系统1的所有存储器当中至少用作共享存储器的存储器。
另外,存储器22至22c使用存储器区域的一部分作为信息处理系统1的所有CPU共享的共享区域,并且使用其它部分作为访问存储器22至22c的CPU21至21c将内核数据和用户数据存储在其中的本地区域以及在通过共享存储器与另一节点交换时无关的且I/O装置使用的I/O区域。
控制单元25控制构件块10。例如,控制单元25管理构件块10的电源,或者监视并控制构件块10中的异常。另外,控制单元25通过未示出的网络与其它构件块10a至10e的服务处理器连接,并且执行构件块10a与10e之间协同的控制。另外,控制单元25可以与各CPU21至21c执行的OS通信。
另外,控制单元25通过通信单元26和通信单元23访问CPU21至21c中的每一个。而且,控制单元25更新并控制构件块10至10e中的每一个的节点映射。
另外,服务处理器24的通信单元26接收从控制单元25发送的控制信号,并且将所接收到的控制信号发送至节点20的通信单元23。另外,通信单元23接收从通信单元26发送的控制信号,并且将所接收到的控制信号发送至CPU21至21c中的每一个。另外,XB连接单元27和27a将CPU21至21a中的每一个与XB2相连,并且中继构件块10至10e的CPU之间的通信。另外,PCIe连接单元28中继通过CPU21至21c对I/O装置的访问。
接下来,将使用图4描述CPU21至21c中的每一个的功能配置。图4是用于说明根据实施例的CPU的功能配置的图。另外,CPU21a至21c具有与CPU21的功能相同的功能,因此,将不进行描述。另外,根据图4所示的示例,未示出连接服务处理器24和CPU21的通信单元23和26。
根据图4所示的示例,CPU21具有计算处理单元30、路由器40、存储器访问单元41以及PCIe控制单元42。另外,计算处理单元30具有计算单元31、L1(一级(level1))高速缓存器32、L2(二级(level2))高速缓存器33、节点映射34、地址转换单元35、高速缓存目录管理单元36以及分组控制单元37。另外,路由器40、存储器访问单元41以及PCIe控制单元42中的每个单元都不必包括在单个CPU21内。
另外,分组控制单元37具有分组生成单元37a和分组接收单元37b。此外,PCIe控制单元42具有请求生成单元42a和PCIe总线控制单元42b。
首先,将描述计算处理单元30的节点映射34。节点映射34是表示存储器的存储器区域的物理地址的范围和与存储器连接的CPU的CPUID相关联地被登记的表。将使用附图描述登记在节点映射34中的信息的示例。
图5是用于说明根据实施例的节点映射的数据配置的示例的图。根据图5所示的示例,节点映射34具有将各项(诸如,“地址”、“有效”、“节点ID”以及“CPUID”)的登记内容关联的条目。同时,在每个条目的“地址”项中,存储了表示包括连续的多个物理地址的地址区域的信息。
例如,信息处理系统1将分给所有存储器的物理地址空间分割成大小相等的地址区域,并且为每个地址区域分配诸如#0、#1和#2的标识符。另外,信息处理系统1在节点映射34的每个条目的“地址”中登记表示每个地址区域的标识符。例如,图5示出在第一条目的“地址”项中登记标识符#0的情况。另外,图5示出例如在第二条目的“地址”项中登记标识符#1的情况。此外,图5示出例如在第三条目的“地址”项中登记标识符#2的情况。
另外,在每个条目的“有效”项中登记有效位,其表示每个CPU是否可以访问由物理地址表示的存储器区域。例如,当由物理地址表示的存储器区域是CPU之间共享的共享区域时,登记表示每个CPU可以访问存储器区域的有效位(例如,“1”)。图5示出例如在第一条目的“有效”项中登记有效位“1”的情况。另外,图5示出例如在第二条目的“有效”项中登记有效位“1”的情况。此外,图5示出例如在第三条目的“有效”项中登记有效位“0”的情况,其中该有效位“0”表示每个CPU不可以访问由物理地址表示的存储器区域。
另外,在每个条目的“节点ID”项中,登记了表示具有被分有物理地址的存储器的节点的标识符。图5示出例如在第一条目的“节点ID”项中登记表示节点的标识符“1”的情况。另外,图5示出例如在第二条目的“节点ID”项中登记表示节点的标识符“1”的情况。
此外,在每个条目的“CPUID”项中,登记了表示与被分有物理地址的存储器连接的CPU的标识符。即,节点映射34表示访问目标物理地址是与哪个CPU连接的存储器的物理地址。图5示出例如在第一条目的“CPUID”项中登记表示CPU的标识符“4”的情况。另外,图5示出了在第二条目的“CPUID”项中登记表示CPU的标识符“5”的情况。
另外,只要可以表示访问目标物理地址是与哪个CPU连接的物理地址,就可以在节点映射34中以除了本示例的格式之外的任意格式登记信息。
回到图4,计算单元31是执行计算处理的计算装置的核,并且执行OS(操作系统)和应用程序。另外,当读取或写入数据时,计算单元31将存储作为读取目标或写入目标的数据的存储器区域的虚拟地址(VA)输出至地址转换单元35。
L1高速缓存器32是临时存储在计算单元31中频繁使用的数据的高速缓存存储器。尽管与L1高速缓存器32类似,L2高速缓存器33临时存储频繁使用的数据,但是L2高速缓存器33是以低速读取和写入数据的高速缓存存储器。同时,目录信息36a存储在高速缓存目录管理单元36中,并且是表示高速缓存有存储器22的每个存储器区域中所存储的数据CPU或所高速缓存的数据的更新状态的信息。在以下描述中,在一些情况下将“目录信息”简称为“目录”。基于该目录的高速缓存存储器管理方法是在ccNUMA(高速缓存一致性非均衡存储器访问)系统中常用的技术。ccNUMA技术和目录技术都是公知技术,因此,将不进行详细描述。另外,尽管在图4的高速缓存目录管理单元36中构建目录36a,但是还可以将目录信息36a记录在存储器22的存储器区域的一部分中。
地址转换单元35具有TLB35a。在TLB35a中,登记将虚拟地址和物理地址相关联的条目。地址转换单元35使用TLB35a将从计算单元31输出的虚拟地址转换为物理地址。例如,地址转换单元35从TLB35a中搜索与从计算单元31获得的虚拟地址相关联的物理地址,并且当获得作为搜索结果的物理地址时,将所获得的物理地址输出至高速缓存目录管理单元36。另外,当TLB失误发生时,地址转换单元35执行陷阱处理。同时,诸如OS的系统软件将TLB失误发生的一组物理地址与虚拟地址的组登记在TLB35a中。同时,对于组中登记被禁止的物理地址,即使当TLB失误发生时,诸如OS的系统软件也不将一组物理地址与虚拟地址登记在TLB35a中。
同时,当计算单元31执行的应用程序请求对共享存储器的分配时,OS和地址转换单元35执行以下处理。即,当TLB失误发生时,诸如OS的系统软件将条目登记在TLB35a中。另外,当TLB失误未发生时,已经在TLB35a中登记条目,并且地址转换单元35将虚拟地址转换为物理地址。
另外,当应用程序或OS请求本地区域的分配时,地址转换单元35和OS执行以下处理。即,当TLB失误发生时,诸如OS的系统软件将如下条目登记在TLB35a中:其将允许应用程序或OS访问CPU21专用的本地区域的虚拟地址与分配给本地区域的物理地址的范围相关联。
高速缓存目录管理单元36管理高速缓存数据和目录。高速缓存目录管理单元36获取从地址转换单元35输出的物理地址。
另外,当从地址转换单元35获取物理地址时,高速缓存目录管理单元36执行以下处理。即,高速缓存目录管理单元36使用目录36a来判定存储在所获取的物理地址中的数据是否高速缓存在L1高速缓存器32和L2高速缓存器33中。
另外,当判定存储在所获取的物理地址中的数据被高速缓存时,高速缓存目录管理单元36将所高速缓存的数据输出至计算单元31。另外,当存储在所获取的物理地址中的数据没有高速缓存在L1高速缓存器32和L2高速缓存器33中时,高速缓存目录管理单元36执行以下处理。首先,高速缓存目录管理单元36参考节点映射34,并且识别包括所获取的物理地址的条目的范围。另外,高速缓存目录管理单元36判定所识别的条目的CPUID是否是CPU21的CPUID。随后,当所识别的条目的CPUID是CPU21的CPUID时,高速缓存目录管理单元36将物理地址输出至存储器访问单元41。
另外,当所识别的条目的CPUID不是CPU21的CPUID时,高速缓存目录管理单元36执行以下处理。即,高速缓存目录管理单元36获取所识别的条目的CPUID和物理地址。另外,高速缓存目录管理单元36将所获取的CPUID和物理地址输出至分组控制单元37。
此外,当获取由从存储器访问单元41或分组控制单元37所输出的物理地址表示的存储器区域中所存储的数据时,高速缓存目录管理单元36将所获取的数据存储在L1高速缓存器32和L2高速缓存器33中。另外,高速缓存目录管理单元36将高速缓存在L1高速缓存器32中的数据输出至计算单元31。
此外,当从分组控制单元37获取物理地址时,即,当从另一CPU或I/O装置获取存储器访问的请求目标物理地址时,高速缓存目录管理单元36执行以下处理。即,高速缓存目录管理单元36参考节点映射34,并且判定所获取的物理地址是否是分给本地区域的物理地址。
当另一分区是请求源并且所获取的物理地址是分给本地区域的物理地址时,高速缓存目录管理单元36指示分组控制单元37向请求源发送拒绝响应(访问错误)。
另外,当所获取的物理地址是分给共享区域的物理地址时,高速缓存目录管理单元36获取由所获取的物理地址表示的存储器区域中所存储的数据,将所获取的数据输出至分组控制单元37,并且指示分组控制单元37将所获取的数据发送至请求源。
另外,高速缓存目录管理单元36使用目录系统来执行保持所高速缓存的数据的一致性的处理。例如,当将对存储在存储器22中的数据的请求发送至请求发送源的CPU时,高速缓存目录管理单元36判定除发送源的CPU之外的CPU是否高速缓存该数据。
另外,当另一CPU未高速缓存请求目标数据时,高速缓存目录管理单元36从L1高速缓存器32、L2高速缓存器33和存储器22获取请求目标数据。然后,高速缓存目录管理单元36将所获取的数据输出至分组控制单元37。
同时,当另一CPU高速缓存请求目标数据时,高速缓存目录管理单元36使用诸如Illinois协议的方法来执行用于保持高速缓存一致性的处理。例如,高速缓存目录管理单元36判定所高速缓存的数据的状态是MESI(修改的/排他的/共享的/无效的)中的哪一个。
另外,高速缓存目录管理单元36根据判定结果向另一CPU的高速缓存目录管理单元发送用于保持一致性的请求或命令(指令)或者从另一CPU的高速缓存目录管理单元接收用于保持一致性的请求或命令(指令),并且执行与所高速缓存的数据的状态匹配的处理。同时,“修改的”表示一个CPU高速缓存数据并且所高速缓存的数据被更新的状态。另外,当所高速缓存的数据的状态是“修改的”时,需要执行写回。
另外,“排他的”表示一个CPU高速缓存数据并且所高速缓存的数据不被更新的状态。此外,“共享的”表示多个CPU高速缓存数据并且所高速缓存的数据不被更新的状态。另外,“无效的”表示未登记高速缓存状态。
将描述具体示例。高速缓存目录管理单元36指示分组生成单元37a发送指示高速缓存具有状态M(修改的)的数据的CPU进行写回的命令。另外,高速缓存目录管理单元36更新数据状态,并且执行与更新后的状态匹配的处理。另外,以下将描述高速缓存目录管理单元36发送和接收的请求或命令的类型。
当从高速缓存目录管理单元36获取物理地址和CPUID时,分组生成单元37a生成存储有所获取的物理地址和CPUID的分组,即,用作存储器访问请求的分组。另外,分组生成单元37a将所生成的分组发送至路由器40。
图6是用于说明根据实施例从CPU发送的分组的图。根据图6所示的示例,分组生成单元37a生成包括CPUID、物理地址以及表示请求内容的数据的请求,并且将所生成的请求输出至路由器40。在这种情况下,路由器40通过XB连接单元27将分组生成单元37a生成的请求输出至XB2。然后,XB2将请求传送至由包括在请求中的CPUID表示的CPU。
另外,当从高速缓存目录管理单元36接收到发出用于保持一致性的请求或命令的指令时,分组生成单元37a生成所指示的请求或命令。另外,分组生成单元37a通过路由器40、XB连接单元27以及XB2将所生成的请求或命令发送至所指定的CPU。另外,当从I/O装置获取数据时,分组生成单元37a将对I/O装置的访问请求输出至路由器40。
当接收到除本地节点之外的另一CPU或另一I/O装置输出的分组时,分组接收单元37b获取包括在所接收到的分组中的物理地址。另外,当通过PCIe控制单元42和路由器40接收到从本地节点的I/O装置输出的分组时,分组接收单元37b获取包括在所接收到的分组中的物理地址。此外,分组接收单元37b将所获取的物理地址输出至高速缓存目录管理单元36。另外,当接收到从另一CPU发送的数据时,分组接收单元37b将所接收到的数据输出至高速缓存目录管理单元36。
另外,当接收到用于保持一致性的请求或命令时,分组接收单元37b将所接收到的请求或命令输出至高速缓存目录管理单元36。此外,当从路由器40接收到对I/O装置的访问请求的响应或数据时,分组接收单元37b将所接收到的响应或数据输出至高速缓存目录管理单元36。在这种情况下,例如,高速缓存目录管理单元36将所获取的数据输出至存储器访问单元41。通过这种手段,存储器访问单元41将数据存储在存储器22中。
当接收到从分组生成单元37a输出的分组时,路由器40将所接收到的请求输出至XB连接单元27。另外,路由器40通过XB连接单元27接收到从另一CPU发送的分组和数据,并且将所接收到的分组和数据输出至分组接收单元37b。此外,路由器40将从分组控制单元37输出至例如I/O装置的分组输出至PCIe控制单元42。另外,当从PCIe控制单元42接收到例如来自I/O装置的请求时,路由器40例如将所接收到的请求输出至分组控制单元37或XB连接单元27。此外,当通过XB连接单元27或分组控制单元37接收到对I/O装置的响应时,路由器40将所接收到的响应输出至PCIe总线控制单元42b。
存储器访问单元41是所谓的MAC(存储器访问控制器),并且控制对存储器22的访问。例如,当从高速缓存目录管理单元36接收到物理地址时,存储器访问单元41获取存储在由所接收到的物理地址表示的存储器22的区域中的数据,并且将所获取的数据输出至高速缓存目录管理单元36。另外,存储器访问单元41使用存储器镜像功能来使得共享存储器冗余。
另外,存储器访问单元41具有ECC检查单元41a、CE地址寄存器41b以及ICE发生次数计数器41c。
ECC检查单元41a每个预定循环或者每当高速缓存目录管理单元36对存储器22提出读取访问请求时执行以下处理。即,ECC检查单元41a判定是在存储器22的所有存储器区域的数据中还是在访问目标存储器区域的数据中发生了CE。基于该判定,ECC检查单元41a检测CE。当检测到CE时,ECC检查单元41a读取所检测到的CE发生的存储器区域中的数据,校正所读取的数据的错误,并将错误校正后的数据写回到所检测到的CE发生的存储器区域中。另外,ECC检查单元41a再次读取数据被写回的存储器区域中的数据,并且再次判定在所读取的数据中是否发生CE。当基于第二次判定而判定发生了CE时,ECC检查单元41a判定PCE发生。以这样的方式,ECC检查单元41检测到PCE。
另外,ECC检查单元41a将在预定时间内的CE发生次数记录在ICE发生次数计数器41c中,并且当在预定时间内CE发生超过预定次数α时,判定ICE发生。以这样的方式,ECC检查单元41a检测ICE。另外,存储器访问单元41中的处理单元(诸如,微型计算机)可根据程序处理来执行例如对在预定时间内的CE发生次数进行计数的计数操作。
另外,当检测到ICE或PCE时,ECC检查单元41a为CE地址寄存器41b设置所检测到的ICE或PCE发生的存储器22的物理地址。
当通过路由器40获取对I/O装置的访问请求时,请求生成单元42a生成发送至作为访问请求目标的I/O装置的请求,并且将所生成的请求输出至PCIe总线控制单元42b。另外,当从I/O装置获取物理地址和CPUID时,请求生成单元42a生成存储有所获取的物理地址和CPUID的分组,即,用作存储器访问请求的分组。这样的请求的类型包括I/O装置读取与CPU21或其它CPU连接的存储器的请求。另外,当从I/O装置获取物理地址、CPUID以及写入数据时,请求生成单元42a生成存储有所获取的物理地址、CPUID以及写入数据的分组,即,用作存储器访问请求的分组。这样的请求的类型包括I/O装置将数据写入连接到CPU21或其它CPU的存储器中的请求。另外,请求生成单元42a将所生成的分组发送至路由器40。
当请求生成单元42a获取所生成的请求时,PCIe总线控制单元42b通过PCIe连接单元28将请求发送至I/O装置。另外,当通过PCIe连接单元28从I/O装置获取物理地址和CPUID时,PCIe总线控制单元42b将所获取的物理地址和CPUID发送至请求生成单元42a。此外,当通过PCIe连接单元28从I/O装置获取物理地址、CPUID以及写入数据时,PCIe总线控制单元42b将所获取的物理地址、CPUID以及写入数据发送至请求生成单元42a。
接下来,将使用图7描述从CPU21向另一CPU发送请求的处理的示例。图7是用于说明根据实施例从CPU发送请求的处理的示例的图。如由例如图7中(A)所示,服务处理器24对节点映射34设置如下条目:其将访问被分有物理地址的存储器的CPU的CPUID和存储器的物理地址相关联。
另外,计算单元31执行计算处理,并且将访问目标虚拟地址输出至地址转换单元35,如由图7中的(B)所示。然后,地址转换单元35将虚拟地址转换为物理地址,并且将转换后的物理地址输出至高速缓存目录管理单元36,如由图7中的(C)所示。
同时,如由图7中的(D)所示,当从地址转换单元35获取物理地址时,高速缓存目录管理单元36参考节点映射34,并且获取与所获取的物理地址相关联的CPUID。另外,如由图7中的(E)所示,当所获取的CPUID不是CPU21的CPUID时,高速缓存目录管理系统36将所获取的CPUID和物理地址输出至分组控制单元37。
在这种情况下,分组生成单元37a生成存储有从高速缓存目录管理单元36获取的物理地址和CPUID的分组,并且将所生成的分组输出至路由器40,如由图7中的(F)所示。接下来,如由图7中的(G)所示,路由器40将从分组生成单元37a获取的分组输出至XB连接单元27。随后,如由图7中的(H)所示,XB连接单元27将所获取的分组输出至XB2。然后,XB2将分组发送至由分组中所存储的CPUID表示的CPU。
接下来,将使用图8描述当CPU21从另一CPU接收到分组时所执行的处理的示例。图8是用于说明根据实施例当CPU接收分组时所执行的处理的示例的图。例如,如由图8中的(J)所示,分组接收单元37b从另一CPU接收到存储有CPU21的CPUID和被分给存储器22的物理地址的分组、或者响应分组。
在这种情况下,分组接收单元37b从所接收到的分组获取物理地址,并且如由图8中的(K)所示,将所获取的物理地址连同表示所获取的物理地址的请求源是否是本地分区的信息一起输出至高速缓存目录管理单元36。然后,高速缓存目录管理单元36判定由物理地址表示的存储器区域是否是共享区域或本地区域。
当请求源是另一分区时,高速缓存目录管理单元36检查是否访问了共享区域,并且在本地区域的情况下请求分组控制单元37对错误作出响应。在其它情况下,如由图8中的(L)所示,高速缓存目录管理单元36判定由物理区域表示的存储器区域中的数据是否高速缓存在L1高速缓存器32和L2高速缓存器33中。
另外,当判定没有高速缓存该数据时,高速缓存目录管理单元36将物理地址输出至存储器访问单元41,如由图8中的(M)所示。然后,如由图8中的(N)所示,存储器访问单元41从存储器22获取由物理地址表示的存储器区域中的数据,并且将该数据输出至高速缓存目录管理单元36。另外,当物理地址被输入至存储器访问单元41时,如果在由所输入的物理地址表示的存储器区域中所存储的数据中检测到IEC和PEC,则ECC检查单元41a为CE地址寄存器41b设置所输入的物理地址,如由图8中的(O)所示。
另外,当从L1高速缓存器32、L2高速缓存器33或存储器访问单元41获取数据时,高速缓存目录管理单元36将所获取的数据输出至分组控制单元37,并且指示分组控制单元37将该数据发送至请求源的CPU。
接下来,将使用图9描述从I/O装置向除CPU21之外的CPU发送读取或写入请求的处理的示例。图9是用于说明根据实施例从I/O装置发送请求的处理的示例的图。例如,当从I/O装置获取物理地址和CPUID时,PCIe连接单元28将所获取的物理地址和CPUID输出至PCIe总线控制单元42b,如由图9中的(P)所示。另外,当从I/O装置获取物理地址、CPUID以及写入数据时,PCIe连接单元28将所获取的物理地址、CPUID以及写入数据输出至PCIe总线控制单元42b,如由图9中的(P)所示。
此外,当从PCIe连接单元28获取物理地址和CPUID时,PCIe总线控制单元42b将所获取的物理地址和CPUID输出至请求生成单元42a,如由图9中的(Q)所示。另外,当从PCIe连接单元28获取物理地址、CPUID以及写入数据时,如由图9中(Q)的所示,PCIe总线控制单元42将所获取的物理地址、CPUID以及写入数据发送至请求生成单元42a。
当从PCIe总线控制单元42b获取物理地址和CPUID时,请求生成单元42a生成用作包括所获取的物理地址和CPUID的读取请求的分组。另外,当从PCIe总线控制单元42b获取物理地址、CPUID以及写入数据时,请求生成单元42a生成用作包括所获取的物理地址、CPUID以及写入数据的写入请求的分组。另外,如由图9中的(R)所示,请求生成单元42a将生所成的分组输出至路由器40。
接下来,如由图9中的(T)所示,路由器40将从请求生成单元42a获取的请求输出至XB连接单元27。随后,如由图9中的(U)所示,XB连接单元27将所获取的请求输出至XB2。然后,XB2将分组发送至由存储在该请求中的CPUID表示的CPU。
接下来,将使用图10描述在I/O装置从除CPU21之外的CPU接收响应的处理的示例。图10是用于说明根据实施例在I/O装置接收响应的处理的示例的图。例如由图10中的(V)所示,XB连接单元27从除CPU21之外的CPU接收对I/O装置的响应。
当接收到响应时,如由图10中的(W)所示,XB连接单元27将所接收到的响应输出至路由器40。当接收到响应时,如由图10中的(X)所示,路由器40将所接收到的响应输出至请求生成单元42a。另外,如由图10中的(Y)所示,请求生成单元42a将响应输出至PCIe总线控制单元42b。当接收到响应时,如由图10中的(Z)所示,PCIe总线控制单元42b将所接收到的响应输出至PCIe连接单元28。通过这样的手段,响应被从PCIe连接单元28发送至I/O装置。
通信单元23、服务处理器24、XB连接单元27、XB连接单元27a以及PCIe连接单元28是电子电路。同时,作为电子电路的示例,集成电路(诸如,ASIC(专用集成电路)和FGPA(现场可编程门阵列))、CPU或MPU(微处理单元)是可应用的。另外,替代CPU21至21c,集成电路(诸如,ASIC和FGPA)或MPU是可应用的。
另外,存储器22至22a是半导体存储器元件,诸如RAM(随机存取存储器)、ROM(只读存储器)或闪存。另外,L1高速缓存器32和L2高速缓存器33是高速半导体存储元件,诸如SRAM(静态随机存取存储器)。
接下来,将描述在CPU21至21c的每一个中保持高速缓存一致性的处理。另外,在以下描述中,信息处理系统1的每个CPU均使用Illinois协议来保持一致性。
另外,在以下描述中,信息处理系统1的每个存储器被识别为具有所有CPU可以高速缓存数据的空间的存储器。此外,在以下描述中,通过CPU中的MAC直接地且物理地连接到存储所请求的数据的存储器的CPU被称为“主CPU”,并且请求数据以将其存储在其高速缓存器中的CPU被称为“本地CPU”。
另外,已经将请求发送至主CPU并已高速缓存数据的CPU被称为“远程CPU”。另外,在一些情况下,本地CPU和主CPU是相同的,并且在一些情况下,本地CPU和远程CPU是相同的。
本地CPU参考本地CPU的节点映射来判定访问目标物理地址被分给访问主CPU的存储器。另外,本地CPU向主CPU发出存储物理地址的请求。另外,由本地CPU发出的请求包括多种类型的请求。因此,主CPU的高速缓存目录管理单元根据所获得的请求的类型控制高速缓存一致性。
由本地CPU发出的请求的类型例如包括共享的提取(fetch)访问、排他的提取访问、高速缓存无效请求以及高速缓存替换请求。共享的提取访问是例如“移入共享(MoveIntoShare)”的执行请求,并且是在主CPU从要访问的存储器读取数据时发出的请求。
另外,排他的提取访问是例如“排他地移入(MoveInExclusively)”的执行请求,并且是在主CPU将数据存储在要访问的存储器中时将数据加载到高速缓存器时发出的。此外,高速缓存无效请求是例如“移出(MoveOut)”的执行请求,并且是在请求主CPU使高速缓存线无效时发出的。另外,当接收到高速缓存无效请求时,在一些情况下主CPU向远程CPU发出高速缓存无效请求,并且在一些情况下发出执行高速缓存器的“无效(Invalidation)”的命令。
高速缓存替换请求是例如“写回(WriteBack)”的执行请求,并且是在主CPU将更新后的高速缓存数据(即,处于“已修改(Modified)”状态的高速缓存数据)写入要访问的存储器时发出的。另外,高速缓存替换请求是例如“回刷(FlushBack)”的执行请求,并且是在放弃没有更新的高速缓存数据(即,处于“共享的”或“排他的”的状态的高速缓存数据)时发出。
当从本地CPU或远程CPU接收到以上请求时,主CPU向本地CPU或远程CPU发出命令以处理请求。同时,主CPU根据所获得的请求的类型发出多种类型的命令以控制高速缓存一致性。例如,主CPU向本地CPU发出“移出并旁路以共享(MoveOutandBypasstoShare)”以加载远程CPU高速缓存的数据。
另外,例如,主CPU使除本地CPU之外的所有远程CPU的高速缓存器无效,然后,主CPU向本地CPU发出“排他地移出并旁路(MoveOutandBypassExclusively)”以发送数据。此外,主CPU发出用于请求远程CPU使高速缓存器无效的“移出与无效(MoveOutWITHInvalidatio)”。另外,当主CPU发出“移出与无效”时,所有CPU高速缓存器进入目标地址的“无效”状态。另外,当事务完成时,本地CPU高速缓存数据。
另外,主CPU发出用于请求远程CPU使高速缓存线无效的“移出以刷新(MovOutforFlush)”。另外,当主CPU发出“移出以刷新”时,目标数据仅存储在主CPU的存储器中。另外,当目标数据状态是“共享的”时,主CPU发出用于请求远程CPU放弃高速缓存器的“缓冲器无效(BufferInvalidation)”。
主CPU根据请求的类型发出以上命令,并且转变每个CPU高速缓存的数据的状态。另外,当接收到命令时,本地CPU和远程CPU执行由命令表示的处理,并且转变由本地CPU和远程CPU高速缓存的数据的状态。
随后,本地CPU和远程CPU将对命令的完成的响应或具有数据的完成响应发送至主CPU。另外,主CPU和远程CPU执行有序处理,然后,将具有数据的请求响应发送至本地CPU。
处理的流程
接下来,将使用图11描述控制控制共享区域的信息处理系统1的处理的流程。图11是用于说明控制共享区域的处理的流程的流程图。首先,信息处理系统1根据来自应用程序的请求执行在节点之间分配共享存储器的处理(步骤S101)。接下来,信息处理系统1执行附接在节点之间共享的共享存储器的处理(步骤S102)。
随后,信息处理系统1的每个CPU执行的应用程序使用每个存储器(步骤S103)。接下来,信息处理系统1执行拆卸共享存储器的处理(步骤S104)。随后,信息处理系统1执行释放共享存储器的处理(步骤S105),并且结束处理。另外,仅该共享存储器的主节点的应用程序可以执行步骤S101和步骤S105,或者当实际处理是nop(无操作)时,除该共享存储器的主节点之外的节点的应用程序也可以执行步骤S101和步骤S105。
接下来,将使用图12描述图11中的步骤S101中分配共享存储器的处理的流程。图12是用于说明分配共享存储器的处理的流程图。根据图12所示的示例,CPU21执行的应用程序请求OS执行在节点之间分配共享存储器的处理(步骤S201)。
然后,CPU21执行的OS分配具有从用于共享区域的物理地址区域请求的大小的存储器(步骤S202)。接下来,将由OS分配的共享存储器的管理ID传递到应用程序(步骤S203),并且结束共享存储器分配处理。
接下来,将使用图13描述图11中的步骤S102中在节点之间附接共享存储器的处理的流程。图13是用于说明共享存储器附接处理的流程图。首先,应用程序将管理ID传递到OS,并且请求在节点之间附接共享存储器的处理(步骤S301)。在这种情况下,OS与另一节点执行的OS通信,并且获取与管理ID相关联的物理地址(步骤S302)。
同时,当OS与另一节点执行的OS通信时,使用通过LAN的通信或通过服务处理器24在节点之间的通信。另外,每个节点执行的OS将特定的共享存储器设置为用于节点之间的通信的区域,并且存储或读取关于所设置的区域的信息以执行通信。
接下来,OS确定并分配与物理地址相关联的虚拟地址(步骤S303)。例如,CPU21执行的OS为地址转换单元35设置物理地址和虚拟地址的TLB35a。
另外,CPU21至21c中的每一个使用的虚拟地址可以是重叠的范围,或可以按每个CPU变化的范围。另外,可以由应用程序对于OS指定CPU21至21c中的每一个使用的虚拟地址。随后,将虚拟地址的值传递到应用程序(步骤S304),并且结束处理。
接下来,将使用图14描述图11中的步骤S103中在应用程序中使用节点之间的共享存储器的处理的流程。图14是用于说明在应用程序中使用共享存储器的处理的流程图。例如,CPU21执行的应用程序发出虚拟地址,并且访问由虚拟地址表示的存储器区域(步骤S401)。
然后,CPU21判定TLB失误是否发生(步骤S402)。另外,当TLB失误发生时(在步骤S402中为是),CPU21执行陷阱处理,并且为TLB设置作为一组虚拟地址与物理地址的条目(步骤S403)。
接下来,应用程序再次发出虚拟地址,使用TLB将虚拟地址转换为物理地址,然后正常地访问共享存储器(步骤S404),并结束处理。同时,当TLB失误没有发生时(在步骤S402中为否),正常地执行对共享存储器的访问(步骤S405),并且结束处理。
接下来,将使用图15描述图11中的步骤S104中拆卸节点之间的共享存储器的处理的流程。图15是用于说明拆卸节点之间的共享存储器的处理的流程图。例如,CPU21执行的应用程序对OS指定节点之间的共享存储器的虚拟地址或管理ID,并且请求拆卸处理(步骤S501)。
然后,CPU21执行的OS刷新高速缓存器(步骤S502)。即,当在释放(解除分配)共享存储器的分配之后OS再次分配共享存储器时,如果在没有分配共享存储器的同时共享存储器的主节点重新启动,则涉及高速缓存器的状态和实存储器的状态冲突。因此,OS刷新高速缓存器,并且防止高速缓存器的状态和实存储器的状态冲突的状态。
另外,OS取消节点间共享存储器(即,应用程序使用的虚拟地址的范围)的分配,并且删除与所取消的虚拟地址相关的TLB35a的条目(步骤S503)。另外,随后,即使当在该节点上在所拆卸的存储器地址中发生TLB失误时(在步骤S402中为是),OS也不为TLB35a设置与所拆卸的虚拟地址相关联的物理地址。因此,步骤S404没有正常地结束,并且发生了访问错误。不同于步骤S302中的处理,在完成拆卸之后,OS执行节点之间的通信,并且该应用程序通知完成对该共享存储器的PA的访问(步骤S504)。如果在主节点上释放该共享存储器并且该应用程序是使用该共享存储器的最后应用程序,则请求主节点执行释放处理(步骤S505),并且结束处理。
接下来,将使用图16描述图11中的步骤S105中释放节点间共享存储器的处理的流程。图16是用于说明释放节点间共享存储器的处理的流程图。例如,CPU21执行的应用程序请求OS执行释放节点间共享存储器的处理(步骤S601)。然后,当所有用户拆卸所指定的共享存储器时,OS释放分配(步骤S602),并且结束处理。如果未完成拆卸,则完成处理而不执行分配释放处理。另外,在步骤S505中执行完成实际分配的处理。
接下来,将使用图17描述从CPU21向另一CPU发送存储器访问请求的处理的流程。图17是用于说明发出请求的处理的流程的流程图。例如,CPU21的计算单元31发出虚拟地址(步骤S701)。
然后,地址转换单元35将虚拟地址转换为物理地址(步骤S702)。接下来,高速缓存目录管理单元36获取物理地址,并且管理高速缓存目录(步骤S703)。即,高速缓存目录管理单元36转变由所获取的物理地址表示的存储器区域的高速缓存状态。
接下来,高速缓存目录管理单元36参考节点映射34,并且判定所获取的物理地址是否是被分给另一节点(另一分区)的存储器的物理地址(步骤S704)。另外,当判定所获取的物理地址不是被分给另一节点(另一分区)的存储器的物理地址时(在步骤S704中为否),高速缓存目录管理单元36使用所获取的物理地址执行存储器访问(步骤S705)。此外,结束处理。
同时,当所获取的物理地址是被分给另一节点(另一分区)的存储器的物理地址时(在步骤S704中为是),高速缓存目录管理单元36从节点映射获取与物理地址相关联的CPUID(步骤S706)。另外,分组发送单元生成存储有CPUID和物理地址的分组(即,存储器访问请求)并将分组发送至XB2(步骤S707),并且结束处理。
接下来,将使用图18描述当CPU21从另一CPU接收存储器访问请求时所执行的处理的流程。图18是用于说明当接收到请求时所执行的处理的流程的流程图。另外,根据图18所示的示例,当CPU21从另一CPU接收到“移入共享”或“排他地移入”时所执行的处理的流程。例如,CPU21通过XB2从另一CPU接收请求(步骤S801)。
在这种情况下,CPU21使用节点映射来判定请求目标物理地址是否是本地区域(步骤S802)。另外,当请求目标物理地址是本地区域时(在步骤S802中为是),CPU21将拒绝响应返回给请求源CPU(步骤S803),并且结束处理。
此外,当请求目标物理地址不是本地区域时(步骤S802中为否),CPU21管理保持一致性的高速缓存目录(步骤S804)。另外,CPU21判定由物理地址表示的存储器区域的状态(步骤S805)。
另外,CPU21向另一CPU发出与所判定的状态匹配的命令(步骤S806),并且转变状态(步骤S807)。随后,CPU21对用于将由物理地址表示的存储器区域中的数据发送至请求源CPU作出应答(步骤S808),并且结束处理。
接下来,将使用图19描述在每个预定循环或每当高速缓存目录管理单元36向存储器22提出读取访问请求时由ECC检查单元41a执行的处理的流程。图19是用于说明由ECC检查单元执行的处理的流程的流程图。如图19所示,ECC检查单元41a检查存储器22的所有存储器区域中的数据和访问目标存储器区域中的数据的错误(步骤S901)。另外,ECC检查单元41a判定CE是否发生(步骤S902)。
当CE没有发生时(在步骤S902中为否),即,例如当数据正常或PE发生时,结束处理。另外,在这种情况下,存储器访问单元41将在读取访问目标存储器区域中的数据发送至高速缓存目录管理单元36。同时,当CE发生时(在步骤S902中为是),ECC检查单元41a读取在CE发生的存储器区域中的数据,校正所读取的数据的错误,并将错误校正后的数据写回到CE发生的存储器区域中(步骤S903)。另外,ECC检查单元41a再次读取数据被写回的存储器区域中的数据(步骤S904),并且针对所读取的数据再次(第二次)检查错误(步骤S905)。
随后,ECC检查单元41判定在再次检查错误的数据中是否发生了CE(步骤S906)。当CE发生时(在步骤S906中为是),ECC检查单元41a向CE地址寄存器41b设置CE发生的存储器22的物理地址(步骤S907),并且结束处理。通过这样的手段,能够检测ICE。
同时,当在第二次错误检查中没有发生CE时(在步骤S906中为否),ECC检查单元41a使与CE发生的存储器22的物理地址对应的ICE发生次数计数器41a的值加1(步骤S908)。同时,按存储器22的每个预定存储器区域设置ICE发生次数计数器41c。例如,当可以根据ECC按每64字节执行一位的错误校正时,则每64字节设置ICE发生次数计数器41c。另外,可以按通过分割存储器22的存储器区域而获得的每页设置ICE发生次数计数器41c。
另外,ECC检查单元41a判定ICE发生次数计数器的值是否是阈值α或更小(步骤S909)。当ICE发生次数计数器的值大于阈值α时(在步骤S909中为否),该步骤进行至步骤S907。同时,当ICE发生次数计数器41c的值是阈值α或更小时(在步骤S909中为是),完成处理。
接下来,将使用图20描述每个预定循环由ECC检查单元41a执行的处理的流程。图20是用于说明由ECC检查单元执行的处理的流程的流程图。在比执行图19所示的处理的循环长的循环内执行该处理。如图20所示,ECC检查单元41a将ICE发生次数计数器41c的值清零(步骤S1001),并且结束处理。
另外,ECC检查单元41a对发生的CE进行计数并计算通过将CE次数除以计数所花费的时间而获得的值(每单位时间CE的发生次数),并且当所算出的值超过阈值β时可以判定ICE发生。将描述由ECC检查单元41a以这样的方式执行的检测ICE发生的处理的示例。
图21至图27是用于说明ECC检查单元执行的检测ICE的发生的处理的示例的图。图21至图27示出了ECC检查单元41a使用的表的示例。通过图21至图27的示例所示的表包括登记每单位时间的CE发生次数的“平均值”项、登记CE发生次数的计数开始的时间的“开始时间”项以及登记CE最后一次发生的时间的“最终发生时间”项。
例如,在图21所示的表中所登记的内容表示CE发生次数的计数开始于2011年1月1日0:00,并且CE最后一次发生的时间是2011年1月1日3:30。另外,在图21所示的表中所登记的内容表示通过将从2011年1月1日0:00至3:30的210分钟内发生的CE的次数除以210分钟所获得的值(即,在一分钟的单位时间内发生的CE的次数的平均值)是0.1(次/分)。
将根据图21中的示例说明下述情况:ECC检查单元41a在2011年1月1日3:50检测到新的CE。在这种情况下,根据通过图21中的示例所示的表,ECC检查单元41a计算从2011年1月1日0:00至3:30的210分钟内发生的CE的次数“21”(0.1×210)。另外,ECC检查单元41a计算从2011年1月1日0:00至3:50的230分钟内发生的CE的次数“22”(21+1)。随后,ECC检查单元41a计算通过将在从2011年1月1日0:00至3:50的230分钟内发生的CE的次数“22”除以230分钟所获得的值,即,在一分钟的单位时间内发生的CE的次数的平均值“0.095”。另外,如在图22的示例中所示,ECC检查单元41a将表的“平均值”项和“最终发生时间”项分别更新为“0.095”和“2011/1/103:50”。随后,ECC检查单元41a判定平均值“0.095”是否超过阈值β,在平均值超过阈值β时检测到ICE的发生,并且为CE地址寄存器41b设置发生了CE的存储器22的物理地址。
另外,如在图23中的示例所示,在每项中登记“0”作为表缺省值。另外,在“开始时间”项和“最终发生时间”项中的“0”是指系统中的特定时间,诸如在Unix(注册商标)系统中的1970年1月1日0:00。
另外,ECC检查单元41a在CE第一次发生时执行以下处理。将根据图23中的示例描述以下情况:ECC检查单元41a在2011年1月1日0:00检测到第一次CE。在这样的情况下,如在图24中的示例所示,ECC检查单元41将表中的“平均值”项、“开始时间”项以及“最终发生时间”项分别更新为“1”、“2011/1/100:00”以及“2011/1/100:00”。
另外,ECC检查单元41a在第二次CE发生时执行以下处理。将根据图24中的示例描述以下情况:ECC检查单元41a在2011年1月1日0:05检测到第二次CE。在这样的情况下,ECC检查单元41a计算从2011年1月1日0:00至0:05的5分钟内发生的CE的次数“2”(1+1)。随后,ECC检查单元41a计算通过将从2011年1月1日0:00至0:05的5分钟内发生的CE的次数“2”除以5分钟所获得的值,即,在一分钟的单位时间内发生的CE的次数的平均值“0.4”。另外,如在25的示例中所示,ECC检查单元41a将表的“平均值”项和“最终发生时间”项分别更新为“0.5”和“2011/1/100:05”。
另外,当在登记“最终发生时间”项的时间之后经过了预定时间(诸如,一个小时以上)后检测到CE,ECC检查单元41a可以检测到该CE的发生为第一次CE的发生。将根据图26中的示例描述以下情况:在表的“最终发生时间”项中登记表示在2011年1月1日3:30最终检测到CE的信息。在这种情况下,当在从2011年1月1日3:30起经过预定时间(一个小时)或更多时间之后在2011年1月1日5:30检测到CE时,ECC检查单元41a检测到第一次检测到CE。另外,如在图27中所示,ECC检查单元41a将表中的“平均值”项、“开始时间”项以及“最终发生时间”项分别更新为“1”、“2011/1/105:30”以及“2011/1/105:30”。通过这样的手段,当CE发生频率快速上升时,能够防止注意到CE发生频率由于过去的发生频率低而上升。
在下文中,将描述由CPU21执行的OS执行的处理。图28A是示出根据实施例由CPU执行的OS的功能配置的示例的图。图28B是示出在OS的处理中所参考的表的数据配置的示例的图。图29至图33、图36和图39是用于说明由OS执行的处理的流程的流程图。
图28A示出了主节点50和远程节点70中的OS的功能配置。根据图28A中的示例,主节点50具有检测单元51、停止单元52、停止请求单元53、发送单元54、接收单元55、判定单元56、重映射单元57、重映射请求单元58、重新开始单元59以及重新开始请求单元60。另外,远程节点70具有接收单元71、停止单元72、完成通知创建单元73、发送单元74、重映射单元75以及重新开始单元76。
如图29所示,检测单元51通过判定是否为CE地址寄存器41b设置存储器22的物理地址来判定是否发生了ICE或PCE(步骤S1101)。当ICE或PCE没有发生时(在步骤S1101中为否),检测单元51再次执行步骤S1101中的处理。另外,当ICE或PCE发生时(在步骤S1101中为是),检测单元51判定在共享存储器中是否发生了ICE或PCE(步骤S1102)。例如,检测单元51判定为CE地址寄存器41b设置的物理地址是否是共享存储器的存储器区域的地址。通过这样的手段,检测单元51可以判定在共享存储器中是否发生了ICE或PCE。另外,当为CE地址寄存器41b设置虚拟地址时,检测单元51参考登记有将虚拟地址转换为物理地址的等式的表,根据虚拟地址计算物理地址,并且判定物理地址是否是共享存储器的存储器区域的地址。同时,这样的表包括将表示地址区域的信息、由地址区域表示的物理地址的范围、将虚拟地址转换为物理地址的等式以及将物理地址转换为虚拟地址的等式关联并注册的条目。例如,检测单元51参考图28B中所示的表来根据虚拟地址计算物理地址。
当在共享存储器中没有发生ICE或PCE时(在步骤S1102中为否),检测单元51执行预定处理(步骤S1103),并且结束处理。同时,预定处理参考例如退化或保留目标页的退化。另外,存储器访问单元41可以通过忽略CE的发生来执行将数据发送至高速缓存目录管理单元36的处理。
同时,当在共享存储器中发生了ICE或PCE时(在步骤S1102中为是),停止单元52执行访问停止处理(步骤S1104)。另外,停止请求单元53将指示使用共享存储器的另一节点(远程节点70)OS停止访问共享存储器的指令(访问停止请求)发送至发送单元54(步骤S1105)。通过这样的手段,发送单元54将访问停止请求发送至使用共享存储器的另一节点。另外,接收到访问停止请求的远程节点70的OS执行访问停止处理,并且停止对共享存储器的访问。另外,远程节点70的OS向主节点50通知完成了共享存储器的访问停止处理。另外,发送单元54将访问停止请求发送至与本地节点连接的所有其它节点,或者参考在图28C的示例中所示的表,指定使用共享存储器的节点并将访问停止请求发送至所指定的节点。在图28C的示例中所示的表包括使共享存储器的物理地址、共享存储器的虚拟地址、共享存储器的存储器长度、使用共享存储器的节点的标识符和表示下一条目的指针关联的条目。
随后,判定单元56判定本地节点(主节点50)和其它节点是否停止访问共享存储器(步骤S1106)。例如当检查到停止单元52完成访问停止处理时,判定单元56判定本地节点停止访问共享存储器。另外,当接收单元55接收到完成了对共享存储器的访问停止处理的通知时,判定单元56判定已发送通知的另一节点停止访问共享存储器。
当判定本地节点(主节点50)和另一节点停止访问共享存储器时(在步骤S1106中为是),重映射单元57执行页面重映射处理(步骤S1107)。
同时,根据具体示例将描述页面重映射处理的处理内容。例如,根据页面重映射处理,包括发生了ICE或PCE的存储器区域的页面首先被分割成多个页面,以使发生了ICE或PCE的存储器区域包括在具有最小大小的分割页面中。当例如一个页面具有256MB时,包括发生了ICE或PCE的存储器区域的一个页面(256MB)被如下分割成多个页面,以使包括发生了ICE或PCE的存储器区域的页面包括在最小大小为8KB的页面中。例如,一个页面(256MB)被分割成128MB(1页)、8KM(8页)、64KB(63页)以及4MB(31页)的总共103个页面。通过这样的手段,能够将复制量从256KB抑制为8KB。执行该页面分割处理以减少复制处理时间,并且不一定是不可缺少的处理。即,不必要执行该页面分割处理。替选地,仅当可以使用(未被应用程序使用)的节点间共享存储器具有一定容量或更少容量、或者不足时,可以执行页面分割处理。这是因为即使不能获得256MB的页面,也可以获得8KB的页面。另外,根据页面重映射处理,获得复制目的地页面。另外,在启动OS或启动应用程序仅可以获得由用户指定的或系统固定的复制目的地页面的大小,以使得可以获得复制目的地页面而不会失败。随后,根据页面重映射处理,包括发生了ICE或PCE的存储器区域的页面(8KB)的页面被复制到复制目的地页面。另外,当没有执行页面分割处理时,根据上述示例复制诸如整个256MB的整个原始页面。随后,根据页面重映射处理,为OS的管理区域设置新的页面配置。
随后,重映射请求单元58向发送单元54发送将页面重映射到使用共享存储器的另一节点的OS的指令(页面重映射请求)(步骤S1108)。通过这样的手段,发送单元54将页面重映射请求发送至使用共享存储器的另一节点。另外,已接收到页面重映射请求的远程节点70的OS执行页面重映射处理,并且重映射页面。另外,远程节点70的OS向主节点50通知完成了页面重映射处理。另外,发送单元54将页面重映射请求发送至与本地节点连接的所有其它节点,或者参考图28C的示例中所示的表,指定使用共享存储器的节点并将页面重映射请求发送至所指定的节点。
随后,判定单元56判定本地节点和其它节点是否完成了对页面重映射(步骤S1109)。例如,当检查到重映射单元57完成了页面重映射处理时,判定单元56判定本地节点完成了对页面重映射。另外,当接收单元55接收到完成了页面重映射处理的通知时,判定单元56判定发送了通知的另一节点完成了对页面重映射。
当判定本地节点和另一节点完成了对页面重映射时(在步骤S1109中为是),重新开始单元59执行访问重新开始处理(步骤S1110)。另外,重新开始请求单元60将指示使用共享存储器的另一节点的OS重新开始对共享存储器的访问的指令(访问重新开始请求)发送至发送单元54(步骤S1111),并且结束处理。通过这样的手段,发送单元54将访问重新开始请求发送至使用共享存储器的另一节点。另外,接收到访问重新开始请求的远程节点70的OS执行访问重新开始处理,并且重新开始对共享存储器的访问。另外,远程节点70的OS向主节点50通知完成了访问重新开始处理。另外,发送单元54将访问重新开始请求发送至与本地节点连接的所有其它节点,或者参考在图28C的示例中所示的表,指定使用共享存储器的节点并将访问重新开始请求发送至所指定的节点。
接下来,将使用图30描述由接收到访问停止请求的远程节点70的OS执行的处理。图30是用于说明由接收到访问停止请求的远程节点的OS执行的处理的流程图。如图30所示,停止单元72执行访问停止处理(步骤S1201)。另外,完成通知创建单元73向发送单元74通知完成了访问停止处理(步骤S1202),并且结束处理。同时,接收到完成了访问停止处理的通知的发送单元74将完成了访问停止处理的通知发送至主节点50。
接下来,将使用图31描述由接收到页面重映射请求的远程节点70的OS执行的处理。图31是用于说明由接收到页面重映射请求的远程节点的OS执行的处理的流程图。如图31所示,重映射单元75执行页面重映射处理(步骤S1301)。根据该页面重映射处理,为OS的管理区域设置新的页面配置(VA与RA之间的新对应关系)。另外,完成通知创建单元73向发送单元74通知完成了页面重映射处理(步骤S1302),并且结束处理。同时,接收到完成了页面重映射处理的通知的发送单元74将完成了页面重映射处理的通知发送至主节点50。
接下来,将使用图32描述由接收到访问重新开始请求的远程节点70的OS执行的处理。图32是用于说明由接收到访问重新开始请求的远程节点的OS执行的处理的流程图。如图32所示,重新开始单元76执行访问重新开始处理(步骤S1401),并且结束处理。另外,完成通知创建单元73也可以在步骤S1401的处理之后向发送单元74通知完成了访问停止处理。同时,接收到完成了访问停止处理的通知的发送单元74将完成了访问停止处理的通知发送至主节点50。
接下来,将使用图33描述图29中的步骤S1104和图30中的步骤S1201的访问停止处理的流程。图33是用于说明访问停止处理的流程图。如图33所示,停止单元52(停止单元72)获取用于所指定的共享存储器的存储器管理表(页面管理表)的I/O处理锁定(步骤S1501)。通过这样的手段,挂起对I/O装置的访问。
同时,将描述存储器管理表的数据配置的示例。图34是示出存储器管理表的数据配置的示例的图。图34的示例中的存储器管理表包括登记了表示访问停止标记的开/关状态的值的“访问停止标记”项和登记了表示I/O处理锁定的状态的值的“I/O处理锁定”项。另外,图34的示例中的存储器管理表包括登记了指向另一页面管理表的指针的“指向另一页面管理表的指针”项和登记了指向地址转换表的指针的“指向地址转换表的指针”项。另外,图34的示例中的存储器管理表包括登记了各种类型的其它管理信息项的“其它管理信息”项。
另外,将描述由在存储器管理表中所登记的“指向地址转换表的指针”表示的地址转换表。图35是示出地址转换表的数据配置的示例的图。图35的示例中的地址转换表包括登记了存储器22的物理地址的“PA”项,登记了与物理地址相关联的虚拟地址的“VA”项、以及登记了由存储器22的物理地址表示的存储器区域的大小的“区域长度”项。另外,图35的示例中的地址转换表包括登记了指向页面管理表的指针的“指向页面管理表的指针”项和登记了指向另一地址转换表的指针的“指向另一地址转换表的指针”项。另外,图35的示例中的地址转换表包括登记了各种类型的其它管理信息项的“其它管理信息”项。
另外,停止单元52(停止单元72)为所指定的共享存储器设置存储器管理表的访问停止标记(步骤S1502)。通过这样的手段,停止对共享存储器的访问。随后,停止单元52(停止单元72)参考地址转换表,并且当在TLB35a中登记将共享存储器的虚拟地址与物理地址相关联的条目时执行以下处理。即,停止单元52(停止单元72)从TLB35a删除条目(步骤S1503),并且结束处理。
同时,当从TLB35a删除将共享存储器的虚拟地址与物理地址相关联的条目时,如果应用程序访问共享存储器,则TLB失误发生。根据本示例,当这样的TLB失误发生时,作为中断处理,执行TLB失误处理,并且阻止应用程序对共享存储器的访问。
图36是用于说明TLB失误处理的流程的流程图。如图36所示,OS根据中断发生的进程计数器指定进程(步骤S1601)。随后,OS根据发生地址搜索图35中所示的地址转换表。当发现对应的地址转换表时,检查由该地址转换表中的页面管理表的指针指示的页面管理表。判定由访问目的地地址表示的存储器区域是停止了访问的存储器区域,是发生换出(swapout)的存储器区域(其中记录有已执行换出的信息),还是异常发生的存储器区域(不具有地址转换表的存储器区域)(步骤S1602)。
当访问停止标记为开时(即,当存储器区域是停止了访问的存储器区域时)(步骤S1602:停止访问),OS从正执行进程列表中移除目标进程信息,并且将正执行进程列表移动至访问重新开始等待列表(步骤S1603)。同时,将描述访问重新开始等待列表的数据配置的示例。图37是示出访问重新开始等待列表的数据配置的示例的图。图37的示例中所示的访问重新开始等待列表包括登记了用于识别进程的标识符的“进程标识符”项、以及登记了表示撤销了登记信息(诸如,重新开始进程计数器)的区域的指针的“进程恢复信息”。另外,图37的示例中所示的访问重新开始等待列表包括登记了重新开始等待共享存储器的虚拟地址的“重新开始等待共享存储器地址”项、以及登记了指向下一列表的指针的“指向下一列表的指针”项。
随后,OS请求OS中的调度模块启动另一进程(步骤S1606),并且结束处理。
另外,在换出发生的存储器区域的情况下(步骤S1602:换出),OS在对访问目的地页面的处理中启动交换(步骤S1604)。另外,OS从正执行进程列表中移除目标进程信息并将目标进程信息移动到调度等待列表(步骤S1605),并且进行至步骤S1606。同时,将描述调度等待列表的数据配置的示例。图38是示出访问重新开始等待列表的数据配置的示例的图。图38的示例中所示的访问重新开始等待列表包括登记了用于识别进程的标识符的“进程标识符”项、以及登记了表示撤销了登记信息(诸如,重新开始进程计数器)的区域的指针的“进程恢复信息”项。另外,图38的示例中所示的访问重新开始等待列表包括登记了指向下一列表的指针的“指向下一列表的指针”项。
此外,在异常发生的存储器区域的情况下(步骤S1602:异常地址),OS执行引起在访问进程中的访问错误的“异常地址访问处理”(步骤S1607),并且结束处理。
接下来,将使用图39描述在图29的步骤S1110和图32的步骤S1401中的访问重新开始处理的流程。图39是用于说明访问重新开始处理的流程图。如图39所示,重新开始单元59(重新开始单元76)使用于所指定的共享存储器的存储器管理表的访问停止标记清零(步骤S1701)。通过这样的手段,CPU重新开始对共享存储器的访问。
另外,重新开始单元59(重新开始单元76)释放用于所指定的共享存储器的存储器管理表的I/O处理锁定(步骤S1702)。通过这样的手段,I/O重新开始访问。随后,重新开始单元59(重新开始单元76)检查访问重新开始等待进程列表并将进程移动到调度等待列表(步骤S1703),并且结束处理。
另外,例如由停止单元52、停止单元72、重新开始单元59以及重新开始单元76执行的处理可通过进程来执行。图40是示出根据实施例的OS的功能配置和由CPU执行的进程的示例的图。图40的示例与图28A的示例的区别在于与图28A的示例相比,进程包括停止单元52、停止单元72、重新开始单元59以及重新开始单元76。同时,OS创建预先将共享存储器的物理地址与各种类型的事件处理器相关联的信息。例如,当应用程序请求OS将与该事件相关的“共享存储器的地址”、“需要接收的事件类型”(访问停止请求和访问重新开始请求)和“事件处理器程序的地址“相关联时创建该信息。应用程序通常仅知道“共享存储器的虚拟地址(VA)”,并且不知道物理地址(PA)。然后,OS侧将VA转换为PA,并且记录PA。当与该PA相关的事件(例如,访问停止请求)发生时,启动与该事件和PA相关联的事件处理器程序。(登记事件处理器程序的开始地址,并且从该开始地址起开始程序操作)。
另外,当检测单元51检测到ICE或PCE时,停止单元52和停止单元72参考创建的信息,并且对与为CE地址寄存器41b设置的共享存储器的物理地址相关联的第一事件处理器进行读取。更具体地,当在应用程序进行操作的同时事件发生时,将在该时间点进行操作的寄存器信息撤销到堆栈,并且从第一事件处理器程序的开始地址起开始事件处理器程序的操作。然后,第一事件处理器停止从应用程序对共享存储器的每次访问(读取/写入以及I/O访问)。停止访问的方法包括(1)在程序中准备并创建“用于共享存储器的访问停止标记”,以使得仅当标记不为开时应用程序继续访问。该方法还包括在第一事件处理器中开启该标记,以及(2)在第一事件处理器中停止应用程序的操作并且停止应用程序处理的每个进程。
另外,当判定单元56判定本地节点和另一节点重映射页面时,重新开始单元59参考所创建的信息,并且对与为CE地址寄存器41b设置的共享存储器的物理地址相关联的第二事件处理器进行读取。然后,应用程序(进程)重新开始对所指定的共享存储器的所有停止的访问(读取/写入以及I/O访问)。另外,当接收到访问重新开始请求时,重新开始单元76参考创建的信息,并且对与为CE地址寄存器41b设置的共享存储器的物理地址相关联的第二事件处理器进行读取。更具体地,当在应用程序进行操作的同时事件发生时,将在该时间点进行操作的寄存器信息撤销到堆栈,并且从第一事件处理器程序的开始地址起开始事件处理器程序的操作。然后,第二事件处理器重新开始从应用程序(进程)对所指定的共享存储器的所有停止的访问。重新开始访问的方法包括(1)在程序中准备并创建“共享存储器的访问停止标记”,以使得仅当标记不为开时应用程序继续访问。该方法还包括在第二事件处理器中关闭标记,以及(2)由于应用程序停止在第一事件处理器中进行操作,因此对PC重新写入并且从第一事件处理器返回应用程序处理。另外,从重新开始单元59直接调用的本地节点中的事件处理器和从重新开始单元76调用的另一节点中的事件处理器可以是包括单个指令序列的程序或包括不同指令序列的程序。(这是程序员的偏好,并且可以执行两者)。
实施例的效果
如上所述,信息处理系统1包括每一个均具有存储器的多个构件块和连接在多个构件块之间的XB2。多个构件块的至少一个构件块10执行对如下数据的处理:该数据包括在构件块10或其它构件块的存储器中,并且存储在构件块10或其它构件块访问的共享存储器区域中。即,构件块10检测在预定时间内发生了超过预定次数的ICE,或者检测在共享存储器区域中的单个位置处发生的PCE。当检测到错误时,构件块10执行控制以阻止构件块10和其它构件块访问共享存储器。构件块10在不同于共享存储器区域的存储器中的恢复数据。构件块10向另一构件块通知不同的存储器区域。构件块10执行控制以重新开始从构件块10或其它构件块对共享存储器的访问。因此,信息处理系统1可以抑制信息处理系统1发生故障的可能性。
另外,信息处理系统1基于所接收到的物理地址判定访问目标是共享区域还是本地区域,并且可以为存储在本地区域中的内核数据或用户数据保持高的安全级别。此外,信息处理系统1使得所有存储器可高速缓存,并且可以容易地掩盖在存储器访问时的潜伏时间(latency)。
另外,根据与对存储器22的访问相同的方法,CPU21访问另一CPU访问的存储器的共享区域。即,即使当在存储器22或其它存储器上存在访问目标存储器区域时,CPU21的计算单元31仅需要输出虚拟地址。
因此,CPU21可以容易地访问共享区域而不执行例如诸如I/O的排他控制的处理和编程,并且因此,改善了存储器访问性能。另外,CPU21可以适当地使用共享存储器而不修改要执行的程序或OS,结果,执行与传统的方法类似的预取处理,使得能够改善存储器访问性能。
此外,当来自另一CPU的存储器访问目标是对本地区域的访问时CPU21返回拒绝响应。因此,信息处理系统1阻止对除共享区域之外的区域的访问,结果,可以阻止错误。
另外,高速缓存目录管理单元36使用节点映射34来将物理地址转换为与节点映射34相关联地存储的CPUID。因此,CPU21可以识别访问被分有访问目标物理地址的存储器的CPU。
另外,CPU21使用用于管理高速缓存存储器22中所存储的数据的CPU的目录来控制高速缓存一致性。结果,即使当信息处理系统1的CPU的数量增加时,信息处理系统1可以有效地保持高速缓存一致性而不增加XB2的流量(traffic)。
更具体地,在信息处理系统1中,CPU之间的通信将被限制在远程CPU与主CPU之间或在远程CPU、主CPU与高速缓存更新后的数据的本地CPU之间。结果,信息处理系统1可以有效地保持高速缓存一致性。
尽管描述了本发明的示例,但是除了上述示例之外,还可以实现各种不同的示例。在下文中,将描述其它实施例。
(1)关于构件块
以上信息处理系统1包括具有4个CPU的构件块10至10e。然而,示例并不限于此,并且构件块10至10e可以具有任意数量的CPU和每个CPU访问的存储器。另外,CPU和存储器不必一对一地相关联,并且直接访问存储器的CPU可以是整体的一部分。
(2)关于CPU发送的分组
上述CPU21发送包括CPUID和PA(物理地址)的分组作为存储器访问请求。然而,示例并不限于此。即,如果CPU21可以唯一地识别访问访问目标存储器的CPU,则CPU21可输出存储任意信息的分组。
另外,例如,CPU21可将CPUID转换为VC(虚拟连接)ID,并且存储VCID。此外,CPU21可将诸如表示数据长度的长度的信息存储在分组中。
(3)关于CPU发出的命令(指令)
如上所述,CPU21至21c中的每一个发出请求或命令,并且保持高速缓存一致性。然而上述请求或命令一贯地是示例,并且例如,CPU21至21c可发出CAS(比较并交换)指令。
因此,当CPU21至21c发出CAS指令时,即使在多个CPU之间频繁发生排他控制的争用,也能对每个CPU的高速缓存器执行处理。结果,CPU21至21c可以防止由于存储器访问的发生引起的延迟,并且防止CPU之间的事务拥堵。
(4)关于通过管理程序的控制
描述了OS访问作为信息处理系统1中硬件的地址转换单元35的示例。然而,示例不限于此,并且例如操作虚拟机的管理程序(HVP)可访问地址转换单元35。
即,在管理程序进行操作的节点中,OS请求管理程序执行操作而不直接地操作CPU21至21c的硬件资源(诸如,高速缓存器和MMU)。因此,当通过管理程序控制CPU21至21c中的每一个时,CPU21至21c中的每一个将虚拟地址转换为实际地址(RA),然后,将实际地址转换为物理地址。
另外,在管理程序进行操作的节点中,根据中断处理中断HPV而不直接中断OS。在这种情况下,管理程序通过读取OS的中断处理处理器来执行中断。另外,通过上述管理程序执行的处理是为了操作虚拟机器执行的公知处理。
(5)使用分区的处理
在上述信息处理系统1中,CPU21至21c中的每一个均使用一个节点映射来发送存储器访问。然而,示例不限于此。例如,构件块10至10e中的每一个均可作为多个节点组来进行操作,并且按每个节点组配置操作单个固件(管理程序)的一个虚拟分区。
在这种情况下,CPU21至21c中的每一个均包括表示访问目的地CPU的节点映射和表示在单个虚拟分区中的CPU的节点映射。因此,CPU21至21c中的每一个均包括表示包括在单个虚拟分区中的CPU的节点映射,并且可以识别可能不能传递到虚拟分区之外的特殊分组的传递范围,诸如错误发生通知、向下请求或重置请求分组。
(6)通过服务处理器的控制
根据以上信息处理系统1描述了服务处理器24访问作为硬件的节点映射34的示例。然而,示例不限于此,并且除服务处理器24之外的单元可被配置成访问节点映射34。例如,由CPU21至21c上的一个或所有CPU或HPV操作的基本固件BIOS(基本输入/输出系统)可被配置成访问节点映射34。
根据实施例,能够抑制信息处理设备发生故障的可能性。
Claims (8)
1.一种信息处理设备,包括:
多个节点,每个节点均包括存储装置;和
互连装置,连接在所述多个节点之间,
其中,所述多个节点中的至少一个节点包括:
检测单元,检测包括在所述一个节点或其它节点中的存储装置中的共享存储器区域中所存储的数据的可校正错误,所述共享存储器区域是所述一个节点和所述其它节点访问的区域,并且所述可校正错误是(i)在预定的时间段内发生多于预定次数的错误或者(ii)在所述共享存储器区域中的单一位置处发生的错误;
阻止控制单元,当所述检测单元检测到所述可校正错误时,执行控制以通过从第一地址转换信息中删除将在其中检测到所述可校正错误的所述共享存储器区域中的虚拟地址与物理地址相关联的条目、并且通过将用以从第二地址转换信息中删除所述条目的指令发送至所述其它节点来阻止所述一个节点和所述其它节点访问所述共享存储器区域,其中所述第一地址转换信息将用于所述一个节点和所述其它节点的存储器访问的虚拟地址与表示所述一个节点的存储装置中的数据存储区域的物理地址相关联,所述第二地址转换信息将用于所述一个节点和所述其它节点的存储器访问的虚拟地址与表示所述其它节点的存储装置中的数据存储区域的物理地址相关联;
恢复单元,在与所述共享存储器区域不同的存储器区域中恢复存储在所述共享存储器区域中的所述数据;
通知单元,向所述其它节点通知关于该不同的存储器区域的信息;以及
重新开始控制单元,执行控制以重新开始从所述一个节点和所述其它节点对所恢复的数据的访问。
2.根据权利要求1所述的信息处理设备,其中,所述阻止控制单元将用于停止从所述其它节点执行的应用程序对所述共享存储器的访问的指令发送至所述其它节点,并且停止从所述一个节点执行的应用程序对所述共享存储器的访问。
3.根据权利要求1或权利要求2所述的信息处理设备,其中,所述恢复单元获取其它存储器区域的页面以复制包括所述共享存储器区域的错误的页面,并且将存储在包括所述共享存储器区域的错误的页面的区域中的数据复制到所述其它存储器区域的页面的区域。
4.根据权利要求3所述的信息处理设备,其中,所述恢复单元将所述共享存储器区域的页面分割成多个页面,并且将存储在包括所述错误的分割后的页面的区域中的数据复制到所述其它存储器区域的页面的区域。
5.根据权利要求3所述的信息处理设备,其中,当获取所述其它存储器区域的页面时,如果可获取页面容量是预定容量或更小,或者所述其它存储器区域的页面的获取失败,则所述恢复单元分割所述共享存储器区域的页面。
6.根据权利要求3所述的信息处理设备,其中,当在本地节点中启动操作系统OS或者启动使用本地节点或其它节点的共享存储器的应用程序时,所述恢复单元预先确保能够用作所述其它存储器区域的预定大小的区域。
7.一种信息处理设备,包括:
多个节点,每个节点均包括存储装置;以及
互连装置,连接在所述多个节点之间,
其中,所述多个节点中的至少一个节点包括:
访问控制单元,控制对所述一个节点的所述存储装置的访问,并且包括检测从所述存储装置读取的数据的错误的错误检测单元;以及
处理单元,执行处理,所述处理包括:
当所述错误检测单元检测到存储在共享存储器区域中的数据的可校正错误时,通过从第一地址转换信息中删除将在其中检测到所述可校正错误的所述共享存储器区域中的虚拟地址与物理地址相关联的条目、并且通过将用以从第二地址转换信息中删除所述条目的指令发送至其它节点来阻止从所述一个节点和所述其它节点对所述共享存储器区域的访问,其中所述第一地址转换信息将用于所述一个节点和所述其它节点的存储器访问的虚拟地址与表示所述一个节点的存储装置中的数据存储区域的物理地址相关联,所述第二地址转换信息将用于所述一个节点和所述其它节点的存储器访问的虚拟地址与表示所述其它节点的存储装置中的数据存储区域的物理地址相关联,所述共享存储器区域包括在所述一个节点的存储装置中且通过所述一个节点和所述其它节点访问,所述可校正错误是(i)在预定的时间段内发生多于预定次数的错误或者(ii)在所述共享存储器区域中的单一位置处发生的错误;
在不同于所述共享存储器区域且包括在所述一个节点的所述存储装置中的存储器区域中恢复存储在所述共享存储器区域中的所述数据;
向所述其它节点通知关于该不同的存储器区域的信息;以及
重新开始从所述一个节点和所述其它节点对所恢复的数据的访问。
8.一种用于信息处理设备的控制方法,所述控制方法由所述信息处理设备中的多个节点中的至少一个节点执行,所述信息处理设备包括每一个均包括存储装置的多个节点以及连接在所述多个节点之间的互连装置,所述控制方法包括:
检测包括在所述一个节点或其它节点的存储装置中的共享存储器区域中所存储的数据的可校正错误,所述共享存储器区域是所述一个节点和所述其它节点访问的区域,并且所述可校正错误是(i)在预定的时间段内发生多于预定次数的错误或者(ii)在所述共享存储器区域中的单一位置处发生的错误;
当检测到所述可校正错误时,执行控制以通过从第一地址转换信息中删除将在其中检测到所述可校正错误的所述共享存储器区域中的虚拟地址与物理地址相关联的条目、并且通过将用以从第二地址转换信息中删除所述条目的指令发送至所述其它节点来阻止所述一个节点和所述其它节点访问所述共享存储器区域,其中所述第一地址转换信息将用于所述一个节点和所述其它节点的存储器访问的虚拟地址与表示所述一个节点的存储装置中的数据存储区域的物理地址相关联,所述第二地址转换信息将用于所述一个节点和所述其它节点的存储器访问的虚拟地址与表示所述其它节点的存储装置中的数据存储区域的物理地址相关联;
在不同于所述共享存储器区域的存储器区域中恢复存储在所述共享存储器区域中的所述数据;
向所述其它节点通知关于该不同的存储器区域的信息;以及
执行控制以重新开始从所述一个节点和所述其它节点对所恢复的数据的访问。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012-044848 | 2012-02-29 | ||
JP2012044848A JP5614419B2 (ja) | 2012-02-29 | 2012-02-29 | 情報処理装置、制御方法および制御プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103294616A CN103294616A (zh) | 2013-09-11 |
CN103294616B true CN103294616B (zh) | 2016-01-20 |
Family
ID=47044874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210390225.3A Expired - Fee Related CN103294616B (zh) | 2012-02-29 | 2012-10-15 | 信息处理设备和控制方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8856588B2 (zh) |
EP (1) | EP2634696B1 (zh) |
JP (1) | JP5614419B2 (zh) |
KR (1) | KR101476001B1 (zh) |
CN (1) | CN103294616B (zh) |
TW (1) | TWI480883B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5906881B2 (ja) * | 2012-03-27 | 2016-04-20 | 富士通株式会社 | 情報処理装置及び情報処理装置の制御方法 |
US20150269092A1 (en) * | 2014-03-19 | 2015-09-24 | Fujitsu Limited | Information processing device and shared memory management method |
CN105807728B (zh) * | 2014-12-29 | 2019-03-08 | 联想(北京)有限公司 | 一种控制方法及电子设备 |
JP6540309B2 (ja) | 2015-07-16 | 2019-07-10 | 富士通株式会社 | 共有メモリシステム、演算処理装置、及び方法 |
JP2017111750A (ja) * | 2015-12-18 | 2017-06-22 | 富士通株式会社 | 情報処理装置、共有メモリ管理方法及び共有メモリ管理プログラム |
US10387281B2 (en) | 2017-08-30 | 2019-08-20 | Micron Technology, Inc. | Flash memory block retirement policy |
CN107943605B (zh) * | 2017-11-14 | 2021-03-19 | 青岛海信移动通信技术股份有限公司 | 一种存储卡处理方法及装置 |
KR102413096B1 (ko) * | 2018-01-08 | 2022-06-27 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
US10990369B2 (en) * | 2018-04-30 | 2021-04-27 | EMC IP Holding Company LLC | Repurposing serverless application copies |
CN109144901B (zh) * | 2018-10-10 | 2024-01-02 | 古进 | 公式化虚拟地址转换 |
JP7283784B2 (ja) * | 2021-02-19 | 2023-05-30 | Necプラットフォームズ株式会社 | メモリ障害検出装置、検出プログラム、および検出方法 |
EP4053814A1 (fr) | 2021-03-03 | 2022-09-07 | Thoonsen Trading | Dispositif antivol electronique a pile |
FR3120465B1 (fr) | 2021-03-03 | 2023-10-13 | Thoonsen Trading | Dispositif antivol electronique ameliore |
JP2022187116A (ja) * | 2021-06-07 | 2022-12-19 | 富士通株式会社 | 多重制御プログラム、情報処理装置および多重制御方法 |
KR20230119966A (ko) * | 2022-02-08 | 2023-08-16 | 삼성전자주식회사 | 전자 장치에서 데이터베이스 파일을 복구하는 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11175409A (ja) * | 1997-12-05 | 1999-07-02 | Nec Corp | メモリ制御方式 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61195444A (ja) * | 1985-02-26 | 1986-08-29 | Toshiba Corp | コンピユ−タシステム |
JPH0877078A (ja) | 1994-09-07 | 1996-03-22 | Fujitsu Ltd | シェアードストレージ装置 |
JPH09128303A (ja) | 1995-10-31 | 1997-05-16 | Toshiba Corp | メモリ管理装置 |
US6148377A (en) * | 1996-11-22 | 2000-11-14 | Mangosoft Corporation | Shared memory computer networks |
US6742145B2 (en) * | 2001-03-01 | 2004-05-25 | International Business Machines Corporation | Method of de-allocating multiple processor cores for an L2 correctable error |
EP1376356A1 (en) * | 2002-06-26 | 2004-01-02 | Fujitsu Siemens Computers, LLC | Error reporting network in multiprocessor computer |
US7222270B2 (en) * | 2003-01-10 | 2007-05-22 | International Business Machines Corporation | Method for tagging uncorrectable errors for symmetric multiprocessors |
US7418557B2 (en) | 2004-11-30 | 2008-08-26 | International Business Machines Corporation | Managing multiprocessor operations |
US7409580B2 (en) * | 2005-02-09 | 2008-08-05 | International Business Machines Corporation | System and method for recovering from errors in a data processing system |
JP2007233903A (ja) * | 2006-03-03 | 2007-09-13 | Hitachi Ltd | 記憶制御装置及び記憶制御装置のデータ回復方法 |
US7774645B1 (en) * | 2006-03-29 | 2010-08-10 | Emc Corporation | Techniques for mirroring data within a shared virtual memory system |
JP4930078B2 (ja) | 2007-01-31 | 2012-05-09 | 富士通株式会社 | 情報処理方法、情報処理装置、情報処理プログラムおよび該プログラムを記録した記録媒体 |
US20090132876A1 (en) * | 2007-11-19 | 2009-05-21 | Ronald Ernest Freking | Maintaining Error Statistics Concurrently Across Multiple Memory Ranks |
JP4892746B2 (ja) * | 2008-03-28 | 2012-03-07 | エヌイーシーコンピュータテクノ株式会社 | 分散共有メモリ型マルチプロセッサシステム及びプレーンデグレード方法 |
US8719543B2 (en) * | 2009-12-29 | 2014-05-06 | Advanced Micro Devices, Inc. | Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices |
US20110161620A1 (en) * | 2009-12-29 | 2011-06-30 | Advanced Micro Devices, Inc. | Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices |
US8533567B2 (en) * | 2010-08-09 | 2013-09-10 | International Business Machines Corporation | Low delay and area efficient soft error correction in arbitration logic |
US8489829B2 (en) * | 2010-12-01 | 2013-07-16 | International Business Machines Corporation | Reduction of communication and efficient failover processing in distributed shared memory-based application |
-
2012
- 2012-02-29 JP JP2012044848A patent/JP5614419B2/ja not_active Expired - Fee Related
- 2012-08-29 US US13/597,428 patent/US8856588B2/en not_active Expired - Fee Related
- 2012-09-21 TW TW101134714A patent/TWI480883B/zh not_active IP Right Cessation
- 2012-10-12 EP EP12188300.3A patent/EP2634696B1/en not_active Not-in-force
- 2012-10-15 CN CN201210390225.3A patent/CN103294616B/zh not_active Expired - Fee Related
- 2012-10-17 KR KR1020120115353A patent/KR101476001B1/ko not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11175409A (ja) * | 1997-12-05 | 1999-07-02 | Nec Corp | メモリ制御方式 |
Also Published As
Publication number | Publication date |
---|---|
CN103294616A (zh) | 2013-09-11 |
TWI480883B (zh) | 2015-04-11 |
JP2013182355A (ja) | 2013-09-12 |
US20130227224A1 (en) | 2013-08-29 |
JP5614419B2 (ja) | 2014-10-29 |
EP2634696A3 (en) | 2013-11-27 |
TW201337938A (zh) | 2013-09-16 |
EP2634696B1 (en) | 2014-12-24 |
EP2634696A2 (en) | 2013-09-04 |
KR20130099801A (ko) | 2013-09-06 |
KR101476001B1 (ko) | 2014-12-23 |
US8856588B2 (en) | 2014-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103294616B (zh) | 信息处理设备和控制方法 | |
KR101442913B1 (ko) | 정보 처리 장치, 제어 방법, 및 제어 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 | |
JP5573829B2 (ja) | 情報処理装置およびメモリアクセス方法 | |
KR100465583B1 (ko) | 판독 요청을 원격 처리 노드에 추론적으로 전송하는 비정형 메모리 액세스 데이터 처리 시스템 및 이 시스템에서의 통신 방법 | |
JP3629511B2 (ja) | 不均等メモリ・アクセス・システムにおいてトランザクションのキャンセルによるデータ損失を避けるための方法およびシステム | |
US7523260B2 (en) | Propagating data using mirrored lock caches | |
US8990513B2 (en) | Accelerated recovery for snooped addresses in a coherent attached processor proxy | |
US8938587B2 (en) | Data recovery for coherent attached processor proxy | |
US10152417B2 (en) | Early freeing of a snoop machine of a data processing system prior to completion of snoop processing for an interconnect operation | |
US20140201467A1 (en) | Epoch-based recovery for coherent attached processor proxy | |
US10102130B2 (en) | Decreasing the data handoff interval in a multiprocessor data processing system based on an early indication of a systemwide coherence response | |
JP2014160502A (ja) | 情報処理装置およびメモリアクセス方法 | |
JP5800058B2 (ja) | 情報処理装置、制御方法および制御プログラム | |
JP2010244327A (ja) | キャッシュシステム | |
US10394636B2 (en) | Techniques for managing a hang condition in a data processing system with shared memory | |
EP1684168B1 (en) | Synchronizing registers | |
US9436613B2 (en) | Central processing unit, method for controlling central processing unit, and information processing apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160120 Termination date: 20181015 |