説明

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

【課題】ライトレベリング時のサイクルずれを補正する。
【解決手段】第1ダミーパターンを試験対象メモリの第1のアドレスに書き込む第1ライト部11と、第1ダミーパターンの書き込みに後続して、テストパターンを第2のアドレスに書き込む第2ライト部11と、テストパターンの書き込みに後続して第2ダミーパターンを第3のアドレスに書き込む第3ライト部11と、第2のアドレスからテストパターンを読み出すリード部14と、テストパターンの読み出し結果に基づいて、データの書き込みタイミングを調整するタイミング調整部14とをそなえる。

【発明の詳細な説明】
【技術分野】
【0001】
本件は、メモリコントローラ及び制御方法に関する。
【背景技術】
【0002】
DDR3(Double Data Rate 3)−SDRAM(Synchronous DRAM)を使用したDIMM(Dual Inline Memory Module)では、各DRAM端におけるライト時のクロック(以下、CLK)とデータストローブ信号(以下、DQS)のエッジとが所定の時間以内になるようにする必要がある。このような規定を保証するためにライトレベリング(Write Leveling)の仕組みが用いられている。
【0003】
ライトレベリングは、DQSのエッジをCLKのエッジに合わせる処理であり、DQSをCLKと同時もしくはほぼ同時に入力させるように調整又は補正する機能である。図9(a)〜(e)はライトレベリングを説明するシーケンス図であり、図9(a)はDIMMのCLKを例示する図、図9(b),図9(d)はそれぞれDQSを例示する図、図9(c),図9(e)はDIMMからの応答を例示する図である。
【0004】
ライトレベリングにおいては、図9(a),図9(b)に示すように、コントローラからのDQSの出力タイミングを遅らせていき、DIMMからの応答(図9(c),図9(e)参照)によって、CLKのエッジに合っているかどうかを判断する。すなわち、DIMMからの応答が“0”である場合には(図9(c)参照)、DIMMからの応答が“1”になるまでコントローラからのDQSの出力タイミングを遅らせる(図9(e)参照)。
【0005】
このようなライトレベリングでは、DQSのエッジがCLKのエッジに合っているかどうかのみ判断することができる。つまり、例えば、図9(a)に示す例において、DQSが区間Aから始まれば、エッジE1に合い、又、DQSが区間Bから始まれば、エッジE2に合う。そして、その合わせたエッジが適切かどうかは別途保証する手段が必要である。
【0006】
従来は、ライトレベリングを開始する際のディレイTAPの初期値を線長等の設計値から求めることにより、合わせたいエッジに対してライトレベリングでサイクルのずれが発生しないことを保証している。例えば、図9(a)において、エッジE2が合わせる対象のエッジである場合に、DQSが区間Bから始まるようなディレイTAPの初期値を、線長等の設計値に基づいて設定する。
【0007】
もしくは、DDR(Double Data Rate)の物理的な汎用インターフェイスであるDFI(DDR PHY Interface)で採用されている、ゲートトレーニングのような方法を用いる場合もある。すなわち、リード時のDQSが有効な期間をトレーニングして、リードのタイミングを合わせた状態からライトのずれを修正するといった方法を用いる。このような手法によれば、リードのタイミングが分かっていれば、単に適当なデータをライトリードし、リードタイミングでのデータを比較すればよい。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2009−130455号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、上述したディレイTAPの初期値を計算する方法においては、DIMMの改版等が行なわれる度にライトレベリングの初期値を見直す必要があり、煩雑であるという課題がある。又、回路のバラツキ等を考慮した計算が困難であり、実機の測定結果を何回もフィードバックする必要も生じ煩雑である。又、今後DIMMの周波数が上がるにつれて初期値の計算はさらに困難になることが予想されるという課題もある。
【0010】
一方、上述したリードのタイミングをゲートトレーニングで保証する手法では、DFIインターフェイスをそなえたDDRのIOマクロを採用していない場合は実現できないという課題がある。又、DFIのインターフェイスをサポートしていないDDRIOマクロを使用した場合にも、容易にライトレベリングのサイクルずれを補正し、また、ディレイTAPの初期値の計算を不要とできる仕組みが求められている。
【0011】
1つの側面では、本件は、ライトレベリング時のサイクルずれを補正することを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
【課題を解決するための手段】
【0012】
このため、このメモリコントローラは、連続する複数のダミー値を含む第1ダミーパターンを、試験対象メモリの第1のアドレスに書き込む第1ライト部と、前記第1ライト部による前記第1ダミーパターンの書き込みに後続して、連続する複数種類の試験値を含むテストパターンを、前記試験対象メモリの第2のアドレスに書き込む第2ライト部と、前記第2ライト部による前記テストパターンの書き込みに後続して、連続する複数のダミー値を含む第2ダミーパターンを、前記試験対象メモリの第3のアドレスに書き込む第3ライト部と、前記試験対象メモリの前記第2のアドレスから前記テストパターンを読み出すリード部と、前記リード部による前記テストパターンの読み出し結果に基づいて、前記試験対象メモリに対するデータの書き込みタイミングを調整するタイミング調整部とをそなえる。
【0013】
また、この制御方法は、連続する複数のダミー値を含む第1ダミーパターンを、試験対象メモリの第1のアドレスに書き込むステップと、前記第1ダミーパターンの書き込みに後続して、連続する複数種類の試験値を含むテストパターンを、前記試験対象メモリの第2のアドレスに書き込むステップと、前記テストパターンの書き込みに後続して、連続する複数のダミー値を含む第2ダミーパターンを、前記試験対象メモリの第3のアドレスに書き込むステップと、前記試験対象メモリの前記第2のアドレスから前記テストパターンを読み出すステップと、前記テストパターンの読み出し結果に基づいて、前記試験対象メモリに対するデータの書き込みタイミングを調整するステップとをそなえる。
【発明の効果】
【0014】
開示の技術によれば、ライトレベリングのサイクルずれを容易に補正することができる利点がある。
【図面の簡単な説明】
【0015】
【図1】は実施形態の一例としてのメモリシステムの構成を模式的に示す図である。
【図2】(a)〜(d)は実施形態の一例としてのメモリシステムにおけるライトデータパターンを例示する図である。
【図3】(a)〜(h)は実施形態の一例としてのメモリシステムにおける連続ライトモードにおけるライト処理を説明するシーケンス図である。
【図4】(a)〜(h)は実施形態の一例としてのメモリシステムにおける単発ライトモードにおけるライト処理を説明するシーケンス図である。
【図5】実施形態の一例としてのメモリシステムにおけるリードデータパターンチェック回路の機能を模式的に示す図である。
【図6】(a)〜(e)は実施形態の一例としてのメモリシステムにおける連続ライトモードにおけるリード処理を説明するシーケンス図である。
【図7】(a)〜(e)は実施形態の一例としてのメモリシステムにおける単発ライトモードにおけるリード処理を説明するシーケンス図である。
【図8】実施形態の一例としてのメモリシステムにおける連続ライトモードにおける処理を説明するフローチャートである。
【図9】(a)〜(e)はライトレベリングを説明するシーケンス図である。
【発明を実施するための形態】
【0016】
以下、図面を参照して本メモリコントローラ,制御方法及びメモリシステムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
図1は実施形態の一例としてのメモリシステムの構成を模式的に示す図である。
【0017】
本メモリシステム1は、例えばCPU(Central Processing Unit)を有する情報処理装置にそなえられ、図1に示すように、メモリコントローラ10,IOマクロ20及びDIMM30をそなえる。
DIMM30は、複数のDRAMチップをそなえるメモリモジュールであって、例えば、情報処理装置の主記憶として用いられる。このDIMM30には、後述するIOマクロ20と、コマンド信号線41やDQS信号線42,DQ(データ)信号線43,図示しないクロック信号線等を介して接続されている。本実施形態においては、DIMM30がDDR3−SDRAMを搭載した例について示す。
【0018】
このDIMM30においては、メモリコントローラ10からライトコマンドを受信すると、DQSの立ち上がり/立ち下がりエッジに同期してデータ信号の取り込みを行ない、このDQから出力されるデータがライトコマンドによって指定されるアドレスに書き込まれる。なお、データストローブ信号は、DQS信号の他にもその反転信号である/DQS信号が/DQS端子から出力されるが、本実施形態においてはこれらの図示を省略している。又、DIMM30の構成や機能は既知の技術であり、その詳細な説明は省略する。
【0019】
IOマクロ20は、メモリコントローラ10とDIMM30との間においてアナログ信号の波形やタイミングの調整を行なう。
図1に示す例においては、IOマクロ20は、遅延TAP21,リードデータ調整部22及び複数のドライバ23をそなえる。
遅延TAP21は、メモリコントローラ10のDQS_EN発生回路12から出力されるDQS_EN(DQS_イネーブル)信号を遅延させる遅延回路である。遅延TAP21は、例えば、単位遅延時間を付与するタップ(図示省略)を多段に直列接続されて構成され、後述するリードデータ処理部14から入力されるTAP遅延値に応じて信号を通過させるパスを切り替えることにより、TAP遅延値に応じた遅延を付与する。遅延TAP21に入力されたDQS_EN信号は、TAP遅延値に応じて遅延された後、DQS信号としてDQS信号線42を介してDIMM30に入力される。なお、遅延TAP21の構成や機能は既知の技術であり、その詳細な説明は省略する。
【0020】
リードデータ調整部22は、DIMM30から読み出されたDQに対してタイミングを調整したDQSを合わせ、リードデータとしてメモリコントローラ10に入力する。ドライバ23はIOマクロ20内の各信号線上において信号の波形調整等を行なう。
メモリコントローラ10は、DIMM30に対するデータの書き込みや読み出しを行なう制御装置であり、図1に示すように、コマンド処理回路11,DQS_EN発生回路12,ライトデータ制御部13及びリードデータ処理部14をそなえる。
【0021】
DQS_EN発生回路12は、DQSの基となるDQS_EN信号を生成し出力する回路であり、コマンド処理回路11からの制御に応じてDQS_EN信号を出力する。
このDQS_EN発生回路12から出力されたDQS_EN信号は、IOマクロ20に入力された後、DQSとしてDIMM30に入力される。
ライトデータ制御部13は、ライトレベリング時のサイクルずれを検出するためにDIMM30に書き込まれるライトデータパターンのデータを作成する。具体的には、ライトデータ制御部13は、ライトデータパターンとして、調整用データDT1及びダミーデータDT2,DT3を生成する。
【0022】
図2(a)〜(d)は実施形態の一例としてのメモリシステム1におけるライトデータパターンを例示する図である。図2(a)はダミーデータDT2を、図2(b)は調整用データDT1を、図2(c)はダミーデータDT3を、図2(d)は調整用データDT4を、それぞれ例示する。
調整用データ(テストパターン)DT1は、図2(b)に示すように、複数(本実施形態では8)種類の試験値D1〜D8のデータ列として構成される。すなわち、図2(b)に示す例においては、調整用データDT1は8ビットのデータ列として構成されている。又、調整用データDT1を構成する試験値D1〜D8は互いに異なる値であることが望ましく、図2(b)に示す例においては、試験値D1〜D8として1〜8が用いられている。
【0023】
ダミーデータ(第1ダミーパターン)DT2は予め設定された同一の値(ダミー値)のデータ列として構成される。図2(a)に示す例においては、ダミー値として0が用いられている。ダミーデータ(第2ダミーパターン)DT3も、ダミーデータDT2と同様に予め設定された同一の値(ダミー値)のデータ列として構成される。図2(c)に示す例においては、ダミー値として0が用いられている。又、ダミーデータDT2,DT3は、調整用データDT1と同じビット数であることが望ましい。
【0024】
これらの調整用データDT1,ダミーデータDT2,DT3は、後述するコマンド処理回路11の連続ライト機能111によって用いられる。
調整用データDT4は、図2(d)に示すように、複数(本実施形態では8)種類の試験値D01〜D08のデータ列として構成される。すなわち、図2(d)に示す例においては、調整用データDT1は8ビットのデータ列として構成されている。又、調整用データDT4を構成する試験値D01〜D08は互いに異なる値であることが望ましく、図2(d)に示す例においては、調整用データDT1と同様に、試験値D01〜D08として1〜8が用いられている。
【0025】
なお、この調整用データDT4を構成する各試験値D01〜D08は、調整用データDT1の試験値D1〜D8と同じものに限定されるものではなく、適宜変更して実施することができる。
そして、これらのライトデータパターンにおいて、各試験値D1〜D8,D01〜D08やダミー値は、それぞれ1バーストアドレスに対応する。
【0026】
ライトデータ制御部13は、ライトデータパターン発生回路131をそなえ、このライトデータパターン発生回路131により、調整用データDT1及びダミーデータDT2,DT3を生成する。ライトデータパターン発生回路131は、コマンド処理回路11から行なわれるライトデータパターンの発生要求に応じて、調整用データDT1及びダミーデータDT2,DT3を生成する。
【0027】
なお、本実施形態においては、ダミーデータDT2,DT3のいずれもダミー値として0を用いているが、これに限定されるものではない。すなわち、ダミー値として0以外の値を用いてもよく、又、ダミーデータDT2とダミーデータDT3とで異なるダミー値を用いてもよい。
ただし、これらのダミー値は、調整用データDT1,DT4の試験値D1〜D8,D01〜D08と異なる値であることが望ましい。
【0028】
コマンド処理回路11は、DIMM30に対してコマンドを出力する回路であり、例えば、DIMM30に対してデータのライトコマンドやリードコマンドを送信する。
DIMM30に対するコマンドの発行は、例えば、ロウ(行)を指定するアクティブコマンドの発行の後に行なわれる。具体的には、例えば、アクセス先のアドレス(ADRS)指定とともに、CAS(Column Address Strobe)のライトコマンド[CAS(Write)]やリードコマンド[CAS(Read)]を送信することにより行なう。
【0029】
このコマンド処理部11は、図1に示すように、ライトレベリングのタイミング調整に関し、連続ライト機能111と単発ライト機能112とをそなえる。
なお、以下、本実施形態において、連続ライト機能111によりDIMM30にライトデータパターンを書き込む場合を連続ライトモードといい、単発ライト機能112によりDIMM30にライトデータパターンを書き込む場合を単発ライトモードという。
【0030】
そして、本メモリシステム1においては、これらの連続ライトモードと単発ライトモードとは選択的に行なわれる。
連続ライト機能111は、ライトレベリングのタイミング調整において、DIMM30に対して、ライトデータパターンとして、ダミーデータDT2,調整用データDT1及びダミーデータDT3を連続して書き込む。
【0031】
この連続ライト機能111による連続ライトモードは、例えば、情報処理装置の工場出荷時や初期設定時、電源投入時に行なって好適である。
図3(a)〜(h)は実施形態の一例としてのメモリシステム1における連続ライトモードにおけるライト処理を説明するシーケンス図である。図3(a)はDIMM30におけるCLK(CLK@DIMM)を例示する図,(d),(f),(h)はそれぞれDIMM30におけるDQSを例示する図、図3(b)はコマンド処理回路11から送信されるライトコマンドを例示する図である。又、図3(c),(e),(g)はそれぞれDIMM30に書き込まれるライトデータパターンを例示する図である。
【0032】
そして、これらの図3(a)〜(h)に示す例においては、第1のアドレスAに格納されているデータを矢印A1で、第2のアドレスBに格納されているデータを矢印B1で、第3のアドレスCに格納されているデータを矢印C1で、それぞれ示す。
図3(e),(f)に示す例においては、ライトレベリング(WL)においてDQSが最適のタイミングにあり、DIMM30にライトデータパターンがずれることなく書き込まれた状態を示している。すなわち、第2のアドレスBに調整用データDT1の試験値D1〜D8が欠けることなく完全な状態(理想状態)で格納されている。
【0033】
一方、図3(c),(d)においては、ライトレベリングにおいてDQSのタイミングが図3(e),(f)に示す理想状態よりも早くなり、前側(図3(c),(d)中左側)に1サイクル分(1τ)ずれた状態で格納された例を示している。すなわち、図3(c),(d)に示す例においては、試験値D1,D2が第2のアドレスB内には格納されずに第1のアドレスA内に格納されている。そして、第2のアドレスBには調整用データDT1の試験値D3〜D8が格納されるとともに、試験値D8に後続して2つのダミー値0が格納されている。又、図3(c),(d)に示す例においては、第3のアドレスCに、6つのダミー値0に後続して2つの不定値Xが格納されている。
【0034】
また、図3(g),(h)においては、ライトレベリングにおいてDQSのタイミングが、図3(e),(f)に示す理想状態よりも遅くなり、後ろ側(図3(g),(h)右側)に1τずれた状態で格納された例を示している。すなわち、図3(g),(h)に示す例においては、試験値D7,D8が第2のアドレスB内には格納されずに第3のアドレスC内に格納されている。そして、第2のアドレスBには調整用データDT1の試験値D1〜D6が格納されるとともに、試験値D1に先行して2つのダミー値0が格納されている。又、図3(g),(h)に示す例においては、第1のアドレスAに、6つのダミー値0に先行して2つの不定値Xが格納されている。
【0035】
連続ライト機能111においては、図3(b)に示すように、コマンド処理回路11が、DIMM30に対して3つのコマンドCW1,CW2,CW3を連続して送信することにより、ダミーデータDT2,調整用データDT1及びダミーデータDT3の順で書き込ませる。
ここで、コマンドCW1は、ダミーデータDT2をDIMM30の第1のアドレスAに書き込ませるライトコマンドである。又、コマンドCW2は、調整用データDT1をDIMM30の第2のアドレスBに書き込ませるライトコマンドである。更に、コマンドCW3は、ダミーデータDT3をDIMM30の第3のアドレスCに書き込ませるライトコマンドである。
【0036】
また、アドレスA,B,Cは、予め設定しておいてもよく、又、コマンド処理回路11が任意に決定してもよい。ただし、これらのアドレスA,B,Cは同一ロウ(行)内にあり、一のメモリアクセスで読み出せる範囲内にあることが望ましい。
また、コマンド処理回路11は、ライトコマンドCW1〜CW3の送信に際して、ライトデータ制御部13に対して、各ライトコマンドCW1〜CW3とともに送信するライトデータパターン(調整用データDT1及びダミーデータDT2,DT3)の生成要求を行なう。
【0037】
すなわち、コマンド処理回路11は、連続ライトモードにおいて、ダミーデータDT2をDIMM30の第1のアドレスAに書き込む第1ライト部として機能するとともに、ダミーデータDT2の書き込みに後続して、調整用データDT1をDIMM30の第2のアドレスBに書き込む第2ライト部として機能する。更に、コマンド処理回路11は、連続ライトモードにおいて、調整用データDT1の書き込みに後続して、ダミーデータDT3DIMM30の第3のアドレスCに書き込む第3ライト部として機能する。
【0038】
単発ライト機能112は、ライトレベリングのタイミング調整において、DIMM30に対して、調整用データDT4を書き込む。
図4(a)〜(h)は実施形態の一例としてのメモリシステム1における単発ライトモードにおけるライト処理を説明するシーケンス図である。図4(a)はDIMM30におけるCLK(CLK@DIMM)を例示する図,(d),(f),(h)はそれぞれDIMM30におけるDQSを例示する図、図4(b)はコマンド処理回路11から送信されるライトコマンドCW4を例示する図である。又、図4(c),(e),(g)はそれぞれDIMM30に書き込まれるライトデータパターンを例示する図である。
【0039】
なお、図4(e),(f)に示す例においては、ライトレベリングにおいてDQSが最適のタイミングにあり、DIMM30にライトデータパターンがずれることなく書き込まれた状態を示している。又、図4(c),(d)においては、ライトレベリングにおいてDQSのタイミングが図4(e),(f)に示す状態よりも早くなり、前側(図4(e),(f)中左側)に1τずれた状態を例示している。更に、図4(g),(h)においては、ライトレベリングにおいてDQSのタイミングが、図4(e),(f)に示す状態よりも遅くなり、後ろ側(図4(e),(f)中右側)に1τずれた状態を例示している。
【0040】
単発ライト機能112においては、図4(b)に示すように、コマンド処理回路11が、DIMM30に対して、1つのライトコマンドCW4を送信することにより、調整用データDT4を書き込ませる。具体的には、コマンドCW4は調整用データDT4をDIMM30の第2のアドレスBに書き込ませる。
すなわち、コマンド処理回路11は、単発ライトモードにおいて、調整用データDT4をDIMM30の第2のアドレスBに書き込む第4ライト部として機能する。
【0041】
リードデータ処理部14は、ライトレベリングのタイミング調整において、DIMM30に書き込まれたライトデータパターンを読み出して処理する。コマンド処理回路11が、DIMM30に対して、そのアドレスBからデータを読み出すリードコマンドCRを繰り返し送信すると、リードデータ処理部14は、これらのリードコマンドに応じてDIMM30から送信されたデータを受け取り、処理を行なう。
【0042】
リードデータ処理部14は、連続ライトモードにおいては、DIMM30の第2のアドレスBから読み出された調整用データDT1を処理し、又、単発ライトモードにおいては、DIMM30の第2のアドレスBから読み出された調整用データDT4を処理する。
すなわち、リードデータ処理部14は、DIMM30の第2のアドレスBから調整用データDT1を読み出すリード部として機能する。
【0043】
そして、リードデータ処理部14は、DIMM30のアドレスBから読み出したリードデータに基づき、ライトレベリングのサイクルずれを補正する処理を行なう。
リードデータ処理部14は、図1に示すように、ライトレベリング応答処理部141及びリードデータパターンチェック回路142をそなえる。
リードデータパターンチェック回路142は、DIMM30の第2のアドレスBから読み出されたリードデータに基づき、DQSの出力タイミングを調整するTAP遅延量を決定する。
【0044】
図5は実施形態の一例としてのメモリシステム1におけるリードデータパターンチェック回路142の機能を模式的に示す図である。
この図5に示すように、DIMM30からリードコマンドCRによって読み出され、IOマクロ20を介して取得されたリードデータは、バッファ1421に一時的に格納される。バッファ1421には、リードコマンドCRによってDIMM30から読み出されたリードデータがFIFOで格納される。
【0045】
図6(a)〜(e)は実施形態の一例としてのメモリシステム1における連続ライトモードにおけるリード処理を説明するシーケンス図である。図6(a)はDIMM30におけるCLK(CLK@DIMM)を例示する図、図6(b)はコマンド処理回路11から送信されるリードコマンドCRを例示する図である。又、図6(c),(d),(e)はそれぞれDIMM30から読み出されるリードデータを例示する図である。
【0046】
また、図6(c),(d),(e)においては、一のリードコマンドCRによってDIMM30の第2のアドレスBから読み出されたリードデータを矢印B2で示す。
図6(d)に示す例においては、図3(e)に示された理想状態で格納されたライトデータパターンがリードデータとして読み出された状態を示している。
すなわち、第2のアドレスBから調整用データDT1の試験値D1〜D8が欠けることなく完全な状態(理想状態)で読み出され、バッファ1421に格納されている。
【0047】
一方、図6(c)に示す例においては、図3(c)に示された状態で格納されたライトデータパターンが読み出された状態を示している。すなわち、図6(c)に示す例においては、DIMM30の第2のアドレスBから試験値D3〜D8及びダミー値0,0が読み出され、バッファ1421に格納されている。
また、図6(e)に示す例においては、図3(g)に示された状態で格納されたライトデータパターンが読み出された状態を示している。すなわち、図6(e)に示す例においては、DIMM30の第2のアドレスBからダミー値0,0及び試験値D1〜D6が読み出され、バッファ1421に格納されている。
【0048】
リードデータパターンチェック回路142は、バッファ1421に格納された、DIMM30の第2のアドレスBから読み出されたリードデータに基づいて各種の情報収集や判断を行なう。
リードデータパターンチェック回路142は、連続ライトモードにおいて、バッファ1421のリードデータを、その先頭(図6(c),(d),(e)の左側)から順に確認する。そして、リードデータパターンチェック回路142は、(i)リードデータにおいて最初に読めた試験値、(ii)リードデータにおいて最後に読めた試験値、(iii)試験値が連続しているか、等の情報を収集・分析し、その結果を図示しないメモリ等に保存する。
【0049】
また、リードデータパターンチェック回路142は、上記の“(i)リードデータにおいて最初に読めた試験値”がD1であるか否かについても判断する。
なお、上記の(iii)試験値が連続しているかの判断は、試験値D1〜D8を試験値Dn(n=1〜8の自然数)と表した場合に、Dkの次にDk+1(kは1〜7の自然数)が並んでいるかを確認することで行なう。
【0050】
そして、リードデータパターンチェック回路142は、これらの判断結果に基づいて、ライトレベリングにおけるDQSの出力タイミングの変更量を決定し、その変更量を実現するTAP遅延値の算出を行なう。
例えば、上記の“(i)リードデータにおいて最初に読めた試験値”がD1である場合には、リードデータパターンチェック回路142は、ライトデータを出すタイミング(遅延TAP)を早めるように変更する。
【0051】
具体的には、上記“(ii)リードデータにおいて最後に読めた試験値”がDnである場合に、変更サイクル数(早めるサイクル数)sを、例えば以下の式(1)により求める。
早めるサイクル数s=8−n ・・・(1)
例えば、上記“(ii)リードデータにおいて最後に読めた試験値”がD6である場合には、上記式(1)より、
早めるサイクル数s=8−6
=2
となる。
【0052】
一方、上記の“(i)リードデータにおいて最初に読めた試験値”がD1でない場合には、リードデータパターンチェック回路142は、ライトデータを出すタイミング(遅延TAP)を遅らせるように変更する。
具体的には、上記“(i)リードデータにおいて最初に読めた試験値”がDnである場合に、変更サイクル数(遅らせるサイクル数)sを、例えば以下の式(2)により求める。
【0053】
遅らせるサイクル数s=n−1 ・・・(2)
例えば、上記“(i)リードデータにおいて最初に読めた試験値”がD3である場合には、
遅らせるサイクル数s=3−1
=2
となる。
【0054】
すなわち、リードデータ処理部14は、DIMM30の第2のアドレスから読み出したリードデータにおける、試験値D1〜D8やダミー値の読み出し位置に基づいて、調整用データDT1のずれを補正する変更サイクル数sを決定する。
なお、リードデータパターンチェック回路142における変更サイクル数sの算出方法は、上記式(1),(2)を用いるものに限定されるものではなく、種々変形して実施することができる。例えば、他の演算式を用いて求めてもよく、又、予め用意した変換対応規則に従って求めてもよい。
【0055】
また、リードデータパターンチェック回路142は、決定した変更するサイクル数sに基づき、遅延TAP21に設定するTAP遅延値を決定する。
なお、このTAP遅延値の決定方法は、予め用意した変換対応規則に従って行なう等、既知の種々の手法により実現することができ、その詳細な説明は省略する。
図7(a)〜(e)は実施形態の一例としてのメモリシステム1における単発ライトモードにおけるリード処理を説明するシーケンス図である。図7(a)はDIMM30におけるCLK(CLK@DIMM)を例示する図、図7(b)はコマンド処理回路11から送信されるリードコマンドCRを例示する図である。又、図7(c),(d),(e)はそれぞれDIMM30の第2のアドレスBから読み出されるリードデータを例示する図である。
【0056】
図7(d)に示す例においては、図4(e)に示された理想状態で格納されたライトデータパターンがリードデータとして読み出された状態を示している。
すなわち、第2のアドレスBから調整用データDT4の試験値D01〜D08が欠けることなく完全な状態(理想状態)で読み出され、バッファ1421に格納されている。
一方、図7(c)に示す例においては、図4(c)に示された状態で格納されたライトデータパターンが読み出された状態を示している。すなわち、図7(c)に示す例においては、DIMM30の第2のアドレスBから試験値D03〜D08及び不定値X,Xが読み出され、バッファ1421に格納されている。
【0057】
また、図7(e)に示す例においては、図4(g)に示された状態で格納されたライトデータパターンが読み出された状態を示している。すなわち、図7(e)に示す例においては、DIMM30の第2のアドレスBから不定値X,X及び試験値D01〜D06が読み出され、バッファ1421に格納されている。
リードデータパターンチェック回路142は、単発ライトモードにおいては、例えば、バッファ1421に格納された、DIMM30の第2のアドレスBから読み出されたリードデータが、図7(d)に示すような理想状態で格納されているか否かを確認する。これにより、本メモリシステム1において、ライトレベリングが適正に行なわれているか否かを確認することができる。
【0058】
ライトレベリング応答処理部141は、連続ライトモードにおいて、リードデータパターンチェック回路142によって決定されたTAP遅延値を遅延TAP21に送信することにより、DQSの出力タイミングを調整する。これにより、リードデータ処理部14は、DIMM30の第2のアドレスBからのテストパターンの読み出し結果に基づいて、DIMM30に対するデータの書き込みタイミングを調整するタイミング調整部として機能するのである。
【0059】
上述の如く構成された実施形態の一例としてのメモリシステム1における連続ライトモードにおける処理を、図8に示すフローチャート(ステップS1〜S10)に従って説明する。
コマンド処理回路11は、連続ライト機能部111により、DIMM30に対して、ライトコマンドCW1〜CW3を送信することにより、アドレスA,B,Cに対して、ダミーデータDT2,調整用データDT1及びダミーデータDT3を、順次、書き込む(ステップS1)。
【0060】
その後、コマンド処理回路11は、DIMM30に対してリードコマンドCRを送信することにより、第2のアドレスBに格納された調整用データDT1を読み出す(ステップS2)。
リードデータ処理部14は、バッファ1421のリードデータについて、(i)リードデータにおいて最初に読めた試験値、(ii)リードデータにおいて最後に読めた試験値、及び(iii)試験値が連続しているか、等の情報を収集・分析し、その結果を図示しないメモリ等に保存する(ステップS3)。
【0061】
リードデータ処理部14は、ステップS3において保存された情報において、試験値が連続しているか否かを確認する(ステップS4)。この確認の結果、試験値が連続している場合には(ステップS4のYESルート参照)、次に、リードデータにおいて最初に読めた試験値=D1、且つ、リードデータにおいて最後に読めた試験値=D8であるかを確認する(ステップS5)。すなわち、第2のアドレスBから、図6(d)に例示するような、理想状態で格納されたライトデータパターンがリードデータとして読み出されたか否かを確認する。
【0062】
この確認の結果、リードデータにおいて最初に読めた試験値=D1、且つ、リードデータにおいて最後に読めた試験値=D8である場合には(ステップS5のYESルート参照)、正常終了する。
また、この確認の結果、リードデータにおいて最初に読めた試験値=D1、且つ、リードデータにおいて最後に読めた試験値=D8でない場合には(ステップS5のNOルート参照)、次に、リードデータにおいて最初に読めた試験値=D1であるか否かを確認する(ステップS8)。
【0063】
リードデータにおいて最初に読めた試験値=D1である場合には(ステップS8のYESルート参照)、リードデータ処理部14は、ライトデータを出すタイミング(遅延TAP)を早めるように変更する(ステップS9)。そしてリードデータ処理部14は、上述した式(1)に基づき、早めるサイクル数sを算出する。
リードデータパターンチェック回路142は、算出されたサイクル数sに基づき、遅延TAP21に設定するTAP遅延値を決定し、決定したTAP遅延値を遅延TAP21に設定し、ステップS1に戻る。
【0064】
一方、リードデータにおいて最初に読めた試験値=D1でない場合には(ステップS8のNOルート参照)、リードデータ処理部14は、ライトデータを出すタイミング(遅延TAP)を遅くするように変更する(ステップS10)。そしてリードデータ処理部14は、上述した式(2)に基づき、早めるサイクル数sを算出する。
リードデータパターンチェック回路142は、算出されたサイクル数sに基づき、遅延TAP21に設定するTAP遅延値を決定し、決定したTAP遅延値を遅延TAP21に設定し、ステップS1に戻る。
【0065】
また、ステップS4において、試験値が連続していない場合には(ステップS4のNOルート参照)、リードデータ処理部14は、第2のアドレスBが変更された回数(アドレス変更回数)が、規定回数未満であるか否かを確認する(ステップS6)。アドレス変更回数が規定回数未満ではない場合には(ステップS6のNOルート参照)、エラー終了する。なお、本メモリシステム1においては、遅延TAP21がオーバーフローもしくはアンダーフローした場合もエラー終了する。
【0066】
一方、アドレス変更回数が規定回数未満である場合には(ステップS6のYESルート参照)、リードデータ処理部14は、第2のアドレスBを変更して(ステップS7)、ステップS1に戻る。これにより、ステップS4において、何らかの理由でたまたま試験値の不連続となった場合には、調整用データDT1の書き込み先である第2のアドレスBを変更した上でリトライすることにより、ライトレベリングのタイミング調整を実現することができ、信頼性が高い。
【0067】
また、単発ライトモードにおいては、コマンド処理回路11が、DIMM30に対してライトコマンドCW4を送信することにより、調整用データDT4をDIMM30の第2のアドレスBに書き込ませる。
その後、コマンド処理回路11は、DIMM30に対してリードコマンドCRを送信することにより、第2のアドレスBに格納された調整用データDT1を読み出す。
【0068】
そして、リードデー処理部14が、バッファ1421に格納された、DIMM30の第2のアドレスBから読み出されたリードデータが、図7(d)に示すような理想状態で格納されているか否かを確認する。これにより、本メモリシステム1において、ライトレベリングが適正なタイミングで行なわれているか否かを確認する。
なお、単発ライトモードでの処理は連続ライトモードに比べてメモリコントローラ10の付加を軽減することができる。従って、例えば、上述した連続ライトモード等によりライトレベリングのタイミング調整を行なった後に、その確認の用途に用いて好適である。
【0069】
このように、実施形態の一例としてのメモリシステム1によれば、連続ライトモードにおいて、DIMM30の第2のアドレスから読み出したリードデータにおける、試験値D1〜D8やダミー値の読み出し位置に基づいて、調整用データDT1のずれを補正する変更サイクル数sを決定する。
これにより、ライトレベリングにおいて、ライトコマンドに対するサイクルずれを検出し、ライトコマンドに対して正しいCLKのエッジにDQSを合わせることができ、ライトレベリングのサイクルずれを容易に補正することができる。又、ディレイTAPの初期値の計算を行なうことなく、遅延TAP21に対して最適なTAP遅延値を容易に設定することができる。
【0070】
また、リードデータ処理部14が、TAP遅延値を算出して遅延TAP21に設定することにより、DQSのタイミング調整を自律的に行なうことができ、利便性が高い。
また、連続ライトモードにおいては、調査対象のDIMM30の第2のアドレスBに、不定値が格納されることがなく、利便性が高い。
さらに、DDIのI0マクロ20のライトレベリングで使用する遅延TAP21を用いることにより、本実施形態の実現に際して、IOマクロ20側において特段の機能追加を行なう必要がなく、導入コストを低減することができる。又、DFIのような汎用のDDRインタフェースに対応していなくても実現可能であり、利便性が高い。
【0071】
また、連続ライトモードと単発ライトモードとで選択的に処理可能に構成され、ライトレベリングのタイミングを確認するだけで良い場合には、単発ライトモードで処理を行なうことで、メモリコントローラ10の付加を低減することができる。
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
【0072】
例えば、上述した実施形態においては、メモリコントローラ10とIOマクロ20とが独立してそなえられているが、これに限定されるものではなく、メモリコントローラ10にIOマクロ20としての機能をそなえてもよい。
また、上述した実施形態においては、調整用データDT1,DT4やダミーデータDT2,DT3が8ビットの例を示しているが、これに限定されるものではなく、7ビット以下もしくは9ビット以上であってもよい。
【0073】
また、本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【符号の説明】
【0074】
1 メモリシステム
10 メモリコントローラ
11 コマンド処理回路
12 DQS_EN発生回路
13 ライトデータ制御部
14 リードデータ処理部
20 IOマクロ
21 遅延TAP
22 リードデータ調整部
23 ドライバ
30 DIMM
41 コマンド信号線
42 DQS信号線
43 DQ信号線
111 連続ライト機能部
112 単発ライト機能部
131 ライトデータパターン発生回路
141 ライトレベリング応答処理部
142 リードデータパターンチェック回路
CW1,CW2,CW3,CW4,CR リードコマンド

【特許請求の範囲】
【請求項1】
連続する複数のダミー値を含む第1ダミーパターンを、試験対象メモリの第1のアドレスに書き込む第1ライト部と、
前記第1ライト部による前記第1ダミーパターンの書き込みに後続して、連続する複数種類の試験値を含むテストパターンを、前記試験対象メモリの第2のアドレスに書き込む第2ライト部と、
前記第2ライト部による前記テストパターンの書き込みに後続して、連続する複数のダミー値を含む第2ダミーパターンを、前記試験対象メモリの第3のアドレスに書き込む第3ライト部と、
前記試験対象メモリの前記第2のアドレスから前記テストパターンを読み出すリード部と、
前記リード部による前記テストパターンの読み出し結果に基づいて、前記試験対象メモリに対するデータの書き込みタイミングを調整するタイミング調整部とをそなえることを特徴とする、メモリコントローラ。
【請求項2】
前記タイミング調整部が、
前記リード部による前記テストパターンの読出しの開始に基づいて、前記試験対象メモリに対するデータの書き込みタイミングを調整することを特徴とする、請求項1記載のメモリコントローラ。
【請求項3】
前記タイミング調整部が、
前記リード部による前記テストパターンの読出しの開始又は終了に基づいて、前記試験対象メモリに対するデータの書き込みタイミングの変化量を決定することを特徴とする、請求項1又は2記載のメモリコントローラ。
【請求項4】
連続する複数種類の試験値を含む第2のテストパターンを、前記試験対象メモリの第2のアドレスに書き込む第4ライト部をそなえ、
前記第1ライト部、前記第2ライト部及び前記第3ライト部による前記第1ダミーパターン、テストパターン及び第2ダミーパターンの書き込みを連続して行なう連続ライトと、前記第4ライト部による前記第2のテストパターンの書き込みを行なう単発ライトとのいずれかを選択的に行なうことを特徴とする、請求項1〜3のいずれか1項に記載のメモリコントローラ。
【請求項5】
連続する複数のダミー値を含む第1ダミーパターンを、試験対象メモリの第1のアドレスに書き込むステップと、
前記第1ダミーパターンの書き込みに後続して、連続する複数種類の試験値を含むテストパターンを、前記試験対象メモリの第2のアドレスに書き込むステップと、
前記テストパターンの書き込みに後続して、連続する複数のダミー値を含む第2ダミーパターンを、前記試験対象メモリの第3のアドレスに書き込むステップと、
前記試験対象メモリの前記第2のアドレスから前記テストパターンを読み出すステップと、
前記テストパターンの読み出し結果に基づいて、前記試験対象メモリに対するデータの書き込みタイミングを調整するステップとをそなえることを特徴とする、制御方法。
【請求項6】
前記書き込みタイミングを調整するに際して、
前記テストパターンの読出しの開始に基づいて、前記試験対象メモリに対するデータの書き込みタイミングを調整することを特徴とする、請求項5記載の制御方法。
【請求項7】
前記書き込みタイミングを調整するに際して、
前記テストパターンの読出しの開始又は終了に基づいて、前記試験対象メモリに対するデータの書き込みタイミングの変化量を決定することを特徴とする、請求項5又は6記載の制御方法。

【図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


【公開番号】特開2012−252530(P2012−252530A)
【公開日】平成24年12月20日(2012.12.20)
【国際特許分類】
【出願番号】特願2011−124767(P2011−124767)
【出願日】平成23年6月3日(2011.6.3)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】