JP2014154000A - メモリ制御装置、その制御方法、および制御プログラム - Google Patents
メモリ制御装置、その制御方法、および制御プログラム Download PDFInfo
- Publication number
- JP2014154000A JP2014154000A JP2013024396A JP2013024396A JP2014154000A JP 2014154000 A JP2014154000 A JP 2014154000A JP 2013024396 A JP2013024396 A JP 2013024396A JP 2013024396 A JP2013024396 A JP 2013024396A JP 2014154000 A JP2014154000 A JP 2014154000A
- Authority
- JP
- Japan
- Prior art keywords
- data
- buffer
- transfer
- memory
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Bus Control (AREA)
Abstract
【課題】DMA転送の際、データ転送頻度の少ないクライアントによるチャネルの消費量を抑圧する。
【解決手段】DMAモジュール8はフレーム単位のデータを前記メモリにDMA転送する際、二次元DMA転送を行う。中継器10はクライアントおよびDMAモジュールに接続され、クライアントの各々から送信されたデータを一時的に格納するバッファに独立に領域を確保して、クライアントの各々から送信されたデータを、バッファに一時格納するととともに、バッファに係る処理単位を満たしたクライアントのデータについてDMAモジュールに対して所定のデータ量の転送要求を送信する。
【選択図】図1
【解決手段】DMAモジュール8はフレーム単位のデータを前記メモリにDMA転送する際、二次元DMA転送を行う。中継器10はクライアントおよびDMAモジュールに接続され、クライアントの各々から送信されたデータを一時的に格納するバッファに独立に領域を確保して、クライアントの各々から送信されたデータを、バッファに一時格納するととともに、バッファに係る処理単位を満たしたクライアントのデータについてDMAモジュールに対して所定のデータ量の転送要求を送信する。
【選択図】図1
Description
本発明は、メモリに対するデータの書き込みおよび読み出しを行うメモリ制御装置、その制御方法、および制御プログラムに関し、特に、メモリに画像データを一時的に記憶しつつ画像処理を実行する画像処理装置で用いられるメモリ制御装置に関する。
一般に、フレーム単位又はフィールド単位で画像データを処理する画像処理装置の1つとして所謂デジタルスチルカメラがある。デジタルスチルカメラにおいては各種の画像処理が行われるが、近年、取り扱う画像データのデータ量が増大しており、高速に読み書き可能で大容量のメモリを用いて各種の処理が行われている。一般に、画像処理のためのメモリとしてDRAMなどの揮発性メモリが用いられる。
DRAMなどの揮発性メモリは画像データの記憶の他、CPUなどの制御装置におけるワーク領域およびキャッシュ領域としても用いられる。そして、デジタルスチルカメラにおける連写撮影の際の処理およびビデオカメラにおける動画撮影の際の処理においては、上記の揮発性メモリに複数のデータ領域を確保して、同時にメモリに対するアクセスが行われる。このメモリに対する複数のアクセス要求はDMA(Direct Memory Access)によって行われている。
DMAにおいては、CPUの制御を介することなく、データ転送要求を調停して、バス権の貸与および管理が行われる。そして、DMA制御部は、source/destinationとなるメモリの格納位置(アドレス)の管理も行っている。
画像処理装置において、フレーム又はフィールド単位で画像データの処理を行う際には二次元DMA転送が用いられる。二次元DMA転送においては、メモリアドレスを一次元的なメモリマップとして単純に増減してアクセスするのではなく、(x,y)座標のように平面空間的に連続してアクセスとする。 例えば、RAM上の画像データを複数ブロックに分割し、ブロック単位でメモリから読み出して処理を行うことが提案されている(特許文献1参照)。
前述のように、二次元DMAおよび分割処理によって、例えば、デジタルスチルカメラでは撮像処理(撮像データの取り込み。キャプチャ)および画像処理(現像処理)を同時に実行することができる。
また、撮像中に各種情報(センサ補正情報、AF、AE、WB(ホワイトバランス)、およびフリッカー検出などの情報)を同時に取得するようにすれば、スループットを向上させることができる。
しかしながら、撮像処理および現像処理などを同時に行って、且つ、補正用の各種情報も同時に取得すると、DMAの複数のチャネルが同時に使用することになって、DMAチャネルリソースを効率的に使用することができない。
CPUおよび画像処理ハードウエアの性能向上などによって又センサーサイズの大型化や記録メディアの高速化などによってDMAチャネルの消費量は増大していることを考慮すると、データ転送頻度(転送量)の少ないクライアントが複数のチャネルを消費することは、転送チャンネルの使用効率を低下させることになる。
従って、本発明の目的は、データ転送頻度(転送量)の少ないクライアントによるチャネルの消費量を抑圧することができるメモリ制御装置、その制御方法、および制御プログラムを提供することにある。
上記の目的を達成するため、本発明によるメモリ制御装置は、フレーム単位のデータを複数のクライアントからそれぞれ受けて当該データを処理する際、前記データを一時的にメモリに記憶するため前記メモリにDMA転送するためのメモリ制御装置であって、前記データを前記メモリにDMA転送する際、二次元DMA転送を行うDMA転送手段と、前記クライアントおよび前記DMA転送手段に接続され、前記クライアントの各々から送信されたデータを一時的に格納するバッファ手段を備え、前記クライアントの各々から送信されたデータを、独立に領域を確保した前記バッファ手段に一時格納するととともに、前記バッファ手段に係る処理単位を満たしたクライアントのデータについて前記DMA転送手段に対して所定のデータ量の転送要求を送信する中継手段と、を有することを特徴とする。
本発明による制御方法は、フレーム単位のデータを複数のクライアントからそれぞれ受けて当該データを処理する際、前記データを一時的にメモリに記憶するため前記メモリにDMA転送するためのメモリ制御装置の制御方法であって、前記データを前記メモリにDMA転送する際、二次元DMA転送を行うDMA転送ステップと、前記クライアントの各々から送信されたデータを一時的に格納するバッファに独立に領域を確保して、前記クライアントの各々から送信されたデータを、前記バッファに一時格納すると格納ステップと、前記バッファに係る処理単位を満たしたクライアントのデータについて前記DMA転送ステップに所定のデータ量の転送要求を送信する中継ステップと、を有することを特徴とする。
本発明による制御プログラムは、フレーム単位のデータを複数のクライアントからそれぞれ受けて当該データを処理する際、前記データを一時的にメモリに記憶するため前記メモリにDMA転送するためのメモリ制御装置の制御プログラムであって、前記メモリ制御装置が備えるコンピュータに、前記データを前記メモリにDMA転送する際、二次元DMA転送を行うDMA転送ステップと、前記クライアントの各々から送信されたデータを一時的に格納するバッファに独立に領域を確保して、前記クライアントの各々から送信されたデータを、前記バッファに一時格納すると格納ステップと、前記バッファに係る処理単位を満たしたクライアントのデータについて前記DMA転送ステップに所定のデータ量の転送要求を送信する中継ステップと、を実行させることを特徴とする。
本発明によれば、データ転送頻度の少ないクライアントによるチャネルの消費量を抑圧することができる。
以下、本発明の実施の形態によるメモリ制御装置の一例について図面を参照して説明する。
[第1の実施形態]
図1は、本発明の第1の実施形態によるメモリ制御装置の一例を示すブロック図である。なお、図1のメモリ制御装置は、例えば、フレーム単位又はフィールド単位で画像データを処理するデジタルカメラなどの撮像装置(つまり、画像処理装置)で用いられる。
図1は、本発明の第1の実施形態によるメモリ制御装置の一例を示すブロック図である。なお、図1のメモリ制御装置は、例えば、フレーム単位又はフィールド単位で画像データを処理するデジタルカメラなどの撮像装置(つまり、画像処理装置)で用いられる。
図1において、DMAモジュール8には複数のクライアント1〜4が接続されている。これらクライアント1〜4として、例えば、AF、AE、WB、およびフリッカーなどの各種検出又は取得情報が該当する。メモリコントローラ5は不揮発性メモリ7に対するライト・リードデータを取り扱うとともに、コマンドステータスの制御を行う。
このメモリコントローラ5には内部データバスを介してDMAモジュール8のデータ出力が接続される。メモリコントローラ5およびDMAモジュール8などはシステムオンチップとして1チップのLSI(画像処理エンジン)として構成することができる。この場合、当該チップはチップ出力(I/Oパッド)6を介して基板(ボード)に接続される。
不揮発性メモリ7は、例えば、SDRAMであり、画像処理エンジン(LSI)と不揮発性メモリ7とは外部データバスを介して接続される。
メモリコントローラ5は、データコントローラ50、ライトデータを一時格納するFIFO51、およびSDRAM7からのリードデータを一時格納するFIFO52を有している。データコントローラ50は、FIFO51および52におけるデータ授受の管理を行うとともに、出力バッファ53の状態を制御する。
出力バッファ53は、例えば、3ステートバッファであり、データコントローラ50からの制御信号が”0(Lレベル)”の場合に、出力バッファ53はFIFO51からのデータを出力する。一方、データコントローラ50からの制御信号が”1(Hのレベル)”状態では、出力バッファ53はハイインピーダンス状態となって、I/Oパッド6を駆動しない。入力バッファ54は、不揮発性メモリ7からのデータをFIFO52に送出(ドライブ)する。
なお、図示の例では、出力バッファ53および入力54は、メモリコントローラ5に備えられているが、I/OバッファとしてI/Oパッド6の近傍に配置するようにしてもよい。
DMAモジュール8は、不揮発性メモリ7に対するデータ転送を行うためのライト(WR)DMAコントローラ80を有している。DMAモジュール8には複数のクライアントに対するデータI/Fが備えられている。そして、これらデータI/Fが選択的に任意のチャネルに接続される。図示のように、データI/Fは、例えば、チャネルスイッチ81a〜86aであり、クライアント1〜4はチャネルスイッチ81a〜86aによって任意のチャネルに接続される。
チャネル処理部81b〜86bの各々は、チャネルスイッチ81a〜86aからのデータを一時格納するFIFOおよびこのFIFOを制御する制御部を有している。DMAコントローラ80によって選択されたチャネルのデータはセレクタ87を介して内部データバスに送出される。このデータはメモリコントローラ5を介して不揮発性メモリ7に格納される。
なお、図示の例では、チャネルスイッチ81a〜86aおよびチャネル処理部81b〜86bの活性状態を説明するため、内部データバスのバス権取得のためのステータス制御及び信号線については示されていない。
調停器(アービタ)88は、チャネル処理部81b〜86bから不揮発性メモリ7に対するデータの格納要求が同時に発生した際、データアクセス順の調停を行う。チャネル処理部81b〜86bからDMAコントローラ80に、不揮発性メモリ7に対する転送要求ステータスが送出される(なお、図1においては信号線などは示されていない)。同様に、DMAモジュール8はメモリコントローラ5に対して、各チャネルの格納先アドレスを提示する(なお、図1においては、信号線などは示されていない)。
いま、クライアント1をAF制御用の検出結果、クライアント2をAE用のブロック積分値、クライアント3をホワイトバランス用のブロック積分値、クライアント4をフリッカー検出・補正用ライン積分値とする。これら検出用データのソースは撮像の結果得られたフレームデータであるが、DMAC(Direct Memory Access Controller)のクライアントとして送出したいデータはフレーム単位ではなく、出現頻度も領域毎に異なってフレームデータに比べて少ないデータ量である。ところが、ソース自体はフレームデータであるので、チャネルの使用期間は制御の関係上ほぼフレーム単位となる。
クライアント1〜4とDMAモジュール8との間には中継器10が配置されており、ここでは、後述のように、クライアント1−4によって1チャネル(図中ハッチングで示す)のみが使用(消費)され、チャネル消費量が抑圧される。
なお、ここでは、二次元DMA転送における分割処理の一例である垂直分割設定が用いられる。
中継器10には、クライアント1〜4から転送された転送データをそれぞれ一時格納(蓄積)するバッファ101b〜104bおよびバッファ101b〜104bのデータ入出力を制御するバッファ制御部101a〜104aを有している。さらに、中継器10は、バッファ101b〜104b間のデータ入出力を管理および制御する中継器制御部100とその制御状態を記憶するレジスタ105とを備えている。
なお、図示の例では、クライアント数を4としているが、クライアントの数は4に限定されるものではなく、クライアントの数に応じて中継器10はバッファを備えることになる。
ここで、第1の実施形態によるメモリ制御装置の理解を容易にするため、DMA二次元転送の際の垂直分割走査の一例について説明する。
図2は、DMA二次元転送の際の垂直分割走査の一例を説明するための図である。
図2に示す例では、Y方向にYAのサイズでYN個のブロックに画像データなどのデータが分割され、X方向では分割を行わずそのサイズがX×YAであるとする。ブロック”1”〜”N+1”(Nは1以上の整数)の各々における走査の際には、X方向に1ライン走査する毎に、次のラインの先頭にメモリに格納されたアドレスがくるようにオフセット(OFFSET)設定が行われる。また、1ブロックの走査が完了すると、メモリに格納されたアドレスの飛び先は次ブロックの先頭画素の位置にオフセット設定される。
図3は、図2に示す垂直分割処理の際のメモリマップを説明するための図である。なお、図3においては、説明の便宜上、各ブロック間の格納位置同士に間隔を置かず、さらにブロック内のライン間にも間隔を置かないように格納した場合のメモリマップが示されている。
ここでは、垂直分割(垂直方向に分割)した1ブロックのデータ量を、中継器10からDMAモジュール8に対する1回の転送指示量(DMA転送単位)と定義する。つまり、中継器10は1ブロック分のデータを蓄積するまでは、DMAモジュール8に対してデータ転送要求(つまり、DMA転送開始要求)送出しない。
この場合、バッファ101b〜104bの容量は最低限垂直分割した1ブロック分必要となる。
図4は、図1に示す中継器10からDMAモジュール8に対する転送要求のイベントの発生を説明するための図である。
図4において、ch_client1〜4はそれぞれクライアント1〜4のチャネル使用を示し、client(n)req_event(nは1〜4のいずれかの整数)は中継器10からDMAモジュール8に対する転送要求の発生タイミングを示す。
なお、ここでは、中継器10に対するクライアント1〜4のデータ転送頻度は、画像データそのものの転送頻度に比べて低いものとする。図示の例では、クライアント1はクライアント中で最も転送頻度が高く、クライアント3、2、および4の順に転送頻度が低下する。
デジタルスチルカメラなどの撮像装置における各種情報(つまり、検出データ)について当てはめると、クライアント1は積分範囲の比較的狭いフリッカ検出における輝度積分値、クライアント3および2は、AE積分やWB用のブロック積分値であり、クライアント4はAF評価枠の検出情報である。
図5は、図4に示す転送要求イベントによって不揮発性メモリ7にデータ転送を行った際のメモリマップを示す図である。
不揮発性メモリ7上のメモリマップでは各クライアント1〜4のデータはブロック単位で混在した順番となる。このため、各クライアント1〜4のデータを後程取得する際には、ファームウエアで適宜飛び越し走査をして所望のデータを集める必要がある。ファームウエアの負担増にはなるが、各クライアント1〜4からのデータ量は画像データに比べて少なく、且つ画像データ処理の際にライト側DMAのチャネル消費を抑圧できる効果の方が大きい。
図6は、図1に示す中継器10に備えられたバッファおよびバッファ制御部の構成を示すブロック図である。なお、バッファ101b〜104bおよびバッファ制御部101a〜104aの構成は同一であるので、ここではバッファ101bおよびバッファ制御部101aについて説明する。
バッファ制御部101は、バッファ101bのデータアクセス先を指示するアドレス制御部1011およびバッファの書き込み・読み出し状態を管理する状態制御部1012を備えている。図6において、左側(左側I/F)はクライアント1と接続される。また、右側(右側I/F)は中継器制御部100によって選択的にDMAモジュール8に接続される。
なお、中継器制御部100は、バッファ制御部101b〜104bから転送要求が同時にある場合の調停機能を備えており、当該調停機能はアービタ88と同様である。
上記のI/Fの各々はデータ線(Data)、データ有効ステータス(valid)、およびデータ停止要求(stop)を有している。
図7は、モジュール間のデータ転送を説明するための図であり、図8は図7に示すデータ転送のタイミングを示すタイミングチャートである。
データ転送はクロック(CLK)同期によって行われ、同相転送が確保されているものとする。つまり、受信側クロックで送信側データを捕獲した際にセットアップ・ホールド違反とならないように同相転送が保障されているものとする。
データ転送側モジュールAにおいて、ロジック回路(logic)は、有効データを転送するタイミングでデータ線に有効データ(Data)を送出するとともに、データ有効ステータス(Valid)を”1”値に遷移する。なお、データ有効ステータスは、データ有効の場合に”1”値と定義し、無効の場合に”0”値として定義する。
モジュール(module)AおよびB間のデータ転送において、モジュールBはデータ受信できない状態であると、前段のモジュールAに対してデータ停止要求(Stop)を送出する。データ停止要求を受けると、モジュールAはデータを保持し待機する。
この際、モジュールAはデータ有効ステータスの状態を保持するが、モジュールBに対して有効ステータスの状態を無効状態にマスクするようにしてもよい。これはモジュールAおよびB間における取り決めで設定される。
図9は、図1に示すバッファ101bの構成を示すブロック図である。
バッファ(Buffer)101bはデータ保持部121および122を備えており、これらデータ保持部121および122の各々は1ブロック単位のデータを一時的に保持する。ここでは、データ保持部121からDMA転送が行われている際、データ保持部122はクライアントからデータを受信する。つまり、バッファ101bはダブルバッファ構成である。
データ保持部121および122は、データ転送量の単位をどの程度に設定するかでその容量が決定されるが、例えば、数100〜数1000ワード程度の配列のSRAM構成としてもよい。データ幅は内部バスやメモリ(例えば、DRAM)のデータ幅と整合性があればよいので、一般に16、32、又は64ビットとされる。
図9において、ライトアドレス信号WR_ADRSおよびリードアドレス信号RD_ADRSはそれぞれデータ保持部121および122の書き込みおよび読み出しアドレスを示す信号である。これらアドレス信号(アドレスステータス)は、図6に示すアドレス制御部1011から送出される。セレクタ123および124はデータ保持部121および122に対していずれのアドレスステータスを選択する。
セレクタ123および124の選択状態はステータスWR_ENBおよびステータスWB_SELをデコードすることによって決定される。
このデコードはANDゲート126および127によって行われる。ステータスWR_ENB(write enable)およびWB_SEL(write−buffer select)は、図6に示す状態制御部1012において管理される。データ出力(ODAT)はステータスRB_SEL(read−buffer select)によって選択されるセレクタ125の出力であり、データ保持部121および122のいずれかの出力である。
図示の例では、ステータスWR_ENB、ステータスRD_ENB(read enable)によるイネーブル状態を”1”値、ディスエーブル(disable)状態を”0”値と定義する。また、ステータスWB_SELおよびRB_SELが”0”値であると、データ保持部121が選択され、ステータスWB_SELおよびRB_SELが”1”値であるとデータ保持部122が選択される。
図10は、図6に示すアドレス制御部1011の構成を示すブロック図である。
アドレス制御部1011はライトアドレスカウンタ部(wr_count)131およびリードアドレスカウンタ部(rd_count)132を備えている。ライトアドレスカウンタ部131はステータスWR_ADRSの値を更新・保持する。また、リードアドレスカウンタ部132はステータスRD_ADRSの値を更新・保持する。
ライトアドレスカウント部131は、ステータスWR_ENBがイネーブル状態でクライアントから有効データを受けると、1インクリメントする。この際、信号IVALは、データ保持対象のときにのみ”1”状態となり、中継器10から対象クライアントに対してstop要求信号が送出される場合には、信号IVALは”0”状態にマスクされる。ステータスWR_ENBおよび信号IVALの状態デコードはANDゲート133の出力が用いられる。
同様に、リードアドレスカウント部132は、ステータスRD_ENBがイネーブル状態で後段のDMAモジュール8からデータ停止要求が出ていない状態で、1インクリメントする。データ停止要求信号ISTPは、後段からのデータ転送停止要求であって、ステータスRD_ENBとこのステータスの反転論理とをデコードした結果が用いられる。このデコードはANDゲート134で行われる。
前述のように、バッファサイズは分割後の1ブロックのデータ量と整合を取る。データ保持部121および122の容量に対して、このブロックサイズは可変であるので、ハードウエアとしてのデータ保持部121および122の確保もレジスタ値による設定としてよい。
この場合、ライトアドレスカウント部131の出力値と該レジスタ値(バッファサイズ値)とを等面コンパレータ135で比較して、同値になった時点でバッファフル状態とされる。
バッファフル信号BUF_FULL(buffer full)は、状態制御部1012の入力信号であって、状態制御部1012はバッファフル信号BUF_FULLに応じてバッファの状態を検出する。そして、状態制御部1012は書き込み対象バッファ(つまり、データ保持部121および122)を切り替える。
切り替えの時点で、状態制御部1012は、ステータスWB_SELの値を更新(2値選択なので反転)するようにしてもよい。
この際、更新側のデータ保持部にDMA未転送のデータが残存する場合には、状態制御部1012はステータスWR_ENBを”0”値に更新する。また、バッファフル信号BUF_FULLによってバッファフル状態を検出することによって、状態制御部1012はステータスRD_ENBを”1”値に更新する。
同様にして、リードアドレスカウント部132の出力とレジスタ値(バッファサイズ値)とが等面コンパレータ136で比較され、同値になった時点でバッファEMPTY状態とされる。
バッファエンプティ信号BUF_EMPT(buffer empty)は、状態制御部1012の入力信号であって、状態制御部1012はバッファエンプティ信号BUF_EMPTの状態を検出し、読み出し対象バッファ(つまり、データ保持部121および122)を切り替える。この時点で、状態制御部1012は信号RB_SELの値を更新(2値選択なので反転)するようにしてもよい。
更新側のデータ保持部が未だFULL状態でなければ、状態制御部1012はステータスRD_ENBを”0”値に更新する。また、バッファエンプティ信号BUF_EMPTを検出すると、状態制御部1012はステータスWB_ENBを”1”値に更新する。
図11は、図9に示すステータスWB_SELによる状態遷移を説明するための図である。
図11において、データ保持部121はBUF0で示され、データ保持部122はBUF1で示されている。いま、BUF_FULL=1が検出されWB_SELが”0”となると、書き込み対象のバッファがBUF1からBEF0に遷移する(つまり、BUF0が選択(sel)される)。
一方、BUF_FULL=1が検出されWB_SELが”1”となると、書き込み対象のバッファがBUF0からBEF1に遷移する(つまり、BUF1が選択される)。
図12は、図9に示すステータスRB_SELによる状態遷移を説明するための図である。
図12において、BUF_EMPT=1が検出され、RB_SELが”0”となると、読み出し対象のバッファがBUF1からBEF0に遷移する(つまり、BUF0が選択される)。一方、BUF_EMPT=1が検出され、RB_SELが”1”となると、読み出し対象のバッファがBUF0からBEF1に遷移する(つまり、BUF1が選択される)。
なお、ステータスWR_ENBおよびRD_ENBの状態遷移には、データ保持部121および122のBUF_FULLおよびBUF_EMPTを検出する必要がある。
図13は、図9に示すデータ保持部121におけるBUF_FULLおよびBUF_EMPTの遷移を説明するための図であり、図14は、図9に示すデータ保持部122におけるBUF_FULLおよびBUF_EMPTの遷移を説明するための図である。
図13において、ステータスRB_SEL=0でかつステータスBUF_EMPT=1であると、データ保持部121(BUF0)は空(empty)となる。一方、ステータスWB_SEL=0でかつステータスBUF_FULL=1であると、BUF0は満杯(full)となる。
図14において、ステータスRB_SEL=1でかつステータスBUF_EMPT=1であると、データ保持部122(BUF1)は空(empty)となる。一方、ステータスWB_SEL=1でかつステータスBUF_FULL=1であると、BUF1は満杯(full)となる。
図15は、図10に示すステータスWR_ENBの状態遷移を説明するための図であり、図16は、図10に示すステータスRD_ENBの状態遷移を説明するための図である。
図15において、BUF0およびBUF1がともに空(EMPTY)であると、ステータスWR_ENBはイネーブル(enable)=1に遷移する。一方、BUF0およびBUF1がともに満杯(FULL)であると、ステータスWR_ENBはディスエーブル(disable)=0に遷移する。
図16において、BUF0およびBUF1がともに空(EMPTY)であると、ステータスRD_ENBはdisable=0に遷移する。一方、BUF0およびBUF1がともに満杯(FULL)であると、ステータスRD_ENBはenable=1に遷移する。
なお、上述の図11〜図16において、ステータスをFULLおよびEMPTYの2状態で示しているが、ロジック信号において、”0”値および”1”値に置き換えてもよい。また、上記の状態遷移をRTL記述とするようにしてもよく、当該記述を論理合成した結果を論理回路(ハードウエア)として用いることができる。
図17は、図6に示す状態制御部1012の構成の一例を示すブロック図である。
図17では、図11〜図16で説明した状態遷移を行うための構成が示されている。状態制御部1012は、ライトバッファ選択(write buffer select)状態保持部201、リードバッファ選択(read buffer select)状態保持部202、第1のバッファ状態保持部203、第2のバッファ状態保持部204、ライトイネーブル(write enable)状態制御部205、およびリードイネーブル(read enable)状態制御部206を有している。そして、第1および第2のバッファ状態保持部203および204はそれぞれデータ保持部121および122の状態を保持する。
ところで、クライアント1〜4の転送データの総量は、データ保持部121および122の容量と等価とは限らない。このため、クライアント1〜4の各々がデータ転送を完了した時点で、データ保持部121(又はデータ保持部122)のデータ受信量がコンパレータ135(又はコンパレータ136)のレジスタ設定値(比較値)と一致しない場合には、当該一致しないクライアントのパス(チャネル)に関してデータ保持部にデータが蓄積された状態で待機状態となることをケアする必要がある。
図6において、バッファ制御部101aでは信号FLASHが定義される。この信号FLASHは、CPU(図示せず)を介して設定される信号であって、ステータスBUF_FULLともにオアゲート1013に入力される。信号FLASHはクライアント1のデータ転送完了の際に一度アクティブに設定され、状態制御部1012は、この時点での書き込み側データ保持部(121又は122)に対して読み出し許可ステータスを与える。
図18は、図1に示す中継器10に備えられたクライアントレジスタの一例を示す図である。
図示のクライアントレジスタはクライアント1〜4に対応して備えられている。クライアントレジスタはクライアントにおけるデータ転送の状態を示すステータスレジスタであって、中継器10における各クライアントのデータ転送状態を、CPU(図示せず)に通知するためのレジスタである。
クライアントレジスタ211はクライアント1について中継器10におけるデータ転送状態を示すステータスレジスタである。同様に、クライアントレジスタ212はクライアント2について中継器10におけるデータ転送状態を示すステータスレジスタである。クライアントレジスタ213はクライアント3について中継器10におけるデータ転送状態を示すステータスレジスタである。そして、クライアントレジスタ214はクライアント4について中継器10におけるデータ転送状態を示すステータスレジスタである。
クライアントレジスタ211〜214の構成は同様であるので、ここではクライアントレジスタ211について説明する。クライアントレジスタ211にはアクティブ(active)ステータス2111、送信(send)ステータス2112、バッファライトポイント(buff write point)ステータス2113、および送信イベントカウント(send event count)ステータス2114が定義される。
activeステータス2111は、例えば、1ビットのフラグ情報であり、”1”値で活性状態、”0”値で非活性状態と定義される。非活性状態とは中継器10において当該クライアントにかかるパス(チャネル)が使用されていないことを示す。一方、活性状態とはパスが使用されていることを示す。
別に中継器の状態を設定するレジスタにおいて各クライアントをenable又はdisableするレジスタが備えられていたとしても、クライアントレジスタは内部状態を反映するステータスフラグとして定義される。
sendステータス2112は、例えば、1ビットのフラグ情報であって、”1”値でDMAモジュール8に対して転送動作中であることを示し、”0”値で待機中(転送要求なしの状態)を示す。buff write pointステータス2113は、データ保持部121および122においてWR_ENB側(クライアントからのデータを蓄積する側)のバッファの現在の格納位置指示値を示す。
send event countステータス2114はクライアント1のデータ転送がバッファ101bの1転送単位で何回行われたかをカウントしたカウント値である。
これらクライアントレジスタ211〜214において、各ステータスの割当ビット数は、メモリ制御装置の仕様に応じて決定される。また、ここでは、クライアントレジスタ211〜214の各々についてそのビット幅を32ビットする。そして、例えば、activeステータス2111およびsendステータス2112の各々に1ビットを割り当て、buff write pointステータス2113に8ビットを割り当てる。そして、send event countステータスに16ビットを割り当てて、残りのビットをリザーブ(reserved)扱いとして参照禁止としてもよい。
図19は、図1に示す中継器10に備えられた転送属性レジスタの一例を示す図である。
図4および図5に関連して説明したように、複数のクライアントデータを不揮発性メモリ7にバッファ単位で格納した場合、バッファ単位のデータ格納順の履歴(バッファ単位のデータ群の属性)を保持して、データを使用する際に所望のクライアントデータを特定し読出し可能な状態とする必要がある。このため、図18に示す転送属性レジスタが用いられる。
図19において、転送属性レジスタ221〜225では、バッファ1転送分のデータ属性が4ビットで定義され、データ属性を8状態分纏めて1つのレジスタとされる(32ビット幅)。図1に示すクライアントの数は4であるので、ここでは必ずしも4ビットを必要とせず、データ属性の4ビットは一例である。
図19においては、図5に示すメモリマップを適用してレジスタが更新された状態で示されている。データ属性のフラグ値(4ビット)の”0001”をクライアント1に、“0010”をクライアント2に、“0011”をクライアント3に、そして、“0100”をクライアント4に割当てる。
転送属性レジスタの初期状態は”0000”とし不使用状態を表す。中継器10の制御部100が任意のクライアントデータをDMAモジュール8に転送完了する都度、当該クライアントの属性フラグ値によって転送属性レジスタの値を更新する。転送属性レジスタの消費方向については、例えば、転送属性レジスタ221(転送属性レジスタ0)のLSB側の4ビットからMSB側に向かって更新・移動し、転送属性レジスタ222、223、224、…、225の順にレジスタ書き換え対象を移動する。
転送属性レジスタをどの程度設定(実装)するかについては、メモリ制御装置の適用範囲によって決まる。例えば、3:2のアスペクト比で1400万画素の有効画素数を有するデジタルスチルカメラにおいて、構成画素数を4600×3060画素とする。撮像データから各種補正データを生成するための検出情報を抽出する際、撮像データから画像補正用の検出情報を、例えば、1ライン毎に32ビットの積分値を2値抽出したとする。そして、この様なクライアントが図1に示すように4つ接続されたとする。
一例として、バッファ101bにおけるデータ保持部121(およびデータ保持部122)の容量を、256ワード×32ビットとする。3060ライン×32ビット×2のデータを転送する場合、1つのクライアントにおけるDMAモジュール8への転送回数は24回となる。4つのクライアントがそれぞれ24回の転送をする場合を上限として設計を行う場合、転送属性レジスタにおける属性保持数は1レジスタ毎に8であるので、転送属性レジスタの実装数は12で対応することができる。
なお、図1に関連して説明したステータスレジスタ群105に、図18に示すクライアントレジスタおよび図19に示す転送属性レジスタを含めるようにしてもよい。前述のように、転送属性レジスタを設けることによって、不揮発性メモリ7にクライアント1〜4の一定量の分割データを任意の順番に格納しても、後で容易に再生することができる。
このように、本発明の第1の実施形態では、中継器10を備えて、複数のクライアントから不揮発性メモリ7にDMA転送を行うようにしたので、データ転送頻度(転送量)の少ないクライアントによるチャネルの消費量を抑圧することができる。
[第2の実施形態]
続いて、本発明の第2の実施形態によるメモリ制御装置の一例について説明する。なお、第2の実施形態によるメモリ制御装置の構成は、後述するように、中継器10の構成が異なるのみで他の構成は図1に示す例と同様である。
続いて、本発明の第2の実施形態によるメモリ制御装置の一例について説明する。なお、第2の実施形態によるメモリ制御装置の構成は、後述するように、中継器10の構成が異なるのみで他の構成は図1に示す例と同様である。
第2の実施形態においては、第1の実施形態で説明した転送属性レジスタを備えることなく、DMAモジュール8に転送するデータの先頭などに所定の属性情報を添付する。
図20は、本発明の第2の実施形態によるメモリ制御装置においてDMAモジュール8に転送するデータに添付される属性情報の一例についてそのフォーマットを示す図である。
図20において、属性情報(添付情報ともいう)231自体はデータ保持部121および122に格納する必要はなく、中継器10がデータ転送単位でデータ送信をする際にその先頭に添付される。添付情報231において第1の情報2311はクライアント属性(クライアント番号)であり、図19で説明した転送属性レジスタ221〜225の各々における4ビットの転送属性と情報量は等価である。
第2の情報2312はデータ保持部121又は122の進捗状態を示すバッファ蓄積エンドポイント値である。このバッファ蓄積エンドポイント値は任意のクライアントの中継器10における一回の転送量を示し、各クライアントのデータ転送の途中であれば、等面コンパレータ135および136の比較値として設定されるレジスタ値と等価な数値である。
データ転送の完了の際に、転送データ量が比較値に達せず終了すると、バッファ蓄積エンドポイント値にはその際の値が反映されることになる。この途中終了の際には、クライアント転送完了後にバッファ101b〜104bをフラッシュするようにCPU(図示せず)から中継器10に指示が行われる。これは、図9に示すオアゲート1013の論理和入力として信号FLASHを定義して、蓄積途中データの吐き出し制御を行うためである。
第3の情報2313はクライアント1〜4がバッファ101b〜104b単位で何回DMAモジュール8に対して分割転送動作を行ったかを示す転送イベントカウント値である。転送イベントカウント値はクライアントデータをバッファ量分のDMA転送を行う毎に、1インクリメントされる。この転送イベントカウント値2313は、データを分割転送単位で読み飛ばす場合などに用いられる。データ再構築の際に第3の情報2313が不要であれば割愛するようにしてもよい。
図20においては、DMAモジュール8とのデータ線I/Fを32ビット幅として、当該ビット幅に合わせたビット幅で添付情報231が示されている。例えば、クライアント属性情報2311に4ビット、バッファ蓄積エンドポイント値2312に8ビット、そして、転送イベントカウント値2313に16ビットを割り当て、残りのビットをreservedとして参照不可と定義するようにしてもよい。
図21は、本発明の第2の実施形態によるメモリ制御装置に備えられる中継器の一例を示すブロック図である。なお、図示の中継器は第1の実施形態で説明した中継器とその構成が異なるので、ここでは参照番号10’を付す。
レジスタ105に格納された情報はクライアント1〜4に対応する対応情報としてレジスタ105a〜105dに格納される。レジスタ105a〜105dに格納される情報は図18および図19で説明した情報と等価でよい。
図19で説明した転送属性レジスタに格納される情報と等価な情報は、DMAモジュール8にデータ転送を行う都度転送データとして第1の情報2311に添付されるので、中継器10’に記録して保持する必要はない。
中継器10’に備えられた制御部240は、中継器制御部100と同様の機能を有しており、さらに、拡張機能としてセレクタ241〜244の制御を行う。バッファ制御部101a〜104aがクライアント1〜4のデータをDMAモジュール8に転送する転送要求が同時に発生した際、制御部240はその調停を行う。この調停機能は従来のDMA制御における既知の処理と同様である。
例えば、中継器10’においてクライアント1からのデータ受信量が一定量に達し、次にDMAモジュール8への転送を開始する際には、バッファ101bに蓄積されたデータ転送の前に、図1に示すセレクタ241をレジスタ105aに切り替える。これによって、クライアント属性情報がDMAモジュール8に送出される。
クライアント属性情報は、図20で説明したフォーマットを備えており、第1の情報2311には、図19で説明した転送属性レジスタ情報と等価のビット配置でクライアントを識別できるように、数値を割り当てる。第2の情報2312は、レジスタ211のbuff write pointステータス2113と等価な情報でよい。また、第3の情報2313はレジスタ211のsend event countステータス2114と等価な情報でよい。
このように、本発明の第2の実施形態では、中継器においてDMAモジュール8に転送するデータの先頭などに所定の属性情報を添付するようにしたので、不揮発性メモリ7に格納されたデータを容易に再生することができる。
[第3の実施形態]
次に、本発明の第3の実施形態によるメモリ制御装置について説明する。なお、第3の実施形態によるメモリ制御装置の構成は図1に示す例と同様である。
次に、本発明の第3の実施形態によるメモリ制御装置について説明する。なお、第3の実施形態によるメモリ制御装置の構成は図1に示す例と同様である。
まず、第3の実施形態によるメモリ制御装置の理解をようにするため、DMA二次元転送の際の水平分割走査について説明する。
図22は、本発明の第3の実施形態によるメモリ制御装置おける水平分割走査を説明するための図である。
図22では、上述のDMA二次元転送においてYN=0とした際の水平分割(水平方向の分割)走査が示されており、いま、Y方向では分割を行わず、X方向にXAのサイズでXN個のブロックに画像データなどのデータが分割され、そのサイズがXA×Yであるとする。ブロック”1”〜”4”の各々における走査の際には、Y方向に1ライン走査する毎に、次のラインの先頭にメモリに格納されたアドレスがくるようにオフセット(OFFSET)設定が行われる。また、1ブロックの走査が完了すると、メモリに格納されたアドレスの飛び先は次ブロックの先頭画素の位置にオフセット設定される。
図23は、図2に示す水平分割処理の際のメモリマップを説明するための図である。
水平分割したブロック71〜74の各々はDMA転送データとしてその配列順に転送される。一方、不揮発性メモリ7上のアドレス順としては、各ブロックのデータはXAの単位で巡回する。例えば、ブロック71においては、XA分のデータが転送された後、XA×XNのオフセット分遷移して続くデータが格納される。XAデータをYライン分格納した後、転送開始アドレスからXA遷移したOFFSET位置に遷移して続くブロック72のデータの格納が開始される。
ここでは、水平分割した1ブロックのデータ量を、中継器10からDMAモジュール8に対する1回の転送指示量として定義する。つまり、中継器10は1ブロック分のデータを蓄積するまではDMAモジュール8に対してデータ転送要求を送出しない。
なお、以下の説明では、バッファ101b〜104bの総量が1ブロックのデータ量を賄えるものとする。
図24は、図22に示す水平分割処理の二次元DMA転送において4つのクライアントからの転送データの格納を説明するための図である。
いま、図22に示すブロック71をさらに分割ブロック711〜714の4領域にさらに分割して、各分割ブロック711〜714内のデータをクライアント1〜4のデータ格納領域に割当てる。同様にして、ブロック72〜74についても分割ブロック721〜744に分割して、それぞれクライアント1〜4のデータ格納領域に割当てる。
分割ブロックの各々のデータ領域は、二次元に(X,Y)の大きさで規定されるが、ここではX方向の大きさをXAとして各分割ブロックで共通とする。またY方向についてはそれぞれY1、Y2、Y3、およびY4として、行列のようにみて同一行では同一の大きさとする。
DMA転送データが画像データであれば、X方向には画素数、Y方向にはライン数を指定すればよいが、単に数値データの場合には、単位はバイト又はワードなどのデータ量で指定してもよい。
例えば、図1に示すクライアントのデータ容量は、分割ブロック712、722、732、および742の総和を上限として転送することができる。つまり、(4×XA×Y2)の最大データ量でクライアントのデータを転送することができる。XA=128ワード、Y2=512とすると、65536ワードのデータ量となる。1ワード=4バイトとすると、262144バイトのデータ量となる。Y2=1であれば、128ワード=512バイトである。
図25は、図24に示す分割ブロック711〜744を不揮発性メモリ7に書き込む際のアドレスマップを示す図である。
いま、Y1=Y2=Y3=Y4=1とすると、ブロック分割されて2次元DMA転送された各クライアントのデータは不揮発性メモリ7上で元の配列に揃う。例えば、クライアント4のデータとして分割ブロック714、724、734、および744の配列に並ぶ。
各クライアントのデータ転送量を等価とすれば、中継器10を介してマージした各クライアントのデータは、クライアント毎に不揮発性メモリ7上で一括転送したように再配置される。
中継器10はブロック71〜74の各ブロック単位でDMAモジュール8に対して転送要求を送る。例えば、ブロック73内の分割ブロック731、732、733、および734の単位で不揮発性メモリ7に記憶される。ブロック73からブロック74に書き込みが変わる際には、オフセット量に応じて不揮発性メモリ7に書き込み領域(書き込みアドレス)が制御される。そして、不揮発性メモリ7上における分割ブロック731、732、733、および734のアドレスマップ上の格納位置は図28に示す状態となる。
図26は、図6に示すステータスRD_REQの状態遷移を説明するための図である。
図26において、BUF0およびBUF1がともに空(EMPTY)であると、ステータスRD_REQはdisable=0に遷移する。一方、BUF0およびBUF1がともに満杯(FULL)であると、ステータスRD_REQはenable=1に遷移する。そして、クライアントデータのバッファ状態はステータスRD_REQとして中継器制御部100に送られる。中継器制御部100は、各クライアントのステータスRD_REQに応じてDMAモジュール8に対して転送要求を送る。
なお、図26において、ステータスをFULLおよびEMPTYの2状態で示しているが、ロジック信号において、”0”値および”1”値に置き換えてもよい。また、上記の状態遷移を論理記述言語(VHDL,Verilogなど)を用いて記述すれば、当該記述を論理合成した結果を論理回路(ハードウエア)として用いることができる。
図27は、図1に示す中継器制御部100のデータ読み出し状態制御における状態遷移を説明するための図である。ここでは、DMAモジュール8に送出するデータの配置は、図24で説明した水平分割走査によるものとする。
前述したように、データ転送の単位は、二次元DMAのフレームを水平に分割した1短冊(図4に示す分割ブロック711、712、713、および714の単位)である。ここでは、クライアント1〜4の順にそれぞれXA×Yn(n=1〜4)のデータ量においてクライアント1〜4は転送要求を送出する。Y1=Y2=Y3=Y4=Y=1として、不揮発性メモリ7上にリニアにデータが格納されるようにすると、図25に示す状態となる。
データ転送の単位とは、DMAモジュール8がデータ転送量をカウントするカウンタの計数がリニアに増えるデータ量の単位をいう。なお、中継器10からDMAモジュール8に対するデータ転送が連続して生起することをいうものではなく、バッファの単位で一時的に途切れてもよい。
図27において、状態S211はアイドル(Idle)状態であって、メモリ制御装置のリセット後及び中継器10がdisable状態の場合にはアイドル状態とする。中継器10がenable状態となると、状態S211から状態S212に遷移して、中継器制御部100は転送先頭のバッファが読み出し可となるのを待つ。
クライアント1の転送データがバッファ101bに格納され、転送条件が成立した時点で、ステータスRD_REQ(=1)がバッファ制御部101aから中継器制御部100に送られる。ここで、クライアント1のデータをDMAモジュール8に転送する転送要求をRD_REQ(101)、クライアント2の転送要求をRD_REQ(102)、クライアント3の転送要求をRD_REQ(103)、そして、クライアント4の転送要求をRD_REQ(104)とする。なお、他の信号およびステータスについてもクライアント毎に同様に参照番号101〜104を付す。
RD_REQ(101)=1を受けると、状態S212から状態S213に遷移する。状態S213においては、ステータスRD_ENB101=1およびRD_ENB102〜104=0として、中継器10はクライアント1のデータをDMAモジュール8に対して送出する。ステータスRD_ENB101を受けると、バッファ制御部101aはデータ転送を開始する。
そして、バッファ制御部101aはバッファ単位(レジスタ指示単位)でデータを送出した後、信号BUF_EMPT101=1を中継器制御部100に送って、所定の単位の転送の完了を知らせる。これによって、中継器制御部100のデータ読み出し状態制御は状態S214に遷移する。
中継器制御部100のデータ読み出し状態制御は、クライアント2のデータ転送要求(RD_REQ102=1)を受けて状態S215に遷移する。状態S215においては、ステータスRD_ENB102=1およびRD_ENB101および103〜104=0として、クライアント2のバッファデータがDMA制御部8に転送される。
バッファ制御部102aは所定のデータを送出した後、ステータスBUF_EMPT102=1を発行する。当該ステータスを受けると、データ読み出し状態制御は状態S215から状態S216に遷移する。そして、中継器制御部100はクライアント3のバッファのステータスRD_REQ103=1となるのを待つ。
状態S217、S218、およびS219についても、クライアント1および2の場合と同様に状態遷移が行われて、クライアントの各々のデータバッファからデータの出力が行われる。
このようにして、中継器制御部100のデータ読み出し制御によって、図24および図25で説明した二次元DMAの水平分割走査が行われることになる。
なお、図1に示す制御状態を記憶するレジスタ105は、短冊処理された二次元データを二次元DMA転送する際の進捗状況を管理するステータスレジスタとして用いられる。レジスタ105は完了状態を管理するので、必要であれば中継器10のDMAモジュール8に対するデータ転送完了割込みステータスを生成することもできる。
このように本発明の第3の実施形態によれば、中継器10を備えて、複数のクライアントから不揮発性メモリ7にDMA転送を行うようにしたので、データ転送頻度(転送量)の少ないクライアントによるチャネルの消費量を抑圧することができる。
[第4の実施形態]
続いて、本発明の第4の実施形態によるメモリ制御装置について説明する。なお、第4の実施形態におけるメモリ制御装置の構成は図1に示すメモリ制御装置の構成と同様である。
続いて、本発明の第4の実施形態によるメモリ制御装置について説明する。なお、第4の実施形態におけるメモリ制御装置の構成は図1に示すメモリ制御装置の構成と同様である。
図28は、本発明の第4の実施形態における水平分割走査の一例を示す図である。
図28に示す例では、クライアント3に対して短冊分割内のデータ領域を多く与えて、クライアント3の転送データ総量を他のクライアントの3倍に設定している。この場合には、図1に示すバッファ103bの割当を多くする。例えば、図1に示す構成はLSI上のロジックとして実装可能である。そして、データ保持部121および122は、例えば、SRAMとして実装する。
データ保持部121および122の各々は、図9で説明したように構成されるが、実装の際にはバッファ自体のイネーブル設定を設けて、SRAMの構成単位でクライアントの各々にいずれのSRAMを割り当てるかについてレジスタ設定とセレクタ回路で切り替えるようにする。
これによって、あるクライアントのDMA転送が同時に生起しない場合には、他の活性クライアントにその分のSRAMを融通することができ、資源を使用することができる。
図29は、図28に示す水平分割走査によるデータを中継器10を介して二次元DMA転送した際の不揮発性メモリにおけるデータ格納状態のメモリマップを示す図である。
図29においては、SRAM構成単位を256ワード×32ビットとし、図28に示すクライアント1〜4のバッファの取扱単位(つまり、処理単位)とする。いま、二次元DMAの転送設定において、転送単位をバイトとする。図28に示すXAを256×32ビット=256×4バイト=1024バイトとし、XN=4とする。また、YA=1、Y=6とする。
クライアント1、2、および4の各々の1転送単位はSRAM構成単位として、クライアント3の1転送単位はSRAM構成単位3個分相当とする。図28に示す添字2211〜2246の各々は、SRAM構成単位のデータ量に相当し、水平分割の短冊において各クライアントのデータ転送量の最小単位である。
図示の例では、クライアント3のSRAM割当は構成単位3個分(図9に示す構成ではそれを2バンク分)を確保することができれば、制御は図27で説明した制御と同様でよい。
一方、構成単位1個分のSRAM(図12に示す構成ではそれを2バンク分)で運用するならば、ステータスRD_ENBの発行制御が別に必要となるばかりでなく、他のクライアントを待たせる確率も増加する。
さらに、この場合には、図27で説明した中継器100におけるデータ読み出し状態制御は、例えば、図28に示す転送制御の際には状態217のRD_REQ103受付を3回、BUF_EMPT103の発行を3回行うという制御の追加が必要となる。
回路実装を考慮すると、図27に示す状態S213、S215、S217、およびS219において、ステータスRD_REQの受付回数およびステータスBUF_EMPTYの発行回数の設定を行うレジスタを追加すればよい。
SRAMリソースと各クライアントのDMA転送スループットおよび不揮発性メモリ7に対するデータ格納配列を考慮して、適宜システム設計が行われるが、ここでは、SRAMの確保について構成単位毎に設定すること以外に限定しない。
DMA転送の完了後、不揮発性メモリ7上の各クライアントにおけるデータ転送単位2211〜2246の配置は、クライアント1は2211、2221、2231、および2241である。そして、上記のXA、XN、YA、およびYの設定においては、データの一括転送後の受信状態と同一となる。
同様に、クライアント2では2212、2222、2232、および2242となり、クライアント4では2216、2226、2236、および2246となる。これらも一括転送時と同様の結果となる。
バッファ容量を他のクライアントの3倍としたクライアント3の転送結果については、第1の配置2213、2223、2233、および2243、第2の配置2214、2224、2234、および2244、そして、第3の配置2215、2225、2235、2245の集合に分割される。
図29において、各データ集合の間にGAP(間隔)を設けている。この間隔は説明上(視覚上)便宜的に設けたものである。実際には不要としてもよいし、DRAMのアライメント(ページング又はバンク処理)を考慮して間隔を設けるようにしてもよい。
本発明の第4の実施形態では、中継器10を介してクライアント3の二次元DMA転送結果がクライアント3のみをDMA一括転送した場合と異なる。但し、DMAチャネルの消費抑圧効果は得られる。転送の単位も取扱単位となるので、ファーム読み出しの際に順番を考慮すれば元のデータ配列は容易に復元することができる。
[第5の実施形態]
次に、本発明の第5の実施形態によるメモリ制御装置について説明する。なお、第5の実施形態におけるメモリ制御装置の構成は図1に示すメモリ制御装置の構成と同様である。
次に、本発明の第5の実施形態によるメモリ制御装置について説明する。なお、第5の実施形態におけるメモリ制御装置の構成は図1に示すメモリ制御装置の構成と同様である。
第5の実施形態においては、図9および図10で説明したバッファ制御について、各クライアントのデータ蓄積量および設定バッファ容量の関係をフレキシブルに設定・制御する。
図10に示すアドレス制御部では、データライトおよびデータリードの量は等価であり、同一のレジスタ(図10において”reg_buf_size”)で定義される。いま、任意のクライアントにおいてDMAの単位転送量(短冊中に含まれる1クライアントのデータ量)が、バッファの取扱単位と乖離する場合には、その乖離量を調整(吸収)するためデータ受信量と転送量とを調整する必要がある。
ここでは、二次元DMA転送の単位とバッファの取扱単位とを独立に定義することができない。このため、クライアントデータの受信量は任意として、中継器10からの送信量をバッファの取扱単位(又はその整数倍)とする。
図30は、本発明の第5の実施形態によるメモリ制御装置で用いられるアドレス制御部の構成についてその一例を示すブロック図である。また、図31は、本発明の第5の実施形態によるメモリ制御装置において中継器に備えられるバッファの構成を示すブロック図である。
図30において、図10に示すアドレス制御部と同一の構成要素については同一の参照番号を付す。また、図31において、図9に示すバッファ同一の構成要素については同一の参照番号を付す。
図示のアドレス制御部1011’では、レジスタ”reg_rec_size”が受信データ数を指示する値を設定する。ライトアドレスカウンタ部131の出力値とこのレジスタ値とがコンパレータ135で比較されて、出力値とレジスタ値とが同値になると、コンパレータ135はバッファFULL状態とするため、ステータスBUF_FULLを”1”値とする(つまり、BUF_FULL=1でバッファFULL状態を示す)。
ステータスBUF_FULLは、図6に示すバッファ状態制御部1012に出力され、バッファ制御部1012はステータスBUF_FULLに応じてステータスRD_REQを発行する。そして、ステータスRD_REQは図1に示す中継器制御部100に出力される。
ステータスRD_REQの発行の後、中継器制御部100からバッファリードのステータス”RD_ENB”が発行されると、後段から停止要求信号ISTPが発行されない限り、リードアドレスカウンタ部132は計数を行う。そして、リードアドレスカウンタ部132は、図31に示すバッファ101b’の読み出しアドレスを更新する。
更新後のアドレス値は、コンパレータ241によってレジスタ値”reg_rec_size”と比較され、一致状態がフリップフロップ(FF:レジスタ回路)242に記憶される。
コンパレータ136はリードアドレスカウンタ132の出力値とレジスタ値”reg_buf_size”とを比較して、一致するとステータスBUF_EMPTを出力するとともに、カウンタ値をリセットしてデータリードを完了する。
図31において、バッファ101b’は図9に示すバッファ101bと比べてステータスDUMMY_OUTを入力に有し、当該ステータスが”1”値の場合にはレジスタ値”reg_dmm_dat”値を出力する点が異なる。
セレクタ251は、上述のように、データ保持部121および122の出力値とレジスタ値”reg_dmm_dat”とのいずれか一方を選択する。ここでは、”reg_buf_size”≧“reg_rec_size”であり、中継器10からの出力データの量は、図31に示す短冊中の要素(XA×YA)の単位に固定される。
図示のレジスタの各々は回路搭載の際には別にI/Fを備え、回路動作中はスタティックな設定値として機能するものである。例えば、CPU(図示せず)を備える場合には、CPUのI/Fからレジスタマップに応じて設定される。
このように、本発明の第5の実施形態によれば、中継器10を備えて、複数のクライアントから不揮発性メモリ7にDMA転送を行うようにしたので、データ転送頻度(転送量)の少ないクライアントによるチャネルの消費量を抑圧することができる。
[第6の実施形態]
続いて、本発明の第6の実施形態によるメモリ制御装置について説明する。なお、第6の実施形態におけるメモリ制御装置の構成は図1に示すメモリ制御装置の構成と同様である。
続いて、本発明の第6の実施形態によるメモリ制御装置について説明する。なお、第6の実施形態におけるメモリ制御装置の構成は図1に示すメモリ制御装置の構成と同様である。
前述のように、図1に示す制御状態を記憶するレジスタは、図24および図28で説明した短冊処理された二次元データを二次元DMA転送する際の進捗状況を管理するステータスレジスタである。レジスタ105に対して終了条件を設定可能とすれば、任意のクライアントにおけるデータ転送完了の状態を制御することができる。
例えば、図24において、クライアント1のデータ転送を分割ブロック(データ)731までと指示すれば、分割ブロック741の受信は発生しない。よって、中継器制御部100はステータスRD_REQを待つことなくステータスRB_ENBを発生する。
図32は、本発明の第6の実施形態によるメモリ制御装置で用いられるアドレス制御部の一例を示すブロック図である。なお、図32において、図30に示すアドレス制御部と同一の構成要素については同一の参照番号を付す。
図示のアドレス制御部1011”は、図30に示すアドレス制御部1011’と比べてオア(OR)ゲート261が追加されている。ダミーデータリード選択信号DUMMY_SELは中継器制御部100から発行されるダミーデータリード選択のためのパルス信号である。
このダミーデータリード選択信号はORゲート261を介してフリップフロップ242に保持される。そして、ブリップフロップ242はダミーアウト信号DUMMY_OUTを出力する。
このダミーアウト信号DUMMY_OUTによって、図24に示す分割ブロック741の受信なしに、中継器制御部100はDMAモジュール8に対して当該分割ブロックに係るダミーデータを送信する。
このように、本発明の第6の実施形態では、短冊状に分割した二次元データをDMA転送する際、分割ブロック単位でダミーデータを出力することができ、中継器10は異なるデータ量のクライアントの受け付けを行うことができる。
以上のように、本発明の実施の形態によれば、DMA転送の際に、データ転送頻度(転送量)の少ないクライアントによるチャネルの消費量を抑圧することができる。
上述の説明から明らかなように、図1に示す例においては、中継器10が中継手段、管理手段、および指定手段として機能する。また、DMAモジュール8はDMA転送手段として機能する。
なお、上述のメモリ制御装置は、例えば、画像形成装置に備えられて、画像データを画像処理する際に、当該画像データを一時的に不揮発性メモリ7に格納する場合にDMA転送を行う。
以上、本発明について実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
例えば、上記の実施の形態の機能を制御方法として、この制御方法をメモリ制御装置に実行させるようにすればよい。また、上述の実施の形態の機能を有するプログラムを制御プログラムとして、当該制御プログラムをメモリ制御装置が備えるコンピュータに実行させるようにしてもよい。なお、制御プログラムは、例えば、コンピュータに読み取り可能な記録媒体に記録される。
上記の制御方法および制御プログラムの各々は、少なくともDMA転送ステップ、格納ステップ、および中継ステップを有している。
また、本発明は、以下の処理を実行することによっても実現される。つまり、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種の記録媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPUなど)がプログラムを読み出して実行する処理である。
1,2,3,4 クライアント
5 メモリコントローラ
7 不揮発性メモリ
8 DMAモジュール
10 中継器
100,240 中継器制御部
101a〜104a バッファ制御部
101b〜104b バッファ
1011 アドレス制御部
1012 状態制御部
5 メモリコントローラ
7 不揮発性メモリ
8 DMAモジュール
10 中継器
100,240 中継器制御部
101a〜104a バッファ制御部
101b〜104b バッファ
1011 アドレス制御部
1012 状態制御部
Claims (14)
- フレーム単位のデータを複数のクライアントからそれぞれ受けて当該データを処理する際、前記データを一時的にメモリに記憶するため前記メモリにDMA転送するためのメモリ制御装置であって、
前記データを前記メモリにDMA転送する際、二次元DMA転送を行うDMA転送手段と、
前記クライアントおよび前記DMA転送手段に接続され、前記クライアントの各々から送信されたデータを一時的に格納するバッファ手段を備え、前記クライアントの各々から送信されたデータを、独立に領域を確保した前記バッファ手段に一時格納するととともに、前記バッファ手段に係る処理単位を満たしたクライアントのデータについて前記DMA転送手段に対して所定のデータ量の転送要求を送信する中継手段と、
を有することを特徴とするメモリ制御装置。 - 前記所定のデータ量は、前記二次元DMA転送における二次元データを垂直方向に複数のブロックに分割したブロック単位であることを特徴とする請求項1に記載のメモリ制御装置。
- 前記中継手段には、前記バッファ手段の処理単位を満たしたクライアントのデータを前記DMA手段に転送する都度、当該クライアントの属性を示す属性情報を記録するレジスタ手段が備えられていることを特徴とする請求項1又は2に記載のメモリ制御装置。
- 前記中継手段は、前記バッファ手段の処理単位を満たしたクライアントのデータを前記DMA転送手段に転送する都度、当該クライアントの属性を示す属性情報を前記DMA転送手段に転送するデータに添付することを特徴とする請求項1又は2に記載のメモリ制御装置。
- 前記中継手段は、前記属性情報を前記DMA転送手段に転送するデータの先頭に添付することを特徴とする請求項4に記載のメモリ制御装置。
- 前記中継手段は、所定の割り込み信号を受けると、前記バッファ手段に一時的に格納されたデータをDMA転送手段に転送することを特徴とする請求項1〜5のいずれか1項に記載のメモリ制御装置。
- 前記所定のデータ量は、前記二次元DMA転送における二次元データを水平方向に複数のブロックに分割したブロック単位であって、当該ブロック単位を前記DMA転送手段に対するデータ転送単位とすることを特徴とする請求項1に記載のメモリ制御装置。
- 前記中継手段は、前記DMA転送単位に前記クライアントの各々について前記バッファ手段に蓄積されたデータを順に読み出して配列することを特徴とする請求項7に記載のメモリ制御装置。
- 前記中継手段に備えられたバッファ手段は複数のバッファの集合からなり、
前記中継手段は前記クライアントの各々に対して少なくとも1つのバッファを割り当てることを特徴とする請求項7に記載のメモリ制御装置。 - 前記中継手段は、前記バッファ手段における複数の領域を、前記DMA転送手段にデータを転送するデータ転送の対象であるクライアントに対して割り当てることを特徴とする請求項7に記載のメモリ転送装置。
- 前記クライアントの各々について前記バッファ手段のデータの受信量を管理する管理手段と、
前記受信量を示すバッファサイズを指定する指定手段とを有し、
前記管理手段によって前記バッファサイズが示す受信量に対応するデータが前記バッファ手段に蓄積されたとされると、前記中継手段は当該クライアントに係るデータのDMA転送開始要求を前記DMA転送手段に送ることを特徴とする請求項7に記載のメモリ制御装置。 - 前記中継手段は前記データ転送単位が満たされないと前記データ転送単位が満たされるまで所定のダミーデータを送出することを特徴とする請求項7に記載のメモリ制御装置。
- フレーム単位のデータを複数のクライアントからそれぞれ受けて当該データを処理する際、前記データを一時的にメモリに記憶するため前記メモリにDMA転送するためのメモリ制御装置の制御方法であって、
前記データを前記メモリにDMA転送する際、二次元DMA転送を行うDMA転送ステップと、
前記クライアントの各々から送信されたデータを一時的に格納するバッファに独立に領域を確保して、前記クライアントの各々から送信されたデータを、前記バッファに一時格納すると格納ステップと、
前記バッファに係る処理単位を満たしたクライアントのデータについて前記DMA転送ステップに所定のデータ量の転送要求を送信する中継ステップと、
を有することを特徴とする制御方法。 - フレーム単位のデータを複数のクライアントからそれぞれ受けて当該データを処理する際、前記データを一時的にメモリに記憶するため前記メモリにDMA転送するためのメモリ制御装置の制御プログラムであって、
前記メモリ制御装置が備えるコンピュータに、
前記データを前記メモリにDMA転送する際、二次元DMA転送を行うDMA転送ステップと、
前記クライアントの各々から送信されたデータを一時的に格納するバッファに独立に領域を確保して、前記クライアントの各々から送信されたデータを、前記バッファに一時格納すると格納ステップと、
前記バッファに係る処理単位を満たしたクライアントのデータについて前記DMA転送ステップに所定のデータ量の転送要求を送信する中継ステップと、
を実行させることを特徴とする制御プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013024396A JP2014154000A (ja) | 2013-02-12 | 2013-02-12 | メモリ制御装置、その制御方法、および制御プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013024396A JP2014154000A (ja) | 2013-02-12 | 2013-02-12 | メモリ制御装置、その制御方法、および制御プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014154000A true JP2014154000A (ja) | 2014-08-25 |
Family
ID=51575792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013024396A Pending JP2014154000A (ja) | 2013-02-12 | 2013-02-12 | メモリ制御装置、その制御方法、および制御プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014154000A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11683270B2 (en) | 2018-12-19 | 2023-06-20 | Samsung Electronics Co., Ltd. | Communication device including plurality of clients |
-
2013
- 2013-02-12 JP JP2013024396A patent/JP2014154000A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11683270B2 (en) | 2018-12-19 | 2023-06-20 | Samsung Electronics Co., Ltd. | Communication device including plurality of clients |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8601192B2 (en) | Arbitration device, arbitration system, arbitration method, semiconductor integrated circuit, and image processing device | |
JP5411530B2 (ja) | 並列処理プロセッサシステム | |
JP2008269282A (ja) | 情報処理装置および方法、並びにプログラム | |
JP2006318139A (ja) | データ転送装置、データ転送方法およびプログラム | |
JP2013515980A (ja) | データ転送装置およびその制御方法 | |
US8838862B2 (en) | Data transfer device, method of transferring data, and image forming apparatus | |
US20140344512A1 (en) | Data Processing Apparatus and Memory Apparatus | |
US10225425B2 (en) | Information processing apparatus and method for controlling the same | |
US9170963B2 (en) | Apparatus and method for generating interrupt signal that supports multi-processor | |
TW201423403A (zh) | 共用資源的存取請求之有效率處理 | |
US10216634B2 (en) | Cache directory processing method for multi-core processor system, and directory controller | |
JP2012043031A (ja) | 共有キャッシュメモリ装置 | |
US7774513B2 (en) | DMA circuit and computer system | |
US9767054B2 (en) | Data transfer control device and memory-containing device | |
JP2014154000A (ja) | メモリ制御装置、その制御方法、および制御プログラム | |
JP2017016285A (ja) | 複数のデータ処理部でバッファを共有するデータ制御装置、制御方法 | |
US11886365B2 (en) | DMA control circuit with quality of service indications | |
JP2014167818A (ja) | データ転送装置およびデータ転送方法 | |
US20050135402A1 (en) | Data transfer apparatus | |
JP4170330B2 (ja) | 情報処理装置 | |
JP4335327B2 (ja) | 調停装置および方法 | |
US9990285B2 (en) | Data access control apparatus | |
JP2014238768A (ja) | データ処理装置およびデータ転送制御装置 | |
JP2006094400A (ja) | 画像処理装置および画像処理方法 | |
JP2008305215A (ja) | バスシステム |