(57)【要約】【課題】ライトレベリング時のサイクルずれを補正する。【解決手段】第１ダミーパターンを試験対象メモリの第１のアドレスに書き込む第１ライト部１１と、第１ダミーパターンの書き込みに後続して、テストパターンを第２のアドレスに書き込む第２ライト部１１と、テストパターンの書き込みに後続して第２ダミーパターンを第３のアドレスに書き込む第３ライト部１１と、第２のアドレスからテストパターンを読み出すリード部１４と、テストパターンの読み出し結果に基づいて、データの書き込みタイミングを調整するタイミング調整部１４とをそなえる。【選択図】図１
2012252530.tif 000002
【特許請求の範囲】
【請求項１】
連続する複数のダミー値を含む第１ダミーパターンを、試験対象メモリの第１のアドレスに書き込む第１ライト部と、
前記第１ライト部による前記第１ダミーパターンの書き込みに後続して、連続する複数種類の試験値を含むテストパターンを、前記試験対象メモリの第２のアドレスに書き込む第２ライト部と、
前記第２ライト部による前記テストパターンの書き込みに後続して、連続する複数のダミー値を含む第２ダミーパターンを、前記試験対象メモリの第３のアドレスに書き込む第３ライト部と、
前記試験対象メモリの前記第２のアドレスから前記テストパターンを読み出すリード部と、
前記リード部による前記テストパターンの読み出し結果に基づいて、前記試験対象メモリに対するデータの書き込みタイミングを調整するタイミング調整部とをそなえることを特徴とする、メモリコントローラ。
【請求項２】
前記タイミング調整部が、
前記リード部による前記テストパターンの読出しの開始に基づいて、前記試験対象メモリに対するデータの書き込みタイミングを調整することを特徴とする、請求項１記載のメモリコントローラ。
【請求項３】
前記タイミング調整部が、
前記リード部による前記テストパターンの読出しの開始又は終了に基づいて、前記試験対象メモリに対するデータの書き込みタイミングの変化量を決定することを特徴とする、請求項１又は２記載のメモリコントローラ。
【請求項４】
連続する複数種類の試験値を含む第２のテストパターンを、前記試験対象メモリの第２のアドレスに書き込む第４ライト部をそなえ、
前記第１ライト部、前記第２ライト部及び前記第３ライト部による前記第１ダミーパターン、テストパターン及び第２ダミーパターンの書き込みを連続して行なう連続ライトと、前記第４ライト部による前記第２のテストパターンの書き込みを行なう単発ライトとのいずれかを選択的に行なうことを特徴とする、請求項１〜３のいずれか１項に記載のメモリコントローラ。
【請求項５】
連続する複数のダミー値を含む第１ダミーパターンを、試験対象メモリの第１のアドレスに書き込むステップと、
前記第１ダミーパターンの書き込みに後続して、連続する複数種類の試験値を含むテストパターンを、前記試験対象メモリの第２のアドレスに書き込むステップと、
前記テストパターンの書き込みに後続して、連続する複数のダミー値を含む第２ダミーパターンを、前記試験対象メモリの第３のアドレスに書き込むステップと、
前記試験対象メモリの前記第２のアドレスから前記テストパターンを読み出すステップと、
前記テストパターンの読み出し結果に基づいて、前記試験対象メモリに対するデータの書き込みタイミングを調整するステップとをそなえることを特徴とする、制御方法。
【請求項６】
前記書き込みタイミングを調整するに際して、
前記テストパターンの読出しの開始に基づいて、前記試験対象メモリに対するデータの書き込みタイミングを調整することを特徴とする、請求項５記載の制御方法。
【請求項７】
前記書き込みタイミングを調整するに際して、
前記テストパターンの読出しの開始又は終了に基づいて、前記試験対象メモリに対するデータの書き込みタイミングの変化量を決定することを特徴とする、請求項５又は６記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、メモリコントローラ及び制御方法に関する。
【背景技術】
【０００２】
ＤＤＲ３（Double Data Rate 3）−ＳＤＲＡＭ（Synchronous DRAM）を使用したＤＩＭＭ（Dual Inline Memory Module）では、各ＤＲＡＭ端におけるライト時のクロック（以下、ＣＬＫ）とデータストローブ信号（以下、ＤＱＳ）のエッジとが所定の時間以内になるようにする必要がある。このような規定を保証するためにライトレベリング（Write Leveling）の仕組みが用いられている。
【０００３】
ライトレベリングは、ＤＱＳのエッジをＣＬＫのエッジに合わせる処理であり、ＤＱＳをＣＬＫと同時もしくはほぼ同時に入力させるように調整又は補正する機能である。図９（ａ）〜（ｅ）はライトレベリングを説明するシーケンス図であり、図９（ａ）はＤＩＭＭのＣＬＫを例示する図、図９（ｂ），図９（ｄ）はそれぞれＤＱＳを例示する図、図９（ｃ），図９（ｅ）はＤＩＭＭからの応答を例示する図である。
【０００４】
ライトレベリングにおいては、図９（ａ），図９（ｂ）に示すように、コントローラからのＤＱＳの出力タイミングを遅らせていき、ＤＩＭＭからの応答（図９（ｃ），図９（ｅ）参照）によって、ＣＬＫのエッジに合っているかどうかを判断する。すなわち、ＤＩＭＭからの応答が“０”である場合には（図９（ｃ）参照）、ＤＩＭＭからの応答が“１”になるまでコントローラからのＤＱＳの出力タイミングを遅らせる（図９（ｅ）参照）。
【０００５】
このようなライトレベリングでは、ＤＱＳのエッジがＣＬＫのエッジに合っているかどうかのみ判断することができる。つまり、例えば、図９（ａ）に示す例において、ＤＱＳが区間Ａから始まれば、エッジＥ１に合い、又、ＤＱＳが区間Ｂから始まれば、エッジＥ２に合う。そして、その合わせたエッジが適切かどうかは別途保証する手段が必要である。
【０００６】
従来は、ライトレベリングを開始する際のディレイＴＡＰの初期値を線長等の設計値から求めることにより、合わせたいエッジに対してライトレベリングでサイクルのずれが発生しないことを保証している。例えば、図９（ａ）において、エッジＥ２が合わせる対象のエッジである場合に、ＤＱＳが区間Ｂから始まるようなディレイＴＡＰの初期値を、線長等の設計値に基づいて設定する。
【０００７】
もしくは、ＤＤＲ（Double Data Rate）の物理的な汎用インターフェイスであるＤＦＩ（DDR PHY Interface）で採用されている、ゲートトレーニングのような方法を用いる場合もある。すなわち、リード時のＤＱＳが有効な期間をトレーニングして、リードのタイミングを合わせた状態からライトのずれを修正するといった方法を用いる。このような手法によれば、リードのタイミングが分かっていれば、単に適当なデータをライトリードし、リードタイミングでのデータを比較すればよい。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−１３０４５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述したディレイＴＡＰの初期値を計算する方法においては、ＤＩＭＭの改版等が行なわれる度にライトレベリングの初期値を見直す必要があり、煩雑であるという課題がある。又、回路のバラツキ等を考慮した計算が困難であり、実機の測定結果を何回もフィードバックする必要も生じ煩雑である。又、今後ＤＩＭＭの周波数が上がるにつれて初期値の計算はさらに困難になることが予想されるという課題もある。
【００１０】
一方、上述したリードのタイミングをゲートトレーニングで保証する手法では、ＤＦＩインターフェイスをそなえたＤＤＲのＩＯマクロを採用していない場合は実現できないという課題がある。又、ＤＦＩのインターフェイスをサポートしていないＤＤＲＩＯマクロを使用した場合にも、容易にライトレベリングのサイクルずれを補正し、また、ディレイＴＡＰの初期値の計算を不要とできる仕組みが求められている。
【００１１】
１つの側面では、本件は、ライトレベリング時のサイクルずれを補正することを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
【課題を解決するための手段】
【００１２】
このため、このメモリコントローラは、連続する複数のダミー値を含む第１ダミーパターンを、試験対象メモリの第１のアドレスに書き込む第１ライト部と、前記第１ライト部による前記第１ダミーパターンの書き込みに後続して、連続する複数種類の試験値を含むテストパターンを、前記試験対象メモリの第２のアドレスに書き込む第２ライト部と、前記第２ライト部による前記テストパターンの書き込みに後続して、連続する複数のダミー値を含む第２ダミーパターンを、前記試験対象メモリの第３のアドレスに書き込む第３ライト部と、前記試験対象メモリの前記第２のアドレスから前記テストパターンを読み出すリード部と、前記リード部による前記テストパターンの読み出し結果に基づいて、前記試験対象メモリに対するデータの書き込みタイミングを調整するタイミング調整部とをそなえる。
【００１３】
また、この制御方法は、連続する複数のダミー値を含む第１ダミーパターンを、試験対象メモリの第１のアドレスに書き込むステップと、前記第１ダミーパターンの書き込みに後続して、連続する複数種類の試験値を含むテストパターンを、前記試験対象メモリの第２のアドレスに書き込むステップと、前記テストパターンの書き込みに後続して、連続する複数のダミー値を含む第２ダミーパターンを、前記試験対象メモリの第３のアドレスに書き込むステップと、前記試験対象メモリの前記第２のアドレスから前記テストパターンを読み出すステップと、前記テストパターンの読み出し結果に基づいて、前記試験対象メモリに対するデータの書き込みタイミングを調整するステップとをそなえる。
【発明の効果】
【００１４】
開示の技術によれば、ライトレベリングのサイクルずれを容易に補正することができる利点がある。
【図面の簡単な説明】
【００１５】
【図１】は実施形態の一例としてのメモリシステムの構成を模式的に示す図である。
【図２】（ａ）〜（ｄ）は実施形態の一例としてのメモリシステムにおけるライトデータパターンを例示する図である。
【図３】（ａ）〜（ｈ）は実施形態の一例としてのメモリシステムにおける連続ライトモードにおけるライト処理を説明するシーケンス図である。
【図４】（ａ）〜（ｈ）は実施形態の一例としてのメモリシステムにおける単発ライトモードにおけるライト処理を説明するシーケンス図である。
【図５】実施形態の一例としてのメモリシステムにおけるリードデータパターンチェック回路の機能を模式的に示す図である。
【図６】（ａ）〜（ｅ）は実施形態の一例としてのメモリシステムにおける連続ライトモードにおけるリード処理を説明するシーケンス図である。
【図７】（ａ）〜（ｅ）は実施形態の一例としてのメモリシステムにおける単発ライトモードにおけるリード処理を説明するシーケンス図である。
【図８】実施形態の一例としてのメモリシステムにおける連続ライトモードにおける処理を説明するフローチャートである。
【図９】（ａ）〜（ｅ）はライトレベリングを説明するシーケンス図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本メモリコントローラ，制御方法及びメモリシステムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
図１は実施形態の一例としてのメモリシステムの構成を模式的に示す図である。
【００１７】
本メモリシステム１は、例えばＣＰＵ（Central Processing Unit）を有する情報処理装置にそなえられ、図１に示すように、メモリコントローラ１０，ＩＯマクロ２０及びＤＩＭＭ３０をそなえる。
ＤＩＭＭ３０は、複数のＤＲＡＭチップをそなえるメモリモジュールであって、例えば、情報処理装置の主記憶として用いられる。このＤＩＭＭ３０には、後述するＩＯマクロ２０と、コマンド信号線４１やＤＱＳ信号線４２，ＤＱ（データ）信号線４３，図示しないクロック信号線等を介して接続されている。本実施形態においては、ＤＩＭＭ３０がＤＤＲ３−ＳＤＲＡＭを搭載した例について示す。
【００１８】
このＤＩＭＭ３０においては、メモリコントローラ１０からライトコマンドを受信すると、ＤＱＳの立ち上がり／立ち下がりエッジに同期してデータ信号の取り込みを行ない、このＤＱから出力されるデータがライトコマンドによって指定されるアドレスに書き込まれる。なお、データストローブ信号は、ＤＱＳ信号の他にもその反転信号である／ＤＱＳ信号が／ＤＱＳ端子から出力されるが、本実施形態においてはこれらの図示を省略している。又、ＤＩＭＭ３０の構成や機能は既知の技術であり、その詳細な説明は省略する。
【００１９】
ＩＯマクロ２０は、メモリコントローラ１０とＤＩＭＭ３０との間においてアナログ信号の波形やタイミングの調整を行なう。
図１に示す例においては、ＩＯマクロ２０は、遅延ＴＡＰ２１，リードデータ調整部２２及び複数のドライバ２３をそなえる。
遅延ＴＡＰ２１は、メモリコントローラ１０のＤＱＳ＿ＥＮ発生回路１２から出力されるＤＱＳ＿ＥＮ（ＤＱＳ＿イネーブル）信号を遅延させる遅延回路である。遅延ＴＡＰ２１は、例えば、単位遅延時間を付与するタップ（図示省略）を多段に直列接続されて構成され、後述するリードデータ処理部１４から入力されるＴＡＰ遅延値に応じて信号を通過させるパスを切り替えることにより、ＴＡＰ遅延値に応じた遅延を付与する。遅延ＴＡＰ２１に入力されたＤＱＳ＿ＥＮ信号は、ＴＡＰ遅延値に応じて遅延された後、ＤＱＳ信号としてＤＱＳ信号線４２を介してＤＩＭＭ３０に入力される。なお、遅延ＴＡＰ２１の構成や機能は既知の技術であり、その詳細な説明は省略する。
【００２０】
リードデータ調整部２２は、ＤＩＭＭ３０から読み出されたＤＱに対してタイミングを調整したＤＱＳを合わせ、リードデータとしてメモリコントローラ１０に入力する。ドライバ２３はＩＯマクロ２０内の各信号線上において信号の波形調整等を行なう。
メモリコントローラ１０は、ＤＩＭＭ３０に対するデータの書き込みや読み出しを行なう制御装置であり、図１に示すように、コマンド処理回路１１，ＤＱＳ＿ＥＮ発生回路１２，ライトデータ制御部１３及びリードデータ処理部１４をそなえる。
【００２１】
ＤＱＳ＿ＥＮ発生回路１２は、ＤＱＳの基となるＤＱＳ＿ＥＮ信号を生成し出力する回路であり、コマンド処理回路１１からの制御に応じてＤＱＳ＿ＥＮ信号を出力する。
このＤＱＳ＿ＥＮ発生回路１２から出力されたＤＱＳ＿ＥＮ信号は、ＩＯマクロ２０に入力された後、ＤＱＳとしてＤＩＭＭ３０に入力される。
ライトデータ制御部１３は、ライトレベリング時のサイクルずれを検出するためにＤＩＭＭ３０に書き込まれるライトデータパターンのデータを作成する。具体的には、ライトデータ制御部１３は、ライトデータパターンとして、調整用データＤＴ１及びダミーデータＤＴ２，ＤＴ３を生成する。
【００２２】
図２（ａ）〜（ｄ）は実施形態の一例としてのメモリシステム１におけるライトデータパターンを例示する図である。図２（ａ）はダミーデータＤＴ２を、図２（ｂ）は調整用データＤＴ１を、図２（ｃ）はダミーデータＤＴ３を、図２（ｄ）は調整用データＤＴ４を、それぞれ例示する。
調整用データ（テストパターン）ＤＴ１は、図２（ｂ）に示すように、複数（本実施形態では８）種類の試験値Ｄ１〜Ｄ８のデータ列として構成される。すなわち、図２（ｂ）に示す例においては、調整用データＤＴ１は８ビットのデータ列として構成されている。又、調整用データＤＴ１を構成する試験値Ｄ１〜Ｄ８は互いに異なる値であることが望ましく、図２（ｂ）に示す例においては、試験値Ｄ１〜Ｄ８として１〜８が用いられている。
【００２３】
ダミーデータ（第１ダミーパターン）ＤＴ２は予め設定された同一の値（ダミー値）のデータ列として構成される。図２（ａ）に示す例においては、ダミー値として０が用いられている。ダミーデータ（第２ダミーパターン）ＤＴ３も、ダミーデータＤＴ２と同様に予め設定された同一の値（ダミー値）のデータ列として構成される。図２（ｃ）に示す例においては、ダミー値として０が用いられている。又、ダミーデータＤＴ２，ＤＴ３は、調整用データＤＴ１と同じビット数であることが望ましい。
【００２４】
これらの調整用データＤＴ１，ダミーデータＤＴ２，ＤＴ３は、後述するコマンド処理回路１１の連続ライト機能１１１によって用いられる。
調整用データＤＴ４は、図２（ｄ）に示すように、複数（本実施形態では８）種類の試験値Ｄ０１〜Ｄ０８のデータ列として構成される。すなわち、図２（ｄ）に示す例においては、調整用データＤＴ１は８ビットのデータ列として構成されている。又、調整用データＤＴ４を構成する試験値Ｄ０１〜Ｄ０８は互いに異なる値であることが望ましく、図２（ｄ）に示す例においては、調整用データＤＴ１と同様に、試験値Ｄ０１〜Ｄ０８として１〜８が用いられている。
【００２５】
なお、この調整用データＤＴ４を構成する各試験値Ｄ０１〜Ｄ０８は、調整用データＤＴ１の試験値Ｄ１〜Ｄ８と同じものに限定されるものではなく、適宜変更して実施することができる。
そして、これらのライトデータパターンにおいて、各試験値Ｄ１〜Ｄ８，Ｄ０１〜Ｄ０８やダミー値は、それぞれ１バーストアドレスに対応する。
【００２６】
ライトデータ制御部１３は、ライトデータパターン発生回路１３１をそなえ、このライトデータパターン発生回路１３１により、調整用データＤＴ１及びダミーデータＤＴ２，ＤＴ３を生成する。ライトデータパターン発生回路１３１は、コマンド処理回路１１から行なわれるライトデータパターンの発生要求に応じて、調整用データＤＴ１及びダミーデータＤＴ２，ＤＴ３を生成する。
【００２７】
なお、本実施形態においては、ダミーデータＤＴ２，ＤＴ３のいずれもダミー値として０を用いているが、これに限定されるものではない。すなわち、ダミー値として０以外の値を用いてもよく、又、ダミーデータＤＴ２とダミーデータＤＴ３とで異なるダミー値を用いてもよい。
ただし、これらのダミー値は、調整用データＤＴ１，ＤＴ４の試験値Ｄ１〜Ｄ８，Ｄ０１〜Ｄ０８と異なる値であることが望ましい。
【００２８】
コマンド処理回路１１は、ＤＩＭＭ３０に対してコマンドを出力する回路であり、例えば、ＤＩＭＭ３０に対してデータのライトコマンドやリードコマンドを送信する。
ＤＩＭＭ３０に対するコマンドの発行は、例えば、ロウ（行）を指定するアクティブコマンドの発行の後に行なわれる。具体的には、例えば、アクセス先のアドレス（ADRS）指定とともに、ＣＡＳ（Column Address Strobe）のライトコマンド［CAS(Write)］やリードコマンド［CAS(Read)］を送信することにより行なう。
【００２９】
このコマンド処理部１１は、図１に示すように、ライトレベリングのタイミング調整に関し、連続ライト機能１１１と単発ライト機能１１２とをそなえる。
なお、以下、本実施形態において、連続ライト機能１１１によりＤＩＭＭ３０にライトデータパターンを書き込む場合を連続ライトモードといい、単発ライト機能１１２によりＤＩＭＭ３０にライトデータパターンを書き込む場合を単発ライトモードという。
【００３０】
そして、本メモリシステム１においては、これらの連続ライトモードと単発ライトモードとは選択的に行なわれる。
連続ライト機能１１１は、ライトレベリングのタイミング調整において、ＤＩＭＭ３０に対して、ライトデータパターンとして、ダミーデータＤＴ２，調整用データＤＴ１及びダミーデータＤＴ３を連続して書き込む。
【００３１】
この連続ライト機能１１１による連続ライトモードは、例えば、情報処理装置の工場出荷時や初期設定時、電源投入時に行なって好適である。
図３（ａ）〜（ｈ）は実施形態の一例としてのメモリシステム１における連続ライトモードにおけるライト処理を説明するシーケンス図である。図３（ａ）はＤＩＭＭ３０におけるＣＬＫ（CLK@DIMM）を例示する図，（ｄ），（ｆ），（ｈ）はそれぞれＤＩＭＭ３０におけるDQSを例示する図、図３（ｂ）はコマンド処理回路１１から送信されるライトコマンドを例示する図である。又、図３（ｃ），（ｅ），（ｇ）はそれぞれＤＩＭＭ３０に書き込まれるライトデータパターンを例示する図である。
【００３２】
そして、これらの図３（ａ）〜（ｈ）に示す例においては、第１のアドレスＡに格納されているデータを矢印Ａ１で、第２のアドレスＢに格納されているデータを矢印Ｂ１で、第３のアドレスＣに格納されているデータを矢印Ｃ１で、それぞれ示す。
図３（ｅ），（ｆ）に示す例においては、ライトレベリング（ＷＬ）においてＤＱＳが最適のタイミングにあり、ＤＩＭＭ３０にライトデータパターンがずれることなく書き込まれた状態を示している。すなわち、第２のアドレスＢに調整用データＤＴ１の試験値Ｄ１〜Ｄ８が欠けることなく完全な状態（理想状態）で格納されている。
【００３３】
一方、図３（ｃ），（ｄ）においては、ライトレベリングにおいてＤＱＳのタイミングが図３（ｅ），（ｆ）に示す理想状態よりも早くなり、前側（図３（ｃ），（ｄ）中左側）に１サイクル分（１τ）ずれた状態で格納された例を示している。すなわち、図３（ｃ），（ｄ）に示す例においては、試験値Ｄ１，Ｄ２が第２のアドレスＢ内には格納されずに第１のアドレスＡ内に格納されている。そして、第２のアドレスＢには調整用データＤＴ１の試験値Ｄ３〜Ｄ８が格納されるとともに、試験値Ｄ８に後続して２つのダミー値０が格納されている。又、図３（ｃ），（ｄ）に示す例においては、第３のアドレスＣに、６つのダミー値０に後続して２つの不定値Ｘが格納されている。
【００３４】
また、図３（ｇ），（ｈ）においては、ライトレベリングにおいてＤＱＳのタイミングが、図３（ｅ），（ｆ）に示す理想状態よりも遅くなり、後ろ側（図３（ｇ），（ｈ）右側）に１τずれた状態で格納された例を示している。すなわち、図３（ｇ），（ｈ）に示す例においては、試験値Ｄ７，Ｄ８が第２のアドレスＢ内には格納されずに第３のアドレスＣ内に格納されている。そして、第２のアドレスＢには調整用データＤＴ１の試験値Ｄ１〜Ｄ６が格納されるとともに、試験値Ｄ１に先行して２つのダミー値０が格納されている。又、図３（ｇ），（ｈ）に示す例においては、第１のアドレスＡに、６つのダミー値０に先行して２つの不定値Ｘが格納されている。
【００３５】
連続ライト機能１１１においては、図３（ｂ）に示すように、コマンド処理回路１１が、ＤＩＭＭ３０に対して３つのコマンドＣＷ１，ＣＷ２，ＣＷ３を連続して送信することにより、ダミーデータＤＴ２，調整用データＤＴ１及びダミーデータＤＴ３の順で書き込ませる。
ここで、コマンドＣＷ１は、ダミーデータＤＴ２をＤＩＭＭ３０の第１のアドレスＡに書き込ませるライトコマンドである。又、コマンドＣＷ２は、調整用データＤＴ１をＤＩＭＭ３０の第２のアドレスＢに書き込ませるライトコマンドである。更に、コマンドCW３は、ダミーデータＤＴ３をＤＩＭＭ３０の第３のアドレスＣに書き込ませるライトコマンドである。
【００３６】
また、アドレスＡ，Ｂ，Ｃは、予め設定しておいてもよく、又、コマンド処理回路１１が任意に決定してもよい。ただし、これらのアドレスＡ，Ｂ，Ｃは同一ロウ（行）内にあり、一のメモリアクセスで読み出せる範囲内にあることが望ましい。
また、コマンド処理回路１１は、ライトコマンドＣＷ１〜ＣＷ３の送信に際して、ライトデータ制御部１３に対して、各ライトコマンドＣＷ１〜ＣＷ３とともに送信するライトデータパターン（調整用データＤＴ１及びダミーデータＤＴ２，ＤＴ３）の生成要求を行なう。
【００３７】
すなわち、コマンド処理回路１１は、連続ライトモードにおいて、ダミーデータＤＴ２をＤＩＭＭ３０の第１のアドレスＡに書き込む第１ライト部として機能するとともに、ダミーデータＤＴ２の書き込みに後続して、調整用データＤＴ１をＤＩＭＭ３０の第２のアドレスＢに書き込む第２ライト部として機能する。更に、コマンド処理回路１１は、連続ライトモードにおいて、調整用データＤＴ１の書き込みに後続して、ダミーデータＤＴ３ＤＩＭＭ３０の第３のアドレスＣに書き込む第３ライト部として機能する。
【００３８】
単発ライト機能１１２は、ライトレベリングのタイミング調整において、ＤＩＭＭ３０に対して、調整用データＤＴ４を書き込む。
図４（ａ）〜（ｈ）は実施形態の一例としてのメモリシステム１における単発ライトモードにおけるライト処理を説明するシーケンス図である。図４（ａ）はＤＩＭＭ３０におけるＣＬＫ（CLK@DIMM）を例示する図，（ｄ），（ｆ），（ｈ）はそれぞれＤＩＭＭ３０におけるＤＱＳを例示する図、図４（ｂ）はコマンド処理回路１１から送信されるライトコマンドＣＷ４を例示する図である。又、図４（ｃ），（ｅ），（ｇ）はそれぞれＤＩＭＭ３０に書き込まれるライトデータパターンを例示する図である。
【００３９】
なお、図４（ｅ），（ｆ）に示す例においては、ライトレベリングにおいてＤＱＳが最適のタイミングにあり、ＤＩＭＭ３０にライトデータパターンがずれることなく書き込まれた状態を示している。又、図４（ｃ），（ｄ）においては、ライトレベリングにおいてＤＱＳのタイミングが図４（ｅ），（ｆ）に示す状態よりも早くなり、前側（図４（ｅ），（ｆ）中左側）に１τずれた状態を例示している。更に、図４（ｇ），（ｈ）においては、ライトレベリングにおいてＤＱＳのタイミングが、図４（ｅ），（ｆ）に示す状態よりも遅くなり、後ろ側（図４（ｅ），（ｆ）中右側）に１τずれた状態を例示している。
【００４０】
単発ライト機能１１２においては、図４（ｂ）に示すように、コマンド処理回路１１が、ＤＩＭＭ３０に対して、１つのライトコマンドＣＷ４を送信することにより、調整用データＤＴ４を書き込ませる。具体的には、コマンドＣＷ４は調整用データＤＴ４をＤＩＭＭ３０の第２のアドレスＢに書き込ませる。
すなわち、コマンド処理回路１１は、単発ライトモードにおいて、調整用データＤＴ４をＤＩＭＭ３０の第２のアドレスＢに書き込む第４ライト部として機能する。
【００４１】
リードデータ処理部１４は、ライトレベリングのタイミング調整において、ＤＩＭＭ３０に書き込まれたライトデータパターンを読み出して処理する。コマンド処理回路１１が、ＤＩＭＭ３０に対して、そのアドレスＢからデータを読み出すリードコマンドＣＲを繰り返し送信すると、リードデータ処理部１４は、これらのリードコマンドに応じてＤＩＭＭ３０から送信されたデータを受け取り、処理を行なう。
【００４２】
リードデータ処理部１４は、連続ライトモードにおいては、ＤＩＭＭ３０の第２のアドレスＢから読み出された調整用データＤＴ１を処理し、又、単発ライトモードにおいては、ＤＩＭＭ３０の第２のアドレスＢから読み出された調整用データＤＴ４を処理する。
すなわち、リードデータ処理部１４は、ＤＩＭＭ３０の第２のアドレスＢから調整用データＤＴ１を読み出すリード部として機能する。
【００４３】
そして、リードデータ処理部１４は、ＤＩＭＭ３０のアドレスＢから読み出したリードデータに基づき、ライトレベリングのサイクルずれを補正する処理を行なう。
リードデータ処理部１４は、図１に示すように、ライトレベリング応答処理部１４１及びリードデータパターンチェック回路１４２をそなえる。
リードデータパターンチェック回路１４２は、ＤＩＭＭ３０の第２のアドレスＢから読み出されたリードデータに基づき、ＤＱＳの出力タイミングを調整するＴＡＰ遅延量を決定する。
【００４４】
図５は実施形態の一例としてのメモリシステム１におけるリードデータパターンチェック回路１４２の機能を模式的に示す図である。
この図５に示すように、ＤＩＭＭ３０からリードコマンドＣＲによって読み出され、ＩＯマクロ２０を介して取得されたリードデータは、バッファ１４２１に一時的に格納される。バッファ１４２１には、リードコマンドＣＲによってＤＩＭＭ３０から読み出されたリードデータがＦＩＦＯで格納される。
【００４５】
図６（ａ）〜（ｅ）は実施形態の一例としてのメモリシステム１における連続ライトモードにおけるリード処理を説明するシーケンス図である。図６（ａ）はＤＩＭＭ３０におけるＣＬＫ（CLK@DIMM）を例示する図、図６（ｂ）はコマンド処理回路１１から送信されるリードコマンドＣＲを例示する図である。又、図６（ｃ），（ｄ），（ｅ）はそれぞれＤＩＭＭ３０から読み出されるリードデータを例示する図である。
【００４６】
また、図６（ｃ），（ｄ），（ｅ）においては、一のリードコマンドＣＲによってＤＩＭＭ３０の第２のアドレスＢから読み出されたリードデータを矢印Ｂ２で示す。
図６（ｄ）に示す例においては、図３（ｅ）に示された理想状態で格納されたライトデータパターンがリードデータとして読み出された状態を示している。
すなわち、第２のアドレスＢから調整用データＤＴ１の試験値Ｄ１〜Ｄ８が欠けることなく完全な状態（理想状態）で読み出され、バッファ１４２１に格納されている。
【００４７】
一方、図６（ｃ）に示す例においては、図３（ｃ）に示された状態で格納されたライトデータパターンが読み出された状態を示している。すなわち、図６（ｃ）に示す例においては、ＤＩＭＭ３０の第２のアドレスＢから試験値Ｄ３〜Ｄ８及びダミー値０，０が読み出され、バッファ１４２１に格納されている。
また、図６（ｅ）に示す例においては、図３（ｇ）に示された状態で格納されたライトデータパターンが読み出された状態を示している。すなわち、図６（ｅ）に示す例においては、ＤＩＭＭ３０の第２のアドレスＢからダミー値０，０及び試験値Ｄ１〜Ｄ６が読み出され、バッファ１４２１に格納されている。
【００４８】
リードデータパターンチェック回路１４２は、バッファ１４２１に格納された、ＤＩＭＭ３０の第２のアドレスＢから読み出されたリードデータに基づいて各種の情報収集や判断を行なう。
リードデータパターンチェック回路１４２は、連続ライトモードにおいて、バッファ１４２１のリードデータを、その先頭（図６（ｃ），（ｄ），（ｅ）の左側）から順に確認する。そして、リードデータパターンチェック回路１４２は、（i）リードデータにおいて最初に読めた試験値、（ii）リードデータにおいて最後に読めた試験値、（iii）試験値が連続しているか、等の情報を収集・分析し、その結果を図示しないメモリ等に保存する。
【００４９】
また、リードデータパターンチェック回路１４２は、上記の“（i）リードデータにおいて最初に読めた試験値”がＤ１であるか否かについても判断する。
なお、上記の（iii）試験値が連続しているかの判断は、試験値Ｄ１〜Ｄ８を試験値Ｄｎ（ｎ＝１〜８の自然数）と表した場合に、Ｄｋの次にＤｋ＋１（ｋは１〜７の自然数）が並んでいるかを確認することで行なう。
【００５０】
そして、リードデータパターンチェック回路１４２は、これらの判断結果に基づいて、ライトレベリングにおけるＤＱＳの出力タイミングの変更量を決定し、その変更量を実現するＴＡＰ遅延値の算出を行なう。
例えば、上記の“（i）リードデータにおいて最初に読めた試験値”がＤ１である場合には、リードデータパターンチェック回路１４２は、ライトデータを出すタイミング（遅延ＴＡＰ）を早めるように変更する。
【００５１】
具体的には、上記“（ii）リードデータにおいて最後に読めた試験値”がＤｎである場合に、変更サイクル数（早めるサイクル数）ｓを、例えば以下の式（１）により求める。
早めるサイクル数ｓ＝８−ｎ  ・・・（１）
例えば、上記“（ii）リードデータにおいて最後に読めた試験値”がＤ６である場合には、上記式（１）より、
早めるサイクル数ｓ＝８−６
＝２
となる。
【００５２】
一方、上記の“（i）リードデータにおいて最初に読めた試験値”がＤ１でない場合には、リードデータパターンチェック回路１４２は、ライトデータを出すタイミング（遅延ＴＡＰ）を遅らせるように変更する。
具体的には、上記“（i）リードデータにおいて最初に読めた試験値”がＤｎである場合に、変更サイクル数（遅らせるサイクル数）ｓを、例えば以下の式（２）により求める。
【００５３】
遅らせるサイクル数ｓ＝ｎ−１  ・・・（２）
例えば、上記“（i）リードデータにおいて最初に読めた試験値”がＤ３である場合には、
遅らせるサイクル数ｓ＝３−１
＝２
となる。
【００５４】
すなわち、リードデータ処理部１４は、ＤＩＭＭ３０の第２のアドレスから読み出したリードデータにおける、試験値Ｄ１〜Ｄ８やダミー値の読み出し位置に基づいて、調整用データＤＴ１のずれを補正する変更サイクル数ｓを決定する。
なお、リードデータパターンチェック回路１４２における変更サイクル数ｓの算出方法は、上記式（１），（２）を用いるものに限定されるものではなく、種々変形して実施することができる。例えば、他の演算式を用いて求めてもよく、又、予め用意した変換対応規則に従って求めてもよい。
【００５５】
また、リードデータパターンチェック回路１４２は、決定した変更するサイクル数ｓに基づき、遅延ＴＡＰ２１に設定するＴＡＰ遅延値を決定する。
なお、このＴＡＰ遅延値の決定方法は、予め用意した変換対応規則に従って行なう等、既知の種々の手法により実現することができ、その詳細な説明は省略する。
図７（ａ）〜（ｅ）は実施形態の一例としてのメモリシステム１における単発ライトモードにおけるリード処理を説明するシーケンス図である。図７（ａ）はＤＩＭＭ３０におけるＣＬＫ（CLK@DIMM）を例示する図、図７（ｂ）はコマンド処理回路１１から送信されるリードコマンドＣＲを例示する図である。又、図７（ｃ），（ｄ），（ｅ）はそれぞれＤＩＭＭ３０の第２のアドレスＢから読み出されるリードデータを例示する図である。
【００５６】
図７（ｄ）に示す例においては、図４（ｅ）に示された理想状態で格納されたライトデータパターンがリードデータとして読み出された状態を示している。
すなわち、第２のアドレスＢから調整用データＤＴ４の試験値Ｄ０１〜Ｄ０８が欠けることなく完全な状態（理想状態）で読み出され、バッファ１４２１に格納されている。
一方、図７（ｃ）に示す例においては、図４（ｃ）に示された状態で格納されたライトデータパターンが読み出された状態を示している。すなわち、図７（ｃ）に示す例においては、ＤＩＭＭ３０の第２のアドレスＢから試験値Ｄ０３〜Ｄ０８及び不定値Ｘ，Ｘが読み出され、バッファ１４２１に格納されている。
【００５７】
また、図７（ｅ）に示す例においては、図４（ｇ）に示された状態で格納されたライトデータパターンが読み出された状態を示している。すなわち、図７（ｅ）に示す例においては、ＤＩＭＭ３０の第２のアドレスＢから不定値Ｘ，Ｘ及び試験値Ｄ０１〜Ｄ０６が読み出され、バッファ１４２１に格納されている。
リードデータパターンチェック回路１４２は、単発ライトモードにおいては、例えば、バッファ１４２１に格納された、ＤＩＭＭ３０の第２のアドレスＢから読み出されたリードデータが、図７（ｄ）に示すような理想状態で格納されているか否かを確認する。これにより、本メモリシステム１において、ライトレベリングが適正に行なわれているか否かを確認することができる。
【００５８】
ライトレベリング応答処理部１４１は、連続ライトモードにおいて、リードデータパターンチェック回路１４２によって決定されたＴＡＰ遅延値を遅延ＴＡＰ２１に送信することにより、ＤＱＳの出力タイミングを調整する。これにより、リードデータ処理部１４は、ＤＩＭＭ３０の第２のアドレスＢからのテストパターンの読み出し結果に基づいて、ＤＩＭＭ３０に対するデータの書き込みタイミングを調整するタイミング調整部として機能するのである。
【００５９】
上述の如く構成された実施形態の一例としてのメモリシステム１における連続ライトモードにおける処理を、図８に示すフローチャート（ステップＳ１〜Ｓ１０）に従って説明する。
コマンド処理回路１１は、連続ライト機能部１１１により、ＤＩＭＭ３０に対して、ライトコマンドＣＷ１〜ＣＷ３を送信することにより、アドレスＡ，Ｂ，Ｃに対して、ダミーデータＤＴ２，調整用データＤＴ１及びダミーデータＤＴ３を、順次、書き込む（ステップＳ１）。
【００６０】
その後、コマンド処理回路１１は、ＤＩＭＭ３０に対してリードコマンドＣＲを送信することにより、第２のアドレスＢに格納された調整用データＤＴ１を読み出す（ステップＳ２）。
リードデータ処理部１４は、バッファ１４２１のリードデータについて、（i）リードデータにおいて最初に読めた試験値、（ii）リードデータにおいて最後に読めた試験値、及び（iii）試験値が連続しているか、等の情報を収集・分析し、その結果を図示しないメモリ等に保存する（ステップＳ３）。
【００６１】
リードデータ処理部１４は、ステップＳ３において保存された情報において、試験値が連続しているか否かを確認する（ステップＳ４）。この確認の結果、試験値が連続している場合には（ステップＳ４のＹＥＳルート参照）、次に、リードデータにおいて最初に読めた試験値＝Ｄ１、且つ、リードデータにおいて最後に読めた試験値＝Ｄ８であるかを確認する（ステップＳ５）。すなわち、第２のアドレスＢから、図６（ｄ）に例示するような、理想状態で格納されたライトデータパターンがリードデータとして読み出されたか否かを確認する。
【００６２】
この確認の結果、リードデータにおいて最初に読めた試験値＝Ｄ１、且つ、リードデータにおいて最後に読めた試験値＝Ｄ８である場合には（ステップＳ５のＹＥＳルート参照）、正常終了する。
また、この確認の結果、リードデータにおいて最初に読めた試験値＝Ｄ１、且つ、リードデータにおいて最後に読めた試験値＝Ｄ８でない場合には（ステップＳ５のＮＯルート参照）、次に、リードデータにおいて最初に読めた試験値＝Ｄ１であるか否かを確認する（ステップＳ８）。
【００６３】
リードデータにおいて最初に読めた試験値＝Ｄ１である場合には（ステップＳ８のＹＥＳルート参照）、リードデータ処理部１４は、ライトデータを出すタイミング（遅延ＴＡＰ）を早めるように変更する（ステップＳ９）。そしてリードデータ処理部１４は、上述した式（１）に基づき、早めるサイクル数ｓを算出する。
リードデータパターンチェック回路１４２は、算出されたサイクル数ｓに基づき、遅延ＴＡＰ２１に設定するＴＡＰ遅延値を決定し、決定したＴＡＰ遅延値を遅延ＴＡＰ２１に設定し、ステップＳ１に戻る。
【００６４】
一方、リードデータにおいて最初に読めた試験値＝Ｄ１でない場合には（ステップＳ８のＮＯルート参照）、リードデータ処理部１４は、ライトデータを出すタイミング（遅延ＴＡＰ）を遅くするように変更する（ステップＳ１０）。そしてリードデータ処理部１４は、上述した式（２）に基づき、早めるサイクル数ｓを算出する。
リードデータパターンチェック回路１４２は、算出されたサイクル数ｓに基づき、遅延ＴＡＰ２１に設定するＴＡＰ遅延値を決定し、決定したＴＡＰ遅延値を遅延ＴＡＰ２１に設定し、ステップＳ１に戻る。
【００６５】
また、ステップＳ４において、試験値が連続していない場合には（ステップＳ４のＮＯルート参照）、リードデータ処理部１４は、第２のアドレスＢが変更された回数（アドレス変更回数）が、規定回数未満であるか否かを確認する（ステップＳ６）。アドレス変更回数が規定回数未満ではない場合には（ステップＳ６のＮＯルート参照）、エラー終了する。なお、本メモリシステム１においては、遅延ＴＡＰ２１がオーバーフローもしくはアンダーフローした場合もエラー終了する。
【００６６】
一方、アドレス変更回数が規定回数未満である場合には（ステップＳ６のＹＥＳルート参照）、リードデータ処理部１４は、第２のアドレスＢを変更して（ステップＳ７）、ステップＳ１に戻る。これにより、ステップＳ４において、何らかの理由でたまたま試験値の不連続となった場合には、調整用データＤＴ１の書き込み先である第２のアドレスＢを変更した上でリトライすることにより、ライトレベリングのタイミング調整を実現することができ、信頼性が高い。
【００６７】
また、単発ライトモードにおいては、コマンド処理回路１１が、ＤＩＭＭ３０に対してライトコマンドＣＷ４を送信することにより、調整用データＤＴ４をＤＩＭＭ３０の第２のアドレスＢに書き込ませる。
その後、コマンド処理回路１１は、ＤＩＭＭ３０に対してリードコマンドＣＲを送信することにより、第２のアドレスＢに格納された調整用データＤＴ１を読み出す。
【００６８】
そして、リードデー処理部１４が、バッファ１４２１に格納された、ＤＩＭＭ３０の第２のアドレスＢから読み出されたリードデータが、図７（ｄ）に示すような理想状態で格納されているか否かを確認する。これにより、本メモリシステム１において、ライトレベリングが適正なタイミングで行なわれているか否かを確認する。
なお、単発ライトモードでの処理は連続ライトモードに比べてメモリコントローラ１０の付加を軽減することができる。従って、例えば、上述した連続ライトモード等によりライトレベリングのタイミング調整を行なった後に、その確認の用途に用いて好適である。
【００６９】
このように、実施形態の一例としてのメモリシステム１によれば、連続ライトモードにおいて、ＤＩＭＭ３０の第２のアドレスから読み出したリードデータにおける、試験値Ｄ１〜Ｄ８やダミー値の読み出し位置に基づいて、調整用データＤＴ１のずれを補正する変更サイクル数ｓを決定する。
これにより、ライトレベリングにおいて、ライトコマンドに対するサイクルずれを検出し、ライトコマンドに対して正しいＣＬＫのエッジにＤＱＳを合わせることができ、ライトレベリングのサイクルずれを容易に補正することができる。又、ディレイＴＡＰの初期値の計算を行なうことなく、遅延ＴＡＰ２１に対して最適なＴＡＰ遅延値を容易に設定することができる。
【００７０】
また、リードデータ処理部１４が、ＴＡＰ遅延値を算出して遅延ＴＡＰ２１に設定することにより、ＤＱＳのタイミング調整を自律的に行なうことができ、利便性が高い。
また、連続ライトモードにおいては、調査対象のＤＩＭＭ３０の第２のアドレスＢに、不定値が格納されることがなく、利便性が高い。
さらに、ＤＤＩのＩ０マクロ２０のライトレベリングで使用する遅延ＴＡＰ２１を用いることにより、本実施形態の実現に際して、ＩＯマクロ２０側において特段の機能追加を行なう必要がなく、導入コストを低減することができる。又、ＤＦＩのような汎用のＤＤＲインタフェースに対応していなくても実現可能であり、利便性が高い。
【００７１】
また、連続ライトモードと単発ライトモードとで選択的に処理可能に構成され、ライトレベリングのタイミングを確認するだけで良い場合には、単発ライトモードで処理を行なうことで、メモリコントローラ１０の付加を低減することができる。
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
【００７２】
例えば、上述した実施形態においては、メモリコントローラ１０とＩＯマクロ２０とが独立してそなえられているが、これに限定されるものではなく、メモリコントローラ１０にＩＯマクロ２０としての機能をそなえてもよい。
また、上述した実施形態においては、調整用データＤＴ１，ＤＴ４やダミーデータＤＴ２，ＤＴ３が８ビットの例を示しているが、これに限定されるものではなく、７ビット以下もしくは９ビット以上であってもよい。
【００７３】
また、本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【符号の説明】
【００７４】
１    メモリシステム
１０    メモリコントローラ
１１    コマンド処理回路
１２    ＤＱＳ＿ＥＮ発生回路
１３    ライトデータ制御部
１４    リードデータ処理部
２０    ＩＯマクロ
２１    遅延ＴＡＰ
２２    リードデータ調整部
２３    ドライバ
３０    ＤＩＭＭ
４１    コマンド信号線
４２    ＤＱＳ信号線
４３    ＤＱ信号線
１１１    連続ライト機能部
１１２    単発ライト機能部
１３１    ライトデータパターン発生回路
１４１    ライトレベリング応答処理部
１４２    リードデータパターンチェック回路
ＣＷ１，ＣＷ２，ＣＷ３，ＣＷ４，ＣＲ    リードコマンド
【図１】
2012252530.tif 000003
【図２】
2012252530.tif 000004
【図３】
2012252530.tif 000005
【図４】
2012252530.tif 000006
【図５】
2012252530.tif 000007
【図６】
2012252530.tif 000008
【図７】
2012252530.tif 000009
【図８】
2012252530.tif 000010
【図９】
2012252530.tif 000011