JP2014102741A - メモリコントローラ及びメモリコントローラのライトレベリング制御方法 - Google Patents
メモリコントローラ及びメモリコントローラのライトレベリング制御方法 Download PDFInfo
- Publication number
- JP2014102741A JP2014102741A JP2012255291A JP2012255291A JP2014102741A JP 2014102741 A JP2014102741 A JP 2014102741A JP 2012255291 A JP2012255291 A JP 2012255291A JP 2012255291 A JP2012255291 A JP 2012255291A JP 2014102741 A JP2014102741 A JP 2014102741A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- write leveling
- memory module
- data strobe
- delay value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】DDR3SDRAMなどにおいて、ライトレベリングの実施時間を短縮する。
【解決手段】メモリモジュール(DIMM)20は複数のメモリチップで構成されている。メモリコントローラ10は、このメモリモジュールと、クロック信号はメモリモジュール内の複数のメモリチップとディジーチェーンで接続され、データストローブ信号線はメモリモジュール内の複数のメモリチップと個別に接続されている。ここで、ライトレベリング制御部121は、メモリモジュール内の各メモリチップについて、所定の遅延時間をライトレベリングのデフォルト遅延値として、あらかじめクロック信号の出力タイミングからデータストローブ信号の出力タイミングをデフォルト遅延値だけ遅延してライトレベリングを開始するようにする。
【選択図】図4
【解決手段】メモリモジュール(DIMM)20は複数のメモリチップで構成されている。メモリコントローラ10は、このメモリモジュールと、クロック信号はメモリモジュール内の複数のメモリチップとディジーチェーンで接続され、データストローブ信号線はメモリモジュール内の複数のメモリチップと個別に接続されている。ここで、ライトレベリング制御部121は、メモリモジュール内の各メモリチップについて、所定の遅延時間をライトレベリングのデフォルト遅延値として、あらかじめクロック信号の出力タイミングからデータストローブ信号の出力タイミングをデフォルト遅延値だけ遅延してライトレベリングを開始するようにする。
【選択図】図4
Description
本発明は、DDR3−SDARMに代表されるメモリのメモリコントローラにおけるライトレベリング制御技術に関する。
DDR3−SDRAM(以下、DDR3メモリ)では、メモリコントローラとDIMM(以下、メモリモジュール)内の複数のSDRAM(以下、メモリチップ)との間で、クロック信号線及びコマンド/アドレス信号線をディジーチェーンで接続するフライバイ(Fly-by)トポロジを採用している。一方、データ信号線及びデータストローブ信号線は、メモリコントローラとメモリモジュール内の複数のメモリチップとの間でそれぞれ個別に接続される。このため、メモリモジュール内の各メモリチップにおいてクロック信号とデータストローブ信号の間に伝播時間(Flight time)のズレが生じる。そこで、DDR3メモリでは、この伝播時間のズレを補正するためにライトレベリング機能が備えられている(例えば、非特許文献1参照)。
ライトレベリング機能は、メモリチップがメモリコントローラから出力されるデータストローブ信号の立上りエッジでクロック信号をサンプリングし、その結果をデータ端子から出力することで、メモリコントローラがデータストローブ信号とクロック信号の位相関係を検出し、データストローブ信号の出力タイミングを調整する機能である。
ところで、ライトレベリングの制御では、メモリコントローラは、メモリチップ側でクロック信号とデータストローブ信号の位相が揃うまで、データストローブ信号の出力タイミングを徐々に変更していく。そして、このライトレベリングの制御は、メモリモジュール内の複数のメモリチップについて、各メモリチップ毎に順次実施される。このため、メモリチップの数が多くなればなるほど、ライトレベリングの実施に時間がかかり、また、メモリコントローラからのクロック信号線の配線が遠いメモリチップほど、ライトレベリングの実施に時間がかかる。
しかし、従来のライトレベリング機能では、ライトレベリングの実施に時間がかかることについて考慮されていなかった。
本発明の課題は、DDK3−SDRAM(DDR3メモリ)に代表されるメモリについて、ライトレベリングの実施時間を短縮することにある。
本発明は、複数のメモリチップからなるメモリモジュールと、クロック信号線は前記メモリモジュール内の複数のメモリチップとディジーチェーンで接続され、データストローブ信号線は前記メモリモジュール内の複数のメモリチップと個別に接続されてなるメモリコントローラであって、
前記メモリモジュール内の各メモリチップについて、クロック信号とデータストローブ信号との間の伝播時間のズレを補正するためのライトレベリング制御手段を有し、
前記ライトレベリング制御手段は、前記メモリモジュール内の各メモリチップについて、所定の遅延時間をライトレベリングのデフォルト遅延値として、あらかじめクロック信号の出力タイミングからデータストローブ信号の出力タイミングを前記デフォルト遅延値だけ遅延してライトレベリングを開始することを主要な特徴とする。
前記メモリモジュール内の各メモリチップについて、クロック信号とデータストローブ信号との間の伝播時間のズレを補正するためのライトレベリング制御手段を有し、
前記ライトレベリング制御手段は、前記メモリモジュール内の各メモリチップについて、所定の遅延時間をライトレベリングのデフォルト遅延値として、あらかじめクロック信号の出力タイミングからデータストローブ信号の出力タイミングを前記デフォルト遅延値だけ遅延してライトレベリングを開始することを主要な特徴とする。
本発明によれば、DDR3メモリなどにおいて、ライトレベリングの実施時間を大幅に短縮することができ、起動時間や通常動作への復帰時間が大幅に短縮される。
以下、図面を参照して本発明の実施の形態について説明する。なお、以下ではDDR3メモリを例にするが、本発明はDDR3メモリに限定されるものではない。
図1は、DDR3メモリのメモリコントローラとメモリモジュールの接続を示した図である。図1において、10はメモリコントローラ、20はメモリモジュール(DIMM)であり、メモリモジュール20は複数のメモリチップ(SDRAM)21−1〜21−nを有している。30はクロック信号(CLK)、コマンド信号(CMD)及びアドレス信号(ADD)の信号線、40−1〜40−nはデータ信号(DQ)及びデータストローブ信号(DQS)の信号線である。なお、Rttは信号線30の終端抵抗である。
図1に示すように、CLK/CMD/ADDの信号線30は、メモリコントローラ10とメモリモジュール20内の複数のメモリチップ21−1〜21−nとの間でディジーチェーンで接続されている。一方、DQ/DQSの信号線40−1〜40−nは、メモリコントローラ10とメモリモジュール20内の複数のメモリチップ21−1〜21−nとの間でそれぞれ個別に接続されている。
このような構成のため、メモリモジュール20内の複数のメモリチップ21−1〜21−nでは、クロック信号とデータストローブ信号の間に伝播時間のズレ(位相差)が生じる。そして、このクロック信号とデータストローブ信号の伝播時間のズレは、メモリチップ21−1〜21−nでそれぞれ異なる。
メモリモジュール20内のメモリチップ21−1〜21−nでは、基本的にクロック信号とデータストローブ信号とに同期してデータのリード・ライトが行われる。したがって、これらメモリチップ21−1〜21−nについて、それぞれクロック信号とデータストローブ信号の伝播時間のズレ(位相差)を補正する必要がある。
このメモリモジュール20内のメモリチップ21−1〜21−nについて、クロック信号とデータストローブ信号の伝播時間のズレ(位相差)を補正する機能がライトレベリング機能である。
メモリコントローラ10は、システム起動時やシステム起動後の動作中に周期的にライトレベリング制御を実施して、メモリモジュール20内のメモリチップ21−1〜21−nについて、それぞれクロック信号のタイミングに合うようにデータストローブ信号のタイミングを調整する。
図2は、従来のライトレベリング制御の概念図である。ここで、ソース(Source)はメモリコントローラを意味し、デスティネーション(Destination)はメモリチップ(SDRAM)を意味する。
図2(a)及び(b)は、ライトレベリング開始時におけるメモリコントローラ10とメモリチップ21−i(i=1,2,…,n)の動作を示している。ライトレベリングモードに移行すると、メモリコントローラ10は、クロック信号(CLK)に同期してデータストローブ信号(DQS)を出力する(図2(a))。メモリチップ21−iは、メモリコントローラ10から出力されるデータストローブ信号(DQS)の立上りエッジでクロック信号(CLK)をサンプリングし、その結果をデータ信号(DQ)として出力する(図2(b))。データ信号(DQ)は、クロック信号(CLK)に対して、データストローブ信号(DQS)が進んでいれば“0”を示し、遅れていれば“1”を示す。
メモリコントローラ10は、データ信号(DQ)が“0”であれば、再度、データストローブ信号(DQS)を出力するが、その出力タイミングを前回よりも一定時間(Δt)遅らせる。メモリチップ21−iは、このデータストローブ信号(DQS)の立上りエッジでクロック信号(CLK)をサンプリングし、再びその結果をデータ信号(DQ)として出力する。
以後、メモリコントローラ10は、メモリチップ21−iからのデータ信号(DQ)が“0”を示す間、すなわち、クロック信号(CLK)に対して、データストローブ信号(DQS)が進んでいる間、データストローブ信号(DQS)の出力タイミングを一定時間(Δt)ずつ徐々に遅らせて、該データストローブ信号(DQS)を繰り返し出力する。メモリチップ21−iは、メモリコントローラ10からデータストローブ信号(DQS)を受け取る毎に、該データストローブ信号(DQS)の立上りエッジでクロック信号(CLK)をサンプリングし、その結果をデータ信号(DQ)として出力する。
図2(c)及び(d)は、ライトレベリング終了時におけるメモリコントローラ10とメモリチップ21−iの動作を示している。ライトレベリング制御を繰り返し、メモリチップ21−iにおいて、クロック信号(CLK)とデータストローブ信号(DQS)の位相がほぼ一致した段階で、データ信号(DQ)は“0”から“1”に変化する。なお、図2(c)において、Tはメモリコントローラ10からのクロック信号(CLK)がメモリチップ21−iに到達する時間(伝播時間)にほぼ対応する。
メモリコントローラ10は、メモリチップ21−iからのデータ信号(DQ)が“0”から“1”に変化した段階で、当該メモリチップ21−iに対するライトレベリング制御を終了とする。そして、メモリコントローラ10は、その時のデータストローブ信号(DQS)の遅延時間Tを取得して、これをメモリチップ21−iに対するデータストローブ信号の出力タイミング遅延値とする。
メモリコントローラ10は、メモリモジュール20内のメモリチップ21−1〜21−nについて順次、上記ライトレベリング動作を実施する。
この従来のライトレベリング制御の場合、メモリコントローラ10からのクロック信号線の配線が遠いメモリチップほど、換言すれば、メモリコントローラ10からのクロック信号(CLK)の到達時間が遅い(図2(c)の時間Tが大きい)メモリチップほど、ライトレベリングの実行回数が多くなるため、ライトレベリングの実施に時間がかかる。例えば、図1において、メモリチップ21−n,21−(n−1),…の順にライトレベリングの実施に時間がかかる。結果として、メモリチップ21−1〜21−nのトータルのライトレベリングの実施時間が長くなる。また、メモリモジュール20内のメモリチップの数が多くなればなるほど、トータルのライトレベリングの実施時間は長くなる。
昨今、メモリモジュール20内のメモリチップの数は益々増加の傾向にあり、ライトレベリング実施時間の増加は無視できなくなってきている。
図3は、本発明のライトレベリング制御の概念図である。全体的なライトレベリング制御自体の動作は従来と基本的に同じであるが、ライトレベリング開始時の動作が従来と異なる。なお、図3は本発明のライトレベリング制御方法の概念図でもある。
図3(a)および(b)は、ライトレベリンク開始時におけるメモリコントローラ10とメモリチップ21−iの動作を示している。ライトレベリングモードに移行すると、メモリコントローラ10は、クロック信号(CLK)の出力タイミングからあらかじめ所定の時間T′だけ遅らせてデータストローブ信号(DQS)を出力する(図3(a))。ここで、この時間T′(所定の遅延時間)をレベリングのデフォルト遅延値と呼ぶことにある。このデフォルト遅延値の具体例については後述する。メモリチップ21−iは、メモリコントローラ10から出力されるデータストローブ信号(DQS)の立上りエッジでクロック信号(CLK)をサンプリングし、その結果をデータ信号(DQ)として出力する(図3(b))。データ信号(DQ)は、クロック信号(CLK)に対して、データストローブ信号(DQS)が進んでいれば“0”を示し、遅れていれば“1”を示す。
メモリコントローラ10は、データ信号(DQ)が“0”であれば(デフォルト遅延値が過小)、当初の遅延時間T′から一定時間(Δt)遅らせてデータストローブ信号(DQS)を再び出力する。一方、データ信号(DQ)が“1”であれば(デフォルト遅延値が過大)、当初の遅延時間T′から一定時間(Δt)進ませてデータストーブ信号(DQS)を再び出力する。メモリチップ21−iは、メモリコントローラ10から出力されるデータストローブ信号(DQS)の立上りエッジでクロック信号(CLK)をサンプリングし、再びその結果をデータ信号(DQ)として出力する。
以後、メモリコントローラ10は、メモリチップ21−iからのデータ信号(DQ)が“0”を示す間は、データストローブ信号(DQS)の出力タイミングを前回より一定時間(Δt)ずつ徐々に遅らせて、該データストローブ信号(DQS)を繰り返し出力する。また、メモリチップ21−iからのデータ信号(DQ)が“1”を示す間は、データストローブ信号(DQS)の出力タイミングを前回より一定時間(Δt)ずつ徐々に進ませて、該データストローブ信号(DQS)を繰り返し出力する。メモリチップ21−iは、メモリコントローラ10からデータストローブ信号(DQS)を受け取るごとに、該データストローブ信号(DQS)の立上りエッジでクロック信号(CLK)をサンプリングし、その結果をデータ信号(DQ)として出力する。
図3(c)および(d)は、ライトレベリング終了時におけるメモリコントローラ10とメモリチップ21−iの動作を示している。ライトレベリング動作を何回か繰り返すことで、メモリチップ21−iのデータ信号(DQ)は、“0”から“1”あるいは“1”から“0”に変化する。すなわち、メモリチップ21−iにおいて、クロック信号(CLK)とデータストローブ信号(DQS)の位相がほぼ一致する。
メモリコントローラ10は、メモリチップ21−iからのデータ信号(DQ)が“0”から“1”あるいは“1”から“0”に変化した段階で、当該メモリチップ21−iに対するライトレベリング動作を終了とする。そして、メモリコントローラ10は、その時のデータストローブ信号(DQS)の遅延時間T(T=T′±T″)を取得して、これをメモリチップ21−nに対するデータストローブ信号の出力タイミング遅延値とする。
メモリコントローラ10は、メモリモジュール20内のメモリチップ21−1〜21−nについて順次、上記ライトレベリング制御を実施する。
ここで、本発明のライトレベリング制御の場合、レベリング開始時、あらかじめ所定の遅延時間(図3(a)の時間T′)のデフォルト遅延値だけデータストローブ信号(DQS)の出力タイミングを遅延させておくことで、ライトレベリングの実行回数を少なくすることができ、ライトレベリングの実施時間が短縮される。すなわち、図3(c)の時間T″の分についてだけ、ライトレベリング制御を繰り返せばよい。また、ライトレベリングのデフォルト遅延値は、メモリモジュール20の複数のメモリチップ21−1〜21−nについて、それぞれのメモリチップ毎に設定する。これにより、メモリモジュール20内のいずれのメモリチップについても、ライトレベリングの実行回数はほぼ同程度で済む。結果として、メモリモジュール20内のメモリチップ21−1〜21−nのトータルのライトレベリング実施時間は、従来よりも非常に短縮される。
図4は、本発明の一実施形態に係るメモリコントローラ10の機能ブロック図である。メモリコントローラ10は、主制御部110、メモリインタフェース(DDRIF)部120、ROM130及びSRAM140などからなる。メモリインタフェース部120は、クロック信号生成部、データストローブ信号生成部、コマンド/アドレス/データ送受信部などを有しているが、図4では省略してある。このメモリインタフェース部120がライトレベリング制御手段としてのライトレベリング制御部121及びZQキャリブレーション制御手段としてのZQキャリブレーション制御部122を備えている。
メモリモジュール(DIMM)20は、図1に示したように、複数のメモリチップ(SDRAM)21−1〜21−nで構成されている。メモリインタフェース部120とメモリモジュール20内の各メモリチップとは、CLK/CMD/ADDの信号線はディジーチェーンで接続され、DQ/DASの信号線はそれぞれ個別に接続されている。
主制御部110は、メモリコントローラ10内の各部の動作を制御すると共に、図示しないホスト装置(CPU)とコマンド、アドレス、データ等の送受信を行う。
メモリインタフェース部120は、主制御部110の制御下で、メモリモジュール20との間でクロック信号、データストローブ信号、コマンド信号、アドレス信号、データ信号等を送受信する。なお、メモリモジュール20のリード・ライト制御の詳細については省略する。
ライトレベリング制御部121は、メモリモジュール20内の各メモリチップについて、図3で説明したようなライトレベリング制御を実施する。このライトレベリング制御部121は、主制御部110により、システム起動時やシステム起動後の動作中に周期的に起動される。このライトレベリング制御部121の詳細動作については後述する。
ZQキャリブレーション制御部122は、メモリインタフェース部120の出力ドライバのインピーダンスを調整する機能である。ZQキャリブレーション制御部122は、ZQ端子に接続された高精度の外部抵抗R0を使用して、出力ドライバのインピーダンスを調整する。これをZQキャリブレーションと称する。このZQキャリブレーション制御部122も、主制御部110により、システム起動時やシステム起動後の動作中に周期的に起動される。
後述するように、一実施例では、ZQキャリブレーション制御部122を温度検出手段として利用して、メモリモジュール20の温度を検出する。ライトレベリング制御部121は、この検出された温度をもとにライトレベリングのデフォルト遅延値を補正する。これにより、ライトレベリングの実行回数を更に少なくすることができ、トータルのライトレベリング制御の実施時間が更に短縮できる。
ROM130は、主制御部110のためのプログラムを記憶している。主制御部110は、ROM130に記憶されたプログラムを実行することで、必要な制御・処理を達成する。また、ライトレベリング制御部121がソフトウエア制御の場合、ROM130は、ライトレベリング・プログラムを記憶している。システム起動時等、主制御部110はROM130からライトレベリング・プログラムを読み出してライトレベリング制御部121に渡す。なお、ライトレベリング制御部121は、ハードロジックで構成することでもよい。
SRAM140は、種々のデータ、パラメータ、テーブル等を記憶する不揮発メモリである。このSRAM140は、メモリモジュール20内の各メモリチップについて、ライトレベリングのデフォルト遅延値を記憶している。さらに、SRAM140は、メモリモジュール20内の各メモリチップについて、温度変化とクロック信号の伝播時間変化の対応テーブルを記憶している。
ここで、ライトレベリングのデフォルト遅延値には、前回のライトレベリング制御で取得したデータストローブ信号の出力タイミング遅延値や、事前にシミュレーションを実施して得られたデータストローブ信号の出力タイミング遅延値を利用する。一般に、DDR3−SDRAMのような高速半導体メモリ装置などでは、設計段階で事前にシミュレーションを実施して、各種信号の波形やタイミングが問題ないことを確認した上でプリント基板(PWB)を作る。したがって、シミュレーションの時点で、メモリモジュール内の各メモリチップについて、データストローブ信号の出力タイミング遅延値が分かる。このシミュレーションを実施して得られたデータストローブ信号の出力タイミング遅延値を、ライトレベリングのデフォルト遅延値としてSRAM140に記憶する。前回のライトレベリング制御で取得したデータストローブ信号の出力タイミング遅延値は、ライトレベリングを実施する毎に更新するが、シミュレーション時に算出されたデータストローブ信号の出力タイミング遅延値は、ライトレベリングのデフォルト遅延値の初期設定値として、そのまま記憶しておく。
また、シミュレーションでは温度条件なども付加して実施するため、温度変化で、どの程度、クロック信号の伝播時間が変化するかも算出することができる。そこで、メモリモジュール20内の各メモリチップについて、温度1℃当たりのクロック信号の伝播時間変化分をテーブル化してSRAM140に記憶する。なお、SRAM140には、シミュレーションの際の基準温度も記憶する。
次に、ライトレベリング制御部121及びZQキャリブレーション制御部122の構成・動作について詳述する。ここでは、ライトレベリング制御部121はソフトウエア制御とし、ZQキャリブレーション制御部122はハードロジック制御とする。
図5は、ライトレベリング制御部121の実施例1に係る処理フローを説明する図である。
先に述べたように、ROM130はライトレベリング・プログラムを記憶している。システム起動等、主制御部110はROM130からライトレベリング・プログラムを読み出してライトレベリング制御部121にロードする。これにより、ライトレベリング制御部121は、ライトレベリングをソフトウエア制御で実施することが可能となる。
ライトレベリングモードに移行すると、主制御部110はライトレベリング制御部121を起動する。そして、主制御部110はSRAM140からメモリモジュール20内の各メモリチップのライトレベリングのデフォルト遅延値を読み出してライトレベリング制御部121に渡す。図5は、これ以降のライトレベリング制御部121の処理フローを示している。
なお、ライトレベリングのデフォルト遅延値は、例えばシステム起動時は、事前にシミュレーションを実施して得られたデータストローブ信号の出力タイミング遅延値(ライトレベリンクのデフォルト遅延値の初期値)とし、システム起動後の動作中に周期的に実行する際には、前回のライトレベリング制御結果のデータストローブ信号の出力タイミング遅延値とする。
図5において、ライトレベリング制御部121は、まず、ライトレベリング対象のメモリチップを選択する(ステップ1001)。ここで、ライトレベリング対象のメモリチップをメモリチップ21−iとする。次に、このメモリチップ21−iのライトレベリングデフォルト遅延値を選択する(ステップ1002)。次に、ライトレベリング制御部121は、メモリモジュール20へクロック信号(CLK)を出力すると共に、メモリモジュール20内のメモリチップ21−iに対して、クロック信号(CLK)からデフォルト遅延値だけ遅らせてデータストローブ信号(DQS)を出力する(ステップ1003)。そして、ライトレベリング制御部121は、メモリモジュール20内のメモリチップ21−iからデータ信号(DQ)が到来するのを待つ。
メモリモジュール20内のメモリチップ21−iは、データストローブ信号(DQS)の立上りエッジでクロック信号(CLK)をサンプリングして、その結果をデータ信号(DQ)としてメモリコントローラ10へ返す。
ライトレベリング制御部121は、データ信号(DQ)が“0”か“1”か判定する(ステップ1004)。データ信号(DQ)は、クロック信号(CLK)に対して、データストローブ信号(DQS)が進んでいれば“0”を示し、遅れていれば“1”を示す。
ライトレベリング制御部121は、クロック信号(CLK)が“0”であれば、データストローブ信号(DQS)の出力タイミングを当初のデフォルト遅延値より一定時間(Δt)遅らせる(ステップ1005)。そして、再度、メモリモジュール20へクロック信号(CLK)を出力し、メモリモジュール20内のメモリチップ21−iに対してデータストローブ信号(DQS)を出力して(ステップ1006)、メモリチップ21−iからのデータ信号(DQ)の状態を判定する(ステップ1007)。以後、ライトレベリング制御部121は、データ信号(DQ)が“1”になるまで、データストローブ信号(DQS)の出力タイミングを前回より徐々に遅らせて、クロック信号(CLK)とデータストローブ信号(DQS)を出力する処理を繰り返す(ステップ1005〜1007をループ)。
一方、クロック信号が“1”の場合には、ライトレベリング制御部121は、データストローブ信号(DQS)の出力タイミングを当初のデフォルト遅延値より一定時間(Δt)進ませる(ステップ1008)。そして、再度、メモリモジュール20へクロック信号(CLK)を出力し、メモリモジュール20内のメモリチップ21−iに対してデータストローブ信号(DQS)を出力して(ステップ1009)、メモリチップ21−iからのデータ信号(DQ)の状態を判定する(ステップ1010)。以後、ライトレベリング制御部121は、データ信号(DQ)が“1”になるまで、データストローブ信号(DQS)の出力タイミングを前回より徐々に進ませて、クロック信号(CLK)とデータストローブ信号(DQS)を出力する処理を繰り返す(ステップ1008〜1010をループ)。
ライトレベリング制御部121は、メモリチップ21−iからのデータ信号(DQ)が“0”から“1”あるいは“1”から“0”に変化した場合、その時点のデータストローブ信号(DQS)のクロック信号からの遅延時間を、メモリチップ21−iに対するデータストローブ信号の出力タイミング遅延値として設定する(ステップ1011)。これで、メモリチップ21−iのライトレベリング制御が終了となる。
次に、ライトレベリング制御部121は、メモリチップ21−i内の全てのメモリチップについてライトレベリング制御が終了したか判定する(ステップ1012)。そして、メモリモジュール20内の全てのメモリチップ21−1〜21−nについてライトレベリング制御が終了するまで、ステップ1001〜1011の処理を繰り返す。
なお、ライトレベリング制御部121は、メモリモジュール20内の全メモリチップ21−1〜21−nのライトレベリングが終了したならば、メモリチップ21−1〜21−nに対応するデータストローブ信号の出力タイミング遅延値を主制御部110に送付する。主制御部110は、このメモリチップ21−1〜21−nに対するデータストローブ信号の出力タイミング遅延値をSRAM140に格納する。この時、SRAM140に前回の遅延値が記憶されていれば、これを今回の遅延値で更新する。
実施例1によれば、メモリモジュール20内の各メモリチップについて、あらかじめデフォルト遅延値だけデータストローブ信号の出力タイミングを遅らせてライトレベリング制御を開始させるため、ライトレベリング制御の実行回数が少なくなり(図5のステップ1005〜1007やステップ1008〜1010のループ回数が減少する)、ライトレベリングのトータルの時間が、従来に比べて大幅に減少することとなる。
図6は、ライトレベリング制御部121の実施例2に係る処理フローを説明する図である。
メモリモジュール20内の各メモリチップにおいて、クロック信号とデータストローブ信号の伝播時間のズレ量はメモリモジュールの温度によって変化する。実施例2は、メモリモジュール20内の各メモリチップ毎に、メモリモジュールの温度に応じてライトレベリング制御のデフォルト遅延値を補正するようにしたものである。
先の実施例1の場合と同様に、ライトレベリングモードに移行すると、主制御部110は、ライトレベリング制御部121を起動する。そして、主制御部110はSRAM140からメモリモジュール20内の各メモリチップのライトレベリングのデフォルト遅延値を読み出してライトレベリング制御部121に渡す。このライトレベリングデフォルト遅延値には温度情報が付加されているとする。温度情報については後述する。さらに、主制御部110はSRAM140から温度変化とクロック信号の伝播時間変化の対応テーブルを読み出してライトレベリング制御部121に渡す。図6は、これ以降のライトレベリング制御部121の処理フローを示している。
図6において、ライトレベリング制御部121は、まず、ライトレベリング対象のメモリチップを選択する(ステップ1001)。ここでも、メモリチップ21−iをライトレベリング対象のメモリチップとする。次に、メモリチップ21−iのライトレベリングのデフォルト遅延値を選択し(ステップ1002−1)、このライトレベリングのデフォルト遅延値に温度変化を反映させる(ステップ1002−2)。すなわち、メモリモジュール20の温度に応じてライトレベリングのデフォルト遅延値を補正する。
ここで、補正後のデフォルト遅延値をDa、補正前のデフォルト遅延値(SRAM140に記憶されているデフォルト遅延値)をDbとすると、Daは
Da=Db+α(Ta−Tb) (1)
で表わされる。αは単位温度変化当たりのクロック信号の伝播時間変化分であり、メモリモジュール20の各メモリチップについて、温度変化とクロック信号の伝播時間変化の対応テーブルとして、あらかじめSRAM140に記憶されている。Taは現時点のメモリモジュール20の温度であり、後述するように、ZQキャリブレーション制御部122のZQキャリブレーション制御機能を利用して取得する。Tbは補正前のデフォルト遅延値Dbに対応する温度であり、前回のライトレベリング制御終了の際に、デフォルト遅延値に付加してSRAM140に記憶しておく。なお、デフォルト遅延値がシミュレーションを実施して算出されたデータストローブ信号の出力タイミング遅延値の場合には、シミュレーションで用いた基準温度をTbとする。
Da=Db+α(Ta−Tb) (1)
で表わされる。αは単位温度変化当たりのクロック信号の伝播時間変化分であり、メモリモジュール20の各メモリチップについて、温度変化とクロック信号の伝播時間変化の対応テーブルとして、あらかじめSRAM140に記憶されている。Taは現時点のメモリモジュール20の温度であり、後述するように、ZQキャリブレーション制御部122のZQキャリブレーション制御機能を利用して取得する。Tbは補正前のデフォルト遅延値Dbに対応する温度であり、前回のライトレベリング制御終了の際に、デフォルト遅延値に付加してSRAM140に記憶しておく。なお、デフォルト遅延値がシミュレーションを実施して算出されたデータストローブ信号の出力タイミング遅延値の場合には、シミュレーションで用いた基準温度をTbとする。
図6に戻り、ライトレベリング制御部121は、メモリモジュール20へクロック信号(CLK)を出力すると共に、メモリモジュール20内のメモリチップ21−iに対して、式(1)により温度変化が反映されたデフォルト遅延値(Da)だけクロック信号(CLK)から遅延させてデータストローブ信号(DQS)を出力する(ステップ1003)。そして、ライトレベリング制御部121は、メモリモジュール20内のメモリチップ21−iからデータ信号(DQ)の到来を待つ。
これ以降のライトレベリング制御部121の動作は、図5の場合と同じであるので、説明は省略する。
メモリモジュール20内の全メモリチップ21−1〜21−nのライトレベリング制御が終了した場合、ライトレベリング制御部121は、メモリチップ21−1〜21−nに対応するデータストローブ信号の出力タイミング遅延値を主制御部110に送付する。この時、ライトレベリング制御部121は、ZQキャリブレーション制御部122のZQキャリブレーション機能を利用して取得した温度情報も一緒に主制御部110に送付する。
主制御部110は、ライトレベリング制御部121から送付されたメモリチップ21−1〜21−nに対応するデータストローブ信号の出力タイミング遅延値及び温度情報をSRAM140に格納する。この時、SRAM140に前回の遅延値及び温度情報が記憶されていれば、これらを今回の遅延値及び温度情報で更新する。この温度情報が、次回のライトレベリング制御の際にTbとなる。
実施例2によれば、ライトレベリングのデフォルト遅延値に温度変化が反映されるため、先の実施例1に比べて、ライトレベリング制御のトータルの実施時間を更に短縮することができる。
次に、ZQキャリブレーション制御部122の構成・動作について説明する。先に述べたように、ZQキャリブレーション制御部122はハードロジック制御とする。
図7は、ZQキャリブレーション制御部122の具体的構成例を示した図である。ZQキャリブレーション制御部122は、比較回路(1)1221、比較回路(2)1222、カウンタ(1)1223、制御回路(1)1224、プルアップ回路(1)1225、プルアップ回路(2)1226、カウンタ(2)1227、制御回路(2)1228、プルアップ回路(2)1229、固定抵抗R1、可変抵抗R2及び温度検出用抵抗(リニア温度変化抵抗)Rtからなる。プルアップ回路(1)1225、プルアップ回路(2)1226及びプルダウン回路1229は、それぞれ複数のトランジスタと複数の抵抗で構成される。ZQ端子(ZQキャリブレーション用端子)には、外部抵抗R0が接続されている。
図7の構成は、トランジスタTRと温度検出用抵抗Rtを除けば、例えば特開2007−123987号公報(特許文献1)に記載のZQキャリブレーション回路と基本的に同様である。
比較器(1)1221は、ZQ端子の電位と抵抗R1,R2の接続点の電位とを比較する。通常のZQキャリブレーションでは、抵抗R2の値は、抵抗R1と等しい値に設定される。カウンタ(1)1223は、比較器(1)1221の比較結果に応じてカウントアップあるいはカウントダウンする。制御回路(1)1224は、カウンタ(1)1223のカウント値に応じて、プルアップ回路(1)1225及びプルアップ回路(2)1226のトランジスタ群をオン/オフすることでインピーダンス調整する。
比較器(2)1222は、プルアップ回路(2)1226とプルダウン回路1229の接続点の電位と抵抗R1,R2の接続点の電位とを比較する。カウンタ(2)1227は、比較器(2)1222の比較結果に応じてカウントアップあるいはカウントダウンする。制御回路(2)1228は、カウンタ(2)1227のカウント値に応じてプルダウン回路1229のトランジスタ群をオン/オフすることでインピーダンス調整する。
通常のZQキャリブレーション制御では、温度検出用抵抗Rtは使用しない。すなわち、トランジスタTRをオフとする。この通常のZQキャリブレーション制御の動作は、例えば、特許文献1に詳述されているので、ここでは説明を省略する。
ZQキャリブレーション制御終了後に、温度検出用抵抗Rtを使用してZQキャリブレーション制御と同様の制御を行って、メモリモジュール20の温度検出を行う。この温度検出の際には、比較器(2)1222、カウンタ(2)1227、制御回路(2)1228、プルアップ回路(1)1225、プルアップ回路(2)1226、プルダウン回路1229は使用しない。すなわち、比較器(1)1221、カウンタ(1)1223、制御回路(1)1224、温度検出用抵抗Rt、固定抵抗R1、可変抵抗R2及び外部抵抗R0が温度検出手段として機能する。
温度検出時、トランジスタTRをオンとして、温度検出用抵抗RtをZQ端子に接続する。比較器(1)1221は、ZQ端子の電位と抵抗R1,R2の接続点の電位とを比較する。カウンタ(1)1223は、比較器(1)1221の比較結果に応じてカウントアップあるいはカウントダウンする。制御回路(1)1224は、カウンタ(1)1223のカウント値に応じて、可変抵抗R2の抵抗値を変化させる。
温度検出動作は、比較器(1)1221の比較結果が略ゼロになった時点で終了となる。この時、可変抵抗R2と温度検出用抵抗Rtの抵抗値が一致する。そして、この時のカウンタ(1)1223のカウント値が温度検出用抵抗Rtの抵抗値を表わしている。したがって、このカウンタ(1)1223のカウント値からメモリモジュール20の温度を算出することができる。
一般に、メモリコントローラ10とメモリモジュール20は同一のプリント基板(PWB)上に形成される。また、ZQキャリブレーション制御とライトレベリング制御は前後して実施される。したがって、ライトレベリング制御部121が、ZQキャリブレーション制御部122からカウンタ(1)1223のカウント値を取り込み、抵抗値・温度対応テーブル等を用いて温度を算出することで、メモリモジュール20の現時点の温度Taを取得することができる。
なお、主制御部110がZQキャリブレーション制御部122からカウンタ(1)123のカウント値を取り込んで、同様に抵抗値・温度対応テーブル等を用いて温度を算出して、ライトレベリング制御部121に渡すことでもよい。抵抗値・温度対応テーブルは、あらかじめSRAM140に記憶しておく。
ZQ端子に接続されるZQキャリブレーション用抵抗R0は、一般に240Ω±1%程度の高精度抵抗であり、温度係数は±100ppm/℃程度である。したがって、温度検出用抵抗Rtとしては、温度係数は1000ppm以上が望ましい。
以上、図面を参照して、本発明の一実施形態について説明したが、本発明は図示の実施形態に限定されるものではない。先に述べたように、本発明はDDR3メモリに限定されるものではない。また、メモリモジュールの現時点の温度は、ZQキャリブレーション制御部の機能を利用しないで、別途温度センサ等の温度検出手段で直接に検出することでもよい。
10 メモリコントローラ
20 メモリモジュール(DIMM)
21−1〜21−n メモリチップ(SDRAM)
30 クロック等信号線
40−1〜40−n データストローブ等信号線
110 主制御部
120 メモリインタフェース部
121 ライトレベリング制御部
122 ZQキャリブレーション制御部
Rt 温度検出用抵抗
20 メモリモジュール(DIMM)
21−1〜21−n メモリチップ(SDRAM)
30 クロック等信号線
40−1〜40−n データストローブ等信号線
110 主制御部
120 メモリインタフェース部
121 ライトレベリング制御部
122 ZQキャリブレーション制御部
Rt 温度検出用抵抗
JEDEC STANDARD,DDR3 SDRAM Specification,JESD79-3B(Revision of JESD79-3A,September 2007),April 2008,JEDEC SOLID STATE TECHNOLOGY ASSOCIATION
Claims (7)
- 複数のメモリチップからなるメモリモジュールと、クロック信号線は前記メモリモジュール内の複数のメモリチップとディジーチェーンで接続され、データストローブ信号線は前記メモリモジュール内の複数のメモリチップと個別に接続されてなるメモリコントローラであって、
前記メモリモジュール内の各メモリチップについて、クロック信号とデータストローブ信号との間の伝播時間のズレを補正するためのライトレベリング制御手段を有し、
前記ライトレベリング制御手段は、前記メモリモジュール内の各メモリチップについて、所定の遅延時間をライトレベリングのデフォルト遅延値として、あらかじめクロック信号の出力タイミングからデータストローブ信号の出力タイミングを前記デフォルト遅延値だけ遅延してライトレベリングを開始することを特徴とするメモリコントローラ。 - 前記デフォルト遅延値は、前回のライトレベリングで得られたデータストローブ信号の出力タイミング遅延値とすることを特徴とする請求項1に記載のメモリコントローラ。
- 前記デフォルト遅延値は、事前にシミュレーションを実施して算出されたデータストローブ信号の出力タイミング遅延値とすることを特徴とする請求項1に記載のメモリコントローラ。
- メモリモジュールの温度を検出する温度検出手段を更に有し、前記ライトレベリング制御手段は、前記温度に応じて前記デフォルト遅延値を補正することを特徴とする請求項1乃至3のいずれか1項に記載のメモリコントローラ。
- 出力ドライバのインピーダンスを調整するZQキャリブレーション制御手段を更に有し、前記ZQキャリブレーション制御手段は温度検出用抵抗を備え、
前記ZQキャリブレーション制御手段が前記温度検出手段として前記温度検出を抵抗を利用してメモリモジュールの温度を検出することを特徴とする請求項4に記載のメモリコントローラ。 - 前記ZQキャリブレーン制御手段は、ZQキャリブレーションを実施した後に前記温度検出手段として前記温度検出用抵抗を利用してメモリモジュールの温度を検出することを特徴とする請求項5に記載のメモリコントローラ。
- 複数のメモリチップからなるメモリモジュールと、クロック信号線は前記メモリモジュール内の複数のメモリチップとディジーチェーンで接続され、データストローブ信号線は前記メモリモジュール内の複数のメモリチップと個別に接続されてなるメモリコントローラにおいて、前記メモリモジュール内の各メモリチップについて、クロック信号とデータストローブ信号との間の伝播時間のズレを補正するためのライトレベリング制御方法であって、
前記メモリモジュール内の各メモリチップについて、所定の遅延時間をライトレベリングのデフォルト遅延値として、あらかじめクロック信号の出力タイミングからデータストローブ信号の出力タイミングを前記デフォルト遅延値だけ遅延してライトレベリングを開始することを特徴とするメモリコントローラのライトレベリング制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012255291A JP2014102741A (ja) | 2012-11-21 | 2012-11-21 | メモリコントローラ及びメモリコントローラのライトレベリング制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012255291A JP2014102741A (ja) | 2012-11-21 | 2012-11-21 | メモリコントローラ及びメモリコントローラのライトレベリング制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014102741A true JP2014102741A (ja) | 2014-06-05 |
Family
ID=51025182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012255291A Pending JP2014102741A (ja) | 2012-11-21 | 2012-11-21 | メモリコントローラ及びメモリコントローラのライトレベリング制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014102741A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019036198A (ja) * | 2017-08-18 | 2019-03-07 | 京セラドキュメントソリューションズ株式会社 | 情報処理装置、及び画像形成装置 |
CN109947868A (zh) * | 2019-03-22 | 2019-06-28 | 晶晨半导体(上海)股份有限公司 | 一种存储系统的信号显示方法 |
JP2021043907A (ja) * | 2019-09-13 | 2021-03-18 | キオクシア株式会社 | メモリシステム |
CN114141287A (zh) * | 2020-09-04 | 2022-03-04 | 长鑫存储技术有限公司 | 存储装置的读写方法及存储装置 |
-
2012
- 2012-11-21 JP JP2012255291A patent/JP2014102741A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019036198A (ja) * | 2017-08-18 | 2019-03-07 | 京セラドキュメントソリューションズ株式会社 | 情報処理装置、及び画像形成装置 |
CN109947868A (zh) * | 2019-03-22 | 2019-06-28 | 晶晨半导体(上海)股份有限公司 | 一种存储系统的信号显示方法 |
JP2021043907A (ja) * | 2019-09-13 | 2021-03-18 | キオクシア株式会社 | メモリシステム |
JP7332406B2 (ja) | 2019-09-13 | 2023-08-23 | キオクシア株式会社 | メモリシステム |
CN114141287A (zh) * | 2020-09-04 | 2022-03-04 | 长鑫存储技术有限公司 | 存储装置的读写方法及存储装置 |
CN114141287B (zh) * | 2020-09-04 | 2024-03-26 | 长鑫存储技术有限公司 | 存储装置的读写方法及存储装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11513955B2 (en) | Memory module with local synchronization and method of operation | |
KR101733483B1 (ko) | 메모리 시스템 내에서 쓰기 레벨링을 위한 시작 값들을 조정하는 방법 | |
KR101532529B1 (ko) | 메모리 시스템 내 기록 타이밍을 교정하기 위한 방법 및 장치 | |
US9507738B2 (en) | Method and system for synchronizing address and control signals in threaded memory modules | |
US8913448B2 (en) | Apparatuses and methods for capturing data in a memory | |
US9851744B2 (en) | Address and control signal training | |
US20120163104A1 (en) | Delay adjustment device, semiconductor device and delay adjustment method | |
JP6434161B2 (ja) | ソースシンクロナスインターフェースから受信する制御デバイスのキャリブレーション | |
US8982650B2 (en) | Memory interface circuit and timing adjusting method | |
JP2008052335A (ja) | インターフェース回路 | |
US6760263B2 (en) | Method and device for controlling data latch time | |
JP5807952B2 (ja) | メモリコントローラ及びメモリ制御方法 | |
US8582376B2 (en) | Timing adjustment circuit for a memory interface and method of adjusting timing for memory interface | |
JP2014102741A (ja) | メモリコントローラ及びメモリコントローラのライトレベリング制御方法 | |
JP2013109637A (ja) | メモリインターフェース回路、および、そのメモリインターフェース回路の動作方法 | |
US9570135B2 (en) | Apparatuses and methods to delay memory commands and clock signals | |
US20150146477A1 (en) | Semiconductor device | |
US20150049562A1 (en) | Memory control circuit and method of controlling data reading process of memory module | |
JP2012203515A (ja) | 半導体装置 | |
US9158330B1 (en) | Apparatus and method to compensate for data skew for multiple memory devices and adjust delay for individual data lines based on an optimized critical window | |
US8009485B2 (en) | Semiconductor memory device | |
US8344775B2 (en) | Clock delay correcting device and semiconductor device having the same | |
US10637638B2 (en) | Semiconductor apparatus for transmitting and receiving a signal in synchronization with a clock signal | |
KR102006239B1 (ko) | 데이터 출력 회로 | |
CN114518837B (zh) | 运用于存储器系统的多循环写入均衡程序的处理方法 |