(57)【要約】【課題】  コアの診断のための、並列動作を想定せずに実装された試験プログラムによる、複数のコアの診断の時間を削減するプログラム起動装置を提供する。【解決手段】  本発明のプログラム起動装置は、プロセッサの複数のコアが共有するメモリを複数の区画に分割し、前記複数のコアの各々に対して、前記複数のコア毎に異なる前記区画を割り当てる区画割り当て手段と、前記区画にロードされて前記コアによって実行され、ロードされた前記区画のメモリをアクセスするプログラムであって、他の前記コアとのメモリアクセス競合がないことを前提に実装されたプログラムを記憶するプログラム記憶手段と、前記区画の各々に前記プログラムをロードし、前記複数のコアに前記プログラムを起動する指示を送信し、前記複数のコアに前記プログラムを並列に実行させるプログラム起動手段と、を含む。【選択図】      図７
2014109938.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサの複数のコアが共有するメモリを複数の区画に分割し、前記複数のコアの各々に対して、前記複数のコア毎に異なる前記区画を割り当てる区画割り当て手段と、
前記区画にロードされて前記コアによって実行され、ロードされた前記区画のメモリをアクセスするプログラムであって、他の前記コアとのメモリアクセス競合がないことを前提に実装されたプログラムを記憶するプログラム記憶手段と、
前記区画の各々に前記プログラムをロードし、前記複数のコアに前記プログラムを起動する指示を送信し、前記複数のコアに前記プログラムを並列に実行させるプログラム起動手段と、
を含むプログラム起動装置。
【請求項２】
前記プログラムは、前記メモリ上の異なるアドレスにロードされても前記コアが実行可能に作成されており、
前記プログラム起動手段は、一つの前記プログラムを、異なるアドレスを持つ各々の前記区画のロードする
請求項１に記載のプログラム起動装置。
【請求項３】
前記メモリのメモリバンクの構成を取得する前記情報取得手段を含み、
前記区画割り当て手段は、単一の前記メモリバンクが複数の前記区画に含まれないよう前記区画を割り当てる
請求項１又は２に記載のプログラム起動装置。
【請求項４】
前記区画割り当て手段は、前記複数のコアを複数のグループに分け、前記グループ毎に、当該グループに含まれる複数の前記コアに前記区画の割り当てを行い、
前記プログラム起動手段は、前記コアへの前記区画の割り当てが行われた前記グループに含まれる、複数の前記コアに、前記プログラムを並列に実行させる
請求項１乃至３のいずれかに記載のプログラム起動装置。
【請求項５】
前記プロセッサと、前記メモリと、請求項１乃至４のいずれかに記載のプログラム起動装置とを含む情報処理システム。
【請求項６】
プロセッサの複数のコアが共有するメモリを複数の区画に分割し、前記複数のコアの各々に対して、前記複数のコア毎に異なる前記区画を割り当て、
前記区画にロードされて前記コアによって実行され、ロードされた前記区画のメモリをアクセスするプログラムであって、他の前記コアとのメモリアクセス競合がないことを前提に実装されたプログラムをプログラム記憶手段に記憶し、
前記区画の各々に前記プログラムをロードし、前記複数のコアに前記プログラムを起動する指示を送信し、前記複数のコアに前記プログラムを並列に実行させる
プログラム起動方法。
【請求項７】
コンピュータを、
プロセッサの複数のコアが共有するメモリを複数の区画に分割し、前記複数のコアの各々に対して、前記複数のコア毎に異なる前記区画を割り当てる区画割り当て手段と、
前記区画にロードされて前記コアによって実行され、ロードされた前記区画のメモリをアクセスするプログラムであって、他の前記コアとのメモリアクセス競合がないことを前提に実装されたプログラムを記憶するプログラム記憶手段と、
前記区画の各々に前記プログラムをロードし、前記複数のコアに前記プログラムを起動する指示を送信し、前記複数のコアに前記プログラムを並列に実行させるプログラム起動手段と、
して動作させるプログラム起動プログラム。
【請求項８】
前記プログラムは、前記メモリ上の異なるアドレスにロードされても前記コアが実行可能に作成されており、
前記プログラム起動プログラムは、コンピュータを、
一つの前記プログラムを、異なるアドレスを持つ各々の前記区画のロードする前記プログラム起動手段と、
して動作させる請求項７に記載のプログラム起動プログラム。
【請求項９】
コンピュータを、
前記メモリのメモリバンクの構成を取得する前記情報取得手段と、
単一の前記メモリバンクが複数の前記区画に含まれないよう前記区画を割り当てる前記区画割り当て手段と、
して動作させる請求項７又は８に記載のプログラム起動プログラム。
【請求項１０】
コンピュータを、
前記複数のコアを複数のグループに分け、前記グループ毎に、当該グループに含まれる複数の前記コアに前記区画の割り当てを行う前記区画割り当て手段と、
前記コアへの前記区画の割り当てが行われた前記グループに含まれる、複数の前記コアに、前記プログラムを並列に実行させる前記プログラム起動手段と、
して動作させる請求項７乃至９のいずれかに記載のプログラム起動プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム起動装置、プログラム起動方法、及びプログラム起動プログラムに関し、特に、複数のコアのためのプログラム起動装置、プログラム起動方法、及びプログラム起動プログラムに関する。
【背景技術】
【０００２】
半導体技術の進歩により、１個のＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）上に複数のコアが実装されているプロセッサが増えている。例えばプロセッサの交換時の、各コアの診断には、プロセッサの内部を検証する試験プログラムが使用される。試験プログラムは、コードのサイズが小さく高速で動作するプログラムであることが必要である。そのため、試験プログラムはアセンブラレベルで記述され、試験プログラム内部ではソフトウェアビジブルレジスタやメモリアドレスが細かく指定される。また、コアが１個のプロセッサ用に実装された試験プログラムが、そのプロセッサと同一のプログラムを実行可能な、複数のコアを含むプロセッサの各コアの診断のために再利用されることも多い。そのような試験プログラムは、通常、試験プログラムを実行するコア以外のコアが、試験プログラムや他のプログラムを並列に実行することを前提に記述されない。試験プログラムは、１個のコアで実行され、試験プログラムを実行するコアがアクセスするメモリの範囲に、他のコアからのアクセスが無いことを前提として記述されている場合が多い。この場合、複数のコアが、単一のメモリ空間をもつこれらのコアの共有メモリに、同一の試験プログラムをそれぞれロードし、並列に実行することはできない。複数のコアがそれらのコアの共有メモリに同一の試験プログラムをそれぞれロードして同時に起動した場合、例えばコア間でメモリアドレスの衝突が発生するために、各コアは試験プログラムを正常に実行することはできない。
【０００３】
複数のコアの診断に、各コアで同じ試験プログラムが使用される場合、試験プログラムは１個のコア毎に順次実行される必要がある。しかし、この場合、診断に必要な時間は、コア数に比例して増加する。従って、コア数が多いプロセッサの診断には、長い時間が必要である。
【０００４】
複数のコアが同時に試験プログラムを実行するためには、コア毎に準備された、同時実行が可能な、使用されるアドレス等が異なる試験プログラムプログラムを、各コアが実行することも考えられる。しかし、この場合、プロセッサのコア数が多い場合、コア数と同じ数の試験プログラムを格納する必要があるため、容量の大きい記憶装置が必要である。また、この場合、プロセッサのコア数が多い場合、コア数と同じ数の試験プログラムを実装する必要があるため、開発費が増加する。
【０００５】
特許文献１には、マルチプロセッサ構成の大規模コンピュータ装置のための、負荷試験プログラムを実行する情報処理装置が記載されている。負荷試験プログラムは、大規模コンピュータ装置の所定部位に高負荷な状態を作る、複数の小規模試験プログラムを実行して、負荷試験を行う。小規模試験プログラムは、大規模コンピュータ装置の複数の種類のハードウェア資源のうち、種類毎に所定の数量のハードウェア資源を必要とする。負荷試験プログラムは、複数の種類のハードウェア資源が不足しない最大数の小規模試験プログラムを、大規模コンピュータ装置に並列に実行させる。
【０００６】
特許文献２には、複数のプロセッサコアを１以上のプロセッサコアからなる複数のコアユニットにグループ化して管理する情報処理装置が記載されている。特許文献２の情報処理装置は、同一のコアユニットで実行されるタスク群を一つのタスクグループにする。情報処理装置は、それぞれのタスクグループに、タスクグループに固有のメモリ領域を割り当てる。特許文献２の情報処理装置は、各コアユニットのいずれかのプロセッサコアで実行されるタスクが、他のコアユニットに固有のメモリ領域にアクセスしたとき、そのアクセスを不正アクセスとして検出する。
【０００７】
特許文献３に記載のグローバルオーバーフロー方法では、ローカルの共有トランザクショナルメモリがオーバーフローすると、トランザクショナルメモリはシステムメモリと言った上位メモリ内へと仮想化及び／又は拡張される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−０７０２８８号公報
【特許文献２】特開２０１０−１１３４８８号公報
【特許文献３】特表２００９−５３７０５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１の技術では、どの種類のハードウェア資源も不足しない数の小規模試験プログラムが実行されるので、全てのプロセッサコアが使用されるとは限らない。従って、特許文献１ので技術は、必ずしも全てのプロセッサコアの診断を行うことはできない。
【００１０】
特許文献２又は３の技術では、プロセッサコアの診断を行うことはできない。
【００１１】
本発明の目的は、コアの診断のための、並列動作を想定せずに実装された試験プログラムによる、複数のコアの診断の時間を削減するプログラム起動装置を提供することにある。
【課題を解決するための手段】
【００１２】
本発明のプログラム起動装置は、プロセッサの複数のコアが共有するメモリを複数の区画に分割し、前記複数のコアの各々に対して、前記複数のコア毎に異なる前記区画を割り当てる区画割り当て手段と、前記区画にロードされて前記コアによって実行され、ロードされた前記区画のメモリをアクセスするプログラムであって、他の前記コアとのメモリアクセス競合がないことを前提に実装されたプログラムを記憶するプログラム記憶手段と、前記区画の各々に前記プログラムをロードし、前記複数のコアに前記プログラムを起動する指示を送信し、前記複数のコアに前記プログラムを並列に実行させるプログラム起動手段と、を含む。
【００１３】
本発明のプログラム起動方法は、プロセッサの複数のコアが共有するメモリを複数の区画に分割し、前記複数のコアの各々に対して、前記複数のコア毎に異なる前記区画を割り当て、前記区画にロードされて前記コアによって実行され、ロードされた前記区画のメモリをアクセスするプログラムであって、他の前記コアとのメモリアクセス競合がないことを前提に実装されたプログラムをプログラム記憶手段に記憶し、前記区画の各々に前記プログラムをロードし、前記複数のコアに前記プログラムを起動する指示を送信し、前記複数のコアに前記プログラムを並列に実行させる。
【００１４】
本発明のプログラム起動プログラムは、コンピュータを、プロセッサの複数のコアが共有するメモリを複数の区画に分割し、前記複数のコアの各々に対して、前記複数のコア毎に異なる前記区画を割り当てる区画割り当て手段と、前記区画にロードされて前記コアによって実行され、ロードされた前記区画のメモリをアクセスするプログラムであって、他の前記コアとのメモリアクセス競合がないことを前提に実装されたプログラムを記憶するプログラム記憶手段と、前記区画の各々に前記プログラムをロードし、前記複数のコアに前記プログラムを起動する指示を送信し、前記複数のコアに前記プログラムを並列に実行させるプログラム起動手段と、して動作させる。
【発明の効果】
【００１５】
本発明には、コアの診断のための、並列動作を想定せずに実装された試験プログラムによる、複数のコアの診断の時間を削減できるという効果がある。
【図面の簡単な説明】
【００１６】
【図１】図１は、第１の実施形態の情報処理システム１００の構成を表すブロック図である。
【図２】図２は、第１の実施形態の診断装置１の、プロセッサ２の診断時の動作を表すフローチャートである。
【図３】図３は、第１の実施形態の診断装置１の、コアの診断時の動作を表すフローチャートである。
【図４】図４は、割り当てられた共有メモリ３の区画の例を表す図である。
【図５】図５は、第１の実施形態の第１の変形例の、プロセッサ２の診断時の動作を表すフローチャートである。
【図６】図６は、第１の実施形態の第２の変形例の、プロセッサ２の診断時の動作を表すフローチャートである。
【図７】図１は、第２の実施形態の情報処理システム１００の構成を表すブロック図である。
【発明を実施するための形態】
【００１７】
（第１の実施形態）
次に、本発明の第１の実施の形態について図面を参照して詳細に説明する。
【００１８】
図１は、本実施形態の情報処理システム１００の構成を表すブロック図である。
【００１９】
図１を参照すると、情報処理装置１００は、診断装置１と、プロセッサ２と、共有メモリ３を含む。
【００２０】
診断装置１は、プログラム記憶部１０と、情報取得部１１と、区画割り当て部１２と、プログラム起動部１３を含む。例えば、情報処理装置１００内に実装されているＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）が、診断装置１として動作する。
【００２１】
プロセッサ２は、複数のコアと、それぞれのコアに対応するベースアドレスレジスタを含む。図２の例では、コアは、コア２０、コア２１、コア２２、コア２３の４個である。それぞれのコアに対応するベースアドレスレジスタは、ベースアドレスレジスタ２４０、ベースアドレスレジスタ２４１、ベースアドレスレジスタ２４２、ベースアドレスレジスタ２４３である。図２の例では、プロセッサ２は、各ベースアドレスレジスタを含むメモリアクセス制御部２４を含む。
【００２２】
プロセッサ２は、例えばソケットにより、抜き差し可能な形で情報処理装置１００に実装されている。本実施形態の以下の説明では、複数のコアを含む１個のプロセッサ２が情報処理装置１００に実装される。プロセッサ２は、２個以上のＬＳＩにより構成されていてもよい。
【００２３】
共有メモリ３は、プロセッサ２の各コアが共有するメモリである。
【００２４】
共有メモリ３は、例えばソケットにより、抜き差し可能な形で情報処理装置１００に実装されている。共有メモリ３は、例えば、１個以上のメモリバンクで構成される１個以上のメモリモジュールで構成される。
【００２５】
各ベースアドレスレジスタには、対応するコアが使用できるメモリエリアのベースアドレスが格納される。メモリアクセス制御部２４は、コアがアドレスを指定してメモリ３へのアクセスする場合、そのコアのベースアドレスレジスタに格納されているベースアドレスを加算したアドレスを生成する。そして、メモリアクセス制御部２４は、コアのアクセス先のアドレスを、生成されたアドレスに変更する、アドレスの変換を行う。コアはメモリの変更されたアドレスにアクセスする。コアが実行するプログラムにおいて、メモリへのアクセス先のアドレスが指定されている場合、コアは、そのアクセス先のアドレスにベースアドレスを加算したアドレスにアクセスを行う。
【００２６】
プログラム記憶部１０は、以下のような試験プログラムを記憶する。試験プログラムは、共有メモリ３にロードされて、プロセッサ２のコアによって実行されるプログラムである。コアは、試験プログラムを実行することにより、コア自身の診断を行う。試験プログラムは、共有メモリ３内に再配置され、プロセッサ２のコアにより実行される。そして、試験プログラムは、その試験プログラムを実行するコア以外のコアとのメモリアクセスが無いことを前提に実装されたプログラムである。すなわち、試験プログラムを実行するコアがアクセスする共有メモリ３の範囲が、他のコアによってアクセスされないことを前提に実装されているプログラムである。試験プログラムを実行するコアがアクセスする共有メモリ３の範囲が、他のコアによって読み書きされた場合、試験プログラムは正常に動作しない。このような試験プログラムは、例えば、プロセッサ２のコアが同じプログラムを実行可能な、例えばコアが１個のプロセッサが、コアの診断のために実行すること前提に実装された試験プログラムである。そして、このような試験プログラムは、前述のように、例えば、アセンブラレベルで記述され、プログラム内部でソフトウェアビジブルレジスタやメモリアドレスが細かく指定されたプログラムである。本実施形態の例では、プログラム記憶部１０が記憶するプログラムは、以上のような試験プログラムである。しかし、プログラム記憶部１０が記憶するプログラムは、必ずしも試験プログラムでなくてもよい。プログラム記憶部１０が記憶するプログラムは、共有メモリ３にロードされてプロセッサ２のコアによって実行されるプログラムであり、そのプログラムを実行するコア以外のコアとのメモリアクセス競合が無いことを前提に実装されたプログラムであればよい。
【００２７】
本実施形態の例では、プロセッサ２が含むメモリアクセス制御部２４が、試験プログラムを実行するコアがメモリにアクセスする際に、試験プログラム内で指定されるアドレスを実際のアクセス先のメモリのアドレスに変換する。前述のように、メモリアクセス制御部２４は、試験プログラム内で指定されるアドレスと、試験プログラムを実行するコアのベースアドレスレジスタのベースアドレスを加算する、アドレス変換を行う。この場合、試験プログラムは、必ずしも、位置独立な実行形式で実装されていなくてもよい。試験プログラムが共有メモリ３上のどの位置に配置されていても、上述のアドレス変換により、コアが試験プログラムを実行可能であればよい。すなわち、試験プログラムが配置された位置に応じたベースアドレスが、試験プログラムを実行するコアのベースアドレスレジスタに設定され、上述のアドレス変換が行われることにより、コアが試験プログラムを実行できればよい。例えば、試験プログラムが、共有メモリ３上の先頭アドレスから配置されていることを前提に実装されていれば、試験プログラムが配置される領域の先頭アドレスが、試験プログラムを実行するコアのベースアドレスに設定されていればよい。試験プログラムが、共有メモリ３上の所定アドレスから配置されていることを前提に実装されていれば、試験プログラムの配置位置のアドレスから所定アドレスを引いたアドレスがベースアドレスに設定されていればよい。
【００２８】
試験プログラムは、位置独立な実行形式で実装されていてもよい。例えば、試験プログラムは、その試験プログラムを実行するコアのベースアドレスレジスタから読み出したベースアドレスを、試験プログラム内に指定された相対アドレスに加算してアクセス先のアドレスを生成することで、再配置可能に実装されていてもよい。試験プログラムは、ページング方式により再配置可能であるよう実装されたプログラムであってもよい。試験プログラムは、他の方式により、再配置可能であるよう実装されていてもよい。これらの場合、メモリアクセス制御部２４はアドレスの変換を行わなくてもよい。
【００２９】
情報取得部１１は、共有メモリ３のサイズを取得する。情報取得部１１は、さらに、共有メモリ３のバンク構成を取得してもよい。情報処理装置１００に装着されるプロセッサ２のコア数が、必ずしも同一ではない場合、情報取得部１１は、さらに、プロセッサ２のコア数を取得してもよい。
【００３０】
区画割り当て部１２は、共有メモリ３を、プロセッサ２のコアの個数と同じ数の複数の区画に分割する。そして、区画割り当て部１２は、プロセッサ２の複数のコアのそれぞれに対して、コア毎に異なる区画を割り当てる。区画割り当て部１２は、各コアのベースアドレスレジスタに、割り当てられた区画の先頭アドレスを設定する。前述のように、ベースアドレスレジスタは、試験プログラム内のアクセス先のメモリのアドレスと、試験プログラムを実行するコアの実際のアクセス先のメモリのアドレスとの間のオフセットを指定するレジスタである。
【００３１】
プログラム起動部１３は、プログラム記憶部１０から試験プログラムを読み出す。プログラム起動部１３は、読み出した試験プログラムを、各区画にロードする。プログラム起動部１３は、各区画の、例えば試験プログラムに応じて定められた、区画の先頭アドレスに対する位置から、試験プログラムを書き込んでもよい。例えば、プログラム起動部１３は、各区画の、先頭アドレスから、試験プログラムを書き込む。プログラム起動部１３は、試験プログラムを各区画に書き込んだ後、前記複数のコアに前記試験プログラムを起動させる指示を送信して、各コアに試験プログラムを実行させる。プログラム起動部１３は、各コアに順次試験プログラム実行させるのではなく、各コアに並列に試験プログラム実行させる。
【００３２】
診断装置１は、プロセッサ２の複数のコアに、プログラム記憶部１０に格納されているプログラムを実行させる、プログラム起動装置として動作する。
【００３３】
次に、本実施形態の動作について、図面を参照して詳細に説明する。
【００３４】
図２は、本実施形態の診断装置１の、プロセッサ２の診断時の動作を表すフローチャートである。
【００３５】
診断装置１は、例えば、故障したプロセッサ２が新しいプロセッサ２に交換されたことを検出した場合に、図２の動作を開始する。診断装置１は、例えば、情報処理装置１００の管理者の、図示されない入力装置を介した指示により、図２の動作を開始してもよい。診断装置１は、情報処理装置１００の起動時に、図２の動作を開始してもよい。
【００３６】
図２を参照すると、まず、情報取得部１１が、共有メモリ３のメモリ容量を取得する（ステップＳ１０１）。例えば故障したプロセッサ２が、異なるコア数のプロセッサ２に交換される場合のように、プロセッサ２が含むコアの数が変化する可能性がある場合、情報取得部１１は、さらに、コアの個数を取得する。
【００３７】
図２のフローチャートは、共有メモリ３の容量が、全てのコアに、試験プログラムを実行することができる容量のメモリ区画を割り当てるのに十分な容量な場合の、診断装置１の動作を表す。しかし、共有メモリ３を構成するメモリモジュールが着脱可能であり、共有メモリ３の容量が、全てのコアに、試験プログラムを実行することができる容量のメモリ区画を割り当てるのに、十分な容量であるとは限らない場合もある。その場合、区画割り当て部１２は、共有メモリ３の容量が、全てのコアに、試験プログラムを実行することができる容量のメモリ区画を割り当てられるか否かを判定する。判定の結果、共有メモリ３の容量が十分ではない場合、診断装置１は、後述の本実施形態の第１の変形例の動作を行えばよい。判定の結果、共有メモリ３の容量が十分ではない場合、診断装置１は、各コアに、順次、試験プログラムを実行させてもよい。また、判定の結果、共有メモリ３の容量が、１個のコアが診断プログラムを実行するのに十分な容量でない場合、診断装置１は、例えば、情報処理装置１００に接続された、図示されない表示装置に、エラーメッセージを表示して、動作を終了すればよい。
【００３８】
そして、診断装置１は、各コアの診断を行う（ステップＳ１０２）。
【００３９】
図３は、本実施形態の診断装置１の、コアの診断時（ステップＳ１０２）の動作を表すフローチャートである。
【００４０】
ステップＳ１０２の動作では、まず、区画割り当て部１２が、共有メモリ３を、プロセッサ２のコアの個数と同じ数の複数の区画に分割する（ステップＳ１０３）。
【００４１】
区画割り当て部１２は、共有メモリ３を、試験プログラムを実行するために必要なメモリ区画のサイズを上回るサイズの、プロセッサ２のコアの個数と同じ数の区画に分割する。本実施形態では、共有メモリ３のサイズは、各コアが試験プログラムを実行するために必要なメモリ区画のサイズの和より小さい。試験プログラムの実行に必要なメモリ区画のサイズは、例えば試験プログラムのロードに必要なメモリの区画のサイズと、コアが試験プログラムの実行中に読み書きを行う試験データを格納するのに必要なメモリの区画のサイズである。区画割り当て部１２は、例えば、共有メモリ３を、プロセッサ２のコアの個数と同じ数の、均等なサイズの区画に分割すればよい。各区画のサイズは、試験プログラムを実行するために必要なメモリ区画のサイズを上回るサイズであれば、必ずしも同一のサイズでなくてもよい。
【００４２】
区画割り当て部１２は、取得されたメモリ容量を、コアの数で割った容量を算出すればよい。そして、区画割り当て部１２は、メモリ３を、算出した容量の区画に分割すればよい。
【００４３】
例えば、メモリ容量が４０００（Ｈ）バイトで、共有メモリ３をシェアするコアの数が４である場合、１個のコアが使用可能なメモリ容量は１０００（Ｈ）バイトである。試験プログラムの実行に必要なメモリ区画のサイズが８００（Ｈ）である場合、１個のコアが使用可能なメモリ容量が、試験プログラムの実行に必要なメモリ区画のサイズより大きい。
【００４４】
なお、試験プログラムが、その試験プログラムを実行するプロセッサ２の各コアに、さらに、コアに割り当てられている共有メモリ３の診断を行わせるよう構成されている場合がある。その場合、ステップＳ１０３で、区画割り当て部１２は、共有メモリ３全体を、コアの数と同数の区画に分割する。そうでない場合、ステップＳ１０３で、区画割り当て部１２が、共有メモリ３から、前述のコア数と同じ数の区画を分割した後、共有メモリ３に分割されない区画が残ってもよい。以下のステップＳ１０４では、共有メモリ３から分割されたコア数と同じ数の区画は、いずれかのコアに割り当てられる。分割されずに残った区画は、どのコアにも割り当てられない。
【００４５】
次に、区画割り当て部１２は、プロセッサ２の各コアに対して、コア毎に異なる、共有メモリ３の区画を割り当てる（ステップＳ１０４）。
【００４６】
割り当ての方法は任意の方法でよい。例えば、区画割り当て部１２は、共有メモリ３の先頭アドレスに近い区画から、コアの番号順に、コアに割り当てればよい。割り当ての順番は逆でもよい。
【００４７】
図４は、割り当てられた共有メモリ３の区画の例を表す図である。図４の、それぞれのコア用の試験エリアが、それぞれのコアに割り当てられた、共有メモリ３の区画である。図４の例では、区画割り当て部１２は、共有メモリ３のそれぞれの区画は、共有メモリ３の先頭の区画から順に、コア２０、コア２１、コア２２、コア２３に割り当てられている。
【００４８】
コア２０に割り当てられている試験エリアは、共有メモリ３の、メモリアドレス００００（Ｈ）番地から０ＦＦＦ（Ｈ）番地の区画である。同様に、コア２１に割り当てられている試験エリアは、共有メモリ３の、メモリアドレス１０００（Ｈ）番地から１ＦＦＦ（Ｈ）番地の区画である。コア２２に割り当てられている試験エリアは、共有メモリ３の、メモリアドレス２０００（Ｈ）番地から２ＦＦＦ（Ｈ）番地の区画である。コア２３に割り当てられている試験エリアは、共有メモリ３の、メモリアドレス３０００（Ｈ）番地から３ＦＦＦ（Ｈ）番地の区画である。
【００４９】
区画割り当て部１２は、各コアのベースアドレスレジスタに、割り当てられた区画の先頭アドレスを設定する（ステップＳ１０５）。区画割り当て部１２は、それぞれのコアに対して、コアに対応するベースアドレスレジスタに、そのコアに割り当てられた区画の先頭アドレスを書き込む。
【００５０】
図４の例では、区画割り当て部１２は、コア２０のベースアドレスレジスタ２４０に、ベースアドレスとして、コア２００試験エリアの先頭アドレスである００００（Ｈ）を格納する。同様に、区画割り当て部１２は、コア２１のベースアドレスレジスタ２４１に、コア２１の試験エリアの先頭アドレスである１０００（Ｈ）を格納する。区画割り当て部１２は、コア２２のベースアドレスレジスタ２４２に、コア２２の試験エリアの先頭アドレスである２０００（Ｈ）を格納する。区画割り当て部１２は、コア２３のベースアドレスレジスタ２４３に、コア２３の試験エリアの先頭アドレスである３０００（Ｈ）を格納する。
【００５１】
なお、本実施形態、本実施形態の各変形例、及び他の実施形態において、試験プログラムが、位置独立な実行形式で実装されている場合、区画割り当て部１２は、ステップＳ１０５の動作を行わなくてもよい。
【００５２】
次に、プログラム起動部１３は、試験プログラムをプログラム記憶部１０から読み出す。そして、プログラム起動部１３は、読み出された試験プログラムを、各区画にロードする（ステップＳ１０６）。プログラム起動部１３は、例えば、メモリ３の各区画に、その区画の先頭アドレスから、試験プログラムを書き込む。
【００５３】
図４の例で、試験プログラム区画と試験データ区画のサイズの和が８００（Ｈ）バイトである場合の、プログラム起動部１３は、例えば以下の区画に試験プログラムをロードする。プログラム起動部１３は、試験プログラムが動作するためのデータである試験データが存在する場合、試験データを同様に以下の区画にロードすればよい。
【００５４】
プログラム起動部１３は、共有メモリ３の、メモリアドレス００００（Ｈ）番地から０７ＦＦ（Ｈ）番地の区画に、コア２０のための試験プログラムと試験データをロードする。また、プログラム起動部１３は、コア２１のための試験プログラムと試験データを、共有メモリ３の、メモリアドレス１０００（Ｈ）番地から１７ＦＦ（Ｈ）番地の区画にロードする。プログラム起動部１３は、コア２２の試験プログラムと試験データを、共有メモリ３の、メモリアドレス２０００（Ｈ）番地から２７ＦＦ（Ｈ）番地の区画にロードする。プログラム起動部１３は、コア２３の試験プログラムと試験データを、共有メモリ３の、メモリアドレス３０００（Ｈ）番地から３７ＦＦ（Ｈ）番地の区画にロードする。
【００５５】
プログラム起動部１３がロードする試験プログラムと試験データは、全ての区画において同一である。
【００５６】
プログラム起動部１３は、各コアに試験プログラムを起動する指示を送信し、各コアに試験プログラムを実行させる。各のコアは、試験プログラムを並列に実行する（ステップＳ１０７）。プログラム起動部１３は、起動を行う指示を行う信号を、各コアに送信することにより、各コアに試験プログラムの実行を開始させればよい。
【００５７】
起動がかけられると、各コアは試験プログラムの実行を開始する。
【００５８】
コア２０が試験プログラムを実行してメモリアクセスを行う場合、コア２０のベースアドレスレジスタ２４０の値００００（Ｈ）が、試験プログラムで指定されたメモリアドレスに加算される。このことにより、試験プログラムを実行するコア２０は、メモリアドレス００００（Ｈ）番地から０７ＦＦ（Ｈ）番地の区画にアクセスする。この区画は、コア２０に割り当てられたメモリエリアである、メモリアドレス００００（Ｈ）番地から０ＦＦＦ（Ｈ）番地の区画に含まれる。
【００５９】
同様に、コア２１が試験プログラムを実行してメモリアクセスを行う場合、コア２１のベースアドレスレジスタ２４１の値１０００（Ｈ）が、試験プログラムで指定されたメモリアドレスに加算される。このことにより、試験プログラムを実行するコア２１は、メモリアドレス１０００（Ｈ）番地から１７ＦＦ（Ｈ）番地の区画にアクセスする。この区画は、コア２１に割り当てられたメモリエリアである、メモリアドレス１０００（Ｈ）番地から１ＦＦＦ（Ｈ）番地の区画に含まれる。
【００６０】
コア２２が試験プログラムを実行してメモリアクセスを行う場合、コア２２のベースアドレスレジスタ３０２の値２０００（Ｈ）が、試験プログラムで指定されたメモリアドレスに加算される。このことにより、試験プログラムを実行するコア２２は、メモリアドレス２０００（Ｈ）番地から２７ＦＦ（Ｈ）番地の区画にアクセスする。この区画は、コア２２に割り当てられたメモリエリアである、メモリアドレス２０００（Ｈ）番地から２ＦＦＦ（Ｈ）番地の区画に含まれる。
【００６１】
コア２３が試験プログラムを実行してメモリアクセスを行う場合、コア２３のベースアドレスレジスタ３０３の値３０００（Ｈ）が、試験プログラムで指定されたメモリアドレスに加算される。このことにより、試験プログラムを実行するコア２３は、メモリアドレス３０００（Ｈ）番地から３７ＦＦ（Ｈ）番地の区画にアクセスする。この区画は、コア２３に割り当てられたメモリエリアである、メモリアドレス３０００（Ｈ）番地から３ＦＦＦ（Ｈ）番地の区画に含まれる。
【００６２】
以上で説明した本実施形態には、コアの診断のための、並列動作を想定せずに実装された試験プログラムによる、複数のコアの診断の時間を削減できるという効果がある。
【００６３】
その理由は、区画割り当て部１２が、複数のコアで共有される共有メモリ３を分割して各コアに割り当てるからである。そして、区画割り当て部１２は、各コアに対して、コアに割り当てられた区画の先頭アドレスをベースアドレスレジスタに設定する。そして、プログラム起動部１３は、各区画に試験プログラムをロードする。プログラム起動部１３は、各コアに、並列に試験プログラムを実行させる。
【００６４】
また、本実施形態には、複数のコアに対する診断を高速化するためのコストを削減することができるという第２の効果がある。
【００６５】
その理由は、コアの診断のための、並列動作を想定せずに実装された、既存の試験プログラムをそのまま使用することができるからである。
【００６６】
なお、プログラム記憶部１０に格納され各区画にロードされる試験プログラムは、必ずしも１つのプログラムでなくてよい。プログラム起動部１３は、複数のプログラムから、区画毎にプログラムを選択して選択してロードしてもよい。また、情報取得部１１は、例えばステップＳ１０１で、さらに、プロセッサ２の各コアの種類を取得してもよい。そして、プログラム起動部１３は、ステップＳ１０６で、取得されたコアの種類に応じて試験プログラムを選択し、各コアに割り当てられた区画に、コアの種類に応じて選択されたプログラムをロードしてもよい。診断装置１がこのように構成されていれば、例えば、プロセッサ２の複数のコアに、異なる種類のコアが含まれる場合、プログラム起動部１３は、コア毎の区画に、コアの種類に応じた種類の試験プログラムをロードすることができる。
【００６７】
（第１の実施形態の第１の変形例）
次に、本実施形態の第１の変形例の情報処理装置１００について、図面を参照して詳細に説明する。
【００６８】
本変形例の情報処理装置１００の構成は、図１の第１の実施形態の情報処理装置１００の構成と同じである。
【００６９】
以下では、主に、本変形例と第１の実施形態の相違点が説明される。
【００７０】
区画割り当て部１２は、全コアに試験プログラムを実行可能な容量の区画を同時に割り当て可能か判定する。判定の結果が割り当て可能である場合、情報処理装置１００は、第１の実施形態の情報処理装置１００と同じ動作を行う。
【００７１】
判定の結果が割り当て可能でない場合、区画割り当て部１２は、複数のコアを、複数のグループにグループ分けする。その際、区画割り当て部１２は、各グループに含まれる全コアに試験プログラムを実行可能な容量の区画を同時に割り当て可能であるように、複数のコアのグループ分けを行う。区画割り当て部１２は、さらに、コアのグループの数が最も少なくなるよう、複数のコアのグループ分けを行うことが望ましい。
【００７２】
そして、区画割り当て部１２は、全てのグループから順に１つのグループを選択し、選択したグループに含まれる複数のコアに対して、図３のステップＳ１０３とステップＳ１０４の動作を行う。
【００７３】
また、プログラム起動部１３は、区画割り当て部１２が選択したグループに含まれ、区画割り当て部１２がステップＳ１０３とステップＳ１０４の動作を行った複数のコアに対して、ステップＳ１０５からステップＳ１０７の動作を行う。
【００７４】
本変形例の情報処理装置１００の他の構成要素は、第１の実施形態の同じ番号の構成要素と同じである。
【００７５】
次に、本変形例の動作について、図面を参照して詳細に説明する。
【００７６】
図５は、本変形例の診断装置１の、プロセッサ診断時の動作を表すフローチャートである。
【００７７】
ステップＳ１０１は、第１の実施形態のステップＳ１０１と同じである。
【００７８】
次に、区画割り当て部１２は、全コアに試験プログラムを実行可能な容量の区画を同時に割り当て可能か判定する（ステップＳ１１１）。
【００７９】
判定の結果が割り当て可能である場合（ステップＳ１１１、Ｙ）、情報処理装置１００は、第１の実施形態と同様に、全てのコアに対して、図３のコアの診断を行う（ステップＳ１１６）。
【００８０】
判定の結果が割り当て可能である場合（ステップＳ１１１、Ｎ）、区画割り当て部１２は、複数のコアを、複数のグループにグループ分けする（ステップＳ１１２）。
【００８１】
区画割り当て部１２は、各グループに含まれる全コアに試験プログラムを実行可能な容量の区画を同時に割り当て可能であるように、複数のコアのグループ分けを行う。区画割り当て部１２は、例えば、共有メモリ３を、均等な容量で、コアが試験プログラムを実行するのに必要な容量を下回らない最小容量の区画に分割した場合の、区画の数を算出する。区画割り当て部１２は、算出された区画の数を、１グループ当たりのコアの最大数にする。そして、区画割り当て部１２は、複数のコアから、算出された１グループ当たりの最大数のコアを選択し、選択したコアで構成されるグループを生成する。区画割り当て部１２は、選択されていないコアが無くなるまで、グループを生成する動作を繰り返す。最後に、算出された１グループ当たりの最大数に満たない数の選択されていないコアが残った場合、それらのコアで構成されるグループを生成する。区画割り当て部１２は、他の方法により、一つのグループに含まれる全コアに試験プログラムを実行可能な容量の区画が同時に割り当てられるよう、グループを生成してもよい。ただし、区画割り当て部１２は、コアのグループの数が最も少なくなるよう、複数のコアのグループ分けを行うことが望ましい。
【００８２】
また、区画割り当て部１２は、ステップＳ１１１の判定を行わなくてもよい。この場合、ステップＳ１１２で、区画割り当て部１２は、複数のコアから、試験プログラムを実行可能な容量の区画を同時に割り当て可能な個数のコアを選択して、選択されたコアのグループを生成する動作を行う。そして、区画割り当て部１２は、この動作を、選択されていないコアが無くなるまで繰り返す。
【００８３】
そして、区画割り当て部１２は、グループ分けにより生成されたグループから１つのグループを選択する（ステップＳ１１３）。
【００８４】
そして、診断装置１は、選択されたグループに含まれる各コアに対して、図３のプロセッサ２の診断を行う（ステップＳ１１４）。
【００８５】
ただし、図３のステップＳ１０３において、区画割り当て部１２が分割する共有メモリ３の区画の数は、選択されたグループに含まれるコアの数と同数である。
【００８６】
また、ステップＳ１０４において、区画割り当て部１２は、選択されたグループに含まれる各コアに対して、共有メモリ３の区画を割り当てる。
【００８７】
さらに、ステップＳ１０５では、選択されたグループに含まれるコアだけに、区画が割り当てられている。区画割り当て部１２は、選択されたグループに含まれるそれぞれのコアのベースアドレスレジスタに対して、割り当てられた区画の先頭アドレスを書き込む。
【００８８】
また、ステップＳ１０７で、プログラム起動部１３は、選択されたグループに含まれる各コアに、試験プログラムを実行させる。
【００８９】
選択されたグループに含まれる各コアにおける試験プログラムによる診断の終了後、まだ未選択のグループが存在する場合（ステップＳ１１５、Ｙ）、診断装置１の動作はステップＳ１１３に戻る。
【００９０】
未選択のグループが存在しない場合（ステップＳ１１５、Ｎ）、診断装置１はプロセッサ２の診断の動作を終了する。
【００９１】
本変形例には、さらに、各コアに同時に試験プログラムを実行させるのに十分な容量の共有メモリ３が無い場合でも、コアの診断のための、並列動作を想定せずに実装された試験プログラムによる、複数のコアの診断の時間を削減できるという効果がある。
【００９２】
その理由は、区画割り当て部１２が、同時に試験プログラムを実行することが可能な数のコアのグループを生成するからである。区画割り当て部１２は、グループ毎に、各コアに前述のように共有メモリ３の区画を割り当てる。また、プログラム起動部１３は、区画割り当て部１２が区画を割り当てたコアで、並列に試験プログラムを実行させる。
【００９３】
（第１の実施形態の第２の変形例）
次に、第１の実施形態の第２の変形例の情報処理装置１００について、図面を参照して詳細に説明する。
【００９４】
以下では、主に、本変形例と第１の変形例の相違点が説明される。
【００９５】
本変形例の情報処理装置１００の構成は、図１の第１の実施形態の情報処理装置１００の構成と同じである。
【００９６】
ただし、情報取得部１１が、共有メモリ３のメモリバンクの構成を取得する。
【００９７】
また、区画割り当て部１２は、一つの区画の容量が試験プログラムを実行可能な容量を下回らず、一つのメモリバンクが二つ以上の区画に含まれないように、共有メモリ３を、複数の区画に分割する。
【００９８】
また、区画割り当て部１２は、プロセッサ２のコアの数が、上述のように分割された共有メモリ３の区画の最大数を上回る場合、コアを複数のグループに分ける。
【００９９】
次に、本変形例の動作について、図面を参照して詳細に説明する。
【０１００】
図６は、本変形例の診断装置１の、プロセッサ診断時の動作を表すフローチャートである。
【０１０１】
図６のステップＳ２０１以外のステップは、以下で説明が行われる点以外において、図５の第１の変形例の同じ符号のステップと同じである。
【０１０２】
ステップＳ２０１で、情報取得部１１は、共有メモリ３のメモリバンクの構成を取得する（ステップＳ２０１）。情報取得部１１は、共有メモリ３の、メモリバンクの区切りのアドレスを取得すればよい。
【０１０３】
ステップＳ１１１で、区画割り当て部１２は、一つの区画の容量が試験プログラムを実行可能な容量を下回らず、一つのメモリバンクが二つ以上の区画に含まれないように、共有メモリ３を分割した場合の、区画の最大数を算出する。そして、区画割り当て部１２は、算出された区画の最大数が、コアの数以上であるか判定する。本変形例では、算出された区画の最大数が、コアの数以上であれば、区画割り当て部１２は、一つのメモリバンクが二つ以上の区画に含まれないように、全コアに試験プログラムを実行可能な区画を割り当てることが可能である。
【０１０４】
算出された区画の最大数が、コアの数以上であると判定された場合（ステップＳ１１１、Ｙ）、診断装置１は、図３のコアの診断を行う（ステップＳ１１６）。
【０１０５】
本変形例では、図３のステップＳ１０３において、区画割り当て部１２は、一つの区画の容量が試験プログラムを実行可能な容量を下回らず、一つのメモリバンクが二つ以上の区画に含まれないように、共有メモリ３を複数の区画に分割する。
【０１０６】
算出された区画の最大数が、コアの数未満であると判定された場合（ステップＳ１１１、Ｎ）、診断装置１はステップＳ１１２の動作を行う。
【０１０７】
ステップＳ１１２では、区画割り当て部１２は、各グループに含まれるコアの数が、上述のように分割された共有メモリ３の区画の最大数を上回らないように、複数のコアを、複数のグループに分ける。
【０１０８】
ステップＳ１１４のコアの診断でも、ステップＳ１０３において、区画割り当て部１２は、一つの区画の容量が試験プログラムを実行可能な容量を下回らず、一つのメモリバンクが二つ以上の区画に含まれないように、共有メモリ３を複数の区画に分割する。
【０１０９】
本変形例の他の動作は、第１の変形例の動作と同じである。
【０１１０】
また、区画割り当て部１２が、一つの区画の容量が試験プログラムを実行可能な容量を下回らず、一つのメモリバンクが二つ以上の区画に含まれないように、全てのコアに共有メモリ３の区画を割り当てられる場合がある。その場合の本変形例の動作は、ステップＳ１０１の後に行われるステップＳ２０１の動作と、ステップＳ１０３における上述の動作以外、第１の実施形態の動作と同じである。
【０１１１】
本変形例には、第１の変形例と同じ効果に加えて、コアの診断をさらに高速化できるという効果がある。
【０１１２】
その理由は、区画割り当て部１２が、一つの区画の容量が試験プログラムを実行可能な容量を下回らず、一つのメモリバンクが二つ以上の区画に含まれないように、共有メモリ３を複数の区画に分割するからである。その結果、複数のコアで平行に試験プログラムを実行しても、メモリのバンク競合が発生しない。従って、メモリのバンク競合による処理速度の低下が発生しない。
【０１１３】
（第２の実施形態）
次に、本発明の第１の実施形態について、図面を参照して詳細に説明する。
【０１１４】
図７は、本実施形態の診断装置１の構成を表す図である。
【０１１５】
図７を参照すると、本実施形態のプログラム起動装置１Ａは、プロセッサ２の複数のコアが共有する共有メモリ３を複数の区画に分割し、前記複数のコアの各々に対して、前記複数のコア毎に異なる前記区画を割り当てる区画割り当て部１２と、前記区画にロードされて前記コアによって実行され、ロードされた前記区画のメモリをアクセスするプログラムであって、他の前記コアとのメモリアクセス競合がないことを前提に実装されたプログラムを記憶するプログラム記憶部１０と、前記区画の各々に前記プログラムをロードし、前記複数のコアに前記プログラムを起動する指示を送信し、前記複数のコアに前記プログラムを並列に実行させるプログラム起動部１３と、を含む。
【０１１６】
以上で説明した本実施形態には、第１の実施形態と同じ効果がある。
【０１１７】
その理由は、第１の実施形態の効果の理由と同じである。
【０１１８】
診断装置１は、それぞれ、コンピュータ及びコンピュータを制御するプログラム、専用のハードウェア、又は、コンピュータ及びコンピュータを制御するプログラムと専用のハードウェアの組合せにより実現することができる。
【０１１９】
情報取得部１１と、区画割り当て部１２と、プログラム起動部１３は、例えば、プログラムを記憶する記録媒体からメモリに読み込まれた、各部の機能を実現するための専用のプログラムと、そのプログラムを実行するプロセッサにより実現することができる。また、プログラム記憶部１０は、コンピュータが含むメモリやハードディスク装置により実現することができる。あるいは、プログラム記憶部１０と、情報取得部１１と、区画割り当て部１２と、プログラム起動部１３の一部又は全部を、各部の機能を実現する専用の回路によって実現することもできる。
【０１２０】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１２１】
１    診断装置
１Ａ    プログラム起動装置
２    プロセッサ
３    共有メモリ
１０    プログラム記憶部
１１    情報取得部
１２    区画割り当て部
１３    プログラム起動部
２０、２１、２２、２３    コア
２４    メモリアクセス制御部
１００    情報処理装置
２４０、２４１、２４２、２４３    ベースアドレスレジスタ
【図１】
2014109938.tif 000003
【図２】
2014109938.tif 000004
【図３】
2014109938.tif 000005
【図４】
2014109938.tif 000006
【図５】
2014109938.tif 000007
【図６】
2014109938.tif 000008
【図７】
2014109938.tif 000009