(57)【要約】【課題】  メモリコントローラがＤＲＡＭにコマンドを送るときの、パターン感度ビットエラーによるＣＡパリティエラーの対策として、コマンド２サイクルモードは、１つのコマンドを送信するために２クロック要するため、２サイクル連続でのコマンドを送信することが出来ない。従って、常にコマンド２サイクルモードを使用すると、ＤＲＡＭアクセス性能が低下する可能性がある。【解決手段】  アドレス、パリティビット、チップセレクトを含むコマンドをメモリに送信し、送信したコマンドを保持し、コマンドの送信におけるエラーパターンを保持し、次に送信するコマンドの少なくとも一部と、当該コマンドの前に送信し保持されるコマンドの少なくとも一部と、からなる送信パターンが、エラーパターンに当てはまる場合、次に送信するコマンドの送信サイクル数を変更するように制御する。【選択図】  図２
2016212524.tif 000002
【特許請求の範囲】
【請求項１】
アドレス、パリティビット、チップセレクトを含むコマンドをメモリに送信する送信手段と、
前記送信手段が送信したコマンドを保持する第１保持手段と、
前記コマンドの送信におけるエラーパターンを保持する第２保持手段と、
前記送信手段が次に送信するコマンドの少なくとも一部と、当該コマンドの前に前記送信手段が送信し前記第１保持手段に保持されるコマンドの少なくとも一部と、からなる送信パターンが、前記第２保持手段に保持されたエラーパターンに当てはまる場合、前記次に送信するコマンドの送信サイクル数を変更するように前記送信手段を制御する制御手段と、を有することを特徴とするメモリコントローラ。
【請求項２】
前記制御手段は、前記次に送信するコマンドのうち前記チップセレクト以外を２サイクル以上連続して送信し、前記次に送信するコマンドの２サイクル目以降にチップセレクトを送信するように前記送信手段に要求し、
前記送信手段は、前記制御手段に要求されたように前記コマンドをメモリに送信することを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記制御手段は、前記次に送信するコマンドのうち前記チップセレクト以外を前記チップセレクトの少なくとも１サイクル前から２サイクル以上連続して送信するように前記送信手段に要求し、
前記送信手段は、前記制御手段に要求されたように前記コマンドをメモリに送信することを特徴とする請求項１に記載のメモリコントローラ。
【請求項４】
前記制御手段は、コマンドを２サイクルで送信することを要求する要求回路であることを特徴とする請求項１乃至３の何れか１項に記載のメモリコントローラ。
【請求項５】
前記第１保持手段は、所定時間の間、前記コマンドを保持し、所定時間経過後、前記コマンドを破棄することを特徴とする請求項１乃至４の何れか１項に記載のメモリコントローラ。
【請求項６】
前記第１保持手段は、前記送信手段で送信されたコマンドの前記メモリにおける受信において、エラーが発生したことを前記メモリから通知された場合、前記第１保持手段に保持されたコマンドを、前記メモリに再送することを特徴とする請求項１乃至５の何れか１項に記載のメモリコントローラ。
【請求項７】
前記第１保持手段は、前記メモリが前記パリティビットを用いてパリティチェックを実行する時間分、前記送信手段が送信したコマンドを保持可能な容量を持つことを特徴とする請求項１乃至６の何れか１項に記載のメモリコントローラ。
【請求項８】
前記第２保持手段は、前記送信手段で送信されたコマンドの前記メモリにおける受信において、エラーが発生したことを前記メモリから通知された場合、当該コマンドと当該コマンドの前に前記送信手段が送信し前記第１保持手段に保持されるコマンドとに含まれる送信パターンを前記エラーパターンとして保持することを特徴とする請求項１乃至７の何れか１項に記載のメモリコントローラ。
【請求項９】
前記第２保持手段に保持されるエラーパターンは、パターン感度ビットエラーであることを特徴とする請求項１乃至８の何れか１項に記載のメモリコントローラ。
【請求項１０】
前記第２保持手段に保持されるエラーパターンは、前記コマンドに含まれる何れかのビットについて、Ｎサイクル以上同じ信号が連続した後の信号の変化を示すパターンであることを特徴とする請求項１乃至９の何れか１項に記載のメモリコントローラ。
【請求項１１】
前記第２保持手段には、予めエラーパターンが保持されていることを特徴とする請求項１乃至１０の何れか１項に記載のメモリコントローラ。
【請求項１２】
前記メモリと接続されていることを特徴とする請求項１乃至１１の何れか１項に記載のメモリコントローラ。
【請求項１３】
前記メモリはＤＲＡＭであることを特徴とする請求項１乃至１２の何れか１項に記載のメモリコントローラ。
【請求項１４】
前記エラーパターンを生成するトレーニング回路を備え、前記トレーニング回路は、Ｎサイクル以上同じ信号が連続した後の信号の変化を示すパターンをトレーニングパターンとして生成し、前記第２保持手段は、前記トレーニングパターンの受信においてエラーが発生したことを前記メモリから通知された場合、前記トレーニング回路が生成したトレーニングパターンをエラーパターンとして保持することを特徴とする請求項１乃至１３の何れか１項に記載のメモリコントローラ。
【請求項１５】
アドレス、パリティビット、チップセレクトを含むコマンドを発行する発行手段と、
前記コマンドに含まれる何れかのビットの信号の発行パターンについて、Ｎサイクル以上同じ信号が連続した後の信号の変化を示すパターンをエラーパターンとして保持するパターン保持手段と、
（Ｎ−２）以下のサイクルごとに変化するトグルパターンを生成する生成手段と、
前記コマンドと前記トグルパターンとを受信し、前記発行手段が前記コマンドを発行していない期間は前記生成手段が生成したトグルパターンを選択してメモリに送信し、前記発行手段が前記コマンドを発行している期間は前記コマンドを選択してメモリに送信する選択手段と、を有することを特徴とするメモリコントローラ。
【請求項１６】
前記メモリに送信されたコマンドを保持するコマンド保持手段を更に備え、
前記生成手段は、前記発行手段が次に発行するコマンドの前に前記発行手段が発行し前記コマンド保持手段に保持されるコマンドに含まれる何れかのビットの信号のパターンがＮサイクル以上同じ信号が連続している場合、前記次に発行するコマンドの前のサイクルでトグルパターンを生成し、
前記選択手段は、Ｎサイクル以上同じ連続する信号と、前記次に発行するコマンドの間に前記生成手段が生成したトグルパターンを選択することを特徴とする請求項１５に記載のメモリコントローラ。
【請求項１７】
請求項１に記載のメモリコントローラの制御方法。
【請求項１８】
請求項１５に記載のメモリコントローラの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラに関し、特に、メモリがコマンドを正しく受信できなかった際にコマンドを再送するメモリコントローラに関する。
【背景技術】
【０００２】
ＤＲＡＭはメモリコントローラからチップ選択信号（以降、「ＣＳ」とも記載する。）を受信すると、同一クロックサイクルで受信したコマンド信号及びアドレス信号をデコードする。そして、ＤＲＡＭは、デコードしたコマンドの種類を解釈し、処理対象のデータを保持するメモリセルやＤＲＡＭの動作モードを記憶するモードレジスタなどの操作を実行する。
【０００３】
近年、ＤＲＡＭの規格として、ＤＤＲ４  ＳＤＲＡＭが登場している。ＤＤＲ４  ＳＤＲＡＭのコマンドの送受信は、８００ＭＨｚから１．６ＧＨｚのクロックに同期して行われる。ＤＤＲ４  ＳＤＲＡＭは、従来のＤＲＡＭよりも高速である。そのため、ＤＤＲ４  ＳＤＲＡＭ（以下、単に「ＤＲＡＭ」、「メモリデバイス」とも記載する。）では、ＲＡＳ、ＣＡＳ、ＷＥを含むアドレス、バンクグループ、バンクアドレス、アクティベーションコマンド信号が正しく受信されたかを検証するＣＡ（Ｃｏｍｍａｎｄ  Ａｄｄｒｅｓｓ）パリティと呼ばれる機能がサポートされている。メモリコントローラは、ＣＳを送信すると同時に、パリティビットをＤＲＡＭに送信する。ＤＲＡＭは、受信したコマンド・アドレスに対するパリティビットを検証する。ＤＲＡＭは、ＣＡパリティエラー（以下、単に「パリティエラー」、「エラー」とも記載する。）を検出すると、エラーが起きたことをメモリコントローラに通知する。（非特許文献１参照）
【０００４】
ＣＡパリティエラーが起こる前の数サイクルは、コマンドが実行されたか分からず、ＣＡパリティエラーが起こった後の数サイクルは、コマンドが実行されない。ＣＡパリティエラーが発生すると、メモリコントローラは、ＣＡパリティエラーが起こる前後数サイクルで、メモリコントローラからＤＲＡＭに送ったけれども、ＤＲＡＭに実行されなかった可能性のあるコマンドをＤＲＡＭに再送する必要がある。
【０００５】
コマンドの再送を実現するために、例えば、ＤＲＡＭに発行したコマンドを一定時間格納するコマンド保持回路（「再送バッファ」と同じ）をメモリコントローラに設けることが考えられる。コマンド保持回路（再送バッファ）には、コマンドだけでなくアドレス、パリティビットなども格納する。
【０００６】
ＣＡパリティエラーが起こり、コマンド保持回路（再送バッファ）のコマンドを再送すると、通常のコマンド発行を待たせることになり、メモリアクセスの応答時間が長くなる。
【０００７】
コマンドの再送が発生すると、メモリアクセスのデータバスの使用効率が低下し、メモリアクセスの応答時間が長くなる。ＤＲＡＭのアクセス性能を低下させないためには、極力、ＣＡパリティエラーが発生しないようにメモリコントローラが制御する必要がある。
【０００８】
ＣＡパリティエラーの発生要因の一つに、メモリコントローラとＤＲＡＭ間の伝送線路での信号減退がある。信号減退は、同一論理レベルが連続した後に論理レベルが変化した場合に大きくなることが知られている。信号減退が起こった場合に、伝送される信号が伝送されるはずだった信号と異なってしまう。このような原因で発生する信号伝送のエラーは、パターン感度ビットエラーと呼ばれている。
【０００９】
パターン感度ビットエラーを防止する技術として、論理レベルが変化した後の信号減退を補正する技術がある。この技術では、論理レベルが変化した後の信号レベルを、論理レベルが連続する際の信号レベルよりも上げる（特許文献１参照）。この技術は、プリエンファシスと呼ばれ、この技術を採用する際には専用の出力バッファ回路が必要となる。
【００１０】
一方、メモリコントローラのコマンド発行のタイミング制約を緩和する、コマンド２サイクル発行という技術がある。（特許文献２参照）
図１は、コマンド２サイクル発行技術を説明する図である。以降、タイミングＴ１のコマンド送信方法を通常モードと呼び、タイミングＴ５からＴ６のコマンド、アドレス、パリティビットを２サイクルの期間送信するコマンド送信方法を、コマンド２サイクルモードと呼ぶ。
【００１１】
コマンド２サイクルモードは、ＣＳ以外の信号を１サイクル目、２サイクル目に連続して送信し、ＣＳ以外の信号レベルが安定する２サイクル目にＣＳを送信することで、安定したコマンド発行が可能である。そのため、コマンド２サイクル発行技術は、パターン感度ビットエラーを防止する技術としても有効である。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１１−２３９４６７号
【特許文献２】特開２００５−３４６５０２号
【非特許文献】
【００１３】
【非特許文献１】ＪＥＤＥＣ  ＳＴＡＮＤＡＲＤ  ＤＤＲ４  ＳＤＲＡＭ  ＪＥＳＤ７９−４Ａ仕様規格書
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかしながら、コマンド２サイクルモードは、１つのコマンドを送信するために２クロック要するため、２サイクル連続でのコマンドを発行することが出来ない。例えば、あるＤＲＡＭブロックの「リード」コマンドの次のサイクルに、別のＤＲＡＭブロックの「アクティブ」コマンドを発行することができない。また、コマンド２サイクルモードで送ると、コマンド発行が１サイクル遅れるので、それ自体がＤＲＡＭのアクセス性能を低下させている。従って、パターン感度ビットエラーが出ないように、常にコマンド２サイクルモードを使用すると、ＤＲＡＭアクセス性能が低下する可能性がある。
【００１５】
本発明は上記の課題に鑑みてなされたものである。すなわち、ＤＲＡＭのアクセス性能の低下を抑えつつ、ＣＡパリティエラーの原因の１つであるパターン感度ビットエラーの発生を低減するメモリコントローラを提供することを目的とする。また、その方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明に係るメモリコントローラは以下の構成を備える。即ち、アドレス、パリティビット、チップセレクトを含むコマンドをメモリに送信する送信手段と、前記送信手段が送信したコマンドを保持する第１保持手段と、前記コマンドの送信におけるエラーパターンを保持する第２保持手段と、前記送信手段が次に送信するコマンドの少なくとも一部と、当該コマンドの前に前記送信手段が送信し前記第１保持手段に保持されるコマンドの少なくとも一部と、からなる送信パターンが、前記第２保持手段に保持されたエラーパターンに当てはまる場合、前記次に送信するコマンドの送信サイクル数を変更するように前記送信手段を制御する制御手段。
【発明の効果】
【００１７】
本発明によれば、パターン感度ビットエラーのエラーパターンの発生を低減させることができる。
【図面の簡単な説明】
【００１８】
【図１】従来技術であるコマンド２サイクルモードの波形図
【図２】第１の実施形態におけるメモリコントローラの概略構成例
【図３】第１の実施形態におけるタイミング波形図
【図４】第２の実施形態におけるエラーパターン保持を説明する図
【図５】第２の実施形態におけるエラーパターンＡにおけるタイミング波形図
【図６】第２の実施形態におけるエラーパターンＢにおけるタイミング波形図
【図７】第３の実施形態におけるメモリコントローラの概略構成例
【図８】第３の実施形態におけるメモリコントローラの動作を説明する図
【図９】第４の実施形態におけるメモリコントローラの概略構成例
【図１０】第４の実施形態におけるメモリコントローラの動作を説明する図
【図１１】第５の実施形態におけるメモリコントローラの概略構成例
【図１２】第５の実施形態におけるメモリコントローラの動作を説明する図
【発明を実施するための形態】
【００１９】
［第１実施形態］
図２は第１実施形態におけるメモリコントローラ１００の概略構成例である。メモリコントローラ１００は、ＤＲＡＭ９００（ＤＤＲ４  ＳＤＲＡＭ）に接続されている。メモリコントローラ１００は、ＤＲＡＭ９００に、ＣＳ（チップセレクトというチップ選択信号）、コマンド、アドレス、パリティビットからなるＤＲＡＭコマンドを送信する。ＤＲＡＭコマンドには、ＲＡＳ＃、ＣＡＳ＃、ＷＥを含んでいる。以降、「送信」と「発行」を同じ意味で用いる。
【００２０】
ＣＡ（Ｃｏｍｍａｎｄ  Ａｄｄｒｅｓｓ）パリティのパリティビットについて説明する。コマンドを示す信号線とアドレスを示す信号線があり、それらのビットのうちＨｉｇｈになっているビット数が奇数か偶数かで、メモリコントローラはパリティビットを作る。そして、パリティビットをコマンド、アドレスに付加して送る。パリティビットは、ＤＲＡＭ９００側でチェックビットとして用いられる。
【００２１】
ＤＲＡＭ９００は、受信したコマンド信号、アドレス信号のＨｉｇｈのビット数からパリティビットを作る。そして、メモリコントローラから送られてきたパリティビットと比較するパリティチェックを行う。比較結果が異なれば、ＣＡパリティエラーである。ＤＲＡＭ９００は、ＣＡパリティエラーを検出すると、所定時間後にメモリコントローラ１００にＣＡパリティエラーの発生を通知する。
【００２２】
メモリコントローラ１００はメモリアクセス要求を受信すると、受信したメモリアクセス要求をＤＲＡＭコマンドに変換して、コマンドＱｕｅｕｅ３００に格納する。
【００２３】
また、コマンドＱｕｅｕｅ３００には、ＤＲＡＭのリフレッシュや、キャリブレーションを実行する為のメモリアクセス要求以外のＤＲＡＭコマンドも格納される。
【００２４】
コマンド発行回路２０１は、コマンドＱｕｅｕｅ３００からＤＲＡＭコマンドを受信し、ＤＲＡＭコマンドの送信タイミングを制御して、ＤＲＡＭ９００に送信する。ＤＲＡＭコマンド送信間隔は、ＤＲＡＭ仕様で定められている。例えば、「アクティブコマンドとリードコマンドは、ｔＲＣＤというパラメータで定義された時間間隔をあける」仕様である。
【００２５】
ＤＲＡＭコマンド保持回路２０３は、ＤＲＡＭ９００に送信したＤＲＡＭコマンドを、一定時間保持する。ＣＡパリティエラー発生時に、ＤＲＡＭコマンドを再送するので保持している。一定時間経過後、ＤＲＡＭコマンドを破棄する。ＤＲＡＭコマンド保持回路２０３は、ＤＲＡＭ９００がパリティビットを用いてパリティチェックを実行する実行時間分、ＤＲＡＭコマンドを保持可能な容量を持てば良い。ＤＲＡＭコマンド保持回路２０３は、コマンド発行回路２０１がＤＲＡＭコマンドを送っていない間も、ＤＲＡＭに送信した信号レベルをそのまま保持する。
【００２６】
エラーパターン保持回路２０４は、ＤＲＡＭ９００からＣＡパリティエラーの発生を通知されると、ＤＲＡＭコマンド保持回路２０３に格納されているＤＲＡＭコマンドを参照する。そして、エラーパターン保持回路２０４は、ＣＡパリティエラーが発生したＤＲＡＭコマンドを、エラーパターンとして保持する。以降の実施形態では、このエラーパターンは、パターン感度ビットエラーのパターンである。
【００２７】
コマンド２サイクルモード要求回路４００は、エラーパターン保持回路２０４から、エラーパターンを受信する。また、ＤＲＡＭコマンド保持回路２０３からＤＲＡＭコマンドの発行状況を受信する。そして、コマンド発行回路２０１から、次に発行するＤＲＡＭコマンドの情報を受信して、次に発行するＤＲＡＭコマンドを通常モードで送信すると、エラーパターンと一致する場合に、コマンド発行回路２０１に、コマンド２サイクルモード要求を通知する。つまり、次に発行するＤＲＡＭコマンドの信号レベルと、直前のＤＲＡＭコマンドの信号レベルと、からなる送信パターンが、エラーパターン保持回路２０４に保持されているエラーパターンと一致している場合に、コマンド発行回路２０１に、コマンド２サイクルモード要求を通知している。
【００２８】
コマンド発行回路２０１は、コマンド２サイクルモード要求回路４００からコマンド２サイクルモード要求を受信しない場合は、通常モードでＤＲＡＭコマンドを発行する。コマンド２サイクルモード要求を受信する場合は、チップセレクト以外の送信サイクル数を変更し、コマンド２サイクルモードでＤＲＡＭコマンドを発行する。このようにして、コマンド２サイクルモード要求回路４００は、コマンド発行回路２０１を制御する。
【００２９】
図３は第１実施形態におけるメモリコントローラ１００の動作波形例である。ＣＳ、エラーはＬＯＷアクティブな信号である。メモリコントローラ１００は、ＤＲＡＭコマンドを送信しないサイクルでは、コマンド、アドレス、パリティビットを０にする。ここでは、ＤＲＡＭ９００がＤＲＡＭコマンドを受信してから３サイクル後までにメモリコントローラ１００がＣＡパリティエラーを受信しなければ、ＤＲＡＭコマンドがＤＲＡＭに正しく受信されたものとする。
【００３０】
タイミングＴ１にＤＲＡＭ９００がコマンドＡを受信し、メモリコントローラ１００はタイミングＴ４までにＣＡパリティエラーを受信しなかったため、コマンドＡのＤＲＡＭでの受信において、ＣＡパリティエラーが発生していないことを示している。
【００３１】
タイミングＴ４にＤＲＡＭがコマンドＢを受信し、メモリコントローラはタイミングＴ７にＣＡパリティエラーを受信しているので、メモリコントローラ１００は、コマンドＢのＤＲＡＭ９００での受信において、ＣＡパリティエラーが発生したことを検出する。
【００３２】
ＣＡパリティエラーの検出に伴い、メモリコントローラ１００はエラーパターンを生成する。本動作波形の場合、コマンドＢの発行前のタイミングＴ２、Ｔ３の２サイクル期間コマンド、アドレス、パリティビットは０であるため、「２サイクル以上０が連続した後のコマンドＢの発行」というエラーパターンが生成される。このように、エラーパターンは「Ｎサイクル以上同じ信号が連続した後のコマンドＸの発行」となる。そして、このエラーパターンは、エラーパターン保持回路２０４に保持される。
【００３３】
ＤＲＡＭ９００は、タイミングＴ９にコマンドＣを受信する。コマンドＣのコマンド発行は、エラーパターン保持回路２０４に保持されたエラーパターンと一致しないので、通常モードでＤＲＡＭコマンドが発行される。
【００３４】
タイミングＴ９サイクルで、次に発行するＤＲＡＭコマンドがコマンド発行回路２０１に転送され、コマンド２サイクルモード要求回路４００は、次に発行するコマンドがコマンドＢであることを認識する。次に、タイミングＴ１０、Ｔ１１の２サイクル期間、コマンド、アドレス、パリティビットで０が連続したことがＤＲＡＭコマンド保持回路２０３に格納される。ＤＲＡＭの仕様により、ＤＲＡＭコマンドの発行間隔は３サイクル以上空ける必要がある。
【００３５】
コマンド２サイクルモード要求回路４００は、コマンド、アドレス、パリティビットで０がタイミングＴ１０、Ｔ１１の２サイクル連続していることをＤＲＡＭコマンド保持回路２０３から受信する。コマンド２サイクルモード要求回路４００は、次のコマンドがコマンドＢであることを既に認識しているので、エラーパターン保持回路２０４に保持されたエラーパターンと、次に送るＤＲＡＭコマンドを含む送信パターンとの一致を検出する。コマンド２サイクルモード要求回路４００は、タイミングＴ１２でコマンド２サイクルモード要求を通知する。
【００３６】
メモリコントローラ１００は、タイミングＴ１２、Ｔ１３サイクルに、コマンド２サイクルモードでチップセレクト以外のコマンドＢを発行する。チップセレクトは２サイクル目のタイミングＴ１３に発行する。
【００３７】
上記の通り、本実施形態ではＤＲＡＭ９００からＣＡパリティエラーを受信すると、複数サイクルに亘るＤＲＡＭコマンドをエラーパターン保持回路２０４にエラーパターンとして保持する。そして、同様の送信パターンが発生する場合に、メモリコントローラ１００のコマンド２サイクルモード要求回路４００が、コマンド２サイクルモードでＤＲＡＭコマンドを発行して、ＣＡパリティエラーの発生を抑制する。コマンド２サイクルモード要求回路４００は、２サイクル以上連続でＤＲＡＭコマンドを発行しても良い。その場合、チップセレクトは２サイクル目以降に発行する。また、コマンド２サイクルモード要求回路４００は、チップセレクト以外のＤＲＡＭコマンドをチップセレクトの少なくとも１サイクル前から２サイクル以上連続して発行していると言い換えることができる。
【００３８】
本実施形態では、ＤＲＡＭ９００からＣＡパリティエラーを受信すると、エラーパターンを生成し、エラーパターン保持回路２０４に保持するメモリコントローラに関する説明をした。エラーパターン保持回路２０４には、予め、レジスタアクセス等でエラーパターンを直接書き込んで保持させても良い。
【００３９】
［第２実施形態］
第２実施形態では、コマンド、アドレス、パリティビットの一部である各ビットの状態に着目したエラーパターン生成するメモリコントローラを説明する。
【００４０】
本実施形態における回路構成例は、第１実施形態と同様のため、説明を省略する。第１実施形態との差異は、エラーパターン保持回路２０４に保持するエラーパターンである。
【００４１】
図４は、第２実施形態におけるエラーパターン生成を説明する図である。メモリコントローラ１００は、タイミングＴ５でコマンドＡ、タイミングＴ８でコマンドＢ、タイミングＴ１１でコマンドＣを発行している。本実施形態では、メモリコントローラ１００は、コマンド、アドレス、パリティビットを、次のＤＲＡＭコマンドを発行するまで、前のＤＲＡＭコマンドを発行した時の値に保ち、０レベルに戻さない。
【００４２】
タイミングＴ１２で、メモリコントローラ１００は、ＤＲＡＭ９００からＣＡパリティエラーを受信し、タイミングＴ１１のコマンドＣでＣＡパリティエラーが発生したことを検出する。タイミングＴ８に発行されたコマンドＢは、３サイクル経過後のタイミングＴ１１までにＣＡパリティエラーを通知されていないので、ＤＲＡＭ９００に正常に受信されている。
【００４３】
説明を簡単にするため、本動作波形ではコマンド、アドレス、パリティビットがビット０からビット５までの６ビットで構成されているものとする。例えば、コマンド３ビット、アドレス２ビット、パリティビット１ビットである。
【００４４】
本動作波形の場合、ビット１、ビット３は、コマンドＡを発行してからコマンドＣを発行するまで信号レベルが変化していない。ビット０、ビット２、ビット４は、コマンドＣを発行するために信号のレベルを反転させており、反転される前の信号レベルはタイミングＴ８からタイミングＴ１０までの３サイクル連続している。ビット５も、コマンドＣを発行するために信号を反転させており、反転される前の信号レベルはタイミングＴ４からタイミングＴ１０までの６サイクル連続している。
【００４５】
パターン感度ビットエラーの要因は、同一論理レベルが連続した後に論理レベルが変化した場合の信号減退であり、第２実施形態におけるエラーパターンは、以下に示す２つの例のようにエラーパターン保持回路２０４に保持する。
・エラーパターンＡ  ビット５が６サイクル以上、信号レベルが連続した後の信号レベルの変化
・エラーパターンＢ  ６サイクル以上、信号レベルが連続した後の信号レベルの変化
尚、「３サイクル以上、信号レベルが連続した後の信号レベルの変化」は、コマンドＢのＤＲＡＭ９００での受信においてＣＡパリティエラーが起こっていないので、エラーパターン例に含めない。
【００４６】
図５は第２実施形態におけるエラーパターンＡを適応したメモリコントローラ１００の動作波形例である。メモリコントローラ１００は、タイミングＴ１１にコマンドＣを発行する際に、その前のサイクルで、ビット５が６サイクル連続で０であることを検出し、コマンド２サイクルモードでコマンドＣを発行する。尚、コマンドＡ、Ｂは、ＣＳと同時にコマンドが変化しているので、コマンド２サイクルモードで発行されていない。コマンドＣを変化した次のサイクルでＣＳを発行しているので、コマンドＣは、コマンド２サイクルモードで発行されている。
【００４７】
コマンド２サイクルモード要求回路４００が、コマンド発行回路２０１、エラーパターン保持回路２０４、ＤＲＡＭコマンド保持回路２０３から情報を受信している。それにより、コマンド２サイクルモード要求回路４００が、次のＤＲＡＭコマンドを含む送信パターンが、エラーパターン保持回路２０４に保持されているエラーパターンと一致するので、パターン感度ビットエラーを原因とするＣＡパリティエラーを起こしそうだと判断する。そして、そのエラーを防止している。具体的には、メモリコントローラ１００がタイミングＴ１１でコマンドＣを発行したときに、ＤＲＡＭ９００側でＣＡパリティエラーが発生することを防止できている。
【００４８】
一方、タイミングＴ１４でコマンドＤを発行する際、ビット３において、９サイクル信号レベルが連続した後に反転されるが、エラーパターン保持回路２０４に保持されているエラーパターンと一致しないと、コマンド２サイクルモード要求回路４００に判断される。そのため、コマンド２サイクルモード要求回路４００からは、コマンド２サイクルモード要求されず、コマンド発行回路２０１から、通常モードでＤＲＡＭコマンドが発行される。
【００４９】
図６は第２実施形態におけるエラーパターンＢを適応したメモリコントローラ１００の動作波形例である。メモリコントローラ１００は、タイミングＴ１１にコマンドＣを発行する際に、ビット５が６サイクル連続で０であることを検出し、コマンド２サイクルモードでコマンドＣを発行する。さらに、メモリコントローラ１００は、タイミングＴ１４にコマンドＤを発行する際にも、ビット３が６サイクル以上連続で１であることを検出し、コマンド２サイクルモードでコマンドＤを発行する。その結果、メモリコントローラ１００がコマンドＣを発行したときに、ＤＲＡＭ９００側でＣＡパリティエラーが発生することを防止できている。
【００５０】
本実施形態では、メモリコントローラ１００が、各ビットの信号レベルの連続に着目してエラーパターンを生成することを説明してきた。同一信号レベルの連続に加え、さらに、信号レベルそのものをエラーパターンの条件に含んでも良い。図４の動作波形例で説明すると、エラーパターンＡは「ビット５が、６サイクル以上“０”が連続した後の、“１”への変化」、エラーパターンＢは「６サイクル以上、“０”が連続した後の、“１”への変化」となる。
【００５１】
上記の通り、本実施形態では、メモリコントローラ１００が、ＤＲＡＭ９００からＣＡパリティエラーを受信すると、発行したＤＲＡＭコマンドの各ビットの状態からエラーパターンをエラーパターン保持回路２０４に保持する。そして、同様のパターンが発生する場合に、メモリコントローラ１００のコマンド２サイクルモード要求回路は、コマンド２サイクルモードでＤＲＡＭコマンドを発行して、ＣＡパリティエラーの発生を抑制する。
【００５２】
また、本実施形態では、ＤＲＡＭ９００からＣＡパリティエラーを受信すると、エラーパターンを生成し、エラーパターン保持回路２０４に保持するメモリコントローラ１００に関する説明をした。エラーパターン保持回路２０４に、予め、レジスタアクセス等でエラーパターンを直接書き込んで保持させても良い。
【００５３】
［第３実施形態］
図７は第３実施形態におけるメモリコントローラ１００の概略構成例である。メモリコントローラ１００は、ＤＲＡＭ９００（ＤＤＲ４  ＳＤＲＡＭ）に接続され、ＤＲＡＭ９００に、ＣＳ、コマンド、アドレス、パリティビットからなるＤＲＡＭコマンドを送信する。ＤＲＡＭ９００は、第１実施形態と同様に、ＤＲＡＭコマンドのパリティチェックを行い、ＣＡパリティエラーを検出すると、一定時間後にメモリコントローラ１００にＣＡパリティエラーの発生を通知する。
【００５４】
メモリコントローラ１００はメモリアクセス要求を受信すると、受信したメモリアクセス要求をＤＲＡＭコマンドに変換して、コマンドＱｕｅｕｅ３００に格納する。
【００５５】
また、コマンドＱｕｅｕｅ３００には、ＤＲＡＭのリフレッシュや、キャリブレーションを実行する為のメモリアクセス要求以外のＤＲＡＭコマンドも格納される。
【００５６】
コマンド発行回路２０１は、コマンドＱｕｅｕｅ３００からＤＲＡＭコマンドを受信し、ＤＲＡＭコマンドの送信タイミングを制御して、選択回路６０１に送信する。
【００５７】
選択回路６０１は、コマンド発行回路２０１からのＤＲＡＭコマンドを受信すると、受信したＤＲＡＭコマンドをＤＲＡＭ９００に送信し、コマンド発行回路２０１からのＤＲＡＭコマンドを受信しない場合は、トグル生成回路６００から受信したトグルパターンを、ＤＲＡＭ９００に送信する。
【００５８】
ＤＲＡＭコマンド保持回路２０３は、ＤＲＡＭ９００に送信したＤＲＡＭコマンドを、一定時間保持する。ＣＡパリティエラー発生時に、ＤＲＡＭコマンドを再送するので保持している。一定時間経過後、ＤＲＡＭコマンドを破棄する。ＤＲＡＭコマンド保持回路２０３は、ＤＲＡＭ９００がパリティビットを用いてパリティチェックを実行する実行時間分、ＤＲＡＭコマンドを保持可能な容量を持てば良い。ＤＲＡＭコマンド保持回路２０３は、コマンド発行回路２０１がＤＲＡＭコマンドを送っていない間も、ＤＲＡＭに送信した信号レベルをそのまま保持する。
【００５９】
エラーパターン保持回路２０４は、ＤＲＡＭ９００からＣＡパリティエラーの発生を通知されると、ＤＲＡＭコマンド保持回路２０３に格納されているＤＲＡＭコマンドを参照する。そして、エラーパターン保持回路２０４は、ＣＡパリティエラーが発生したＤＲＡＭコマンドを含む発行パターンから、エラーパターンを生成して保持する。このエラーパターンは、パターン感度ビットエラーのパターンである。
【００６０】
トグル生成回路６００は、エラーパターン保持回路２０４から、エラーパターンを受信して、次に発行するＤＲＡＭコマンドがエラーパターンに当てはまらないようにコマンド、アドレス、パリティビットをトグルさせるトグルパターンを生成する。
【００６１】
図８は、第３実施形態におけるメモリコントローラの動作波形例である。タイミングＴ０にＤＲＡＭがコマンドＡを受信し、メモリコントローラはタイミングＴ４までにＣＡパリティエラーを受信しなかったため、コマンドＡのＤＲＡＭでの受信においては、ＣＡパリティエラーが発生していない。タイミングＴ５にＤＲＡＭがコマンドＢを受信し、メモリコントローラはタイミングＴ８にＣＡパリティエラーを受信するので、メモリコントローラは、コマンドＢのＤＲＡＭでの受信において、ＣＡパリティエラーが発生したことを検出する。
【００６２】
ＣＡパリティエラーの検出に伴い、メモリコントローラはエラーパターンを生成する。本動作波形の場合、コマンドＢの前のタイミングＴ１、Ｔ２、Ｔ３、Ｔ４の４サイクル期間コマンド、アドレス、パリティビットは０であるため、「４サイクル以上の信号レベルの連続」というエラーパターンが生成される。
【００６３】
タイミングＴ８以降、トグル生成回路６００は、２サイクルごとにコマンド、アドレス信号をトグルさせるトグル信号を生成する。本実施形態では、コマンド、アドレス、パリティビットを２サイクル間隔で全ビット０と、全ビット１とするトグル信号の生成が続くが、各ビットの信号レベルが連続しないように制御すればよく、同じタイミングで同じ信号レベルに変化させる必要は無い。
【００６４】
２サイクルごとに信号をトグルさせると、同一信号レベルの連続は最大３サイクルとなる。４サイクル以上の信号レベルの連続を防げる。最大３サイクル同一信号レベルが連続するのは、トグル生成回路６００の２サイクル連続での同一信号レベルの出力と、コマンド発行回路２０１のトグル生成回路６００と同一信号レベルでのコマンド出力とが、連続する場合に発生する。
【００６５】
選択回路６０１は、コマンド発行回路２０１からＤＲＡＭコマンドが入力された場合は、コマンド発行回路２０１が生成したＤＲＡＭコマンドを選択し、それ以外の場合は、トグル生成回路６００が生成したＤＲＡＭコマンドを選択する。
【００６６】
図８では、メモリコントローラ１００は、タイミングＴ１３でコマンドＣを発行している。タイミングＴ１３以外の期間では、メモリコントローラ１００はトグル生成回路６００が生成したコマンドを送信する。
【００６７】
上記の通り、本実施形態ではＤＲＡＭ９００からＣＡパリティエラーを受信すると、エラー前に信号レベルが連続したサイクル数をエラーパターンとして保持する。そして、同様のパターンが発生しないように、トグル生成回路でコマンド信号をトグルさせて、ＣＡパリティエラーの再発を抑制する。
【００６８】
また、本実施形態では、ＤＲＡＭからＣＡパリティエラーを受信すると、エラーパターンを生成し、エラーパターン保持回路２０４に保持メモリコントローラに関する説明をした。エラーパターン保持回路２０４に、予め、レジスタアクセス等でエラーパターンを直接書き込んで保持させても良い。
【００６９】
本実施形態では、エラーパターンを保持して、ＣＡパリティエラーが発生しない条件で、なるべくコマンド、アドレス、パリティビットのトグルの周期を長くする実施形態を説明した。より簡単な実施方法として、例えば、コマンド、アドレス、パリティビットを１サイクルのような短い周期でトグルさせるトグル生成回路を構成すれば、エラーパターン保持回路を用いることなく、ＣＡパリティエラーの再発を抑制することが可能である。
【００７０】
［第４実施形態］
図９は第４実施形態におけるメモリコントローラ１００の概略構成例である。第３実施形態の回路構成例との差異は、トグル生成回路６００がＤＲＡＭコマンド保持回路２０３を用いて発行済みのＤＲＡＭコマンドを確認することである。そして、コマンドＱｕｅｕｅ３００、またはコマンド発行回路２０１にＤＲＡＭコマンドが格納されていて、且つ、エラーパターンが発生する場合に限定して、トグル信号を生成することである。
【００７１】
図１０は、第４実施形態におけるメモリコントローラの動作波形例である。
【００７２】
タイミングＴ０にＤＲＡＭがコマンドＡを受信し、メモリコントローラはタイミングＴ４までにＣＡパリティエラーを受信しなかったため、コマンドＡのＤＲＡＭでの受信においては、ＣＡパリティエラーが発生していない。
【００７３】
タイミングＴ５にＤＲＡＭがコマンドＢを受信し、メモリコントローラはタイミングＴ８にＣＡパリティエラーを受信するので、メモリコントローラは、コマンドＢのＤＲＡＭでの受信において、ＣＡパリティエラーが発生したことを検出する。
【００７４】
ＣＡパリティエラーの検出に伴い、メモリコントローラはエラーパターンを生成する。
【００７５】
本動作波形の場合、コマンドＢの前のタイミングＴ１、Ｔ２、Ｔ３、Ｔ４の４サイクル期間コマンド、アドレス、パリティビットは０であるため、「４サイクル以上の信号レベルの連続」というエラーパターンが生成される。
【００７６】
メモリコントローラは、タイミングＴ１１でメモリアクセス要求を受信してコマンドＱｕｅｕｅ３００に、ＤＲＡＭコマンドが格納される。トグル生成回路６００は、ＤＲＡＭコマンド保持回路２０３から発行済みのＤＲＡＭコマンド情報を入力し、発行済みのＤＲＡＭコマンドがタイミングＴ８からＴ１１の４サイクルが０であることを確認し、エラーパターン保持回路２０４に保持されているエラーパターンとの一致を検出する。
【００７７】
トグル生成回路６００は、タイミングＴ１１にコマンド、アドレス、パリティビットのトグルを開始する。コマンド発行回路２０１は、タイミングＴ１２にコマンドＱｕｅｕｅ３００からＤＲＡＭコマンドを受信する。タイミングＴ１３でコマンドＣが発行され、コマンドＱｕｅｕｅ３００、コマンド発行回路２０１が空になるため、タイミングＴ１３での、コマンド、アドレス、パリティビットのトグルが行われない。実施形態３と異なり、トグル生成回路６００からは、タイミングＴ１３以降も、信号レベル１が連続して出力される。
【００７８】
上記の通り、本実施形態では、ＤＲＡＭからＣＡパリティエラーを受信すると、そのエラー前に信号レベルが連続したサイクル数をエラーパターンとしてエラーパターン保持回路２０４に保持する。そして、次のＤＲＡＭコマンド発行の前から、そのＤＲＡＭコマンド発行を終えるまでの期間だけ、同様のエラーパターンが発生しないように、トグル生成回路６００でコマンド信号をトグルさせる。その結果、ＣＡパリティエラーの発生を抑制しながら、ＤＲＡＭ９００へのメモリアクセスが無い期間の信号のトグルを抑制させる。
【００７９】
また、本実施形態では、ＤＲＡＭからＣＡパリティエラーを受信すると、エラーパターンを生成し、エラーパターン保持回路２０４に保持するメモリコントローラに関する説明をした。エラーパターン保持回路２０４に、予め、レジスタアクセス等でエラーパターンを直接書き込んで保持させても良い。
【００８０】
さらに、第３実施形態と同様に、例えば、コマンド、アドレス、パリティビットを１サイクルのような短い周期でトグルさせるトグル生成回路を構成すれば、エラーパターン保持回路を用いることなく、ＣＡパリティエラーの再発を抑制することが可能である。
【００８１】
［第５実施形態］
図１１は第５実施形態におけるメモリコントローラ１００の概略構成例である。第１実施形態との差異は、トレーニング回路５００が追加されていることである。
【００８２】
本実施形態における、トレーニング回路５００は、トレーニングパターンを生成する。どれぐらい信号レベルが連続した後にＤＲＡＭコマンドを発行すると、ＣＡパリティエラーが起こり易いかを知るために、コマンド発行間隔を順次大きくするトレーニングパターンを生成している。トレーニングパターンは、ＤＲＡＭコマンドで構成されている。選択回路６０２は、コマンド発行回路２０１からのＤＲＡＭコマンドを受信すると、受信したＤＲＡＭコマンドをＤＲＡＭ９００（ＤＤＲ４  ＳＤＲＡＭ）に送信し、トレーニング回路５００からのＤＲＡＭコマンドを受信すると、受信したＤＲＡＭコマンドをＤＲＡＭ９００に送信する。
【００８３】
図１２は、本実施形態おけるトレーニング回路が生成する動作波形を説明する図である。メモリコントローラ１００は、ＤＲＡＭコマンドを送信しないサイクルでは、コマンド、アドレス、パリティビットを０にする。
【００８４】
メモリコントローラ１００は、コマンド発行間隔のサイクル数を順次大きくしながら、タイミングＴ２、Ｔ４、Ｔ７、Ｔ１１、Ｔ１６で、ＤＲＡＭコマンドを発行し、その際の、コマンド、アドレス、パリティビットは１にする。
【００８５】
タイミングＴ１４で、ＤＲＡＭからのＣＡパリティエラー通知を受信すると、エラーパターン保持回路２０４は、タイミングＴ１１のＤＲＡＭコマンド発行で、ＣＡパリティエラーが発生したことを認識する。タイミングＴ１１におけるＤＲＡＭコマンドは、コマンド、アドレス、パリティビットを３サイクル連続させた後に変化させているため、「３サイクル以上、信号レベルが連続した後のコマンド発行」というエラーパターンが、エラーパターン保持回路２０４に保持される。
【００８６】
上記のトレーニング回路５００によるトレーニングパターン発行動作を、メモリコントローラが、メモリアクセス要求のＤＲＡＭコマンド発行を開始する前に行う。
【００８７】
上記説明した通り、本実施形態ではトレーニングパターン発行動作をメモリアクセス開始前に行うことで、メモリアクセス要求によるＤＲＡＭコマンド発行でのＣＡパリティエラーの発生を抑制する。
【００８８】
なお、本実施形態では第１実施形態のメモリコントローラの構成例にトレーニング回路を追加する構成例を説明したが、第２実施形態から第４実施形態のメモリコントローラの構成例にトレーニング回路を追加することで、本実施形態と同様の効果が得られる。
【００８９】
本実施形態におけるトレーニング回路が生成する動作波形は、一例であり、コマンド、アドレス、パリティビットを１ビットだけ変化させるトレーニング波形でもよい。また第２実施形態から第４実施形態のメモリコントローラにトレーニング回路を追加する際には、各実施形態で使用するエラーパターンを効率的に取得するようにトレーニングパターンを生成すると良い。
【符号の説明】
【００９０】
１００  メモリコントローラ
２０１  コマンド発行回路
２０３  ＤＲＡＭコマンド保持回路
２０４  エラーパターン保持回路
３００  コマンドＱｕｅｕｅ
４００  コマンド２サイクルモード要求回路
９００  ＤＲＡＭ
【図１】
2016212524.tif 000003
【図２】
2016212524.tif 000004
【図３】
2016212524.tif 000005
【図４】
2016212524.tif 000006
【図５】
2016212524.tif 000007
【図６】
2016212524.tif 000008
【図７】
2016212524.tif 000009
【図８】
2016212524.tif 000010
【図９】
2016212524.tif 000011
【図１０】
2016212524.tif 000012
【図１１】
2016212524.tif 000013
【図１２】
2016212524.tif 000014