(57)【要約】      （修正有）【課題】プリアンブル期間を確保するために発生するデータ転送効率の低下を抑制する。【解決手段】メモリとの間で書き込み／読み出しを行うメモリコントローラであって、外部のバスマスタからメモリへの書き込み又はメモリからの読み出しのためのアクセス要求があった場合、コマンド発行部は、コマンドキューから第１のコマンドとして入力した場合、コマンドキューに、第１のコマンドに後続し、第１のコマンドと同じ種類の第２のコマンドが格納されているか否かを判別する判別する判別部と、該判別部で第１のコマンドに後続し、当該第１のコマンドと同じ種類の第２のコマンドがコマンドキューに格納されていると判別された場合、第１のコマンドの発行タイミングを、予め定められた条件に応じて遅延させる制御部とを有する。【選択図】図１
2017167972.tif 000002
【特許請求の範囲】
【請求項１】
メモリと間で書き込み／読み出しを行うメモリコントローラであって、
外部のバスマスタから前記メモリへの書き込み又は前記メモリからの読み出しのためのアクセス要求があった場合、当該アクセス要求から前記メモリに対するコマンドを生成し、コマンドキューに格納するコマンド生成手段と、
該コマンドキューからコマンドを入力し、前記メモリに向けてコマンドを発行するコマンド発行手段とを有し、
前記コマンド発行手段は、
前記コマンドキューから第１のコマンドとして入力した場合、前記コマンドキューに、当該第１のコマンドに後続し、当該第１のコマンドと同じ種類の第２のコマンドが格納されているか否かを判別する判別する判別手段と、
該判別手段で前記第１のコマンドに後続し、当該第１のコマンドと同じ種類の第２のコマンドが前記コマンドキューに格納されていると判別された場合、前記第１のコマンドの発行タイミングを、予め定められた条件に応じて遅延させる制御手段とを有する
ことを特徴とするメモリコントローラ。
【請求項２】
前記メモリは、ＤＤＲ４  ＳＤＲＡＭであることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記第１のコマンド、前記第２のコマンドが共に前記メモリからの読み出しコマンドである場合、前記制御手段は、
前記メモリより出力されてきたデータを外部バスに出力するためのリードデータバッファの空き量と、データストローブのプリアンブルのサイクル数、及び、１つのコマンドによるバースト長に基づき、前記第２のコマンドの発行タイミングを判定する第１の判定手段と、
該第１の判定手段の判定の結果に基づき、前記第２のコマンドの発行により前記メモリからデータの出力が開始されるサイクルの１つ前のサイクルで、前記第１のコマンドによる前記メモリからデータの読み出しが完了するように、前記第１のコマンドの発行タイミングを判定する第２の判定手段と
を有することを特徴とする請求項２に記載のメモリコントローラ。
【請求項４】
前記第１のコマンド、前記第２のコマンドが共に前記メモリへの書き込みコマンドである場合、前記制御手段は、
前記外部バスから前記メモリへ書き込むデータを格納するライトデータバッファの格納量と、データストローブのプリアンブルのサイクル数、及び、１つのコマンドによるバースト長に基づき、前記第２のコマンドの発行タイミングを判定する第１の判定手段と、
該第１の判定手段の判定の結果に基づき、前記第２のコマンドの発行により、前記ライトデータバッファに格納されたデータの前記メモリへの出力が開始されるサイクルの１つ前のサイクルで、前記第１のコマンドによる前記メモリへのデータの読み出しが完了するように、前記第１のコマンドの発行タイミングを判定する第２の判定手段と
を有することを特徴とする請求項２に記載のメモリコントローラ。
【請求項５】
前記第２の判定手段は、前記外部バスとの間の転送レートと、前記メモリとの間の転送レートを更に参照して、前記第１のコマンドの発行タイミングを判定することを特徴とする請求項３又は４に記載のメモリコントローラ。
【請求項６】
メモリと間で書き込み／読み出しを行うメモリコントローラの制御方法であって、
コマンド生成手段が、外部のバスマスタから前記メモリへの書き込み又は前記メモリからの読み出しのためのアクセス要求があった場合、当該アクセス要求から前記メモリに対するコマンドを生成し、コマンドキューに格納するコマンド生成工程と、
コマンド発行手段が、該コマンドキューからコマンドを入力し、前記メモリに向けてコマンドを発行するコマンド発行工程とを有し、
前記コマンド発行工程は、
前記コマンドキューから第１のコマンドとして入力した場合、前記コマンドキューに、当該第１のコマンドに後続し、当該第１のコマンドと同じ種類の第２のコマンドが格納されているか否かを判別する判別する判別工程と、
該判別工程で前記第１のコマンドに後続し、当該第１のコマンドと同じ種類の第２のコマンドが前記コマンドキューに格納されていると判別された場合、前記第１のコマンドの発行タイミングを、予め定められた条件に応じて遅延させる制御工程とを有する
ことを特徴とするメモリコントローラの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＲＡＭを制御するメモリコントローラに関し、特に、ＤＲＡＭへのリードコマンド発行タイミング、及びライトコマンド発行タイミングを制御するメモリコントローラに関する。
【背景技術】
【０００２】
近年、従来のＤＤＲ３ ＳＤＲＡＭよりも高速なＤＤＲ４ ＳＤＲＡＭが提案されている。ＤＤＲ４ ＳＤＲＡＭは、８００ＭＨｚから１．６ＧＨｚの高速なクロックに同期して動作する。特に高速な１．３ＧＨｚから１．６ＧＨｚの速度で動作するＤＤＲ４ ＳＤＲＡＭ では、リードデータやライトデータの同期信号であるＤＱＳ信号をデータ転送に先だって開始するプリアンブル期間を２サイクルにする機能がサポートされている。プリアンブル期間は１サイクル又は２サイクルがモードレジスタの設定によって選択される（非特許文献１参照）。
【０００３】
また、低消費電力動作のＤＤＲ４ ＳＤＲＡＭ である ＬＰＤＤＲ４ ＳＤＲＡＭは、プリアンブル期間が２サイクルに固定されている（非特許文献２参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】ＪＥＤＥＣ ＳＴＡＮＤＡＲＤ ＤＤＲ４ ＳＤＲＡＭ ＪＥＳＤ７９-４Ａ
【非特許文献２】ＪＥＤＥＣ ＳＴＡＮＤＡＲＤ ＬＰＤＤＲ４ ＳＤＲＡＭ ＪＥＳＤ２０９-４
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＤＤＲ ＳＤＲＡＭ では、リードコマンドやライトコマンドを、ＤＲＡＭのバースト長の半分のクロック間隔以上で発行する。リードコマンドやライトコマンドを、ＤＲＡＭのバースト長の半分のクロック間隔で発行すると、データ転送が連続し、データ転送効率が最大となる。
【０００６】
プリアンブル期間が１サイクルの ＤＤＲ３ ＳＤＲＡＭ を、バースト長８で使用する場合、リードコマンドやライトコマンドを、４サイクル間隔以上の任意の間隔で発行することが可能であった。しかし、プリアンブル期間が２サイクルのＤＤＲ４ ＳＤＲＡＭ を、バースト長８で使用すると、リードコマンドやライトコマンドを、４サイクル間隔、又は６サイクル間隔以上で発行する必要がある。
【０００７】
プリアンブル期間が２サイクルのＤＤＲ４ ＤＲＡＭ は、メモリコントローラがリードコマンドやライトコマンドを、５サイクル間隔で発行出来る場合でも、６サイクル間隔で発行する必要があり、データ転送効率が低下する。
【課題を解決するための手段】
【０００８】
この課題を解決するため、例えば本発明のメモリコントローラは以下の構成を備える。すなわち、
メモリと間で書き込み／読み出しを行うメモリコントローラであって、
外部のバスマスタから前記メモリへの書き込み又は前記メモリからの読み出しのためのアクセス要求があった場合、当該アクセス要求から前記メモリに対するコマンドを生成し、コマンドキューに格納するコマンド生成手段と、
該コマンドキューからコマンドを入力し、前記メモリに向けてコマンドを発行するコマンド発行手段とを有し、
前記コマンド発行手段は、
前記コマンドキューから第１のコマンドとして入力した場合、前記コマンドキューに、当該第１のコマンドに後続し、当該第１のコマンドと同じ種類の第２のコマンドが格納されているか否かを判別する判別する判別手段と、
該判別手段で前記第１のコマンドに後続し、当該第１のコマンドと同じ種類の第２のコマンドが前記コマンドキューに格納されていると判別された場合、前記第１のコマンドの発行タイミングを、予め定められた条件に応じて遅延させる制御手段とを有する。
【発明の効果】
【０００９】
本発明によれば、プリアンブル期間が複数サイクルのＤＲＡＭに対して、先行のコマンドの発行タイミングを遅らせて、データ転送を連続で行わせることにより、プリアンブル期間を確保するために発生するデータ転送効率の低下を抑制できる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態におけるメモリコントローラの構成例を示す図。
【図２】第１の実施形態におけるコマンド発行回路の構成例を示す図。
【図３】実施形態におけるリードコマンド受信時の処理の流れを示す図。
【図４】実施形態におけるリードコマンド発行時の処理の流れを示す図。
【図５】リードコマンドが連続する場合のタイミングチャートを示す図。
【図６】ライトコマンドを受信した場合の処理の流れを示す図。
【図７】ライトコマンド発行時の処理の流れを示す図。
【図８】ライトコマンドが連続する場合のタイミングチャートを示す図。
【発明を実施するための形態】
【００１１】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１２】
［第１実施形態］
図１は第１実施形態におけるメモリコントローラ１００の概略構成図である。メモリコントローラ１００は、外部バス（ライトデータバス、リードデータバスを含む）に接続される。そして、メモリコントローラ１００はＤＲＡＭ１１０とも接続され、外部バス上のバスマスタ（例えばＣＰＵ）からの要求に応じて、ＤＲＡＭ１１０にコマンドを発行し、ＤＲＡＭ１１０との間で書き込み／読み出しを行う。たとえば、メモリコントローラ１００は、外部からＤＲＡＭ１１０への書き込み要求があった場合には、ライトコマンドをＤＲＡＭ１１０に発行（送信）し、後続してライトデータの同期信号とライトデータをＤＲＡＭ１１０に送信する。また、メモリコントローラ１００は、外部バスから読み出し要求を受信した場合には、ＤＲＡＭ１１０に対してリードコマンドを発行する。この結果、ＤＲＡＭ１１０からは、リードデータの同期信号とリードデータが出力されてくるので、メモリコントローラ１００はリードデータを受け取り、外部バス上に出力する。
【００１３】
より詳しく説明する。メモリコントローラ１００は、外部バス上のバスマスタから、メモリアクセス要求を受信すると、受信したメモリアクセス要求を、コマンド生成回路１０１に格納する。コマンド生成回路１０１は、受信したメモリアクセス要求をコマンドに変換して、変換したコマンドをコマンドキュー１０２に送信する。コマンドキュー１０２は、コマンド生成回路１０１が生成したコマンドだけでなく、ＤＲＡＭのリフレッシュや、キャリブレーションを実行する為のコマンドも格納する。そして、コマンド発行回路１０３は、コマンドキュー１０２に格納されたコマンドを順に入力し、以下に説明するタイミングに従ってＤＲＡＭ１１０に向けて、そのコマンドを出力（発行）する。
【００１４】
タイマ１０６は、ＤＲＡＭ１１０に発行するコマンドの発行間隔をＤＲＡＭ仕様にあわせるために、コマンド発行回路１０３が発行するコマンドを観測し、コマンド発行からの経過時間を計測し、計測結果をコマンド発行回路１０３に通知する。データレート測定回路１０７は、外部バスのリードデータバスのデータ読み出し速度（転送レート）を観測し、観測結果をリードデータバスのデータレートとしてコマンド発行回路１０３に通知する。また、データレート測定回路１０７は、外部バスのデータ書き込み速度も観測し、観測結果をライトデータバスのデータレートとしてコマンド発行回路１０３に通知する。
【００１５】
ライトデータバッファ１０４は、受信したライトデータを一時的に格納してからＤＲＡＭ１１０に転送（書き込む）するためのバッファであり、格納しているデータ量を、コマンド発行回路１０３に通知する。リードデータバッファ１０５は、ＤＲＡＭ１１０が出力したデータを一時的に格納してからリードデータバスに送信するためのバッファであり、バッファの空き量を、コマンド発行回路１０３に通知する。
【００１６】
同期信号生成回路１０８は、ＤＲＡＭ１１０へのライト転送時にライトデータの同期信号を生成する。入出力切替回路１０９は、ライト転送時に、ライトデータバッファ１０４が転送するライトデータと、同期信号生成回路１０８が生成する同期信号を、ＤＲＡＭ１１０に転送する。また、リード転送時に、ＤＲＡＭ１１０が転送するリードデータと同期信号を、リードデータバッファ１０５に転送する。コマンド発行回路１０３は、コマンドキュー１０２からコマンドを受信し、コマンドの送信タイミングを制御して、ＤＲＡＭ１１０にそのコマンドを発行（送信）する。
【００１７】
図２は、第１実施形態におけるコマンド発行回路１０３のブロック構成図である。コマンド発行回路１０３は、タイミング予測部８０１、及び、コマンド発行部８０２を含む。タイミング予測部８０１は、後続のコマンドがリードの場合、リードデータバッファ１０５から通知される空き量と、データレート測定回路１０７から通知されるリードデータバスのデータレートから、後続コマンドの発行タイミングを予測する。後続のコマンドがライトの場合、ライトデータバッファ１０４から通知されるライトデータバッファ格納量と、データレート測定回路１０７から通知されるライトデータバスのデータレートから、後続コマンドの発行タイミングを予測する。
【００１８】
コマンド発行部８０２は、コマンドキュー１０２に格納された次コマンド、タイマ１０６の計測結果、リードデータバッファ１０５から通知される空き量、タイミング予測部８０１から通知される予測結果からリードコマンド発行タイミングを決定する。また、コマンド発行部８０２は、コマンドキュー１０２に格納された次コマンド、タイマ１０６の計測結果、ライトデータバッファ１０４から通知されるデータ量、タイミング予測部８０１から通知される予測結果からライトコマンドの送信タイミングを決定する。
【００１９】
図３は、第１実施形態のコマンド発行回路１０３が、コマンドキュー１０２からリードコマンドを受信した際の処理の流れを説明するフロー図である。
【００２０】
コマンド発行回路１０３は、リードコマンドを受信すると、タイマの計測結果から、受信したリードコマンドをＤＲＡＭ１１０に発行してもＤＲＡＭのタイミング制約に違反しないか判定する（Ｓ２０１）。リードコマンドを発行してもＤＲＡＭ１１０のタイミング制約に違反しない場合は、コマンド発行回路１０３は、リードデータバッファ１０５にリードコマンド１回分のリードデータを格納する為の空きがあるかを判定する（Ｓ２０２）。リードデータバッファ１０５にリードコマンド１回分の空きがある場合は、コマンド発行回路１０３は、コマンドキュー１０２の先頭に格納されたコマンド情報から、次のコマンドも同じ種類のリードコマンドかどうかを判別する（Ｓ２０３）。次のコマンドがリードコマンドではない場合、または次のコマンドがコマンドキュー１０２に格納されていないと判別された場合、コマンド発行回路１０３は、ＤＲＡＭ１１０に向けて、受信したリードコマンドを発行する（Ｓ２０４）。また、次のコマンドもリードコマンドの場合は、コマンド発行回路１０３は、リードコマンドの発行タイミングの制御を行う（Ｓ２０５）。この発行タイミング制御処理の後、コマンド発行回路１０３は、ＤＲＡＭ１１０に向けて、受信したリードコマンドを発行する（Ｓ２０４）。
【００２１】
次に、上記のＳ２０５の、リードコマンド発行タイミング制御処理の流れを図４のフローチャートに従って説明する。
【００２２】
コマンド発行部８０２は、リードデータバスのデータレートが、ＤＲＡＭ１１０のデータレートの同等以上か判定する（Ｓ３０１）。リードデータバスのデータレートが、ＤＲＡＭ１１０のデータレートの同等以上である場合、コマンド発行部８０２は、コマンド発行タイミングを遅延させない（Ｓ３０２）。
【００２３】
リードデータバスのデータレートが、ＤＲＡＭ１１０のデータレートの同等以上でなかった場合、コマンド発行部８０２は、リードデータバスのデータレートが、ＤＲＡＭ１１０のデータレートの１／２以上かを判定する（Ｓ３０３）。リードデータバスのデータレートが、ＤＲＡＭ１１０のデータレートの１／２以上であったとする。この場合、コマンド発行部８０２は、ＤＱＳ信号（データストローブ信号）による“プリアンブル期間−１”サイクル内に、リードデータバッファ１０５に後続のリードに対するリードデータの１／２以上を格納する空きができるかを予測する（Ｓ３０４）。例えば、プリアンブル期間が“３”、ＤＲＡＭのバースト長が“８”の場合、２サイクルでリードデータバッファ１０５の空きは２増加する。そのため、判定のタイミングで、リードデータバッファに後続のリードコマンドに対するリードデータバッファ１０５の空きが２以上あれば、２サイクル後のリードデータバッファ１０５の空きは４以上になる。従って、“プリアンブル期間−１”サイクル内に、リードデータバッファに後続のリードに対するリードデータの１．２以上を格納する空きができることになる。条件が成立する場合、リードデータバッファ１０５に後続のリードコマンドに対するリードデータの１／２以上を格納するための空きができるまで、受信したコマンド発行を遅延させる（Ｓ３０５）。これにより、遅延させたリードコマンドと後続のリードコマンドに対するリードデータ転送はプリアンブル期間を挟まずに連続にて行うことが可能となる。
【００２４】
一方、条件が成立しない場合、コマンド発行は遅延させない（Ｓ３０２）。 遅延させずにリードコマンドを発行しても、後続のリードコマンドに対してリードデータ転送が開始する前までにプリアンブル期間が完了するため、プリアンブル期間によるデータ転送効率の低下は発生しないためである。
【００２５】
リードデータバスのデータレートが、ＤＲＡＭのデータレートの１／２以上でなかった場合、コマンド発行部８０２は、リードデータバスのデータレートが、ＤＲＡＭのデータレートの１／４以上か判定する（Ｓ３０６）。リードデータバスのデータレートが、ＤＲＡＭのデータレートの１／４以上であったとする。この場合、コマンド発行部８０２は、“プリアンブル期間−１“サイクル内に、リードデータバッファ１０５に後続のリードに対するリードデータの３／４以上を格納する空きができるか予測する（Ｓ３０７）。例えば、プリアンブル期間が３、ＤＲＡＭのバースト長が８の場合、２サイクルでリードデータバッファ１０５の空きは１増加する。そのため、判定のタイミングで、リードデータバッファ１０５に後続のリードコマンドに対するリードデータバッファ１０５の空きが５以上あれば、２サイクル後のリードデータバッファの空きは６以上になる。従って、この場合には、“プリアンブル期間−１“サイクル内に、リードデータバッファに後続のリードに対するリードデータの３／４以上を格納する空きができることになる。条件が成立する場合、コマンド発行部８０２は、リードデータバッファ１０５に後続のリードに対するリードデータの３／４以上を格納するための空きができるまで、受信したコマンド発行を遅延させる（Ｓ３０８）。条件が成立しない場合は、コマンド発行は遅延させない（Ｓ３０２）。
【００２６】
また、リードデータバスのデータレートが、ＤＲＡＭのデータレートの１／４以上でない場合、コマンド発行を遅延させない（Ｓ３０２）。
【００２７】
なお、上記のＳ３０４、Ｓ３０７における予測は、予測時のリードデータバスのデータレートが、予測後から後続のコマンドを発行するまで一定である仮定で行うものであるが、データレートの変動を考慮するなどしてもよい。
【００２８】
次に、従来のメモリコントローラの動作と、本実施形態のメモリコントローラ１００のリードコマンドが連続する場合の動作を、図５を用いて対比説明する。なお、図５は、簡単のため、ＤＲＡＭ１１０のバースト長が８、プリアンブル期間が３サイクル、リードデータバスのデータレートがＤＲＡＭのデータレートの１／２で一定である場合の動作波形を示している。
【００２９】
まず、従来のメモリコントローラの動作を説明する。メモリコントローラは、タイミングＴ１でリードコマンドＲＤ０を発行する（符号４００）。タイミングＴ５にてリードコマンドＲＤ１に対するリードデータバッファの空きが８になる。プリアンブル期間が１であれば、メモリコントローラは、タイミングＴ５でリードコマンドＲＤ１を発行できる（符号４０１）。しかし、プリアンブル期間の３サイクルを確保する為に、メモリコントローラは、リードコマンドＲＤ１の発行は、タイミングＴ８にする（符号４０２）。この結果、リードコマンドＲＤ１のリードデータ転送が完了するのは、タイミングＴ１８になる。
【００３０】
次に、本実施形態の動作を説明する。メモリコントローラ１００は、タイミングＴ１でリードコマンドＲＤ０を発行出来るタイミングになると、次のリードコマンドＲＤ１のためのリードデータバッファ１０５の空きを確認する（符号４０３）。タイミングＴ１のサイクルでは、リードデータバッファ１０５の空きは２以上あるので、この段階では、メモリコントローラ１００は、リードコマンドを発行しない。タイミングＴ２で、リードコマンドＲＤ１に対するリードバッファ１０５の空きが４になり、リードコマンドＲＤ０を発行する（符号４０４）。タイミングＴ６にて、メモリコントローラ１００は、リードコマンドＲＤ１を発行する（符号４０５）。その結果、リードコマンドＲＤ０、ＲＤ１に対する、リードデータ転送は連続し、転送完了はタイミングＴ１６となる。
【００３１】
以上の如く、コマンド発行部１０３は、リードコマンドが連続する場合、後続するコマンドの発行タイミングを、リードデータバッファの充足度（リードデータバッファの空き量）、データストローブのプリアンブルのサイクル数、及び、１つのコマンドによるバースト長、及び、バス、メモリのデータレートに基づき、判定する。そして、コマンド発行部１０３は、先行するコマンドの発行タイミングを遅らせ、２つのコマンドによるリードが連続するようにさせる。この結果、従来例と比較して、２つのコマンドによるリードデータ転送の完了を２サイクル早くすることが可能になる。
【００３２】
次に、第１実施形態のメモリコントローラ１００のコマンド発行回路１０３が、コマンドキュー１０２からライトコマンドを受信した際の処理を、図６のフローチャートに従って説明する。
【００３３】
コマンド発行回路１０３は、コマンドキュー１０２からライトコマンドを受信すると、タイマ１０６の計測結果から、受信したライトコマンドをＤＲＡＭ１１０に発行してもＤＲＡＭのタイミング制約に違反しないか判定する（Ｓ５０１）。
【００３４】
ライトコマンドを発行してもＤＲＡＭ１１０のタイミング制約に違反しない場合、コマンド発行回路１０３は、ライトデータバッファ１０４に、ライトコマンドに対応する書き込み対象のデータ（ライトデータ）があるかを判定する（Ｓ５０２）。ライトデータバッファ１０４にライトコマンドに対応するライトデータがある場合は、コマンド発行回路１０３は、コマンドキュー１０２の先頭に格納された、着目ライトコマンドに後続する次コマンドもライトコマンドかどうかを判定する（Ｓ５０３）。
【００３５】
次コマンドがライトコマンドではない場合、または、次のコマンドがコマンドキュー１０２に格納されていない場合は、コマンド発行回路１０３は、受信した着目ライトコマンドを発行する（Ｓ５０４）。一方、次コマンドもライトコマンドの場合は、コマンド発行回路１０３は、着目ライトコマンドの発行タイミングの制御処理を行う（Ｓ５０５）。そして、コマンド発行回路１０３は、この発行タイミングの制御処理の後、受信した着目ライトコマンドを発行する（Ｓ５０４）。
【００３６】
ここで、Ｓ５０５のライトコマンドの発行タイミング制御の処理の流れを図７のフローチャートに従って説明する。
【００３７】
コマンド発行回路１０３は、ライトデータバスのデータレートが、ＤＲＡＭ１１０のデータレートの同等以上か判定する（Ｓ６０１）。ライトデータバスのデータレートが、ＤＲＡＭ１１０のデータレートの同等以上である場合には、コマンド発行回路１０３は、コマンド発行タイミングを遅延させない（Ｓ６０２）。
【００３８】
また、ライトデータバスのデータレートが、ＤＲＡＭのデータレートの同等以上でない場合、コマンド発行回路１０３は、ライトデータバスのデータレートが、ＤＲＡＭのデータレートの１／２以上か判定する（Ｓ６０３）。１／２以上であれば、コマンド発行回路１０３は“プリアンブル期間−１”サイクル内に、ライトデータバッファ１０４に後続のライトコマンドに対するライトデータの１／２以上が格納されるかを予測する（Ｓ６０４）。例えば、プリアンブルが３、ＤＲＡＭのバースト長が８の場合、２サイクルでライトデータバッファ１０４にはデータが２つ格納される。そのため、判定のタイミングで、後続のライト転送のライトデータが２以上格納されていれば、２サイクル後のライトデータの格納数は４以上になる。従って、この場合、コマンド発行回路１０３は、“プリアンブル期間−１”サイクル内に、ライトデータバッファ１０４に、後続のライトコマンドに対するライトデータの１／２以上が格納されると判定する。
【００３９】
従って、この条件が成立する場合、コマンド発行回路１０３は、ライトデータバッファ１０４に後続のライトコマンドに対するライトデータが１／２以上格納されるまで、コマンド発行タイミングを遅延させる（Ｓ６０５）。これにより、遅延させたライトコマンドと後続のライトコマンドに対するライトデータ転送はプリアンブル期間を挟まずに連続で行われる。
【００４０】
また、上記の条件が成立しない場合は、コマンド発行回路１０３はコマンド発行は遅延させない（Ｓ６０２）。 遅延させずにライトコマンドを発行しても、後続のライトコマンドに対してライトデータ転送を開始する前までにプリアンブル期間が完了するため、プリアンブル期間によるデータ転送効率の低下は発生しないためである。
【００４１】
また、ライトデータバスのデータレートが、ＤＲＡＭのデータレートの1１／２以上でなかった場合、コマンド発行回路１０３は、ライトデータバスのデータレートが、ＤＲＡＭ１１０のデータレートの１／４以上か判定する（Ｓ６０６）。１／４以上であれば、“プリアンブル期間−１”サイクル内に、ライトデータバッファ１０４に、後続のライトコマンドに対するライトデータの３／４以上が格納されるかを予測する（Ｓ６０７）。
【００４２】
例えば、プリアンブル期間が３、ＤＲＡＭのバースト長が８の場合、２サイクルでライトデータバッファ１０４にはライトデータが１つ格納される。そのため、判定のタイミングで、ライトデータバッファ１０４に後続のライトコマンドに対するライトデータが５以上格納されていれば、２サイクル後のライトデータの格納数は６以上になる。従って、この場合、コマンド発行回路１０３は、“プリアンブル期間−１”サイクル内に、ライトデータバッファ１０４に後続のライトコマンドに対するライトデータの３／４以上が格納されると判定する。条件が成立する場合、コマンド発行回路１０３は、後続のライトコマンドに対するデータがライトデータバッファ１０４に３／４転送分格納されるまで、コマンド発行タイミングを遅延させる（Ｓ６０８）。また、この条件が成立しない場合、コマンド発行回路１０３はコマンド発行は遅延させない（Ｓ６０２）。 
また、ライトデータバスのデータレートが、ＤＲＡＭのデータレートの１／４以上でなければ、コマンド発行回路１０３は、コマンド発行タイミングを遅延させない（Ｓ６０２）。
【００４３】
図７におけるＳ６０４、Ｓ６０７における予測は、予測時のライトデータバスのデータレートが予測後から後続のコマンドを発行するまで一定である仮定で行うものであるが、データレートの変動を考慮するなどしてもよい。
【００４４】
次に、図８を参照して、従来のメモリコントローラの動作と、本実施形態のメモリコントローラのライトコマンドが連続する場合の動作を説明する。なお、図８は、ＤＲＡＭ１１０のバースト長が８、プリアンブル期間が３サイクル、ライトデータバスのデータレートがＤＲＡＭ１１０のデータレートの１／４で一定であるものとしている。
【００４５】
まず、従来のメモリコントローラの動作を説明する。タイミングＴ１にて、メモリコントローラは、ライトコマンドＷＲ０を発行する（符号７００）。そして、タイミングＴ５にて、ライトコマンドＷＲ１に対するライトデータの格納数が８になる。プリアンブル期間が１であれば、メモリコントローラはタイミングＴ６にてライトコマンドＷＲ１を発行出来る（符号７０１）。しかし、プリアンブル期間の３サイクルを確保する為に、ライトコマンドＷＲ１の発行は、タイミングＴ８になる（符号７０２）。その結果、ライトデータ転送が完了するのは、タイミングＴ１８になる。
【００４６】
次に、本実施形態におけるメモリコントローラ１００の動作を説明する。タイミングＴ１でライトコマンドＱＲ０を発行出来るタイミングになると、メモリコントローラ１００は、次ライトコマンドＷＲ１のためのライトデータの格納数を確認する（符号７０３）。タイミングＴ１のサイクルでは、ライトコマンドＷＲ１に対するライトデータは５以上あるので、ライトコマンドを発行しない。タイミングＴ５で、メモリコントローラ１００は、ライトコマンドＷＲ１に対するライトデータが６になったことを受けて、ライトコマンドＷＲ０を発行する（符号７０４）。そして、タイミングＴ６にて、メモリコントローラ１００はライトコマンドＷＲ１を発行する（符号７０５）。この結果、２つのライトコマンドによるライトデータ転送は連続し、転送完了は、タイミングＴ１６となる。
【００４７】
このように、コマンド発行部３０１はライトコマンドが連続する場合、後続するコマンドの発行タイミングを、ライトデータバッファの充足度（ライトデータバッファの格納量）、データストローブのプリアンブルのサイクル数、１つのコマンドによるバースト長、及び、バス、メモリのデータレートに基づき、判定する。そして、コマンド発行部１０３は、先行するコマンドの発行タイミングを遅らせ、２つのコマンドによるライトが連続するようにさせる。この結果、従来例と比較して、２つのコマンドによるライトデータ転送の完了が“２”サイクル分早くなる。
【００４８】
本実施形態では、リードコマンドまたはライトコマンドが連続する場合に、先行のコマンド発行を遅らせることで、プリアンブル期間を確保するために、後続のコマンド発行が遅れることを防止するメモリコントローラを説明してきた。
【００４９】
先行のコマンド発行を遅らせるため、先行のコマンドに対応するデータ転送は従来例よりも遅くなる。このため、例えば、先行のコマンドが優先度の高い転送のコマンドの場合は、本実施形態を適応しないことで、優先度の高い転送が遅れることを防止することも可能である。また、転送の優先度は、例えば、転送要求の属性情報で判定することも可能である。
【符号の説明】
【００５０】
１００…メモリコントローラ、１０１…コマンド生成回路、１０２…コマンドキュー、１０３…コマンド発行回路、１０４…ライトデータバッファ、１０５…リードデータバッファ、１０６…タイマ、１０７…データレート測定回路、１０８…同期信号生成回路、１０９…入出力切替回路、１１０…ＤＲＡＭ
【図１】
2017167972.tif 000003
【図２】
2017167972.tif 000004
【図３】
2017167972.tif 000005
【図４】
2017167972.tif 000006
【図５】
2017167972.tif 000007
【図６】
2017167972.tif 000008
【図７】
2017167972.tif 000009
【図８】
2017167972.tif 000010