JP7427887B2 - 情報処理装置、情報処理方法及び情報処理プログラム - Google Patents

情報処理装置、情報処理方法及び情報処理プログラム Download PDF

Info

Publication number
JP7427887B2
JP7427887B2 JP2019164045A JP2019164045A JP7427887B2 JP 7427887 B2 JP7427887 B2 JP 7427887B2 JP 2019164045 A JP2019164045 A JP 2019164045A JP 2019164045 A JP2019164045 A JP 2019164045A JP 7427887 B2 JP7427887 B2 JP 7427887B2
Authority
JP
Japan
Prior art keywords
error
processing
information
job
execution
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.)
Active
Application number
JP2019164045A
Other languages
English (en)
Other versions
JP2021043605A (ja
Inventor
仁 ▲高▼橋
崇諭 佐々木
弘次 岡本
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 JP2019164045A priority Critical patent/JP7427887B2/ja
Publication of JP2021043605A publication Critical patent/JP2021043605A/ja
Application granted granted Critical
Publication of JP7427887B2 publication Critical patent/JP7427887B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)
  • Retry When Errors Occur (AREA)
  • Debugging And Monitoring (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Description

本発明は、情報処理装置、情報処理方法及び情報処理プログラムに関する。
PCIe(Peripheral Component Interconnect Express)(登録商標)デバイスの中には、回路量削減のために回路の大きな部分を占めるデータRAM(Random Access Memory)におけるデータ保護機能をパリティ保護にとどめているものが存在する。そのようなPCIeデバイスは、データRAMがECC(Error Correction Code)の機能を有さないため、1ビットのソフトエラーなどの一過性のエラーでも報告してしまう。実際は、一過性のエラーが発生した場合、エラーが発生したPCIeデバイスを再度使用すれば、そのPCIeデバイスは正常に動作する。
PCIeデバイスを有するコンピュータシステムにおいてPCIeデバイス内でエラーが発生した場合、PCIeデバイスは、CPU(Central Processing Unit)に対して割り込みを発生させる。そのために、PCIeデバイスは、PCIeの規格で定義された割り込みパケットをCPUに向けて送信する。割り込みパケットを受信したCPUは、割り込みを既定のコアに送り、割り込みが送られたコアにおいて割り込みハンドラが呼び出される。割り込みハンドラは、エラーの有無を確認し、ログの回収やそれぞれのエラーが起こった場合の対処を実行する。
CPUのコアにおけるデバイス割り込み処理は、デバイスドライバが実行する。デバイスドライバの割込み処理の機能は、トップハーフとボトムハーフに分かれる。トップハーフは、割り込み毎にPCIeデバイスが有する割り込み要因を管理する割込要因レジスタを参照して割込み要因を取得する。以下では、割込要因レジスタからの要因の取得を、割り込み要因の刈取りという。トップハーフは、取得した割り込み要因をボトムハーフへ渡す。ボトムハーフは、割り込み要因をトップハーフから取得する。そして、ボトムハーフは、取得した個々の割り込み要因の処理を行う。
デバイス割り込み要因には、正常ジョブ完了通知とエラー通知とが存在する。ここで、ジョブとはCPUからの命令に応じて実行される処理単位を指す。PCIeデバイスの中には、ジョブを管理する回路とエラーを処理する回路とが異なるものが存在する。このようなPCIeデバイスでは、正常ジョブ完了通知の割り込みは、ジョブを管理する回路により発行される。これに対して、エラー通知の割込みは、エラーを処理する回路により発行される。
ジョブは、前に実行されたジョブの処理結果を用いて処理を行う場合がある。そのため、あるジョブの実行中にエラーが発生した場合、その後のジョブでは、エラーを含む処理結果を用いて処理を行うことでエラーを含む不正な結果が得られることになる。
複数の連続したジョブを処理する場合、結果を確定するチェックポイントがいくつかのジョブ毎に設けられる。チェックポイントで確定された結果は正常に完了した処理の結果として格納される。そこで、従来、エラーを検知した場合に現在のジョブの1つ前のチェックポイントまで戻り、ジョブを実行し直すことが行われてきた。この場合、戻る先のチェックポイントから後に実行されたジョブは破棄される。
エラーが発生した場合の対処技術として、処理実行中のパリティエラー検出時にフラグを立て、処理結果の記録後に割込み処理でフラグを確認して、エラーを検出するとホストにエラーを通知して処理を再実行する従来技術がある。また、割り込みによりパリティエラーをプロセッサに報告し、エラーを生じた命令が完了済みか否かを表す情報にしたがい、エラー発生後の各命令の再処理を行う従来技術がある。また、エラー以前の正しく実行された命令の完了情報を保持し、パリティエラーを検出した場合に完了情報を用いてエラー発生後の命令を特定して再処理を行う従来技術がある。
特開2009-187049号公報 特開2000-99406号公報 特開2007-188379号公報
しかしながら、ジョブを管理する回路とエラーを処理する回路とが異なるPCIeデバイスでは、正常ジョブ完了通知の割り込みの発行とエラー通知の割り込み通知の発行とは非同期で実行される。そのため、PCIeデバイスにおいてエラーが発生しエラー通知の割り込み要因が存在するにも関わらず、ジョブが実行され正常完了の割り込みが発行されるおそれがある。
この場合、どのジョブまでが正常に完了し、どのジョブ以降で結果が不正であるのか切り分けることが困難になる。そのため、タイミングによっては、不正な結果であるにも関わらず正常完了の割り込みが発行された状態でチェックポイントを超える可能性がある。その場合、そのチェックポイント通過後には、そのチェックポイントで確定された結果は、実際には不正な結果にも関わらず、正常に完了した処理の結果として取り扱われることになり、正しい結果を得ることが困難になる。そこで正しい結果を得るためにジョブを最初からやり直すことも考えられるが、その方法では演算効率が著しく低下してしまう。
これに対して、ジョブを管理する回路とエラーを処理する回路との間で同期を取り、エラーが発生した場合にジョブの処理を停止するなどの方法が考えられる。しかし、ジョブを管理する回路とエラーを処理する回路との間で同期をとるためには様々な処理を行うことになり構成が複雑になる。そのため、回路規模が大きくなることから、このような方法は実現が困難である。
また、処理結果の記録後に割込み処理でフラグを確認してエラーを特定しエラー以降の処理を再実行する従来技術を用いても、ジョブの処理とエラー処理とが非同期で行われる場合には、パリティエラーの情報を処理結果に適切に付加することが困難である。また、割り込みによりパリティエラーをプロセッサに報告してエラーを生じた命令が完了済みか否かを表す情報にしたがい再処理する従来技術であっても、ジョブの処理とエラー処理とが非同期で行われる場合にはエラーを生じた命令の特定が困難である。また、エラー以前の正しく実行された命令の完了情報を用いてパリティエラーを検出した場合にエラー発生後の命令を特定して再処理する従来技術であっても、ジョブの処理とエラー処理とが非同期で行われる場合には、エラー発生後の命令の特定が困難である。そのため、いずれの従来技術を用いても、不正な処理結果を正確に切り分けることは難しく、演算効率を向上させることは困難である。
開示の技術は、上記に鑑みてなされたものであって、回路規模を抑えつつ演算効率を向上させる情報処理装置、情報処理方法及び情報処理プログラムを提供することを目的とする。
本願の開示する情報処理装置、情報処理方法及び情報処理プログラムの一つの態様において、情報処理装置は、処理管理装置及び処理実行装置を含む。前記処理実行装置は、前記処理管理装置から通知された処理を実行し、前記処理の正常終了を前記処理管理装置に通知する処理実行部と、前記処理実行装置におけるエラーの発生を検出し、検出したエラーを基にエラー発生情報を生成してエラー記憶部に登録し、且つ、エラー通知を前記処理管理装置に送信するエラー検出部とを備える。前記処理管理装置は、前記エラー検出部からの前記エラー通知を受信して、前記エラー記憶部から前記エラー発生情報を取得するエラー処理部と、前記処理実行部に実行させる前記処理の実行状態を示す情報を含む処理管理情報を保持し、実行させる前記処理を前記処理実行部に通知し、前記処理実行部から受信した前記処理の実行の通知に基づく正常終了の通知の割り込み要求を受けて、前記エラー検出部による前記エラーの発生の検出状態及び前記エラー検出部により生成された前記エラー発生情報を基に、前記エラーが発生したか否かを判定し、前記エラーが発生していない場合、正常終了の情報を前記処理管理情報に残し、次に実行させる次処理を前記処理実行部に通知し、前記エラーが発生した場合、正常終了の情報に優先させて前記エラーの発生情報を前記処理管理情報に残す処理管理部とを備える。
1つの側面では、本発明は、回路規模を抑えつつ演算効率を向上させることができる。
図1は、実施例に係るサーバのハードウェア構成図である。 図2は、CPU及びPCIeデバイスのブロック図である。 図3は、割込要因レジスタのフォーマットの一例を表す図である。 図4は、エラーログレジスタのフォーマットの一例を表す図である。 図5は、ジョブ管理テーブルのフォーマットの一例を表す図である。 図6は、正常ジョブ完了通知の割り込みが発生した場合の割り込み実行処理のシーケンス図である。 図7は、エラー通知の割り込みが発生した場合の割り込み実行処理のシーケンス図である。 図8は、ジョブ完了処理とエラー処理との待ち合わせ処理を説明するための図である。 図9は、正常ジョブ完了通知の割り込みが発生した場合のジョブのステータス確認処理のフローチャートである。 図10は、プログラム実行のフローチャートである。 図11は、操作者によりチェックポイントの再実行が指示される場合のプログラム実行のフローチャートである。 図12は、PCIeデバイスのハードウェア構成図である。
以下に、本願の開示する情報処理装置、情報処理方法及び情報処理プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理方法及び情報処理プログラムが限定されるものではない。
図1は、実施例に係るサーバのハードウェア構成図である。サーバ1は、CPU10、PCIeデバイス20、メモリ30及びPCIeスイッチ40を有する。このサーバ1が、「情報処理装置」の一例にあたる。
CPU10は、バスによりメモリ30と接続される。また、CPU10は、PCIeスイッチ40を介してPCIeデバイス20と接続される。さらに、CPU10は、それぞれ他のCPU10と接続される。
CPU10は、コア11及び複数のPCIeポート12を有する。ここで、コア11は複数あってもよい。各PCIeポート12は、それぞれPCIeスイッチ40と接続する。コア11は、PCIeポート12を用いてPCIeスイッチ40を介してPCIeデバイスと通信を行う。また、コア11は、メモリ30やハードディスクなどのその他の記憶媒体に格納されるプログラムを記憶装置であるメモリ30を用いて実行する。ハードディスクは、例えば、PCIeデバイス20であってもよい。このCPU10が、「処理管理装置」の一例にあたる。
コア11は、例えば、プログラムを実行することで、PCIeデバイス20を制御するデバイスドライバを動作させる。デバイスドライバは、PCIeスイッチ40を介してジョブをPCIeデバイス20へ通知して実行させる。ジョブは、特定のプログラムで実行される複数の一連の処理における1つの処理単位である。複数の一連の処理としては、例えば、深層学習の学習処理であり、ジョブは深層学習の学習処理における段階毎の個々の演算処理である。また、コア11は、PCIeデバイス20からの割り込みを処理する。
PCIeスイッチ40は、CPU10が有する各PCIeポート12にバスにより接続される。また、PCIeスイッチ40は、複数のPCIeデバイス20にバスにより接続される。PCIeスイッチ40は、コア11と特定のPCIeデバイス20とが通信を行うように、経路を切替える。
PCIeデバイス20は、例えば、深層学習を実行するアクセラレータカードなどである。PCIeデバイス20は、コア11により実行させるデバイスドライバからジョブの通知を受けて、通知されたジョブを実行し、実行結果をコア11へ返す。また、PCIeデバイス20は、ジョブの実行が正常に完了した場合、正常ジョブ完了通知の割込みをコア11へ発行する。また、PCIeデバイス20は、エラーが発生した場合、エラー通知の割込みをコア11へ発行する。このPCIeデバイス20が、「処理実行装置」の一例にあたる。
図2は、CPU及びPCIeデバイスのブロック図である。図2を参照して、CPU10及びPCIeデバイス20の詳細を説明する。
PCIeデバイス20は、PCIeポート21、レジスタ制御部22、割込要因レジスタ23、割込生成部24、ジョブ管理部25、ジョブ実行部27及びエラー検出回路28を有する。
PCIeポート21は、CPU10のPCIeポート12とPCIeバスにより接続される。そして、PCIeポート21は、PCIeポート12との間で信号を送受信する。PCIeデバイス20におけるCPU10との間の通信は、実際には、PCIeポート21を介して行われるが、以下の説明では、説明の都合上、PCIeポート21を省略して、PCIeデバイス20の各部が直接通信するように説明する。
レジスタ制御部22は、デバイスドライバ100のジョブ管理処理部102からジョブの通知を受信し、ジョブの書き込みの指示を受ける。ジョブの通知では、例えばジョブの付帯情報やステータスを含む情報が通知され、ジョブの書き込み指示では、それらジョブの通知により通知された情報を書き込む指示が行われる。そして、レジスタ制御部22は、ジョブの通知に含まれる情報をジョブ受信部251へ出力する。
また、コア11に対してPCIeデバイス20による割込みが発生すると、レジスタ制御部22は、割り込み要因の確認要求をデバイスドライバ100の割込処理部101から受ける。そして、レジスタ制御部22は、割込要因レジスタ23に格納された割り込み要因を読み出して、デバイスドライバ100の割込処理部101へ送信する。
割り込みが正常ジョブ完了通知であれば、その後、レジスタ制御部22は、ジョブテーブル252に登録されたステータス情報の確認指示をデバイスドライバ100のジョブ管理処理部102から受ける。そして、レジスタ制御部22は、ジョブ管理部25が有するジョブテーブル252に登録された指定されたジョブのステータスの情報を読み出す。そして、レジスタ制御部22は、読み出した指定されたジョブのステータスの情報をデバイスドライバ100のジョブ管理処理部102へ送信する。
また、割り込みが正常ジョブ完了通知であれば、レジスタ制御部22は、エラーログレジスタ262の確認指示をデバイスドライバ100のジョブ管理処理部102から受ける。そして、レジスタ制御部22は、エラー処理部26が有するエラーログレジスタ262に格納されたエラー情報を読み出す。次に、レジスタ制御部22は、読み出したエラー情報をデバイスドライバ100のジョブ管理処理部102へ送信する。
割込要因レジスタ23は、割り込み要因を格納する記憶領域である。図3は、割込要因レジスタのフォーマットの一例を表す図である。割込要因レジスタ23は、割込み要因を表すビットを有し、ビット毎に対応する割込み要因が割り当てられる。例えば、割込要因レジスタ23は、図3に示すように、ビット#0~#3の3ビットにより割り込み要因を表す。割込要因レジスタ23は、ビット#0がリトライ不可エラー検出を表し、ビット#1がリトライ可能エラー検出を表し、ビット#2がジョブ完了を表す。
リトライ可能エラーとは、リトライを実行することでエラーが解消される可能性のあるエラーであり、宇宙線などの影響によるソフトウェアエラーなどである。例えば、リトライ可能エラーには、メモリ上で発生した2ビットのエラー及びECCの機能を有さない回路での1ビットのパリティエラーが含まれる。また、リトライ不可エラーは、リトライを実行してもエラーが解消される見込みのないエラーであり、ハードウェアエラーである。リトライ不可エラーには、例えば、ECCの機能を有する回路において発生した2ビットエラーが含まれる。ここで、PCIeデバイス20上の回路は、制御系とデータ系を有する。PCIeデバイス20は、高密度に回路が搭載されるため、パリティチェックの機能は有するがECCの機能を有さない回路がほとんどである。ただし、制御系の回路の一部には、ECCの機能が搭載される。
割込要因レジスタ23は、リトライ可能エラー又はリトライ不可エラーの発生の通知をエラー制御回路261から受ける。リトライ可能エラーであれば、割込要因レジスタ23は、ビット#0にフラグを立ててリトライ可能エラーのエラー通知の割り込みをセットする。また、リトライ不可エラーであれば、割込要因レジスタ23は、ビット#1にフラグを立ててリトライ不可エラーのエラー通知の割込みをセットする。また、割込要因レジスタ23は、ジョブ完了の通知をジョブ管理部25の状態管理部254から受けると、ビット#2にフラグを立てて正常ジョブ完了通知の割り込みをセットする。
割込生成部24は、割込要因レジスタ23を監視する。そして、割込要因レジスタ23に割り込み要因がセットされると、割り込みの発生を通知する割り込みパケットを生成する。そして、割込生成部24は、生成した割り込みパケットをデバイスドライバ100の割込処理部101へ送信する。
ジョブ管理部25は、デバイスドライバ100から通知されたジョブをジョブ実行部27に実行させるとともにそのジョブの状態を保持する。ジョブ管理部25は、ジョブ受信部251、ジョブテーブル252、ジョブ投入部253及び状態管理部254を有する。
ジョブ受信部251は、ジョブの付帯情報やステータスを含む情報の入力をレジスタ制御部22から受ける。そして、ジョブ受信部251は、ジョブテーブル252の空いているエントリに、ジョブに割り当てられた番号とともに、ジョブの処理内容、付帯情報及びステータスを書き込む。ここで、ジョブの処理内容は、そのジョブの処理する場合にどのような処理を実行するかを表す情報である。また、付帯情報は、そのジョブを処理する際に用いる情報であり、例えばアドレス情報である。また、ステータスは、ジョブの実行状態であり、例えば、未実行、実行中及び実行済みといった情報が含まれる。ジョブ受信部251は、新たに登録したジョブのステータス状態を未実行として登録する。
ジョブ投入部253は、ジョブテーブル252に書き込まれたジョブを順番に読み出し、読み出したジョブをジョブ実行部27に順次投入して実行させる。ジョブ投入部253は、ジョブ実行部27へのジョブの投入を状態管理部254に通知する。
状態管理部254は、ジョブ実行部27へのジョブの投入の通知をジョブの番号とともにジョブ投入部253から受ける。そして、状態管理部254は、通知されたジョブのジョブテーブル252におけるステータスを実行中に変更する。
また、状態管理部254は、ジョブの実行完了の通知をジョブの番号とともにジョブ実行部27から受ける。そして、状態管理部254は、通知されたジョブのジョブテーブル252におけるステータスを実行中に変更する。さらに、状態管理部254は、通知されたジョブの正常ジョブ完了通知の割込み要因を割込要因レジスタ23にセットする。
エラー処理部26は、PCIeデバイス20においてエラーが発生した場合に、エラー他の情報を管理し、且つ、エラーに対処するための処理を実行する。エラー処理部26は、エラー制御回路261及びエラーログレジスタ262を有する。
エラー制御回路261は、エラー発生の通知をエラー検出回路28から受ける。そして、エラー制御回路261は、発生したエラーの種類及びカテゴリに対応するエラーログレジスタ262におけるステータスを、エラーの発生を表す情報に変更する。例えば、ステータスが「0」の場合にエラーの未発生を示し、「1」の場合にエラーの発生を示す場合で説明する。エラーが発生する前は各ビットのステータスの値が「0」であり、エラーが発生すると、エラー制御回路261は、そのエラーに対応するエラー種別及びカテゴリを表すビットに「1」を設定する。
次に、エラー制御回路261は、エラーログレジスタ262にセットしたエラーに対応するエラー通知の割り込み要因を割込要因レジスタ23にセットする。
図4は、エラーログレジスタのフォーマットの一例を表す図である。このエラーログレジスタ262が、「エラー記憶部」の一例にあたる。エラーログレジスタ262は、図4に示すように、ビット毎にPCIeデバイス20で発生したエラーが登録される。例えば、エラーログレジスタ262は、ビット毎に、メモリ2ビットエラー、内部パリティエラー及び内部EECエラーと言った各エラーの種類が登録される。また、エラーログレジスタ262は、各エラーがリトライ可能エラー又はリトライ不可エラーの何れかであるかを表す情報が登録される。さらに、エラーログレジスタ262には、各エラーが発生したか否かを示すステータスが登録される。
エラーログレジスタ262は、初期化されると各ステータスの値は「0」となる。そして、PCIeデバイス20でエラーが発生した場合、エラーログレジスタ262は、エラー制御回路201により発生したエラーに対応するビットにおけるステータスが「1」に変更される。
その後、エラーログレジスタ262は、エラー情報の読み出しの指示を受けて、レジスタ制御部22にエラーログを送信する。エラーログを送信したエラーログレジスタ262は、エラー制御回路201によりクリアされて各ビットにおけるステータスが0に初期化される。
ジョブ実行部27は、ジョブの投入をジョブ投入部253から受ける。そして、ジョブ実行部27は、投入されたジョブの処理内容及び付随情報を取得する。その後、ジョブ実行部27は、投入されたジョブの処理内容にしたがって付随情報を用いてジョブの処理を行う。ジョブ実行部27が実行するジョブには、例えば、演算処理やデータ転送処理が存在する。ジョブ実行部27は、ジョブの実行が完了すると状態管理部254にジョブの実行完了を通知する。このジョブ実行部27が、「処理実行部」の一例にあたる。
エラー検出回路28は、PCIeデバイス20におけるエラーの発生を検出する。例えば、エラー検出回路28は、ジョブ実行部27のジョブ実行におけるエラーの発生を検出する。ここで、図20では、エラーの検出の一例として、エラー検出回路28によるジョブ実行部27のジョブ実行におけるエラーの検出を、ジョブ実行部27からエラー検出回路28へ延びる矢印で表した。ただし、エラー検出回路28は、レジスタ制御部22、割込要因レジスタ23、割込生成部24、ジョブ管理部25及びエラー処理部26などで発生したエラーも検出する。エラー検出回路28は、エラーの検出をエラーの種類とともにエラー制御回路261に通知する。このエラー検出回路28が、「エラー検出部」の一例にあたる。
次に、CPU10におけるコア11がプログラムを実行することで動作するデバイスドライバ100について詳細に説明する。デバイスドライバ100は、図2に示すように、割込処理部101、ジョブ管理処理部102及びエラー処理部104の機能を有する。すなわち、割込処理部101、ジョブ管理処理部102及びエラー処理部104の機能は、コア11により実現される。ここでも、実際にはデバイスドライバ100の各部はPCIeポート12を介して通信を行うが、以下の説明ではPCIeポート12の仲介を省略して説明する。
割込処理部101は、割り込みの発生を通知する割り込みパケットを割込生成部24か受信する。割込処理部101は、割り込みパケットを受信することで割り込みが発生したことを確認して、レジスタ制御部22に対して割り込み要因の確認を行う。そして、割込処理部101は、割込要因レジスタ23から読み出された割り込み要因をレジスタ制御部22から受信する。
次に、割込処理部101は、受信した割り込み要因を確認して、割り込みが正常ジョブ完了通知の割込みかエラー通知の割込みかを判定する。割り込みが正常ジョブ完了通知の場合、割込処理部101は、割り込みをジョブ管理処理部102へ出力する。また、割り込みがエラー通知の場合、割込処理部101は、割り込みをジョブ管理処理部102へ出力する。割込処理部101が割り込み要因の読み出しを行うことで、割込要因レジスタ23に格納された割り込み要因は削除され、割り込みの刈取りが完了する。この割込処理部101による割り込みの読み出しが割り込み処理の機能におけるトップハーフの処理にあたる。
ジョブ管理処理部102は、ジョブ管理テーブル103を有する。図5は、ジョブ管理テーブルのフォーマットの一例を表す図である。ジョブ管理テーブル103は、ジョブに割り当てられたジョブ番号に対応させて、そのジョブで行われる処理、付帯情報及びステータスが登録される。付帯情報としては、例えば、デバイスメモリアドレスやホストメモリアドレスが登録される。デバイスメモリアドレスは、CPU10と接続されたPCIeデバイス20との間でデータの授受を行う際の、PCIeデバイス20が使用するメモリのアドレスである。また、ホストメモリアドレスは、CPU10と接続されたPCIeデバイス20との間でデータの授受を行う際の、CPU10が使用するメモリのアドレスである。このジョブ管理テーブル103が、「処理管理情報」の一例にあたる。
ジョブ管理処理部102は、コア11で生成されたジョブを受け付ける。そして、ジョブ管理処理部102は、ジョブ管理テーブル103に受け付けたジョブを登録する。次に、ジョブ管理処理部102は、ジョブ管理テーブル103に登録したジョブに含まれる処理の情報及び付帯情報をレジスタ制御部22へ送信してジョブの通知を行いジョブテーブル252に書き込ませる。また、ジョブ管理処理部102は、エラーの発生によりジョブをリトライする場合、リトライするジョブを受け付ける。そして、ジョブ管理処理部102は、受け付けたリトライするジョブをレジスタ制御部22へ通知しジョブテーブル252に書き込ませる。
ただし、エラー通知の割込みが発生した場合、ジョブ管理処理部102は、ジョブの受け付け停止の指示をエラー処理部104から受ける。その場合、ジョブ管理処理部102は、新たなジョブの受け付けを停止する。その後、エラー処理部104からジョブの受け付け再開の指示を受けると、ジョブ管理処理部102は、ジョブの受け付けを再開してジョブの通知を実行する。
ジョブを通知した後、ジョブ管理処理部102は、正常ジョブ完了通知の割り込みの入力を割込処理部101から受ける。ジョブ管理処理部102は、正常ジョブ完了通知の割り込みの入力を受けると、エラーログレジスタ262のステータスを確認し、PCIeデバイス20においてエラーが検出されたか否かを判定する。
エラーが検出された場合、ジョブ管理処理部102は、エラーログレジスタ262に登録されたエラーから、発生したエラーがリトライ可能エラーであるかリトライ不可エラーであるかを判定する。次に、ジョブ管理処理部102は、エラーログレジスタ262に登録されたエラーをジョブのステータスとしてジョブ管理テーブル103に登録する。この際、ジョブ管理処理部102は、ジョブ管理テーブル103におけるそのジョブのステータスとして既にエラーコードが登録済みの場合、ジョブ管理テーブル103に登録されたジョブのステータスとエラーログレジスタ262に登録されたエラーとをマージする。具体的には、ジョブ管理処理部102は、正常完了よりもリトライ可能エラーが、リトライ可能エラーよりもリトライ不可エラーが残るように上書きを行う。すなわち、ジョブ管理処理部102は、リトライ不可エラーと正常完了とをマージする場合、ステータスをリトライ不可エラーとする。また、ジョブ管理処理部102は、リトライ不可エラーと正常完了とをマージする場合、ステータスをリトライ不可エラーとする。
次に、ジョブ管理処理部102は、ジョブのステータスの読み出しをレジスタ制御部22に要求する。その後、ジョブ管理処理部102は、ジョブテーブル252から読み出されたジョブのステータスをジョブ管理テーブル103に登録する。この場合も、ジョブ管理処理部102は、ジョブ管理テーブル103に登録されたジョブのステータスとジョブテーブル252から読み出されたジョブのステータスとのマージを行ったうえで、ジョブ管理テーブル103への登録を行う。
その後、ジョブ管理処理部102は、ジョブ管理テーブル103を確認して、ジョブが正常完了しているか否かを判定する。この正常ジョブ完了の割り込みに基づくジョブ管理処理部102によるジョブが正常完了したか否かを判定する処理を、以下では、「ジョブ完了処理」という場合がある。
ジョブが正常完了した場合、ジョブ管理処理部102は、チェックポイントに到達したか否かを判定する。チェックポイントに到達した場合、ジョブ管理処理部102は、ジョブの処理により生成された結果のデータをメモリ30などに保存する。その後、ジョブ管理処理部102は、コア11により生成されたジョブを受け付け、受け付けたジョブをPCIeデバイス20へ通知してジョブ管理テーブル103に受け付けたジョブを登録しジョブの実行を繰り返させる。
またチェックポイントに到達していなければ、ジョブ管理処理部102は、処理を継続させるか否かを判定する。処理を継続させる場合、ジョブ管理処理部102は、コア11により生成されたジョブを受け付け、受け付けたジョブをPCIeデバイス20へ通知してジョブ管理テーブル103に受け付けたジョブを登録しジョブの実行を繰り返させる。これに対して、処理が終了した場合、ジョブ管理処理部102は、正常終了と判定して操作者に正常終了を通知する。そして、ジョブ管理処理部102は、一連のジョブを実行することで得られた結果をコア11に出力する。
また、ジョブがエラー終了した場合、ジョブ管理処理部102は、リトライ可能エラーか否かを判定する。リトライ可能エラーであれば、ジョブ管理処理部102は、チェックポイントからデータを復元する。そして、ジョブ管理処理部102は、チェックポイントからプログラムを再実行させる。
これに対して、エラーがリトライ不可エラーであれば、ジョブ管理処理部102は、エラーを通知してジョブ処理を終了させるプログラムの実行を停止する。このジョブ管理処理部102が、「処理管理部」の一例にあたる。
エラー処理部104は、エラー通知の割り込みの入力を割込処理部101から受ける。エラー処理部104は、エラー通知の割り込みの入力を受けると、ジョブ管理処理部102によるジョブの受け付けを停止させる。
次に、エラー処理部104は、PCIeデバイス20のレジスタ制御部22に対してエラーログレジスタ262の確認を要求する。その後、エラー処理部104は、エラーログレジスタ262から読み出されたエラー情報を受信する。次に、エラー処理部104は、ジョブ管理テーブル103の全てのジョブのステータスに、エラーを表す情報、すなわち、リトライ不可エラー又はリトライ可能エラーの情報をセットする。このジョブ管理テーブル103のステータスの情報に登録されたリトライ不可エラー又はリトライ可能エラーの情報が、「エラー発生情報」の一例にあたる。
その後、エラー処理部104は、エラーログレジスタ262のステータスを全てエラーの未発生を表す「0」に変更して初期化する。このエラーログレジスタ262を初期化する処理を、エラーログレジスタ262のクリアと言う場合がある。その後、エラー処理部104は、ジョブ管理処理部102のジョブの受け付けを再開させる。このエラー処理部104によるエラー通知の割り込みの処理を「エラー処理」と言う。このジョブ管理処理部102及びエラー処理部104により実行される処理が、割り込み処理の機能におけるトップハーフの処理にあたる。
このように、エラー処理部104は、ジョブ管理テーブル103にエラー情報を書き込むまでエラーログレジスタ262に登録されたエラー情報を保持し、ジョブ管理テーブル103にエラー情報を書き込むとエラーログレジスタ262をクリアする。すなわち、PCIeデバイス20においてエラーが検出されると、ジョブ管理処理部102によるジョブの正常完了の確認まで、ジョブ管理テーブル103又はエラーログレジスタ262のいずれかにエラー情報が保持される。そして、ジョブ管理処理部102は、ジョブ管理テーブル103及びエラーログレジスタ262を用いることでエラーの検出を確実に把握することができ、ジョブが正常完了したか否かを判定する。このように、非同期で行われるジョブ管理処理部102が実行するジョブの完了処理とエラー処理部104が実行するエラー処理との間で待ち合わせ処理が行われ、ジョブ管理処理部102は、エラーの発生を確実に検出することができる。
次に、図6を参照して、正常ジョブ完了通知の割り込みが発生した場合の割り込み実行処理の流れについて説明する。図6は、正常ジョブ完了通知の割り込みが発生した場合の割り込み実行処理のシーケンス図である。図6において、デバイスドライバ100とPCIeデバイス20との間を結ぶ矢印は、信号の送受信を表す。
デバイスドライバ100のジョブ管理処理部102は、ジョブをPCIeデバイス20のジョブテーブル252に書き込ませる(ステップS101)。
PCIeデバイス20のジョブ投入部253は、ジョブテーブル252に書き込まれたジョブを読み出してジョブ実行部27に投入する(ステップS102)。
PCIeデバイス20のジョブ実行部27は、ジョブ投入部253から投入されたジョブを実行する(ステップS103)。
ジョブの実行が完了すると、ジョブ実行部27は、ジョブ完了を状態管理部254に通知する(ステップS104)。
PCIeデバイス20の状態管理部254は、ジョブ完了通知を受けると、ジョブテーブル252におけるそのジョブのステータスを実行済みに変更してステータスを更新する(ステップS105)。
次に、PCIeデバイス20の状態管理部254は、PCIeデバイス20の割込要因レジスタ23に割り込み要因を登録することで、割込生成部24に割り込みを指示する(ステップS106)。
PCIeデバイス20の割込生成部24は、割込要因レジスタ23に割り込み要因が登録されると、割り込みパケットを生成する(ステップS107)。割込生成部24は、生成した割り込みパケットをデバイスドライバ100の割込処理部101へ送信する。
デバイスドライバ100の割込処理部101は、割り込みパケットを受信する(ステップS108)。
次に、デバイスドライバ100の割込処理部101は、PCIeデバイス20のレジスタ制御部22に対して割り込み要因の確認を行う(ステップS109)。
PCIeデバイス20のレジスタ制御部22は、割り込み要因の確認要求を受けると、割込要因レジスタ23に登録された割り込み要因を読み出す(ステップS110)。そして、レジスタ制御部22は、読み出した割り込み要因をデバイスドライバ100の割込処理部101へ送信する。さらに、レジスタ制御部22は、割込要因レジスタ23に登録された割り込みの情報を削除する。
デバイスドライバ100の割込処理部101は、PCIeデバイス20のレジスタ制御部22により読み出された割り込み要因を受信する。ここでは、この割り込み要因が、正常ジョブ完了通知の割り込みである場合で説明する。割込処理部101は、正常ジョブ完了通知の割り込みをデバイスドライバ100のジョブ管理処理部102に出力する。デバイスドライバ100のジョブ管理処理部102は、正常ジョブ完了通知の割り込みの入力を受けて、PCIeデバイス20のレジスタ制御部22に対してジョブステータスの確認を要求する(ステップS111)。
PCIeデバイス20のレジスタ制御部22は、ジョブステータスの確認要求を受けると、PCIeデバイス20のジョブテーブル252からジョブのステータスを読み出す。そして、レジスタ制御部22は、ジョブのステータスをジョブテーブル252から読み出す(ステップS112)。その後、レジスタ制御部22は、ジョブのステータスをデバイスドライバ100のジョブ管理処理部102に送信する。デバイスドライバ100のジョブ管理処理部102は、ジョブのステータスを受信し、受信した内容にジョブ管理テーブル103のジョブのステータスを変更する。
次に、図7を参照して、エラー通知の割り込みが発生した場合の割り込み実行処理の流れについて説明する。図7は、エラー通知の割り込みが発生した場合の割り込み実行処理のシーケンス図である。図6において、デバイスドライバ100とPCIeデバイス20との間を結ぶ矢印は、信号の送受信を表す。
PCIeデバイス20のエラー検出回路28は、PCIeデバイス20において発生したエラーを検出する(ステップS201)。
PCIeデバイス20のエラー検出回路28は、発生したエラーをPCIeデバイス20のエラー制御回路261に通知する(ステップS202)。
PCIeデバイス20のエラー制御回路261は、エラーログレジスタ262に通知されたエラーの情報を登録してセットする(ステップS203)。
次に、PCIeデバイス20のエラー制御回路261は、PCIeデバイス20の割込要因レジスタ23に割り込み要因を登録することで、割込生成部24に割り込みを指示する(ステップS204)。
PCIeデバイス20の割込生成部24は、割込要因レジスタ23に割り込み要因が登録されると、割り込みパケットを生成する(ステップS205)。割込生成部24は、生成した割り込みパケットをデバイスドライバ100の割込処理部101へ送信する。
デバイスドライバ100の割込処理部101は、割り込みパケットを受信する(ステップS206)。
次に、デバイスドライバ100の割込処理部101は、PCIeデバイス20のレジスタ制御部22に対して割り込み要因の確認を行う(ステップS207)。
PCIeデバイス20のレジスタ制御部22は、割り込み要因の確認要求を受けると、割込要因レジスタ23に登録された割り込み要因を読み出す(ステップS208)。そして、レジスタ制御部22は、読み出した割り込み要因をデバイスドライバ100の割込処理部101へ送信する。さらに、レジスタ制御部22は、割込要因レジスタ23に登録された割り込みの情報を削除する。
デバイスドライバ100の割込処理部101は、PCIeデバイス20のレジスタ制御部22により読み出された割り込み要因を受信する。ここでは、この割り込み要因が、エラー通知の割り込みである場合で説明する。割込処理部101は、エラー通知の割り込みをデバイスドライバ100のエラー処理部104に出力する。デバイスドライバ100のエラー処理部104は、正常ジョブ完了通知の割り込みの入力を受けて、デバイスドライバ100のジョブ管理処理部102にジョブの受け付けを停止させる(ステップS209)。
次に、デバイスドライバ100のエラー処理部104は、PCIeデバイス20のレジスタ制御部22に対してエラーログレジスタ262の確認を要求する(ステップS210)。
PCIeデバイス20のレジスタ制御部22は、エラーログレジスタ262の確認要求を受けると、PCIeデバイス20のエラーログレジスタ262からエラー情報を読み出す(ステップS211)。その後、レジスタ制御部22は、読み出したエラー情報をデバイスドライバ100のエラー処理部104に送信する。
次に、デバイスドライバ100のエラー処理部104は、デバイスドライバ100のジョブ管理テーブル103の全てのジョブのステータスにエラーを示す情報をセットする(ステップS212)。
その後、デバイスドライバ100のエラー処理部104は、PCIeデバイス20のエラーログレジスタ262をクリアする(ステップS213)。
その後、デバイスドライバ100のエラー処理部104は、デバイスドライバ100のジョブ管理処理部102のジョブの受け付けを再開させる(ステップS214)。
次に、図8を参照して、リトライ可能エラーが発生した場合のジョブ管理処理部102によるジョブ完了処理とエラー処理部104によるエラー処理との処理同士の待ち合わせ処理の流れについて説明する。図8は、ジョブ完了処理とエラー処理との待ち合わせ処理を説明するための図である。
ジョブ生成処理P1は、コア11により実行されるジョブを生成する処理である。ジョブ管理処理P2は、ジョブ管理処理部102により実行されるジョブの正常完了を確認する処理である。ジョブ管理処理P2は、ジョブ管理処理部102により複数のジョブについて並列で処理される。ジョブ受付制御処理P3は、エラー処理部104によりジョブ管理処理部102に対して実行される処理である。エラー処理P4は、エラー処理部104により実行される処理である。
ジョブ生成処理P1で生成されたジョブは、ジョブ受付制御処理P3で受け付けられてPCIeデバイス20へ投入される。
エラー処理P4が開始されると、エラー処理部104は、ジョブ受付制御処理P3によるジョブ受け付けを停止する(ステップS301)。これにより、エラー処理が終了するまでは、ジョブの受け付けが停止される。次に、エラー処理部104は、エラーログレジスタ262から取得したエラー情報をジョブ管理テーブル103にセットする(ステップS302)。次に、エラー処理部104は、エラーログレジスタ262をクリアする(ステップS303)。次に、エラー処理部104は、ジョブ受付制御処理P3によるジョブ受け付けを再開させる(ステップS304)。
一方、ジョブ管理処理P2が開始されると、ジョブ管理処理部102は、エラーレジスタを262確認する(ステップS311)。その後、ジョブ管理処理部102は、ジョブ管理テーブル103におけるジョブのステータスを確認する(ステップS312)。その後、ジョブのステータスが正常完了であれば、ジョブ管理処理P2で生成される次のジョブの処理に移行する。これに対して、ジョブのステータスがリトライ可能エラーであれば、エラーが発生したジョブをジョブ生成処理P1で再生成して処理を繰り返す。
図8のように、ジョブ管理処理P2とエラー処理P4とは、ステップS311とステップS303との間及びステップS312とステップS302との間で、襷掛けでエラーが発生したか否かのチェックが行われる。これにより、ジョブ完了処理とエラー処理という2つの非同期の処理同士を待ち合わせることができる。
次に、図9を参照して、正常ジョブ完了通知の割り込みが発生した場合のジョブのステータス確認処理の流れについて説明する。図9は、正常ジョブ完了通知の割り込みが発生した場合のジョブのステータス確認処理のフローチャートである。
ジョブ管理処理部102は、正常ジョブ完了通知の割り込みの入力を受けると、エラーログレジスタ262にエラー情報が存在するか否かの判定をレジスタ制御部22を介して行う(ステップS401)。
エラーログレジスタ262にエラー情報が存在しない場合(ステップS401:否定)、ジョブ管理処理部102は、ジョブが正常終了したと判定する(ステップS402)。そして、ジョブ管理処理部102は、ステップS406へ進む。
これに対して、エラーログレジスタ262にエラー情報が存在する場合(ステップS401:肯定)、ジョブ管理処理部102は、検出されたエラーがリトライ可能エラーか否かを判定する(ステップS403)。
検出されたエラーがリトライ可能エラーの場合(ステップS403:肯定)、ジョブ管理処理部102は、ジョブの実行時にリトライ可能エラーが発生したと判定する(ステップS404)。そして、ジョブ管理処理部102は、ステップS406へ進む。
一方、検出されたエラーがリトライ不可エラーの場合(ステップS403:否定)、ジョブ管理処理部102は、ジョブの実行時にリトライ不可エラーが発生したと判定する(ステップS405)。そして、ジョブ管理処理部102は、ステップS406へ進む。
その後、ジョブ管理処理部102は、ジョブ管理テーブル103のステータスにエラーコードが存在するか否かを判定する(ステップS406)。エラーコードが存在しない場合(ステップS406:否定)、ジョブ管理処理部102は、ステップS408へ進む。
これに対して、エラーコードが存在する場合(ステップS406:肯定)、ジョブ管理処理部102は、エラーログレジスタ262に登録されたエラー情報から取得したジョブのステータスとジョブ管理テーブル103から取得したジョブのステータスとをマージする(ステップS407)。
その後、ジョブ管理処理部102は、ジョブ管理テーブル103に登録されたジョブのステータスの情報を更新する(ステップS408)。
次に、図10を参照して、ジョブのステータスの判定を含むプログラム実行の全体的な流れを説明する。図10は、プログラム実行のフローチャートである。ここでのプログラムは、例えば、深層学習における学習の処理を実行するプログラムである。
ジョブ管理処理部102は、コア11から指定されたユーザコードを開始する(ステップS501)。そして、ジョブ管理処理部102は、ユーザコードに含まれるジョブをジョブテーブル252に書き込む。
ジョブ投入部253は、ジョブテーブル252に登録されたジョブをジョブ実行部27に投入する。ジョブ実行部27は、投入されたジョブを処理するための演算処理を実行する(ステップS502)。その後、割込生成部24からの割り込みを受けて、割込処理部101は、割込要因レジスタ23を確認して正常ジョブ完了通知の割り込みを受ける。そして、割込処理部101は、ジョブ管理テーブル103及びエラーログレジスタ262を用いて、ジョブが正常完了したか否かを判定する(ステップS503)。この判定処理が、図9のフローチャートなどで示したジョブ管理処理部102により実行される処理にあたる。
その後、ジョブが正常に完了した場合(ステップS503:肯定)、ジョブ管理処理部102は、チェックポイントに到達したか否かを判定する(ステップS504)。チェックポイントに到達した場合(ステップS504:肯定)、ジョブ管理処理部102は、チェックポイントまでの演算結果であるデータを保存する(ステップS505)。その後、ジョブ管理処理部102は、ステップS502へ戻る。
これに対して、チェックポイントに到達していない場合(ステップS504:否定)、ジョブ管理処理部102は、処理を繰り返すか否かを判定する(ステップS506)。ユーザコードの実行が完了した場合、ジョブ管理処理部102は、処理の繰り返しはそれ以上行わない。処理を繰り返す場合(ステップS506:肯定)、ジョブ管理処理部102は、ステップS502へ戻る。
これに対して、処理を繰り返さない場合(ステップS506:否定)、ジョブ管理処理部102は、ユーザコードの実行が正常終了したと判定する(ステップS507)。
その後、ジョブ管理処理部102は、ユーザコードの実行結果を出力する(ステップS508)。
一方、ジョブの実行中にエラーが発生してジョブが正常終了していない場合(ステップS503:否定)、ジョブ管理処理部102は、ジョブの実行をエラー終了させる(ステップS509)。
次に、ジョブ管理処理部102は、ジョブ管理テーブル103を確認して、発生したエラーがリトライ可能エラーか否かを判定する(ステップS510)。
発生したエラーがリトライ不可エラーの場合(ステップS510:否定)、ジョブ管理処理部102は、操作者に実行不可通知を送信し(ステップS511)、エラー終了の状態でユーザコードの実行を終了する。
これに対して、発生したエラーがリトライ可能エラーの場合(ステップS510:肯定)、ジョブ管理処理部102は、エラーが発生したジョブの1つ前のチェックポイントで保存したデータを取得して正常なデータを復元する(ステップS512)。
その後、ジョブ管理処理部102は、チェックポイントからのユーザコードの再実行をコア11に通知して(ステップS513)、ステップS501へ戻る。
(変形例)
以上の説明ではデバイスドライバ100が自動でチェックポイントからのユーザコードの再実行を開始する場合で説明した。ただし、運用形態はこれに限らず、例えば、デバイスドライバ100が操作者にリトライ可能エラーによるエラー終了を通知し、通知を受けた操作者が、チェックポイントからの再実行をサーバ1に指示してもよい。
図11は、操作者によりチェックポイントの再実行が指示される場合のプログラム実行のフローチャートである。図11を参照して、操作者によりチェックポイントの再実行が指示される場合のプログラム実行の流れを説明する。
ジョブ管理処理部102は、コア11から指定されたユーザコードを開始する(ステップS601)。そして、ジョブ管理処理部102は、ユーザコードに含まれるジョブをジョブテーブル252に書き込む。
ジョブ投入部253は、ジョブテーブル252に登録されたジョブをジョブ実行部27に投入する。ジョブ実行部27は、投入されたジョブを処理するための演算処理を実行する(ステップS602)。その後、割込生成部24からの割り込みを受けて、割込処理部101は、割込要因レジスタ23を確認して正常ジョブ完了通知の割り込みを受ける。そして、割込処理部101は、ジョブ管理テーブル103及びエラーログレジスタ262を用いて、ジョブが正常完了したか否かを判定する(ステップS603)。この判定処理が、図9のフローチャートなどで示したジョブ管理処理部102により実行される処理にあたる。
その後、ジョブが正常に完了した場合(ステップS603:肯定)、ジョブ管理処理部102は、チェックポイントに到達したか否かを判定する(ステップS604)。チェックポイントに到達した場合(ステップS604:肯定)、ジョブ管理処理部102は、チェックポイントまでの演算結果であるデータを保存する(ステップS605)。その後、ジョブ管理処理部102は、ステップS602へ戻る。
これに対して、チェックポイントに到達していない場合(ステップS604:否定)、ジョブ管理処理部102は、処理を繰り返すか否かを判定する(ステップS606)。ユーザコードの実行が完了した場合、ジョブ管理処理部102は、処理の繰り返しはそれ以上行わない。処理を繰り返す場合(ステップS606:肯定)、ジョブ管理処理部102は、ステップS602へ戻る。
これに対して、処理を繰り返さない場合(ステップS606:否定)、ジョブ管理処理部102は、ユーザコードの実行が正常終了したと判定する(ステップS607)。
その後、ジョブ管理処理部102は、ユーザコードの実行結果を出力する(ステップS608)。
一方、ジョブの実行中にエラーが発生してジョブが正常終了していない場合(ステップS603:否定)、ジョブ管理処理部102は、ジョブの実行をエラー終了させる(ステップS609)。
次に、ジョブ管理処理部102は、ジョブ管理テーブル103を確認して、発生したエラーがリトライ可能エラーか否かを判定する(ステップS610)。
発生したエラーがリトライ不可エラーの場合(ステップS610:否定)、ジョブ管理処理部102は、操作者に実行不可通知を送信し(ステップS611)、エラー終了の状態でユーザコードの実行を終了する。
これに対して、発生したエラーがリトライ可能エラーの場合(ステップS610:肯定)、ジョブ管理処理部102は、エラーの発生及びジョブの再実行を操作者に通知する(ステップS612)。
図12は、PCIeデバイスのハードウェア構成図である。PCIeデバイス20は、プロセッサ91、制御回路92及びPCIeポート21を有する。プロセッサ91は、バスにより制御回路92及びPCIeポート21に接続される。
制御回路92は、PCIeデバイス20用のデバイスメモリ(不図示)に接続される。デバイスメモリは、エラーログレジスタ262及び割込要因レジスタ23の機能を実現する。また、デバイスメモリは、ジョブテーブル252を格納する。さらに、デバイスメモリは、図2に例示した、レジスタ制御部22、割込生成部24、ジョブ管理部25、エラー処理部26、ジョブ実行部27及びエラー検出回路28の機能を実現するためのプログラムを含む各種プログラムを格納する。
プロセッサ91は、制御回路92を介してデバイスメモリから各種プログラムを読み出して実行する。これにより、プロセッサ91は、図2に例示した、レジスタ制御部22、割込生成部24、ジョブ管理部25、エラー処理部26、ジョブ実行部27及びエラー検出回路28の機能を実現する。
操作者は、モニタに表示されたメッセージなどにより、エラーの発生及びジョブの再実行の通知を受ける。そして、操作者は、エラーが発生したジョブの1つ前のチェックポイントを特定する。その後、操作者は、特定したチェックポイントで保存されたデータ及び再実行を開始するジョブをサーバ1に対して通知して、チェックポイントからのユーザコードの再実行をサーバ1に指示する(ステップS700)。サーバ1は、指定されたデータを用いて指定されたジョブからユーザコードを実行するようにステップS601から処理を再開する。
以上に説明したように、本実施例に係る情報処理装置では、デバイスドライバは、エラー通知の割り込みが発生した場合、エラーログレジスタに登録されたエラー情報をジョブ管理テーブル103に書き込み、その後、エラーログレジスタをクリアする。また、正常ジョブ完了通知の割り込みが発生した場合、デバイスドライバは、PCIeデバイスが有するエラーログレジスタ及びデバイスドライバが管理するジョブ管理テーブルの双方を確認してエラー検出の有無を判定する。
このように、非同期で実行されるジョブ完了処理とエラー処理という2つの処理同士を待ち合わせることができる。これにより、ジョブ完了処理において、ジョブのステータスを確認する際にそのジョブにエラーが発生している場合、エラー検出の見逃しを抑えて、確実にエラーの発生を検出することが可能となる。例えば、エラーが発生しているにもかかわらずジョブが正常に完了したと判定した状態でチェックポイントを超えてしまい、エラーを含むデータを正常のデータとして保存することを避けることができる。また、ジョブ完了処理とエラー処理との同期をとるための回路の追加は行わないため、回路規模の増大を抑えることができる。したがって、回路規模を抑えつつ演算効率を向上させることが可能となる。
1 サーバ
10 CPU
11 コア
12 PCIeポート
20 PCIeデバイス
21 PCIeポート
22 レジスタ制御部
23 割込要因レジスタ
24 割込生成部
25 ジョブ管理部
26 エラー処理部
27 ジョブ実行部
28 エラー検出回路
30 メモリ
40 PCIeスイッチ
100 デバイスドライバ
101 割込処理部
102 ジョブ管理処理部
103 ジョブ管理テーブル
104 エラー処理部

Claims (7)

  1. 処理管理装置及び処理実行装置を含む情報処理装置であって、
    前記処理実行装置は、
    前記処理管理装置から通知された処理を実行し、前記処理の正常完了を前記処理管理装置に通知する処理実行部と、
    前記処理実行装置におけるエラーの発生を検出し、検出したエラーを基にエラー発生情報を生成してエラー記憶部に登録し、且つ、エラー通知を前記処理管理装置に送信するエラー検出部とを備え、
    前記処理管理装置は、
    前記エラー検出部からのエラー通知を受信して、前記処理実行装置の前記エラー記憶部から前記エラー発生情報を取得するエラー処理部と、
    前記処理実行部に実行させる処理の実行状態を示す情報を含む処理管理情報を保持し、実行させる前記処理を前記処理実行部に通知し、前記処理実行部から受信した前記処理の実行の通知に基づく正常終了の通知の割り込み要求を受けて、前記エラー検出部による前記エラーの発生の検出状態及び前記エラー検出部により生成された前記エラー発生情報を基に、前記エラーが発生したか否かを判定し、前記エラーが発生していない場合、正常終了の情報を前記処理管理情報に残し、次に実行させる次処理を前記処理実行部に通知し、前記エラーが発生した場合、正常終了の情報に優先させて前記エラーの発生情報を前記処理管理情報に残す処理管理部とを備えた
    ことを特徴とする情報処理装置。
  2. 前記エラー処理部は、前記エラー検出部から前記エラー通知を受けた場合、前記処理管理部による前記次処理の前記処理実行部への通知を停止させることを特徴とする請求項1に記載の情報処理装置。
  3. 前記エラー処理部は、前記エラー通知の割り込みを前記処理実行装置から受信した場合、前記エラー記憶部に登録された情報を削除することを特徴とする請求項1に記載の情報処理装置。
  4. 前記エラー処理部は、前記エラー発生情報を取得すると、前記処理管理情報に含まれる前記実行状態をエラー発生を示す情報に変更することを特徴とする請求項1~3のいずれか一つに記載の情報処理装置。
  5. 前記処理管理部は、前記処理を含む複数の処理を前記処理実行部に実行させ、前記エラーが発生した場合、前記複数の処理の中のエラーが発生した時点以前の所定処理から前記処理実行部に再実行させることを特徴とする請求項1~4のいずれか一つに記載の情報処理装置。
  6. 処理管理装置及び処理実行装置を含む情報処理装置における情報処理方法であって、
    前記処理管理装置に、
    前記処理実行装置に実行させる処理の実行状態を示す情報を含む処理管理情報を保持させ、
    前記処理実行装置に対して実行させる処理を通知させ、
    前記処理実行装置に、
    前記処理管理装置から通知された処理を実行させ、前記処理の正常完了を前記処理管理装置に通知させ、
    前記処理実行装置におけるエラーの発生を検出させ、検出したエラーを基にエラー発生情報を生成してエラー記憶部に登録させ、且つ、前記エラーの検出を示すエラー通知を前記処理管理装置に送信させ、
    前記処理管理装置に、
    前記処理実行装置からの前記エラー通知を受信した場合、前記処理実行装置の前記エラー記憶部から前記エラー発生情報を取得させ、
    前記処理実行装置から受信した前記処理の実行の通知に基づく正常終了の通知の割り込み要求の発生を基に、前記処理実行装置による前記エラーの発生の検出状態及び前記エラー発生情報を基に、前記エラーが発生したか否かを判定させ、
    前記エラーが発生していない場合、正常終了の情報を前記処理管理情報に残し、次に実行させる次処理を前記処理実行装置に通知させ、
    前記エラーが発生した場合、正常終了の情報に優先させて前記エラーの発生情報を前記処理管理情報に残させる
    ことを特徴とする情報処理方法。
  7. 処理管理装置及び処理実行装置を含む情報処理装置に実行させる情報処理プログラムであって、
    前記処理管理装置に、
    前記処理実行装置に実行させる処理の実行状態を示す情報を含む処理管理情報を保持させ、
    前記処理実行装置に対して実行させる処理を通知させ、
    前記処理実行装置に、
    前記処理管理装置から通知された処理を実行させ、前記処理の正常完了を前記処理管理装置に通知させ、
    前記処理実行装置におけるエラーの発生を検出させ、検出したエラーを基にエラー発生情報を生成してエラー記憶部に登録させ、且つ、前記エラーの検出を示すエラー通知を前記処理管理装置に送信させ、
    前記処理管理装置に、
    前記処理実行装置からの前記エラー通知を受信した場合、前記処理実行装置の前記エラー記憶部から前記エラー発生情報を取得させ、
    前記処理実行装置から受信した前記処理の実行の通知に基づく正常終了の通知の割り込み要求の発生を基に、前記処理実行装置による前記エラーの発生の検出状態及び前記エラー発生情報を基に、前記エラーが発生したか否かを判定させ、
    前記エラーが発生していない場合、正常終了の情報を前記処理管理情報に残し、次に実行させる次処理を前記処理実行装置に通知させ、
    前記エラーが発生した場合、正常終了の情報に優先させて前記エラーの発生情報を前記処理管理情報に残させる
    処理をコンピュータに実行させることを特徴とする情報処理プログラム。
JP2019164045A 2019-09-09 2019-09-09 情報処理装置、情報処理方法及び情報処理プログラム Active JP7427887B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019164045A JP7427887B2 (ja) 2019-09-09 2019-09-09 情報処理装置、情報処理方法及び情報処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019164045A JP7427887B2 (ja) 2019-09-09 2019-09-09 情報処理装置、情報処理方法及び情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2021043605A JP2021043605A (ja) 2021-03-18
JP7427887B2 true JP7427887B2 (ja) 2024-02-06

Family

ID=74862986

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019164045A Active JP7427887B2 (ja) 2019-09-09 2019-09-09 情報処理装置、情報処理方法及び情報処理プログラム

Country Status (1)

Country Link
JP (1) JP7427887B2 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006137234A1 (ja) 2005-06-01 2006-12-28 Sony Corporation 情報処理装置および情報処理方法、並びにプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57212549A (en) * 1981-06-25 1982-12-27 Fujitsu Ltd Information processing device
JPH10240635A (ja) * 1996-12-25 1998-09-11 Toshiba Corp 計算機システムおよびそのシステムにおけるi/o装置の状態復元方法
US6356969B1 (en) * 1999-08-13 2002-03-12 Lsi Logic Corporation Methods and apparatus for using interrupt score boarding with intelligent peripheral device
US8943226B1 (en) * 2013-11-22 2015-01-27 Lsi Corporation Interface for heterogeneous PCI-e storage devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006137234A1 (ja) 2005-06-01 2006-12-28 Sony Corporation 情報処理装置および情報処理方法、並びにプログラム

Also Published As

Publication number Publication date
JP2021043605A (ja) 2021-03-18

Similar Documents

Publication Publication Date Title
US7685476B2 (en) Early notification of error via software interrupt and shared memory write
US8656228B2 (en) Memory error isolation and recovery in a multiprocessor computer system
US6728791B1 (en) RAID 1 read mirroring method for host adapters
US7650467B2 (en) Coordination of multiprocessor operations with shared resources
US7823008B2 (en) Maintaining consistency in a remote copy data storage system
US10983874B2 (en) Processing a recover state input/output request
US7631226B2 (en) Computer system, bus controller, and bus fault handling method used in the same computer system and bus controller
EP3608791A1 (en) Non-volatile memory switch with host isolation
US11068337B2 (en) Data processing apparatus that disconnects control circuit from error detection circuit and diagnosis method
JP4536361B2 (ja) データ転送装置、記憶デバイス制御装置、記憶デバイス制御装置の制御方法
US6604161B1 (en) Translation of PCI level interrupts into packet based messages for edge event drive microprocessors
JP7427887B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP5151580B2 (ja) コンピュータシステムおよびバス制御装置
JP4487756B2 (ja) コンピュータシステム及びシステム監視プログラム
US6701385B1 (en) Raid 1 write mirroring method for host adapters
JP5444194B2 (ja) データ転送装置、データ転送方法、コンピュータシステム
US6687853B1 (en) Checkpointing for recovery of channels in a data processing system
JP4584124B2 (ja) 情報処理装置およびそのエラー処理方法ならびに制御プログラム
US7568121B2 (en) Recovery from failure in data storage systems
US20220214910A1 (en) Information processing system, information processing apparatus, and information processing method
JP4102769B2 (ja) 情報処理システム、その故障箇所特定方法、情報処理装置
CN113792049A (zh) 保证原子性和顺序性的数据存储方法和装置
JP2017151511A (ja) 情報処理装置、動作ログ取得方法および動作ログ取得プログラム
JP4499909B2 (ja) 多重化記憶制御装置
JP5022050B2 (ja) コンピュータシステムおよびコンピュータシステムにおける命令リトライ方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220517

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230322

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231010

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231205

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: 20231226

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240108

R150 Certificate of patent or registration of utility model

Ref document number: 7427887

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150