(57)【要約】【課題】第１と第２のメモリに対するトレーニングを同時化することで生じる待ち時間を低減する技術を提供する。【解決手段】第１の外部メモリのデータアクセスと第２の外部メモリのデータアクセスを独立に制御するメモリ制御部を有するメモリ制御装置は、トレーニングタイミングの発生後、第１と第２の外部メモリの両方がコマンドの非実行状態になるのを待って、第１と第２の外部メモリにおける信号のタイミングのズレを補正するためのトレーニングを実行する。解析部は、トレーニングタイミングにおけるそれら外部メモリのコマンドの実行状態と待ち状態とを解析し、メモリ制御部は、それら外部メモリのうちの一方の外部メモリにおけるコマンドの実行終了と他方の外部メモリにおけるコマンドの実行終了との間の時間差を小さくするように、トレーニングタイミングの発生からトレーニングの開始までの間における、待ち状態のコマンドの実行を制御する。【選択図】  図３
2020170399.tif 000002
【特許請求の範囲】
【請求項１】
メモリインターフェースを介して、第１の外部メモリのデータアクセスと第２の外部メモリのデータアクセスを独立に制御するメモリ制御手段と、
トレーニングタイミングの発生後、前記第１の外部メモリと前記第２の外部メモリの両方がコマンドの非実行状態になるのを待って、前記第１の外部メモリと前記第２の外部メモリとにおける信号のタイミングのズレを補正するためのトレーニングを実行するトレーニング手段と、
前記トレーニングタイミングにおける前記第１の外部メモリと前記第２の外部メモリの各々のコマンドの実行状態と待ち状態とを解析する解析手段とを備え、
前記メモリ制御手段は、前記解析手段による解析の結果に基づいて、前記第１の外部メモリ及び前記第２の外部メモリのうちの一方の外部メモリにおけるコマンドの実行終了と他方の外部メモリにおけるコマンドの実行終了との間の時間差を小さくするように、前記トレーニングタイミングの発生から前記トレーニングの開始までの間における、待ち状態のコマンドの実行を制御することを特徴とするメモリ制御装置。
【請求項２】
前記一方の外部メモリにおけるコマンドの実行終了時に前記他方の外部メモリにおいて実行中のコマンドが終了するまでの間に、前記一方の外部メモリに関して待ち状態となっている次のコマンドを実行終了できる場合に、前記メモリ制御手段は、前記次のコマンドを前記一方の外部メモリに実行させることを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
前記一方の外部メモリにおけるコマンドの実行終了時から前記第１の外部メモリ及び前記第２の外部メモリがともにコマンドの実行終了となるまでの時間差よりも、前記一方の外部メモリに関して待ち状態となっている次のコマンドを実行した場合に前記第１の外部メモリと前記第２の外部メモリのいずれかががコマンドの実行終了となってから前記第１の外部メモリと前記第２の外部メモリがともにコマンドの実行終了となるまでの時間差の方が短い場合、前記メモリ制御手段は、前記次のコマンドを前記一方の外部メモリに実行させることを特徴とする請求項１に記載のメモリ制御装置。
【請求項４】
前記トレーニングタイミングを所定のインターバル期間で発生する発生手段をさらに備えることを特徴とする請求項１乃至３のいずれか１項に記載のメモリ制御装置。
【請求項５】
前記トレーニングタイミングは、所定のインターバル期間で発生し、
前記メモリ制御手段は、前記所定のインターバル期間を順守するためのトレーニングリクエスト発行期間内で前記時間差が最小になるように、前記第１の外部メモリおよび前記第２の外部メモリに待ち状態のコマンドを実行させることを特徴とする請求項４に記載のメモリ制御装置。
【請求項６】
前記待ち状態のコマンドは、前記第１の外部メモリと前記第２の外部メモリのそれぞれに対応して設けられたＦＩＦＯメモリに、実行順に格納されていることを特徴とする請求項１乃至５のいずれか１項に記載のメモリ制御装置。
【請求項７】
前記トレーニングは、前記両方の外部メモリと前記メモリインターフェースとの間の伝送路におけるストローブ信号とデータバスの信号のタイミングのズレを補正することを特徴とする請求項１乃至６のいずれか１項に記載のメモリ制御装置。
【請求項８】
前記メモリ制御手段は、前記第１の外部メモリが前記トレーニングの開始までに実行すべきコマンドの実行を終了すると第１のトレーニングリクエストを発行し、前記第２の外部メモリが前記トレーニングの開始までに実行すべきコマンドの実行を終了すると第２のトレーニングリクエストを発行し、
前記トレーニング手段は、前記第１のトレーニングリクエストと前記第２のトレーニングリクエストが揃うと、前記トレーニングを開始することを特徴とする請求項１乃至７のいずれか１項に記載のメモリ制御装置。
【請求項９】
前記メモリ制御手段と前記メモリインターフェースとの間において、トレーニングリクエストと外部メモリへのデータアクセスのためのコマンドで個別の信号経路を持つことを特徴とする請求項８に記載のメモリ制御装置。
【請求項１０】
メモリインターフェースを介して、第１の外部メモリのデータアクセスと第２の外部メモリのデータアクセスを独立に制御するメモリ制御装置によるメモリ制御方法であって、
トレーニングタイミングの発生後、前記第１の外部メモリと前記第２の外部メモリの両方がコマンドの非実行状態になるのを待って、前記第１の外部メモリと前記第２の外部メモリとにおける信号のタイミングのズレを補正するためのトレーニングを実行するトレーニング工程と、
前記トレーニングタイミングにおける前記第１の外部メモリと前記第２の外部メモリの各々のコマンドの実行状態と待ち状態とを解析する解析工程と、
前記解析工程による解析の結果に基づいて、前記第１の外部メモリと前記第２の外部メモリのうちの一方の外部メモリにおけるコマンドの実行終了と他方の外部メモリにおけるコマンドの実行終了との間の時間差を小さくするように、前記トレーニングタイミングの発生から前記トレーニングの開始までの間における、待ち状態のコマンドの実行を制御する制御工程と、を備えることを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御装置およびメモリ制御方法に関する。
【背景技術】
【０００２】
近年、半導体回路であるＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ−ｃｉｒｃｕｉｔ）の性能が飛躍的に向上している。ＬＳＩの性能向上に伴い、処理するデータ量も増加し、外部記録用のメモリとして用いられるＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）も高速化してきている。また、モバイル向けに高速で且つ省電力なＤＲＡＭも市場に出ている。例えばＬＰＤＤＲ４では、Ｍａｘで４２６７Ｍｂｐｓもの広帯域なＤＲＡＭがＪＥＤＥＣで定義されている。なお、ＬＰＤＤＲは、「Ｌｏｗ  Ｐｏｗｅｒ  Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ」の略であり、ＪＥＤＥＣは、「Ｊｏｉｎｔ  Ｅｌｅｃｔｒｏｎ  Ｄｅｖｉｃｅ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｃｏｕｎｃｉｌ」の略である。
【０００３】
ＬＰＤＤＲ４のような高速アクセスが可能なＤＲＡＭでは、一般的にストローブ信号の立ち上がりと立ち下がりに同期してデータ信号をラッチしてデータの読み書きが行われる。しかしながら、システム全体の温度変化と電圧変化などに伴い、ストローブ信号とデータ信号の間にタイミングのズレが生じる。このようなタイミングのズレは通常のメモリアクセス中に発生する。そのため、ＬＰＤＤＲ４では定期的にメモリアクセスを中断し、ストローブ信号とデータ信号のタイミング調整を行うキャリブレーション用のトレーニングを実行することを要求している。
【０００４】
このようなタイミング調整のためのトレーニング期間中は、メモリへの書き込みや読み出しなどが行えないため、メモリ帯域が阻害される。このような課題に対して、通常のメモリアクセス中にストローブ信号とデータ信号のタイミング調整を行うメモリインターフェースが提案されている。例えば、特許文献１では、メモリへのライトデータを一時的に保持しておいて、該当データをリードする際にキャリブレーションを行う技術が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−０９８９９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＬＰＤＤＲ４では１Ｃｈ（Ｃｈａｎｎｅｌ）あたりのデータ幅が１６ｂｉｔに定義されている。これに対し、ＤＲＡＭデバイス側は１パッケージあたり２Ｃｈの構成を持つものが主であり、そのようなＤＲＡＭデバイス側のデータ幅の合計は３２ｂｉｔになる。そこで、ＤＲＡＭデバイスでは、ＬＳＩ回路構成として２つのメモリコントローラに対してデータ幅３２ｂｉｔの１つのＤＲＡＭ−ＰＨＹ（Ｐｈｙｇｉｃａｌ−Ｌａｙｅｒ）を接続して面積を削減する構成が提案されている。このような構成によれば、ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）やトレーニング回路を２Ｃｈ間で共有することにより面積削減を実現できる。また、１６ｂｉｔ単位のメモリコントローラが２つあるため、ＤＲＡＭへはＣｈ単位で個別にアクセスすることが可能である。
【０００７】
しかしながら、ＤＲＡＭ−ＰＨＹが共有されると、トレーニング回路も共有されることになり、キャリブレーション用のトレーニングは２ＣｈのＤＲＡＭにおいて同時に行われる必要がある。したがって、第１のメモリコントローラがＤＲＡＭ−ＰＨＹへトレーニングのリクエストを出しても、他方の第２のメモリコントローラに接続されたＤＲＡＭがメモリアクセス中であった場合には、トレーニングを開始できない。すなわち、第１メモリコントローラには、第２のメモリコントローラによるメモリアクセスが完了するまでの、トレーニングの待ち時間が発生する。そして、この待ち時間の間、第１のメモリコントローラはメモリアクセスができなくなる。特許文献１ではトレーニング期間中の帯域阻害を防ぐことは可能だが、２つのメモリコントローラで１つのＤＲＡＭ−ＰＨＹを接続した構成において、トレーニングの同時化において生じる上記待ち時間に関する課題を解決するものではない。
【０００８】
そこで、本発明は、第１と第２のメモリに対するトレーニングを同時化することで生じる待ち時間を低減する技術を提供する。
【課題を解決するための手段】
【０００９】
本発明の一態様によるメモリ制御装置は、以下の構成を備える。すなわち、
メモリインターフェースを介して、第１の外部メモリのデータアクセスと第２の外部メモリのデータアクセスを独立に制御するメモリ制御手段と、
トレーニングタイミングの発生後、前記第１の外部メモリと前記第２の外部メモリの両方がコマンドの非実行状態になるのを待って、前記第１の外部メモリと前記第２の外部メモリにおける信号のタイミングのズレを補正するためのトレーニングを実行するトレーニング手段と、
前記トレーニングタイミングにおける前記第１の外部メモリと前記第２の外部メモリの各々のコマンドの実行状態と待ち状態とを解析する解析手段とを備え、
前記メモリ制御手段は、前記解析手段による解析の結果に基づいて、前記第１の外部メモリと前記第２の外部メモリうちの一方の外部メモリにおけるコマンドの実行終了と他方の外部メモリにおけるコマンドの実行終了との間の時間差を小さくするように、前記トレーニングタイミングの発生から前記トレーニングの開始までの待ち状態のコマンドの実行を制御する。
【発明の効果】
【００１０】
本発明によれば、第１と第２のメモリに対するトレーニングを同時化することで生じる待ち時間が低減される。
【図面の簡単な説明】
【００１１】
【図１】実施形態によるメモリ制御装置の構成を概念的に示す図。
【図２】トレーニングの同時化によるトレーニング応答の待ち時間を示した概念図。
【図３】メモリ制御装置の機能構成を示すブロック図。
【図４】第１実施形態のコマンド状態解析部による処理を示すフローチャート。
【図５】アクセスコマンドとトレーニングコマンドの発行の一般的な時間遷移を説明する図。
【図６】アクセスコマンドとトレーニングコマンドの発行の、実施形態による時間遷移を説明する概念図。
【図７】第１実施形態におけるトレーニング応答の待ち時間の改善を示した概念図。
【図８】第２実施形態のコマンド状態解析部による処理を示すフローチャート。
【図９】第２実施形態におけるトレーニング応答の待ち時間の改善を示した概念図。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【００１３】
＜第１実施形態＞
第１実施形態では、本発明におけるメモリ制御装置について、定期的なトレーニングタイミングで、２つのメモリコントローラにおけるコマンド状態を解析した上で、トレーニングリクエストを発行する制御方法について説明する。
【００１４】
図１は、実施形態によるメモリ制御装置の構成を概念的に示す図である。ＬＳＩ回路構成では、メモリコントローラ１００（ＭＥＭＣ１）とメモリコントローラ１０１（ＭＥＭＣ２）の２つのメモリコントローラに対し、データ幅３２ｂｉｔの１つの物理層１０２（ＤＲＡＭ−ＰＨＹ（Ｐｈｙｇｉｃａｌ−Ｌａｙｅｒ））が接続されている。このような構成によれば、ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）／トレーニング回路１０３を２Ｃｈ間で共有する事で面積削減が実現される。また、メモリコントローラ１００，１０１はそれぞれ１６ｂｉｔ単位であり、ＤＲＡＭデバイス１０４へはＣｈ単位で個別アクセスが可能である。
【００１５】
一方、図１の構成では、キャリブレーションのためのＰＬＬ／トレーニング回路１０３が２つのメモリコントローラ１０１、１０２によって共有されるため、２Ｃｈでトレーニングを同時に行う必要がある。例えば、図２は、トレーニングの同時化によるトレーニング応答の待ち時間を示した概念図である。図２に示したように、ＭＥＭＣ１がＤＲＡＭ−ＰＨＹへトレーニングのリクエストを出した時点でＭＥＭＣ２がメモリアクセス中（図２では読み出し中（ＲＤ））であった場合、ＤＲＡＭ−ＰＨＹからのトレーニング応答の待ち時間Ｔｗが発生する。そして、ＭＥＭＣ１では、このトレーニング応答の待ち時間Ｔｗの期間においてメモリアクセスができなくなる。本実施形態では、このようなトレーニングの同時化によるトレーニング応答の待ち時間Ｔｗが発生することにより、帯域が阻害されるという課題を解決する。
【００１６】
図３は、第１実施形態におけるメモリ制御装置３００の機能構成例を示すブロック図である。メモリ制御装置３００は、例えばデジタルカメラ、デジタルビデオカメラなどの画像処理用ＬＳＩに内蔵される回路で、デジタル回路、及び外部メモリとアクセスするためのアナログ回路から構成されている。また、メモリ制御装置３００は、ＬＳＩ内にある不図示の画像処理回路、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等とメモリバスで繋がっており、ＬＳＩ内のマスターモジュールとＤＲＡＭデバイス１０４のメモリアクセスを制御する回路である。ＤＲＡＭデバイス１０４は、メモリ制御装置３００を含む画像処理用ＬＳＩとは別の半導体集積回路チップとして構成される。
【００１７】
第１メモリ制御部３０１および第２メモリ制御部３０４は、図１のＭＥＭＣ１およびＭＥＭＣ２に対応する。第１メモリ制御部３０１および第２メモリ制御部３０４は、後述のメモリインターフェース３０７を介して、ＤＲＡＭデバイス１０４が有する２つの外部メモリ（第１の外部メモリと第２の外部メモリ）のデータアクセスを独立に制御する。第１メモリ制御部３０１および第２メモリ制御部３０４は、不図示のＬＳＩ内のマスターモジュールからのメモリアクセス要求に対し、例えばＬＰＤＤＲ４における１Ｃｈ分である１６ｂｉｔデータ幅のメモリアクセスを個々に制御する。マスターモジュールと、第１メモリ制御部３０１および第２メモリ制御部３０４とは、例えばＡＭＢＡ（Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ  Ｂｕｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ）規格のＡＸＩプロトコルによるメモリバスで繋がっている。各マスターモジュールからＡＸＩプロトコルで、ライトやリードのコマンドとして、第１メモリ制御部３０１または第２メモリ制御部３０４に送られ、不図示のコマンド調停回路により、ＤＲＡＭデバイス１０４へのコマンド発行順を決定する。その後、コマンドは第１コマンド発行部３０２または第２コマンド発行部３０５に送られる。
【００１８】
第１コマンド発行部３０２および第２コマンド発行部３０５は、マスターモジュールからのコマンドを蓄えるための第１コマンドＦＩＦＯ５００、第２コマンドＦＩＦＯ５０１を内蔵しており、決定したコマンド発行順にコマンドを蓄積していく。なお、ＦＩＦＯは、「Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ」である。すなわち、第１コマンドＦＩＦＯ５００、第２コマンドＦＩＦＯ５０１は、第１の外部メモリと第２の外部メモリのそれぞれに対応して設けられ、待ち状態のコマンドを実行順に格納するＦＩＦＯメモリである。また、第１コマンド発行部３０２と第２コマンド発行部３０５では、ＡＸＩプロトコルのコマンドを、ＤＦＩ（ＤＤＲ  ＰＨＹ  Ｉｎｔｅｒｆａｃｅ）のコマンドに変換し、メモリインターフェース３０７に送る。第１トレーニングリクエスト発行部３０３と第２トレーニングリクエスト発行部３０６は、後述するトレーニングの開始を要求するトレーニングリクエストをメモリインターフェース３０７のＰＬＬ／トレーニング回路１０３に対して発行する。
【００１９】
なお、以下において、第１メモリ制御部３０１と第２メモリ制御部３０４を総称する場合は、メモリ制御部と記載する。また、第１コマンドＦＩＦＯ５００と第２コマンドＦＩＦＯ５０１を総称する場合は、コマンドＦＩＦＯと記載する。同様に、第１コマンド発行部３０２と第２コマンド発行部３０５を総称する場合はコマンド発行部と記載し、第１トレーニングリクエスト発行部３０３と第２トレーニングリクエスト発行部３０６を総称する場合は、トレーニングリクエスト発行部と記載する。メモリ制御部とメモリインターフェース３０７との間において、トレーニングリクエスト発行部が発行するトレーニングリクエストと、コマンド発行部が発行する外部メモリによるデータアクセスなどのためのコマンドとは、個別の信号経路を有している。
【００２０】
メモリインターフェース３０７は、前述したＤＲＡＭ−ＰＨＹ（物理層１０２）に対応し、外部のＤＲＡＭデバイス１０４とのメモリアクセスを行うためのデジタル回路およびアナログ回路を有する。本実施形態のメモリインターフェース３０７には、それぞれ１６ｂｉｔのデータ幅を持つ第１メモリ制御部３０１と第２メモリ制御部３０４が接続される。そのため、メモリインターフェース３０７は、３２ｂｉｔのデータ幅を持っている。また回路面積を削減するために、ＰＬＬ／トレーニング回路１０３を２つのメモリ制御部で共有する構成をとっている。そのため、初期化やトレーニングは２つのメモリ制御部で同時に行われる必要がある。上述したように、ＰＬＬ／トレーニング回路１０３は、トレーニングタイミングの発生後に、第１の外部メモリと第２の外部メモリの両方がコマンドの非実行状態となるのを待って、両方の外部メモリにおける信号のズレを補正するためのトレーニングを実行する。一方、第１メモリ制御部３０１と第２メモリ制御部３０４は、外部のＤＲＡＭデバイス１０４へ、１６ｂｉｔのＣｈ単位で個別にメモリアクセスすることが可能である。
【００２１】
タイミング信号生成部３０８は、定期的にトレーニングを実行するためのトレーニングインターバルの時間を管理し、トレーニングタイミングを所定のインターバル期間で発生する。タイミング信号生成部３０８は、発生したトレーニングタイミングを解析部３０９に通知する。トレーニングインターバルの時間は、メモリ制御装置３００を含むシステムの温度変化と電圧変化に依存する。そのため、トレーニングインターバルの時間を一概に規定することは出来ないが、例えばデジタルカメラ、デジタルビデオカメラなどでは、数百ｍｓｅｃから数ｓｅｃのオーダーになる。
【００２２】
解析部３０９は、タイミング信号生成部３０８から通知されるトレーニングタイミングで、第１コマンド発行部３０２、及び第２コマンド発行部３０５のコマンド状態を解析する。解析部３０９は、第１コマンド発行部３０２の第１コマンドＦＩＦＯ５００および第２コマンド発行部３０５の第２コマンドＦＩＦＯ５０１に堆積しているコマンド、既に発行されて実行中のコマンドについて、完了時間を割り出す。
【００２３】
また、解析部３０９は、解析結果に基づいて、第１コマンド発行部３０２によるコマンドの発行を停止させ、第１トレーニングリクエスト発行部３０３にトレーニングリクエストを発行させる。発行されたトレーニングリクエストは、メモリインターフェース３０７へ送信される。同様に、解析部３０９は、解析結果に基づいて、第２コマンド発行部３０５によるコマンドの発行を停止させ、第２トレーニングリクエスト発行部３０６にトレーニングリクエストを発行させる。発行されたトレーニングリクエストは、メモリインターフェース３０７に送信される。ここで、解析部３０９は、２つの外部メモリの一方におけるコマンドの実行終了と他方におけるコマンドの実行終了との時間差を小さくするように、トレーニングタイミングの発生からトレーニングの開始までの間における待ち状態のコマンドの実行を制御する。これにより、図２により説明したような、２つの外部メモリにおいてトレーニングを同時に実行させるために生じていたトレーニング応答待ち時間が低減される。
【００２４】
トレーニングについて説明する。トレーニングでは、温度変化、または電圧変化になどよる外部メモリとメモリインターフェース３０７との間の伝送路におけるデータ取得タイミングのズレを補正する。データ取得タイミングのズレとは、例えば、ストローブ信号とデータバスの信号のタイミングのズレである。より具体的には、例えば、温度変化と電圧変化によって生じるメモリインターフェース３０７と外部のＤＲＡＭデバイス１０４との間のタイミングスペックとなるｔＤＱＳ２ＤＱ、及びｔＤＱＳＣＫの変動をキャリブレーションすることである。
【００２５】
まずｔＤＱＳ２ＤＱのトレーニングについて説明する。ｔＤＱＳ２ＤＱは、ライト時のＤＱＳ（ストローブ信号）とＤＱ（データバス上の信号）の遅延時間を表している。トレーニング時において、例えばＬＰＤＤＲ４では、ＤＲＡＭデバイス１０４に内蔵されているＤＱＳのクロックツリー遅延変動量モニタの結果をＭＲ（Ｍｏｄｅ  Ｒｅｇｉｓｔｅｒ）より読み取ることでｔＤＱＳ２ＤＱが得られる。なお、ＤＲＡＭデバイス１０４のＭＲへのアクセスは、例えば、メモリインターフェース３０７によりＭＲアクセス専用のコマンドを発行することで実現され得る。
【００２６】
ＤＲＡＭデバイス１０４のＤＱＳのクロックツリー遅延変動量モニタの結果に基づいて、メモリインターフェース３０７内の遅延量調整回路がライト時に出力するＤＱの遅延量を調整する。遅延量調整回路は、例えば、ＰＬＬ／トレーニング回路１０３に含まれる。これにより温度変化と電圧変化によって変動するライト時のｔＤＱＳ２ＤＱを補正することが可能となる。
【００２７】
次にｔＤＱＳＣＫのトレーニングについて説明する。ｔＤＱＳＣＫは、リード時にＤＲＡＭデバイス１０４から送られるＤＱＳの取り込みタイミングを規定している値である。例えばＬＰＤＤＲ４では、ＤＲＡＭデバイス１０４内の固有値を持つＭＲをリードすることでキャリブレーションを行い、メモリインターフェース３０７内の遅延量調整回路がリード時に入力するＤＱＳのＧａｔｉｎｇタイミングを調整する。これにより温度変化と電圧変化によって変動するリード時のｔＤＱＳＣＫを補正することが可能となる。
【００２８】
次に図４のフローチャートを参照して、解析部３０９の動作を説明する。タイミング信号生成部３０８によりトレーニングタイミングの発生が解析部３０９に通知されると、Ｓ４０１以降の処理が開始される。本実施形態では、解析部３０９が、一方の外部メモリにおけるコマンドの実行終了時に、他方の外部メモリにおいて実行中のコマンドが終了するまでの間に、当該一方の外部メモリに対して待ち状態となっている次のコマンドを実行終了できるか判定する。解析部３０９は、次のコマンドを実行終了できると判定した場合に、メモリ制御部に当該次のコマンドによるメモリアクセスを実行させる。以下、より具体的に説明する。
【００２９】
Ｓ４０１において、解析部３０９は、第１コマンド発行部３０２または第２コマンド発行部３０５に発行済みのコマンドがあるか否かを判断する。Ｓ４０１において解析部３０９により発行済みのコマンドが無いと判断された場合、処理はＳ４０４に進む。Ｓ４０４において、解析部３０９は、第１コマンド発行部３０２と第２コマンド発行部３０５に対して、次のコマンドの発行を停止するよう指示する。また、これと同時に、解析部３０９は、第１トレーニングリクエスト発行部３０３と第２トレーニングリクエスト発行部３０６に対して、実行中のコマンドが完了次第、トレーニングリクエストをメモリインターフェース３０７へ発行するように指示する。その後、処理はＳ４０５に進み、本処理を終了する。
【００３０】
一方、Ｓ４０１において、解析部３０９が発行済みのコマンドが有ると判断した場合、処理はＳ４０２に進む。Ｓ４０２において、解析部３０９は、コマンドＦＩＦＯに堆積している次に発行されるコマンドによるメモリアクセスが、実行中のコマンド（発行済みのコマンド）が完了するまでに完了するか否かを判断する。Ｓ４０２において、実行中のコマンドよりも完了時間の早い次のコマンドがコマンドＦＩＦＯに堆積していると判断された場合、処理はＳ４０３に進む。Ｓ４０３において、解析部３０９は、実行中のコマンドよりも完了時間の早い次のコマンドが堆積しているコマンド発行部に対し、そのコマンドを発行するように指示する。その後、処理はＳ４０２に戻り、以降の処理が繰り返される。
【００３１】
Ｓ４０２において、解析部３０９が、実行中のコマンドよりも早く完了する次のコマンドがコマンドＦＩＦＯに堆積されていないと判断した場合、処理はＳ４０４へ進む。Ｓ４０４では、前述したように、解析部３０９の指示のもと、第１メモリ制御部３０１と第２メモリ制御部３０４がメモリインターフェース３０７へトレーニングリクエストを発行する。その後、本処理を終了する（Ｓ４０５）。
【００３２】
ここで、コマンドＦＩＦＯにおけるコマンドの堆積状態と、コマンドおよびトレーニングリクエストの発行との関係について、各状態の時間遷移を概念図で示した図５、図６を用いて説明する。図５は、一般的なメモリ制御装置における時間ｔ０から時間ｔ５までのコマンドの発行および堆積状態の時間遷移を概念図で示したものである。図６は、本実施形態における時間ｔ０から時間ｔ５までのコマンドの発行および堆積状態の時間遷移を概念図で示したものである。
【００３３】
まず図５について説明する。図５において、第１コマンドＦＩＦＯ５００は、第１メモリ制御部３０１（図３）の第１コマンド発行部３０２に内蔵されたコマンドを堆積するためのＦＩＦＯである。同様に、第２コマンドＦＩＦＯ５０１は、第２メモリ制御部３０４（図３）の第２コマンド発行部３０５に内蔵されたコマンドを堆積するためのＦＩＦＯである。また、５３０は第１コマンドＦＩＦＯ５００より発行されたコマンドを示している。同様に、５３１は第２コマンドＦＩＦＯ５０１より発行されたコマンドを示している。
【００３４】
時間ｔ０では、第１コマンドＦＩＦＯ５００および第２コマンドＦＩＦＯ５０１からはコマンドが発行されていない状態を示している。また、時間ｔ０において、第１コマンドＦＩＦＯ５００には、ＲＤ＿５Ｂ（リード５バースト）、ＷＲ＿１Ｂ（ライト１バースト）、ＲＤ＿４Ｂ（リード４バースト）のコマンドが堆積している。同様に、時間ｔ０において、第２コマンドＦＩＦＯ５０１には、ＲＤ＿１２８Ｂ（リード１２８バースト）、ＷＲ＿６４Ｂ（ライト６４バースト）、ＲＤ＿６４Ｂ（リード６４バースト）のコマンドが堆積している。
【００３５】
次に、時間ｔ１では、第２コマンドＦＩＦＯ（５０１）から、ＲＤ＿１２８Ｂのコマンドが発行された時点（または、ＲＤ＿１２８Ｂのコマンドの実行中）でトレーニングタイミング５２０が発生した事を示している。図５では、トレーニングタイミング５２０の発生を受けて、時間ｔ２において、第１コマンド発行部３０２はコマンドの発行を停止し、第１トレーニングリクエスト発行部３０３はトレーニングリクエストを発行する。
【００３６】
ここで、例えば時間ｔ１で第２コマンドＦＩＦＯ５０１から発行されたＲＤ＿１２８Ｂのコマンドによるメモリアクセスが完了するのに時間ｔ５までかかるとする。その場合、図５の時間ｔ２、時間ｔ３、時間ｔ４に示したように、第１メモリ制御部３０１は、トレーニングリクエストを発行したまま応答待ちになり、その間メモリへのアクセスが出来なくなる。
【００３７】
次に図６について説明する。図６において第１コマンドＦＩＦＯ５００と第２コマンドＦＩＦＯ５０１におけるコマンドの堆積状態は図５と同じである。６３０、６３１は、第１コマンドＦＩＦＯ５００と第２コマンドＦＩＦＯ５０１から発行されたコマンドを示している。
【００３８】
図６において、時間ｔ０では、図５と同様に第１コマンドＦＩＦＯ５００および第２コマンドＦＩＦＯ５０１からコマンドが発行されていない状態が示されている。時間ｔ１では、第２コマンドＦＩＦＯ５０１からＲＤ＿１２８Ｂのコマンドが発行された時点（または、ＲＤ＿１２８Ｂのコマンドの実行中）にトレーニングタイミング６２０が発生したことを示している。
【００３９】
解析部３０９は、トレーニングタイミングの発生が通知されると、第１コマンドＦＩＦＯ５００と第２コマンドＦＩＦＯ５０１に堆積しているコマンド情報を取得し、且つ、発行済みのコマンド情報からその完了時間を解析する。例えば図７に示したように、第１コマンドＦＩＦＯ５００に堆積しているコマンドＲＤ＿５ＢとＷＲ＿１Ｂの完了時間が、第２コマンドＦＩＦＯ５０１から発行済みのコマンドＲＤ＿１２８Ｂの完了時間より短いという解析結果が得られたとする。その場合、図６の時間ｔ２において、第１コマンド発行部３０２は、第１コマンドＦＩＦＯ５００からＲＤ＿５Ｂのコマンドを発行する。次に、時間ｔ３（ＲＤ＿５Ｂのコマンドの終了時）において、第１コマンド発行部３０２は、第１コマンドＦＩＦＯ５００からＷＲ＿１Ｂのコマンドを発行する。
【００４０】
第１コマンドＦＩＦＯ５００に堆積している、次に発行すべきコマンドであるＲＤ＿４Ｂは、図７に示されるように、第２コマンド発行部３０５から発行済みで実行中のコマンドＲＤ＿１２８Ｂの完了時間よりも後に完了する。そのため、時間ｔ４において、解析部３０９は、第１メモリ制御部３０１の第１トレーニングリクエスト発行部３０３からトレーニングリクエストを発行させる。その後、時間ｔ５において、第２コマンド発行部３０５から発行されたコマンドＲＤ＿１２８Ｂによるメモリアクセスが完了すると、解析部３０９は、第２メモリ制御部３０４の第第２コマンド発行部３０５によるコマンドの発行を停止させる。そして、解析部３０９は、第２トレーニングリクエスト発行部３０６にトレーニングリクエストを発行させる。
【００４１】
第１トレーニングリクエスト発行部３０３および第２トレーニングリクエスト発行部３０６の双方からトレーニングリクエストが発行されると、ＰＬＬ／トレーニング回路１０３は、トレーニングの実行を開始する。なお、図６では、トレーニングタイミング６２０の発生時に第１メモリ制御部３０１の制御下の外部メモリにおいてコマンドが非実行状態の場合を示したが、もちろんこれに限られるものではない。例えば、トレーニングタイミングの発生時に両方のメモリ制御部の制御下の外部メモリにおいてコマンドが実行されている場合もあり得る。このような場合であって、例えば第１メモリ制御部３０１によるコマンドの実行が先に終了した場合には、メモリ制御装置３００は時間ｔ２以降のように動作する。
【００４２】
以上の動作によれば、従来の構成であればトレーニングの開始までの待ち時間であるトレーニング応答待ち時間を、図７に示すようにＴｗからＴａに低減することが可能となる。すなわち、２つのメモリが共有するトレーニング回路によるトレーニングを開始するために生じる、コマンドを処理できない無駄な待ち時間が低減される。
【００４３】
以上のように、第１実施形態によれば、定期的なトレーニングタイミングにおいて２つのメモリコントローラのコマンド状態を解析し、コマンド発行とトレーニングリクエスト発行を制御することで無駄なトレーニング応答待ち時間が低減される。
【００４４】
なお、上記では、Ｓ４０２でＮＯと判定されると、次のコマンドの発行が停止されるが、これに限られるものではない。例えば、図７に示すように、ＲＤ＿４Ｂを実行しない場合の待ち時間Ｔａよりも、ＲＤ＿４Ｂを実行した場合の待ち時間Ｔａ'の方が短い場合には、ＲＤ＿４Ｂを実行するように構成されてもよい。この場合、Ｔａ＜Ｔａ'であればもちろんＲＤ＿４Ｂは実行されない。すなわち、解析部３０９は、一方の外部メモリにおけるコマンドの実行終了時において、両方の外部メモリがともにコマンドの実行終了となるまでの第１の時間差を取得する。そして、解析部３０９は、当該一方の外部メモリに、待ち状態となっている次のコマンドを実行させた場合に、両外部メモリのいずれかにおいてコマンドの実行が終了してから両外部メモリによるコマンドの実行がともに終了となるまでの第２の時間差を取得する。解析部３０９は、第２の時間差が第１の時間差よりも小さい場合に、上記次のコマンドを当該一方の外部メモリに実行させる。
【００４５】
図７の例では、例えば、時刻ｔ４において第１の時間差Ｔａが取得される。また、解析部３０９は、一方の外部メモリにおいて、待ち状態である次のコマンドが実行された場合の両外部メモリによるコマンドの実行終了の第２の時間差（例えば、Ｔａ'）を取得する。解析部３０９は、第２の時間差Ｔａ'の方が第１の時間差Ｔａよりも小さい場合に、当該次のコマンドを実行するように制御する。このような制御により、さらにトレーニング応答の待ち時間を低減することが可能となる。
【００４６】
＜第２実施形態＞
第２実施形態では、トレーニングリクエスト発行期間の情報を用いて、２つのメモリコントローラ間のコマンド完了する時間差が最小になる制御方法について説明する。タイミング信号生成部３０８は、トレーニングタイミングを所定のインターバル期間で発生する。トレーニングリクエスト発行期間とは、トレーニングタイミングが発生するインターバル期間を順守するための、トレーニングリクエストを開始すべき期間を規定したものである。解析部３０９は、トレーニングリクエスト発行期間内で、コマンドの実行を終了した外部メモリにおけるトレーニング開始までの待ち時間が最小になるように、ＤＲＡＭデバイス１０４に待ち状態のコマンドを実行させる。
【００４７】
なお、第２実施形態のメモリ制御装置の構成は、第１実施形態（図１、図３）と同様であるが、解析部３０９の動作が異なる。第２実施形態の解析部３０９は、トレーニングリクエスト発行期間において、メモリ制御部に発生するトレーニングの実行開始までの待ち時間が最小になるように、コマンドの実行を制御する。以下、第２実施形態による解析部３０９の動作を図８および図９を用いて説明する。
【００４８】
図８は、第２実施形態における解析部３０９の処理を示すフローチャートである。タイミング信号生成部３０８によりトレーニングタイミングの発生を示す信号が解析部３０９に通知されると、Ｓ８００以降の処理が実行される。
【００４９】
Ｓ８０１において、解析部３０９は、第１コマンド発行部３０２または第２コマンド発行部３０５に発行済みのコマンドがあるか否かを判断する。Ｓ８０１において、解析部３０９により発行済みのコマンドが無いと判断された場合、処理は後述のＳ８１３に進む。一方、Ｓ８０１において、解析部３０９により、第１コマンド発行部３０２または第２コマンド発行部３０５に発行済みのコマンドが有ると判断された場合、処理はＳ８０２に進む。Ｓ８０２において、解析部３０９は、一方のメモリ制御部のコマンドＦＩＦＯに堆積している次のコマンドの実行が、他方のメモリ制御部によって発行済み（実行中）となっているコマンドの実行が完了するまでに完了するか否かを判断する。
【００５０】
Ｓ８０２において、コマンドＦＩＦＯに堆積している次のコマンドの完了が、実行中のコマンドの完了よりも早いと解析部３０９により判断された場合、処理はＳ８０３に進む。Ｓ８０３において、解析部３０９は、完了時間の早い次のコマンドが堆積しているコマンド発行部に対し、そのコマンドを発行するように指示する。コマンド発行部は、この指示に応じて、実行中のコマンドがなければ当該次のコマンドを直ちに実行し、実行中のコマンドがあれば当該次のコマンドを発行が径呈しているコマンドとして登録する。その後、処理はＳ８０２に戻り、以降の処理が繰り返される。
【００５１】
一方、Ｓ８０２において、解析部３０９により、ＦＩＦＯに堆積している次のコマンドの実行が実行中のコマンドよりも先に完了しないと判断された場合、処理はＳ８０４に進む。なお、Ｓ８０４において、解析部３０９は、第１コマンド発行部３０２から発行済みとなったコマンドと第２コマンド発行部３０５から発行済みとなったコマンドの完了時間の時間差Ｔａを求める。また、Ｓ８０４において、解析部３０９は、第１コマンド発行部３０２で発行するコマンド完了時間Ｘと、第２コマンド発行部３０５で発行するコマンド完了時間Ｙを求める。ここで算出される完了時間とは、発行済みのコマンド、発行が決定しているコマンド、及び後述する実行予定コマンドＩＤが付加されたコマンドのうち、最後に実行されるコマンドの完了時間である。処理手順Ｓ８０４において、該当するコマンドが無い場合は、コマンド完了時間Ｘ、及びコマンド完了時間Ｙは初期値０となる。
【００５２】
Ｓ８０４において、解析部３０９は、コマンド完了時間Ｘとコマンド完了時間Ｙを比較する。この比較の結果、コマンド完了時間Ｘよりもコマンド完了時間Ｙが大きい場合には、処理はＳ８０７に進む。Ｓ８０７において、解析部３０９は、第１コマンドＦＩＦＯ５００に堆積している次のコマンドによるメモリアクセスが、トレーニングリクエスト発行期間内で完了するか否かを判断する。Ｓ８０７において、解析部３０９により、第１コマンドＦＩＦＯ５００に堆積している次のコマンドの実行が、トレーニングリクエスト発行期間内で完了すると判断された場合、処理はＳ８０８に進む。Ｓ８０８において、解析部３０９は、Ｓ８０７で解析した第１コマンドＦＩＦＯ５００にある次のコマンドによるメモリアクセスの完了時間を求め、求めた完了時間でコマンド完了時間Ｘを更新する。その後、処理はＳ８０９に進む。
【００５３】
一方、Ｓ８０４において、解析部３０９により、コマンド完了時間Ｘよりもコマンド完了時間Ｙが小さいと判断された場合、処理はＳ８０５に進む。Ｓ８０５において、解析部３０９は、第２コマンドＦＩＦＯ５０１が堆積している次のコマンドによるメモリアクセスが、トレーニングリクエスト発行期間内で完了するか否かを判断する。Ｓ８０５において、解析部３０９により、第２コマンドＦＩＦＯ５０１に堆積している次のコマンドの実行が、トレーニングリクエスト発行期間内で完了すると判断された場合、処理はＳ８０６に進む。Ｓ８０６において、解析部３０９は、Ｓ８０５で解析した第２コマンドＦＩＦＯ５０１にある次のコマンドによるメモリアクセス完了時間を求め、求めた完了時間でコマンド完了時間Ｙを更新する。その後、処理はＳ８０９に進む。
【００５４】
Ｓ８０９において、解析部３０９は、Ｓ８０９の処理回数をカウントするカウント値Ｎに１を加えインクリメントする。ここで、カウント値Ｎの初期値は０である。そして、Ｓ８１０において、解析部３０９は、Ｓ８０５またはＳ８０７において発行可能と判断されたコマンドに実行予定コマンドＩＤ＝カウント値Ｎを付加する。
【００５５】
Ｓ８１１において、解析部３０９は、Ｓ８０９で実行予定コマンドＩＤが付加されたコマンドの完了時間と、それまでのコマンド完了時間との時間差Ｔｂ（Ｎ）を求める。解析部３０９は、求めた時間差Ｔｂ（Ｎ）と、カウント値（Ｎ−１）の時の時間差Ｔｂ（Ｎ−１）を比較する。そして、Ｔｂ（Ｎ）の方が小さい場合（Ｓ８１１でＹＥＳ）、Ｓ８１２において、解析部３０９は、最小時間差ＴｂｍｉｎをＴｂ（Ｎ）に書き換えるとともに、最小時間差Ｔｂｍｉｎの時の処理回数のカウント値ＮｍｉｎをＮに書き換える。なお、カウント値Ｎｍｉｎの初期値は０とする。ここで、最小時間差ＴｂｍｉｎはＮ−１が０の時は、必ずＴｂＮに書き換える。その後、処理はＳ８０４に戻り、以降の処理が繰り返し実行される。一方、Ｓ８１１でＴｂ（Ｎ）≧Ｔｂ（Ｎ−１）の場合、処理はそのままＳ８０４に戻る。
【００５６】
また、Ｓ８０５において、解析部３０９により、第２コマンドＦＩＦＯ５０１の次のコマンドの実行がトレーニングリクエスト発行期間内で実行完了しないと判断された場合、処理はＳ８１３に進む。同様に、Ｓ８０７において第１コマンドＦＩＦＯ５００の次のコマンドの実行がトレーニングリクエスト発行期間内で完了しないと判断された場合、処理はＳ８１３に進む。
【００５７】
Ｓ８１３において、解析部３０９は、Ｓ８０４で求めた時間差Ｔａと、Ｓ８１２で求めた最小時間差Ｔｂｍｉｎとを比較する。Ｔａの方がＴｂより大きい（Ｔａ＞Ｔｂ）と判断された場合、処理はＳ８１４に進み、ＴａがＴｂ以下（Ｔａ≦ＴＴｂ）と判断された場合、処理はＳ８１５に進む。
【００５８】
Ｓ８１４において、解析部３０９は、Ｎｍｉｎまでのカウント値が付加されている実行予定コマンドＩＤが示すコマンドを実行する。その後、Ｓ８１５において、解析部３０９は、第１コマンド発行部３０２および第２コマンド発行部３０５に対し次のコマンド発行を停止するよう指示する。また同時に、解析部３０９は、第１トレーニングリクエスト発行部３０３および第２トレーニングリクエスト発行部３０６に対し、実行中のコマンドが完了次第、トレーニングリクエストをメモリインターフェース３０７へ発行するように指示する。その後、処理はＳ８１６に進み、本処理が終了する。
【００５９】
次に図９を用いて第２実施形態による処理の一例を説明する。図９は、図６で示した各コマンドＦＩＦＯに堆積しているコマンドと、発行したコマンドの状態の時間遷移について、タイミングチャートで示した図である。図９では、幾つかのコマンド発行パターンにおけるコマンド完了時間Ｘとコマンド完了時間Ｙが示されている。また、図９においてトレーニングリクエスト発行期間がＴｔで示されており、この期間内にトレーニングが実行されれば、トレーニングインターバルＴｉを順守することが可能である。
【００６０】
図９において、パターン１は、図６の時間ｔ１において、第２コマンドＦＩＦＯ５０１からＲＤ‐１２８Ｂのコマンドが既に発行された状態において、図８のＳ８０２でＮＯと判定されるまで解析部３０９が処理を実行した場合のタイミングチャートである。この場合、既に第２メモリ制御部３０４から発行されているコマンドＲＤ‐１２８Ｂの完了時間をＹとし、第１メモリ制御部３０１によって実行されたコマンドＷＲ＿１Ｂの完了時間がＸとして保持される。また、この時、解析部３０９によって、完了時間Ｘと完了時間Ｙの時間差Ｔａが計算される。
【００６１】
パターン２は、解析部３０９が図８のＳ８０４、Ｓ８０７、Ｓ８０８、Ｓ８０９、Ｓ８１０を実行した場合のタイミングチャートである。このとき、コマンドの完了時間Ｘは、第１コマンドＦＩＦＯ５００に堆積しているコマンドＲＤ＿４Ｂの完了時間に更新され、処理回数Ｎが１に、最小時間差ＴｂｍｉｎがＴｂ（１）に更新される。また、この場合の第１コマンドＦＩＦＯ５００に堆積しているコマンドＲＤ＿４Ｂの実行予定コマンドＩＤは１となる。
【００６２】
次に、パターン３は、解析部３０９が、図８のＳ８０４、Ｓ８０５、Ｓ８０６、Ｓ８０９、Ｓ８１０を実行した場合のタイミングチャートである。このとき、完了時間Ｙは第２コマンドＦＩＦＯ５０１に堆積しているコマンドＷＲ＿６４Ｂの完了時間に更新され、処理回数Ｎは２となる。また、例えば時間差Ｔｂ（１）よりもＴｂ（２）の方が小さいとすると、最小時間差ＴｂｍｉｎはＴｂ（２）に書き換えられ、カウント値Ｎｍｉｎは２に書き換えられる。更に、このときの第２コマンドＦＩＦＯ５０１に堆積しているコマンドＷＲ＿６４Ｂの実行予定コマンドＩＤは２となる。なお、パターン３において、第２メモリ制御部３０４から発行されるコマンドＲＤ＿１２８ＢとコマンドＷＲ＿６５Ｂが重なっているのは、例えばバンクインタリーブなどで、データ以外のコマンドデータがオーバーラップしている状態を示している。
【００６３】
図９において、第１コマンドＦＩＦＯ５００に堆積している次のコマンドがトレーニングリクエスト発行期間Ｔｔ内に完了しない場合、処理はＳ８１１に進む。解析部３０９は最小時間差Ｔｂｍｉｎの値であるＴｂ（２）がＴａよりも小さい場合には、実行予定コマンドＩＤとしてカウント値Ｎｍｉｎ（＝２）が付加されているコマンドまでを実行するように制御する。図９の例では、実行予定コマンドＩＤが１のＲＤ＿４Ｂ（第１コマンドＦＩＦＯ５００）と、実行予定コマンドＩＤが２のＷＲ＿６５Ｂ（第２コマンドＦＩＦＯ５０１）が実行される。
【００６４】
以上のように、第２実施形態によれば、トレーニングリクエスト発行期間内で発行できるコマンドの内、２つのメモリ制御部間のコマンド完了の時間差が最小になるように制御することが可能となる。これにより、トレーニングの同時化における無駄な待ち時間を最小に抑えることができ、メモリ帯域の阻害が低減される。
【００６５】
なお、Ｓ８０１〜Ｓ８０３は第１実施形態のＳ４０１〜Ｓ４０３と類似の処理であり、一方のメモリ制御部により実行中のコマンドが完了するまでの間に、他方のメモリ制御部が実行可能なコマンドを直ちに実行させることができる。但し、第２実施形態において、Ｓ８０１〜Ｓ８０３を省略して、Ｓ８０４〜Ｓ８１３によりトレーニングタイミングの発行後に実行するコマンドを決定するようにしてもよい。
【００６６】
以上説明したように、各実施形態によれば、トレーニングリクエスト発行タイミングにおける２つのメモリコントローラのコマンド発行状況と堆積しているコマンドを解析することで、トレーニングの同時化のための待ち時間を低減することができる。すなわち、２つのメモリコントローラが１つのＤＲＡＭ−ＰＨＹに接続されてトレーニングの同時化が必要なメモリ制御装置において、トレーニング応答待ちによる無駄な待ち時間によるメモリ帯域の阻害を低減することが可能となる。
【００６７】
なお、上記実施形態では、２つのメモリに共通のトレーニング回路を有するメモリ制御部について説明したが、３つ以上の複数のメモリについて共通のトレーニング回路を有するメモリ制御部にも適用できる。すなわち、上記各実施形態によれば、複数のメモリ制御部によってＤＲＡＭ−ＰＨＹを共有することで必要になるトレーニングリクエストの同時化において、無駄なトレーニング応答の待ち時間によるメモリ帯域阻害を減らすことができる。また、上記各実施形態では、解析部３０９が解析結果に基づいて第１メモリ制御部３０１と第２メモリ制御部３０４によるコマンドの実行を制御（指示）したが、これに限られるものではない。例えば、第１メモリ制御部３０１と第２メモリ制御部３０４が、解析部３０９の解析結果を用いて、ＤＲＡＭデバイス１０４によるコマンドの実行を制御するようにしてもよい。すなわち、メモリ制御部が解析部の解析結果を用いてコマンドの実行を制御することと、解析部が解析結果を用いてメモリ制御部によるコマンドの実行を指示すことは、実質的に同じである。
【００６８】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００６９】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【００７０】
３００：メモリ制御装置、３０１：第１メモリ制御部、３０２：第１コマンド発行部、３０３：第１トレーニングリクエスト発行部、３０４：第２メモリ制御部、３０５：第２コマンド発行部、３０６：第２トレーニングリクエスト発行部、３０７：メモリインターフェース、３０８：タイミング信号生成部、３０９：解析部、５００：第１コマンドＦＩＦＯ、５０１：第２コマンドＦＩＦＯ
【図１】
2020170399.tif 000003
【図２】
2020170399.tif 000004
【図３】
2020170399.tif 000005
【図４】
2020170399.tif 000006
【図５】
2020170399.tif 000007
【図６】
2020170399.tif 000008
【図７】
2020170399.tif 000009
【図８】
2020170399.tif 000010
【図９】
2020170399.tif 000011