(57)【要約】【課題】ＤＤＲ３ＳＤＲＡＭなどにおいて、ライトレベリングの実施時間を短縮する。【解決手段】メモリモジュール（ＤＩＭＭ）２０は複数のメモリチップで構成されている。メモリコントローラ１０は、このメモリモジュールと、クロック信号はメモリモジュール内の複数のメモリチップとディジーチェーンで接続され、データストローブ信号線はメモリモジュール内の複数のメモリチップと個別に接続されている。ここで、ライトレベリング制御部１２１は、メモリモジュール内の各メモリチップについて、所定の遅延時間をライトレベリングのデフォルト遅延値として、あらかじめクロック信号の出力タイミングからデータストローブ信号の出力タイミングをデフォルト遅延値だけ遅延してライトレベリングを開始するようにする。【選択図】図４
2014102741.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリチップからなるメモリモジュールと、クロック信号線は前記メモリモジュール内の複数のメモリチップとディジーチェーンで接続され、データストローブ信号線は前記メモリモジュール内の複数のメモリチップと個別に接続されてなるメモリコントローラであって、
前記メモリモジュール内の各メモリチップについて、クロック信号とデータストローブ信号との間の伝播時間のズレを補正するためのライトレベリング制御手段を有し、
前記ライトレベリング制御手段は、前記メモリモジュール内の各メモリチップについて、所定の遅延時間をライトレベリングのデフォルト遅延値として、あらかじめクロック信号の出力タイミングからデータストローブ信号の出力タイミングを前記デフォルト遅延値だけ遅延してライトレベリングを開始することを特徴とするメモリコントローラ。
【請求項２】
前記デフォルト遅延値は、前回のライトレベリングで得られたデータストローブ信号の出力タイミング遅延値とすることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記デフォルト遅延値は、事前にシミュレーションを実施して算出されたデータストローブ信号の出力タイミング遅延値とすることを特徴とする請求項１に記載のメモリコントローラ。
【請求項４】
メモリモジュールの温度を検出する温度検出手段を更に有し、前記ライトレベリング制御手段は、前記温度に応じて前記デフォルト遅延値を補正することを特徴とする請求項１乃至３のいずれか１項に記載のメモリコントローラ。
【請求項５】
出力ドライバのインピーダンスを調整するＺＱキャリブレーション制御手段を更に有し、前記ＺＱキャリブレーション制御手段は温度検出用抵抗を備え、
前記ＺＱキャリブレーション制御手段が前記温度検出手段として前記温度検出を抵抗を利用してメモリモジュールの温度を検出することを特徴とする請求項４に記載のメモリコントローラ。
【請求項６】
前記ＺＱキャリブレーン制御手段は、ＺＱキャリブレーションを実施した後に前記温度検出手段として前記温度検出用抵抗を利用してメモリモジュールの温度を検出することを特徴とする請求項５に記載のメモリコントローラ。
【請求項７】
複数のメモリチップからなるメモリモジュールと、クロック信号線は前記メモリモジュール内の複数のメモリチップとディジーチェーンで接続され、データストローブ信号線は前記メモリモジュール内の複数のメモリチップと個別に接続されてなるメモリコントローラにおいて、前記メモリモジュール内の各メモリチップについて、クロック信号とデータストローブ信号との間の伝播時間のズレを補正するためのライトレベリング制御方法であって、
前記メモリモジュール内の各メモリチップについて、所定の遅延時間をライトレベリングのデフォルト遅延値として、あらかじめクロック信号の出力タイミングからデータストローブ信号の出力タイミングを前記デフォルト遅延値だけ遅延してライトレベリングを開始することを特徴とするメモリコントローラのライトレベリング制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＤＲ３−ＳＤＡＲＭに代表されるメモリのメモリコントローラにおけるライトレベリング制御技術に関する。
【背景技術】
【０００２】
ＤＤＲ３−ＳＤＲＡＭ（以下、ＤＤＲ３メモリ）では、メモリコントローラとＤＩＭＭ（以下、メモリモジュール）内の複数のＳＤＲＡＭ（以下、メモリチップ）との間で、クロック信号線及びコマンド／アドレス信号線をディジーチェーンで接続するフライバイ（Fly-by）トポロジを採用している。一方、データ信号線及びデータストローブ信号線は、メモリコントローラとメモリモジュール内の複数のメモリチップとの間でそれぞれ個別に接続される。このため、メモリモジュール内の各メモリチップにおいてクロック信号とデータストローブ信号の間に伝播時間（Flight  time）のズレが生じる。そこで、ＤＤＲ３メモリでは、この伝播時間のズレを補正するためにライトレベリング機能が備えられている（例えば、非特許文献１参照）。
【０００３】
ライトレベリング機能は、メモリチップがメモリコントローラから出力されるデータストローブ信号の立上りエッジでクロック信号をサンプリングし、その結果をデータ端子から出力することで、メモリコントローラがデータストローブ信号とクロック信号の位相関係を検出し、データストローブ信号の出力タイミングを調整する機能である。
【０００４】
ところで、ライトレベリングの制御では、メモリコントローラは、メモリチップ側でクロック信号とデータストローブ信号の位相が揃うまで、データストローブ信号の出力タイミングを徐々に変更していく。そして、このライトレベリングの制御は、メモリモジュール内の複数のメモリチップについて、各メモリチップ毎に順次実施される。このため、メモリチップの数が多くなればなるほど、ライトレベリングの実施に時間がかかり、また、メモリコントローラからのクロック信号線の配線が遠いメモリチップほど、ライトレベリングの実施に時間がかかる。
【０００５】
しかし、従来のライトレベリング機能では、ライトレベリングの実施に時間がかかることについて考慮されていなかった。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の課題は、ＤＤＫ３−ＳＤＲＡＭ（ＤＤＲ３メモリ）に代表されるメモリについて、ライトレベリングの実施時間を短縮することにある。
【課題を解決するための手段】
【０００７】
本発明は、複数のメモリチップからなるメモリモジュールと、クロック信号線は前記メモリモジュール内の複数のメモリチップとディジーチェーンで接続され、データストローブ信号線は前記メモリモジュール内の複数のメモリチップと個別に接続されてなるメモリコントローラであって、
前記メモリモジュール内の各メモリチップについて、クロック信号とデータストローブ信号との間の伝播時間のズレを補正するためのライトレベリング制御手段を有し、
前記ライトレベリング制御手段は、前記メモリモジュール内の各メモリチップについて、所定の遅延時間をライトレベリングのデフォルト遅延値として、あらかじめクロック信号の出力タイミングからデータストローブ信号の出力タイミングを前記デフォルト遅延値だけ遅延してライトレベリングを開始することを主要な特徴とする。
【発明の効果】
【０００８】
本発明によれば、ＤＤＲ３メモリなどにおいて、ライトレベリングの実施時間を大幅に短縮することができ、起動時間や通常動作への復帰時間が大幅に短縮される。
【図面の簡単な説明】
【０００９】
【図１】ＤＤＲメモリのメモリコントローラとメモリモジュールの接続を示した図である。
【図２】従来のライトレベリング制御の概念図である。
【図３】本発明のライトレベリング制御の概念図である。
【図４】本発明の一実施形態に係るメモリコントローラの機能ブロック図である。
【図５】図４のライトレベリング制御部の実施例１に係る処理フローを説明する図である。
【図６】図４のライトレベリング制御部の実施例２に係る処理フローを説明する図である。
【図７】図４のＺＱキャリブレーション制御部の一実施例の構成図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して本発明の実施の形態について説明する。なお、以下ではＤＤＲ３メモリを例にするが、本発明はＤＤＲ３メモリに限定されるものではない。
【００１１】
図１は、ＤＤＲ３メモリのメモリコントローラとメモリモジュールの接続を示した図である。図１において、１０はメモリコントローラ、２０はメモリモジュール（ＤＩＭＭ）であり、メモリモジュール２０は複数のメモリチップ（ＳＤＲＡＭ）２１−１〜２１−ｎを有している。３０はクロック信号（ＣＬＫ）、コマンド信号（ＣＭＤ）及びアドレス信号（ＡＤＤ）の信号線、４０−１〜４０−ｎはデータ信号（ＤＱ）及びデータストローブ信号（ＤＱＳ）の信号線である。なお、Ｒttは信号線３０の終端抵抗である。
【００１２】
図１に示すように、ＣＬＫ／ＣＭＤ／ＡＤＤの信号線３０は、メモリコントローラ１０とメモリモジュール２０内の複数のメモリチップ２１−１〜２１−ｎとの間でディジーチェーンで接続されている。一方、ＤＱ／ＤＱＳの信号線４０−１〜４０−ｎは、メモリコントローラ１０とメモリモジュール２０内の複数のメモリチップ２１−１〜２１−ｎとの間でそれぞれ個別に接続されている。
【００１３】
このような構成のため、メモリモジュール２０内の複数のメモリチップ２１−１〜２１−ｎでは、クロック信号とデータストローブ信号の間に伝播時間のズレ（位相差）が生じる。そして、このクロック信号とデータストローブ信号の伝播時間のズレは、メモリチップ２１−１〜２１−ｎでそれぞれ異なる。
【００１４】
メモリモジュール２０内のメモリチップ２１−１〜２１−ｎでは、基本的にクロック信号とデータストローブ信号とに同期してデータのリード・ライトが行われる。したがって、これらメモリチップ２１−１〜２１−ｎについて、それぞれクロック信号とデータストローブ信号の伝播時間のズレ（位相差）を補正する必要がある。
【００１５】
このメモリモジュール２０内のメモリチップ２１−１〜２１−ｎについて、クロック信号とデータストローブ信号の伝播時間のズレ（位相差）を補正する機能がライトレベリング機能である。
【００１６】
メモリコントローラ１０は、システム起動時やシステム起動後の動作中に周期的にライトレベリング制御を実施して、メモリモジュール２０内のメモリチップ２１−１〜２１−ｎについて、それぞれクロック信号のタイミングに合うようにデータストローブ信号のタイミングを調整する。
【００１７】
図２は、従来のライトレベリング制御の概念図である。ここで、ソース（Source）はメモリコントローラを意味し、デスティネーション（Destination）はメモリチップ（ＳＤＲＡＭ）を意味する。
【００１８】
図２（ａ）及び（ｂ）は、ライトレベリング開始時におけるメモリコントローラ１０とメモリチップ２１−ｉ（ｉ＝１，２，…，ｎ）の動作を示している。ライトレベリングモードに移行すると、メモリコントローラ１０は、クロック信号（ＣＬＫ）に同期してデータストローブ信号（ＤＱＳ）を出力する（図２（ａ））。メモリチップ２１−ｉは、メモリコントローラ１０から出力されるデータストローブ信号（ＤＱＳ）の立上りエッジでクロック信号（ＣＬＫ）をサンプリングし、その結果をデータ信号（ＤＱ）として出力する（図２（ｂ））。データ信号（ＤＱ）は、クロック信号（ＣＬＫ）に対して、データストローブ信号（ＤＱＳ）が進んでいれば“０”を示し、遅れていれば“１”を示す。
【００１９】
メモリコントローラ１０は、データ信号（ＤＱ）が“０”であれば、再度、データストローブ信号（ＤＱＳ）を出力するが、その出力タイミングを前回よりも一定時間（Δｔ）遅らせる。メモリチップ２１−ｉは、このデータストローブ信号（ＤＱＳ）の立上りエッジでクロック信号（ＣＬＫ）をサンプリングし、再びその結果をデータ信号（ＤＱ）として出力する。
【００２０】
以後、メモリコントローラ１０は、メモリチップ２１−ｉからのデータ信号（ＤＱ）が“０”を示す間、すなわち、クロック信号（ＣＬＫ）に対して、データストローブ信号（ＤＱＳ）が進んでいる間、データストローブ信号（ＤＱＳ）の出力タイミングを一定時間（Δｔ）ずつ徐々に遅らせて、該データストローブ信号（ＤＱＳ）を繰り返し出力する。メモリチップ２１−ｉは、メモリコントローラ１０からデータストローブ信号（ＤＱＳ）を受け取る毎に、該データストローブ信号（ＤＱＳ）の立上りエッジでクロック信号（ＣＬＫ）をサンプリングし、その結果をデータ信号（ＤＱ）として出力する。
【００２１】
図２（ｃ）及び（ｄ）は、ライトレベリング終了時におけるメモリコントローラ１０とメモリチップ２１−ｉの動作を示している。ライトレベリング制御を繰り返し、メモリチップ２１−ｉにおいて、クロック信号（ＣＬＫ）とデータストローブ信号（ＤＱＳ）の位相がほぼ一致した段階で、データ信号（ＤＱ）は“０”から“１”に変化する。なお、図２（ｃ）において、Ｔはメモリコントローラ１０からのクロック信号（ＣＬＫ）がメモリチップ２１−ｉに到達する時間（伝播時間）にほぼ対応する。
【００２２】
メモリコントローラ１０は、メモリチップ２１−ｉからのデータ信号（ＤＱ）が“０”から“１”に変化した段階で、当該メモリチップ２１−ｉに対するライトレベリング制御を終了とする。そして、メモリコントローラ１０は、その時のデータストローブ信号（ＤＱＳ）の遅延時間Ｔを取得して、これをメモリチップ２１−ｉに対するデータストローブ信号の出力タイミング遅延値とする。
【００２３】
メモリコントローラ１０は、メモリモジュール２０内のメモリチップ２１−１〜２１−ｎについて順次、上記ライトレベリング動作を実施する。
【００２４】
この従来のライトレベリング制御の場合、メモリコントローラ１０からのクロック信号線の配線が遠いメモリチップほど、換言すれば、メモリコントローラ１０からのクロック信号（ＣＬＫ）の到達時間が遅い（図２（ｃ）の時間Ｔが大きい）メモリチップほど、ライトレベリングの実行回数が多くなるため、ライトレベリングの実施に時間がかかる。例えば、図１において、メモリチップ２１−ｎ，２１−（ｎ−１），…の順にライトレベリングの実施に時間がかかる。結果として、メモリチップ２１−１〜２１−ｎのトータルのライトレベリングの実施時間が長くなる。また、メモリモジュール２０内のメモリチップの数が多くなればなるほど、トータルのライトレベリングの実施時間は長くなる。
【００２５】
昨今、メモリモジュール２０内のメモリチップの数は益々増加の傾向にあり、ライトレベリング実施時間の増加は無視できなくなってきている。
【００２６】
図３は、本発明のライトレベリング制御の概念図である。全体的なライトレベリング制御自体の動作は従来と基本的に同じであるが、ライトレベリング開始時の動作が従来と異なる。なお、図３は本発明のライトレベリング制御方法の概念図でもある。
【００２７】
図３（ａ）および（ｂ）は、ライトレベリンク開始時におけるメモリコントローラ１０とメモリチップ２１−ｉの動作を示している。ライトレベリングモードに移行すると、メモリコントローラ１０は、クロック信号（ＣＬＫ）の出力タイミングからあらかじめ所定の時間Ｔ′だけ遅らせてデータストローブ信号（ＤＱＳ）を出力する（図３（ａ））。ここで、この時間Ｔ′（所定の遅延時間）をレベリングのデフォルト遅延値と呼ぶことにある。このデフォルト遅延値の具体例については後述する。メモリチップ２１−ｉは、メモリコントローラ１０から出力されるデータストローブ信号（ＤＱＳ）の立上りエッジでクロック信号（ＣＬＫ）をサンプリングし、その結果をデータ信号（ＤＱ）として出力する（図３（ｂ））。データ信号（ＤＱ）は、クロック信号（ＣＬＫ）に対して、データストローブ信号（ＤＱＳ）が進んでいれば“０”を示し、遅れていれば“１”を示す。
【００２８】
メモリコントローラ１０は、データ信号（ＤＱ）が“０”であれば（デフォルト遅延値が過小）、当初の遅延時間Ｔ′から一定時間（Δｔ）遅らせてデータストローブ信号（ＤＱＳ）を再び出力する。一方、データ信号（ＤＱ）が“１”であれば（デフォルト遅延値が過大）、当初の遅延時間Ｔ′から一定時間（Δｔ）進ませてデータストーブ信号（ＤＱＳ）を再び出力する。メモリチップ２１−ｉは、メモリコントローラ１０から出力されるデータストローブ信号（ＤＱＳ）の立上りエッジでクロック信号（ＣＬＫ）をサンプリングし、再びその結果をデータ信号（ＤＱ）として出力する。
【００２９】
以後、メモリコントローラ１０は、メモリチップ２１−ｉからのデータ信号（ＤＱ）が“０”を示す間は、データストローブ信号（ＤＱＳ）の出力タイミングを前回より一定時間（Δｔ）ずつ徐々に遅らせて、該データストローブ信号（ＤＱＳ）を繰り返し出力する。また、メモリチップ２１−ｉからのデータ信号（ＤＱ）が“１”を示す間は、データストローブ信号（ＤＱＳ）の出力タイミングを前回より一定時間（Δｔ）ずつ徐々に進ませて、該データストローブ信号（ＤＱＳ）を繰り返し出力する。メモリチップ２１−ｉは、メモリコントローラ１０からデータストローブ信号（ＤＱＳ）を受け取るごとに、該データストローブ信号（ＤＱＳ）の立上りエッジでクロック信号（ＣＬＫ）をサンプリングし、その結果をデータ信号（ＤＱ）として出力する。
【００３０】
図３（ｃ）および（ｄ）は、ライトレベリング終了時におけるメモリコントローラ１０とメモリチップ２１−ｉの動作を示している。ライトレベリング動作を何回か繰り返すことで、メモリチップ２１−ｉのデータ信号（ＤＱ）は、“０”から“１”あるいは“１”から“０”に変化する。すなわち、メモリチップ２１−ｉにおいて、クロック信号（ＣＬＫ）とデータストローブ信号（ＤＱＳ）の位相がほぼ一致する。
【００３１】
メモリコントローラ１０は、メモリチップ２１−ｉからのデータ信号（ＤＱ）が“０”から“１”あるいは“１”から“０”に変化した段階で、当該メモリチップ２１−ｉに対するライトレベリング動作を終了とする。そして、メモリコントローラ１０は、その時のデータストローブ信号（ＤＱＳ）の遅延時間Ｔ（Ｔ＝Ｔ′±Ｔ″）を取得して、これをメモリチップ２１−ｎに対するデータストローブ信号の出力タイミング遅延値とする。
【００３２】
メモリコントローラ１０は、メモリモジュール２０内のメモリチップ２１−１〜２１−ｎについて順次、上記ライトレベリング制御を実施する。
【００３３】
ここで、本発明のライトレベリング制御の場合、レベリング開始時、あらかじめ所定の遅延時間（図３（ａ）の時間Ｔ′）のデフォルト遅延値だけデータストローブ信号（ＤＱＳ）の出力タイミングを遅延させておくことで、ライトレベリングの実行回数を少なくすることができ、ライトレベリングの実施時間が短縮される。すなわち、図３（ｃ）の時間Ｔ″の分についてだけ、ライトレベリング制御を繰り返せばよい。また、ライトレベリングのデフォルト遅延値は、メモリモジュール２０の複数のメモリチップ２１−１〜２１−ｎについて、それぞれのメモリチップ毎に設定する。これにより、メモリモジュール２０内のいずれのメモリチップについても、ライトレベリングの実行回数はほぼ同程度で済む。結果として、メモリモジュール２０内のメモリチップ２１−１〜２１−ｎのトータルのライトレベリング実施時間は、従来よりも非常に短縮される。
【００３４】
図４は、本発明の一実施形態に係るメモリコントローラ１０の機能ブロック図である。メモリコントローラ１０は、主制御部１１０、メモリインタフェース（ＤＤＲＩＦ）部１２０、ＲＯＭ１３０及びＳＲＡＭ１４０などからなる。メモリインタフェース部１２０は、クロック信号生成部、データストローブ信号生成部、コマンド／アドレス／データ送受信部などを有しているが、図４では省略してある。このメモリインタフェース部１２０がライトレベリング制御手段としてのライトレベリング制御部１２１及びＺＱキャリブレーション制御手段としてのＺＱキャリブレーション制御部１２２を備えている。
【００３５】
メモリモジュール（ＤＩＭＭ）２０は、図１に示したように、複数のメモリチップ（ＳＤＲＡＭ）２１−１〜２１−ｎで構成されている。メモリインタフェース部１２０とメモリモジュール２０内の各メモリチップとは、ＣＬＫ／ＣＭＤ／ＡＤＤの信号線はディジーチェーンで接続され、ＤＱ／ＤＡＳの信号線はそれぞれ個別に接続されている。
【００３６】
主制御部１１０は、メモリコントローラ１０内の各部の動作を制御すると共に、図示しないホスト装置（ＣＰＵ）とコマンド、アドレス、データ等の送受信を行う。
【００３７】
メモリインタフェース部１２０は、主制御部１１０の制御下で、メモリモジュール２０との間でクロック信号、データストローブ信号、コマンド信号、アドレス信号、データ信号等を送受信する。なお、メモリモジュール２０のリード・ライト制御の詳細については省略する。
【００３８】
ライトレベリング制御部１２１は、メモリモジュール２０内の各メモリチップについて、図３で説明したようなライトレベリング制御を実施する。このライトレベリング制御部１２１は、主制御部１１０により、システム起動時やシステム起動後の動作中に周期的に起動される。このライトレベリング制御部１２１の詳細動作については後述する。
【００３９】
ＺＱキャリブレーション制御部１２２は、メモリインタフェース部１２０の出力ドライバのインピーダンスを調整する機能である。ＺＱキャリブレーション制御部１２２は、ＺＱ端子に接続された高精度の外部抵抗Ｒ0を使用して、出力ドライバのインピーダンスを調整する。これをＺＱキャリブレーションと称する。このＺＱキャリブレーション制御部１２２も、主制御部１１０により、システム起動時やシステム起動後の動作中に周期的に起動される。
【００４０】
後述するように、一実施例では、ＺＱキャリブレーション制御部１２２を温度検出手段として利用して、メモリモジュール２０の温度を検出する。ライトレベリング制御部１２１は、この検出された温度をもとにライトレベリングのデフォルト遅延値を補正する。これにより、ライトレベリングの実行回数を更に少なくすることができ、トータルのライトレベリング制御の実施時間が更に短縮できる。
【００４１】
ＲＯＭ１３０は、主制御部１１０のためのプログラムを記憶している。主制御部１１０は、ＲＯＭ１３０に記憶されたプログラムを実行することで、必要な制御・処理を達成する。また、ライトレベリング制御部１２１がソフトウエア制御の場合、ＲＯＭ１３０は、ライトレベリング・プログラムを記憶している。システム起動時等、主制御部１１０はＲＯＭ１３０からライトレベリング・プログラムを読み出してライトレベリング制御部１２１に渡す。なお、ライトレベリング制御部１２１は、ハードロジックで構成することでもよい。
【００４２】
ＳＲＡＭ１４０は、種々のデータ、パラメータ、テーブル等を記憶する不揮発メモリである。このＳＲＡＭ１４０は、メモリモジュール２０内の各メモリチップについて、ライトレベリングのデフォルト遅延値を記憶している。さらに、ＳＲＡＭ１４０は、メモリモジュール２０内の各メモリチップについて、温度変化とクロック信号の伝播時間変化の対応テーブルを記憶している。
【００４３】
ここで、ライトレベリングのデフォルト遅延値には、前回のライトレベリング制御で取得したデータストローブ信号の出力タイミング遅延値や、事前にシミュレーションを実施して得られたデータストローブ信号の出力タイミング遅延値を利用する。一般に、ＤＤＲ３−ＳＤＲＡＭのような高速半導体メモリ装置などでは、設計段階で事前にシミュレーションを実施して、各種信号の波形やタイミングが問題ないことを確認した上でプリント基板（ＰＷＢ）を作る。したがって、シミュレーションの時点で、メモリモジュール内の各メモリチップについて、データストローブ信号の出力タイミング遅延値が分かる。このシミュレーションを実施して得られたデータストローブ信号の出力タイミング遅延値を、ライトレベリングのデフォルト遅延値としてＳＲＡＭ１４０に記憶する。前回のライトレベリング制御で取得したデータストローブ信号の出力タイミング遅延値は、ライトレベリングを実施する毎に更新するが、シミュレーション時に算出されたデータストローブ信号の出力タイミング遅延値は、ライトレベリングのデフォルト遅延値の初期設定値として、そのまま記憶しておく。
【００４４】
また、シミュレーションでは温度条件なども付加して実施するため、温度変化で、どの程度、クロック信号の伝播時間が変化するかも算出することができる。そこで、メモリモジュール２０内の各メモリチップについて、温度１℃当たりのクロック信号の伝播時間変化分をテーブル化してＳＲＡＭ１４０に記憶する。なお、ＳＲＡＭ１４０には、シミュレーションの際の基準温度も記憶する。
【００４５】
次に、ライトレベリング制御部１２１及びＺＱキャリブレーション制御部１２２の構成・動作について詳述する。ここでは、ライトレベリング制御部１２１はソフトウエア制御とし、ＺＱキャリブレーション制御部１２２はハードロジック制御とする。
【００４６】
図５は、ライトレベリング制御部１２１の実施例１に係る処理フローを説明する図である。
【００４７】
先に述べたように、ＲＯＭ１３０はライトレベリング・プログラムを記憶している。システム起動等、主制御部１１０はＲＯＭ１３０からライトレベリング・プログラムを読み出してライトレベリング制御部１２１にロードする。これにより、ライトレベリング制御部１２１は、ライトレベリングをソフトウエア制御で実施することが可能となる。
【００４８】
ライトレベリングモードに移行すると、主制御部１１０はライトレベリング制御部１２１を起動する。そして、主制御部１１０はＳＲＡＭ１４０からメモリモジュール２０内の各メモリチップのライトレベリングのデフォルト遅延値を読み出してライトレベリング制御部１２１に渡す。図５は、これ以降のライトレベリング制御部１２１の処理フローを示している。
【００４９】
なお、ライトレベリングのデフォルト遅延値は、例えばシステム起動時は、事前にシミュレーションを実施して得られたデータストローブ信号の出力タイミング遅延値（ライトレベリンクのデフォルト遅延値の初期値）とし、システム起動後の動作中に周期的に実行する際には、前回のライトレベリング制御結果のデータストローブ信号の出力タイミング遅延値とする。
【００５０】
図５において、ライトレベリング制御部１２１は、まず、ライトレベリング対象のメモリチップを選択する（ステップ１００１）。ここで、ライトレベリング対象のメモリチップをメモリチップ２１−ｉとする。次に、このメモリチップ２１−ｉのライトレベリングデフォルト遅延値を選択する（ステップ１００２）。次に、ライトレベリング制御部１２１は、メモリモジュール２０へクロック信号（ＣＬＫ）を出力すると共に、メモリモジュール２０内のメモリチップ２１−ｉに対して、クロック信号（ＣＬＫ）からデフォルト遅延値だけ遅らせてデータストローブ信号（ＤＱＳ）を出力する（ステップ１００３）。そして、ライトレベリング制御部１２１は、メモリモジュール２０内のメモリチップ２１−ｉからデータ信号（ＤＱ）が到来するのを待つ。
【００５１】
メモリモジュール２０内のメモリチップ２１−ｉは、データストローブ信号（ＤＱＳ）の立上りエッジでクロック信号（ＣＬＫ）をサンプリングして、その結果をデータ信号（ＤＱ）としてメモリコントローラ１０へ返す。
【００５２】
ライトレベリング制御部１２１は、データ信号（ＤＱ）が“０”か“１”か判定する（ステップ１００４）。データ信号（ＤＱ）は、クロック信号（ＣＬＫ）に対して、データストローブ信号（ＤＱＳ）が進んでいれば“０”を示し、遅れていれば“１”を示す。
【００５３】
ライトレベリング制御部１２１は、クロック信号（ＣＬＫ）が“０”であれば、データストローブ信号（ＤＱＳ）の出力タイミングを当初のデフォルト遅延値より一定時間（Δｔ）遅らせる（ステップ１００５）。そして、再度、メモリモジュール２０へクロック信号（ＣＬＫ）を出力し、メモリモジュール２０内のメモリチップ２１−ｉに対してデータストローブ信号（ＤＱＳ）を出力して（ステップ１００６）、メモリチップ２１−ｉからのデータ信号（ＤＱ）の状態を判定する（ステップ１００７）。以後、ライトレベリング制御部１２１は、データ信号（ＤＱ）が“１”になるまで、データストローブ信号（ＤＱＳ）の出力タイミングを前回より徐々に遅らせて、クロック信号（ＣＬＫ）とデータストローブ信号（ＤＱＳ）を出力する処理を繰り返す（ステップ１００５〜１００７をループ）。
【００５４】
一方、クロック信号が“１”の場合には、ライトレベリング制御部１２１は、データストローブ信号（ＤＱＳ）の出力タイミングを当初のデフォルト遅延値より一定時間（Δｔ）進ませる（ステップ１００８）。そして、再度、メモリモジュール２０へクロック信号（ＣＬＫ）を出力し、メモリモジュール２０内のメモリチップ２１−ｉに対してデータストローブ信号（ＤＱＳ）を出力して（ステップ１００９）、メモリチップ２１−ｉからのデータ信号（ＤＱ）の状態を判定する（ステップ１０１０）。以後、ライトレベリング制御部１２１は、データ信号（ＤＱ）が“１”になるまで、データストローブ信号（ＤＱＳ）の出力タイミングを前回より徐々に進ませて、クロック信号（ＣＬＫ）とデータストローブ信号（ＤＱＳ）を出力する処理を繰り返す（ステップ１００８〜１０１０をループ）。
【００５５】
ライトレベリング制御部１２１は、メモリチップ２１−ｉからのデータ信号（ＤＱ）が“０”から“１”あるいは“１”から“０”に変化した場合、その時点のデータストローブ信号（ＤＱＳ）のクロック信号からの遅延時間を、メモリチップ２１−ｉに対するデータストローブ信号の出力タイミング遅延値として設定する（ステップ１０１１）。これで、メモリチップ２１−ｉのライトレベリング制御が終了となる。
【００５６】
次に、ライトレベリング制御部１２１は、メモリチップ２１−ｉ内の全てのメモリチップについてライトレベリング制御が終了したか判定する（ステップ１０１２）。そして、メモリモジュール２０内の全てのメモリチップ２１−１〜２１−ｎについてライトレベリング制御が終了するまで、ステップ１００１〜１０１１の処理を繰り返す。
【００５７】
なお、ライトレベリング制御部１２１は、メモリモジュール２０内の全メモリチップ２１−１〜２１−ｎのライトレベリングが終了したならば、メモリチップ２１−１〜２１−ｎに対応するデータストローブ信号の出力タイミング遅延値を主制御部１１０に送付する。主制御部１１０は、このメモリチップ２１−１〜２１−ｎに対するデータストローブ信号の出力タイミング遅延値をＳＲＡＭ１４０に格納する。この時、ＳＲＡＭ１４０に前回の遅延値が記憶されていれば、これを今回の遅延値で更新する。
【００５８】
実施例１によれば、メモリモジュール２０内の各メモリチップについて、あらかじめデフォルト遅延値だけデータストローブ信号の出力タイミングを遅らせてライトレベリング制御を開始させるため、ライトレベリング制御の実行回数が少なくなり（図５のステップ１００５〜１００７やステップ１００８〜１０１０のループ回数が減少する）、ライトレベリングのトータルの時間が、従来に比べて大幅に減少することとなる。
【００５９】
図６は、ライトレベリング制御部１２１の実施例２に係る処理フローを説明する図である。
【００６０】
メモリモジュール２０内の各メモリチップにおいて、クロック信号とデータストローブ信号の伝播時間のズレ量はメモリモジュールの温度によって変化する。実施例２は、メモリモジュール２０内の各メモリチップ毎に、メモリモジュールの温度に応じてライトレベリング制御のデフォルト遅延値を補正するようにしたものである。
【００６１】
先の実施例１の場合と同様に、ライトレベリングモードに移行すると、主制御部１１０は、ライトレベリング制御部１２１を起動する。そして、主制御部１１０はＳＲＡＭ１４０からメモリモジュール２０内の各メモリチップのライトレベリングのデフォルト遅延値を読み出してライトレベリング制御部１２１に渡す。このライトレベリングデフォルト遅延値には温度情報が付加されているとする。温度情報については後述する。さらに、主制御部１１０はＳＲＡＭ１４０から温度変化とクロック信号の伝播時間変化の対応テーブルを読み出してライトレベリング制御部１２１に渡す。図６は、これ以降のライトレベリング制御部１２１の処理フローを示している。
【００６２】
図６において、ライトレベリング制御部１２１は、まず、ライトレベリング対象のメモリチップを選択する（ステップ１００１）。ここでも、メモリチップ２１−ｉをライトレベリング対象のメモリチップとする。次に、メモリチップ２１−ｉのライトレベリングのデフォルト遅延値を選択し（ステップ１００２−１）、このライトレベリングのデフォルト遅延値に温度変化を反映させる（ステップ１００２−２）。すなわち、メモリモジュール２０の温度に応じてライトレベリングのデフォルト遅延値を補正する。
【００６３】
ここで、補正後のデフォルト遅延値をＤａ、補正前のデフォルト遅延値（ＳＲＡＭ１４０に記憶されているデフォルト遅延値）をＤｂとすると、Ｄａは
Ｄａ＝Ｄｂ＋α（Ｔａ−Ｔｂ）                        （１）
で表わされる。αは単位温度変化当たりのクロック信号の伝播時間変化分であり、メモリモジュール２０の各メモリチップについて、温度変化とクロック信号の伝播時間変化の対応テーブルとして、あらかじめＳＲＡＭ１４０に記憶されている。Ｔａは現時点のメモリモジュール２０の温度であり、後述するように、ＺＱキャリブレーション制御部１２２のＺＱキャリブレーション制御機能を利用して取得する。Ｔｂは補正前のデフォルト遅延値Ｄｂに対応する温度であり、前回のライトレベリング制御終了の際に、デフォルト遅延値に付加してＳＲＡＭ１４０に記憶しておく。なお、デフォルト遅延値がシミュレーションを実施して算出されたデータストローブ信号の出力タイミング遅延値の場合には、シミュレーションで用いた基準温度をＴｂとする。
【００６４】
図６に戻り、ライトレベリング制御部１２１は、メモリモジュール２０へクロック信号（ＣＬＫ）を出力すると共に、メモリモジュール２０内のメモリチップ２１−ｉに対して、式（１）により温度変化が反映されたデフォルト遅延値（Ｄａ）だけクロック信号（ＣＬＫ）から遅延させてデータストローブ信号（ＤＱＳ）を出力する（ステップ１００３）。そして、ライトレベリング制御部１２１は、メモリモジュール２０内のメモリチップ２１−ｉからデータ信号（ＤＱ）の到来を待つ。
【００６５】
これ以降のライトレベリング制御部１２１の動作は、図５の場合と同じであるので、説明は省略する。
【００６６】
メモリモジュール２０内の全メモリチップ２１−１〜２１−ｎのライトレベリング制御が終了した場合、ライトレベリング制御部１２１は、メモリチップ２１−１〜２１−ｎに対応するデータストローブ信号の出力タイミング遅延値を主制御部１１０に送付する。この時、ライトレベリング制御部１２１は、ＺＱキャリブレーション制御部１２２のＺＱキャリブレーション機能を利用して取得した温度情報も一緒に主制御部１１０に送付する。
【００６７】
主制御部１１０は、ライトレベリング制御部１２１から送付されたメモリチップ２１−１〜２１−ｎに対応するデータストローブ信号の出力タイミング遅延値及び温度情報をＳＲＡＭ１４０に格納する。この時、ＳＲＡＭ１４０に前回の遅延値及び温度情報が記憶されていれば、これらを今回の遅延値及び温度情報で更新する。この温度情報が、次回のライトレベリング制御の際にＴｂとなる。
【００６８】
実施例２によれば、ライトレベリングのデフォルト遅延値に温度変化が反映されるため、先の実施例１に比べて、ライトレベリング制御のトータルの実施時間を更に短縮することができる。
【００６９】
次に、ＺＱキャリブレーション制御部１２２の構成・動作について説明する。先に述べたように、ＺＱキャリブレーション制御部１２２はハードロジック制御とする。
【００７０】
図７は、ＺＱキャリブレーション制御部１２２の具体的構成例を示した図である。ＺＱキャリブレーション制御部１２２は、比較回路（１）１２２１、比較回路（２）１２２２、カウンタ（１）１２２３、制御回路（１）１２２４、プルアップ回路（１）１２２５、プルアップ回路（２）１２２６、カウンタ（２）１２２７、制御回路（２）１２２８、プルアップ回路（２）１２２９、固定抵抗Ｒ１、可変抵抗Ｒ２及び温度検出用抵抗（リニア温度変化抵抗）Ｒｔからなる。プルアップ回路（１）１２２５、プルアップ回路（２）１２２６及びプルダウン回路１２２９は、それぞれ複数のトランジスタと複数の抵抗で構成される。ＺＱ端子（ＺＱキャリブレーション用端子）には、外部抵抗Ｒ0が接続されている。
【００７１】
図７の構成は、トランジスタＴＲと温度検出用抵抗Ｒｔを除けば、例えば特開２００７−１２３９８７号公報（特許文献１）に記載のＺＱキャリブレーション回路と基本的に同様である。
【００７２】
比較器（１）１２２１は、ＺＱ端子の電位と抵抗Ｒ１，Ｒ２の接続点の電位とを比較する。通常のＺＱキャリブレーションでは、抵抗Ｒ２の値は、抵抗Ｒ１と等しい値に設定される。カウンタ（１）１２２３は、比較器（１）１２２１の比較結果に応じてカウントアップあるいはカウントダウンする。制御回路（１）１２２４は、カウンタ（１）１２２３のカウント値に応じて、プルアップ回路（１）１２２５及びプルアップ回路（２）１２２６のトランジスタ群をオン／オフすることでインピーダンス調整する。
【００７３】
比較器（２）１２２２は、プルアップ回路（２）１２２６とプルダウン回路１２２９の接続点の電位と抵抗Ｒ１，Ｒ２の接続点の電位とを比較する。カウンタ（２）１２２７は、比較器（２）１２２２の比較結果に応じてカウントアップあるいはカウントダウンする。制御回路（２）１２２８は、カウンタ（２）１２２７のカウント値に応じてプルダウン回路１２２９のトランジスタ群をオン／オフすることでインピーダンス調整する。
【００７４】
通常のＺＱキャリブレーション制御では、温度検出用抵抗Ｒｔは使用しない。すなわち、トランジスタＴＲをオフとする。この通常のＺＱキャリブレーション制御の動作は、例えば、特許文献１に詳述されているので、ここでは説明を省略する。
【００７５】
ＺＱキャリブレーション制御終了後に、温度検出用抵抗Ｒｔを使用してＺＱキャリブレーション制御と同様の制御を行って、メモリモジュール２０の温度検出を行う。この温度検出の際には、比較器（２）１２２２、カウンタ（２）１２２７、制御回路（２）１２２８、プルアップ回路（１）１２２５、プルアップ回路（２）１２２６、プルダウン回路１２２９は使用しない。すなわち、比較器（１）１２２１、カウンタ（１）１２２３、制御回路（１）１２２４、温度検出用抵抗Ｒｔ、固定抵抗Ｒ１、可変抵抗Ｒ２及び外部抵抗Ｒ０が温度検出手段として機能する。
【００７６】
温度検出時、トランジスタＴＲをオンとして、温度検出用抵抗ＲｔをＺＱ端子に接続する。比較器（１）１２２１は、ＺＱ端子の電位と抵抗Ｒ１，Ｒ２の接続点の電位とを比較する。カウンタ（１）１２２３は、比較器（１）１２２１の比較結果に応じてカウントアップあるいはカウントダウンする。制御回路（１）１２２４は、カウンタ（１）１２２３のカウント値に応じて、可変抵抗Ｒ２の抵抗値を変化させる。
【００７７】
温度検出動作は、比較器（１）１２２１の比較結果が略ゼロになった時点で終了となる。この時、可変抵抗Ｒ２と温度検出用抵抗Ｒｔの抵抗値が一致する。そして、この時のカウンタ（１）１２２３のカウント値が温度検出用抵抗Ｒｔの抵抗値を表わしている。したがって、このカウンタ（１）１２２３のカウント値からメモリモジュール２０の温度を算出することができる。
【００７８】
一般に、メモリコントローラ１０とメモリモジュール２０は同一のプリント基板（ＰＷＢ）上に形成される。また、ＺＱキャリブレーション制御とライトレベリング制御は前後して実施される。したがって、ライトレベリング制御部１２１が、ＺＱキャリブレーション制御部１２２からカウンタ（１）１２２３のカウント値を取り込み、抵抗値・温度対応テーブル等を用いて温度を算出することで、メモリモジュール２０の現時点の温度Ｔａを取得することができる。
【００７９】
なお、主制御部１１０がＺＱキャリブレーション制御部１２２からカウンタ（１）１２３のカウント値を取り込んで、同様に抵抗値・温度対応テーブル等を用いて温度を算出して、ライトレベリング制御部１２１に渡すことでもよい。抵抗値・温度対応テーブルは、あらかじめＳＲＡＭ１４０に記憶しておく。
【００８０】
ＺＱ端子に接続されるＺＱキャリブレーション用抵抗Ｒ０は、一般に２４０Ω±１％程度の高精度抵抗であり、温度係数は±１００ｐｐｍ／℃程度である。したがって、温度検出用抵抗Ｒｔとしては、温度係数は１０００ｐｐｍ以上が望ましい。
【００８１】
以上、図面を参照して、本発明の一実施形態について説明したが、本発明は図示の実施形態に限定されるものではない。先に述べたように、本発明はＤＤＲ３メモリに限定されるものではない。また、メモリモジュールの現時点の温度は、ＺＱキャリブレーション制御部の機能を利用しないで、別途温度センサ等の温度検出手段で直接に検出することでもよい。
【符号の説明】
【００８２】
１０    メモリコントローラ
２０    メモリモジュール（ＤＩＭＭ）
２１−１〜２１−ｎ  メモリチップ（ＳＤＲＡＭ）
３０    クロック等信号線
４０−１〜４０−ｎ  データストローブ等信号線
１１０    主制御部
１２０    メモリインタフェース部
１２１    ライトレベリング制御部
１２２    ＺＱキャリブレーション制御部
Ｒｔ    温度検出用抵抗
【先行技術文献】
【特許文献】
【００８３】
【特許文献１】特開２００７−１２３９８７号公報
【非特許文献】
【００８４】
【非特許文献１】JEDEC  STANDARD，DDR3  SDRAM  Specification，JESD79-3B（Revision  of  JESD79-3A，September  2007），April  2008，JEDEC  SOLID  STATE  TECHNOLOGY  ASSOCIATION
【図１】
2014102741.tif 000003
【図２】
2014102741.tif 000004
【図３】
2014102741.tif 000005
【図４】
2014102741.tif 000006
【図５】
2014102741.tif 000007
【図６】
2014102741.tif 000008
【図７】
2014102741.tif 000009