少なくとも一部を共有メモリ領域として設定可能な記憶装置と1つ以上の演算装置とを各々が備える複数のノードと、前記複数のノード間を接続するインターコネクトとを有する情報処理装置であって、前記複数のノードのうちの第1のノードは、他のノードの記憶装置にアクセスするための識別情報を記憶する第1記憶部と、前記他のノードへの通信データに前記識別情報を付加して送信する送信部とを備えた演算装置を有し、前記複数のノードのうちの第2のノードは、他のノードから該第2のノードの記憶装置の共有メモリ領域へのアクセスの許可の制御に用いる識別情報を記憶する第2記憶部と、前記第1のノードからの通信データに付加された前記識別情報と、前記第2記憶部に記憶された識別情報とに基づいて、前記第2のノードの記憶装置の共有メモリ領域へのアクセス可否を制御する制御部と、を有することを特徴とする情報処理装置。前記第1のノードが有する演算装置の各々は、前記第2のノードから通知される識別情報を前記第1記憶部に格納し、前記第2のノードは、前記第1のノードに新たな識別情報を通知する通知部と、前記第2記憶部に記憶された識別情報を、前記通知部が通知した識別情報に変更する変更部とを有し、前記制御部は、前記第1のノードからの通信データに付加された前記識別情報と、前記第2記憶部に記憶された識別情報とが一致した場合は、前記第2のノードの記憶装置の共有メモリ領域へのアクセスを許可し、前記第1のノードからの通信データに付加された前記識別情報と、前記第2記憶部に記憶された識別情報とが一致しない場合には、前記第2のノードの記憶装置の共有メモリ領域へのアクセスを許可しないことを特徴とする請求項1に記載の情報処理装置。前記第1のノードが有する演算装置の各々は、前記第2のノードの記憶装置から取得したデータを保持するキャッシュメモリを有し、前記制御部は、前記第2のノードの記憶装置から前記第1のノードの前記キャッシュメモリにデータを保持するためのアクセスを許可しなかった場合には、前記第1のノードの演算装置が有するキャッシュメモリが保持したデータを前記第2のノードの記憶装置に書き戻し、前記変更部は、前記制御部が前記第1のノードの演算装置が有するキャッシュメモリが保持したデータを前記第2のノードの記憶装置に書き戻す前に、前記第2記憶部に記憶された識別情報を新たな識別情報に変更することを特徴とする請求項2に記載の情報処理装置。前記通知部は、前記第1のノードに対して、アクセス停止の指示とともに新たな識別情報を通知し、前記変更部は、前記通知部が前記アクセス停止の指示を通知してから所定の時間が経過した後に、前記第2記憶部に記憶された識別情報を、前記通知部が前記第1のノードに通知した新たな識別情報に変更することを特徴とする請求項2または3に記載の情報処理装置。前記通知部は、前記第1のノードに新たな識別情報を通知し、前記変更部は、前記第2記憶部に記憶された識別情報を、前記新たな識別情報に変更し、前記送信部は、前記第2のノードの記憶装置の共有メモリ領域へのアクセスが許可されなかった場合には、同一のアクセスを要求する通信データを再度送信する事を特徴とする請求項2~4のいずれか1つに記載の情報処理装置。前記制御部は、前記第2のノードの記憶装置の共有メモリ領域へのアクセスを許可しなかった場合は、前記第1のノードの演算装置が有するキャッシュメモリが保持したデータを前記第2のノードの記憶装置に書き戻すことを特徴とする請求項5に記載の情報処理装置。前記第1のノードが有する演算装置の各々は、コンテキストスイッチを行う際にスタックするレジスタの一部を、前記第1記憶部として用いることを特徴とする請求項1~6のいずれか1つに記載の情報処理装置。前記第1のノードが有する演算装置の各々は、並行して実行するスレッドと同じ数の第1記憶部を有することを特徴とする請求項1~7のいずれか1つに記載の情報処理装置。少なくとも一部を共有メモリ領域として設定可能な記憶装置と1つ以上の演算装置とを各々が備える複数のノードと、前記複数のノード間を接続するインターコネクトとを有する情報処理装置が実行する不正アクセス防止方法において、前記複数のノードのうちの第1のノードが有する演算装置の各々は、他のノードの記憶装置にアクセスするための識別情報を前記他のノードへの通信データに付加して送信し、前記複数のノードのうちの第2のノードは、他のノードから該第2のノードの記憶装置の共有メモリ領域へのアクセスの許可の制御に用いる識別情報を保持し、前記第1のノードからの通信データに付加された前記識別情報と、保持した前記識別情報とに基づいて、前記第2のノードの記憶装置の共有メモリ領域へのアクセス可否を制御する処理を実行することを特徴とする不正アクセス防止方法。ここで、上述した共有メモリ構成の情報処理システムは、あるノードが実行するアプリケーションが故障して他のノードと通信不能となった場合には、故障したノードの処理を他のノードに移すフェールオーバを正しく実行できないという問題がある。以下、図37A、図37Bを用いて、フェールオーバが正常に実行できない例について説明する。図37Aは、フェールオーバが正常に実行できない例について説明するための図1である。また、図37Bは、フェールオーバが正常に実行できない例について説明するための図2である。なお、図37A、図37Bに示す例では、ノード55が実行するアプリケーションに障害が発生し、他のノードと通信ができなくなった例について説明する。例えば、図37Aに示すように、ノード56は、ノード55が実行するアプリケーションからのメモリアクセスを受付けるが、ノード55と通信が行えなくなったため、ノード55が故障したものと判別する。このような場合には、図37Bに示すように、ノード55が実行する処理をノード57に移すフェールオーバが実行される。しかし、ノード56は、ノード55と通信できないので、ノード55からのメモリアクセスを停止させることができない。この結果、ノード55とノード57とが同一のアプリケーションを実行するスプリットブレイン状態が発生してしまい、フェールオーバを正しく実行できない。そこで、上述したストレージキーを設定する技術を共有メモリ構成の情報処理システムに適用し、ストレージキーを変更することで、他ノードから自ノードが有するメモリへのアクセスを防ぐことも考えられる。しかしながら、上述したストレージキーを設定する技術では、同一のOSがストレージキーとアプリケーションキーとを設定する。このため、メモリアクセス元のノードとアクセス対象となるノードとが異なるOSを実行する場合には、ストレージキーを変更することができず、故障したノードからのアクセスを防ぐことができない。1つの側面では、本発明は、共有メモリ構成におけるフェールオーバを正しく行うことを目的とする。1つの側面では、すくなくとも一部を共有メモリ領域として設定可能な記憶装置と1つ以上の演算装置とを各々が備える複数のノードと、複数のノード間を接続するインターコネクトとを有する情報処理装置である。ここで、第1のノードが有する演算装置の各々は、他のノードの記憶装置にアクセスするための識別情報を保持する第1記憶部と、他のノードへの通信データに識別情報を付加して送信する送信部とを有する。また、第2のノードは、他ノードから自ノードの記憶装置の共有メモリ領域へのアクセスの許可の制御に用いる識別情報を保持する第2記憶部を有する。さらに、第2のノードは、第1のノードからの通信データに付加された識別情報と、第2記憶部に記憶された識別情報とに基づいて、第2のノードの記憶装置の共有メモリ領域へのアクセス可否を制御する制御部を有する。1実施形態によれば、共有メモリ構成におけるフェールオーバを正しく行う。以下に添付図面を参照して本願に係る情報処理装置および不正アクセス防止方法について説明する。以下の実施例1では、図1を用いて、情報処理システムの一例を説明する。図1は、実施例1に係る情報処理システムを説明するための図である。図1に示す例では、情報処理システム1は、クライアント端末2、クアイアント端末2a、LANLocalAreaNetworkスイッチ3、管理端末4、LANスイッチ5、2重のグローバルクロスバ6、複数のノード10~10mを有する。また、グローバルクロスバ6は、サービスプロセッサ7を有する。本実施例において、ノードは1つの独立したOSOperatingSystemが走行する単位であり、OSが走行する為に最低限必要な装置を含む。後に詳細に述べるが、それらは1つ以上のCPU、メモリ、HDDHardDiskDriveまたはHDDに代わる外部記憶装置を有する。ノードは物理的に単一の装置であっても良いし、ケーブル等の装置間接続機能によって接続されて物理的に複数の装置で構成されていても良い。各ノード10~10mは、サービス用LANによってLANスイッチ3および各クライアント端末2、2aと接続されている。また、各ノード10~10mは、内部LANによってLANスイッチ5と接続されている。また、各ノード10~10mは、管理LANを介して管理端末4と接続されている。また、各ノード10~10mは、2重のグローバルクロスバ6と接続されており、インターコネクトを介して、相互に接続されている。各クライアント端末2、2aは、サービス用LANを介して各ノード10~10mからサービスを取得する。なお、図1では図示を省略したが、情報処理システム1は、任意の数のクライアント端末を他にも有してもよい。ノード10は、サービスプロセッサ11、CPU12、ローカルXBクロスバ16を有する。また、他のノード10a~10mは、ノード10と同様に、サービスプロセッサ11a~11m、CPU12a~12m、ローカルXB16a~16mを有する。各サービスプロセッサ11~11mは、管理LANを介して管理端末4と接続されており、各ノード10~10mの電源管理等の管理制御を実行する。なお、グローバルクロスバ6が有するサービスプロセッサ7は、各サービスプロセッサ11~11mのマスタとして動作し、全体の管理制御を行う。ここで、各サービスプロセッサ7、11~11mが実行する管理制御の例としては、電源管理、リセット、動作モードの変更、ノードの追加や削除の設定、エラーログの収集、縮退動作制御等である。また、ノード10~10mは、それぞれ独立してOSOperatingSystemを実行する。また、図1では省略したが、各ノード10~10mは、CPU12~12m以外にも複数のCPUを有する。各ノード10~10mのCPUは、ローカルXB16~16mを介して、グローバルクロスバ6と接続されている。各ノード10~10mのCPUは、メモリアクセスのリクエストであるメモリアクセス要求をローカルXB16~16mに出力することで、他のノードにメモリアクセス要求を転送する。そして、各ノード10~10mのCPUは、メモリアクセス要求を取得すると、自身が自身と接続されたメモリに対してアクセスを行う際と同様にメモリアクセスを実行する。次に、図2を用いて、各ノード10~10mの機能構成について説明する。なお、以下の説明では、ノード10の機能構成について説明し、各ノード10a~10mは、ノード10と同様の処理を実行するものとして、説明を省略する。図2は、実施例1に係るノードの機能構成を説明するための図である。図2に示す例では、ノード10は、サービスプロセッサ11、複数のCPU12~15、ローカルXB16、複数のメモリ17~24、PCIePeripheralComponentInterconnectExpressスイッチ25を有する。また、ノード10は、サービス用LANと接続するためのLANアダプタ26、管理用LANと接続するためのLANアダプタ27、SASSerialAttachedSCSI28、HDDHardDiskDrive29を有する。また、メモリ17およびメモリ18は、CPU13と接続されており、CPU13によるメモリアクセスを受付ける記憶装置である。また、メモリ19およびメモリ20は、CPU12と接続されており、CPU12によるメモリアクセスを受付ける記憶装置である。また、メモリ21およびメモリ22は、CPU14と接続されており、CPU14によるメモリアクセスを受付ける記憶装置である。また、メモリ23およびメモリ24は、CPU15と接続されており、CPU15によるメモリアクセスを受付ける記憶装置である。なお、図2に示す例では、ノード10は、HDD29を有しているが、実施例はこれに限定されるものではなく、SANStorageAreaNetwork等の技術を適用し、ノード10の外部に設置してもよい。サービスプロセッサ11は、ノード10の管理制御を実行する。具体的には、サービスプロセッサ11は、処理を実行するプロセッサとFPGAFieldProgrammableGateArrayを有し、管理端末4から管理用LANを介して、管理制御の実行命令を受付ける。そして、サービスプロセッサ11は、管理端末4から受付けた実行命令に従って、各種管理制御を実行する。PCIeスイッチ25は、各CPU12~15からPCIeスロットを介して接続されるI/O装置等へのアクセスを制御するスイッチである。また、LANアダプタ26は、サービス用LANとノード10とを接続するLANアダプタである。また、LANアダプタ27は、管理用LANとノード10とを接続するLANアダプタである。また、SAS28は、PCIeスロットに搭載されたLANやSAS用のアダプタであり、HDD29と各CPU12~15との接続を中継する。次に、各CPU12~15について説明する。なお、以下の説明では、CPU12について説明し、CPU13~15は、CPU12と同様の機能を発揮するものとして説明を省略する。CPU12は、他のCPU13~15と相互に接続されている。また、CPU12は、メモリ19またはメモリ20が記憶するデータをキャッシュするキャッシュメモリを有し、キャッシュしたデータを用いて、演算処理を実行する。また、CPU12は、メモリ19およびメモリ20に対してメモリアクセスを行うメモリインターフェースの機能を有する。また、CPU12は、PCIeスイッチ25を介して、HDD29や内部LAN、管理用LAN等を用いたアクセスを制御するPCIeインターフェース機能を有する。また、CPU12は、ローカルXB16、グローバルクロスバ6を介して、他のノード10a~10mが有するCPUとインターコネクトで接続され、相互にメモリアクセスの要求等を送受信するインターコネクトルータ機能を有する。このようなCPU12は、例えば、実行するプロセスにより、メモリ19、または、メモリ20に対するメモリアクセス要求が発行された場合には、以下の処理を実行する。すなわち、CPU12は、メモリ19、または、メモリ20にアクセスし、アクセス対象となるデータをキャッシュする。また、CPU12は、実行するプロセスにより、メモリ19、メモリ20以外のメモリに対するメモリアクセス要求が発行された場合には、メモリアクセス対象となるメモリと接続されたCPUを識別し、識別したCPUに対してメモリアクセス要求を送信する。詳細には、CPU12は、アクセス対象となるメモリアドレスと、メモリアドレスが示す記憶領域にアクセスするCPUを一意に示す情報とを対応付けたノードマップを有する。そして、CPU12は、プロセスがメモリアクセス要求を発行した場合には、ノードマップを参照し、メモリアクセスの対象となるメモリアドレスに対応付けられたCPUを識別する。その後、CPU12は、識別したCPUを宛先とするパケットを生成し、生成したパケットにメモリアクセス要求を格納して、CPU12~15の相互接続、又はローカルXB16に出力する。ローカルXB16に出力された場合には、ローカルXB16は、グローバルクロスバ6を介して、パケットを宛先となるCPUに送信する。ここで、CPU12は、上述した処理に加えて、以下の処理を実行する。まず、CPU12は、メモリ19およびメモリ20の各記憶領域のうち、他のノードと共有する記憶領域に、メモリトークンと呼ばれる値を予め設定する。そして、CPU12は、メモリ19またはメモリ20に対してメモリアクセス要求を発行するCPUに対し、アクセスを許可する記憶領域を通知するとともに、通知した記憶領域に対応するメモリトークンをアクセストークンとして通知する。また、CPU12は、自身がメモリアクセス要求を送信するノードから、アクセストークンをあらかじめ取得し、取得したアクセストークンを保持する。そして、CPU12は、メモリアクセス要求を発行する場合には、メモリアクセス要求とともに、保持したアクセストークンをパケットに格納して送信する。また、CPU12は、他のノードのCPUからメモリアクセス要求を受信した場合は、メモリアクセス要求とともに受信したアクセストークンが、アクセス対象となる記憶領域に対応するメモリトークンと一致するか否かを判別する。そして、CPU12は、アクセストークンとメモリトークンとが一致する場合には、メモリアクセスを実行し、アクセストークンとメモリトークンとが一致しない場合には、メモリアクセスの実行を拒否する。なお、CPU12は、メモリ19、および、メモリ20に対するメモリアクセスを実行する場合には、メモリ19、または、メモリ20からキャッシュされたデータのコヒーレンシを保持する処理を実行する。例えば、CPU12は、メモリ19、または、メモリ20からデータをキャッシュしたCPUに対してスヌープを送信し、キャッシュされたデータのライトバックを実行する。ローカルXB16は、ノード10が有するCPU12~15と、他のノード10a~10mが有するCPUとの間でやり取りされるパケットを、指定相手先に転送するためのスイッチである。例えば、ローカルXB16は、CPU12が、CPU12aを宛先として発行したパケットを、グローバルクロスバ6を介して、ノード10aが有するCPU12aに送信する。メモリ17~メモリ24は、OSやアプリケーションが利用するデータを記憶するメモリであり、例えば、DIMMDualInLineMemoryModuleである。また、メモリ17~24は、同一のメモリアドレス空間にマッピングされている。また、メモリ17~24は、同一ノード内のCPU12~15のみがアクセス可能な領域、すなわち、自身を有するノード専用の領域であるローカル領域を有する。また、メモリ17~24は、情報処理システム1が有する任意のCPUがアクセス可能な領域、すなわち、全てのノードが利用可能な共有メモリ領域を有する。また、メモリ17~メモリ24の共有メモリ領域は、複数のセグメントに分割される。そして、各セグメントは、メモリトークンによるアクセス制御が行われるプロテクト領域、又は、メモリトークンによるアクセス制御を行わないノンプロテクト領域となる。ここで、図3、図4を用いて、各メモリ17~24にマッピングされるメモリアドレスについて説明する。図3は、実施例1に係るメモリの割当を説明するための図である。例えば、情報処理システム1は、各ノードが有する2つのメモリのうち、一方のメモリをローカル領域のみのメモリとし、他方のメモリを共用メモリ領域のみのメモリとする。すなわち、図3中Aに示すように、メモリ17、メモリ19、メモリ21、メモリ23をノード専用のメモリとし、図3中Bに示すように、メモリ18、メモリ20、メモリ22、メモリ24を共用するメモリとする。図4は、実施例1に係る情報処理システムが各メモリにマッピングするメモリマップを説明するための図である。なお、図4には、全部で128テラバイトのメモリアドレス空間が準備され、そのうちローカル領域に64テラバイトが割当てられ、共有メモリ領域に64テラバイトが割当てられる例について示す。例えば、情報処理システム1は、ノード10~10mが有するメモリのうち、ローカル領域として用いる範囲に0から246-1までのメモリアドレスを割当てる。また、情報処理システム1は、ノード10~10mが有するメモリのうち、共有メモリ領域として用いる範囲に、246から247-1までのメモリアドレスを割当てる。すなわち、図3および図4に示す例では、情報処理システム1は、図3中Aに示すメモリ17、メモリ19、メモリ21、メモリ23に対して、図4中Cに示す範囲のメモリアドレスをマッピングする。また、情報処理システム1は、図3中Bに示すメモリ18、メモリ20、メモリ22、メモリ24に対して、図4中Dに示す範囲のメモリアドレスをマッピングする。なお、図4中の247から248-1までのアドレスは、UCUncacheable領域として用いられるアドレスの範囲であり、例えば、HDD29等のI/O装置が用いるI/O空間として用いられるアドレスの範囲である。このように、情報処理システム1は、各ノード10~10mが有するメモリに対して、単一のメモリアドレス空間をマッピングする。このため、任意のCPUが任意のノードの共有メモリ領域に対して直接アクセスできる。なお、図4に示すメモリマップはあくまで一例であり、任意の割当を行うこととしても良い。すなわち、メモリマップ上のメモリアドレスの全てがメモリに割当てられている必要はなく、メモリホールが存在しても良い。また、情報処理システム1が有する各ノードにOSが利用するローカル領域が存在し、かつ、1つ以上のノードに共有メモリ領域が存在するように、メモリマップを設定すればよい。なお、情報処理システム1は、1つのノード内に含まれるメモリ例えば、メモリ17とメモリ18に対して連続するメモリアドレスをマップした場合は、制御資源を削減することができる。また、情報処理システム1は、少なくとも、セグメント領域のアライメントをそろえることができるようにメモリアドレスの割り当てを行う。次に、図5を用いて、各ノードのメモリに対して割当てられる共有メモリ領域について説明する。図5は、実施例1に係る情報処理システムが割当てる共有メモリ領域を説明するための図である。なお、図5に示す例では、情報処理システム1がノード0~nを有し、各ノード0~nに対して共有メモリ領域を振り分ける例について説明する。例えば、図5中1に示すように、情報処理システム1は、64テラバイトのローカル領域と、64テラバイトのメモリ領域とを、各ノード0~nに対して割当てる。詳細には、情報処理システム1は、図5中2に示すように、64テラバイトの共有メモリ領域を、各ノード0~nに対して均等に振り分ける。ここで、各ノード0~nは、振り分けられた共有メモリ領域を、プロテクト領域とノンプロテクト領域とに分ける。ここで、プロテクト領域とは、他のノードからメモリアクセス要求を受信した際に、アクセストークンとメモリトークンとが一致するか否かを判別することで、アクセス保護を行う領域である。また、ノンプロテクト領域とは、他のノードから自由にメモリアクセスを行うことができる領域である。例えば、図5中3に示すように、ノード1は、自身に割当てられた共有メモリ領域のうち、最大で4テラバイトをプロテクト領域、または、ノンプロテクト領域とすることができる。また、図5中4に示すように、ノード1は、共有メモリ領域をセグメント0~2047までの2ギガバイトのセグメントに分割する。そして、ノード1は、図5中5に示すように、セグメントごとにメモリトークンを設定する。また、図5に示す例では、ノード1は、セグメント0~2をプロテクト領域とし、メモリトークンを設定する。なお、メモリトークンは、例えば、13ビットの値である。また、図5に示す例では、ノード1は、セグメント3~2047をノンプロテクト領域とし、メモリトークンとして、all0を設定する。すなわち、各ノード0~nは、ノンプロテクト領域に対してアクセスを行う場合には、all0のアクセストークンを用いることで、アクセスを行うことができる。また、ノードmも、自身の共有メモリ領域をセグメント0~2047に分割し、各セグメント0~2047にメモリトークンを設定する。なお、ノードmが自身の各セグメント0~2047に対して設定したメモリトークンは、図5中6に示すように、ノード1がアクセストークンとして用いることとなる。このため、ノード1は、ノードmの共有メモリ領域にアクセスする場合には、ノードmが設定したメモリトークンを取得し、取得したメモリトークンをアクセストークンとして用いることで、ノードmの共有メモリ領域にアクセスを行う。なお、各ノード0~nは、共有メモリ領域の各セグメントを管理するための共有メモリセグメント管理テーブルをローカル領域に有する。また、各ノード0~nは、同一のメモリトークンを複数のセグメントに設定することを防ぐため、設定済みのメモリトークンを管理するメモリトークン管理テーブルをローカル領域に有する。以下、図6および図7を用いて、共有メモリセグメント管理テーブルと、メモリトークン管理テーブルとについて説明する。まず、図6を用いて、共有メモリセグメント管理テーブルの一例を説明する。図6は、実施例1に係る共有メモリセグメント管理テーブルを説明するための図である。なお、図6には、ノード2が有する共有メモリセグメント管理テーブルを示す。図6に示すように、共有メモリセグメント管理テーブルは、セグメント番号、使用フラグ、アプリID、使用ノードフラグ、トークンが格納される。ここで、セグメント番号とは、共有メモリ領域の各セグメントを示す番号である。使用フラグとは、各セグメントが使用されているか否かを示すフラグである。アプリIDとは、各セグメントを利用しているプロセスを一意に示すIDである。また、使用ノードフラグとは、各セグメントを利用しているノードを示すフラグである。また、トークンとは、各セグメントに対して設定されたメモリトークンである。図6に示す例では、ノード2のセグメント0およびセグメント1は、ノード1が実行するプロセスのうち、アプリID100が示すプロセスによって使用されており、メモリトークンがそれぞれ3015、2156であることを示す。また、ノード2のセグメント2は、使用されておらず、セグメント3は、ノード3が実行するプロセスのうち、アプリID150が示すプロセスによって使用されており、メモリトークンがall0であることを示す。すなわち、セグメント3は、ノンプロテクト領域であることを示す。各ノード0~nは、図6に例示した共有メモリセグメント管理テーブルを用いて、他ノードから受信したメモリアクセスを実行する。例えば、ノード2は、ノード1のアプリID100が示すプロセスから、アクセストークン3015とともにセグメント0に対するメモリアクセス要求を取得する。このような場合には、取得したアクセストークンと共有メモリセグメント管理テーブルに格納されたメモリトークンが一致するので、ノード2は、メモリアクセスを実行する。一方、ノード2は、ノード1のアプリID100が示すプロセスから、アクセストークン3000とともにセグメント0に対するメモリアクセス要求を取得した場合は、メモリトークンとアクセストークンとが一致しないと判別する。このため、ノード2は、メモリアクセス要求を実行しない。なお、各ノード0~nは、いずれかのセグメントについてメモリトークンを変更する場合は、共有メモリセグメント管理テーブルを参照し、変更するメモリトークンと対応するセグメントを利用中のノードを識別する。そして、各ノード0~nは、識別したノードに対して、新たなメモリトークンを通知する。なお、共有メモリセグメント管理テーブルは、任意のタイミングで、共有メモリの管理を行うドライバソフトである共有メモリドライバが設定することとしても良い。例えば、共有メモリドライバは、情報処理システム1のブート時や、共有メモリ領域に対する初回アクセス時に、共有メモリセグメント管理テーブルを作成する。次に、図7を用いて、メモリトークン管理テーブルについて説明する、図7は、実施例1に係るメモリトークン管理テーブルを説明するための図である。図7に示す例では、メモリトークン管理テーブルは、メモリトークンの値と、使用フラグと、アプリIDとを対応付けて記憶する。なお、図7には、ノード1が記憶するメモリトークン管理テーブルを示す。例えば、図7に示す例では、メモリトークン管理テーブルは、アプリID100が示すプロセスが利用するセグメントに対して、メモリトークン0とメモリトークン1とを振り分けている旨を示す。また、メモリトークン管理テーブルは、メモリトークン2をいずれのセグメントに対しても振り分けていない旨を示す。また、メモリトークン管理テーブルは、アプリID150が示すプロセスが利用するセグメントに対して、メモリトークン3を振り分けている旨を示す。なお、メモリトークン管理テーブルは、共有メモリセグメント管理テーブルと同様に、共有メモリドライバが任意のタイミングで作成することとしてよい。次に、図8を用いて、CPU12の詳細な機能構成の一例について説明する。図8は、実施例1に係るCPUの一例を説明するための図である。なお、図8に示す例では、CPU12は、複数のコアを有するマルチコアプロセッサであり、L1Level1キャッシュ、L2キャッシュ、およびメモリアクセスコントローラMACを内臓したプロセッサとして記載する。図8に示すように、CPU12は、複数のコア30a、30d、L1キャッシュ30b、30e、複数のTLBTranslationLookasideBuffer30c、30f、を有する。またCPU12は、各コア30a、30dごとに、アクセストークンテーブル31、31aを有する。また、CPU12は、L2Level2キャッシュタグ32、L2キャッシュ32a、キャッシュスヌープコントローラ33、メモリリクエストステートマシン34、アドレスマップ35、メモリアクセスポート36、ターゲットアドレスチェッカ37を有する。また、CPU12は、メモリトークンチェッカ38、ホームステートマシン39、メモリアクセスコントローラ40、非キャッシュリクエストステートマシン41、PCIeインターフェース42、エラーレジスタ43を有する。また、CPU12は、レジスタコントローラ44、ルータ46を有する。ここで、レジスタコントローラ44は、リクエストレジスタ45を有する。なお、図8では、コア30a、コア30d以外のコアについては、図示を省略したが、CPU12は、任意の数のコアを有する構成とすることができる。コア30a、30dは、L1キャッシュ30b、30eに格納されたデータを用いて、演算処理を実行する。L1キャッシュ30b、30eは、高速にアクセス可能な記憶装置であり、メモリ19、20に格納されたデータをキャッシュするキャッシュメモリである。TLB30c、30fは、コア30a、30dが出力する仮想アドレスを物理アドレスに変換する。アクセストークンテーブル31は、コア30aが実行するプロセスが共有メモリ領域にアクセスするためのアクセストークンを記憶するレジスタである。例えば、アクセストークンテーブル31には、コア30aが実行するアプリケーションによって、他のノードから通知されたアクセストークンがセットされる。また、コア30aは、アクセス対象のデータがL1キャッシュ30bに保持されていなかった場合には、アクセス対象の物理アドレスとメモリアクセス要求の内容を示すオペコードとを出力する。すると、アクセストークンテーブル31は、セットされたアクセストークンとメモリアクセス要求とをL2キャッシュタグ32に出力する。ここで、アクセストークンテーブル31は、コア30aが実行するプロセスを変更する際に、コンテキストスイッチを行う対象となるレジスタである。このため、CPU12は、コア30aが実行するプロセスを他のプロセスに変更する際に、アクセストークンテーブル31にセットされたアクセストークンを容易に変更することができる。すなわち、CPU12は、コア30aが実行するプロセスを変更する際に、アクセス対象のノードから再度アクセストークンテーブルの通知を受けずとも、コンテキストスイッチを行えば、迅速かつ容易にアクセストークンを変更することができる。L2キャッシュタグ32は、L2キャッシュ32aのタグであり、L2キャッシュ32aにアクセスするためのパイプラインである。なお、L2キャッシュタグ32は、各コア30a、30dが発行した同一のアドレスに対するメモリアクセス要求をシリアライズ処理する機構を有する。キャッシュスヌープコントローラ33は、L2キャッシュ32aのスヌープを制御する。具体的には、キャッシュスヌープコントローラ33は、ホームステートマシン39、または、他のノードが発行したスヌープを受付ける。すると、キャッシュスヌープコントローラ33は、L2キャッシュタグ32に対してスヌープを発行することで、L2キャッシュ32aがキャッシュするデータの状態を検査する。その後、キャッシュスヌープコントローラ33は、スヌープの発行元であるホームステートマシン39、または、他のノードに対して、L2キャッシュ32aのスヌープ結果を送信する。メモリリクエストステートマシン34は、L2キャッシュ32aにアクセス対象となるデータが格納されていなかった場合、すなわち、L2キャッシュミスした際に以下の処理を実行する。すなわち、メモリリクエストステートマシン34は、ホームステートマシン39へのメモリアクセス要求の発行、および、応答の取得までの管理を実行する。また、メモリリクエストステートマシン34は、メモリアクセス要求を発行してから応答を取得するまでの間に、同一のメモリアドレスを対象とするメモリアクセス要求を取得した場合は、後段のメモリアクセス要求を待機させる。そして、メモリリクエストステートマシン34は、前段のメモリアクセス要求の応答が発行された場合は、待機させたメモリアクセス要求を発行する。なお、メモリリクエストステートマシン34は、複数のエントリを有し、エントリごとの識別子である8ビットのエントリIDをメモリリクエスト要求に付加して発行する。また、メモリリクエストステートマシン34は、メモリアクセス要求の対象となる物理アドレスを、アドレスマップ35に出力することで、物理アドレスが示す記憶領域にアクセスするCPUの識別子を取得する。そして、メモリリクエストステートマシン34は、CPUの識別子をDIDDestinationID、すなわち宛先として、メモリアクセス要求を発行する。アドレスマップ35は、物理アドレスと、物理アドレスが示す記憶領域にアクセスするCPUの識別子とを対応付けて記憶し、物理アドレスをCPUの識別子に変換する。例えば、アドレスマップ35は、メモリリクエストステートマシン34から物理アドレスを取得した場合には、取得した物理アドレスと対応付けて記憶されたCPUの識別子をDIDとしてメモリリクエストステートマシン34に発行する。メモリアクセスポート36は、メモリ19、メモリ20に対するメモリアクセス要求、すなわち、ホームノード自ノードに対するメモリアクセス要求を受付けるポートである。例えば、メモリアクセスポート36は、FIFOであり、ホームノードに対するメモリアクセス要求を一時的に保持する。そして、メモリアクセスポート36は、ホームステートマシン39がメモリアクセス要求を実行可能な状態になった場合には、ターゲットアドレスチェッカ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は、アクセスの不許可を示す信号を取得した場合には、メモリトークンとアクセストークンとが一致しない旨を示すトークン不一致エラーをエラーレジスタ43に格納する。なお、ホームステートマシン39は、メモリアクセスを実行する場合は、以下の処理を実行する。まず、ホームステートマシン39は、メモリアクセス要求の対象となる物理アドレスをメモリアクセスコントローラ40に発行し、メモリアクセス要求の対象となるデータをメモリ19、または、メモリ20から取得する。次に、ホームステートマシン39は、ディレクトリ情報を用いて、取得したデータのキャッシュ状態を判定する。そして、ホームステートマシン39は、判定結果に応じて、スヌープの発行等を行い、取得したデータと、キャッシュされたデータとを一致させる処理を実行する。なお、取得したデータとキャッシュされたデータとを一致させる処理については、コヒーレンシを保持する従来の方法を適用するものとする。その後、ホームステートマシン39は、読出しや書込み等のメモリアクセスを実行し、その後、発行元に対して、メモリアクセスの完了応答を送信する。メモリアクセスコントローラ40は、メモリ19およびメモリ20に対してメモリアクセスを実行する。例えば、メモリアクセスコントローラ40は、ホームステートマシン39から物理アドレスとデータの読出し指示を取得する。すると、メモリアクセスコントローラ40は、物理アドレスが示す記憶領域に格納されたデータをホームステートマシン39に送信する。また、メモリアクセスコントローラ40は、ホームステートマシン39から物理アドレスと書込み指示とデータとを取得した場合には、取得したデータを取得した物理アドレスが示す記憶領域に書込む。なお、メモリアクセスコントローラ40は、パトロール機能やコレクトライト等の処理を実行する機能を有しても良い。非キャッシュリクエストステートマシン41は、CPU12が有する各コア30a、30dや、他のCPUが有するコアから、UC領域のメモリアドレスによる指示を受付け、PCIeを介した処理の設定等を実行する。例えば、非キャッシュリクエストステートマシン41は、各コア30a、30dがHDD29等のI/O装置に対する読出しや書込みのリクエストを取得した場合には、取得したリクエストをPCIeインターフェース42に発行する。そして、非キャッシュリクエストステートマシン41は、PCIeインターフェース42からリクエストの応答を取得した場合には、取得した応答をコア30a、30dに送信する。また、非キャッシュリクエストステートマシン41は、レジスタコントローラ44に対するリクエストを各コア30a、30dから取得する。このような場合には、非キャッシュリクエストステートマシン41は、取得したリクエストをレジスタコントローラ44に発行する。また、非キャッシュリクエストステートマシン41は、レジスタコントローラ44から、リクエストの応答を取得した場合には、取得した応答をコア30a、30dに送信する。なお、非キャッシュリクエストステートマシン41は、レジスタコントローラ44を介して、サービスプロセッサ11から、アドレスマップの設定要求を取得した場合には、取得した要求に従ってアドレスマップ35の設定を行う機能を有する。PCIeインターフェース42は、PCIeスイッチ25と接続されており、PCIeのルートコンプレックスである。例えば、PCIeインターフェース42は、非キャッシュリクエストステートマシン41からI/O装置等に対するリクエストを取得した場合には、取得したリクエストをPCIeスイッチ25を介して、I/O装置等に発行する。そして、PCIeインターフェース42は、PCIeスイッチ25を介して、応答を取得した場合には、取得した応答を非キャッシュリクエストステートマシン41に送信する。なお、PCIeインターフェース42は、DMADirectMemoryAccessの機能を有しており、任意のCPUに対してDMAリクエストを発行することができる。また、PCIeインターフェース42は、他のノードからDMAリクエストを取得した場合には、DMAリクエストを実行し、その後、DMA応答をリクエスト元に発行する。エラーレジスタ43は、CPU12内において発生したエラーの情報を保持するレジスタである。レジスタコントローラ44は、CPU12が有する各レジスタの書込みや読出しを行うコントローラである。例えば、エラーレジスタ43は、物理アドレスをレジスタアドレスに変換する機能を有する。そして、レジスタコントローラ44は、非キャッシュリクエストステートマシン41等から、物理アドレスで指定されたレジスタの読出し要求や書込み要求を取得する。その後、レジスタコントローラ44は、指定された物理アドレスをレジスタアドレスに変換し、レジスタアドレスが示すレジスタの書込みや読出しを実行する。また、レジスタコントローラ44は、リクエストレジスタ45を有し、サービスプロセッサ11からI2CやJTAG等を介してリクエストレジスタ45の読出しや、書込み要求を取得する。このような場合には、レジスタコントローラ44は、取得した要求を実行し、サービスプロセッサ11に応答を出力する。例えば、レジスタコントローラ44は、各コア30a、30dが実行するプロセスから、非キャッシュリクエストステートマシン41を介して、メモリトークンの変更を指示された場合には、後述するメモリトークンレジスタを更新する。ルータ46は、インターコネクト用のルータであり、DIDで指定された宛先CPUへパケットを送信する。なお、ルータ46は、パケットを送信する場合には、送信するパケット保護のため、CRCCyclicRedundancyCheckの付加等を行う。なお、図8に示す例では、スヌープをSnoopと記載し、応答をResponse、またはRspと記載し、物理アドレスをAddressと記載し、メモリトークン、または、アクセストークンをTokenと記載した。また、図8に示す例では、オペコードをopcodeと記載した。また、メモリリクエストステートマシン34が発行するメモリアクセス要求、すなわち、自ノードによるリクエストをHomeRequestと記載した。また、メモリアクセス要求をMEMReqと記載し、メモリアクセス要求に対する応答をMEMRepと記載した。特に、メモリアクセス要求に対する自ノードのメモリからの応答をMEMRepfromownと記載し、他ノードのメモリからの応答をMEMRepfromotherと記載した。また、他ノードからのメモリアクセス要求に対する応答をMEMReptootherと記載した。また、他ノードからのスヌープをSnoopfromotherと記載し、他ノードへ送信するスヌープをSnooptootherと記載した。また、自身が有するL2キャッシュメモリに対して発行したスヌープをSnooptoownと記載し、自身が有するL2キャッシュメモリに対して発行したスヌープの応答をSnoopreptoownと記載した。また、他ノードへ送信したスヌープに対する応答をsnooprepfromotherと記載し、他ノードへ送信するスヌープの応答をsnoopreptootherと記載した。また、非キャッシュリクエストステートマシン41が送受信するリクエストおよび応答をNCNoCoherenceReq/NCResponseと記載した。また、レジスタコントローラ44が送受信するレジスタの読出し要求や、書込み要求、および応答をREGR/WREQandResponseと記載した。また、レジスタコントローラ44が行うレジスタの読出しや書込みをRegisterR/WandResponseと記載した。また、PCIeインターフェース42を介する要求および応答をPCICNFGReqandResponseと記載した。また、DMAリクエストをDMARequestと記載し、DMA応答をDMAResponseと記載した。次に、図9を用いて、CPU12が有するレジスタとしてのアクセストークンテーブル31について説明する。図9は、実施例1に係るアクセストークンテーブルのレジスタ構成を説明するための図である。図9に示すように、CPU12は、コア30aから直接書込み可能な複数のASIAddressSpaceIdentifierレジスタ47~47cを有する。また、CPU12は、ASIレジスタの1つをアクセストークンテーブル31として利用する。ここで、図10は、アクセストークンテーブルのレジスタフィールドを説明するための図である。図10に示す例では、アクセストークンテーブル31は、0から31までの32ビットのフィールドを有し、31~13ビットまでをリザーブとする。また、アクセストークンテーブル31は、12~0ビットまでをアクセストークンを格納するフィールドとして用いる。ここで、アクセストークンテーブル31は、12~0ビットまでの13ビットをアクセストークンとする。すなわち、アクセストークンテーブル31は、セグメントと同数のアクセストークンを設定した場合は、アクセスフリー用のアクセストークンを設定することができなくなる。そこで、アクセストークンテーブル31は、セグメントよりも多い数のアクセストークンを設定する。図9に戻って、コア30aは、各ASIレジスタ47~47c、およびアクセストークンテーブル31に対して、ASIRegR/WcommandとAddress[11:2]と、ByteEnable[3:0]とを発行する。ここでASIRegR/Wcommandは、各ASIレジスタ47~47c、およびアクセストークンテーブル31の読出し、または、書込みを指示するコマンドである。また、Address[11:2]とは、メモリアクセス要求の対象となる仮想アドレスである。また、ByteEnable[3:0]とは、イネーブルを示すビットである。なお、コア30aは、各ASIレジスタ47~47c、アクセストークンテーブル31に、書込みを指示する場合には、ASIRegwritedata[31:0]を同時に発行する。ASIレジスタ47~47cは、読出しを指示するコマンドを取得すると、ReadDataRegA[31:0]~ReadDataRegX[31:0]を発行する。また、アクセストークンテーブル31は、ReadDataRegAKT[0:31]を出力する。その後、コア30aは、ReadDataRegA[31:0]~ReadDataRegX[31:0]、ReadDataRegAKT[0:31]に基づくReadData[31:0]を取得する。ここで、アクセストークンテーブル31は、読出しを指示するコマンドを取得すると、アクセストークン[12:0]を出力する。また、L1キャッシュ30bは、コア30aからメモリアクセス要求であるMEMREQを受信すると、キャッシュヒットするか判別する。そして、L1キャッシュ30bは、キャッシュヒットした場合には、キャッシュヒットしたデータをMEMREQL1HIT応答としてコア30aに送信する。一方、L1キャッシュ30bは、キャッシュミスした場合は、メモリアクセス要求をTLB30cに送信する。TLB30cは、メモリアクセス要求の対象となる仮想アドレスを物理アドレスに変換し、メモリアクセス要求をL2キャッシュタグ32に発行する。L2キャッシュタグ32は、メモリアクセス要求の対象となる物理アドレスがキャッシュヒットするか判別し、キャッシュヒットした場合には、データをTLB30cを介して、L1キャッシュ30b、コア30aに送信する。一方、L2キャッシュ32は、キャッシュミスした場合には、メモリアクセス要求をメモリリクエストステートマシン34に送信する。この際、メモリアクセス要求には、アクセストークンテーブル31が発行したアクセストークン[12:0]が付与され、HomeRequestとして、メモリリクエストステートマシン34に送信される。なお、コア30aが発行するNCRequestは、TLB30cを介して非キャッシュリクエストステートマシン41によって実行され、NCResponseがコア30aに発行される。次に、図11を用いて、メモリトークンチェッカ38の構成例について説明する。図11は、実施例1に係るメモリトークンチェッカの一例を説明するための図である。図11に示す例では、メモリトークンチェッカ38は、自ノードIDレジスタ38a、メモリトークンレジスタ38b、オペコードトークンデコーダー38c、アクセス判定制御器38dを有する。なお、図11に示す例では、1つのノードに4つのCPUが含まれる例について説明する。また、メモリトークンレジスタ38bは、図10に示すアクセストークンレジスタと同様のレジスタを、512エントリ分有するレジスタであるものとする。例えば、メモリトークンチェッカ38は、レジスタコントローラ44から、RegR/Wcommand、Address[11:2]、ByteEnable[3:0]、WriteData[31:0]を取得する。また、トークンチェッカ31は、レジスタコントローラ44からSIDSenderID[7:3]を取得する。ここで、SIDSenderID[7:3]とは、メモリリクエスト要求の要求元となるCPUを示す識別子である。また、メモリトークンチェッカ38は、メモリアクセスポート36からメモリアクセス要求を取得する。ここで、図12は、メモリアクセス要求の一例を説明するための図である。図12に示すように、メモリアクセス要求のパケットには、フォーマット、送信先ID、オペコード、送信元ID、エントリID、トークン、対象アドレスが格納される。ここで、フォーマットには、パケットのフォーマットタイプを示す4ビットの情報が格納される。送信先IDには、送信先のCPUを示すID、すなわち8ビットのDIDが格納される。オペコードには、メモリアクセス要求の内容を示す4ビットの情報が格納される。トークンには、16ビットのアクセストークンが格納される。対象アドレスには、メモリアクセス要求の対象となる物理アドレスが格納される。なお、データの書込みを要求するメモリアクセス要求には、図12に示すパケットに加えて、バイトイネーブルと書込むデータが送信される。また、アクセストークンを必要としないメモリアクセス要求、例えば、フラッシュバック命令、ライトバック命令については、トークンをリザーブとするパケットが送信される。また、スヌープについては、トークンの代わりに、リクエスト元のCPUを示す8ビットのCPUIDと、リクエスト元のプロセスを一意に示す8ビットのエントリIDとが格納される。また、メモリアクセス要求についての応答も、図12に示すパケットに類似する形式のパケットが送信される。例えば、スヌープの返信には、トークンの変わりに、8ビットのスヌープレスポンス情報が格納される。また、メモリアクセス要求の完了応答には、トークンをリザーブとしたパケットが送信され、読出しの要求に対する応答には、読み出したデータが付加されることとなる。図11に戻って、メモリトークンチェッカ38は、取得したメモリアクセス要求からSID[7:0]を取得し、取得したSIDが、自ノードが有するCPUのIDである自ノードIDと一致するか否かを判別する、図11に示す例では、メモリトークンチェッカ38は、CPUID0~CPUID3までの4つのCPUのIDとSIDが一致するか否かを判別する。そして、メモリトークンチェッカ38は、判別結果をMYNodeHITとしてアクセス判定制御器38dに入力する。また、メモリトークンチェッカ38は、メモリアクセス要求からオペコードopcode[3:0]を取得し、オペコードトークンデコーダー38cに入力する。このような場合には、オペコードトークンデコーダー38cは、取得したオペコードを解析し、処理内容が、アクセストークンとメモリトークンとの一致を要する処理であるか否かを判別する。そして、オペコードトークンデコーダー38cは、判別結果をトークンイネーブルとして、アクセス判定制御器38dに入力する。ここで、図13は、オペコードが示す処理の一例を説明するための図である。なお、図13には、MESIプロトコルイリノイプロトコルを用いたキャッシュコヒーレンシが実行される際に発行されるメモリアクセス要求のオペコードを示す。例えば、オペコード0000が格納されたメモリアクセス要求は、READIFと呼ばれる処理の実行要求である。なお、READIFは、コアからの命令領域リード、および、キャッシュのステートがSSharedである際にキャッシュの獲得を実行する処理である。オペコード0001が格納されたメモリアクセス要求は、READOPと呼ばれる処理の実行要求である。なお、READOPは、コアからのデータ領域リード、および、キャッシュのステートがSまたはEExclusiveである際にキャッシュの獲得を実行する処理である。オペコード0010が格納されたメモリアクセス要求は、READEXと呼ばれる処理の実行要求である。なお、READEXは、コアからのデータストアのための排他権獲得リードの獲得、および、キャッシュのステートがSSharedである際にキャッシュの獲得を実行する処理である。オペコード0100が格納されたメモリアクセス要求は、DMAReadと呼ばれる処理の実行要求である。なお、DMAReadは、I/OからのDMAリードを示し、キャッシュの獲得を行わない処理である。オペコード0110が格納されたメモリアクセス要求は、DMAWriteと呼ばれる処理の実行要求である。なお、DMAWriteは、I/OからのDMAライトを示し、キャッシュの獲得を行わない処理である。オペコード0111が格納されたメモリアクセス要求は、DMAWritePartialと呼ばれる処理の実行要求である。なお、DMAWritePartialは、I/OからのDMAライトをパーシャルに実行する処理であり、キャッシュの獲得を行わない処理である。オペコード1000が格納されたメモリアクセス要求は、WriteBackと呼ばれる処理の実行要求である。なお、WriteBackは、CPUのキャッシュ追い出しを行う際に、キャッシュステートがMModifiedのデータを書き出す処理である。オペコード1001が格納されたメモリアクセス要求は、FlashBackと呼ばれる処理の実行要求である。なお、FlachBackは、CPUのキャッシュ追い出しを行う際に、キャッシュステートがEまたはSをIInvalidとする処理である。オペコード1010が格納されたメモリアクセス要求は、CacheFlashと呼ばれる処理の実行要求である。なお、CacheFlachは、コアからのキャッシュフラッシュの実行要求である。図13に示す例では、オペコードトークンデコーダー38cは、オペコードが0000、0001、0010の際は、アクセストークンとメモリトークンとの一致を要すると判別し、トークンイネーブル1を出力する。また、オペコードトークンデコーダー38cは、オペコードが0000、0001、0010以外の際は、アクセストークンとメモリトークンとの一致を要しないと判別し、トークンイネーブル0を出力する。なお、図13に示すオペコードと各処理の対応は、あくまで一例であり、任意のオペコードを任意の処理と対応付けることができる。図11に戻って、メモリトークンチェッカ38は、アクセス対象となる物理アドレスを含むセグメントアドレスを用いて、メモリトークンレジスタ38bからメモリトークンを検索する。そして、メモリトークンチェッカ38は、検索したメモリトークンと、メモリアクセス要求のアクセストークンとが一致するか否かを示すトークンマッチをアクセス判定制御器38dに入力する。なお、図11に示す例では、1つのノードのセグメントに連続したメモリアドレスが割当てられている例であり、不連続なメモリアドレスが割当てられている場合には、前段に、アドレストークンエントリ番号を変換する回路を設置すればよい。図11に示す例では、メモリトークンチェッカ38は、アドレストークンが0000である場合には、ノンプロテクト領域に対するメモリアクセス要求であるため、アクセスフリーを示す信号をアクセス判定制御器38dに入力する。アクセス判定制御器38dは、入力されたMYNodeHITと、トークンイネーブルと、トークンマッチと、アクセスフリーとに応じて、メモリアクセス要求の実行を許可するか不許可とするかをホームステートマシン39に通知する。ここで、図14は、アクセス判定制御器による判定の一例を説明するための図である。例えば、アクセス判定制御器38dは、MYNodeHITがNo0、トークンイネーブルがYes1、トークンマッチがNo0、アクセスフリーがNo0を示す場合には、メモリアクセス要求の実行を不許可とする。これ以外の場合には、アクセス判定制御器38dは、メモリアクセス要求の実行を許可する。つまり、アクセス判定制御器38dは、ライトバック等の、キャッシュコヒーレンスを保持するための処理については、トークンマッチの値に係らず、メモリアクセス要求の実行を許可することとなる。図11に戻って、ホームステートマシン39は、アクセス判定制御器38dとターゲットアドレスチェッカ37からの通知とに応じて、メモリアクセスポート36から取得したメモリアクセスの要求を実行する。図15は、ホームステートマシンが実行する処理の内容を示す図である。例えば、ホームステートマシン39は、アクセス判定制御器38dからメモリアクセス要求の実行を不許可とする旨を通知されると、アクセストークンとメモリトークンとが一致しない場合のアクセス例外動作を実施する。また、ホームステートマシン39は、アクセス判定制御器38dからメモリアクセス要求の実行を許可とする旨の通知を受け、かつ、ターゲットアドレスチェッカ37から自ノードのメモリでない旨MISSを通知された場合には、以下の処理を実行する。すなわち、ホームステートマシン39は、対象アドレスが一致しない場合のアクセス例外動作を実施する。また、ホームステートマシン39は、アクセス判定制御器38dからメモリアクセス要求の実行を許可とする旨の通知を受け、かつ、ターゲットアドレスチェッカ37から自ノードのメモリである旨HITを通知された場合には、メモリアクセス要求を実施する。なお、各CPU12~15、12a~12mは、自身が発行したメモリアクセス要求の実行が許可されなかった場合には、同一のメモリアクセス要求を送信することで、リトライを実行してもよい。次に、図16を用いて、情報処理システム1においてノード間のメモリアクセスがどのように実行されるかを説明する。図16は、ノード間のメモリアクセスの流れを説明するための図である。なお、図16には、ノード1がノード2のメモリに対してメモリアクセスを行う例について示す。例えば、図16中Eに示すように、ノード2が実行するアプリケーションは、メモリトークン管理テーブルを用いて、未使用のメモリトークンを選択する。そして、ノード2が実行するアプリケーションは、図16中Fに示すように、ノード1が実行するアプリケーションに対して、アクセス対象となるアドレスリージョンと、メモリトークンと同じアクセストークンとを通知する。このような場合には、図16中Gに示すように、ノード1が実行するアプリケーションは、アクセストークンをアクセストークンテーブル31にセットする。また、図16中Hに示すように、ノード2が実行するアプリケーションは、ノード1に通知したアクセストークンと同じメモリトークンをメモリトークンレジスタ38bにセットする。ここで、ノード1は、図16中Iに示すように、コア30aがメモリアクセス要求を発行すると、アクセストークンテーブル31にセットしたアクセストークンを付与し、インターコネクトを介してメモリアクセス要求をノード2に送信する。すると、ノード2は、図16中Jに示すように、メモリアクセス要求に付与されたアクセストークンと、メモリトークンレジスタ38bにセットされたメモリトークンとが一致するか否かを判別する。そして、ノード2は、アクセストークンとメモリトークンとが一致する場合には、アクセス対象領域に対するメモリアクセス要求を実行し、アクセストークンとメモリトークンとが一致しない場合は、メモリアクセス要求を実行しない。このように、情報処理システム1の各ノードは、自ノードのメモリにアクセスするノードに対して、アクセストークンを通知するとともに、通知したアクセストークンをメモリトークンとしてメモリトークンレジスタに格納する。そして、各ノードは、他ノードのメモリにアクセスする場合には、アクセス対象のノードから通知されたアクセストークンをメモリアクセス要求に付与して送信する。その後、各ノードは、メモリアクセス要求に付与されたアクセストークンとメモリトークンとが一致するか否かを判別し、一致すると判別した場合には、メモリアクセスを実行する。このため、情報処理システム1は、いずれかのノードが故障した場合にも他のノードの通信ができなくなった場合にも、アクセス対象となるノードがメモリトークンを変更することで、故障したノードからのメモリアクセスを止めることができる。この結果、情報処理システム1は、フェールオーバを正しく行う事ができる。以下、図面を用いて、アクセス対象となるノードがメモリトークンを変更することで、故障したノードからのメモリアクセスを止める処理について説明する。図17は、故障したノードからのメモリアクセスを止める処理について説明するための図である。なお、図17には、ノード1がノード2のメモリに対してアクセスを行っている例について説明する。例えば、ノード1は、ノード2のアプリケーションから通知されたアクセストークンをアクセストークンテーブルに格納し、メモリアクセスにアクセストークンを付加してノード2に送信する。ここで、ノード1が実行するアプリケーションに故障が発生し、ノード2と通信が行えなくなった場合には、ノード2のアプリケーションは、ノード1のアクセストークンを変更することができない。しかし、ノード2が実行するアプリケーションは、自ノードが記憶するメモリトークンを変更することができる。このため、ノード2が実行するアプリケーションは、自ノードがメモリトークンレジスタに記憶するメモリトークンを変更する。すると、故障したノード1が送信するアクセストークンと、ノード2が記憶するメモリトークンとが一致しなくなるので、ノード2は、ノード1からのメモリアクセスを防ぐことができる。ここで、ノード2は、メモリトークンを任意のタイミングで変更することができる。すなわち、ノード2は、メモリトークンを変更するとともに、変更後のメモリトークンをアクセストークンとしてノード1に送信する。すると、ノード1は、ノード2と通信が行える場合は、正常にアクセストークンを変更するので、ノード2へのアクセスを継続することができる。一方、ノード1は、故障が発生し、ノード2と通信が行えない場合は、アクセストークンを変更することができないので、ノード2へのアクセスを行えなくなる。この結果、情報処理システム1は、ノード1が実行する処理を他のノードに移した際に、スプリットブレイン状態が発生することを防ぐことができる。このため、情報処理システム1は、正しくフェールオーバを実行することができる。以下、図18、図19を用いて、故障が生じたノードの切り離しを行う処理について説明する。図18は、故障が生じたノードによるメモリアクセスを防ぐ処理を説明するための第1の図である。図19は、故障が生じたノードによるメモリアクセスを防ぐ処理を説明するための第2の図である。なお、図18、図19では、ノード1~3がノード4に対してメモリアクセス要求を発行する際に、ノード1のアプリケーションが故障し、他のノード2~4と通信が行えなくなった例について説明する。例えば、図18中Kに示すように、ノード4が実行する監視アプリケーションは、任意のタイミングで、ノード4が記憶するメモリトークン777を888に変更する。また、ノード4は、新たなメモリトークン888をアクセストークンとして、ノード1~3に対して配信する。ここで、ノード1は、アプリケーションが故障し、他のノード2~4と通信を行う事ができないため、図18中Lに示すように、アクセストークン777を新たなアクセストークン888に更新することができない。一方、ノード2およびノード3は、図18中Mに示すように、アクセストークン777を新たなアクセストークン888に変更することができる。この結果、図19中Nに示すように、アプリケーションが故障したノード1は、ノード4にアクセスすることができないが、ノード2およびノード3は、ノード4へのアクセスを継続することができる。このため、各ノード1~4は、故障したノードの切り離しを容易に行う事ができる。また、各ノード1~4は、ハンドシェーク等の処理によりアプリケーションに故障が発生したか否かを判別せずともよい。つまり、各ノード1~4は、いずれかのノードに故障が発生したことを識別せずとも、故障したノードの切り離しを行うことができる。このため、各ノード1~4は、故障したノードを高速に切り離すことができる。次に、図20~図25を用いて、メモリトークンおよびアクセストークンを用いたメモリアクセスの処理の流れについて説明する。なお、以下の説明においては、コア30aとメモリ19とを有するノード1が、コア30gとメモリ19aおよびメモリ19bを有するノード2に対してメモリアクセス要求を送信する例について説明する。なお、メモリ19aは、ローカル領域のみを有するメモリであり、メモリ19bは、共有メモリ領域のみを有するメモリである。なお、以下の説明において、アプリとは、各ノード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が実行する共有メモリドライバに要求するステップS108。すると、コア30aが実行する共有メモリドライバは、アクセストークンテーブル31に、取得したアクセストークンをセットするステップS109。次に、コア30aが実行する共有メモリドライバは、アクセス対象となるVAVirtualAddress:仮想アドレスをコア30aが実行するアプリケーションに通知するステップS110。すると、コア30aが実行するアプリケーションは、データリード要求を発行するステップS111。ここで、データリード要求には、アクセストークンテーブル31にセットされたアクセストークンがセットされるステップS112。すると、ノード2は、データリード要求にセットされたアクセストークンがメモリトークンレジスタに登録されたメモリトークンと一致するか否かを判別するステップS113。そして、ノード2は、アクセストークンとメモリトークンとが一致する場合には、セグメント領域へのアクセスを許可するステップS114。次に、図21を用いて、ノード1がノード2の複数のセグメントに対してアクセスを行う例について説明する。図21は、複数のセグメントに対してアクセスを行う処理の流れを説明するためのシーケンス図である。例えば、コア30aが実行するアプリケーションは、メモリ19bのセグメントAにアクセスするためのアクセストークンAをセットするようコア30aが実行する共有メモリドライバに要求するステップS201。すると、コア30aが実行する共有メモリドライバは、アクセストークンテーブル31にアクセストークンAをセットするステップS202。また、コア30aが実行するアプリケーションは、セグメントAに対するデータリード要求を発行するステップS203。この際、データリード要求には、アクセストークンAがセットされるステップS204。すると、ノード2は、データリード要求にセットされたアクセストークンAがセグメントAのメモリトークンと一致するか否かを判別するステップS205。そして、ノード2は、アクセストークンAとセグメントAのメモリトークンとが一致する場合には、セグメントAに対するメモリアクセスを許可するステップS206。また、コア30aが実行するアプリケーションは、メモリ19bのセグメントBにアクセスするためのアクセストークンBをセットするようコア30aが実行する共有メモリドライバに要求するステップS207。すると、コア30aが実行する共有メモリドライバは、アクセストークンテーブル31にアクセストークンBをセットするステップS208。また、コア30aが実行するアプリケーションは、セグメントBに対するデータリード要求を発行するステップS209。この際、データリード要求には、アクセストークンBがセットされるステップS210。すると、ノード2は、データリード要求にセットされたアクセストークンBがセグメントBのメモリトークンと一致するか否かを判別するステップS211。そして、ノード2は、アクセストークンBとセグメントBのメモリトークンとが一致する場合には、セグメントBに対するメモリアクセスを許可するステップS212。次に、図22を用いて、コンテキストスイッチが発生した際に、アクセストークンテーブル31のデータがスタックされる処理の流れについて説明する。図22は、コンテキストスイッチの流れを説明するためのシーケンス図である。なお、図22に示す例では、コア30aがアプリケーションAを実行中に、割り込み処理が発生したため、実行するアプリケーションをアプリケーションBにスイッチする処理の流れについて説明する。例えば、コア30aがアプリケーションAの実行中に、タイマ割り込みが発生するステップS301。このような場合には、コア30aが実行するOSは、アクセストークンテーブル31のデータを含めたコンテキストスイッチを実行しステップS302、各レジスタの値をメモリ19にスタックするステップS303。次に、コア30aが実行するOSは、メモリ19にスタックしてあったアプリケーションB実行時の各レジスタの値を取得するステップS304。そして、コア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が実行する共有メモリドライバにトークンを通知するステップS513。すると、コア30aが実行する共有メモリドライバは、新たなアクセストークンをアクセストークンテーブル31に設定するステップS514。その後、コア30aが実行するアプリケーションは、データリード要求のリトライを送信するステップS515。すると、データリード要求のリトライには、新たなアクセストークンがセットされるステップS516。この結果、ノード2は、アプリケーションBが利用するセグメントのメモリトークンと、データリード要求にセットされたアクセストークンとが一致するか否かを判別するステップS517。そして、ノード2は、メモリトークンとアクセストークンとが一致した場合は、共有メモリ領域へのアクセスを許可するステップS518。なお、ノード2は、ノード1から受信したリトライのアクセストークンが、メモリトークンと一致しなかった場合には、メモリアクセスエラーが発生したものと判別し、ノード1の切り離し処理を実行することとしても良い。次に、図25を用いて、ノード2がメモリトークンを変更した際に、ノード1に障害が発生し、正常にアクセスが行えないため、ノード1の切り離しを行う処理の流れについて説明する。図25は、故障したノードを切り離す処理の流れを説明するためのシーケンス図である。なお、図25に示す例では、ノード1に障害が発生し、ノード2と通信が行えなくなった例について説明する。また、図25に示す例では、ノード1は、アクセス先のノード2に対して、所定の時間おきに生存通知を発行するものとする。まず、コア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が実行するアプリケーションは、ノード1の切り離し要求をコア30gが実行する共有メモリドライバに発行するステップS609。すると、コア30gが実行する共有メモリドライバは、切り離し対象となるノード1が使用する共有メモリ領域を共有メモリセグメント管理テーブルから検索するステップS610。ここで、コア30aが実行するアプリケーションがデータリード要求を発行するとステップS611、ノード1は、データリード要求にアクセストークンをセットしステップS612、ノード2に送信する。しかし、アクセストークンと新たなメモリトークンとが一致しないので、ステップS613、ノード2は、メモリアクセスを拒否し、アドレス例外をノード1に送信するステップS614。このような場合には、ノード1は、L1キャッシュ30b、L1キャッシュ30e、L2キャッシュ32aに格納されたデータをノード2に送信するライトバック処理を実行するステップS615。このように、ノード1からライトバックのデータを取得した場合には、ノード2は、メモリアクセスの可否判断を行わずに、共有メモリ領域へのライトバックを行うステップS616。その後、ノード1とノード2とは、キャッシュフラッシュとインプリシッドライトバックとを用いて、各キャッシュ30b、30e、32aに保持されたデータとメモリ19bに保持されたデータとを一致させる。そして、ノード2は、ノード1のコア30aが実行していたプロセスのジョブを他のCPUが実行するプロセスに移動させ、ノード1の切り離しを行う切り離し処理を実行するステップS617、ステップS618。その後、コア30gが実行する共有メモリドライバは、ノード1の切り離しが完了した旨を、コア30gが実行するアプリケーションに通知するステップS619。次に、図26を用いて、メモリトークンを変更する処理の一例について説明する。図26は、メモリトークンを変更する処理の流れの一例を説明するためのフローチャートである。なお、図26に示す例では、CPU12は、プロセスごとに、メモリアクセス要求がトークンエラーとなった回数Nをカウントするものとする。また、CPU12は、図26に示す処理を実行する前に、各プロセスのNに初期値0を設定する。また、図26には、10回以上リトライが失敗したノードをメモリエラーハンドリングにより切り離す例を示す。例えば、CPU12は、メモリトークンとアクセストークンとに応じたメモリアクセス要求の実行を正常なプロセスとして実行するステップS701。ここで、CPU12は、エラーシグナルが発生したか否かを判別するステップS702。なお、エラーシグナルとは、エラーが発生した際に通知される信号であり、例えば、エラーレジスタ43にエラーが格納されると通知される信号である。ここで、CPU12は、エラーシグナルが発生したと判別した場合にはステップS702肯定、エラーシグナルが示すエラーの内容が、メモリトークンとアクセストークンとの不一致を示すトークンエラーであるか否かを判別するステップS703。そして、CPU12は、エラーシグナルが示すエラーの内容がトークンエラーであると判別した場合にはステップS703肯定、以下の処理を実行する。すなわち、CPU12は、トークンエラーとなったメモリアクセスを要求したプロセスのNの値が10未満であるか否かを判別するステップS704。そして、CPU12は、メモリアクセスを要求したプロセスのNの値が10未満であると判別した場合にはステップS704肯定、メモリアクセスを要求したプロセスのNの値に1を加算するステップS705。その後、CPU12は、再度正常プロセスを実行するステップS701。また、CPU12は、メモリアクセスを要求したプロセスのNの値が10以上であると判別した場合にはステップS704否定、以下の処理を実行する。すなわち、CPU12は、メモリエラーハンドリングを実行しステップS706、メモリアクセスを要求したプロセスを実行するノードの切り離しを行い、処理を終了する。次に、CPU12がノードの切り離し処理を実行する際に、共有メモリセグメント管理テーブルとメモリトークン管理テーブルとを更新する処理について説明する。図27は、共有メモリセグメント管理テーブルとメモリトークン管理テーブルとを更新する処理の流れについて説明するためのフローチャートである。なお、CPU12は、共有メモリセグメント管理テーブルのエントリ毎に、図27に示す処理を実行する。また、CPU12は、メモリアクセス要求発行元のノードが実行するプロセスから、セグメントの解除要求を取得したことを契機として、図27に示す処理を実行する。例えば、CPU12は、使用フラグを参照し、使用フラグが1であるかを判別するステップS801。そして、CPU12は、使用フラグが1である場合はステップS801肯定、セグメント解除要求を発行したプロセスのアプリIDと、エントリのアプリIDとが一致するか否かを判別するステップS802。そして、CPU12は、アプリIDが一致すると判別した場合にはステップS802肯定、セグメント解除要求を発行したプロセスを実行するノードの使用ノードフラグが1であるか否かを判別するステップS803。そして、CPU12は、セグメント解除要求を発行したプロセスを実行するノードの使用ノードフラグが1である場合にはステップS803肯定、セグメント解除要求を発行したプロセスを実行するノードの使用ノードフラグを0にするステップS804。次に、CPU12は、他の使用ノードフラグが0であるか否かを判別しステップS805、他の使用ノードフラグが0である場合はステップS805肯定、使用フラグを0にするステップS806。次に、CPU12は、エントリのメモリトークンの値を識別し、メモリトークン管理テーブルの各エントリのうち、識別した値と同じ値のメモリトークンが格納されたエントリを検索する。そして、CPU12は、検索したエントリの使用フラグを0にするステップS807。その後、CPU12は、ノードの切り離しが終了した旨の完了応答を発行しステップS808、処理を終了する。なお、CPU12は、使用フラグが1ではない場合ステップS801否定、アプリIDが一致しない場合ステップS802否定、使用ノードフラグが0である場合ステップS803否定には、完了応答を発行するステップS808。また、CPU12は、使用ノードフラグがすべて0ではない場合にはステップS805否定、完了応答を発行するステップS808。ここで、図28は、共有メモリセグメント管理テーブルの更新を説明するための図である。例えば、図28中の網掛けで示すように、CPU12は、図27中ステップS804およびステップS806に示す処理を実行することにより、使用フラグと使用ノードフラグとを0に設定する。また、図29は、メモリトークン管理テーブルの更新を説明するための図である。例えば、図29中の網掛けで示すように、CPU12は、図27中ステップS807に示す処理を実行する事により、使用フラグを0に設定する。このように、CPU12は、図27に示す処理を実行することで、共有メモリセグメント管理テーブルとメモリトークン管理テーブルとを適切に更新し、ノードの切り離しを行うことができる。[実施例1の効果]上述したように、各CPU12~15、12a~12mは、アクセストークンテーブル31、31aを有する。そして、各CPU12~15、12a~12mは、他ノードへのメモリアクセス要求に、アクセストークンを付加して送信する。また、各CPU12~15、12a~12mは、自身にメモリアクセス要求を発行するCPUに対して送信したアクセストークンと同じ値のメモリアクセストークンを記憶するメモリトークンレジスタを有する。そして、各CPU12~15、12a~12mは、受信したメモリアクセス要求のアクセストークンとメモリトークンレジスタが記憶するメモリトークンとに基づいて、メモリアクセス要求の実行可否を制御する。このため、各CPU12~15、12a~12mは、自身のメモリトークンレジスタが記憶するメモリトークンを変更することで、故障したノードが発行したメモリアクセス要求の実行を防ぐことができる。この結果、情報処理システム1は、スプリットブレイン状態の発生を回避する結果、正しくフェールオーバを実行することができる。また、各CPU12~15、12a~12mは、メモリトークンを変更する際に、新たなメモリトークンをアクセストークンとして、メモリアクセス要求の発行元となるノードに通知する。そして、各CPU12~15、12a~12mは、新たなメモリトークンと、受信したメモリアクセス要求のアクセストークンとが一致した場合には、メモリアクセス要求の実行を許可する。このため各CPU12~15、12a~12mは、アクセス元のノードに故障が生じているか否かを判別せずとも、故障が生じたノードによるメモリアクセスを防ぐことができる。この結果、各CPU12~15、12a~12mは、ハンドシェイク等を用いてアクセス元のノードに故障が生じているか判別する手法よりも、高速かつ容易にノードの切り離しを行うことができる。また、各CPU12~15、12a~12mは、メモリアクセス要求の実行を拒否した場合には、メモリトークンの更新を行い、その後、メモリアクセス要求の発行元となるノードのCPUがキャッシュしたデータを自身がアクセスするメモリに書き戻す。このため、各CPU12~15、12a~12mは、キャッシュメモリを有する場合にも、キャッシュコヒーレンシを保持したままで、ノードの切り離しを正しく行うことができる。また、各CPU12~15、12a~12mは、メモリアクセス要求の発行元に対してアクセス停止の指示とともに、新たなアクセストークンを送信する。そして、各CPU12~15、12a~12mは、一定時間経過後に、メモリトークンを更新するとともに、アクセス再開をメモリアクセス要求の発行元に指示する。このため、各CPU12~15、12a~12mは、メモリアクセス要求の発行元からリトライを受け付けずとも、故障したノードからのメモリアクセスを不許可とすることができる。この結果、各CPU12~15、12a~12mは、メモリアクセス要求を不許可とした際に、発生したエラーの種別を判別せずとも、適切に故障したノードの切り離しを行うことができる。なお、各CPU12~15、12a~12mは、他ノードに対するメモリアクセスが不許可となった場合には、リトライを行ってもよい。すなわち、各CPU12~15、12a~12mは、メモリアクセスが不許可となった場合には、同一のメモリアクセスを要求するリトライ機能を有する。このような場合には、各CPU12~15、12a~12mは、新たなアクセストークンを通知した際に待機せずとも、故障したノードを正しく切り離すことができる。すなわち、アクセス元のノードが変更後のアクセストークンを適用してメモリアクセスを行うタイミングと、アクセス先のノードがメモリトークンを変更するタイミングとには、ずれが存在するので、アクセスが拒否される場合がある。例えば、アクセス元のノードが変更前のアクセストークンを付与し、アクセス先のノードが変更後のメモリトークンでアクセスの可否を判別する結果、アクセスが許否される場合がある。同様に、アクセス元のノードが変更後のアクセストークンを付与し、アクセス先のノードが変更前のメモリトークンでアクセスの可否を判別する結果、アクセスを許否される場合がある。ここで、アクセスが拒否された場合は、アクセス元のノードがリトライを送信する。すると、正常に動作するアクセス元のノードは、メモリアクセスのリトライに変更後のアクセストークンを付与する。そして、アクセス先のノードが変更後のメモリトークンでアクセスの可否を判別する。この結果、各CPU12~15、12a~12mは、正常に動作するアクセス元のノードによるメモリアクセスを許可することができる。一方、正常に動作できないアクセス元のノードは、メモリアクセスのリトライに変更前のアクセストークンを付与し、アクセス先のノードは、変更後のメモリトークンでアクセスの可否を判別する。この結果、各CPU12~15、12a~12mは、正常に動作できないアクセス元のノードによるメモリアクセスのリトライを許否し、リトライの発行元となるノードの切り離しを行うことができる。なお、各CPU12~15、12a~12mは、メモリアクセスのリトライを許否した場合には、メモリアクセス要求の発行元となるノードのCPUがキャッシュしたデータを自身がアクセスするメモリに書き戻す。このため、各CPU12~15、12a~12mは、キャッシュコヒーレンシを保持したままで、ノードの切り離しを正しく行うことができる。また、各CPU12~15、12a~12mは、コンテキストスイッチを行う際にスタックするレジスタをアクセストークンテーブルとする。このため、各CPU12~15、12a~12mは、マルチスレッドで処理を実行する場合にも、OSやアプリケーションを複雑化させること無く、故障したノードからのメモリアクセスを防ぎ、フェールオーバを正しく実行することができる。これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例2として本発明に含まれる他の実施例を説明する。1アクセストークンテーブルについて上述したCPU12は、各コア30a、30dに1つのアクセストークンテーブル31、31aを有していた。しかし、実施例は、これに限定されるものではない。例えば、CPU12は、コア30aがマルチスレッド対応である場合には、ハードスレッドごとにアクセストークンテーブルを設置することとしても良い。例えば、図30は、マルチスレッド対応のアクセストークンテーブルの一例を説明するための図である。図30に示す例では、コア30aは、2つのハードスレッドを有する。このような場合には、CPU12は、各ハードスレッドが用いる2つのアクセストークンテーブル31b、31cを有する。そして、CPU12は、メモリアクセス要求を発行したスレッドが用いるアクセストークンテーブルが出力したアクセストークンをパケットに格納する。なお、CPU12は、図30に示す例に限らず、任意の数のアクセストークンテーブルを有することとしてもよい。このように、CPU12は、ハードスレッドごとにアクセストークンテーブルを設置した場合には、マルチスレッドで処理を実行する場合にも、OSやアプリケーションを複雑化させること無く、故障したノードからのメモリアクセスを防ぐ。この結果、情報処理システム1は、フェールオーバを正しく実行することができる。2ノンプロテクト領域について上述したCPU12は、ノンプロテクト領域にアクセスを行う場合には、アクセストークンおよびメモリトークンとしてall0を用いた。しかし、実施例はこれに限定されるものではない。例えば、メモリトークンレジスタが記憶するメモリトークンにバリッドビットを設定し、バリッドビットを用いてアクセス対象がプロテクト領域であるかノンプロテクト領域であるかを示すこととしてもよい。例えば、図31は、メモリトークンチェッカのバリエーションを説明するための図である。図31に示す例では、メモリトークンチェッカ38eは、メモリトークンレジスタ38fを有する。メモリトークンレジスタ38fは、メモリトークンレジスタ38bが有するリザーブの1ビットをバリッドビットとし、ノンプロテクト領域と対応するフィールドにバリッドビット0を記憶する。このような場合には、アクセス対象がノンプロテクト領域である場合には、アクセス判定制御器38dにアクセスフリーを示す信号が入力されるので、ノンプロテクト領域に対するメモリトークンを設定すること無く、適切なメモリアクセスを実現できる。3不正なアクセスによるメモリトークンの一致について上述したCPU12は、メモリトークンとアクセストークンとが一致するか否かに応じてメモリアクセス要求の実行可否を判断した。しかし、実施例は、これに限定されるものではなく、例えば、メモリトークンとアクセストークンとが一致するか否かに加えて、メモリアクセス要求を発行したノードが予め許可されたノードであるか否かをあわせて判別してもよい。例えば、図32は、予め許可されたノードのみにメモリアクセスを許可するメモリトークンチェッカを説明するための図である。図32に示す例では、メモリトークンチェッカ38gは、メモリトークンレジスタ38bに加えて、ノード判定回路38hを有し、ノード判定回路38hは、ノードリストレジスタ38iを有する。ここで、ノードリストレジスタ38iは、各セグメント領域ごとに、アクセスを許可したノードのノードIDが格納されている。ノードリストレジスタ38iは、メモリアクセス要求の対象となるセグメントのアドレスから、アクセスが許可されたノードのノードIDを出力する。そして、ノード判定回路38hは、ノードリストレジスタ38iが出力したノードIDと、メモリアクセス要求の発行元であるノードのノードIDとが一致するか否かを示すノードIDマッチをアクセス判定制御器38dに出力する。そして、アクセス判定制御器38dは、トークンイネーブルがYes1であり、MYNodeHITとトークンマッチとノードIDマッチとアクセスフリーとが共に0である場合には、メモリアクセス要求の実行を不許可とする。これ以外の場合には、アクセス判定制御器38dは、メモリアクセス要求の実行を許可する。このように、CPU12は、ノードIDのチェックを行うことによって、不正なアクセスを防止することができる。