IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日立ヴァンタラ株式会社の特許一覧

特開2024-180181データ処理システム及びデータ処理方法
<>
  • 特開-データ処理システム及びデータ処理方法 図1
  • 特開-データ処理システム及びデータ処理方法 図2
  • 特開-データ処理システム及びデータ処理方法 図3
  • 特開-データ処理システム及びデータ処理方法 図4
  • 特開-データ処理システム及びデータ処理方法 図5
  • 特開-データ処理システム及びデータ処理方法 図6
  • 特開-データ処理システム及びデータ処理方法 図7
  • 特開-データ処理システム及びデータ処理方法 図8
  • 特開-データ処理システム及びデータ処理方法 図9
  • 特開-データ処理システム及びデータ処理方法 図10
  • 特開-データ処理システム及びデータ処理方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024180181
(43)【公開日】2024-12-26
(54)【発明の名称】データ処理システム及びデータ処理方法
(51)【国際特許分類】
   G06F 11/20 20060101AFI20241219BHJP
【FI】
G06F11/20 628
【審査請求】有
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023099670
(22)【出願日】2023-06-16
(71)【出願人】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】鎌塚 友幸
(72)【発明者】
【氏名】辰馬 僚太
(72)【発明者】
【氏名】加藤 将二
(72)【発明者】
【氏名】清田 雄策
【テーマコード(参考)】
5B034
【Fターム(参考)】
5B034BB16
(57)【要約】
【課題】
FPGA回路に設置するソフトエラーに備えた通常の処理では動作しない予備の処理回路を無くしFPGAの使用リソースの効率化を図る。
【解決手段】
プログラマブルデバイスで構成された演算機と、前記演算機に接続される演算処理部とを含むデータ処理システムであって、前記演算機は、前記演算処理部から提供されるデータ処理命令を各々並列して実行する複数の処理回路と、データ処理命令を実行中の処理回路において発生したソフトエラーを検出するエラー検出部と、前記複数の処理回路の中からデータ処理命令を実行させる処理回路を選択する処理回路選択部とを有し、前記処理回路選択部は、前記エラー検出部のソフトエラー検出結果に基づいてソフトエラーが発生した処理回路を特定し、前記複数の処理回路のうちソフトエラーが発生した処理回路を除いてデータ処理命令を実行させる処理回路を選択する。
【選択図】図1
【特許請求の範囲】
【請求項1】
プログラマブルデバイスで構成された演算機と、前記演算機に接続される演算処理部とを含むデータ処理システムであって、
前記演算機は、
前記演算処理部から提供されるデータ処理命令を各々並列して実行する複数の処理回路と、
データ処理命令を実行中の処理回路において発生したソフトエラーを検出するエラー検出部と、
前記複数の処理回路の中からデータ処理命令を実行させる処理回路を選択する処理回路選択部とを有し、
前記処理回路選択部は、前記エラー検出部のソフトエラー検出結果に基づいてソフトエラーが発生した処理回路を特定し、前記複数の処理回路のうちソフトエラーが発生した処理回路を除いてデータ処理命令を実行させる処理回路を選択することを特徴とするデータ処理システム。
【請求項2】
前記演算機は、特定の周期で前記複数の処理回路に対するソフトエラーの検出および検出したソフトエラーの訂正を行うエラー検出訂正回路を有し、
前記処理回路選択部は、ソフトエラーが発生した処理回路の特定から前記周期の経過後、データ処理命令を実行させる処理回路として当該処理回路を選択対象とする請求項1記載のデータ処理システム。
【請求項3】
前記処理回路選択部は、特定の処理回路においてソフトエラーが規定回数以上発生した場合、当該処理回路をデータ処理命令を実行させる処理回路として選択しないことを特徴とする請求項1記載のデータ処理システム。
【請求項4】
前記演算機において、前記複数の処理回路は複数の処理回路群に分類され、
各処理回路群に対応して、前記処理回路選択部が設けられることを特徴とする請求項1から請求項3に記載のデータ処理システム。
【請求項5】
前記演算機は、前記複数の処理回路群の中からデータ処理命令を実行させる処理回路群を選択する処理回路群選択部を有し、
前記処理回路群選択部は、各処理回路群に属する処理回路のデータ処理命令の実行状況に基づいてデータ処理命令を実行させる処理回路群を選択する請求項4記載のデータ処理システム。
【請求項6】
プログラマブルデバイスで構成された演算機と、前記演算機に接続される演算処理部とを含むデータ処理システムにおけるデータ処理方法であって
前記演算機は、
前記演算処理部から提供されるデータ処理命令を各々並列して実行する複数の処理回路と、
データ処理命令を実行中の処理回路において発生したソフトエラーを検出するエラー検出部と、
前記複数の処理回路の中からデータ処理命令を実行させる処理回路を選択する処理回路選択部とを有し、
前記エラー検出部が、データ処理命令を実行中の処理回路においてソフトエラーの発生を検出し、
前記処理回路選択部が、前記エラー検出部のソフトエラー検出結果に基づきソフトエラーが発生した処理回路を特定し、前記複数の処理回路のうちソフトエラーが発生した処理回路を除いて前記データ処理命令を実行させる処理回路を選択することを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理システム及びデータ処理方法に関する。
【背景技術】
【0002】
FPGA(Field-Programmable Gate Array)等、プログラミングによって所要の機能を果たす機能装置に関し、継続して機能を維持させることができる機能装置、機能維持方法及び機能維持プログラムが提供されている。複数の機能部を備え、障害が発生した機能部から待機中の機能部に切り替えることにより機能を維持させる。複数の機能部、障害検出部及び切替部を備え、動作中の機能部と待機中の機能部とを設定する。即ち、障害が発生した機能部を待機中にし、待機中であった機能部を動作させる。従って、機能部に生じた障害によるシステムの動作停止を伴うことなく、継続した機能を維持することができ、機能維持によりシステムの信頼性が高められる発明が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006-53873
【発明の概要】
【発明が解決しようとする課題】
【0004】
FPGAはその構造上、中性子線やα線等のような放射線によってコンフィギュレーションメモリ(以下CRAM)に書き込まれたデータにビット反転が生じるソフトエラーが起こることがある。FPGAでソフトエラーが起きると回路構成が変化する。そのため、ソフトエラーが発生したFPGAは、反転したbitが訂正されるまでの間、装置を誤作動させたり、誤った演算結果を出力したりする。ソフトエラーが起きている間のFPGAの出力は信頼性に欠けるためエラー訂正、およびエラーの発生前後のコマンドのリトライが必要である。
【0005】
ミッションクリティカルなシステムにFPGAを組み込む場合、通常動作している処理回路に加えて予備の処理回路(予備系)を用意し、ソフトエラーによる障害に耐性を持たせる方法がある。この方法ではインアクティブな予備系を実装する必要があり、通常の処理では動作しない予備系を実装するためにFPGAの回路リソースを消費してしまう問題がある。
【課題を解決するための手段】
【0006】
本発明の課題はプログラマブルデバイスで構成された演算機と、前記演算機に接続される演算処理部とを含むデータ処理システムであって、前記演算機は、前記演算処理部から提供されるデータ処理命令を各々並列して実行する複数の処理回路と、データ処理命令を実行中の処理回路において発生したソフトエラーを検出するエラー検出部と、前記複数の処理回路の中からデータ処理命令を実行させる処理回路を選択する処理回路選択部とを有し、前記処理回路選択部は、前記エラー検出部のソフトエラー検出結果に基づいてソフトエラーが発生した処理回路を特定し、前記複数の処理回路のうちソフトエラーが発生した処理回路を除いてデータ処理命令を実行させる処理回路を選択することを特徴とするデータ処理システムにより達成される。
【発明の効果】
【0007】
本発明によれば、半導体の容量を有効に利用した冗長性あるデータ処理システムを実現できる。
【0008】
上記した以外の課題、構成及び効果は以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0009】
図1】本発明の実施例におけるシステム構成図の例
図2】本発明の実施例における演算機のハードウェア構成の例
図3】本発明の実施例におけるDMACの例
図4】本発明の実施例における演算機の詳細な構成の例
図5】本発明の実施例におけるコマンド処理の例
図6】本発明の実施例におけるエラー対応処理の例
図7】本発明の実施例におけるソフトエラー発生時のシーケンスの例
図8】本発明の実施例におけるアンコレクタブルエラー発生時の処理シーケンスの例
図9】本発明の実施例におけるIPエラー回数管理テーブルの例
図10】本発明の実施例におけるDMAC管理テーブルの例
図11】本発明の実施例におけるIP管理テーブルの例
【発明を実施するための形態】
【0010】
以下、本発明の実施例を、図面を用いて説明する。なお、実施例を説明するための各図において、同一の構成要素には同一の名称、符号を付して、その繰り返しの説明を省略する。
【0011】
本発明は後述する実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例および同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。
【0012】
また、実施例で説明する処理部は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することによりソフトウェアで実現してもよい。
【0013】
実施例で説明するテーブル、領域等はデータベース(DB)であっても良く主記憶メモリに記憶されたデータであっても良い。
【実施例0014】
図1は本発明の実施例におけるシステム構成図の例である。データ処理システム1はCPU(Central Processing Unit)2,主記憶メモリ3、演算機(FPGA(Field-Programmable Gate Array))4、ホストIF(Interface)5を含む。CPU2と演算機4は、主記憶メモリ3に対するデータバスを共有しており、それぞれ当該データバスを通して主記憶メモリ3へのデータアクセスを行う。
【0015】
CPU2にはホストIF5からホストの処理要求を受け付け要求に含まれるコマンドを解析するホストコマンド処理部7、演算機4との間でコマンド及びその処理結果の通信処理を行う演算機処理部8、システム1におけるコマンド処理の制御を行う制御部9が含まれる。
【0016】
これらの制御部、処理部は主記憶メモリ3に格納されCPU2で実行されてもよく、ハードウェアで実現されても良い。
【0017】
演算機4には1又は複数のDMAC(Direct Memory Access Controler)17、DMAコマンド処理を実行するDMAC17を選択するDMAC選択部13,DMACの状態情報等を格納するDMAC管理テーブル14、CPU2とDMAC選択部13との間でDMAコマンドの送受信を行うコマンド制御部19が含まれる。また各DMAC17には、DMAコマンドに基づきデータ処理を実行する複数の処理回路18が格納されており、さらに処理回路を選択するIP選択部15、処理回路の状態情報等を格納するIP管理テーブル16が含まれる。
【0018】
またDMAC選択部13によって選択されたDMAC17は、DMAコマンドに基づくデータ処理に際し主記憶メモリ3との間のDMAを実行する。すなわち主記憶メモリ3との間でダイレクトにコマンド・実行結果格納領域10との間のコマンドの読み出しとコマンド実行結果の格納や、データ格納領域11との間のコマンド処理用データ読み出しと処理後データの格納する。
【0019】
本実施例において演算機4にDMAC17が1つのみ搭載される場合には、DMAC選択部13は必ずしも必要では無い。
【0020】
主記憶メモリ3にはDMAコマンドの詳細とその実行結果を格納するコマンド・実行結果格納領域10、処理回路がDMAコマンドの処理を行う前のデータや処理を行った後のデータを格納するデータ格納領域11、処理回路のエラー回数の管理のためのIPエラー回数管理テーブル12が含まれる。
【0021】
CPU2と演算機4はPCIe(Peripheral Component Interconnect express)インタフェース等で接続されている。ただし接続は他の通信プロトコルを用いても良い。
【0022】
図2は本発明の実施例における演算機のハードウェア構成の例である。
【0023】
CPU2は演算機4と接続されている。この例では演算機にPCIe22とInternal Bus Switch23が実装されDMAC選択部13と接続されている。DMAC選択部13は複数のDMAC17に接続され、DMAC17には複数の処理回路18が実装されたIP群(処理回路群)26、を含む。図4にて後述するように各処理回路18は対応する各IP制御部内に設けられているが、機能の説明上図1乃至図3では簡略化して図示している。
【0024】
これらの処理回路でDMAコマンドを実行する処理回路18を選択するのがIP選択部(アービタ)15である。
【0025】
SEU(Single Event Upset)検出、訂正機構28は処理回路18のエラー訂正を行う。SEU検出、訂正機構28は具体的に、演算機4に含まれるFPGAの回路構成が格納されたCRAM(図示せず)の巡回チェックを定期的に行い、処理回路18のエラーを検知するとエラー訂正を行う。
【0026】
図3は本発明の実施例におけるDMACの例である。ここではDMAC選択部13によってDMAコマンドを実行するために一つのDMAC17が選択されたものとして説明する。
【0027】
DMAC選択部13によって選択されたDMAC17は、DMAコマンドに基づき、DMA転送により主記憶メモリ3のコマンド・実行結果格納領域10からDMAコマンドに関する情報を、取得したDMAコマンドに基づきデータ格納領域11から処理用データを読み出す。
【0028】
選択されたDMAC17におけるIP選択部15はDMAコマンド及び処理用データを受け取り、データ処理対象として選択した処理回路18へ送付する。図3では処理回路18のうちIP0が選択されたものとして図示されている。選択された処理回路IP0はDMAコマンドを実行し、コマンド実行結果と処理後データとを出力する。選択されたDMAC17はDMAにより、コマンド実行結果と処理後データとをそれぞれコマンド・実行結果格納領域10とデータ格納領域11にそれぞれ格納する。
選択された処理回路IP0がコマンド処理中にエラーを発生した場合は選択の対象から除外し、他の選択対象候補の処理回路を選択してコマンド処理を継続する。
【0029】
図4は発明の実施例における演算機4の詳細な構成の例である。DMAC17にはDMAC選択部13からDMAコマンドを受信する受信部42、処理回路18の処理結果をDMAC選択部13へ送信する送信部43、DMAコマンドを実行する処理回路18を選択して出力するIP選択部15を備える。
【0030】
各IP制御部41はそれぞれ処理回路18と処理回路18で発生したソフトエラーを検出するエラー検出回路45を備える。エラー検出回路45は処理回路18の回路構成の変化を検出することでソフトエラーの発生を検出する。回路構成の変化の検出方法としては(1)処理回路内部の伝送路に誤り訂正符号を付加する(2)圧縮したデータを即時伸長し、得られた結果を元データと突合する(処理回路18がデータの圧縮伸長に対応する場合)(3)データの復号時、予め付与された誤り検出符号を検証する(処理回路18がデータの暗号復号化に対応する場合)が挙げられるが、これ以外の方法を採用してもよい。
【0031】
次に本実施例で使用するテーブルについて図9図11を用いて説明する。
【0032】
図9は本発明の実施例におけるIPエラー回数管理テーブル12の例である。IPエラー回数管理テーブル12は主記憶メモリ3に格納され、各DMACを識別する#DMAC番号111欄と、各DMACにおいて各処理回路を識別する#IP番号112欄と、#IP番号に対応する処理回路でのエラー発生回数113欄と、#IP番号に対応する処理回路におけるエラー回数閾値115欄とを備える。
【0033】
IPエラー回数管理テーブル12は、CPU2の制御部19によって参照され、各DMACが備える処理回路18毎にエラーの発生回数113が格納される。そして、エラー発生回数113が予め定められた回数になったとき後述するIP管理テーブル16のアービタ参加不可欄134を1(ON)にして選択対象外とするために用いられる。
【0034】
図10は本発明の実施例におけるDMAC管理テーブル14の例である。DMAC管理テーブル14は演算機4に格納され、#DMAC番号121欄と、#DMAC番号に対応するDMACに属するすべての処理回路が処理中かを示すBusy122欄と、#DMAC番号に対応するDMACがコマンドを受信可能かを示すコマンド受信可能欄123とを備える。
システムが複数のDMACを備える場合にはDMAC選択部13は本テーブルを用いてDMACの使用を管理する。DMACが備える全ての処理回路18が処理中の場合は全ての処理回路18がBusy欄122をON(1)にすることにより当該DMACが選択されないようにする。この例ではすべての処理回路18が処理中のときコマンド受信可能欄123をNoにすることにより当該DMACが選択されないようにしている。
【0035】
当該DMACが保有する処理回路18の数と処理中の処理回路18の数を登録する欄を設け、DMAC選択部が選択したときに処理中の処理回路18の数を1増やし、処理回路18の処理が終わったときに処理中の処理回路18の数を1減じることによりDMAC中の処理回路18の使用率を求め、使用率の低いDMACを選択できるようにしても良い。
【0036】
この他にもホストから要求される処理毎のデータ処理量が大きく異なる場合には処理数をカウントするのではなく、処理したデータ量をカウントする欄を設け、データ処理量に基づいて使用するDMACを選択するようにしても良い。
【0037】
このほかにも、DMACが保有する処理回路18のうち使用されている処理回路18の割合が多いことを示す負荷情報や、DMACの処理速度を示す性能情報等を設けて、使用優先順位の高いDMAC、使用優先順位の低いDMACがわかるようにすれば、システムを効率的に運用できる。
【0038】
さらにDMAC毎に異なる種類の処理回路18をインストールし、ホストから要求のあった処理に応じてDMACを選択するようにしても良い。
【0039】
図11は本発明の実施例におけるIP管理テーブル16の例である。IP管理テーブル16はDMAC毎に設けられ、各DMACにおいて処理回路18毎に処理中かどうかを示す処理中欄132、巡回訂正を待っているかどうかを示す巡回訂正待機中欄133、処理を行うことができないことを示すアービタ参加不可欄134、コマンドの受信可否を示すコマンド受信可能欄135を備える。
【0040】
132-134の全ての欄がOFF(0)であればコマンド受信可能欄をYesとし、処理回路18が処理可能であることを示す。このほか、処理回路18の種別、バージョン等の情報を格納することにより使用可能な処理回路18、使用優先順位の高い処理回路18を表現できる。
【0041】
次に図5を用いて本実施例のシステムにおけるコマンド処理動作について説明する。
【0042】
CPU2のホストコマンド処理部7はホストからの処理要求を受けて、要求に含まれるホストコマンドを解析し、解析結果を制御部9に受け渡す。ホストコマンドはシステム1が提供する、ホストが参照可能な論理的な記憶領域に対する指定のデータの読み出し又は書き込み命令であり、記憶領域は主記憶メモリ3に対応付けられて設定されている。
【0043】
制御部9は、受領したホストコマンドに対応した、演算機4との間でのデータ処理を伴うDMAのコマンド(以下、DMAコマンド)と、DMAコマンドの処理対象となるデータ(以下、処理対象データ)を特定し、主記憶メモリ3のコマンド・実行結果格納領域10にDMAコマンドを、データ格納領域11に処理対象データをそれぞれ格納する。
【0044】
DMAコマンドによる指示としては例えば「(主記憶メモリ3の)アドレスXXから平文を読み出して、圧縮したデータをアドレスXXに書きなさい」、「圧縮されたデータを(主記憶メモリ3の)アドレスXXから読み出して、伸長してアドレスXXに書きなさい」が挙げられる。本実施例ではDMAコマンドで指定された処理対象データのアドレスを、そのままデータ格納領域11のアドレスとしている。このような構成により、DMAコマンドが格納されたコマンド・実行結果格納領域10のアドレスにアクセスし、当該DMAコマンドを参照することで処理対象データが格納されたデータ格納領域11のアドレスを特定できる。
【0045】
その後、演算機処理部8は、コマンド・実行結果格納領域10に格納されたDMAコマンドのアドレスを含むコマンド受領通知を演算機4に送信する(S50)。尚、コマンド受領通知にはDMAコマンドのアドレスは含まれなくてもよい。この場合、DMAコマンドが格納されるコマンド・実行結果格納領域10のアドレスが予めシステム1において決められており、演算機4においてコマンド受領通知を受信したコマンド制御部19が当該アドレスにアクセスしてDMAコマンドを読み出すようにしてもよい。
【0046】
演算機4においてコマンド受領通知はPCIe22、Internal Bus Switch23を介してコマンド制御部19に送信される。コマンド制御部19は通知に含まれるコマンド・実行結果格納領域10のアドレスに基づき、主記憶メモリ3からそれぞれDMAコマンドと、当該DMAコマンドに基づき処理対象データを読み出し、DMAC選択部13に送信する。DMAコマンド、処理対象データを受信したDMAC選択部13はDMAC管理テーブル14のコマンド受信可能欄123を参照し、コマンド受信可能なDMAC17があるかどうかを判定する(S51)。ここでDMACがコマンド受信可能であるということは閉塞されていないデータ処理可能な処理回路18が少なくとも1つ、当該DMACに存在することを意味する。
【0047】
コマンド受信可能なDMAC17があったとき(S51のYes)、DMAC選択部13はコマンド受信可能なDMAC17のうちいずれか一つを選択し、DMAコマンド、処理対象データを送信する。DMACを選択する条件は、最初に見つかったコマンド受信可能なDMACを選択しても良いが、DMACの負荷状態を調べて負荷の低いDMACを選択すれば、処理を分散することができ処理効率向上に寄与する。
【0048】
コマンド受信可能なDMAC17が存在しない場合(S51のNo)、例えばすべてのDMAC17における処理回路18がコマンド処理中の場合には、DMAC選択部13はいずれかの処理回路18において処理が完了しDMAC管理テーブル14のBusy欄122がOFF(0)となったDMAC17が見つかるまで監視を続ける。
【0049】
選択されたDMAC17においてDMAコマンド、処理対象データは受信部42で受信され、IP選択部15に出力される。IP選択部15はDMAコマンド、処理対象データを受信すると、IP管理テーブル16のコマンド受信可能欄135を参照し、選択対象の処理回路18の中からコマンド受信可能な処理回路18があるかどうかを判定する(S52)。コマンド受信可能な処理回路18があるということは処理中ではなく、巡回訂正待機中でもなく、アービタ参加不可でもないデータ処理可能な処理回路18があるということを意味する。
【0050】
コマンド受信可能な処理回路18があるとき(S52のYes)、IP選択部15はコマンド受信可能な処理回路18のうちいずれか一つを選択し、コマンド受領通知を送信する。処理回路18の選択についてもエラー発生回数等の情報により、エラー発生が少ない処理回路を選択するようにすれば、エラー低減につながりより効率的な処理を行うことが可能となる。
【0051】
コマンド受信可能な処理回路18が存在しない場合(S52のNo)、IP選択部15はIP管理テーブル16のコマンド受信可能欄135がYesとなった処理回路18が見つかるまで監視を続ける。
【0052】
IP選択部15はコマンド受信可能な処理回路18を選択すると、対応するIP制御部41へDMAコマンド、処理対象データを渡す。IP制御部41は選択された処理回路18へ送信すると、処理回路18はコマンド処理を開始する(S53)。
【0053】
処理回路18はコマンド処理にあたり、処理対象であるデータが格納されたデータ格納領域11のアドレスへアクセスするためのDMAを行う。具体的には、受信部42が該当アドレスから読み出されたデータを受信し、処理回路18がデータの処理を行い、処理の完了を送信部43へ通知する。処理回路18の完了通知を受けて、送信部43が処理したデータを主記憶メモリ3へ送信することでDMAを実行する。
【0054】
図5の説明に戻り、データ格納領域11から読み出された処理対象データは受信部42で受信され、IP選択部15を経由して選択された処理回路18に出力されると、DMAコマンドに基づくデータ処理が実行される。処理回路18は処理が正常に終了すると(S54のNo)、コマンドの処理結果を含むDMAコマンドをIP選択部15、DMAC選択部13を介してコマンド制御部19に送信し、処理後データを送信部43に送信する。
【0055】
送信部43は処理後データを処理対象データが格納されたデータ格納領域11のアドレスへ直接送信して書き込む。またコマンド制御部19は処理結果と、DMAコマンドが格納されたコマンド・実行結果格納領域10のアドレスをCPU2に送信する(S57)。
【0056】
処理結果はCPU2において演算機処理部8が受信し、制御部9がDMAコマンドが格納されたコマンド・実行結果格納領域10のアドレスに応答結果を書き込む。さらに制御部9は処理結果をホストIF5を介してホストに送信する。
【0057】
処理回路18がコマンド処理中にエラー(ソフトエラーに起因するエラー含む)を発生した場合(S54のYes)、対応するエラー検出回路45がエラーを検出し、IP選択部15に通知する。エラー通知を受信したIP選択部15は、エラーが発生した処理回路の番号を含むエラーのDMAコマンドをコマンド制御部19へ送信する。コマンド制御部19はエラーのDMAコマンドをCPU2の演算機処理部8に送信し、当該DMAコマンドの受信後CPU2の制御部9はエラー対応処理を実行する(S55)。エラー対応処理の詳細は図6を用いて後述する。
【0058】
IP選択部15はIP管理テーブル16のエラーの発生した処理回路18に対応する巡回訂正待機中欄133をON(1)に、コマンド受信可能欄135をNoに設定する。
【0059】
SEU検出、訂正機構28は定期的にCRAMの巡回訂正チェックを行い、数百ミリ秒オーダーの巡回訂正周期でエラーが発生した処理回路18のエラー訂正を行う(S56)。エラーの訂正が完了するとIP選択部15はIP管理テーブル16のエラーの発生した処理回路18に対応する巡回訂正待機中欄133をOFF(0)に設定し、対応する処理中欄132およびアービタ参加不可欄134も同じくOFF(0)であれば、コマンド受信可能欄135をYesに設定する。
【0060】
またエラー検出回路45は予め定められた周期、例えば巡回訂正周期でIP管理テーブル16のアービタ参加不可欄134をリセットして対応する処理回路18を選択できるようにしても良い。このような処理により使用可能な処理回路18を有効に利用することが可能となる。
【0061】
図6にCPU2のエラー対応処理S55の例を示す。エラーが発生したDMAC17のIP選択部15からエラーのDMAコマンドを受信(S60)すると、制御部9はIPエラー回数管理テーブル12(図9)の該当する処理回路のエラー発生回数113を1増やす(S61)。当該処理回路のエラー発生回数がIPエラー回数管理テーブル12のエラー回数閾値以上かどうかを判定(S62)し、エラー回数閾値以上であればエラーコマンドが送信されたDMAC17の設定レジスタ81にアクセスし、IP管理テーブル16(図11)におけるエラーを発生した処理回路18に対応するアービタ参加不可134欄のフラグをONにする(S63)。以後アービタ参加不可欄134がOFF(0)にリセットされない限り当該処理回路18はIP選択部15による選択対象から外される。
処理回路18への処理の割り当ては、DMAC管理テーブル14、IP管理テーブル16を参照して実行される。DMAC管理テーブル14およびIP管理テーブル16の実体は、演算機4のレジスタ上に存在する。
【0062】
演算機処理部8はDMAC内の設定レジスタ81を参照し、DMAコマンドのリトライ要求を行う(S65)。すなわち演算機処理部8は、コマンド・実行結果格納領域10に格納されたDMAコマンドのアドレスを含むコマンド受領通知を演算機4に再度送信し、以後図5で説明したフローに従い再度コマンド処理動作が行われる。または演算機4のコマンド制御部19は、エラーのDMAコマンドをCPU2に送信した後、DMAコマンドが格納されたコマンド・実行結果格納領域10のアドレスにアクセスし、再度DMAコマンドを実行するようにしてもよい。
【0063】
S62でエラー発生回数がエラー回数が閾値以上でなければ、制御部9は該当コマンドのリトライを行う。
【0064】
図7は本発明の実施例におけるソフトエラー発生時のシーケンスの例である。尚、図7では、演算機4にDMAC17が一つだけ存在するか、あるいは複数のDMAC17の中からホストコマンドを処理するDMAC17が既に選択されたものとして説明する。
【0065】
CPU2の演算機処理部8からコマンド・実行結果格納領域10に格納されたDMAコマンドのアドレスを含むコマンド受領通知を受信すると、演算機4のコマンド制御部19は、当該アドレスに基づき、主記憶メモリ3からそれぞれDMAコマンド(以後図7図8ではコマンドと表記)、処理対象データを読み出し、DMAC選択部13に送信する(S71)。
【0066】
DMAC17においてIP選択部15はDMAコマンド、処理対象データを受信すると、IP管理テーブル16を参照してコマンド処理を行う処理回路18を選択し、選択した処理回路18へ転送する(S72)。この例ではDMAC17のIP_0が選択されている。IP_0でソフトエラーが発生し回路構成が変化すると、対応するエラー検出回路(図示せず)が故障を検出してエラー通知をIP選択部15へ通知する(S73)。IP選択部15はエラーが発生した処理回路の番号を含むエラーのDMAコマンド(以後図7図8ではエラーコマンドと表記)をコマンド制御部19へ返送する(S74)。
【0067】
コマンド制御部19はエラーのDMAコマンドを受信するとCPU2に送信して当該DMAコマンドのリトライ要求を行う。リトライに応じてCPU2の演算機処理部8から再度コマンド受理通知が送信されると、コマンド制御部19は主記憶メモリ3から読み出したDMAコマンドおよび処理対象データを再度DMAC17に送信しIP選択部15がこれを受信する(S75)。
【0068】
IP選択部15は、エラーの発生していない処理回路IP_xを選択して当該コマンドを転送する(S76)。IP_xが正しくコマンドを処理し要求内容のデータ処理が完了したときDMAによりデータ処理結果をデータ格納領域11へ書き込むと共にIP選択部15へ正常応答としての処理結果を含むDMAコマンドを返す(S77)。IP選択部15はコマンド制御部19へ当該DMAコマンドを返送する(S78)。この間エラーの発生したIP_0ではSEU検出、訂正機構28による巡回訂正周期(S79)でコレクタブルなエラーの訂正を行う(S80)。IP選択部15はIP_0を巡回訂正周期以上の一定時間選択対象とせず、一定時間経過後に選択対象に加える。
【0069】
図8は本発明の実施例におけるアンコレクタブルエラー発生時の処理シーケンスの例である。この例では複数のDMACを備えるシステムの場合のシーケンスを示すがDMACが一つのシステムにも適用可能である。
【0070】
CPU2の演算機処理部8からコマンド・実行結果格納領域10に格納されたDMAコマンドのアドレスを含むコマンド受領通知を受信すると(S82)、演算機4のコマンド制御部19は、当該アドレスに基づき、主記憶メモリ3からそれぞれDMAコマンド、処理対象データを読み出し、DMAC選択部13に送信する(S83)。DMAC選択部13はDMAC管理テーブル14を参照してコマンド処理を行うDMAC17としてDMAC_0を選択しDMAコマンド、処理対象データを送信する(S84)。
【0071】
DMAC_0においてDMAコマンド、処理対象データを受信したIP選択部15が処理回路IP_0を選択してコマンド処理を実行し、ソフトエラーに基づく故障検出の通知を受けてエラーコマンドを送信する一連の動作((S85)-(S88))は図7と同様のため詳細な説明は省略するが、IP選択部15が送信するエラーのDMAコマンドにはエラーが発生した処理回路IP_0の番号の他、選択されたDMAC_0の番号が含まれる。
【0072】
コマンドリトライ要求に基づきコマンド制御部19がCPU2の演算機処理部8から再度コマンド受理通知を受信すると(S92)、主記憶メモリ3からDMAコマンドおよび処理対象データを読み出して演算機4のDMAC選択部13に再度送信する(S93)。DMAC選択部13が再度DMAC_0を選択した場合IP選択部15にDMAコマンド、処理対象データが送信される(S94)。処理回路IP_0はエラー訂正が実施されていれば選択対象として認識されるため、IP選択部15が再度処理回路IP_0を選択した場合、コマンド処理が実行される(S95)。
【0073】
処理回路IP_0のエラー訂正が失敗していた場合、すなわちアンコレクタブルなエラーであった場合には、再度IP選択部15、DMAC選択部13経由でエラーのDMAコマンドが返送される((S96)-(S98))。
【0074】
エラーのDMAコマンドを受信するとCPU2の制御部9はIPエラー回数管理テーブル12におけるDMAC_0および処理回路IP_0に対応するエラー発生回数113欄の処理回路IP_0の発生回数値をインクリメントすると共に、発生回数を対応するエラー回数閾値115と比較する。発生回数が閾値以上である場合には、DMAC_0のDMAC内設定レジスタ81に格納されたIP管理テーブル16の処理回路IP_0のアービタ参加不可欄134を1(ON)に設定すると共に、コマンド受信可能欄135をNoに設定する(S101)。以後IP選択部15は処理回路IP_0をコマンド受信不可と認識し選択対象とはしない。
【0075】
以上説明したシーケンス例によれば、訂正処理では修復不可能なソフトエラーが生じた処理回路IP_0に対し、規定回数エラーコマンドが発生した場合には恒久的に選択対象から除外されるため、他のコマンド受信可能な処理回路によってコマンド処理が継続され、処理回路IP_0が選択されることによるコマンドリトライの無限ループを防止できる。
【0076】
DMAC内設定レジスタ81を用いて処理回路18のアービタ参加を制御することにより、アービタ参加条件はソフトエラー処理を行うシステムのニーズに適合した条件にIPエラー回数管理テーブル12に登録した情報を用いて決めることがより容易になる。
【0077】
1回のエラー訂正失敗で必ずしも閉塞する必要はないが、エラー訂正失敗が予め定めた回数に達したときに閉塞すれば良い。さらに、一度閉塞した処理回路18も再度動作させるため、予め定められた期間で再度使用することが可能となる。処理回路18を閉塞する条件、再度使用する条件は適用するシステムに応じて適宜調整することができる。
【0078】
上述した実施例によれば、FPGAの演算機4に1又は複数のDMAC17が含まれ、各DMAC17にはホスト150からのコマンドを処理する複数の処理回路18と、当該コマンドを受信するとコマンドを実行可能な処理回路18を選択するIP選択部15とが含まれる。コマンドを実行処理中の処理回路18にソフトエラーが発生し回路構成が変更されると、当該処理回路18のエラーがIP選択部15に通知され、IP選択部15は当該通知を受けて当該処理回路18を選択対象から除外し、他の実行可能な処理回路18を選択できる。このため、コマンド実行中の処理回路でソフトエラーが発生しても、他の実行可能な処理回路においてコマンド実行を継続でき、ソフトエラー発生に伴うFPGAの誤作動の影響を低減することができる。
【0079】
各処理回路18は通常動作する処理系として並列処理でコマンドを実行可能なため、インアクティブな予備系の回路を備えた場合と比較してFPGAの回路リソースの使用効率が高まる。またDMAC17に処理回路がN個搭載されている場合、N-1個の処理回路にエラーが発生するまでシステムダウンを回避できる。
【0080】
また、エラーが発生した処理回路18に対し、SEU検出、訂正機構28が巡回訂正周期においてエラー訂正処理を行い、回路構成の修復を実施する。当該処理回路18は周期経過後に再度IP選択部15から選択可能に設定されることで、処理回路18の冗長性が早急にリカバリーされ、ソフトエラー発生に伴うFPGAの誤作動の影響をより一層低減できる。
【0081】
またCPU2の制御部19は、エラーを発生した処理回路18からのエラーコマンドを受信することで各処理回路18におけるエラー発生回数をカウントして監視し、規定回数以上のエラー発生を検知した処理回路を閉塞したものとし同じDMAC17におけるIP選択部15から選択されないように設定する。このため、エラー訂正では修復不可能なアンコレクタブルエラーの発生した処理回路に対し、当該処理回路がエラー訂正実施後に選択可能に設定されることに起因するコマンドリトライの無限ループを回避でき、アンコレクタブルエラー発生時の可用性を向上できる。
【符号の説明】
【0082】
1 データ処理システム、2 CPU、3 主記憶メモリ、4 演算機(FPGA)、5 ホストIF、7 ホストコマンド処理部、8 演算機処理部、9 処理要求受付部、10 コマンド・実行結果格納領域、11 データ格納領域、12 IPエラー回数管理テーブル、13 DMAC選択部、14 DMAC管理テーブル、15 IP選択部、16 IP管理テーブル、17 DMAC、18 処理回路、19 コマンド制御部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11