JP2015216507A - Fpgaを搭載する装置 - Google Patents

Fpgaを搭載する装置 Download PDF

Info

Publication number
JP2015216507A
JP2015216507A JP2014098262A JP2014098262A JP2015216507A JP 2015216507 A JP2015216507 A JP 2015216507A JP 2014098262 A JP2014098262 A JP 2014098262A JP 2014098262 A JP2014098262 A JP 2014098262A JP 2015216507 A JP2015216507 A JP 2015216507A
Authority
JP
Japan
Prior art keywords
control register
fpga
control
unit
error
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
JP2014098262A
Other languages
English (en)
Inventor
慶将 草野
Yoshimasa Kusano
慶将 草野
幸久 田村
Yukihisa Tamura
幸久 田村
知遥 安井
Chiharu Yasui
知遥 安井
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2014098262A priority Critical patent/JP2015216507A/ja
Publication of JP2015216507A publication Critical patent/JP2015216507A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Logic Circuits (AREA)

Abstract

【課題】
FPGAのコンフィギュレーションRAM(CRAM)エラーからの高速復旧。
【解決手段】
ハードウエア処理による、FPGAの制御レジスタへの初期設定データ書き込み及び、エラー発生直前の制御レジスタ設定値の復元を行う。
所定の機能を定義する機能情報を一時的に保持する機能情報一時保持部と、所定の機能を実現する機能部を制御する制御レジスタと、制御レジスタを制御する制御レジスタ制御部とを有するFPGAと、制御レジスタに設定する運用情報を保持する記憶部とを備え、制御レジスタ制御部は、機能情報一時保持部での障害を検知すると、記憶部が保持する運用情報を取得し、取得した運用情報を制御レジスタに設定する装置。
【選択図】 図1

Description

本発明は、FPGA(Field Programmable Gate Array)を搭載する装置に関する。
本技術分野の背景技術として、特開2012−199755号公報(特許文献1)がある。この公A報はマイクロコンピュータ周辺装置に関するのもで、LSI(Large Scale Integrated Circuit)がマイクロコンピュータから受信した初期設定コマンドに基づく設定信号をレジスタを介して機能回路部に出力し、初期設定を行う。
ここで、レジスタにおける設定信号のデータをMTJ(Magnetic Tunnel Junction:磁気トンネル接合)素子等の不揮発性記憶素子を用いた保持回路で記憶しておく。電源再投入時には、保持回路に記憶された設定信号のデータで初期設定を行うことで高速起動を図ることが記載されている。
特開2012−199755号公報
現在、様々な電子機器に搭載されているFPGAは、コンフィギュレーションRAM(Configuration Random Access Memory)(以下、「CRAM」と呼ぶ。)と呼ばれる領域にユーザロジック情報を保持することで、自由にロジックを構築できる。このユーザロジック情報は、FPGAの外部に接続される不揮発性メモリに格納される。FPGAは、FPGAの起動時にこの不揮発性メモリから、ユーザロジック情報を読み出し、一般的にSRAM(Static Random Access Memory)で構成されるCRAMエリアに保持することで、ロジックが構築される仕組みを持つ。このSRAMで構成されるCRAMエリアは、FPGAの大規模/微細化及び、供給電源の低電圧化が進んだことにより、低エネルギーの放射線であってもソフトエラーがより高い頻度で発生し、その影響が無視できなくなってきた。
このCRAMエリアにソフトエラーが発生すると、ユーザロジックが意図しないものに変化することにより誤動作が継続することになる。FPGAメーカ各社はCRAMへのECC(Error Check and Correct:誤り検出訂正)の適用、マルチビットのエラーについては、CRAMエリアデータのハード自律復旧(部分的な再コンフィギュレーション)を実行する、ソフトエラーからのハード自律回復回路の実装を進めている。ハード自律復旧回路の例としては、CRAMエリアに保持されるデータの正常性を監視し、異常と判定された場合に、FPGAの外部不揮発メモリに格納されているユーザロジックデータから正常データを読み出し、該当エリアにこの正常データを書き込む動作を行うものである。ここで、ハード自律復旧を実施した後のロジックに含まれるフリップフロップ回路やユーザロジック内のメモリは、CRAMエリアのソフトエラーにより意図しない状態になる可能性を考慮し、ハード自律復旧で該当回路をリセットする必要がある。そのため、これらフロップ回路やメモリは初期状態に戻ってしまう。
またロジック部への設定を受け持つレジスタ部もフロップ回路やメモリで構成されるため、同様に初期状態に戻ってしまう。したがって、レジスタの初期設定及び、エラー直前の装置運用状態に即した設定状態への復旧を、CPU(Central Processing Unit)インタフェースを介し、ソフトウエア処理により行う必要がある。
特許文献1には、LSI内部に不揮発性メモリを配置することによりレジスタへの初期設定の高速化を図ることが記載されている。これは、LSI内部の不揮発性メモリに、初期設定情報や運用情報を保持し、装置の再起動やリセット後にソフトウエア処理を介さずに、ハードウエア処理により不揮発性メモリの初期設定情報又は運用情報を読み出し、回路の設定や制御を行うレジスタ部に設定をおこなうことで復旧の高速化を狙ったものである。
一方、内部ロジックを書き換え可能なFPGAでは、LSIの様に用途に応じたデバイス自体のカスタマイズにより、MTJ素子などの不揮発性メモリを配置することは困難でありソフトウエア処理によるレジスタ部への初期設定情報や運用情報の設定処理が必要となる。ソフトウエア処理による設定処理は、ソフトウエアが外部ストレージなどのMTJ素子等に比べて低速なデータ保持デバイスから初期設定情報や運用情報を読み出し、さらに、FPGAのレジスタに読み出したデータを書き込む処理が必要となるため、ハードウエア処理による復旧時間に比べて、復旧時間が増大する課題がある。
上記課題を解決するために、本発明は、所定の機能を定義する情報である機能情報を一時的に保持する機能情報一時保持部と、機能情報に基づく機能を実現する機能部を制御する制御レジスタと、制御レジスタを制御する制御レジスタ制御部とを有するFPGAと、制御レジスタに設定する運用に関する情報である運用情報を保持する記憶部と、を備え制御レジスタ制御部は、機能情報一時保持部での障害を検知すると、記憶部が保持する運用情報を取得し、取得した運用情報を制御レジスタに設定することを特徴とする装置を有する。
また、別の側面において、本発明は、所定の機能を実現する機能部を制御する制御レジスタと、制御レジスタを制御する制御レジスタ制御部とを有するFPGAと、制御レジスタに設定する運用に関する情報である運用情報を保持する記憶部と、FPGAを制御する制御部と、
を備え、制御レジスタ制御部は、制御レジスタでの障害を検知すると、障害が発生したことを通知するFPGA障害発生信号を制御部へ送信し、記憶部から運用情報を取得し、取得した運用情報を制御レジスタに設定して障害を回復し、障害から回復したことを通知するFPGA障害回復信号を前記制御部へ送信し、制御部は、FPGA障害発生信号を受信すると、FPGAに対する制御を中断し、FPGA障害回復信号を受信すると、FPGAに対する制御を再開することを特徴とする装置を有する。
さらに、別の側面において、本発明は、所定の機能を実現する機能部を、運用に関する情報である運用情報に基づいて制御する制御レジスタと、制御レジスタを制御する制御レジスタ制御部とを有するFPGAと、運用情報を保持する記憶部と、FPGAを制御する制御部と、を備え、制御レジスタ制御部は、記憶部での障害を検知すると、障害が発生したことを通知するFPGA障害発生信号を制御部へ送信し、制御レジスタから運用情報を取得し、取得した運用情報を記憶部に設定して障害を回復し、障害から回復したことを通知するFPGA障害回復信号を制御部へ送信し、制御部は、FPGA障害発生信号を受信すると、FPGAに対する制御を中断し、FPGA障害回復信号を受信すると、FPGAに対する制御を再開することを特徴とする装置を有する。
本発明によれば、ソフトエラーによるCRAMエラーからの復旧が高速化でき、さらに高いソフトエラー耐力を持つシステムを構築できる。
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
FPGAを搭載するパケット通信装置の構成例のブロック図である。 初期設定データ設定動作のシーケンス図の例である。 FPGAによるメモリ保持データ更新動作のフローチャート図の例である。 CRAMエラー復旧における制御レジスタ設定動作のシーケンス図の例である。 制御レジスタ及びメモリにエラーが発生した場合のFPGAにおける回復処理の動作のフローチャート図の例である。 制御レジスタとメモリの同一アドレスにエラーが発生した場合におけるシーケンス図の例である。 制御レジスタにエラーが発生した場合におけるシーケンス図の例である。 メモリにエラーが発生した場合におけるシーケンス図の例である。
(実施例1)
図1は、本実施例1におけるパケット通信装置の例を示したブロック図である。
光信号を受信し、光信号の処理を行う光インタフェース部138と、パケット処理を行うインタフェースパッケージ140と、パケットのスイッチングを行うパケットスイッチパッケージ139で構成されるブロック図である。パケット通信装置は、FPGAを搭載する装置(FPGA搭載装置)であり、FPGAとCPUで構成される装置であれば、通信装置以外の装置に対しても適用が可能である。
インタフェースパッケージ140は、パケット処理を行うよう構成されたFPGA100と、パケット通信装置の制御を司る制御部101と、記憶部であり、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)で構成されるメモリ103と、CPUバスセレクタ119と、FPGA100の機能を定義するユーザロジック情報(機能情報)を予め保持する機能情報保持部であるユーザロジック情報外部保持部115より構成される。FPGA100は複数存在してもよい。ユーザロジック情報外部保持部115は、FPGA100の外部に配備され、不揮発性メモリで構成され、一般的には機器の製造時にユーザロジック情報の記録がなされる。また、制御部101は、FPGA100を監視し、さまざまな制御を行うため、監視制御部101とも呼ぶ。
また、図1に示すFPGA100は、電源を投入しFPGA100が起動した後に、ユーザロジック情報外部保持部115に保持されているユーザロジック(ユーザ論理)を定義する情報であるユーザロジック情報(機能情報)を読み出して一時的に保持するCRAMであるユーザロジック情報一時保持部(機能情報一時保持部)114と、CRAM(ユーザロジック情報一時保持部)114へのユーザロジック情報の書き込みとCRAM114に発生するエラーの監視をし、訂正をするなど、CRAMを制御するCRAM制御部(機能情報制御部)113を具備するFPGA種を適用した場合の例を示しているが、同様の機構を持つFPGA種を適用してもよい。
以下では、CRAM114に発生するエラーを「CRAMエラー」と呼ぶ。また、CRAM114をCRAMエリア114と呼ぶこともある。なお、CRAM114に発生するエラーとは、中性子線等の放射線に起因するソフトエラーやデバイス故障に起因するハードエラーを想定するが、本実施例では、一時的なエラーでリセット等により復旧可能なソフトエラーがCRAM114に発生した場合を意味する。
本実施例1は、制御レジスタの初期設定及び、CRAMエラー復旧後の初期状態に戻った制御レジスタをエラー発生直前の設定状態に戻す処理を、CPUを用いたソフトウエア処理に依存せずハードウエア処理によりソフトウエア処理よりも高速に行う例である。
監視制御部101は、CPU(プロセッサ)116とCPU116を動作させ、FPGA100の初期化に必要な初期設定に関するデータ(初期設定情報)を格納するソフトウエア部104及び、各種ペリフェラルにより構成される。CPU116は、各種ペリフェラル等に対する監視及び制御をプログラマブルに実施可能な汎用ポート117を有し、ソフトウエア部104として、メモリ(図示せず)に格納されたプログラムを実行することによって、各機能が実現される。また、各種ペリフェラルについては記載を省略する。
次に、FPGA100について説明する。ユーザロジック部102は、FPGA100を使用するユーザが定義したロジックを示し、CRAM114に保持されているユーザロジック情報に従い、ユーザが定義するロジックが形成される。ユーザロジック部102の例としては、パケット処理部105と、パケット処理部105を制御信号群135により制御する制御レジスタ106と、制御レジスタ106の運用設定を行い、制御レジスタ106を制御して、FPGA100を適用する装置においてユーザが定義する所望の機能を実現する制御レジスタ制御部112で構成される。
制御レジスタ制御部112は、制御レジスタ106を制御し、制御レジスタ106に発生したエラーを訂正し、エラーから復旧(障害から回復)する処理を行うので、エラー訂正・復旧処理ブロック群112とも呼ぶ。
ここで、パケット処理部105は、ユーザが定義したロジックによって、その機能が変わる。つまり、パケット処理部105は、ユーザが定義した所定の機能を実現する機能部として動作する。そのため、パケット処理部105は、例えばFPGAをデータの暗号化装置に適用した場合は、ユーザが暗号化処理機能として定義することで、暗号化処理部として動作する。
また、制御レジスタ106の運用設定とは、装置の電源投入後に実行される制御レジスタ106の初期設定(制御レジスタ106の初期化、制御レジスタ106に初期設定に関するデータを書き込む)後に、装置の運用形態に合った設定となるように制御レジスタ106の設定を変更することを指す。この制御レジスタ106に設定する(書き込む)運用に関するデータ(運用情報)は、後述するメモリ103に格納される。
また、エラー訂正・復旧処理ブロック群(制御レジスタ制御部)112は、FPGA100の外部に配備される、制御レジスタ106の設定データと同一データを保持するメモリ103とのインタフェース機能及び、メモリ103及び制御レジスタ106に対する読み出しと書き込みのアクセス(制御)をコントロールする機能を有するメモリコントローラ部108と、制御レジスタ106へのCPU116からのアクセスとメモリコントローラ部108からのアクセスとを切り替えるセレクタ部107と、メモリ103と制御レジスタ106への読み出しと書き込み契機を判定し、複数の読み出し書き込み条件に応じた処理を実施する設定制御部111と、メモリ103と制御レジスタ106に対するアクセス条件を判定し、設定制御部111に対し通知を行う制御レジスタエラーチェック部110、メモリ103のエラーチェックを行うメモリエラーチェック部118、制御レジスタ106に対するCPU116からの書き込みアクセス及び、書き込み先のアドレスと書き込みするデータを監視(モニタ)するバスモニタ部109から構成される。ここで、セレクタ部107は、FPGA100の起動直後は、CPUバス120側に接続され、制御レジスタ106へのCPU116からのアクセスを確保している。
CPU116がペリフェラルにアクセスするためのCPUバス120には、アドレス、データ、アクセス制御信号(一般的にはチップセレクト、リード・ライト信号など)が含まれており、バスモニタ部109はこのアクセス制御信号を監視(モニタ)することで、書き込みアクセス時の書き込みアドレスとデータを判別することができる。
本実施例1は、電源投入後の起動処理でFPGA100のCRAMエリア114にエラーが発生した場合のエラー訂正からの復旧動作を示すものである。本実施例1の場合、1)電源投入後の起動時に制御レジスタ106へ初期設定データを設定する動作である初期設定データ設定動作、2)起動後の制御レジスタ106更新時にメモリ103が保持する制御レジスタ106設定データと同一のデータが格納されるアドレスのデータをFPGA100が更新する動作であるメモリ保持データ更新動作、3)CRAMエラー発生時にCRAM制御部113によるCRAMエラーの検出及びエラー訂正と、訂正後のメモリ103が保持する運用に関するデータ(運用情報)から制御レジスタ106を設定する動作である制御レジスタ設定動作を行う。以下、それぞれの動作について説明する。
1)電源投入後の起動時に制御レジスタ106へ初期設定データを設定する動作である初期設定データ設定動作のフローを図1及び、図2を用いて説明する。
図2は、初期設定データ設定動作のシーケンス図である。
パケット通信装置が電源投入され起動すると(200)、FPGA100は、自律的にユーザロジックを形成する為、コンフィギュレーションを行う(201)。このコンフィギュレーションにあたっては、ユーザロジック情報外部保持部115からユーザロジック情報をFPGA100のCRAM制御部113により読み出し、CRAM114に対し読み出したユーザロジック情報を書き込み保持する。ここで、コンフィギュレーションとは、FPGAの論理を形成する動作のことをいう。
コンフィギュレーション開始より、CRAM制御部113は、コンフィギュレーション完了通知信号133をCPU116に対して送信し(209)、コンフィギュレーション中であることを通知する。CPU116は、コンフィギュレーション完了通知信号133によりFPGA100がコンフィギュレーション中であると判定し、CPU116は、汎用ポート117等を介して、FPGA100に対して、FPGAリセット信号132を送信して、FPGA100のリセットを有効化する(202)。これにより、FPGA100内部のFF(フリップ・フロップ回路)及びメモリが初期状態にリセットされる。
FPGA100のCRAM制御部113は、コンフィギュレーションが完了すると、CPU116に対して、コンフィギュレーションが完了したことを通知するコンフィギュレーション完了通知信号133を送信する(203)。
CPU116は、コンフィギュレーション完了通知信号133を監視し、コンフィギュレーション完了通知信号133を受信するとコンフィギュレーション完了と判定し、次の処理204に移る。CPU116から、メモリ103に対しアクセスできる状態を確立する(CPU116からメモリ103へのアクセスルートを確立する)為、CPU116は、汎用ポート117からCPUバス選択制御信号121を送信し、CPUバスセレクタ部119を制御することで、CPUバスセレクタ部119によりメモリ103とのバス接続を有効とする。メモリ103は、通常初期化処理が必要となるため、CPUバス120を介しメモリ103の初期化実施後、CPU116は、FPGA100の制御レジスタ106に必要な初期設定データをソフトウエア部104から読み出して、すべてメモリ103に書き込む(設定する)(204)。
CPU116が、メモリ103に書き込むFPGA100の制御レジスタ106に必要な初期設定データのアドレス順序に関しては、制御レジスタ106と相対的に一致させておく必要がある。こうすることで、メモリ103と制御レジスタ106に格納されている同一データのアドレス解決が容易になる。
メモリ103への初期設定データ書き込み完了後、CPU116は、CPUバス選択制御信号121を送信し、CPUバスセレクタ部119を制御して、CPU116からメモリ103へのアクセスルートを切り離し、FPGAリセット信号132を送信して、FPGA100のリセットを解除する(205)。
FPGAリセット信号132を受信して、FPGA100のリセットの解除を検出した設定制御部111は、制御レジスタアクセス中通知信号131を送信して、制御レジスタ106とメモリ103へのアクセス開始を通知するとともに、制御レジスタアクセス切り替え信号125を送信してセレクタ部107を制御し、メモリコントローラ108からの制御レジスタ106へのアクセスルートを確立させた後、メモリ103から初期設定データを順次読み出し、読み出した初期設定データを制御レジスタ106のメモリ103に対応するアドレスへ順次書き込む(206)。
制御レジスタ106に対する書き込み完了後、設定制御部111は、制御レジスタアクセス切り替え信号125を送信してセレクタ部107を制御することで、CPU116から制御レジスタ106へのアクセスルートを確立させた後、制御レジスタアクセス中通知信号131を送信して、設定制御部111から制御レジスタ106へのアクセスが完了したことをCPU116に対し通知する(207)。これにより、CPU116はFPGA100の制御レジスタ106へのアクセスが可能となる。
以上の処理により、装置の起動が完了する(208)。
次に、2)起動後の制御レジスタ106更新時にメモリ103が保持するデータをFPGA100が更新する動作であるメモリ保持データ更新動作を図3で説明する。
図3は、FPGA100によるメモリ保持データ更新動作のフローチャート図である。
FPGA100のバスモニタ部109が、CPUバス120によるCPU116からの制御レジスタ106に対する書き込み制御の監視を行う。バスモニタ部109において、CPU116から制御レジスタ106への書き込みアクセスが有ると判定された場合(300のYes)、FPGA100は、CPU116からのアクセスを受けて、制御レジスタ106に対しデータの書き込みを実施する(301)。処理301によりCPU116から制御レジスタ106に対して書き込み処理が開始された状態となる。この状態で処理302を実施する。
ここで、書き込みアクセスの有無判定は、公知の方法を用いる。
書き込みアクセスが無いと判定された場合(300のNo)、他の処理をせずに終了する。
バスモニタ部109は、書き込みアクセスに含まれる、制御レジスタ106に対する書き込み先のアドレスの値(書き込みアドレス値)及びその書き込みデータを取得し、書き込みアクセス情報通知信号136を送信して設定制御部111に通知する(302)。
通知を受けた設定制御部111は、書き込みアドレス値及び書き込みデータを一時的に保持する(303)。
設定制御部111は、メモリコントローラ部108に対してメモリ・レジスタアクセス要求・アクセス情報信号124を送信して、書き込みアドレス値及び書き込みデータを通知する(304)。
メモリコントローラ部108は通知を受けた書き込みアドレス値と書き込みデータの情報をもとに、書き込みアドレス値に対応するメモリ103のアドレスに対して書き込みデータ(制御レジスタ設定データ)の書き込みを行う(305)。
以上の処理を実施することで、メモリ103に保持されるデータは、常に制御レジスタ106と同一の状態となる。
次に3)CRAMエラー発生時にCRAM制御部113によるCRAMエラーの検出及びエラー訂正と、エラー訂正後にメモリ103が保持するデータから制御レジスタ106を設定する動作である制御レジスタ設定動作を図4により説明する。
図4は、CRAMエラー復旧における制御レジスタ設定動作のシーケンス図である。
CRAM制御部113は、CRAM114のデータを順次読み出し、パリティチェック等の手法によりデータの正常性をチェック(エラースキャン)している。エラースキャンによりCRAMエラーを検出すると、エラー発生箇所の特定(CRAMを順次エラースキャンすることでエラーを検出した部位の特定が可能)と障害発生信号であるCRAMエラー発生通知信号128を送信して設定制御部111に対して通知する。設定制御部111は、CRAM制御部113から通知されるCRAMエラー発生通知信号128を監視して、CRAMエラー発生通知信号128の受信有無によって、CRAMエラーの発生有無を判定する(400)。つまり、設定制御部111は、CRAMエラー発生通知信号128を受信してCRAMの障害であるCRAMエラーを検知する。
設定制御部111は、CRAMエラー発生通知信号128を受信してCRAMエラー有りと判定した場合、CPU116に対してCRAMエラーが発生している旨及び、エラー回復処理中である旨を、FPGAエラー訂正中通知信号130を送信して通知する(401)。
FPGAエラー訂正中通知信号130を受信したCPU116は、制御レジスタ106に対するアクセスを中断する(402)。
次に、CRAM制御部113は、エラースキャンによってCRAMエラー発生箇所を特定し、該当箇所の正常なユーザロジック情報である正常データをユーザロジック保持部115から読み出し、その正常データをCRAMに設定する、つまり、CRAMエラー発生箇所に対し上書きすることでエラー訂正を実施する。エラー訂正箇所のエラーが正常に戻ったことを確認後、CRAMエラー訂正中通知信号129を送信して、設定制御部111に対してCRAMエラーの訂正が完了したこと、つまり、CRAMでの障害から回復したことを通知する。設定制御部111は、CRAM制御部113から通知されるCRAMエラー訂正中通知信号129を監視して、CRAMエラー訂正中通知信号129の受信有無によって、CRAMエラーの訂正が完了したか否か(CRAMエラー訂正完了(CRAMエラー回復完了)か否か)を判定する。
設定制御部111は、CRAMエラー訂正完了と判定した場合は、制御レジスタアクセス切り替え信号125を送信してセレクタ部107を制御し、メモリコントローラ部108から制御レジスタ106へのアクセスルートを確立させる(403)。確立後、メモリコントローラ部108は、メモリ103に保持されている制御レジスタ設定データを順次読み出し、読み出した制御レジスタ設定データを制御レジスタ106に順次書き込む(404)。ここで、制御レジスタ設定データとは、CRAMエラーが発生する前に、制御レジスタに設定されていたデータである。
メモリ103に保持されている制御レジスタ設定データを全て制御レジスタ106に書き込む処理が完了した後、メモリコントローラ108は設定制御部111に対し書き込み完了通知137により、書き込みが完了したことを通知する。設定制御部111は、制御レジスタアクセス切り替え信号125を送信してセレクタ部107を制御して、CPU103から制御レジスタ106へのアクセスルートを確立させた後、CPU116に対してCRAMエラー回復処理が完了したことをFPGAエラー訂正中通知信号130を送信して通知する(405)。
FPGAエラー訂正中通知信号130を受信して、CRAMエラー回復処理完了通知を受けたCPU116は、処理402により中断していたFPGA100の制御レジスタ106へのアクセスを再開する(406)。
以上に示したように、実施例1においては、CRAMエラーが発生した場合に、ハードウエア処理によりCRAMエラーの訂正後の制御レジスタへの設定処理が可能となり、初期状態に戻った制御レジスタに対して、制御レジスタ設定データを書き込むことで、エラー発生直前の設定状態に戻す処理をソフトウエア処理を介することなく、ハードウエア処理により実施可能となる。そのため、ソフトエラーによるCRAMエラーからの復旧をソフトウエア処理を介さずハードウエア処理により行うことで高速化できる。
(実施例2)
実施例1においては、FPGA100のユーザロジック情報を格納しているCRAM114へのソフトエラー発生後の訂正処理及び、初期状態となった制御レジスタの復旧処理を高速に実施する例を示した。しかし、図1に示す構成例においてソフトエラーが発生した場合に、装置が誤動作する可能性のある場所としては、CRAM114以外にもユーザロジックに定義される、制御レジスタ106や、FPGA100の外部に配備されるメモリ103もそれに当たる。
実施例2においては、制御レジスタ106及びメモリ103にエラー(障害)が発生した場合の回復処理について図5を用いて説明する。図5は、制御レジスタ106及びメモリ103の同一データが書き込まれているアドレスにエラーが発生した場合のFPGA100における回復処理の動作フローチャート図である。
設定制御部111は、制御レジスタエラーチェック部110及び、メモリエラーチェック部118によるエラーチェック結果を常時監視して、制御レジスタ106とメモリ103にエラーが発生したか否かを確認している。
メモリエラーチェック部118では、メモリエラー監視のため、エラー回復処理等、設定制御部111からメモリ103へのアクセス制御が行われていない場合は、常にメモリ103の全アドレスを巡回し、例えば一般的なエラー監視手法であるパリティチェックによりエラー監視を実施する。エラー発生を検知すると、その旨の通知を設定制御部111に送信する。
制御レジスタエラーチェック部110では、レジスタエラー監視のため、エラー回復処理等、設定制御部111から制御レジスタ106へのアクセス制御が行われていない場合は、常に制御レジスタ106の全アドレスを巡回し、例えば一般的なエラー監視手法であるパリティチェックによりエラー監視を実施する。エラー発生を検知すると、その旨の通知を設定制御部111に送信する。
設定制御部111は、制御レジスタエラーチェック部110からの制御レジスタ106にエラーが発生した旨の通知の受信有無によって、制御レジスタ106にエラーが発生したか否かを判定する(500)。制御レジスタ106にエラーが発生したと判定した場合(500のYes)、設定制御部111は、メモリエラーチェック部118からのメモリ103にエラーが発生した旨の通知の受信有無によって、メモリ103にエラーが発生したか否かを判定する(520)。メモリ103にエラーが発生したと判定した場合(520のYes)、設定制御部111は、エラーが発生したアドレスが、制御レジスタ106とメモリ103の同一データが格納されているアドレスであるか否かを判定し、同一データが格納されているアドレスである場合、つまり、制御レジスタ106とメモリ103の対応するアドレスに同時にエラーが発生した場合は、CPU116に対して制御レジスタ106のエラーを復旧するよう要求するエラー復旧要求134をCPU116に対して通知し、CPU116によって、制御レジスタ106のエラーが回復する(521)。
設定制御部111は、エラー回復が完了したか否かを判定し(540)、完了していない場合(540のNo)、本フローを繰り返す。完了した場合(540のYes)、本フローを終了する。
メモリ103にエラーが発生していないと判定した場合(520のNo)、設定制御部111は、FPGA100内部でエラー訂正処理中であることをFPGAエラー訂正中通知信号130によりCPU116に通知し、制御レジスタエラーチェック部110のエラーチェック結果を制御レジスタエラー情報通知信号126を介して受信することでエラーが発生した制御レジスタ106のアドレス(エラー発生制御レジスタアドレス)を特定し、メモリコントローラ部108に対しメモリ・レジスタアクセス要求・アクセス情報信号124を送信することで、メモリコントローラ部108がエラー発生制御レジスタアドレスに対応したメモリ103のアドレスに格納されたデータを読み出し、読み出したデータを正常なデータとして、エラー発生制御レジスタアドレスに対して書き込むことにより制御レジスタ106のエラーを回復する(522)。その後、処理540へ進む。
制御レジスタ106にエラーが発生していないと判定した場合(500のNo)、設定制御部111は、メモリエラーチェック部118からのメモリ103にエラーが発生した旨の通知の受信有無によって、メモリ103にエラーが発生したか否かを判定する(530)。メモリ103にエラーが発生したと判定した場合(530のYes)、設定制御部111は、FPGA100内部でエラー訂正処理中であることをCPU116に通知し、メモリエラーチェック部118のエラーチェック結果を制御メモリエラー情報通知信号127を介して受信することでエラーが発生したメモリ103のアドレス(エラー発生メモリアドレス)を特定し、メモリコントローラ部108に対しメモリ・レジスタアクセス要求・アクセス情報信号124を送信することで、メモリコントローラ部108がエラー発生メモリアドレスに対応した制御レジスタ106のアドレスに格納されたデータを読み出し、読み出したデータを正常なデータとして、エラー発生メモリアドレスに対して書き込むことでメモリ103のエラーを回復する(531)。その後、処理540へ進む。
なお、メモリ103のエラー判定の後に制御レジスタ106のエラー判定を行ってもよい。また、制御レジスタ106とメモリ103のエラーが同時に発生しても、対応するアドレスのエラー(同一データのエラー)でない場合は、処理522の実施後、処理531を実施する、または、処理531の実施後、処理522を実施することで、制御レジスタ106と、メモリ103双方のエラーを回復してもよい。
次に、図6〜図8を用いて、図5のFPGA100における回復処理を実行するシーケンスについて説明する。
図6は、制御レジスタ106とメモリ103の同一アドレスにエラーが発生した場合におけるシーケンス図である。図5の処理521に対応し、各動作を詳細に説明する。
設定制御部111は、レジスタエラー復旧要求信号134を送信して、CPU116に対して制御レジスタ106のエラーを復旧するよう要求するエラー復旧要求を通知する(513)。CPU116は、レジスタエラー復旧要求信号134を受信すると、CPUバス120を介し、制御レジスタ106のエラー発生箇所を特定し、特定したエラー発生箇所のアドレスに対して正常なデータを書き込む。つまり、制御レジスタ106のエラー発生箇所を検索し、エラー発生箇所に対してソフトウエア部104が保持している正常なデータを書き込む(514)。エラー発生箇所の検索は、例えば、制御レジスタエラーチェック部110がエラーを検出した場合、ユーザロジックのステータスを表示するレジスタ(ステータス表示レジスタ)等に、エラー発生アドレスを表示し、ステータス表示レジスタをCPU116が読み出す等の手法が可能であるが、これに限られない。
CPU116によって、正常データが制御レジストリ106のエラーが発生したアドレスに書き込まれることにより、制御レジスタ106のエラーが回復する。
設定制御部111は、制御レジスタエラーチェック部110より制御レジスタエラー情報通知信号126を受信することで制御レジスタ106のエラーが回復したことを検出する(515)。その後、設定制御部111は、エラー回復が完了したか否かを判定し(540)、メモリ103のエラー回復が完了していないため、処理531を実行してメモリ103のエラーも回復する。
図7は、制御レジスタ106にエラーが発生した場合におけるシーケンス図である。図5の処理522に対応し、各動作を詳細に説明する。
設定制御部111は、FPGAエラー訂正中通知信号130を送信してFPGA100内部でエラー訂正処理中であることをCPU116に通知する(501)。つまり、設定制御部111は、CPU116に対して、制御レジスタ106に対するアクセスを停止するよう通知するFPGAエラー訂正中通知信号130を送信する。FPGAエラー訂正中通知信号130は、FPGA100内部でエラー(障害)が発生している旨を通知することにもなるので、FPGA障害発生信号130とも呼ぶ。
通知を受けたCPU116は、制御レジスタ106に対するアクセスを中断する(502)。
次に、設定制御部111は、制御レジスタアクセス切り替え信号125を送信してセレクタ部107を制御して、メモリコントローラ部108から制御レジスタ106へのアクセスルートを確立する。確立後、設定制御部111は、制御レジスタエラー情報通知信号126を受信して、制御レジスタエラーチェック部110からエラーが発生した制御レジスタ106のアドレス(エラー発生制御レジスタアドレス)を取得する(503)。
設定制御部111は、エラー発生制御レジスタアドレスを取得した後、制御レジスタ106のエラー発生制御レジスタアドレスに対応したメモリ103のアドレスに格納されたデータを読み出すメモリデータ読み出し要求を、メモリ・レジスタアクセス要求・アクセス情報信号124を送信してメモリコントローラ部108に通知する。メモリコントローラ部108は、メモリ・レジスタアクセス要求・アクセス情報信号124を受信すると、メモリ103のエラー発生制御レジスタアドレスに対応するアドレスに格納されたデータを読み出し、読み出したデータをエラー発生制御レジスタアドレスに対して書き込みを行う(504)。
メモリ103から読み出した正常なデータをエラーが発生した制御レジスタ106のアドレスに書き込むことで、エラーを回復することができる。制御レジスタ106に対するデータ書き込み完了後は、CPU116からのアクセスに備え、設定制御部111が、制御レジスタアクセス切り替え信号125を送信して、セレクタ部107を制御することで、CPU116から制御レジスタ106へのアクセスルートを確立させる。その後、設定制御部111は、CPU116に対して、FPGAエラー訂正中通知信号130を送信してエラー訂正処理が完了したことを通知する(505)。これにより、CPU116は、制御レジスタ106へのアクセスを再開する(506)。つまり、設定制御部111は、CPU116に対して、制御レジスタ106に対するアクセスを再開するよう通知するFPGAエラー訂正中通知信号130を送信する。FPGAエラー訂正中通知信号130は、FPGA100内部で発生したエラー(障害)が回復した旨を通知することにもなるので、FPGA障害回復信号130とも呼ぶ。
なお、FPGA100内部でのエラーの発生を通知する信号であるFPGAエラー訂正中通知信号130と同じ信号を、FPGA100内部でのエラー訂正処理が完了したことを通知する信号に用いているが、別の信号を用いてもよい。
図8は、メモリ103にエラーが発生した場合におけるシーケンス図である。図5の処理531に対応し、各動作を詳細に説明する。
設定制御部111は、FPGAエラー訂正中通知信号130を送信してFPGA100内部でエラー訂正処理中であることをCPU116に通知する(507)。
通知を受けたCPU116は、制御レジスタ106に対するアクセスを中断する(508)。
次に、設定制御部111は、制御レジスタアクセス切り替え信号125を送信してセレクタ部107を制御することで、メモリコントローラ部108から制御レジスタ106へのアクセスルートを確立する。確立後、メモリエラー情報通知信号127を受信してメモリエラーチェック部118からエラーが発生したメモリ103のアドレス(エラー発生メモリアドレス)を取得する(509)。
設定制御部111は、エラー発生メモリアドレスを取得した後、メモリ103のエラー発生メモリアドレスに対応した制御レジスタ106のアドレスに格納されたデータを読み出す制御レジスタデータ読み出し要求を、メモリ・レジスタアクセス要求・アクセス情報信号124を送信してメモリコントローラ部108に通知する。メモリコントローラ部108は、メモリ・レジスタアクセス要求・アクセス情報信号124を受信すると、制御レジスタ106のエラー発生メモリアドレスに対応するアドレスに格納されたデータを読み出し、読み出したデータをメモリ103のエラー発生メモリアドレスに対して書き込みを行う(510)。制御レジスタ106から読み出した正常なデータをエラーが発生したメモリ103のアドレスに書き込むことで、エラーを回復することができる。メモリ103に対するデータ書き込み完了後は、CPU116からのアクセスに備え、設定制御部111が、制御レジスタアクセス切り替え信号125を送信して、セレクタ部107を制御することで、CPU116から制御レジスタ106へのアクセスルートを確立させる。その後、設定制御部111は、CPU116に対して、FPGAエラー訂正中通知信号130を送信してエラー訂正処理が完了したことを通知する(511)。この通知を受け、CPU116は、制御レジスタ106へのアクセスを再開する(512)。
以上に示したように、実施例2においては、制御レジスタ106とメモリ103にエラーが発生した場合に、ハードウエア処理によりエラーの訂正が可能となる。そのため、ソフトエラーによるエラーからの復旧をソフトウエア処理を介さずハードウエア処理により行うことで高速化できる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。
また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えばFPGAのような集積回路で設計する等によりハードウエアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウエアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(SolidStateDrive)等の記録装置、または、IC(Integrated Circuit)カード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
100 FPGA
101 監視制御部
102 ユーザロジック部
103 メモリ
104 ソフトウエア部
105 機能部
106 制御レジスタ部
108 メモリコントローラ部
109 バスモニタ部
110 制御レジスタエラーチェック部
111 設定制御部
112 エラー訂正・復旧処理ブロック群
113 CRAM制御部
114 ユーザロジック情報一時保持部(CRAM)
115 ユーザロジック情報外部保持部
118 メモリエラーチェック部

Claims (5)

  1. 所定の機能を定義する情報である機能情報を一時的に保持する機能情報一時保持部と、前記機能情報に基づく機能を実現する機能部を制御する制御レジスタと、前記制御レジスタを制御する制御レジスタ制御部とを有するFPGA(Field Programmable Gate Array)と、
    前記制御レジスタに設定する運用に関する情報である運用情報を保持する記憶部と、
    を備え、
    前記制御レジスタ制御部は、
    前記機能情報一時保持部での障害を検知すると、前記記憶部が保持する前記運用情報を取得し、取得した前記運用情報を前記制御レジスタに設定する
    ことを特徴とする装置。
  2. 請求項1に記載の装置であって、
    前記FPGAは、前記機能情報一時保持部を制御する機能情報制御部をさらに備え、
    前記機能情報制御部は、
    前記機能情報一時保持部での障害を検知すると、障害が発生したことを通知する障害発生信号を前記制御レジスタ制御部へ送信し、
    前記制御レジスタ制御部は、
    前記障害発生信号を受信すると、前記機能情報一時保持部での障害を検知する
    ことを特徴とする装置。
  3. 請求項2に記載の装置であって、
    前記機能情報一時保持部が保持する前記機能情報を予め保持する機能情報保持部をさらに備え、
    前記機能情報制御部は、
    前記機能情報一時保持部での障害を検知すると、前記制御レジスタ制御部へ前記障害発生信号を送信し、前記機能情報保持部から前記機能情報を取得し、取得した前記機能情報を前記機能情報一時保持部に設定して障害を回復し、障害から回復したことを通知する障害回復信号を前記制御レジスタ制御部へ送信し、
    前記制御レジスタ制御部は、
    前記障害回復信号を受信すると、前記記憶部が保持する前記運用情報の取得を実行する
    ことを特徴とする装置。
  4. 所定の機能を実現する機能部を制御する制御レジスタと、前記制御レジスタを制御する制御レジスタ制御部とを有するFPGA(Field Programmable Gate Array)と、
    前記制御レジスタに設定する運用に関する情報である運用情報を保持する記憶部と、
    前記FPGAを制御する制御部と、
    を備え、
    前記制御レジスタ制御部は、
    前記制御レジスタでの障害を検知すると、障害が発生したことを通知するFPGA障害発生信号を前記制御部へ送信し、前記記憶部から前記運用情報を取得し、取得した前記運用情報を前記制御レジスタに設定して障害を回復し、障害から回復したことを通知するFPGA障害回復信号を前記制御部へ送信し、
    前記制御部は、
    前記FPGA障害発生信号を受信すると、前記FPGAに対する制御を中断し、前記FPGA障害回復信号を受信すると、前記FPGAに対する制御を再開する
    ことを特徴とする装置。
  5. 所定の機能を実現する機能部を、運用に関する情報である運用情報に基づいて制御する制御レジスタと、前記制御レジスタを制御する制御レジスタ制御部とを有するFPGA(Field Programmable Gate Array)と、
    前記運用情報を保持する記憶部と、
    前記FPGAを制御する制御部と、
    を備え、
    前記制御レジスタ制御部は、
    前記記憶部での障害を検知すると、障害が発生したことを通知するFPGA障害発生信号を前記制御部へ送信し、前記制御レジスタから前記運用情報を取得し、取得した前記運用情報を前記記憶部に設定して障害を回復し、障害から回復したことを通知するFPGA障害回復信号を前記制御部へ送信し、
    前記制御部は、
    前記FPGA障害発生信号を受信すると、前記FPGAに対する制御を中断し、前記FPGA障害回復信号を受信すると、前記FPGAに対する制御を再開する
    ことを特徴とする装置。
JP2014098262A 2014-05-12 2014-05-12 Fpgaを搭載する装置 Pending JP2015216507A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014098262A JP2015216507A (ja) 2014-05-12 2014-05-12 Fpgaを搭載する装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014098262A JP2015216507A (ja) 2014-05-12 2014-05-12 Fpgaを搭載する装置

Publications (1)

Publication Number Publication Date
JP2015216507A true JP2015216507A (ja) 2015-12-03

Family

ID=54753010

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014098262A Pending JP2015216507A (ja) 2014-05-12 2014-05-12 Fpgaを搭載する装置

Country Status (1)

Country Link
JP (1) JP2015216507A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7478065B2 (ja) 2020-08-19 2024-05-02 東芝テック株式会社 情報処理装置および情報処理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7478065B2 (ja) 2020-08-19 2024-05-02 東芝テック株式会社 情報処理装置および情報処理方法

Similar Documents

Publication Publication Date Title
JP6282482B2 (ja) プログラマブル回路装置、コンフィギュレーション情報修復方法
JP6290934B2 (ja) プログラマブルデバイス、エラー保持システム、及び電子システム装置
JP5981906B2 (ja) 画像形成装置
JP6341795B2 (ja) マイクロコンピュータ及びマイクロコンピュータシステム
US9772905B2 (en) Updating control firmware of information processing apparatus, method of controlling the same, and storage medium
JP6408482B2 (ja) プログラマブルデバイス及びこれを用いた電子システム装置
JP5034979B2 (ja) 起動装置、起動方法、及び、起動プログラム
JP5561791B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
JP2015216507A (ja) Fpgaを搭載する装置
JP2013238926A (ja) 信号処理回路およびそれを用いた試験装置
JP5910356B2 (ja) 電子装置、電子装置制御方法及び電子装置制御プログラム
JP5579257B2 (ja) 主記憶装置における情報を復元するための装置及び方法
JP2015525915A (ja) マイクロプロセッサの制御
CN108874579B (zh) 用于监管和初始化端口的方法
WO2014112039A1 (ja) 情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラム
JP5652720B2 (ja) Fpgaシステム及び電子機器
JP2019016218A (ja) 情報処理装置、制御装置および情報処理装置の制御方法
JP2010061258A (ja) デュプレックスプロセッサシステム及びプロセッサ二重化方法
JP2009054116A (ja) メモリシステムおよび情報処理装置
JP2015201813A (ja) プログラマブルゲートアレイ
JP6217192B2 (ja) ストレージ制御装置、制御プログラムおよび制御方法
JP2015201814A (ja) プログラマブルゲートアレイ及び電子装置
CN117940905A (zh) 发生存储器信道不当行为时用于安全操作模式的设备和方法
JP2015001774A (ja) 半導体集積回路及びその処理方法
CN115705262A (zh) 一种内存故障恢复方法、系统以及内存

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160805

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170110

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170414

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170523

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20171114