(57)【要約】【課題】他のコアプロセッサが初期化したＩ／Ｏ装置に対するＩ／Ｏ要求を受けた場合であっても、コアプロセッサがそのＩ／Ｏ要求に対応することができるようにすること。【解決手段】Ｉ／Ｏ制御装置１において、マルチコアプロセッサ６と、マルチコアプロセッサ６のうち、ＳＡＳコントローラ１ｄ、ＤＭＡコントローラ１ｅの初期化を行ったコアプロセッサ１ｂ、１ｃの識別情報を記憶する記憶手段３ａと、を備え、コアプロセッサ１ｂ、１ｃと異なるコアプロセッサ１ａがＳＡＳコントローラ１ｄについてのＩ／Ｏ要求を受けると、コアプロセッサ１ａは、記憶手段３ａを参照して特定される、コアプロセッサ１ｂに対して、Ｉ／Ｏ要求の処理を依頼する。【選択図】図１
2013054434.tif 000002
【特許請求の範囲】
【請求項１】
Ｉ／Ｏ制御装置において、
マルチコアプロセッサと、
前記マルチコアプロセッサのうち、Ｉ／Ｏ装置の初期化を行った第１のコアプロセッサの識別情報を記憶する記憶手段と、
を備え、
前記第１のコアプロセッサと異なる第２のコアプロセッサが前記Ｉ／Ｏ装置についてのＩ／Ｏ要求を受けると、該第２のコアプロセッサは、前記記憶手段を参照して特定される、前記第１のコアプロセッサに対して、前記Ｉ／Ｏ要求の処理を依頼する、
ことを特徴とするＩ／Ｏ制御装置。
【請求項２】
前記第１のコアプロセッサは、前記Ｉ／Ｏ装置と該Ｉ／Ｏ装置の初期化を行うコアプロセッサとが関連づけられた設定情報を用いて初期化するＩ／Ｏ装置を特定し、特定した前記Ｉ／Ｏ装置の初期化を行うことを特徴とする請求項１記載のＩ／Ｏ制御装置。
【請求項３】
前記Ｉ／Ｏ要求の処理が依頼された前記第１のコアプロセッサの処理の完了通知を受け取った前記第２のコアプロセッサは、処理を実行した前記第１のコアプロセッサを識別する処理識別情報を前記Ｉ／Ｏ要求の要求元に返し、
前記第２のコアプロセッサは、前記処理識別情報を付加した第２のＩ／Ｏ要求を前記Ｉ／Ｏの要求元から受けると、前記第２のＩ／Ｏ要求に付加された前記処理識別情報を用いて特定される前記第１のコアプロセッサに対して、前記第２のＩ／Ｏ要求の処理を依頼することを特徴とする請求項１記載のＩ／Ｏ制御装置。
【請求項４】
メモリ装置をさらに有し、
前記第２のコアプロセッサは、前記第２のコアプロセッサがＩ／Ｏ装置の初期化を行ったときに確保した前記メモリ装置の論理メモリ空間と物理メモリ空間との関係を前記第１のコアプロセッサに通知し、前記第１のコアプロセッサは、前記第２のコアプロセッサから前記Ｉ／Ｏ要求の処理を依頼されたときに、前記第２のコアプロセッサから通知された前記論理メモリ空間と物理メモリ空間との関係を用いて、前記メモリ装置に確保された論理メモリ空間を使用して前記Ｉ／Ｏ要求の処理を実行することを特徴とする請求項１記載のＩ／Ｏ制御装置。
【請求項５】
マルチコアプロセッサのうち、Ｉ／Ｏ装置の初期化を行った第１のコアプロセッサと異なる第２のコアプロセッサがＩ／Ｏ装置についてのＩ／Ｏ要求を受けると、該第２のコアプロセッサは、Ｉ／Ｏ装置の初期化を行った第１のコアプロセッサの識別情報を記憶する記憶手段を参照して前記第１のコアプロセッサを特定し、
特定した前記第１のコアプロセッサに対して、前記Ｉ／Ｏ要求の処理を依頼する、
ことを特徴とするＩ／Ｏ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＩ／Ｏ制御装置およびＩ／Ｏ制御方法に関する。
【背景技術】
【０００２】
複数のコアプロセッサを備えるマルチコアプロセッサシステムが知られている。複数のコアプロセッサを有するコンピュータシステムでは、各コアプロセッサは、それぞれ独立したＯＳを立ち上げることができる。その場合には、各コアプロセッサ上でコンピュータシステム内の所定のＩ／Ｏ（Input/Output）装置の初期化処理が実行される。各コアプロセッサは、初期化処理を実行した後に、Ｉ／Ｏ装置に対するプログラムをコアプロセッサ上で実行することにより、Ｉ／Ｏ装置へアクセスする。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２７２２７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
各コアプロセッサは、Ｉ／Ｏ装置の初期化処理を実行することで、初期化処理を実行したＩ／Ｏ装置を認識する。
あるコアプロセッサが初期化処理を実行しなかったＩ／Ｏ装置が存在する場合には、他のコアプロセッサにより初期化処理が実行されていても、コアプロセッサは、他のコアプロセッサにより初期化処理が実行されたＩ／Ｏ装置を認識することができない。このためコアプロセッサは、初期化処理を実行したＩ／Ｏ装置以外のＩ／Ｏ装置に対するＩ／Ｏ要求を受け付けても、受け付けたＩ／Ｏ要求に対応することができないという問題がある。
【０００５】
１つの側面では、本発明は、他のコアプロセッサが初期化したＩ／Ｏ装置に対するＩ／Ｏ要求を受けた場合であっても、コアプロセッサがそのＩ／Ｏ要求に対応することができるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、開示のＩ／Ｏ制御装置が提供される。このＩ／Ｏ制御装置は、マルチコアプロセッサと、マルチコアプロセッサのうち、Ｉ／Ｏ装置の初期化を行った第１のコアプロセッサの識別情報を記憶する記憶手段とを備えている。
【０００７】
第１のコアプロセッサと異なる第２のコアプロセッサがＩ／Ｏ装置についてのＩ／Ｏ要求を受けると、該第２のコアプロセッサは、記憶手段を参照して特定される、第１のコアプロセッサに対して、Ｉ／Ｏ要求の処理を依頼する。
【発明の効果】
【０００８】
１態様では、他のコアプロセッサが初期化したＩ／Ｏ装置に対するＩ／Ｏ要求を受けた場合であっても、コアプロセッサがそのＩ／Ｏ要求に対応することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施の形態のＩ／Ｏ制御装置を示す図である。
【図２】第２の実施の形態のストレージシステムを示すブロック図である。
【図３】各ＣＰＵコアの機能を説明するブロック図である。
【図４】試験プログラム実行部の起動手順を説明する図である。
【図５】初期化装置情報テーブルを示す図である。
【図６】装置情報テーブルを示す図である。
【図７】判断部の処理を示すブロック図である。
【図８】ＣＰＵの処理を説明するフローチャートである。
【図９】初期化処理を説明するフローチャートである。
【図１０】Ｉ／Ｏアクセス試験処理を説明する図である。
【図１１】メモリ空間の獲得時の処理を示すシーケンス図である。
【図１２】メモリ空間の解放時の処理を示すシーケンス図である。
【図１３】メモリ空間の獲得時の処理を示すシーケンス図である。
【図１４】メモリ空間の解放時の処理を示すシーケンス図である。
【図１５】ｏｐｅｎ処理を説明するフローチャートである。
【図１６】Ｉ／Ｏアクセス処理を説明するフローチャートである。
【図１７】マスタコアからサブコアへの処理依頼および完了通知処理を説明する図である。
【図１８】サブコアの割り込み処理を説明するフローチャートである。
【発明を実施するための形態】
【００１０】
以下、実施の形態のＩ／Ｏ制御装置を、図面を参照して詳細に説明する。
＜第１の実施の形態＞
図１は、第１の実施の形態のＩ／Ｏ制御装置を示す図である。
【００１１】
第１の実施の形態のＩ／Ｏ制御装置１は、マルチコアプロセッサ６を備えている。マルチコアプロセッサ６は、それぞれ独立したＯＳ（Operating System）で動作する複数のコアプロセッサ１ａ、１ｂ、１ｃを備えている。コアプロセッサ１ａ、１ｂ、１ｃのうち、コアプロセッサ１ａが、マスタ（master）コアに設定されている。マスタコアに設定されたコアプロセッサ１ａは、作成部１ａ１と依頼部１ａ２を備えている。図１では、コアプロセッサ１ａのコア名が「コアＡ」、コアプロセッサ１ｂのコア名が「コアＢ」、コアプロセッサ１ｃのコア名が「コアＣ」であるものとする。
【００１２】
作成部１ａ１は、例えばＩ／Ｏ制御装置１の管理者が予め設定した設定情報２を用いて、コアプロセッサ１ｂにディスク装置４の初期化を実行させ、コアプロセッサ１ｃにＤＭＡ（Direct Memory Access）コントローラ５の初期化を実行させる。ディスク装置４およびＤＭＡコントローラ５は、Ｉ／Ｏ装置の一例である。ここで、ディスク装置４の初期化とは、ディスク装置４に接続されたＳＡＳ（Serial Attached SCSI）コントローラ１ｄを介してディスク装置４に対するＩ／Ｏ要求を処理可能な状態にすることを言う。また、ＤＭＡコントローラ５の初期化とは、ＤＭＡコントローラ５に接続されたＤＭＡコントローラ１ｅを介してＤＭＡコントローラ５に対するＩ／Ｏ要求を処理可能な状態にすることを言う。ＳＡＳコントローラ１ｄとＤＭＡコントローラ１ｅは、Ｉ／Ｏインタフェースの一例である。
【００１３】
設定情報２は、初期化を実行させるコアプロセッサとＩ／Ｏインタフェースとを管理者が関連づけた情報である。図１では、ＳＡＳコントローラ１ｄとコアプロセッサ１ｂとが関連づけられていることを示し、ＤＭＡコントローラ１ｅとコアプロセッサ１ｃとが関連づけられている。
【００１４】
コアプロセッサ１ｂは、作成部１ａ１の依頼に基づきＳＡＳコントローラ１ｄを制御してＳＡＳコントローラ１ｄに接続されたディスク装置４を認識する。そして、コアプロセッサ１ｂは、認識したディスク装置４の装置名「dsk000」を、コアプロセッサ１ｂのコア名「コアＢ」とともにコアプロセッサ１ａに返す。また、コアプロセッサ１ｃは、作成部１ａ１の依頼に基づきＤＭＡコントローラ１ｅを制御してＤＭＡコントローラ１ｅに接続されたＤＭＡコントローラ５を認識する。そして、コアプロセッサ１ｃは、認識したＤＭＡコントローラ５の装置名「dma000」を、コアプロセッサ１ｃのコア名「コアＣ」とともにコアプロセッサ１ａに返す。
【００１５】
そして、作成部１ａ１は、ディスク装置４の装置名「dsk000」を、コアプロセッサ１ｂのコア名「コアＢ」に関連づけ、ＤＭＡコントローラ５の装置名「dma000」を、コアプロセッサ１ｃのコア名「コアＣ」と関連づけた関連情報３を作成する。
【００１６】
作成部１ａ１は、作成した関連情報３を記憶手段３ａに記憶する。この記憶手段３ａは、ＲＡＭ（Random Access Memory）等が備えるデータ記憶領域により実現することができる。
【００１７】
依頼部１ａ２は、ディスク装置４またはＤＭＡコントローラ５に対するＩ／Ｏ要求を受け付けると、記憶手段３ａに記憶されている関連情報３を用いてＩ／Ｏ要求を処理するコアプロセッサを特定する。そして、特定したコアプロセッサに対しＩ／Ｏ要求の処理を依頼する。例えば、Ｉ／Ｏ要求が、ディスク装置４へのＩ／Ｏアクセス試験を行う要求であれば、依頼部１ａ２は、関連情報３を参照し、ディスク装置４の装置名「dsk000」に関連づけられたコアプロセッサ名「コアＢ」を特定する。そして、特定したコアプロセッサ名「コアＢ」のコアプロセッサ１ｂにＩ／Ｏ要求に対する処理を依頼する。また、Ｉ／Ｏ要求が、ＤＭＡコントローラ５へのＩ／Ｏアクセス試験を行う要求であれば、依頼部１ａ２は、関連情報３を参照し、ＤＭＡコントローラ５の装置名「dma000」に関連づけられたコアプロセッサ名「コアＣ」を特定する。そして、特定したコアプロセッサ名「コアＣ」のコアプロセッサ１ｃにＩ／Ｏ要求に対する処理を依頼する。
【００１８】
Ｉ／Ｏ制御装置１によれば、マスタコアに設定されているコアプロセッサ１ａにＩ／Ｏ要求が送られてくると、依頼部１ａ２が関連情報３を参照することにより、Ｉ／Ｏ要求を処理するコアプロセッサを特定する。そして、依頼部１ａ２は、特定したコアプロセッサに対しＩ／Ｏ要求の処理を依頼する。従って、管理者は、どのコアプロセッサでどのＩ／Ｏ装置が初期化されているのかを確認しなくてもコアプロセッサ１ａにＩ／Ｏ要求の処理を依頼することで、コアプロセッサ１ｂ、１ｃにＩ／Ｏ装置の処理を実行させることができる。
【００１９】
以下、開示のＩ／Ｏ制御装置をストレージシステムに適用した実施の形態を説明する。
＜第２の実施の形態＞
図２は、第２の実施の形態のストレージシステムを示すブロック図である。
【００２０】
ストレージシステム１０００は、ホスト装置３０と、このホスト装置３０にファイバチャネル（ＦＣ：Fibre Channel）スイッチ３１を介して接続されたストレージ装置１００とを有している。なお、図２では１つのホスト装置３０がストレージ装置１００に接続されているが、複数のホスト装置が、ストレージ装置１００に接続されていてもよい。
【００２１】
ストレージ装置１００は、それぞれが複数のＨＤＤ２０を備えるドライブエンクロージャ（ＤＥ：Drive Enclosure）２０ａ、２０ｂ、２０ｃ、２０ｄと、これらのドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄの物理記憶領域をＲＡＩＤ（Redundant Arrays of Inexpensive/Independent Disks）によって管理するＣＥ（Controller Enclosure）１０を有している。
【００２２】
なお、本実施の形態では、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが備える記憶媒体としては、ＨＤＤ２０を例示したが、ＨＤＤ２０に限らず、ＳＳＤ（Solid State Disk）等、他の記憶媒体を用いてもよい。以下、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが備える複数のＨＤＤ２０を区別しない場合は、「ＨＤＤ２０群」と言う。ＨＤＤ２０群の総容量は、例えば６００ＧＢ（Giga Byte）〜２４０ＴＢ（Tera Byte）である。
【００２３】
ＣＥ１０は、制御モジュール（ＣＭ：Controller Module）１０ａ、１０ｂを有している。
ＣＥ１０は、制御モジュール１０ａ、１０ｂそれぞれが備えるマルチコアプロセッサの全てのＣＰＵコアにおいて同じシステムを立ち上げ、複数のＣＰＵコアから選択した、または予め選択されたマスタコア上で試験プログラムを起動し、複数のＣＰＵコアによるＩ／Ｏ制御分担を行う。制御の対象となるＩ／Ｏ装置は、ＳＡＳ、チャネルアダプタ（ＣＡ：Channel Adapter）、ＤＭＡコントローラ等である。ＳＡＳはコントローラ単位、チャネルアダプタはポート単位、ＤＭＡコントローラはチャネル単位で各コアに制御を分担させる。
【００２４】
また、ＣＥ１０には、管理端末装置５００が接続されている。ストレージシステム１０００の管理者（以下、「システム管理者」と言う）は、管理端末装置５００を操作することで、ＣＥ１０に各種動作を実行させることができる。
【００２５】
ストレージ装置１００は、２つの制御モジュール１０ａ、１０ｂを運用に使用することで、冗長性が確保されている。なお、ストレージ装置１００が備える制御モジュールの数は、２つに限定されず、３つ以上の制御モジュールにより冗長性が確保されていてもよいし、制御モジュール１０ａのみを使用した構成であってもよい。
【００２６】
制御モジュール１０ａ、１０ｂは、それぞれ、ホスト装置３０からのデータアクセス要求に応じてドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが有するＨＤＤ２０の物理記憶領域へのデータアクセスをＲＡＩＤによって制御する。
【００２７】
制御モジュール１０ａ、１０ｂは、それぞれ同じハードウェア構成によって実現されるため、代表的に、制御モジュール１０ａのハードウェア構成を説明する。
制御モジュール１０ａは、ＣＰＵ１０１と、ＰＣＨ１０２と、ＳＳＤ１０３と、ＤＭＡコントローラ（図２では「ＤＭＡＣ」と表記）１０４と、ＲＡＭ１０５と、フラッシュＲＯＭ（Read Only Memory）１０６と、キャッシュメモリ１０７と、チャネルアダプタ１０８ａ、１０８ｂと、ＳＡＳコントローラ（図２では、「ＳＡＳ」と表記）１０９ａ、１０９ｂとを備えている。ＣＰＵ１０１は、複数のＣＰＵコアを備えるマルチコアＣＰＵである。ＣＰＵ１０１は、ＰＣＨ１０２を介して接続されたＳＳＤ１０３等に記憶された試験プログラムを実行することにより、制御モジュール１０ａ全体を統括的に制御する。ＤＭＡコントローラ１０４は、ＣＰＵ１０１に接続されており、制御モジュール１０ｂが備えるＤＭＡコントローラ２０４との間でメモリ間のデータ転送を行う。
【００２８】
ＲＡＭ１０５は、ＣＰＵ１０１に実行させるプログラムの少なくとも一部や、プログラムによる処理に必要な各種データを一時的に記憶する。フラッシュＲＯＭ１０６は、不揮発性のメモリであり、ＣＰＵ１０１により実行されるプログラムや、プログラムの実行に必要な各種のデータ等を記憶する。
【００２９】
また、フラッシュＲＯＭ１０６は、ストレージ装置１００の停電時等にキャッシュメモリ１０７に記憶されているデータの退避先となる。
キャッシュメモリ１０７は、ＨＤＤ２０群に書き込まれているデータやＨＤＤ２０群から読み出したデータを一時的に記憶する。
【００３０】
そして、制御モジュール１０ａは、例えばホスト装置３０からのデータ読み出し命令を受けたときに、読み出し対象のデータがキャッシュメモリ１０７に記憶されているか否かを判断する。読み出し対象のデータがキャッシュメモリ１０７に記憶されていれば、制御モジュール１０ａは、キャッシュメモリ１０７に記憶されている読み出し対象のデータをホスト装置３０に送る。読み出し対象のデータをＨＤＤ２０群から読み出す場合に比べ、データを迅速にホスト装置３０に送ることができる。
【００３１】
また、キャッシュメモリ１０７には、ＣＰＵ１０１が処理に用いるデータが一時的に記憶されてもよい。このキャッシュメモリ１０７としては、例えば、ＳＲＡＭ（Static Random Access Memory）等の揮発性の半導体装置が挙げられる。また、キャッシュメモリ１０７の記憶容量は、特に限定されないが、一例として２〜６４ＧＢ程度である。
【００３２】
チャネルアダプタ１０８ａ、１０８ｂは、それぞれファイバチャネルスイッチ３１に接続され、ファイバチャネルスイッチ３１を介してホスト装置３０のチャネルＣＨ１、ＣＨ２、ＣＨ３、ＣＨ４に接続される。チャネルアダプタ１０８ａ、１０８ｂは、ホスト装置３０と制御モジュール１０ａとの間でデータを送受信するインタフェース機能を提供する。
【００３３】
ＳＡＳコントローラ１０９ａ、１０９ｂは、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄに接続されている。このＳＡＳコントローラ１０９ａ、１０９ｂは、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが備えるＨＤＤ２０群とキャッシュメモリ１０７との間でデータを送受信するデバイスインタフェース機能を提供する。制御モジュール１０ａは、ＳＡＳコントローラ１０９ａ、１０９ｂを介してドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが備えるＨＤＤ２０群との間でデータの送受信を行う。
【００３４】
ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄには、ドライブエンクロージャ２０ａ、２０ｂ、２０ｃ、２０ｄが備える複数のＨＤＤ２０のうち、１つ、または複数のＨＤＤ２０により構成されたＲＡＩＤグループが形成されている。このＲＡＩＤグループは、「論理ボリューム」「仮想ディスク」「ＲＬＵ（RAID Logical Unit）」等と呼ばれる場合もある。
【００３５】
図２では、ＲＡＩＤ５を構成するＲＡＩＤグループ２１を示している。なお、ＲＡＩＤグループ２１を構成するＨＤＤ２０は、他のＨＤＤ２０と区別するために、異なる符号（ＨＤＤ２１ａ、２１ｂ、２１ｃ、２１ｄ）を付している。すなわち、ＲＡＩＤグループ２１は、ＨＤＤ２１ａ、２１ｂ、２１ｃ、２１ｄで構成されており、ＲＡＩＤ５（３＋１）で運用されている。なお、ＲＡＩＤグループ２１のＲＡＩＤ構成は、一例であり、図示のＲＡＩＤ構成に限定されない。例えば、ＲＡＩＤグループ２１は、任意の個数のＨＤＤ２０を有することができる。また、ＲＡＩＤグループ２１は、ＲＡＩＤ６等、任意のＲＡＩＤ方式で構成することができる。
【００３６】
図２に示すようなハードウェア構成の制御モジュール１０ａ、１０ｂ内には、以下のような機能が設けられる。以下、制御モジュール１０ａ、１０ｂを代表して制御モジュール１０ａの機能を説明する。
【００３７】
図３は、各ＣＰＵコアの機能を説明するブロック図である。
ＣＰＵ１０１は、ＣＰＵコア１０１ａ、１０１ｂ、１０１ｃ、１０１ｄを有している。
ＣＰＵコア１０１ａ〜１０１ｄのうち、１つがＣＰＵ１０１を統括して制御するマスタコアに設定される。本実施の形態では、ＣＰＵコア１０１ａがマスタコアに設定されている。以下、ＣＰＵコア１０１ａを「マスタコア１０１ａ」とも言う。また、ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄを「サブコア１０１ｂ、１０１ｃ、１０１ｄ」とも言う。
【００３８】
ＣＰＵコア１０１ａは、試験プログラム実行部１１と、システムモニタ１２と、Ｉ／Ｏドライバ１３とを有している。
試験プログラム実行部１１は、試験プログラムを実行することにより、後述するＤＭＡコントローラアクセス処理、ＣＡアクセス処理、ディスクアクセス処理等のＩ／Ｏ装置へのＩ／Ｏアクセス試験の実行をＣＰＵコア１０１ａ〜１０１ｄに要求する。Ｉ／Ｏアクセス試験は、システムモニタ１２を通して対象ＣＰＵコア１０１ａ〜１０１ｄが備える各Ｉ／Ｏドライバにおいて実行される。
【００３９】
次に、試験プログラム実行部１１の起動手順を説明する。
図４は、試験プログラム実行部の起動手順を説明する図である。
制御モジュール１０ａに電力が供給されると、フラッシュＲＯＭ１０６に記憶されているＢＩＯＳ（Basic Input/Output System）１０６ａが起動する。ＢＩＯＳ１０６ａは、ＳＳＤ１０３に記憶されているシステムモニタをＲＡＭ１０５にロードし、ＣＰＵ１０１に制御を渡す。ＣＰＵ１０１は、システムモニタ１２の初期化処理を実行する。次に、ＣＰＵ１０１は、ＳＳＤ１０３に記憶されているＩ／Ｏドライバ１３をＲＡＭ１０５にロードする。ＣＰＵ１０１は、Ｉ／Ｏドライバ１３に接続されたＩ／Ｏ装置の初期化処理を実行する。ＣＰＵ１０１は、Ｉ／Ｏドライバ１３が複数存在する場合、Ｉ／Ｏドライバ１３の数だけＩ／Ｏドライバ１３に接続されたＩ／Ｏ装置のロードおよび初期化処理を繰り返す。
【００４０】
ＣＰＵ１０１は、システムモニタ１２の立ち上げ処理が完了後、管理端末装置５００に操作画面を表示する。システム管理者は、管理端末装置５００を用いて各Ｉ／Ｏ装置の試験プログラム１１ａの起動操作を実施する。起動操作をＣＰＵ１０１が受け付けると、システムモニタ１２は、指定された試験プログラム１１ａをＳＳＤ１０３からＲＡＭ１０５にロードする。試験プログラム実行部１１は、ロードされた試験プログラム１１ａを実行する。
【００４１】
なお、管理端末装置５００からの起動操作を予めフラッシュＲＯＭ１０６等に記憶しておき、ＣＰＵ１０１が読み出すことで、試験プログラムを起動することもできる。
再び図３に戻って説明する。
【００４２】
システムモニタ１２は、設定部１２１と、提供部１２２と、通信制御部１２３と、メモリ管理部１２４と、作成部１２５と、判断部１２６とを有している。
設定部１２１は、管理端末装置５００が発信するコマンドを受け取ると、コマンドに含まれる設定内容に基づいて後述する初期化装置情報テーブルを作成し、ＲＡＭ１０５に格納する。このコマンドは、システム管理者が、各ＣＰＵコア１０１ｂ〜１０１ｄが備える各Ｉ／ＯドライバにどのＩ／Ｏ装置のＩ／Ｏアクセス試験を実行させるかを通知する際に発行するコマンドである。なお、Ｉ／Ｏ装置の設定は、ＳＡＳコントローラ１０９ａ、１０９ｂ単位、チャネルアダプタ１０８ａ、１０８ｂのポート単位、およびＤＭＡコントローラ１０４のチャネル単位で可能とする。
【００４３】
図５は、初期化装置情報テーブルを示す図である。
初期化装置情報テーブル１０５ａには、初期化対象装置名の欄と、コア番号の欄が設けられている。
【００４４】
初期化対象装置名の欄には、ＳＡＳコントローラ、ＣＡのポート、およびＤＭＡコントローラのチャネルを識別する名前が設定される。コア番号の欄には、当該ＳＡＳコントローラ、ＣＡのポート、およびＤＭＡコントローラのチャネルを初期化したＣＰＵコア１０１ａ〜１０１ｄを識別する番号が設定される。図５では、コア番号「０」は、ＣＰＵコア１０１ａを示している。コア番号「１」は、ＣＰＵコア１０１ｂを示している。コア番号「２」は、ＣＰＵコア１０１ｃを示している。コア番号「３」は、ＣＰＵコア１０１ｄを示している。
【００４５】
再び図３に戻って説明する。
提供部１２２は、Ｉ／Ｏ装置の初期化処理時に、ＣＰＵコア１０１ａが備える各Ｉ／Ｏドライバ１３に制御担当のＩ／Ｏ装置を通知する。具体的には、提供部１２２は、自システムが動作しているコア番号をチェックし、初期化装置情報テーブル１０５ａから、コア番号が一致する対象装置情報をＩ／Ｏドライバ１３に返す。
【００４６】
通信制御部１２３は、ＣＰＵコア１０１ａとＣＰＵコア１０１ｂ〜１０１ｄ間の通信を制御する。
メモリ管理部１２４は、ＣＰＵコア１０１ａ、１０１ｂ、１０１ｃ、１０１ｄがＩ／Ｏ装置のＩ／Ｏアクセス試験を実行する際に用いるメモリ空間を一括して管理する。すなわち、ＣＰＵコア１０１ａ以外のＣＰＵコア１０１ｂ〜１０１ｄにおけるページングはメモリ管理部１２４の指示に従って行う。
【００４７】
作成部１２５は、初期化部１３１および初期化部１６１が処理を実行することにより得られる装置の情報（以下、「装置情報」と言う）をテーブル化してＲＡＭ１０５に記憶する。
【００４８】
図６は、装置情報テーブルを示す図である。
装置情報テーブル１０５ｂには、装置名およびコア番号の欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
【００４９】
装置名の欄には、初期化部１３１等がそれぞれ初期化を実行した結果、初期化部１３１等が認識した装置の名前が設定されている。コア番号の欄には、装置名の欄の装置の初期化を実行したＣＰＵコア１０１ａ〜１０１ｄを識別する番号が設定される。
【００５０】
例えば、装置名「dsk00000」は、初期化部１３１が認識したドライブエンクロージャ２０ａに実装されている複数のＨＤＤ２０のうちの１つのＨＤＤ２０の名前である。また、装置名「dma00000」は、初期化部１３１が認識したＤＭＡコントローラ２０４のチャネル０を識別する名前である。また、装置名「cat00000」は、ＣＰＵコア１０１ｃの初期化部が認識したチャネルアダプタ１０８ａのポート０を識別する名前である。
【００５１】
再び図３に戻って説明する。
判断部１２６は、試験プログラム１１ａが実行されたときに、試験対象となるＩ／Ｏ装置のＩ／Ｏアクセス試験を行うＣＰＵコアを判断する。
【００５２】
図７は、判断部の処理を示すブロック図である。
図７に示す試験プログラム実行部１１は、試験プログラム１１ａに記述されたＤＭＡコントローラアクセス処理Ｂ、ＣＡアクセス処理Ｂ、ディスクアクセス処理Ａ、およびディスクアクセス処理Ｂを実行する。
【００５３】
ＤＭＡコントローラアクセス処理Ｂは、ＤＭＡコントローラ１０４のチャネル１を介してＤＭＡコントローラ２０４にアクセスする処理である。ＣＡアクセス処理Ｂは、チャネルアダプタ１０８ｂを介してホスト装置３０にアクセスする処理である。ディスクアクセス処理Ａは、ＳＡＳコントローラ１０９ａを介してドライブエンクロージャ２０ａにアクセスする処理である。ディスクアクセス処理Ｂは、ＳＡＳコントローラ１０９ｂを介してドライブエンクロージャ２０ａにアクセスする処理である。
【００５４】
例えば、ＤＭＡコントローラアクセス処理Ｂでは、判断部１２６が、装置情報テーブル１０５ｂの装置名の欄を参照して、ＤＭＡコントローラ２０４のチャネル１に一致する「dma00001」を検出する。そして、判断部１２６は、「dma00001」に対応するコア番号「３」を特定する。そして、判断部１２６は、ＣＰＵコア１０１ｄのＩ／Ｏドライバ１８に対し、Ｉ／Ｏアクセス試験を行うよう指示する。Ｉ／Ｏドライバ１８は、ＤＭＡ機能を用いてＤＭＡコントローラ１０４にアクセスする。同様に、ＣＡアクセス処理Ｂでは、判断部１２６が、ＣＰＵコア１０１ｃのＩ／Ｏドライバ１７に対し、Ｉ／Ｏアクセス試験を行うよう指示する。また、ディスクアクセス処理Ａでは、判断部１２６が、ＣＰＵコア１０１ｂのＩ／Ｏドライバ１６に対しＩ／Ｏアクセス試験を行うよう指示する。ディスクアクセス処理Ｂでは、判断部１２６が、Ｉ／Ｏドライバ１３に対しＩ／Ｏアクセス試験を行うよう指示する。
【００５５】
再び図３に戻って説明する。
Ｉ／Ｏドライバ１３は、初期化部１３１とアクセス制御部１３２とを有している。
初期化部１３１は、制御モジュール１０ａの起動時に、システムモニタ１２から通知された初期化対象のＩ／Ｏ装置の初期化を実行し、初期化を実行した結果得られる初期化対象のＩ／Ｏ装置の装置情報を生成する。なお初期化部１３１は、初期化対象のＩ／Ｏ装置が存在しない場合は、何もしない。初期化部１３１は、生成した装置情報を作成部１２５に送る。
【００５６】
アクセス制御部１３２は、Ｉ／Ｏ装置に対してアクセスを行う。
次に、ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄが備える機能を説明する。
ＣＰＵコア１０１ｂは、システムモニタ１４と、複数の作業タスク１５と、Ｉ／Ｏドライバ１６とを有している。
【００５７】
システムモニタ１４は、提供部１４１と、通信制御部１４２と、タスク管理部１４３とを有している。
提供部１４１は、自システムが動作しているコア番号をチェックし、初期化装置情報テーブル１０５ａから，コア番号が一致する装置情報をＩ／Ｏドライバ１６に返す。
【００５８】
通信制御部１４２は、ＣＰＵコア１０１ｂとＣＰＵコア１０１ａ、１０１ｃ〜１０１ｄ間の通信を制御する。
タスク管理部１４３は、ＣＰＵコア１０１ｂで動作する各作業タスク１５の動作状況を管理する。
【００５９】
各作業タスク１５は、それぞれ処理部１５１と通知部１５２とを有している。
処理部１５１は、マスタコア１０１ａからの処理依頼（Ｉ／Ｏアクセス、ページング等）を実行する。
【００６０】
通知部１５２は、マスタコア１０１ａからの依頼処理結果を、マスタコア１０１ａへ通知する。
Ｉ／Ｏドライバ１６が実行する処理は、Ｉ／Ｏドライバ１３が実行する処理と同様である。すなわち、初期化部１６１が実行する処理は、初期化部１３１が実行する処理と同じであり、アクセス制御部１６２が実行する処理は、アクセス制御部１３２が実行する処理と同じである。
【００６１】
なお、マスタコア１０１ａが作業タスク１５と同様の機能を備えていてもよい。
次に、ＣＰＵ１０１の処理を説明する。
図８は、ＣＰＵの処理を説明するフローチャートである。
【００６２】
［ステップＳ１］  ＣＰＵ１０１は、初期化装置情報テーブル１０５ａの各欄を参照し、ＣＰＵ１０１に接続されているＩ／Ｏ装置を初期化する分担をＣＰＵコア１０１ａ〜１０１ｄ毎に設定する。分担が設定された各ＣＰＵコア１０１ａ〜１０１ｄは、設定された分担のＩ／Ｏ装置の初期化処理を実施する。その後、ステップＳ２に遷移する。なお、初期化処理については、後に詳述する。
【００６３】
［ステップＳ２］  ＣＰＵ１０１は、初期化処理の結果得られるＩ／Ｏ装置を認識する情報をＣＰＵコア毎に関連づけた装置情報テーブル１０５ｂを作成する。その後、ステップＳ３に遷移する。
【００６４】
［ステップＳ３］  ＣＰＵ１０１は、要求を受け取ると、ステップＳ２にて作成した装置情報テーブル１０５ｂを用いて試験プログラム１１ａに記述されたＩ／Ｏアクセス試験を行う。その後、図８の処理を終了する。
【００６５】
以下、図８のステップＳ１の初期化処理およびステップＳ２の装置情報テーブルの作成について詳しく説明する。
＜初期化処理＞
図９は、初期化処理を説明するフローチャートである。
【００６６】
［ステップＳ１１］  設定部１２１は、管理端末装置５００からコマンドを受け取ると、ステップＳ１２に遷移する。
［ステップＳ１２］  設定部１２１は、コマンドに含まれる設定内容に基づいて、初期化装置情報テーブル１０５ａを作成する。その後、ステップＳ１３に遷移する。
【００６７】
［ステップＳ１３］  設定部１２１は、システムの再立ち上げを実行する。再立ち上げにより、ＣＰＵコア１０１ａ〜１０１ｄそれぞれのＩ／Ｏドライバが動き始める。
［ステップＳ１４］  初期化部１３１は、初期化装置情報テーブル１０５ａのコア番号の欄を参照し、ＣＰＵコア１０１ａのＩ／Ｏドライバ１３が初期化対象とするＩ／Ｏ装置が存在するか否かを判断する。ＣＰＵコア１０１ａのＩ／Ｏドライバ１３が初期化対象とするＩ／Ｏ装置が存在する場合、初期化部１３１は、初期化装置情報テーブル１０５ａの装置の欄を参照し、ＣＰＵコア１０１ａに関連づけられた装置名を特定する。そして、初期化部１３１は、特定した装置名のＩ／Ｏ装置の初期化を実行し、装置情報を生成する。初期化が完了すると、生成した装置情報を作成部１２５に送る。その後、ステップＳ１６に遷移する。
【００６８】
［ステップＳ１５］  初期化部１６１は、初期化装置情報テーブル１０５ａのコア番号の欄を参照し、ＣＰＵコア１０１ｂのＩ／Ｏドライバ１６が初期化対象とするＩ／Ｏ装置が存在するか否かを判断する。ＣＰＵコア１０１ｂのＩ／Ｏドライバ１６が初期化対象とするＩ／Ｏ装置が存在する場合、初期化部１６１は、初期化装置情報テーブル１０５ａの装置の欄を参照し、ＣＰＵコア１０１ｂに関連づけられた装置名を特定する。そして、初期化部１６１は、特定した装置名のＩ／Ｏ装置の初期化を実行する。初期化が完了すると、生成した装置情報を、通信制御部１４２を介して通信制御部１２３に送る。通信制御部１２３は、送られてきた装置情報を作成部１２５に送る。なお、本ステップでは、初期化部１６１の処理を説明したが、ＣＰＵコア１０１ｃ、１０１ｄの初期化部も初期化部１６１と同様の処理を行う。
【００６９】
［ステップＳ１６］  作成部１２５は、初期化部１３１および初期化部１６１が初期化を実行することにより得られる装置情報を用いて装置情報テーブル１０５ｂを作成する。そして、作成した装置情報テーブル１０５ｂをＲＡＭ１０５に記憶する。その後、図９の処理を終了する。
【００７０】
本実施の形態の初期化処理を実行することにより、制御モジュール１０ａは、初期化装置情報テーブル１０５ａで各ＣＰＵコアに割当てられたＩ／Ｏ装置のみ初期化処理を行う。従って、各ＣＰＵコア１０１ｂ〜１０１ｄが備える各Ｉ／Ｏドライバは、動作しているコア番号を意識することなく、初期化処理を実施することができる。このため、同じ装置に対する初期化処理がぶつかり初期化が失敗したり、後から実行されたＣＰＵコアからの初期化処理によって、最初に実行された初期化設定（割り込み設定等）を上書きされたりし、Ｉ／Ｏ装置が正常に動作することができなくなる等の不具合を抑制することができる。また、システム管理者が、予め制御対象のＩ／Ｏ装置の設定を変えたＩ／Ｏドライバモジュールを作成しておき、その都度Ｉ／Ｏドライバモジュールを入れ替える等の処理が不要となる。
【００７１】
次に、図８のステップＳ３のＩ／Ｏアクセス試験処理を説明する。
図１０は、Ｉ／Ｏアクセス試験処理を説明する図である。
［ステップＳ２１］  ＣＰＵコア１０１ａは、Ｉ／Ｏ装置とのデータ転送に使用する領域（以下、「ライト／リード領域」と言う）１０５ｃをＲＡＭ１０５から獲得する。
【００７２】
［ステップＳ２２］  ＣＰＵコア１０１ａは、ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄとの間で物理アドレスと論理アドレスのページング（メモリマッピング）処理を行う。なお、ページング処理については、後に詳述する。
【００７３】
［ステップＳ２３］  ＣＰＵコア１０１ａは、ライト／リード領域１０５ｃの初期化またはリード設定を行う。
［ステップＳ２４］  ＣＰＵコア１０１ａは、Ｉ／Ｏアクセス試験時に用いる情報を設定する領域（以下、「Ｉ／Ｏ制御ブロック領域」と言う）１０５ｄをＲＡＭ１０５から獲得する。
【００７４】
［ステップＳ２５］  ＣＰＵコア１０１ａは、ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄとの間でページング処理を行う。
［ステップＳ２６］  ＣＰＵコア１０１ａは、ステップＳ２４にて獲得したＩ／Ｏ制御ブロック領域１０５ｄを用いてＩ／Ｏアクセス試験を行う。
【００７５】
以上で、Ｉ／Ｏアクセス試験処理の説明を終了する。
次に、ステップＳ２２およびステップＳ２５のページング処理を説明する。
試験プログラムはマスタコア１０１ａ上で動作する。このため、Ｉ／Ｏアクセス試験の実行時に用いるデータはマスタコア１０１ａが作成し、そのアドレス（論理アドレス）をＩ／Ｏドライバ１６、１７、１８に渡している。Ｉ／Ｏアクセス試験がＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄで実行される場合、メモリ空間の論理アドレスがＣＰＵコア１０１ａと同じでない場合、全く異なるメモリ番地にアクセスし、誤ったデータでＩ／Ｏアクセス試験を行ったり、ページフォルトが発生したりしてしまう。
【００７６】
前述したように、本実施の形態のメモリ管理部１２４は、マスタコア１０１ａ以外のＣＰＵコア１０１ｂ〜１０１ｄにおけるページングは、マスタコア１０１ａからの指示に従って行う。具体的には、メモリ管理部１２４は、マスタコア１０１ａにおける全ＣＰＵコアの一括メモリ管理機能、ＣＰＵ間割込み機能を使用してのＣＰＵコア間通信機能、およびマスタコア以外のＣＰＵコアにおけるページング設定／解除処理を実行する。
【００７７】
まず、ＣＰＵコア１０１ａ〜１０１ｄにおけるメモリ空間の獲得時の処理を説明する。
図１１は、メモリ空間の獲得時の処理を示すシーケンス図である。
［シーケンスＳｅｑ１］  獲得するメモリ空間が指定された試験プログラム実行部１１からのメモリ空間獲得要求を受け付けると、メモリ管理部１２４は、メモリ空間獲得処理を行う。具体的には、メモリ管理部１２４は、ＲＡＭ１０５を検索し、指定されたメモリ空間を獲得する。次に、メモリ管理部１２４は、ＣＰＵコア１０１ａの論理メモリ空間と物理メモリ空間のページングを実行する。
【００７８】
［シーケンスＳｅｑ２］  メモリ管理部１２４は、ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄに対してページング処理を要求する。具体的には、メモリ管理部１２４は、シーケンスＳｅｑ１にてページングを実行した、論理メモリ空間のページ番号、物理メモリ空間のページ番号、およびページ数をライト／リード領域１０５ｃに設定し、ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄそれぞれに対しＣＰＵ間割り込みをかけて設定した内容を通知する。その後、メモリ管理部１２４は、各ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄそれぞれからの完了通知を待機する。
【００７９】
［シーケンスＳｅｑ３］  各ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄの処理部は、シーケンスＳｅｑ２にて通知された内容に含まれる、論理メモリ空間と物理メモリ空間のページングをページ数分行う。
【００８０】
［シーケンスＳｅｑ４］  各ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄの通知部は、各ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄの処理部の処理が完了すると、ＣＰＵコア１０１ａへ完了通知を送る。メモリ管理部１２４がＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄから完了通知を受け取ると、メモリ空間獲得処理が終了する。
【００８１】
次に、ＣＰＵコア１０１ａ〜１０１ｄにおけるメモリ空間の解放時の処理を説明する。
図１２は、メモリ空間の解放時の処理を示すシーケンス図である。
［シーケンスＳｅｑ１１］  メモリ管理部１２４は、論理メモリ空間のページ番号およびページ数を含むメモリ空間解放要求をＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄに通知する。具体的には、メモリ管理部１２４は、論理メモリ空間のページ番号、およびページ数をライト／リード領域１０５ｃに設定し、ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄそれぞれに対しＣＰＵ間割り込みをかけて設定した内容を通知する。その後、メモリ管理部１２４は、各ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄから完了通知を待機する。
【００８２】
［シーケンスＳｅｑ１２］  ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄの処理部は、シーケンスＳｅｑ１１にて通知された内容に含まれる、論理メモリ空間と物理メモリ空間のページングの解除をページ数分行う。
【００８３】
［シーケンスＳｅｑ１３］  ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄの通知部は、ページングの解除が完了すると、ＣＰＵコア１０１ａへ完了通知を送る。
［シーケンスＳｅｑ１４］  メモリ管理部１２４は、ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄから完了通知を受け取ると、ＣＰＵコア１０１ａの論理メモリ空間と物理メモリ空間のページングの解除をページ数分行う。メモリ管理部１２４がＣＰＵコア１０１ａのページングを解除すると、メモリ空間解放処理が終了する。
【００８４】
ところで、図１１、図１２では、ＣＰＵコア１０１ａメモリ空間の獲得、解放を説明したが、ＣＰＵコア１０１ａ以外のコアでもメモリ空間を獲得、解放することができる。
次に、ＣＰＵコア１０１ｂにおけるメモリ空間獲得時の処理を説明する。ＣＰＵコア１０１ｂにおいてメモリ空間を獲得する際には、メモリ管理部１２４と同様の機能をＣＰＵコア１０１ｂに実行させる。
【００８５】
図１３は、メモリ空間の獲得時の処理を示すシーケンス図である。
［シーケンスＳｅｑ２１］  獲得するメモリ空間が指定された試験プログラム実行部１１からのメモリ空間獲得要求を受け付けると、ＣＰＵ１０１ｂは、メモリ空間獲得処理を行う。具体的には、ＣＰＵ１０１ｂは、マスタコア１０１ａにメモリ空間獲得要求を通知する。その後、ＣＰＵ１０１ｂは、マスタコア１０１ａからのメモリ空間獲得の完了通知を待機する。
【００８６】
［シーケンスＳｅｑ２２］  メモリ管理部１２４は、ＲＡＭ１０５を検索し、指定されたメモリ空間を獲得する。そして、メモリ管理部１２４は、ＣＰＵコア１０１ａの論理メモリ空間と物理メモリ空間のページングを実行する。
【００８７】
［シーケンスＳｅｑ２３］  メモリ管理部１２４は、ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄに対してページング処理を要求する。具体的には、メモリ管理部１２４はシーケンスＳｅｑ２２にてページングを実行した、論理メモリ空間のページ番号、物理メモリ空間のページ番号、およびページ数をライト／リード領域１０５ｃに設定し、ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄそれぞれに対しＣＰＵ間割り込みをかけて設定した内容を通知する。その後、メモリ管理部１２４は、各ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄそれぞれからの完了通知を待機する。
【００８８】
［シーケンスＳｅｑ２４］  各ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄの各処理部は、シーケンスＳｅｑ２３にて通知された内容に含まれる、論理メモリ空間と物理メモリ空間のページングをページ数分行う。
【００８９】
［シーケンスＳｅｑ２５］  各ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄの各通知部は、各ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄの各処理部の処理が完了すると、ＣＰＵコア１０１ａへ完了通知を送る。
【００９０】
［シーケンスＳｅｑ２６］  メモリ管理部１２４は、ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄから完了通知を受け取ると、獲得したメモリ空間の先頭論理アドレスをＣＰＵコア１０１ｂに通知する。ＣＰＵコア１０１ｂが先頭論理アドレスを受け取ると、メモリ空間獲得処理が終了する。
【００９１】
次に、ＣＰＵコア１０１ｃがメモリ解放要求を受け付けたときの処理を説明する。
図１４は、メモリ空間の解放時の処理を示すシーケンス図である。
［シーケンスＳｅｑ３１］  ＣＰＵ１０１ｃは、メモリ空間解放要求をＣＰＵコア１０１ａに通知する。
【００９２】
［シーケンスＳｅｑ３２］  メモリ空間解放要求を受け取ったメモリ管理部１２４は、ページング解除要求をＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄに通知する。具体的には、メモリ管理部１２４は、論理メモリ空間のページ番号、およびページ数をライト／リード領域１０５ｃに設定し、ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄそれぞれに対しＣＰＵ間割り込みをかけて設定した内容を通知する。その後、メモリ管理部１２４は、各ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄから完了通知を待機する。
【００９３】
［シーケンスＳｅｑ３３］  ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄの処理部は、シーケンスＳｅｑ３１にて通知された内容に含まれる、論理メモリ空間と物理メモリ空間のページングの解除をページ数分行う。
【００９４】
［シーケンスＳｅｑ３４］  ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄの通知部は、ページングの解除が完了すると、ＣＰＵコア１０１ａへ完了通知を送る。
［シーケンスＳｅｑ３５］  メモリ管理部１２４は、ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄから完了通知を受け取ると、ＣＰＵコア１０１ａのページングを解除する。
【００９５】
［シーケンスＳｅｑ３６］  メモリ管理部１２４は、ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄから完了通知を受け取ると、解放したメモリ空間の先頭論理アドレスをＣＰＵコア１０１ｂに通知する。ＣＰＵコア１０１ｂが先頭論理アドレスを受け取ると、メモリ空間解放処理が終了する。
【００９６】
以上述べたように、ＣＰＵ１０１は、ライト／リード領域１０５ｃやＩ／Ｏ制御ブロック領域１０５ｄを動的にＲＡＭ１０５上に確保し、必要なデータ設定や初期化等を行う。このとき、ステップＳ２２およびステップＳ２５のページング処理により、ＣＰＵコア１０１ａ〜１０１ｄの論理メモリ空間と物理メモリ空間の関係を同じページング状態にする。これにより、ＣＰＵコア１０１ｂ、１０１ｃ、１０１ｄは、Ｉ／Ｏアクセス試験において、全然違うメモリ番地にアクセスし、誤ったデータで処理を行ったり、ページフォルトが発生したりしてしまうことを抑制することができる。
【００９７】
次に、図１０のステップＳ２６のＩ／Ｏアクセス試験処理を説明する。
Ｉ／Ｏアクセス試験処理ではＩ／Ｏ装置へのアクセス処理に先立ちＩ／Ｏ装置のアクセス準備を行うｏｐｅｎ処理とＩ／Ｏアクセス処理を行う。以下順に説明する。
【００９８】
図１５は、ｏｐｅｎ処理を説明するフローチャートである。
［ステップＳ５１］  判断部１２６は、ｏｐｅｎ処理の処理元のＣＰＵコアを判断する。具体的には、判断部１２６は、装置情報テーブル１０５ｂの装置名の欄を参照し、指定された装置／ファイル名が存在するか否かを判断する。指定された装置／ファイル名が見つからなければファイルに対するｏｐｅｎ処理と判断し、ｏｐｅｎ処理を実行するようＩ／Ｏドライバ１３に指示する。判断部１２６は、指定された装置が装置情報テーブル１０５ｂの装置名の欄に存在した場合、一致した装置名の欄に関連づけられたコア番号の欄を参照する。コア番号が「０」であれば、判断部１２６は、ｏｐｅｎ処理を実行するようＩ／Ｏドライバ１３に指示する。コア番号が「０」以外であれば、判断部１２６は、コア番号に対応するＣＰＵコアに対してｏｐｅｎ処理要求を行うよう通信制御部１２３に指示する。このとき、通信制御部１２３は、装置名の情報をライト／リード領域１０５ｃに設定し、ｏｐｅｎ処理を要求するＣＰＵコアに通知する。なお、図１５では、ＣＰＵコア１０１ｂにｏｐｅｎ処理を通知した場合を示している。
【００９９】
［ステップＳ５２］  ｏｐｅｎ処理要求を受け取ったＣＰＵコア１０１ｂのタスク管理部１４３は、現在何も処理を行っていない作業タスク１５（以下、「空き作業タスク」と言う）を検索する。その後、ステップＳ５３に遷移する。
【０１００】
［ステップＳ５３］  タスク管理部１４３は、検索の結果見つかった空き作業タスクの処理部１５１にｏｐｅｎ処理を実行させる。具体的には、処理部１５１は、ステップＳ５１にて通知された装置名でｏｐｅｎ処理を実行する。そして、通知部１５２は、ｏｐｅｎ処理の復帰値（ファイルディスクリプタ値）をＣＰＵコア１０１ａへ通知する。
【０１０１】
このように、ＣＰＵコア１０１ａからの作業依頼に対しては、割り込みの延長で処理を行うと他の作業依頼や現在動作中のＩ／Ｏ装置の割り込みが受け付けられなくなる可能性がある。このため、依頼処理は作業タスクに実行させることにより、各処理が並行して動作できるようにしている。
【０１０２】
［ステップＳ５４］  ＣＰＵコア１０１ａは、ＣＰＵコア１０１ａ自身がｏｐｅｎ処理を実行した場合は、復帰値を、ｏｐｅｎ処理を要求した要求元に返す。ＣＰＵコア１０１ａ以外がｏｐｅｎ処理を実行し、ＣＰＵコア１０１ａが復帰値の通知を受け付けた場合は、復帰値が他のＣＰＵコアの値と重なる可能性がある。このため、ＣＰＵコア１０１ａは、復帰値の上位２ビットにコア番号を設定し、ｏｐｅｎ処理を要求した要求元に復帰値を返す。なお、ＣＰＵコア１０１ａ、１０１ｂ、１０１ｃ、１０１ｄの復帰値の一例は以下の通りである。ＣＰＵコア１０１ａ：００ｂ、ＣＰＵコア１０１ｂ：０１ｂ、ＣＰＵコア１０１ｃ：１０ｂ、ＣＰＵコア１０１ｄ：１１ｂ。
【０１０３】
次に、Ｉ／Ｏアクセス処理を説明する。
図１６は、Ｉ／Ｏアクセス処理を説明するフローチャートである。
［ステップＳ６１］  判断部１２６は、ステップＳ５４にて受け取った復帰値の先頭２ビットを確認する。先頭２ビットの値が「００ｂ」である場合は、判断部１２６は、試験プログラム１１ａに記述されたＩ／Ｏアクセス処理を実行するようＩ／Ｏドライバ１３に指示する。判断部１２６は、指定された復帰値の先頭２ビットの値が「００ｂ」以外である場合は、該当するＣＰＵコアに対してＩ／Ｏアクセス処理の実行を依頼するよう通信制御部１２３に指示する。このとき、通信制御部１２３は、復帰値（上位２ビットを「００ｂ」にした値（ｏｐｅｎ処理で加工する前の値）、ライト／リード領域アドレス、ライト／リードデータサイズ、ファンクション番号、データアドレス（Ｉ／Ｏ制御処理の場合））をライト／リード領域１０５ｃに設定し、処理要求先のＣＰＵコアに通知する。
【０１０４】
［ステップＳ６２］  Ｉ／Ｏアクセス処理要求を受け取ったＣＰＵコア１０１ｂのタスク管理部１４３は、現在何も処理を行っていない作業タスク（空き作業タスク）を検索する。その後、ステップＳ６３に遷移する。
【０１０５】
［ステップＳ６３］  タスク管理部１４３は、検索の結果見つかった空き作業タスクの処理部１５１にＩ／Ｏアクセス処理を実行させる。具体的には、処理部１５１は、ＣＰＵコア１０１ａから通知された情報で指定された関数（write,read,ioctl,close等）を実行する。そして、通知部１５２は、実行した関数の復帰値をＣＰＵコア１０１ａへ通知する。
【０１０６】
このように、ＣＰＵコア１０１ａからの作業依頼に対しては、割り込みの延長で処理を行うと他の作業依頼や現在動作中のＩ／Ｏ装置の割り込みが受け付けられなくなる可能性がある。このため、依頼処理は作業タスクに実行させることにより、各処理が並行して動作できるようにしている。その後、ステップＳ６４に遷移する。
【０１０７】
［ステップＳ６４］  ＣＰＵコア１０１ａは、受け付けた復帰値を関数処理要求元に返す。その後、図１６の処理を終了する。
ところで、ステップＳ５１の処理を実行した後からステップＳ５４の処理を実行する前の処理では、ＣＰＵ間の割り込み通知機能を使用し、マスタコア１０１ａとＣＰＵコア１０１ｂとの間のＩ／Ｏ処理依頼や処理完了通知を実施することで、マスタコア１０１ａにおけるメモリ空間の管理や、ＣＰＵコア１０１ｂへのＩ／Ｏ処理要求等を実現している。以下、一例としてマスタコア１０１ａからＣＰＵコア１０１ｂへのＩ／Ｏ処理依頼および完了通知処理を説明する。
【０１０８】
図１７は、マスタコアからサブコアへの処理依頼および完了通知処理を説明する図である。
判断部１２６は、関数処理部１２６ａと割り込み処理部１２６ｂとを有している。
【０１０９】
［ステップＳ７１］  関数処理部１２６ａは、ＣＰＵコア１０１ａ〜１０１ｄの初期化処理に失敗した状態か否かをチェックする。初期化処理に失敗した状態である場合、エラー情報を処理依頼元のタスクに返す。初期化処理に失敗した状態ではない場合、ステップＳ７２に遷移する。
【０１１０】
［ステップＳ７２］  関数処理部１２６ａは、処理関数の引数を参照し、処理依頼先のコア番号が異常か否かをチェックする。処理依頼先のコア番号が異常である場合、エラー情報を処理依頼元のタスクに返す。処理依頼先のコア番号が異常ではない場合、ステップＳ７３に遷移する。
【０１１１】
［ステップＳ７３］  関数処理部１２６ａは、処理依頼先のＣＰＵコア１０１ｂが使用禁止状態か否かをチェックする。ＣＰＵコア１０１ｂが使用禁止状態である場合、エラー情報を処理依頼元のタスクに返す。ＣＰＵコア１０１ｂが使用禁止状態ではない場合、ステップＳ７４に遷移する。
【０１１２】
［ステップＳ７４］  関数処理部１２６ａは、ＣＰＵコア１０１ｂに依頼する処理種別コードが異常か否かをチェックする。処理種別コードが異常である場合、エラー情報を処理依頼元のタスクに返す。処理種別コードが異常ではない場合、ステップＳ７５に遷移する。
【０１１３】
［ステップＳ７５］  関数処理部１２６ａは、排他処理用のセマフォ（Semaphore）を獲得する。その後、ステップＳ７６に遷移する。
［ステップＳ７６］  関数処理部１２６ａは、ＣＰＵコア１０１ｂに対するデータ処理を依頼する領域（作業依頼領域）の空きを検索し、空いている領域に処理依頼データを設定する。その後、ステップＳ７７に遷移する。
【０１１４】
［ステップＳ７７］  関数処理部１２６ａは、ＣＰＵコア１０１ｂが割り込み処理中かチェックする。割り込み処理中である場合、割り込み処理の終了を待機する。割り込み処理中でない場合、ステップＳ７８に遷移する。
【０１１５】
［ステップＳ７８］  関数処理部１２６ａは、ＣＰＵコア１０１ｂへ割り込みを通知する。その後、ステップＳ７９に遷移する。割り込みの通知により、ＣＰＵコア１０１ｂの割り込み処理が動き出す。
【０１１６】
［ステップＳ７９］  関数処理部１２６ａは、排他処理用のセマフォを解放する。その後、ステップＳ８０に遷移する。
［ステップＳ８０］  関数処理部１２６ａは、ＣＰＵコア１０１ｂの処理完了用のセマフォ（処理完了用セマフォ）の解放を待機する。後述するステップＳ９２の処理により一定時間内に処理完了用セマフォが解放されると、ステップＳ８１に遷移する。一定時間内に処理完了用セマフォが解放されなければ、処理依頼元のタスクにタイムアウトを通知する。その後、図１７の関数処理部１２６ａの処理を終了する。
【０１１７】
［ステップＳ８１］  マスタコア１０１ａは、処理依頼先のＣＰＵコア１０１ｂにおける関数の復帰値をチェックし、正常終了か異常終了の判断を行う。正常終了である場合（ステップＳ８１のＹｅｓ）ステップＳ８２に遷移する。正常終了ではない場合（ステップＳ８１のＮｏ）ステップＳ８４に遷移する。
【０１１８】
［ステップＳ８２］  関数処理部１２６ａは、処理完了用セマフォを解放する。その後、ステップＳ８３に遷移する。
［ステップＳ８３］  関数処理部１２６ａは、ＣＰＵコア１０１ｂにおける関数実行時の復帰値を処理依頼元のタスクに返す。その後、図１７の関数処理部１２６ａの処理を終了する。
【０１１９】
［ステップＳ８４］  関数処理部１２６ａは、処理完了用セマフォを解放する。その後、ステップＳ８５に遷移する。
［ステップＳ８５］  関数処理部１２６ａは、エラー情報を処理依頼元のタスクに返す。その後、図１７の関数処理部１２６ａの処理を終了する。
【０１２０】
次に、割り込み処理部１２６ｂの処理を説明する。
［ステップＳ９１］  割り込み処理部１２６ｂは、後述するステップＳ１１９の処理によりＣＰＵコア１０１ｂの作業タスク１５から割り込み通知を受け取ると、関数処理部１２６ａが処理完了用セマフォの解放待ち状態かチェックする。処理完了用セマフォの解放待ち状態であれば、ステップＳ９２に遷移する。
【０１２１】
［ステップＳ９２］  割り込み処理部１２６ｂは、処理完了用セマフォを解放する。その後、図１７の割り込み処理部１２６ｂの処理を終了する。
次に、ＣＰＵコア１０１ｂのタスク管理部１４３の処理を説明する。
【０１２２】
図１８は、サブコアの割り込み処理を説明するフローチャートである。
［ステップＳ１０１］  タスク管理部１４３は、割り込み処理開始コード（ステップＳ７７にてマスタコア１０１ａが割り込み処理中かチェックする際に、送信するコード）を設定し、空き作業タスクを検索する。空き作業タスクが見つかればステップＳ１０２に遷移する。
【０１２３】
［ステップＳ１０２］  タスク管理部１４３は、見つかった空き作業タスクへ実行させる関数を記載した作業依頼データを送信する。その後、ステップＳ１０３に遷移する。
［ステップＳ１０３］  タスク管理部１４３は、割り込み処理終了コードを設定する。割り込み処理終了コードを設定することにより、関数処理部１２６ａは、ＣＰＵコア１０１ｂが割り込み処理中であることを認識することができる。また、割り込み処理終了コードを設定することにより、作業タスク１５が処理を開始する。
【０１２４】
次に、作業タスク１５の処理を説明する。
［ステップＳ１１１］  処理部１５１は、作業依頼データを受信したか否かを判断する。作業依頼データを受信していない場合（ステップＳ１１１のＮｏ）、作業依頼データの受信を待機する。作業依頼データを受信すると（ステップＳ１１１のＹｅｓ）、ステップＳ１１２に遷移する。
【０１２５】
［ステップＳ１１２］  処理部１５１は、作業指示受付ステータスをセットする。その後、ステップＳ１１３に遷移する。
［ステップＳ１１３］  処理部１５１は、作業依頼データに記載された関数を実行する。関数を実行した結果エラーが発生すれば、所定の領域に設定されたエラー情報設定フラグを立てる。その後、ステップＳ１１４に遷移する。
【０１２６】
［ステップＳ１１４］  処理部１５１は、排他処理用のセマフォを獲得する。その後、ステップＳ１１５に遷移する。
［ステップＳ１１５］  処理部１５１は、エラー情報設定フラグを参照し、フラグが立っているか否かを判断する。フラグが立っていた場合（ステップＳ１１５のＹｅｓ）、ステップＳ１１６に遷移する。フラグが立っていなかった場合（ステップＳ１１５のＮｏ）、ステップＳ１１７に遷移する。
【０１２７】
［ステップＳ１１６］  処理部１５１は、エラー情報をマスタコア１０１ａに送信する情報に設定する。その後、ステップＳ１１７に遷移する。
［ステップＳ１１７］  処理部１５１は、マスタコア１０１ａが割り込み処理中か否かをチェックする。その後、ステップＳ１１８に遷移する。
【０１２８】
［ステップＳ１１８］  処理部１５１は、割り込みを禁止する。その後、ステップＳ１１９に遷移する。
［ステップＳ１１９］  処理部１５１は、マスタコア１０１ａへ割り込みを通知する。その後、ステップＳ１２０に遷移する。
【０１２９】
［ステップＳ１２０］  処理部１５１は、ステップＳ１１８にて設定した割り込みの禁止を解除する。その後、ステップＳ１２１に遷移する。
［ステップＳ１２１］  処理部１５１は、ステップＳ１１４にて獲得したセマフォを解放する。以上で、図１８の処理部１５１の処理を終了する。
【０１３０】
なお、図１７および図１８では、マスタコア１０１ａからＣＰＵコア１０１ｂへの処理依頼および完了通知処理を説明したが、ＣＰＵコア１０１ｂからマスタコア１０１ａへの処理依頼および完了通知処理も、図１７および図１８に示した方法と同様の方法を用いて実現することができる。
【０１３１】
Ｉ／Ｏアクセス試験では、装置情報テーブル１０５ｂを用いて試験対象のＩ／Ｏ装置に対応するＣＰＵコアを特定し、特定したＣＰＵコアにＩ／Ｏアクセス試験を実行させるようにした。従って、例えばシステム管理者がどのＣＰＵコアでどの装置が認識されているのかを判断しなくてもＩ／Ｏアクセス試験を行うことができる。
【０１３２】
以上、本発明のＩ／Ｏ制御装置およびＩ／Ｏ制御方法を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【０１３３】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、Ｉ／Ｏ制御装置１または制御モジュール１０ａ、１０ｂが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記憶装置には、ハードディスクドライブ、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷ等が挙げられる。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）等が挙げられる。
【０１３４】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１３５】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１３６】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）等の電子回路で実現することもできる。
【０１３７】
以上の第１〜第２の実施の形態に関し、さらに以下の付記を開示する。
（付記１）  Ｉ／Ｏ制御装置において、
マルチコアプロセッサと、
前記マルチコアプロセッサのうち、Ｉ／Ｏ装置の初期化を行った第１のコアプロセッサの識別情報を記憶する記憶手段と、
を備え、
前記第１のコアプロセッサと異なる第２のコアプロセッサが前記Ｉ／Ｏ装置についてのＩ／Ｏ要求を受けると、該第２のコアプロセッサは、前記記憶手段を参照して特定される、前記第１のコアプロセッサに対して、前記Ｉ／Ｏ要求の処理を依頼する、
ことを特徴とするＩ／Ｏ制御装置。
【０１３８】
（付記２）  前記第１のコアプロセッサは、前記Ｉ／Ｏ装置と該Ｉ／Ｏ装置の初期化を行うコアプロセッサとが関連づけられた設定情報を用いて初期化するＩ／Ｏ装置を特定し、特定した前記Ｉ／Ｏ装置の初期化を行うことを特徴とする付記１記載のＩ／Ｏ制御装置。
【０１３９】
（付記３）  前記Ｉ／Ｏ要求の処理が依頼された前記第１のコアプロセッサの処理の完了通知を受け取った前記第２のコアプロセッサは、処理を実行した前記第１のコアプロセッサを識別する処理識別情報を前記Ｉ／Ｏ要求の要求元に返し、
前記第２のコアプロセッサは、前記処理識別情報を付加した第２のＩ／Ｏ要求を前記Ｉ／Ｏの要求元から受けると、前記第２のＩ／Ｏ要求に付加された前記処理識別情報を用いて特定される前記第１のコアプロセッサに対して、前記第２のＩ／Ｏ要求の処理を依頼することを特徴とする付記１記載のＩ／Ｏ制御装置。
【０１４０】
（付記４）  前記第１のコアプロセッサは、複数の作業タスクを備え、前記第２のコアプロセッサは、前記第１のコアプロセッサに対し、プロセッサ間の割り込みにより前記Ｉ／Ｏ要求に対する処理を依頼し、前記第１のコアプロセッサは、前記Ｉ／Ｏ要求に対する処理の依頼を受け付けると、処理が行われていない作業タスクに前記Ｉ／Ｏ要求に対する処理を実行させることを特徴とする付記３記載のＩ／Ｏ制御装置。
【０１４１】
（付記５）  メモリ装置をさらに有し、
前記第２のコアプロセッサは、前記第２のコアプロセッサがＩ／Ｏ装置の初期化を行ったときに確保した前記メモリ装置の論理メモリ空間と物理メモリ空間との関係を前記第１のコアプロセッサに通知し、前記第１のコアプロセッサは、前記第２のコアプロセッサから前記Ｉ／Ｏ要求の処理を依頼されたときに、前記第２のコアプロセッサから通知された前記論理メモリ空間と物理メモリ空間との関係を用いて、前記メモリ装置に確保された論理メモリ空間を使用して前記Ｉ／Ｏ要求の処理を実行することを特徴とする請求項１記載のＩ／Ｏ制御装置。
【０１４２】
（付記６）  マルチコアプロセッサのうち、Ｉ／Ｏ装置の初期化を行った第１のコアプロセッサと異なる第２のコアプロセッサがＩ／Ｏ装置についてのＩ／Ｏ要求を受けると、該第２のコアプロセッサは、Ｉ／Ｏ装置の初期化を行った第１のコアプロセッサの識別情報を記憶する記憶手段を参照して前記第１のコアプロセッサを特定し、
特定した前記第１のコアプロセッサに対して、前記Ｉ／Ｏ要求の処理を依頼する、
ことを特徴とするＩ／Ｏ制御方法。
【符号の説明】
【０１４３】
１  Ｉ／Ｏ制御装置
１ａ、１ｂ、１ｃ、１０１ａ、１０１ｂ、１０１ｃ、１０１ｄ  ＣＰＵコア
１ａ１、１２５  作成部
１ａ２  依頼部
１ｄ、１０９ａ、１０９ｂ  ＳＡＳコントローラ
１ｅ、５、１０４、２０４  ＤＭＡコントローラ
２  設定情報
３  関連情報
３ａ  記憶手段
４  ディスク装置
６  マルチコアプロセッサ
１０  ＣＥ
１０ａ、１０ｂ  制御モジュール
１０１  ＣＰＵ
１０５  ＲＡＭ
１０５ａ  初期化装置情報テーブル
１０５ｂ  装置情報テーブル
１０６  フラッシュＲＯＭ
１０６ａ  ＢＩＯＳ
１０８ａ、１０８ｂ  チャネルアダプタ
１１  試験プログラム実行部
１１ａ  試験プログラム
１２  システムモニタ
１２１  設定部
１２２、１４１  提供部
１２３、１４２  通信制御部
１２４  メモリ管理部
１２６  判断部
１３、１６、１７、１８  Ｉ／Ｏドライバ
１３１、１６１  初期化部
１３２、１６２  アクセス制御部
１４３  タスク管理部
１５  作業タスク
１５１  処理部
１５２  通知部
１０００  ストレージシステム
【図１】
2013054434.tif 000003
【図２】
2013054434.tif 000004
【図３】
2013054434.tif 000005
【図４】
2013054434.tif 000006
【図５】
2013054434.tif 000007
【図６】
2013054434.tif 000008
【図７】
2013054434.tif 000009
【図８】
2013054434.tif 000010
【図９】
2013054434.tif 000011
【図１０】
2013054434.tif 000012
【図１１】
2013054434.tif 000013
【図１２】
2013054434.tif 000014
【図１３】
2013054434.tif 000015
【図１４】
2013054434.tif 000016
【図１５】
2013054434.tif 000017
【図１６】
2013054434.tif 000018
【図１７】
2013054434.tif 000019
【図１８】
2013054434.tif 000020