信息处理设备及防止未授权访问的方法

文档序号:6380088阅读:567来源:国知局
专利名称:信息处理设备及防止未授权访问的方法
技术领域
本文讨论的实施例涉及一种信息处理设备以及一种防止未授权访问的方法。
背景技术
已知如下传统信息处理系统:其具有群集配置,在群集配置中,使用LAN或InfiniBand来连接每个均具有至少CPU和存储器的多个节点,并且执行包括在这些节点中的操作系统(OS)。使用具有该群集配置的信息处理系统,每个CPU共享节点中的存储器并且并行地执行过程。图33是示出具有群集配置的信息处理系统的示意图。在图33所示的示例中,信息处理系统包括通过LAN或InfiniBand而彼此连接的节点50至52。节点50包括存储器50a,OS 50b和中央处理器(CPU)50c。类似地,节点51包括存储器51a、0S 51b和CPU 51c。节点52包括存储器52a、OS 52b和CPU 52c。节点50至52分别执行OS 50b至52b,并且OS 50b至52b中的每个在每个节点中是独立的,由此防止在OS 50b至52b之一中发生的故障被传播到整个信息处理系统中。此夕卜,包括在节点50至52中的一个或更多个CPU 50c至52c分别共享每个节点中的存储器50a至52a并通过LAN或InfiniBand访问包括在其他节点中的存储器。图34是示出节点间的存储器访问的示意图。例如,节点50通过驱动、OS和硬件向节点51发送由在节点50中运行的应用所发出的存储器访问请求。通过这样做,节点51通过硬件、OS和驱动向节点51中的应用报告从节点50接收的请求,并允许该应用执行存储器访问。在这点上,在具有群集配置的信息处理系统中,因为通过要访问的节点中的应用来执行存储器访问,所以存储器访问的等待时间增加,因此应用的架构复杂。因此,存在具有如下共享存储器配置的已知信息处理系统:其中多个节点通过互连而连接并且每个节点中的应用直接访问执行到相同存储器地址空间上的映射的存储器。图35是示出使用共享存储器配置技术的信息处理系统的示意图。在图35所示的示例中,节点53通过互连而连接到节点54,并且远程存储器被映射到可以被由节点53和节点54中的每个执行的应用直接访问的地址空间。与关于每个节点中的存储器的存储器访问类似,由节点53和节点54执行的应用各自发出关于远程存储器的存储器访问请求。此外,存在如下已知技术:其通过设置用于访问存储器存储区的存储密钥来防止对不预被应用访问的存储区的未授权访问。图36是示出用于防止未授权存储器访问的功能的示意图。例如,在图36所示的示例中,OS在用于2kb或4kb的存储区中预先设置4位存储密钥。此外,当OS设置程序计数器时,该OS在程序状态字中将用于被应用使用的存储区的存储密钥设置为访问密钥。然后,指令单元读取程序计数器并向存储器访问单元发出存储器访问请求。此外,当存储器访问单元获得来自指令单元的存储器访问请求时,存储器访问单元确定在程序状态字中设置的访问密钥是否与存储密钥匹配。
如果存储器访问单元确定存储密钥与访问密钥匹配,则存储器访问单元允许存储器访问并向指令单元输出存储在要访问的存储区中的数据。此外,如果存储密钥不与访问密钥匹配,则存储器访问单元不允许存储器访问并防止对不预被应用访问的存储区的未授权访问。专利文献1:国际专利申请的日本国家公开N0.2009-537879专利文献2:日本特许公开公报N0.05-204762专利文献3:日本特许公开公报N0.2000-235558然而,存在如下问题:当由节点执行的应用发生故障并且从而不能与其他节点进行通信时,具有上述共享存储器配置的信息处理系统不能正确地执行要由故障节点执行的过程转移到其他节点的故障转移(failover)。接下来,将参照图37A和图37B描述未正确地执行故障转移的情况。图37A是示出其中未正常地执行故障转移的示例的第一示意图。图37B是示出其中未正常地执行故障转移的示例的第二示意图。在图37A和图37B所示的示例中,将描述在由节点55执行的应用发生了问题并因而不能与其他节点进行通信的情况。例如,如图37A所示,节点56接收来自由节点55执行的应用的存储器访问;然而,因为不能与节点55进行通信,所以节点56确定节点55发生了故障。在这种情况下,如图37B所示,执行将由节点55执行的过程转移到节点57的故障转移。然而,因为节点56不能与节点55进行通信,所以节点56不允许由被停止的节点执行的存储器访问,即来自节点55的存储器访问。因此,发生了节点55和节点57 二者同时执行相应的节点55和节点57中的应用的裂脑(split brain)状态,因此未正确地执行故障转移。因此,可以构思通过使用用于在具有共享存储器配置的信息处理系统中设置上述存储密钥的技术并通过改变存储密钥来防止从另外的节点到节点中的存储器的访问。然而,借助于上述用于设置存储密钥的技术,单个OS设置存储密钥和应用密钥两者。因此,当在不同的节点(即存储器访问源的节点和要访问的节点)中执行OS时,因为存储密钥未变化,所以难以防止来自故障节点的访问。因此,本发明的实施例的一个方面的目的是在共享存储器配置中正确地执行故障转移。

发明内容
根据实施例的一个方面,信息处理设备包括具有第一节点和第二节点的多个节点以及连接所述节点的互连装置,其中该多个节点中的每个包括处理器和存储器,该存储器中的至少部分区域被设置为共享存储区。第一节点包括:第一存储单元,其中存储用于访问第二节点的存储器的标识信息;以及发送单元,其通过附加第一存储单元中所存储的标识信息来将要发送的通信数据发送给第二节点。第二节点包括:第二存储单元,其中存储用于控制对另一节点对第二节点的存储器中的共享存储区的访问的许可的标识信息;以及控制单元,其基于附加到从第一节点发送的通信数据的标识信息和存储在第二存储单元中的标识信息来确定是否允许访问第二节点的存储器中的共享存储区。


图1是示出根据第一实施例的信息处理系统的示意图;图2是示出根据第一实施例的节点的功能配置的示意图;图3是示出根据第一实施例的存储器的分配的示意图;图4是示出其中根据第一实施例的信息处理系统对每个存储器进行映射的存储器映射的示意图;图5是示出由根据第一实施例的信息处理系统分配的共享存储区的示意图;图6是示出根据第一实施例的共享存储器段管理表的示意图;图7是示出根据第一实施例的存储器令牌管理表的示意图;图8是示出根据第一实施例的CPU的示例的示意图;图9是示出根据第一实施例的用于访问令牌表的寄存器的配置的示意图;图10是示出访问令牌表中的寄存器字段的示意图;图11是示出根据第一实施例的存储器令牌检查器的示例的示意图;图12是示出存储器访问请求的示例的示意图;图13是示出由操作码表示的过程示例的示意图;图14是示出由访问确定控制器执行的确定的示例的示意图;图15是示出由主状态机(home state machine)执行的过程的内容的示意图;图16是示出节点间的存储器访问流程的示意图;图17是示出用于停止由故障节点执行的存储器访问的过程的示意图;图18是示出用于防止来自已经发生了故障的节点的存储器访问的过程的第一示意图;图19是示出用于防止来自已经发生了故障的节点的存储器访问的过程的第二示意图;图20是示出用于获得访问令牌的过程的流程的顺序图;图21是示出用于访问多个段的过程的流程的顺序图;图22是示出上下文切换的流程的顺序图;图23是示出用于改变存储器令牌的过程的流程的顺序图;图24是示出用于改变存储器令牌的过程的变型的顺序图;图25是示出用于断开故障节点的过程的流程的顺序图;图26是示出用于改变存储器令牌的过程的流程的流程图;图27是示出用于更新共享存储器段管理表和存储器令牌管理表的过程的流程的流程图;图28是示出共享存储器段管理表的更新的示意图;图29是示出存储器令牌管理表的更新的示意图;图30是示出支持多线程的访问令牌表的示例的示意图;图31是示出存储器令牌检查器的变型的示意图;图32是示出仅允许先前允许的节点执行存储器访问的存储器令牌检查器的示意图;图33是示出具有群集配置的信息处理系统的示意图34是示出节点间的存储器访问的示意图;图35是示出使用共享存储器配置技术的信息处理系统的示意图;图36是示出用于防止未授权存储器访问的功能的示意图;图37A是示出其中未正常执行故障转移的示例的第一示意图;以及图37B是示出其中未正常执行故障转移的示例的第二示意图。
具体实施例方式将参照附图来说明本发明的优选实施例。[a]第一实施例在下面描述的第一实施例中,将参照图1描述信息处理系统的示例。图1是示出根据第一实施例的信息处理系统的示意图。在图1所示的示例中,信息处理系统I包括客户端2、客户端2a、局域网(LAN)交换机3、管理终端4、LAN交换机5、双全局交叉开关6以及节点10至10m。全局交叉开关6包括服务处理器7。在第一实施例中,节点是在其中运行单个且独立的操作系统(OS)并仅包括用于运行OS的最少所需装置的单元。如后面将要描述的,该节点包括一个或更多个CPU、存储器和硬盘驱动器(HDD)或代替HDD的外部存储装置。该节点也可以是单个物理装置或者也可以由通过使用例如线缆连接的多个装置物理地构成。节点10至IOm通过服务LAN连接到LAN交换机3以及客户端2与客户端2a。此夕卜,节点10至IOm通过内部LAN连接到LAN交换机5。此外,节点10至IOm通过管理LAN连接到管理终端4。此外,节点10至IOm连接到双全局交叉开关6,并且通过互连而彼此连接。客户端2和客户端2a中的每个通过服务LAN从节点10至IOm中的每个节点获得服务。尽管未在图1中示出,信息处理系统I还可以包括任意数目的附加客户端。节点10包括服务处理器11、CPU 12和本地XB (交叉开关)16。类似于节点10,其他节点IOa至IOm分别包括服务处理器Ila至llm、CPU12a至12m以及本地XB 16a至16m。服务处理器11至IIm中的每个通过管理LAN连接到管理终端4,并执行管理控制,例如节点10至IOm中的每个的电源的管理。包括在全局交叉开关6中的服务处理器7作为服务处理器11至Ilm的主控器(master)来进行操作,并执行整体管理控制。由服务处理器7以及服务处理器11至Ilm中的每个执行的管理控制的示例包括电源管理、复位、改变操作模式、增加或删除节点的设置、收集错误日志以及退化(degeneracy)的操作控制。此外,节点10至IOm独立地执行操作系统(OS)。尽管未在图1中示出,但是节点10至IOm中的每个分别包括除CPU 12至12m之外的多个CPU。节点10至IOm中的CPU分别通过本地XB 16至16m连接到全局交叉开关6。节点10至IOm中的CPU向各个本地XB16至16m输出作为对存储器访问的请求的存储器访问请求,由此CPU向其他节点发送存储器访问请求。然后,当节点10至IOm中的CPU获得存储器访问请求时,CPU以与CPU访问连接到自身CPU的存储器所执行的存储器访问类似的方式来执行存储器访问。接下来,将参照图2描述节点10至IOm的功能配置。在下面的描述中,将描述节点10的功能配置。节点IOa至IOm中的每个执行与由节点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 ;然而,实施例并不限制于此。例如,还可以通过使用例如存储域网络(SAN)技术的技术将HDD 29布置在节点10的外部。服务处理器11执行节点10的管理控制。具体地,服务处理器11包括处理器和现场可编程门阵列(FPGA),该FPGA执行过程并且通过管理LAN从管理终端4接收执行管理控制的指令。然后,服务处理器11根据从管理终端4接收的指令来执行各种管理控制。PCIe开关25是控制对例如通过PCIe槽连接到CPU 12至15的每个的I/O装置的访问的开关。LAN适配器26是将服务LAN连接到节点10的LAN适配器。LAN适配器27是将管理LAN连接到节点10的LAN适配器。SAS 28是用于LAN的或安装在PCIe槽中的SAS的适配器,其中继HDD 29与CPU 12至15中的每个CPU之间的连接。接下来,将描述CPU 12至15。在下面的描述中,将描述CPU 12。CPU 13至15具有与由CPU 12执行的功能相同的功能;因此,将省略其描述。CPU 12和其他CPU 13至15全部互相连接。此外,CPU 12包括高速缓冲存储器,该高速缓冲存储器高速缓存由存储器19或存储器20存储的数据,并且CPU 12通过使用高速缓存的数据来执行运算处理。此外,CPU 12具有执行对存储器19和存储器20中的每个的存储器访问的存储器接口功能。此外,CPU 12具有PCIe接口功能,其通过使用HDD 29、内部LAN或管理LAN、经由PCIe开关25来控制访问。此外,CPU 12通过互连经由本地XB 16和全局交叉开关6连接到包括其他节点IOa至IOm中的CPU,并且具有在各个CPU之间发送和接收存储器访问请求的互连路由器功能。具有这种配置的CPU 12例如在由要执行的过程向存储器19或存储器20发出存储器访问请求时,执行以下过程。具体地,CPU 12访问存储器19或存储器20并高速缓存要访问的数据。此外,当通过要执行的过程向除存储器19和存储器20之外的存储器发出存储器访问请求时,CPU 12识别连接到作为存储器访问目标的存储器的CPU,并且向所识别的CPU发送存储器访问请求。具体地,CPU 12具有如下节点映射:要访问的存储器地址与唯一地指示访问由存储器地址指示的存储区的CPU的信息相关联。然后,如果过程发出存储器访问请求,则CPU 12参照节点映射,并识别与作为存储器访问目标的存储器地址相关联的CPU。之后,CPU 12创建其目的地为所识别的CPU的分组(packet)、将存储器访问请求存储在所创建的分组中、并将该分组输出给相互连接的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 12接收到来自其他节点中的CPU的存储器访问请求,则CPU 12确定与存储器访问请求一起接收到的访问令牌是否和与要访问的存储区相关联的存储器令牌相匹配。如果访问令牌与存储器令牌匹配,则CPU 12执行存储器访问;反之,如果访问令牌与存储器令牌不匹配,则CPU 12拒绝执行存储器访问。如果CPU 12执行关于存储器19或存储器20的存储器访问,则CPU12执行用于保留由存储器19或存储器20高速缓存的数据的一致性(coherency)的过程。例如,CPU 12向高速缓存了来自存储器19或存储器20的数据的CPU发送探听(snoop ),并执行被高速缓存的数据的回写。本地XB 16是将包括在节点10中的CPU 12至15与包括在节点IOa至IOm中的CPU之间交换的分组传送到指定的目的地的开关。例如,本地XB 16将由CPU 12发出并且要发送给CPU 12a的分组通过全局交叉开关6发送给包括在节点IOa中的CPU 12a。存储器17至存储器24是其中存储由每个OS或应用使用的数据的存储器,其例如为双列直插式存储模块(DIMM)。此外,存储器17至24映射相同的存储器地址空间。此外,存储器17至24每个均具有可以仅被同一节点中的CPU 12至15访问的区域,即,作为专属于包括CPU 12至15的节点的区域的局部区域。此外,存储器17至24每个均具有可以被包括在信息处理系统I中的任意CPU访问的区域,即,具有可以被所有节点使用的共享存储区。此外,存储器17至24的共享存储区被划分为多个段。每个段是其中由存储器令牌执行访问控制的受保护区,或者是不由存储器令牌执行访问控制的非保护区。接下来,将参照图3和图4描述被映射到存储器17至24中的存储器地址。图3是示出根据第一实施例的存储器的分配的示意图。例如,在包括在每个CPU中的两个存储器之间,信息处理系统I将一个存储器用作仅用于本地区域的存储器而将另一个存储器用作仅用于共享存储区的存储器。具体地,如图3中的(A)所示,将存储器17、存储器19、存储器21和存储器23用作专用于节点的存储器,而如图3中的(B)所示,将存储器18、存储器20、存储器22和存储器24用作共享存储器。图4是示出其中根据第一实施例的信息处理系统对每个存储器进行映射的存储器映射的示意图。图4示出了如下示例:其中准备了总共128TB的存储器地址空间,其中128TB中的64TB被分配给本地区域而128TB中的64TB被分配给共享存储区。例如,信息处理系统I在用作包括在节点10至IOm中的存储器的本地区域的区域中分配存储器地址“O”到“246-1 ”。此外,信息处理系统I在用作包括在节点10至IOm中的存储器的共享存储区的区域中分配存储器地址“246”至“247-1 ”。具体地,在图3和图4所示的示例中,信息处理系统I将图4中的(C)所示的区域中的存储器地址映射到图3中的(A)所示的存储器17、存储器19、存储器21及存储器23上。此外,信息处理系统I将图4中的(D)所示的区域的存储器地址映射到图3中的(B)所示的存储器18、存储器20、存储器22及存储器24上。在图4中所示的地址“247”到“248_1”是用作不可高速缓存(UC)区域的地址范围,并且是用于例如由诸如HDD29的I/O装置使用的I/O空间的地址范围。如上所述,信息处理系统I将单个存储器地址空间映射到包括在节点10至IOm中的存储器。因此,任意的CPU可以直接访问任意节点中的共享存储区。在图4中所示的存储器映射仅仅是示例性的;因此,也可以执行任意分配。具体地,不需要将存储器映射上的所有存储器地址分配给存储器。例如,也可以存在存储器空洞(memory hole)。此外,也可以设置存储器映射以使得包括在信息处理系统I中的每个节点中存在由OS使用的本地区域以及在一个或更多个节点中存在共享存储区。如果信息处理系统I将连续的存储器地址映射到包括在单个节点中的存储器(例如,存储器17和存储器18)上,则信息处理系统I可以删除控制资源。此外,信息处理系统I分配存储器地址,使得段区域至少是对齐的。接下来,将参照图5描述分配给每个节点中的存储器的共享存储区。图5是示出由根据第一实施例的信息处理系统分配的共享存储区的示意图。在图5所示的示例中,将描述如下情况:信息处理系统I包括节点#0至#n,并向节点#0至#n分配共享存储区。例如,如图5中的(I)所示,信息处理系统I向节点#0至#n的每个节点分配64TB的本地区域和64TB的共享存储区。具体地,如图5中的(2)所示,信息处理系统I向节点#0至#n中的每个均等地分配64TB的共享存储区。在这点上,节点#0至#n中的每个将所分配的共享存储区划分为受保护区和非保护区。在此提及的受保护区是当从另一节点接收到存储器访问请求时通过确定访问令牌是否与存储器令牌匹配来保护访问的区域。在此提及的非保护区是另外的节点可以在自由地执行存储器访问的区域。例如,如图5中的(3)所示,对于分配给节点#1的共享存储区,节点#1可以使用最大4TB来作为受保护区或非保护区。此外,如在图5中的(4)所示,节点#1将共享存储区划分为对应于具有2GB的段#0至#2047的段。然后,如图5中的(5)所示,节点#1对于每个段设置存储器令牌。此外,在图5所示的示例中,节点#1将段#0至#2用作为受保护区并在每个段中设置存储器令牌。存储器令牌例如为13位的值。在图5所示的示例中,节点#1将段#3至#2047设置为非保护区并将“allO”设置为存储器令牌。具体地,当节点#0至#n中的每个访问对应的非保护区时,节点可以通过使用访问令牌“allO”来访问该非保护区。此外,节点#m也将自己的共享存储区划分为段#0至#2047,并在段#0至#2047的每个中设置存储器令牌。如图5中的(6)所示,由节点#m在段#0至#2047的每个中设置的存储器令牌被节点#1用作为访问令牌。因此,当节点#1访问节点#m中的共享存储区时,节点#1获得由节点#m设置的存储器令牌并且将所获得的存储器令牌用作为访问令牌,由此节点#1访问节点#m中的共享存储区。节点#0至#n中的每个在本地区域中包括用来管理每个共享存储区中的每个段的共享存储器段管理表。此外,为了防止在多个段中设置相同的存储器令牌,节点#0至#n中的每个在本地区域中包括用来管理已经被设置的存储器令牌的存储器令牌管理表。接下来,将参照图6和图7描述共享存储器段管理表和存储器令牌管理表。首先,将参照图6描述共享存储器段管理表的示例。图6是示出根据第一实施例的共享存储器段管理表的示意图。图6示出了包括在节点#2中的共享存储器段管理表。如图6所示,共享存储器段管理表在其中存储段号、使用标记、应用ID、使用节点标记和令牌。段号是表示共享存储区中的每个段的号。使用标记是表示每个段是否被使用的标记。应用ID是唯一地表示使用每个段的过程的ID。使用节点标记是表示使用每个段的节点的标记。令牌是在每个段中设置的存储器令牌。图6所示的示例表示节点#2中的段#0和段#1被节点#1所执行的过程中的由应用ID “100”表示的过程所使用,并且表示存储器令牌分别为“3015”和“2156”。此外,该示例表示节点#2中的段#2未被使用以及段#3被节点#3所执行的过程中的由应用ID“150”表示的过程所使用,并且表示存储器令牌为“allO”,即段#3是非保护区。节点#0至#n中的每个通过使用图6中所示的共享存储器段管理表来执行从其他节点接收到的存储器访问。例如,节点#2获得来自由节点#1中的应用ID “100”表示的过程的访问令牌“3015”以及关于段#0的存储器访问请求。在这种情况下,因为所获得的访问令牌与共享存储器段管理表中存储的存储器令牌匹配,所以节点#2执行存储器访问。反之,如果节点#2获得来自由节点#1中的应用ID “100”表示的过程的访问令牌“3000”以及关于段#0的存储器访问请求,节点#2确定存储器令牌与访问令牌不匹配。因此,节点#2不执行存储器访问请求。此外,节点#0至#n中的每个改变其中一个段中的存储器令牌,节点#0至#n中的每个参照共享存储器段管理表,并识别正使用与被改变的存储器令牌相关联的段的节点。然后,节点#0至#n中的每个将新的存储器令牌通知给所识别出的节点。也可以通过共享存储器驱动来设置共享存储器段管理表,该存储器驱动是任意管理共享存储区的驱动软件。例如,当信息处理系统I启动时或当信息处理系统I首次访问共享存储区时,共享存储驱动创建共享存储器段管理表。接下来,将参照图7描述存储器令牌管理表。图7是示出根据第一实施例的存储器令牌管理表的示意图。在图7所示的示例中,存储器令牌管理表以相关联的方式在其中存储存储器令牌的值、使用标记和应用ID。图7示出了由节点#1存储的存储器令牌管理表。例如,图7所示的存储器令牌管理表的示例表示存储器令牌“O”和存储器令牌“I”被分配给由应用ID “100”表示的过程所使用的段。此外,存储器令牌管理表表示存储器令牌“ 2 ”没有被分配给段。此外,存储器令牌管理表表示储器令牌“ 3 ”被分配给由应用ID “150”表示的过程所使用的段。类似于共享存储器段管理表,共享存储器驱动也可以任意创建存储器令牌管理表。接下来,将参照图8描述CPU 12的具体功能配置示例。图8是示出根据第一实施例的CPU的示例的示意图。在图8所示的示例中,假设CPU12是包括多个核的多核处理器,并且是包含I级(LI)高速缓存、L2高速缓存以及存储器访问控制器(MAC)的处理器。如图8所示,CPU 12包括多个核30a和30d、LI高速缓存30b和30e以及多个转换旁路缓冲器(TLB)30c和30f。此外,CPU 12包括分别用于核30a和核30d的访问令牌表31和31a。此外,CPU 12包括2级(L2)高速缓存标签32、L2高速缓存32a、高速缓存探听控制器33、存储器请求状态机34、地址映射35、存储器访问端口 36和目标地址检查器37。此外,CPU 12包括存储器令牌检查器38、主状态机39、存储器访问控制器40、非高速缓存请求状态机41、PCIe接口 42以及错误寄存器43。此外,CPU 12包括寄存器控制器44和路由器46。寄存器控制器44包括请求寄存器45。图8中未示出除了核30a与核30d之外的核;然而,CPU12可以包括任意数目的核。核30a与核30d通过使用LI高速缓存30b和30e中存储的数据来执行运算处理。LI高速缓存30b和30e是可以被高速访问的存储装置,并且是高速缓冲存储器19和20中所存储的数据的高速缓冲存储器。TLB30c和30f将由核30a与核30d输出的虚拟地址转换为物理地址。访问令牌表31是如下寄存器:其存储被用来使得由核30a执行的过程访问共享存储区的访问令牌。例如,在访问令牌表31中设置被另一个节点使用由核30a执行的应用而通知的访问令牌。如果要访问的数据未保留在LI高速缓存30b中,则核30a既输出目标访问的物理地址又输出表示存储器访问请求的操作码。然后,访问令牌表31向L2高速缓存标签32输出设置的访问令牌和存储器访问请求两者。访问令牌表31是当由核30a执行的过程发生变化时执行上下文切换的寄存器。因此,当CPU 12将核30a所执行的过程改变为另一个过程时,CPU 12容易地改变在访问令牌表31中设置的访问令牌。具体地,当CPU12改变核30a所执行的过程时,CPU 12可以通过仅执行上下文切换来快速且容易地改变访问令牌而无需再次从要访问的节点接收访问令牌表的通知。L2高速缓存标签32是用于L2高速缓存32a的标签并且是用于访问L2高速缓存32a的途径。此外,L2高速缓存标签32具有对关于相同地址的由核30a与核30d发出的存储器访问请求执行串行化处理的机制。高速缓存探听控制器33控制L2高速缓存32a的探听。具体地,高速缓存探听控制器33接收通过主状态机39或其他节点发出的探听。然后,通过向L2高速缓存标签32a发出探听,高速缓存探听控制器33检查要被L2高速缓存32a高速缓存的数据的状态。此后,高速缓存探听控制器33向作为探听的发出源的主状态机39或其他节点发送L2高速缓存32a的探听结果。如果L2高速缓存32a中未存储要访问的数据,即L2高速缓存32a中发生了高速缓存缺失,则存储器请求状态机34执行以下过程。具体地,存储器请求状态机34向主状态机39发出存储器访问请求并管理过程直到获得响应为止。此外,如果存储器请求状态机34在从发出存储器访问请求到获得响应的时间段内获得目标为同一存储器地址的存储器访问请求,则存储器请求状态机34允许随后的存储器访问请求等待。然后,如果发出了对先前存储器访问请求的响应,则存储器请求状态机34发出被使得等待的存储器访问请求。此外,存储器请求状态机34包括多个入口,向存储器请求附加8位入口 ID (其是用于每个入口的标识符),并发出该存储器请求。此外,通过向地址映射35输出对应于存储器访问请求的目标的物理地址,存储器请求状态机34获得访问由该物理地址表示的存储区的CPU的标识符。然后,存储器请求状态机34通过使用作为目的地ID (DID) (BP,目的地)的CPU标识符来发出存储器访问请求。地址映射35以相关联的方式在其中存储物理地址和访问由该物理地址表示的存储区的CPU的标识符,并且将物理地址转换为CPU的标识符。例如,当地址映射35从存储器请求状态机34获得物理地址时,地址映射35向存储器请求状态机34发出被存储的并与所获得的物理地址相关联的的CPU标识符作为DID。存储器访问端口 36是如下端口:其接收关于存储器19或存储器20的存储器访问请求,即接收关于主节点(其本身的节点)的存储器访问请求。例如,存储器访问端口 36是FIFO并且暂时保留关于主节点的存储器访问请求。如果主状态机39变成其可以执行存储器访问请求的状态,则存储器访问端口 36向目标地址检测器37、存储器令牌检查器38和主状态机39发出所保留的存储器访问请求。目标地址检查器37从存储器访问端口36确定对应于用于存储器访问请求的目标访问的存储器地址是否为在本身的节点中的存储器的存储器地址,即存储器19或存储器20的存储器地址。然后,目标地址检查器37将确定结果通知给主状态机39。存储器令牌检查器38确定在对应于用于存储器访问请求的目标访问的存储器地址中设置的存储器令牌是否和与存储器访问请求一起发出的访问令牌匹配。如果存储器令牌与访问令牌匹配,则存储器令牌检查器38向主状态机39发出表示允许访问的信号。此夕卜,如果存储器令牌与访问令牌不匹配,则存储器令牌检查器38向主状态机39发出表示不允许访问的信号。存储器令牌检查器38包含在其中存储存储器令牌的存储器令牌寄存器。寄存器控制器44设置或更新存储器令牌。主状态机39基于与存储器访问请求一起发出的访问令牌是否与存储器令牌匹配来执行存储器访问。具体地,主状态机39从存储器访问端口 36获得存储器访问请求。此夕卜,主状态机39从目标地址检查器37获得表示存储器访问请求的目标是否为本身的节点的确定结果。此外,主状态机39从存储器令牌检查器38获得表示允许访问的信号或表示不允许访问的信号。然后,如果主状态机39获得表示存储器访问请求的目标是本身的节点的确定结果并且获得表示允许访问的信号,则主状态机39执行存储器访问。反之,如果主状态机39获得表示存储器访问请求目标不是本身的节点的确定结果或获得表示不允许访问的信号,则主状态机39执行访问出错处理,而不执行存储器访问请求。此外,如果主状态机39获得表示不允许访问的信号,则主状态机39在错误寄存器43中存储表示存储器令牌与访问令牌不匹配的令牌不匹配错误。此外,如果主状态机39执行存储器访问,则主状态机39执行以下过程。首先,主状态机39向存储器访问控制器40发出针对存储器访问请求的物理地址并且从存储器19或存储器20获得针对存储器访问请求的数据。然后,主状态机39通过使用目录信息来确定所获得的数据的高速缓存状态。然后,主状态机39根据确定结果发出探听等,并且执行使得所获得的数据与所高速缓存的数据匹配的过程。针对用于匹配所获得的数据和所高速缓存的数据的过程使用用于维持一致性的传统方法。然后,主状态机39执行例如读取或写入的存储器访问,然后向发出源发送关于存储器访问的完成响应。
存储器访问控制器40执行关于存储器19和存储器20的存储器访问。例如,存储器访问控制器40从主状态机39获得读取物理地址和数据的指令。然后,存储器访问控制器40向主状态机39发送存储在由该物理地址表示的存储区中的数据。此外,当存储器访问控制器40从主状态机39获得物理地址、写入指令和数据时,存储器访问控制器40将所获得的数据写入由该物理地址表示的存储区中。存储器访问控制器40也可以具有巡查功能或用于执行诸如改写(correct write)的过程的功能。非高速缓存请求状态机41从包括在CPU 12中的核30a与核30d或包括在其他CPU之一中的核接收从UC区域中的存储器地址获得的指令,并通过PCIe执行过程的设置。例如,如果核30a与核30d中的每个获得关于诸如HDD 29的I/O装置的读取或写入请求,则非高速缓存请求状态机41向PCIe接口 42发出所获得的请求。然后,如果非高速缓存请求状态机41从PCIe接口 42接收到对所述请求的响应,则非高速缓存请求状态机41向核30a与核30d发送所获得的响应。此外,非高速缓存请求状态机41从核30a与核30d中的每个获得关于寄存器控制器44的请求。在这种情况下,非高速缓存请求状态机41向寄存器控制器44发出所获得的请求。此外,如果非高速缓存请求状态机41从寄存器控制器44获得对该请求的响应,则非高速缓存请求状态机41向核30a与核30d发送所获得的响应。此外,如果非高速缓存请求状态机41通过寄存器控制器44从服务处理器11获得针对地址映射的设置请求,则非高速缓存请求状态机41具有用于根据所获得的请求来设置地址映射35的功能。PCIe接口 42连接到PCIe开关25并且是用于PCIe的根组件(root complex)。例如,当PCIe接口 42从非高速缓存请求状态机41获得关于I/O装置等的请求时,PCIe接口42通过PCIe开关25向I/O装置等发出所获得的请求。然后,当PCIe接口 42通过PCIe开关25获得响应时,PCIe接口 42向非高速缓存请求状态机41发送所获得的响应。此外,PCIe接口 42具有直接存储器访问(DMA)的功能,并且可以向任意CPU发出DMA请求。此外,当PCIe接口 42从其他节点获得DMA请求时,PCIe接口 42执行DMA请求并然后向请求源发出DMA响应。错误寄存器43是保留发生在CPU12中的错误信息的寄存器。寄存器控制器44是对在CPU12中的寄存器进行写入或读取的控制器。例如,错误寄存器43具有用于将物理地址转换为寄存器地址的功能。然后,寄存器控制器44从非高速缓存请求状态机41等获得与由物理地址指定的关于寄存器的读请求或写请求。然后,寄存器控制44将所指定的物理地址转换为寄存器地址并对由寄存器地址所指定的寄存器进行写入或读取。此外,寄存器控制器44包括请求寄存器45并且通过内部集成电路(12C)或联合测试行动小组(JTAG)接口从服务处理器11获得关于请求寄存器45的读请求或写请求。在这种情况下,寄存器控制器44执行所获得的请求并且向服务处理器11输出响应。例如,当寄存器控制器44经由非高速缓存请求状态机41通过由核30a与核30d执行的过程而被指示改变存储器令牌时,寄存器控制器44更新存储器令牌寄存器,这将在后面进行描述。路由器46是用于互连的路由器,并向由DID指定的目的地CPU发送分组。此外,当路由器46发送分组时,路由器46附加有循环冗余校验(CRC)值以保护要发送的分组。
在图8所示的示例中,由“探听”表示探听,由“响应”或“Rsp”表示响应,由“地址”表示物理地址,由“令牌”表示存储器令牌或访问令牌。此外,在图8所示的示例中,由“op码”表示操作码。此外,由“主请求”表示由存储器请求状态机34发出的存储器访问请求,即来自本身节点的请求。此外,由“MEM Req"表示存储器访问请求,而由“MEM Rsp”表示对存储器访问请求的响应。特别地,由“来自本身节点的MEM Rsp”表示从其本身节点中的存储器接收的对存储器访问请求的响应,而由“来自其他节点的MEM Rsp”表示从其他节点中的存储器接收的响应。此外,由“对其他节点的MEM Rsp”表示对来自其他节点的存储器访问请求的响应。此外,由“来自其他节点的探听”表示来自其他节点的探听,而由“对其他节点的探听”表示向其他节点发送的探听。此外,由“对本身的节点的探听”表示向其本身节点中的L2高速缓冲存储器发出的探听,而由“对本身的节点的探听Rsp”表示对向其本身节点的L2高速缓冲存储器发出的探听的响应。此外,由“来自其他节点的探听Rsp”表示对已向其他节点发送的探听响应,而由“对其他节点的探听Rsp”表示要向其他节点发送的探听响应。此外,由“NC (不一致)Req/NC响应”表示由非高速缓存请求状态机41发送的请求和响应。由“REG R/ff REQ及响应”表示关于寄存器的读请求和写请求以及由寄存器控制器44发送和接收的响应。此外,由“Register R/W及响应”表示由寄存器控制器44执行的对寄存器进行的读取或写入。由“PCI CNFG Req及响应”表示通过PCIe接口 42的请求和响应。此外,由“DMA请求”表示DMA请求,而由“DMA响应”表示DMA响应。接下来,将参照图9描述用作包括在CPU 12中的寄存器的访问令牌表31。图9是示出根据第一实施例的用于访问令牌表的寄存器配置的示意图。如图9所示,CPU 12包括多个地址空间标识符(ASI)寄存器47至47c,可以将数据从核30a直接写入该ASI寄存器。此外,CPU 12将ASI寄存器之一作为访问令牌表31。图10是示出访问令牌表中的寄存器字段的示意图。在图10所示的示例中,访问令牌表31具有包括“O”到“31”位的32位字段,并将从“31”到“13”的位用作保留字段。此外,访问令牌表31将从“12”到“O”的位作为包含访问令牌的字段。在这点上,访问令牌表31将对应于从“12”到“O”的位的13个位用作访问令牌。具体地,当访问令牌表31设置和段的数目具有相同数目的访问令牌时,访问令牌表31不设置用于自由访问的访问令牌。因此,访问令牌表31设置大于段数目的数目的访问令牌。将返回参照图9进行描述。核30a向ASI寄存器47至47c中的每个以及访问令牌表31发出“ASI Reg R/W命令”、“地址[11:2]”以及“字节使能[3:0]”。在此提及的“ASIReg R/W命令”是对ASI寄存器47至47c中的每个以及访问令牌表31进行读取或写入的指令命令。在此提及的“地址[11:2]”是作为存储器访问请求的目标的虚拟地址。此外,在此提及的“字节使能[3:0]”表示指示使能状态的位。当核30a指示对ASI寄存器47至47c中的每个以及访问令牌表31进行写入时,核30a同时发出“ASI Reg写入数据[31:0]”.
当ASI寄存器47至47c中的每个获得进行读取的指令命令时,ASI寄存器47至47c中的每个发出“读取数据Reg A[31:0] ”至“读取数据Reg X[31:0] ”。然后,访问令牌表31输出“读取数据RegAKT
”。之后,核30a基于“读取数据RegA[31:0] ”、“读取数据Reg X[31:0]”以及“读取数据Reg AKT [O:31] ”来获得“读取数据[31:0] ”。
在这点上,当访问令牌表31获得进行读取的指令命令时,访问令牌表31输出访问令牌[12:0]。当LI高速缓存30b从核30a接收到作为存储器访问请求的“MEM REQ”时,LI高速缓存30b确定是否发生高速缓存命中(cache hit)。如果发生高速缓存命中,LI高速缓存30b向核30a发送其中已经发生高速缓存命中的数据作为“MEM REQ LlHIT Rsp”。反之,如果发生了高速缓存缺失,则LI高速缓存30b向TLB 30c发送存储器访问请求。TLB 30c将作为存储器访问请求的目标的虚拟地址转换为物理地址,并且向L2高速缓存标签32发出存储器访问请求。L2高速缓存标签32确定在对应于存储器访问请求的目标的物理地址中是否发生了高速缓存命中。如果发生了高速缓存命中,则L2高速缓存标签32通过TLB 30c向LI高速缓存30b与核30a发送数据。反之,如果发生了高速缓存缺失,则L2高速缓存32a向存储器请求状态机34发送存储器访问请求。此时,由访问令牌表31发出的访问令牌[12:0]被附加到存储器访问请求中。然后,向存储器请求状态机34发送存储器访问请求以作为“主请求(home request)”。由核30a发出的“NC请求”由非高速缓存请求状态机41经由TLB 30c来执行,并且向核30a发出“NC响应”。接下来,将参照图11描述存储器令牌检查器38的示例配置。图11是示出根据第一实施例的存储器令牌检查器的示例的示意图。在图11所示的示例中,存储器令牌检查器38包括本身节点ID寄存器38a、存储器令牌寄存器38b、操作码令牌解码器38c以及访问确定控制器38d。在图11所示的示例中,将描述单个节点包括四个CPU的情况。此外,假设存储器令牌寄存器38b具有512个入口,并且具有与图10中所示的访问令牌寄存器相同的配置。例如,存储器令牌检查器38从寄存器控制器44获得“Reg R/W命令”、“地址[11:2] ”、“字节使能[3:0] ”以及“写入数据[31:0] ”。令牌检查器31从寄存器控制器44获得“发送者ID (SID) [7:3]”。在此提及的“SID[7:3] ”是指示对应于存储器请求的请求源的CPU的标识符。此外,存储器令牌检查器38从存储器访问端口 36获得存储器访问请求。图12是示出存储器访问请求的示例的示意图。如图12所示,存储器访问请求的分组包括:格式、目的地ID、操作码、发送源ID、入口 ID、令牌以及目标地址。格式包括指示分组格式的类型的4位信息。目的地ID包括指示目的地CPU的ID,即8位DID。操作码中存储指示存储器访问请求的内容的4位信息。令牌存储16位访问令牌。目标地址包括作为存储器访问请求的目标的物理地址。除了图12中所示的分组以外,向作为针对写入数据的请求的存储器访问请求发送用于写入字节使能的数据。此外,针对不需要访问令牌的存储器访问请求,即针对回闪(flash back)指令和回写指令,发送在其中将保留位(reserve)用作令牌的分组。探听在其中存储表示请求源CPU的8位CPU ID和唯一地表示请求源过程的8位入口 ID,而不是存储令牌。此外,发送具有与图12中所示的分组的格式类似的格式的分组来作为对存储器访问请求的响应。例如,在对探听的响应中存储8位探听响应信息,而不是存储令牌。此外,发送其中将预留位用作令牌的分组作为对存储器访问请求的完成响应,并且将读取的数据附加到对读取请求的响应中。
在此将返回参照图11进行描述。存储器令牌检查器38从所获得的存储器访问请求获得SID [7:0],并确定所获得的SID是否与对应于包括在本身节点中的CPU的ID的本身节点ID匹配。在图11所示的示例中,存储器令牌检查器38确定四个CPU的ID (即CPUIDO至ID3)是否与SID匹配。然后,存储器令牌检查器38向访问确定控制器38d输入作为“我的节点命中”的确定结果。此外,存储器令牌检查器38从存储器访问请求获得操作码(op码[3:0])并向操作码令牌解码器38c输入该操作码。在这种情况下,操作码令牌解码器38c分析所获得的操作码,并确定过程是否需要访问令牌和存储器令牌之间的匹配。然后,操作码令牌解码器38c将确定结果作为令牌使能输入给访问确定控制器38d。图13是示出由操作码表示的过程的示例的示意图。图13示出了当执行使用MESI协议(伊利诺斯协议)的高速缓存一致性时发出的存储器访问请求的操作码。例如,包含操作码“0000”的存储器访问请求是执行被称为“读取IF”的过程的请求。“读取IF”是用于当从核读取的指令区域和高速缓存状态是“共享(S)”的情况下获取高速缓存的过程。包含操作码“0001”的存储器访问请求是执行被称为“读取0P”的过程的请求。“读取0P”是用于当从核读取的数据区域和高速缓存状态是“S”或“排他(E)”的情况下获取高速缓存的过程。包含操作码“0010”的存储器访问请求是执行被称为“读取EX”的过程的请求。“读取EX”是在高速缓存状态为“共享(S ) ”的情况下用于从核获取用于存储数据的排他权获取读取以及用于获取高速缓存的过程。包含操作码“0100”的存储器访问请求是执行被称为“DMA读取”的过程的请求。“DMA读取”表示从I/O读取DMA,并且是不获取高速缓存的过程。包含操作码“0110”的存储器访问请求是执行被称为“DMA写入”的过程的请求。“DMA写入”表示来自I/O装置的DMA写入,并且是不获取高速缓存的过程。包含操作码“0111”的存储器访问请求是执行被称为“DMA写入部分”的过程的请求。“DMA写入部分”是用于部分地执行来自I/O装置的DMA写入的过程,并且是不获取高速缓存的过程。包含操作码“1000”的存储器访问请求是执行被称为“回写”的过程的请求。“回写”是用于写入表示当执行CPU高速缓存收回时高速缓存状态为“经修改(M)”的数据的过程。包含操作码“1001”的存储器访问请求是执行被称为“回闪”的过程的请求。“回闪”是用于当执行CPU高速缓存收回时将高速缓存状态“E”或“S”改变为“ I无效(I)”的过程。包含操作码“ 1010”的存储器访问请求是执行被称为“高速缓存刷新”的过程的请求。“高速缓存刷新”是对由核执行高速缓存刷新的请求。在图13所示的示例中,如果操作码是“0000”、“0001”或“0010”,则操作码令牌解
码器38c确定访问令牌需要与存储器令牌匹配,并输出使能令牌“I”。如果操作码是不同于“0000”、“0001”和“0010”的操作码,则操作码令牌解码器38c确定访问令牌不需要与存储器令牌匹配,并输出使能令牌“O”。在图13中示出的与过程相关联的操作码仅仅是示例;因此,也可以将任意的操作码与任意的过程相关联。将返回参照图11进行描述。存储器令牌检查器38通过使用包括要访问的物理地址的段地址来搜索用于存储器令牌的存储器令牌寄存器38b。然后,存储器令牌检查器38向访问确定控制器38d输入“令牌匹配”,其表示搜索的存储器令牌是否与存储器访问请求的访问令牌匹配。在图11所示的示例中,向单个节点中的段分配连续的存储器地址。如果分配了非连续的存储器地址,在先前的级布置改变地址令牌的入口号的电路。在图11所示的示例中,如果地址令牌为“0000”,这表示关于非保护区的存储器访问请求。因此,存储器令牌检查器38向访问确定控制器38d输入表不“自由访问”的信号。访问确定控制器38d通知主状态机39,指示根据输入“我的节点命中”、“令牌使能”、“令牌匹配”和“自由访问”是否允许执行存储器访问请求。图14是示出由访问确定控制器执行的确定的示例的示意图。例如,如果“我的节点命中”为“否(0)”,令牌使能为“是(1)”,令牌匹配为“否(O)”以及自由访问为“否(0)”,则访问确定控制器38d不允许执行存储器访问请求。在除了上述情况以外的情况下,访问确定控制器38d允许执行存储器访问请求。具体地,对于例如回写的用于维持高速缓存一致性的过程,无论令牌匹配的值如何,访问确定控制器38d都允许执行存储器访问请求。将返回参照图11进行描述。根据从访问确定控制器38d和目标地址检查器37接收的通知,主状态机39执行从存储器访问端口 36获得的存储器访问请求。图15是示出由主状态机执行的过程的内容的示意图。例如,如果访问确定控制器38d通知主状态机39指示不允许执行存储器访问请求,则主状态机39执行当访问令牌与存储器令牌不匹配时所执行的访问出错处理。此外,如果由访问确定控制器38d通知主状态机39,指示允许执行存储器访问请求,以及由目标地址检查器37通知主状态机39,指示存储器不在本身的节点中(缺失(MISS)),则主状态机39执行以下过程。即,主状态机39执行当目标地址不匹配时所执行的访问出错操作。此外,如果由访问确定控制器38d通知主状态机39,指示允许执行存储器访问请求,以及由目标地址检查器37通知主状态机39,指示存储器在本身的节点中(命中),则主状态机39执行存储器访问请求。如果不允许执行由本身的节点发出的存储器访问请求,CPU 12至15以及CPU12a至12m中的每个CPU也可以通过发送相同的存储器访问请求来执
行重试。接下来,将参照图16描述由信息处理系统I执行的用于在节点之间执行存储器访问的过程的流程。图16是示出节点之间的存储器访问的流程的示意图。图16示出其中节点#1对节点#2中的存储器执行存储器访问的示例。例如,如图16中的(E)所示,通过使用存储器令牌管理表,由节点#2执行的应用选择未被使用的存储器令牌。然后,如在图16中的(F)所示,由节点#2执行的应用向由节点#1执行的应用通知要访问地址区域和对应于存储器令牌的访问令牌。在这种情况下,如图16中的(G)所示,由节点#1执行的应用在访问令牌表31中设置访问令牌。如图16中的(H)所示,由节点#2执行的应用在存储器令牌寄存器38b中设置对应于向节点#1通知的访问令牌的存储器令牌。在这点上,如图16中的(I)所示,当核30a发出存储器访问请求时,节点#1将在访问令牌表31中设置的访问令牌附加到存储器访问请求中,并且通过使用互连而将该存储器访问请求发送给节点#2。然后,如图16中的(J)所示,节点#2确定附加到存储器访问请求中的访问令牌是否与在存储器令牌寄存器38b中设置的存储器令牌匹配。然后,如果访问令牌与存储器令牌匹配,则节点#2执行关于要访问的区域的存储器访问请求;反之,如果访问令牌与存储器令牌不匹配,则节点#2不执行存储器访问请求。如上所述,信息处理系统I中的每个节点将访问令牌通知给访问对象节点中的存储器的节点,并在存储器令牌寄存器中将所通知的访问令牌作为存储器令牌存储。如果每个节点访问包括在另一个节点中的存储器,则每个节点向存储器访问请求中附加由要访问的节点通知的访问令牌,并发送该存储器访问请求。然后,每个节点确定附加到存储器访问请求中的访问令牌是否与存储器令牌匹配。如果每个节点确定访问令牌与存储器令牌匹配,则每个节点执行存储器访问。因此,即使节点之一发生故障并且即使与另一个节点不执行通信,信息处理系统I也能够通过要访问的节点改变存储器令牌来停止由故障节点执行的存储器访问。因此,信息处理系统I正确执行故障转移。接下来,将描述因为要访问的节点改变了存储器令牌而停止由故障节点执行的存储器访问的过程。图17是示出用于停止由故障节点执行的存储器访问的示意图。图17示出了节点#1访问节点#2中的存储器的示例。例如,节点#1在访问令牌表中存储由包括在节点#2中的应用通知的访问令牌,并向节点#2发送附加有访问令牌的存储器访问请求。在这点上,如果由节点#1执行的应用中发生了故障并且不与节点#2执行通信,则节点#2中的应用不改变在节点#1中存储的访问令牌。然而,由节点#2执行的应用可以改变在节点2中存储的存储器令牌。因此,由节点#2执行的应用改变存储在节点#2的存储器令牌寄存器中的存储器令牌。因为由故障节点#1发送的访问令牌与在节点#2中存储的存储器令牌不匹配,所以节点#2能够阻止节点#1执行存储器访问。在这点上,节点#2可以在任意时刻改变存储器令牌。具体地,节点#2改变存储器令牌并将经改变的存储器令牌作为访问令牌发送给节点#1。然后,当节点#1能够与节点#2通信时,节点#1正确地改变访问令牌并因此能够继续访问节点#2。反之,如果节点#1中已经发生了故障并且因此节点#1不与节点#2通信,因为节点#1未改变访问令牌,节点#1不访问节点#2。因此,当信息处理系统I将由节点#1执行的过程转移到另一个节点时,信息处理系统I能够防止发生裂脑状态。因此,信息处理系统I正确地执行故障转移。接下来,将参照图18和图19描述用于断开已经发生故障的节点。图18是示出用于防止来自已经发生故障的节点的存储器访问的过程的第一示意图。图19是示出用于防止来自已经发生故障的节点的存储器访问的过程的第二示意图。图18和图19各自均示出了如下示例:当节点#1至#3中的每个向节点#4发出存储器访问请求时,节点#1中的应用已经发生故障,因此节点#1中的应用不与其他节点#2至M通信。例如,如图18中的(K)所示,由节点#4执行的监测应用在任意时刻将存储在节点#4中的存储器令牌“777”改变为“888”。此外,节点#4将新存储器令牌“888”作为访问令牌分配给节点#1至#3。在这点上,因为节点#1中的应用发生了故障并且因此节点#1不与其他节点#2至#4通信,所以如图18中的(L)所示,节点#1中的应用不将访问令牌“777”更新为新的访问令牌“888”。反之,如在图18中的(M)所示,节点#2和节点#3可以将访问令牌“777”改变为新的访问令牌“888”。因此,如图19中的(N)所示,具有故障的应用的节点#1不访问节点#4 ;然而,节点#2和节点#3能够继续访问节点#4。因此,节点#1至#4中的每个节点能够容易地与故障节点断开。此外,节点#1至M中的每个不需要确定由于例如握手的过程在应用中是否已经发生了故障。具体地,节点#1至#4中的每个能够在不识别哪个节点发生了故障的情况下与故障节点断开。因此,节点#1至#4中的每个能够立即与故障节点断开。接下来,将参照图20至图25描述通过使用存储器令牌和访问令牌二者执行的存储器访问过程的流程。此外,将描述如下示例:包括核30a与存储器19的节点#1向包括核30g、存储器19a和存储器19b的节点#2发送存储器访问请求。存储器19a是仅包括本地区域的存储器,而存储器1%是仅包括共享存储区的存储器。在以下描述中,应用是由节点#1和#2中的每个执行的应用,OS是由节点#1和#2中的每个独立操作的OS,而共享存储器驱动是控制共享存储区的驱动。只要能够执行节点的应用之间的通信,则可以使用用于请求令牌或在节点之间实施通信的任何方法。这可以通过使用以下的方式来实施:例如,通过LAN的消息通信,通过互连、使用共享的存储器的消息通信以及使用共享的存储器的通信。首先,将参照图20描述由节点#1执行的用于获得访问令牌的过程的流程。图20是示出用于获得访问令牌的过程的流程的顺序图。例如,由核30a执行的应用根据由核30g执行的应用来请求访问令牌(步骤S101)。然后,由核30g执行的应用请求共享存储器驱动分配存储器令牌(步骤S102)。然后,由核30g执行的共享存储器驱动参照在存储器19a中存储的存储器令牌管理表。此外,由核30g执行的共享存储器驱动注册存储器令牌管理表中已经不再使用的存储器令牌(步骤S103)并获得存储器令牌(步骤S104)。在这点上,由核30g执行的共享存储器驱动还注册由存储器令牌使用的过程的应用ID。此外,由核30g执行的共享存储器驱动在共享存储器段管理表和存储器令牌寄存器中注册所获得的存储器令牌(步骤S105)。在这点上,由核30g执行的共享存储器驱动还注册例如要访问的段号、使用标记和应用ID。此外,由核30g执行的共享存储器驱动向由核30a执行的应用通知作为访问令牌的存储器令牌(S106)。反之,当由核30a执行的应用获得访问令牌时(步骤S107),由核30a执行的应用请求由核30a执行的共享存储器驱动设置所获得的访问令牌(步骤S108)。然后,由核30a执行的共享存储器驱动在访问令牌表31中设置所获得的访问令牌(步骤S109)。然后,由核30a执行的共享存储器驱动向由核30a执行的应用通知要访问的虚拟地址(VA)(步骤S110)。然后,由核30a执行的应用发出数据读取请求(步骤S111)。在这点上,在数据读取请求中设置在访问令牌表31中设置的访问令牌(步骤S112)。然后,节点#2确定在数据读取请求中设置的访问令牌与在存储器令牌寄存器中注册的存储器令牌是否匹配(步骤S113)。然后,如果访问令牌与存储器令牌匹配,则节点#2允许访问段区域(步骤S114)。接下来,将参照图21描述节点#1访问在节点#2中的多个段的示例。图21是示出用于访问多个段的过程的流程的顺序图。例如,由核30a执行的应用请求由核30a执行的共享存储器驱动设置被用于访问存储器19b中的段#A的访问令牌#A (步骤S201)。然后,由核30a执行的共享存储器驱动在访问令牌表31中设置访问令牌#A (步骤S202)。此外,由核30a执行的应用发出关于段#A的数据读取请求(步骤S203)。在这点上,在数据读取请求中设置访问令牌#A (步骤S204)。然后,节点#2确定在数据读取请求中设置的访问令牌#A与段#A中的存储器令牌是否匹配(步骤S205)。如果访问令牌#A与段#A中的存储器令牌匹配,则节点#2允许关于段#A的存储器访问(步骤S206)。此外,由核30a执行的应用请求由核30a执行的共享存储器驱动设置被用于访问存储器1%中的段#B的访问令牌#B (步骤S207)。然后,由核30a执行的共享存储器驱动在访问令牌表31中设置访问令牌#8 (步骤S208)。此外,由核30a执行的应用发出关于段#8的数据读取请求(步骤S209)。在这点上,在数据读取请求中设置访问令牌#B (步骤S210)。然后,节点#2确定在数据读取请求中设置的访问令牌#B与段#B中的存储器令牌是否匹配(步骤S211)。如果访问令牌#B与在段#B中的存储器令牌匹配,则节点#2允许关于段#B的存储器访问(步骤S212)。接下来,将参照图22描述当发生上下文切换时访问令牌表31中的数据堆栈存放的过程的流程。图22是示出了上下文切换的流程的顺序图。在图22所示的示例中,将描述因为当核30a正在执行应用#A时发生中断过程所以将要执行的应用切换为应用#B的过程的流程。例如,当核30a运行应用#A时发生了定时中断(步骤S301)。在这种情况下,由核30a执行的OS执行包括访问令牌表31中的数据的上下文切换(步骤S302)并对存储器19的寄存器中的值进行堆栈存放(步骤S303)。然后,由核30a执行的OS获得当应用#B 19正在被执行时获得的被堆栈存放在存储器中的寄存器的值。然后,由核30a执行的OS将所获得的值设置在访问令牌表31中(步骤S305)。之后,由核30a执行的应用#B发出数据读取请求(步骤S306)。然后,将设置在访问令牌表31中的访问令牌(即,由应用#B使用的访问令牌)设置在数据读取请求中(步骤S307)。然后,节点#2确定由应用#B使用的段中的存储器令牌是否与设置在数据读取请求中的访问令牌匹配(步骤S308)。如果存储器令牌与访问令牌匹配,则节点#2允许对共享存储区的访问(步骤S309)。接下来,将参照图23描述由节点#2执行的用于改变存储器令牌的过程的流程。图23是示出用于改变存储器令牌的过程的流程的顺序图。在图23所示的示例中,将描述如下示例:在节点#1中没有发生故障,因而节点#2可以正确访问。假设图23中所示步骤S411至S414中执行的过程与图22中所示步骤S306至S309中执行的过程相同;因此将省略其描述。例如,由核30g执行的应用请求由核30g执行的共享存储器驱动在任意时刻更新令牌(步骤S401)。然后,由核30g执行的共享存储器驱动针对新的可用存储器令牌来搜索存储器令牌管理表(步骤S402)并向由核30g执行的应用通知要使用的新存储器令牌。之后,由核30g执行的应用向由核30a执行的应用发出访问停止请求(步骤S403)并等待预定的时间段(步骤S404)。然后,由核30g执行的应用向由核30g执行的共享存储器驱动通知要使用的新的存储器令牌(步骤S405)。在这种情况下,由核30g执行的共享存储器驱动在存储器令牌寄存器中设置新的存储器令牌(步骤S406)。此外,由核30g执行的共享存储器驱动更新存储器令牌管理表(步骤S407)。然后,由核30g执行的应用向由核30a执行的应用通知新的访问令牌和存储器访问的恢复(步骤S408)。在这种情况下,由核30a执行的应用向由核30a执行的共享存储器驱动通知新的访问令牌(步骤S409)。然后,由核30a执行的共享存储器驱动在访问令牌表31中设置新的访问令牌(步骤S410)。当允许重试存储器访问时,当执行用于改变存储器令牌的过程时不需要等待。因此,将参照图24描述由节点#2执行的用于改变存储器令牌的过程的变型。图24是示出用于改变存储器令牌的过程的变型的顺序图。在图24所示的示例中,将描述如下示例:在节点#1中未发生故障,因而在存储器令牌改变后节点#2正确访问。例如,由核30g执行的应用请求由核30g执行的共享存储器驱动在任意时刻更新令牌(步骤S501)。然后,由核30g执行的共享存储器驱动针对新的可用存储器令牌搜索存储器令牌管理表(步骤S502)并向由核30g执行的应用通知要使用的新的存储器令牌(步骤S503)。然后,由核30g执行的应用向由核30g执行的共享存储器驱动通知要使用的新的存储器令牌(步骤S504)。在这种情况下,由核30g执行的共享存储器驱动在存储器令牌寄存器中设置新的存储器令牌(步骤S505)。此外,由核30g执行的共享存储器驱动在存储器令牌管理表中注册新的存储器令牌(步骤S506)并向由核30g执行的应用通知已经注册的新的存储器令牌(步骤S507)。此外,由核30g执行的应用向由核30a执行的应用发送新的访问令牌(步骤S508 )。在这点上,由核30a执行的应用发出数据读取请求(步骤S509)。然后,由核30a执行的共享存储器驱动在访问令牌表31中设置新的访问令牌(步骤S510)。然而,在步骤S510中设置的访问令牌与新的存储器令牌不匹配,因此存储器访问被拒绝(步骤S511)。因此,节点#2向节点#1发送表示拒绝访问的响应(步骤S512)。在这点上,因为由核30a执行的应用从由核30g执行的应用接收新的访问令牌,所以由核30a执行的应用将令牌通知给由核30a执行的共享存储器驱动(步骤S513)。然后,由核30a执行的共享存储器驱动在访问令牌表31中设置新的访问令牌(步骤S514)。之后,由核30a执行的应用发送包含数据读取请求的重试(步骤S515)。然后,在包含数据读取请求的重试中设置新的访问令牌(步骤S516)。因此,节点#2确定由应用#8使用的段中的存储器令牌是否与设置在数据读取请求中的访问令牌匹配(步骤S517)。如果存储器令牌与访问令牌匹配,节点#2允许对共享存储区的访问(步骤S518)。此外,如果从节点#1接收的重试中设置的访问令牌与存储器令牌不匹配,则节点#2确定发生了存储器访问错误;因此,节点#2可以执行用于断开与节点#1的连接的过程。接下来,将参照图25描述如下过程的流程:其中当节点#2改变存储器令牌时在节点#1中发生了故障,并且因此由于未正确地执行访问,节点#1被断开。图25是示出用于断开故障节点的过程的流程的顺序图。在图25所示的示例中,将描述如下示例:其中节点#1发生了故障并因此不执行与节点#2的通信。此外,在图25所示的示例中,假设节点#1以预定时间间隔向要访问的节点#2发出心跳(hearbeat)通知。
首先,由核30a执行的应用发出心跳通知(步骤S601)。然而,因为在节点#1中已经发生了故障,所以未向节点#2传送心跳通知。因此,由核30g执行的应用检测到节点#1的异常(步骤S602)。然后,由核30g执行的应用请求由核30g执行的共享存储器驱动更新存储器令牌(步骤S603)。然后,由核30g执行的共享存储器驱动针对新的存储器令牌搜索存储器令牌管理表(步骤S604)并向由核30g执行的应用通知新的存储器令牌。然后,由核30g执行的应用将新的存储器令牌发送给节点#1以作为访问令牌;然而,因为在节点#1中发生了故障,所述新的访问令牌未到达节点#1。然后,由核30g执行的应用向由核30g执行的共享存储器驱动通知要使用的新的存储器令牌(步骤S605)。在这种情况下,由核30g执行的共享存储器驱动在存储器令牌寄存器中设置新的存储器令牌(步骤S606)。此外,由核30g执行的共享存储器驱动在存储器令牌管理表中注册新的存储器令牌(步骤S607)并向由核30g执行的应用通知已经注册的新的存储器令牌。此外,由核30g执行的应用向节点#1通知通信的恢复通知(步骤S608);然而,因为在节点#1中发生了故障,所以通信的恢复通知未到达节点#1。因此,由核30g执行的应用向由核30g执行的共享存储器驱动发出用于断开节点#1的请求(步骤S609)。然后,由核30g执行的共享存储器驱动针对要断开的节点#1所使用的共享存储区搜索共享存储器段管理表(步骤S610)。在这点上,当由核30a执行的应用发出数据读取请求时(步骤S611),节点#1在数据读取请求中设置访问令牌(步骤S612)并向节点#2发送访问令牌。然而,因为访问令牌与新的存储器令牌不匹配(步骤S613),节点#2拒绝存储器访问并向节点#1发送地址出错(address exception)(步骤 S614)。在这种情况下,节点#1执行如下回写过程:将存储在LI高速缓存30b、LI高速缓存30e和L2高速缓存32a中的数据发送给节点#2 (步骤S615)。当节点#2以这种方式从节点#1获得回写数据时,节点#2执行对共享存储区的回写,而无需确定存储器访问是否可以执行(步骤S616)。然后,通过使用高速缓存刷新(cache flush)和隐式回写,节点#1和节点#2允许在LI高速缓存30b、LI高速缓存30e和L2高速缓存32a中的每个中保留的数据与在存储器19b中保留的数据匹配。然后,节点#2将由节点#1中的核30a执行的过程的工作移动到由另一个CPU执行的过程,并且执行用于断开节点#1的断开过程(步骤S617和步骤S618)。然后,由核30g执行的共享存储器驱动向由核30g执行的应用通知已经完成了节点#1的断开(步骤S619)。接下来,将参照图26描述用于改变存储器令牌的过程的示例。图26是示出用于改变存储器令牌的过程的流程的流程图。在图26所示的示例中,假设CPU 12针对每个过程对存储器访问请求的令牌错误进行计数,其由“N”表示。此外,在CPU 12执行如图26所示的过程之前,CPU 12在每个过程中在“N”中设置初始值“O”。此外,图26示出了如下示例:通过使用存储器错误处理来断开其中出现10次或更多次重试失败的节点。例如,CPU 12作为正常过程执行根据存储器令牌和访问令牌二者执行的存储器访问请求(步骤S701)。在这点上,CPU 12确定是否产生了错误信号(步骤S702)。该错误信号是当发生错误时被通知的信号以及当例如将错误被存储在错误寄存器43中时被通知的信号。
在这点上,如果CPU 12确定产生了错误信号(步骤S702中的是)。则CPU 12确定由错误信号表示的错误的内容是否为表示存储器令牌与访问令牌不匹配的令牌错误(步骤S703)。如果CPU 12确定由错误信号表示的错误的内容是令牌错误(步骤S703中的是),则CPU 12执行以下过程。S卩,CPU 12确定导致令牌错误的请求存储器访问的过程的值“N”是否小于“10”(步骤S704)。如果CPU 12确定请求存储器访问的过程的值“N”小于“10”(步骤S704中的是),CPU 12将请求存储器访问的过程的值“N”增加“I”(步骤S705)。然后,CPU 12再次执行正常过程(步骤S701)。此外,如果CPU 12确定请求存储器访问的过程的值“N”等于或大于“10”(在步骤S704的否),则CPU 12执行以下过程。S卩,CPU 12执行存储器错误处理(步骤S706),断开执行用于请求存储器访问的过程的节点,并且结束该过程。接下来,将描述当CPU 12断开节点时用于更新共享存储器段管理表和存储器令牌管理表的过程。图27是示出用于更新共享存储器段管理表和存储器令牌管理表的过程的流程的流程图。CPU 12针对共享存储器段管理表中的每个入口来执行图27所示的过程。此外,CPU 12执行如图27所示的、当从由对应于存储器访问请求的发出源的节点执行的过程获得段释放请求时被触发的过程。例如,CPU 12参照使用标记并确定使用标记是否为“I” (步骤S801)。如果使用标记为“I”(步骤S801中的是),则CPU 12确定发出段释放请求的过程的应用ID是否与入口的应用ID匹配(步骤S802)。如果CPU 12确定应用ID匹配(步骤S802中的是),则CPU 12确定执行发出段释放请求的过程的节点的使用节点标记是否为“I”(步骤S803)。如果执行发出段释放请求的过程的节点的使用节点标记为“I”(步骤S803中的是),则CPU 12将执行发出段释放请求的过程的节点的使用节点标记设置为“O”(步骤S804)。然后,CPU 12确定另一个使用节点标记是否为“O” (步骤S805)。如果另一个使用节点标记是“O”(步骤S805中的是),则CPU 12将使用节点标记设置为“O”(步骤S806)。然后,CPU 12识别入口的存储器令牌的值,并针对其中存储了具有与所识别的值相同的值的存储器令牌的入口来在存储器令牌管理表中搜索入口。然后,CPU 12将所搜索到的入口的使用标记设置为“O”(步骤S807)。然后,CPU 12发出表示已经完成对节点的断开的完成响应(步骤S808)并结束过程。此外,如果使用标记不为“I”(步骤S801中的否),应用ID不匹配(步骤S802中的否),或使用节点标记为“O”(在步骤S803中的否),则CPU12发出完成响应(步骤S808)。此外,如果使用节点标记中的任一个都不为“O”(步骤S805中的否),则CPU 12发出完成响应(步骤 S808)。图28是示出共享存储器段管理表的更新的示意图。例如,如图28中的阴影区域所示,通过执行图27中所示的步骤S804和步骤S806的过程,CPU 12将使用标记和使用节点标记设置为“O”。图29是示出存储器令牌管理表的更新的示意图。例如,如图29中的阴影区域所示,通过执行图27中所示的步骤S807的过程,CPU 12将使用标记设置为“O”。以这种方式,通过执行图27所示的过程,CPU 12能够通过合适地更新共享存储器段管理表和存储器令牌管理表来断开节点。第一实施例的优点如上所述,CPU 12至15以及CPU 12a至12m中的每个具有访问令牌表31和31a。此外,CPU 12至15以及CPU 12a至12m中的每个将访问令牌附加到要发送给另一个节点的存储器访问请求,并发送该存储器访问请求。此外,CPU 12至15以及CPU 12a至12m中的每个包括如下存储器令牌寄存器:其中存储具有与发送给向相应CPU发送存储器访问请求的CPU的访问令牌的值相同的值的存储器访问令牌。然后,CPU 12至15以及CPU 12a至12m中的每个基于接收到的存储器访问请求的访问令牌和存储在存储器令牌寄存器中的存储器令牌两者来控制存储器访问请求的执行。因此,通过改变存储在对应的CPU的存储器令牌寄存器中的存储器令牌,CPU 12至15以及CPU 12a至12m中的每个阻止由故障节点发出的存储器访问请求的执行。因此,信息处理系统I能够避免“裂脑”的发生,从而正确执行故障转移。此外,当改变存储器令牌时,CPU 12至15以及CPU 12a至12m中的每个向对应于存储器访问请求的发出源的节点通知新的存储器令牌以作为访问令牌。然后,如果存储器令牌与接收到的存储器访问请求的访问令牌匹配,则CPU 12至15以及CPU 12a至12m中的每个允许执行存储器访问请求。因此,CPU 12至15以及CPU 12a至12m中的每个能够防止由故障节点执行的存储器访问,而无需确定访问源节点中是否发生了故障。因此,与用于通过使用握手来确定访问源节点中是否发生了故障的方法相比,CPU 12至15以及CPU 12a至12m中的每个能够立即并容易地断开节点。此外,当CPU 12至15以及CPU 12a至12m中的每个拒绝存储器访问请求时,CPU12至15以及CPU 12a至12m中的每个更新存储器令牌,然后将由对应于存储器访问请求的发出源的节点中的CPU高速缓存的数据回写被该CPU访问的存储器。因此,即使CPU 12至15以及CPU 12a至12m中的每个包括高速缓冲存储器,CPU 12至15以及CPU 12a至12m中的每个能够在保持高速缓存一致性的同时正确断开节点。此外,CPU 12至15以及CPU 12a至12m中的每个将新的访问令牌连同用于停止访问存储器访问请求的发出源的指令一起发送。然后,CPU12至15以及CPU 12a至12m中的每个在预定的持续时间之后更新存储器令牌并指示存储器访问请求的发出源恢复访问。因此,CPU 12至15以及CPU 12a至12m中的每个能够拒绝来自故障节点的存储器访问,而无需接收来自存储器访问请求的发出源的重试。因此,当CPU 12至15以及CPU12a至12m中的每个不允许存储器访问请求时,CPU 12至15以及CPU 12a至12m中的每个能够合适地断开故障节点,而无需确定在节点中发生的错误的类型。此外,如果不允许对于另一个节点的存储器访问,CPU 12至15以及CPU 12a至12m中的每个可以执行重试。具体地,如果不允许存储器访问,则CPU 12至15以及CPU 12a至12m中的每个具有重试相同存储器访问请求的功能。在这种情况下,CPU 12至15以及CPU 12a至12m中的每个能够正确地断开故障,而不是等待新的访问令牌被通知。具体地,因为在访问源节点通过使用改变了的访问令牌执行存储器访问的时间与访问目的地节点改变存储器令牌的时间之间存在时间延迟,所以访问有可能被拒绝。
例如,在一些情况下,因为访问源节点附加了未改变的访问令牌,而访问目的地节点通过使用改变了的存储器令牌来确定是否可以执行访问,所以访问有可能被拒绝。类似地,在一些情况下,因为访问源节点附加改变了的访问令牌而访问目的地节点通过使用未改变的存储器令牌来确定是否可以执行访问,所以访问有可能被拒绝。在这点上,如果访问被拒绝,则访问源节点发送重试。然后,正常操作的访问源节点附加当重试存储器访问时获得的访问令牌。然后,访问目的地节点通过使用改变了的存储器令牌来确定是否可以执行访问。因此,CPU 12至15以及CPU 12a至12m中的每个能够允许由正常操作的访问源节点确定的存储器访问。反之,未正常操作的访问源节点附加未改变的访问令牌以重试存储器访问,而访问目的地节点通过使用改变了的存储器令牌来确定是否可以执行访问。因此,CPU 12至15以及CPU 12a至12m中的每个确定是否允许由未正常操作的访问源节点执行存储器访问重试,以及断开对应于重试的发出源的节点。如果CPU 12至15以及CPU 12a至12m中的每个拒绝存储器访问的重试,则对应于存储器访问请求的发出源的节点中的CPU将高速缓存的数据回写被该CPU访问的存储器。因此,CPU 12至15以及CPU 12a至12m中的每个能够在维持高速缓存一致性的同时正确地断开节点。此外,CPU 12至15以及CPU 12a至12m中的每个使用当执行上下文切换时数据被堆栈存放到其中的寄存器作为访问令牌表。因此,即使当通过使用多线程来执行过程时,CPU 12至15以及CPU 12a至12m中的每个能够在不使OS或应用复杂化的情况下防止由故障节点执行的存储器访问以及正确地执行故障转移。[b]第二实施例在上面的说明中,描述了根据本发明的实施例;然而,实施例并不限制于此,并且可以以不同于上述的实施例的各种实施例来实施。因此,接下来,将作为第二实施例描述包括在本发明中的另一个实施例。(I)访问令牌表上述CPU 12包括分别在核30a和核30d中的访问令牌表31和访问令牌表31a ;然而,本实施例并不限于此。例如,如果核30a是能够进行多线程的核,则CPU 12还可以使用用于每个硬件线程的访问令牌表。例如,图30是示出多线程访问令牌表的示例的示意图。在图30所示的示例中,核30a具有两个硬件线程。在这种情况下,CPU 12包括由每个硬件线程使用的两个访问令牌表31b和31c。此外,CPU 12将被发出存储请求的线程使用并且由访问令牌表输出的访问令牌存储到分组中。此外,访问令牌表的数目并不限制于在图30中所示的示例;因此,CPU12也可以具有任意数目的访问令牌表。如上所述,如果CPU 12使用用于每个硬件线程的访问令牌表,则CPU 12在不使OS或应用复杂化的情况下防止由故障节点执行的存储器访问,即使在通过使用多线程来执行过程的情况下也如此。因此,信息处理系统I能够正确地执行故障转移。(2)非保护区当上述CPU 12访问非保护区时,CPU 12使用“allO”作为访问令牌和存储器令牌;然而,本实施例并不限于此。例如,也可以通过在由存储器令牌寄存器存储的存储器令牌中设置有效位并使用该有效位来表示目标访问是在受保护区还是处于非保护区中。例如,图31是示出存储器令牌检查器的变型的示意图。在图31所示的示例中,存储器令牌检查器38e包括存储器令牌寄存器38f。存储器令牌寄存器38f使用包括在存储器令牌寄存器38b中的I位保留位作为有效位,并在与非保护区相关联的字段中存储有效位“O”。在这种情况下,如果目标访问在非保护区,则向访问确定控制器38d输入表示自由访问的信号;因此,能够在不在非保护区中设置存储器令牌的情况下合适地实施存储器访问。(3)归因于未授权访问的存储器令牌匹配上述CPU 12取决于存储器令牌是否与访问令牌匹配来确定是否执行存储器访问请求;然而,实施例并不限于此。例如,除了确定存储器令牌是否与访问令牌匹配之外,也可以确定发出存储器访问请求的节点是否为预先允许的节点。例如,图32是示出仅允许预先允许的节点执行存储器访问的存储器访问令牌检查器的示意图。在图32所示的示例中,除了存储器令牌寄存器38b之外,存储器令牌检查器38g还包括节点确定电路38h,并且节点确定电路38h包括节点列表寄存器38i。在这点上,将被允许访问的节点的节点ID存储在用于每个段区域的节点列表寄存器38i中。节点列表寄存器38i根据对应于存储器访问请求的目标的段的地址来输出被允许访问的节点的节点ID。然后,节点确定电路38h向访问确定控制器38d输出表示已由节点列表寄存器38i输出的节点ID是否与作为存储器访问请求的发出源的节点的节点ID匹配的节点ID匹配。然后,如果令牌使能表示“是(I)”以及如果“我的节点命中(MY Node HIT)”,令牌匹配,节点ID匹配以及访问自由均为“0”,则访问确定控制器38d不允许执行存储器访问请求。在除了上述情况的情况下,访问确定控制器38d允许执行存储器访问请求。如上所述,CPU 12能够通过检查节点ID来防止未授权访问。根据实施例的方面,在共享存储器配置中正确地执行故障转移。
权利要求
1.一种信息处理设备,包括: 具有第一节点和第二节点的多个节点,所述多个节点中的每个包括处理器和存储器,在所述存储器中,至少部分区域被设置为共享存储区;以及连接所述节点的互连;其中所述第一节点包括: 第一存储单元,其中存储用于访问所述第二节点中的存储器的标识信息;以及发送单元,其通过附加存储在所述第一存储单元中的所述标识信息来将要发送的通信数据发送给所述第二节点;并且所述第二节点包括: 第二存储单元,其中存储用于控制对另一节点对所述第二节点中的存储器中的所述共享存储区的访问的许可的标识信息;以及 控制单元,其基于附加到从所述第一节点发送的所述通信数据的所述标识信息和存储在所述第二存储单元中的所述标识信息,来确定是否允许访问所述第二节点中的所述存储器中的所述共享存储区。
2.根据权利要求 1所述的信息处理设备,其中: 所述第一存储单元存储由所述第二节点通知的所述标识信息; 所述第二节点还包括: 通知单元,其将新的标识信息通知给所述第一节点;以及 改变单元,其将存储在所述第二存储单元中的所述标识信息改变为由所述通知单元通知的所述标识信息; 当附加到从所述第一节点发送的所述通信数据的所述标识信息与存储在所述第二存储单元中的所述标识信息匹配时,所述控制单元允许对所述第二节点中的所述存储器中的所述共享存储区的访问;以及 当附加到从所述第一节点发送的所述通信数据的所述标识信息与存储在所述第二存储单元中的所述标识信息不匹配时,所述控制单元不允许对所述第二节点中的所述存储器中的所述共享存储区的访问。
3.根据权利要求2所述的信息处理设备,其中: 所述第一节点还包括高速缓冲存储器,其保留从所述第二节点中的所述存储器获得的数据; 当所述控制单元不允许用于将来自所述第二节点中的所述存储器的数据保留到所述第一节点中的所述高速缓冲存储器的访问时,所述控制单元将包括在所述第一节点中的所述高速缓冲存储器所保留的数据回写到所述第二节点中的所述存储器;以及 在所述控制单元将包括在所述第一节点中的所述高速缓冲存储器所保留的数据回写到所述第二节点中的所述存储器之前,所述改变单元将存储在所述第二存储单元中的所述标识信息改变为所述新的标识信息。
4.根据权利要求2或3所述的信息处理设备,其中: 所述通知单元将所述新的标识信息与用于停止访问的指令一起通知给所述第一节点;以及 在从所述通知单元将所述用于停止访问的指令通知给所述第一节点起经过预定时间之后,所述改变单元将存储在所述第二存储单元中的所述标识信息改变为由所述通知单元通知的所述新的标识信息。
5.根据权利要求2或3所述的信息处理设备,其中: 所述通知单元将所述新的标识信息通知给所述第一节点; 所述改变单元将存储在所述第二存储单元中的所述标识信息改变为所述新的标识信息;并且 当对所述第二节点中的存储器中的所述共享存储区的访问未被允许时,所述发送单元重新发送用于请求相同访问的所述通信数据。
6.根据权利要求5所述的信息处理设备,其中,当所述控制单元不允许对所述第二节点中的所述存储器中的所述共享存储区的访问时,所述控制单元将包括在所述第一节点中的所述高速缓冲存储器所保留的数据回写到所述第二节点中的所述存储器。
7.根据权利要求1至3中任一项所述的信息处理设备,其中所述第一节点将执行上下文切换时用于对数据进行堆栈存放的寄存器的一部分用作所述第一存储单元。
8.根据权利要求1至3中任一项所述的信息处理设备,其中所述第一节点包括的所述第一存储单元的数目与在所述第一节点中并行执行的线程的数目相等。
9.一种由信息处理设备执行的防止未授权访问的方法,所述信息处理设备包括具有第一节点和第二节点的多个节点,以及连接所述节点的互连,所述多个节点中的每个包括处理器和存储器,所述存储器中的至少一部分区域被设置为共享存储区,所述防止未授权访问的方法包括: 由所述第一节点发送用于访问所 述第二节点中的存储器、并且被附加到要发送给所述第二节点的通信数据的标识信息; 由所述第二节点获得用于控制对另一节点对所述第二节点中的存储器中的所述共享存储区的访问的许可的标识信息;以及 由所述第二节点基于被附加到从所述第一节点发送的所述通信数据的所述标识信息和在所述获得过程中获得的所述标识信息,来确定是否允许对所述第二节点中的所述存储器中的所述共享存储区的访问。
全文摘要
一种信息处理设备,其包括具有第一节点和第二节点的节点,每个节点包括处理器和存储器,该存储器中至少部分区域被设置为共享存储区。第一节点存储用于访问第二节点中的存储器的标识信息,并通过附加该标识信息来发送通信数据。第二节点存储用于控制对第二节点中的共享存储区的访问的许可的标识信息,并基于被附加到通信数据的标识信息和存储在第二节点中的标识信息来确定是否允许对第二节点中的共享存储区的访问。
文档编号G06F3/06GK103186481SQ20121042455
公开日2013年7月3日 申请日期2012年10月30日 优先权日2011年12月28日
发明者植木俊和, 冈田诚之, 鲤沼秀之, 杉崎刚 申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1