JP2013140446A - 情報処理装置および不正アクセス防止方法 - Google Patents

情報処理装置および不正アクセス防止方法 Download PDF

Info

Publication number
JP2013140446A
JP2013140446A JP2011290025A JP2011290025A JP2013140446A JP 2013140446 A JP2013140446 A JP 2013140446A JP 2011290025 A JP2011290025 A JP 2011290025A JP 2011290025 A JP2011290025 A JP 2011290025A JP 2013140446 A JP2013140446 A JP 2013140446A
Authority
JP
Japan
Prior art keywords
node
memory
access
token
identification information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2011290025A
Other languages
English (en)
Other versions
JP5541275B2 (ja
Inventor
Toshikazu Ueki
俊和 植木
Masayuki Okada
誠之 岡田
Hideyuki Koinuma
秀之 鯉沼
Takeshi Sugizaki
剛 杉崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011290025A priority Critical patent/JP5541275B2/ja
Priority to US13/606,054 priority patent/US20130174224A1/en
Priority to TW101133281A priority patent/TWI453625B/zh
Priority to EP12187772.4A priority patent/EP2610755A3/en
Priority to US13/654,274 priority patent/US8521977B2/en
Priority to KR1020120120734A priority patent/KR101403233B1/ko
Priority to CN2012104245530A priority patent/CN103186481A/zh
Publication of JP2013140446A publication Critical patent/JP2013140446A/ja
Application granted granted Critical
Publication of JP5541275B2 publication Critical patent/JP5541275B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2033Failover techniques switching over of hardware resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2035Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2043Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Multi Processors (AREA)

Abstract

【課題】共有メモリ構成におけるフェールオーバを正しく行うことを目的とする。
【解決手段】すくなくとも一部を共有メモリ領域として設定可能なメモリ17〜24と1つ以上のCPU12〜15とを各々が備える複数のノード10と、ノード間を接続するインターコネクトとを有する情報処理システムである。ここで、CPU12は、他ノードのメモリにアクセスするためのアクセストークンを保持するアクセストークンテーブルを有し、メモリアクセス要求にアクセストークンを付加して送信する。また、CPU15は、他ノードから自ノード内のメモリへのアクセスの許可を制御するメモリトークンを保持するメモリトークンレジスタを有する。さらに、CPU15は、CPU12からのメモリアクセス要求に付加されたアクセストークンと、メモリトークンレジスタに保持したメモリトークンとに基づいて、メモリアクセス要求実行の可否を制御する。
【選択図】図2

Description

本発明は、情報処理装置および不正アクセス防止方法に関わる。
従来、1つ又は複数のCPUとメモリとを有する複数のノードをLANやインフィニバンドで接続し、各ノード毎に独立したOS(Operating System)を実行させるクラスタ構成の情報処理システムが知られている。このようなクラスタ構成の情報処理システムは、各CPUが各ノードのメモリを共有し、並列して処理を実行する。
図33は、クラスタ構成の情報処理システムを説明するための図である。図33に示す例では、情報処理システムは、LANやインフィニバンドで相互に接続された複数のノード50〜52を有する。ここで、ノード50は、メモリ50a、OS50b、CPU(Central Processing ユニット)50cを有する。同様に、ノード51は、メモリ51a、OS51b、CPU51cを有し、ノード52は、メモリ52a、Os52b、CPU52cを有する。
各ノード50〜52は、ノードごとに独立したOS50b〜52bを実行しており、OS50b〜52bの故障が情報処理システム全体に波及するのを防ぐ。また、各ノード50〜52に含まれる、1つ又は複数のCPU50c〜52cは各メモリ50a〜52aをノード内で共有しており、LANやインフィニバンドを介して、他のノードが有するメモリにアクセスする。
図34は、ノード間のメモリアクセスを説明するための図である。例えば、ノード50は、自ノードで動作するアプリケーションが発行したメモリアクセスの要求をドライバ、OS、ハードウェアを介して、ノード51に送信する。すると、ノード51は、ノード50から受信したリクエストを、ハードウェア、OS、ドライバを介してアプリケーションに伝え、アプリケーションにメモリアクセスを実行させる。
ここで、クラスタ構成の情報処理システムでは、アクセス対象となるノードのアプリケーションを介してメモリアクセスが実行されるので、メモリアクセスのレイテンシが増加するとともに、アプリケーションのアーキテクチャが複雑になる。そこで、複数のノードをインターコネクトで接続し、同一のアドレス空間にマッピングしたメモリに対して、各ノードのアプリケーションが直接アクセスする共有メモリ構成の情報処理システムが知られている。
図35は、共有メモリ構成の技術が適用された情報処理システムを説明するための図である。図35に示す例では、ノード53とノード54とがインターコネクトで接続されており、ノード53とノード54とが実行するアプリケーションが直接アクセス可能なアドレス空間に、リモートメモリがマッピングされている。そして、各ノード53、54が実行するアプリケーションは、自ノードのメモリに対するメモリアクセスと同様に、リモートメモリに対するメモリアクセスの要求を発行する。
一方、メモリの記憶領域にアクセスするためのストレージキーを設定することで、アプリケーションがアクセスすべきでないメモリ領域への不正なアクセスを防止する技術が知られている。図36は、不正なメモリアクセスを防止する機能を説明するための図である。例えば、図36に示す例では、OSが、メモリ領域に対して、2キロバイトまたは4キロバイトごとに、4ビットのストレージキーを予め設定する。また、OSは、プログラムカウンタをセットする際に、アプリケーションが用いるメモリ領域のストレージキーをアクセスキーとしてプログラムステータスワードにセットする。
すると、命令ユニットは、プログラムカウンタを読み取り、メモリアクセスの要求をメモリアクセスユニットに発行する。また、メモリアクセスユニットは、命令ユニットからメモリアクセスの要求を取得すると、プログラムステータスワードにセットされたアクセスキーと、ストレージキーとが一致するか否かを判別する。
そして、メモリアクセスユニットは、ストレージキーとアクセスキーとが一致すると判別した場合には、メモリアクセスを許可し、アクセス対象となるメモリ領域に記憶されたデータを命令ユニットに出力する。また、メモリアクセスユニットは、ストレージキーとアクセスキーとが一致しない場合は、メモリアクセスを許可せずに、アプリケーションが使用すべきでないメモリ領域への不正なアクセスを防止する。
特表2009−537879号公報 特開平05−204762号公報 特許第4123621号公報
ここで、上述した共有メモリ構成の情報処理システムは、あるノードが実行するアプリケーションが故障して他のノードと通信不能となった場合には、故障したノードの処理を他のノードに移すフェールオーバを正しく実行できないという問題がある。
以下、図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に係る情報処理システムを説明するための図である。 図2は、実施例1に係るノードの機能構成を説明するための図である。 図3は、実施例1に係るメモリの割当を説明するための図である。 図4は、実施例1に係る情報処理システムが各メモリにマッピングするメモリマップを説明するための図である。 図5は、実施例1に係る情報処理システムが割当てる共有メモリ領域を説明するための図である。 図6は、実施例1に係る共有メモリセグメント管理テーブルを説明するための図である。 図7は、実施例1に係るメモリトークン管理テーブルを説明するための図である。 図8は、実施例1に係るCPUの一例を説明するための図である。 図9は、実施例1に係るアクセストークンテーブルのレジスタ構成を説明するための図である。 図10は、アクセストークンテーブルのレジスタフィールドを説明するための図である。 図11は、実施例1に係るメモリトークンチェッカの一例を説明するための図である。 図12は、メモリアクセス要求の一例を説明するための図である。 図13は、オペコードが示す処理の一例を説明するための図である。 図14は、アクセス判定制御器による判定の一例を説明するための図である。 図15は、ホームステートマシンが実行する処理の内容を示す図である。 図16は、ノード間のメモリアクセスの流れを説明するための図である。 図17は、故障したノードからのメモリアクセスを止める処理について説明するための図である。 図18は、故障が生じたノードによるメモリアクセスを防ぐ処理を説明するための第1の図である。 図19は、故障が生じたノードによるメモリアクセスを防ぐ処理を説明するための第2の図である。 図20は、アクセストークンを取得する処理の流れを説明するためのシーケンス図である。 図21は、複数のセグメントに対してアクセスを行う処理の流れを説明するためのシーケンス図である。 図22は、コンテキストスイッチの流れを説明するためのシーケンス図である。 図23は、メモリトークンを変更する処理の流れを説明するためのシーケンス図である。 図24は、メモリトークンを変更する処理のバリエーションを説明するためのシーケンス図である。 図25は、故障したノードを切り離す処理の流れを説明するためのシーケンス図である。 図26は、メモリトークンを変更する処理の流れの一例を説明するためのフローチャートである。 図27は、共有メモリセグメント管理テーブルとメモリトークン管理テーブルとを更新する処理の流れについて説明するためのフローチャートである。 図28は、共有メモリセグメント管理テーブルの更新を説明するための図である。 図29は、メモリトークン管理テーブルの更新を説明するための図である。 図30は、マルチスレッド対応のアクセストークンテーブルの一例を説明するための図である。 図31は、メモリトークンチェッカのバリエーションを説明するための図である。 図32は、予め許可されたノードのみにメモリアクセスを許可するメモリトークンチェッカを説明するための図である。 図33は、クラスタ構成の情報処理システムを説明するための図である。 図34は、ノード間のメモリアクセスを説明するための図である。 図35は、共有メモリ構成の技術が適用された情報処理システムを説明するための図である。 図36は、不正なメモリアクセスを防止する機能を説明するための図である。 図37Aは、フェールオーバが正常に実行できない例について説明するための図(1)である。 図37Bは、フェールオーバが正常に実行できない例について説明するための図(2)である。
以下に添付図面を参照して本願に係る情報処理装置および不正アクセス防止方法について説明する。
以下の実施例1では、図1を用いて、情報処理システムの一例を説明する。図1は、実施例1に係る情報処理システムを説明するための図である。図1に示す例では、情報処理システム1は、クライアント端末2、クアイアント端末2a、LAN(Local Area Network)スイッチ3、管理端末4、LANスイッチ5、2重のグローバルクロスバ6、複数のノード10〜10mを有する。また、グローバルクロスバ6は、サービスプロセッサ7を有する。
本実施例において、ノードは1つの独立したOS(Operating System)が走行する単位であり、OSが走行する為に最低限必要な装置を含む。後に詳細に述べるが、それらは1つ以上のCPU、メモリ、HDD(Hard Disk Drive)または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は、それぞれ独立してOS(Operating System)を実行する。また、図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、PCIe(Peripheral Component Interconnect Express)スイッチ25を有する。また、ノード10は、サービス用LANと接続するためのLANアダプタ26、管理用LANと接続するためのLANアダプタ27、SAS(Serial Attached SCSI)28、HDD(Hard Disk Drive)29を有する。
また、メモリ17およびメモリ18は、CPU13と接続されており、CPU13によるメモリアクセスを受付ける記憶装置である。また、メモリ19およびメモリ20は、CPU12と接続されており、CPU12によるメモリアクセスを受付ける記憶装置である。また、メモリ21およびメモリ22は、CPU14と接続されており、CPU14によるメモリアクセスを受付ける記憶装置である。
また、メモリ23およびメモリ24は、CPU15と接続されており、CPU15によるメモリアクセスを受付ける記憶装置である。なお、図2に示す例では、ノード10は、HDD29を有しているが、実施例はこれに限定されるものではなく、SAN(Storage Area Network)等の技術を適用し、ノード10の外部に設置してもよい。
サービスプロセッサ11は、ノード10の管理制御を実行する。具体的には、サービスプロセッサ11は、処理を実行するプロセッサとFPGA(Field-Programmable Gate Array)を有し、管理端末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やアプリケーションが利用するデータを記憶するメモリであり、例えば、DIMM(Dual In-Line Memory Module)である。また、メモリ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」までのアドレスは、UC(Uncacheable)領域として用いられるアドレスの範囲であり、例えば、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が実行するプロセスのうち、アプリID「100」が示すプロセスによって使用されており、メモリトークンがそれぞれ「3015」、「2156」であることを示す。また、ノード#2のセグメント#2は、使用されておらず、セグメント#3は、ノード#3が実行するプロセスのうち、アプリID「150」が示すプロセスによって使用されており、メモリトークンが「all0」であることを示す。すなわち、セグメント#3は、ノンプロテクト領域であることを示す。
各ノード#0〜#nは、図6に例示した共有メモリセグメント管理テーブルを用いて、他ノードから受信したメモリアクセスを実行する。例えば、ノード#2は、ノード#1のアプリID「100」が示すプロセスから、アクセストークン「3015」とともにセグメント#0に対するメモリアクセス要求を取得する。このような場合には、取得したアクセストークンと共有メモリセグメント管理テーブルに格納されたメモリトークンが一致するので、ノード#2は、メモリアクセスを実行する。
一方、ノード#2は、ノード#1のアプリID「100」が示すプロセスから、アクセストークン「3000」とともにセグメント#0に対するメモリアクセス要求を取得した場合は、メモリトークンとアクセストークンとが一致しないと判別する。このため、ノード#2は、メモリアクセス要求を実行しない。
なお、各ノード#0〜#nは、いずれかのセグメントについてメモリトークンを変更する場合は、共有メモリセグメント管理テーブルを参照し、変更するメモリトークンと対応するセグメントを利用中のノードを識別する。そして、各ノード#0〜#nは、識別したノードに対して、新たなメモリトークンを通知する。
なお、共有メモリセグメント管理テーブルは、任意のタイミングで、共有メモリの管理を行うドライバソフトである共有メモリドライバが設定することとしても良い。例えば、共有メモリドライバは、情報処理システム1のブート時や、共有メモリ領域に対する初回アクセス時に、共有メモリセグメント管理テーブルを作成する。
次に、図7を用いて、メモリトークン管理テーブルについて説明する、図7は、実施例1に係るメモリトークン管理テーブルを説明するための図である。図7に示す例では、メモリトークン管理テーブルは、メモリトークンの値と、使用フラグと、アプリIDとを対応付けて記憶する。なお、図7には、ノード#1が記憶するメモリトークン管理テーブルを示す。
例えば、図7に示す例では、メモリトークン管理テーブルは、アプリID「100」が示すプロセスが利用するセグメントに対して、メモリトークン「0」とメモリトークン「1」とを振り分けている旨を示す。また、メモリトークン管理テーブルは、メモリトークン「2」をいずれのセグメントに対しても振り分けていない旨を示す。また、メモリトークン管理テーブルは、アプリID「150」が示すプロセスが利用するセグメントに対して、メモリトークン「3」を振り分けている旨を示す。なお、メモリトークン管理テーブルは、共有メモリセグメント管理テーブルと同様に、共有メモリドライバが任意のタイミングで作成することとしてよい。
次に、図8を用いて、CPU12の詳細な機能構成の一例について説明する。図8は、実施例1に係るCPUの一例を説明するための図である。なお、図8に示す例では、CPU12は、複数のコアを有するマルチコアプロセッサであり、L1(Level 1)キャッシュ、L2キャッシュ、およびメモリアクセスコントローラ(MAC)を内臓したプロセッサとして記載する。
図8に示すように、CPU12は、複数のコア30a、30d、L1キャッシュ30b、30e、複数のTLB(Translation Lookaside Buffer)30c、30f、を有する。またCPU12は、各コア30a、30dごとに、アクセストークンテーブル31、31aを有する。また、CPU12は、L2(Level2)キャッシュタグ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の識別子をDID(Destination ID)、すなわち宛先として、メモリアクセス要求を発行する。
アドレスマップ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は、DMA(Direct Memory Access)の機能を有しており、任意の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は、パケットを送信する場合には、送信するパケット保護のため、CRC(Cyclic Redundancy Check)の付加等を行う。
なお、図8に示す例では、スヌープを「Snoop」と記載し、応答を「Response」、または「Rsp」と記載し、物理アドレスを「Address」と記載し、メモリトークン、または、アクセストークンを「Token」と記載した。また、図8に示す例では、オペコードを「op code」と記載した。また、メモリリクエストステートマシン34が発行するメモリアクセス要求、すなわち、自ノードによるリクエストを「Home Request」と記載した。
また、メモリアクセス要求を「MEM Req」と記載し、メモリアクセス要求に対する応答を「MEM Rep」と記載した。特に、メモリアクセス要求に対する自ノードのメモリからの応答を「MEM Rep from own」と記載し、他ノードのメモリからの応答を「MEM Rep from other」と記載した。また、他ノードからのメモリアクセス要求に対する応答を「MEM Rep to other」と記載した。
また、他ノードからのスヌープを「Snoop from other」と記載し、他ノードへ送信するスヌープを「Snoop to other」と記載した。また、自身が有するL2キャッシュメモリに対して発行したスヌープを「Snoop to own」と記載し、自身が有するL2キャッシュメモリに対して発行したスヌープの応答を「Snoop rep to own」と記載した。また、他ノードへ送信したスヌープに対する応答を「snoop rep from other」と記載し、他ノードへ送信するスヌープの応答を「snoop rep to other」と記載した。
また、非キャッシュリクエストステートマシン41が送受信するリクエストおよび応答を「NC(No Coherence) Req/NC Response」と記載した。また、レジスタコントローラ44が送受信するレジスタの読出し要求や、書込み要求、および応答を「REG R/W REQ and Response」と記載した。また、レジスタコントローラ44が行うレジスタの読出しや書込みを「Register R/W and Response」と記載した。また、PCIeインターフェース42を介する要求および応答を「PCI CNFG Req and Response」と記載した。また、DMAリクエストを「DMA Request」と記載し、DMA応答を「DMA Response」と記載した。
次に、図9を用いて、CPU12が有するレジスタとしてのアクセストークンテーブル31について説明する。図9は、実施例1に係るアクセストークンテーブルのレジスタ構成を説明するための図である。図9に示すように、CPU12は、コア30aから直接書込み可能な複数のASI(Address Space Identifier)レジスタ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に対して、「ASI Reg R/W command」と「Address[11:2]」と、「Byte Enable[3:0]」とを発行する。ここで「ASI Reg R/W command」は、各ASIレジスタ47〜47c、およびアクセストークンテーブル31の読出し、または、書込みを指示するコマンドである。
また、「Address[11:2]」とは、メモリアクセス要求の対象となる仮想アドレスである。また、「Byte Enable[3:0]」とは、イネーブルを示すビットである。なお、コア30aは、各ASIレジスタ47〜47c、アクセストークンテーブル31に、書込みを指示する場合には、「ASI Reg write data[31:0]」を同時に発行する。
ASIレジスタ47〜47cは、読出しを指示するコマンドを取得すると、「Read Data Reg A[31:0]」〜「Read Data Reg X[31:0]」を発行する。また、アクセストークンテーブル31は、「Read Data Reg AKT[0:31]」を出力する。その後、コア30aは、「Read Data Reg A[31:0]」〜「Read Data Reg X[31:0]」、「Read Data Reg AKT[0:31]」に基づく「Read Data[31:0]」を取得する。
ここで、アクセストークンテーブル31は、読出しを指示するコマンドを取得すると、アクセストークン[12:0]を出力する。また、L1キャッシュ30bは、コア30aからメモリアクセス要求である「MEM REQ」を受信すると、キャッシュヒットするか判別する。そして、L1キャッシュ30bは、キャッシュヒットした場合には、キャッシュヒットしたデータを「MEM REQ L1 HIT 応答」としてコア30aに送信する。
一方、L1キャッシュ30bは、キャッシュミスした場合は、メモリアクセス要求をTLB30cに送信する。TLB30cは、メモリアクセス要求の対象となる仮想アドレスを物理アドレスに変換し、メモリアクセス要求をL2キャッシュタグ32に発行する。L2キャッシュタグ32は、メモリアクセス要求の対象となる物理アドレスがキャッシュヒットするか判別し、キャッシュヒットした場合には、データをTLB30cを介して、L1キャッシュ30b、コア30aに送信する。
一方、L2キャッシュ32は、キャッシュミスした場合には、メモリアクセス要求をメモリリクエストステートマシン34に送信する。この際、メモリアクセス要求には、アクセストークンテーブル31が発行したアクセストークン[12:0]が付与され、「Home Request」として、メモリリクエストステートマシン34に送信される。なお、コア30aが発行する「NC Request」は、TLB30cを介して非キャッシュリクエストステートマシン41によって実行され、「NC Response」がコア30aに発行される。
次に、図11を用いて、メモリトークンチェッカ38の構成例について説明する。図11は、実施例1に係るメモリトークンチェッカの一例を説明するための図である。図11に示す例では、メモリトークンチェッカ38は、自ノードIDレジスタ38a、メモリトークンレジスタ38b、オペコードトークンデコーダー38c、アクセス判定制御器38dを有する。なお、図11に示す例では、1つのノードに4つのCPUが含まれる例について説明する。また、メモリトークンレジスタ38bは、図10に示すアクセストークンレジスタと同様のレジスタを、512エントリ分有するレジスタであるものとする。
例えば、メモリトークンチェッカ38は、レジスタコントローラ44から、「Reg R/W command」、「Address[11:2]」、「Byte Enable[3:0]」、「Write Data[31:0]」を取得する。また、トークンチェッカ31は、レジスタコントローラ44から「SID(Sender ID)[7:3]」を取得する。ここで、「SID(Sender ID)[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は、判別結果を「MY Node HIT」としてアクセス判定制御器38dに入力する。
また、メモリトークンチェッカ38は、メモリアクセス要求からオペコード(op code[3:0])を取得し、オペコードトークンデコーダー38cに入力する。このような場合には、オペコードトークンデコーダー38cは、取得したオペコードを解析し、処理内容が、アクセストークンとメモリトークンとの一致を要する処理であるか否かを判別する。そして、オペコードトークンデコーダー38cは、判別結果をトークンイネーブルとして、アクセス判定制御器38dに入力する。
ここで、図13は、オペコードが示す処理の一例を説明するための図である。なお、図13には、MESIプロトコル(イリノイプロトコル)を用いたキャッシュコヒーレンシが実行される際に発行されるメモリアクセス要求のオペコードを示す。
例えば、オペコード「0000」が格納されたメモリアクセス要求は、「READ IF」と呼ばれる処理の実行要求である。なお、「READ IF」は、コアからの命令領域リード、および、キャッシュのステートが「S(Shared)」である際にキャッシュの獲得を実行する処理である。オペコード「0001」が格納されたメモリアクセス要求は、「READ OP」と呼ばれる処理の実行要求である。なお、「READ OP」は、コアからのデータ領域リード、および、キャッシュのステートが「S」または「E(Exclusive)」である際にキャッシュの獲得を実行する処理である。
オペコード「0010」が格納されたメモリアクセス要求は、「READ EX」と呼ばれる処理の実行要求である。なお、「READ EX」は、コアからのデータストアのための排他権獲得リードの獲得、および、キャッシュのステートが「S(Shared)」である際にキャッシュの獲得を実行する処理である。オペコード「0100」が格納されたメモリアクセス要求は、「DMA Read」と呼ばれる処理の実行要求である。なお、「DMA Read」は、I/OからのDMAリードを示し、キャッシュの獲得を行わない処理である。
オペコード「0110」が格納されたメモリアクセス要求は、「DMA Write」と呼ばれる処理の実行要求である。なお、「DMA Write」は、I/OからのDMAライトを示し、キャッシュの獲得を行わない処理である。オペコード「0111」が格納されたメモリアクセス要求は、「DMA Write Partial」と呼ばれる処理の実行要求である。なお、「DMA Write Partial」は、I/OからのDMAライトをパーシャルに実行する処理であり、キャッシュの獲得を行わない処理である。
オペコード「1000」が格納されたメモリアクセス要求は、「Write Back」と呼ばれる処理の実行要求である。なお、「Write Back」は、CPUのキャッシュ追い出しを行う際に、キャッシュステートが「M(Modified)」のデータを書き出す処理である。オペコード「1001」が格納されたメモリアクセス要求は、「Flash Back」と呼ばれる処理の実行要求である。
なお、「Flach Back」は、CPUのキャッシュ追い出しを行う際に、キャッシュステートが「E」または「S」を「I(Invalid)」とする処理である。オペコード「1010」が格納されたメモリアクセス要求は、「Cache Flash」と呼ばれる処理の実行要求である。なお、「Cache Flach」は、コアからのキャッシュフラッシュの実行要求である。
図13に示す例では、オペコードトークンデコーダー38cは、オペコードが「0000」、「0001」、「0010」の際は、アクセストークンとメモリトークンとの一致を要すると判別し、トークンイネーブル「1」を出力する。また、オペコードトークンデコーダー38cは、オペコードが「0000」、「0001」、「0010」以外の際は、アクセストークンとメモリトークンとの一致を要しないと判別し、トークンイネーブル「0」を出力する。なお、図13に示すオペコードと各処理の対応は、あくまで一例であり、任意のオペコードを任意の処理と対応付けることができる。
図11に戻って、メモリトークンチェッカ38は、アクセス対象となる物理アドレスを含むセグメントアドレスを用いて、メモリトークンレジスタ38bからメモリトークンを検索する。そして、メモリトークンチェッカ38は、検索したメモリトークンと、メモリアクセス要求のアクセストークンとが一致するか否かを示す「トークンマッチ」をアクセス判定制御器38dに入力する。
なお、図11に示す例では、1つのノードのセグメントに連続したメモリアドレスが割当てられている例であり、不連続なメモリアドレスが割当てられている場合には、前段に、アドレストークンエントリ番号を変換する回路を設置すればよい。図11に示す例では、メモリトークンチェッカ38は、アドレストークンが「0000」である場合には、ノンプロテクト領域に対するメモリアクセス要求であるため、「アクセスフリー」を示す信号をアクセス判定制御器38dに入力する。
アクセス判定制御器38dは、入力された「MY Node HIT」と、「トークンイネーブル」と、「トークンマッチ」と、「アクセスフリー」とに応じて、メモリアクセス要求の実行を許可するか不許可とするかをホームステートマシン39に通知する。ここで、図14は、アクセス判定制御器による判定の一例を説明するための図である。
例えば、アクセス判定制御器38dは、「MY Node HIT」が「No(0)」、トークンイネーブルが「Yes(1)」、トークンマッチが「No(0)」、アクセスフリーが「No(0)」を示す場合には、メモリアクセス要求の実行を不許可とする。これ以外の場合には、アクセス判定制御器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が実行する共有メモリドライバは、アクセス対象となるVA(Virtual Address:仮想アドレス)をコア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は、トークンイネーブルが「Yes(1)」であり、MY Node HITとトークンマッチとノードIDマッチとアクセスフリーとが共に「0」である場合には、メモリアクセス要求の実行を不許可とする。これ以外の場合には、アクセス判定制御器38dは、メモリアクセス要求の実行を許可する。このように、CPU12は、ノードIDのチェックを行うことによって、不正なアクセスを防止することができる。
1 情報処理システム
2、2a クライアント端末
3、5 LANスイッチ
4 管理端末
6 グローバルクロスバ
7 サービスプロセッサ
10〜10m ノード
11〜11m サービスプロセッサ
12〜12m、13〜15 CPU
16〜16m ローカルXB
17〜24 メモリ
25 PCIeスイッチ
26、27 LANアダプタ
28 SAS
29 HDD
30a、30d コア
30b、30e L1キャッシュ
30c、30f TLB
31〜31c アクセストークンテーブル
32 L2キャッシュタグ
32a L2キャッシュ
33 キャッシュスヌープコントローラ
34 メモリリクエストステートマシン
35 アドレスマップ
36 メモリアクセスポート
37 ターゲットアドレスチェッカ
38、38e、38g メモリトークンチェッカ
38a 自ノードIDレジスタ
38b、38f メモリトークンレジスタ
38c オペコードトークンデコーダー
38d アクセス判定制御器
38h ノード判定回路
38i ノードリストレジスタ
39 ホームステートマシン
40 メモリアクセスコントローラ
41 非キャッシュリクエストステートマシン
42 PCIeインターフェース
43 エラーレジスタ
44 レジスタコントローラ
45 リクエストレジスタ
47〜47c ASIレジスタ

Claims (9)

  1. 少なくとも一部を共有メモリ領域として設定可能な記憶装置と1つ以上の演算装置とを各々が備える複数のノードと、前記複数のノード間を接続するインターコネクトとを有する情報処理装置であって、
    前記複数のノードのうちの第1のノードは、
    他のノードの記憶装置にアクセスするための識別情報を記憶する第1記憶部と、
    前記他のノードへの通信データに前記識別情報を付加して送信する送信部と
    を備えた演算装置を有し、
    前記複数のノードのうちの第2のノードは、
    他のノードから該第2のノードの記憶装置の共有メモリ領域へのアクセスの許可の制御に用いる識別情報を記憶する第2記憶部と、
    前記第1のノードからの通信データに付加された前記識別情報と、前記第2記憶部に記憶された識別情報とに基づいて、前記第2のノードの記憶装置の共有メモリ領域へのアクセス可否を制御する制御部と、
    を有することを特徴とする情報処理装置。
  2. 前記第1のノードが有する演算装置の各々は、前記第2のノードから通知される識別情報を前記第1記憶部に格納し、
    前記第2のノードは、
    前記第1のノードに新たな識別情報を通知する通知部と、
    前記第2記憶部に記憶された識別情報を、前記通知部が通知した識別情報に変更する変更部とを有し、
    前記制御部は、前記第1のノードからの通信データに付加された前記識別情報と、前記第2記憶部に記憶された識別情報とが一致した場合は、前記第2のノードの記憶装置の共有メモリ領域へのアクセスを許可し、前記第1のノードからの通信データに付加された前記識別情報と、前記第2記憶部に記憶された識別情報とが一致しない場合には、前記第2のノードの記憶装置の共有メモリ領域へのアクセスを許可しないことを特徴とする請求項1に記載の情報処理装置。
  3. 前記第1のノードが有する演算装置の各々は、前記第2のノードの記憶装置から取得したデータを保持するキャッシュメモリを有し、
    前記制御部は、前記第2のノードの記憶装置から前記第1のノードの前記キャッシュメモリにデータを保持するためのアクセスを許可しなかった場合には、前記第1のノードの演算装置が有するキャッシュメモリが保持したデータを前記第2のノードの記憶装置に書き戻し、
    前記変更部は、前記制御部が前記第1のノードの演算装置が有するキャッシュメモリが保持したデータを前記第2のノードの記憶装置に書き戻す前に、前記第2記憶部に記憶された識別情報を新たな識別情報に変更することを特徴とする請求項2に記載の情報処理装置。
  4. 前記通知部は、前記第1のノードに対して、アクセス停止の指示とともに新たな識別情報を通知し、
    前記変更部は、前記通知部が前記アクセス停止の指示を通知してから所定の時間が経過した後に、前記第2記憶部に記憶された識別情報を、前記通知部が前記第1のノードに通知した新たな識別情報に変更することを特徴とする請求項2または3に記載の情報処理装置。
  5. 前記通知部は、前記第1のノードに新たな識別情報を通知し、
    前記変更部は、前記第2記憶部に記憶された識別情報を、前記新たな識別情報に変更し、
    前記送信部は、前記第2のノードの記憶装置の共有メモリ領域へのアクセスが許可されなかった場合には、同一のアクセスを要求する通信データを再度送信する事を特徴とする請求項2〜4のいずれか1つに記載の情報処理装置。
  6. 前記制御部は、前記第2のノードの記憶装置の共有メモリ領域へのアクセスを許可しなかった場合は、前記第1のノードの演算装置が有するキャッシュメモリが保持したデータを前記第2のノードの記憶装置に書き戻すことを特徴とする請求項5に記載の情報処理装置。
  7. 前記第1のノードが有する演算装置の各々は、コンテキストスイッチを行う際にスタックするレジスタの一部を、前記第1記憶部として用いることを特徴とする請求項1〜6のいずれか1つに記載の情報処理装置。
  8. 前記第1のノードが有する演算装置の各々は、並行して実行するスレッドと同じ数の第1記憶部を有することを特徴とする請求項1〜7のいずれか1つに記載の情報処理装置。
  9. 少なくとも一部を共有メモリ領域として設定可能な記憶装置と1つ以上の演算装置とを各々が備える複数のノードと、前記複数のノード間を接続するインターコネクトとを有する情報処理装置が実行する不正アクセス防止方法において、
    前記複数のノードのうちの第1のノードが有する演算装置の各々は、
    他のノードの記憶装置にアクセスするための識別情報を前記他のノードへの通信データに付加して送信し、
    前記複数のノードのうちの第2のノードは、
    他のノードから該第2のノードの記憶装置の共有メモリ領域へのアクセスの許可の制御に用いる識別情報を保持し、
    前記第1のノードからの通信データに付加された前記識別情報と、保持した前記識別情報とに基づいて、前記第2のノードの記憶装置の共有メモリ領域へのアクセス可否を制御する
    処理を実行することを特徴とする不正アクセス防止方法。
JP2011290025A 2011-12-28 2011-12-28 情報処理装置および不正アクセス防止方法 Expired - Fee Related JP5541275B2 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2011290025A JP5541275B2 (ja) 2011-12-28 2011-12-28 情報処理装置および不正アクセス防止方法
US13/606,054 US20130174224A1 (en) 2011-12-28 2012-09-07 Information processing apparatus and unauthorized access prevention method
TW101133281A TWI453625B (zh) 2011-12-28 2012-09-12 資訊處理裝置及未授權存取之防止方法
EP12187772.4A EP2610755A3 (en) 2011-12-28 2012-10-09 Information processing apparatus and unauthorized access prevention method
US13/654,274 US8521977B2 (en) 2011-12-28 2012-10-17 Information processing apparatus and access control method
KR1020120120734A KR101403233B1 (ko) 2011-12-28 2012-10-29 정보 처리 장치 및 부정 액세스 방지 방법
CN2012104245530A CN103186481A (zh) 2011-12-28 2012-10-30 信息处理设备及防止未授权访问的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011290025A JP5541275B2 (ja) 2011-12-28 2011-12-28 情報処理装置および不正アクセス防止方法

Publications (2)

Publication Number Publication Date
JP2013140446A true JP2013140446A (ja) 2013-07-18
JP5541275B2 JP5541275B2 (ja) 2014-07-09

Family

ID=47044866

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011290025A Expired - Fee Related JP5541275B2 (ja) 2011-12-28 2011-12-28 情報処理装置および不正アクセス防止方法

Country Status (6)

Country Link
US (2) US20130174224A1 (ja)
EP (1) EP2610755A3 (ja)
JP (1) JP5541275B2 (ja)
KR (1) KR101403233B1 (ja)
CN (1) CN103186481A (ja)
TW (1) TWI453625B (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2921965A1 (en) 2014-03-19 2015-09-23 Fujitsu Limited Information processing device and shared memory management method
JP2016134041A (ja) * 2015-01-20 2016-07-25 富士通株式会社 情報処理システム、情報処理装置、メモリアクセス制御方法
JP2017111750A (ja) * 2015-12-18 2017-06-22 富士通株式会社 情報処理装置、共有メモリ管理方法及び共有メモリ管理プログラム
JP2017111751A (ja) * 2015-12-18 2017-06-22 富士通株式会社 情報処理装置、共有メモリ管理方法及び共有メモリ管理プログラム
JP2017123051A (ja) * 2016-01-07 2017-07-13 富士通株式会社 情報処理装置、情報処理装置の制御方法及び演算処理装置
JP2017191464A (ja) * 2016-04-13 2017-10-19 富士通株式会社 情報処理システム、送信装置および情報処理システムの制御方法
US10909044B2 (en) 2016-04-27 2021-02-02 Nec Corporation Access control device, access control method, and recording medium containing access control program
JP2021512405A (ja) * 2018-02-02 2021-05-13 エイアールエム リミテッド メモリ・アクセスにおける保護タグ・チェックの制御
JP2021532474A (ja) * 2018-07-31 2021-11-25 アーム・リミテッド ガード・タグ紛失の取り扱い

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9361243B2 (en) 1998-07-31 2016-06-07 Kom Networks Inc. Method and system for providing restricted access to a storage medium
WO2014002174A1 (ja) * 2012-06-25 2014-01-03 富士通株式会社 情報処理装置および情報処理装置の故障検出方法
US10540284B2 (en) * 2014-07-29 2020-01-21 Nxp Usa, Inc. Cache-coherent multiprocessor system and a method for detecting failures in a cache-coherent multiprocessor system
TWI502400B (zh) * 2014-07-30 2015-10-01 Elan Microelectronics Corp 微處理器及其資料保密方法
JP6428430B2 (ja) * 2015-03-26 2018-11-28 富士ゼロックス株式会社 情報処理装置、画像形成装置、情報処理システムおよびプログラム
GB2539428B (en) 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
US9514083B1 (en) * 2015-12-07 2016-12-06 International Business Machines Corporation Topology specific replicated bus unit addressing in a data processing system
JP2017227969A (ja) * 2016-06-20 2017-12-28 富士通株式会社 制御プログラム、システム、及び方法
CN106557280B (zh) * 2016-10-31 2019-10-15 北京华为数字技术有限公司 数据存储方法、存储阵列及主机服务器
US10705994B2 (en) * 2017-05-04 2020-07-07 Nvidia Corporation Unified cache for diverse memory traffic
JP6922879B2 (ja) * 2018-11-30 2021-08-18 日本電気株式会社 通信装置、情報処理システム、および通信方法
US10838631B2 (en) * 2019-02-25 2020-11-17 International Business Machines Corporation Detection of alteration of storage keys used to protect memory
CN114556314A (zh) * 2019-10-31 2022-05-27 华为技术有限公司 处理非缓存写数据请求的方法、缓存器和节点
CN110943934A (zh) * 2019-11-19 2020-03-31 上海钧正网络科技有限公司 服务请求处理方法、系统、终端及可读存储介质
CN113470831B (zh) * 2021-09-03 2021-11-16 武汉泰乐奇信息科技有限公司 一种基于数据简并的大数据转换方法与装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01240947A (ja) * 1988-03-23 1989-09-26 Hitachi Ltd 主記憶の記憶保護方式
JPH11505652A (ja) * 1996-03-22 1999-05-21 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ 単一アドレス空間内の保護ドメイン
JP2001515632A (ja) * 1998-01-07 2001-09-18 富士通株式会社 統合されたメッセージ・パッシング・サポートを有する分散共有メモリマルチプロセッサ用メモリ保護機構
JP2003241961A (ja) * 2002-02-19 2003-08-29 Fujitsu Ltd マルチスレッドプロセッサにおける共有レジスタファイル制御方式
US20040215907A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Buffer pre-registration
JP2005352962A (ja) * 2004-06-14 2005-12-22 Sony Corp 情報管理装置及び情報管理方法
WO2007129482A1 (ja) * 2006-04-06 2007-11-15 Sony Corporation ブリッジ、プロセッサユニット、情報処理装置およびアクセス制御方法

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163096A (en) 1991-06-06 1992-11-10 International Business Machines Corporation Storage protection utilizing public storage key control
US5448698A (en) * 1993-04-05 1995-09-05 Hewlett-Packard Company Inter-processor communication system in which messages are stored at locations specified by the sender
US5619671A (en) * 1993-04-19 1997-04-08 International Business Machines Corporation Method and apparatus for providing token controlled access to protected pages of memory
US5900019A (en) * 1996-05-23 1999-05-04 International Business Machines Corporation Apparatus for protecting memory storage blocks from I/O accesses
US6247091B1 (en) * 1997-04-28 2001-06-12 International Business Machines Corporation Method and system for communicating interrupts between nodes of a multinode computer system
US6212610B1 (en) * 1998-01-07 2001-04-03 Fujitsu Limited Memory protection mechanism for a distributed shared memory multiprocessor with integrated message passing support
US6209064B1 (en) * 1998-01-07 2001-03-27 Fujitsu Limited Cache coherence unit with integrated message passing and memory protection for a distributed, shared memory multiprocessor system
DE69837113T2 (de) * 1998-01-20 2007-06-06 Fujitsu Ltd., Kawasaki Datenspeicheranordnung und Steuerverfahren dafür
US7536524B2 (en) * 1998-07-31 2009-05-19 Kom Networks Inc. Method and system for providing restricted access to a storage medium
EP1026898A1 (en) * 1999-02-04 2000-08-09 CANAL+ Société Anonyme Method and apparatus for encrypted transmission
JP4123621B2 (ja) 1999-02-16 2008-07-23 株式会社日立製作所 主記憶共有型マルチプロセッサシステム及びその共有領域設定方法
US6745272B2 (en) * 2001-04-04 2004-06-01 Advanced Micro Devices, Inc. System and method of increasing bandwidth for issuing ordered transactions into a distributed communication system
WO2003003194A1 (fr) * 2001-06-27 2003-01-09 Sony Corporation Dispositif a circuit integre, dispositif de traitement de l'information, procede de gestion de memoire de support d'information, terminal mobile, dispositif a circuit integre a semi-conducteur, et procede de communication par terminal mobile
US20030177367A1 (en) * 2002-03-14 2003-09-18 International Business Machines Corporation Controlling access to a disk drive in a computer system running multiple operating systems
US7003631B2 (en) * 2002-05-15 2006-02-21 Broadcom Corporation System having address-based intranode coherency and data-based internode coherency
EP1550036B1 (en) * 2002-10-07 2008-01-02 Fujitsu Siemens Computers, Inc. Method of solving a split-brain condition in a cluster computer system
US6981097B2 (en) * 2003-03-14 2005-12-27 Wisconsin Alumni Research Foundation Token based cache-coherence protocol
US8756390B2 (en) * 2005-12-05 2014-06-17 International Business Machines Corporation Methods and apparatuses for protecting data on mass storage devices
US7581074B2 (en) 2006-05-19 2009-08-25 International Business Machines Corporation Facilitating use of storage access keys to access storage
US7752417B2 (en) * 2006-06-05 2010-07-06 Oracle America, Inc. Dynamic selection of memory virtualization techniques
US7886156B2 (en) * 2006-09-18 2011-02-08 John Franco Franchi Secure universal transaction system
WO2008044837A1 (en) * 2006-10-10 2008-04-17 Data Locker International Llc Security system for external data storage apparatus and control method thereof
WO2008078564A1 (ja) * 2006-12-22 2008-07-03 Panasonic Corporation 情報処理装置、集積回路、方法、およびプログラム
US8086585B1 (en) * 2008-09-30 2011-12-27 Emc Corporation Access control to block storage devices for a shared disk based file system
US8363663B2 (en) * 2009-04-02 2013-01-29 The Boeing Company Methods and apparatus for routing data to nodes
CA2790009C (en) * 2010-02-18 2017-01-17 Katsumi Inoue Memory having information refinement detection function, information detection method using memory, device including memory, information detection method, method for using memory, and memory address comparison circuit

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01240947A (ja) * 1988-03-23 1989-09-26 Hitachi Ltd 主記憶の記憶保護方式
JPH11505652A (ja) * 1996-03-22 1999-05-21 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ 単一アドレス空間内の保護ドメイン
JP2001515632A (ja) * 1998-01-07 2001-09-18 富士通株式会社 統合されたメッセージ・パッシング・サポートを有する分散共有メモリマルチプロセッサ用メモリ保護機構
JP2003241961A (ja) * 2002-02-19 2003-08-29 Fujitsu Ltd マルチスレッドプロセッサにおける共有レジスタファイル制御方式
US20040215907A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Buffer pre-registration
JP2005352962A (ja) * 2004-06-14 2005-12-22 Sony Corp 情報管理装置及び情報管理方法
WO2007129482A1 (ja) * 2006-04-06 2007-11-15 Sony Corporation ブリッジ、プロセッサユニット、情報処理装置およびアクセス制御方法
US20090216921A1 (en) * 2006-04-06 2009-08-27 Sony Corporation Bridge, processor unit, information processing apparatus, and access control method

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015179488A (ja) * 2014-03-19 2015-10-08 富士通株式会社 情報処理装置、共有メモリ管理方法及び共有メモリ管理プログラム
EP2921965A1 (en) 2014-03-19 2015-09-23 Fujitsu Limited Information processing device and shared memory management method
JP2016134041A (ja) * 2015-01-20 2016-07-25 富士通株式会社 情報処理システム、情報処理装置、メモリアクセス制御方法
US10198365B2 (en) 2015-01-20 2019-02-05 Fujitsu Limited Information processing system, method and medium
US10628056B2 (en) 2015-12-18 2020-04-21 Fujitsu Limited Information processing apparatus and shared memory management method
JP2017111750A (ja) * 2015-12-18 2017-06-22 富士通株式会社 情報処理装置、共有メモリ管理方法及び共有メモリ管理プログラム
JP2017111751A (ja) * 2015-12-18 2017-06-22 富士通株式会社 情報処理装置、共有メモリ管理方法及び共有メモリ管理プログラム
JP2017123051A (ja) * 2016-01-07 2017-07-13 富士通株式会社 情報処理装置、情報処理装置の制御方法及び演算処理装置
JP2017191464A (ja) * 2016-04-13 2017-10-19 富士通株式会社 情報処理システム、送信装置および情報処理システムの制御方法
US10909044B2 (en) 2016-04-27 2021-02-02 Nec Corporation Access control device, access control method, and recording medium containing access control program
JP2021512405A (ja) * 2018-02-02 2021-05-13 エイアールエム リミテッド メモリ・アクセスにおける保護タグ・チェックの制御
JP7349437B2 (ja) 2018-02-02 2023-09-22 アーム・リミテッド メモリ・アクセスにおける保護タグ・チェックの制御
JP2021532474A (ja) * 2018-07-31 2021-11-25 アーム・リミテッド ガード・タグ紛失の取り扱い
JP7317099B2 (ja) 2018-07-31 2023-07-28 アーム・リミテッド ガード・タグ紛失の取り扱い

Also Published As

Publication number Publication date
US20130174224A1 (en) 2013-07-04
TWI453625B (zh) 2014-09-21
EP2610755A3 (en) 2014-04-09
US20130173867A1 (en) 2013-07-04
KR101403233B1 (ko) 2014-06-02
KR20130076696A (ko) 2013-07-08
EP2610755A2 (en) 2013-07-03
CN103186481A (zh) 2013-07-03
US8521977B2 (en) 2013-08-27
JP5541275B2 (ja) 2014-07-09
TW201342112A (zh) 2013-10-16

Similar Documents

Publication Publication Date Title
JP5541275B2 (ja) 情報処理装置および不正アクセス防止方法
JP5598493B2 (ja) 情報処理装置、演算装置および情報転送方法
US10169080B2 (en) Method for work scheduling in a multi-chip system
US8234407B2 (en) Network use of virtual addresses without pinning or registration
CN103080918B (zh) 功率优化的中断传递
US8171230B2 (en) PCI express address translation services invalidation synchronization with TCE invalidation
US9529532B2 (en) Method and apparatus for memory allocation in a multi-node system
JP5573829B2 (ja) 情報処理装置およびメモリアクセス方法
US20200117395A1 (en) Multi-processor bridge with cache allocate awareness
JP5565425B2 (ja) 演算装置、情報処理装置および演算方法
US10592459B2 (en) Method and system for ordering I/O access in a multi-node environment
US20150254182A1 (en) Multi-core network processor interconnect with multi-node connection
US9372800B2 (en) Inter-chip interconnect protocol for a multi-chip system
TWI553560B (zh) 資料處理之方法、連貫附加處理器代理伺服器、處理單元、資料處理系統及設計結構
CN115269457A (zh) 使得缓存能够在支持地址转换服务的设备内存储进程特定信息的方法和装置
JP2014160502A (ja) 情報処理装置およびメモリアクセス方法
JP6668908B2 (ja) 情報処理システム、送信装置および情報処理システムの制御方法
US20230318606A1 (en) Interface device and method of operating the same
KR20230086548A (ko) 이종의 멀티 cpu 간에 물리 자원을 공유하기 위한 제어권을 관리하는 시스템온칩 및 그 동작 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140304

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140324

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140408

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140421

R150 Certificate of patent or registration of utility model

Ref document number: 5541275

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees