説明

メモリコントローラ及びメモリ制御方法

【課題】ライトレベリング時において、初期化時間が長くなることを回避する。
【解決手段】ライトレベリング制御部250は、DQS制御部242とDQ制御部244の遅延量を、まず、1クロックサイクル未満の範囲内で調整する。そして、夫々のSDRAM282に対して、期待値データ列のライト後にリードを行って得たリードデータ列と期待値データ列とを比較し、比較結果に応じて、DQS制御部242とDQ制御部244の遅延量を、クロックサイクル単位で調整する。上記ライト時に、DQS制御部242が規格により定められたバースト長より「2×M」クロックサイクル長い(M:1以上の整数)データストローブ信号DQSを出力し、DQ制御部244が上記バースト長に合致する個数の期待値データ列の前後にM個ずつデータを加えて出力するように制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリ制御、より具体的には、DDR3メモリインタフェースに対して行うライトレベリングに関する。
【背景技術】
【0002】
様々な半導体装置において、信号の遅延時間の調整が行われている(特許文献1〜3)。DRAM(Dynamic Random Access Memory)の規格としてJEDEC(Joint Electron Device Engineering Council)により標準化されたDDR3メモリインタフェース(DDR:Double Data Rate)では、メモリコントローラとDIMM(Dual Inline Memory Module)との接続にフライバイトポロジが採用されているため、メモリコントローラから、DIMMに含まれる複数のメモリ素子に夫々出力されるデータストローブ信号DQSの遅延時間を調整する所謂ライトレベリングが規定されている(特許文献4)。
【0003】
図11は、特許文献4における図19であり、DDR3メモリインタフェースに準拠するメモリコントローラ90とDIMM91の接続例を模式的に示している。図示のように、メモリコントローラ90とDIMM91を接続する各信号線のうちに、クロック信号CK、アドレス信号Addおよびコマンド信号CMDの信号線については、メモリコントローラ90とDIMM91上のn個(n:2以上の自然数)のメモリ素子(SDRAM:Synchronous Dynamic Random Access Memory)92−1〜92−nとがデイジーチェーンで配線され、データ信号DQおよびデータストローブ信号DQSの信号線については、メモリコントローラ90からDIMM91上の複数のSDRAM92−1〜92−nにそれぞれ配線されている。
【0004】
以下、SDRAMを示す符号として、複数のSDRAMのうち1つを特定する必要があるときは符号92−1〜92−nを用い、任意のSDRAMを指すときには符号92を用いる。
【0005】
また、データ信号を示す符号として、複数のデータ信号のうち1つを特定する必要があるときは符号DQ−1〜DQ−nを用い、任意のデータ信号を指すときには符号DQを用いる。
【0006】
同様に、データストローブ信号を示す符号として、複数のデータストローブ信号のうち1つを特定する必要があるときは符号DQS−1〜DQS−nを用い、任意のデータストローブ信号を指すときには符号DQSを用いる。
【0007】
クロック信号CKの信号線のデイジーチェーン配線に起因する伝播遅延により、メモリコントローラ90から出力されたクロック信号CKは、全てのSDRAM92−1〜92−nに同時刻に到達することができない。例えば、JEDECの規格では、DIMM91の外形寸法の長さL1が133mmと決められており、DIMM91における長さ方向の一端に配置されたSDRAM92−1と他端に配置されたSDRAM92−nとでは、データ送信速度が7ps/mmである場合には、1ns近い到達時刻差が生じることとなる(7ps/mm×133mm=931ps)。
【0008】
そのため、DDR3メモリインタフェースについて、JEDECの規格では、ライトレベリングを用いることが規定されている。図12(特許文献4における図20)を参照して、ライトレベリングを簡単に説明する。
【0009】
ライトレベリングとは、メモリコントローラ90から出力されるデータストローブ信号DQSでクロック信号CKをサンプリングすることによって、データストローブ信号DQSとクロック信号CKの位相関係を検出し、データストローブ信号DQSの遅延時間の調整を行う機能である。この機能は、図12に示すように、各データストローブ信号DQS−1〜DQS−nの遅延時間を変えることのできる可変遅延回路93−1〜93−nを、メモリコントローラ90内に、複数のSDRAM92−1〜92−nに対応してそれぞれ内蔵することにより実現される。
【0010】
以下、遅延回路を示す符号として、複数の遅延回路のうち1つを特定する必要があるときは符号93−1〜93−nを用い、任意の遅延回路を指すときには符号93を用いる。
【0011】
具体的には、図示しないCPU(Central ProcessingUnit)が、各SDRAM92のそれぞれに対して出力されるデータストローブ信号DQS−1〜DQS−nに対して、これらのSDRAM92−1〜92−nから出力される各データ信号DQ−1〜DQ−nに基づいてそれぞれ遅延時間t1−1〜t1−nを設定することにより、各データストローブ信号DQS−1〜DQS−nは、SDRAM92−1〜92−nのそれぞれに対して、クロック信号CKとほぼ同じ時間に入力するように調整される。
【0012】
つまり、例えば、ライトレベリングが完了した時点では、遅延回路93−1〜93−nは、それぞれ、遅延時間t1−1〜t1−nだけデータストローブ信号DQSを遅延させるようになっており、SDRAM92−1〜92−nには、データストローブ信号DQSとクロック信号CKとの位相が揃って入力されるようになっている。
【0013】
なお、ライトレベリングは、DDR3メモリインタフェースを備えるメモリ装置の初期化時に行われる。すなわち、ライトレベリングを含む初期化完了すれば、遅延時間t1−1〜t1−nが決まり、各SDRAMには、クロック信号CKとデータストローブ信号DQSの位相が揃って入力されるようになっている。
【先行技術文献】
【特許文献】
【0014】
【特許文献1】特開2000−206212号公報
【特許文献2】特開2001−217694号公報
【特許文献3】特開2009−284266号公報
【特許文献4】特開2009−075682号公報
【発明の概要】
【発明が解決しようとする課題】
【0015】
データストローブ信号DQSの遅延を調整する際には、DQSの遅延時間(上述した遅延時間t1−1〜t1−nに該当する)は、通常、DLL(Delay Locked Loop)回路により制御される。この場合、必要な遅延時間が大きくなると、調整幅が大きくなるため、調整の誤差が大きくなってしまうという問題がある。従って、データストローブ信号DQSの遅延時間の調整幅が1クロックサイクル以下になるように、プリント基板の設計に対して、信号線の配線に制約が設けられていた。
【0016】
ところで、昨今のメモリ素子の高速化により、上記制約下における実装が困難になりつつあり、1クロックサイクル以上の調整幅を必要とするメモリ装置が現実的に多々存在する。1クロックサイクル以上の遅延時間が必要となった場合には、以下に説明する、初期化時間が長くなってしまう恐れがある。
【0017】
ライトレベリング時におけるクロック信号CKとデータストローブ信号DQSの位相関係の検出は、規格により定められたバースト長のデータストローブ信号DQSに同期して、各メモリ素子に対して、上記バースト長に合致する個数の既知のデータからなる期待値データ列のライト後にリードを行ってリードデータ列を得、該リードデータ列と期待値データ列を比較した結果に基づいて行われるようになっている。
【0018】
ところで、クロック信号CKとデータストローブ信号DQSの位相が大きくずれた状態で上記ライトを行うのでは、期待値データ列の先頭の1つ以上のデータ、または末尾の1つ以上のデータの書込みが行われないという状態に陥る可能性がある。この状態は、JEDECの仕様にないため、当該SDRAM内の状態が保障されず、確定した状態に復帰させるにはリセット動作を実施する以外には方法がない。そのため、初期化時間が長くなってしまうという問題がある。
【0019】
本発明は、上記事情を鑑みてなされたものであり、ライトレベリング時において、初期化時間が長くなることを回避できる技術を提供する。
【課題を解決するための手段】
【0020】
本発明の1つの態様は、メモリ制御方法である。該方法は、下記の手順でライトレベリングを行う。
【0021】
まず、DDR3メモリインタフェースに対応するメモリモジュールに含まれるメモリ素子毎に設けられ、該メモリ素子にデータストローブ信号DQSを出力するDQS制御部と、前記メモリ素子毎に設けられ、該メモリ素子に出力される前記データストローブ信号DQSに同期して、ライトデータの出力とリードデータの受信を行うDQ制御部に対して、前記データストローブ信号DQSの出力タイミングの遅延量と、ライトデータの出力タイミング及びリードデータの受信タイミングの遅延量とを、1クロックサイクル未満の範囲内で調整する。
【0022】
そして、夫々の前記メモリ素子に対して、期待値データ列のライト後にリードを行って得たリードデータ列と前記期待値データ列とを比較し、比較結果に応じて、各前記DQS制御部と前記DQ制御部に対して、前記データストローブ信号DQSの出力タイミングの遅延量と、ライトデータの出力タイミング及びリードデータの受信タイミングの遅延量とを、クロックサイクル単位で調整する。
【0023】
なお、前記ライト時に、前記DQS制御部が規格により定められたバースト長より「2×M」クロックサイクル長い(M:1以上の整数)データストローブ信号DQSを出力し、前記DQ制御部が前記バースト長に合致する個数の前記期待値データ列の前後にM個ずつデータを加えて出力するように制御する。
【0024】
なお、上記態様の方法を装置やシステムに置き換えて表現したものや、該方法をコンピュータに実行せしめるプログラムなども、本発明の態様としては有効である。
【発明の効果】
【0025】
本発明にかかる技術によれば、ライトレベリング時において、データストローブ信号DQSの遅延時間の調整精度を高めると共に、初期化時間が長くなることを回避できる。
【図面の簡単な説明】
【0026】
【図1】本発明の実施の形態にかかるコンピュータを示す図である。
【図2】図1に示すコンピュータにおける第2の制御部240を示す図である。
【図3】図1に示すコンピュータにおけるライトレベリング制御部を示す図である。
【図4】図3に示すライトレベリング制御部におけるテスト動作制御部を示す図である。
【図5】図3に示すライトレベリング制御部によるライトレベリングの流れを示すフローチャートである。
【図6】図5に示すライトレベリングにおけるテスト動作の流れを示すフローチャートである。
【図7】第2の遅延時間の調整を説明するための図である。
【図8】ライトレベリング時においてデータストローブ信号とデータ信号の伸長の意義を説明するための例を示す図である(その1)。
【図9】ライトレベリング時においてデータストローブ信号とデータ信号の伸長の意義を説明するための例を示す図である(その2)。
【図10】図9に示す例の場合に得られるリードデータ列を示す図である。
【図11】DDR3メモリインタフェースに準拠した接続例を模式的に示す図である。
【図12】ライトレベリングを説明するための図である。
【発明を実施するための形態】
【0027】
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、CPU、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【0028】
図1は、本発明の実施の形態にかかる半導体装置たとえばコンピュータ200を示す。コンピュータ200は、CPU210、メモリコントローラ220、DIMM280を備える。
【0029】
DIMM280は、n個(n:2以上の整数)のSDRAM282(SDRAM282−1〜282−n)を有する。
【0030】
以下において、同一の機能を有する複数の機能ブロックを示す符号として、該複数の機能ブロックのうちの任意の1つを指すときには「K」(K:数字)のみを用い、該複数の機能ブロックのうちの1つを特定する必要があるときには数字Kの後に「−N」(N:数字)を付ける。
【0031】
例えば、DIMM280に含まれるSDRAMを示す符号として、SDRAM282−1〜282−nのうち1つを特定する必要があるときは符号「282−1」〜「282−n」を用い、任意のSDRAMを指すときには符号「282」のみを用いる。
【0032】
信号に関しても同様に、同種の複数の信号を示す符号として、該複数の信号のうちの任意の1つを指すときにはW(W:英字)のみを用い、該複数の信号のうちの1つを特定する必要があるときには、英字Wの後に「−N」(N:数字)を付ける。
【0033】
例えば、後述するデータストローブ信号を示す符号として、DQS−1〜DQS−nのうちの1つを特定する必要があるときは符号「DQS−1」〜「DQS−n」を用い、任意のデータストローブ信号を指すときには符号「DQS」のみを用いる。
【0034】
メモリコントローラ220は、第1の制御部230と、SDRAM282の数分の第2の制御部240(第2の制御部240−1〜240−n)、ライトレベリング制御部250を有する。各第2の制御部240は、DQS制御部242とDQ制御部244を有する。
【0035】
本実施の形態のコンピュータ200において、DDR3形式のメモリインタフェースが採用されており、そのため、メモリコントローラ220とDIMM28を接続する各信号線のうちに、クロック信号CK、アドレス信号Addおよびコマンド信号CMDの信号線については、メモリコントローラ220とDIMM280上のn個のSDRAM282とがデイジーチェーンで配線され、データ信号DQおよびデータストローブ信号DQSの信号線については、メモリコントローラ220からDIMM280上のn個のSDRAM282にそれぞれ配線されている。
【0036】
メモリコントローラ220は、CPU210に接続されており、初期化時に、CPU210からのライトレベリング動作指示により、DIMM280に対してライトレベリングを実施する。
【0037】
メモリコントローラ220における第1の制御部230は、クロック信号CK、アドレス信号Add、コマンド信号CMDをDIMM280に出力する。これらの信号は、前述したデイジーチェーンで配線された信号線を介して、SDRAM282−1、SDRAM282−2、・・・、SDRAM282−nの順に夫々のSDRAM282に供される。
【0038】
ライトレベリング制御部250からのライト指示に従って、第2の制御部240におけるDQS制御部242は、対応するSDRAM282にデータストローブ信号DQSを出力し、DQ制御部244は、SDRAM282にデータ(DQ[0]、・・・DQ[n])を送出する。
【0039】
図2を参照して第2の制御部240を詳細に説明する。図示のように、第2の制御部240におけるDQS制御部242は、DQS伸長制御部2420、第1の遅延制御部2422、第2の遅延制御部2424を有し、DQ制御部244は、DQ伸長制御部2440、第1の遅延制御部2442、第2の遅延制御部2444を有する。第1の遅延制御部2422と第2の遅延制御部2424は、DQS遅延部を構成し、第1の遅延制御部2442と第2の遅延制御部2444は、DQ遅延部を構成する。
【0040】
まず、DQS制御部242の各機能ブロックを説明する。
DQS伸長制御部2420は、ライトレベリング制御部250からの指示に従ってDQSの発行個数を増やす制御を行う。
【0041】
第1の遅延制御部2422は、レジスタとセレクタの組合せにより構成され、DQSをクロックサイクル単位で遅延させることが可能である。
【0042】
第2の遅延制御部2424は、DLLにより構成され、1クロックサイクル未満の範囲内に、必要に応じた粒度(例えば、1/16クロックサイクル)でDQSの遅延時間を調整するこができる。
【0043】
第1の遅延制御部2422と第2の遅延制御部2424による遅延時間の総和は、DQSの遅延時間となる。
【0044】
次にDQ制御部244の各機能ブロックを説明する。
DQ伸長制御部2440は、ライトレベリング制御部250からの指示に従ってDQの発行個数を増やす制御を行う。
【0045】
第1の遅延制御部2442は、レジスタとセレクタの組合せにより構成され、DQをクロックサイクル単位で遅延させることが可能である。
【0046】
第2の遅延制御部2444は、DLLにより構成され、1クロックサイクル未満の範囲内に、必要に応じた粒度(例えば、1/16クロックサイクル)でDQの遅延時間を調整するこができる。
【0047】
第1の遅延制御部2442と第2の遅延制御部2444による遅延時間の総和は、DQの遅延時間となる。
【0048】
図3を参照して、ライトレベリング制御部250を説明する。ライトレベリング制御部250は、シーケンス制御部252、伸長指示部254、テスト動作制御部256を有する。
【0049】
シーケンス制御部252は、CPU210からのライトレベリング動作指示に応じて、ライトレベリングの開始、及びライトレベリングによるDQS、DQ[0]、・・・DQ[n]の遅延時間の調整を制御する。この調整は、DQSに関しては、DQS制御部242における第1の遅延制御部2422と第2の遅延制御部2424によって2段階になされ、DQに関しては、DQ制御部244における第1の遅延制御部2442と第2の遅延制御部2444によって2段階になされる。
【0050】
なお、シーケンス制御部252は、第1の制御部230にライトレベリング指示を出力し、第2の制御部240のDQS制御部242における第1の遅延制御部2422及び第2の遅延制御部2424と、DQ制御部244における第1の遅延制御部2442と第2の遅延制御部2444に遅延量指示を出力すると共に、DQS制御部242におけるDQS伸長制御部2420と、DQ制御部244におけるDQ伸長制御部2440への伸長指示を伸長指示部254に出力させ、テスト動作制御部256にテスト動作指示を出力することにより上記制御を実現する。
【0051】
伸長指示部254は、シーケンス制御部252からの制御に従って、データストローブ信号DQSとデータ信号DQを伸長する指示(伸長指示)を第2の制御部240におけるDQS制御部242のDQS伸長制御部2420と、DQ制御部244のDQS伸長制御部2420に出力する。
【0052】
テスト動作制御部256は、シーケンス制御部252からのテスト動作指示に応じて、第1の制御部230と第2の制御部240にライトリクエストを出力する処理と、第1の制御部230にリードリクエストを出力する処理と、リプライデータ(後述する)と期待値とを比較する処理を行う。図4を参照して、テスト動作制御部256を詳細に説明する。
【0053】
テスト動作制御部256は、テストシーケンス制御部262、ライト命令発行制御部264、リード命令発行制御部266、比較部268を備える。
【0054】
テストシーケンス制御部262は、ライトレベリング制御部250からのテスト動作指示に応じて、ライト命令発行制御部264、リード命令発行制御部266、比較部268を制御して、DIMM280へのデータのリード/ライト、及びリプライデータと期待値の比較を行わせる。
【0055】
ライト命令発行制御部264は、テストシーケンス制御部262からの指示に従ってDIMM280に対してライトリクエストを発行する。
【0056】
リード命令発行制御部266は、テストシーケンス制御部262からの指示に従って、DIMM280に対してリードリクエストを発行する。
【0057】
比較部268は、上記リードリクエストに応じてDIMM280から出力されたデータ(リプライデータ)を受信し、該リプライデータと期待値との比較を行う共に、比較結果をテストシーケンス制御部262に通知する。
【0058】
次に、図1に示すコンピュータ200におけるライトレベリングの流れを説明する。CPU210から発行されたライトレベリング動作指示は、メモリコントローラ220のライトレベリング制御部250内のシーケンス制御部252で受信される。
【0059】
ライトシーケンス制御部252は、ライトレベリング動作指示の受信によりライトレベリング動作を開始する。ライトレベリング動作における遅延時間の調整は、2段階で実施される。図5と図6のフローチャートを参照して説明する。
【0060】
図5に示すように、まず、ステップS100において、DQS制御部242における第2の遅延制御部2424と、DQ制御部244における第2の遅延制御部2444は、1クロックサイクル未満の範囲内で、遅延時間の調整を実施する。以下、第2の遅延制御部2424と第2の遅延制御部2444の遅延時間を「第2の遅延時間」という。このステップ調整により、各SDRAM282は、該SDRAM282に分配されているクロックとDQS/DQ[0]、・・・DQ[n]間の調整が実施されたことになる。
【0061】
なお、このステップの調整は、クロック信号CLKを基準にしたDQSの調整であり、DIMMのスペック上で規定されているライトレベリング動作である。
【0062】
しかし、該ステップにおける調整時間は、最大でも1クロックサイクル未満となっているため、調整後のクロックエッジが夫々のSDRAM282間でずれている可能性がある。
【0063】
次に、SDRAM282間のクロックエッジのずれを検出するためのテスト動作が起動される(S102)。具体的には、ライトレベリング制御部250は、ステップS100の処理の完了後、テスト動作制御部256に対して、テスト動作指示を発行する。テスト動作制御部256は、シーケンス制御部252からのテスト動作指示に応じて、テスト動作を実施する。
【0064】
図6は、テスト動作のフローチャートを示す。まず、テスト動作制御部256は、ライトリクエストをDIMM280へ発行して複数の既知のデータからなる期待値データ列の書込みを実施する(S110)。
【0065】
ライトリクエストの発行は、テストシーケンス制御部262からライト命令発行制御部264へライト命令発行指示を送出することで実施される。しかし、この時点でライトリクエストを発行すると、SDRAM282間のクロックエッジのずれにより、SDRAM282によっては、期待値データ列の先頭の1つ以上のデータ、または末尾の1つ以上のデータの書込みができず、当該SDRAM282のリセットが必要になる状態に陥る可能性がある。
【0066】
この状態を回避するために、ライトレベリング制御部250は、該ステップにおいて、さらに、第2の制御部240−1、・・・240−nに対して、伸長指示を送出する。
【0067】
第2の制御部240−1、240−nのDQS制御部242内のDQS伸長制御部2420は、伸長指示に応じて、規定のバースト長より「2×M」クロックサイクル長い(M:1以上の整数)データストローブ信号DQSをDIMM280へ発行する。
【0068】
また、DQ制御部244内のDQ伸長制御部2440は、伸長指示に応じて、規定のバースト長に合致する個数の上記期待値データ列の前後にM個ずつデータを加えて、DIMM280へ発行する。
【0069】
次に、テストシーケンス制御部262は、ステップS110で書き込んだデータを読み出すためのリードリクエストをDIMM280に対して発行する(S112)。
【0070】
リードリクエストの発行は、テストシーケンス制御部262からリード命令発行制御部266へリード命令発行指示を送出することにより実施される。
【0071】
リードリクエストに応じて、DIMM280からリプライデータ(リードデータ列)は出力される。比較部268は、このリプライデータを受信して、期待値データ列との比較を実施すると共に、比較結果をテストシーケンス制御部262へ送出する(S114)。この比較の結果は、さらにテストシーケンス制御部262からシーケンス制御部252に出力される。
【0072】
図5に戻って説明する。シーケンス制御部252は、比較部268により得られた比較結果に基づいて、DQS制御部242における第1の遅延制御部2422と、DQ制御部244における第1の遅延制御部2442の遅延量を設定し、該遅延値を示す遅延量指示を第2の制御部240−1、240−2、・・・、240−nへ送出する。なお、このステップでシーケンス制御部252が設定した遅延値を以下「第1の遅延時間」という。また、この第1の遅延時間は、クロックサイクルの整数倍(0倍を含む)である。
【0073】
夫々の第1の遅延制御部2422と第1の遅延制御部2442は、テストシーケンス制御部262により設定された第1の遅延時間の分遅延時間を調整する。これにて、ライトレベリングが完了する。
【0074】
具体例を参照して、コンピュータ200におけるライトレベリングをより詳細に説明する。
【0075】
前述したように、本実施の形態のコンピュータ200において、ライトレベリングにおける遅延時間の調整は、2段階に分けられて実施される。まず、図5のフローチャートにおけるステップS100が示す第1の段階の調整として、夫々の第2の遅延制御部2424と第2の遅延制御部2444により、1クロックサイクル以内の遅延時間(第2の遅延時間)の調整が行われる。
【0076】
例えば、図7に示す例のように、SDRAM282−1については、クロック信号のT1エッジを合わせるために第2の遅延時間の調整量A2−1、SDRAM282−2については、クロック信号のT1エッジを合わせるために第2の遅延時間の調整量A2−2で調整する。また、SDRAM282−nについては、クロック信号のT0エッジを合わせるために、第2の遅延時間の調整量A2−nで調整する。なお、ADD/CMDについては、クロック信号のT1エッジに合わせたとする。
【0077】
次に、図6に示すテスト動作が実施される。前述したように、テスト動作において、まず、ライトリクエストによりDIMM280へ期待値の書き込みが実施される。上述した第2の遅延時間の調整後にも、SDRAM282間でCLKエッジがずれている場合に、通常の仕様通りのライトリクエストを発行すると、SDRAM282−nに関しては、ADD/CMDが同期しているT1エッジより1周期(1T)早いT0エッジで期待値が到着してしまうため、図8に示す仕様違反の状態になってしまう。これについて、図8を参照して具体的に説明する。なお、図8及び以降の図面において、「ACT」と「WRA」は、JEDECのDDR3の仕様で規定されたものと同じ意味であり、夫々、「Activate」命令と「Write+AutoPrecharge」命令のニーモニック表現である。また、「WL」(Write Latency)も、JEDECのDDR3の仕様で規定されたものと同じ意味であり、ライト命令におけるデータ出力タイミングを示す。
【0078】
図8に示すように、SDRAM282−1とSDRAM282−2に関しては、ADD/CMDとライトデータの関係が合致しているため、通常のバースト長のDQSと、通常のバースト長に合致した個数のデータを有する期待値データ列を発行しても、当該SDRAM282をリセットする必要な状態に陥ることがない。
【0079】
しかし、SDRAM282−nに関しては、DQS/DQ[0]、・・・DQ[n]は、CLKのT0エッジに同期しているため、ADD/CMDに対して1T早くSDRAM282−nに到着することになる。そのため、データの最後が切れてしまい、postambleが不正として、リセットを実施する以外、復帰の方法がない。
【0080】
DQSとDQの伸長は、この状態を回避するための処理である。前述したように、ライトレベリング制御部250からの伸長指示に従って、第2の制御部240−1、・・・、240−nのDQS制御部242におけるDQS伸長制御部2420は、DQSを「2×M」サイクル分伸長してDIMM280へ発行する。同様に、DQ制御部244内のDQ伸長制御部2440も、DQを前後共にMサイクル分伸長して、DIMM280へ発行する。
【0081】
例えば、DQS/DQ[0]、・・・、DQ[n]は、2サイクル分伸長して発行される(M=2)。具体的には、前後2T分余分にDQSが送出され、これに合わせて、16バースト分(8ブロック連続)のデータがDIMM280に送出される。
【0082】
この場合、図9に示すように、DQS/DQ[0]、・・・、DQ[n]は、本来の出力位置(バースト8)に対して前後2T間伸長している。そのため、SDRAM282−nも仕様違反の状態に陥ることがない。そのため、SDRAMが不定状態になることもなく、SDRAMのリセット動作が不要となる。なお、この場合、SDRAM282−1、SDRAM282−2には、データ4、5、6、7、8、9、A、Bが書き込まれ、SDRAM282−nにはデータ6、7、8、9、A、B、C、Dが書き込まれることになる。
【0083】
その後、リードリクエストに応じて各SDRAM282からリプライデータが比較部268に送信され、期待値(4、5、6、7、8、9、A、B)と比較される。図9に示す例の場合、図10に示すようにリプライデータが返送されるため、SDRAM282−1、282−2に関して期待値と一致、SDRAM282−nに関しては、期待値に対して2つ前にずれたことになる。これにより比較部268は、テストシーケンス制御部262に対して、SDRAM282−1、282−2に関しては例えば「0」(一致)、SDRAM282−nに関しては「−1」(1T早く)を示す比較結果を返却し、テストシーケンス制御部262は、各比較結果をさらにシーケンス制御部252に出力する。
【0084】
シーケンス制御部252は、これらの比較結果に基づいて、各第1の遅延時間の調整量を決定して、夫々の遅延量を示す遅延量指示を当該第1の遅延制御部2422と第1の遅延制御部2442に出力する。図10に示す比較結果の場合、SDRAM282−1及びSDRAM282−2に対応する第1の遅延制御部2422と第1の遅延制御部2442に対して、「遅延時間なし」を示す「0」となる遅延量指示が出力され、SDRAM282−nに対応する第1の遅延制御部2422と第1の遅延制御部2442に対して、「遅延時間を−1クロックサイクル調整」を示す「−1」となる遅延量指示が出力される。
【0085】
各第1の遅延制御部2422と第1の遅延制御部2442は、受信した遅延量指示に示す分の遅延時間を設定する。これにより、SDRAM282−nについても、ADD/CMDとDQS/DQのずれが解消される。
【0086】
このように、本実施の形態のコンピュータ200において、初期化時に行うライトレベリングに際して、期待値データ列のライト時に、データストローブ信号DQSを規格により定められたバースト長より「2×M」サイクル分長く伸長すると共に、上記期待値データ列の前後にM個ずつのデータを加えて出力する。そのため、データストローブ信号DQSとクロック信号CKのエッジがずれているSDRAM282の場合でも、ライトするデータの欠落に起因して該SDRAM282をリセットせざるをえない状態を回避し、ひいては初期化時間が長くなることを回避することができる。
【0087】
また、コンピュータ200において、データストローブ信号DQSとデータ信号DQに対して、まず、DLL回路である第2の遅延制御部2424と第2の遅延制御部2444により1サイクル未満の範囲内の微調整をし、その後、レジスタとセレクタの組合せからなる第1の遅延制御部2422と第1の遅延制御部2442によりサイクル単位の粗調整を行うことにより、クロック信号CKとデータストローブ信号DQSのずれが大きいメモリ装置の場合においても、データストローブ信号DQSの遅延時間の調整を精度よく行うことができる。
【0088】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述実施の形態に対して、さまざまな変更、増減を加えてもよい。これらの変更、増減が加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
【0089】
例えば、上述した実施の形態のコンピュータ200では、データストローブ信号DQSとデータ信号DQの夫々に対して、調整精度を高めるために、調整粒度が異なる2つの遅延回路により遅延を実現しているが、1つの遅延回路により2段階の遅延を実現するようにしてもよい。この場合、コンピュータ200と比べ、調整の精度が劣るものの、初期化時間が長くなることを回避できる効果は、同様に得ることができる。
【符号の説明】
【0090】
90 メモリコントローラ 91 DIMM
92 SDRAM 93 遅延回路
200 コンピュータ 210 CPU
220 メモリコントローラ 230 第1の制御部
240 第2の制御部 242 DQS制御部
2420 DQS伸長制御部 2422 第1の遅延制御部
2424 第2の遅延制御部 244 DQ制御部
2440 DQ伸長制御部 2442 第1の遅延制御部
2444 第2の遅延制御部 250 ライトレベリング制御部
252 シーケンス制御部 254 伸長指示部
256 テスト動作制御部 262 テストシーケンス制御部
264 ライト命令発行制御部 266 リード命令発行制御部
268 比較部 280 DIMM
282 SDRAM Add アドレス信号
CK クロック信号 CMD コマンド信号
DQ データ信号 DQS データストローブ信号

【特許請求の範囲】
【請求項1】
DDR3メモリインタフェースに対応するメモリモジュールと接続されたメモリコントローラであって、
前記メモリモジュールに含まれるメモリ素子毎に設けられ、該メモリ素子にデータストローブ信号DQSを出力するDQS制御部と、
前記メモリモジュールに含まれるメモリ素子毎に設けられ、該メモリ素子に出力される前記データストローブ信号DQSに同期して、ライトデータの出力とリードデータの受信を行うDQ制御部と、
初期化時に行われるライトレベリングの制御を行うライトレベリング制御部とを備え、
前記DQS制御部は、前記データストローブ信号DQSの出力タイミングを、前記ライトレベリング制御部により設定された遅延量の分遅延させるDQS遅延部を有し、
前記DQ制御部は、ライトデータの出力タイミングとリードデータの受信タイミングを、前記ライトレベリング制御部により設定された遅延量の分遅延させるDQ遅延部を有し、
前記ライトレベリング制御部は、ライトレベリング時に、
前記DQS遅延部と前記DQ遅延部に対して1クロックサイクル未満の遅延量の調整を行った後に、夫々の前記メモリ素子に対して、期待値データ列のライト後にリードを行って得たリードデータ列と前記期待値データ列とを比較し、比較結果に応じて各前記DQS遅延部と前記DQ遅延部に対して、クロックサイクル単位の遅延量の調整を行うものであり、
前記ライト時に、前記DQS制御部が規格により定められたバースト長より「2×M」クロックサイクル長い(M:1以上の整数)データストローブ信号DQSを出力し、前記DQ制御部が前記バースト長に合致する個数の前記期待値データ列の前後にM個ずつデータを加えて出力するように制御することを特徴とするメモリコントローラ。
【請求項2】
前記DQS遅延部は、
1クロックサイクル以上の遅延量の遅延が可能な第1のDQS遅延部と、
1クロックサイクル未満の遅延量が可能な第2のDQS遅延部とを有し、
前記DQ遅延部は、
1クロックサイクル以上の遅延量の遅延が可能な第1のDQ遅延部と、
1クロックサイクル未満の遅延量が可能な第2のDQ遅延部とを有し、
前記ライトレベリング制御部は、
前記第2のDQS遅延部と前記第2のDQ遅延部の遅延量を設定することにより前記1クロックサイクル未満の遅延量の調整を行い、
前記第1のDQS遅延部と前記第1のDQ遅延部の遅延量を設定することにより前記クロックサイクル単位の遅延量の調整を行うことを特徴とする請求項1に記載のメモリコントローラ。
【請求項3】
前記第1のDQS遅延部と前記第1のDQ遅延部は、レジスタとセレクタの組合せであり、
前記第2のDQS遅延部と前記第2のDQ遅延部は、DLL回路であることを特徴とする請求項2に記載のメモリコントローラ。
【請求項4】
DDR3メモリインタフェースに対応するメモリモジュールに含まれるメモリ素子毎に設けられ、該メモリ素子にデータストローブ信号DQSを出力するDQS制御部と、前記メモリ素子毎に設けられ、該メモリ素子に出力される前記データストローブ信号DQSに同期して、ライトデータの出力とリードデータの受信を行うDQ制御部に対して、前記データストローブ信号DQSの出力タイミングの遅延量と、ライトデータの出力タイミング及びリードデータの受信タイミングの遅延量とを、1クロックサイクル未満の範囲内で調整し、
夫々の前記メモリ素子に対して、期待値データ列のライト後にリードを行って得たリードデータ列と前記期待値データ列とを比較し、比較結果に応じて、各前記DQS制御部と前記DQ制御部に対して、前記データストローブ信号DQSの出力タイミングの遅延量と、ライトデータの出力タイミング及びリードデータの受信タイミングの遅延量とを、クロックサイクル単位で調整し、
前記ライト時に、前記DQS制御部が規格により定められたバースト長より「2×M」クロックサイクル長い(M:1以上の整数)データストローブ信号DQSを出力し、前記DQ制御部が前記バースト長に合致する個数の前記期待値データ列の前後にM個ずつデータを加えて出力するように制御することを特徴とするメモリ制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2013−54692(P2013−54692A)
【公開日】平成25年3月21日(2013.3.21)
【国際特許分類】
【出願番号】特願2011−194242(P2011−194242)
【出願日】平成23年9月6日(2011.9.6)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)
【Fターム(参考)】