JP2014109938A - プログラム起動装置、プログラム起動方法、及びプログラム起動プログラム - Google Patents

プログラム起動装置、プログラム起動方法、及びプログラム起動プログラム Download PDF

Info

Publication number
JP2014109938A
JP2014109938A JP2012264432A JP2012264432A JP2014109938A JP 2014109938 A JP2014109938 A JP 2014109938A JP 2012264432 A JP2012264432 A JP 2012264432A JP 2012264432 A JP2012264432 A JP 2012264432A JP 2014109938 A JP2014109938 A JP 2014109938A
Authority
JP
Japan
Prior art keywords
program
cores
partition
memory
core
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.)
Pending
Application number
JP2012264432A
Other languages
English (en)
Inventor
Yuri Higuchi
由利 樋口
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.)
NEC Computertechno Ltd
Original Assignee
NEC Computertechno 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 NEC Computertechno Ltd filed Critical NEC Computertechno Ltd
Priority to JP2012264432A priority Critical patent/JP2014109938A/ja
Publication of JP2014109938A publication Critical patent/JP2014109938A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】 コアの診断のための、並列動作を想定せずに実装された試験プログラムによる、複数のコアの診断の時間を削減するプログラム起動装置を提供する。
【解決手段】 本発明のプログラム起動装置は、プロセッサの複数のコアが共有するメモリを複数の区画に分割し、前記複数のコアの各々に対して、前記複数のコア毎に異なる前記区画を割り当てる区画割り当て手段と、前記区画にロードされて前記コアによって実行され、ロードされた前記区画のメモリをアクセスするプログラムであって、他の前記コアとのメモリアクセス競合がないことを前提に実装されたプログラムを記憶するプログラム記憶手段と、前記区画の各々に前記プログラムをロードし、前記複数のコアに前記プログラムを起動する指示を送信し、前記複数のコアに前記プログラムを並列に実行させるプログラム起動手段と、を含む。
【選択図】 図7

Description

本発明はプログラム起動装置、プログラム起動方法、及びプログラム起動プログラムに関し、特に、複数のコアのためのプログラム起動装置、プログラム起動方法、及びプログラム起動プログラムに関する。
半導体技術の進歩により、1個のLSI(Large Scale Integration)上に複数のコアが実装されているプロセッサが増えている。例えばプロセッサの交換時の、各コアの診断には、プロセッサの内部を検証する試験プログラムが使用される。試験プログラムは、コードのサイズが小さく高速で動作するプログラムであることが必要である。そのため、試験プログラムはアセンブラレベルで記述され、試験プログラム内部ではソフトウェアビジブルレジスタやメモリアドレスが細かく指定される。また、コアが1個のプロセッサ用に実装された試験プログラムが、そのプロセッサと同一のプログラムを実行可能な、複数のコアを含むプロセッサの各コアの診断のために再利用されることも多い。そのような試験プログラムは、通常、試験プログラムを実行するコア以外のコアが、試験プログラムや他のプログラムを並列に実行することを前提に記述されない。試験プログラムは、1個のコアで実行され、試験プログラムを実行するコアがアクセスするメモリの範囲に、他のコアからのアクセスが無いことを前提として記述されている場合が多い。この場合、複数のコアが、単一のメモリ空間をもつこれらのコアの共有メモリに、同一の試験プログラムをそれぞれロードし、並列に実行することはできない。複数のコアがそれらのコアの共有メモリに同一の試験プログラムをそれぞれロードして同時に起動した場合、例えばコア間でメモリアドレスの衝突が発生するために、各コアは試験プログラムを正常に実行することはできない。
複数のコアの診断に、各コアで同じ試験プログラムが使用される場合、試験プログラムは1個のコア毎に順次実行される必要がある。しかし、この場合、診断に必要な時間は、コア数に比例して増加する。従って、コア数が多いプロセッサの診断には、長い時間が必要である。
複数のコアが同時に試験プログラムを実行するためには、コア毎に準備された、同時実行が可能な、使用されるアドレス等が異なる試験プログラムプログラムを、各コアが実行することも考えられる。しかし、この場合、プロセッサのコア数が多い場合、コア数と同じ数の試験プログラムを格納する必要があるため、容量の大きい記憶装置が必要である。また、この場合、プロセッサのコア数が多い場合、コア数と同じ数の試験プログラムを実装する必要があるため、開発費が増加する。
特許文献1には、マルチプロセッサ構成の大規模コンピュータ装置のための、負荷試験プログラムを実行する情報処理装置が記載されている。負荷試験プログラムは、大規模コンピュータ装置の所定部位に高負荷な状態を作る、複数の小規模試験プログラムを実行して、負荷試験を行う。小規模試験プログラムは、大規模コンピュータ装置の複数の種類のハードウェア資源のうち、種類毎に所定の数量のハードウェア資源を必要とする。負荷試験プログラムは、複数の種類のハードウェア資源が不足しない最大数の小規模試験プログラムを、大規模コンピュータ装置に並列に実行させる。
特許文献2には、複数のプロセッサコアを1以上のプロセッサコアからなる複数のコアユニットにグループ化して管理する情報処理装置が記載されている。特許文献2の情報処理装置は、同一のコアユニットで実行されるタスク群を一つのタスクグループにする。情報処理装置は、それぞれのタスクグループに、タスクグループに固有のメモリ領域を割り当てる。特許文献2の情報処理装置は、各コアユニットのいずれかのプロセッサコアで実行されるタスクが、他のコアユニットに固有のメモリ領域にアクセスしたとき、そのアクセスを不正アクセスとして検出する。
特許文献3に記載のグローバルオーバーフロー方法では、ローカルの共有トランザクショナルメモリがオーバーフローすると、トランザクショナルメモリはシステムメモリと言った上位メモリ内へと仮想化及び/又は拡張される。
特開2009−070288号公報 特開2010−113488号公報 特表2009−537053号公報
特許文献1の技術では、どの種類のハードウェア資源も不足しない数の小規模試験プログラムが実行されるので、全てのプロセッサコアが使用されるとは限らない。従って、特許文献1ので技術は、必ずしも全てのプロセッサコアの診断を行うことはできない。
特許文献2又は3の技術では、プロセッサコアの診断を行うことはできない。
本発明の目的は、コアの診断のための、並列動作を想定せずに実装された試験プログラムによる、複数のコアの診断の時間を削減するプログラム起動装置を提供することにある。
本発明のプログラム起動装置は、プロセッサの複数のコアが共有するメモリを複数の区画に分割し、前記複数のコアの各々に対して、前記複数のコア毎に異なる前記区画を割り当てる区画割り当て手段と、前記区画にロードされて前記コアによって実行され、ロードされた前記区画のメモリをアクセスするプログラムであって、他の前記コアとのメモリアクセス競合がないことを前提に実装されたプログラムを記憶するプログラム記憶手段と、前記区画の各々に前記プログラムをロードし、前記複数のコアに前記プログラムを起動する指示を送信し、前記複数のコアに前記プログラムを並列に実行させるプログラム起動手段と、を含む。
本発明のプログラム起動方法は、プロセッサの複数のコアが共有するメモリを複数の区画に分割し、前記複数のコアの各々に対して、前記複数のコア毎に異なる前記区画を割り当て、前記区画にロードされて前記コアによって実行され、ロードされた前記区画のメモリをアクセスするプログラムであって、他の前記コアとのメモリアクセス競合がないことを前提に実装されたプログラムをプログラム記憶手段に記憶し、前記区画の各々に前記プログラムをロードし、前記複数のコアに前記プログラムを起動する指示を送信し、前記複数のコアに前記プログラムを並列に実行させる。
本発明のプログラム起動プログラムは、コンピュータを、プロセッサの複数のコアが共有するメモリを複数の区画に分割し、前記複数のコアの各々に対して、前記複数のコア毎に異なる前記区画を割り当てる区画割り当て手段と、前記区画にロードされて前記コアによって実行され、ロードされた前記区画のメモリをアクセスするプログラムであって、他の前記コアとのメモリアクセス競合がないことを前提に実装されたプログラムを記憶するプログラム記憶手段と、前記区画の各々に前記プログラムをロードし、前記複数のコアに前記プログラムを起動する指示を送信し、前記複数のコアに前記プログラムを並列に実行させるプログラム起動手段と、して動作させる。
本発明には、コアの診断のための、並列動作を想定せずに実装された試験プログラムによる、複数のコアの診断の時間を削減できるという効果がある。
図1は、第1の実施形態の情報処理システム100の構成を表すブロック図である。 図2は、第1の実施形態の診断装置1の、プロセッサ2の診断時の動作を表すフローチャートである。 図3は、第1の実施形態の診断装置1の、コアの診断時の動作を表すフローチャートである。 図4は、割り当てられた共有メモリ3の区画の例を表す図である。 図5は、第1の実施形態の第1の変形例の、プロセッサ2の診断時の動作を表すフローチャートである。 図6は、第1の実施形態の第2の変形例の、プロセッサ2の診断時の動作を表すフローチャートである。 図1は、第2の実施形態の情報処理システム100の構成を表すブロック図である。
(第1の実施形態)
次に、本発明の第1の実施の形態について図面を参照して詳細に説明する。
図1は、本実施形態の情報処理システム100の構成を表すブロック図である。
図1を参照すると、情報処理装置100は、診断装置1と、プロセッサ2と、共有メモリ3を含む。
診断装置1は、プログラム記憶部10と、情報取得部11と、区画割り当て部12と、プログラム起動部13を含む。例えば、情報処理装置100内に実装されているBMC(Baseboard Management Controller)が、診断装置1として動作する。
プロセッサ2は、複数のコアと、それぞれのコアに対応するベースアドレスレジスタを含む。図2の例では、コアは、コア20、コア21、コア22、コア23の4個である。それぞれのコアに対応するベースアドレスレジスタは、ベースアドレスレジスタ240、ベースアドレスレジスタ241、ベースアドレスレジスタ242、ベースアドレスレジスタ243である。図2の例では、プロセッサ2は、各ベースアドレスレジスタを含むメモリアクセス制御部24を含む。
プロセッサ2は、例えばソケットにより、抜き差し可能な形で情報処理装置100に実装されている。本実施形態の以下の説明では、複数のコアを含む1個のプロセッサ2が情報処理装置100に実装される。プロセッサ2は、2個以上のLSIにより構成されていてもよい。
共有メモリ3は、プロセッサ2の各コアが共有するメモリである。
共有メモリ3は、例えばソケットにより、抜き差し可能な形で情報処理装置100に実装されている。共有メモリ3は、例えば、1個以上のメモリバンクで構成される1個以上のメモリモジュールで構成される。
各ベースアドレスレジスタには、対応するコアが使用できるメモリエリアのベースアドレスが格納される。メモリアクセス制御部24は、コアがアドレスを指定してメモリ3へのアクセスする場合、そのコアのベースアドレスレジスタに格納されているベースアドレスを加算したアドレスを生成する。そして、メモリアクセス制御部24は、コアのアクセス先のアドレスを、生成されたアドレスに変更する、アドレスの変換を行う。コアはメモリの変更されたアドレスにアクセスする。コアが実行するプログラムにおいて、メモリへのアクセス先のアドレスが指定されている場合、コアは、そのアクセス先のアドレスにベースアドレスを加算したアドレスにアクセスを行う。
プログラム記憶部10は、以下のような試験プログラムを記憶する。試験プログラムは、共有メモリ3にロードされて、プロセッサ2のコアによって実行されるプログラムである。コアは、試験プログラムを実行することにより、コア自身の診断を行う。試験プログラムは、共有メモリ3内に再配置され、プロセッサ2のコアにより実行される。そして、試験プログラムは、その試験プログラムを実行するコア以外のコアとのメモリアクセスが無いことを前提に実装されたプログラムである。すなわち、試験プログラムを実行するコアがアクセスする共有メモリ3の範囲が、他のコアによってアクセスされないことを前提に実装されているプログラムである。試験プログラムを実行するコアがアクセスする共有メモリ3の範囲が、他のコアによって読み書きされた場合、試験プログラムは正常に動作しない。このような試験プログラムは、例えば、プロセッサ2のコアが同じプログラムを実行可能な、例えばコアが1個のプロセッサが、コアの診断のために実行すること前提に実装された試験プログラムである。そして、このような試験プログラムは、前述のように、例えば、アセンブラレベルで記述され、プログラム内部でソフトウェアビジブルレジスタやメモリアドレスが細かく指定されたプログラムである。本実施形態の例では、プログラム記憶部10が記憶するプログラムは、以上のような試験プログラムである。しかし、プログラム記憶部10が記憶するプログラムは、必ずしも試験プログラムでなくてもよい。プログラム記憶部10が記憶するプログラムは、共有メモリ3にロードされてプロセッサ2のコアによって実行されるプログラムであり、そのプログラムを実行するコア以外のコアとのメモリアクセス競合が無いことを前提に実装されたプログラムであればよい。
本実施形態の例では、プロセッサ2が含むメモリアクセス制御部24が、試験プログラムを実行するコアがメモリにアクセスする際に、試験プログラム内で指定されるアドレスを実際のアクセス先のメモリのアドレスに変換する。前述のように、メモリアクセス制御部24は、試験プログラム内で指定されるアドレスと、試験プログラムを実行するコアのベースアドレスレジスタのベースアドレスを加算する、アドレス変換を行う。この場合、試験プログラムは、必ずしも、位置独立な実行形式で実装されていなくてもよい。試験プログラムが共有メモリ3上のどの位置に配置されていても、上述のアドレス変換により、コアが試験プログラムを実行可能であればよい。すなわち、試験プログラムが配置された位置に応じたベースアドレスが、試験プログラムを実行するコアのベースアドレスレジスタに設定され、上述のアドレス変換が行われることにより、コアが試験プログラムを実行できればよい。例えば、試験プログラムが、共有メモリ3上の先頭アドレスから配置されていることを前提に実装されていれば、試験プログラムが配置される領域の先頭アドレスが、試験プログラムを実行するコアのベースアドレスに設定されていればよい。試験プログラムが、共有メモリ3上の所定アドレスから配置されていることを前提に実装されていれば、試験プログラムの配置位置のアドレスから所定アドレスを引いたアドレスがベースアドレスに設定されていればよい。
試験プログラムは、位置独立な実行形式で実装されていてもよい。例えば、試験プログラムは、その試験プログラムを実行するコアのベースアドレスレジスタから読み出したベースアドレスを、試験プログラム内に指定された相対アドレスに加算してアクセス先のアドレスを生成することで、再配置可能に実装されていてもよい。試験プログラムは、ページング方式により再配置可能であるよう実装されたプログラムであってもよい。試験プログラムは、他の方式により、再配置可能であるよう実装されていてもよい。これらの場合、メモリアクセス制御部24はアドレスの変換を行わなくてもよい。
情報取得部11は、共有メモリ3のサイズを取得する。情報取得部11は、さらに、共有メモリ3のバンク構成を取得してもよい。情報処理装置100に装着されるプロセッサ2のコア数が、必ずしも同一ではない場合、情報取得部11は、さらに、プロセッサ2のコア数を取得してもよい。
区画割り当て部12は、共有メモリ3を、プロセッサ2のコアの個数と同じ数の複数の区画に分割する。そして、区画割り当て部12は、プロセッサ2の複数のコアのそれぞれに対して、コア毎に異なる区画を割り当てる。区画割り当て部12は、各コアのベースアドレスレジスタに、割り当てられた区画の先頭アドレスを設定する。前述のように、ベースアドレスレジスタは、試験プログラム内のアクセス先のメモリのアドレスと、試験プログラムを実行するコアの実際のアクセス先のメモリのアドレスとの間のオフセットを指定するレジスタである。
プログラム起動部13は、プログラム記憶部10から試験プログラムを読み出す。プログラム起動部13は、読み出した試験プログラムを、各区画にロードする。プログラム起動部13は、各区画の、例えば試験プログラムに応じて定められた、区画の先頭アドレスに対する位置から、試験プログラムを書き込んでもよい。例えば、プログラム起動部13は、各区画の、先頭アドレスから、試験プログラムを書き込む。プログラム起動部13は、試験プログラムを各区画に書き込んだ後、前記複数のコアに前記試験プログラムを起動させる指示を送信して、各コアに試験プログラムを実行させる。プログラム起動部13は、各コアに順次試験プログラム実行させるのではなく、各コアに並列に試験プログラム実行させる。
診断装置1は、プロセッサ2の複数のコアに、プログラム記憶部10に格納されているプログラムを実行させる、プログラム起動装置として動作する。
次に、本実施形態の動作について、図面を参照して詳細に説明する。
図2は、本実施形態の診断装置1の、プロセッサ2の診断時の動作を表すフローチャートである。
診断装置1は、例えば、故障したプロセッサ2が新しいプロセッサ2に交換されたことを検出した場合に、図2の動作を開始する。診断装置1は、例えば、情報処理装置100の管理者の、図示されない入力装置を介した指示により、図2の動作を開始してもよい。診断装置1は、情報処理装置100の起動時に、図2の動作を開始してもよい。
図2を参照すると、まず、情報取得部11が、共有メモリ3のメモリ容量を取得する(ステップS101)。例えば故障したプロセッサ2が、異なるコア数のプロセッサ2に交換される場合のように、プロセッサ2が含むコアの数が変化する可能性がある場合、情報取得部11は、さらに、コアの個数を取得する。
図2のフローチャートは、共有メモリ3の容量が、全てのコアに、試験プログラムを実行することができる容量のメモリ区画を割り当てるのに十分な容量な場合の、診断装置1の動作を表す。しかし、共有メモリ3を構成するメモリモジュールが着脱可能であり、共有メモリ3の容量が、全てのコアに、試験プログラムを実行することができる容量のメモリ区画を割り当てるのに、十分な容量であるとは限らない場合もある。その場合、区画割り当て部12は、共有メモリ3の容量が、全てのコアに、試験プログラムを実行することができる容量のメモリ区画を割り当てられるか否かを判定する。判定の結果、共有メモリ3の容量が十分ではない場合、診断装置1は、後述の本実施形態の第1の変形例の動作を行えばよい。判定の結果、共有メモリ3の容量が十分ではない場合、診断装置1は、各コアに、順次、試験プログラムを実行させてもよい。また、判定の結果、共有メモリ3の容量が、1個のコアが診断プログラムを実行するのに十分な容量でない場合、診断装置1は、例えば、情報処理装置100に接続された、図示されない表示装置に、エラーメッセージを表示して、動作を終了すればよい。
そして、診断装置1は、各コアの診断を行う(ステップS102)。
図3は、本実施形態の診断装置1の、コアの診断時(ステップS102)の動作を表すフローチャートである。
ステップS102の動作では、まず、区画割り当て部12が、共有メモリ3を、プロセッサ2のコアの個数と同じ数の複数の区画に分割する(ステップS103)。
区画割り当て部12は、共有メモリ3を、試験プログラムを実行するために必要なメモリ区画のサイズを上回るサイズの、プロセッサ2のコアの個数と同じ数の区画に分割する。本実施形態では、共有メモリ3のサイズは、各コアが試験プログラムを実行するために必要なメモリ区画のサイズの和より小さい。試験プログラムの実行に必要なメモリ区画のサイズは、例えば試験プログラムのロードに必要なメモリの区画のサイズと、コアが試験プログラムの実行中に読み書きを行う試験データを格納するのに必要なメモリの区画のサイズである。区画割り当て部12は、例えば、共有メモリ3を、プロセッサ2のコアの個数と同じ数の、均等なサイズの区画に分割すればよい。各区画のサイズは、試験プログラムを実行するために必要なメモリ区画のサイズを上回るサイズであれば、必ずしも同一のサイズでなくてもよい。
区画割り当て部12は、取得されたメモリ容量を、コアの数で割った容量を算出すればよい。そして、区画割り当て部12は、メモリ3を、算出した容量の区画に分割すればよい。
例えば、メモリ容量が4000(H)バイトで、共有メモリ3をシェアするコアの数が4である場合、1個のコアが使用可能なメモリ容量は1000(H)バイトである。試験プログラムの実行に必要なメモリ区画のサイズが800(H)である場合、1個のコアが使用可能なメモリ容量が、試験プログラムの実行に必要なメモリ区画のサイズより大きい。
なお、試験プログラムが、その試験プログラムを実行するプロセッサ2の各コアに、さらに、コアに割り当てられている共有メモリ3の診断を行わせるよう構成されている場合がある。その場合、ステップS103で、区画割り当て部12は、共有メモリ3全体を、コアの数と同数の区画に分割する。そうでない場合、ステップS103で、区画割り当て部12が、共有メモリ3から、前述のコア数と同じ数の区画を分割した後、共有メモリ3に分割されない区画が残ってもよい。以下のステップS104では、共有メモリ3から分割されたコア数と同じ数の区画は、いずれかのコアに割り当てられる。分割されずに残った区画は、どのコアにも割り当てられない。
次に、区画割り当て部12は、プロセッサ2の各コアに対して、コア毎に異なる、共有メモリ3の区画を割り当てる(ステップS104)。
割り当ての方法は任意の方法でよい。例えば、区画割り当て部12は、共有メモリ3の先頭アドレスに近い区画から、コアの番号順に、コアに割り当てればよい。割り当ての順番は逆でもよい。
図4は、割り当てられた共有メモリ3の区画の例を表す図である。図4の、それぞれのコア用の試験エリアが、それぞれのコアに割り当てられた、共有メモリ3の区画である。図4の例では、区画割り当て部12は、共有メモリ3のそれぞれの区画は、共有メモリ3の先頭の区画から順に、コア20、コア21、コア22、コア23に割り当てられている。
コア20に割り当てられている試験エリアは、共有メモリ3の、メモリアドレス0000(H)番地から0FFF(H)番地の区画である。同様に、コア21に割り当てられている試験エリアは、共有メモリ3の、メモリアドレス1000(H)番地から1FFF(H)番地の区画である。コア22に割り当てられている試験エリアは、共有メモリ3の、メモリアドレス2000(H)番地から2FFF(H)番地の区画である。コア23に割り当てられている試験エリアは、共有メモリ3の、メモリアドレス3000(H)番地から3FFF(H)番地の区画である。
区画割り当て部12は、各コアのベースアドレスレジスタに、割り当てられた区画の先頭アドレスを設定する(ステップS105)。区画割り当て部12は、それぞれのコアに対して、コアに対応するベースアドレスレジスタに、そのコアに割り当てられた区画の先頭アドレスを書き込む。
図4の例では、区画割り当て部12は、コア20のベースアドレスレジスタ240に、ベースアドレスとして、コア200試験エリアの先頭アドレスである0000(H)を格納する。同様に、区画割り当て部12は、コア21のベースアドレスレジスタ241に、コア21の試験エリアの先頭アドレスである1000(H)を格納する。区画割り当て部12は、コア22のベースアドレスレジスタ242に、コア22の試験エリアの先頭アドレスである2000(H)を格納する。区画割り当て部12は、コア23のベースアドレスレジスタ243に、コア23の試験エリアの先頭アドレスである3000(H)を格納する。
なお、本実施形態、本実施形態の各変形例、及び他の実施形態において、試験プログラムが、位置独立な実行形式で実装されている場合、区画割り当て部12は、ステップS105の動作を行わなくてもよい。
次に、プログラム起動部13は、試験プログラムをプログラム記憶部10から読み出す。そして、プログラム起動部13は、読み出された試験プログラムを、各区画にロードする(ステップS106)。プログラム起動部13は、例えば、メモリ3の各区画に、その区画の先頭アドレスから、試験プログラムを書き込む。
図4の例で、試験プログラム区画と試験データ区画のサイズの和が800(H)バイトである場合の、プログラム起動部13は、例えば以下の区画に試験プログラムをロードする。プログラム起動部13は、試験プログラムが動作するためのデータである試験データが存在する場合、試験データを同様に以下の区画にロードすればよい。
プログラム起動部13は、共有メモリ3の、メモリアドレス0000(H)番地から07FF(H)番地の区画に、コア20のための試験プログラムと試験データをロードする。また、プログラム起動部13は、コア21のための試験プログラムと試験データを、共有メモリ3の、メモリアドレス1000(H)番地から17FF(H)番地の区画にロードする。プログラム起動部13は、コア22の試験プログラムと試験データを、共有メモリ3の、メモリアドレス2000(H)番地から27FF(H)番地の区画にロードする。プログラム起動部13は、コア23の試験プログラムと試験データを、共有メモリ3の、メモリアドレス3000(H)番地から37FF(H)番地の区画にロードする。
プログラム起動部13がロードする試験プログラムと試験データは、全ての区画において同一である。
プログラム起動部13は、各コアに試験プログラムを起動する指示を送信し、各コアに試験プログラムを実行させる。各のコアは、試験プログラムを並列に実行する(ステップS107)。プログラム起動部13は、起動を行う指示を行う信号を、各コアに送信することにより、各コアに試験プログラムの実行を開始させればよい。
起動がかけられると、各コアは試験プログラムの実行を開始する。
コア20が試験プログラムを実行してメモリアクセスを行う場合、コア20のベースアドレスレジスタ240の値0000(H)が、試験プログラムで指定されたメモリアドレスに加算される。このことにより、試験プログラムを実行するコア20は、メモリアドレス0000(H)番地から07FF(H)番地の区画にアクセスする。この区画は、コア20に割り当てられたメモリエリアである、メモリアドレス0000(H)番地から0FFF(H)番地の区画に含まれる。
同様に、コア21が試験プログラムを実行してメモリアクセスを行う場合、コア21のベースアドレスレジスタ241の値1000(H)が、試験プログラムで指定されたメモリアドレスに加算される。このことにより、試験プログラムを実行するコア21は、メモリアドレス1000(H)番地から17FF(H)番地の区画にアクセスする。この区画は、コア21に割り当てられたメモリエリアである、メモリアドレス1000(H)番地から1FFF(H)番地の区画に含まれる。
コア22が試験プログラムを実行してメモリアクセスを行う場合、コア22のベースアドレスレジスタ302の値2000(H)が、試験プログラムで指定されたメモリアドレスに加算される。このことにより、試験プログラムを実行するコア22は、メモリアドレス2000(H)番地から27FF(H)番地の区画にアクセスする。この区画は、コア22に割り当てられたメモリエリアである、メモリアドレス2000(H)番地から2FFF(H)番地の区画に含まれる。
コア23が試験プログラムを実行してメモリアクセスを行う場合、コア23のベースアドレスレジスタ303の値3000(H)が、試験プログラムで指定されたメモリアドレスに加算される。このことにより、試験プログラムを実行するコア23は、メモリアドレス3000(H)番地から37FF(H)番地の区画にアクセスする。この区画は、コア23に割り当てられたメモリエリアである、メモリアドレス3000(H)番地から3FFF(H)番地の区画に含まれる。
以上で説明した本実施形態には、コアの診断のための、並列動作を想定せずに実装された試験プログラムによる、複数のコアの診断の時間を削減できるという効果がある。
その理由は、区画割り当て部12が、複数のコアで共有される共有メモリ3を分割して各コアに割り当てるからである。そして、区画割り当て部12は、各コアに対して、コアに割り当てられた区画の先頭アドレスをベースアドレスレジスタに設定する。そして、プログラム起動部13は、各区画に試験プログラムをロードする。プログラム起動部13は、各コアに、並列に試験プログラムを実行させる。
また、本実施形態には、複数のコアに対する診断を高速化するためのコストを削減することができるという第2の効果がある。
その理由は、コアの診断のための、並列動作を想定せずに実装された、既存の試験プログラムをそのまま使用することができるからである。
なお、プログラム記憶部10に格納され各区画にロードされる試験プログラムは、必ずしも1つのプログラムでなくてよい。プログラム起動部13は、複数のプログラムから、区画毎にプログラムを選択して選択してロードしてもよい。また、情報取得部11は、例えばステップS101で、さらに、プロセッサ2の各コアの種類を取得してもよい。そして、プログラム起動部13は、ステップS106で、取得されたコアの種類に応じて試験プログラムを選択し、各コアに割り当てられた区画に、コアの種類に応じて選択されたプログラムをロードしてもよい。診断装置1がこのように構成されていれば、例えば、プロセッサ2の複数のコアに、異なる種類のコアが含まれる場合、プログラム起動部13は、コア毎の区画に、コアの種類に応じた種類の試験プログラムをロードすることができる。
(第1の実施形態の第1の変形例)
次に、本実施形態の第1の変形例の情報処理装置100について、図面を参照して詳細に説明する。
本変形例の情報処理装置100の構成は、図1の第1の実施形態の情報処理装置100の構成と同じである。
以下では、主に、本変形例と第1の実施形態の相違点が説明される。
区画割り当て部12は、全コアに試験プログラムを実行可能な容量の区画を同時に割り当て可能か判定する。判定の結果が割り当て可能である場合、情報処理装置100は、第1の実施形態の情報処理装置100と同じ動作を行う。
判定の結果が割り当て可能でない場合、区画割り当て部12は、複数のコアを、複数のグループにグループ分けする。その際、区画割り当て部12は、各グループに含まれる全コアに試験プログラムを実行可能な容量の区画を同時に割り当て可能であるように、複数のコアのグループ分けを行う。区画割り当て部12は、さらに、コアのグループの数が最も少なくなるよう、複数のコアのグループ分けを行うことが望ましい。
そして、区画割り当て部12は、全てのグループから順に1つのグループを選択し、選択したグループに含まれる複数のコアに対して、図3のステップS103とステップS104の動作を行う。
また、プログラム起動部13は、区画割り当て部12が選択したグループに含まれ、区画割り当て部12がステップS103とステップS104の動作を行った複数のコアに対して、ステップS105からステップS107の動作を行う。
本変形例の情報処理装置100の他の構成要素は、第1の実施形態の同じ番号の構成要素と同じである。
次に、本変形例の動作について、図面を参照して詳細に説明する。
図5は、本変形例の診断装置1の、プロセッサ診断時の動作を表すフローチャートである。
ステップS101は、第1の実施形態のステップS101と同じである。
次に、区画割り当て部12は、全コアに試験プログラムを実行可能な容量の区画を同時に割り当て可能か判定する(ステップS111)。
判定の結果が割り当て可能である場合(ステップS111、Y)、情報処理装置100は、第1の実施形態と同様に、全てのコアに対して、図3のコアの診断を行う(ステップS116)。
判定の結果が割り当て可能である場合(ステップS111、N)、区画割り当て部12は、複数のコアを、複数のグループにグループ分けする(ステップS112)。
区画割り当て部12は、各グループに含まれる全コアに試験プログラムを実行可能な容量の区画を同時に割り当て可能であるように、複数のコアのグループ分けを行う。区画割り当て部12は、例えば、共有メモリ3を、均等な容量で、コアが試験プログラムを実行するのに必要な容量を下回らない最小容量の区画に分割した場合の、区画の数を算出する。区画割り当て部12は、算出された区画の数を、1グループ当たりのコアの最大数にする。そして、区画割り当て部12は、複数のコアから、算出された1グループ当たりの最大数のコアを選択し、選択したコアで構成されるグループを生成する。区画割り当て部12は、選択されていないコアが無くなるまで、グループを生成する動作を繰り返す。最後に、算出された1グループ当たりの最大数に満たない数の選択されていないコアが残った場合、それらのコアで構成されるグループを生成する。区画割り当て部12は、他の方法により、一つのグループに含まれる全コアに試験プログラムを実行可能な容量の区画が同時に割り当てられるよう、グループを生成してもよい。ただし、区画割り当て部12は、コアのグループの数が最も少なくなるよう、複数のコアのグループ分けを行うことが望ましい。
また、区画割り当て部12は、ステップS111の判定を行わなくてもよい。この場合、ステップS112で、区画割り当て部12は、複数のコアから、試験プログラムを実行可能な容量の区画を同時に割り当て可能な個数のコアを選択して、選択されたコアのグループを生成する動作を行う。そして、区画割り当て部12は、この動作を、選択されていないコアが無くなるまで繰り返す。
そして、区画割り当て部12は、グループ分けにより生成されたグループから1つのグループを選択する(ステップS113)。
そして、診断装置1は、選択されたグループに含まれる各コアに対して、図3のプロセッサ2の診断を行う(ステップS114)。
ただし、図3のステップS103において、区画割り当て部12が分割する共有メモリ3の区画の数は、選択されたグループに含まれるコアの数と同数である。
また、ステップS104において、区画割り当て部12は、選択されたグループに含まれる各コアに対して、共有メモリ3の区画を割り当てる。
さらに、ステップS105では、選択されたグループに含まれるコアだけに、区画が割り当てられている。区画割り当て部12は、選択されたグループに含まれるそれぞれのコアのベースアドレスレジスタに対して、割り当てられた区画の先頭アドレスを書き込む。
また、ステップS107で、プログラム起動部13は、選択されたグループに含まれる各コアに、試験プログラムを実行させる。
選択されたグループに含まれる各コアにおける試験プログラムによる診断の終了後、まだ未選択のグループが存在する場合(ステップS115、Y)、診断装置1の動作はステップS113に戻る。
未選択のグループが存在しない場合(ステップS115、N)、診断装置1はプロセッサ2の診断の動作を終了する。
本変形例には、さらに、各コアに同時に試験プログラムを実行させるのに十分な容量の共有メモリ3が無い場合でも、コアの診断のための、並列動作を想定せずに実装された試験プログラムによる、複数のコアの診断の時間を削減できるという効果がある。
その理由は、区画割り当て部12が、同時に試験プログラムを実行することが可能な数のコアのグループを生成するからである。区画割り当て部12は、グループ毎に、各コアに前述のように共有メモリ3の区画を割り当てる。また、プログラム起動部13は、区画割り当て部12が区画を割り当てたコアで、並列に試験プログラムを実行させる。
(第1の実施形態の第2の変形例)
次に、第1の実施形態の第2の変形例の情報処理装置100について、図面を参照して詳細に説明する。
以下では、主に、本変形例と第1の変形例の相違点が説明される。
本変形例の情報処理装置100の構成は、図1の第1の実施形態の情報処理装置100の構成と同じである。
ただし、情報取得部11が、共有メモリ3のメモリバンクの構成を取得する。
また、区画割り当て部12は、一つの区画の容量が試験プログラムを実行可能な容量を下回らず、一つのメモリバンクが二つ以上の区画に含まれないように、共有メモリ3を、複数の区画に分割する。
また、区画割り当て部12は、プロセッサ2のコアの数が、上述のように分割された共有メモリ3の区画の最大数を上回る場合、コアを複数のグループに分ける。
次に、本変形例の動作について、図面を参照して詳細に説明する。
図6は、本変形例の診断装置1の、プロセッサ診断時の動作を表すフローチャートである。
図6のステップS201以外のステップは、以下で説明が行われる点以外において、図5の第1の変形例の同じ符号のステップと同じである。
ステップS201で、情報取得部11は、共有メモリ3のメモリバンクの構成を取得する(ステップS201)。情報取得部11は、共有メモリ3の、メモリバンクの区切りのアドレスを取得すればよい。
ステップS111で、区画割り当て部12は、一つの区画の容量が試験プログラムを実行可能な容量を下回らず、一つのメモリバンクが二つ以上の区画に含まれないように、共有メモリ3を分割した場合の、区画の最大数を算出する。そして、区画割り当て部12は、算出された区画の最大数が、コアの数以上であるか判定する。本変形例では、算出された区画の最大数が、コアの数以上であれば、区画割り当て部12は、一つのメモリバンクが二つ以上の区画に含まれないように、全コアに試験プログラムを実行可能な区画を割り当てることが可能である。
算出された区画の最大数が、コアの数以上であると判定された場合(ステップS111、Y)、診断装置1は、図3のコアの診断を行う(ステップS116)。
本変形例では、図3のステップS103において、区画割り当て部12は、一つの区画の容量が試験プログラムを実行可能な容量を下回らず、一つのメモリバンクが二つ以上の区画に含まれないように、共有メモリ3を複数の区画に分割する。
算出された区画の最大数が、コアの数未満であると判定された場合(ステップS111、N)、診断装置1はステップS112の動作を行う。
ステップS112では、区画割り当て部12は、各グループに含まれるコアの数が、上述のように分割された共有メモリ3の区画の最大数を上回らないように、複数のコアを、複数のグループに分ける。
ステップS114のコアの診断でも、ステップS103において、区画割り当て部12は、一つの区画の容量が試験プログラムを実行可能な容量を下回らず、一つのメモリバンクが二つ以上の区画に含まれないように、共有メモリ3を複数の区画に分割する。
本変形例の他の動作は、第1の変形例の動作と同じである。
また、区画割り当て部12が、一つの区画の容量が試験プログラムを実行可能な容量を下回らず、一つのメモリバンクが二つ以上の区画に含まれないように、全てのコアに共有メモリ3の区画を割り当てられる場合がある。その場合の本変形例の動作は、ステップS101の後に行われるステップS201の動作と、ステップS103における上述の動作以外、第1の実施形態の動作と同じである。
本変形例には、第1の変形例と同じ効果に加えて、コアの診断をさらに高速化できるという効果がある。
その理由は、区画割り当て部12が、一つの区画の容量が試験プログラムを実行可能な容量を下回らず、一つのメモリバンクが二つ以上の区画に含まれないように、共有メモリ3を複数の区画に分割するからである。その結果、複数のコアで平行に試験プログラムを実行しても、メモリのバンク競合が発生しない。従って、メモリのバンク競合による処理速度の低下が発生しない。
(第2の実施形態)
次に、本発明の第1の実施形態について、図面を参照して詳細に説明する。
図7は、本実施形態の診断装置1の構成を表す図である。
図7を参照すると、本実施形態のプログラム起動装置1Aは、プロセッサ2の複数のコアが共有する共有メモリ3を複数の区画に分割し、前記複数のコアの各々に対して、前記複数のコア毎に異なる前記区画を割り当てる区画割り当て部12と、前記区画にロードされて前記コアによって実行され、ロードされた前記区画のメモリをアクセスするプログラムであって、他の前記コアとのメモリアクセス競合がないことを前提に実装されたプログラムを記憶するプログラム記憶部10と、前記区画の各々に前記プログラムをロードし、前記複数のコアに前記プログラムを起動する指示を送信し、前記複数のコアに前記プログラムを並列に実行させるプログラム起動部13と、を含む。
以上で説明した本実施形態には、第1の実施形態と同じ効果がある。
その理由は、第1の実施形態の効果の理由と同じである。
診断装置1は、それぞれ、コンピュータ及びコンピュータを制御するプログラム、専用のハードウェア、又は、コンピュータ及びコンピュータを制御するプログラムと専用のハードウェアの組合せにより実現することができる。
情報取得部11と、区画割り当て部12と、プログラム起動部13は、例えば、プログラムを記憶する記録媒体からメモリに読み込まれた、各部の機能を実現するための専用のプログラムと、そのプログラムを実行するプロセッサにより実現することができる。また、プログラム記憶部10は、コンピュータが含むメモリやハードディスク装置により実現することができる。あるいは、プログラム記憶部10と、情報取得部11と、区画割り当て部12と、プログラム起動部13の一部又は全部を、各部の機能を実現する専用の回路によって実現することもできる。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
1 診断装置
1A プログラム起動装置
2 プロセッサ
3 共有メモリ
10 プログラム記憶部
11 情報取得部
12 区画割り当て部
13 プログラム起動部
20、21、22、23 コア
24 メモリアクセス制御部
100 情報処理装置
240、241、242、243 ベースアドレスレジスタ

Claims (10)

  1. プロセッサの複数のコアが共有するメモリを複数の区画に分割し、前記複数のコアの各々に対して、前記複数のコア毎に異なる前記区画を割り当てる区画割り当て手段と、
    前記区画にロードされて前記コアによって実行され、ロードされた前記区画のメモリをアクセスするプログラムであって、他の前記コアとのメモリアクセス競合がないことを前提に実装されたプログラムを記憶するプログラム記憶手段と、
    前記区画の各々に前記プログラムをロードし、前記複数のコアに前記プログラムを起動する指示を送信し、前記複数のコアに前記プログラムを並列に実行させるプログラム起動手段と、
    を含むプログラム起動装置。
  2. 前記プログラムは、前記メモリ上の異なるアドレスにロードされても前記コアが実行可能に作成されており、
    前記プログラム起動手段は、一つの前記プログラムを、異なるアドレスを持つ各々の前記区画のロードする
    請求項1に記載のプログラム起動装置。
  3. 前記メモリのメモリバンクの構成を取得する前記情報取得手段を含み、
    前記区画割り当て手段は、単一の前記メモリバンクが複数の前記区画に含まれないよう前記区画を割り当てる
    請求項1又は2に記載のプログラム起動装置。
  4. 前記区画割り当て手段は、前記複数のコアを複数のグループに分け、前記グループ毎に、当該グループに含まれる複数の前記コアに前記区画の割り当てを行い、
    前記プログラム起動手段は、前記コアへの前記区画の割り当てが行われた前記グループに含まれる、複数の前記コアに、前記プログラムを並列に実行させる
    請求項1乃至3のいずれかに記載のプログラム起動装置。
  5. 前記プロセッサと、前記メモリと、請求項1乃至4のいずれかに記載のプログラム起動装置とを含む情報処理システム。
  6. プロセッサの複数のコアが共有するメモリを複数の区画に分割し、前記複数のコアの各々に対して、前記複数のコア毎に異なる前記区画を割り当て、
    前記区画にロードされて前記コアによって実行され、ロードされた前記区画のメモリをアクセスするプログラムであって、他の前記コアとのメモリアクセス競合がないことを前提に実装されたプログラムをプログラム記憶手段に記憶し、
    前記区画の各々に前記プログラムをロードし、前記複数のコアに前記プログラムを起動する指示を送信し、前記複数のコアに前記プログラムを並列に実行させる
    プログラム起動方法。
  7. コンピュータを、
    プロセッサの複数のコアが共有するメモリを複数の区画に分割し、前記複数のコアの各々に対して、前記複数のコア毎に異なる前記区画を割り当てる区画割り当て手段と、
    前記区画にロードされて前記コアによって実行され、ロードされた前記区画のメモリをアクセスするプログラムであって、他の前記コアとのメモリアクセス競合がないことを前提に実装されたプログラムを記憶するプログラム記憶手段と、
    前記区画の各々に前記プログラムをロードし、前記複数のコアに前記プログラムを起動する指示を送信し、前記複数のコアに前記プログラムを並列に実行させるプログラム起動手段と、
    して動作させるプログラム起動プログラム。
  8. 前記プログラムは、前記メモリ上の異なるアドレスにロードされても前記コアが実行可能に作成されており、
    前記プログラム起動プログラムは、コンピュータを、
    一つの前記プログラムを、異なるアドレスを持つ各々の前記区画のロードする前記プログラム起動手段と、
    して動作させる請求項7に記載のプログラム起動プログラム。
  9. コンピュータを、
    前記メモリのメモリバンクの構成を取得する前記情報取得手段と、
    単一の前記メモリバンクが複数の前記区画に含まれないよう前記区画を割り当てる前記区画割り当て手段と、
    して動作させる請求項7又は8に記載のプログラム起動プログラム。
  10. コンピュータを、
    前記複数のコアを複数のグループに分け、前記グループ毎に、当該グループに含まれる複数の前記コアに前記区画の割り当てを行う前記区画割り当て手段と、
    前記コアへの前記区画の割り当てが行われた前記グループに含まれる、複数の前記コアに、前記プログラムを並列に実行させる前記プログラム起動手段と、
    して動作させる請求項7乃至9のいずれかに記載のプログラム起動プログラム。
JP2012264432A 2012-12-03 2012-12-03 プログラム起動装置、プログラム起動方法、及びプログラム起動プログラム Pending JP2014109938A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012264432A JP2014109938A (ja) 2012-12-03 2012-12-03 プログラム起動装置、プログラム起動方法、及びプログラム起動プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012264432A JP2014109938A (ja) 2012-12-03 2012-12-03 プログラム起動装置、プログラム起動方法、及びプログラム起動プログラム

Publications (1)

Publication Number Publication Date
JP2014109938A true JP2014109938A (ja) 2014-06-12

Family

ID=51030525

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012264432A Pending JP2014109938A (ja) 2012-12-03 2012-12-03 プログラム起動装置、プログラム起動方法、及びプログラム起動プログラム

Country Status (1)

Country Link
JP (1) JP2014109938A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016057797A (ja) * 2014-09-09 2016-04-21 日本電気株式会社 診断プログラム実行装置、診断プログラム実行システム、診断プログラム実行方法、及び、診断プログラム実行プログラム
CN109976937A (zh) * 2019-01-30 2019-07-05 浙江中控技术股份有限公司 一种多核共享资源的诊断方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016057797A (ja) * 2014-09-09 2016-04-21 日本電気株式会社 診断プログラム実行装置、診断プログラム実行システム、診断プログラム実行方法、及び、診断プログラム実行プログラム
CN109976937A (zh) * 2019-01-30 2019-07-05 浙江中控技术股份有限公司 一种多核共享资源的诊断方法及系统

Similar Documents

Publication Publication Date Title
US8286161B2 (en) Apparatus, method, and computer program for setting and updating a relationship between a logical processor and a physical processor
CN105988874B (zh) 资源处理方法及装置
CN102081574B (zh) 用于加快系统的唤醒时间的方法和系统
CN105830026A (zh) 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法
US20120159116A1 (en) Apparatus for processing remote page fault and method thereof
JP5365847B2 (ja) 仮想化装置における物理デバイスのコンフィグレーション処理方法及びコンピュータシステム
US20080209168A1 (en) Information Processing Apparatus, Process Control Method, and Computer Program
JP6974510B2 (ja) データを処理するための方法、装置、デバイス及び媒体
US20060212642A1 (en) Partition allocation method and computer system
JP2009152790A (ja) 動的再構成支援プログラム、動的再構成支援方法、動的再構成回路、動的再構成支援装置および動的再構成システム
JP2014109938A (ja) プログラム起動装置、プログラム起動方法、及びプログラム起動プログラム
CN115757260B (zh) 数据交互方法、图形处理器及图形处理系统
CN113190170B (zh) 一种硬盘槽位排列方法、装置、存储介质及电子设备
JP5104501B2 (ja) 仮想マシンシステム、ホスト計算機、仮想マシン構築方法およびプログラム
US20130238884A1 (en) Computer-readable recording medium storing memory dump program, information processing apparatus, and memory dump method
JP5093242B2 (ja) 自己診断処理を行う情報処理装置、自己診断処理方法及び自己診断処理プログラム
JP2011204077A (ja) 情報処理装置、リソース割り当て方法、およびリソース割り当てプログラム
CN110096355B (zh) 一种共享资源分配方法、装置和设备
JP5417303B2 (ja) 仮想計算機システム及びそのインストール方法
US20120284711A1 (en) Method and Arrangement for Configuring a Resource for a Virtual Runtime Environment
JP2014178889A (ja) 情報処理装置、プログラムおよび記憶領域獲得方法
JP2016057797A (ja) 診断プログラム実行装置、診断プログラム実行システム、診断プログラム実行方法、及び、診断プログラム実行プログラム
JP5331709B2 (ja) 試験装置
JP2019139417A (ja) 情報処理装置、制御方法及び制御プログラム
JP6123510B2 (ja) 半導体装置及び半導体装置の制御方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20140822