(57)【特許請求の範囲】
【請求項１】
アクセスによりメモリから読み出されたデータのエラー検出と訂正をするＥＣＣ回路と、
メモリから読み出されたエラー検出前のデータを格納するキューと、
このキューの出口から取り出されたデータをアクセス要求元へ返送する、アウトプットイネーブル付きの返送用出力ドライバと、
前記ＥＣＣ回路が前記データのエラーを検出した場合には、前記キューに格納した該当するデータを無効にするか、あるいは前記返送用出力ドライバを制御してキューの出口から取り出されたデータを無効にする、制御回路とを備えたことを特徴とするメモリ制御システム。
【請求項２】
請求項１に記載のシステムにおいて、
キューに格納した該当するデータを無効にした場合には、ＥＣＣ回路は、このＥＣＣ回路により訂正されたデータを新たにキューに格納することを特徴とするメモリ制御システム。
【請求項３】
請求項１に記載のシステムにおいて、
制御回路は、ＥＣＣ回路によるデータのエラー検出が終了するタイミングまで、キューに当該データを保持しておくように、キューに対するデータの格納タイミングを調整するウエイトサイクルを設定することを特徴とするメモリ制御システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＥＣＣ（エラー検出訂正:Error Check and Collect）処理を含むメモリアクセスの高速化を図ったメモリ制御システムに関する。
【０００２】
【従来の技術】
メモリをアクセスして、データを読み出す場合に、読み出したデータのエラー検出と訂正のために、ＥＣＣ処理が行われる。例えば、このＥＣＣ処理で、読み出したデータの冗長ビットを使用して、１ビットエラー訂正や、２ビットエラーの検出を行う。メモリの出力側には、この処理のために多数の論理回路を配置する。メモリからデータが読み出されると、システムクロックの次の１サイクルで１ビットエラー検出と訂正を行い、次の１サイクルで２ビットエラーの検出を行う。読み出したデータにエラーが無いと判定されると、そのデータを返送データ格納のためのキューに転送する。即ち、読み出したデータはエラーが無ければエンキューをし、エラーがあれば無効にして、メモリから再読み出しを行う。
【０００３】
【発明が解決しようとする課題】
ところで、上記のような従来の技術には、次のような解決すべき課題があった。
上記のようなＥＣＣ処理を行う場合には、エラー検出と訂正等の処理が終了するまで、読み出したデータの返送が待たされる。従って、たとえ読み出したデータにエラーが無い場合でも、メモリアクセスを要求した装置に対して、読み出したデータを返送するのが遅くなるという問題がある。
この問題を解決するために、エラーの有無に応じて、読み出したデータの返送タイミングを制御して、その高速化を図った技術も紹介されている（特開平７−１４６８２５号公報）。
しかしながら、この種のシステムは、できるだけその回路構成が複雑でなく、動作も簡潔であることが望ましい。
【０００４】
【課題を解決するための手段】
本発明は以上の点を解決するため次の構成を採用する。
〈構成１〉
アクセスによりメモリから読み出されたデータのエラー検出と訂正をするＥＣＣ回路と、メモリから読み出されたエラー検出前のデータを格納するキューと、このキューの出口から取り出されたデータをアクセス要求元へ返送する、アウトプットイネーブル付きの返送用出力ドライバと、上記ＥＣＣ回路が上記データのエラーを検出した場合には、上記キューに格納した該当するデータを無効にするか、あるいは上記返送用出力ドライバを制御してキューの出口から取り出されたデータを無効にする、制御回路とを備えたことを特徴とするメモリ制御システム。
【０００５】
〈構成２〉
構成１に記載のシステムにおいて、キューに格納した該当するデータを無効にした場合には、ＥＣＣ回路は、このＥＣＣ回路により訂正されたデータを新たにキューに格納することを特徴とするメモリ制御システム。
【０００６】
〈構成３〉
構成１に記載のシステムにおいて、制御回路は、ＥＣＣ回路によるデータのエラー検出が終了するタイミングまで、キューに当該データを保持しておくように、キューに対するデータの格納タイミングを調整するウエイトサイクルを設定することを特徴とするメモリ制御システム。
【０００７】
【発明の実施の形態】
本発明では、メモリから読み出したデータをエラー検出する前にキューに転送する。即ち、エンキューとエラー検出とを同時に並行して行う。エンキューというのは、キューにデータを転送することで、キューが空の場合には、エンキューしたデータはキューの先頭に格納される。キューが空でない場合には、エンキューしたデータはすでに格納されたデータの次に取り出されるように並べられる。
【０００８】
次のタイミングでエラーがなければ、次のサイクルでキューからデータを取り出してアクセス要求元に返送する。従って、データにエラーがなければ、エラー検出の次のサイクルでデータがアクセス要求元に返送される。また、データにエラーが検出されると、既にエンキューしたデータを無効にして、エラー訂正したデータを再エンキューする。キューの先頭に該当データがあると、データの無効処理が間に合わないでアクセス要求元に返送されてしまうから、キューの出口に、アウトプットイネーブル付きの返送用出力ドライバを設ける。これにより、キューから取り出されたデータを無効にする。
【０００９】
また、キューには、直前に処理したデータが残っていることがある。直前に処理したデータが残っていると、キューからデータを取り出すタイミングが１サイクル遅れる。このときは、キュー中のデータを自由に無効にできる。そこで、以下の説明では、メモリから読み出されたデータをエンキューしたとき、そのデータがキューの先頭にくる場合と、直前に処理したデータがキューに残っている場合とを考慮して説明をする。
以下、本発明の実施の形態を具体例を用いて説明する。
【００１０】
〈具体例〉
図１は、本発明のメモリ制御システム具体例を示すブロック図である。
図のシステムは、メモリアクセス要求デバイス１１が、メモリ制御回路１０を介してメモリ１２をアクセスするよう構成されている。メモリ制御回路１０には、アウトプットイネーブル付きの返送用出力ドライバ１３と、データ返送用のキュー１４と、制御回路１５と、ＥＣＣ回路１６が備えられている。
【００１１】
メモリアクセス要求デバイス１１は、例えばＣＰＵ（中央処理装置）やＤＭＡＣ（ダイレクトメモリアクセスコントローラ）等からなる。このデバイス１１は、メモリ１２に対してアクセスアドレスと読み出しイネーブル信号等の制御信号を供給してアクセスを行う。
メモリ１２は、半導体メモリ、光ディスク、磁気ディスク等の記憶装置からなる。
【００１２】
ＥＣＣ回路１６は、既知のものと変わらない。冗長ビットを参照してデータのエラー検出を行い、１ビットエラーがあればこれを訂正するる処理を、システムクロックの１サイクルで実行する。次の１サイクルでは、２ビットエラーの検出をする。従って、このＥＣＣ回路１６は、システムクロック２サイクルで、１データの処理を完了する。なお、始めの１サイクルでエラーが検出されないときは、２ビットエラーの検出処理は省略される。
【００１３】
キュー１４には、メモリ１２から読み出されたデータが一時格納される。キューは例えば先入れ先出し式のリングバッファ等により構成され、ポインタが指しているデータから順に取り出されて、アクセス要求元に返送される。なお、キューに格納された各データには、その有効性を示すフラグが付加されている。従って、ＥＣＣ回路１６で誤りを検出されたデータは、制御回路１５によりこのフラグが切り替えられて無効化される。無効化されたデータはキューから取り出されることはない。
【００１４】
ＥＣＣ回路１６で誤りを検出すると、制御回路１５は次のサイクルでキュー１４中の該当するデータを無効化する。しかしながら、該当するデータがキューの先頭にあるような場合には、無効化処理の前にそのデータがキューから取り出されてしまう。アウトプットイネーブル付きの返送用出力ドライバ１３は、データに誤りが無いときはキューの先頭にあるデータを取り出してアクセス要求元に返送する。一方、無効化処理をされずにデータが取り出されてしまうおそれがある場合には、出力をディスエーブルにして、取り出されたデータを無効化する。
【００１５】
制御回路１５は、以上のように、ＥＣＣ回路１６のエラー検出出力によりキュー１４中のデータを無効化したり、返送用出力ドライバ１３の動作を切り替えるための信号を出力する回路で、簡単な論理ゲートにより実現できる。
【００１６】
〈動作〉
以下、図１に示したメモリ制御システムの動作を、各動作パターンに分けて、順に説明する。
（１）第１のパターン（エラー無し、キューは空）
図２に、第１のパターンの動作タイミングチャートを示す。
この図の横軸は時間を表し、（ａ）はシステムクロック、（ｂ）はメモリ１２から読み出されたデータ、（ｃ）はキューの動作、（ｄ）はＥＣＣ回路１６の動作、（ｅ）は返送データ、（ｆ）は返送データ転送用のストローブ、（ｇ）は返送用出力ドライバ１３の動作を示す。また、第１サイクルはＳ１、第２サイクルはＳ２、第３サイクルはＳ３というように図中に表示した。
【００１７】
［第１サイクル］
メモリ１２から読み出されたデータをキュー１４に格納（エンキュー）する。このときキュー１４は空であって、データはキュー１４の先頭に格納される。
ＥＣＣ回路は、メモリ１２から読み出されたデータにエラーが無いことを検出する。
［第２サイクル］
返送用出力ドライバ１３は、キュー１４の先頭に格納された該当するデータを取り出して、アクセス要求元に返送する。
これが一番速くデータが返送されるパターンである。
【００１８】
（２）第２のパターン（エラー無し、キューは空でない）
図３に、第２のパターンの動作タイミングチャートを示す。
図の記載形式は、図２と全く同様である。
［第１サイクル］
メモリ１２から読み出されたデータをキュー１４に格納（エンキュー）する。キュー１４の先頭には前回読み出されて処理されたデータが格納されているから、今回読み出されたデータはその次に格納する。
ＥＣＣ回路は、メモリ１２から読み出された今回のデータにエラーが無いことを検出する。
【００１９】
［第２サイクル］
返送用出力ドライバ１３は、キュー１４の先頭に格納されている前回読み出されたデータを取り出して、アクセス要求元に返送する。
［第３サイクル］
返送用出力ドライバ１３は、続いてキュー１４から、今回エラー無しとされたデータを取り出して、アクセス要求元に返送する。
【００２０】
（３）第３のパターン（１ビットエラー有り、キューは空）
図４に、第３のパターンの動作タイミングチャートを示す。
図の記載形式は、図２と全く同様である。
［第１サイクル］
メモリ１２から読み出されたデータをキュー１４に格納（エンキュー）する。このときキュー１４は空であって、データはキュー１４の先頭に格納される。
ＥＣＣ回路は、メモリ１２から読み出されたデータにエラーを検出して、１ビットエラーを訂正する。
【００２１】
［第２サイクル］
返送用出力ドライバ１３は、キュー１４の先頭に格納された該当するデータを無効にして、アクセス要求元への返送を禁止する。
ＥＣＣ回路は、キュー１４の先頭に訂正後のデータを格納する。
［第３サイクル］
返送用出力ドライバ１３は、キュー１４の先頭に格納された該当するデータを取り出して、アクセス要求元に返送する。
【００２２】
（４）第４のパターン（１ビットエラー有り、キューは空でない）
図５に、第４のパターンの動作タイミングチャートを示す。
図の記載形式は、図２と全く同様である。
［第１サイクル］
メモリ１２から読み出されたデータをキュー１４に格納（エンキュー）する。キュー１４の先頭には前回読み出されて処理されたデータが格納されているから、今回読み出されたデータはその次に格納する。
ＥＣＣ回路は、メモリ１２から読み出されたデータにエラーを検出して、１ビットエラーを訂正する。
【００２３】
［第２サイクル］
返送用出力ドライバ１３は、キュー１４の先頭に格納されている前回読み出されたデータを取り出して、アクセス要求元に返送する。
制御回路１５は、キュー１４に格納されているエラーの検出されたデータを無効にする。
ＥＣＣ回路は、キュー１４の先頭に訂正後のデータを格納する。
［第３サイクル］
返送用出力ドライバ１３は、続いてキュー１４から、訂正後のデータを取り出して、アクセス要求元に返送する。
【００２４】
（５）第５のパターン（２ビットエラー検出、キューは空）
図６に、第５のパターンの動作タイミングチャートを示す。
図の記載形式は、図２と全く同様である。
［第１サイクル］
メモリ１２から読み出されたデータをキュー１４に格納（エンキュー）する。このときキュー１４は空であって、データはキュー１４の先頭に格納される。
ＥＣＣ回路は、メモリ１２から読み出されたデータにエラーを検出して、１ビットエラーを訂正する。
【００２５】
［第２サイクル］
返送用出力ドライバ１３は、キュー１４の先頭に格納された該当するデータを無効にして、アクセス要求元への返送を禁止する。
ＥＣＣ回路１６は、キュー１４の先頭に訂正後のデータを格納する。
ＥＣＣ回路１６は、２ビットエラーを検出する。
［第３サイクル］
返送用出力ドライバ１３は、キュー１４の先頭に格納された該当するデータを無効にして、アクセス要求元への返送を禁止する。
ＥＣＣ回路１６は、２ビットエラー検出後の後処理をする。
【００２６】
（６）第６のパターン（２ビットエラー検出、キューは空でない）
図７に、第６のパターンの動作タイミングチャートを示す。
図の記載形式は、図２と全く同様である。
［第１サイクル］
メモリ１２から読み出されたデータをキュー１４に格納（エンキュー）する。キュー１４の先頭には前回読み出されて処理されたデータが格納されているから、今回読み出されたデータはその次に格納する。
ＥＣＣ回路は、メモリ１２から読み出されたデータにエラーを検出して、１ビットエラーを訂正する。
【００２７】
［第２サイクル］
返送用出力ドライバ１３は、キュー１４の先頭に格納されている前回読み出されたデータを取り出して、アクセス要求元に返送する。
制御回路１５は、キュー１４に格納されているエラーの検出されたデータを無効にする。
ＥＣＣ回路は、キュー１４の先頭に訂正後のデータを格納する。
ＥＣＣ回路１６は、２ビットエラーを検出する。
［第３サイクル］
返送用出力ドライバ１３は、キュー１４の先頭に格納された該当するデータを無効にして、アクセス要求元への返送を禁止する。
ＥＣＣ回路１６は、２ビットエラー検出後の後処理をする。
【００２８】
【発明の効果】
以上のように、メモリから読み出したデータについて、エンキューとエラー検出とを同時に並行して行うので、次のタイミングでエラーがなければ、次のサイクルでキューからデータを取り出してアクセス要求元に返送できる。従って、データにエラーがなければ、アクセス要求元へのデータの返送が高速化される。また、データにエラーが検出されると、既にエンキューしたデータを無効にして、エラー訂正したデータを再エンキューするが、キューの先頭に該当データがあっても、キューの出口にアウトプットイネーブル付きの返送用出力ドライバを設ければ、キューから取り出されたデータを無効にすることができる。
【図面の簡単な説明】
【図１】本発明のメモリ制御システム具体例を示すブロック図である。
【図２】第１のパターンの動作タイミングチャートである。
【図３】第２のパターンの動作タイミングチャートである。
【図４】第３のパターンの動作タイミングチャートである。
【図５】第４のパターンの動作タイミングチャートである。
【図６】第５のパターンの動作タイミングチャートである。
【図７】第６のパターンの動作タイミングチャートである。
【符号の説明】
１０  メモリ制御回路
１１  メモリアクセス要求デバイス
１２  メモリ
１３  返送用出力ドライバ
１４  キュー
１５  制御回路
１６  ＥＣＣ回路
【図１】
0004021991.tif 000002
【図２】
0004021991.tif 000003
【図３】
0004021991.tif 000004
【図４】
0004021991.tif 000005
【図５】
0004021991.tif 000006
【図６】
0004021991.tif 000007
【図７】
0004021991.tif 000008