(58)【調査した分野】(Int.Cl.,DB名)
前記レジスタは前記転送順位の高い順にアドレスが割り振られ、前記要求並び替え部からの出力ごとに前記データ転送要求が前記転送順位の高いアドレスに繰り上がることを特徴とする請求項1または2に記載のデータ転送制御装置。
前記第1チャネル群に属するDMAチャネルのデータ転送要求が前記第1要求保持部に保持されていない状態から新たに保持されるまでの所定期間、前記第2要求保持部に保持されている前記データ転送要求が前記第2要求並べ替え部により選択されることをマスクする第1マスク部を備えることを特徴とする請求項5に記載のデータ転送制御装置。
前記第2要求並び替え部による前記第2セット数が予め定められた連続転送回数のセット回数に達することに応じて、前記第2要求保持部に保持されている前記データ転送要求が前記第2要求並べ替え部により選択されることをマスクする第2マスク部を備えることを特徴とする請求項5に記載のデータ転送制御装置。
【発明を実施するための形態】
【0008】
図1として第1実施形態におけるブロック図を示す。メモリアクセス制御部1は調停部A1、第1転送パラメータ選択部TS1、要求保持部K1、要求並び替え部SC1、第2転送パラメータ選択部TS2、共有バスI/F部I1を備える。
【0009】
外部装置からメモリへのDMAアクセス要求に伴い、調停部A1には、複数のDMAチャネル信号DMA1ないしDMAnが入力される。DMAチャネル信号DMA1ないしDMAnはDMAアクセス要求が行われたDMAチャネルの番号を示す信号である。また、第1転送パラメータ選択部TS1には、DMAチャネル信号DMA1ないしDMAnに対応する複数の転送パラメータ信号TP1ないしTPnが外部から入力される。転送パラメータTP1ないしTPnは、DMAアクセスを行うメモリのアドレスの指定、リードライト等のアクセス方法の指定、および後述する連続転送フラグを含む信号である。
調停部A1は同時に受け付けられた複数のDMAチャネル信号DMA1ないしDMAnについて予め定められたチャネルの優先順位に従って調停を行う。そして、調停部A1は、DMAチャネル信号の調停後、DMAチャネル信号を要求保持部K1および第1転送パラメータ選択部TS1へと出力する。そして、第1転送パラメータ選択部TS1は、調停部A1から入力されたDMAチャネル信号に対応する転送パラメータ信号を要求保持部K1へと出力する。
【0010】
要求保持部K1はDMAチャネル要求保持部K11、転送パラメータ保持部K13、および要求保持ポインタK15を備える。DMAチャネル要求保持部K11には、調停部A1から、調停部A1によって調停されたDMAチャネル信号が入力される。転送パラメータ保持部K13は第1転送パラメータ選択部TS1に接続され、第1転送パラメータ選択部TS1から出力される、調停されたDMAチャネル信号に対応する転送パラメータ信号が入力される。
【0011】
DMAチャネル要求保持部K11および転送パラメータ保持部K13は、ともにアドレス0からアドレスmまでのm+1個のレジスタを備える。DMAチャネル要求保持部K11および転送パラメータ保持部K13の備えるレジスタは、ともに要求保持ポインタK15によって指示される。DMAチャネル要求保持部K11には、アドレス0〜mの各レジスタに、外部からの伝送要求に対して調停部A1で調停されるDMAチャネル信号がアドレスの若い順に格納された上で保持される。転送パラメータ保持部K13には、アドレス0〜mの各レジスタに、DMAチャネル要求保持部K11の各レジスタに保持されているDMAチャネル信号に対応する転送パラメータ信号がアドレスの若い順に格納された上で保持される。
【0012】
要求保持ポインタK15は、DMAチャネル要求保持部K11のレジスタのうちDMAチャネル信号が保持されているレジスタのアドレスの最大値、および転送パラメータ保持部K13のレジスタのうち転送パラメータ信号が保持されているレジスタのアドレスの最大値を示す。すなわち、要求保持ポインタK15は、DMAチャネル要求保持部K11に保持されている伝送要求のなされたDMAチャネル信号の個数から1を減算した値、および転送パラメータ保持部K13に保持されている転送パラメータ信号の個数から1を減算した値を示す。
【0013】
要求保持部K1から出力されるDMAチャネル信号は要求並び替え部SC1に入力される。また、要求保持部K1から出力される転送パラメータ信号は要求並び替え部SC1および第2転送パラメータ選択部TS2に入力される。
【0014】
要求並び替え部SC1は、連続アクセス制御部SC11と、カレントポインタSC133と、ネクストポインタ135と、ポインタ制御部SC131と、シフト制御部SC15とを備える。要求並び替え部SC1は、要求保持部K1からDMAチャネル信号が入力される。
連続アクセス制御部SC11は連続カウンタSC111を備える。連続アクセス制御部SC11には、調停部A1および外部のCPUから、同一のDMAチャネルからメモリへの連続アクセスのディセーブル/イネーブルを制御する信号が入力される。また、要求保持部K1から転送パラメータが入力される。転送パラメータには連続転送フラグが含まれており、連続転送フラグによっても同一のDMAチャネルからメモリへの連続アクセスのディセーブル/イネーブルが制御される。
【0015】
例えば、画像データ転送の場合、各チャネルがアクセスするメモリのアドレスは連続しているため、各チャネルはメモリ上の同一ページ内へ連続してアクセスする場合が多い。メモリコントローラM1は、同一ページ内への連続アクセスの場合、プリチャージ動作を行わないでデータ転送行うことができる。よって、チャネル番号ごとにまとめて並び替えて連続した要求を発行することで高効率な転送を行うことが可能となる。
【0016】
アクセス要求を連続させる判定のための情報は、あらかじめDMAチャネルに対応させてCPUから指示、あるいは、調停部A1から優先順位の高いチャネルについて動的に指示する。
【0017】
画像データ転送の場合、水平画素折り返しや1フレーム内の局所アクセスでは、アドレスが不連続になる可能性がある。そこで、連続アクセスではないことを、チャネルの要求と同時に連続転送フラグをディセーブルにして指示し変更可能とする。この連続転送フラグは転送パラメータに埋め込まれ、マスターデバイスから転送される。
【0018】
例えば、撮像時におけるCMOSセンサのデータ保持可能期間などの外部装置の時間的制約等に起因するシステム破綻を回避するためにまとまったデータ転送が必要とされる時には、連続転送フラグをイネーブルとすることで連続転送を可能とする。
【0019】
さらに同格のチャネルは平均的に連続となるように、あるいは特定チャネルばかりが連続しないように、連続アクセスを許可する回数をチャネルごとに指示し、連続カウンタSC111によって制御し、アプリケーションに応じた調停と高効率アクセスが調整できるようにする。
【0020】
ポインタ制御部SC131は、連続アクセス制御部SC11からの制御信号に基づき、カレントポインタSC133、ネクストポインタSC135、シフト制御部SC15を制御する。
カレントポインタSC133はDMAチャネル要求保持部K11および転送パラメータ保持部K13のレジスタを指示するポインタである。カレントポインタSC133に指されたレジスタに格納されているDMAチャネル信号と転送パラメータ信号が第2転送パラメータ選択部TS2に選択される。
【0021】
ネクストポインタSC135は、カレントポインタSC133と同様に、DMAチャネル要求保持部K11および転送パラメータ保持部K13のレジスタを指示するポインタである。ネクストポインタSC135は、カレントポインタSC133が指示するレジスタに格納されたDMAチャネル番号と同一のDMAチャネル番号が要求保持部K11のレジスタに存在している場合は、そのレジスタのアドレスのから1を引いたアドレスを示す。または、ネクストポインタSC135は、カレントポインタSC133が指示するレジスタに格納されたDMAチャネル番号と同一のDMAチャネル番号がDMAチャネル要求保持部K11のレジスタ中に存在しない場合は0を示す。
【0022】
カレントポインタSC133の指示するアドレスに格納されているDMAチャネル信号および転送パラメータ信号が第2転送パラメータ選択部TS2へと出力される。その後、ポインタ制御部SC131は、シフト制御部SC15を制御し、DMAチャネル要求保持部K11および転送パラメータ保持部K13のレジスタの内容を1アドレス若いレジスタにシフトする。
その後、ポインタ制御部SC131は、ネクストポインタSC135に保持された値をカレントポインタSC133に上書きする。これらポインタ制御部SC131の制御により同一のDMAチャネルからのDMAアクセス要求を連続させることができる。動作の詳細については後述する。
【0023】
第2転送パラメータ選択部TS2は、要求保持部K1から転送パラメータが入力される。また、要求並び替え部SC1からカレントポインタSC133の値が入力される。入力されたカレントポインタSC133の値に基づき、共有バスI/F部I1へと出力する転送パラメータを決定し、出力する。
【0024】
共有バスI/F部I1は、外部に存在するメモリコントローラM1と接続され、入力された転送パラメータに基づき、メモリコントローラM1へDMAアクセス要求を出力する。メモリコントローラM1について、バスプロトコルの要求受付シーケンスとデータ転送シーケンスは分離されており、データ転送シーケンスの実行状態に関わらず要求受付シーケンスが実行される。
【0025】
要求並び替え部SC1のフローチャートを
図2に示す。また、要求保持部K1のフローチャートを
図3に示す。また、
図4には、
図2、
図3のフローを具体的に示す。要求並び替え部SC1が動作を開始する(S0)。カレントポインタSC133、ネクストポインタ135、連続カウンタSC111を初期化し0とする(S2)。
【0026】
カレントポインタSC133により選択されるDMA要求保持部K11に保持されたDMAチャネル信号により指示されるチャネルが有効なチャネルである場合(S4:YES)、カレントポインタSC133により選択されたDMAチャネル信号により示されるDMAチャネル(以下、選択チャネルと呼ぶ)の連続転送フラグをチェックする(S6)。選択チャネルが有効なチャネルでなかった場合(S4:NO)、再度選択チャネルについての有効性をチェックする(S4)。連続転送フラグが有効であれば(S6:YES)、選択チャネルと同一のチャネルがDMAチャネル要求保持部K11にスタックされているDMAチャネル中にあるかどうかサーチする(S8)。連続転送フラグが無効であった場合、後に記載のステップS14を実行する(S6:NO)。選択チャネルがあった場合(S10:YES)、一致したアドレスの値から1を引いた値をネクストポインタ135に格納して更新する(S12)。DMA要求保持部K11にスタックされている要求チャネル中に選択チャネルがなかった場合は(S10:NO)、ネクストポインタSC135に0を代入する(S14)。
【0027】
メモリアクセス制御部1は、メモリコントローラM1に対して、カレントポインタSC133により指示されている要求保持部K1のDMA要求保持部K11に格納されているDMAチャネル信号についての要求を第2転送パラメータ選択部TS2へ発行する(S16)。そして、要求保持部K1のカレントポインタSC133が保持するアドレスより大きなアドレス値を持つレジスタについて、その内容を"1"アドレス若いレジスタにシフトする操作を行う。また、ネクストポインタSC135の値をカレントポインタSC133に代入する。また、選択チャネルについて要求発行を完了したため要求保持部K1の要求保持ポインタK15の値を1引く(S18)。
【0028】
次に、カレントポインタSC133が指示している転送パラメータ保持部K13に格納されている連続パラメータに含まれる連続転送フラグがイネーブルにされているかどうかチェックを行う(S20)。連続転送フラグがイネーブルにされていた場合(S20:YES)、連続カウンタSC111に1を加算する(S22)。連続転送フラグがイネーブルにされていない場合には(S20:NO)、後述する処理(S26)に移る。
【0029】
ステップS22の後、連続カウンタSC111の値が設定値未満かどうかチェックを行う(S24)。連続カウンタSC111の値が設定値と等しいときは(S24:YES)、カレントポインタSC133、ネクストポインタSC135、連続カウンタSC111を全て0に初期化する(S26)。連続カウンタSC111の値が設定値に満たない場合は(S24:NO)、後述する処理(S28)に移る。
最後に、全部の処理が終了しているか否かをチェックする(S28)。要求保持部K1に保持されているリクエストが無い場合、全部の処理が終了していると判断される(S28:YES)。そして、処理を終了する(S30)。全部の処理が終了していなかった場合(S28:NO)は、ステップS4に戻る。
【0030】
要求保持部K1のフローチャートを
図3に示す。なお、要求並び替え部SC1と要求保持部K1において要求保持ポインタK15は共通である。
【0031】
要求保持部K1が動作を開始すると(T0)、要求保持ポインタK15の内容を初期化し、値として0を代入する(T2)。要求保持部K1がシフト中ではない場合(T4:NO)、調停部A1から要求保持部K1にデータ転送を要求するDMAチャネル信号を取り込み、要求保持ポインタK15の値を1加算する(T6)。要求保持部K1がシフト中の場合(T4:YES)、シフト動作が完了するまで待機する。調停部A1からデータ転送を要求するDMAチャネル番号が引き続き入力されている場合は(T8:NO)、ステップT4に戻る。調停部A1からデータ転送を要求するDMAチャネル信号の入力がない場合は全処理が終了したと判断され(T8:YES)、処理を終了する(T10)。
【0032】
以上説明した
図2、
図3に係るフローを
図4に示す具体例により説明する。
【0033】
図4において、DMA要求保持部K11のレジスタの個数を8個とし、DMA要求保持部K11には、調停部A1からの調停結果に応じてレジスタのアドレス0〜7にDMAチャネル信号が保持されている。具体的には、アドレス0〜7のそれぞれのレジスタに、DMAチャネル1、2、1、3、2、1、4、2を示すDMAチャネル信号が保持されている。これに応じて要求保持ポインタK15には"7"が保持されている。カレントポインタSC133、ネクストポインタSC135には、それぞれ、"0"、"1"(=2−1)が保持されている状態である。
【0034】
ステップS4により、カレントポインタSC133に保持されている"0"のアドレスを有するDMA要求保持部K11のレジスタに保持されているDMAチャネル信号(DMAチャネル1を指示)は有効なチャネルであるか否かが判断される。
【0035】
カレントポインタSC133に選択されたDMAチャネル信号であるDMAチャネル1の連続転送が有効であったとする(
図2、S6:YES)。この場合、ステップS8により、ポインタ制御部SC131はDMAチャネル要求保持部K11のアドレス1以上のレジスタについて、DMAチャネル1を示すDMAチャネル信号が保持されているか否かをサーチする。サーチした結果、アドレス2のレジスタにDMAチャネル1を示すDMAチャネル信号が保持されていることが検出される(
図2、S10:YES)。よって、ステップS12により、ポインタ制御部SC131は、アドレスの値2から1を減算した値1をネクストポインタSC135に格納する。
【0036】
そして、ステップS16により、DMAチャネル要求保持部K11のアドレス0のレジスタに格納されたDMAチャネル1を示すDMAチャネル信号が、第2転送パラメータ選択部TS2へと出力される。
出力された結果、DMAチャネル要求保持部K11のアドレス0のレジスタがクリアされる。ステップS18(1)により、シフト制御部SC15によりDMAチャネル要求保持部K11は、アドレス1から7に格納されたDMAチャネル信号を1ずつ若いアドレスのレジスタへ移動し、空になったアドレス0のレジスタをつめるシフト動作を行う。
【0037】
ステップS18(2)により、ネクストポインタSC135の値をカレントポインタSC133に上書きする。そして、カレントポインタSC133は、アドレス1のレジスタを指示する。この時、アドレス1のレジスタにはDMAチャネル1を示すDMAチャネル信号が格納されている。よって、次にDMAチャネル要求保持部K11から第2転送パラメータ選択部TS2へ転送されるDMAチャネル信号は、再びDMAチャネル1を示すDMAチャネル信号となる。結果、DMAチャネル1についてのアクセスが連続して実行される。
【0038】
DMAチャネル要求保持部K11に格納されたDMAチャネル信号が第2転送パラメータ選択部TS2に転送された後、シフト動作が行われる。結果、DMAチャネル要求保持部K11のレジスタのうちDMAチャネル信号が保持されているレジスタのアドレスの最大値が7から1減少して6になり、要求保持ポインタK15の値も6へと変更される。
ステップT6において、調停部A1に新たなDMAチャネル信号が入力されると、調停部A1から新たに調停されたDMAチャネル信号が出力され、DMAチャネル要求保持部K11に入力される。この場合、DMAチャネル要求保持部K11の空きレジスタのうち一番若いアドレスのレジスタへ当該DMAチャネル信号は格納され、要求保持ポインタK15の値は1加算される。
【0039】
以下に第1実施例の効果を述べる。例えば、画像データ転送におけるバースト転送によるメモリアクセスでは、同じチャネルの連続アクセスは同じページ内の可能性が高いという特徴がある。また、優先順位の高いチャネルは、必要とするデータサイズに対して、当該データサイズより小さいバーストサイズで転送を行う場合がある。この場合、バーストサイズ単位で分割された要求が発行される。分割された要求が不連続に受け付けられると、メモリへのアクセス効率が低下する虞がある。
【0040】
このことから、要求保持部K1においてアクセスごとに異なるチャネル番号の要求を、要求並び替え部SC1において、チャネル番号ごとにまとめて並び替えて連続した要求とする。これにより、不連続に受け付けられた優先順位の高いチャネルの要求をまとめて発行することができ、高効率なデータ転送が可能となる。
【0041】
また、カレントポインタSC133及びネクストポインタSC135は、ポインタ制御部SC131により制御される。カレントポインタSC133は、DMAチャネル要求保持部K11及び転送パラメータ保持部K13が備えるレジスタのうち、現在転送が行われているDMAチャネル信号及び転送パラメータの格納されているレジスタのアドレスを指示する。ネクストポインタS135は、DMAチャネル要求保持部K11及び転送パラメータ保持部K13が備えるレジスタのうち、次の転送タイミングで転送を行うDMAチャネル信号及び転送パラメータの格納されているレジスタのアドレスを指示する。この、カレントポインタSC133及びネクストポインタSC135の制御により、要求並び替え部SC1は速やかに選択チャネルの要求を発行することができる。
【0042】
また、DMAチャネル要求保持部K11及び転送パラメータ保持部K13は、調停部A1が調停したDMAチャネル信号及び転送パラメータ信号を、アドレスの若い順番でレジスタに保持する。また、DMAチャネル要求保持部K11及び転送パラメータ保持部K13は、DMAチャネル信号及び転送パラメータ信号を第2転送パラメータ選択部に発行した後、シフト動作を行い、信号の発行に伴ない空となったレジスタをつめる。メモリアクセス制御部1が連続して同じDMAチャネルのデータ転送要求を発行する場合、ネクストポインタSC135は、前記シフト動作によるアドレスのくり上がりを考慮したアドレス値を保持する。メモリアクセス制御部1がデータ転送要求発行をした後、ネクストポインタSC135の保持するアドレス値をカレントポインタSC133のアドレス値として上書きすることで、速やかに次のデータ転送要求を発行することが出来る。
【0043】
チャネルを連続させる回数をチャネルごとにあらかじめ設定し、処理を行う度連続カウンタSC111を1加算し、連続カウンタSC111の値と設定値を比較する。そして、連続カウンタSC111の値が設定値と等しくなったとき、次の優先順位のチャネルに遷移させる。これにより、同格のチャネルが平均的に連続となるように、あるいは特定チャネルだけが連続しないようにすることが実現出来る。
【0044】
チャネル番号とセットで保持される連続パラメータに含まれる連続転送フラグを参照しながらチャネル番号をサーチし、同じチャネル番号がDMAチャネル要求保持部K11にあっても連続転送フラグがイネーブルでなければ、次の優先順位のチャネルに移行する。
例えば、画像データの転送時に画像右端からの折り返しでデータアドレスが不連続となる場合、DMAチャネルが連続転送フラグをディセーブルにすることで、次の優先順位のDMAチャネルに移行し、転送効率の低下を抑止できる。
【0045】
特定のDMAチャネルがまとまった転送を必要とする場合、そのDMAチャネルは調停部A1において優先順位が高くなるように設定されているので、要求保持部K1における出現率は高い。さらに、当該まとまった転送を必要とするDMAチャネルの送信する転送パラメータが含む連続転送フラグをイネーブルに設定する。さらに、当該DMAチャネルについて、連続カウンタSC111の値を、まとまった転送を必要としないDMAチャネルに比して大きく設定する。この連続転送フラグ及び連続カウンタSC111の設定により、まとまった転送を必要とするDMAチャネルについてのデータ転送を連続させることが可能となり、転送効率を上げることができる。また、まとまったデータ転送を必要とする特定のDMAチャネルにおいて、連続してデータ転送要求が発行できない条件が発生した場合であっても、次の優先順位のDMAチャネルの転送を続けることができるので、転送効率を下げることはない。
【0046】
特定のDMAチャネルについての連続アクセスの制御は、調停部A1が優先順位の高いDMAチャネルについては、連続転送フラグを設定することで実現できる。また、DMAチャネル自身が連続転送フラグをDMAチャネル毎の転送状況に応じて動的に設定することでも、連続アクセスの制御を実現できる。また、外部のCPUから連続アクセス制御部SC11を設定することで、システム全体の転送状況等に応じて動的に連続アクセスを制御することも可能である。
【0047】
第2実施形態を
図5に示す。第2の実施例の回路はリードアクセス制御部1Aと、ライトアクセス制御部1Bと、リード/ライトアクセス調停部RWAとを有する。リードアクセス制御部1Aとライトアクセス制御部1Bは第1実施形態のメモリアクセス制御部1である。リードアクセス制御部1Aの共有バスI/F部I1及びライトアクセス制御部1Bの共有バスI/F部I1は、リード/ライトアクセス調停部RWAと接続される。
また、リード/ライトアクセス調停部RWAはメモリコントローラM1とリードバスおよびライトバスを介して接続される。
また、リード/ライトアクセス調停部RWAは、CPUまたはリードアクセス制御部1Aおよびライトアクセス制御部1Bの要求保持部K1または要求並び替え部SC1と接続される。
【0048】
第2実施形態において、メモリコントローラM1は、リードアクセスする経路とライトアクセスする経路が分離されたバス構成に接続される。当該接続形態において、リードアクセスあるいはライトアクセスどちらか一方が一定数以上連続するように転送を行うと、リードアクセスおよびライトアクセスを交互に行うのに比して、高効率な転送を行うことができる。 CPUからの指示あるいは、リードアクセス制御部1Aおよびライトアクセス制御部1Bの要求保持部K1または要求並び替え部SC1の情報によりリード/ライトアクセス調停部RWAは制御される。
リードあるいはライトの一方のアクセスが連続している期間、他方をディセーブルするなどの手段により、メモリコントローラM1の実行レベルでリードアクセスあるいはライトアクセスが連続となるようにする。
【0049】
第2実施形態における制御の一例を示す。画像データの転送では画像の拡大・縮小処理などアプリケーションの種類に応じてリードアクセスするデータ量とライトアクセスするデータ量の比が変わることがある。この場合、アプリケーションに応じたデータ量の比に基づき、リードアクセスまたはライトアクセスどちらか一方を他方に優先して連続して転送するようにリード/ライトアクセス調停部RWAを制御する。
【0050】
あるいは要求保持部K1に保持されたアクセス要求数の比に基づき、リードアクセスまたはライトアクセスどちらか一方を他方に優先して連続して転送するようにリード/ライトアクセス調停部RWAを制御する。これらの制御により、高効率な転送を行うことができる。
【0051】
図6は第3実施形態におけるブロック図である。メモリアクセス制御部1Cは、要求保持・並び替え部11A、11B、レベル間調停部13、チャネル確定部15、優先フラグ生成部17、アンド論理回路AND1、AND2、共有バスI/F部I1を備える。
【0052】
要求保持・並び替え部11A、11Bは、各々、第1実施形態(
図1)における、調停部A1、第1転送パラメータ選択部TS1、要求保持部K1、要求並び替え部SC1、第2転送パラメータ選択部TS2を備える。ここで、転送パラメータTP1ないしTPnに関する処理は第1実施形態と同様であるので、第3実施形態では説明を省略し、DMAチャネル信号を例にとり説明する。この場合、DMAチャネル信号DMA1ないしDMA5を例示して説明する。
【0053】
メモリアクセス制御部1Cは、要求保持・並び替え部11A、11Bを備える。DMAチャネルに設定されている優先度ごとに備えるものである。要求保持・並び替え部11Aは優先度が高い(レベル0)のDMAチャネル信号DMA1、DMA2が入力される。要求保持・並び替え部11Bは優先度がレベル0より低い(レベル1)のDMAチャネル信号DMA3ないしDMA5が入力される。
【0054】
要求保持・並び替え部11A、11Bからは、各々、要求並び替え部SC1により選択されたDMAチャネル信号である選択DMAチャネル信号SNL0、SNL1、要求並び替え部SC1による連続転送のうち最後の転送であることを示す連続転送終了信号SLL0、SLL1、および出力される選択DMAチャネル信号SNL0、SNL1の有無を示す有効信号SEL0、SEL1が出力される。
【0055】
要求保持・並び替え部11A、11Bのブロック図を
図7に示す。選択DMAチャネル信号SNL0、SNL1、連続転送終了信号SLL0、SLL1、および有効信号SEL0、SEL1が出力される他は第1実施形態(
図1)のメモリアクセス制御部1と同様な回路要素を備える。
【0056】
要求保持・並び替え部11A、11Bでは、選択DMAチャネル信号SNL0、SNL1は第2転送パラメータ選択部TS2から出力される。要求並び替え部SC1から入力されるカレントポインタSC133の値に基づきDMAチャネル信号が決定され、選択DMAチャネル信号SNL0、SNL1として出力される。連続転送終了信号SLL0、SLL1は連続アクセス制御部SC11から出力される。チャネルを連続させる回数をチャネルごとにあらかじめ設定し、処理を行うたびに連続カウンタSC111を1加算する。連続カウンタSC111の値が連続転送における最後の転送を示す値になったとき連続転送終了信号SLL0、SLL1が出力される。有効信号SEL0、SEL1はポインタ制御部SC131から出力される。カレントポインタSC133にあるアドレスに保持されているDMA要求保持部K11のレジスタに保持されているDMAチャネル信号が有効なチャネルであるか否かが判断され、有効であると判断される場合に有効信号SEL0、SEL1が出力される。
【0057】
引き続き
図6の説明を続ける。レベル間調停部13は、有効信号SEL0、SEL1のうちの何れか一方に有効な要求があることを示す場合、その有効な要求があることを示す有効信号をレベル間調停信号SAL0として出力する。有効信号SEL0、SEL1がともに有効な要求であることを示す場合、つまり有効信号SEL0、SEL1が競合している場合には、優先フラグ生成部17から出力される優先フラグSPL0(後述)に従って何れか一方の有効信号を選択し、レベル間調停信号SAL0として出力する。つまり、レベル間調停部13は、優先フラグSPL0に従って、レベル0を優先する場合には有効信号SEL0を選択し、レベル1を優先する場合には有効信号SEL1を選択する。
【0058】
図8は、レベル間調停部13の動作説明図である。「0」の優先フラグSPL0はレベル0を優先することを示し、「1」の優先フラグSPL0はレベル1を優先することを示す。「1」の有効信号SEL0、SEL1は、選択DMAチャネル信号SNL0、SNL1が出力されDMAチャネルからの要求があることを示し、「0」は要求がないことを示す。
【0059】
従って、有効信号SEL、SEL1がともに「1」の場合は、レベル0、1間において要求が競合していることを示す。この場合、レベル間調停部13は、選択結果に示すように、「0」の優先フラグSPL0に従って有効信号SEL0を選択し、「1」の優先フラグSPL0に従って有効信号SEL1を選択する。
【0060】
チャネル確定部15は、レベル間調停信号SAL0と有効信号SEL1に応じて、選択DMAチャネル信号SNL0、SNL1に対してバス使用権を確定したか否かを示すイネーブル信号ENL01、ENL02を生成する。選択されたDMAチャネル信号は確定DMAチャネル信号SDとして出力され、共有バスI/F部I1に入力される。
【0061】
図9は、チャネル確定部15の動作説明図である。「1」のレベル間調停信号SAL0はレベル0の優先度を有する選択DMAチャネル信号SNL0が有効、即ち要求があることを示す。これにより、選択DMAチャネル信号SNL0が確定DMAチャネル信号SDとして出力されバスの使用権が確定する。「0」のレベル間調停信号SAL0および有効信号SEL1が「1」の場合はレベル1の優先度を有する選択DMAチャネル信号SNL1が有効、即ち要求があることを示す。これにより、選択DMAチャネル信号SNL1が確定DMAチャネル信号SDとして出力されバスの使用権が確定する。
【0062】
イネーブル信号ENL01、ENL02は、各々、アンド論理回路AND1、AND2に入力される。アンド論理回路AND1、AND2の他方の入力には、各々、連続転送終了信号SLL0、SLL1が入力される。アンド論理回路AND1、AND2では、各々、イネーブル信号ENL01、ENL02と連続転送終了信号SLL0、SLL1との間で論理積演算が行われる。その結果、第1イネーブル信号ENLL01、第2イネーブル信号ENLL02が出力される。第1イネーブル信号ENLL01、第2イネーブル信号ENLL02は、各々、要求保持・並び替え部11A、11Bにおいて連続転送するように選択されチャネル確定部15でバス使用権が確立したDMAチャネル信号について、連続転送の最後の転送時に出力される。
【0063】
優先フラグ生成部17は、要求保持・並び替え部11A、11Bの各々で選択され出力される選択DMAチャネル信号SNL0、SNL1が競合する場合に、何れの選択DMAチャネル信号SNL0、SNL1を優先するかを示す優先フラグSPL0を生成する。従って、選択DMAチャネル信号SNL0、SNL1の何れか一方が出力されない場合には、出力される選択DMAチャネル信号が選択される。
【0064】
優先フラグ生成部17には、第1イネーブル信号ENLL01および第2イネーブル信号ENLL02が入力される。第1イネーブル信号ENLL01は、レベル0の優先度を有するDMAチャネル信号の連続転送が継続し最後の転送についてバス使用権が確定した際に出力される。第2イネーブル信号ENLL02は、レベル1の優先度を有するDMAチャネル信号の連続転送が継続し最後の転送についてバス使用権が確定した際に出力される。優先フラグ生成部17は、カウント機能を有し、各々、バス使用権が確定した回数をカウントする。そして、優先フラグ生成部17は、各々のカウント値に基づいて、優先フラグSPL0を生成する。
【0065】
優先フラグSPL0は、例えば2値の信号であり、第1の値(例えば「0」)の場合に、レベル0の優先度を有するDMAチャネル信号が優先であることを示し、第2の値(例えば「1」)の場合に、レベル1の優先度を有するDMAチャネル信号が優先であることを示す。
【0066】
図10は優先フラグ生成部17のブロック図である。カウンタ制御部171、選択部172、カウンタ173、フラグ制御部174を有する。カウンタ173は、第1カウンタ173aと第2カウンタ173bとを有する。両カウンタ173a、173bは例えばアップカウンタである。両カウンタ173a、173bには、それぞれ設定値としてカウントアップ値が、例えばCPUなどにより設定される。第1カウンタ173aと第2カウンタ173bとの各々に設定されるカウントアップ値は、第1イネーブル信号ENLL01のカウント回数と、第2イネーブル信号ENLL02のカウント回数とに応じた値である。それぞれのカウントアップ値は、例えば、「4」、「3」である。両カウンタ173a、173bは、カウンタ制御部171から出力されるカウントアップ信号に応答してカウントアップ(+1)動作を行う。そして、各カウンタ173a、173bは、各々のカウント値が設定されているカウントアップ値と一致すると、一致信号をカウンタ制御部171に出力するとともに、カウント値をクリア(=0)する。
【0067】
カウンタ制御部171には、第1イネーブル信号ENLL01と第2イネーブル信号ENLL02とが入力される。カウンタ制御部171は、第1イネーブル信号ENLL01に応答して第1カウンタ173aにカウントアップ信号を出力し、第2イネーブル信号ENLL02に応答して第2カウンタ173bにカウントアップ信号を出力する。第1カウンタ173aのカウント値は、レベル0の優先度を有する確定DMAチャネル信号SDが、要求並べ替え部SC1により選択される連続転送回数を1セットとして、繰り返されるセット数を示す。また、第2カウンタ173bのカウント値は、レベル1の優先度を有する確定DMAチャネル信号SDが、要求並べ替え部SC1により選択される連続転送回数を1セットとして、繰り返されるセット数を示す。
【0068】
カウンタ制御部171は、両カウンタ173a、173bから出力される一致信号に基づいてフラグ制御信号をフラグ制御部174に出力する。フラグ制御部174は、フラグ制御信号に応答して優先フラグSPL0を生成する。詳述すると、カウンタ制御部171は、第1イネーブル信号ENLL01に応答して第1カウンタ173aをカウントアップさせている間、フラグ制御信号によりフラグ制御部174からレベル0の優先度を有する優先フラグSPL0(例えば値「0」)を出力させる。このとき、レベル間調停部13は、有効信号SEL0、SEL1が共に出力されると、「0」の優先フラグSPL0に応答して、レベル0の優先度を有する有効信号SEL0を選択する。そして、レベル間調停部13は、有効信号SEL0、SEL1の優先度のレベル間で調停したことを示すレベル間調停信号SAL0を出力する。
【0069】
カウンタ制御部171は、第1カウンタ173aが一致信号を出力すると、フラグ制御信号によりフラグ制御部174からレベル1の優先度を有する優先フラグSPL0(例えば値「1」)を出力させる。このとき、レベル間調停部13は、有効信号SEL0、SEL1が共に出力されると、「1」の優先フラグSPL0に応答して、レベル1の優先度を有する有効信号SEL1を選択する。そして、レベル間調停部13は、有効信号SEL0、SEL1の優先度のレベル間で調停したことを示すレベル間調停信号SAL0を出力する。
【0070】
レベル間調停部13は、優先フラグ生成部17の第1カウンタ173aと第2カウンタ173bに各々に設定されたカウント値の回数だけ、レベル0の要求の連続転送を1セットとして、またレベル1の要求の連続転送を1セットとして、所定セット回数の要求を出力する。即ち、レベル間調停部13は、第1及び第2カウンタ173a、173bに設定したカウント値の比に応じて、レベル0とレベル1との間で要求の連続転送を許容する。
【0071】
図11は、優先フラグ生成部17が実行する処理の流れを示すフローチャートである。先ず、優先フラグ初期値、優先比率(カウント値)が設定される(U2)。次に、優先フラグ側、即ちその時に優先しているレベル(レベル0またはレベル1)について要求受付があるか否かを判断し(U4)、要求受付がある場合に要求が競合しているか否かを判断する(U6)。競合している場合に、優先フラグ側のカウント値をダウンカウントする(U8)。次に、カウント値がゼロ(「0」)か否か、即ち設定された数の要求を受け付けたか否かを判断し(U10)、カウント値が「0」の場合に優先フラグ側の優先比率、即ちカウント値を再設定する(U12)。次に、優先フラグを反転する、即ち優先するレベルを切り換えるように優先フラグを変更する(U14)。そして、1回のサービスについての全ての処理が終了したか否かを判断し(U16)、終了していなければ処理(U4)から繰り返す。
【0072】
図12は、第3実施形態によりDMAチャネル信号の転送を行った場合の要求発行の例を模式的に示したものである。要求保持・並び替え部11Aの要求並べ替え部によりDMAチャネル信号ごとの連続転送回数が<CN0>に設定され、要求保持・並び替え部11Bの要求並べ替え部によりDMAチャネル信号ごとの連続転送回数が<CN1>に設定されているものとする。また、優先フラグ生成部17の第1カウンタ173aに設定されているカウント値が<UN0>であり、優先フラグ生成部17の第2カウンタ173bに設定されているカウント値が<UN1>であるものとする。レベル0の優先度を有するDMAチャネル信号の連続転送を<UN0>セット継続し、レベル1の優先度を有するDMAチャネル信号の連続転送を<UN1>セット継続するものとする。
【0073】
図12では、レベル0の優先度を有するDMAチャネル信号の転送から開始するものとする。最初にDMAチャネル信号DMA1が選択され、<CN0>回の連続転送が行われる。次に、DMAチャネル信号DMA2が選択され、<CN0>回の連続転送が行われる。各々の連続転送を1セットとして、これが<UN0>セット継続される。その後、転送はレベル1の優先度を有するDMAチャネル信号に移行する。先ず、DMAチャネル信号DMA4が選択され、<CN1>回の連続転送が行われる。この連続転送を1セットとして、これが<UN1>セット継続される。ここで、個々のDMAチャネル信号の選択順は、第1実施形態において説明したように、要求保持部に格納されている基本転送順位で選択される。
【0074】
第3実施例によれば、DMAチャネル信号に応じて2レベルの優先度に分類される場合、各々の優先度に属する個々のDMAチャネル信号は、要求並び替え部SC1により、チャネルごとに連続転送回数が設定され、連続して選択されて転送が行われる。更に、異なる優先度のレベルの間では、連続転送回数のセット数が設定され、所定セット数の転送ごとに転送される優先度が切り替わる。具体的には、チャネルごとの連続転送回数を1セットとして、あらかじめ定められる所定セット回数の連続転送が行われると、転送対象となるDMAチャネル信号の属する優先度を切り替える。
【0075】
これにより、デジタルスチルカメラからの画像データの転送などに例示されるように、メモリアクセス要求の少ない期間と多い期間とが混在してデータ転送量に粗密があるDMAチャネル信号がある場合、他のDMAチャネル信号によるデータ転送との関係により当該DMAチャネル信号におけるデータ転送が滞りシステム破綻を招来することを防止することができる。
【0076】
すなわち、画像データに係るDMAチャネル信号をレベル0の優先度とし、他のDMAチャネル信号をレベル0より低い優先度のレベル1を有するものとして設定する。この場合、レベル0の画像データの転送を優先しながら、所定の比率でレベル1の他のDMAチャネル信号に係るデータ転送を行うことができる。画像データの転送のデータ転送における滞りを避けながら他のデータ転送も行うことができる。
【0077】
図13乃至
図15は、第3実施形態の変形例である。レベル1の優先度を有する要求の発行を制御するものである。第3実施形態では、レベル0の優先度を有するDMAチャネル信号に係るデータ転送に転送の粗密がある場合、転送が粗の期間にレベル1の優先度を有する他のDMAチャネル信号に係るデータ転送を受け付ける。この場合、レベル0の優先度を有するDMAチャネル信号に係るデータ転送が再び密になる場合に、レベル1の優先度を有する他のDMAチャネル信号に係るデータ転送がレベル0のデータ転送の障害にならないようにするものである。
【0078】
図13は、第1変形例のブロック図である。
図6のメモリアクセス制御部1Cにおいて、要求保持・並び替え部11Bから出力される有効信号SEL1とレベル間調停部13との間にアンド論理回路AND3が介在するものである。
【0079】
アンド論理回路AND3には、有効信号SEL1とレベル1の優先度を有するDMAチャネル信号の転送を強制的に抑止するマスク信号MSKが入力される。
【0080】
マスク信号MSKは、レベル0の優先度を有するDMAチャネル信号に係るデータ転送が再開される際にデータ転送に先立って出力される信号である。例えば、レベル0の優先度を有するDMAチャネル信号に係るデータが画像データである場合には、画像描画の際の水平同期信号に応じて出力される信号である。マスク信号MSKが出力されることに応じて、アンド論理回路AND3において有効信号SEL1がマスクされる。
【0081】
これにより、レベル1の優先度を有する他のDMAチャネル信号に係るデータ転送が抑止され、その後に要求が入力されるレベル0の優先度を有するDMAチャネル信号がバス使用権を獲得することができる。レベル0の優先度を有するDMAチャネル信号に係るデータ転送が滞ることはない。ここで、マスク信号MSKの出力期間は、レベル0の優先度を有するDMAチャネル信号の要求が入力されるまでで良い。その後は、レベル0の優先度を有するDMAチャネル信号の要求が優先されるからである。
【0082】
図14は、第2変形例のブロック図である。第1変形例(
図13)に加えて、レベル1要求発行数判定部19を備え、その出力信号が、マスク信号MSKに代えてアンド論理回路AND3に入力される。
【0083】
レベル1要求発行数判定部19には、マスク信号MSKと第2イネーブル信号ENLL02とが入力される。レベル1要求発行数判定部19では、チャネル確定部15で確定されるレベル1の優先度を有するDMAチャネル信号の出力が、CPU等によりあらかじめ設定される連続転送回数のセット回数に達するか否かが検出される。設定されたセット回数が検出されると、マスク信号MSKをアンド論理回路AND3に出力することにより、レベル1の優先度を有する他のDMAチャネル信号に係るデータ転送を抑止する。
【0084】
これにより、レベル1の優先度を有する他のDMAチャネル信号を設定されているセット回数出力した後は、データ転送が抑止され、その後に要求が入力されるレベル0の優先度を有するDMAチャネル信号がバス使用権を獲得することができる。レベル0の優先度を有するDMAチャネル信号に係るデータ転送が再開される際に、データ転送の要求が入力されるまではレベル1の優先度を有するDMAチャネル信号の転送を許可し、レベル0の優先度を有するDMAチャネル信号に係るデータ転送が開始されるタイミングでレベル1の転送を抑止するものである。
【0085】
図15には、第1および第2変形例でのデータ転送の様子を模式的に示す。第1変形例においては、マスク信号MSKが出力される期間のレベル1のDMAチャネル信号は抑止される。
図15のD1およびD2が抑止される。第2変形例においては、マスク信号MSKが出力される期間のうち、
図15のD2で示されるレベル1のDMAチャネル信号が抑止される。
【0086】
第1および第2変形例は何れも、レベル1の優先度を有するDMAチャネル信号に係るデータ転送を確保しながら、レベル0の優先度を有するDMAチャネル信号に係るデータ転送が滞ることなく行なうことができる。これにより、例えば、データ転送に粗密があるレベル0の優先度を有するDMAチャネル信号に係るデータ転送について、データ転送が滞ることがなくシステム破綻等を防止することができる。
【0087】
図16は第4実施形態におけるブロック図である。メモリアクセス制御部1Dは、調停部A10、A11、セレクタSEL、要求保持部K10、レベル0ポインタ制御部C1、セレクタ制御部C2、要求並び替え部SC1、第2転送パラメータ選択部TS2、および共有バスI/F部I1を備える。
【0088】
ここで、第1ないし第3実施形態と同じ回路要素については同じ符号を付し、以下での説明は省略する。また、第3実施形態の場合と同様に、転送パラメータTP1ないしTPnに関しては、第1実施形態と同様であるので、
図16において記載を省略すると共に以下での説明を省略する。また、第3実施形態の場合と同様に、DMAチャネル信号DMA1ないしDMA5を例示して説明する。このうち、DMAチャネル信号DMA1、DMA2がレベル0の優先度を有するDMAチャネル信号であり、DMAチャネル信号DMA3ないしDMA5がレベル1の優先度を有するDMAチャネル信号である。
【0089】
調停部A10、A11は、DMAチャネル信号の優先度に応じて備えられる。調停部A10はレベル0の優先度を有するDMAチャネル信号DMA1、DMA2を調停する。調停部A11はレベル1の優先度を有するDMAチャネル信号DMA3ないしDMA5を調停する。基本的機能は第1実施形態の調停部A1(
図1)と同様である。
【0090】
セレクタSELは、調停部A10、A11の各々で調停され出力されるDMAチャネル信号の何れか一方を選択する。何れを選択するかは後述するセレクタ制御部C2により制御される。具体的には、セレクタ制御部C2による制御に応じて、調停部A11から出力されるレベル1の優先度を有するDMAチャネル信号の入力を抑止して、調停部A10から出力されるレベル0の優先度を有するDMAチャネル信号の入力を優先する。
【0091】
要求保持部K10は、第1実施形態の要求保持部K1の回路要素に加えて、レベル0要求保持ポインタK14、レベル0カウンタK17、およびレベル1カウンタK19を備える。
【0092】
レベル0要求保持ポインタK14は、DMAチャネル要求保持部K11のレジスタにおいて、レベル0のDMAチャネル信号が保持されているレジスタのアドレスのうち最下位のアドレスを示す。要求保持ポインタK15は、レベル0およびレベル1の両者のDMAチャネル信号が保持されているレジスタのアドレスのうち最下位のアドレスを示す。レベル0の優先度を有するDMAチャネル信号はレベル0要求保持ポインタK14に基づいてDMAチャネル要求保持部K11に格納され、レベル1の優先度を有するDMAチャネル信号は要求保持ポインタK15に基づいてDMAチャネル要求保持部K11に格納される。これにより、レベル0の優先度を有するDMAチャネル信号は、DMAチャネル要求保持部K11のレジスタの上位のアドレスに集中して格納される。
【0093】
レベル0カウンタK17およびレベル1カウンタK19は、各々、レベル0の優先度を有するDMAチャネル信号およびレベル1の優先度を有するDMAチャネル信号が、DMAチャネル要求保持部K11に入力される回数をカウントする。
【0094】
第4実施形態のメモリアクセス制御部1Dは、基本的に、第1実施形態のメモリアクセス制御部1と同様に、要求並べ替え部SC1により、DMAチャネル要求保持部K11に格納されているDMAチャネル信号の出力順序を並べ替えるように選択する。この場合、以下の2つの特徴が追加されるものである。
【0095】
第1の特徴は、レベル0の優先度を有するDMAチャネル信号のDMAチャネル要求保持部K11のレジスタへの格納アドレスを制御するものである。レベル0の優先度を有するDMAチャネル信号は、レベル0要求保持ポインタK14によりDMAチャネル要求保持部K11のレジスタにおける上位アドレスに連続して格納される。これは、レベル0の優先度であることより優先的に選択され出力するためである。しかしながら、格納されるDMAチャネル信号の数によっては、下位アドレスに格納されているレベル1の優先度を有するDMAチャネル信号の出力ができない状態が継続してしまうおそれがある。そこで、DMAチャネル要求保持部K11のレジスタでの格納アドレスを制御することにより、所定の比率でレベル1の優先度を有するDMAチャネル信号を出力できるようにする。
【0096】
第1の特徴は、レベル0ポインタ制御部C1により奏する。レベル0ポインタ制御部C1は、レベル0の優先度を有するDMAチャネル信号が入力されるごとに、レベル0カウンタK17のカウント値を、CPU等によりあらかじめ設定された値と比較する。カウント値が設定値と一致することに応じて、レベル0要求保持ポインタK14の値と要求保持ポインタK15の値とを比較して一致していなければ、レベル0要求保持ポインタK14の値を通常の+1に更に+1を加えて+2加算する。合わせて、レベル0カウンタK17を「0」に初期化する。これにより、次回入力されるレベル0の優先度を有するDMAチャネル信号は、DMAチャネル要求保持部K11のレジスタに格納されているレベル1の優先度を有するDMAチャネル信号の下位アドレスに格納することができる。
【0097】
図16に例示されているように、レベル0要求保持ポインタK14の値がkであり、要求保持ポインタK15の値がmであるとする。また、レベル0カウンタK17のカウント値に対する設定値がkであるとする。この場合、k回目のレベル0の優先度を有するDMAチャネル信号の入力に応じて、レベル0要求保持ポインタK14の値は+2加算されk+2になる。この結果、次回のレベル0の優先度を有するDMAチャネル信号は、アドレスk+2に格納され、アドレスk+1に格納されているレベル1の優先度を有するDMAチャネル信号DMA3が上位のアドレスに格納される状態とすることができる。これにより、DMAチャネル信号DMA3の転送を確実に行なうことができる。
【0098】
第1の特徴では、要求保持ポインタK15に加えて、レベル0要求保持ポインタK14、レベル0カウンタK17を備えることにより、DMAチャネル要求保持部K11でのDMAチャネル信号の格納順序を、レベル0の優先度を有するDMAチャネル信号を優先して上位アドレスに格納しながら、レベル0カウンタK17のカウント値と比較する設定値に応じた割合でレベル1の優先度を有するDMAチャネル信号を格納することができる。レベル0の優先度を有するDMAチャネル信号を優先しながらレベル1の優先度を有するDMAチャネル信号を混在させて転送することができる。
【0099】
第2の特徴は、有限の格納数を有するDMAチャネル要求保持部K11のレジスタがレベル1の優先度を有するDMAチャネル信号で占められてしまい、レベル0の優先度を有するDMAチャネル信号の格納ができなくなってしまうことを防止するものである。レベル0の優先度を有するDMAチャネル信号の転送要求に粗密がある場合、要求が粗の状態ではレベル1の優先度を有するDMAチャネル信号の入力が受け付けられるが、このときの受付数を制限することにより、次回のレベル0の優先度を有するDMAチャネル信号の密の転送要求に対応できるようにする。
【0100】
第2の特徴は、セレクタ制御部C2により奏する。セレクタ制御部C2は、レベル1の優先度を有するDMAチャネル信号が入力されるごとに、レベル1カウンタK19のカウント値を、CPU等によりあらかじめ設定された値と比較する。カウント値が設定値と一致することに応じて、セレクタSELを制御して調停部A11からのDMAチャネル信号の選択を抑止する(制御(a)の場合)。あるいは、調停部A11へのレベル1の優先度を有するDMAチャネル信号DMA3ないしDMA5の入力を抑止する(制御(b))。レベル1カウンタK19のカウントの最大値がCPU等によりあらかじめ設定された値に設定されることとなる。
【0101】
これにより、レベル1の優先度を有するDMAチャネル信号の入力が抑止される。レベル0の優先度を有するDMAチャネル信号の転送要求に粗密がある場合にも、レベル1の優先度を有するDMAチャネル信号の入力をあらかじめ定められた数に制限することができ、DMAチャネル要求保持部K11のレジスタ領域を確保しておくことができる。レベル0の優先度を有するDMAチャネル信号の密なる要求が再開された際も、DMAチャネル要求保持部K11のレジスタにDMAチャネル信号を格納することができ、システム破綻を防止することができる。
【0102】
第4実施形態での動作の例示を
図17にて説明する。状態(1)を初期状態とする。DMAチャネル要求保持部K11のレジスタには上位アドレスからDMAチャネル信号DMA1、DMA2、DMA3が格納されている。また、レベル0要求保持ポインタK14の値は「2」、要求保持ポインタK15の値は「3」、レベル0カウンタK17の値は「2」、レベル1カウンタK19の値は「1」である。ここで、レベル0カウンタK17は、CPU等により、初期値「0」から最大値「3」までをカウントし、その後「0」に初期化されるカウント動作を行なうとして設定されているものとする。また、レベル1カウンタK19は、CPU等により、最大値が「2」に設定されているものとする。初期値「0」から最大値「2」までの間をカウントする。
【0103】
状態(1)においてDMAチャネル信号DMA1が入力されると、レベル0要求保持ポインタK14の値が「2」であるため、DMAチャネル要求保持部K11のアドレス2に格納される。レベル0要求保持ポインタK14の値は「3」に、要求保持ポインタK15の値は「4」に、レベル0カウンタK17の値は「3」に加算される(状態(2))。
【0104】
状態(2)においてDMAチャネル信号DMA4が入力されると、要求保持ポインタK15の値が「4」であるため、DMAチャネル要求保持部K11のアドレス4に格納される。要求保持ポインタK15の値は「5」に、レベル1カウンタK19の値は「2」に加算される。レベル1カウンタK19の値が設定値と一致するため、以後の動作ではレベル1の優先度を有するDMAチャネル信号は入力されない(状態(3))。
【0105】
状態(3)においてDMAチャネル信号DMA2が入力されると、レベル0要求保持ポインタK14の値が「3」であるため、DMAチャネル要求保持部K11のアドレス3に格納される。このとき、レベル0カウンタK17の値が「3」であり設定値と一致しているため、レベル0要求保持ポインタK14の値は+2加算され「4」ではなく「5」に加算される。要求保持ポインタK15の値は「6」に、レベル0カウンタK17の値は「0」に初期化される。(状態(4))。
【0106】
状態(4)においてDMAチャネル信号DMA1が入力されると、レベル0要求保持ポインタK14の値が「5」であるため、DMAチャネル要求保持部K11のアドレス5に格納される。レベル0要求保持ポインタK14の値は「6」に、要求保持ポインタK15の値は「7」に、レベル0カウンタK17の値は「1」に加算される(状態(5))。
【0107】
状態(5)においてDMAチャネル信号DMA2が入力されると、DMAチャネル要求保持部K11のアドレス6に格納される。また、上位アドレスに格納されているDMAチャネル信号DMA1が並び替えにより転送され、更にDMAチャネル信号DMA2が転送される。レベル0要求保持ポインタK14の値は、入力1および転送3であるので「4」に、要求保持ポインタK15の値は同様に「5」に、レベル0カウンタK17の値は「2」に加算される(状態(6))。
【0108】
状態(6)において上位アドレスに格納されているDMAチャネル信号DMA2が転送される。レベル0要求保持ポインタK14の値は転送1であるので「3」に、要求保持ポインタK15の値は同様に「4」になる(状態(7))。
【0109】
状態(7)において上位アドレスに格納されているDMAチャネル信号DMA3が転送される。要求保持ポインタK15の値は転送1であるので「3」に、レベル1カウンタK19の値は「1」に減算される。これにより、以後の動作ではレベル1の優先度を有するDMAチャネル信号が受け付け可能とされる(状態(8))。
【0110】
状態(8)においてDMAチャネル信号DMA5が入力されると、要求保持ポインタK15の値が「3」であるため、DMAチャネル要求保持部K11のアドレス3に格納される。要求保持ポインタK15の値は「4」に、レベル1カウンタK19の値は「2」に加算される(状態(9))。
【0111】
なお、調停部A1は、予め定められたDMAチャネル毎の優先順位及びデータ転送要求が受け付けられた順番に従い、要求保持部K1にデータ転送要求を出力する。当該調停部A1が出力する信号の順番は、基本転送順位の一例である。
また、DMAチャネル信号及び転送パラメータ信号はデータ転送要求の一例である。
また、カレントポインタSC133は第1ポインタの一例であり、ネクストポインタ135は第2ポインタの一例である。DMAチャネル要求保持部K11のレジスタ、および転送パラメータ保持部K13のレジスタはレジスタの一例である。
また、レベル0の優先度が第1優先レベルの一例であり、レベル1の優先度が第2優先レベルの一例である。レベル0の優先度を有するDMAチャネル信号(DMAチャネル信号DMA1、DMA2)は第1チャネル群の一例であり、レベル1の優先度を有するDMAチャネル信号(DMAチャネル信号DMA3ないしDMA5)は第2チャネル群の一例である。要求保持・並び替え部11Aに備えられる要求保持部K1および要求並び替え部SC1は第1要求保持部および第1要求並び替え部の一例であり、要求保持・並び替え部11Bに備えられる要求保持部K1および要求並び替え部SC1は第2要求保持部および第2要求並び替え部の一例である。レベル間調停部13、チャネル確定部15、優先フラグ生成部17、およびアンド論理回路AND1、AND2は優先レベル調停部の一例である。アンド論理回路AND3は第1マスク部の一例であり、レベル1要求発行数判定部19およびアンド論理回路AND3は第2マスク部の一例である。
また、レベル0要求保持ポインタK14は第1要求保持ポインタの一例であり、レベル0カウンタK17は第1カウンタの一例であり、要求保持ポインタK15は第2要求保持ポインタの一例であり、レベル1カウンタK19は第2カウンタの一例であり、レベル0ポインタ制御部C1はポインタ制御部の一例であり、セレクタ制御部C2は入力マスク部の一例である。
【0112】
上述の実施形態によれば、複数のDMAチャネルの何れかを動的に選択してメモリとの間でデータ転送を行う際、DMAチャネルごとに予め定められた回数だけデータ転送要求を連続することにより、効率の高いデータ転送を可能となる。
【0113】
尚、本願は上記した第1ないし第4実施形態に限定されるものではない。上記の実施形態では、優先度がレベル0とレベル1との2段階であるとして説明したが、本願はこれに限定されるものではない。3段階以上の優先度を有するものについても、優先度ごとに前段階で調停などを行なうことにより上記の実施形態を適用することは可能である。
また、第4実施形態では、レベル0の優先度を有するDMAチャネル信号を、条件に応じてレベル1の優先度を有するDMAチャネル信号が格納されているレジスタから1アドレス下位のアドレスに格納するとして説明したが。本実施形態はこれに限定されるものではない。2以上下位のアドレスに格納することもできる。これにより、レベル0に先立って転送するレベル1の優先度を有するDMAチャネル信号の数は適宜に調整することができる。