説明

メモリコントローラおよび遅延調整方法

【課題】必要なタイミングで、メモリに対する情報の入出力タイミングに関る遅延量を調整することのできるメモリコントローラを提供すること。
【解決手段】メモリコントローラ1であって、メモリ2への入力データおよびデータストローブ信号、並びに、メモリ2に対するコマンドおよびクロック信号を生成し出力するコントローラ部3と、入力データ、データストローブ信号、コマンド、およびクロック信号のうちの少なくとも一つの遅延量を制御する遅延調整回路5と、遅延量を検出し、検出した遅延量と、基準遅延量との差分を算出する遅延検出部4とを備え、コントローラ部3は、算出された差分が閾値を超えた場合、メモリ2のバースト長(BL)を第1BLから、第1BLよりも長い第2BLに切り替えるためのコマンドを発行し、遅延調整回路5は、第1BLと第2BLとの差に対応する期間に、少なくとも一つの遅延量を基準遅延量に近づくように制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はメモリコントローラに関し、特に、メモリに対する入出力信号の遅延量を調整するメモリコントローラに関する。
【背景技術】
【0002】
近年のメモリコントローラでは、大容量化および高速データ処理化に伴って、DDR−SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory)の採用が主流となっている。
【0003】
DDR−SDRAMでは、データストローブ信号(DQS)の立ち上がりおよび立ち下がりの両エッジに同期して、データ信号(DQ)の転送が可能であるため、従来のSDRAMの2倍のデータ転送が可能である。
【0004】
DDR方式では、規格として、双方向データおよびデータストローブ信号を用いて、DDR−SDRAMにデータ送信を行う動作(Write動作)と、DDR−SDRAMからデータを受信する動作(Read動作)とがある。近年の高速アクセスに対応する上で、Write動作およびRead動作ともに、データストローブ信号の最適化が重要視される。
【0005】
このデータストローブ信号のタイミング調整を行うためには、遅延素子を用いることが一般的である。
【0006】
遅延素子の段数(遅延量)は、予め設定されているが、プロセスおよび温度・電圧の変動により、遅延素子の特性が変化する。従って、遅延素子の特性が変化しても、最適なポイントでデータを取り込むために、変動する段数(遅延量)の検出とそれに応じた段数(遅延量)の更新が必要であり、さらにその更新をいつ行うかが問題になってくる。
【0007】
つまり、メモリアクセス中のデータストローブ信号の遅延更新は、誤データ送信およびノイズの原因になるからである。
【0008】
図6は、特許文献1記載の従来のメモリ制御装置の構成を示すブロック図である。
【0009】
図6に示す従来のメモリ制御装置101は、ストローブ遅延回路500を備える。ストローブ遅延回路500は、n個の遅延素子501、502、503、・・・、50n と、セレクタ510とを有する。
【0010】
従来のメモリ制御装置101では、ストローブ遅延回路500において信号の遅延に使用する遅延素子の段数(遅延量)の更新を、メモリアクセスのないリフレッシュ期間を利用して行っている。
【0011】
従来のメモリ制御装置101では、このようにメモリアクセスのない安定期間に段数(遅延量)更新を行うため、データラインにノイズを乗せる心配がない。
【0012】
図7は、特許文献2に記載の従来のメモリ制御装置の構成を示すブロック図である。図7に示す従来のメモリ制御装置102は、リフレッシュ期間およびブランキング期間以外の所定の期間に、段数(遅延量)更新を行うことができる。
【0013】
具体的には、従来のメモリ制御装置102は、データストローブ信号を遅延させる遅延回路103と、遅延された少なくとも2つのデータストローブ信号に基づき、メモリからのreadデータ信号のデータ値を各々格納する少なくとも2つのFIFOバッファ部108および109と、前記少なくとも2つのFIFOバッファ部108および109に格納されたreadデータ値を比較する比較器104と、その比較器104の比較結果に基づきデータストローブ信号の遅延時間を制御する制御回路106とを備えている。
【0014】
メモリ制御装置102では、格納された1つのFIFOデータはメモリアクセス通常動作に使用し、これと並行して、遅延された少なくとも2つのデータストローブ信号に基づくreadデータ値を比較し、当該比較結果により遅延時間を制御できる。そのため、アプリケーションにリフレッシュ期間およびブランキング期間が無くても、メモリアクセスタイミングを調整することができる。
【先行技術文献】
【特許文献】
【0015】
【特許文献1】特開2004−220643号公報
【特許文献2】特開2010−182149号公報
【発明の概要】
【発明が解決しようとする課題】
【0016】
しかしながら、特許文献1のメモリ制御装置101では、遅延素子の段数(遅延量)を更新するために、リフレッシュ期間など、メモリアクセスのない期間が必要である。
【0017】
昨今、DDR−SDRAM使用時には、全メモリをリフレッシュするオールバンクリフレッシュを行わずに、メモリを、独立して動作可能なブロック(バンク)に分け、そのブロック(バンク)毎にリフレッシュするパーバンクリフレッシュを行う傾向にある。
【0018】
これは、リフレッシュ動作をブロック(バンク)毎にずらして行うことで、帯域を落とさず、さらなる高速化に対応するためである。パーバンクリフレッシュ時には、リフレッシュしているバンク以外は通常動作が可能である。つまり、常にいずれかのバンクが利用できるため、メモリアクセス動作を止めなくてもよい。
【0019】
このように、メモリアクセスを止めるリフレッシュ期間のない構成の場合、特許文献1のメモリ制御装置101では、遅延素子の段数(遅延量)を更新することはできない。また、更新には定期的に発生するリフレッシュ期間またはブランキング期間を利用するので、段数(遅延量)の更新を必要なタイミングで実行できず、結果として、誤データ送信をしてしまう可能性もある。
【0020】
特許文献2のメモリ制御装置102では、リフレッシュ期間およびブランキング期間を利用せずに遅延素子の段数(遅延量)を更新することができる。しかし、read側しか遅延を確認できない上、readコマンドの発行で遅延検出を行っているため、readコマンドが発行されないと、遅延の検出ができない。
【0021】
そのため、メモリ制御装置102では、readコマンド以外を実行している際には、遅延が起こっていても検出ができず、更新もできないという問題が発生する。
【0022】
また、メモリ制御装置102では、複数のデータストローブ信号を持ち、各々でキャプチャーされたreadデータの一つを通常動作に使用することにより、メモリアクセス動作中の遅延更新を行おうとしている。しかし、readコマンドが発行されず、遅延更新が施されない期間が長かった場合、その次のreadコマンド発行時にデータストローブ信号の遅延段数(遅延量)が大きくずれてしまっている可能性がある。
【0023】
そのため、メモリ制御装置102では、通常動作に使用するreadデータが正しいタイミングでキャプチャーされず誤データ送信をしてしまう問題がある。
【0024】
また、メモリに発行するコマンドと、コマンドに対応するクロック信号との関係においても、必要に応じたタイミングにおける遅延量の調整は重要であるが、従来では、この問題についても適切に解決できていない。
【0025】
本発明は、前記従来の課題を解決するためになされたものであり、必要なタイミングで、メモリに対する情報の入出力タイミングに関る遅延量を調整することのできるメモリコントローラを提供することを目的とする。
【課題を解決するための手段】
【0026】
本発明の一態様に係るメモリコントローラは、メモリに対するデータ入出力を行うメモリコントローラであって、前記メモリへの入力データおよび前記入力データについての基準クロックとなるデータストローブ信号を生成し出力するとともに、前記メモリに対するコマンドおよび前記コマンドに対応するクロック信号を生成し出力するコントローラ部と、前記入力データ、前記データストローブ信号、前記コマンド、および前記クロック信号のうちの少なくとも一つの遅延量を制御する遅延調整回路と、前記入力データ、前記データストローブ信号、前記コマンド、および前記クロック信号の全てに共通する変動後の遅延量を検出し、検出した遅延量と、基準遅延量との差分を算出する遅延検出部とを備え、前記コントローラ部は、前記遅延検出部により算出された差分が閾値を超えた場合、前記メモリに対するデータ入出力におけるバースト長(BL)を第1BLから、前記第1BLよりも長い第2BLに切り替えるためのコマンドを発行し、前記遅延調整回路は、前記第1BLから前記第2BLに切り替えられたことにより生じる、前記第1BLと前記第2BLとの差に対応する期間に、前記少なくとも一つの遅延量を前記基準遅延量に近づくように制御する。
【0027】
この構成によれば、遅延検出部は、メモリへの情報の入出力に関る遅延量を検出し、コントローラ部は、当該遅延量が閾値を超えた場合、メモリのバースト長(BL)を伸ばすことができる。
【0028】
遅延調整回路は、BLが伸ばされることで生じた余剰期間を利用し、メモリに対する情報の入出力タイミングに関る遅延量を最適値に更新することができる。
【0029】
つまり、メモリの有効データに対応するBLは決まっており、本態様のメモリコントローラによりBLが伸ばされることで生じた余剰期間(第1BLと第2BLとの差分)は無効データに対応する期間である。つまり、遅延量の更新にはこの無効データに対応する期間が利用されるので、実動作中に遅延量を更新する場合であっても問題は生じない。
【0030】
つまり、本態様のメモリコントローラによれば、通常動作と並行して、遅延量の変化を常に検出することができ、かつ、メモリアクセス動作をストップさせることなく、確実に遅延量を更新することができる。
【0031】
また、本発明の一態様に係るメモリコントローラにおいて、前記コントローラ部はさらに、前記遅延調整回路が前記少なくとも一つの遅延量を前記基準遅延量に近づくように制御した後に、前記メモリにおけるBLを前記第2BLから前記第1BLに切り替えるためのコマンドを発行するとしてもよい。
【0032】
この構成によれば、遅延量の更新後に、コントローラ部は、BLを元の長さに戻すコマンドを発行する。つまり、遅延量の更新のために生じさせる余剰期間を極小化することが可能となる。また、遅延更新後は、更新された遅延量を基準遅延量とし、また現在の遅延量と比較される。
【0033】
また、本発明の一態様に係るメモリコントローラにおいて、前記遅延検出部は、前記閾値を書き換え可能に記憶する記憶部を有するとしてもよい。
【0034】
この構成によれば、遅延量の更新をするか否かの判断基準となる閾値が可変である。そのため、例えば、本態様のメモリコントローラを複数製造した場合に、それぞれのメモリコントローラの使用条件等に応じた適切な閾値、言い換えると適切な遅延検出感度を設定することができる。
【0035】
また、本発明の一態様に係るメモリコントローラにおいて、前記遅延検出部は、前記検出した遅延量と前記基準遅延量との差分が前記閾値を超えた場合、所定の信号を前記コントローラ部に送信し、前記コントローラ部は前記所定の信号を受信した場合、前記メモリにおけるBLを前記第1BLから前記第2BLに切り替えるとしてもよい。
【0036】
この構成によれば、遅延検出部は、コントローラ部にBLの切り替えを実行させるトリガとなる所定の信号を送信する。
【0037】
例えば遅延検出部は、メモリに対するreadおよびwriteアクセスと同じタイミング(クロック)で、遅延量を検出することができる。つまり周期的に、通常動作と並行して、初期設定時の基準遅延量と現在の遅延量とを比較し、その差が閾値を超えた場合に、コントローラ部に対して所定の信号を出力することができる。コントローラ部は当該所定の信号を受信することで、メモリのBLを伸ばすためのコマンドを発行し、これにより生じた余剰期間に、遅延調整回路は遅延量を更新することができる。
【0038】
また、本発明の一態様に係るメモリコントローラにおいて、前記遅延検出部はさらに、前記所定の信号を定期的に前記コントローラ部に送信可能であるとしてもよい。
【0039】
この構成によれば、コントローラ部に、定期的に、メモリのBLを伸ばすためのコマンドを発行させることができる。その結果、遅延調整回路による遅延量の更新が定期的に実行される。
【0040】
また、本発明の一態様に係るメモリコントローラにおいて、前記遅延検出部は、入力される指示に応じて、(a)前記検出した遅延量と前記基準遅延量との差分が前記閾値を超えた場合に前記所定の信号を送信するか、(b)前記所定の信号を定期的に前記コントローラ部に送信するか、を選択するセレクタを有するとしてもよい。
【0041】
この構成によれば、遅延量の更新を、実際の遅延量の検出結果に基づいて実行するか、定期的に実行するかの選択が可能である。そのため、例えば、メモリコントローラの使用条件等に応じて、メモリコントローラを効率よく動作させることができる。
【0042】
また、本発明は、上記いずれかの態様に係るメモリコントローラが実行する特徴的な処理を含む、遅延調整方法として実現することもできる。
【発明の効果】
【0043】
本発明によれば、必要なタイミングで、メモリに対する情報の入出力タイミングに関る遅延量を調整することのできるメモリコントローラを提供することができる。
【0044】
具体的には、本発明の一態様にかかるメモリコントローラによれば、リフレッシュ期間およびブランキング期間がなくても、通常のメモリアクセスを止めることなく、適宜、遅延素子の段数(遅延量)を更新することができる。
【図面の簡単な説明】
【0045】
【図1】図1は、本発明の実施の形態におけるメモリコントローラの構成の一例を示すブロック図である。
【図2】図2は、本発明の実施の形態のメモリコントローラにおいて行われる遅延量の調整処理の一例を示すフローチャートである。
【図3A】図3Aは、メモリへのWrite時におけるBL設定値の変更タイミングと遅延更新タイミングの例を示す図である。
【図3B】図3Bは、メモリからのRead時におけるBL設定値の変更タイミングと遅延更新タイミングの例を示す図である。
【図4】図4は、実施の形態の変形例1におけるメモリコントローラの構成の一例を示すブロック図である。
【図5】図5は、実施の形態の変形例2におけるメモリコントローラの構成の一例を示す機能ブロック図である。
【図6】従来のメモリ制御装置の構成の第1の例を示すブロック図である。
【図7】従来のメモリ制御装置の構成の第2の例を示すブロック図である。
【発明を実施するための形態】
【0046】
以下、本発明を実施するための形態について、図面を参照しながら説明する。
【0047】
図1は、本発明の実施の形態におけるメモリコントローラの構成の一例を示すブロック図である。
【0048】
図1に示すメモリコントローラ1は、メモリ2に対しクロック信号、コマンド群信号、データ群信号、および、各データ群用ストローブ信号の出力ACタイミングを調整しデータを送信する機能を有する。メモリコントローラ1はさらに、メモリ2から出力されたデータ群信号、および、各データ群用ストローブ信号についてタイミングを調整し、受信する機能を有する。
【0049】
メモリコントローラ1は、メモリ2に対するデータ入出力を行う装置である。具体的には、メモリコントローラ1は、コントローラ部3、遅延検出部4および遅延調整回路5を備えている。
【0050】
コントローラ部3は、メモリ2への入力データおよび当該入力データについての基準クロックとなるデータストローブ信号を生成し出力するとともに、メモリ2に対するコマンドおよび当該コマンドに対応するクロック信号を生成し出力する。
【0051】
本実施の形態では、コントローラ部3は、クロック生成部6とコマンド発行部7とデータ/ストローブ発行部8とを有する。
【0052】
クロック生成部6は、メモリ2にデータ送信するためのDDR方式の規定に従った信号としてのクロック信号を生成し出力する。コマンド発行部7は、メモリ2に対するコマンド信号(以下、単に「コマンド」ともいう。)を生成し出力する。データ/ストローブ発行部8は、データ信号および当該データ信号のメモリ2に対する入力タイミングの基準クロックとなるデータストローブ信号を生成し出力する。
【0053】
また、クロック生成部6はさらに、メモリ2からデータを受信するためのDDR方式の規定に従った信号としてのクロック信号を生成し出力し、コマンド発行部7は、当該データの受信のためのコマンド信号を生成し出力する。その後、コントローラ部3は、メモリ2よりデータとそのデータストローブ信号とを受信する。
【0054】
遅延検出部4は、コントローラ部3が生成し出力する、入力データ、データストローブ信号、コマンド、およびクロック信号に共通する変動後の遅延量を検出し、検出した遅延量と、基準遅延量との差分を算出する。つまり、これら4つの電気信号に対し、変動後の遅延量がそれぞれ検出される。
【0055】
本実施の形態では、遅延検出部4は、基準値保持部9と、変動後遅延値検出部10と、比較部11とを有する。
【0056】
基準値保持部9は、予め定められた基準遅延値を保持している。具体的には、基準値保持部9は、メモリ2に対するクロック信号、コマンド群信号、データ群信号、および、各データ群用ストローブ信号の出力ACタイミングと、前記メモリ2から出力されたデータ群信号、および、各データ群用ストローブ信号の入力ACタイミングとを保証するための、基準となる遅延量の値である基準遅延値(n)を保持している。
【0057】
変動後遅延値検出部10は、時間軸で変化する遅延量の現在の値、つまり、現在遅延値(n´)を検出する。変動後遅延値検出部10は、例えば、予め設定されたタイミングと、コマンド等のコントローラ部3から出力される電気信号との位相差を算出することで現在遅延値を検出することができる。また、変動後遅延値検出部10は、例えば、コマンドとクロック信号との位相差を検出することで現在遅延値を検出することができる。
【0058】
比較部11は、基準値保持部9に示される基準遅延値と変動後遅延値検出部10により検出された現在遅延値とを比較する。具体的には、比較部11は、基準遅延値と現在遅延値との差分を算出する。
【0059】
また遅延検出部4と、コントローラ部3との間の通信信号としては、遅延変動検出信号12と遅延更新信号13とが用いられる。
【0060】
遅延変動検出信号12は、遅延検出部4からコントローラ部3に送信される所定の信号の一例である。具体的には、比較部11により算出された基準遅延値と現在遅延値との差分が閾値を超えた場合に、遅延検出部4からコントローラ部3に、遅延変動検出信号12が送信される。
【0061】
遅延調整回路5は、コントローラ部3とメモリ2との間における電気信号の送受信に介在し、当該電気信号の送受信における遅延量を制御する回路である。遅延調整回路5は、コントローラ部3が生成し出力する、入力データ、データストローブ信号、コマンド、およびクロック信号のうちの少なくとも一つの遅延量を制御(調整)する。
【0062】
本実施の形態では、遅延調整回路5は、メモリ2に対するクロック信号、コマンド群信号、データ群信号、各データ群用ストローブ信号それぞれの周波数、温度、電圧の違いによるタイミング遅延差分を吸収、調整するための複数の遅延調整部を有している。
【0063】
具体的には、遅延調整回路5は、クロック用遅延調整部14と、コマンド用遅延調整部15と、送信データ用遅延調整部16と、受信データ用遅延調整部17とを有する。これら遅延調整部のそれぞれは、複数の遅延素子を有し、遅延素子の段数を変更することで、それぞれを通過する信号の遅延量を変化させることができる。
【0064】
クロック用遅延調整部14は、コントローラ部3から出力されたクロック信号の遅延量を調整することができ、コマンド用遅延調整部15は、コントローラ部3から出力されたコマンドの遅延量を調整することができる。
【0065】
送信データ用遅延調整部16は、コントローラ部3から出力された、メモリ2に入力される入力データおよび当該入力データに対応するデータストローブ信号の遅延量を調整することができる。受信データ用遅延調整部17は、メモリ2から送信される送信データおよびデータストローブ信号の遅延量を調整することができる。
【0066】
以上説明した本実施の形態のメモリコントローラ1の動作を、図2に示す動作フローの例を用いて説明する。
【0067】
メモリ2への通常のRead/Write処理(S100)では、メモリコントローラ1は、メモリ2に対し、データ書き込み時は、コントローラ部3により、データ送信するためのDDR方式の規定に従った信号としてのクロック信号、コマンド信号、およびデータ信号を発行する。
【0068】
メモリコントローラ1はさらに、遅延検出部4が有する基準値保持部9の保持する基準遅延値を遅延調整回路5におけるクロック用遅延調整部14、コマンド用遅延調整部15、および送信データ用遅延調整部16に設定し、所定のデータをメモリ2に書き込む。
【0069】
なお、各遅延調整部には、例えば、一つの基準遅延値に基づいて算出される互いに異なる遅延値を設定することができる。
【0070】
また、データ読み出し時は、メモリコントローラ1は、コントローラ部3により、データ受信するためのDDR方式の規定に従った信号としてのクロック信号、コマンド信号、および、データ信号を発行する。
【0071】
メモリコントローラ1はさらに、遅延検出部4が有する基準値保持部9の保持する値を遅延調整回路5におけるクロック用遅延調整部14、コマンド用遅延調整部15、受信データ用遅延調整部17に設定し、所定のデータをメモリ2から読み出す。
【0072】
また、メモリコントローラ1は、メモリ2に対するデータの書き込み時、または読み出し時に送受信する連続したデータ単位の長さとして、バースト長(Burst Length :BL)を“8”に設定する。
【0073】
遅延値比較処理(S101)では、遅延検出部4において、基準値保持部9に保持された基準遅延値と、変動後遅延値検出部10によって検出される、温度・電圧の変動に応じた現時点での遅延値である現在遅延値との差分(遅延値変化量)が、比較部11によって算出される。つまり、遅延検出部4により、遅延値変化量がモニターされる。
【0074】
比較部11による算出結果である差分が閾値を超えていない場合(S102でNo)、メモリ2への通常のRead/Write処理(S100)が実施される。
【0075】
上記フローを繰り返し、比較部11にて閾値を超える遅延値変化量が検出されると、遅延検出部4は、遅延変動検出信号12(図2では「検出FLG」と記載)をコントローラ部3に通知する(S103)。
【0076】
また、コントローラ部3は、遅延変動検出信号12を受信した場合、コマンド発行部7により、メモリ2に対するデータ入出力におけるバースト長(BL)を“8”から“16”に切り替えるコマンドを発行する(S103)。
【0077】
なお、“8”であるBLは、第1BLの一例であり、“16”であるBLは、第2BLの一例である。
【0078】
その後、遅延更新のため、コントローラ部3は、遅延更新信号13を遅延検出部4に発行する。
【0079】
遅延更新信号13を受けた遅延検出部4は、変動後遅延値検出部10がその時点で保持している値を、基準値保持部9に保持された基準遅延値に置き換える。遅延検出部4はさらに、クロック用遅延調整部14、コマンド用遅延調整部15、送信データ用遅延調整部16、および、受信データ用遅延調整部17に、所定の周波数より再算出した遅延値に基づいて、変更前の遅延値(つまり、基準遅延値)と同等の値を設定し、DDR方式の規定に従ったACタイミングを保証する(S104)。
【0080】
例えば、コマンドとクロック信号との位相差が90度になるように、コマンドまたはクロック信号の遅延量が補正される。
【0081】
なお、入力データ、データストローブ信号、コマンド、およびクロック信号の全ての遅延量が同じタイミングで更新される必要はなく、これらのうち少なくとも一つの遅延量が更新されればよい。
【0082】
また、以上の遅延更新処理(S104)は、BLが“8”から“16”に切り替えられたことにより生じる、“16”と“8”との差に対応する期間に実行される。
【0083】
遅延値設定が完了すると、比較部11にて遅延値変化量を1回検出した後、遅延検出部4は、遅延変動検出信号12をDisableとし、コントローラ部3では、BL設定を“16”から“8”の設定とするコマンドをコマンド発行部7により発行する(S105)。その後、メモリ2への通常のRead/Write処理(S100)を実施し、上記のフローが繰り返される。
【0084】
図3Aおよび図3Bは、BL設定値の変更タイミングと遅延更新タイミングの例を示す。具体的には、図3Aは、メモリ2へのWrite時におけるBL設定値の変更タイミングと遅延更新タイミングの例を示す図である。また、図3Bは、メモリ2からのRead時におけるBL設定値の変更タイミングと遅延更新タイミングの例を示す図である。
【0085】
図3Aに示すWrite動作時では、コントローラ部3はBL設定を“8”としてコマンドを発行するが、遅延検出部4から送信される遅延変動検出信号12を受信すると、コマンド発行部7により、BL設定を“16”とするコマンドを発行する。
【0086】
その後、“16”であるBLのうちの後半の“8”のBLに対応する期間に合わせた遅延更新信号13の入力タイミングで、クロック用遅延調整部14、コマンド用遅延調整部15、送信データ用遅延調整部16、および、受信データ用遅延調整部17にそれぞれ遅延更新処理(図2のS104)は行われる。すなわち、これら遅延調整部のそれぞれに、所定の周波数より再算出した遅延値に基づく変更前の遅延値と同等の値が設定される。
【0087】
なお、“16”であるBLの後半の“8”のBLに対応する期間については、コマンド発行部7よりコマンド群信号の内の1信号であるByteマスク信号を出力し、これにより、メモリ2に、当該期間に対応する書き込みデータを無効とさせる。
【0088】
すなわち、メモリコントローラ1は、BLを“8”から“16”に切り替えることで、遅延量の更新のための期間を生じさせ、かつ、当該期間に対応するデータをメモリ2で無効とさせる。
【0089】
その後、コマンド発行部7により、BLを“16”から“8”に切り替えるためのコマンドが発行され、その結果、メモリ2におけるBLが“16”から“8”に戻される。
【0090】
また、図3Bに示すRead動作時では、コントローラ部3はBL設定を“8”としてコマンドを発行するが、遅延検出部4から送信される遅延変動検出信号12を受信すると、コマンド発行部7により、BL設定を“16”とするコマンドを発行する。
【0091】
その後、メモリ2より読み出されるデータとして、“16”であるBLのうちの後半の“8”のBLに対応する期間に合わせた遅延更新信号13の入力タイミングで、クロック用遅延調整部14、コマンド用遅延調整部15、送信データ用遅延調整部16、および受信データ用遅延調整部17にそれぞれ遅延更新処理(図2のS104)が行われる。すなわち、これら遅延調整部のそれぞれに、所定の周波数より再算出した遅延値に基づく変更前の遅延値と同等の値が設定される。
【0092】
すなわち、メモリコントローラ1は、BLを“8”から“16”に切り替えることで、遅延量の更新のための期間を生じさせ、かつ、当該期間に対応するデータを無効とする。
【0093】
なお、図3Aおよび図3Bのそれぞれにおいて、無効データに対応する期間にデータストローブ信号が発行されているが、無効データに対応する期間にはデータストローブ信号を発行しなくてもよい。
【0094】
ここで、本実施の形態のメモリコントローラ1は、メモリ2に対しアクセス動作が不要な期間に、低消費電力モード状態に移行することがある。その状況下において、遅延検出部4では、コントローラ部3からのコマンド発行が無い場合でも、比較部11にて閾値を超える遅延値変化量が検出されると、遅延変動検出信号12をコントローラ部3に通知する。
【0095】
また、変動後遅延値検出部10がその時点で保持している値は、基準値保持部9に保持されている値に置き換えられる。さらに、クロック用遅延調整部14、コマンド用遅延調整部15、送信データ用遅延調整部16、および、受信データ用遅延調整部17にそれぞれ遅延更新処理(図2のS104)が行われる。すなわち、これら遅延調整部のそれぞれに、所定の周波数より再算出した遅延値に基づく変更前の遅延値と同等の値が設定される。
【0096】
以上のように本実施の形態では、遅延検出部4を具備するメモリコントローラ1は、メモリアクセスシステムでの様々な使用条件下において、温度および電圧変動を遅延量差分として検出することができる。また、コントローラ部3では、BLを適宜変更し、これにより、必要最低限の遅延更新のための期間を設けることができる。
【0097】
従って、遅延更新のために生じるバンド帯域損失を最小限に抑えることができ、その結果、システム帯域の効率化を図ることができる。
【0098】
また、メモリ2へのアクセス動作が不要な場合、メモリ2を低消費電力モード状態にし、遅延検出部4のみを動作させることにより、常時、遅延変動量をモニターし、遅延量の最適化をリアルタイムで実施しながら、システム省電力状態を保つことが可能である。
【0099】
(実施の形態の変形例1)
図4は、実施の形態の変形例1におけるメモリコントローラ1の構成の一例を示すブロック図である。
【0100】
なお、図4において、図1と共通の構成要素には図1と同一の符号を付しており、ここではその詳細な説明を省略する。
【0101】
図4のメモリコントローラ1は、図1のメモリコントローラ1とほぼ同一構成であるが、外部に設けられたCPU19と通信する点、および、そのCPU19から遅延検出感度値(つまり閾値)を設定できるレジスタ18とを具備している点で図1のメモリコントローラ1と異なる。
【0102】
レジスタ18は、閾値を書き換え可能に記憶する記憶部の一例である。具体的には、当該閾値は、CPU19によって指定される値に書き換えられる。
【0103】
図4に示すメモリコントローラ1では、レジスタ18に記憶されている閾値を制御することで、比較部11における遅延検出感度を一定ではなく、可変とすることが可能である。遅延検出感度を可変とすることにより、例えば、当該メモリコントローラ1を備えるセット商品としての基板の特性差および電源ノイズ量等に応じて遅延検出感度を変えることができ、その結果、あらゆるセット商品に対応した遅延量の最適化が可能である。
【0104】
(実施の形態の変形例2)
図5は、実施の形態の変形例2におけるメモリコントローラ1の構成の一例を示すブロック図である。
【0105】
図5において、図1と共通の構成要素には図1と同一の符号を付しており、ここではその詳細な説明を省略する。
【0106】
図5のメモリコントローラ1は、図1のメモリコントローラ1とほぼ同一構成であるが、遅延検出部4が、カウンタ20と、カウンタ20からの出力か、比較部11からの出力かを選択できるセレクタ21を具備している点で図1のメモリコントローラ1と異なる。
【0107】
具体的には、セレクタ21が、カウンタ20を選択した場合、カウンタ20による所定のカウント数ごとに、遅延変動検出信号12が、遅延検出部4からコントローラ部3に送信される。
【0108】
つまり、図5に示すメモリコントローラ1では、図1と同じ動作を行う比較部11において閾値以上の遅延値変化量を検出した場合に遅延量の更新を行うか、カウンタ20による所定のカウント数ごとに、定期的に遅延量を更新するか、の選択を行うことができる。
【0109】
なお、カウンタ20に設定される値は、例えば、図4に示す外部のCPU19から指定される。
【0110】
ここで、例えば、モバイル系DDRでは比較部11、および、カウンタ20による更新機構の両方を採用可能であるが、サーバー系DDRなどでは、BLの設定変更ができない。そこで、サーバー系DDRに図5に示すメモリコントローラ1を採用した場合、カウンタ値に基づく定期的な遅延量の更新を選択することができる。
【0111】
すなわち、図5に示すメモリコントローラ1によれば、複数のタイプ(モバイル系DDRまたはサーバー系DDR)に対応した適切な動作を実行することができる。
【0112】
以上、本発明のメモリコントローラについて、実施の形態およびその変形例に基づいて説明した。しかしながら、本発明は、上記実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものも、あるいは、上記説明された複数の構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【0113】
例えば、上述の説明では、DDR方式の規定に従った信号をメモリ2に送信する場合を例にとって説明したが、本発明の適用範囲はこれに限られるものではない。
【0114】
つまり、実施の形態もしくは変形例1または2におけるメモリコントローラ1は、例えば、クロック信号の立ち上がりに対応したタイミングにのみデータ転送を行ってもよい。このような場合であっても、効率的な遅延更新は実行される。
【産業上の利用可能性】
【0115】
本発明に係るメモリコントローラは、通常のメモリアクセス動作中状態でのデータ信号のラッチタイミングを調整することができるため、より高速なパフォーマンスが求められるテレビ、モバイル機器等におけるメモリコントローラとして有用である。
【符号の説明】
【0116】
1 メモリコントローラ
2 メモリ
3 コントローラ部
4 遅延検出部
5 遅延調整回路
6 クロック生成部
7 コマンド発行部
8 データ/ストローブ発行部
9 基準値保持部
10 変動後遅延値検出部
11 比較部
12 遅延変動検出信号
13 遅延更新信号
14 クロック用遅延調整部
15 コマンド用遅延調整部
16 送信データ用遅延調整部
17 受信データ用遅延調整部
18 レジスタ
19 CPU
20 カウンタ
21 セレクタ

【特許請求の範囲】
【請求項1】
メモリに対するデータ入出力を行うメモリコントローラであって、
前記メモリへの入力データおよび前記入力データについての基準クロックとなるデータストローブ信号を生成し出力するとともに、前記メモリに対するコマンドおよび前記コマンドに対応するクロック信号を生成し出力するコントローラ部と、
前記入力データ、前記データストローブ信号、前記コマンド、および前記クロック信号のうちの少なくとも一つの遅延量を制御する遅延調整回路と、
前記入力データ、前記データストローブ信号、前記コマンド、および前記クロック信号の全てに共通する変動後の遅延量を検出し、検出した遅延量と、基準遅延量との差分を算出する遅延検出部とを備え、
前記コントローラ部は、前記遅延検出部により算出された差分が閾値を超えた場合、前記メモリに対するデータ入出力におけるバースト長(BL)を第1BLから、前記第1BLよりも長い第2BLに切り替えるためのコマンドを発行し、
前記遅延調整回路は、前記第1BLから前記第2BLに切り替えられたことにより生じる、前記第1BLと前記第2BLとの差に対応する期間に、前記少なくとも一つの遅延量を前記基準遅延量に近づくように制御する
メモリコントローラ。
【請求項2】
前記コントローラ部はさらに、前記遅延調整回路が前記少なくとも一つの遅延量を前記基準遅延量に近づくように制御した後に、前記メモリにおけるBLを前記第2BLから前記第1BLに切り替えるためのコマンドを発行する
請求項1記載のメモリコントローラ。
【請求項3】
前記遅延検出部は、前記閾値を書き換え可能に記憶する記憶部を有する
請求項1または2に記載のメモリコントローラ。
【請求項4】
前記遅延検出部は、前記検出した遅延量と前記基準遅延量との差分が前記閾値を超えた場合、所定の信号を前記コントローラ部に送信し、
前記コントローラ部は前記所定の信号を受信した場合、前記メモリにおけるBLを前記第1BLから前記第2BLに切り替える
請求項1〜3のいずれか1項に記載のメモリコントローラ。
【請求項5】
前記遅延検出部はさらに、前記所定の信号を定期的に前記コントローラ部に送信可能である
請求項4記載のメモリコントローラ。
【請求項6】
前記遅延検出部は、入力される指示に応じて、(a)前記検出した遅延量と前記基準遅延量との差分が前記閾値を超えた場合に前記所定の信号を送信するか、(b)前記所定の信号を定期的に前記コントローラ部に送信するか、を選択するセレクタを有する
請求項5記載のメモリコントローラ。
【請求項7】
メモリに対するデータ入出力を行うメモリコントローラによって実行される遅延調整方法であって、
前記メモリコントローラが生成し出力する、前記メモリへの入力データ、前記入力データについての基準クロックとなるデータストローブ信号、前記メモリに対するコマンド、および、前記コマンドに対応するクロック信号の全てに共通する変動後の遅延量を検出する検出ステップと、
検出した遅延量と、基準遅延量との差分を算出する算出ステップと、
算出された差分が閾値を超えた場合、前記メモリに対するデータ入出力におけるバースト長(BL)を第1BLから、前記第1BLよりも長い第2BLに切り替えるBL切り替えステップと、
前記第1BLから前記第2BLに切り替えられたことにより生じる、前記第1BLと前記第2BLとの差に対応する期間に、前記入力データ、前記データストローブ信号、前記コマンド、および前記クロック信号のうちの少なくとも一つの遅延量を前記基準遅延量に近づくように制御する遅延調整ステップと
を含む遅延調整方法。

【図1】
image rotate

【図2】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2013−8112(P2013−8112A)
【公開日】平成25年1月10日(2013.1.10)
【国際特許分類】
【出願番号】特願2011−138963(P2011−138963)
【出願日】平成23年6月22日(2011.6.22)
【出願人】(000005821)パナソニック株式会社 (73,050)
【Fターム(参考)】