(57)【要約】【課題】メモリのライトレベリングに要する時間を短縮する。【解決手段】メモリコントローラ１は、データストローブ信号線が複数のメモリＭ０〜Ｍ７と個別に接続され、差動クロック信号線Ｌ１，Ｌ２がメモリＭ０〜Ｍ７とフライバイ構成で接続された複数系統を制御する。このメモリコントローラ１は、複数系統のうち第１系統２１における各メモリＭ０〜Ｍ３の差動クロック信号ＣＬＫ１とデータストローブ信号ＤＱＳ０〜ＤＱＳ３との間の伝播時間のズレを補正するライトレベリングを実施するライトレベリング制御部１２と、第１系統２１における各メモリＭ０〜Ｍ３のデータストローブ信号ＤＱＳ０〜ＤＱＳ３の出力タイミング遅延量に基づき、第２系統２２におけるメモリＭ４〜Ｍ７のデータストローブ信号ＤＱＳ４〜ＤＱＳ７の出力タイミング遅延量を割り付ける遅延量割付部１３とを有する。【選択図】図１
2017138667.tif 000002
【特許請求の範囲】
【請求項１】
データストローブ信号線が複数のメモリチップと個別に接続され、クロック信号線が複数のメモリチップとフライバイ構成で接続された複数系統を制御するメモリコントローラであって、
前記複数系統のうち１系統における各メモリチップのクロック信号とデータストローブ信号との間の伝播時間のズレを補正するライトレベリングを実施し、前記１系統における各メモリチップのデータストローブ信号の出力タイミング遅延量を決定するライトレベリング制御手段と、
前記ライトレベリング制御手段が決定した前記１系統における各メモリチップのデータストローブ信号の出力タイミング遅延量に基づき、当該１系統を除く他系統における各メモリチップのデータストローブ信号の出力タイミング遅延量を割り付ける遅延量割付手段と、
を有することを特徴とするメモリコントローラ。
【請求項２】
前記ライトレベリング制御手段が決定した前記１系統における各メモリチップのデータストローブ信号の出力タイミング遅延量を、当該１系統を除く前記他系統における各メモリチップのデータストローブ信号の出力タイミング遅延量に対応するよう補正する系統別遅延量補正手段を備え、
前記遅延量割付手段は、前記系統別遅延量補正手段が補正した各前記他系統における各メモリチップのデータストローブ信号の出力タイミング遅延量を割り付ける、
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記複数系統のメモリは、それぞれ電気的特性が等価であって、
前記遅延量割付手段は、前記ライトレベリング制御手段が決定した前記１系統における各メモリチップのデータストローブ信号の出力タイミング遅延量を、当該１系統を除く他系統における各メモリチップのデータストローブ信号の出力タイミング遅延量として割り付ける
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項４】
対称に配置されている２系統のメモリチップ群を制御する、
ことを特徴とする請求項３に記載のメモリコントローラ。
【請求項５】
前記複数系統からライトレベリングを実施する系統を選択可能である、
ことを特徴とする請求項１ないし請求項４のうちいずれか１項に記載のメモリコントローラ。
【請求項６】
前記ライトレベリング制御手段にて決定した出力タイミング遅延量を割り付ける系統が選択可能である、
ことを特徴とする請求項１ないし請求項４のうちいずれか１項に記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライトレベリング機能を備えるメモリコントローラに関する。
【背景技術】
【０００２】
近年の半導体集積回路技術の向上により、産業用の計測機器で使用される制御コントローラのＣＰＵ（Central Processing Unit）や主記憶メモリ、通信モジュールは、高性能化されている。これにより、産業用の計測機器の高スループット化に貢献している。ここで産業用の計測機器とは、例えば半導体検査装置などをいう。
【０００３】
一方、理化学分野の自動分析装置に使用される制御コントローラには、高い信頼性と長期運用可能な耐久性とが求められる。そのため、自動分析装置の制御コントローラには、コントローラ稼働中のトレース情報や、各種エラーログといったＲＡＳ（Reliability Availability Serviceability）情報を収集する機能が搭載されている。これら情報により、制御コントローラの不具合発生時の解析に役立てることができる。
【０００４】
また、画像処理分野で使用される制御コントローラは、複数の情報機器間で画像データを送受信する場合に、これら情報機器の処理速度や転送速度の差を補うため、画像データを一時的に保存するデータバッファリング用途で使用されている。
【０００５】
さらには、制御コントローラが搭載するＣＰＵの高性能化に伴い、これまでＰＣ側で行なっていたＧＵＩ（Graphical User Interface）等の処理を制御コントローラで実行できる可能性が出てきている。
【０００６】
今後、装置内での制御コントローラの処理範囲が拡大していくと、プログラムや不具合解析に必要なＲＡＳ情報、画像処理で扱うデータ量の増加が想定されるため、制御コントローラに搭載する主記憶メモリの大容量化が望まれている。本発明は、制御コントローラのメモリコントローラとしての機能に関する発明である。
【０００７】
主記憶メモリの技術的動向としては、DDR2 SDRAMからDDR3 SDRAM、DDR4 SDRAMとデータ転送速度は年々高速化しており、現在の市場は、DDR3 SDRAMが主流となっている。DDR3 SDRAMは、DDR2 SDRAMよりも更に高速化しているため、メモリコントローラとメモリ間の信号のシグナルインテグリティが重要となる。シグナルインテグリティとは、信号線を流れるデジタル信号の品質のことである。そのため、クロック／アドレス／コマンド等の共通信号は、メモリコントローラとメモリ間の信号の接続において、DDR2 SDRAMで推奨されるトーナメント方式のようなＴブランチトポロジに対して、DDR3 SDRAMでは数珠つなぎで接続するフライバイトポロジが推奨されている。
【０００８】
フライバイトポロジでは、クロック／アドレス／コマンド等の共通信号が各メモリにリニアに伝送されるので、Ｔブランチトポロジに比べてスタブ数とスタブ長を減らすことができ、シグナルインテグリティを向上させることができる。また、DDR3 SDRAMにおいても、データ信号線とデータストローブ信号線とは各メモリに対して一対一で接続される。この接続方式の違いにより、フライバイトポロジの場合、クロック信号とデータ信号／データストローブ信号間で伝播時間に位相差が生じる。DDR3メモリコントローラ（以下、「メモリコントローラ」と記載する。）には、この位相差を補正するため、レベリング機能が搭載されている。
レベリング機能には、ライトレベリングとリードレベリングがあり、それぞれ使用する目的が異なる。以下、ライトレベリングの概要について説明する。
【０００９】
メモリライト時において、正常に信号を授受するため、クロック信号のエッジとデータ信号／データストローブ信号のエッジを同期させなければならない。このため、クロック信号の伝播遅延により、クロック信号とデータ信号／データストローブ信号に位相差が生じた場合、データストローブ信号の出力タイミングをクロック信号の伝播遅延と合致するように遅延させる必要がある。ライトレベリングとは、この遅延量を決定するため、DDR3 SDRAMから簡易的なフィードバック情報を取得し、メモリコントローラ内でデータストローブ信号の遅延量を調整する機能である。
【００１０】
ライトレベリングにて各メモリは、メモリコントローラから出力されるデータストローブ信号の立ち上がりエッジでクロック信号をサンプリングし、サンプリング結果をデータ端子から出力する。メモリコントローラは、このデータ信号によりデータストローブ信号とクロック信号の位相関係を検出し、データストローブ信号の出力タイミングを調整する。メモリコントローラは、各メモリにおいてクロック信号とデータストローブ信号の位相が揃うまで、データストローブ信号の出力タイミングを徐々に変更していく。このため、メモリコントローラに接続されるメモリの数が多くなればなるほど、メモリコントローラのライトレベリング実施時間が長くなる。
【００１１】
この課題に対して、特許文献１には、ライトレベリングの実施時間を短縮する制御方法が提案されている。特許文献１の要約書の解決手段には、「メモリモジュール（ＤＩＭＭ）２０は複数のメモリチップで構成されている。メモリコントローラ１０は、このメモリモジュールと、クロック信号はメモリモジュール内の複数のメモリチップとディジーチェーンで接続され、データストローブ信号線はメモリモジュール内の複数のメモリチップと個別に接続されている。ここで、ライトレベリング制御部１２１は、メモリモジュール内の各メモリチップについて、所定の遅延時間をライトレベリングのデフォルト遅延値として、あらかじめクロック信号の出力タイミングからデータストローブ信号の出力タイミングをデフォルト遅延値だけ遅延してライトレベリングを開始するようにする。」と記載されている。
【００１２】
特許文献１の段落００４３には、「ライトレベリングのデフォルト遅延値には、前回のライトレベリング制御で取得したデータストローブ信号の出力タイミング遅延値や、事前にシミュレーションを実施して得られたデータストローブ信号の出力タイミング遅延値を利用する。」と記載されている。デフォルト遅延値を設定することによる効果は、段落００３３に、「デフォルト遅延値だけデータストローブ信号（ＤＱＳ）の出力タイミングを遅延させておくことで、ライトレベリングの実行回数を少なくすることができ、ライトレベリングの実施時間が短縮される。」と記載されている。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２０１４−１０２７４１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかし、特許文献１に記載されているように、デフォルト遅延値を設定するには、新たなシミュレーション環境を必要とする。また、メモリを数珠つなぎで接続するフライバイトポロジでは、メモリ接続数が多くなるとクロック信号への負荷が増大し、シグナルインテグリティを保つことが難しくなるおそれもある。
そこで、本発明は、メモリコントローラにおいて、メモリのライトレベリングに要する時間の短縮を課題とする。
【課題を解決するための手段】
【００１５】
前記した課題を解決するため、本発明のメモリコントローラは、データストローブ信号線が複数のメモリチップと個別に接続され、クロック信号線が複数のメモリチップとフライバイ構成で接続された複数系統を制御する。このメモリコントローラは、前記複数系統のうち１系統における各メモリチップのクロック信号とデータストローブ信号との間の伝播時間のズレを補正するライトレベリングを実施し、前記１系統における各メモリチップのデータストローブ信号の出力タイミング遅延量を決定するライトレベリング制御手段と、前記ライトレベリング制御手段が決定した前記１系統における各メモリチップのデータストローブ信号の出力タイミング遅延量に基づき、当該１系統を除く他系統における各メモリチップのデータストローブ信号の出力タイミング遅延量を割り付ける遅延量割付手段とを有する。
その他の手段については、発明を実施するための形態のなかで説明する。
【発明の効果】
【００１６】
本発明によれば、メモリのライトレベリングに要する時間が短縮できる。
【図面の簡単な説明】
【００１７】
【図１】第１の実施形態における２系統クロック使用時のメモリコントローラとメモリとの接続を示す図である。
【図２】メモリコントローラとメモリの接続に関するガイドラインを示す図である。
【図３】第２の実施形態における４系統クロック使用時のメモリコントローラとメモリとの接続を示す図である。
【図４】第１系統ライトレベリング時の出力タイミング遅延量の処理を示す図である。
【図５】比較例における１系統クロック使用時のメモリコントローラとメモリとの接続を示す図である。
【図６】ライトレベリング制御の概念を示すタイムチャートである。
【図７】ライトレベリング制御を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以降、本発明を実施するための形態を、各図を参照して詳細に説明する。なお、以下ではDDR3 SDRAMを例に説明しているが、本発明はDDR3 SDRAMに限定されるものではない。
本発明に関わる制御コントローラは、産業用の装置に組込み可能な基板である。比較例と第１の実施形態では、DDR3 SDRAMに代表される８個のメモリと、そのメモリコントローラを片面に実装した場合の構成について説明する。また第２の実施形態では、DDR3 SDRAMに代表される１６個のメモリと、そのメモリコントローラを片面に実装した場合の構成について説明する。
【００１９】
（比較例）
図５から図７により、比較例の構成とライトレベリングの概要について説明する。
図５は、比較例における単一系統のクロック使用時のメモリコントローラ１ＡとメモリＭ０〜Ｍ７との接続を示す図である。
レベリング機能を搭載するメモリコントローラ１Ａは、差動クロック信号線Ｌ０によりフライバイトポロジでメモリＭ０〜Ｍ７と接続される。これらメモリＭ０〜Ｍ７は、半導体集積回路がパッケージ化されたメモリチップであり、差動クロック信号線Ｌ０で接続されて単一系統２０を構成する。この差動クロック信号線Ｌ０は、抵抗Ｒ０により終端される。メモリコントローラ１Ａは、この差動クロック信号線Ｌ０を介してメモリＭ０〜Ｍ７に差動クロック信号ＣＬＫ１を出力する。
以下、各メモリＭ０〜Ｍ７を特に区別しないときには、単にメモリＭと記載する。
【００２０】
データストローブ信号ＤＱＳ０の信号線（図示省略）は、メモリコントローラ１Ａの当該信号端子とメモリＭ０とを接続する。データストローブ信号ＤＱＳ１の信号線（図示省略）は、メモリコントローラ１Ａの当該信号端子とメモリＭ１とを接続する。以下同様に、データストローブ信号ＤＱＳ２〜ＤＱＳ７の信号線（図示省略）は、メモリコントローラ１Ａの各信号端子とメモリＭ２〜Ｍ７とを接続する。つまりメモリコントローラ１Ａの各信号端子とメモリＭ０〜Ｍ７とは、データストローブ信号ＤＱＳ０〜ＤＱＳ７の信号線により一対一で接続される。以下、データストローブ信号ＤＱＳ０〜ＤＱＳ７を特に区別しないときには、単にデータストローブ信号ＤＱＳと記載する。
【００２１】
データ信号ＤＱ０の信号線（図示省略）は、メモリコントローラ１Ａの当該信号端子とメモリＭ０とを接続し、データ信号ＤＱ１の信号線（図示省略）はメモリコントローラ１Ａの当該信号端子とメモリＭ１とを接続する。以下同様に、データ信号ＤＱ２〜ＤＱ７の信号線（図示省略）は、メモリコントローラ１Ａの各信号端子とメモリＭ２〜Ｍ７とをそれぞれ接続する。つまりメモリコントローラ１Ａの各信号端子とメモリＭ０〜Ｍ７とは、データ信号ＤＱ０〜ＤＱ７の信号線により一対一で接続される。
以下、データ信号ＤＱ０〜ＤＱ７を特に区別しないときには、単にデータ信号ＤＱと記載する。
更にメモリコントローラ１Ａのコマンド信号端子とメモリＭ０〜Ｍ７とは、コマンド信号ＣＭＤの信号線により一対多で接続される。コマンド信号ＣＭＤにより、メモリコントローラ１Ａは、メモリＭ０〜Ｍ７に対してレベリングの実行と終了とを指示することができる。
メモリコントローラ１ＡとメモリＭ０〜Ｍ７とは更に、アドレスなどの他の信号線によっても接続されているが、上記以外の他の信号線の説明は省略する。
【００２２】
フライバイトポロジにおいて、差動クロック信号ＣＬＫ１は、メモリＭ０〜Ｍ７を通過する度に伝播遅延する。しかし、データストローブ信号ＤＱＳ０〜ＤＱＳ７の信号線は一対一で接続されるため、メモリＭ０〜Ｍ７における伝播遅延は僅かである。そのため、メモリＭ０〜Ｍ７における差動クロック信号ＣＬＫ１の伝播時間とデータストローブ信号ＤＱＳ０〜ＤＱＳ７の伝播時間にズレ（位相差）が生じる。この差動クロック信号ＣＬＫ１の伝播時間とデータストローブ信号ＤＱＳ０〜ＤＱＳ７の伝播時間のズレは、メモリＭ０〜Ｍ７でそれぞれ異なる。
メモリＭ０〜Ｍ７は、データストローブ信号ＤＱＳ０〜ＤＱＳ７と差動クロック信号ＣＬＫ１とを同期させてデータのリード／ライトを行う。よって、メモリコントローラ１Ａは、メモリＭ０〜Ｍ７におけるデータストローブ信号ＤＱＳ０〜ＤＱＳ７と差動クロック信号ＣＬＫ１との伝播時間のズレ（位相差）を補正する必要がある。この補正機能は、ライトレベリング機能と呼ばれている。
【００２３】
メモリコントローラ１Ａは、内部に主制御部１１、ライトレベリング制御を実行するライトレベリング制御部１２を有する。
主制御部１１は、このメモリコントローラ１Ａを統括して制御する。
ライトレベリング制御部１２は、システムの起動時または動作中に周期的にライトレベリングを実施して、メモリＭ０〜Ｍ７からデータ信号ＤＱ０〜ＤＱ７を通してフィードバックされた情報を元に出力タイミング遅延量を決定する。
【００２４】
図６（ａ）〜（ｄ）は、ライトレベリング制御の概念を示すタイムチャートである。図６（ａ），（ｂ）はライトレベリング開始時を示し、図６（ｃ），（ｄ）はライトレベリング終了時を示している。なお、これら図６（ａ）〜（ｄ）における各タイミングは、模式的なものである。
図６（ａ）はライトレベリング開始時におけるメモリコントローラ１Ａの動作を示している。図６（ａ）において差動クロック信号ＣＬＫ、データストローブ信号ＤＱＳは、メモリコントローラ１Ａにおける波形である。
比較例のメモリコントローラ１Ａは、ライトレベリング開始時に、差動クロック信号ＣＬＫに同期してデータストローブ信号ＤＱＳを出力する。つまり、差動クロック信号ＣＬＫの立ち上がりとデータストローブ信号ＤＱＳの立ち上がりとは同期しており、これらの出力タイミングは時刻Ｔ０である。
【００２５】
図６（ｂ）はライトレベリング開始時におけるメモリＭの動作を示している。図６（ｂ）において差動クロック信号ＣＬＫ、データストローブ信号ＤＱＳ、データ信号ＤＱは、メモリＭにおける波形である。比較例の差動クロック信号ＣＬＫ１や後記する第１実施形態の差動クロック信号ＣＬＫ１，ＣＬＫ２は、図６（ｂ）に差動クロック信号ＣＬＫとして示されている。
ライトレベリング開始時に、差動クロック信号ＣＬＫとデータストローブ信号ＤＱＳとは、メモリコントローラ１ＡからメモリＭへの伝播時間だけ遅延している。差動クロック信号線Ｌ０がフライバイトポロジにてメモリＭ０〜Ｍ７に接続されているので、差動クロック信号ＣＬＫは、データストローブ信号ＤＱＳよりも大きく遅延する。よって、メモリＭにおける差動クロック信号ＣＬＫ１の立ち上がりは、データストローブ信号ＤＱＳの立ち上がりよりも遅延する。ここで、データストローブ信号ＤＱＳの立ち上がりは、時刻Ｔ１である。時刻Ｔ０から時刻Ｔ１までの時間は、データストローブ信号ＤＱＳの伝播時間に相当する。
差動クロック信号ＣＬＫの立ち上がりは、時刻Ｔ５である。時刻Ｔ０から時刻Ｔ５までの時間は、差動クロック信号ＣＬＫの伝播時間に相当する。なお実際には、時刻Ｔ０から時刻Ｔ１までの時間は、時刻Ｔ０から時刻Ｔ５までの時間に比べて小さい。
【００２６】
メモリＭは、メモリコントローラ１Ａが出力したコマンド信号ＣＭＤにより、予めライトレベリングモードに設定されている。ライトレベリングモードにてメモリＭは、データストローブ信号ＤＱＳの立ち上がりである時刻Ｔ１にて差動クロック信号ＣＬＫをサンプリングし、その結果を時刻Ｔ２にデータ信号ＤＱとして出力する。時刻Ｔ１における差動クロック信号ＣＬＫは“０”なので、データ信号ＤＱは、時刻Ｔ２以降は“０”となる。このデータ信号ＤＱは、メモリＭからメモリコントローラ１Ａへの伝播時間が経過したのちに、メモリコントローラ１Ａによって読み取られる。
メモリコントローラ１Ａは、データ信号ＤＱが“０”であることから、差動クロック信号ＣＬＫに対してデータストローブ信号ＤＱＳが進んでいることを検知する。このとき、メモリコントローラ１Ａは、データ信号ＤＱが反転するまでデータストローブ信号ＤＱＳを所定時間Δｔずつ遅らせることで、メモリＭにおける差動クロック信号ＣＬＫの立ち上がりとデータストローブ信号ＤＱＳの立ち上がりとを同期させることができる。
【００２７】
仮にメモリコントローラ１Ａがデータストローブ信号ＤＱＳを遅延させるなどで、メモリＭにおけるデータストローブ信号ＤＱＳの立ち上がりが差動クロック信号ＣＬＫの立ち上がりよりも遅延しているときには、時刻Ｔ２にてデータ信号ＤＱは“１”となる。このとき、メモリコントローラ１Ａは、データ信号ＤＱが反転するまでデータストローブ信号ＤＱＳを所定時間Δｔずつ進ませることで、メモリＭにおける差動クロック信号ＣＬＫの立ち上がりとデータストローブ信号ＤＱＳの立ち上がりとを同期させることができる。
【００２８】
図６（ｃ）は、ライトレベリング終了時におけるメモリコントローラ１Ａの動作を示している。図６（ｃ）において差動クロック信号ＣＬＫ、データストローブ信号ＤＱＳは、メモリコントローラ１Ａにおける波形である。
ライトレベリング終了時にメモリコントローラ１Ａは、差動クロック信号ＣＬＫよりもデータストローブ信号ＤＱＳを遅延量Ｔだけ遅延させて出力する。つまり、差動クロック信号ＣＬＫの立ち上がりよりも、データストローブ信号ＤＱＳの立ち上がりは、遅延量Ｔだけ遅延している。
【００２９】
図６（ｄ）はライトレベリング終了時におけるメモリＭの動作を示している。図６（ｄ）において差動クロック信号ＣＬＫ、データストローブ信号ＤＱＳ、データ信号ＤＱは、メモリＭにおける波形である。
ライトレベリング終了時に差動クロック信号ＣＬＫの立ち上がりは、時刻Ｔ３よりもやや早く、データストローブ信号ＤＱＳの立ち上がりとほぼ同期している。なお図６（ｄ）では、差動クロック信号ＣＬＫの立ち上がりと、データストローブ信号ＤＱＳの立ち上がりとを同一の時刻Ｔ３として示している。
ライトレベリングモードにてメモリＭは、データストローブ信号ＤＱＳの立ち上がりである時刻Ｔ３にて差動クロック信号ＣＬＫをサンプリングし、その結果を時刻Ｔ４にデータ信号ＤＱとして出力する。時刻Ｔ３における差動クロック信号ＣＬＫは“１”なので、データ信号ＤＱは、時刻Ｔ４以降は“１”となる。つまり、データ信号ＤＱは、図６（ｂ）に示した“０”から図６（ｄ）に示す“１”に反転する。このデータ信号ＤＱは、メモリＭからメモリコントローラ１Ａへの伝播時間が経過したのちに、メモリコントローラ１Ａによって読み取られる。
【００３０】
メモリコントローラ１Ａは、データ信号ＤＱが反転したときの遅延量Ｔを、このメモリＭの出力タイミング遅延量として決定する。図６（ｃ）の遅延量Ｔは、メモリコントローラ１ＡからメモリＭへの差動クロック信号ＣＬＫの伝播時間と、データストローブ信号ＤＱＳの伝播時間との差に対応する。なお、データストローブ信号ＤＱＳの伝播時間は、差動クロック信号ＣＬＫの伝播時間よりも小さいので、遅延量Ｔを差動クロック信号ＣＬＫの伝播時間として近似してもよい。
【００３１】
図７は、ライトレベリング制御を示すフローチャートである。適宜図５と図６（ａ）〜（ｄ）とを参照しながら、このフローチャートを説明する。
メモリコントローラ１Ａは、コマンド信号ＣＭＤによりメモリＭをライトレベリングモードに設定したのち、ライトレベリング制御部１２により、以下のライトレベリング制御を行ったのち、メモリＭを通常モードに戻す。このライトレベリング制御は、システムの起動時または動作中に周期的に行われる。
【００３２】
ライトレベリング制御部１２は、差動クロック信号ＣＬＫとデータストローブ信号ＤＱＳとをメモリＭに出力する（ステップＳ１０）。このときの差動クロック信号ＣＬＫとデータストローブ信号ＤＱＳとは、図６（ａ），（ｂ）のタイムチャートに示されている。
ライトレベリング制御部１２は、データ信号ＤＱが“０”ならば（ステップＳ１１→Ｙｅｓ）、データストローブ信号ＤＱＳを所定時間Δｔだけ遅らせて（ステップＳ１２）、差動クロック信号ＣＬＫとデータストローブ信号ＤＱＳとをメモリＭに出力する（ステップＳ１３）。ライトレベリング制御部１２は、データ信号ＤＱが“１”で無いならば（ステップＳ１４→Ｎｏ）、これらステップＳ１２，Ｓ１３の処理を繰り返す。
【００３３】
ライトレベリング制御部１２は、データ信号ＤＱが“１”ならば（ステップＳ１４→Ｙｅｓ）、このときのデータストローブ信号ＤＱＳの出力タイミング遅延量を、対象とするメモリＭに係る出力タイミング遅延量として決定する（ステップＳ１８）。このときの差動クロック信号ＣＬＫとデータストローブ信号ＤＱＳとは、図６（ｃ），（ｄ）のタイムチャートに示されている。
【００３４】
また、ライトレベリング制御部１２は、データ信号ＤＱが“１”ならば（ステップＳ１１→Ｎｏ）、データストローブ信号ＤＱＳを所定時間Δｔだけ早めて（ステップＳ１５）、差動クロック信号ＣＬＫとデータストローブ信号ＤＱＳとをメモリＭに出力する（ステップＳ１６）。ライトレベリング制御部１２は、データ信号ＤＱが“０”で無いならば（ステップＳ１７→Ｎｏ）、これらステップＳ１５，Ｓ１６の処理を繰り返す。
【００３５】
ライトレベリング制御部１２は、データ信号ＤＱが“０”ならば（ステップＳ１７→Ｙｅｓ）、このときのデータストローブ信号ＤＱＳの出力タイミング遅延量を、対象とするメモリＭに係る出力タイミング遅延量として決定する（ステップＳ１８）。
【００３６】
以後、メモリコントローラ１Ａは、メモリＭからデータ信号ＤＱが“０”を示す間、差動クロック信号ＣＬＫに対して、データストローブ信号ＤＱＳが進んでいる間、データストローブ信号ＤＱＳの出力タイミングを所定時間Δｔずつ徐々に遅らせて、データストローブ信号ＤＱＳを繰り返し出力する。メモリＭは、メモリコントローラ１Ａからデータストローブ信号ＤＱＳを受取る毎に、該データストローブ信号ＤＱＳの立ち上がりで差動クロック信号ＣＬＫをサンプリングし、その結果をデータ信号ＤＱとして出力する。
【００３７】
比較例におけるライトレベリング制御の場合、メモリコントローラ１Ａから配線距離が遠いメモリＭほど、メモリコントローラ１Ａからの差動クロック信号ＣＬＫ１が伝播する時間が大きいため、ライトレベリング制御に時間が掛かる。
比較例におけるライトレベリングの実施時間は、各メモリＭ０〜Ｍ７のライトレベリングの実施時間の総和となる。特にメモリＭ７は、差動クロック信号ＣＬＫ１の伝播時間がメモリＭ０〜Ｍ７のうち最も大きいため、ライトレベリングの実施時間も長くなる。また、メモリ接続数が多くなるほど、メモリ全体のライトレベリング時間は長くなる。
【００３８】
比較例によれば、差動クロック信号線Ｌ０に多くのメモリが接続されているので、メモリ全体のライトレベリング処理に要する時間が増加するおそれがある。また、差動クロック信号ＣＬＫ１に掛かるメモリ負荷の増加により、シグナルインテグリティを保てなくなるおそれがある。
【００３９】
（第１の実施形態）
第１の実施形態は、比較例で説明した課題を解決するものである。以下、図１と図２により、第１の実施形態を説明する。
図１は、第１の実施形態における２系統クロック使用時のメモリコントローラ１とメモリＭ０〜Ｍ７との接続を示す図である。
第１の実施形態のレベリング機能を搭載するメモリコントローラ１は、図５に示した比較例とは異なり、差動クロック信号線Ｌ１によりメモリＭ０〜Ｍ３をフライバイトポロジで接続し、差動クロック信号線Ｌ２によりメモリＭ４〜Ｍ７をフライバイトポロジで接続する。この差動クロック信号線Ｌ１は、メモリコントローラ１からメモリＭ０〜Ｍ３に差動クロック信号ＣＬＫ１を出力する信号線であり、抵抗Ｒ１により終端される。メモリＭ０〜Ｍ３は、半導体集積回路がパッケージ化されたメモリチップであり、差動クロック信号線Ｌ１で接続されて、第１系統２１を構成する。
差動クロック信号線Ｌ２は、メモリコントローラ１からメモリＭ４〜Ｍ７に差動クロック信号ＣＬＫ２を出力する信号線であり、抵抗Ｒ２により終端される。メモリＭ４〜Ｍ７は、電気的特性がメモリＭ０〜Ｍ３と等価なメモリチップであり、差動クロック信号線Ｌ２で接続され、第２系統２２を構成する。
【００４０】
ここで、第１系統２１のメモリＭ０〜Ｍ３および差動クロック信号線Ｌ１と、第２系統２２のメモリＭ４〜Ｍ７および差動クロック信号線Ｌ２とは、電気的特性が等価である。つまり、メモリコントローラ１からメモリＭ０までの差動クロック信号線Ｌ１の電気的特性と、メモリコントローラ１からメモリＭ４までの差動クロック信号線Ｌ２の電気的特性とは等価である。以下、メモリコントローラ１からメモリＭ１〜Ｍ３までの差動クロック信号線Ｌ１の各電気的特性と、メモリコントローラ１からメモリＭ５〜Ｍ７までの差動クロック信号線Ｌ２の各電気的特性も等価である。
このように第１系統２１の差動クロック信号線Ｌ１の電気的特性と、第２系統２２の差動クロック信号線Ｌ２の電気的特性とを等価にするため、第１系統２１の差動クロック信号線Ｌ１と第２系統２２の差動クロック信号線Ｌ２とは、対称にレイアウトされている。また、第１系統２１のメモリＭ０〜Ｍ３と、第２系統２２のメモリＭ４〜Ｍ７とは、対称に配置されている。
【００４１】
データストローブ信号ＤＱＳ０の信号線（図示省略）は、比較例と同様にメモリコントローラ１の当該信号端子とメモリＭ０とを接続する。以下同様に、データストローブ信号ＤＱＳ１〜ＤＱＳ７の信号線（図示省略）は、メモリコントローラ１の各信号端子とメモリＭ１〜Ｍ７とを接続する。つまりメモリコントローラ１の各信号端子とメモリＭ０〜Ｍ７とは、データストローブ信号ＤＱＳ０〜ＤＱＳ７の信号線により一対一で接続される。
【００４２】
ここで、第１系統２１のデータストローブ信号ＤＱＳ０〜ＤＱＳ３の信号線と、第２系統２２のデータストローブ信号ＤＱＳ４〜ＤＱＳ７の信号線とは、電気的特性が等価である。
このように第１系統２１のデータストローブ信号ＤＱＳ０〜ＤＱＳ３の信号線の電気的特性と、第２系統２２のデータストローブ信号ＤＱＳ４〜ＤＱＳ７の信号線の電気的特性とを等価にするため、データストローブ信号ＤＱＳ０〜ＤＱＳ３の信号線とデータストローブ信号ＤＱＳ４〜ＤＱＳ７の信号線とは、対称にレイアウトされている。
なお、データストローブ信号ＤＱＳがメモリコントローラ１からメモリＭ０〜Ｍ７へ伝播する時間は、差動クロック信号ＣＬＫの伝播時間よりも小さい。よって、データストローブ信号ＤＱＳ０〜ＤＱＳ３の信号線と、データストローブ信号ＤＱＳ４〜ＤＱＳ７の信号線とは、必ずしも対称にレイアウトしなくともよい。
【００４３】
データ信号ＤＱ０の信号線（図示省略）は、比較例と同様にメモリコントローラ１の当該信号端子とメモリＭ０とを接続する。以下同様に、データ信号ＤＱ１〜ＤＱ７の信号線（図示省略）は、比較例と同様にメモリコントローラ１の各信号端子とメモリＭ２〜Ｍ７と接続される。つまりメモリコントローラ１の各端子とメモリＭ０〜Ｍ７とは、データ信号ＤＱ０〜ＤＱ７の信号線により一対一で接続される。
更にメモリコントローラ１のコマンド信号端子とメモリＭ０〜Ｍ７において、第１系統２１のコマンド信号ＣＭＤ１の信号線Ｌａは、差動クロック信号線Ｌ１と同様にメモリＭ０〜Ｍ３をフライバイトポロジにて接続し、第２系統２２のコマンド信号ＣＭＤ２の信号線Ｌｂは、差動クロック信号線Ｌ２と同様にメモリＭ４〜Ｍ７をフライバイトポロジにて接続する。メモリコントローラ１は、信号線Ｌａを介してコマンド信号ＣＭＤ１を出力することにより、メモリＭ０〜Ｍ３に対してレベリングの実行と終了とを指示することができる。同様にメモリコントローラ１は、信号線Ｌｂを介してコマンド信号ＣＭＤ２を出力することにより、メモリＭ４〜Ｍ７に対してレベリングの実行と終了とを指示することができる。
【００４４】
フライバイトポロジにおいて、第１系統２１の差動クロック信号ＣＬＫ１は、それぞれメモリＭ０〜Ｍ３を通過する度に伝播遅延する。そのため、メモリＭ０〜Ｍ３において差動クロック信号ＣＬＫ１とデータストローブ信号ＤＱＳ０〜ＤＱＳ３との伝播時間にズレが生じる。この差動クロック信号ＣＬＫ１の伝播時間のズレは、メモリＭ０〜Ｍ３でそれぞれ異なる。
【００４５】
第２系統２２の差動クロック信号ＣＬＫ２は、メモリＭ４〜Ｍ７を通過する度に伝播遅延する。そのため、差動クロック信号ＣＬＫ２とデータストローブ信号ＤＱＳ４〜ＤＱＳ７のメモリＭ４〜Ｍ７における伝播時間にズレが生じる。第１系統２１と第２系統２２とは、電気的特性が等価であり、対称に構成されている。
そのため、メモリＭ４における差動クロック信号ＣＬＫ２の伝播時間のズレは、メモリＭ０における差動クロック信号ＣＬＫ１の伝播時間のズレと、ほぼ等しくなる。同様に、メモリＭ５〜Ｍ７における差動クロック信号ＣＬＫ２の伝播時間のズレは、メモリＭ１〜３における差動クロック信号ＣＬＫ１の伝播時間のズレと、ほぼ等しくなる。
【００４６】
メモリコントローラ１は、内部に主制御部１１、ライトレベリング制御を実行するライトレベリング制御部１２を有し、更に遅延量割付部１３、遅延量伝送部１４を有する。
主制御部１１は、このメモリコントローラ１を統括して制御する。
ライトレベリング制御部１２は、システムの起動時または動作中に周期的にライトレベリングを実施して、メモリＭ０〜Ｍ３からデータ信号ＤＱ０〜ＤＱ３を通してフィードバックされた情報を元に出力タイミング遅延量を決定する。
【００４７】
遅延量割付部１３は、ライトレベリング制御部１２によって決定された出力タイミング遅延量をデータストローブ信号ＤＱＳ４〜ＤＱＳ７に割り付ける。
遅延量伝送部１４は、遅延量割付部１３が割り付けた各遅延量に基づきデータストローブ信号ＤＱＳ４〜ＤＱＳ７をメモリＭ４〜Ｍ７に伝送する。これらライトレベリング制御部１２と遅延量割付部１３と遅延量伝送部１４とは、メモリＭ０〜Ｍ７における差動クロック信号ＣＬＫとデータストローブ信号ＤＱＳとの伝播時間のズレを補正する。
【００４８】
図２は、メモリコントローラ１とメモリＭ０〜Ｍ７の接続に関するガイドラインを示す図である。
差動クロック信号線Ｌ１は、２本の差動信号線を介してメモリＭ０〜Ｍ３に接続されており、抵抗Ｒ１ａ，Ｒ１ｂとコンデンサＣｔ１により終端される。２本の差動信号線には、差動クロック信号ＣＬＫ１と差動クロック信号ＣＬＫ１＃とが出力される。
メモリＭ０は、長さ（ＴＬ０１＋ＴＬ０２）の差動信号線と、メモリＭ０への分岐ノードに接続された長さＴＬ０４の差動信号線とを介して、メモリコントローラ１（図１参照）に接続される。
メモリＭ１は、メモリＭ０への分岐ノードに接続された長さＴＬ０３の差動信号線と、メモリＭ１への分岐ノードに接続された長さＴＬ０５の差動信号線とを介して、メモリコントローラ１（図１参照）に接続される。
メモリＭ２は、メモリＭ１への分岐ノードに接続された長さＴＬ０６の差動信号線と、メモリＭ２への分岐ノードに接続された長さＴＬ０７の差動信号線とを介して、メモリコントローラ１（図１参照）に接続される。
メモリＭ３は、メモリＭ２への分岐ノードに接続された長さＴＬ０９の差動信号線と、メモリＭ３への分岐ノードに接続された長さＴＬ０８の差動信号線とを介して、メモリコントローラ１（図１参照）に接続される。差動クロック信号線Ｌ１は更に、メモリＭ３への分岐ノードに接続された長さ（ＴＬ１０＋ＴＬ１１）の差動信号線を介して抵抗Ｒ１ａ，Ｒ１ｂの一端に接続される。抵抗Ｒ１ａ，Ｒ１ｂの他端は、コンデンサＣｔ１に接続される。なお、抵抗Ｒ１ａ，Ｒ１ｂは、図１に示した抵抗Ｒ１に相当する。
【００４９】
差動クロック信号線Ｌ２は、２本の差動信号線を介してメモリＭ４〜Ｍ７に接続されており、抵抗Ｒ２ａ，Ｒ２ｂとコンデンサＣｔ２により終端される。なお、抵抗Ｒ２ａは抵抗Ｒ１ａの抵抗値と等しく、抵抗Ｒ２ｂは抵抗Ｒ１ｂの抵抗値と等しく、コンデンサＣｔ２はコンデンサＣｔ１の容量と等しい。２本の差動信号線には、差動クロック信号ＣＬＫ２と差動クロック信号ＣＬＫ２＃とが出力される。
メモリＭ４は、長さ（ＴＬ０１＋ＴＬ０２）の差動信号線と、メモリＭ４への分岐ノードに接続された長さＴＬ０４の差動信号線とを介して、メモリコントローラ１（図１参照）に接続される。
メモリＭ５は、メモリＭ４への分岐ノードに接続された長さＴＬ０３の差動信号線と、メモリＭ５への分岐ノードに接続された長さＴＬ０５の差動信号線とを介して、メモリコントローラ１（図１参照）に接続される。
メモリＭ６は、メモリＭ５への分岐ノードに接続された長さＴＬ０６の差動信号線と、メモリＭ６への分岐ノードに接続された長さＴＬ０７の差動信号線とを介して、メモリコントローラ１（図１参照）に接続される。
メモリＭ７は、メモリＭ６への分岐ノードに接続された長さＴＬ０９の差動信号線と、メモリＭ７への分岐ノードに接続された長さＴＬ０８の差動信号線とを介して、メモリコントローラ１（図１参照）に接続される。差動クロック信号線Ｌ１は更に、メモリＭ７への分岐ノードに接続された長さ（ＴＬ１０＋ＴＬ１１）の差動信号線を介して抵抗Ｒ２ａ，Ｒ２ｂの一端に接続される。抵抗Ｒ２ａ，Ｒ２ｂの他端は、コンデンサＣｔ２に接続される。なお、抵抗Ｒ２ａ，Ｒ２ｂは、図１に示した抵抗Ｒ２に相当する。
【００５０】
図２に示すとおり、第１系統２１のメモリＭ０〜Ｍ３に接続する差動クロック信号線Ｌ１と、第２系統２２のメモリＭ４〜Ｍ７に接続する差動クロック信号線Ｌ２とは、対称にレイアウトされることが望ましい。更に第１系統２１のメモリＭ０〜Ｍ３と、第２系統２２のメモリＭ４〜Ｍ７とは、対称に配置されることが望ましい。第１系統２１のメモリ接続数と第２系統２２のメモリ接続数とは、等しくなければならない。更に差動クロック信号ＣＬＫ１，ＣＬＫ２の動作周波数は、等しくなければならない。これにより、メモリＭ０〜Ｍ３における差動クロック信号ＣＬＫ１の伝播遅延と、メモリＭ４〜Ｍ７における差動クロック信号ＣＬＫ２の伝播遅延とを等しくすることができる。
【００５１】
図示していないが、データストローブ信号ＤＱＳ０〜ＤＱＳ３の信号線と、データストローブ信号ＤＱＳ４〜ＤＱＳ７の信号線とは、対称にレイアウトされていることが望ましい。これにより、データストローブ信号ＤＱＳ０〜ＤＱＳ３の伝播遅延と、データストローブ信号ＤＱＳ４〜ＤＱＳ７の伝播遅延とを等しくすることができる。
【００５２】
また、差動クロック信号線Ｌ１，Ｌ２は、メモリコントローラ１から終端抵抗まで、電気的特性が等価になるように配線される。これにより、データストローブ信号ＤＱＳ０〜ＤＱＳ３の出力タイミング遅延量と、データストローブ信号ＤＱＳ４〜ＤＱＳ７の出力タイミング遅延量とを等しくすることができる。
【００５３】
比較例のメモリコントローラ１Ａ（図５参照）では、メモリＭ０〜Ｍ７の全てについてライトレベリングを実施していた。第１の実施形態のメモリコントローラ１（図１参照）は、差動クロック信号ＣＬＫ１にフライバイトポロジで接続される第１系統２１のメモリＭ０〜Ｍ３についてのみライトレベリングを実施する。第１の実施形態のライトレベリング制御は、図６（ａ）〜（ｄ）と図７で説明した方法と同様である。
【００５４】
メモリコントローラ１内部のライトレベリング制御部１２は、第１系統２１における差動クロック信号ＣＬＫ１のライトレベリング制御を行い、第１系統２１のデータストローブ信号ＤＱＳ０〜ＤＱＳ３の出力タイミング遅延量を決定する。
【００５５】
次に、ライトレベリング制御部１２が決定した第１系統２１のデータストローブ信号ＤＱＳ０〜ＤＱＳ３の出力タイミング遅延量は、遅延量割付部１３に転送される。遅延量割付部１３は、第１系統２１のデータストローブ信号ＤＱＳ０〜ＤＱＳ３の出力タイミング遅延量を、第２系統２２のデータストローブ信号ＤＱＳ４〜ＤＱＳ７の出力タイミング遅延量として割り付ける。
遅延量伝送部１４は、遅延量割付部１３が割り付けたデータストローブ信号ＤＱＳ４〜ＤＱＳ７の出力タイミング遅延量に基づき、それぞれ遅延させたデータストローブ信号ＤＱＳ４〜ＤＱＳ７をメモリＭ４〜Ｍ７に伝送する。
【００５６】
ここで第２系統２２のデータストローブ信号ＤＱＳ４〜ＤＱＳ７の出力タイミング遅延量は、第１系統２１のデータストローブ信号ＤＱＳ０〜ＤＱＳ３の出力タイミング遅延量と等しい。
【００５７】
このように処理することにより、第２系統２２のメモリＭ４〜Ｍ７へのデータストローブ信号ＤＱＳ４〜ＤＱＳ７の出力タイミング遅延量の設定が完了する。各遅延量が設定されると、出力タイミング遅延量が反映されたメモリＭ４〜Ｍ７へのデータストローブ信号ＤＱＳ４〜ＤＱＳ７が出力される。
【００５８】
比較例ではメモリＭ０〜Ｍ７全体に対してライトレベリング制御していたのに対して、第１の実施形態のメモリコントローラ１は、第１系統２１のメモリＭ０〜Ｍ３に限ってライトレベリングを実施する。第２系統２２と第１系統２１とは電気的に等価であることから、ライトレベリングによるデータストローブ信号ＤＱＳ４〜ＤＱＳ７の出力タイミング遅延量は、ライトレベリングによるデータストローブ信号ＤＱＳ０〜ＤＱＳ３の出力タイミング遅延量と等しくなる。そのため、第２系統２２の差動クロック信号線Ｌ２に接続されるメモリＭ４〜Ｍ７については、第１系統２１のデータストローブ信号ＤＱＳ０〜ＤＱＳ３の出力タイミング遅延量を適用可能であり、ライトレベリングを省略可能である。よって、メモリ全体でのライトレベリングに要する時間が短縮可能となる。
【００５９】
更に第１の実施形態によれば、各差動クロック信号線Ｌ１，Ｌ２に接続されるメモリ数を減らすことができるため、補正にかかる試行回数を減らすことができる。そのため、シミュレーションを用いてデフォルトの出力タイミング遅延量を求める必要がなく、容易にメモリコントローラを設計可能である。
【００６０】
比較例（図５参照）では、差動クロック信号線Ｌ１に８個のメモリＭ０〜Ｍ７が接続されており、差動クロック信号ＣＬＫ１に８個分のメモリ負荷が掛かるので、シグナルインテグリティに悪影響を及ぼすおそれがあった。
第１の実施形態では、差動クロック信号線Ｌ１に４個のメモリＭ０〜Ｍ３が接続され、差動クロック信号線Ｌ２に４個のメモリＭ４〜Ｍ７が接続されている。メモリコントローラ１は、差動クロック信号線Ｌ１に接続されるメモリＭ０〜Ｍ３と差動クロック信号線Ｌ２に接続されるメモリＭ４〜Ｍ７とを別々に制御している。そのため、差動クロック信号ＣＬＫ１に掛かるメモリ負荷と、差動クロック信号ＣＬＫ２に掛かるメモリ負荷は、それぞれ４個分に軽減でき、シグナルインテグリティの向上が可能である。
【００６１】
（第２の実施形態）
第１の実施形態では、フライバイトポロジ接続され、かつ電気的特性が等価な２系統のメモリ群のうち一系統のみライトレベリングを実施し、一系統のライトレベリングの結果を他系統へ反映させていた。第２の実施形態は、予め電気的特性が判明している複数のフライバイトポロジ構成について、一系統のみライトレベリングを実施し、この一系統のライトレベリングの結果を演算して他系統に反映させている。以下、図３と図４により、第２の実施形態について説明する。
【００６２】
図３は、第２の実施形態における４系統クロック使用時のメモリコントローラ１ＢとメモリＭ０〜Ｍ１５との接続を示す図である。なお、図１に示した第１の実施形態と同一の要素には同一の符号を付与している。
第２の実施形態のレベリング機能を搭載するメモリコントローラ１Ｂは、図１に示した第１の実施形態に加えて更に、差動クロック信号線Ｌ３によりメモリＭ８〜Ｍ１１をフライバイトポロジで接続し、差動クロック信号線Ｌ４によりメモリＭ１２〜Ｍ１５をフライバイトポロジで接続する。この差動クロック信号線Ｌ３は、メモリコントローラ１ＢからメモリＭ８〜Ｍ１１に差動クロック信号ＣＬＫ３を出力する信号線であり、抵抗Ｒ３により終端される。メモリＭ８〜Ｍ１１は、差動クロック信号線Ｌ３で接続され、第３系統２３を構成する。
差動クロック信号線Ｌ４は、メモリコントローラ１ＢからメモリＭ１２〜Ｍ１５に差動クロック信号ＣＬＫ４を出力する信号線であり、抵抗Ｒ４により終端される。メモリＭ１２〜Ｍ１５は、差動クロック信号線Ｌ４で接続され、第４系統２４を構成する。
【００６３】
このとき、第３系統２３の電気的特性は、第４系統２４の電気的特性とは等価であるが、第１系統２１の電気的特性とは異なり、第２系統２２の電気的特性とも異なる。
このように第３系統２３の差動クロック信号線Ｌ３の電気的特性と、第４系統２４の差動クロック信号線Ｌ４の電気的特性とを等価にするため、第３系統２３の差動クロック信号線Ｌ３と第４系統２４の差動クロック信号線Ｌ４とは、対称に配置されている。
【００６４】
データストローブ信号ＤＱＳ０〜ＤＱＳ３の信号線（図示省略）は、メモリコントローラ１Ｂの各信号端子とメモリＭ０〜Ｍ３とを接続する。データストローブ信号ＤＱＳ４〜ＤＱＳ７の信号線（図示省略）は、メモリコントローラ１Ｂの各信号端子とメモリＭ４〜Ｍ７とを接続する。第１系統２１のデータストローブ信号ＤＱＳ０〜ＤＱＳ３と、第２系統２２のデータストローブ信号ＤＱＳ４〜ＤＱＳ７とは、電気的特性が等価である。
【００６５】
更にデータストローブ信号ＤＱＳ８〜ＤＱＳ１１の信号線（図示省略）は、メモリコントローラ１Ｂの各信号端子とメモリＭ８〜Ｍ１１とを接続する。データストローブ信号ＤＱＳ１２〜ＤＱＳ１５の信号線（図示省略）は、メモリコントローラ１Ｂの各信号端子とメモリＭ１２〜Ｍ１５とを接続する。第３系統２３のデータストローブ信号ＤＱＳ８〜ＤＱＳ１１と、第４系統２４のデータストローブ信号ＤＱＳ１２〜ＤＱＳ１５とは、電気的特性が等価である。データストローブ信号ＤＱＳ８〜ＤＱＳ１１の信号線とデータストローブ信号ＤＱＳ１２〜ＤＱＳ１５の信号線とは、対称にレイアウトされている。
なお、第３系統２３のデータストローブ信号ＤＱＳ８〜ＤＱＳ１１の信号線は、第１系統２１のデータストローブ信号ＤＱＳ０〜ＤＱＳ３の信号線とは電気的特性が異なり、第２系統２２のデータストローブ信号ＤＱＳ４〜ＤＱＳ７の信号線とも電気的特性が異なる。
【００６６】
データ信号ＤＱ０〜ＤＱ３の信号線は、メモリコントローラ１Ｂの各信号端子とメモリＭ０〜Ｍ３とを接続する。データ信号ＤＱ４〜ＤＱ７の信号線は、メモリコントローラ１Ｂの各信号端子とメモリＭ４〜Ｍ７とを接続する。更にデータ信号ＤＱ８〜ＤＱ１１の信号線は、メモリコントローラ１Ｂの各信号端子とメモリＭ８〜Ｍ１１とを接続する。データ信号ＤＱ１２〜ＤＱ１５の信号線は、メモリコントローラ１Ｂの各信号端子とメモリＭ１２〜Ｍ１５とを接続する。つまりメモリコントローラ１Ｂの各信号端子とメモリＭ０〜Ｍ１５とは、データ信号ＤＱ０〜ＤＱ１５の信号線により一対一で接続される。
更にメモリコントローラ１Ｂのコマンド信号端子とメモリＭ０〜Ｍ１５において、第１系統２１のコマンド信号ＣＭＤ１の信号線Ｌａは、差動クロック信号線Ｌ１と同様にメモリＭ０〜Ｍ３をフライバイトポロジにて接続し、第２系統２２のコマンド信号ＣＭＤ２の信号線Ｌｂは、差動クロック信号線Ｌ２と同様にメモリＭ４〜Ｍ７をフライバイトポロジにて接続する。第３系統２３のコマンド信号ＣＭＤ３の信号線Ｌｃは、差動クロック信号線Ｌ３と同様にメモリＭ８〜Ｍ１１をフライバイトポロジにて接続し、第４系統２４のコマンド信号ＣＭＤ４の信号線Ｌｄは、差動クロック信号線Ｌ４と同様にメモリＭ１２〜Ｍ１５をフライバイトポロジにて接続する。
メモリコントローラ１は、信号線Ｌａを介してコマンド信号ＣＭＤ１を出力することにより、メモリＭ０〜Ｍ３に対してレベリングの実行と終了とを指示することができる。メモリコントローラ１は、信号線Ｌｂを介してコマンド信号ＣＭＤ２を出力することにより、メモリＭ４〜Ｍ７に対してレベリングの実行と終了とを指示することができる。メモリコントローラ１は、信号線Ｌｃを介してコマンド信号ＣＭＤ３を出力することにより、メモリＭ８〜Ｍ１１に対してレベリングの実行と終了とを指示することができる。メモリコントローラ１は、信号線Ｌｄを介してコマンド信号ＣＭＤ４を出力することにより、メモリＭ１２〜Ｍ１５に対してレベリングの実行と終了とを指示することができる。
【００６７】
第３系統２３のメモリＭ８〜Ｍ１１における差動クロック信号ＣＬＫ３の伝播時間のズレは、第４系統２４のメモリＭ１２〜Ｍ１５における差動クロック信号ＣＬＫ４の伝播時間のズレと、ほぼ等しくなる。しかし、第３系統２３のメモリＭ８〜Ｍ１１における差動クロック信号ＣＬＫ３の伝播時間のズレは、第１系統２１のメモリＭ０〜Ｍ３における差動クロック信号ＣＬＫ１の伝播時間のズレと異なり、第２系統２２のメモリＭ４〜Ｍ７における差動クロック信号ＣＬＫ２の伝播時間のズレとも異なる。
【００６８】
メモリコントローラ１Ｂは、第１の実施形態と同様な主制御部１１、ライトレベリング制御部１２、遅延量割付部１３、遅延量伝送部１４を有し、更に特性データ格納部１５、系統別遅延量補正部１６を有する。
特性データ格納部１５は、第１系統２１から第４系統２４までの電気的特性データを格納する。この電気的特性データは、予め測定されたデータである。
系統別遅延量補正部１６は、特性データ格納部１５の電気的特性データを参照して、第１系統２１のデータストローブ信号ＤＱＳ０〜ＤＱＳ３の出力タイミング遅延量から、データストローブ信号ＤＱＳ８〜ＤＱＳ１１の出力タイミング遅延量およびデータストローブ信号ＤＱＳ１２〜ＤＱＳ１５の出力タイミング遅延量を算出する。
【００６９】
図４は、第１系統２１のライトレベリング時の出力タイミング遅延量の処理を示す図である。
第２の実施形態のメモリコントローラ１Ｂは、ライトレベリング制御部１２により、第１系統２１に接続されるメモリＭ０〜Ｍ３ついてライトレベリングを実施する（ステップＳ２０）。ライトレベリング制御部１２は、第１系統２１でのライトレベリングにより、出力タイミング遅延量を決定する。このときの処理は、図７に示したフローチャートの処理と同様である。ライトレベリング制御部１２は、第１系統２１に係る出力タイミング遅延量を、そのまま第１系統２１のデータストローブ信号ＤＱＳ０〜ＤＱＳ３の出力タイミング遅延量として出力する（ステップＳ２１）。ライトレベリング制御部１２は更に、第１系統２１に係る出力タイミング遅延量を系統別遅延量補正部１６に伝送する（ステップＳ２２）。
【００７０】
系統別遅延量補正部１６は、特性データ格納部１５を参照して、第１系統２１に係る出力タイミング遅延量を、第２系統２２に係る出力タイミング遅延量として、補正無しに出力する（ステップＳ２３）。特性データ格納部１５には、第１系統２１の電気的特性と、第２系統２２の電気的特性とが格納されている。系統別遅延量補正部１６は、これら各系統の電気的特性を参照して変換テーブルを作成し、この変換テーブルに基づいて出力タイミング遅延量を変換する。ここで第１系統２１の電気的特性と、第２系統２２の電気的特性とは等しいので、変換テーブルによる補正は行われない。遅延量割付部１３は、この出力タイミング遅延量をデータストローブ信号ＤＱＳ４〜ＤＱＳ７にそれぞれ割り付けて、第２系統２２に出力する（ステップＳ２６）。
【００７１】
系統別遅延量補正部１６は、特性データ格納部１５を参照して、第１系統２１に係る出力タイミング遅延量を、第３系統２３に係る出力タイミング遅延量に補正して出力する（ステップＳ２４）。系統別遅延量補正部１６は、第１系統２１の電気的特性と第３系統２３の電気的特性とを参照して変換テーブルを作成し、この変換テーブルに基づいて出力タイミング遅延量を変換する。ここで第１系統２１の電気的特性と、第３系統２３の電気的特性とは異なっているので、変換テーブルによる補正が行われる。遅延量割付部１３は、補正した出力タイミング遅延量をデータストローブ信号ＤＱＳ８〜ＤＱＳ１１にそれぞれ割り付けて、第３系統２３に出力する（ステップＳ２７）。
【００７２】
系統別遅延量補正部１６は、特性データ格納部１５を参照して、第１系統２１に係る出力タイミング遅延量を、第４系統２４に係る出力タイミング遅延量に補正して出力する（ステップＳ２５）。系統別遅延量補正部１６は、第１系統２１の電気的特性と第４系統２４の電気的特性とを参照して変換テーブルを作成し、この変換テーブルに基づいて出力タイミング遅延量を変換する。ここで第１系統２１の電気的特性と、第４系統２４の電気的特性とは異なっているので、変換テーブルによる補正が行われる。遅延量割付部１３は、補正した出力タイミング遅延量をデータストローブ信号ＤＱＳ１２〜ＤＱＳ１５にそれぞれ割り付けて、第４系統２４に出力する（ステップＳ２８）。
【００７３】
以上により、予め電気的特性が判明している複数のフライバイトポロジ構成の系統の場合、一の系統のライトレベリング制御にて決定した出力タイミング遅延量により、他の系統のライトレベリング制御を行うことなしに、出力タイミング遅延量を決定することができる。
第２の実施形態は、多くのメモリを接続した時に、全系統で電気的特性を等しくするため、各配線を等長にすることが実装上困難な場合に有用である。
【００７４】
（変形例）
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば上記した実施形態は、本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることも可能である。
【００７５】
上記の各構成、機能、処理部、処理手段などは、それらの一部または全部を、例えば集積回路などのハードウェアで実現してもよい。上記の各構成、機能などは、プロセッサがそれぞれの機能を実現するプログラムを解釈して実行することにより、ソフトウェアで実現してもよい。
【００７６】
各実施形態に於いて、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には、殆ど全ての構成が相互に接続されていると考えてもよい。
本発明の変形例として、例えば、次の（ａ）〜（ｃ）のようなものがある。
（ａ）  上記実施形態は、メモリと、そのメモリコントローラを基板の片面に実装した場合の構成である。しかし、これに限られず、メモリを基板の両面に、対称に実装してもよい。
【００７７】
（ｂ）  上記実施形態では、差動クロック信号線に接続された２系統のメモリを制御する場合と、差動クロック信号線に接続された４系統のメモリを制御する場合とを説明している。しかし、系統数は、２系統と４系統に限られず、任意の自然数であってもよい。
（ｃ）  上記実施形態では、第１系統２１のメモリＭ０〜Ｍ３に対してライトレベリングを実施している。しかし、ライトレベリングを実施するのは第１系統２１に限られず、任意の系統に対して実施してもよく、更にライトレベリングを実施する系統を選択可能としてもよい。
【符号の説明】
【００７８】
１，１Ａ，１Ｂ  メモリコントローラ
１１  主制御部
１２  ライトレベリング制御部  （ライトレベリング制御手段）
１３  遅延量割付部  （遅延量割付手段）
１４  遅延量伝送部
１５  特性データ格納部
１６  系統別遅延量補正部  （系統別遅延量補正手段）
２０  単一系統
２１  第１系統
２２  第２系統
２３  第３系統
２４  第４系統
Ｍ，Ｍ０〜Ｍ１５  メモリ
Ｒ１〜Ｒ４  抵抗
【図１】
2017138667.tif 000003
【図２】
2017138667.tif 000004
【図３】
2017138667.tif 000005
【図４】
2017138667.tif 000006
【図５】
2017138667.tif 000007
【図６】
2017138667.tif 000008
【図７】
2017138667.tif 000009