(57)【要約】      （修正有）【課題】アクセス時間の増大を抑制しつつ、ランク切替時のデータの衝突を防止することが可能なメモリコントローラを提供する。【解決手段】メモリコントローラＨＴは、ストローブ遅延調整部８とクロック遅延調整部１とが設けられている。ストローブ遅延調整部８は、複数のメモリＭ１、Ｍ２に対してデータストローブ信号ＤＱＳの遅延量を共通に調整し、クロック遅延調整部１は、前記複数のメモリＭ１、Ｍ２のクロック信号ＣＫ１、ＣＫ２の遅延量を個別に調整する。【選択図】図２
2013196574.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリに対してクロック信号に対するデータストローブ信号の遅延量を前記メモリごとに計測するストローブ遅延量計測回路と、
前記ストローブ遅延量計測回路にて計測された前記遅延量を前記メモリごとに記憶するストローブ遅延量記憶回路と、
前記ストローブ遅延量記憶回路に記憶された前記遅延量に基づいて、前記クロック信号の遅延量を前記メモリごとに設定するクロック遅延設定回路と、
前記クロック遅延設定回路にて設定された遅延量に基づいて前記クロック信号の遅延量を前記メモリごとに調整するクロック遅延調整回路と、
データのリードレベリングに基づいて、複数のメモリに対してデータストローブ信号の遅延量を共通に調整するストローブ遅延調整部とを備えることを特徴とするメモリコントローラ。
【請求項２】
複数のメモリに対してデータストローブ信号の遅延量を共通に調整するストローブ遅延調整部と、
前記複数のメモリに対してクロック信号の遅延量を個別に調整するクロック遅延調整部とを備えることを特徴とするメモリコントローラ。
【請求項３】
前記クロック遅延調整部は、
前記複数のメモリに対してクロック信号に対するデータストローブ信号の遅延量を前記メモリごとに計測するストローブ遅延量計測回路と、
前記ストローブ遅延量計測回路にて計測された前記遅延量を前記メモリごとに記憶するストローブ遅延量記憶回路と、
前記ストローブ遅延量記憶回路に記憶された前記遅延量に基づいて、前記クロック信号の遅延量を前記メモリごとに設定するクロック遅延設定回路と、
前記クロック遅延設定回路にて設定された遅延量に基づいて前記クロック信号の遅延量を前記メモリごとに調整するクロック遅延調整回路とを備えることを特徴とする請求項２に記載のメモリコントローラ。
【請求項４】
前記ストローブ遅延調整部は、データのリードレベリングに基づいて、複数のメモリに対してデータストローブ信号の遅延量を共通に調整することを特徴とする請求項２または３に記載のメモリコントローラ。
【請求項５】
前記メモリの切替時のリードアクセス間隔が０になるようにリードコマンドを発行することを特徴とする請求項２から４のいずれか１項に記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はメモリコントローラに関する。
【背景技術】
【０００２】
ＤＤＲ３やＬＰＤＤＲなどの規格では、チップセレクト信号ＣＳをイネーブルにするだけで複数のランクに対応することができる。なお、ランクは、ＤＲＡＭデバイス機能の構成単位で、通常では１チップ当たり１ランクと呼ぶ。
【０００３】
この複数のランクでは、ＤＲＡＭの配置や特性によって、ランクごとに信号の遅延が異なっている。ランク切替時にリードアクセスを短い間隔で行うと、互いに異なるランクから出力されたリードデータがホスト側の入力端で衝突する可能性があった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−１８８３０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態の目的は、アクセス時間の増大を抑制しつつ、ランク切替時のデータの衝突を防止することが可能なメモリコントローラを提供することである。
【課題を解決するための手段】
【０００６】
実施形態のメモリコントローラによれば、ストローブ遅延調整部とクロック遅延調整部とが設けられている。ストローブ遅延調整部は、複数のメモリに対してデータストローブ信号の遅延量を共通に調整する。クロック遅延調整部は、前記複数のメモリに対してクロック信号の遅延量を個別に調整する。
【図面の簡単な説明】
【０００７】
【図１】図１は、一実施形態に係るメモリコントローラにおける複数ランク構成の一例を示すブロック図である。
【図２】図２は、図１のメモリコントローラおよびメモリのインターフェース部分の概略構成を示すブロック図である。
【図３】図３は、図２のクロック遅延調整回路の構成例を示すブロック図である。
【図４】図４は、図１のメモリコントローラの遅延調整動作を示すフローチャートである。
【図５】図５は、比較例のメモリコントローラにおけるデータストローブ信号の遅延調整方法を示すタイミングチャートである。
【図６】図６は、比較例のメモリコントローラにおけるクロック信号の遅延調整前のリードアクセスタイミングを示すタイミングチャートである。
【図７】図７は、図１のメモリコントローラにおけるクロック信号の遅延調整後のリードアクセスタイミングを示すタイミングチャートである。
【図８】図８は、図１のメモリコントローラにおけるクロック信号の遅延調整後のリードアクセス方法を示すタイミングチャートである。
【発明を実施するための形態】
【０００８】
以下、実施形態に係るメモリコントローラについて図面を参照しながら説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００９】
図１は、一実施形態に係るメモリコントローラにおける複数ランク構成の一例を示すブロック図である。
図１において、メモリコントローラＨＴには、メモリＭ１、Ｍ２が接続されている。なお、メモリＭ１、Ｍ２としては、例えば、ＤＲＡＭを用いることができる。ここで、メモリコントローラＨＴとメモリＭ１との間では、クロック信号ＣＫ１、チップセレクト信号ＣＳ１およびクロックイネーブル信号ＣＫＥ１が授受される。メモリコントローラＨＴとメモリＭ２との間では、クロック信号ＣＫ２、チップセレクト信号ＣＳ２およびクロックイネーブル信号ＣＫＥ２が授受される。メモリコントローラＨＴとメモリＭ１、Ｍ２との間では、コマンドＣＭＤおよびデータＤＡが授受される。なお、コマンドＣＭＤは、例えば、ロウアドレスストローブ信号ＲＡＳ、カラムアドレスストローブ信号ＣＡＳ、ライトイネーブル信号ＷＥおよびアドレスＡＤを含むことができる。データＤＡは、データＤＱ、データストローブ信号ＤＱＳおよびバンクアドレスＢＡを含むことができる。
【００１０】
ここで、クロック信号ＣＫ１、ＣＫ２、チップセレクト信号ＣＳ１、ＣＳ２およびクロックイネーブル信号ＣＫＥ１、ＣＫＥ２の信号線はメモリＭ１、Ｍ２ごとに個別に設けられている。コマンドＣＭＤおよびデータＤＡのバスはメモリＭ１、Ｍ２に共通に設けられている。なお、各メモリＭ１、Ｍ２は１ランクを構成することができ、２個のメモリＭ１、Ｍ２で２ランクを構成することができる。
【００１１】
図２は、図１のメモリコントローラおよびメモリのインターフェース部分の概略構成を示すブロック図である。
図２において、メモリコントローラＨＴには、クロック遅延調整部１およびストローブ遅延調整部８が設けられている。ストローブ遅延調整部８は、メモリＭ１、Ｍ２に対してデータストローブ信号ＤＱＳの遅延量を共通に調整することができる。クロック遅延調整部１は、各メモリＭ１、Ｍ２のクロック信号ＣＫ１、ＣＫ２の遅延量を個別に調整することができる。
【００１２】
ここで、クロック遅延調整部１には、ＰＬＬ回路２、ストローブ遅延量計測回路３、ストローブ遅延量記憶回路４、クロック遅延設定回路５および第１、第２のクロック遅延調整回路６、７が設けられている。ＰＬＬ回路２は、ＰＬＬ動作に基づいてクロック信号ＣＫを生成することができる。ストローブ遅延量計測回路３は、クロック信号ＣＫに対するデータストローブ信号ＤＱＳの遅延量をメモリＭ１、Ｍ２ごとに計測することができる。ストローブ遅延量記憶回路４は、ストローブ遅延量計測回路３にて計測された遅延量をメモリＭ１、Ｍ２ごとに記憶することができる。ここで、ストローブ遅延量記憶回路４には、テーブルＴＢが設けられている。ここで、このテーブルＴＢには、クロック信号ＣＫに対するメモリＭ１からのデータストローブ信号ＤＱＳの遅延量をＦ１、クロック信号ＣＫに対するメモリＭ２からのデータストローブ信号ＤＱＳの遅延量をＦ２とすると、各メモリＭ１、Ｍ２における遅延量Ｆ１、Ｆ２がメモリＭ１、Ｍ２ごとに登録される。また、このテーブルＴＢは、ストローブ遅延調整部８においてデータストローブ信号ＤＱＳの遅延量が調整される場合にも参照される。クロック遅延設定回路５は、ストローブ遅延量記憶回路４に記憶された遅延量Ｆ１、Ｆ２に基づいて、クロック信号ＣＫの遅延量をメモリＭ１、Ｍ２ごとに設定することができる。第１のクロック遅延調整回路６は、クロック遅延設定回路５にて設定された遅延量Ｆ１に基づいて、メモリＭ１におけるクロック信号ＣＫ１の遅延量を調整することができる。第２のクロック遅延調整回路７は、クロック遅延設定回路５にて設定された遅延量Ｆ２に基づいて、メモリＭ２におけるクロック信号ＣＫ２の遅延量を調整することができる。
【００１３】
また、メモリコントローラＨＴにはバッファＢ１〜Ｂ４、Ｂ１４、Ｂ１５が設けられ、メモリＭ１にはバッファＢ５〜Ｂ８、Ｂ１６が設けられ、メモリＭ２にはバッファＢ９〜Ｂ１３が設けられている。ここで、バッファＢ１は、第１のクロック遅延調整回路６にて遅延量が調整されたクロック信号ＣＫ１をメモリＭ１に出力する。バッファＢ２は、第２のクロック遅延調整回路７にて遅延量が調整されたクロック信号ＣＫ２をメモリＭ２に出力する。バッファＢ３は、データストローブ信号ＤＱＳをメモリＭ１、Ｍ２に出力する。バッファＢ４は、データストローブ信号ＤＱＳをストローブ遅延量計測回路３およびストローブ遅延調整部８に入力する。バッファＢ１４は、データＤＱをメモリＭ１、Ｍ２に出力する。バッファＢ１５は、データＤＱをストローブ遅延調整部８に入力する。バッファＢ５は、クロック信号ＣＫ１をメモリＭ１に入力する。バッファＢ６は、データストローブ信号ＤＱＳをメモリＭ１に入力する。バッファＢ７は、データストローブ信号ＤＱＳをメモリコントローラＨＴに出力する。バッファＢ８は、データＤＱをメモリコントローラＨＴに出力する。バッファＢ１６は、データＤＱをメモリＭ１に入力する。バッファＢ９は、クロック信号ＣＫ２をメモリＭ２に入力する。バッファＢ１０は、データストローブ信号ＤＱＳをメモリＭ２に入力する。バッファＢ１１は、データストローブ信号ＤＱＳをメモリコントローラＨＴに出力する。バッファＢ１２は、データＤＱをメモリコントローラＨＴに出力する。バッファＢ１３は、データＤＱをメモリＭ２に入力する。
【００１４】
以下、図２のメモリコントローラＨＴの遅延調整動作について説明する。
図２において、ストローブ遅延調整部８では、データＤＱのリードレベリングに基づいて、メモリＭ１、Ｍ２に対してデータストローブ信号ＤＱＳの遅延量が共通に調整される。すなわち、メモリＭ１、Ｍ２のデータＤＱの全ビットについてデータストローブ信号ＤＱＳに対する遅延量が検出される。それらのデータＤＱの遅延量がメモリＭ１，Ｍ２のうち遅い結果の値になるようにデータストローブ信号ＤＱＳの遅延量が調整される。
【００１５】
一方、クロック遅延調整部１では、遅延調整動作時においては第１および第２のクロック遅延調整回路６、７による遅延調整動作がオフされる。そして、ＰＬＬ回路２にて生成されたクロック信号ＣＫは、第１および第２のクロック遅延調整回路６、７による遅延調整が行われることなく、バッファＢ１、Ｂ２をそれぞれ介して出力され、さらにバッファＢ５、Ｂ９をそれぞれ介してメモリＭ１、Ｍ２に入力される。そして、メモリＭ１、Ｍ２において、クロック信号ＣＫに基づいてデータストローブ信号ＤＱＳがそれぞれ生成され、バッファＢ７、Ｂ１１をそれぞれ介して出力され、さらにバッファＢ４を介してメモリコントローラＨＴに入力される。なお、メモリＭ１、Ｍ２間でデータストローブ信号ＤＱＳの信号線が共有されている場合、各メモリＭ１、Ｍ２からのデータストローブ信号ＤＱＳは時分割的に出力することができる。
【００１６】
そして、ストローブ遅延量計測回路３において、クロック信号ＣＫに対する各メモリＭ１、Ｍ２からのデータストローブ信号ＤＱＳの遅延量が計測され、それらの遅延量Ｆ１、Ｆ２がメモリＭ１、Ｍ２ごとにストローブ遅延量記憶回路４に記憶される。そして、クロック遅延設定回路５において、ストローブ遅延量記憶回路４に記憶された遅延量Ｆ１、Ｆ２にそれぞれ基づいて、クロック遅延調整回６、７におけるクロック信号ＣＫの遅延量が設定される。
【００１７】
次に、図２のメモリコントローラＨＴの遅延調整後のリードアクセス動作について説明する。
図２において、リードアクセス動作時においては第１および第２のクロック遅延調整回路６、７による遅延調整動作がオンされる。そして、第１および第２のクロック遅延調整回路６、７において、クロック信号ＣＫの遅延調整が行われることで、クロック信号ＣＫ１、ＣＫ２がそれぞれ生成される。そして、クロック信号ＣＫ１、ＣＫ２は、バッファＢ１、Ｂ２をそれぞれ介して出力され、さらにバッファＢ５、Ｂ９をそれぞれ介してメモリＭ１、Ｍ２に入力される。そして、メモリＭ１、Ｍ２において、クロック信号ＣＫ１、ＣＫ２にそれぞれ基づいてデータストローブ信号ＤＱＳがそれぞれ生成され、バッファＢ７、Ｂ１１をそれぞれ介して出力され、さらにバッファＢ４を介してメモリコントローラＨＴに入力される。
【００１８】
また、メモリＭ１からのデータＤＱは、メモリＭ１からのデータストローブ信号ＤＱＳに同期してメモリコントローラＨＴに出力される。また、メモリＭ２からのデータＤＱは、メモリＭ２からのデータストローブ信号ＤＱＳに同期してメモリコントローラＨＴに出力される。なお、メモリＭ１、Ｍ２間でデータＤＱのバスが共有されている場合、各メモリＭ１、Ｍ２からのデータＤＱは時分割的に出力することができる。
【００１９】
ここで、メモリＭ１からのデータストローブ信号ＤＱＳはクロック信号ＣＫ１に基づいて生成され、メモリＭ２からのデータストローブ信号ＤＱＳはクロック信号ＣＫ２に基づいて生成される。このため、クロック信号ＣＫに対する各メモリＭ１、Ｍ２からのデータストローブ信号ＤＱＳのレスポンスが異なる場合においても、各メモリＭ１、Ｍ２からのデータストローブ信号ＤＱＳの立ち上がりタイミングを互いに一致させることができる。この結果、データストローブ信号ＤＱＳの信号線およびデータＤＱのバスがメモリＭ１、Ｍ２間で共有されている場合においても、ランク切替時にリードアクセスの間隔を空けることなく、ランク切替時にデータの衝突を防止することが可能となり、アクセス時間の増大を抑制することができる。
【００２０】
なお、図１および図２では、２個のメモリＭ１、Ｍ２がメモリコントローラＨＴに接続されている場合を例にとったが、Ｎ（Ｎは正の整数）個のメモリがメモリコントローラＨＴに接続されている場合に適用してもよい。
【００２１】
図３は、図２のクロック遅延調整回路の構成例を示すブロック図である。
図３において、例えば、第１のクロック遅延調整回路６には、インバータＶ１〜Ｖ４、セレクタＬ１〜Ｌ４およびレジスタＲＧが設けられている。ここで、セレクタＬ１〜Ｌ４は順次直列に接続されている。そして、各セレクタＬ１〜Ｌ４は、インバータＶ１〜Ｖ４をそれぞれ通した出力またはインバータＶ１〜Ｖ４をそれぞれ通さない出力を選択し、次段に出力することができる。また、レジスタＲＧには、遅延量Ｆ１に対応したインバータＶ１〜Ｖ４の段数を格納することができる。
【００２２】
そして、レジスタＲＧに記憶された値に応じてセレクタＬ１〜Ｌ４が切り替えられることにより、遅延量Ｆ１に対応したインバータＶ１〜Ｖ４の段数が設定され、入力信号ＩＮに対して遅延量Ｆ１だけ遅延された入力信号ＯＵＴが出力される。
なお、第２のクロック遅延調整回路７についても同様に構成することができる。また、図３の例では、インバータＶ１〜Ｖ４およびセレクタＬ１〜Ｌ４を４段分だけ設ける方法について説明したが、インバータＶ１〜Ｖ４およびセレクタＬ１〜Ｌ４は任意の段数だけ設けることができる。また、図３はクロック遅延調整回路の一例を示したものであり、インバータ、セレクタに限られず、他の回路を用いることも可能である。
【００２３】
図４は、図１のメモリコントローラの遅延調整動作を示すフローチャートである。なお、図４では、メモリＭ１、Ｍ２として任意の個数のＤＲＡＭが設けられている場合を例にとった。
図４において、メモリコントローラＨＴおよびＤＲＡＭの初期化を行った後（Ｓ１、Ｓ２）、データストローブ信号ＤＱＳの遅延調整を行う（Ｓ３）。次に、メモリコントローラＨＴが出力するクロック信号ＣＫに対してｎ（ｎは正の整数）番目のＤＲＡＭから受信するデータストローブ信号ＤＱＳの遅延量を計測し（Ｓ４）、その計測値を保存する（Ｓ５）。
【００２４】
そして、メモリコントローラＨＴに接続される全てのＤＲＡＭに対してデータストローブ信号ＤＱＳの遅延量の計測が完了したかどうかを判断する（Ｓ６）。そして、全てのＤＲＡＭに対してデータストローブ信号ＤＱＳの遅延量の計測が完了してない場合は、Ｓ４に戻り、全てのＤＲＡＭに対してデータストローブ信号ＤＱＳの遅延量の計測が完了するまでＳ４〜Ｓ６の処理を繰り返す。
【００２５】
次に、各ＤＲＡＭについてのデータストローブ信号ＤＱＳの遅延量に基づいて、各ＤＲＡＭごとにクロック信号ＣＫの遅延量を個別に設定する（Ｓ７）。
【００２６】
図５は、比較例のメモリコントローラにおけるデータストローブ信号の遅延調整方法を示すタイミングチャートである。
図５において、データストローブ信号ＤＱＳの遅延調整前では、各メモリＭ１、Ｍ２からのデータストローブ信号ＤＱＳのレスポンスのばらつきに起因して、メモリＭ１、Ｍ２からのデータＤＱの各ビット間において、データＤＱの受信タイミングがばらつく。このため、メモリＭ１、Ｍ２からの各ビットの受信タイミングにおいて、ビット間スキューＳＫが発生する。
【００２７】
この時、ストローブ遅延調整部８では、メモリＭ１、Ｍ２からの各ビットのリードレベリングに基づいて、メモリＭ１、Ｍ２に対してデータストローブ信号ＤＱＳの遅延量が共通に調整される。すなわち、メモリＭ１、Ｍ２からの各ビットの受信タイミングの中央値Ｅがデータストローブ信号ＤＱＳの立ち上がりエッジに一致するように、データストローブ信号ＤＱＳの遅延量が調整され、データストローブ信号ＤＱＳの位相がＤＱＳギア値Ｐだけシフトされる。これにより、メモリＭ１、Ｍ２からのデータＤＱの各ビットの受信タイミングのばらつきを低減することができる。しかし、異なるランク間でこの遅延調整値は一致しない。
【００２８】
図６は、比較例のメモリコントローラにおけるクロック信号の遅延調整前のリードアクセスタイミングを示すタイミングチャートである。なお、図６の例では、各メモリＭ１、Ｍ２からのデータＤＱとして８ビット分のデータＤ０〜Ｄ７を示した。また、図６の例では、クロック信号ＣＫの立ち上がりタイミングおよび立ち下がりタイミングでリードアクセスが行われる場合を示した。
図６において、第１および第２のクロック遅延調整回路６、７による遅延調整が行われる前は、メモリＭ１からのデータストローブ信号ＤＱＳは、メモリＭ２からのデータストローブ信号ＤＱＳに対して遅延量ＤＬだけ遅延する。このため、ランク切替時にリードアクセスの間隔を空けないと、メモリＭ１からのデータＤＱとメモリＭ２からのデータＤＱが衝突する。
【００２９】
図７は、図１のメモリコントローラにおけるクロック信号の遅延調整後のリードアクセスタイミングを示すタイミングチャートである。
図７において、メモリＭ１からのデータストローブ信号ＤＱＳはクロック信号ＣＫ１に基づいて生成され、メモリＭ２からのデータストローブ信号ＤＱＳはクロック信号ＣＫ２に基づいて生成される。ここで、クロック信号ＣＫ２に対してクロック信号ＣＫ１の遅延量がＤＬに設定されると、そのクロック信号ＣＫ１の遅延量ＤＬに応じてメモリＭ１からのデータストローブ信号ＤＱＳが遅延する。このため、図６のメモリＭ２からのデータストローブ信号ＤＱＳの遅延量ＤＬを相殺させることができ、各メモリＭ１、Ｍ２からのデータストローブ信号ＤＱＳの立ち上がりタイミングを互いに一致させることができる。
【００３０】
図８は、図１のメモリコントローラにおけるクロック信号の遅延調整後のリードアクセス方法を示すタイミングチャートである。
図８において、各メモリＭ１、Ｍ２からのデータストローブ信号ＤＱＳの立ち上がりタイミングが互いに一致している場合、ランク切替時にリードアクセスの間隔を空けることなくデータＤＱの衝突を防止することが可能となり、アクセス時間の増大を抑制することができる。
【００３１】
例えば、各メモリＭ１、Ｍ２からのデータＤＱが８ビット分のデータＤ０〜Ｄ７から構成される場合、リードコマンド間隔ＭＴを４サイクルに設定した場合においても、データＤＱの衝突を防止することができる。これに対して、図６の遅延調整のない場合では、データＤＱの衝突を防止するために、リードコマンド間隔ＭＴを５サイクルに設定する必要があり、アクセス時間が増大する。
【００３２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００３３】
ＨＴ  メモリコントローラ、Ｍ１、Ｍ２  メモリ、１  クロック遅延調整部、２  ＰＬＬ回路、３  ストローブ遅延量計測回路、４  ストローブ遅延量記憶回路、５  クロック遅延設定回路、６  第１のクロック遅延調整回路、７  第２のクロック遅延調整回路、８  ストローブ遅延調整部、Ｂ１〜Ｂ１６  バッファ、Ｖ１〜Ｖ４  インバータ、Ｌ１〜Ｌ４  セレクタ、ＲＧ  レジスタ
【図１】
2013196574.tif 000003
【図２】
2013196574.tif 000004
【図３】
2013196574.tif 000005
【図４】
2013196574.tif 000006
【図５】
2013196574.tif 000007
【図６】
2013196574.tif 000008
【図７】
2013196574.tif 000009
【図８】
2013196574.tif 000010