(57)【要約】      （修正有）【課題】所定のサイズに満たないデータの転送時に生じるペナルティの影響を軽減し、メモリアクセス効率の低下を抑制または除去するメモリコントローラを提供する。【解決手段】メモリコントローラ２０２は、ＤＲＡＭ１０３に所定のサイズのデータを書き込むための第１ライトコマンドと、ＤＲＡＭに所定のサイズに満たないサイズのデータを書き込むための第２ライトコマンドと、を発行可能に構成される。また、ＤＲＡＭに対する要求をバスから受信する受信手段２０４と、先行するコマンドを発行してから第２ライトコマンドを発行するまでの期間内に、要求の受信順に従うと第２ライトコマンドよりも後となるコマンドが発行可能か否かを判定する判定手段２１４と、発行可能と判定されたコマンドを第２ライトコマンドよりも先に発行する発行手段２１８と、を備える。【選択図】図２
2019194811.tif 000002
【特許請求の範囲】
【請求項１】
ＤＲＡＭに所定のサイズのデータを書き込むための第１ライトコマンドと、ＤＲＡＭに前記所定のサイズに満たないサイズのデータを書き込むための第２ライトコマンドと、を発行可能に構成されたメモリコントローラであって、
ＤＲＡＭに対する要求をバスから受信する受信手段と、
先行するコマンドを発行してから第２ライトコマンドを発行するまでの期間内に、要求の受信順に従うと前記第２ライトコマンドよりも後となるコマンドが発行可能か否かを判定する判定手段と、
発行可能と判定されたコマンドを前記第２ライトコマンドよりも先に発行する発行手段と、を備えるメモリコントローラ。
【請求項２】
前記所定のサイズは、ＤＲＡＭのビット幅およびバースト長のうちの少なくともひとつにより決まる請求項１に記載のメモリコントローラ。
【請求項３】
前記期間は、ＤＲＡＭについて設定されているコマンド間の最小間隔よりも長くなるよう設定される請求項１または２に記載のメモリコントローラ。
【請求項４】
前記判定手段は、あるバンクへの先行する第１ライトコマンドを発行してから同じバンクへの第２ライトコマンドを発行するまでの期間内に、要求の受信順に従うと前記第２ライトコマンドよりも後となる、別のバンクへの第１ライトコマンドが発行可能か否かを判定する請求項１から３のいずれか一項に記載のメモリコントローラ。
【請求項５】
第２ライトコマンドは、ＬＰＤＤＲ４のＭａｓｋｅｄ  Ｗｒｉｔｅコマンドである請求項１から４のいずれか一項に記載のメモリコントローラ。
【請求項６】
前記受信手段は、ＤＲＡＭに対するデータの書き込み要求を受信し、
前記メモリコントローラはさらに、
受信した書き込み要求に係るデータをＤＲＡＭに書き込む際に、第２ライトコマンドが発生するか否かを前記所定のサイズに基づき判定する別の判定手段を備え、
前記判定手段は、前記別の判定手段において第２ライトコマンドが発生すると判定された場合に、コマンドが発行可能か否かを判定する請求項１から５のいずれか一項に記載のメモリコントローラ。
【請求項７】
前記別の判定手段において第２ライトコマンドが発生すると判定された場合、受信した書き込み要求に係るデータを前記所定のサイズに満たない部分とその他の部分とに分割する分割手段をさらに備え、
先行するコマンドを発行してから第２ライトコマンドを発行するまでの期間は、その他の部分を書き込むための先行する第１ライトコマンドを発行してから前記所定のサイズに満たない部分を書き込むための第２ライトコマンドを発行するまでの期間である請求項６に記載のメモリコントローラ。
【請求項８】
前記判定手段は、要求の受信順に従うと前記第２ライトコマンドよりも後となるコマンドのペナルティが前記期間の長さ以下であり、かつ、そのコマンドが発行されても前記第２ライトコマンドのペナルティが変化しない場合に、そのコマンドが発行可能であると判定する請求項１から７のいずれか一項に記載のメモリコントローラ。
【請求項９】
前記期間は、前記第２ライトコマンドのペナルティよりも長くなるよう設定される請求項８に記載のメモリコントローラ。
【請求項１０】
要求の受信順に従うと前記第２ライトコマンドよりも後となるコマンドのペナルティは、そのコマンドの対象となるバンク、そのコマンドの対象となるページの状態、リード／ライトの別、のうちの少なくともひとつに基づき決定される請求項８または９に記載のメモリコントローラ。
【請求項１１】
前記判定手段は、要求の受信順に従うと前記第２ライトコマンドよりも後となるコマンドの対象となるバンクと、前記第２ライトコマンドの対象となるバンクと、が同じ場合、そのコマンドが発行されると前記第２ライトコマンドのペナルティが変化すると判定する請求項８から１０のいずれか一項に記載のメモリコントローラ。
【請求項１２】
ＤＲＡＭに所定のサイズのデータを書き込むための第１ライトコマンドと、ＤＲＡＭに前記所定のサイズに満たないサイズのデータを書き込むための第２ライトコマンドと、を発行可能に構成されたメモリコントローラで実施される方法であって、
ＤＲＡＭに対する要求をバスから受信することと、
先行するコマンドを発行してから第２ライトコマンドを発行するまでの期間内に、要求の受信順に従うと前記第２ライトコマンドよりも後となるコマンドが発行可能か否かを判定することと、
発行可能と判定されたコマンドを前記第２ライトコマンドよりも先に発行することと、を含む方法。
【請求項１３】
ＬＰＤＤＲ４に準拠するＤＲＡＭを制御するメモリコントローラで実施される方法であって、あるバンクへのＷｒｉｔｅコマンドが発行されてから同じバンクへのＭａｓｋｅｄ  Ｗｒｉｔｅコマンドを発行するまでの期間内に別のバンクへのＷｒｉｔｅコマンドを発行することを含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラおよびメモリコントローラで実施される方法に関する。
【背景技術】
【０００２】
近年策定されたＤＲＡＭ規格であるＬＰＤＤＲ４ではＭａｓｋｅｄ  Ｗｒｉｔｅ（ＭＷＲ）コマンドが導入された。ＤＲＡＭはＭＷＲコマンドを受信するとデバイス内部でリードモディファイライトを実行する。メモリは一度データを読み出し、読み出したデータをデータマスク信号に基づいて更新し、更新された全データを書き戻す。これにより、従来はバイト毎に制御されていたデータマスク制御がバーストライト単位での制御となり実装が単純化され、小型化と低消費電力化が可能となる。メモリが従来のＤＲＡＭと同じＷｒｉｔｅ（ＷＲ）コマンドを受信すると、メモリは全データが有効なものとして書き込みを実行するため、内部でリードモディファイライトは実行されない。
【０００３】
ＭＷＲコマンドを受信したＤＲＡＭデバイスは内部でリードモディファイライトを実行するため、先行するＷＲ／ＭＷＲコマンド発行後に同じバンクに対してＭＷＲコマンドを発行する場合は規定間隔（ｔＣＣＤＭＷ）空けなければならない。ｔＣＣＤＭＷはＤＲＡＭへのバーストライトのバースト長が１６の場合は３２（ＤＲＡＭクロックサイクル、以下単にサイクルと称す）、バースト長が３２の場合は６４サイクルである。一方、ＷＲ／ＭＷＲコマンドを発行後にＷＲコマンドを発行する場合はｔＣＣＤＭＷとは異なる規定間隔（ｔＣＣＤ）空けなければならない。ｔＣＣＤはＤＲＡＭへのバーストライトのバースト長が１６の場合は８サイクル、バースト長が３２の場合は１６サイクルである。そのため、先行するＷＲ／ＭＷＲコマンド発行後に同じバンクに対してＭＷＲコマンドを発行すると、従来の４倍の間隔を空けなければならない。
【０００４】
特許文献１によると、このようなリードモディファイライトの発生を抑止する一手段として、所定の書き込みサイズに満たない転送にダミーデータを付与することで、書き込みサイズが所定のサイズになるよう制御する手法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１８２５３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の手法では、ダミーデータの付与による意図せぬ上書きや転送データ量の増大などの他の不都合が生じうる。
【０００７】
本発明はこうした課題に鑑みてなされたものであり、その目的は、所定のサイズに満たないデータの転送時に生じるペナルティの影響を軽減し、メモリアクセス効率の低下を抑制または除去できる技術の提供にある。
【課題を解決するための手段】
【０００８】
本発明のある態様はメモリコントローラに関する。このメモリコントローラは、ＤＲＡＭに所定のサイズのデータを書き込むための第１ライトコマンドと、ＤＲＡＭに所定のサイズに満たないサイズのデータを書き込むための第２ライトコマンドと、を発行可能に構成されたメモリコントローラであって、ＤＲＡＭに対する要求をバスから受信する受信手段と、先行するコマンドを発行してから第２ライトコマンドを発行するまでの期間内に、要求の受信順に従うと第２ライトコマンドよりも後となるコマンドが発行可能か否かを判定する判定手段と、発行可能と判定されたコマンドを第２ライトコマンドよりも先に発行する発行手段と、を備える。
【発明の効果】
【０００９】
本発明によれば、所定のサイズに満たないデータの転送時に生じるペナルティの影響を軽減し、メモリアクセス効率の低下を抑制または除去できる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態に係るメモリコントローラを備える印刷装置のハードウエア構成を示す図。
【図２】図１のメモリコントローラの機能および構成を示すブロック図。
【図３】メモリコントローラにおけるＭＷＲコマンドの発生の有無の判定に係る一連の処理の流れを示すフローチャート。
【図４】メモリコントローラにおけるコマンドの発行に係る一連の処理の流れを示すフローチャート。
【図５】図２のメモリコントローラによって出力されるＤＲＡＭコマンドのシーケンスの一例を示すタイミングチャート。
【図６】図６（Ａ）〜（Ｄ）は、図２のメモリコントローラ２０２によって出力されるＤＲＡＭコマンドのシーケンスの別の一例を示す模式的なタイミングチャート。
【図７】変形例に係るメモリコントローラにおけるＭＷＲコマンドの発生の有無の判定に係る一連の処理の流れを示すフローチャート。
【発明を実施するための形態】
【００１１】
画像を一次記憶としてＤＲＡＭに保持し処理を行う画像処理やストリームデータを取り扱う場合、従来の手法では、所定の書き込みサイズでＤＲＡＭに書き込むことは困難である。例えば色要素がＲＧＢといった３要素、各色１６ビットで表される画像は１画素当たり６Ｂｙｔｅのデータで取り扱われる。このような画像を１６画素単位で取り扱いＤＲＡＭに書き込む場合、１回の書き込みは９６Ｂｙｔｅである。３２ビット幅のＬＰＤＤＲ４でＤＲＡＭのバースト長を１６として書き込む場合には、ＤＲＡＭへの一回のアクセス単位は６４Ｂｙｔｅとなる。この場合、１６画素単位の画素データ書き込みでは、ＭＷＲコマンドが必須となる。ここで画像データであるため、特許文献１で開示されるようにダミーデータを付与して６４Ｂｙｔｅ単位で書込みを行うと、書き込み順によっては既に書き込みを行った画素を上書きしてしまうこととなってしまう。一般的に、画像処理においては、あるまとまったサイズのデータを対象とするバースト書き込みが行われる。この場合、画像の端部ではデータ量が端数となることが多く端部においてＭＷＲコマンドが多く発生することとなる。また、圧縮データ等のストリームは不定長であるため、一連のストリームの最終転送が端数となることが想定される。一般に画像処理やストリームデータの処理は、ＤＲＡＭの転送量が比較的大きい処理である。このような転送量の大きいデータ処理においてＭＷＲコマンドが多数発生すると、ＭＷＲコマンドの発生毎にｔＣＣＤＭＷのペナルティが発生することとなり、メモリアクセス効率を低下させる虞がある。実施の形態の目的は、このようなＭＷＲコマンド発生時のペナルティの影響を軽減し、メモリアクセス効率の低下を抑制することである。
【００１２】
以下、各図面に示される同一または同等の構成要素、部材、処理、信号には、同一の符号を付するものとし、適宜重複した説明は省略する。また、各図面において説明上重要ではない部材の一部は省略して表示する。
【００１３】
実施の形態では、複数のＤＲＡＭコマンドで実現されるバースト書き込み転送において、最終のＤＲＡＭコマンドがＭＷＲコマンドとなる際に、当該ＭＷＲコマンドのペナルティ期間内に発行可能なコマンドを、当該ＭＷＲコマンドに先立ち発行する。具体的には、ＤＲＡＭへのバスアクセスのバースト書き込み転送においてアドレスアラインを判定し、最終転送がＭＷＲコマンドによるＤＲＡＭ転送となる場合、最終転送を分離する。当該ＭＷＲコマンドのペナルティ内で発行可能な後続のコマンドが当該ＭＷＲコマンドに先立って発行される。このように、一連のバースト書き込み転送を分割し、ＭＷＲコマンドによる転送のペナルティが隠蔽されるような順に並び替えることで、ＤＲＡＭアクセスの転送効率を高めることができる。
【００１４】
（実施の形態）
図１は、実施の形態に係るメモリコントローラ２０２を備える印刷装置１００のハードウエア構成を示す図である。印刷装置１００は例えば複写機や複合機である。なお、以下では実施の形態に係るメモリコントローラ２０２が印刷装置１００に搭載される場合について説明する。しかしながら、当該メモリコントローラ２０２はデジタルカメラ等の撮像装置やスマートフォン等の携帯端末などの電子機器一般に広く搭載されうることは、本明細書に触れた当業者には明らかである。
【００１５】
印刷装置１００は、ＣＰＵ１０１と、ネットワークＩ／Ｆ１０２と、ＤＲＡＭ１０３と、ＨＤＤ１０４と、エンジンＩ／Ｆ１０５と、ＲＯＭ１０６と、プリンタエンジン１０７と、システムバス１０８と、操作部１０９と、メモリコントローラ２０２と、を備える。
【００１６】
ＣＰＵ１０１は、システムバス１０８を介して印刷装置１００の各部を制御する。ＣＰＵ１０１は、例えば、ＨＤＤ１０４に格納されたプログラムを実行することにより印刷装置１００の機能（ソフトウエア構成）および処理を実現する。ＣＰＵ１０１は、システムバス１０８を介した部材間のデータのやりとりを管理または制御するバスマスタとしての機能を有する。なお、他の実施の形態では、ＣＰＵ１０１とは別の部材がバスマスタの機能を有してもよいし、バスマスタの機能を有する新たな部材を設けてもよい。
【００１７】
ＤＲＡＭ１０３は、印刷装置１００の印刷動作における一時記憶領域およびワークメモリとして利用される同期型メモリ、特に同期型揮発性メモリ、さらに具体的にはＳＤＲＡＭである。メモリコントローラ２０２は、ＤＲＡＭ１０３へのアクセスを制御するインタフェースである。メモリコントローラ２０２の構成や動作については後述する。ＨＤＤ１０４は、大容量の記憶装置であり、ＣＰＵ１０１により実行される各種制御プログラムを格納する。ＨＤＤ１０４は、処理されるデータの一時的な記憶領域や蓄積印刷データの保存領域等としても利用される。また、ＲＯＭ１０６は、印刷装置１００の起動処理プログラム等が格納された記憶装置である。
【００１８】
ネットワークＩ／Ｆ１０２は、外部ネットワークを介してホスト端末（ホストコンピュータ）等の他の装置と通信を行うインターフェースである。また、エンジンＩ／Ｆ１０５は、プリンタエンジン１０７と通信を行うとともに、プリンタエンジン１０７を制御する。プリンタエンジン１０７は、例えば電子写真技術やインクジェット画像形成技術を用いて画像をシート等の記録媒体に印刷する処理を行うとともに、フィニッシング処理（例えばステイプル）を行う。
【００１９】
操作部１０９は、印刷装置１００の状態を表示したり、印刷装置１００に対するユーザからの指示に関する入力を受け付けたりすることができるユーザインタフェースである。操作部１０９は、印刷内容を事前に確認するためのプレビュー画面を有し、プレビュー画面には、例えば、印刷対象の各ページの画像、および部数やページ数などの印刷内容が表示されうる。また、プレビュー画面には、例えば、ユーザからの指示入力が行われるように、タッチパネルなどが設けられてもよい。
【００２０】
図２は、図１のメモリコントローラ２０２の機能および構成を示すブロック図である。メモリコントローラ２０２は、ＤＲＡＭ１０３と電気的に接続される。メモリコントローラ２０２およびＤＲＡＭ１０３はそれぞれ別個の半導体チップに設けられてもよいし、ひとつの半導体チップに設けられてもよい。あるいはまた、ＤＲＡＭ１０３はそれぞれが別個の半導体チップに設けられた複数のメモリデバイスであってもよい。
【００２１】
ＤＲＡＭ１０３は複数のバンクと各種デコーダと入出力センスアンプとデータバスバッファとを含む。各バンクでは、記憶素子であるＤＲＡＭセルがマトリクス状に配置される。ＤＲＡＭ１０３は公知のＤＲＡＭメモリデバイスであってもよい。特に、ＤＲＡＭ１０３はＳＤＲＡＭのメモリデバイスであってもよい。本実施の形態では、ＤＲＡＭ１０３はＬＰＤＤＲ４に準拠するよう構成される。
【００２２】
メモリコントローラ２０２は、ＤＲＡＭ１０３にコマンド（ＤＲＡＭコマンド）とアドレスとを提供することでＤＲＡＭ１０３を制御する。メモリコントローラ２０２はＤＲＡＭ１０３に書き込み用のデータを送信し、ＤＲＡＭ１０３から読み出されたデータを受信する。メモリコントローラ２０２およびＤＲＡＭ１０３は、システムバス１０８から供給される共通のクロック信号に同期して動作する。以下では、説明を簡略化するために、メモリコントローラ２０２のコマンドの発行に係る機能を中心に説明し、データ線（ＤＱ）やデータストローブ線（ＤＱＳ）の制御などのメモリコントローラ２０２の他の機能については説明を省略する。
【００２３】
ＤＲＡＭ１０３にデータを書き込むためのコマンドについて、メモリコントローラ２０２は、ＤＲＡＭ１０３に所定のサイズのデータを書き込むための第１ライトコマンドと、ＤＲＡＭに所定のサイズに満たないサイズのデータを書き込むための第２ライトコマンドと、を発行可能に構成される。
【００２４】
第１ライトコマンドは例えばＬＰＤＤＲ４で定義されるＷＲコマンド（Ｗｒｉｔｅコマンド）である。所定のサイズはＤＲＡＭ１０３へのアクセス単位であり、ＤＲＡＭ１０３のビット幅およびＤＲＡＭバースト長のうちの少なくともひとつにより決まり、特にビット幅×ＤＲＡＭバースト長である。ＤＲＡＭ１０３について設定されているコマンド間の最小間隔（ｔＣＣＤ：ｍｉｎｉｍｕｍ  Ｃｏｌｕｍｎ  ｔｏ  Ｃｏｌｕｍｎ  ｃｏｍｍａｎｄ  Ｄｅｌａｙ）は、ライトまたはリードコマンドから次のライトまたはリードコマンドまで待たなければならないＤＲＡＭクロックサイクル数で示される。例えば、ｔＣＣＤはＤＲＡＭバースト長の半分に設定される。任意のコマンドと次のＷＲコマンドとの最小間隔（以下、ＷＲコマンドのペナルティとも称す）はｔＣＣＤである。
【００２５】
第２ライトコマンドは例えばＬＰＤＤＲ４で定義されるＭＷＲコマンド（Ｍａｓｋｅｄ  Ｗｒｉｔｅコマンド）である。あるバンクへの先行するＷＲコマンドまたはＭＷＲコマンドを発行してから同じバンクへのＭＷＲコマンドを発行するまでに待たなければならない期間の長さの最小値（または、同じバンクに対するＷＲコマンド／ＭＷＲコマンドとＭＷＲコマンドとの最小間隔）を、ＭＷＲコマンドのペナルティｔＣＣＤＭＷと称す。ＭＷＲコマンドのペナルティｔＣＣＤＭＷはｔＣＣＤよりも長くなるよう設定される。例えばＬＰＤＤＲ４に従う場合、ＭＷＲコマンドのペナルティｔＣＣＤＭＷはＤＲＡＭバースト長の２倍、すなわちｔＣＣＤの４倍に設定される。あるいはまた、ＭＷＲコマンドのペナルティｔＣＣＤＭＷはｔＣＣＤの２倍、３倍、５倍、またはより一般的にＮ倍（Ｎは２以上の自然数）に設定されてもよい。
【００２６】
メモリコントローラ２０２は、システムバス１０８から受信したバースト書き込みアクセスの開始アドレスとバースト長とに基づいて、バースト書き込み転送の最終転送のサイズがＤＲＡＭ１０３へのアクセス単位と一致するか否か判定する。メモリコントローラ２０２は、一致しない場合、当該バースト書き込み転送を最終コマンドに該当する転送とそれ以外の先行転送とに分割する。メモリコントローラ２０２は、最終コマンドに該当する転送の際、ＭＷＲコマンドの発行によるオーバヘッド期間（ペナルティ）内に発行可能な後続転送コマンドの有無を判定する。メモリコントローラ２０２は、発行可能な後続転送コマンドが存在する場合、ＭＷＲコマンドよりも先にその後続転送コマンドを発行する。
【００２７】
メモリコントローラ２０２は、受信バッファ２０４と、ＭＷＲ存否判定部２０６と、分割部２０８と、転送退避部２１０と、ＭＷＲ退避部２１２と、ペナルティ判定部２１４と、選択部２１６と、発行部２１８と、を備える。
【００２８】
受信バッファ２０４は、ＤＲＡＭ１０３に対する書き込み要求や読み出し要求などの要求をシステムバス１０８から受信して一時的に保持する。受信バッファ２０４は、システムバス１０８を介してバスマスタから、ＤＲＡＭ１０３に対するデータの書き込み要求を受信する。
【００２９】
分割部２０８は、ＭＷＲ存否判定部２０６による制御の下、受信バッファ２０４に保持される書き込み要求に係るデータを分割して、または分割せずに、転送退避部２１０またはＭＷＲ退避部２１２に渡す。
【００３０】
ＭＷＲ存否判定部２０６は、受信バッファ２０４が受信した書き込み要求に係るデータをＤＲＡＭ１０３に書き込む際に、ＭＷＲコマンドが発生するか否かを、ＤＲＡＭ１０３へのアクセス単位に基づき判定する。ＭＷＲ存否判定部２０６は、受信バッファ２０４に保持される書き込み要求のアドレス情報と、転送サイズ情報と、バースト長情報と、転送方向情報と、を抽出する。合わせてＭＷＲ存否判定部２０６は、ＤＲＡＭ１０３へのアクセス単位の情報を有しており、書き込み要求に係るデータをアクセス単位で書き込んでいって最後に書き込むデータの量がアクセス単位となるかそれ未満となるかを判定する。
【００３１】
ＭＷＲ存否判定部２０６は、最後に書き込むデータの量がアクセス単位となる（すなわち、アクセス単位に満たない量のデータの書き込みが発生しない）場合には、受信バッファ２０４が保持する書き込み要求に係るデータがそのまま転送退避部２１０に出力されるよう分割部２０８を制御する。ＭＷＲ存否判定部２０６は、最後に書き込むデータの量がアクセス単位未満となる場合には、受信バッファ２０４が保持する書き込み要求に係るデータが最後に書き込む部分とその他の部分とに分割されるよう分割部２０８を制御する。分割部２０８は、ＭＷＲ存否判定部２０６の制御の下、最後に書き込む部分をＭＷＲ退避部２１２に、その他の部分を転送退避部２１０に、それぞれ出力する。
【００３２】
より具体的には、ＭＷＲ存否判定部２０６は、抽出した書き込み要求のアドレスをＤＲＡＭ１０３へのアクセス単位のアライメントに補正したアドレスと、抽出した転送サイズと、抽出したバースト長と、から書き込み要求に係るデータのサイズを導出する。ＭＷＲ存否判定部２０６は、導出されたデータのサイズをアクセス単位で除したときに余りが存在する場合、最後に書き込むデータの量がアクセス単位未満となると判定する。ＭＷＲ存否判定部２０６は、導出されたデータのサイズをアクセス単位で除したときに余りが存在しない（アクセス単位の整数倍となる）場合、最後に書き込むデータの量がアクセス単位となると判定する。書き込み要求に係るデータのサイズがアクセス単位の整数倍である場合は、最終ＤＲＡＭ転送のサイズはアクセス単位となり、整数倍でない場合は余りが最終ＤＲＡＭ転送のサイズとなる。
【００３３】
転送退避部２１０は、分割部２０８から渡されたデータを一時的に保持する。転送退避部２１０には、ＷＲコマンドでＤＲＡＭ１０３に書き込まれるデータが保持される。
ＭＷＲ退避部２１２は、分割部２０８から渡されたデータを一時的に保持する。ＭＷＲ退避部２１２には、ＭＲＷコマンドでＤＲＡＭ１０３に書き込まれるデータが保持される。
選択部２１６は、ペナルティ判定部２１４による制御の下、転送退避部２１０に保持されるデータおよびＭＷＲ退避部２１２に保持されるデータのうちの一方を選択し、選択されたデータを発行部２１８に渡す。
【００３４】
ペナルティ判定部２１４は、あるバンクへのＭＷＲコマンドのペナルティ期間内に、要求の受信順に従うとそのＭＲＷコマンドよりも後となる、別のバンクへのＷＲコマンドが発行可能か否かを判定する。ペナルティ判定部２１４は、ＭＷＲ退避部２１２にデータが保持されていない（または、退避されていない）場合、選択部２１６に転送退避部２１０を選択させる。ペナルティ判定部２１４は、ＭＷＲ退避部２１２にデータが保持されている場合、すなわち、ＭＷＲ存否判定部２０６においてＭＷＲコマンドが発生すると判定された場合に、後続のＷＲコマンドが発行可能か否かを判定する。ペナルティ判定部２１４は、発行可能と判定された場合、ＭＷＲ退避部２１２ではなく転送退避部２１０に保持されるデータが選択されるよう選択部２１６を制御する。
【００３５】
発行部２１８は、ＤＲＡＭ１０３のデバイスＡＣタイミングに基づくコマンド発行のタイミング制御を行う。発行部２１８は、ＤＲＡＭ１０３へのアクセスプロトコルにしたがいリードコマンド、ライトコマンド等の各種コマンドを生成し、ＤＲＡＭ１０３に送信（または、発行）する。特に発行部２１８は、ペナルティ判定部２１４において発行可能と判定された後続のＷＲコマンドをＭＷＲコマンドよりも先に発行する。
【００３６】
図３は、メモリコントローラ２０２におけるＭＷＲコマンドの発生の有無の判定に係る一連の処理の流れを示すフローチャートである。メモリコントローラ２０２は、システムバス１０８を介してバスマスタからデータの転送要求を受信し、受信バッファ２０４に格納する（Ｓ３０２）。ＭＷＲ存否判定部２０６は、受信した転送要求が読み出し要求であるか書き込み要求であるかを判定する（Ｓ３０４）。ＭＷＲ存否判定部２０６は、ステップＳ３０４で読み出し要求であると判定された場合、当該読み出し要求全体が転送退避部２１０に格納されるよう分割部２０８を制御する（Ｓ３０６）。ＭＷＲ存否判定部２０６は、ステップＳ３０４で書き込み要求であると判定された場合、当該書き込み要求の最終ＤＲＡＭ転送のサイズを算出する（Ｓ３０８）。
【００３７】
ＭＷＲ存否判定部２０６は、算出した最終ＤＲＡＭ転送のサイズとＤＲＡＭ１０３へのアクセス単位とに基づいて、最終ＤＲＡＭ転送がＭＷＲコマンドによる転送となるか否かを判定する（Ｓ３１０）。ステップＳ３１０において、ＭＷＲ存否判定部２０６は、算出した最終ＤＲＡＭ転送のサイズがＤＲＡＭ１０３へのアクセス単位となるかアクセス単位未満となるかを判定する。ここで、算出した最終ＤＲＡＭ転送のサイズがアクセス単位でない場合は、ＭＷＲ存否判定部２０６は最終ＤＲＡＭ転送がアクセス単位未満の転送であると判定し、したがって最終ＤＲＡＭ転送がＭＷＲコマンドによる転送となると判定する。算出した最終ＤＲＡＭ転送のサイズがアクセス単位である場合、ＭＷＲ存否判定部２０６はさらに受信した書き込み要求のＢｙｔｅＥｎａｂｌｅを参照する。ＢｙｔｅＥｎａｂｌｅに無効Ｂｙｔｅレーンが存在する場合、ＭＷＲ存否判定部２０６は最終ＤＲＡＭ転送がアクセス単位未満の転送であると判定し、したがって最終ＤＲＡＭ転送がＭＷＲコマンドによる転送となると判定する。ＢｙｔｅＥｎａｂｌｅに無効Ｂｙｔｅレーンが存在しない場合、ＭＷＲ存否判定部２０６は最終ＤＲＡＭ転送がアクセス単位での転送となると判定し、したがって最終ＤＲＡＭ転送がＷＲコマンドによる転送となると判定する。
【００３８】
ステップＳ３１０において最終ＤＲＡＭ転送がＷＲコマンドによる転送となると判定された場合、ＭＷＲ存否判定部２０６は受信バッファ２０４に保持される書き込み要求全体が転送退避部２１０に格納されるよう分割部２０８を制御する（Ｓ３０６）。ステップＳ３１０において最終ＤＲＡＭ転送がＭＷＲコマンドによる転送となると判定された場合、ＭＷＲ存否判定部２０６は受信バッファ２０４に保持される書き込み要求に係るデータを、最終ＤＲＡＭ転送で書き込まれる部分と、その部分を除く残りと、に分割するよう分割部２０８を制御する。ＭＷＲ存否判定部２０６は、最終ＤＲＡＭ転送で書き込まれる部分がＭＷＲ退避部２１２に格納されるよう分割部２０８を制御し（Ｓ３１２）、残りの部分が転送退避部２１０に格納されるよう分割部２０８を制御する（Ｓ３１４）。
【００３９】
図４は、メモリコントローラ２０２におけるコマンドの発行に係る一連の処理の流れを示すフローチャートである。上述の通り、転送退避部２１０には読み出し要求や、アクセス単位ごとにＷＲコマンドでＤＲＡＭ１０３に書き込まれるデータが保持される。一方、ＭＷＲ退避部２１２には、ＭＷＲコマンドでＤＲＡＭ１０３に書き込まれるアクセス単位未満の量のデータが保持される。それぞれの退避部２１０、２１２の出力は選択部２１６に接続され、該選択部２１６で選択されたデータが発行部２１８に出力される。選択部２１６はペナルティ判定部２１４における判定結果により制御され、該判定結果によっていずれの退避部２１０、２１２のデータを出力するかを決定する。
【００４０】
ペナルティ判定部２１４は、転送退避部２１０およびＭＷＲ退避部２１２に保持されるデータの転送情報を取得する（Ｓ４０２）。転送情報は、それぞれの退避部２１０、２１２に保持されるデータのバンクアドレスと、ＲＯＷアドレスと、転送方向（読み出しか書き込みか）と、を含む。ペナルティ判定部２１４は、ＭＷＲ退避部２１２を参照し、ＭＷＲ退避部２１２に保持されるデータの有無を判定する（Ｓ４０４）。ＭＷＲ退避部２１２にデータが保持されていない場合（Ｓ４０４のＮＯ）、ペナルティ判定部２１４は選択部２１６に転送退避部２１０を選択させる（Ｓ４０６）。その結果、転送退避部２１０に書き込みのためのデータが保持されていれば、発行部２１８によりＷＲコマンドが発行され、転送退避部２１０に読み出し要求が保持されていれば発行部２１８によりリードコマンドが発行される。ペナルティ判定部２１４はステップＳ４０６で選択した転送退避部２１０のデータの転送情報で状態レジスタを更新する（Ｓ４０８）。状態レジスタは、ＤＲＡＭ１０３において現在活性化されているバンクと、ページの状態と、を保持する。ペナルティ判定部２１４は、ステップＳ４０６に応じて発行部２１８によりＷＲコマンドが発行された場合、該ＷＲコマンドの対象となるバンクアドレスとＲＯＷアドレスとで状態レジスタを更新する。その後、処理はステップＳ４０４に戻る。
【００４１】
ステップＳ４０４においてＭＷＲ退避部２１２にデータが保持されていると判定された場合（Ｓ４０４のＹＥＳ）、ペナルティ判定部２１４は転送退避部２１０を参照し、ＭＷＲ退避部２１２に保持されているデータと同一バンク、同一ページに書き込むデータが転送退避部２１０にあるか否か判定する（Ｓ４１０）。あると判定された場合（Ｓ４１０のＹＥＳ）、ペナルティ判定部２１４はステップＳ４０６およびステップＳ４０８を実行する。これにより、同一バンク、同一ページに書き込むデータがＷＲコマンドによりＤＲＡＭ１０３に書き込まれる。
【００４２】
転送退避部２１０に保持されるデータのうち、ＭＷＲ退避部２１２に保持されているデータと同一バンク、同一ページに書き込むデータの全ての出力が完了すると（Ｓ４１０のＮＯ）、ペナルティ判定部２１４は、所与のペナルティサイクルをカウンタにセットする（Ｓ４１２）。ペナルティサイクルは、ＭＷＲコマンドのペナルティの長さ（４×ｔＣＣＤ）と等しく設定されてもよいし、それよりも大きな値に設定されてもよい。
【００４３】
ペナルティ判定部２１４はペナルティ判定を実行することにより、ペナルティ期間内に発行可能な後続のコマンドがあるか否かを判定する（Ｓ４１４）。ステップＳ４１４において、ペナルティ判定部２１４は転送退避部２１０に保持されるデータを少なくとも以下の三種類に分類する。（１）ＭＷＲ退避部２１２に保持されているデータと同一バンクに書き込むデータ、（２）ＭＷＲ退避部２１２に保持されているデータと異なるバンクに書き込むデータ、（３）読み出し要求。
【００４４】
ペナルティ判定部２１４は、（１）のデータについて、そのデータを書き込むためのＷＲコマンドが発行されると、ＭＷＲ退避部２１２に保持されているデータを書き込むためのＭＷＲコマンドのペナルティが変化すると判定する。したがって、ペナルティ判定部２１４は（１）のデータに係る後続のＷＲコマンドについては、ＭＷＲコマンドのペナルティ期間内に発行可能ではないと判定する。
【００４５】
ペナルティ判定部２１４は、（２）のデータについて、そのデータを書き込むためのＷＲコマンドが発行されても、ＭＷＲ退避部２１２に保持されているデータを書き込むためのＭＷＲコマンドのペナルティは変化しないと判定する。ペナルティ判定部２１４は、（２）のデータを書き込むためのＷＲコマンドのペナルティを、そのＷＲコマンドの対象となるバンクおよびそのＷＲコマンドの対象となるページのうちの少なくともひとつに基づき決定する。例えば、ペナルティ判定部２１４は状態レジスタを参照し、ＷＲコマンドの対象となるページが現在オープンされていない場合は、ページ遷移によるペナルティをＷＲコマンドのペナルティとして決定する。ペナルティ判定部２１４は、ＷＲコマンドの対象となるページが現在オープンされている場合はｔＣＣＤをＷＲコマンドのペナルティとして決定する。
【００４６】
ペナルティ判定部２１４は、決定されたＷＲコマンドのペナルティとカウンタのカウント値とを比較する。ペナルティ判定部２１４は、ＷＲコマンドのペナルティ＜カウント値のとき、当該ＷＲコマンドをＭＷＲコマンドのペナルティ期間内に発行可能であると判定する。ペナルティ判定部２１４は、ＷＲコマンドのペナルティ≧カウント値のとき、当該ＷＲコマンドをＭＷＲコマンドのペナルティ期間内に発行可能でないと判定する。
【００４７】
またペナルティ判定部２１４は、転送退避部２１０に保持されるデータについてのコマンドのペナルティを、リード／ライトの別に基づき決定する。ライトの場合の決定については上述の通りである。ペナルティ判定部２１４は、（３）のデータについて、読み書きの方向の変更によるペナルティを、リードコマンドのペナルティとして決定する。ペナルティ判定部２１４は、決定されたリードコマンドのペナルティとカウンタのカウント値とを比較する。ペナルティ判定部２１４は、リードコマンドのペナルティ＜カウント値のとき、当該リードコマンドをＭＷＲコマンドのペナルティ期間内に発行可能であると判定する。ペナルティ判定部２１４は、リードコマンドのペナルティ≧カウント値のとき、当該リードコマンドをＭＷＲコマンドのペナルティ期間内に発行可能でないと判定する。なお、ここではライトからリードへの遷移が生じる場合について説明したが、リードからライトへの遷移が生じる場合も同様に読み書きの方向の変更によるペナルティをＷＲコマンドのペナルティとして決定してもよい。
【００４８】
ＭＷＲコマンドのペナルティ期間内に発行可能な後続のコマンドがないと判定された場合（Ｓ４１６のＮＯ）、ペナルティ判定部２１４は、カウンタのカウンタ値をデクリメント、すなわち１だけ減算、する（Ｓ４２２）。
【００４９】
ＭＷＲコマンドのペナルティ期間内に発行可能な後続のコマンドがあると判定された場合（Ｓ４１６のＹＥＳ）、ペナルティ判定部２１４は選択部２１６に転送退避部２１０を選択させる（Ｓ４１８）。その結果、ＭＷＲ退避部２１２に保持されているデータと異なるバンクに書き込むデータが転送退避部２１０に保持されていれば、ＭＷＲコマンド発行より先に発行部２１８によりＷＲコマンドが発行される。転送退避部２１０に読み出し要求が保持されていれば、ＭＷＲコマンド発行より先に発行部２１８によりリードコマンドが発行される。ペナルティ判定部２１４はステップＳ４１８で選択した転送退避部２１０のデータの転送情報で状態レジスタを更新する（Ｓ４２０）。その後、処理はステップＳ４２２に進む。
【００５０】
ステップＳ４２２におけるカウント値の減算の後、ペナルティ判定部２１４はカウント値が０に到達したか否かを判定する（Ｓ４２４）。カウント値が０より大きい場合（Ｓ４２４のＮＯ）、処理はステップＳ４１４に戻り、より小さいカウント値でのペナルティ判定が繰り返される。カウント値が０に到達した場合（Ｓ４２４のＹＥＳ）、ペナルティ判定部２１４は選択部２１６にＭＷＲ退避部２１２を選択させる（Ｓ４２６）。その結果、発行部２１８により、ＭＷＲ退避部２１２に保持されているデータを書き込むためのＭＷＲコマンドが発行される。ペナルティ判定部２１４はステップＳ４２６で選択したＭＷＲ退避部２１２のデータの転送情報で状態レジスタを更新する（Ｓ４２８）。その後、処理はステップＳ４０２に戻る。
【００５１】
なお、転送退避部２１０に保持されるデータに対応する複数のコマンドについて、要求の受信順とは異なる順番でコマンドが発行される場合がある（後述する）。
【００５２】
以上の構成によるメモリコントローラ２０２の動作を説明する。
図５は、図２のメモリコントローラ２０２によって出力されるＤＲＡＭコマンドのシーケンスの一例を示すタイミングチャートである。ＤＲＡＭ１０３のあるバンクへのＷＲコマンド５０２が発行されてから同じバンクへのＭＷＲコマンド５０４を発行するまでの期間の長さはｔＣＣＤＭＷであり、この期間内に別のバンクへのＷＲコマンド５０６、５０８、５１０がｔＣＣＤの間隔で発行される。この例ではｔＣＣＤＭＷ＝４×ｔＣＣＤに設定されている。ＷＲコマンド５０６、５０８、５１０は、要求の受信順に従えばＭＷＲコマンド５０４よりも後に発行されるべきコマンドである。
【００５３】
図５の例では、ＭＷＲコマンド５０４のペナルティｔＣＣＤＭＷとＷＲコマンド５０６、５０８、５１０のペナルティｔＣＣＤとが比較され、後者の方が短いと判定される。その結果、ＭＷＲコマンド５０４のペナルティ期間中にＷＲコマンド５０６、５０８、５１０を発行可能と判定され、それらのＷＲコマンド５０６、５０８、５１０がＭＷＲコマンド５０４に先立って発行される。
【００５４】
図６（Ａ）〜（Ｄ）は、図２のメモリコントローラ２０２によって出力されるＤＲＡＭコマンドのシーケンスの別の一例を示す模式的なタイミングチャートである。図６の例ではｔＣＣＤＭＷ＝３×ｔＣＣＤに設定されている。図６（Ａ）では、システムバス１０８を介してバスマスタから受信バッファ２０４に四つの書き込み要求（Ｗｒ１〜Ｗｒ４）が順にｔＣＣＤ間隔で送信され、その要求に応じてライトコマンド（ＷＲコマンドまたはＭＷＲコマンド）が発行される。ここで、Ｗｒ１とＷｒ２とは同一バンク（バンクＡと称す）への書き込み、Ｗｒ３とＷｒ４とはそれぞれバンクＡとは異なるバンクＢへの書き込みであるとする。また、Ｗｒ２は最終ＤＲＡＭ転送がアクセス単位未満の書き込みであり、Ｗｒ１／Ｗｒ３／Ｗｒ４は最終ＤＲＡＭ転送がアクセス単位分の書き込みであるものとする。
【００５５】
書き込み要求Ｗｒ１は、最終ＤＲＡＭ転送がアクセス単位分となるため、ＭＷＲ存否判定部２０６の制御により転送退避部２１０に出力される。ここで、転送退避部２１０にのみ書き込み対象のデータが保持され、ＭＷＲ退避部２１２には書き込み対象のデータは保持されていないので、ペナルティ判定部２１４はＷｒ１のデータが発行部２１８に出力されるよう選択部２１６を制御する。書き込み要求Ｗｒ２の最終ＤＲＡＭ転送はアクセス単位未満の書き込みとなる。したがって、ＭＷＲ存否判定部２０６の制御により先行の転送データ（Ｗｒ２−１）と最終ＤＲＡＭ転送のデータ（Ｗｒ２−２）とに分割され、それぞれ転送退避部２１０とＭＷＲ退避部２１２とに格納される。ペナルティ判定部２１４はＷｒ２−２に対するペナルティカウント（ｔＣＣＤＭＷ）をセットし、Ｗｒ２−１が発行部２１８に出力されると、カウンタの減算を始める。Ｗｒ２−２のペナルティ期間中に、後続の書き込み要求Ｗｒ３、Ｗｒ４が順次受信バッファ２０４に入力される。これらはＷｒ１、Ｗｒ２が対象とするバンクＡとは異なるバンクＢを対象とする。書き込み要求Ｗｒ３、Ｗｒ４はいずれも最終ＤＲＡＭ転送がアクセス単位分の書き込みとなるものであるから、いずれも転送退避部２１０に出力される。ここで、ペナルティ判定部２１４はＷｒ３／Ｗｒ４の書き込み転送のペナルティを計算する。Ｗｒ３／Ｗｒ４は同じバンクＢを対象とする。ここで、Ｗｒ３／Ｗｒ４が対象とするページが既にオープンされている（ＰａｇｅＨｉｔ）と管理されている場合、ペナルティはコマンド間隔ｔＣＣＤとなりＷｒ２−２のペナルティカウントよりも小さい。したがって、Ｗｒ３およびＷｒ４の書き込み対象のデータは、Ｗｒ２−２のデータに先立って発行部２１８へ出力される。
【００５６】
図６（Ｂ）は、Ｗｒ３／Ｗｒ４が対象とするページが既にオープンされていない（ＰａｇｅＭｉｓｓ）と管理されている場合に対応するタイミングチャートである。Ｗｒ３／Ｗｒ４について計算されたページ処理のペナルティがＷｒ２−２のペナルティカウントよりも大きくなる。したがって、Ｗｒ２−２のペナルティカウントが０になるとＷｒ２−２のデータが発行部２１８に出力される。Ｗｒ２−２のデータを書き込むためのＭＷＲコマンドの発行により、ＭＷＲ退避部２１２に保持されるデータが無くなるため、ペナルティ判定部２１４の制御により、転送退避部２１０に保持されているデータが順に発行部２１８に出力されることとなる。
【００５７】
図６（Ｃ）では、システムバス１０８を介してバスマスタから受信バッファ２０４に四つの書き込み要求（Ｗｒ１〜Ｗｒ４）が順にｔＣＣＤ間隔で送信され、その要求に応じてライトコマンド（ＷＲコマンドまたはＭＷＲコマンド）が発行される。ここで、Ｗｒ１とＷｒ２とＷｒ３とは同じバンクＡへの書き込み、Ｗｒ４はバンクＢへの書き込みであるとする。また、Ｗｒ２は最終ＤＲＡＭ転送がアクセス単位未満の書き込みであり、Ｗｒ１／Ｗｒ３／Ｗｒ４は最終ＤＲＡＭ転送がアクセス単位分の書き込みであるものとする。
【００５８】
Ｗｒ１、Ｗｒ２の処理は図６（Ａ）の場合と同様である。Ｗｒ２−２のペナルティ期間中に、後続の書き込み要求Ｗｒ３、Ｗｒ４が順次受信バッファ２０４に入力される。ＭＷＲ存否判定部２０６は、Ｗｒ３の最終ＤＲＡＭ転送がアクセス単位分の書き込みとなると判定し、Ｗｒ３のデータが転送退避部２１０に出力されるよう分割部２０８を制御する。ペナルティ判定部２１４は、書き込み要求Ｗｒ３がＷｒ２−２と同じバンクＡを対象としており、したがってＷｒ２−２のペナルティを変化させると判定する。この場合、ペナルティ判定部２１４は、Ｗｒ３のデータがＷｒ２−２のデータよりも先に発行部２１８に出力されることがないよう制御する。
【００５９】
Ｗｒ４はバンクＡとは異なるバンクＢを対象とする。ＭＷＲ存否判定部２０６は、Ｗｒ４の最終ＤＲＡＭ転送がアクセス単位分の書き込みとなると判定し、Ｗｒ４のデータが転送退避部２１０に出力されるよう分割部２０８を制御する。ここで、ペナルティ判定部２１４はＷｒ４の書き込み転送のペナルティを計算する。Ｗｒ４が対象とするページが既にオープンされていると管理されている場合、ペナルティはコマンド間隔ｔＣＣＤとなりＷｒ２−２のペナルティカウントよりも小さい。したがって、Ｗｒ４の書き込み対象のデータは、Ｗｒ２−２のデータに先立って発行部２１８へ出力される。その後、Ｗｒ２−２のペナルティカウントが０になるとＷｒ２−２のデータが発行部２１８に出力される。Ｗｒ２−２のデータを書き込むためのＭＷＲコマンドの発行により、ＭＷＲ退避部２１２に保持されるデータが無くなるため、ペナルティ判定部２１４の制御により、転送退避部２１０に保持されているＷｒ３のデータが発行部２１８に出力されることとなる。
【００６０】
図６（Ｄ）では、システムバス１０８を介してバスマスタから受信バッファ２０４に三つの書き込み要求（Ｗｒ１〜Ｗｒ３）とひとつの読み出し要求（Ｒｄ１）とが、Ｗｒ１、Ｗｒ２、Ｒｄ１、Ｗｒ４の順にｔＣＣＤ間隔で送信される。ここで、Ｗｒ１とＷｒ２とは同じバンクＡへの書き込み、Ｗｒ３はバンクＢへの書き込みであるとする。また、Ｗｒ２は最終ＤＲＡＭ転送がアクセス単位未満の書き込みであり、Ｗｒ１／Ｗｒ３は最終ＤＲＡＭ転送がアクセス単位分の書き込みであるものとする。読み出し要求（Ｒｄ１）は転送方向の変更のペナルティが大きい。対して書き込み要求Ｗｒ３について算出されたペナルティ値はＷｒ２−２のペナルティカウントよりも小さい。したがって、Ｗｒ２−２のデータを書き込むためのＭＷＲコマンドに先立ってＷｒ３のデータを書き込むためのＷＲコマンドが発行部２１８によって発行される。結果として、書き込み要求Ｗｒ３のデータを書き込むためのＷＲコマンドは、書き込み要求ＷＲ３よりも先に受信された読み出し要求Ｒｄ１に対応するリードコマンドに先立って発行される。
【００６１】
なお、図６（Ａ）〜（Ｄ）で示した例では、簡単のため各要求のバースト長が短い場合を想定しているが、バースト長が長い要求であっても同様に制御可能である。
【００６２】
本実施の形態に係るメモリコントローラ２０２によると、ＤＲＡＭ１０３へのアクセス単位に満たない量のデータの書き込み転送の発生有無が検出され、当該転送の発生によるペナルティ期間内に後続の書き込み転送が発行可能であるか判定され、可能であれば発行される。したがって、アクセス単位に満たない量のデータを書き込む際のペナルティの影響を軽減し、メモリアクセス効率の低下を抑制する、または該効率を高めることができる。
【００６３】
また、本実施の形態によると、画像処理やストリーム処理の端部で発生するＭＷＲコマンドのペナルティについて、簡易な構成でそのペナルティ間にＤＲＡＭコマンドを発行することを可能とすることで、メモリアクセス効率の低下を抑制することができる。
【００６４】
（シミュレーション）
以下に、上記の実施の形態に係るメモリコントローラ２０２の作用効果を示すシミュレーション結果を説明する。シミュレーションの前提は以下の通りである。
・ＬＰＤＤＲ４に準拠、３２００Ｍｂｐｓ。
・ＷＬ（Ｗｒｉｔｅ  Ｌａｔｅｎｃｙ）＝１４サイクル（ｃｙｃｌｅ）
・ＢＬ（Ｂｕｒｓｔ  Ｌｅｎｇｔｈ）＝８サイクル
・ＤＲＡＭ１０３のＤａｔａ  Ｗｉｄｔｈ＝３２ビット（ｂｉｔ）
・ＤＲＡＭ１０３のＰａｇｅ＝２キロバイト（ＫＢｙｔｅ）
・ペナルティ
−ＰａｇｅＭｉｓｓ（ＷＲ−＞*）＝１１０サイクル
−ＭａｓｋｅｄＷｒｉｔｅのペナルティ＝１６サイクル
【００６５】
上記前提の下、４０００×２０００画素の画像データを水平ラインごとに書き込む転送を二つのモジュールが競合するケースをシミュレートした。１画素のデータ量は４．５バイトであった。
【００６６】
（１）水平ラインの分割が無い場合
各ラインの先頭アドレスはページのアラインより開始する。二つのモジュール間でページの依存関係は無い。この場合、二つのモジュールが同時に動作しているとして、１ライン中にページの遷移が９回、Ｍａｓｋｅｄ  Ｗｒｉｔｅが１回発生する。従来の手法によると、転送効率は８１．７４％となった。上記実施の形態に係る手法によると、転送効率は８１．９８％となり、転送効率が０．２４％増加した。これは３１ＭＢ／ｓの向上に相当する。
【００６７】
（２）水平ラインを４分割する場合（１０００画素ずつ書き込み）
各ライン・分割画素の先頭アドレスはページのアラインより開始する。二つのモジュール間でページの依存関係は無い。この場合、二つのモジュールが同時に動作しているとして、１ライン中にページの遷移が１２回、Ｍａｓｋｅｄ  Ｗｒｉｔｅが４回発生する。従来の手法によると、転送効率は６１．９８％となった。上記実施の形態に係る手法によると、転送効率は６３．０９％となり、転送効率が２．１１％増加した。これは２６９ＭＢ／ｓの向上に相当する。
【００６８】
以上、実施の形態に係るメモリコントローラ２０２の構成と動作について説明した。この実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。  
【００６９】
実施の形態では、受信された書き込み要求の最終ＤＲＡＭ転送に係るデータの量とアクセス単位とを比較する場合について説明したが、これに限られず、最終でなくとも同様の制御を行うことが可能である。
【００７０】
実施の形態では、ＭＷＲ存否判定部２０６が最終ＤＲＡＭ転送のサイズを算出し、算出されたサイズとアクセス単位とを比較することでＭＷＲコマンドが発生するか否かを判定する場合について説明したが、これに限られない。例えば、書き込み要求をアクセス単位で分割して判定する処理を繰り返してもよい。図７は、変形例に係るメモリコントローラにおけるＭＷＲコマンドの発生の有無の判定に係る一連の処理の流れを示すフローチャートである。ステップＳ３０４において書き込み要求であると判定されると、当該書き込み要求はＤＲＡＭ１０３へのアクセス単位に分割される（Ｓ７０２）。メモリコントローラは、ステップＳ７０２で分割された転送が最終ＤＲＡＭ転送であり、かつアクセス単位未満の転送であるか否かを判定する（Ｓ７０４）。ステップＳ７０４で最終ＤＲＡＭ転送でないと判定された場合、またはアクセス単位分の転送であると判定された場合（Ｓ７０４のＮＯ）、メモリコントローラは分割された転送を転送退避部２１０に出力する（Ｓ７０８）。一方、最終ＤＲＡＭ転送であり、かつアクセス単位未満の転送であると判定された場合（Ｓ７０４のＹＥＳ）、メモリコントローラは分割された転送をＭＷＲ退避部２１２に出力する（Ｓ７０６）。メモリコントローラは、転送退避部２１０またはＭＷＲ退避部２１２に格納された転送が最終ＤＲＡＭ転送であるか否かを判定し（Ｓ７１０）、最終ＤＲＡＭ転送でなければさらにＤＲＡＭ転送の分割を行い（Ｓ７０２）、分割された転送に対する判定処理が繰り返される。
【００７１】
実施の形態では、メモリコントローラ２０２が判定、分割、選択機能を有する場合について説明したが、これに限られず、例えば従来のメモリコントローラの前段にそれらの機能を有する前段回路を設けてもよい。
【００７２】
実施の形態において、図３のステップＳ３１０で説明した通り、計算上は最終ＤＲＡＭ転送のデータ量がアクセス単位分となる場合でも、ＢｙｔｅＥｎａｂｌｅに無効Ｂｙｔｅレーンが存在する場合には最終ＤＲＡＭ転送のデータ量がアクセス単位未満となるものとして扱う。このように、実施の形態に係る技術的思想は、ＤＲＡＭへデータを書き込む際、書き込み対象のデータ内に無効バイトが含まれる場合と無効バイトが含まれない場合とで異なるライトコマンドが発行される場合にも適用可能である。
【符号の説明】
【００７３】
２０２  メモリコントローラ、  ２０６  ＭＷＲ存否判定部、  ２０８  分割部、  ２１４  ペナルティ判定部、  ２１８  発行部。
【図１】
2019194811.tif 000003
【図２】
2019194811.tif 000004
【図３】
2019194811.tif 000005
【図４】
2019194811.tif 000006
【図５】
2019194811.tif 000007
【図６】
2019194811.tif 000008
【図７】
2019194811.tif 000009