(57)【要約】【課題】メモリを共有する複数の情報処理手段が、並列に診断プログラムを実行するシステムにおいて、各情報処理手段に対して、アクセス可能なメモリ領域を柔軟に割り当てることを可能とする。【解決手段】本願発明の診断プログラム実行装置４０は、アクセスするメモリ６０を共有する複数の情報処理部５１乃至５４が個々に備える、メモリ６０へのアクセスの際に使用するアドレス変換テーブル５１０乃至５４０に対して、情報処理部５１乃至５４の間で重複しない第一のページベースアドレスの値を設定する設定部４１と、外部からの指示を受けて、メモリ６０における第一のページベースアドレスが示す第一のメモリ領域に格納された診断プログラムを読み出して実行する複数の情報処理部５１乃至５４に対して、並列に診断プログラムを実行することを指示する指示部４２と、を備える。【選択図】      図７
2016057797.tif 000002
【特許請求の範囲】
【請求項１】
アクセスするメモリを共有する複数の情報処理手段が個々に備える、前記メモリへのアクセスの際に使用するアドレス変換テーブルに対して、前記複数の情報処理手段の間で重複しない第一のページベースアドレスの値を設定する設定手段と、
外部からの指示を受けて、前記メモリにおける前記第一のページベースアドレスが示す第一のメモリ領域に格納された診断プログラムを読み出して実行する前記複数の情報処理手段に対して、並列に前記診断プログラムを実行することを指示する指示手段と、
を備える、診断プログラム実行装置。
【請求項２】
前記設定手段は、前記情報処理手段同士が前記診断プログラムを実行中に通信する場合に共通してアクセス可能な第二のメモリ領域を示す、前記複数の情報処理手段の間で重複する第二のページベースアドレスの値を、前記アドレス変換テーブルに対して設定する、
請求項１に記載の診断プログラム実行装置。
【請求項３】
前記設定手段は、特定の前記情報処理手段が備える前記アドレス変換テーブルに対して、連続する前記第一のページベースアドレスの値を設定する、
請求項１または２に記載の診断プログラム実行装置。
【請求項４】
前記設定手段は、特定の前記情報処理手段が備える前記アドレス変換テーブルに対して、不連続である前記第一のページベースアドレスの値を設定する、
請求項１または２に記載の診断プログラム実行装置。
【請求項５】
前記設定手段は、前記複数の情報処理手段に関してラウンドロビンとなるように、前記アドレス変換テーブルに対して、前記第一のページベースアドレスの値を設定する、
請求項４に記載の診断プログラム実行装置。
【請求項６】
請求項１乃至５のいずれかに記載の診断プログラム実行装置と、
前記複数の情報処理手段と、
前記メモリと、
を備える診断プログラム実行システム。
【請求項７】
情報処理装置によって、
アクセスするメモリを共有する複数の情報処理手段が個々に備える、前記メモリへのアクセスの際に使用するアドレス変換テーブルに対して、前記複数の情報処理手段の間で重複しない第一のページベースアドレスの値を設定し、
外部からの指示を受けて、前記メモリにおける前記第一のページベースアドレスが示す第一のメモリ領域に格納された診断プログラムを読み出して実行する前記複数の情報処理手段に対して、並列に前記診断プログラムを実行することを指示する、
診断プログラム実行方法。
【請求項８】
前記情報処理手段同士が前記診断プログラムを実行中に通信する場合に共通してアクセス可能な第二のメモリ領域を示す、前記複数の情報処理手段の間で重複する第二のページベースアドレスの値を、前記アドレス変換テーブルに対して設定する、
請求項７に記載の診断プログラム実行方法。
【請求項９】
アクセスするメモリを共有する複数の情報処理手段が個々に備える、前記メモリへのアクセスの際に使用するアドレス変換テーブルに対して、前記複数の情報処理手段の間で重複しない第一のページベースアドレスの値を設定する設定処理と、
外部からの指示を受けて、前記メモリにおける前記第一のページベースアドレスが示す第一のメモリ領域に格納された診断プログラムを読み出して実行する前記複数の情報処理手段に対して、並列に前記診断プログラムを実行することを指示する指示処理と、
をコンピュータに実行させる、診断プログラム実行プログラム。
【請求項１０】
前記情報処理手段同士が前記診断プログラムを実行中に通信する場合に共通してアクセス可能な第二のメモリ領域を示す、前記複数の情報処理手段の間で重複する第二のページベースアドレスの値を、前記アドレス変換テーブルに対して設定する前記設定処理
をコンピュータに実行させる、請求項９に記載の診断プログラム実行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、複数のプロセッサあるいはコア等の情報処理部がメモリを共有するシステムにおいて、係る複数の情報処理部に診断プログラムを並列に実行させる診断プログラム実行装置等に関する。
【背景技術】
【０００２】
近年、プロセッサは、複数のコア（情報処理部）を備えることにより、性能を大幅に向上してきている。このようなマルチコアであるアーキテクチャを採用したプロセッサでは、複数のコアに関する信頼性を効率的に確保する必要がある。通常、プロセッサを診断する診断プログラムは、一般的なアプリケーションとは異なり、コア内部におけるレジスタ番号、メモリアドレス、及び、データパタン等を意識して命令列を組み立てているため、通常はアセンブラ言語等により記述されることが多い。
【０００３】
複数のコアに関する信頼性を効率的に確保する方法として、複数のコアに診断プログラムを並列に実行させることが考えられる。この際、もし複数のコアが実行する診断プログラムが同一のプログラムである場合、各コアがそれぞれのタイミングで、係る診断プログラムが指定する同じメモリアドレスに格納されたデータを更新するので、実行結果が不正になる問題がある。したがって、複数のコアに診断プログラムを並列に実行させるためには、複数のコアがアクセスするメモリアドレスが重複しないように、コアごとに個別の診断プログラムを準備する必要がある。しかしながら、難解なアセンブラ言語等により記述される診断プログラムを、コアごとに個別に準備することは、診断プログラムを開発して管理する工数が大幅に増加することから、現実的であるとは言えない。したがって、複数のコアが同一の診断プログラムを並列に実行した場合であっても、実行結果を保証することができる技術に対する期待が高まってきている。
【０００４】
このような技術の一例として、特許文献１には、複数のコアが共有するメモリを複数の区画（領域）に分割し、これら複数のコアの各々に対して、コア毎に異なる区画を割り当てることが可能な装置が開示されている。この装置は、コア同士でメモリアクセスが競合しないことを前提に実装された診断プログラムを各々の区画にロードした後、複数のコアに当該診断プログラムを並列に実行させる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2014-109938号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１が開示した技術を備える診断プログラム実行装置が、複数のコアの各々に対して、コア毎に異なるメモリ領域を割り当てる場合、その割り当て方に柔軟性を持たせることにより、柔軟な診断処理を行うことができる。例えば、メモリ内に障害が発生した場合、係る診断プログラム実行装置は、障害が発生したアドレスを回避したメモリ領域を割り当てることにより、診断プログラムの実行を継続することができる。
【０００７】
また、複数のコアが診断プログラムを並列に実行しているときに、診断する内容によっては、コア同士が通信を行う場合がある。この場合、メモリの一部を、コア同士が共有するメモリ領域として確保する必要があるので、各コアが個別に専有するメモリ領域と、それらのコア同士が共有するメモリ領域とが混在することになる。したがって、各コアに対して、アクセス可能なメモリ領域を、より柔軟に割り当てる技術が必要となる。
【０００８】
特許文献１に記載された装置では、各コアにアクセス可能なメモリ領域を割り当てる際に、ベースアドレスレジスタを使用する。しかしながら、このベースアドレスレジスタを使用する方式では、上述のように、柔軟にメモリ領域を割り当てることは困難である。
【０００９】
本願発明の主たる目的は、この問題を解決した、診断プログラム実行装置等を提供することである。
【課題を解決するための手段】
【００１０】
本願発明の一態様に係る診断プログラム実行装置は、アクセスするメモリを共有する複数の情報処理手段が個々に備える、前記メモリへのアクセスの際に使用するアドレス変換テーブルに対して、前記複数の情報処理手段の間で重複しない第一のページベースアドレスの値を設定する設定手段と、外部からの指示を受けて、前記メモリにおける前記第一のページベースアドレスが示す第一のメモリ領域に格納された診断プログラムを読み出して実行する前記複数の情報処理手段に対して、並列に前記診断プログラムを実行することを指示する指示手段と、を備える。
【００１１】
上記目的を達成する他の見地において、本願発明の一態様に係る診断プログラム実行方法は、情報処理装置によって、アクセスするメモリを共有する複数の情報処理手段が個々に備える、前記メモリへのアクセスの際に使用するアドレス変換テーブルに対して、前記複数の情報処理手段の間で重複しない第一のページベースアドレスの値を設定し、外部からの指示を受けて、前記メモリにおける前記第一のページベースアドレスが示す第一のメモリ領域に格納された診断プログラムを読み出して実行する前記複数の情報処理手段に対して、並列に前記診断プログラムを実行することを指示する。
【００１２】
また、上記目的を達成する更なる見地において、本願発明の一態様に係る診断プログラム実行プログラムは、アクセスするメモリを共有する複数の情報処理手段が個々に備える、前記メモリへのアクセスの際に使用するアドレス変換テーブルに対して、前記複数の情報処理手段の間で重複しない第一のページベースアドレスの値を設定する設定処理と、外部からの指示を受けて、前記メモリにおける前記第一のページベースアドレスが示す第一のメモリ領域に格納された診断プログラムを読み出して実行する前記複数の情報処理手段に対して、並列に前記診断プログラムを実行することを指示する指示処理と、をコンピュータに実行させる。
【００１３】
更に、本発明は、係る診断プログラム実行プログラム（コンピュータプログラム）が格納された、コンピュータ読み取り可能な、不揮発性の記憶媒体によっても実現可能である。
【発明の効果】
【００１４】
本願発明は、メモリを共有する複数の情報処理手段が、並列に診断プログラムを実行するシステムにおいて、各情報処理手段に対して、アクセス可能なメモリ領域を柔軟に割り当てることを可能とする。
【図面の簡単な説明】
【００１５】
【図１】本願発明の第１の実施形態に係る診断プログラム実行システムの構成を示すブロック図である。
【図２】本願発明の第１の実施形態に係るアドレス変換テーブルへのページベースアドレスに関する設定例（ケース１）である。
【図３】本願発明の第１の実施形態に係るコアのメモリ使用状況を示すメモリマップの例（ケース１）である。
【図４】本願発明の第１の実施形態に係るアドレス変換テーブルへのページベースアドレスに関する設定例（ケース２）である。
【図５】本願発明の第１の実施形態に係るコアのメモリ使用状況を示すメモリマップの例（ケース２）である。
【図６】本願発明の第１の実施形態に係る診断プログラム実行システムの動作を示すフローチャートである。
【図７】本願発明の第２の実施形態に係る診断プログラム実行装置の構成を示すブロック図である。
【図８】本願発明の各実施形態に係る診断プログラム実行装置を実行可能な情報処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
【００１７】
＜第１の実施形態＞
図１は、第１の実施形態に係る診断プログラム実行システム１の構成を概念的に示すブロック図である。本実施形態に係る診断プログラム実行システム１は、診断プログラム実行装置１０、情報処理エンジン２０、及び、記憶装置３０を備えている。
【００１８】
情報処理エンジン２０は、例えば、サーバ装置等の情報処理装置等におけるＩ（Ｉｎｐｕｔ）／Ｏ（Ｏｕｔｐｕｔ）ポートに実装可能なＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のようなカード型の演算装置である。情報処理エンジン２０は、あるいは、情報処理装置に実装可能なＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であってもよいし、情報処理装置自体であってもよい。
【００１９】
情報処理エンジン２０は、８個のコア２１乃至２８、及び、メモリ２９を備えている。コア２１乃至２８は、情報処理エンジン２０がＧＰＵあるいはＣＰＵである場合、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）内部に構築された演算コア回路である。コア２１乃至２８は、情報処理エンジン２０が情報処理装置である場合、ＣＰＵに相当する。情報処理エンジン２０が備えるコアの数は８個でなくてもよい。
【００２０】
メモリ２９は、コア２１乃至２８が共有してアクセス可能なメモリであり、コア２１乃至２８がアクセスするデータを格納する。
【００２１】
記憶装置３０は、磁気ディスク装置あるいは電子ディスク装置等の記憶装置であり、診断プログラム３１を格納している。診断プログラム３１は、診断プログラム実行装置１０が情報処理エンジン２０を診断する際に、コア２１乃至２８が実行するプログラムである。
【００２２】
診断プログラム実行装置１０は、情報処理エンジン２０に関する診断処理を制御する装置である。診断プログラム実行装置１０は、設定部１１、及び、指示部１２を備えている。設定部１１、及び、指示部１２は、電子回路の場合もあれば、コンピュータプログラムとそのコンピュータプログラムに従って動作するプロセッサによって実現される場合もある。
【００２３】
（アドレス変換テーブルの設定）
設定部１１は、診断プログラム実行システム１を管理する管理者が情報処理エンジン２０を診断することを指示したときに、コア２１乃至２８が備えるアドレス変換テーブル２１０乃至２８０に、所定の基準に基づき値を設定する。アドレス変換テーブル２１０乃至２８０は、コア２１乃至２８がメモリ２９へアクセスする際に使用する、アクセス先である論理ページベースアドレスを物理ページベースアドレスに変換するテーブルである。論理ページベースアドレスは、診断プログラムがメモリ２９におけるアクセス先として指定する、論理ページに関するベースアドレスである。物理ページベースアドレスは、メモリ２９に実際にアクセスする物理ページに関するベースアドレスである。
【００２４】
次に、上記のように、係る所定の基準に従って設定部１１が行うアドレス変換テーブルの設定例と、設定されたアドレス変換テーブルを参照することによってコアが行うメモリ２９へのアクセスについて、２つの例（ケース１、ケース２）を以下に説明する。
【００２５】
（設定ケース１）
設定部１１による、アドレス変換テーブル２１０乃至２８０に対する物理ページベースアドレスの値に関する設定例（ケース１）を図２に示す。アドレス変換テーブル２１０乃至２８０に対して物理ページベースアドレスの値が図２のように設定された場合における、メモリ２９に関する使用状況を示すメモリマップ２９０を図３に示す。
図３に示す通り、メモリ２９は「０ｘ００００００００」（「０ｘ」は１６進数表記であることを示す）から「０ｘＦＦＦＦＦＦＦＦ」までの物理アドレス空間を有している。すなわち、メモリ２９は、例えば容量が４ＧＢ（ギガバイト）のメモリである。
【００２６】
図２に示す通り、設定部１１は、コア２１が備えるアドレス変換テーブル２１０における、１番目のエントリから２５６番目のエントリに、物理ページベースアドレスとして、「０ｘ０００」乃至「０ｘ０ＦＦ」を設定する。設定部１１は、アドレス変換テーブル２１０における、２５７番目のエントリから５１２番目のエントリに、物理ページベースアドレスとして、「０ｘＦ００」乃至「０ｘＦＦＦ」を設定する。この場合、コア２１は、例えば論理アドレス「０ｘ０００１２３４５」を物理アドレス「０ｘ０００１２３４５」に変換し（この場合は同じ値に変換）、論理アドレス「０ｘ１００１２３４５」を物理アドレス「０ｘＦ００１２３４５」に変換したのち、メモリ２９へアクセスする。
【００２７】
設定部１１は、同様に、コア２２が備えるアドレス変換テーブル２２０における、１番目のエントリから２５６番目のエントリに、物理ページベースアドレスとして、「０ｘ２００」乃至「０ｘ２ＦＦ」を設定する。設定部１１は、アドレス変換テーブル２２０における、２５７番目のエントリから５１２番目のエントリに、物理ページベースアドレスとして、「０ｘＦ００」乃至「０ｘＦＦＦ」を設定する。
【００２８】
設定部１１は、コア２３乃至２８が備えるアドレス変換テーブル２３０乃至２８０についても、同様に物理ページベースアドレスの値を設定する。具体的には、設定部１１は、アドレス変換テーブル２３０乃至２８０における１番目のエントリから２５６番目のエントリに、順に、「０ｘ４００」乃至「０ｘ４ＦＦ」、「０ｘ６００」乃至「０ｘ６ＦＦ」、「０ｘ８００」乃至「０ｘ８ＦＦ」、「０ｘＡ００」乃至「０ｘＡＦＦ」、「０ｘＣ００」乃至「０ｘＣＦＦ」、「０ｘＥ００」乃至「０ｘＥＦＦ」を設定する。すなわち、設定部１１は、アドレス変換テーブル２１０乃至２８０における１番目のエントリから２５６番目のエントリについては、コア２１乃至２８間に関して、値が重複しない物理ページベースアドレスの値を設定する。これにより、図２（ａ）〜（ｃ）に例示するように、各コアに関するアドレス変換テーブルには、コア専有領域に関する物理ページベースアドレスの値が設定される。
【００２９】
設定部１１は、アドレス変換テーブル２３０乃至２８０における２５７番目のエントリから５１２番目のエントリには、アドレス変換テーブル２１０及び２２０のときと同じ値である、「０ｘＦ００」乃至「０ｘＦＦＦ」を設定する。すなわち、設定部１１は、アドレス変換テーブル２１０乃至２８０における２５７番目のエントリから５１２番目のエントリについては、コア２１乃至２８間に関して、値が重複する物理ページベースアドレスの値を設定する。これにより、図２（ａ）〜（ｃ）に例示するように、各コアに関するアドレス変換テーブルには、コア間共有領域に関する物理ページベースアドレスの値が設定される。
【００３０】
設定部１１が、アドレス変換テーブル２１０乃至２８０に対して、物理ページベースアドレスの値を図２に示すように設定した場合、コア２１乃至２８は、図３が示す、メモリ２９における領域にアクセス可能である。例えば、コア２１は、物理アドレスが「０ｘ００００００００」乃至「０ｘ０ＦＦＦＦＦＦＦ」である、メモリ２９における領域に専有的にアクセスする。コア２２乃至２８も同様に、図３に示す、メモリ２９におけるそれぞれの専有領域にアクセスする。コア２１乃至２８は、また、物理アドレスが「０ｘＦ０００００００」乃至「０ｘＦＦＦＦＦＦＦＦ」である、メモリ２９における領域については、コア間共有領域としてアクセスする。
【００３１】
（設定ケース２）
設定部１１による、アドレス変換テーブル２１０乃至２８０に対する物理ページベースアドレスの値に関する設定例（ケース２）を図４に示す。
【００３２】
図４に示す通り、設定部１１は、コア２１乃至２８におけるアドレス変換テーブル２１０乃至２８０における１番目のエントリに、物理ページベースアドレスとして、「０ｘ０００」乃至「０ｘ００７」を設定する。設定部１１は、同様に、アドレス変換テーブル２１０乃至２８０における２番目のエントリに、物理ページベースアドレスとして、「０ｘ００８」乃至「０ｘ００Ｆ」を設定する。設定部１１は、アドレス変換テーブル２１０乃至２８０における３番目以降のエントリについても、同様に物理ページベースアドレスの値を設定する。すなわち、図４に示す例の場合、設定部１１は、アドレス変換テーブル２１０乃至２８０に対して、１番目のエントリから順番に物理ページベースアドレスの値をラウンドロビン形式で設定する。
【００３３】
そして、設定部１１は、アドレス変換テーブル２１０乃至２８０における２５７番目のエントリから５１２番目のエントリについては、図２に示す例のときと同様に、コア２１乃至２８間に関して、値が重複する物理ページベースアドレスの値を設定する。
【００３４】
次にケース２における、メモリ２９に関する使用状況を説明する。アドレス変換テーブル２１０乃至２８０に対して物理ページベースアドレスの値が図４のように設定された場合における、メモリ２９に関する使用状況を示すメモリマップ２９０を図５に示す。この場合、図５に示す通り、コア２１乃至２８がアクセス可能なメモリ２９におけるそれぞれの専有領域は、物理アドレス空間上、非連続な領域であり、メモリ２９におけるページ（１ＭＢ（メガバイト））単位に区切られた領域を包含している。
【００３５】
（診断プログラムの格納及び実行）
設定部１１は、アドレス変換テーブル２１０乃至２８０に対して、物理ページベースアドレスの値を設定したのち、記憶装置３０から診断プログラム３１を読み出す。設定部１１は、読み出した診断プログラム３１を、メモリ２９における、コア２１乃至２８に関する各々の専有領域に格納する。
【００３６】
指示部１２は、設定部１１によって、コア２１乃至２８に関する各々の専有領域に診断プログラム３１が格納されたのち、コア２１乃至２８に対して、診断プログラム３１を並列に実行することを指示する。
【００３７】
コア２１乃至２８は、指示部１２から受信した指示に従い、各々の専有領域に格納された診断プログラム３１を一斉に実行する。
【００３８】
ここで、コア２１乃至２８が診断プログラム３１を実行中に、メモリ２９における論理アドレス「０ｘ０００３００１８」にアクセスする場合を、ケース１を例に考える。この場合、アドレス変換テーブル２１０乃至２８０は、図２に示す通り、物理ページベースアドレスが設定されている。コア２１は、アドレス変換テーブル２１０によって、論理アドレス「０ｘ０００３００１８」を物理アドレス「０ｘ０００３００１８」に変換し（この場合は同じ値に変換）、メモリ２９における物理アドレス「０ｘ０００３００１８」にアクセスする。コア２２は、アドレス変換テーブル２２０によって、論理アドレス「０ｘ０００３００１８」を物理アドレス「０ｘ２００３００１８」に変換し、メモリ２９における物理アドレス「０ｘ２００３００１８」にアクセスする。コア２３乃至２８も同様に、アドレス変換テーブル２３０乃至２８０によって、論理アドレス「０ｘ０００３００１８」を互いに異なる物理アドレスに変換し、メモリ２９における当該物理アドレスにアクセスする。これにより、コア２１乃至２８は、互いに物理アドレスが異なる、メモリ２９における専有領域にアクセスする。
【００３９】
コア２１乃至２８は、診断プログラム３１を実行中に、互いに通信を行う場合がある。診断プログラム３１は、コア２１乃至２８が互いに通信を行う際に送受信するデータが、メモリ２９における、論理アドレスが「０ｘ１０００００００」から「０ｘ１ＦＦＦＦＦＦＦ」であるコア間共有領域に格納されるように作成されている。図２に示す通り、アドレス変換テーブル２１０乃至２８０は、係るコア間共有領域に関して、特定の論理アドレスを同一の物理アドレスに変換する、これにより、コア２１乃至２８は、メモリ２９における特定の論理アドレスに格納された送受信するデータを共有する。
【００４０】
以上、ケース１を例に説明したが、ケース２においても同様に、コア２１乃至２８は、メモリ２９における専有領域及びコア間共有領域にアクセスする。  次に図６のフローチャートを参照して、本実施形態に係る診断プログラム実行システム１の動作（処理）について詳細に説明する。
【００４１】
設定部１１は、アドレス変換テーブル２１０乃至２８０に、コア２１乃至２８間に関して重複しないページベースアドレスの値を、各コアが専有するメモリ領域である専有領域として設定する（ステップＳ１０１）。設定部１１は、アドレス変換テーブル２１０乃至２８０に、コア２１乃至２８間に関して重複するページベースアドレスの値を、各コアが共有するメモリ領域である共有領域として設定する（ステップＳ１０２）。
【００４２】
設定部１１は、メモリ２９におけるコア２１乃至２８が各々専有する専有領域に、診断プログラム３１を格納する（ステップＳ１０３）。指示部１２は、コア２１乃至２８に対し、並列に、診断プログラム３１を実行するように指示する（ステップＳ１０４）。コア２１乃至２８は、診断プログラム３１を一斉に実行する（ステップＳ１０５）。
【００４３】
診断プログラム３１に関してコア２１乃至２８が実行する処理が、コア間通信に関する処理でない場合（ステップＳ１０６でＮｏ）、コア２１乃至２８は、メモリ２９における各々の専有領域にアクセスする（ステップＳ１０７）。診断プログラム３１に関してコア２１乃至２８が実行する処理が、コア間通信に関する処理である場合（ステップＳ１０６でＹｅｓ）、コア２１乃至２８は、メモリ２９における共有領域にアクセスする（ステップＳ１０８）。
【００４４】
コア２１乃至２８が、診断プログラム３１の実行を完了していない場合（ステップＳ１０９でＮｏ）、処理はステップＳ１０６に戻る。コア２１乃至２８が、診断プログラム３１の実行を完了した場合（ステップＳ１０９でＹｅｓ）、診断プログラム実行装置１０は、情報処理エンジン２０から、診断プログラム３１に関する実行結果を収集したのち、その実行結果を期待値と比較することによって、情報処理エンジン２０を診断し（ステップＳ１１０）、全体の処理は終了する。
【００４５】
本実施形態に係る診断プログラム実行システム１は、メモリを共有する複数の情報処理手段が、並列に診断プログラムを実行するシステムにおいて、各情報処理手段に対して、アクセス可能なメモリ領域を柔軟に割り当てることができる。その理由は、設定部１１が、各情報処理手段が備えるアドレス変換テーブルに対して、情報処理手段同士に関して値が重複しないページベースアドレスの値を設定したのち、指示部１２が、各情報処理手段に対して、並列に診断プログラムを実行することを指示するからである。
【００４６】
マルチコアであるアーキテクチャを採用したプロセッサ等を効率的に診断する方法として、複数のコアが診断プログラムを並列に実行する方法がある。しかしながら、複数のコアがアクセスするメモリを共有するシステムにおいては、診断プログラムを並列に実行する複数のコアが、メモリにおける同じアドレスに格納されたデータを互いに上書きすることによって、実行結果が不正になる虞がある。この問題を回避するため、複数のコアに対して、異なるメモリ領域を個々に割り当てて、各コアが割り当てられたメモリ領域において、診断プログラムを実行するようにした方法がある。この方法によれば、メモリ領域を共有することによる不正を回避することができるものの、例えば、あるコアが使用するメモリ領域に不具合が生じた場合等が問題となる。この場合、当該メモリにおいて障害が発生したアドレスを回避した領域を新たに割り当てるなど、メモリ領域をより柔軟に割り当てる技術が期待されている。
【００４７】
これに対して、本実施形態に係る診断プログラム実行システム１は、コア２１乃至２８が備えているアドレス変換テーブル２１０乃至２８０を有効活用することにより、各コアに対するメモリ領域に関する柔軟な割り当てを行う。すなわち、本実施形態に係る診断プログラム実行システム１では、設定部１１が、各コアが備えるアドレス変換テーブルに対して、コア同士に関して値が重複しない物理ページベースアドレスの値を設定する。コアは、診断プログラムを実行する際に、診断プログラムが指定する論理アドレスを、アドレス変換テーブルを参照することによって物理アドレスに変換したのち、メモリ内の当該物理アドレスにアクセスする。したがって、複数のコアが診断プログラムを並列に実行した際に、各コアがアクセスするメモリ２９における領域はコア毎に異なるので、診断プログラムに関する実行結果は保証される。そして、アドレス変換テーブルは、一般的に多数のエントリを備え、設定部１１は、これらの多数のエントリに、物理ページベースアドレスの値を様々に設定することが可能である。これにより、本実施形態に係る診断プログラム実行システム１は、各コアに対して、メモリ領域を柔軟に割り当てることができる。
【００４８】
設定部１１は、各コアに関するメモリ２９における専有領域を、例えば図２に示すように、コア毎に連続した領域となるように設定することができる。設定部１１は、あるいは、係る専有領域を、例えば図４に示すように、コア毎に不連続な領域となるように設定することもできる。診断プログラムがアクセスするデータに関する仕様、あるいは、メモリバンク等のメモリ構成に関する仕様などによって、係る専有領域が、連続した領域である方がよい場合もあれば、所定の間隔を有する不連続な領域である方がよい場合もある。したがって、設定部１１は、診断プログラムを実行する実行環境に応じて、各コアに対してメモリ領域を柔軟に割り当てることができる。
【００４９】
また、コア２１乃至２８が診断プログラムを並列して実行する際に、コア同士が通信を行う場合がある。この場合、通信を行うコア同士は、メモリ２９における同じ物理アドレスに格納されたデータにアクセスする必要がある。本実施形態に係る診断プログラム実行システム１は、メモリ２９における一部の領域が、コア２１乃至２８が共有してアクセス可能なコア間共有領域になるように、アドレス変換テーブル２１０乃至２８０に、物理ページベースアドレスの値を柔軟に設定可能である。これにより、本実施形態に係る診断プログラム実行システム１は、コア２１乃至２８が診断プログラムを並列して実行する際に、コア同士が通信を行うことを実現できる。
【００５０】
＜第２の実施形態＞
図７は、第２の実施形態に係る診断プログラム実行装置４０の構成を概念的に示すブロック図である。
【００５１】
本実施形態に係る診断プログラム実行装置４０は、設定部４１、及び、指示部４２を備えている。
【００５２】
設定部４１は、アクセスするメモリ６０を共有する複数（例えば４つ）の情報処理部５１乃至５４が個々に備える、メモリ６０へのアクセスの際に使用するアドレス変換テーブル５１０乃至５４０に対して、情報処理部５１乃至５４の間で重複しないページベースアドレスの値を設定する。
【００５３】
指示部４２は、外部からの指示を受けて、メモリ６０における係るページベースアドレスが示すメモリ領域に格納された診断プログラムを読み出して実行する情報処理部５１乃至５４に対して、並列に当該診断プログラムを実行することを指示する。
【００５４】
本実施形態に係る診断プログラム実行装置４０は、メモリを共有する複数の情報処理手段が、並列に診断プログラムを実行するシステムにおいて、各情報処理手段に対して、アクセス可能なメモリ領域を柔軟に割り当てることができる。その理由は、設定部４１が、各情報処理手段が備えるアドレス変換テーブルに対して、情報処理手段同士に関して値が重複しないページベースアドレスの値を設定したのち、指示部４２が、各情報処理手段に対して、並列に診断プログラムを実行することを指示するからである。
【００５５】
＜ハードウェア構成例＞
上述した各実施形態において図１、及び、図７に示した各部は、専用のＨＷ（ＨａｗｄＷａｒｅ）（電子回路）によって実現することができる。また、少なくとも、設定部１１及び４１、及び、指示部１２及び４２は、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図８を参照して説明する。
【００５６】
図８は、本発明の模範的な実施形態に係る診断プログラム実行装置を実行可能な情報処理装置９００（コンピュータ）の構成を例示的に説明する図である。即ち、図８は、図１、及び、図７に示した診断プログラム実行装置を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【００５７】
図８に示した情報処理装置９００は、構成要素として下記を備えている。
・ＣＰＵ９０１、
・ＲＯＭ（Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）９０２、
・ＲＡＭ（Ｒａｎｄｏｍ＿Ａｃｃｅｓｓ＿Ｍｅｍｏｒｙ）９０３、
・ハードディスク９０４（記憶装置）、
・外部装置との通信インタフェース９０５（Ｉｎｔｅｒｆａｃｅ：以降、「Ｉ／Ｆ」と称する）、
・ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ＿Ｄｉｓｃ＿Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）等の記憶媒体９０７に格納されたデータを読み書き可能なリーダライタ９０８、
・入出力インタフェース９０９、
情報処理装置９００は、これらの構成がバス９０６（通信線）を介して接続された一般的なコンピュータである。
【００５８】
そして、上述した実施形態を例に説明した本発明は、図８に示した情報処理装置９００に対して、次の機能を実現可能なコンピュータプログラムを供給する。その機能とは、その実施形態の説明において参照したブロック構成図（図１、及び、図７）における、設定部１１及び４１、及び、指示部１２及び４２、或いはフローチャート（図６）の機能である。本発明は、その後、そのコンピュータプログラムを、当該ハードウェアのＣＰＵ９０１に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性の記憶メモリ（ＲＡＭ９０３）またはハードディスク９０４等の不揮発性の記憶デバイスに格納すれば良い。
【００５９】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、現在では一般的な手順を採用することができる。その手順としては、例えば、ＣＤ−ＲＯＭ等の各種記憶媒体９０７を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等がある。そして、このような場合において、本発明は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記憶媒体９０７によって構成されると捉えることができる。
【００６０】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【符号の説明】
【００６１】
１    診断プログラム実行システム
１０    診断プログラム実行装置
１１    設定部
１２    指示部
２０    情報処理エンジン
２１乃至２８    コア
２１０乃至２８０    アドレス変換テーブル
２９    メモリ
２９０    メモリマップ
３０    記憶装置
３１    診断プログラム
４０    診断プログラム実行装置
４１    設定部
４２    指示部
５１乃至５４    情報処理部
５１０乃至５４０    アドレス変換テーブル
６０    メモリ
９００    情報処理装置
９０１    ＣＰＵ
９０２    ＲＯＭ
９０３    ＲＡＭ
９０４    ハードディスク
９０５    通信インタフェース
９０６    バス
９０７    記憶媒体
９０８    リーダライタ
９０９    入出力インタフェース
【図１】
2016057797.tif 000003
【図２】
2016057797.tif 000004
【図３】
2016057797.tif 000005
【図４】
2016057797.tif 000006
【図５】
2016057797.tif 000007
【図６】
2016057797.tif 000008
【図７】
2016057797.tif 000009
【図８】
2016057797.tif 000010