(57)【要約】【課題】必要なタイミングで、メモリに対する情報の入出力タイミングに関る遅延量を調整することのできるメモリコントローラを提供すること。【解決手段】メモリコントローラ１であって、メモリ２への入力データおよびデータストローブ信号、並びに、メモリ２に対するコマンドおよびクロック信号を生成し出力するコントローラ部３と、入力データ、データストローブ信号、コマンド、およびクロック信号のうちの少なくとも一つの遅延量を制御する遅延調整回路５と、遅延量を検出し、検出した遅延量と、基準遅延量との差分を算出する遅延検出部４とを備え、コントローラ部３は、算出された差分が閾値を超えた場合、メモリ２のバースト長（ＢＬ）を第１ＢＬから、第１ＢＬよりも長い第２ＢＬに切り替えるためのコマンドを発行し、遅延調整回路５は、第１ＢＬと第２ＢＬとの差に対応する期間に、少なくとも一つの遅延量を基準遅延量に近づくように制御する。【選択図】図１
2013008112.tif 000002
【特許請求の範囲】
【請求項１】
メモリに対するデータ入出力を行うメモリコントローラであって、
前記メモリへの入力データおよび前記入力データについての基準クロックとなるデータストローブ信号を生成し出力するとともに、前記メモリに対するコマンドおよび前記コマンドに対応するクロック信号を生成し出力するコントローラ部と、
前記入力データ、前記データストローブ信号、前記コマンド、および前記クロック信号のうちの少なくとも一つの遅延量を制御する遅延調整回路と、
前記入力データ、前記データストローブ信号、前記コマンド、および前記クロック信号の全てに共通する変動後の遅延量を検出し、検出した遅延量と、基準遅延量との差分を算出する遅延検出部とを備え、
前記コントローラ部は、前記遅延検出部により算出された差分が閾値を超えた場合、前記メモリに対するデータ入出力におけるバースト長（ＢＬ）を第１ＢＬから、前記第１ＢＬよりも長い第２ＢＬに切り替えるためのコマンドを発行し、
前記遅延調整回路は、前記第１ＢＬから前記第２ＢＬに切り替えられたことにより生じる、前記第１ＢＬと前記第２ＢＬとの差に対応する期間に、前記少なくとも一つの遅延量を前記基準遅延量に近づくように制御する
メモリコントローラ。
【請求項２】
前記コントローラ部はさらに、前記遅延調整回路が前記少なくとも一つの遅延量を前記基準遅延量に近づくように制御した後に、前記メモリにおけるＢＬを前記第２ＢＬから前記第１ＢＬに切り替えるためのコマンドを発行する
請求項１記載のメモリコントローラ。
【請求項３】
前記遅延検出部は、前記閾値を書き換え可能に記憶する記憶部を有する
請求項１または２に記載のメモリコントローラ。
【請求項４】
前記遅延検出部は、前記検出した遅延量と前記基準遅延量との差分が前記閾値を超えた場合、所定の信号を前記コントローラ部に送信し、
前記コントローラ部は前記所定の信号を受信した場合、前記メモリにおけるＢＬを前記第１ＢＬから前記第２ＢＬに切り替える
請求項１〜３のいずれか１項に記載のメモリコントローラ。
【請求項５】
前記遅延検出部はさらに、前記所定の信号を定期的に前記コントローラ部に送信可能である
請求項４記載のメモリコントローラ。
【請求項６】
前記遅延検出部は、入力される指示に応じて、（ａ）前記検出した遅延量と前記基準遅延量との差分が前記閾値を超えた場合に前記所定の信号を送信するか、（ｂ）前記所定の信号を定期的に前記コントローラ部に送信するか、を選択するセレクタを有する
請求項５記載のメモリコントローラ。
【請求項７】
メモリに対するデータ入出力を行うメモリコントローラによって実行される遅延調整方法であって、
前記メモリコントローラが生成し出力する、前記メモリへの入力データ、前記入力データについての基準クロックとなるデータストローブ信号、前記メモリに対するコマンド、および、前記コマンドに対応するクロック信号の全てに共通する変動後の遅延量を検出する検出ステップと、
検出した遅延量と、基準遅延量との差分を算出する算出ステップと、
算出された差分が閾値を超えた場合、前記メモリに対するデータ入出力におけるバースト長（ＢＬ）を第１ＢＬから、前記第１ＢＬよりも長い第２ＢＬに切り替えるＢＬ切り替えステップと、
前記第１ＢＬから前記第２ＢＬに切り替えられたことにより生じる、前記第１ＢＬと前記第２ＢＬとの差に対応する期間に、前記入力データ、前記データストローブ信号、前記コマンド、および前記クロック信号のうちの少なくとも一つの遅延量を前記基準遅延量に近づくように制御する遅延調整ステップと
を含む遅延調整方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリコントローラに関し、特に、メモリに対する入出力信号の遅延量を調整するメモリコントローラに関する。
【背景技術】
【０００２】
近年のメモリコントローラでは、大容量化および高速データ処理化に伴って、ＤＤＲ−ＳＤＲＡＭ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）の採用が主流となっている。
【０００３】
ＤＤＲ−ＳＤＲＡＭでは、データストローブ信号（ＤＱＳ）の立ち上がりおよび立ち下がりの両エッジに同期して、データ信号（ＤＱ）の転送が可能であるため、従来のＳＤＲＡＭの２倍のデータ転送が可能である。
【０００４】
ＤＤＲ方式では、規格として、双方向データおよびデータストローブ信号を用いて、ＤＤＲ−ＳＤＲＡＭにデータ送信を行う動作（Ｗｒｉｔｅ動作）と、ＤＤＲ−ＳＤＲＡＭからデータを受信する動作（Ｒｅａｄ動作）とがある。近年の高速アクセスに対応する上で、Ｗｒｉｔｅ動作およびＲｅａｄ動作ともに、データストローブ信号の最適化が重要視される。
【０００５】
このデータストローブ信号のタイミング調整を行うためには、遅延素子を用いることが一般的である。
【０００６】
遅延素子の段数（遅延量）は、予め設定されているが、プロセスおよび温度・電圧の変動により、遅延素子の特性が変化する。従って、遅延素子の特性が変化しても、最適なポイントでデータを取り込むために、変動する段数（遅延量）の検出とそれに応じた段数（遅延量）の更新が必要であり、さらにその更新をいつ行うかが問題になってくる。
【０００７】
つまり、メモリアクセス中のデータストローブ信号の遅延更新は、誤データ送信およびノイズの原因になるからである。
【０００８】
図６は、特許文献１記載の従来のメモリ制御装置の構成を示すブロック図である。
【０００９】
図６に示す従来のメモリ制御装置１０１は、ストローブ遅延回路５００を備える。ストローブ遅延回路５００は、ｎ個の遅延素子５０１、５０２、５０３、・・・、５０ｎ と、セレクタ５１０とを有する。
【００１０】
従来のメモリ制御装置１０１では、ストローブ遅延回路５００において信号の遅延に使用する遅延素子の段数（遅延量）の更新を、メモリアクセスのないリフレッシュ期間を利用して行っている。
【００１１】
従来のメモリ制御装置１０１では、このようにメモリアクセスのない安定期間に段数（遅延量）更新を行うため、データラインにノイズを乗せる心配がない。
【００１２】
図７は、特許文献２に記載の従来のメモリ制御装置の構成を示すブロック図である。図７に示す従来のメモリ制御装置１０２は、リフレッシュ期間およびブランキング期間以外の所定の期間に、段数（遅延量）更新を行うことができる。
【００１３】
具体的には、従来のメモリ制御装置１０２は、データストローブ信号を遅延させる遅延回路１０３と、遅延された少なくとも２つのデータストローブ信号に基づき、メモリからのｒｅａｄデータ信号のデータ値を各々格納する少なくとも２つのＦＩＦＯバッファ部１０８および１０９と、前記少なくとも２つのＦＩＦＯバッファ部１０８および１０９に格納されたｒｅａｄデータ値を比較する比較器１０４と、その比較器１０４の比較結果に基づきデータストローブ信号の遅延時間を制御する制御回路１０６とを備えている。
【００１４】
メモリ制御装置１０２では、格納された１つのＦＩＦＯデータはメモリアクセス通常動作に使用し、これと並行して、遅延された少なくとも２つのデータストローブ信号に基づくｒｅａｄデータ値を比較し、当該比較結果により遅延時間を制御できる。そのため、アプリケーションにリフレッシュ期間およびブランキング期間が無くても、メモリアクセスタイミングを調整することができる。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００４−２２０６４３号公報
【特許文献２】特開２０１０−１８２１４９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかしながら、特許文献１のメモリ制御装置１０１では、遅延素子の段数（遅延量）を更新するために、リフレッシュ期間など、メモリアクセスのない期間が必要である。
【００１７】
昨今、ＤＤＲ−ＳＤＲＡＭ使用時には、全メモリをリフレッシュするオールバンクリフレッシュを行わずに、メモリを、独立して動作可能なブロック（バンク）に分け、そのブロック（バンク）毎にリフレッシュするパーバンクリフレッシュを行う傾向にある。
【００１８】
これは、リフレッシュ動作をブロック（バンク）毎にずらして行うことで、帯域を落とさず、さらなる高速化に対応するためである。パーバンクリフレッシュ時には、リフレッシュしているバンク以外は通常動作が可能である。つまり、常にいずれかのバンクが利用できるため、メモリアクセス動作を止めなくてもよい。
【００１９】
このように、メモリアクセスを止めるリフレッシュ期間のない構成の場合、特許文献１のメモリ制御装置１０１では、遅延素子の段数（遅延量）を更新することはできない。また、更新には定期的に発生するリフレッシュ期間またはブランキング期間を利用するので、段数（遅延量）の更新を必要なタイミングで実行できず、結果として、誤データ送信をしてしまう可能性もある。
【００２０】
特許文献２のメモリ制御装置１０２では、リフレッシュ期間およびブランキング期間を利用せずに遅延素子の段数（遅延量）を更新することができる。しかし、ｒｅａｄ側しか遅延を確認できない上、ｒｅａｄコマンドの発行で遅延検出を行っているため、ｒｅａｄコマンドが発行されないと、遅延の検出ができない。
【００２１】
そのため、メモリ制御装置１０２では、ｒｅａｄコマンド以外を実行している際には、遅延が起こっていても検出ができず、更新もできないという問題が発生する。
【００２２】
また、メモリ制御装置１０２では、複数のデータストローブ信号を持ち、各々でキャプチャーされたｒｅａｄデータの一つを通常動作に使用することにより、メモリアクセス動作中の遅延更新を行おうとしている。しかし、ｒｅａｄコマンドが発行されず、遅延更新が施されない期間が長かった場合、その次のｒｅａｄコマンド発行時にデータストローブ信号の遅延段数（遅延量）が大きくずれてしまっている可能性がある。
【００２３】
そのため、メモリ制御装置１０２では、通常動作に使用するｒｅａｄデータが正しいタイミングでキャプチャーされず誤データ送信をしてしまう問題がある。
【００２４】
また、メモリに発行するコマンドと、コマンドに対応するクロック信号との関係においても、必要に応じたタイミングにおける遅延量の調整は重要であるが、従来では、この問題についても適切に解決できていない。
【００２５】
本発明は、前記従来の課題を解決するためになされたものであり、必要なタイミングで、メモリに対する情報の入出力タイミングに関る遅延量を調整することのできるメモリコントローラを提供することを目的とする。
【課題を解決するための手段】
【００２６】
本発明の一態様に係るメモリコントローラは、メモリに対するデータ入出力を行うメモリコントローラであって、前記メモリへの入力データおよび前記入力データについての基準クロックとなるデータストローブ信号を生成し出力するとともに、前記メモリに対するコマンドおよび前記コマンドに対応するクロック信号を生成し出力するコントローラ部と、前記入力データ、前記データストローブ信号、前記コマンド、および前記クロック信号のうちの少なくとも一つの遅延量を制御する遅延調整回路と、前記入力データ、前記データストローブ信号、前記コマンド、および前記クロック信号の全てに共通する変動後の遅延量を検出し、検出した遅延量と、基準遅延量との差分を算出する遅延検出部とを備え、前記コントローラ部は、前記遅延検出部により算出された差分が閾値を超えた場合、前記メモリに対するデータ入出力におけるバースト長（ＢＬ）を第１ＢＬから、前記第１ＢＬよりも長い第２ＢＬに切り替えるためのコマンドを発行し、前記遅延調整回路は、前記第１ＢＬから前記第２ＢＬに切り替えられたことにより生じる、前記第１ＢＬと前記第２ＢＬとの差に対応する期間に、前記少なくとも一つの遅延量を前記基準遅延量に近づくように制御する。
【００２７】
この構成によれば、遅延検出部は、メモリへの情報の入出力に関る遅延量を検出し、コントローラ部は、当該遅延量が閾値を超えた場合、メモリのバースト長（ＢＬ）を伸ばすことができる。
【００２８】
遅延調整回路は、ＢＬが伸ばされることで生じた余剰期間を利用し、メモリに対する情報の入出力タイミングに関る遅延量を最適値に更新することができる。
【００２９】
つまり、メモリの有効データに対応するＢＬは決まっており、本態様のメモリコントローラによりＢＬが伸ばされることで生じた余剰期間（第１ＢＬと第２ＢＬとの差分）は無効データに対応する期間である。つまり、遅延量の更新にはこの無効データに対応する期間が利用されるので、実動作中に遅延量を更新する場合であっても問題は生じない。
【００３０】
つまり、本態様のメモリコントローラによれば、通常動作と並行して、遅延量の変化を常に検出することができ、かつ、メモリアクセス動作をストップさせることなく、確実に遅延量を更新することができる。
【００３１】
また、本発明の一態様に係るメモリコントローラにおいて、前記コントローラ部はさらに、前記遅延調整回路が前記少なくとも一つの遅延量を前記基準遅延量に近づくように制御した後に、前記メモリにおけるＢＬを前記第２ＢＬから前記第１ＢＬに切り替えるためのコマンドを発行するとしてもよい。
【００３２】
この構成によれば、遅延量の更新後に、コントローラ部は、ＢＬを元の長さに戻すコマンドを発行する。つまり、遅延量の更新のために生じさせる余剰期間を極小化することが可能となる。また、遅延更新後は、更新された遅延量を基準遅延量とし、また現在の遅延量と比較される。
【００３３】
また、本発明の一態様に係るメモリコントローラにおいて、前記遅延検出部は、前記閾値を書き換え可能に記憶する記憶部を有するとしてもよい。
【００３４】
この構成によれば、遅延量の更新をするか否かの判断基準となる閾値が可変である。そのため、例えば、本態様のメモリコントローラを複数製造した場合に、それぞれのメモリコントローラの使用条件等に応じた適切な閾値、言い換えると適切な遅延検出感度を設定することができる。
【００３５】
また、本発明の一態様に係るメモリコントローラにおいて、前記遅延検出部は、前記検出した遅延量と前記基準遅延量との差分が前記閾値を超えた場合、所定の信号を前記コントローラ部に送信し、前記コントローラ部は前記所定の信号を受信した場合、前記メモリにおけるＢＬを前記第１ＢＬから前記第２ＢＬに切り替えるとしてもよい。
【００３６】
この構成によれば、遅延検出部は、コントローラ部にＢＬの切り替えを実行させるトリガとなる所定の信号を送信する。
【００３７】
例えば遅延検出部は、メモリに対するｒｅａｄおよびｗｒｉｔｅアクセスと同じタイミング（クロック）で、遅延量を検出することができる。つまり周期的に、通常動作と並行して、初期設定時の基準遅延量と現在の遅延量とを比較し、その差が閾値を超えた場合に、コントローラ部に対して所定の信号を出力することができる。コントローラ部は当該所定の信号を受信することで、メモリのＢＬを伸ばすためのコマンドを発行し、これにより生じた余剰期間に、遅延調整回路は遅延量を更新することができる。
【００３８】
また、本発明の一態様に係るメモリコントローラにおいて、前記遅延検出部はさらに、前記所定の信号を定期的に前記コントローラ部に送信可能であるとしてもよい。
【００３９】
この構成によれば、コントローラ部に、定期的に、メモリのＢＬを伸ばすためのコマンドを発行させることができる。その結果、遅延調整回路による遅延量の更新が定期的に実行される。
【００４０】
また、本発明の一態様に係るメモリコントローラにおいて、前記遅延検出部は、入力される指示に応じて、（ａ）前記検出した遅延量と前記基準遅延量との差分が前記閾値を超えた場合に前記所定の信号を送信するか、（ｂ）前記所定の信号を定期的に前記コントローラ部に送信するか、を選択するセレクタを有するとしてもよい。
【００４１】
この構成によれば、遅延量の更新を、実際の遅延量の検出結果に基づいて実行するか、定期的に実行するかの選択が可能である。そのため、例えば、メモリコントローラの使用条件等に応じて、メモリコントローラを効率よく動作させることができる。
【００４２】
また、本発明は、上記いずれかの態様に係るメモリコントローラが実行する特徴的な処理を含む、遅延調整方法として実現することもできる。
【発明の効果】
【００４３】
本発明によれば、必要なタイミングで、メモリに対する情報の入出力タイミングに関る遅延量を調整することのできるメモリコントローラを提供することができる。
【００４４】
具体的には、本発明の一態様にかかるメモリコントローラによれば、リフレッシュ期間およびブランキング期間がなくても、通常のメモリアクセスを止めることなく、適宜、遅延素子の段数（遅延量）を更新することができる。
【図面の簡単な説明】
【００４５】
【図１】図１は、本発明の実施の形態におけるメモリコントローラの構成の一例を示すブロック図である。
【図２】図２は、本発明の実施の形態のメモリコントローラにおいて行われる遅延量の調整処理の一例を示すフローチャートである。
【図３Ａ】図３Ａは、メモリへのＷｒｉｔｅ時におけるＢＬ設定値の変更タイミングと遅延更新タイミングの例を示す図である。
【図３Ｂ】図３Ｂは、メモリからのＲｅａｄ時におけるＢＬ設定値の変更タイミングと遅延更新タイミングの例を示す図である。
【図４】図４は、実施の形態の変形例１におけるメモリコントローラの構成の一例を示すブロック図である。
【図５】図５は、実施の形態の変形例２におけるメモリコントローラの構成の一例を示す機能ブロック図である。
【図６】従来のメモリ制御装置の構成の第１の例を示すブロック図である。
【図７】従来のメモリ制御装置の構成の第２の例を示すブロック図である。
【発明を実施するための形態】
【００４６】
以下、本発明を実施するための形態について、図面を参照しながら説明する。
【００４７】
図１は、本発明の実施の形態におけるメモリコントローラの構成の一例を示すブロック図である。
【００４８】
図１に示すメモリコントローラ１は、メモリ２に対しクロック信号、コマンド群信号、データ群信号、および、各データ群用ストローブ信号の出力ＡＣタイミングを調整しデータを送信する機能を有する。メモリコントローラ１はさらに、メモリ２から出力されたデータ群信号、および、各データ群用ストローブ信号についてタイミングを調整し、受信する機能を有する。
【００４９】
メモリコントローラ１は、メモリ２に対するデータ入出力を行う装置である。具体的には、メモリコントローラ１は、コントローラ部３、遅延検出部４および遅延調整回路５を備えている。
【００５０】
コントローラ部３は、メモリ２への入力データおよび当該入力データについての基準クロックとなるデータストローブ信号を生成し出力するとともに、メモリ２に対するコマンドおよび当該コマンドに対応するクロック信号を生成し出力する。
【００５１】
本実施の形態では、コントローラ部３は、クロック生成部６とコマンド発行部７とデータ／ストローブ発行部８とを有する。
【００５２】
クロック生成部６は、メモリ２にデータ送信するためのＤＤＲ方式の規定に従った信号としてのクロック信号を生成し出力する。コマンド発行部７は、メモリ２に対するコマンド信号（以下、単に「コマンド」ともいう。）を生成し出力する。データ／ストローブ発行部８は、データ信号および当該データ信号のメモリ２に対する入力タイミングの基準クロックとなるデータストローブ信号を生成し出力する。
【００５３】
また、クロック生成部６はさらに、メモリ２からデータを受信するためのＤＤＲ方式の規定に従った信号としてのクロック信号を生成し出力し、コマンド発行部７は、当該データの受信のためのコマンド信号を生成し出力する。その後、コントローラ部３は、メモリ２よりデータとそのデータストローブ信号とを受信する。
【００５４】
遅延検出部４は、コントローラ部３が生成し出力する、入力データ、データストローブ信号、コマンド、およびクロック信号に共通する変動後の遅延量を検出し、検出した遅延量と、基準遅延量との差分を算出する。つまり、これら４つの電気信号に対し、変動後の遅延量がそれぞれ検出される。
【００５５】
本実施の形態では、遅延検出部４は、基準値保持部９と、変動後遅延値検出部１０と、比較部１１とを有する。
【００５６】
基準値保持部９は、予め定められた基準遅延値を保持している。具体的には、基準値保持部９は、メモリ２に対するクロック信号、コマンド群信号、データ群信号、および、各データ群用ストローブ信号の出力ＡＣタイミングと、前記メモリ２から出力されたデータ群信号、および、各データ群用ストローブ信号の入力ＡＣタイミングとを保証するための、基準となる遅延量の値である基準遅延値（ｎ）を保持している。
【００５７】
変動後遅延値検出部１０は、時間軸で変化する遅延量の現在の値、つまり、現在遅延値（ｎ´）を検出する。変動後遅延値検出部１０は、例えば、予め設定されたタイミングと、コマンド等のコントローラ部３から出力される電気信号との位相差を算出することで現在遅延値を検出することができる。また、変動後遅延値検出部１０は、例えば、コマンドとクロック信号との位相差を検出することで現在遅延値を検出することができる。
【００５８】
比較部１１は、基準値保持部９に示される基準遅延値と変動後遅延値検出部１０により検出された現在遅延値とを比較する。具体的には、比較部１１は、基準遅延値と現在遅延値との差分を算出する。
【００５９】
また遅延検出部４と、コントローラ部３との間の通信信号としては、遅延変動検出信号１２と遅延更新信号１３とが用いられる。
【００６０】
遅延変動検出信号１２は、遅延検出部４からコントローラ部３に送信される所定の信号の一例である。具体的には、比較部１１により算出された基準遅延値と現在遅延値との差分が閾値を超えた場合に、遅延検出部４からコントローラ部３に、遅延変動検出信号１２が送信される。
【００６１】
遅延調整回路５は、コントローラ部３とメモリ２との間における電気信号の送受信に介在し、当該電気信号の送受信における遅延量を制御する回路である。遅延調整回路５は、コントローラ部３が生成し出力する、入力データ、データストローブ信号、コマンド、およびクロック信号のうちの少なくとも一つの遅延量を制御（調整）する。
【００６２】
本実施の形態では、遅延調整回路５は、メモリ２に対するクロック信号、コマンド群信号、データ群信号、各データ群用ストローブ信号それぞれの周波数、温度、電圧の違いによるタイミング遅延差分を吸収、調整するための複数の遅延調整部を有している。
【００６３】
具体的には、遅延調整回路５は、クロック用遅延調整部１４と、コマンド用遅延調整部１５と、送信データ用遅延調整部１６と、受信データ用遅延調整部１７とを有する。これら遅延調整部のそれぞれは、複数の遅延素子を有し、遅延素子の段数を変更することで、それぞれを通過する信号の遅延量を変化させることができる。
【００６４】
クロック用遅延調整部１４は、コントローラ部３から出力されたクロック信号の遅延量を調整することができ、コマンド用遅延調整部１５は、コントローラ部３から出力されたコマンドの遅延量を調整することができる。
【００６５】
送信データ用遅延調整部１６は、コントローラ部３から出力された、メモリ２に入力される入力データおよび当該入力データに対応するデータストローブ信号の遅延量を調整することができる。受信データ用遅延調整部１７は、メモリ２から送信される送信データおよびデータストローブ信号の遅延量を調整することができる。
【００６６】
以上説明した本実施の形態のメモリコントローラ１の動作を、図２に示す動作フローの例を用いて説明する。
【００６７】
メモリ２への通常のＲｅａｄ／Ｗｒｉｔｅ処理（Ｓ１００）では、メモリコントローラ１は、メモリ２に対し、データ書き込み時は、コントローラ部３により、データ送信するためのＤＤＲ方式の規定に従った信号としてのクロック信号、コマンド信号、およびデータ信号を発行する。
【００６８】
メモリコントローラ１はさらに、遅延検出部４が有する基準値保持部９の保持する基準遅延値を遅延調整回路５におけるクロック用遅延調整部１４、コマンド用遅延調整部１５、および送信データ用遅延調整部１６に設定し、所定のデータをメモリ２に書き込む。
【００６９】
なお、各遅延調整部には、例えば、一つの基準遅延値に基づいて算出される互いに異なる遅延値を設定することができる。
【００７０】
また、データ読み出し時は、メモリコントローラ１は、コントローラ部３により、データ受信するためのＤＤＲ方式の規定に従った信号としてのクロック信号、コマンド信号、および、データ信号を発行する。
【００７１】
メモリコントローラ１はさらに、遅延検出部４が有する基準値保持部９の保持する値を遅延調整回路５におけるクロック用遅延調整部１４、コマンド用遅延調整部１５、受信データ用遅延調整部１７に設定し、所定のデータをメモリ２から読み出す。
【００７２】
また、メモリコントローラ１は、メモリ２に対するデータの書き込み時、または読み出し時に送受信する連続したデータ単位の長さとして、バースト長（Ｂｕｒｓｔ  Ｌｅｎｇｔｈ  ：ＢＬ）を“８”に設定する。
【００７３】
遅延値比較処理（Ｓ１０１）では、遅延検出部４において、基準値保持部９に保持された基準遅延値と、変動後遅延値検出部１０によって検出される、温度・電圧の変動に応じた現時点での遅延値である現在遅延値との差分（遅延値変化量）が、比較部１１によって算出される。つまり、遅延検出部４により、遅延値変化量がモニターされる。
【００７４】
比較部１１による算出結果である差分が閾値を超えていない場合（Ｓ１０２でＮｏ）、メモリ２への通常のＲｅａｄ／Ｗｒｉｔｅ処理（Ｓ１００）が実施される。
【００７５】
上記フローを繰り返し、比較部１１にて閾値を超える遅延値変化量が検出されると、遅延検出部４は、遅延変動検出信号１２（図２では「検出ＦＬＧ」と記載）をコントローラ部３に通知する（Ｓ１０３）。
【００７６】
また、コントローラ部３は、遅延変動検出信号１２を受信した場合、コマンド発行部７により、メモリ２に対するデータ入出力におけるバースト長（ＢＬ）を“８”から“１６”に切り替えるコマンドを発行する（Ｓ１０３）。
【００７７】
なお、“８”であるＢＬは、第１ＢＬの一例であり、“１６”であるＢＬは、第２ＢＬの一例である。
【００７８】
その後、遅延更新のため、コントローラ部３は、遅延更新信号１３を遅延検出部４に発行する。
【００７９】
遅延更新信号１３を受けた遅延検出部４は、変動後遅延値検出部１０がその時点で保持している値を、基準値保持部９に保持された基準遅延値に置き換える。遅延検出部４はさらに、クロック用遅延調整部１４、コマンド用遅延調整部１５、送信データ用遅延調整部１６、および、受信データ用遅延調整部１７に、所定の周波数より再算出した遅延値に基づいて、変更前の遅延値（つまり、基準遅延値）と同等の値を設定し、ＤＤＲ方式の規定に従ったＡＣタイミングを保証する（Ｓ１０４）。
【００８０】
例えば、コマンドとクロック信号との位相差が９０度になるように、コマンドまたはクロック信号の遅延量が補正される。
【００８１】
なお、入力データ、データストローブ信号、コマンド、およびクロック信号の全ての遅延量が同じタイミングで更新される必要はなく、これらのうち少なくとも一つの遅延量が更新されればよい。
【００８２】
また、以上の遅延更新処理（Ｓ１０４）は、ＢＬが“８”から“１６”に切り替えられたことにより生じる、“１６”と“８”との差に対応する期間に実行される。
【００８３】
遅延値設定が完了すると、比較部１１にて遅延値変化量を１回検出した後、遅延検出部４は、遅延変動検出信号１２をＤｉｓａｂｌｅとし、コントローラ部３では、ＢＬ設定を“１６”から“８”の設定とするコマンドをコマンド発行部７により発行する（Ｓ１０５）。その後、メモリ２への通常のＲｅａｄ／Ｗｒｉｔｅ処理（Ｓ１００）を実施し、上記のフローが繰り返される。
【００８４】
図３Ａおよび図３Ｂは、ＢＬ設定値の変更タイミングと遅延更新タイミングの例を示す。具体的には、図３Ａは、メモリ２へのＷｒｉｔｅ時におけるＢＬ設定値の変更タイミングと遅延更新タイミングの例を示す図である。また、図３Ｂは、メモリ２からのＲｅａｄ時におけるＢＬ設定値の変更タイミングと遅延更新タイミングの例を示す図である。
【００８５】
図３Ａに示すＷｒｉｔｅ動作時では、コントローラ部３はＢＬ設定を“８”としてコマンドを発行するが、遅延検出部４から送信される遅延変動検出信号１２を受信すると、コマンド発行部７により、ＢＬ設定を“１６”とするコマンドを発行する。
【００８６】
その後、“１６”であるＢＬのうちの後半の“８”のＢＬに対応する期間に合わせた遅延更新信号１３の入力タイミングで、クロック用遅延調整部１４、コマンド用遅延調整部１５、送信データ用遅延調整部１６、および、受信データ用遅延調整部１７にそれぞれ遅延更新処理（図２のＳ１０４）は行われる。すなわち、これら遅延調整部のそれぞれに、所定の周波数より再算出した遅延値に基づく変更前の遅延値と同等の値が設定される。
【００８７】
なお、“１６”であるＢＬの後半の“８”のＢＬに対応する期間については、コマンド発行部７よりコマンド群信号の内の１信号であるＢｙｔｅマスク信号を出力し、これにより、メモリ２に、当該期間に対応する書き込みデータを無効とさせる。
【００８８】
すなわち、メモリコントローラ１は、ＢＬを“８”から“１６”に切り替えることで、遅延量の更新のための期間を生じさせ、かつ、当該期間に対応するデータをメモリ２で無効とさせる。
【００８９】
その後、コマンド発行部７により、ＢＬを“１６”から“８”に切り替えるためのコマンドが発行され、その結果、メモリ２におけるＢＬが“１６”から“８”に戻される。
【００９０】
また、図３Ｂに示すＲｅａｄ動作時では、コントローラ部３はＢＬ設定を“８”としてコマンドを発行するが、遅延検出部４から送信される遅延変動検出信号１２を受信すると、コマンド発行部７により、ＢＬ設定を“１６”とするコマンドを発行する。
【００９１】
その後、メモリ２より読み出されるデータとして、“１６”であるＢＬのうちの後半の“８”のＢＬに対応する期間に合わせた遅延更新信号１３の入力タイミングで、クロック用遅延調整部１４、コマンド用遅延調整部１５、送信データ用遅延調整部１６、および受信データ用遅延調整部１７にそれぞれ遅延更新処理（図２のＳ１０４）が行われる。すなわち、これら遅延調整部のそれぞれに、所定の周波数より再算出した遅延値に基づく変更前の遅延値と同等の値が設定される。
【００９２】
すなわち、メモリコントローラ１は、ＢＬを“８”から“１６”に切り替えることで、遅延量の更新のための期間を生じさせ、かつ、当該期間に対応するデータを無効とする。
【００９３】
なお、図３Ａおよび図３Ｂのそれぞれにおいて、無効データに対応する期間にデータストローブ信号が発行されているが、無効データに対応する期間にはデータストローブ信号を発行しなくてもよい。
【００９４】
ここで、本実施の形態のメモリコントローラ１は、メモリ２に対しアクセス動作が不要な期間に、低消費電力モード状態に移行することがある。その状況下において、遅延検出部４では、コントローラ部３からのコマンド発行が無い場合でも、比較部１１にて閾値を超える遅延値変化量が検出されると、遅延変動検出信号１２をコントローラ部３に通知する。
【００９５】
また、変動後遅延値検出部１０がその時点で保持している値は、基準値保持部９に保持されている値に置き換えられる。さらに、クロック用遅延調整部１４、コマンド用遅延調整部１５、送信データ用遅延調整部１６、および、受信データ用遅延調整部１７にそれぞれ遅延更新処理（図２のＳ１０４）が行われる。すなわち、これら遅延調整部のそれぞれに、所定の周波数より再算出した遅延値に基づく変更前の遅延値と同等の値が設定される。
【００９６】
以上のように本実施の形態では、遅延検出部４を具備するメモリコントローラ１は、メモリアクセスシステムでの様々な使用条件下において、温度および電圧変動を遅延量差分として検出することができる。また、コントローラ部３では、ＢＬを適宜変更し、これにより、必要最低限の遅延更新のための期間を設けることができる。
【００９７】
従って、遅延更新のために生じるバンド帯域損失を最小限に抑えることができ、その結果、システム帯域の効率化を図ることができる。
【００９８】
また、メモリ２へのアクセス動作が不要な場合、メモリ２を低消費電力モード状態にし、遅延検出部４のみを動作させることにより、常時、遅延変動量をモニターし、遅延量の最適化をリアルタイムで実施しながら、システム省電力状態を保つことが可能である。
【００９９】
（実施の形態の変形例１）
図４は、実施の形態の変形例１におけるメモリコントローラ１の構成の一例を示すブロック図である。
【０１００】
なお、図４において、図１と共通の構成要素には図１と同一の符号を付しており、ここではその詳細な説明を省略する。
【０１０１】
図４のメモリコントローラ１は、図１のメモリコントローラ１とほぼ同一構成であるが、外部に設けられたＣＰＵ１９と通信する点、および、そのＣＰＵ１９から遅延検出感度値（つまり閾値）を設定できるレジスタ１８とを具備している点で図１のメモリコントローラ１と異なる。
【０１０２】
レジスタ１８は、閾値を書き換え可能に記憶する記憶部の一例である。具体的には、当該閾値は、ＣＰＵ１９によって指定される値に書き換えられる。
【０１０３】
図４に示すメモリコントローラ１では、レジスタ１８に記憶されている閾値を制御することで、比較部１１における遅延検出感度を一定ではなく、可変とすることが可能である。遅延検出感度を可変とすることにより、例えば、当該メモリコントローラ１を備えるセット商品としての基板の特性差および電源ノイズ量等に応じて遅延検出感度を変えることができ、その結果、あらゆるセット商品に対応した遅延量の最適化が可能である。
【０１０４】
（実施の形態の変形例２）
図５は、実施の形態の変形例２におけるメモリコントローラ１の構成の一例を示すブロック図である。
【０１０５】
図５において、図１と共通の構成要素には図１と同一の符号を付しており、ここではその詳細な説明を省略する。
【０１０６】
図５のメモリコントローラ１は、図１のメモリコントローラ１とほぼ同一構成であるが、遅延検出部４が、カウンタ２０と、カウンタ２０からの出力か、比較部１１からの出力かを選択できるセレクタ２１を具備している点で図１のメモリコントローラ１と異なる。
【０１０７】
具体的には、セレクタ２１が、カウンタ２０を選択した場合、カウンタ２０による所定のカウント数ごとに、遅延変動検出信号１２が、遅延検出部４からコントローラ部３に送信される。
【０１０８】
つまり、図５に示すメモリコントローラ１では、図１と同じ動作を行う比較部１１において閾値以上の遅延値変化量を検出した場合に遅延量の更新を行うか、カウンタ２０による所定のカウント数ごとに、定期的に遅延量を更新するか、の選択を行うことができる。
【０１０９】
なお、カウンタ２０に設定される値は、例えば、図４に示す外部のＣＰＵ１９から指定される。
【０１１０】
ここで、例えば、モバイル系ＤＤＲでは比較部１１、および、カウンタ２０による更新機構の両方を採用可能であるが、サーバー系ＤＤＲなどでは、ＢＬの設定変更ができない。そこで、サーバー系ＤＤＲに図５に示すメモリコントローラ１を採用した場合、カウンタ値に基づく定期的な遅延量の更新を選択することができる。
【０１１１】
すなわち、図５に示すメモリコントローラ１によれば、複数のタイプ（モバイル系ＤＤＲまたはサーバー系ＤＤＲ）に対応した適切な動作を実行することができる。
【０１１２】
以上、本発明のメモリコントローラについて、実施の形態およびその変形例に基づいて説明した。しかしながら、本発明は、上記実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものも、あるいは、上記説明された複数の構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【０１１３】
例えば、上述の説明では、ＤＤＲ方式の規定に従った信号をメモリ２に送信する場合を例にとって説明したが、本発明の適用範囲はこれに限られるものではない。
【０１１４】
つまり、実施の形態もしくは変形例１または２におけるメモリコントローラ１は、例えば、クロック信号の立ち上がりに対応したタイミングにのみデータ転送を行ってもよい。このような場合であっても、効率的な遅延更新は実行される。
【産業上の利用可能性】
【０１１５】
本発明に係るメモリコントローラは、通常のメモリアクセス動作中状態でのデータ信号のラッチタイミングを調整することができるため、より高速なパフォーマンスが求められるテレビ、モバイル機器等におけるメモリコントローラとして有用である。
【符号の説明】
【０１１６】
１  メモリコントローラ
２  メモリ
３  コントローラ部
４  遅延検出部
５  遅延調整回路
６  クロック生成部
７  コマンド発行部
８  データ／ストローブ発行部
９  基準値保持部
１０  変動後遅延値検出部
１１  比較部
１２  遅延変動検出信号
１３  遅延更新信号
１４  クロック用遅延調整部
１５  コマンド用遅延調整部
１６  送信データ用遅延調整部
１７  受信データ用遅延調整部
１８  レジスタ
１９  ＣＰＵ
２０  カウンタ
２１  セレクタ
【図１】
2013008112.tif 000003
【図２】
2013008112.tif 000004
【図３Ａ】
2013008112.tif 000005
【図３Ｂ】
2013008112.tif 000006
【図４】
2013008112.tif 000007
【図５】
2013008112.tif 000008
【図６】
2013008112.tif 000009
【図７】
2013008112.tif 000010