(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-20
(45)【発行日】2022-12-28
(54)【発明の名称】メモリコントローラおよびメモリコントローラで実施される方法
(51)【国際特許分類】
G06F 12/00 20060101AFI20221221BHJP
【FI】
G06F12/00 564A
(21)【出願番号】P 2018088862
(22)【出願日】2018-05-02
【審査請求日】2021-04-27
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】村山 公平
【審査官】北村 学
(56)【参考文献】
【文献】特開2009-064360(JP,A)
【文献】特開平11-224221(JP,A)
【文献】特開2002-342159(JP,A)
【文献】特開2014-154119(JP,A)
【文献】特開2017-097618(JP,A)
【文献】国際公開第2015/073613(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/00 - 12/128
G11C 11/401- 11/4099
(57)【特許請求の範囲】
【請求項1】
DRAMのビット幅およびバースト長のうちの少なくともひとつにより決まるDRAMへのアクセス単位である所定のサイズのデータをDRAMに書き込むための第1ライトコマンドと、DRAMに前記所定のサイズに満たないサイズのデータを書き込むための第2ライトコマンドと、を発行可能に構成されたメモリコントローラであって、
DRAMに対する書き込み要求をバスから受信する受信手段と、
あるバンクへの先行する
第1ライトコマンドを発行してから
同じバンクへの第2ライトコマンドを発行するまでの期間内に、前記書き込み要求の受信順に従うと前記第2ライトコマンドよりも後となる
、別のバンクへの第1ライトコマンドである後コマンドが発行可能か否かを、該後コマンドのペナルティの長さと前記第2ライトコマンドのペナルティの長さとに基づいて判定する判定手段と、
発行可能と判定された前記後コマンドを前記第2ライトコマンドよりも先に発行する発行手段と、を備えるメモリコントローラ。
【請求項2】
前記期間は、DRAMについて設定されているコマンド間の最小間隔よりも長くなるよう設定される請求項1に記載のメモリコントローラ。
【請求項3】
第2ライトコマンドは、LPDDR4のMasked Writeコマンドである請求項1
または2に記載のメモリコントローラ。
【請求項4】
前記メモリコントローラはさらに、
受信した書き込み要求に係るデータをDRAMに書き込む際に、該受信した書き込み要求によって前記所定のサイズ未満の書き込みが発生する場合は、第2ライトコマンドが発生すると判定する別の判定手段を備え、
前記判定手段は、前記別の判定手段において第2ライトコマンドが発生すると判定された場合に、コマンドが発行可能か否かを判定する請求項1から
3のいずれか一項に記載のメモリコントローラ。
【請求項5】
前記別の判定手段において第2ライトコマンドが発生すると判定された場合、受信した書き込み要求に係るデータを前記所定のサイズに満たない部分とその他の部分とに分割する分割手段をさらに備え、
前記期間は、その他の部分を書き込むための先行する第1ライトコマンドを発行してから前記所定のサイズに満たない部分を書き込むための第2ライトコマンドを発行するまでの期間である請求項
4に記載のメモリコントローラ。
【請求項6】
前記判定手段は、前記後コマンドのペナルティの長さが前記期間の長さ以下であり、かつ、前記後コマンドが発行されても前記第2ライトコマンドのペナルティが変化しない場合に、前記後コマンドが発行可能であると判定する請求項1から
5のいずれか一項に記載のメモリコントローラ。
【請求項7】
前記期間は、前記第2ライトコマンドのペナルティの長さよりも長くなるよう設定される請求項
6に記載のメモリコントローラ。
【請求項8】
前記後コマンドのペナルティは、前記後コマンドの対象となるバンク、前記後コマンドの対象となるページの状態、リード/ライトの別、のうちの少なくともひとつに基づき決定される請求項
6または
7に記載のメモリコントローラ。
【請求項9】
前記判定手段は、前記後コマンドの対象となるバンクと、前記第2ライトコマンドの対象となるバンクと、が同じ場合、前記後コマンドが発行されると前記第2ライトコマンドのペナルティが変化すると判定する請求項
6から
8のいずれか一項に記載のメモリコントローラ。
【請求項10】
DRAMのビット幅およびバースト長のうちの少なくともひとつにより決まるDRAMへのアクセス単位である所定のサイズのデータをDRAMに書き込むための第1ライトコマンドと、DRAMに前記所定のサイズに満たないサイズのデータを書き込むための第2ライトコマンドと、を発行可能に構成されたメモリコントローラで実施される方法であって、
DRAMに対する書き込み要求をバスから受信することと、
あるバンクへの先行する
第1ライトコマンドを発行してから
同じバンクへの第2ライトコマンドを発行するまでの期間内に、前記書き込み要求の受信順に従うと前記第2ライトコマンドよりも後となる
、別のバンクへの第1ライトコマンドである後コマンドが発行可能か否かを、該後コマンドのペナルティの長さと前記第2ライトコマンドのペナルティの長さとに基づいて判定することと、
発行可能と判定された前記後コマンドを前記第2ライトコマンドよりも先に発行することと、を含む方法。
【請求項11】
LPDDR4に準拠するDRAMを制御するメモリコントローラで実施される方法であって、あるバンクへのWriteコマンドが発行されてから同じバンクへのMasked Writeコマンドを発行するまでの期間内に別のバンクへのWriteコマンドを発行することを含む方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリコントローラおよびメモリコントローラで実施される方法に関する。
【背景技術】
【0002】
近年策定されたDRAM規格であるLPDDR4ではMasked Write(MWR)コマンドが導入された。DRAMはMWRコマンドを受信するとデバイス内部でリードモディファイライトを実行する。メモリは一度データを読み出し、読み出したデータをデータマスク信号に基づいて更新し、更新された全データを書き戻す。これにより、従来はバイト毎に制御されていたデータマスク制御がバーストライト単位での制御となり実装が単純化され、小型化と低消費電力化が可能となる。メモリが従来のDRAMと同じWrite(WR)コマンドを受信すると、メモリは全データが有効なものとして書き込みを実行するため、内部でリードモディファイライトは実行されない。
【0003】
MWRコマンドを受信したDRAMデバイスは内部でリードモディファイライトを実行するため、先行するWR/MWRコマンド発行後に同じバンクに対してMWRコマンドを発行する場合は規定間隔(tCCDMW)空けなければならない。tCCDMWはDRAMへのバーストライトのバースト長が16の場合は32(DRAMクロックサイクル、以下単にサイクルと称す)、バースト長が32の場合は64サイクルである。一方、WR/MWRコマンドを発行後にWRコマンドを発行する場合はtCCDMWとは異なる規定間隔(tCCD)空けなければならない。tCCDはDRAMへのバーストライトのバースト長が16の場合は8サイクル、バースト長が32の場合は16サイクルである。そのため、先行するWR/MWRコマンド発行後に同じバンクに対してMWRコマンドを発行すると、従来の4倍の間隔を空けなければならない。
【0004】
特許文献1によると、このようなリードモディファイライトの発生を抑止する一手段として、所定の書き込みサイズに満たない転送にダミーデータを付与することで、書き込みサイズが所定のサイズになるよう制御する手法が開示されている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1に記載の手法では、ダミーデータの付与による意図せぬ上書きや転送データ量の増大などの他の不都合が生じうる。
【0007】
本発明はこうした課題に鑑みてなされたものであり、その目的は、所定のサイズに満たないデータの転送時に生じるペナルティの影響を軽減し、メモリアクセス効率の低下を抑制または除去できる技術の提供にある。
【課題を解決するための手段】
【0008】
本発明のある態様はメモリコントローラに関する。このメモリコントローラは、DRAMのビット幅およびバースト長のうちの少なくともひとつにより決まるDRAMへのアクセス単位である所定のサイズのデータをDRAMに書き込むための第1ライトコマンドと、DRAMに前記所定のサイズに満たないサイズのデータを書き込むための第2ライトコマンドと、を発行可能に構成されたメモリコントローラであって、
DRAMに対する書き込み要求をバスから受信する受信手段と、
あるバンクへの先行する第1ライトコマンドを発行してから同じバンクへの第2ライトコマンドを発行するまでの期間内に、前記書き込み要求の受信順に従うと前記第2ライトコマンドよりも後となる、別のバンクへの第1ライトコマンドである後コマンドが発行可能か否かを、該後コマンドのペナルティの長さと前記第2ライトコマンドのペナルティの長さとに基づいて判定する判定手段と、
発行可能と判定された前記後コマンドを前記第2ライトコマンドよりも先に発行する発行手段と、を備える。
【発明の効果】
【0009】
本発明によれば、所定のサイズに満たないデータの転送時に生じるペナルティの影響を軽減し、メモリアクセス効率の低下を抑制または除去できる。
【図面の簡単な説明】
【0010】
【
図1】実施の形態に係るメモリコントローラを備える印刷装置のハードウエア構成を示す図。
【
図2】
図1のメモリコントローラの機能および構成を示すブロック図。
【
図3】メモリコントローラにおけるMWRコマンドの発生の有無の判定に係る一連の処理の流れを示すフローチャート。
【
図4】メモリコントローラにおけるコマンドの発行に係る一連の処理の流れを示すフローチャート。
【
図5】
図2のメモリコントローラによって出力されるDRAMコマンドのシーケンスの一例を示すタイミングチャート。
【
図6】
図6(A)~(D)は、
図2のメモリコントローラ202によって出力されるDRAMコマンドのシーケンスの別の一例を示す模式的なタイミングチャート。
【
図7】変形例に係るメモリコントローラにおけるMWRコマンドの発生の有無の判定に係る一連の処理の流れを示すフローチャート。
【発明を実施するための形態】
【0011】
画像を一次記憶としてDRAMに保持し処理を行う画像処理やストリームデータを取り扱う場合、従来の手法では、所定の書き込みサイズでDRAMに書き込むことは困難である。例えば色要素がRGBといった3要素、各色16ビットで表される画像は1画素当たり6Byteのデータで取り扱われる。このような画像を16画素単位で取り扱いDRAMに書き込む場合、1回の書き込みは96Byteである。32ビット幅のLPDDR4でDRAMのバースト長を16として書き込む場合には、DRAMへの一回のアクセス単位は64Byteとなる。この場合、16画素単位の画素データ書き込みでは、MWRコマンドが必須となる。ここで画像データであるため、特許文献1で開示されるようにダミーデータを付与して64Byte単位で書込みを行うと、書き込み順によっては既に書き込みを行った画素を上書きしてしまうこととなってしまう。一般的に、画像処理においては、あるまとまったサイズのデータを対象とするバースト書き込みが行われる。この場合、画像の端部ではデータ量が端数となることが多く端部においてMWRコマンドが多く発生することとなる。また、圧縮データ等のストリームは不定長であるため、一連のストリームの最終転送が端数となることが想定される。一般に画像処理やストリームデータの処理は、DRAMの転送量が比較的大きい処理である。このような転送量の大きいデータ処理においてMWRコマンドが多数発生すると、MWRコマンドの発生毎にtCCDMWのペナルティが発生することとなり、メモリアクセス効率を低下させる虞がある。実施の形態の目的は、このようなMWRコマンド発生時のペナルティの影響を軽減し、メモリアクセス効率の低下を抑制することである。
【0012】
以下、各図面に示される同一または同等の構成要素、部材、処理、信号には、同一の符号を付するものとし、適宜重複した説明は省略する。また、各図面において説明上重要ではない部材の一部は省略して表示する。
【0013】
実施の形態では、複数のDRAMコマンドで実現されるバースト書き込み転送において、最終のDRAMコマンドがMWRコマンドとなる際に、当該MWRコマンドのペナルティ期間内に発行可能なコマンドを、当該MWRコマンドに先立ち発行する。具体的には、DRAMへのバスアクセスのバースト書き込み転送においてアドレスアラインを判定し、最終転送がMWRコマンドによるDRAM転送となる場合、最終転送を分離する。当該MWRコマンドのペナルティ内で発行可能な後続のコマンドが当該MWRコマンドに先立って発行される。このように、一連のバースト書き込み転送を分割し、MWRコマンドによる転送のペナルティが隠蔽されるような順に並び替えることで、DRAMアクセスの転送効率を高めることができる。
【0014】
(実施の形態)
図1は、実施の形態に係るメモリコントローラ202を備える印刷装置100のハードウエア構成を示す図である。印刷装置100は例えば複写機や複合機である。なお、以下では実施の形態に係るメモリコントローラ202が印刷装置100に搭載される場合について説明する。しかしながら、当該メモリコントローラ202はデジタルカメラ等の撮像装置やスマートフォン等の携帯端末などの電子機器一般に広く搭載されうることは、本明細書に触れた当業者には明らかである。
【0015】
印刷装置100は、CPU101と、ネットワークI/F102と、DRAM103と、HDD104と、エンジンI/F105と、ROM106と、プリンタエンジン107と、システムバス108と、操作部109と、メモリコントローラ202と、を備える。
【0016】
CPU101は、システムバス108を介して印刷装置100の各部を制御する。CPU101は、例えば、HDD104に格納されたプログラムを実行することにより印刷装置100の機能(ソフトウエア構成)および処理を実現する。CPU101は、システムバス108を介した部材間のデータのやりとりを管理または制御するバスマスタとしての機能を有する。なお、他の実施の形態では、CPU101とは別の部材がバスマスタの機能を有してもよいし、バスマスタの機能を有する新たな部材を設けてもよい。
【0017】
DRAM103は、印刷装置100の印刷動作における一時記憶領域およびワークメモリとして利用される同期型メモリ、特に同期型揮発性メモリ、さらに具体的にはSDRAMである。メモリコントローラ202は、DRAM103へのアクセスを制御するインタフェースである。メモリコントローラ202の構成や動作については後述する。HDD104は、大容量の記憶装置であり、CPU101により実行される各種制御プログラムを格納する。HDD104は、処理されるデータの一時的な記憶領域や蓄積印刷データの保存領域等としても利用される。また、ROM106は、印刷装置100の起動処理プログラム等が格納された記憶装置である。
【0018】
ネットワークI/F102は、外部ネットワークを介してホスト端末(ホストコンピュータ)等の他の装置と通信を行うインターフェースである。また、エンジンI/F105は、プリンタエンジン107と通信を行うとともに、プリンタエンジン107を制御する。プリンタエンジン107は、例えば電子写真技術やインクジェット画像形成技術を用いて画像をシート等の記録媒体に印刷する処理を行うとともに、フィニッシング処理(例えばステイプル)を行う。
【0019】
操作部109は、印刷装置100の状態を表示したり、印刷装置100に対するユーザからの指示に関する入力を受け付けたりすることができるユーザインタフェースである。操作部109は、印刷内容を事前に確認するためのプレビュー画面を有し、プレビュー画面には、例えば、印刷対象の各ページの画像、および部数やページ数などの印刷内容が表示されうる。また、プレビュー画面には、例えば、ユーザからの指示入力が行われるように、タッチパネルなどが設けられてもよい。
【0020】
図2は、
図1のメモリコントローラ202の機能および構成を示すブロック図である。メモリコントローラ202は、DRAM103と電気的に接続される。メモリコントローラ202およびDRAM103はそれぞれ別個の半導体チップに設けられてもよいし、ひとつの半導体チップに設けられてもよい。あるいはまた、DRAM103はそれぞれが別個の半導体チップに設けられた複数のメモリデバイスであってもよい。
【0021】
DRAM103は複数のバンクと各種デコーダと入出力センスアンプとデータバスバッファとを含む。各バンクでは、記憶素子であるDRAMセルがマトリクス状に配置される。DRAM103は公知のDRAMメモリデバイスであってもよい。特に、DRAM103はSDRAMのメモリデバイスであってもよい。本実施の形態では、DRAM103はLPDDR4に準拠するよう構成される。
【0022】
メモリコントローラ202は、DRAM103にコマンド(DRAMコマンド)とアドレスとを提供することでDRAM103を制御する。メモリコントローラ202はDRAM103に書き込み用のデータを送信し、DRAM103から読み出されたデータを受信する。メモリコントローラ202およびDRAM103は、システムバス108から供給される共通のクロック信号に同期して動作する。以下では、説明を簡略化するために、メモリコントローラ202のコマンドの発行に係る機能を中心に説明し、データ線(DQ)やデータストローブ線(DQS)の制御などのメモリコントローラ202の他の機能については説明を省略する。
【0023】
DRAM103にデータを書き込むためのコマンドについて、メモリコントローラ202は、DRAM103に所定のサイズのデータを書き込むための第1ライトコマンドと、DRAMに所定のサイズに満たないサイズのデータを書き込むための第2ライトコマンドと、を発行可能に構成される。
【0024】
第1ライトコマンドは例えばLPDDR4で定義されるWRコマンド(Writeコマンド)である。所定のサイズはDRAM103へのアクセス単位であり、DRAM103のビット幅およびDRAMバースト長のうちの少なくともひとつにより決まり、特にビット幅×DRAMバースト長である。DRAM103について設定されているコマンド間の最小間隔(tCCD:minimum Column to Column command Delay)は、ライトまたはリードコマンドから次のライトまたはリードコマンドまで待たなければならないDRAMクロックサイクル数で示される。例えば、tCCDはDRAMバースト長の半分に設定される。任意のコマンドと次のWRコマンドとの最小間隔(以下、WRコマンドのペナルティとも称す)はtCCDである。
【0025】
第2ライトコマンドは例えばLPDDR4で定義されるMWRコマンド(Masked Writeコマンド)である。あるバンクへの先行するWRコマンドまたはMWRコマンドを発行してから同じバンクへのMWRコマンドを発行するまでに待たなければならない期間の長さの最小値(または、同じバンクに対するWRコマンド/MWRコマンドとMWRコマンドとの最小間隔)を、MWRコマンドのペナルティtCCDMWと称す。MWRコマンドのペナルティtCCDMWはtCCDよりも長くなるよう設定される。例えばLPDDR4に従う場合、MWRコマンドのペナルティtCCDMWはDRAMバースト長の2倍、すなわちtCCDの4倍に設定される。あるいはまた、MWRコマンドのペナルティtCCDMWはtCCDの2倍、3倍、5倍、またはより一般的にN倍(Nは2以上の自然数)に設定されてもよい。
【0026】
メモリコントローラ202は、システムバス108から受信したバースト書き込みアクセスの開始アドレスとバースト長とに基づいて、バースト書き込み転送の最終転送のサイズがDRAM103へのアクセス単位と一致するか否か判定する。メモリコントローラ202は、一致しない場合、当該バースト書き込み転送を最終コマンドに該当する転送とそれ以外の先行転送とに分割する。メモリコントローラ202は、最終コマンドに該当する転送の際、MWRコマンドの発行によるオーバヘッド期間(ペナルティ)内に発行可能な後続転送コマンドの有無を判定する。メモリコントローラ202は、発行可能な後続転送コマンドが存在する場合、MWRコマンドよりも先にその後続転送コマンドを発行する。
【0027】
メモリコントローラ202は、受信バッファ204と、MWR存否判定部206と、分割部208と、転送退避部210と、MWR退避部212と、ペナルティ判定部214と、選択部216と、発行部218と、を備える。
【0028】
受信バッファ204は、DRAM103に対する書き込み要求や読み出し要求などの要求をシステムバス108から受信して一時的に保持する。受信バッファ204は、システムバス108を介してバスマスタから、DRAM103に対するデータの書き込み要求を受信する。
【0029】
分割部208は、MWR存否判定部206による制御の下、受信バッファ204に保持される書き込み要求に係るデータを分割して、または分割せずに、転送退避部210またはMWR退避部212に渡す。
【0030】
MWR存否判定部206は、受信バッファ204が受信した書き込み要求に係るデータをDRAM103に書き込む際に、MWRコマンドが発生するか否かを、DRAM103へのアクセス単位に基づき判定する。MWR存否判定部206は、受信バッファ204に保持される書き込み要求のアドレス情報と、転送サイズ情報と、バースト長情報と、転送方向情報と、を抽出する。合わせてMWR存否判定部206は、DRAM103へのアクセス単位の情報を有しており、書き込み要求に係るデータをアクセス単位で書き込んでいって最後に書き込むデータの量がアクセス単位となるかそれ未満となるかを判定する。
【0031】
MWR存否判定部206は、最後に書き込むデータの量がアクセス単位となる(すなわち、アクセス単位に満たない量のデータの書き込みが発生しない)場合には、受信バッファ204が保持する書き込み要求に係るデータがそのまま転送退避部210に出力されるよう分割部208を制御する。MWR存否判定部206は、最後に書き込むデータの量がアクセス単位未満となる場合には、受信バッファ204が保持する書き込み要求に係るデータが最後に書き込む部分とその他の部分とに分割されるよう分割部208を制御する。分割部208は、MWR存否判定部206の制御の下、最後に書き込む部分をMWR退避部212に、その他の部分を転送退避部210に、それぞれ出力する。
【0032】
より具体的には、MWR存否判定部206は、抽出した書き込み要求のアドレスをDRAM103へのアクセス単位のアライメントに補正したアドレスと、抽出した転送サイズと、抽出したバースト長と、から書き込み要求に係るデータのサイズを導出する。MWR存否判定部206は、導出されたデータのサイズをアクセス単位で除したときに余りが存在する場合、最後に書き込むデータの量がアクセス単位未満となると判定する。MWR存否判定部206は、導出されたデータのサイズをアクセス単位で除したときに余りが存在しない(アクセス単位の整数倍となる)場合、最後に書き込むデータの量がアクセス単位となると判定する。書き込み要求に係るデータのサイズがアクセス単位の整数倍である場合は、最終DRAM転送のサイズはアクセス単位となり、整数倍でない場合は余りが最終DRAM転送のサイズとなる。
【0033】
転送退避部210は、分割部208から渡されたデータを一時的に保持する。転送退避部210には、WRコマンドでDRAM103に書き込まれるデータが保持される。
MWR退避部212は、分割部208から渡されたデータを一時的に保持する。MWR退避部212には、MRWコマンドでDRAM103に書き込まれるデータが保持される。
選択部216は、ペナルティ判定部214による制御の下、転送退避部210に保持されるデータおよびMWR退避部212に保持されるデータのうちの一方を選択し、選択されたデータを発行部218に渡す。
【0034】
ペナルティ判定部214は、あるバンクへのMWRコマンドのペナルティ期間内に、要求の受信順に従うとそのMRWコマンドよりも後となる、別のバンクへのWRコマンドが発行可能か否かを判定する。ペナルティ判定部214は、MWR退避部212にデータが保持されていない(または、退避されていない)場合、選択部216に転送退避部210を選択させる。ペナルティ判定部214は、MWR退避部212にデータが保持されている場合、すなわち、MWR存否判定部206においてMWRコマンドが発生すると判定された場合に、後続のWRコマンドが発行可能か否かを判定する。ペナルティ判定部214は、発行可能と判定された場合、MWR退避部212ではなく転送退避部210に保持されるデータが選択されるよう選択部216を制御する。
【0035】
発行部218は、DRAM103のデバイスACタイミングに基づくコマンド発行のタイミング制御を行う。発行部218は、DRAM103へのアクセスプロトコルにしたがいリードコマンド、ライトコマンド等の各種コマンドを生成し、DRAM103に送信(または、発行)する。特に発行部218は、ペナルティ判定部214において発行可能と判定された後続のWRコマンドをMWRコマンドよりも先に発行する。
【0036】
図3は、メモリコントローラ202におけるMWRコマンドの発生の有無の判定に係る一連の処理の流れを示すフローチャートである。メモリコントローラ202は、システムバス108を介してバスマスタからデータの転送要求を受信し、受信バッファ204に格納する(S302)。MWR存否判定部206は、受信した転送要求が読み出し要求であるか書き込み要求であるかを判定する(S304)。MWR存否判定部206は、ステップS304で読み出し要求であると判定された場合、当該読み出し要求全体が転送退避部210に格納されるよう分割部208を制御する(S306)。MWR存否判定部206は、ステップS304で書き込み要求であると判定された場合、当該書き込み要求の最終DRAM転送のサイズを算出する(S308)。
【0037】
MWR存否判定部206は、算出した最終DRAM転送のサイズとDRAM103へのアクセス単位とに基づいて、最終DRAM転送がMWRコマンドによる転送となるか否かを判定する(S310)。ステップS310において、MWR存否判定部206は、算出した最終DRAM転送のサイズがDRAM103へのアクセス単位となるかアクセス単位未満となるかを判定する。ここで、算出した最終DRAM転送のサイズがアクセス単位でない場合は、MWR存否判定部206は最終DRAM転送がアクセス単位未満の転送であると判定し、したがって最終DRAM転送がMWRコマンドによる転送となると判定する。算出した最終DRAM転送のサイズがアクセス単位である場合、MWR存否判定部206はさらに受信した書き込み要求のByteEnableを参照する。ByteEnableに無効Byteレーンが存在する場合、MWR存否判定部206は最終DRAM転送がアクセス単位未満の転送であると判定し、したがって最終DRAM転送がMWRコマンドによる転送となると判定する。ByteEnableに無効Byteレーンが存在しない場合、MWR存否判定部206は最終DRAM転送がアクセス単位での転送となると判定し、したがって最終DRAM転送がWRコマンドによる転送となると判定する。
【0038】
ステップS310において最終DRAM転送がWRコマンドによる転送となると判定された場合、MWR存否判定部206は受信バッファ204に保持される書き込み要求全体が転送退避部210に格納されるよう分割部208を制御する(S306)。ステップS310において最終DRAM転送がMWRコマンドによる転送となると判定された場合、MWR存否判定部206は受信バッファ204に保持される書き込み要求に係るデータを、最終DRAM転送で書き込まれる部分と、その部分を除く残りと、に分割するよう分割部208を制御する。MWR存否判定部206は、最終DRAM転送で書き込まれる部分がMWR退避部212に格納されるよう分割部208を制御し(S312)、残りの部分が転送退避部210に格納されるよう分割部208を制御する(S314)。
【0039】
図4は、メモリコントローラ202におけるコマンドの発行に係る一連の処理の流れを示すフローチャートである。上述の通り、転送退避部210には読み出し要求や、アクセス単位ごとにWRコマンドでDRAM103に書き込まれるデータが保持される。一方、MWR退避部212には、MWRコマンドでDRAM103に書き込まれるアクセス単位未満の量のデータが保持される。それぞれの退避部210、212の出力は選択部216に接続され、該選択部216で選択されたデータが発行部218に出力される。選択部216はペナルティ判定部214における判定結果により制御され、該判定結果によっていずれの退避部210、212のデータを出力するかを決定する。
【0040】
ペナルティ判定部214は、転送退避部210およびMWR退避部212に保持されるデータの転送情報を取得する(S402)。転送情報は、それぞれの退避部210、212に保持されるデータのバンクアドレスと、ROWアドレスと、転送方向(読み出しか書き込みか)と、を含む。ペナルティ判定部214は、MWR退避部212を参照し、MWR退避部212に保持されるデータの有無を判定する(S404)。MWR退避部212にデータが保持されていない場合(S404のNO)、ペナルティ判定部214は選択部216に転送退避部210を選択させる(S406)。その結果、転送退避部210に書き込みのためのデータが保持されていれば、発行部218によりWRコマンドが発行され、転送退避部210に読み出し要求が保持されていれば発行部218によりリードコマンドが発行される。ペナルティ判定部214はステップS406で選択した転送退避部210のデータの転送情報で状態レジスタを更新する(S408)。状態レジスタは、DRAM103において現在活性化されているバンクと、ページの状態と、を保持する。ペナルティ判定部214は、ステップS406に応じて発行部218によりWRコマンドが発行された場合、該WRコマンドの対象となるバンクアドレスとROWアドレスとで状態レジスタを更新する。その後、処理はステップS404に戻る。
【0041】
ステップS404においてMWR退避部212にデータが保持されていると判定された場合(S404のYES)、ペナルティ判定部214は転送退避部210を参照し、MWR退避部212に保持されているデータと同一バンク、同一ページに書き込むデータが転送退避部210にあるか否か判定する(S410)。あると判定された場合(S410のYES)、ペナルティ判定部214はステップS406およびステップS408を実行する。これにより、同一バンク、同一ページに書き込むデータがWRコマンドによりDRAM103に書き込まれる。
【0042】
転送退避部210に保持されるデータのうち、MWR退避部212に保持されているデータと同一バンク、同一ページに書き込むデータの全ての出力が完了すると(S410のNO)、ペナルティ判定部214は、所与のペナルティサイクルをカウンタにセットする(S412)。ペナルティサイクルは、MWRコマンドのペナルティの長さ(4×tCCD)と等しく設定されてもよいし、それよりも大きな値に設定されてもよい。
【0043】
ペナルティ判定部214はペナルティ判定を実行することにより、ペナルティ期間内に発行可能な後続のコマンドがあるか否かを判定する(S414)。ステップS414において、ペナルティ判定部214は転送退避部210に保持されるデータを少なくとも以下の三種類に分類する。(1)MWR退避部212に保持されているデータと同一バンクに書き込むデータ、(2)MWR退避部212に保持されているデータと異なるバンクに書き込むデータ、(3)読み出し要求。
【0044】
ペナルティ判定部214は、(1)のデータについて、そのデータを書き込むためのWRコマンドが発行されると、MWR退避部212に保持されているデータを書き込むためのMWRコマンドのペナルティが変化すると判定する。したがって、ペナルティ判定部214は(1)のデータに係る後続のWRコマンドについては、MWRコマンドのペナルティ期間内に発行可能ではないと判定する。
【0045】
ペナルティ判定部214は、(2)のデータについて、そのデータを書き込むためのWRコマンドが発行されても、MWR退避部212に保持されているデータを書き込むためのMWRコマンドのペナルティは変化しないと判定する。ペナルティ判定部214は、(2)のデータを書き込むためのWRコマンドのペナルティを、そのWRコマンドの対象となるバンクおよびそのWRコマンドの対象となるページのうちの少なくともひとつに基づき決定する。例えば、ペナルティ判定部214は状態レジスタを参照し、WRコマンドの対象となるページが現在オープンされていない場合は、ページ遷移によるペナルティをWRコマンドのペナルティとして決定する。ペナルティ判定部214は、WRコマンドの対象となるページが現在オープンされている場合はtCCDをWRコマンドのペナルティとして決定する。
【0046】
ペナルティ判定部214は、決定されたWRコマンドのペナルティとカウンタのカウント値とを比較する。ペナルティ判定部214は、WRコマンドのペナルティ<カウント値のとき、当該WRコマンドをMWRコマンドのペナルティ期間内に発行可能であると判定する。ペナルティ判定部214は、WRコマンドのペナルティ≧カウント値のとき、当該WRコマンドをMWRコマンドのペナルティ期間内に発行可能でないと判定する。
【0047】
またペナルティ判定部214は、転送退避部210に保持されるデータについてのコマンドのペナルティを、リード/ライトの別に基づき決定する。ライトの場合の決定については上述の通りである。ペナルティ判定部214は、(3)のデータについて、読み書きの方向の変更によるペナルティを、リードコマンドのペナルティとして決定する。ペナルティ判定部214は、決定されたリードコマンドのペナルティとカウンタのカウント値とを比較する。ペナルティ判定部214は、リードコマンドのペナルティ<カウント値のとき、当該リードコマンドをMWRコマンドのペナルティ期間内に発行可能であると判定する。ペナルティ判定部214は、リードコマンドのペナルティ≧カウント値のとき、当該リードコマンドをMWRコマンドのペナルティ期間内に発行可能でないと判定する。なお、ここではライトからリードへの遷移が生じる場合について説明したが、リードからライトへの遷移が生じる場合も同様に読み書きの方向の変更によるペナルティをWRコマンドのペナルティとして決定してもよい。
【0048】
MWRコマンドのペナルティ期間内に発行可能な後続のコマンドがないと判定された場合(S416のNO)、ペナルティ判定部214は、カウンタのカウンタ値をデクリメント、すなわち1だけ減算、する(S422)。
【0049】
MWRコマンドのペナルティ期間内に発行可能な後続のコマンドがあると判定された場合(S416のYES)、ペナルティ判定部214は選択部216に転送退避部210を選択させる(S418)。その結果、MWR退避部212に保持されているデータと異なるバンクに書き込むデータが転送退避部210に保持されていれば、MWRコマンド発行より先に発行部218によりWRコマンドが発行される。転送退避部210に読み出し要求が保持されていれば、MWRコマンド発行より先に発行部218によりリードコマンドが発行される。ペナルティ判定部214はステップS418で選択した転送退避部210のデータの転送情報で状態レジスタを更新する(S420)。その後、処理はステップS422に進む。
【0050】
ステップS422におけるカウント値の減算の後、ペナルティ判定部214はカウント値が0に到達したか否かを判定する(S424)。カウント値が0より大きい場合(S424のNO)、処理はステップS414に戻り、より小さいカウント値でのペナルティ判定が繰り返される。カウント値が0に到達した場合(S424のYES)、ペナルティ判定部214は選択部216にMWR退避部212を選択させる(S426)。その結果、発行部218により、MWR退避部212に保持されているデータを書き込むためのMWRコマンドが発行される。ペナルティ判定部214はステップS426で選択したMWR退避部212のデータの転送情報で状態レジスタを更新する(S428)。その後、処理はステップS402に戻る。
【0051】
なお、転送退避部210に保持されるデータに対応する複数のコマンドについて、要求の受信順とは異なる順番でコマンドが発行される場合がある(後述する)。
【0052】
以上の構成によるメモリコントローラ202の動作を説明する。
図5は、
図2のメモリコントローラ202によって出力されるDRAMコマンドのシーケンスの一例を示すタイミングチャートである。DRAM103のあるバンクへのWRコマンド502が発行されてから同じバンクへのMWRコマンド504を発行するまでの期間の長さはtCCDMWであり、この期間内に別のバンクへのWRコマンド506、508、510がtCCDの間隔で発行される。この例ではtCCDMW=4×tCCDに設定されている。WRコマンド506、508、510は、要求の受信順に従えばMWRコマンド504よりも後に発行されるべきコマンドである。
【0053】
図5の例では、MWRコマンド504のペナルティtCCDMWとWRコマンド506、508、510のペナルティtCCDとが比較され、後者の方が短いと判定される。その結果、MWRコマンド504のペナルティ期間中にWRコマンド506、508、510を発行可能と判定され、それらのWRコマンド506、508、510がMWRコマンド504に先立って発行される。
【0054】
図6(A)~(D)は、
図2のメモリコントローラ202によって出力されるDRAMコマンドのシーケンスの別の一例を示す模式的なタイミングチャートである。
図6の例ではtCCDMW=3×tCCDに設定されている。
図6(A)では、システムバス108を介してバスマスタから受信バッファ204に四つの書き込み要求(Wr1~Wr4)が順にtCCD間隔で送信され、その要求に応じてライトコマンド(WRコマンドまたはMWRコマンド)が発行される。ここで、Wr1とWr2とは同一バンク(バンクAと称す)への書き込み、Wr3とWr4とはそれぞれバンクAとは異なるバンクBへの書き込みであるとする。また、Wr2は最終DRAM転送がアクセス単位未満の書き込みであり、Wr1/Wr3/Wr4は最終DRAM転送がアクセス単位分の書き込みであるものとする。
【0055】
書き込み要求Wr1は、最終DRAM転送がアクセス単位分となるため、MWR存否判定部206の制御により転送退避部210に出力される。ここで、転送退避部210にのみ書き込み対象のデータが保持され、MWR退避部212には書き込み対象のデータは保持されていないので、ペナルティ判定部214はWr1のデータが発行部218に出力されるよう選択部216を制御する。書き込み要求Wr2の最終DRAM転送はアクセス単位未満の書き込みとなる。したがって、MWR存否判定部206の制御により先行の転送データ(Wr2-1)と最終DRAM転送のデータ(Wr2-2)とに分割され、それぞれ転送退避部210とMWR退避部212とに格納される。ペナルティ判定部214はWr2-2に対するペナルティカウント(tCCDMW)をセットし、Wr2-1が発行部218に出力されると、カウンタの減算を始める。Wr2-2のペナルティ期間中に、後続の書き込み要求Wr3、Wr4が順次受信バッファ204に入力される。これらはWr1、Wr2が対象とするバンクAとは異なるバンクBを対象とする。書き込み要求Wr3、Wr4はいずれも最終DRAM転送がアクセス単位分の書き込みとなるものであるから、いずれも転送退避部210に出力される。ここで、ペナルティ判定部214はWr3/Wr4の書き込み転送のペナルティを計算する。Wr3/Wr4は同じバンクBを対象とする。ここで、Wr3/Wr4が対象とするページが既にオープンされている(PageHit)と管理されている場合、ペナルティはコマンド間隔tCCDとなりWr2-2のペナルティカウントよりも小さい。したがって、Wr3およびWr4の書き込み対象のデータは、Wr2-2のデータに先立って発行部218へ出力される。
【0056】
図6(B)は、Wr3/Wr4が対象とするページが既にオープンされていない(PageMiss)と管理されている場合に対応するタイミングチャートである。Wr3/Wr4について計算されたページ処理のペナルティがWr2-2のペナルティカウントよりも大きくなる。したがって、Wr2-2のペナルティカウントが0になるとWr2-2のデータが発行部218に出力される。Wr2-2のデータを書き込むためのMWRコマンドの発行により、MWR退避部212に保持されるデータが無くなるため、ペナルティ判定部214の制御により、転送退避部210に保持されているデータが順に発行部218に出力されることとなる。
【0057】
図6(C)では、システムバス108を介してバスマスタから受信バッファ204に四つの書き込み要求(Wr1~Wr4)が順にtCCD間隔で送信され、その要求に応じてライトコマンド(WRコマンドまたはMWRコマンド)が発行される。ここで、Wr1とWr2とWr3とは同じバンクAへの書き込み、Wr4はバンクBへの書き込みであるとする。また、Wr2は最終DRAM転送がアクセス単位未満の書き込みであり、Wr1/Wr3/Wr4は最終DRAM転送がアクセス単位分の書き込みであるものとする。
【0058】
Wr1、Wr2の処理は
図6(A)の場合と同様である。Wr2-2のペナルティ期間中に、後続の書き込み要求Wr3、Wr4が順次受信バッファ204に入力される。MWR存否判定部206は、Wr3の最終DRAM転送がアクセス単位分の書き込みとなると判定し、Wr3のデータが転送退避部210に出力されるよう分割部208を制御する。ペナルティ判定部214は、書き込み要求Wr3がWr2-2と同じバンクAを対象としており、したがってWr2-2のペナルティを変化させると判定する。この場合、ペナルティ判定部214は、Wr3のデータがWr2-2のデータよりも先に発行部218に出力されることがないよう制御する。
【0059】
Wr4はバンクAとは異なるバンクBを対象とする。MWR存否判定部206は、Wr4の最終DRAM転送がアクセス単位分の書き込みとなると判定し、Wr4のデータが転送退避部210に出力されるよう分割部208を制御する。ここで、ペナルティ判定部214はWr4の書き込み転送のペナルティを計算する。Wr4が対象とするページが既にオープンされていると管理されている場合、ペナルティはコマンド間隔tCCDとなりWr2-2のペナルティカウントよりも小さい。したがって、Wr4の書き込み対象のデータは、Wr2-2のデータに先立って発行部218へ出力される。その後、Wr2-2のペナルティカウントが0になるとWr2-2のデータが発行部218に出力される。Wr2-2のデータを書き込むためのMWRコマンドの発行により、MWR退避部212に保持されるデータが無くなるため、ペナルティ判定部214の制御により、転送退避部210に保持されているWr3のデータが発行部218に出力されることとなる。
【0060】
図6(D)では、システムバス108を介してバスマスタから受信バッファ204に三つの書き込み要求(Wr1~Wr3)とひとつの読み出し要求(Rd1)とが、Wr1、Wr2、Rd1、Wr4の順にtCCD間隔で送信される。ここで、Wr1とWr2とは同じバンクAへの書き込み、Wr3はバンクBへの書き込みであるとする。また、Wr2は最終DRAM転送がアクセス単位未満の書き込みであり、Wr1/Wr3は最終DRAM転送がアクセス単位分の書き込みであるものとする。読み出し要求(Rd1)は転送方向の変更のペナルティが大きい。対して書き込み要求Wr3について算出されたペナルティ値はWr2-2のペナルティカウントよりも小さい。したがって、Wr2-2のデータを書き込むためのMWRコマンドに先立ってWr3のデータを書き込むためのWRコマンドが発行部218によって発行される。結果として、書き込み要求Wr3のデータを書き込むためのWRコマンドは、書き込み要求WR3よりも先に受信された読み出し要求Rd1に対応するリードコマンドに先立って発行される。
【0061】
なお、
図6(A)~(D)で示した例では、簡単のため各要求のバースト長が短い場合を想定しているが、バースト長が長い要求であっても同様に制御可能である。
【0062】
本実施の形態に係るメモリコントローラ202によると、DRAM103へのアクセス単位に満たない量のデータの書き込み転送の発生有無が検出され、当該転送の発生によるペナルティ期間内に後続の書き込み転送が発行可能であるか判定され、可能であれば発行される。したがって、アクセス単位に満たない量のデータを書き込む際のペナルティの影響を軽減し、メモリアクセス効率の低下を抑制する、または該効率を高めることができる。
【0063】
また、本実施の形態によると、画像処理やストリーム処理の端部で発生するMWRコマンドのペナルティについて、簡易な構成でそのペナルティ間にDRAMコマンドを発行することを可能とすることで、メモリアクセス効率の低下を抑制することができる。
【0064】
(シミュレーション)
以下に、上記の実施の形態に係るメモリコントローラ202の作用効果を示すシミュレーション結果を説明する。シミュレーションの前提は以下の通りである。
・LPDDR4に準拠、3200Mbps。
・WL(Write Latency)=14サイクル(cycle)
・BL(Burst Length)=8サイクル
・DRAM103のData Width=32ビット(bit)
・DRAM103のPage=2キロバイト(KByte)
・ペナルティ
-PageMiss(WR->*)=110サイクル
-MaskedWriteのペナルティ=16サイクル
【0065】
上記前提の下、4000×2000画素の画像データを水平ラインごとに書き込む転送を二つのモジュールが競合するケースをシミュレートした。1画素のデータ量は4.5バイトであった。
【0066】
(1)水平ラインの分割が無い場合
各ラインの先頭アドレスはページのアラインより開始する。二つのモジュール間でページの依存関係は無い。この場合、二つのモジュールが同時に動作しているとして、1ライン中にページの遷移が9回、Masked Writeが1回発生する。従来の手法によると、転送効率は81.74%となった。上記実施の形態に係る手法によると、転送効率は81.98%となり、転送効率が0.24%増加した。これは31MB/sの向上に相当する。
【0067】
(2)水平ラインを4分割する場合(1000画素ずつ書き込み)
各ライン・分割画素の先頭アドレスはページのアラインより開始する。二つのモジュール間でページの依存関係は無い。この場合、二つのモジュールが同時に動作しているとして、1ライン中にページの遷移が12回、Masked Writeが4回発生する。従来の手法によると、転送効率は61.98%となった。上記実施の形態に係る手法によると、転送効率は63.09%となり、転送効率が2.11%増加した。これは269MB/sの向上に相当する。
【0068】
以上、実施の形態に係るメモリコントローラ202の構成と動作について説明した。この実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0069】
実施の形態では、受信された書き込み要求の最終DRAM転送に係るデータの量とアクセス単位とを比較する場合について説明したが、これに限られず、最終でなくとも同様の制御を行うことが可能である。
【0070】
実施の形態では、MWR存否判定部206が最終DRAM転送のサイズを算出し、算出されたサイズとアクセス単位とを比較することでMWRコマンドが発生するか否かを判定する場合について説明したが、これに限られない。例えば、書き込み要求をアクセス単位で分割して判定する処理を繰り返してもよい。
図7は、変形例に係るメモリコントローラにおけるMWRコマンドの発生の有無の判定に係る一連の処理の流れを示すフローチャートである。ステップS304において書き込み要求であると判定されると、当該書き込み要求はDRAM103へのアクセス単位に分割される(S702)。メモリコントローラは、ステップS702で分割された転送が最終DRAM転送であり、かつアクセス単位未満の転送であるか否かを判定する(S704)。ステップS704で最終DRAM転送でないと判定された場合、またはアクセス単位分の転送であると判定された場合(S704のNO)、メモリコントローラは分割された転送を転送退避部210に出力する(S708)。一方、最終DRAM転送であり、かつアクセス単位未満の転送であると判定された場合(S704のYES)、メモリコントローラは分割された転送をMWR退避部212に出力する(S706)。メモリコントローラは、転送退避部210またはMWR退避部212に格納された転送が最終DRAM転送であるか否かを判定し(S710)、最終DRAM転送でなければさらにDRAM転送の分割を行い(S702)、分割された転送に対する判定処理が繰り返される。
【0071】
実施の形態では、メモリコントローラ202が判定、分割、選択機能を有する場合について説明したが、これに限られず、例えば従来のメモリコントローラの前段にそれらの機能を有する前段回路を設けてもよい。
【0072】
実施の形態において、
図3のステップS310で説明した通り、計算上は最終DRAM転送のデータ量がアクセス単位分となる場合でも、ByteEnableに無効Byteレーンが存在する場合には最終DRAM転送のデータ量がアクセス単位未満となるものとして扱う。このように、実施の形態に係る技術的思想は、DRAMへデータを書き込む際、書き込み対象のデータ内に無効バイトが含まれる場合と無効バイトが含まれない場合とで異なるライトコマンドが発行される場合にも適用可能である。
【符号の説明】
【0073】
202 メモリコントローラ、 206 MWR存否判定部、 208 分割部、 214 ペナルティ判定部、 218 発行部。