(57)【要約】【課題】システムが使用中のメモリの誤り検出を効率的に実施する。【解決手段】メモリ制御回路１は、アクティブリスト制御部３０と、メモリ走査部４０とを有する。アクティブリスト制御部３０は、複数のページ名の何れか１つに対応するメモリの物理アドレスの何れかがアクセスされたことに応じて、複数のページ名の順序を示すアクティブリスト１１２に示される複数のページ名の順序を入れ替える。メモリ走査部４０は、アクティブリスト１１２に示される順序に応じて、複数のページ名のそれぞれに対応する物理アドレスを走査して、走査した物理アドレスに記憶されるデータに回復可能なソフトエラーがあるか否かを判定する。メモリ走査部４０は、回復可能なソフトエラーがあると判定した物理アドレスに記憶されるデータの書き換えを指示する。【選択図】図８
2018073148.tif 000002
【特許請求の範囲】
【請求項１】
複数のページ名の何れか１つに対応するメモリの物理アドレスの何れかがアクセスされたことに応じて、前記複数のページ名の順序を示すアクティブリストに示される前記複数のページ名の順序を入れ替えるアクティブリスト制御部と、
前記アクティブリストに示される順序に応じて、前記複数のページ名のそれぞれに対応する物理アドレスを走査して、前記走査した物理アドレスに記憶されるデータに回復可能なソフトエラーがあるか否かを判定し、前記回復可能なソフトエラーがあると判定した物理アドレスに記憶されるデータの書き換えを指示するメモリ走査部と、
を有する、メモリ制御回路。
【請求項２】
前記物理アドレスの何れかがアクセスされたときに、アクセスされた物理アドレスを示すページ名を前記アクティブリスト制御部に通知するアクセス通知部を有するメモリ管理部を更に有し、
前記アクティブリスト制御部は、前記アクセス通知部によって通知されたページ名を前記アクティブリストの先頭に移動する、請求項１に記載のメモリ制御回路。
【請求項３】
前記メモリ走査部は、
前記アクティブリストに示される順序に従って、前記複数のページ名のそれぞれを順次選択するページ選択部と、
前記ページ選択部によって選択されたページ名に対応する物理アドレスが前回走査されてから所定の閾値時間が経過しているか否かを判定する経過時間判定部と、
前記選択されたページ名に対応する物理アドレスが前回走査されてから前記閾値時間が経過していると判定されたときに、前記選択されたページ名に対応する物理アドレスを、走査する物理アドレスに決定する走査領域決定部と、
を有する、請求項１又は２に記載のメモリ制御回路。
【請求項４】
前記アクティブリスト制御部は、アクセスされた物理アドレスが前回走査されてから所定の閾値時間が経過したと判定したときに、前記アクセスされた物理アドレスを示すページ名をアクティブリストの先頭に移動する、請求項１又は２に記載のメモリ制御回路。
【請求項５】
前記回復可能なソフトエラーは、シングルビットエラーである、請求項１〜４の何れか一項に記載のメモリ制御回路。
【請求項６】
複数のページ名の何れか１つに対応するメモリの物理アドレスの何れかがアクセスされたことに応じて、前記複数のページ名の順序を示すアクティブリストに示される前記複数のページ名の順序を入れ替え、
前記アクティブリストに示される順序に応じて、前記複数のページ名のそれぞれに対応する物理アドレスを走査して、前記走査した物理アドレスに記憶されるデータに回復可能なソフトエラーがあるか否かを判定し、前記回復可能なソフトエラーがあると判定した物理アドレスに記憶されるデータの書き換えを指示する、
ことを含む、メモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御回路及びその方法に関する。
【背景技術】
【０００２】
メモリにデータを誤り検出用データと共に記憶して、メモリに記憶されたデータの誤りを検出する種々の技術が知られている（例えば、特許文献１を参照）。また、メモリを複数のメモリ領域に分割し、複数のメモリ領域のそれぞれを、システムが使用している使用中状態と使用していない未使用状態を区別して、メモリに記憶されたデータの誤りを検出することが知られている（例えば、特許文献２を参照）。システムが使用中のメモリの誤り検出を優先し、使用していないメモリエリアの誤り検出を実行しないようにすることで、使用中のメモリの誤り検出が強化されて、使用中のメモリの信頼性を向上させることができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−３０６８１１号公報
【特許文献２】特開２０００−１６３３２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、システムに搭載される演算装置の演算速度が向上するに従って、システムが使用中のメモリの容量が増加するため、大規模システムにおいて、使用中の全てのメモリの誤り検出を実行することは容易ではない。
【０００５】
一実施形態では、システムが使用中のメモリの誤り検出を効率的に実施可能なメモリ制御回路を提供する。
【課題を解決するための手段】
【０００６】
１つの態様では、メモリ制御回路は、アクティブリスト制御部と、メモリ走査部とを有する。アクティブリスト制御部は、複数のページ名の何れか１つに対応するメモリの物理アドレスの何れかがアクセスされたことに応じて、複数のページ名の順序を示すアクティブリストに示される複数のページ名の順序を入れ替える。メモリ走査部は、アクティブリストに示される順序に応じて、複数のページ名のそれぞれに対応する物理アドレスを走査して、走査した物理アドレスに記憶されるデータに回復可能なソフトエラーがあるか否かを判定する。メモリ走査部は、回復可能なソフトエラーがあると判定した物理アドレスに記憶されるデータの書き換えを指示する。
【発明の効果】
【０００７】
一実施形態では、システムが使用中のメモリの誤り検出を効率的に実施することができる。
【図面の簡単な説明】
【０００８】
【図１】実施形態に関連するメモリ制御回路が搭載されたパケット転送装置の回路ブロック図である。
【図２】図１に示す監視制御部のハードウェア構成を示す図である。
【図３】（ａ）は図２に示すＣＰＵが読出したデータにシングルビットエラーが発生したときの監視制御部の動作を示す図であり、（ｂ）は図１に示すＣＰが読出したデータにマルチビットエラーが発生したときの監視制御部の動作を示す図である。
【図４】第１実施形態に係るメモリ制御回路を含む監視制御部の回路ブロック図である。
【図５】図４に示すＤＲＡＭとページテーブルとの関係の一例を示す図である。
【図６】（ａ）は図４に示すアクティブリストとＤＲＡＭ及びページテーブルとの関係の一例を示す図であり、（ｂ）はアクティブリストに含まれる情報の一例を示す図である。
【図７】図４に示すＣＰＵの機能ブロック図である。
【図８】図４に示すＣＰＵによるメモリ制御処理のシーケンス図である。
【図９】図８に示すＳ１０３〜Ｓ１０５の処理を説明するための図である。
【図１０】図８に示すＳ１０６〜Ｓ１０７の処理を説明するための図である。
【図１１】図８に示すＳ１０９の処理のより詳細な処理を示すフローチャートである。
【図１２】第２実施形態に係るメモリ制御回路を含む監視制御部の回路ブロック図である。
【図１３】図１２に示すＤＲＡＭとページテーブルとの関係の一例を示す図である。
【図１４】図１２に示すＣＰＵの機能ブロック図である。
【図１５】図１２に示すＣＰＵによるメモリ走査処理を示すフローチャートである。
【図１６】第３実施形態に係るメモリ制御回路を含む監視制御部の回路ブロック図である。
【図１７】図１６に示すＣＰＵの機能ブロック図である。
【図１８】図１６に示すＣＰＵによるメモリ制御処理のシーケンス図である。
【図１９】図１８に示すＳ４１０の処理のより詳細な処理を示すフローチャートである。
【図２０】タスクの１つとしてメモリ走査処理を実行するときの図７に示すＣＰＵによるメモリ制御処理のシーケンス図である。
【発明を実施するための形態】
【０００９】
以下図面を参照して、メモリ制御回路及びメモリ制御方法について説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明との均等物に及ぶ点に留意されたい。
【００１０】
（実施形態に関連するメモリ制御回路が搭載されたパケット転送装置）
図１は、実施形態に関連するメモリ制御回路が搭載されたパケット転送装置の回路ブロック図である。
【００１１】
パケット転送装置９００は、第１インタフェース部９０１と、第２インタフェース部９０２と、パケット処理部９０３と、監視制御部９０４と、電源装置９０５とを有する。第１インタフェース部９０１及び第２インタフェース部９０２のそれぞれは、不図示の外部装置から受信したパケットをパケット処理部９０３に出力すると共に、パケット処理部９０３で所定の処理が実行されたパケットを不図示の外部装置に送信する。パケット処理部９０３は、第１インタフェース部９０１及び第２インタフェース部９０２のそれぞれが受信したパケットに所定の処理を実行して、第１インタフェース部９０１及び第２インタフェース部９０２に出力する。監視制御部９０４は、不図示の監視制御端末接続用ポートを介して監視制御端末にパケット転送装置９００の状態を示す状態信号を出力する。電源装置９０５は、第１インタフェース部９０１、第２インタフェース部９０２、パケット処理部９０３及び監視制御部９０４に電源電圧を供給する。
【００１２】
図２は、監視制御部９０４のハードウェア構成を示す図である。
【００１３】
監視制御部９０４は、ＤＲＡＭ９１０と、メモリコントローラ９１１と、ＲＯＭ９１２と、ＤＭＡコントローラ９１３と、ＣＰＵ９１４とを有する。
【００１４】
ＤＲＡＭ９１０は、誤り訂正機能付きの揮発性メモリであり、ＣＰＵ９１４が所定の処理を実行するときに使用されるプログラム及びデータ等を、誤り訂正符号（Error-Correcting Code、ＥＣＣ）データに関連づけて記憶する。メモリコントローラ９１１は、ＣＰＵ９１４の指示に基づいて、ＤＲＡＭ９１０に記憶されたデータを読出して、ＣＰＵ９１４に出力する。ＲＯＭ９１２は、ＣＰＵ９１４が所定の処理を実行するときに使用されるプログラム等を記憶する不揮発性メモリである。ＤＭＡコントローラ９１３は、ＤＲＡＭ９１０に記憶されたデータを読出して不図示の周辺装置に出力すると共に、不図示の周辺装置から入力されたデータをＤＲＡＭ９１０に書込む。ＣＰＵ９１４は、ＤＲＡＭ９１０から読出されたデータを記憶するデータキャッシュ９１５と、ＤＲＡＭ９１０から読出されたプログラムを記憶する命令キャッシュ９１６とを有する。
【００１５】
ＤＲＡＭ９１０に記憶されるデータは、ハード故障に起因するビットエラーではなく、宇宙線等の影響によりビットエラーが生じることがある。ここでは、宇宙線等の影響によるビットエラーはソフトエラーと称され、１ビットのソフトエラーはシングルビットエラーと称され、２ビット以上のソフトエラーはマルチビットエラーと称される。
【００１６】
図３（ａ）はＣＰＵ９１５が読出したデータにシングルビットエラーが発生したときの監視制御部９０４の動作を示す図であり、図３（ｂ）はＣＰＵ９１５が読出したデータにマルチビットエラーが発生したときの監視制御部９０４の動作を示す図である。
【００１７】
メモリコントローラ９１１は、ＣＰＵ９１５による読出し指示に応じてＤＲＡＭ９１０から読出したデータにおいてシングルビットエラーを検出すると、シングルビットエラー検出通知をＣＰＵ９１４に出力する。また、メモリコントローラ９１１は、シングルビットエラーが発生したデータを訂正したデータをＣＰＵ９１４に出力する。ＣＰＵ９１４は、シングルビットエラー検出通知が入力されると、シングルビットエラーカウンタをインクリメントすると共に、訂正後のデータを使用して処理を実行する。
【００１８】
一方、メモリコントローラ９１１は、ＣＰＵ９１５による読出し指示に応じてＤＲＡＭ９１０から読出したデータにおいてマルチビットエラーを検出すると、マルチビットエラー検出通知をＣＰＵ９１４に出力する。ＣＰＵ９１４は、ＲＯＭ９１２に書込まれたプログラムを読出してＲＡＭ９１０に書込むリセット処理を実行する。
【００１９】
監視制御部９０４では、シングルビットエラーが検出されたとき、読出されたデータは訂正されるが、ＤＲＡＭ９１０に記憶されるデータは訂正されずに、シングルビットエラーが発生した状態で記憶される。ＤＲＡＭ９１０に記憶されるデータはシングルビットエラーが発生した状態であるので、新たにシングルビットエラーが発生すると、マルチビットエラーが発生する。ＣＰＵ９１０は、マルチビットエラーが発生したデータを読出すと、リセット処理を実行するため、監視制御部９０４を搭載するパケット転送装置９００は、監視制御部９０４のリセット処理のため、パケット転送を中断する。
【００２０】
また、監視制御部９０４では、ＣＰＵ９１４によって読出されたデータは、誤り訂正機能によりソフトエラー検出が可能であるが、ＣＰＵ９１４によって読出されていないデータは、ソフトエラーを検出することができない。ＤＲＡＭ９１０の全ての物理アドレスを順次読出して誤り訂正することにより、ＣＰＵ９１４によって読出されていないデータのソフトエラー検出が可能である。しかしながら、ＤＲＡＭ９１０の容量が大きい場合には、ＤＲＡＭ９１０の全ての物理アドレスを誤り訂正する間に、誤り訂正を既に終了した物理アドレスにソフトエラーが発生するおそれがある。
【００２１】
（実施形態に関連するメモリ制御回路の概要）
実施形態に関連するメモリ制御回路は、走査する物理アドレスの順序を、物理アドレスのアクセスに応じて変更することで、アクセスされる可能性が高い物理アドレスを優先的に走査してシングルビットエラーの有無を判定する。実施形態に関連するメモリ制御回路は、アクセスされる可能性が高い物理アドレスを優先的に走査することで、シングルビットエラーを効率的に検出することができる。なお、ここでは、シングルビットエラーを回復可能なソフトエラーの一例として説明するが、マルチビットエラーであっても、ＥＣＣデータを使用して回復可能なソフトエラーであれば、実施形態に係るメモリ制御回路及びその方法は適用可能である。
【００２２】
（第１実施形態に係るメモリ制御回路を含む監視制御部の構成及び機能）
図４は、第１実施形態に係るメモリ制御回路を含む監視制御部の回路ブロック図である。
【００２３】
監視制御部１００は、ＤＲＡＭ１０１と、メモリコントローラ１０２と、ＲＯＭ１０３と、メモリ制御回路としても機能するＣＰＵ１とを有する。ＤＲＡＭ１０１は、ページテーブル１１１と、アクティブリスト１１２とを有することがＤＲＡＭ９１０と相違する。ページテーブル１１１及びアクティブリスト１１２以外のＤＲＡＭ１０１の構成及び機能は、ＤＲＡＭ９１０と同一なので、ここでは詳細な説明は省略する。ページテーブル１１１は、複数のページ名のそれぞれを、メモリの物理アドレスと対応付けるテーブルである。すなわち、ページテーブル１１１は、ＤＲＡＭ１０１のメモリ領域の管理情報である。
【００２４】
図５は、ＤＲＡＭ１０１とページテーブル１１１との関係の一例を示す図である。
【００２５】
ＤＲＡＭ１０１は、アドレスＡ１０〜Ａ１Ｎ、Ａ２０〜Ａ２Ｎ、Ａ３０〜Ａ３Ｎ、Ａ４０〜Ａ４Ｎ、Ａ５０〜Ａ５Ｎ及びＡ６０〜Ａ６Ｎのそれぞれで示されるメモリ素子を有する。ＤＲＡＭ１０１のメモリ素子は、「０」又は「１」で示される信号値を示す。ページ１はＤＲＡＭ１０１のアドレスＡ１０〜Ａ１Ｎに対応付けられ、ページ２はＤＲＡＭ１０１のアドレスＡ２０〜Ａ２Ｎに対応付けられ、ページ３はＤＲＡＭ１０１のアドレスＡ３０〜Ａ３Ｎに対応付けられる。ページ４はＤＲＡＭ１０１のアドレスＡ４０〜Ａ４Ｎに対応付けられ、ページ５はＤＲＡＭ１０１のアドレスＡ５０〜Ａ５Ｎに対応付けられ、ページ６はＤＲＡＭ１０１のアドレスＡ６０〜Ａ６Ｎに対応付けられる。
【００２６】
アクティブリスト１１２は、対応する物理アドレスがアクセスされた複数のページ名の順序を示す。より詳細には、アクティブリスト１１２は、ＣＰＵ１が処理を実行するときに割り当てられた物理アドレスを示すページ名を、対応する物理アドレスがアクセスされた順序に並べて記憶する。また、アクティブリスト１１２は、ページ名に対応する物理アドレスのそれぞれが走査された時刻を併せて記憶する。
【００２７】
図６（ａ）はアクティブリスト１１２とＤＲＡＭ１０１及びページテーブル１１１との関係の一例を示す図であり、図６（ｂ）はアクティブリスト１１２に含まれる情報の一例を示す図である。
【００２８】
図６（ａ）に示す例では、ページテーブル１１１に示されるページ１〜ページ６の中で、ページ１、４及び６の３つのページ名に対応する物理アドレスが、ＣＰＵ１のタスクに割り当てられている。アクティブリスト１１２は、タスクに割り当てられたページ１、４及び６のそれぞれがＣＰＵ１にアクセスされた順番を示す。
【００２９】
図６（ｂ）に示すように、アクティブリスト１１２は、タスクに割り当てられたページ名のそれぞれについて、ページ名に対応する物理アドレスが走査された時刻、及びページ名の前後に並べたページのページ名を示す情報を記憶する。
【００３０】
メモリコントローラ１０２及びＲＯＭ１０３のそれぞれは、メモリコントローラ９１１及びＲＯＭ９１２のそれぞれと同一の構成及び機能を有するので、ここでは詳細な説明は省略する。メモリコントローラ１０２は、ＣＰＵ１による読出し指示に応じてＤＲＡＭ１０１から読出したデータにおいてシングルビットエラーを検出すると、シングルビットエラー検出通知をＣＰＵ１に出力する。また、メモリコントローラ１０２は、シングルビットエラーが発生したデータを訂正したデータをＣＰＵ１に出力する。ＣＰＵ１は、シングルビットエラー検出通知が入力されると、シングルビットエラーカウンタをインクリメントする。
【００３１】
ＣＰＵ１は、一又は複数個のプロセッサ及びその周辺回路を有する。ＣＰＵ１は、監視制御部１００の全体的な動作を統括的に制御するものである。ＣＰＵ１は、ＤＲＡＭ１０１及びＲＯＭ１０３に記憶されているプログラム（ドライバプログラム、オペレーティングシステムプログラム、アプリケーションプログラム等）に基づいて処理を実行する。また、ＣＰＵ１は、複数のプログラム（アプリケーションプログラム等）を並列に実行できる。ＣＰＵ１は、ＤＲＡＭ１０１から読出されたデータを記憶するデータキャッシュ１２１と、ＤＲＡＭ１０２から読出されたプログラムを記憶する命令キャッシュ１２２とを有する。
【００３２】
図７は、ＣＰＵ１の機能ブロック図である。
【００３３】
ＣＰＵ１は、第１実施形態に係るメモリ制御回路の一例であり、タスク管理部１０と、タスク１１〜タスク１ＮのＮ個のタスクと、メモリ管理部２０と、アクティブリスト制御部３０と、メモリ走査部４０と、論理／物理アドレス変換部５０とを有する。
【００３４】
タスク管理部１０は、不図示の上位制御装置等の指示に応じて、タスクを生成すると共に、生成したタスクを実行し、実行したタスクが終了したときに、他のタスクに切り換える。タスク１１〜タスク１ＮのＮ個のタスクは、タスク管理部１０により生成されたタスクであり、タスク管理部１０により実行される。
【００３５】
メモリ管理部２０は、メモリ割当部２１と、メモリアクセス部２２と、アクセス通知部２３とを有する。メモリ割当部２１は、タスク１１〜１Ｎの実行に使用されるメモリの割り当てを要求するメモリ要求に応じて、複数のページ名の何れかをタスクに関連付けると共に、関連付けられたページ名をアクティブリスト制御部３０に通知する。メモリアクセス部２２は、タスク管理部１０の指示に応じて、タスクの実行に使用されるデータを、ページテーブル１１１及び論理／物理アドレス変換部５０を介して、ＤＲＡＭ１０１の物理アドレスの何れかにアクセスする。アクセス通知部２３は、タスクの実行に応じて、メモリアクセス部２２が物理アドレスの何れかにアクセスしたときに、アクセスしたページ名を含むメモリアクセス通知をアクティブリスト制御部３０に出力する。アクセス通知部２３は、メモリアクセス通知をアクティブリスト制御部３０に出力することで、アクセスされた物理アドレスを示すページ名をアクティブリスト制御部３０に通知する。
【００３６】
アクティブリスト制御部３０は、複数のページ名のそれぞれに対応する物理アドレスの何れかがアクセスされたことに応じて、アクティブリスト１１２に示される複数のページ名の順序を入れ替える。具体的には、アクティブリスト制御部３０は、アクセス通知部２３によって通知されたページ名をアクティブリスト１１２の先頭に移動する。また、アクティブリスト制御部３０は、メモリ割当部２１によってタスクに関連付けされたページ名を、アクティブリスト１１２に追加する。
【００３７】
メモリ走査部４０は、ページ選択部４１と、経過時間判定部４２と、走査領域決定部４３と、データ読出部４４と、エラー判定部４５と、メモリ書換部４６とを有する。ページ選択部４１は、アクティブリスト１１２に示される順序に従って、複数のページ名のそれぞれを順次選択する。経過時間判定部４２は、ページ選択部４１によって選択されたページ名に対応する物理アドレスが走査されてから所定の閾値時間が経過しているか否かを判定する。走査領域決定部４３は、ページ選択部４１によって選択されたページ領域に対応する物理アドレスが前回走査されてから閾値時間が経過していると判定されたときに、選択されたページ名に対応する物理アドレスを、走査する物理アドレスに決定する。データ読出部４４は、走査領域決定部４３によって決定された物理アドレスに含まれる所定のビット長のデータを読出す。エラー判定部４５は、データ読出部４４によって読出されたデータにシングルビットエラーがあるか否かを判定する。具体的には、エラー判定部４５は、データ読出部４４がデータを読出したときに、シングルビットエラー検出通知が入力されてシングルビットエラーカウンタがインクリメントされたときに、データにシングルビットエラーがあると判定する。メモリ書換部４６は、エラー判定部４５によってシングルビットエラーがあると判定されたデータの書き換えを示す書換指示を、メモリコントローラ１０２に出力する。メモリコントローラ１０２は、書換指示が入力されると、訂正後のデータをＤＲＡＭ１０１の対応する物理アドレスに書込む。
【００３８】
論理／物理アドレス変換部５０は、タスク管理部１０の指示等に応じて指定されたページ名のデータを読出すとき、指定されたページ名をＤＲＡＭ１０２の物理アドレスに変換して、変換した物理アドレスに記憶されるデータを読出す。また、論理／物理アドレス変換部５０は、タスク管理部１０の指示等に応じて指定されたページ名にデータを書込むとき、指定されたページ名をＤＲＡＭ１０２の物理アドレスに変換し、変換した物理アドレスにデータを書込む。
【００３９】
（第１実施形態に係るメモリ制御回路によるメモリ制御処理）
図８は、ＣＰＵ１によるメモリ制御処理のシーケンス図である。図８に示すメモリ制御処理は、予めＲＯＭ１０３に記憶されているプログラムに基づいて、主にＣＰＵ１により監視制御部１００の各要素と協働して実行される。
【００４０】
まず、タスク管理部１０は、タスク１Ｘに所定の処理の実行を指示する（Ｓ１０１）。次いで、タスク１Ｘは、所定の処理を実行する（Ｓ１０２）。タスク１Ｘが処理を実行するために、ＤＲＡＭ１０２にアクセスすると、メモリ割当部２１は、タスク１Ｘにページ名が割り当てられているか否かを判定する（Ｓ１０３）。タスク１Ｘにページ名が割り当てられていないとき（Ｓ１０３−ＹＥＳ）、メモリ割当部２１は、タスク１Ｘにページ名を割り当てると共に、割り当てたページ名を含むメモリ割当通知をアクティブリスト制御部３０に出力する（Ｓ１０４）。アクティブリスト制御部３０は、メモリ割当通知が入力されると、アクティブリスト１１２にメモリ割当通知に含まれるページ名を追加する（Ｓ１０５）。
【００４１】
図９は、Ｓ１０３〜Ｓ１０５の処理を説明するための図である。図９に示す例では、タスク管理部１０は、新たなタスクであるタスク１Ｘを生成している。
【００４２】
タスク１Ｘは、所定の処理を実行するためのメモリを確保するためにメモリ要求をメモリ割当部２１に出力する。メモリ割当部２１は、新たなタスク１Ｘに対するメモリ要求が入力されると、ページテーブル１１１の未使用のページ名をタスク１Ｘに割り当てると共に、アクティブリスト制御部３０にメモリ割当通知を出力する。アクティブリスト制御部３０は、メモリ割当通知が入力されると、ページテーブル１１１を参照して、新たに割り当てられたページ名を取得し、取得したページ名をアクティブリスト１１２に追加する。
【００４３】
タスク１Ｘにページ名が割り当てられているとき（Ｓ１０３−ＮＯ）、アクセス通知部２３は、アクセスしたページ名を含むメモリアクセス通知をアクティブリスト制御部３０に出力する（Ｓ１０６）。次いで、アクティブリスト制御部３０は、メモリアクセス通知に含まれるページ名をアクティブリスト１１２の先頭に移動する（Ｓ１０７）。
【００４４】
図１０は、Ｓ１０６〜Ｓ１０７の処理を説明するための図である。図１０において、タスク１Ｘは、ページＸにアクセスする。
【００４５】
タスク１Ｘが処理の実行に伴ってＤＲＡＭ１０２へにアクセスを指示すると、メモリアクセス部２２は、ページテーブル１１１を参照して、タスク１Ｘに割り当てられたページＸに対応する物理アドレスに論理／物理アドレス変換部５０を介してアクセスする。また、アクセス通知部２３は、アクセスするページ名であるページＸを含むメモリアクセス通知をアクティブリスト制御部３０に出力する。アクティブリスト制御部３０は、メモリアクセス通知が入力されると、メモリアクセス通知に含まれるページ名であるページＸをアクティブリスト１１２の先頭に移動する。
【００４６】
タスク管理部１０は、タスク１Ｘに割り当てられた所定の割当時間が満了したときに、タスク１Ｘが終了したことを示すタスク終了通知をメモリ走査部４０に出力する（Ｓ１０８）。メモリ走査部４０は、タスク中のアイドル時間に、所定のページ数メモリ走査を実行する（Ｓ１０９）。メモリ走査部４０が走査を実行する間、論理／物理アドレス変換部５０は、ページ名に対応するＤＲＡＭ１０２の物理アドレスに必要に応じてアクセスする（Ｓ１１０）。
【００４７】
メモリ走査部４０は、所定のページ数について走査が終了すると、走査が終了したことを示すメモリ走査終了通知をタスク管理部１０に出力する（Ｓ１１１）。
【００４８】
図１１は、Ｓ１０９の処理のより詳細な処理を示すフローチャートである。
【００４９】
まず、ページ選択部４１は、ページパラメータｉを「１」に設定する（Ｓ２０１）。次いで、ページ選択部４１は、アクティブリスト１１２の１番目、すなわち先頭のページ名を選択する（Ｓ２０２）。次いで、経過時間判定部４２は、アクティブリスト１１２の先頭のページ名に対応する物理アドレスの前回の走査から所定の閾値時間が経過したか否かを判定する（Ｓ２０３）。一例では、閾値時間は、１時間である。アクティブリスト１１２の先頭のページ名に対応する物理アドレスの前回の走査から閾値時間が経過したと判定される（Ｓ２０３−ＹＥＳ）と、走査領域決定部４３は、当該ページ名に対応する物理アドレスを走査領域に決定する（Ｓ２０４）。アクティブリスト１１２の先頭のページ名に対応する物理アドレスの前回の走査から閾値時間が経過していないと判定される（Ｓ２０３−ＮＯ）と、処理はＳ２１０に進む。
【００５０】
次いで、データ読出部４４は、アクティブリスト１１２の先頭のページ名に対応する物理アドレスのデータキャッシュ１２１に記憶可能な所定ビットのデータを、メモリコントローラ１０２を介して読出す（Ｓ２０５）。データ読出部４４が読出したデータは、メモリコントローラ１０２によってデータキャッシュ１２１に書込まれる。データ読出部４４が読出したデータにシングルビットエラーがあるとき、メモリコントローラ１０２は、読出したデータのシングルビットエラーを訂正して、データキャッシュに書込むと共に、シングルビットエラー検出をＣＰＵ１に通知する。
【００５１】
次いで、エラー判定部４５は、メモリコントローラ１０２からシングルビットエラー検出が通知されているか否かに基づいて、データ読出部４４が読出したデータにシングルビットエラーがあるか否かを判定する（Ｓ２０６）。エラー判定部４５は、メモリコントローラ１０２からシングルビットエラー検出が通知されて、シングルビットエラーカウンタがインクリメントされたとき、データ読出部４４が読出したデータにシングルビットエラーがあると判定する。また、エラー判定部４５は、メモリコントローラ１０２からシングルビットエラー検出が通知されていないとき、データ読出部４４が読出したデータにシングルビットエラーがないと判定する。
【００５２】
読出されしたデータにシングルビットエラーがあると判定される（Ｓ２０６−ＹＥＳ）と、メモリ書換部４６は、シングルビットエラーが訂正されたデータを、読出された物理アドレスに書込む書込指示をメモリコントローラ１０２に出力する（Ｓ２０７）。メモリコントローラ１０２は、メモリ書換部４６による書込指示に応じて、シングルビットエラーが訂正されたデータをデータキャッシュ１２１から読出して、読出したデータを、訂正されていないデータが記憶された物理アドレスに書込む。
【００５３】
次いで、データ読出部４４は、アクティブリストの先頭のページ名に対応する物理アドレスの全ての走査を終了したか否かを判定する（Ｓ２０８）。データ読出部４４によってアクティブリストの先頭のページ名に対応する物理アドレスの全ての走査を終了したと判定される（Ｓ２０８−ＹＥＳ）まで、Ｓ２０５〜Ｓ２０８の処理が繰り返される。
【００５４】
アクティブリストの先頭のページ名に対応する物理アドレスの全ての走査を終了したと判定される（Ｓ２０８−ＹＥＳ）と、走査領域決定部４３は、走査が終了した時間を、先頭のページ名に関連付けてアクティブリスト１１２に記憶する（Ｓ２０９）。
【００５５】
次いで、ページ選択部４１は、ページパラメータｉを１から２にインクリメントする（Ｓ２１０）。次いで、ページ選択部４１は、走査を実行したページの数が所定のページ数閾値に達したか否かに基づいて、所定のページ数の走査が終了したか否かを判定する（Ｓ２１１）。一例では、ページ数閾値は、１５ページである。監視制御部１００のタスク切替時間が８ｍｓであり且つ監視制御部１００の稼働率が８割であるとき、タスク中のアイドル時間は、１．６ｍｓとなる。タスク中のアイドル時間の１０％に相当する０．１６ｍｓ以内にＳ１０９の処理を実行する場合、１ページ当たりの走査時間が９μｓであるとすると、Ｓ１０９の処理を、タスク切替に影響を与えることなく実行可能なページ数は１５ページになる。
【００５６】
以降、所定のページ数の走査が終了したと判定される（Ｓ２１１−ＹＥＳ）まで、Ｓ２０２〜Ｓ２１１の処理が繰り返される。所定のページ数の走査が終了したと判定される（Ｓ２１１−ＹＥＳ）と、処理は終了する。
【００５７】
（第２実施形態に係るメモリ制御回路を含む監視制御部の構成及び機能）
図１２は、第２実施形態に係るメモリ制御回路を含む監視制御部の回路ブロック図である。
【００５８】
監視制御部２００は、ＤＲＡＭ１０４及びＣＰＵ２をＤＲＡＭ１０１及びＣＰＵ１の代わりに有することが監視制御部１００と相違する。また、監視制御部２００は、ＤＭＡコントローラ１０５を有することが監視制御部１００と更に相違する。ＤＲＡＭ１０４、ＤＭＡコントローラ１０５及びＣＰＵ２以外の監視制御部２００の構成及び機能は、同一符号が付された監視制御部１００の構成要素の構成及び機能と同一なので、ここでは詳細な説明は省略する。
【００５９】
ＤＲＡＭ１０４は、ページテーブル１１３をページテーブル１１１の代わりに有することがＤＲＡＭ１０１と相違する。ページテーブル１１３以外のＤＲＡＭ１０１の構成及び機能は、ＤＲＡＭ１０１と同一なのでここでは詳細な説明は省略する。ページテーブル１１３は、メモリ走査用ページ名を含むことがページテーブル１１１と相違する。
【００６０】
図１３は、ＤＲＡＭ１０４とページテーブル１１３との関係の一例を示す図である。
【００６１】
メモリ走査用ページ名は、ＤＲＡＭ１０４のメモリ走査用アドレスＡ７０〜Ａ７Ｎに対応付けられる。メモリ走査用アドレスＡ７０〜Ａ７Ｎは、メモリ制御処理が実行されるときに、ページ１〜ページ５のそれぞれに対応づけられるＤＲＡＭ１０４の物理アドレスに記憶されるデータを記憶する領域である。
【００６２】
ＤＭＡコントローラ１０５は、ＣＰＵ２に指示されたページ名に対応する物理アドレスに記憶されるデータをメモリコントローラ１０２を介して読出して、読出したデータをＤＲＡＭ１０４のメモリ走査用ページ名に対応する物理アドレスに書込む。ＤＭＡコントローラ１０５によって読出されたデータにシングルビットエラーが検出されたとき、メモリコントローラ１０２は、シングルビットエラー検出通知をＣＰＵ２に出力する。また、ＤＭＡコントローラ１０５によって読出されたデータにシングルビットエラーが検出されたとき、メモリコントローラ１０２は、シングルビットエラーを訂正してメモリ走査用アドレスに記憶する。
【００６３】
図１４は、ＣＰＵ２の機能ブロック図である。
【００６４】
ＣＰＵ２は、メモリ走査部６０をメモリ走査部４０の代わりに有することがＣＰＵ１と相違する。メモリ走査部６０は、ＤＭＡ指示部６４をデータ読出部４４の代わりに有することがメモリ走査部４０と相違する。ＤＭＡ指示部６４以外のＣＰＵ２の構成要素の機能は、同一符号が付されたＣＰＵ１の構成要素の機能と同様なので、ここでは詳細な説明は省略する。
【００６５】
ＤＭＡ指示部６４は、ＣＰＵ２がＤＲＡＭ１０４の走査処理を実行するときに、走査するページ名に対応する物理アドレスに記憶されるデータを読出して、メモリ走査用アドレスに書込む読出指示をＤＭＡコントローラ１０５に出力する。また、ＤＭＡ指示部６４は、読出されたデータにシングルビットエラーが検出されたときに、メモリ走査用アドレスに書込まれたデータを、読出された物理アドレスに書込む書込指示をＤＭＡコントローラ１０５に出力する。
【００６６】
図１５は、ＣＰＵ２によるメモリ走査処理を示すフローチャートである。図１５に示すメモリ制御処理は、予めＲＯＭ１０３に記憶されているプログラムに基づいて、主にＣＰＵ２により監視制御部２００の各要素と協働して実行される。図１５に示すメモリ走査処理は、ＣＰＵ１によるＳ１０９の処理に対応する処理である。
【００６７】
Ｓ３０１〜Ｓ３０４の処理は、Ｓ２０１〜Ｓ２０４の処理と同様なので、ここでは詳細な説明は省略する。ＤＭＡ指示部６４はｉ番目のページ名に対応する物理アドレスの通知を論理／物理アドレス変換部５０に指示する（Ｓ３０５）。論理／物理アドレス変換部５０は、ＤＭＡ指示部６４からの指示に応じて、ｉ番目のページ名に対応する物理アドレスをＤＭＡ指示部６４に通知する（Ｓ３０６）。
【００６８】
次いで、ＤＭＡ指示部６４は、論理／物理アドレス変換部５０から通知された物理アドレスに記憶されるデータを読出して、メモリ走査用アドレスに書込む読出指示をＤＭＡコントローラ１０５に出力する（Ｓ３０７）。ＤＭＡコントローラ１０５は、ＤＭＡ指示部６４による読出指示に応じて、ｉ番目のページ名に対応する物理アドレスに記憶されるデータを読出して（Ｓ３０８）、読出したデータをメモリ走査用物理アドレスに書込む。ＤＭＡコントローラ１０５は、読出しが完了すると、読出完了をＤＭＡ指示部６４に通知する（Ｓ３０９）。
【００６９】
次いで、エラー判定部４５は、メモリコントローラ１０２からシングルビットエラー検出が通知されているか否かに基づいて、ＤＭＡコントローラ１０５が読出したデータにシングルビットエラーがあるか否かを判定する（Ｓ３１０）。読出されたデータにシングルビットエラーがあると判定される（Ｓ３１０−ＹＥＳ）と、ＤＭＡ指示部６４は、メモリ走査用アドレスに書込まれたデータを、読出された物理アドレスに書込む書込指示をＤＭＡコントローラ１０５に出力する（Ｓ３１１）。ＤＭＡコントローラ１０５は、ＤＭＡ指示部６４による書込指示に応じて、メモリ走査用物理アドレスに記憶されるデータを読出して、読出したデータをｉ番目のページ名に対応する物理アドレスに書込む（Ｓ３１２）。ＤＭＡコントローラ１０５は、書込みが完了すると、書込完了をＤＭＡ指示部６４に通知する（Ｓ３１３）。Ｓ３１４〜Ｓ３1６の処理は、Ｓ２０９〜Ｓ２１１の処理と同様なので、ここでは詳細な説明は省略する。
【００７０】
（第３実施形態に係るメモリ制御回路を含む監視制御部の構成及び機能）
図１６は、第３実施形態に係るメモリ制御回路を含む監視制御部の回路ブロック図である。
【００７１】
監視制御部３００は、ＣＰＵ３をＣＰＵ１の代わりに有することが監視制御部１００と相違する。ＣＰＵ３以外の監視制御部３００の構成及び機能は、同一符号が付された監視制御部１００の構成要素の構成及び機能と同一なので、ここでは詳細な説明は省略する。
【００７２】
図１７は、ＣＰＵ３の機能ブロック図である。
【００７３】
ＣＰＵ３は、アクティブリスト制御部７０及びメモリ走査部８０をアクティブリスト制御部３０及びメモリ走査部４０の代わりに有することがＣＰＵ１と相違する。メモリ走査部８０は、ページ選択部８１及び走査領域決定部８３をページ選択部４１及び走査領域決定部４３の代わりに有することがメモリ走査部４０と相違する。アクティブリスト制御部７０、ページ選択部８１及び走査領域決定部８３以外のＣＰＵ３の構成要素の機能は、同一符号が付されたＣＰＵ１の構成要素の機能と同様なので、ここでは詳細な説明は省略する。
【００７４】
アクティブリスト制御部７０は、メモリ割当部２１によってタスクに関連付けされたページ名を、アクティブリスト１１２の先頭に追加する。また、アクティブリスト制御部７０は、メモリアクセス通知に含まれるページ名に対応する物理アドレスが前回走査されてから所定の閾値時間が経過したか否かを判定する。アクティブリスト制御部７０は、メモリアクセス通知に含まれるページ名に対応する物理アドレスが前回走査されてから所定の閾値時間が経過したと判定すると、メモリアクセス通知に含まれるページ名をアクティブリスト１１２の先頭に移動する。
【００７５】
ページ選択部８１は、走査処理を開始するときに、アクティブリスト１１２の先頭のページを選択する。走査領域決定部８３は、アクティブリスト１１２の先頭のページ名に対応する物理アドレスが前回走査されてから所定の閾値時間が経過していないと判定されたときに、前回走査されたページ名の次のページ名に対応する物理アドレスを走査領域に決定する。
【００７６】
図１８は、ＣＰＵ３によるメモリ制御処理のシーケンス図である。図１８に示すメモリ制御処理は、予めＲＯＭ１０３に記憶されているプログラムに基づいて、主にＣＰＵ３により監視制御部３００の各要素と協働して実行される。
【００７７】
Ｓ４０１〜Ｓ４０４の処理は、Ｓ１０１〜Ｓ１０４の処理と同様なので、ここでは詳細な説明は省略する。アクティブリスト制御部７０は、メモリ割当通知が入力されると、アクティブリスト１１２の先頭にメモリ割当通知に含まれるページ名を追加する（Ｓ４０５）。タスク１Ｘにページ名が割り当てられているとき（Ｓ４０３−ＮＯ）、アクセス通知部２３は、アクセスしたページ名を含むメモリアクセス通知をアクティブリスト制御部７０に出力する（Ｓ４０６）。
【００７８】
次いで、アクティブリスト制御部７０は、メモリアクセス通知に含まれるページ名に対応する物理アドレスが前回走査されてから所定の閾値時間が経過したか否かを判定する（Ｓ４０７）。アクティブリスト制御部７０は、メモリアクセス通知に含まれるページ名に対応する物理アドレスが前回走査されてから所定の閾値時間が経過したと判定したとき、メモリアクセス通知に含まれるページ名をアクティブリスト１１２の先頭に移動する（Ｓ４０８）。
【００７９】
タスク１Ｘは、タスクがタスク管理部１０は、に割り当てられた所定の割当時間が満了したときに、タスクが終了したことを示すタスク終了通知をメモリ走査部８０に出力する（Ｓ４０９）。メモリ走査部８０は、アイドルタスク中に、所定のページ数を走査する（Ｓ４１０）。メモリ走査部８０が走査する間、論理／物理アドレス変換部５０は、ページ名に対応するＤＲＡＭ１０２の物理アドレスに必要に応じてアクセスする（Ｓ４１１）。メモリ走査部８０は、所定のページ数について走査が終了すると、走査が終了したことを示すメモリ走査終了通知をタスク管理部１０に出力する（Ｓ４１２）。
【００８０】
図１９は、Ｓ４１０の処理のより詳細な処理を示すフローチャートである。
【００８１】
まず、ページ選択部８１は、アクティブリスト１１２の先頭のページを選択する（Ｓ５０１）。次いで、経過時間判定部４２は、アクティブリスト１１２の先頭のページ名に対応する物理アドレスの前回の走査から所定の閾値時間が経過したか否かを判定する（Ｓ５０２）。当該物理アドレスの前回の走査から閾値時間が経過した判定される（Ｓ５０２−ＹＥＳ）と、走査領域決定部８３は、アクティブリスト１１２の先頭のページ名に対応する物理アドレスを走査領域に決定する（Ｓ５０３）。当該物理アドレスの前回の走査から閾値時間が経過していないと判定される（Ｓ５０２−ＮＯ）と、走査領域決定部８３は、前回走査された次のページ名に対応する物理アドレスを走査領域に決定する（Ｓ５０４）。
【００８２】
Ｓ５０５〜Ｓ５０９の処理は、Ｓ２０５〜Ｓ２０９の処理と同様なので、ここでは詳細な説明は省略する。次いで、ページ選択部４１は、走査を実行したページの数が所定のページ数閾値に達したか否かに基づいて、所定のページ数の走査が終了したか否かを判定する（Ｓ５１０）。所定のページ数の走査が終了していないと判定される（Ｓ５１０−ＮＯ）と、走査領域決定部８３は、アクティブリスト１１２の次のページ名に対応する物理アドレスを走査領域に決定する（Ｓ５１１）。以降、所定のページ数の走査が終了したと判定される（Ｓ５１０−ＹＥＳ）まで、Ｓ５０５〜Ｓ５１１の処理が繰り返される。
【００８３】
所定のページ数の走査が終了したと判定される（Ｓ５１０−ＹＥＳ）と、走査領域決定部８３は、最後に走査した物理アドレスを示すページ名の次のページ名を、次回走査するページ名として記憶する（Ｓ５１２）。
【００８４】
（実施形態に関連するメモリ制御回路の作用効果）
実施形態に関連するメモリ制御回路は、ページ名に対応する物理アドレスにアクセスされたことに応じて、アクティブリストに示される複数のページ名の順序を入れ替えることで、アクセスされる可能性が高い物理アドレスを優先的に走査することができる。
【００８５】
具体的には、実施形態に関連するメモリ制御回路は、アクセスされた物理アドレスを示すページ名をアクティブリストの先頭に移動することで、アクセスされる可能性が高い物理アドレスを優先的に走査することができる。
【００８６】
また、実施形態に関連するメモリ制御回路の一例であるＣＰＵ１は、選択されたページ名に対応する物理アドレスが走査されてから閾値時間が経過していると判定したときに、選択されたページ名に対応する物理アドレスを走査する物理アドレスに決定する。ソフトエラーは、宇宙線がＤＲＡＭのメモリ素子に衝突してメモリ素子に記憶されたデータが化ける事象である。ＤＲＡＭのメモリ素子に短時間のうちに連続して宇宙線が衝突する確率は、宇宙線の数、及びＤＲＡＭのメモリ素子のサイズの観点から低く、走査が実行された物理アドレスに所定の閾値時間内にソフトエラーが発生する確率は低い。物理アドレスを短時間のうちに複数回走査することは、効果が低く効率が悪いので、走査された物理アドレスは、所定の閾値時間走査をスキップすることでより効率的にメモリ走査を実施することができる。
【００８７】
また、実施形態に関連するメモリ制御回路の一例であるＣＰＵ３は、アクセスされた物理アドレスが前回走査されてから所定の閾値時間が経過したと判定したとき、アクセスされた物理アドレスを示すページ名をアクティブリストの先頭に移動する。ＣＰＵ３は、前回走査されてから所定の閾値時間が経過していない物理アドレスを示すページ名をアクティブリストの先頭に移動しないので、前回走査されてから所定の閾値時間が経過していない物理アドレスが走査される可能性を低くすることができる。
【００８８】
（実施形態に関連するメモリ制御回路の変形例）
メモリ制御回路の例として説明されたＣＰＵ１〜３は、アイドルタスク中にメモリ走査処理を実行するが、実施形態に関連するメモリ制御回路は、タスクの１つとしてメモリ走査処理を周期的に実行してもよい。
【００８９】
図２０は、タスクの１つとしてメモリ走査処理を実行するときのＣＰＵ１によるメモリ制御処理のシーケンス図である。図２０に示すメモリ制御処理は、予めＲＯＭ１０３に記憶されているプログラムに基づいて、主にＣＰＵ１により監視制御部１００の各要素と協働して実行される。
【００９０】
Ｓ６０１〜Ｓ６０７及びＳ６０９〜Ｓ６１１の処理は、Ｓ１０１〜Ｓ１０７及びＳ１０９〜Ｓ１１１の処理と同様なので、ここでは詳細な説明は省略する。タスク管理部１０は、メモリ走査タスクの実行をメモリ走査部４０に指示する（Ｓ６０８）。メモリ走査部４０は、所定のページ数メモリ走査を実行する（Ｓ６０９）。
【００９１】
メモリ走査処理をタスクとして実行することで、１回のメモリ走査で実行されるページ数を多くすることができる。例えば、１回のタスクへの割当時間が８ｍｓであり、タスクの割当時間の８割をメモリ走査タスクの実行時間とすると、１回のタスクにおけるメモリ走査タスクの実行時間は６．４ｍｓになる。１ページ当たりの走査時間が９μｓであるとすると、Ｓ５０９の処理を、１回のタスクで実行可能なページ数は７１１ページになる。
【符号の説明】
【００９２】
１〜３    ＣＰＵ（メモリ制御回路）
１０    タスク管理部
１１〜１Ｎ    タスク
２０    メモリ管理部
３０    アクティブリスト制御部
４０    メモリ走査部
５０    論理／物理アドレス変換部
【図１】
2018073148.tif 000003
【図２】
2018073148.tif 000004
【図３】
2018073148.tif 000005
【図４】
2018073148.tif 000006
【図５】
2018073148.tif 000007
【図６】
2018073148.tif 000008
【図７】
2018073148.tif 000009
【図８】
2018073148.tif 000010
【図９】
2018073148.tif 000011
【図１０】
2018073148.tif 000012
【図１１】
2018073148.tif 000013
【図１２】
2018073148.tif 000014
【図１３】
2018073148.tif 000015
【図１４】
2018073148.tif 000016
【図１５】
2018073148.tif 000017
【図１６】
2018073148.tif 000018
【図１７】
2018073148.tif 000019
【図１８】
2018073148.tif 000020
【図１９】
2018073148.tif 000021
【図２０】
2018073148.tif 000022