(57)【特許請求の範囲】
【請求項１】
ＤＤＲ３メモリインタフェースに対応するメモリモジュールと接続されたメモリコントローラであって、
前記メモリモジュールに含まれるメモリ素子毎に設けられ、該メモリ素子にデータストローブ信号ＤＱＳを出力するＤＱＳ制御部と、
前記メモリモジュールに含まれるメモリ素子毎に設けられ、該メモリ素子に出力される前記データストローブ信号ＤＱＳに同期して、ライトデータの出力とリードデータの受信を行うＤＱ制御部と、
初期化時に行われるライトレベリングの制御を行うライトレベリング制御部とを備え、
前記ＤＱＳ制御部は、前記データストローブ信号ＤＱＳの出力タイミングを、前記ライトレベリング制御部により設定された遅延量の分遅延させるＤＱＳ遅延部を有し、
前記ＤＱ制御部は、ライトデータの出力タイミングとリードデータの受信タイミングを、前記ライトレベリング制御部により設定された遅延量の分遅延させるＤＱ遅延部を有し、
前記ライトレベリング制御部は、ライトレベリング時に、
前記ＤＱＳ遅延部と前記ＤＱ遅延部に対して１クロックサイクル未満の遅延量の調整を行った後に、夫々の前記メモリ素子に対して、期待値データ列のライト後にリードを行って得たリードデータ列と前記期待値データ列とを比較し、比較結果に応じて各前記ＤＱＳ遅延部と前記ＤＱ遅延部に対して、クロックサイクル単位の遅延量の調整を行うものであり、
前記ライト時に、前記ＤＱＳ制御部が規格により定められたバースト長より「２×Ｍ」クロックサイクル長い（Ｍ：１以上の整数）データストローブ信号ＤＱＳを出力し、前記ＤＱ制御部が前記バースト長に合致する個数の前記期待値データ列の前後にＭ個ずつデータを加えて出力するように制御することを特徴とするメモリコントローラ。
【請求項２】
前記ＤＱＳ遅延部は、
１クロックサイクル以上の遅延量の遅延が可能な第１のＤＱＳ遅延部と、
１クロックサイクル未満の遅延量が可能な第２のＤＱＳ遅延部とを有し、
前記ＤＱ遅延部は、
１クロックサイクル以上の遅延量の遅延が可能な第１のＤＱ遅延部と、
１クロックサイクル未満の遅延量が可能な第２のＤＱ遅延部とを有し、
前記ライトレベリング制御部は、
前記第２のＤＱＳ遅延部と前記第２のＤＱ遅延部の遅延量を設定することにより前記１クロックサイクル未満の遅延量の調整を行い、
前記第１のＤＱＳ遅延部と前記第１のＤＱ遅延部の遅延量を設定することにより前記クロックサイクル単位の遅延量の調整を行うことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記第１のＤＱＳ遅延部と前記第１のＤＱ遅延部は、レジスタとセレクタの組合せであり、
前記第２のＤＱＳ遅延部と前記第２のＤＱ遅延部は、ＤＬＬ回路であることを特徴とする請求項２に記載のメモリコントローラ。
【請求項４】
ＤＤＲ３メモリインタフェースに対応するメモリモジュールに含まれるメモリ素子毎に設けられ、該メモリ素子にデータストローブ信号ＤＱＳを出力するＤＱＳ制御部と、前記メモリ素子毎に設けられ、該メモリ素子に出力される前記データストローブ信号ＤＱＳに同期して、ライトデータの出力とリードデータの受信を行うＤＱ制御部に対して、前記データストローブ信号ＤＱＳの出力タイミングの遅延量と、ライトデータの出力タイミング及びリードデータの受信タイミングの遅延量とを、１クロックサイクル未満の範囲内で調整し、
夫々の前記メモリ素子に対して、期待値データ列のライト後にリードを行って得たリードデータ列と前記期待値データ列とを比較し、比較結果に応じて、各前記ＤＱＳ制御部と前記ＤＱ制御部に対して、前記データストローブ信号ＤＱＳの出力タイミングの遅延量と、ライトデータの出力タイミング及びリードデータの受信タイミングの遅延量とを、クロックサイクル単位で調整し、
前記ライト時に、前記ＤＱＳ制御部が規格により定められたバースト長より「２×Ｍ」クロックサイクル長い（Ｍ：１以上の整数）データストローブ信号ＤＱＳを出力し、前記ＤＱ制御部が前記バースト長に合致する個数の前記期待値データ列の前後にＭ個ずつデータを加えて出力するように制御することを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御、より具体的には、ＤＤＲ３メモリインタフェースに対して行うライトレベリングに関する。
【背景技術】
【０００２】
様々な半導体装置において、信号の遅延時間の調整が行われている（特許文献１〜３）。ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）の規格としてＪＥＤＥＣ（Ｊｏｉｎｔ  Ｅｌｅｃｔｒｏｎ  Ｄｅｖｉｃｅ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｃｏｕｎｃｉｌ）により標準化されたＤＤＲ３メモリインタフェース（ＤＤＲ：Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）では、メモリコントローラとＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）との接続にフライバイトポロジが採用されているため、メモリコントローラから、ＤＩＭＭに含まれる複数のメモリ素子に夫々出力されるデータストローブ信号ＤＱＳの遅延時間を調整する所謂ライトレベリングが規定されている（特許文献４）。
【０００３】
図１１は、特許文献４における図１９であり、ＤＤＲ３メモリインタフェースに準拠するメモリコントローラ９０とＤＩＭＭ９１の接続例を模式的に示している。図示のように、メモリコントローラ９０とＤＩＭＭ９１を接続する各信号線のうちに、クロック信号ＣＫ、アドレス信号Ａｄｄおよびコマンド信号ＣＭＤの信号線については、メモリコントローラ９０とＤＩＭＭ９１上のｎ個（ｎ：２以上の自然数）のメモリ素子（ＳＤＲＡＭ：Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９２−１〜９２−ｎとがデイジーチェーンで配線され、データ信号ＤＱおよびデータストローブ信号ＤＱＳの信号線については、メモリコントローラ９０からＤＩＭＭ９１上の複数のＳＤＲＡＭ９２−１〜９２−ｎにそれぞれ配線されている。
【０００４】
以下、ＳＤＲＡＭを示す符号として、複数のＳＤＲＡＭのうち１つを特定する必要があるときは符号９２−１〜９２−ｎを用い、任意のＳＤＲＡＭを指すときには符号９２を用いる。
【０００５】
また、データ信号を示す符号として、複数のデータ信号のうち１つを特定する必要があるときは符号ＤＱ−１〜ＤＱ−ｎを用い、任意のデータ信号を指すときには符号ＤＱを用いる。
【０００６】
同様に、データストローブ信号を示す符号として、複数のデータストローブ信号のうち１つを特定する必要があるときは符号ＤＱＳ−１〜ＤＱＳ−ｎを用い、任意のデータストローブ信号を指すときには符号ＤＱＳを用いる。
【０００７】
クロック信号ＣＫの信号線のデイジーチェーン配線に起因する伝播遅延により、メモリコントローラ９０から出力されたクロック信号ＣＫは、全てのＳＤＲＡＭ９２−１〜９２−ｎに同時刻に到達することができない。例えば、ＪＥＤＥＣの規格では、ＤＩＭＭ９１の外形寸法の長さＬ１が１３３ｍｍと決められており、ＤＩＭＭ９１における長さ方向の一端に配置されたＳＤＲＡＭ９２−１と他端に配置されたＳＤＲＡＭ９２−ｎとでは、データ送信速度が７ｐｓ／ｍｍである場合には、１ｎｓ近い到達時刻差が生じることとなる（７ｐｓ／ｍｍ×１３３ｍｍ＝９３１ｐｓ)。
【０００８】
そのため、ＤＤＲ３メモリインタフェースについて、ＪＥＤＥＣの規格では、ライトレベリングを用いることが規定されている。図１２（特許文献４における図２０）を参照して、ライトレベリングを簡単に説明する。
【０００９】
ライトレベリングとは、メモリコントローラ９０から出力されるデータストローブ信号ＤＱＳでクロック信号ＣＫをサンプリングすることによって、データストローブ信号ＤＱＳとクロック信号ＣＫの位相関係を検出し、データストローブ信号ＤＱＳの遅延時間の調整を行う機能である。この機能は、図１２に示すように、各データストローブ信号ＤＱＳ−１〜ＤＱＳ−ｎの遅延時間を変えることのできる可変遅延回路９３−１〜９３−ｎを、メモリコントローラ９０内に、複数のＳＤＲＡＭ９２−１〜９２−ｎに対応してそれぞれ内蔵することにより実現される。
【００１０】
以下、遅延回路を示す符号として、複数の遅延回路のうち１つを特定する必要があるときは符号９３−１〜９３−ｎを用い、任意の遅延回路を指すときには符号９３を用いる。
【００１１】
具体的には、図示しないＣＰＵ（Ｃｅｎｔｒａｌ  ＰｒｏｃｅｓｓｉｎｇＵｎｉｔ）が、各ＳＤＲＡＭ９２のそれぞれに対して出力されるデータストローブ信号ＤＱＳ−１〜ＤＱＳ−ｎに対して、これらのＳＤＲＡＭ９２−１〜９２−ｎから出力される各データ信号ＤＱ−１〜ＤＱ−ｎに基づいてそれぞれ遅延時間ｔ１−１〜ｔ１−ｎを設定することにより、各データストローブ信号ＤＱＳ−１〜ＤＱＳ−ｎは、ＳＤＲＡＭ９２−１〜９２−ｎのそれぞれに対して、クロック信号ＣＫとほぼ同じ時間に入力するように調整される。
【００１２】
つまり、例えば、ライトレベリングが完了した時点では、遅延回路９３−１〜９３−ｎは、それぞれ、遅延時間ｔ１−１〜ｔ１−ｎだけデータストローブ信号ＤＱＳを遅延させるようになっており、ＳＤＲＡＭ９２−１〜９２−ｎには、データストローブ信号ＤＱＳとクロック信号ＣＫとの位相が揃って入力されるようになっている。
【００１３】
なお、ライトレベリングは、ＤＤＲ３メモリインタフェースを備えるメモリ装置の初期化時に行われる。すなわち、ライトレベリングを含む初期化完了すれば、遅延時間ｔ１−１〜ｔ１−ｎが決まり、各ＳＤＲＡＭには、クロック信号ＣＫとデータストローブ信号ＤＱＳの位相が揃って入力されるようになっている。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２０００−２０６２１２号公報
【特許文献２】特開２００１−２１７６９４号公報
【特許文献３】特開２００９−２８４２６６号公報
【特許文献４】特開２００９−０７５６８２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
データストローブ信号ＤＱＳの遅延を調整する際には、ＤＱＳの遅延時間（上述した遅延時間ｔ１−１〜ｔ１−ｎに該当する）は、通常、ＤＬＬ（Ｄｅｌａｙ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）回路により制御される。この場合、必要な遅延時間が大きくなると、調整幅が大きくなるため、調整の誤差が大きくなってしまうという問題がある。従って、データストローブ信号ＤＱＳの遅延時間の調整幅が１クロックサイクル以下になるように、プリント基板の設計に対して、信号線の配線に制約が設けられていた。
【００１６】
ところで、昨今のメモリ素子の高速化により、上記制約下における実装が困難になりつつあり、１クロックサイクル以上の調整幅を必要とするメモリ装置が現実的に多々存在する。１クロックサイクル以上の遅延時間が必要となった場合には、以下に説明する、初期化時間が長くなってしまう恐れがある。
【００１７】
ライトレベリング時におけるクロック信号ＣＫとデータストローブ信号ＤＱＳの位相関係の検出は、規格により定められたバースト長のデータストローブ信号ＤＱＳに同期して、各メモリ素子に対して、上記バースト長に合致する個数の既知のデータからなる期待値データ列のライト後にリードを行ってリードデータ列を得、該リードデータ列と期待値データ列を比較した結果に基づいて行われるようになっている。
【００１８】
ところで、クロック信号ＣＫとデータストローブ信号ＤＱＳの位相が大きくずれた状態で上記ライトを行うのでは、期待値データ列の先頭の１つ以上のデータ、または末尾の１つ以上のデータの書込みが行われないという状態に陥る可能性がある。この状態は、ＪＥＤＥＣの仕様にないため、当該ＳＤＲＡＭ内の状態が保障されず、確定した状態に復帰させるにはリセット動作を実施する以外には方法がない。そのため、初期化時間が長くなってしまうという問題がある。
【００１９】
本発明は、上記事情を鑑みてなされたものであり、ライトレベリング時において、初期化時間が長くなることを回避できる技術を提供する。
【課題を解決するための手段】
【００２０】
本発明の１つの態様は、メモリ制御方法である。該方法は、下記の手順でライトレベリングを行う。
【００２１】
まず、ＤＤＲ３メモリインタフェースに対応するメモリモジュールに含まれるメモリ素子毎に設けられ、該メモリ素子にデータストローブ信号ＤＱＳを出力するＤＱＳ制御部と、前記メモリ素子毎に設けられ、該メモリ素子に出力される前記データストローブ信号ＤＱＳに同期して、ライトデータの出力とリードデータの受信を行うＤＱ制御部に対して、前記データストローブ信号ＤＱＳの出力タイミングの遅延量と、ライトデータの出力タイミング及びリードデータの受信タイミングの遅延量とを、１クロックサイクル未満の範囲内で調整する。
【００２２】
そして、夫々の前記メモリ素子に対して、期待値データ列のライト後にリードを行って得たリードデータ列と前記期待値データ列とを比較し、比較結果に応じて、各前記ＤＱＳ制御部と前記ＤＱ制御部に対して、前記データストローブ信号ＤＱＳの出力タイミングの遅延量と、ライトデータの出力タイミング及びリードデータの受信タイミングの遅延量とを、クロックサイクル単位で調整する。
【００２３】
なお、前記ライト時に、前記ＤＱＳ制御部が規格により定められたバースト長より「２×Ｍ」クロックサイクル長い（Ｍ：１以上の整数）データストローブ信号ＤＱＳを出力し、前記ＤＱ制御部が前記バースト長に合致する個数の前記期待値データ列の前後にＭ個ずつデータを加えて出力するように制御する。
【００２４】
なお、上記態様の方法を装置やシステムに置き換えて表現したものや、該方法をコンピュータに実行せしめるプログラムなども、本発明の態様としては有効である。
【発明の効果】
【００２５】
本発明にかかる技術によれば、ライトレベリング時において、データストローブ信号ＤＱＳの遅延時間の調整精度を高めると共に、初期化時間が長くなることを回避できる。
【図面の簡単な説明】
【００２６】
【図１】本発明の実施の形態にかかるコンピュータを示す図である。
【図２】図１に示すコンピュータにおける第２の制御部２４０を示す図である。
【図３】図１に示すコンピュータにおけるライトレベリング制御部を示す図である。
【図４】図３に示すライトレベリング制御部におけるテスト動作制御部を示す図である。
【図５】図３に示すライトレベリング制御部によるライトレベリングの流れを示すフローチャートである。
【図６】図５に示すライトレベリングにおけるテスト動作の流れを示すフローチャートである。
【図７】第２の遅延時間の調整を説明するための図である。
【図８】ライトレベリング時においてデータストローブ信号とデータ信号の伸長の意義を説明するための例を示す図である（その１）。
【図９】ライトレベリング時においてデータストローブ信号とデータ信号の伸長の意義を説明するための例を示す図である（その２）。
【図１０】図９に示す例の場合に得られるリードデータ列を示す図である。
【図１１】ＤＤＲ３メモリインタフェースに準拠した接続例を模式的に示す図である。
【図１２】ライトレベリングを説明するための図である。
【発明を実施するための形態】
【００２７】
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００２８】
図１は、本発明の実施の形態にかかる半導体装置たとえばコンピュータ２００を示す。コンピュータ２００は、ＣＰＵ２１０、メモリコントローラ２２０、ＤＩＭＭ２８０を備える。
【００２９】
ＤＩＭＭ２８０は、ｎ個（ｎ：２以上の整数）のＳＤＲＡＭ２８２（ＳＤＲＡＭ２８２−１〜２８２−ｎ）を有する。
【００３０】
以下において、同一の機能を有する複数の機能ブロックを示す符号として、該複数の機能ブロックのうちの任意の１つを指すときには「Ｋ」（Ｋ：数字）のみを用い、該複数の機能ブロックのうちの１つを特定する必要があるときには数字Ｋの後に「−Ｎ」（Ｎ：数字）を付ける。
【００３１】
例えば、ＤＩＭＭ２８０に含まれるＳＤＲＡＭを示す符号として、ＳＤＲＡＭ２８２−１〜２８２−ｎのうち１つを特定する必要があるときは符号「２８２−１」〜「２８２−ｎ」を用い、任意のＳＤＲＡＭを指すときには符号「２８２」のみを用いる。
【００３２】
信号に関しても同様に、同種の複数の信号を示す符号として、該複数の信号のうちの任意の１つを指すときにはＷ（Ｗ：英字）のみを用い、該複数の信号のうちの１つを特定する必要があるときには、英字Ｗの後に「−Ｎ」（Ｎ：数字）を付ける。
【００３３】
例えば、後述するデータストローブ信号を示す符号として、ＤＱＳ−１〜ＤＱＳ−ｎのうちの１つを特定する必要があるときは符号「ＤＱＳ−１」〜「ＤＱＳ−ｎ」を用い、任意のデータストローブ信号を指すときには符号「ＤＱＳ」のみを用いる。
【００３４】
メモリコントローラ２２０は、第１の制御部２３０と、ＳＤＲＡＭ２８２の数分の第２の制御部２４０（第２の制御部２４０−１〜２４０−ｎ）、ライトレベリング制御部２５０を有する。各第２の制御部２４０は、ＤＱＳ制御部２４２とＤＱ制御部２４４を有する。
【００３５】
本実施の形態のコンピュータ２００において、ＤＤＲ３形式のメモリインタフェースが採用されており、そのため、メモリコントローラ２２０とＤＩＭＭ２８を接続する各信号線のうちに、クロック信号ＣＫ、アドレス信号Ａｄｄおよびコマンド信号ＣＭＤの信号線については、メモリコントローラ２２０とＤＩＭＭ２８０上のｎ個のＳＤＲＡＭ２８２とがデイジーチェーンで配線され、データ信号ＤＱおよびデータストローブ信号ＤＱＳの信号線については、メモリコントローラ２２０からＤＩＭＭ２８０上のｎ個のＳＤＲＡＭ２８２にそれぞれ配線されている。
【００３６】
メモリコントローラ２２０は、ＣＰＵ２１０に接続されており、初期化時に、ＣＰＵ２１０からのライトレベリング動作指示により、ＤＩＭＭ２８０に対してライトレベリングを実施する。
【００３７】
メモリコントローラ２２０における第１の制御部２３０は、クロック信号ＣＫ、アドレス信号Ａｄｄ、コマンド信号ＣＭＤをＤＩＭＭ２８０に出力する。これらの信号は、前述したデイジーチェーンで配線された信号線を介して、ＳＤＲＡＭ２８２−１、ＳＤＲＡＭ２８２−２、・・・、ＳＤＲＡＭ２８２−ｎの順に夫々のＳＤＲＡＭ２８２に供される。
【００３８】
ライトレベリング制御部２５０からのライト指示に従って、第２の制御部２４０におけるＤＱＳ制御部２４２は、対応するＳＤＲＡＭ２８２にデータストローブ信号ＤＱＳを出力し、ＤＱ制御部２４４は、ＳＤＲＡＭ２８２にデータ(ＤＱ[０]、・・・ＤＱ[ｎ])を送出する。
【００３９】
図２を参照して第２の制御部２４０を詳細に説明する。図示のように、第２の制御部２４０におけるＤＱＳ制御部２４２は、ＤＱＳ伸長制御部２４２０、第１の遅延制御部２４２２、第２の遅延制御部２４２４を有し、ＤＱ制御部２４４は、ＤＱ伸長制御部２４４０、第１の遅延制御部２４４２、第２の遅延制御部２４４４を有する。第１の遅延制御部２４２２と第２の遅延制御部２４２４は、ＤＱＳ遅延部を構成し、第１の遅延制御部２４４２と第２の遅延制御部２４４４は、ＤＱ遅延部を構成する。
【００４０】
まず、ＤＱＳ制御部２４２の各機能ブロックを説明する。
ＤＱＳ伸長制御部２４２０は、ライトレベリング制御部２５０からの指示に従ってＤＱＳの発行個数を増やす制御を行う。
【００４１】
第１の遅延制御部２４２２は、レジスタとセレクタの組合せにより構成され、ＤＱＳをクロックサイクル単位で遅延させることが可能である。
【００４２】
第２の遅延制御部２４２４は、ＤＬＬにより構成され、１クロックサイクル未満の範囲内に、必要に応じた粒度（例えば、１/１６クロックサイクル）でＤＱＳの遅延時間を調整するこができる。
【００４３】
第１の遅延制御部２４２２と第２の遅延制御部２４２４による遅延時間の総和は、ＤＱＳの遅延時間となる。
【００４４】
次にＤＱ制御部２４４の各機能ブロックを説明する。
ＤＱ伸長制御部２４４０は、ライトレベリング制御部２５０からの指示に従ってＤＱの発行個数を増やす制御を行う。
【００４５】
第１の遅延制御部２４４２は、レジスタとセレクタの組合せにより構成され、ＤＱをクロックサイクル単位で遅延させることが可能である。
【００４６】
第２の遅延制御部２４４４は、ＤＬＬにより構成され、１クロックサイクル未満の範囲内に、必要に応じた粒度（例えば、１/１６クロックサイクル）でＤＱの遅延時間を調整するこができる。
【００４７】
第１の遅延制御部２４４２と第２の遅延制御部２４４４による遅延時間の総和は、ＤＱの遅延時間となる。
【００４８】
図３を参照して、ライトレベリング制御部２５０を説明する。ライトレベリング制御部２５０は、シーケンス制御部２５２、伸長指示部２５４、テスト動作制御部２５６を有する。
【００４９】
シーケンス制御部２５２は、ＣＰＵ２１０からのライトレベリング動作指示に応じて、ライトレベリングの開始、及びライトレベリングによるＤＱＳ、ＤＱ[０]、・・・ＤＱ［ｎ］の遅延時間の調整を制御する。この調整は、ＤＱＳに関しては、ＤＱＳ制御部２４２における第１の遅延制御部２４２２と第２の遅延制御部２４２４によって２段階になされ、ＤＱに関しては、ＤＱ制御部２４４における第１の遅延制御部２４４２と第２の遅延制御部２４４４によって２段階になされる。
【００５０】
なお、シーケンス制御部２５２は、第１の制御部２３０にライトレベリング指示を出力し、第２の制御部２４０のＤＱＳ制御部２４２における第１の遅延制御部２４２２及び第２の遅延制御部２４２４と、ＤＱ制御部２４４における第１の遅延制御部２４４２と第２の遅延制御部２４４４に遅延量指示を出力すると共に、ＤＱＳ制御部２４２におけるＤＱＳ伸長制御部２４２０と、ＤＱ制御部２４４におけるＤＱ伸長制御部２４４０への伸長指示を伸長指示部２５４に出力させ、テスト動作制御部２５６にテスト動作指示を出力することにより上記制御を実現する。
【００５１】
伸長指示部２５４は、シーケンス制御部２５２からの制御に従って、データストローブ信号ＤＱＳとデータ信号ＤＱを伸長する指示（伸長指示）を第２の制御部２４０におけるＤＱＳ制御部２４２のＤＱＳ伸長制御部２４２０と、ＤＱ制御部２４４のＤＱＳ伸長制御部２４２０に出力する。
【００５２】
テスト動作制御部２５６は、シーケンス制御部２５２からのテスト動作指示に応じて、第１の制御部２３０と第２の制御部２４０にライトリクエストを出力する処理と、第１の制御部２３０にリードリクエストを出力する処理と、リプライデータ（後述する）と期待値とを比較する処理を行う。図４を参照して、テスト動作制御部２５６を詳細に説明する。
【００５３】
テスト動作制御部２５６は、テストシーケンス制御部２６２、ライト命令発行制御部２６４、リード命令発行制御部２６６、比較部２６８を備える。
【００５４】
テストシーケンス制御部２６２は、ライトレベリング制御部２５０からのテスト動作指示に応じて、ライト命令発行制御部２６４、リード命令発行制御部２６６、比較部２６８を制御して、ＤＩＭＭ２８０へのデータのリード／ライト、及びリプライデータと期待値の比較を行わせる。
【００５５】
ライト命令発行制御部２６４は、テストシーケンス制御部２６２からの指示に従ってＤＩＭＭ２８０に対してライトリクエストを発行する。
【００５６】
リード命令発行制御部２６６は、テストシーケンス制御部２６２からの指示に従って、ＤＩＭＭ２８０に対してリードリクエストを発行する。
【００５７】
比較部２６８は、上記リードリクエストに応じてＤＩＭＭ２８０から出力されたデータ（リプライデータ）を受信し、該リプライデータと期待値との比較を行う共に、比較結果をテストシーケンス制御部２６２に通知する。
【００５８】
次に、図１に示すコンピュータ２００におけるライトレベリングの流れを説明する。ＣＰＵ２１０から発行されたライトレベリング動作指示は、メモリコントローラ２２０のライトレベリング制御部２５０内のシーケンス制御部２５２で受信される。
【００５９】
ライトシーケンス制御部２５２は、ライトレベリング動作指示の受信によりライトレベリング動作を開始する。ライトレベリング動作における遅延時間の調整は、２段階で実施される。図５と図６のフローチャートを参照して説明する。
【００６０】
図５に示すように、まず、ステップＳ１００において、ＤＱＳ制御部２４２における第２の遅延制御部２４２４と、ＤＱ制御部２４４における第２の遅延制御部２４４４は、１クロックサイクル未満の範囲内で、遅延時間の調整を実施する。以下、第２の遅延制御部２４２４と第２の遅延制御部２４４４の遅延時間を「第２の遅延時間」という。このステップ調整により、各ＳＤＲＡＭ２８２は、該ＳＤＲＡＭ２８２に分配されているクロックとＤＱＳ/ＤＱ[０]、・・・ＤＱ[ｎ]間の調整が実施されたことになる。
【００６１】
なお、このステップの調整は、クロック信号ＣＬＫを基準にしたＤＱＳの調整であり、ＤＩＭＭのスペック上で規定されているライトレベリング動作である。
【００６２】
しかし、該ステップにおける調整時間は、最大でも１クロックサイクル未満となっているため、調整後のクロックエッジが夫々のＳＤＲＡＭ２８２間でずれている可能性がある。
【００６３】
次に、ＳＤＲＡＭ２８２間のクロックエッジのずれを検出するためのテスト動作が起動される（Ｓ１０２）。具体的には、ライトレベリング制御部２５０は、ステップＳ１００の処理の完了後、テスト動作制御部２５６に対して、テスト動作指示を発行する。テスト動作制御部２５６は、シーケンス制御部２５２からのテスト動作指示に応じて、テスト動作を実施する。
【００６４】
図６は、テスト動作のフローチャートを示す。まず、テスト動作制御部２５６は、ライトリクエストをＤＩＭＭ２８０へ発行して複数の既知のデータからなる期待値データ列の書込みを実施する（Ｓ１１０）。
【００６５】
ライトリクエストの発行は、テストシーケンス制御部２６２からライト命令発行制御部２６４へライト命令発行指示を送出することで実施される。しかし、この時点でライトリクエストを発行すると、ＳＤＲＡＭ２８２間のクロックエッジのずれにより、ＳＤＲＡＭ２８２によっては、期待値データ列の先頭の１つ以上のデータ、または末尾の１つ以上のデータの書込みができず、当該ＳＤＲＡＭ２８２のリセットが必要になる状態に陥る可能性がある。
【００６６】
この状態を回避するために、ライトレベリング制御部２５０は、該ステップにおいて、さらに、第２の制御部２４０−１、・・・２４０−ｎに対して、伸長指示を送出する。
【００６７】
第２の制御部２４０−１、２４０−ｎのＤＱＳ制御部２４２内のＤＱＳ伸長制御部２４２０は、伸長指示に応じて、規定のバースト長より「２×Ｍ」クロックサイクル長い（Ｍ：１以上の整数）データストローブ信号ＤＱＳをＤＩＭＭ２８０へ発行する。
【００６８】
また、ＤＱ制御部２４４内のＤＱ伸長制御部２４４０は、伸長指示に応じて、規定のバースト長に合致する個数の上記期待値データ列の前後にＭ個ずつデータを加えて、ＤＩＭＭ２８０へ発行する。
【００６９】
次に、テストシーケンス制御部２６２は、ステップＳ１１０で書き込んだデータを読み出すためのリードリクエストをＤＩＭＭ２８０に対して発行する（Ｓ１１２）。
【００７０】
リードリクエストの発行は、テストシーケンス制御部２６２からリード命令発行制御部２６６へリード命令発行指示を送出することにより実施される。
【００７１】
リードリクエストに応じて、ＤＩＭＭ２８０からリプライデータ（リードデータ列）は出力される。比較部２６８は、このリプライデータを受信して、期待値データ列との比較を実施すると共に、比較結果をテストシーケンス制御部２６２へ送出する（Ｓ１１４）。この比較の結果は、さらにテストシーケンス制御部２６２からシーケンス制御部２５２に出力される。
【００７２】
図５に戻って説明する。シーケンス制御部２５２は、比較部２６８により得られた比較結果に基づいて、ＤＱＳ制御部２４２における第１の遅延制御部２４２２と、ＤＱ制御部２４４における第１の遅延制御部２４４２の遅延量を設定し、該遅延値を示す遅延量指示を第２の制御部２４０−１、２４０−２、・・・、２４０−ｎへ送出する。なお、このステップでシーケンス制御部２５２が設定した遅延値を以下「第１の遅延時間」という。また、この第１の遅延時間は、クロックサイクルの整数倍（０倍を含む）である。
【００７３】
夫々の第１の遅延制御部２４２２と第１の遅延制御部２４４２は、テストシーケンス制御部２６２により設定された第１の遅延時間の分遅延時間を調整する。これにて、ライトレベリングが完了する。
【００７４】
具体例を参照して、コンピュータ２００におけるライトレベリングをより詳細に説明する。
【００７５】
前述したように、本実施の形態のコンピュータ２００において、ライトレベリングにおける遅延時間の調整は、２段階に分けられて実施される。まず、図５のフローチャートにおけるステップＳ１００が示す第１の段階の調整として、夫々の第２の遅延制御部２４２４と第２の遅延制御部２４４４により、１クロックサイクル以内の遅延時間（第２の遅延時間）の調整が行われる。
【００７６】
例えば、図７に示す例のように、ＳＤＲＡＭ２８２−１については、クロック信号のＴ１エッジを合わせるために第２の遅延時間の調整量Ａ２−１、ＳＤＲＡＭ２８２−２については、クロック信号のＴ１エッジを合わせるために第２の遅延時間の調整量Ａ２−２で調整する。また、ＳＤＲＡＭ２８２−ｎについては、クロック信号のＴ０エッジを合わせるために、第２の遅延時間の調整量Ａ２−ｎで調整する。なお、ＡＤＤ/ＣＭＤについては、クロック信号のＴ１エッジに合わせたとする。
【００７７】
次に、図６に示すテスト動作が実施される。前述したように、テスト動作において、まず、ライトリクエストによりＤＩＭＭ２８０へ期待値の書き込みが実施される。上述した第２の遅延時間の調整後にも、ＳＤＲＡＭ２８２間でＣＬＫエッジがずれている場合に、通常の仕様通りのライトリクエストを発行すると、ＳＤＲＡＭ２８２−ｎに関しては、ＡＤＤ/ＣＭＤが同期しているＴ１エッジより１周期（１Ｔ）早いＴ０エッジで期待値が到着してしまうため、図８に示す仕様違反の状態になってしまう。これについて、図８を参照して具体的に説明する。なお、図８及び以降の図面において、「ＡＣＴ」と「ＷＲＡ」は、ＪＥＤＥＣのＤＤＲ３の仕様で規定されたものと同じ意味であり、夫々、「Ａｃｔｉｖａｔｅ」命令と「Ｗｒｉｔｅ＋ＡｕｔｏＰｒｅｃｈａｒｇｅ」命令のニーモニック表現である。また、「ＷＬ」（Ｗｒｉｔｅ  Ｌａｔｅｎｃｙ）も、ＪＥＤＥＣのＤＤＲ３の仕様で規定されたものと同じ意味であり、ライト命令におけるデータ出力タイミングを示す。
【００７８】
図８に示すように、ＳＤＲＡＭ２８２−１とＳＤＲＡＭ２８２−２に関しては、ＡＤＤ/ＣＭＤとライトデータの関係が合致しているため、通常のバースト長のＤＱＳと、通常のバースト長に合致した個数のデータを有する期待値データ列を発行しても、当該ＳＤＲＡＭ２８２をリセットする必要な状態に陥ることがない。
【００７９】
しかし、ＳＤＲＡＭ２８２−ｎに関しては、ＤＱＳ/ＤＱ[０]、・・・ＤＱ[ｎ]は、ＣＬＫのＴ０エッジに同期しているため、ＡＤＤ/ＣＭＤに対して１Ｔ早くＳＤＲＡＭ２８２−ｎに到着することになる。そのため、データの最後が切れてしまい、ｐｏｓｔａｍｂｌｅが不正として、リセットを実施する以外、復帰の方法がない。
【００８０】
ＤＱＳとＤＱの伸長は、この状態を回避するための処理である。前述したように、ライトレベリング制御部２５０からの伸長指示に従って、第２の制御部２４０−１、・・・、２４０−ｎのＤＱＳ制御部２４２におけるＤＱＳ伸長制御部２４２０は、ＤＱＳを「２×Ｍ」サイクル分伸長してＤＩＭＭ２８０へ発行する。同様に、ＤＱ制御部２４４内のＤＱ伸長制御部２４４０も、ＤＱを前後共にＭサイクル分伸長して、ＤＩＭＭ２８０へ発行する。
【００８１】
例えば、ＤＱＳ/ＤＱ[０]、・・・、ＤＱ[ｎ]は、２サイクル分伸長して発行される（Ｍ＝２）。具体的には、前後２Ｔ分余分にＤＱＳが送出され、これに合わせて、１６バースト分（８ブロック連続）のデータがＤＩＭＭ２８０に送出される。
【００８２】
この場合、図９に示すように、ＤＱＳ/ＤＱ[０]、・・・、ＤＱ[ｎ]は、本来の出力位置（バースト８）に対して前後２Ｔ間伸長している。そのため、ＳＤＲＡＭ２８２−ｎも仕様違反の状態に陥ることがない。そのため、ＳＤＲＡＭが不定状態になることもなく、ＳＤＲＡＭのリセット動作が不要となる。なお、この場合、ＳＤＲＡＭ２８２−１、ＳＤＲＡＭ２８２−２には、データ４、５、６、７、８、９、Ａ、Ｂが書き込まれ、ＳＤＲＡＭ２８２−ｎにはデータ６、７、８、９、Ａ、Ｂ、Ｃ、Ｄが書き込まれることになる。
【００８３】
その後、リードリクエストに応じて各ＳＤＲＡＭ２８２からリプライデータが比較部２６８に送信され、期待値（４、５、６、７、８、９、Ａ、Ｂ）と比較される。図９に示す例の場合、図１０に示すようにリプライデータが返送されるため、ＳＤＲＡＭ２８２−１、２８２−２に関して期待値と一致、ＳＤＲＡＭ２８２−ｎに関しては、期待値に対して２つ前にずれたことになる。これにより比較部２６８は、テストシーケンス制御部２６２に対して、ＳＤＲＡＭ２８２−１、２８２−２に関しては例えば「０」（一致）、ＳＤＲＡＭ２８２−ｎに関しては「−１」（１Ｔ早く）を示す比較結果を返却し、テストシーケンス制御部２６２は、各比較結果をさらにシーケンス制御部２５２に出力する。
【００８４】
シーケンス制御部２５２は、これらの比較結果に基づいて、各第１の遅延時間の調整量を決定して、夫々の遅延量を示す遅延量指示を当該第１の遅延制御部２４２２と第１の遅延制御部２４４２に出力する。図１０に示す比較結果の場合、ＳＤＲＡＭ２８２−１及びＳＤＲＡＭ２８２−２に対応する第１の遅延制御部２４２２と第１の遅延制御部２４４２に対して、「遅延時間なし」を示す「０」となる遅延量指示が出力され、ＳＤＲＡＭ２８２−ｎに対応する第１の遅延制御部２４２２と第１の遅延制御部２４４２に対して、「遅延時間を−１クロックサイクル調整」を示す「−１」となる遅延量指示が出力される。
【００８５】
各第１の遅延制御部２４２２と第１の遅延制御部２４４２は、受信した遅延量指示に示す分の遅延時間を設定する。これにより、ＳＤＲＡＭ２８２−ｎについても、ＡＤＤ/ＣＭＤとＤＱＳ/ＤＱのずれが解消される。
【００８６】
このように、本実施の形態のコンピュータ２００において、初期化時に行うライトレベリングに際して、期待値データ列のライト時に、データストローブ信号ＤＱＳを規格により定められたバースト長より「２×Ｍ」サイクル分長く伸長すると共に、上記期待値データ列の前後にＭ個ずつのデータを加えて出力する。そのため、データストローブ信号ＤＱＳとクロック信号ＣＫのエッジがずれているＳＤＲＡＭ２８２の場合でも、ライトするデータの欠落に起因して該ＳＤＲＡＭ２８２をリセットせざるをえない状態を回避し、ひいては初期化時間が長くなることを回避することができる。
【００８７】
また、コンピュータ２００において、データストローブ信号ＤＱＳとデータ信号ＤＱに対して、まず、ＤＬＬ回路である第２の遅延制御部２４２４と第２の遅延制御部２４４４により１サイクル未満の範囲内の微調整をし、その後、レジスタとセレクタの組合せからなる第１の遅延制御部２４２２と第１の遅延制御部２４４２によりサイクル単位の粗調整を行うことにより、クロック信号ＣＫとデータストローブ信号ＤＱＳのずれが大きいメモリ装置の場合においても、データストローブ信号ＤＱＳの遅延時間の調整を精度よく行うことができる。
【００８８】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述実施の形態に対して、さまざまな変更、増減を加えてもよい。これらの変更、増減が加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
【００８９】
例えば、上述した実施の形態のコンピュータ２００では、データストローブ信号ＤＱＳとデータ信号ＤＱの夫々に対して、調整精度を高めるために、調整粒度が異なる２つの遅延回路により遅延を実現しているが、１つの遅延回路により２段階の遅延を実現するようにしてもよい。この場合、コンピュータ２００と比べ、調整の精度が劣るものの、初期化時間が長くなることを回避できる効果は、同様に得ることができる。
【符号の説明】
【００９０】
９０  メモリコントローラ  ９１  ＤＩＭＭ
９２  ＳＤＲＡＭ  ９３  遅延回路
２００  コンピュータ  ２１０  ＣＰＵ
２２０  メモリコントローラ  ２３０  第１の制御部
２４０  第２の制御部  ２４２  ＤＱＳ制御部
２４２０  ＤＱＳ伸長制御部  ２４２２  第１の遅延制御部
２４２４  第２の遅延制御部  ２４４  ＤＱ制御部
２４４０  ＤＱ伸長制御部  ２４４２  第１の遅延制御部
２４４４  第２の遅延制御部  ２５０  ライトレベリング制御部
２５２  シーケンス制御部  ２５４  伸長指示部
２５６  テスト動作制御部  ２６２  テストシーケンス制御部
２６４  ライト命令発行制御部  ２６６  リード命令発行制御部
２６８  比較部  ２８０  ＤＩＭＭ
２８２  ＳＤＲＡＭ    Ａｄｄ  アドレス信号
ＣＫ  クロック信号  ＣＭＤ  コマンド信号
ＤＱ  データ信号  ＤＱＳ  データストローブ信号
【図１】
0005807952.tif 000002
【図２】
0005807952.tif 000003
【図３】
0005807952.tif 000004
【図４】
0005807952.tif 000005
【図５】
0005807952.tif 000006
【図６】
0005807952.tif 000007
【図７】
0005807952.tif 000008
【図８】
0005807952.tif 000009
【図９】
0005807952.tif 000010
【図１０】
0005807952.tif 000011
【図１１】
0005807952.tif 000012
【図１２】
0005807952.tif 000013