JP6076524B1 - メモリ制御装置、制御方法及び制御プログラム - Google Patents
メモリ制御装置、制御方法及び制御プログラム Download PDFInfo
- Publication number
- JP6076524B1 JP6076524B1 JP2016035653A JP2016035653A JP6076524B1 JP 6076524 B1 JP6076524 B1 JP 6076524B1 JP 2016035653 A JP2016035653 A JP 2016035653A JP 2016035653 A JP2016035653 A JP 2016035653A JP 6076524 B1 JP6076524 B1 JP 6076524B1
- Authority
- JP
- Japan
- Prior art keywords
- memory
- data
- block
- read
- circuit
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
【課題】メモリに記憶されたデータの信頼性を確保しつつ、メモリへのアクセス性能の低下を防止することが可能なメモリ制御装置、制御方法及び制御プログラムを提供する。【解決手段】メモリ制御装置120は、プロセッサ125と、メモリ124と、プロセッサからの指示に従って、書込処理と読出処理とを実行するメモリコントローラ126とを有し、メモリコントローラは、メモリ内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、定期的に、複数のブロック毎に、各ブロック内のデータ及び誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する判定処理を実行し、前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたブロックに対する次回の判定処理を省略する。【選択図】図2
Description
本発明は、メモリ制御装置並びにそのメモリ制御装置の制御方法及び制御プログラムに関し、特に、誤り訂正用データを用いてメモリに記憶されたデータに誤りがあるか否かを判定するメモリ制御装置、制御方法及び制御プログラムに関する。
一般に、正常なメモリを使用していても、メモリに記憶されたデータの特定のビットが宇宙線の影響によって反転し、壊れてしまうことがある。特に、サーバ等は、長時間稼動し続ける必要がありシステムを容易に再起動できないにも関わらず、メモリ上に広範囲にわたってクリティカルなデータを記憶しているため、メモリに記憶されたデータが壊れてしまうとシステムに多大な影響を与えてしまう。
このようなビットの反転を検出し、可能であれば正しいデータに訂正するための技術としてECC(Error Check and Correct)が知られている。ECCでは、1ビットの反転が発生した場合、データの誤りを検出及び訂正することができる。しかしながら、さらにデータが壊れて2ビットの反転が発生した場合、データの誤りを検出できるが、訂正することはできなくなる。そのため、サーバ等では、データの誤りが発生した場合に、その誤りを訂正できるように、可能な限り早期に検出することが望まれている。
一般に、2ビット以上のデータの誤りの発生を防ぐために、システムからの要求により実行される本来のメモリアクセスとは別個に、定期的にメモリ全体を読み出してデータの誤りが発生していないかを判定するメモリパトロールが実行される。しかしながら、メモリパトロールによるメモリアクセスが実行されている間は、本来のメモリアクセスを実行することはできず、頻繁にメモリパトロールが実行されると、本来のメモリアクセスの性能が低下する。したがって、メモリパトロール機能には、メモリに記憶されたデータの信頼性を確保するとともに、メモリへのアクセス性能の低下を防ぐことが要求されている。
システム性能を低下させることなくメモリに格納されたデータの信頼性を高く保つためのメモリパトロール制御装置が知られている(特許文献1を参照)。このメモリパトロール制御装置は、CPUと、複数のメモリブロックからなるメモリと、周期的にメモリブロックの誤り検出および誤り訂正を行うメモリパトロール手段と、メモリパトロールの実行を制御するメモリパトロール制御手段とを備える。このメモリパトロール制御装置は、CPUからメモリブロックへのアクセス回数をカウントするアクセス頻度算出手段をさらに備え、メモリパトロール制御手段は、アクセス回数が所定値を超えた場合に当該メモリブロックに対するメモリパトロールの回数を減らす。
メモリパトロール機能には、メモリに記憶されたデータの信頼性のさらなる向上、及び、メモリへのアクセス性能の低下のさらなる防止が要求されている。
本発明の目的は、メモリに記憶されたデータの信頼性を確保しつつ、メモリへのアクセス性能の低下を防止することが可能なメモリ制御装置、制御方法及び制御プログラムを提供することにある。
本発明の一側面に係るメモリ制御装置は、プロセッサと、メモリと、プロセッサからの指示に従って、メモリにデータ及び誤り訂正用データを書き込む書込処理と、プロセッサからの指示に従って、メモリからデータを読み出し、読み出したデータをプロセッサに出力する読出処理とを実行するメモリコントローラと、を有し、メモリコントローラは、メモリ内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、定期的に、複数のブロック毎に、各ブロック内のデータ及び誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する判定処理を実行し、前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたブロックに対する次回の判定処理を省略する。
また、本発明の他の側面に係る制御方法は、プロセッサと、メモリと、プロセッサからの指示に従って、メモリにデータ及び誤り訂正用データを書き込む書込処理と、プロセッサからの指示に従って、メモリからデータを読み出し、読み出したデータをプロセッサに出力する読出処理とを実行するメモリコントローラと、を有するメモリ制御装置の制御方法であって、メモリコントローラが、メモリ内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、定期的に、複数のブロック毎に、各ブロック内のデータ及び誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する判定処理を実行し、前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたブロックに対する次回の判定処理を省略する。
また、本発明の一側面に係る制御プログラムは、プロセッサと、メモリと、プロセッサからの指示に従って、メモリにデータ及び誤り訂正用データを書き込む書込処理と、プロセッサからの指示に従って、メモリからデータを読み出し、読み出したデータをプロセッサに出力する読出処理とを実行するメモリコントローラと、を有するメモリ制御装置の制御プログラムであって、メモリコントローラに、メモリ内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、定期的に、複数のブロック毎に、各ブロック内のデータ及び誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する判定処理を実行し、前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたブロックに対する次回の判定処理を省略することを実行させる。
本発明によれば、メモリ制御装置は、メモリに記憶されたデータの信頼性を確保しつつ、メモリへのアクセス性能の低下を防止することが可能となる。
以下、本発明の一側面に係る通信装置及び制御方法について図を参照しつつ説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
図1は、実施形態に係る情報処理装置100のハードウェア構成を示す図である。
情報処理装置100は、例えば他の装置から送信されたデータを記憶するとともに、記憶したデータを他の装置からの要求に従って読み出して送信するサーバ等である。図1に示すように、情報処理装置100は、本体装置110と、メモリ制御装置120と、一又は複数の外部記憶装置130と、を有する。以下、情報処理装置100の各部について詳細に説明する。
本体装置110は、例えば情報処理装置100のマザーボード等である。本体装置110は、本体インタフェース111と、本体記憶装置112と、本体メモリ113と、本体CPU(Central Processing Unit)114とを有する。以下、本体装置110の各部について詳細に説明する。
本体インタフェース111は、メモリ制御装置120と通信可能なインタフェース回路を有し、メモリ制御装置120とケーブルを用いて電気的に接続して各種のデータ及び情報を送受信する。本体インタフェース111は、例えばSATA(Serial ATA)等の規格に準じた通信を行うための回路を有する。なお、本体インタフェース111は、USB(Universal Serial Bus)等の他の規格に準じるインタフェース回路を有し、USBケーブル等を用いてメモリ制御装置120と電気的に接続してもよい。
本体記憶装置112は、ROM(Read Only Memory)等のメモリ装置、ハードディスク等の固定ディスク装置、又はフレキシブルディスク、光ディスク等の可搬用の記憶装置等を有する。また、本体記憶装置112には、本体装置110の各種処理に用いられる各種データ、コンピュータプログラム、データベース、テーブル等が格納される。コンピュータプログラムは、コンピュータ読み取り可能な可搬型記録媒体から、公知のセットアッププログラム等を用いて本体記憶装置112にインストールされてもよい。可搬型記録媒体は、例えばCD−ROM(compact disk read only memory)、DVD−ROM(digital versatile disk read only memory)等である。
本体メモリ113は、例えばDRAM(Dynamic Random Access Memory)等のメモリ装置である。本体メモリ113には、本体装置110の各種処理に用いられる各種データ、プログラムコード等が格納される。
本体CPU114は、予め本体記憶装置112に記憶されているプログラムに基づいて動作する。なお、本体CPU114に代えて、DSP(digital signal processor)、LSI(large scale integration)等が用いられてもよい。また、本体CPU114に代えて、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programming Gate Array)等が用いられてもよい。
メモリ制御装置120は、例えばRaid(Redundant Arrays of Inexpensive Disks)カードのような、本体装置110に拡張して使用される拡張カード等である。メモリ制御装置120は、第1インタフェース121と、第2インタフェース122と、記憶装置123と、メモリ124と、CPU125と、メモリコントローラ126とを有する。第1インタフェース121、第2インタフェース122、CPU125及びメモリコントローラ126は、例えば一つのFPGAで実装される。以下、メモリ制御装置120の各部について詳細に説明する。
第1インタフェース121は、本体インタフェース111と同様のインタフェース回路を有し、本体装置110とケーブルを用いて電気的に接続して各種のデータ及び情報を送受信する。
第2インタフェース122は、各外部記憶装置130と通信可能なインタフェース回路を有し、各外部記憶装置130とケーブルを用いて電気的に接続して各種のデータ及び情報を送受信する。第2インタフェース122は、例えばSATA等の規格に準じた通信を行うための回路を有する。
記憶装置123は、ROM、RAM等のメモリ装置等を有する。また、記憶装置123には、メモリ制御装置120の各種処理に用いられる各種データ、コンピュータプログラム、データベース、テーブル等が格納される。コンピュータプログラムは、例えばCD−ROM、DVD−ROM等のコンピュータ読み取り可能な可搬型記録媒体から、公知のセットアッププログラム等を用いてメモリ制御装置120にインストールされてもよい。なお、メモリ制御装置120の各種処理に用いられるコンピュータプログラムは、記憶装置123の代わりに、本体記憶装置112に記憶されてもよい。
メモリ124は、例えばDRAM等のメモリ装置である。メモリ124には、本体装置110から送信されたデータ、そのデータに誤りがあるか否かを判定し且つ訂正するための誤り訂正用データ等が記憶される。誤り訂正用データとして、例えばECCに用いられる訂正データが記憶される。
CPU125は、プロセッサの一例であり、予め記憶装置123に記憶されているプログラムに基づいて動作する。なお、CPU125に代えて、DSP、LSI、ASIC、FPGA等が用いられてもよい。
CPU125は、第1インタフェース121を介して本体装置110から、外部記憶装置130にデータを書き込むための書込要求信号を受け付ける。書込要求信号には、書き込むデータ及びそのデータを書き込む外部記憶装置130のアドレス等が含まれる。CPU125は、本体装置110から書込要求信号を受け付けると、書込要求信号に含まれるデータを第2インタフェース122を介して外部記憶装置130に記憶しつつ、メモリ124に書き込むための書込指示信号をメモリコントローラ126に送る。書込指示信号には、書き込むデータ、そのデータを書き込むメモリ124のアドレス、及び、書き込みを行うためのライトイネーブル信号等が含まれる。
また、CPU125は、第1インタフェース121を介して本体装置110から、外部記憶装置130からデータを読み出すための読出要求信号を受け付ける。読出要求信号には、データを読み出す外部記憶装置130のアドレス、及び、読み出しを行うためのリードイネーブル信号等が含まれる。
CPU125は、本体装置110から読出要求信号を受け付けると、読出要求信号に含まれるアドレスに記憶されたデータがメモリ124に記憶されているか否かを判定する。CPU125は、そのデータがメモリ124に記憶されている場合、メモリ124からデータを読み出すための読出指示信号をメモリコントローラ126に送る。読出指示信号には、データを読み出すメモリ124のアドレス、及び、読み出しを行うためのリードイネーブル信号等が含まれる。そして、CPU125は、メモリコントローラ126から受け取ったデータを第1インタフェース121を介して本体装置110に送信する。一方、CPU125は、そのデータがメモリ124に記憶されていない場合、そのデータを第2インタフェース122を介して外部記憶装置130から読み出し、読み出したデータを第1インタフェース121を介して本体装置110に送信する。
メモリコントローラ126は、FPGAにより構成される。なお、メモリコントローラ126は、DSP、LSI、ASIC等により構成されてもよい。
メモリコントローラ126は、CPU125からの書込指示信号に従って、メモリ124にデータ及び誤り訂正用データを書き込む書込処理を実行する。また、メモリコントローラ126は、CPU125からの読出指示信号に従って、メモリ124からデータを読み出し、読み出したデータをCPU125に出力する読出処理を実行する。また、メモリコントローラ126は、定期的に、メモリ124内のデータ及び誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する判定処理を実行する。なお、メモリコントローラ126は、読出処理においても、判定処理と同様に、メモリ124から誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する。
各外部記憶装置130は、例えばハードディスク等の固定ディスク装置である。各外部記憶装置130には、本体装置110からメモリ制御装置120を介して書き込まれた各種データ等が格納される。
図2は、メモリコントローラ126等の概略構成を示す図である。
図2に示すように、メモリコントローラ126は、メモリ124内のメモリ空間を複数のブロック141に分割して管理する。また、メモリコントローラ126は、設定記憶回路151と、アクセス監視回路152と、省略ブロック決定回路153と、判定制御回路154と、データ制御回路155とを有する。
設定記憶回路151は、CPU125から設定された各設定値を記憶しつつ、各設定値をアクセス監視回路152、省略ブロック決定回路153及び判定制御回路154に対して出力する。設定値には、許可フラグと、判定周期と、動作モードと、待機時間とが含まれる。
許可フラグは、判定処理の実行を許可するか否かを示すフラグである。判定周期は、判定処理が実行される周期である。動作モードは、判定処理におけるメモリコントローラ126の動作を規定するモードであり、動作モードには、待機モードと即時モードとが含まれる。待機時間は、動作モードが待機モードである場合に、次回の判定処理まで待機する時間である。
また、設定値には、さらに、注目アドレスの初期値及び間隔と、分割ブロック数とが含まれる。
図3は、ブロック及び注目アドレスについて説明するための模式図である。
図3に示すように、メモリ124内のメモリ空間は、複数のブロック1〜Nに分割される。分割ブロック数は、メモリ124のメモリ空間を分割するブロックの数である。分割ブロック数として、例えば2の累乗となる値が設定される。各ブロックは、さらに複数のサブブロックに分割され、各サブブロック内の所定アドレスが、それぞれ注目アドレスとして設定される。即ち、各ブロックにおいて所定間隔(サブブロックのサイズ)毎に注目アドレスが設定される。所定間隔として、例えば2の累乗となる値(バイト数)が設定される。図3に示す例では、注目アドレスの初期値が0であり、所定間隔が4である。
図4は、アクセス監視回路152の概略構成を示す図である。
図4に示すように、アクセス監視回路152は、アクセス検出回路161と、検出アドレス出力回路162とを有する。
データ制御回路155には、CPU125から出力される書込指示信号に含まれるデータ、アドレス及びライトイネーブル信号と、読出指示信号に含まれるアドレス及びリードイネーブル信号とが入力される。
アクセス検出回路161には、設定記憶回路151から出力される許可フラグと、CPU125から出力される書込指示信号に含まれるライトイネーブル信号、及び、読出指示信号に含まれるリードイネーブル信号とが入力される。アクセス検出回路161は、CPU125から書込指示信号又は読出指示信号が出力されたか否かの検出結果を示す検出フラグを検出アドレス出力回路162に出力する。
検出アドレス出力回路162には、アクセス検出回路161から出力された検出フラグと、CPU125から出力される書込指示信号又は読出指示信号に含まれるアドレスとが入力される。検出アドレス出力回路162は、CPU125から書込又は読出が指示されたアドレス(以下、検出アドレスと称する場合がある)を省略ブロック決定回路153に出力する。
図5は、アクセス監視回路152によるアクセス監視処理の動作の例を示すフローチャートである。以下、図5に示したフローチャートを参照しつつ、アクセス監視処理の動作の例を説明する。なお、以下に説明する動作のフローは、主にアクセス監視回路152によりメモリコントローラ126の各要素と協働して実行される。
最初に、アクセス監視回路152は、設定記憶回路151から、許可フラグの設定を受け付ける(ステップS101)。
次に、アクセス監視回路152は、受け付けた許可フラグが判定処理の実行の許可を示すか否かを判定する(ステップS102)。
許可フラグが判定処理の実行の許可を示さない場合、アクセス監視回路152は、一連のステップを終了する。
一方、許可フラグが判定処理の実行の許可を示す場合、アクセス検出回路161は、CPU125から書込指示信号又は読出指示信号が出力されたか否かを判定する(ステップS103)。アクセス検出回路161は、CPU125から出力されるライトイネーブル信号及びリードイネーブル信号を監視する。アクセス検出回路161は、ライトイネーブル信号がイネーブル(有効)になった場合、書込指示信号が出力されたと判定し、リードイネーブル信号がイネーブル(有効)になった場合、読出指示信号が出力されたと判定する。
CPU125から書込指示信号又は読出指示信号が出力されていない場合、アクセス監視回路152は、検出アドレスを出力せずに、処理をステップS102へ戻す。
一方、CPU125から書込指示信号又は読出指示信号が出力された場合、アクセス検出回路161は、書込指示信号又は読出指示信号が出力されたことを示す検出フラグを検出アドレス出力回路162に出力する。アクセス検出回路161から検出フラグが出力されると、検出アドレス出力回路162は、CPU125から受信したアドレスを検出アドレスとして省略ブロック決定回路153に出力し(ステップS104)、処理をステップS102に戻す。
図6は、省略ブロック決定回路153の概略構成を示す図である。
図6に示すように、省略ブロック決定回路153は、検出アドレス分割回路171と、注目アドレス記憶回路172と、比較回路173と、アドレス出力回路174と、デコーダ175と、アクセスフラグ記憶回路176と、省略フラグ生成回路177と、を有する。
検出アドレス分割回路171には、設定記憶回路151から出力される注目アドレスの間隔、分割ブロック数及び許可フラグと、アクセス監視回路152から出力される検出アドレスとが入力される。検出アドレス分割回路171は、入力された検出アドレスを分割して出力する。検出アドレス分割回路171は、検出アドレスの第1所定ビットを注目アドレス記憶回路172に出力し、検出アドレスの第2所定ビットを比較回路173に出力し、検出アドレスの第3所定ビットをアドレス出力回路174に出力する。
第1所定ビットは、検出アドレスが属するブロックを識別可能なビットである。第2所定ビットは各ブロックにおける注目アドレスを識別可能なビットであり、下位から注目アドレスの間隔分のビットである。第3所定ビットは、検出アドレスが属するサブブロックを識別可能なビットである。
例えば、メモリ124のサイズが512Mバイトである場合、メモリ124内の各アドレスは29ビットで表される。さらに分割ブロック数が4である場合、第1所定ビットは29ビットの内の上位2ビット(28〜29ビット目)となる。さらに注目アドレス間隔が4バイトである場合、第2所定ビットは29ビットの内の下位2ビット(1〜2ビット目)となり、第3所定ビットは29ビットの内の上位27ビット(3〜29ビット目)となる。
注目アドレス記憶回路172には、検出アドレス分割回路171から出力される検出アドレスの第1所定ビットが入力される。注目アドレス記憶回路172には、さらに、設定記憶回路151から出力される注目アドレスの初期値及び間隔、分割ブロック数並びに許可フラグと、判定制御回路154から出力されるクリア信号とが入力される。クリア信号は、ブロック毎に別個に、各ブロックに対する判定処理が実行された場合に出力される。
注目アドレス記憶回路172は、分割されたブロック毎に注目アドレスを管理し、各ブロックの注目アドレスを記憶する。なお、注目アドレス記憶回路172は、設定記憶回路151から注目アドレスの間隔を取得するので、全ての注目アドレスを記憶する必要はなく、注目アドレスの先頭アドレスのみを記憶する。注目アドレス記憶回路172は、特定のブロックに対するクリア信号を受信すると、その特定のブロックの注目アドレスを変更する。
図7は、注目アドレスの変更について説明するための模式図である。
図7に示すブロック700、710、720は同一のブロックを示す。サブブロック701、702はブロック700内のサブブロックを示し、サブブロック711、712はブロック710内のサブブロックを示し、サブブロック721、722はブロック720内のサブブロックを示す。
装置起動時、注目アドレスの先頭アドレスは、設定記憶回路151から出力される初期値703(例えば0)に設定される。注目アドレス記憶回路172は、判定制御回路154から特定のブロックに対するクリア信号を受信すると、その特定のブロックの注目アドレスの先頭アドレスに所定値(例えば1)を加算する。なお、注目アドレスの間隔(例えば4)は固定であるため、図7に示すように、注目アドレスの先頭アドレスに所定値が加算されると、そのブロック内の全注目アドレスは所定値が加算された値に変更される。
後述するように、注目アドレスは、判定処理を実行するブロックを決定するために用いられ、ブロック内の全ての注目アドレスにアクセスされたか否かにより、判定処理を省略するか実行するかが判定される。したがって、注目アドレスを変更することにより、固定のアドレスのみを用いて、判定処理を省略するか実行するかを判定することが抑制され、各ブロック内でアクセスされる領域の傾向をより精度良く判定することが可能となる。
注目アドレス記憶回路172は、検出アドレス分割回路171から出力された検出アドレスの第1所定ビットに対応するブロックにおける注目アドレスの第2所定ビットを比較回路173に出力する。
比較回路173には、検出アドレス分割回路171から出力される検出アドレスの第2所定ビットと、注目アドレス記憶回路172から出力される注目アドレスの第2所定ビットとが入力される。比較回路173は、検出アドレスの第2所定ビットと注目アドレスの第2所定ビットとを比較し、両者が一致するか否かを示す比較結果をアドレス出力回路174に出力する。
アドレス出力回路174には、比較回路173から出力される比較結果と、検出アドレス分割回路171から出力される検出アドレスの第3所定ビットとが入力される。比較結果が検出アドレスの第2所定ビットと注目アドレスの第2所定ビットが一致することを示す場合、アドレス出力回路174は、検出アドレスの第3所定ビットをデコーダ175に出力する。一方、比較結果が検出アドレスの第2所定ビットと注目アドレスの第2所定ビットが一致しないことを示す場合、アドレス出力回路174は、検出アドレスの第3所定ビットを出力しない。
デコーダ175には、アドレス出力回路174から出力される検出アドレスの第3所定ビットが入力される。デコーダ175は、入力された検出アドレスの第3所定ビットに対応するサブブロックを示すサブブロック情報をアクセスフラグ記憶回路176に出力する。サブブロック情報は、検出アドレスが属するブロック及びサブブロックを識別可能な情報である。
アクセスフラグ記憶回路176には、設定記憶回路151から出力される注目アドレスの間隔及び分割ブロック数と、デコーダ175から出力されるサブブロック情報と、判定制御回路154から出力されるクリア信号とが入力される。アクセスフラグ記憶回路176は、全てのブロックの全てのサブブロック毎に、各サブブロックの注目アドレスにCPU125からアクセスがあったか否かを示すアクセスフラグを記憶する。
アクセスフラグ記憶回路176は、デコーダ175からサブブロック情報が出力されると、出力されたサブブロック情報に示されるサブブロックのアクセスフラグを有効化する。一方、アクセスフラグ記憶回路176は、判定制御回路154からクリア信号が出力されると、出力されたクリア信号に対応するブロックの全てのサブブロックのアクセスフラグを無効化する。アクセスフラグ記憶回路176は、サブブロックのアクセスフラグを有効化した場合、そのサブブロックと同一のブロックに属する全てのサブブロックのアクセスフラグを省略フラグ生成回路177に出力する。
省略フラグ生成回路177には、設定記憶回路151から出力される注目アドレスの間隔及び分割ブロック数と、アクセスフラグ記憶回路176から出力されるアクセスフラグと、判定制御回路154から出力されるクリア信号とが入力される。省略フラグ生成回路177は、全てのブロック毎に、そのブロックに対する判定処理を省略するか否かを示す省略フラグを記憶し、判定制御回路154に出力する。省略フラグ生成回路177は、入力された各アクセスフラグに基づいて、そのブロックに対する判定処理を省略するか否かを判定し、そのブロックに対する判定処理を省略する場合、そのブロックに対する省略フラグを有効化する。また、省略フラグ生成回路177は、判定制御回路154から出力されるクリア信号に対応するブロックの省略フラグを無効化する。
図8は、省略ブロック決定回路153による省略ブロック決定処理の動作の例を示すフローチャートである。以下、図8に示したフローチャートを参照しつつ、省略ブロック決定処理の動作の例を説明する。なお、以下に説明する動作のフローは、主に省略ブロック決定回路153によりメモリコントローラ126の各要素と協働して実行される。
最初に、省略ブロック決定回路153は、設定記憶回路151から、許可フラグの設定を受け付ける(ステップS201)。
次に、省略ブロック決定回路153は、受け付けた許可フラグが判定処理の実行の許可を示すか否かを判定する(ステップS202)。
許可フラグが判定処理の実行の許可を示さない場合、省略ブロック決定回路153は、一連のステップを終了する。
一方、許可フラグが判定処理の実行の許可を示す場合、検出アドレス分割回路171は、アクセス監視回路152から検出アドレスが入力されたか否かを判定する(ステップS203)。
検出アドレスが入力されていない場合、省略ブロック決定回路153は、処理をステップS202に戻す。
一方、検出アドレスが入力された場合、検出アドレス分割回路171は、入力された検出アドレスの第1所定ビットを注目アドレス記憶回路172に、第2所定ビットを比較回路173に、第3所定ビットをアドレス出力回路174にそれぞれ出力する。次に、注目アドレス記憶回路172は、その検出アドレスに対応するブロックにおける注目アドレスの第2所定ビットを比較回路173に出力する。次に、比較回路173は、注目アドレスの第2所定ビットと検出アドレスの第2所定ビットとを比較することにより、検出アドレスが注目アドレスであるか否かを判定する(ステップS204)。
検出アドレスが注目アドレスでない場合、省略ブロック決定回路153は、処理をステップS202に戻す。
一方、検出アドレスが注目アドレスである場合、アドレス出力回路174は、検出アドレスの第3所定ビットをデコーダ175に出力し、デコーダ175は、検出アドレスに対応するサブブロック情報をアクセスフラグ記憶回路176に出力する。次に、アクセスフラグ記憶回路176は、デコーダ175から出力されたサブブロック情報に示されるサブブロックのアクセスフラグを有効化する(ステップS205)。
次に、アクセスフラグ記憶回路176は、そのサブブロックと同一のブロックに属する全てのサブブロックのアクセスフラグを省略フラグ生成回路177に出力する。次に、省略フラグ生成回路177は、入力された全てのアクセスフラグが有効であるか否かを判定する(ステップS206)。
アクセスフラグは、対応する注目アドレスに対してCPU125により書込処理又は読出処理が実行された場合に有効化される。一方、クリア信号は、各ブロックに対する判定処理が実行された場合に出力されるため、アクセスフラグは、対応するブロックに対して判定処理が実行された場合に無効化される。したがって、入力された全てのアクセスフラグが有効であるブロックは、前回の判定処理が実行された後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスされている。即ち、省略フラグ生成回路177は、入力された全てのアクセスフラグが有効であるか否かを判定することにより、そのブロックにおいて、前回の判定処理が実行された後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスされたか否かを判定する。
入力された全てのアクセスフラグが有効でない場合、即ちブロック内の全ての注目アドレスがCPU125によりアクセスされていない場合、省略ブロック決定回路153は、処理をステップS202に戻す。
一方、入力された全てのアクセスフラグが有効である場合、即ちブロック内の全ての注目アドレスがCPU125によりアクセスされた場合、省略フラグ生成回路177は、そのブロックに対する省略フラグを有効化する(ステップS207)。そして、省略フラグ生成回路177は、処理をステップS202に戻す。後述するように、メモリコントローラ126は、省略フラグが有効化されると、そのブロックに対する次回の判定処理を省略する。即ち、メモリコントローラ126は、前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたブロックに対する次回の判定処理を省略する。
前回の判定処理が実行された後に書込処理が実行されたデータは、書き込まれてから十分な時間が経過していないため、宇宙線の影響によって破壊されている可能性は低い。また、前回の判定処理が実行された後に読出処理が実行されたデータは、その読出処理に伴って誤りがあるか否かが判定されているため、宇宙線の影響によって破壊されている可能性は低い。したがって、前回の判定処理を実行した後に、書込処理又は読出処理が実行されたデータについては、次回の判定処理を省略することにより、データの信頼性を確保しつつ、メモリへのアクセス性能の低下を防止することが可能となる。
また一般に、メモリアクセス処理は空間的局所性を有している。即ち、メモリ空間内のあるアドレスにアクセスされた場合、そのアドレスの近傍のアドレスにもアクセスされる可能性が高い。したがって、特定のブロックにおいて、所定間隔毎に設定された全ての注目アドレスにアクセスされている場合、そのブロックには空間的局所性の高いアクセスがなされており、そのブロック内の全てのアドレスにアクセスされている可能性が高い。したがって、メモリコントローラ126は、各ブロック内の全てのアドレスではなく、注目アドレスにアクセスされているか否かのみを判定することにより、判定処理を実行すべきブロックを適切に決定することができる。これにより、メモリコントローラ126は、データの信頼性を確保しつつ、データの判定処理を実行すべきブロックの決定に係る負荷を低減することが可能となる。
図9は、省略ブロック決定回路153によるフラグクリア処理の動作の例を示すフローチャートである。以下、図9に示したフローチャートを参照しつつ、フラグクリア処理の動作の例を説明する。なお、以下に説明する動作のフローは、主に省略ブロック決定回路153によりメモリコントローラ126の各要素と協働して実行される。
最初に、省略ブロック決定回路153は、判定制御回路154からクリア信号が入力されるまで待機する(ステップS301)。
次に、クリア信号が入力された場合、アクセスフラグ記憶回路176は、そのクリア信号に対応するブロックの全てのサブブロックのアクセスフラグを無効化する(ステップS302)。
次に、省略フラグ生成回路177は、そのクリア信号に対応するブロックの省略フラグを無効化する(ステップS303)。
次に、注目アドレス記憶回路172は、そのクリア信号に対応するブロックの注目アドレスを変更し(ステップS304)、処理をステップS301に戻す。
図10は、判定制御回路154の概略構成を示す図である。
図10に示すように、判定制御回路154は、ブロック選択回路181と、周期生成回路182と、判定実行回路183とを有する。
ブロック選択回路181には、設定記憶回路151から出力される分割ブロック数及び許可フラグと、省略ブロック決定回路153から出力される省略フラグと、判定実行回路183から出力される完了信号とが入力される。完了信号は、特定のブロックに対する判定処理が完了したことを示す。
図11は、ブロック選択回路181によるブロック選択処理の動作の例を示すフローチャートである。以下、図11に示したフローチャートを参照しつつ、ブロック選択処理の動作の例を説明する。なお、以下に説明する動作のフローは、主にブロック選択回路181によりメモリコントローラ126の各要素と協働して実行される。
最初に、ブロック選択回路181は、設定記憶回路151から、分割ブロック数及び許可フラグの設定を受け付ける(ステップS401)。
次に、ブロック選択回路181は、受け付けた許可フラグが判定処理の実行の許可を示すか否かを判定する(ステップS402)。
許可フラグが判定処理の実行の許可を示さない場合、ブロック選択回路181は、一連のステップを終了する。
一方、許可フラグが判定処理の実行の許可を示す場合、ブロック選択回路181は、特定のブロックを選択する(ステップS403)。なお、以下に示すステップS404〜S410の処理は、選択されたブロック毎に、全てのブロックに対して実行される。ブロック選択回路181は、例えば、メモリ空間内のアドレスが0番地に近いブロックから順に選択していく。
次に、ブロック選択回路181は、省略ブロック決定回路153から出力された、選択したブロックに対する省略フラグが有効であるか否かを判定する(ステップS404)。
省略フラグが無効である場合、ブロック選択回路181は、選択したブロックの判定処理の実行を要求する判定要求信号を判定実行回路183に出力する(ステップS405)。判定要求信号には、選択したブロック、即ち判定処理を実行するブロックを識別するための識別番号が含まれる。
次に、ブロック選択回路181は、選択したブロックに対するクリア信号を注目アドレス記憶回路172に出力する(ステップS406)。
次に、ブロック選択回路181は、判定実行回路183から完了信号が出力されるまで待機し(ステップS407)、判定実行回路183から完了信号が出力されると、処理をステップS402へ戻す。なお、ステップS406とS407の順序を入れ替え、ブロック選択回路181は、判定実行回路183から完了信号が出力されてから、選択したブロックに対するクリア信号を注目アドレス記憶回路172に出力してもよい。
一方、省略フラグが有効である場合、ブロック選択回路181は、判定指示信号を判定実行回路183に出力せずに、選択したブロックの判定処理を省略(スキップ)する(ステップS408)。
次に、ブロック選択回路181は、選択したブロックに対するクリア信号を注目アドレス記憶回路172に出力する(ステップS409)。
次に、ブロック選択回路181は、選択したブロックの判定処理を省略したことを示す省略信号を周期生成回路182に出力し(ステップS410)、処理をステップS402へ戻す。なお、ステップS409とS410の順序を入れ替え、ブロック選択回路181は、省略信号を周期生成回路182に出力してから、選択したブロックに対するクリア信号を注目アドレス記憶回路172に出力してもよい。
このように、メモリコントローラ126は、複数のブロック毎に判定処理を実行する。そして、メモリコントローラ126は、省略フラグが有効であるブロック、即ち前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたブロックに対する次回の判定処理を省略する。
図10に戻って、周期生成回路182には、設定記憶回路151から出力される判定周期、動作モード、待機時間及び許可フラグと、ブロック選択回路181から出力される省略信号とが入力される。
図12は、周期生成回路182による周期生成処理の動作の例を示すフローチャートである。以下、図12に示したフローチャートを参照しつつ、周期生成処理の動作の例を説明する。なお、以下に説明する動作のフローは、主に周期生成回路182によりメモリコントローラ126の各要素と協働して実行される。
最初に、周期生成回路182は、設定記憶回路151から、判定周期、動作モード、待機時間及び許可フラグの設定を受け付ける(ステップS501)。
次に、周期生成回路182は、受け付けた許可フラグが判定処理の実行の許可を示すか否かを判定する(ステップS502)。
許可フラグが判定処理の実行の許可を示さない場合、周期生成回路182は、一連のステップを終了する。
一方、許可フラグが判定処理の実行の許可を示す場合、周期生成回路182は、所定タイミングに到達したか否かを判定する(ステップS503)。所定タイミングは、設定記憶回路151から設定された判定周期毎に発生するタイミングである。
所定タイミングに到達していない場合、周期生成回路182は、処理をステップS502に戻す。
一方、所定タイミングに到達した場合、周期生成回路182は、判定処理を実行すべきタイミングであることを示すタイミング信号を生成し、判定実行回路183に出力する(ステップS504)。
次に、周期生成回路182は、ブロック選択回路181から省略信号が出力されているか否かを判定する(ステップS505)。
省略信号が出力されていない場合、周期生成回路182は、処理をステップS502に戻す。
一方、省略信号が出力されている場合、周期生成回路182は、設定記憶回路151から設定された動作モードが待機モードであるか否かを判定する(ステップS506)。
動作モードが即時モードである場合、周期生成回路182は、待機せずに、処理をステップS502に戻す。このように、即時モードは、特定のブロックに対する判定処理を省略した場合、即時に他のブロック(次のブロック)に対する判定処理を実行するモードである。
一方、動作モードが待機モードである場合、周期生成回路182は、設定記憶回路151から設定された待機時間だけ待機し(ステップS507)、処理をステップS502に戻す。このように、待機モードは、特定のブロックに対する判定処理を省略した場合、所定時間待機してから他のブロック(次のブロック)に対する判定処理を実行するモードである。メモリコントローラ126は、即時モードと待機モードの内の何れか一方で動作する。
図10に戻って、判定実行回路183には、設定記憶回路151から出力される許可フラグと、ブロック選択回路181から出力される判定要求信号と、データ制御回路155から出力される読出データとが入力される。
図13は、判定実行回路183による判定実行処理の動作の例を示すフローチャートである。以下、図13に示したフローチャートを参照しつつ、判定実行処理の動作の例を説明する。なお、以下に説明する動作のフローは、主に判定実行回路183によりメモリコントローラ126の各要素と協働して実行される。
最初に、判定実行回路183は、設定記憶回路151から、許可フラグの設定を受け付ける(ステップS601)。
次に、判定実行回路183は、受け付けた許可フラグが判定処理の実行の許可を示すか否かを判定する(ステップS602)。
許可フラグが判定処理の実行の許可を示さない場合、判定実行回路183は、一連のステップを終了する。
一方、許可フラグが判定処理の実行の許可を示す場合、判定実行回路183は、周期生成回路182からタイミング信号が出力されるまで待機する(ステップS603)。
周期生成回路182からタイミング信号が出力されると、判定実行回路183は、ブロック選択回路181から出力された判定要求信号に含まれる識別番号で指定されるブロックを特定し、特定したブロック内のアドレスを選択する(ステップS604)。なお、ステップS604〜S606の処理は、選択されたアドレス毎に、ブロック内の全てのアドレスに対して実行される。判定実行回路183は、例えば小さい順にアドレスを選択していく。
次に、判定実行回路183は、判定処理の実行を指示する判定指示信号をデータ制御回路155に出力し(ステップS605)、判定処理が完了するまで、即ちデータ制御回路155から、選択したアドレスの読出データが出力されるまで待機する。
次に、判定実行回路183は、特定したブロック内の全てのアドレスを選択したか否かを判定する(ステップS606)。
まだ選択していないアドレスがある場合、判定実行回路183は、処理をステップS604に戻す。
一方、全てのアドレスを選択した場合、判定実行回路183は、完了信号をブロック選択回路181に出力し(ステップS607)、処理をステップS602に戻す。
図14は、データ制御回路155の概略構成を示す図である。
図14に示すように、データ制御回路155は、アービタ回路191と、誤り制御回路192と、アクセス制御回路196とを有する。誤り制御回路192は、誤り訂正用データ生成回路193と、誤り検出回路194と、ログ記憶回路195とを有する。
アービタ回路191には、CPU125から出力される書込指示信号及び読出指示信号と、判定制御回路154から出力される判定指示信号とが入力される。アービタ回路191は、書込処理、読出処理及び判定処理の処理順序を調整し、実行すべき処理に対応する処理信号を誤り制御回路192に出力する。また、アービタ回路191には、誤り制御回路192から出力された読出データが入力される。アービタ回路191は、入力された読出データを、CPU125又は判定制御回路154の内、その読出データに対応する指示信号を出力したモジュールに出力する。
誤り制御回路192には、アービタ回路191から出力される指示信号が入力される。誤り制御回路192は、入力された指示信号に従った、ライトイネーブル信号、アドレス及びデータ、又は、リードイネーブル信号及びアドレスをアクセス制御回路196に出力する。また、誤り制御回路192には、アクセス制御回路196から出力される読出データが入力される。誤り制御回路192は、入力された読出データをアービタ回路191に出力する。
アクセス制御回路196には、誤り制御回路192から出力されるライトイネーブル信号、アドレス及びデータ、又は、リードイネーブル信号及びアドレスが入力される。アクセス制御回路196は、入力された指示信号に従って、メモリ124に対してデータの書き込み又は読み出しを実行する。また、アクセス制御回路196は、メモリ124から読み出した読出データを誤り制御回路192に出力する。
図15は、データ制御回路155によるデータ制御処理の動作の例を示すフローチャートである。以下、図15に示したフローチャートを参照しつつ、データ制御処理の動作の例を説明する。なお、以下に説明する動作のフローは、主にデータ制御回路155によりメモリコントローラ126の各要素と協働して実行される。
最初に、アービタ回路191は、CPU125から出力された書込指示信号及び読出指示信号と、判定制御回路154から出力された判定指示信号とに従って、書込処理、読出処理及び判定処理の処理順序を調整する。次に、アービタ回路191は、実行すべき処理に対応する指示信号を誤り制御回路192に出力する。誤り制御回路192は、アービタ回路191から出力された指示信号が書込指示信号であるか否かを判定することにより、書込処理を実行するか否かを判定する(ステップS701)。
指示信号が書込指示信号である場合、誤り訂正用データ生成回路193は、書込指示信号に含まれるデータに対応する誤り訂正用データを生成する(ステップS702)。
次に、誤り訂正用データ生成回路193は、ライトイネーブル信号と、書込指示信号に含まれるデータ及びアドレスと、生成した誤り訂正用データ及び誤り訂正用データを格納するアドレスとをアクセス制御回路196に出力する。次に、アクセス制御回路196は、誤り訂正用データ生成回路193から出力された信号に従って、書込指示信号に含まれるデータと、生成された誤り訂正用データとをメモリ124に書き込み(ステップS703)、処理をステップS701に戻す。
一方、指示信号が読出指示信号又は判定指示信号である場合、誤り制御回路192は、読出処理又は判定処理を実行する。誤り制御回路192は、リードイネーブル信号と、読出指示信号又は判定指示信号に含まれるアドレスと、そのアドレスに対応する誤り訂正用データが記憶されたアドレスとをアクセス制御回路196に出力する。次に、アクセス制御回路196は、誤り制御回路192から出力された信号に従って、指定されたアドレスに記憶された読出データと、その読出データに対応する誤り訂正用データとをメモリ124から読み出す(ステップS704)。
次に、アクセス制御回路196は、読み出した読出データ及び誤り訂正用データを誤り検出回路194に出力する。誤り検出回路194は、誤り訂正用データを用いて、読出データに誤りがあるか否かを判定する。誤り検出回路194は、読出データに1ビット誤りがあるか(ステップS705)、2ビット以上の誤りがあるか(ステップS706)又は誤りがないかを判定する。
読出データに1ビット誤りがある場合、誤り検出回路194は、誤り訂正用データを用いて読出データを訂正する(ステップS707)。
次に、誤り検出回路194は、アクセス制御回路196にメモリ124内の読出データを訂正後のデータに更新させる(ステップS708)。
次に、誤り検出回路194は、読出データに誤りがあった旨と、誤りがあったアドレス及びデータとを示す誤り情報をログ記憶回路195にロギングする(ステップS709)。
一方、読出データに2ビット以上の誤りがあった場合、誤り検出回路194は、読出データの訂正を行わず、誤り情報をログ記憶回路195にロギングする(ステップS709)。
次に、読出データに1ビット誤りがある場合、2ビット以上の誤りがあった場合、又は、誤りがない場合の何れの場合も、誤り制御回路192は、読出データをアービタ回路191に出力する。アービタ回路191は、誤り制御回路192から出力された読出データを、CPU125又は判定制御回路154の内、その読出データに対応する指示信号を出力したモジュールに出力し(ステップS710)、処理をステップS701に戻す。
以上詳述したように、メモリコントローラ126は、メモリ空間を複数のブロックに分割し、CPU125により空間的局所性の高いアクセスがなされているブロックに対する判定処理を省略する。即ち、メモリコントローラ126は、各ブロック内の全てのアドレスではなく、所定間隔毎に設定された注目アドレスにアクセスされているか否かのみを判定することにより、判定処理を実行すべきブロックを適切に決定することができる。したがって、メモリコントローラ126は、メモリ124に記憶されたデータの信頼性を確保しつつ、メモリ124へのアクセス性能の低下を防止することが可能となった。
特に、動作モードが待機モードである場合、空間的局所性の高いアクセスがなされているブロックに対する判定処理は省略され、その判定処理が実行される予定であった期間には判定処理が実行されなくなる。これにより、CPU125によるメモリアクセスとメモリコントローラ126による判定処理が衝突する可能性が低減し、メモリ124へのアクセス性能の低下を抑制することが可能となる。
一方、動作モードが即時モードである場合、空間的局所性の高いアクセスがなされているブロックに対する判定処理は省略され、代わりに他のブロックに対する判定処理が実行される。これにより、空間的局所性の低いアクセスがなされているブロックに対する判定処理が頻繁に行われるため、メモリ124に記憶されたデータの信頼性をより向上させることが可能となる。
なお、動作モードは、CPU125から設定されたモードで固定されるのではなく、メモリコントローラ126の動作状況等に従って動的に変更されてもよい。例えば、周期生成回路182は、所定期間内における誤り発生量に応じて、待機モードと即時モードの内の何れかで動作するかを決定する。これにより、メモリコントローラ126は、状況に応じて、より適切な効果が得られるモードを柔軟に選択することが可能となる。
例えば、周期生成回路182は、ログ記憶回路195を定期的に読み出し、所定期間内における誤り発生量を算出する。周期生成回路182は、待機モードで動作中に、所定期間内における誤り発生量が第1閾値以上となった場合、誤り発生量が増加傾向にあると判定し、待機モードから即時モードに切り替える。これにより、誤りが発生する可能性が高い場合には、発生した誤りが2ビット以上になる前に訂正が行われ易くなり、データの信頼性を向上させることができる。一方、周期生成回路182は、即時モードで動作中に、所定期間内における誤り発生量が第1閾値より小さい第2閾値以下となった場合、誤り発生量が減少傾向にあると判定し、即時モードから待機モードに切り替える。これにより、誤りが発生する可能性が低い場合には、メモリ124へのアクセス性能の低下を抑制することができる。
なお、第1閾値及び第2閾値は、事前の実験等により定められる。例えば、所定期間が1日であり、第1閾値が20件であり、第2閾値が10件である場合、周期生成回路182は、待機モードで動作中に、1日の誤り発生量が20件以上となった場合、待機モードから即時モードに切り替える。一方、周期生成回路182は、即時モードで動作中に、1日の誤り発生量が10件以下となった場合、即時モードから待機モードに切り替える。このように、第1閾値と第2閾値の間にマージンを設けることにより、待機モードと即時モードが頻繁に切り替わることが抑制され、情報処理装置100全体の動作の安定化を図ることが可能となる。
また、判定周期、待機時間又は注目アドレスの間隔等についても同様に、CPU125から設定された設定値で固定されるのではなく、メモリコントローラ126の動作に従って動的に変更されてもよい。
例えば、周期生成回路182は、所定期間内における誤り発生量が第1閾値以上となった場合、判定周期を短くし、所定期間内における誤り発生量が第2閾値以下となった場合、判定周期を長くする。また、周期生成回路182は、所定期間内における誤り発生量が第1閾値以上となった場合、待機時間を短くし、所定期間内における誤り発生量が第2閾値以下となった場合、待機時間を長くする。また、周期生成回路182は、所定期間内における誤り発生量が第1閾値以上となった場合、注目アドレスの間隔を短くし、所定期間内における誤り発生量が第2閾値以下となった場合、注目アドレスの間隔を長くする。これにより、誤りが発生する可能性が高い場合には、データの信頼性を向上させることができ、誤りが発生する可能性が低い場合には、性能低下を抑制することができる。
なお、図5、8、11、12及び13に示したフローチャートでは各設定処理が最初に実行される例を示したが、各設定処理は任意のタイミングで実行されてもよい。即ち、メモリコントローラ126に対する各設定は、メモリコントローラ126の動作中に動的に変更されてもよい。
図16は、他の実施形態に係る記憶装置223及びメモリコントローラ226の概略構成を示す図である。
図16に示す記憶装置223及びメモリコントローラ226は、図1に示す記憶装置123及びメモリコントローラ126の代わりに用いられる。
図16に示すように、記憶装置223には、設定記憶プログラム251、アクセス監視プログラム252、省略ブロック決定プログラム253、判定制御プログラム254及びデータ制御プログラム255等の各プログラムが記憶される。これらの各プログラムは、プロセッサ上で動作するソフトウェアにより実装される機能モジュールである。メモリコントローラ226は、記憶装置223に記憶された各プログラムを読み取り、読み取った各プログラムに従って動作する。これにより、メモリコントローラ226は、設定記憶部261、アクセス監視部262、省略ブロック決定部263、判定制御部264及びデータ制御部265として機能する。これらの各部は、それぞれ、メモリコントローラ126の設定記憶回路151、アクセス監視回路152、省略ブロック決定回路153、判定制御回路154及びデータ制御回路155と同等の機能をソフトウェアにより実現する。
即ち、メモリコントローラ226は、CPU125からの書込指示信号に従って書込処理を実行し、CPU125からの読出指示信号に従って読出処理を実行する。また、メモリコントローラ226は、メモリ124内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、定期的に、複数のブロック毎に判定処理を実行する。そして、メモリコントローラ226は、前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたブロックに対する次回の判定処理を省略する。
以上詳述したように、メモリコントローラ226は、ソフトウェアにより構成される場合も、メモリ124に記憶されたデータの信頼性を確保しつつ、メモリ124へのアクセス性能の低下を防止することが可能となった。
図17は、他の実施形態に係る画像読取装置300のハードウェア構成を示す図である。
画像読取装置300は、メモリ制御装置の他の例であり、例えばイメージスキャナ等である。図17に示すように、画像読取装置300は、インタフェース301と、撮像装置302と、画像処理装置303と、記憶装置304と、メモリ305と、CPU306と、メモリコントローラ307とを有する。以下、画像読取装置300の各部について詳細に説明する。
インタフェース301は、例えばUSB等のシリアルバスに準じるインタフェース回路を有し、不図示の外部装置と電気的に接続して画像データ及び各種の情報を送受信する。
撮像装置302は、CCD(Charge Coupled Device)、CMOS(Complementary Metal Oxide Semiconductor)等の撮像センサを有し、原稿を撮像した画像を生成して出力する。
画像処理装置303は、撮像装置302が生成した画像に対して所定の画像処理を実行する。
記憶装置304は、情報処理装置100の本体記憶装置112と同様の記憶装置であり、記憶装置304には、画像読取装置300の各種処理に用いられる各種データ、コンピュータプログラム、データベース、テーブル等が格納される。コンピュータプログラムは、例えばCD−ROM、DVD−ROM等のコンピュータ読み取り可能な可搬型記録媒体から、公知のセットアッププログラム等を用いて記憶装置304にインストールされてもよい。
メモリ305は、情報処理装置100のメモリ124と同様のメモリ装置であり、撮像装置302により生成された画像、画像処理装置303により画像処理が実行された画像等を記憶する。メモリ305には、各画像に誤りがあるか否かを判定し且つ訂正するための誤り訂正用データ等がさらに記憶される。
CPU306は、情報処理装置100のCPU125と同様のCPUであり、予め記憶装置304に記憶されているプログラムに基づいて動作する。CPU306は、撮像装置302又は画像処理装置303から各種の画像を取得し、メモリコントローラ307を介してメモリ305に記憶する。
メモリコントローラ307は、情報処理装置100のメモリコントローラ126と同様のメモリコントローラである。メモリコントローラ307は、CPU306からの書込指示信号に従って書込処理を実行し、CPU306からの読出指示信号に従って読出処理を実行する。また、メモリコントローラ307は、メモリ305内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、定期的に、複数のブロック毎に判定処理を実行する。そして、メモリコントローラ307は、前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたブロックに対する次回の判定処理を省略する。
以上詳述したように、画像読取装置300においても、メモリ305に記憶されたデータの信頼性を確保しつつ、メモリ305へのアクセス性能の低下を防止することが可能となった。
120 メモリ制御装置
300 画像読取装置
124、305 メモリ
125、306 CPU
126、226、307 メモリコントローラ
300 画像読取装置
124、305 メモリ
125、306 CPU
126、226、307 メモリコントローラ
Claims (7)
- プロセッサと、
メモリと、
前記プロセッサからの指示に従って、前記メモリにデータ及び誤り訂正用データを書き込む書込処理と、前記プロセッサからの指示に従って、前記メモリからデータを読み出し、読み出したデータを前記プロセッサに出力する読出処理とを実行するメモリコントローラと、を有し、
前記メモリコントローラは、
前記メモリ内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、
定期的に、前記複数のブロック毎に、各ブロック内のデータ及び誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する判定処理を実行し、
前回の前記判定処理を実行した後に、前記書込処理又は前記読出処理によって、全ての前記注目アドレスにアクセスしたブロックに対する次回の前記判定処理を省略する、
ことを特徴とするメモリ制御装置。 - 前記メモリコントローラは、前記読出処理において、前記メモリから誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する、請求項1に記載のメモリ制御装置。
- 前記メモリコントローラは、特定のブロックに対する前記次回の判定処理を省略した場合、即時に他のブロックに対する前記判定処理を実行する第1モードと、所定時間待機してから他のブロックに対する前記判定処理を実行する第2モードの内の何れか一方で動作する、請求項1または2に記載のメモリ制御装置。
- 前記メモリコントローラは、所定期間内における誤り発生量に応じて、前記第1モードと前記第2モードの内の何れで動作するかを決定する、請求項3に記載のメモリ制御装置。
- 前記メモリコントローラは、前記第2モードで動作中に前記誤り発生量が第1閾値以上となった場合、前記第2モードから前記第1モードに切り替え、前記第1モードで動作中に前記誤り発生量が第1閾値より小さい第2閾値以下となった場合、前記第1モードから前記第2モードに切り替える、請求項4に記載のメモリ制御装置。
- プロセッサと、メモリと、前記プロセッサからの指示に従って、前記メモリにデータ及び誤り訂正用データを書き込む書込処理と、前記プロセッサからの指示に従って、前記メモリからデータを読み出し、読み出したデータを前記プロセッサに出力する読出処理とを実行するメモリコントローラと、を有するメモリ制御装置の制御方法であって、
前記メモリコントローラが、
前記メモリ内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、
定期的に、前記複数のブロック毎に、各ブロック内のデータ及び誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する判定処理を実行し、
前回の前記判定処理を実行した後に、前記書込処理又は前記読出処理によって、全ての前記注目アドレスにアクセスしたブロックに対する次回の前記判定処理を省略する、
ことを特徴とする制御方法。 - プロセッサと、メモリと、前記プロセッサからの指示に従って、前記メモリにデータ及び誤り訂正用データを書き込む書込処理と、前記プロセッサからの指示に従って、前記メモリからデータを読み出し、読み出したデータを前記プロセッサに出力する読出処理とを実行するメモリコントローラと、を有するメモリ制御装置の制御プログラムであって、
前記メモリコントローラに、
前記メモリ内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、
定期的に、前記複数のブロック毎に、各ブロック内のデータ及び誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する判定処理を実行し、
前回の前記判定処理を実行した後に、前記書込処理又は前記読出処理によって、全ての前記注目アドレスにアクセスしたブロックに対する次回の前記判定処理を省略する、
ことを実行させることを特徴とする制御プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016035653A JP6076524B1 (ja) | 2016-02-26 | 2016-02-26 | メモリ制御装置、制御方法及び制御プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016035653A JP6076524B1 (ja) | 2016-02-26 | 2016-02-26 | メモリ制御装置、制御方法及び制御プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6076524B1 true JP6076524B1 (ja) | 2017-02-08 |
JP2017151874A JP2017151874A (ja) | 2017-08-31 |
Family
ID=57981542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016035653A Expired - Fee Related JP6076524B1 (ja) | 2016-02-26 | 2016-02-26 | メモリ制御装置、制御方法及び制御プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6076524B1 (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04354040A (ja) * | 1991-05-31 | 1992-12-08 | Nec Corp | シングルイベントアップセットエラー蓄積防止回路 |
WO2012172645A1 (ja) * | 2011-06-14 | 2012-12-20 | 富士通株式会社 | メモリ制御装置および制御方法 |
JP2013125303A (ja) * | 2011-12-13 | 2013-06-24 | Lapis Semiconductor Co Ltd | 半導体メモリ制御装置及び制御方法 |
JP2014059821A (ja) * | 2012-09-19 | 2014-04-03 | Nec Computertechno Ltd | メモリパトロール制御方式 |
-
2016
- 2016-02-26 JP JP2016035653A patent/JP6076524B1/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04354040A (ja) * | 1991-05-31 | 1992-12-08 | Nec Corp | シングルイベントアップセットエラー蓄積防止回路 |
WO2012172645A1 (ja) * | 2011-06-14 | 2012-12-20 | 富士通株式会社 | メモリ制御装置および制御方法 |
JP2013125303A (ja) * | 2011-12-13 | 2013-06-24 | Lapis Semiconductor Co Ltd | 半導体メモリ制御装置及び制御方法 |
JP2014059821A (ja) * | 2012-09-19 | 2014-04-03 | Nec Computertechno Ltd | メモリパトロール制御方式 |
Also Published As
Publication number | Publication date |
---|---|
JP2017151874A (ja) | 2017-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9817711B2 (en) | Memory controller | |
US10261906B2 (en) | Data accessing method and apparatus | |
JP4901968B2 (ja) | 半導体記憶装置 | |
US11336305B2 (en) | Memory system | |
US9570197B2 (en) | Information processing device, computer-readable recording medium, and method | |
JP2009527820A (ja) | エラー訂正方法およびエラー訂正装置 | |
US10826526B2 (en) | Memory system and information processing system | |
US20170364309A1 (en) | Memory system and method of controlling nonvolatile memory | |
JP6102515B2 (ja) | 情報処理装置、制御回路、制御プログラム、および制御方法 | |
JP7308025B2 (ja) | 集積回路装置及びストレージ装置 | |
JP2012118839A (ja) | アクセス制御装置、誤り訂正制御方法およびストレージ装置 | |
CN108351818B (zh) | 用于在存储器中实现纠错码的系统和方法 | |
US20180267715A1 (en) | Memory system, memory control device, and method of controlling memory system | |
CN112612639A (zh) | 操作存储器系统的方法、操作主机的方法和计算系统 | |
US20150278037A1 (en) | Transfer device, determination method, and data processing device | |
US10614892B1 (en) | Data reading method, storage controller and storage device | |
US8873327B2 (en) | Semiconductor device and operating method thereof | |
JP6076524B1 (ja) | メモリ制御装置、制御方法及び制御プログラム | |
KR20160008786A (ko) | 메모리 데이터의 에러 보정 장치 및 방법 | |
US11733911B2 (en) | Storage device and storage device management method | |
US20180275912A1 (en) | Information processing apparatus and method for controlling the same | |
JP2019133578A (ja) | メモリ制御装置、制御方法及び制御プログラム | |
US20240168653A1 (en) | Memory system adaptive to health condition, and memory controller for memory system and operating method of the memory system | |
CN109683803B (zh) | 一种数据处理方法及装置 | |
KR20240072769A (ko) | 건강 상태에 적응적인 메모리 시스템과, 이를 위한 메모리 컨트롤러 및 그 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20161213 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170110 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6076524 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |