(57)【要約】【課題】次のＤＭＡ転送を設定可能にするとともに、設定された次のＤＭＡ転送が転送前に上書きされることを防ぐ。【解決手段】ＤＭＡＣ２０は、カレント転送設定レジスタ３１−３３と、ネクスト転送設定レジスタ４１−４３とを備える。カレント転送設定レジスタ３１−３３は、カレント転送設定として、カレントのＤＭＡ転送にかかる転送元アドレスと転送先アドレスと転送回数とをそれぞれ記憶する。ネクスト転送設定レジスタ４１−４３は、カレント転送設定レジスタに記憶されたカレント転送設定によるＤＭＡ転送が完了した後に行われるＤＭＡ転送の転送設定をネクスト転送設定として記憶する。さらに、各ネクスト転送設定レジスタに対して、書込みを制御するフラグが設けられている。【選択図】図２
2007310735.tif 000002
【特許請求の範囲】
【請求項１】
転送元アドレスから転送先アドレスへのデータ転送を制御するダイレクトメモリアクセスコントローラ（ＤＭＡコントローラ）であって、
前記転送元アドレス、前記転送先アドレス、転送回数の３つの設定項目のうちのいずれかの設定値を格納する第１の転送設定レジスタと、
該第１の転送設定レジスタに転送すべき設定値であって、前記第１の転送設定レジスタに格納された設定値に対応する設定項目の設定値を格納する第２の転送設定レジスタと、
前記第２の転送設定レジスタへの書込みを制御するフラグと、
を備えたことを特徴とするＤＭＡコントローラ。
【請求項２】
前記第２の転送設定レジスタへの書込みを検出する書込検出回路をさらに備え、
該書込検出回路によって前記第２の転送設定レジスタへの書込みを検出した際に、前記フラグは書込禁止を示す状態にされることを特徴とする請求項１に記載のＤＭＡコントローラ。
【請求項３】
前記フラグは、ＣＰＵにより書込禁止を示す状態に設定可能であることを特徴とする請求項１に記載のＤＭＡコントローラ。
【請求項４】
前記フラグは、前記第１の転送設定レジスタに格納された設定値に基づいたＤＭＡ転送が終了した際に書込可能を示す状態にされることを特徴とする請求項１から３のいずれか１項記載のＤＭＡコントローラ。
【請求項５】
前記フラグは、前記第２の転送設定レジスタの一部として構成されることを特徴とする請求項１から４のいずれか１項記載のＤＭＡコントローラ。
【請求項６】
比較の基準となる転送回数を格納した基準転送回数設定レジスタと、
前記第１の転送設定レジスタに格納された設定値であって、該設定値に基づいたＤＭＡ転送の進行にともなってデクリメントされる転送回数と、前記基準転送回数設定レジスタに格納された転送回数とを比較する比較器と、
をさらに備え、
前記比較器は、前記比較の結果が一致を示すとき、割込みを発生させることを特徴とする請求項１から５のいずれか１項記載のＤＭＡコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリと周辺装置間等のデータ転送を行うダイレクトメモリアクセスコントローラ （Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ：ＤＭＡＣ）に関する。
【背景技術】
【０００２】
パーソナルコンピュータやワークステーションなどの情報処理装置では、一般に、主記憶装置と周辺装置との間のデータ転送にＤＭＡ転送方式を用いている。ＤＭＡ転送方式では、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）はＤＭＡＣにデータ転送を要求すれば、主記憶装置と周辺装置との間のデータ転送はＤＭＡＣにより制御されることとなる。よって、ＣＰＵはデータ転送に関与する必要がなく、他の処理を行うことができる。
【０００３】
図６は、従来のＤＭＡ転送装置において、ＣＰＵとＤＭＡＣの動作例の流れを示すタイミングチャートである。図中矢印が示す方向は、処理の時間軸である。また、「ＤＭＡ転送設定」と「割込処理」はＣＰＵにより行われる処理であり、「ＤＭＡ転送実行」はＤＭＡＣにより行われる処理である。
【０００４】
図６のタイミングチャートが示すように、ＤＭＡ転送の開始前にメモリ先頭アドレス、データ転送回数を設定し、設定された内容に対応するＤＭＡ転送が終わった後に次のＤＭＡ転送のためのメモリ先頭アドレスおよびデータ転送回数を設定する。このようなＤＭＡ転送装置では、転送中のデータの転送が終わらないと次のＤＭＡ転送の設定を行うことができないので、ＣＰＵの負担が大きく、処理が高速にできないという問題がある。
【０００５】
上述したＤＭＡ転送のための設定が特定の時間に集中することを防ぎ、さらにＣＰＵの負担を軽減することができる手法が提案されている（特許文献１、特許文献２参照）。
【０００６】
この手法によれば、ＤＭＡＣは２つの設定レジスタを有しており、一方の設定レジスタに記憶されたＤＭＡ転送設定に基づいてＤＭＡ転送が行われている間に、他方の設定レジスタにＤＭＡ転送のための設定を行うことができるようになっている。
【特許文献１】特開平８−２７８９３８号公報
【特許文献２】特開２０００−２０４５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ここで、図７を参照して、２つのレジスタを用いてＤＭＡ転送の設定を行う場合の処理の流れについて考える。図７は、図６と同じように、ＣＰＵとＤＭＡＣの動作の流れを示すタイミングチャートであり、図中矢印が示す方向は、処理の時間軸である。また、「ＤＭＡ転送設定」と「割込処理」はＣＰＵにより行われる処理であり、「ＤＭＡ転送実行」はＤＭＡＣにより行われる処理である。
【０００８】
図示のように、データＡのＤＭＡ転送中にデータＢについてＤＭＡ転送要求があったとき、データＢについてのＤＭＡ転送設定は他方の設定レジスタに記憶される。そして、データＡについてのＤＭＡ転送が完了した後、他方の設定レジスタに記憶されたデータＢについてのＤＭＡ転送設定が一方の設定レジスタに上書きされデータＢについてＤＭＡ転送が行われる。同様に、データＢの転送中にデータＣについてＤＭＡ転送要求があったときも、他方の設定レジスタにデータＣについてのＤＭＡ転送設定が記憶され、データＢのＤＭＡ転送完了後に、データＣについてＤＭＡ転送が行われる。
【０００９】
しかし、データＣのＤＭＡ転送中であって他方の設定レジスタに既にデータＤのＤＭＡ転送設定がなされている状態において、さらにデータＸのＤＭＡ転送要求があったとき、他方の設定レジスタにおいてデータＤのＤＭＡ転送が開始される前に新たなデータＸのＤＭＡ転送設定が上書きされてしまう場合がある。すると、結果としてデータＸのＤＭＡ転送が行われるが、データＤのＤＭＡ転送は行われないという問題がある。
【課題を解決するための手段】
【００１０】
本発明の１つの態様は、転送元アドレスから転送先アドレスへのデータ転送を制御するダイレクトメモリアクセスコントローラ（ＤＭＡコントローラ）である。このＤＭＡコントローラは、転送元アドレス、転送先アドレス、転送回数の３つの設定項目のうちのいずれかの設定値を格納する第１の転送設定レジスタと、該第１の転送設定レジスタに転送すべき設定値であって、第１の転送設定レジスタに格納された設定値に対応する設定項目の設定値を格納する第２の転送設定レジスタと、第２の転送設定レジスタへの書込みを制御するフラグとを備える。
【００１１】
なお、上記ＤＭＡコントローラを、方法、システムに置き換えたものも、本発明の態様としては有効である。
【発明の効果】
【００１２】
本発明のＤＭＡコントローラによれば、ＤＭＡ転送の設定を確実に行うことができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
図１は本発明のダイレクトメモリアクセスコントローラ（以下、「ＤＭＡＣ」という）が用いられた情報処理装置１を示すブロック図である。情報処理装置１は、ＣＰＵ１０、メモリコントローラ１１、周辺Ｉ／Ｏ１２、ＤＭＡＣ２０等を備えている。メモリコントローラ１１は、情報処理装置１から半導体メモリたとえばＲＡＭ（ランダム・アクセス・メモリ）等からなる外部メモリ２へのアクセスを制御する。周辺Ｉ／Ｏ１２はたとえばシリアルインタフェース、タイマ／カウンタ、Ａ／Ｄコンバータ等からなり、周辺バスブリッジ１３を介してＣＰＵ１０と通信を行ったり、外部メモリ２にアクセスするようになっている。ＤＭＡＣ２０は、外部メモリ２と周辺Ｉ／Ｏ１２との間のＤＭＡデータ転送を制御する。
【００１４】
ＣＰＵ１０、メモリコントローラ１１、周辺Ｉ／Ｏ１２、ＤＭＡＣ２０はシステムバス１４および周辺バス１５により接続されている。たとえばＣＰＵ１０から外部メモリ２へのアクセスは、システムバス１４およびメモリコントローラ１１を介して行われる。また、ＣＰＵ１０からシリアルインタフェース（内蔵周辺Ｉ／Ｏ）１２へのアクセスは、システムバス１４および周辺バスブリッジ１３を介して行われる。さらに、ＤＭＡＣ２０の制御による周辺Ｉ／Ｏ１２と外部メモリ２との間のＤＭＡ転送は、メモリコントローラ１１、システムバス１４および周辺バスブリッジ１３を介して行われる。一方、ＣＰＵ１０からＤＭＡＣ２０へのＤＭＡ転送の設定は周辺バス１５を介して行われるようになっている。
【００１５】
図２は図１に示す情報処理装置１におけるＤＭＡＣ２０の構成を示す。ここで図１と図２を参照してＤＭＡＣ２０について説明する。ＤＭＡＣ２０は、ある時点におけるＤＭＡ転送の設定であるカレントＤＭＡ転送の設定内容（以下カレント転送設定ともいう）を記憶する３つのカレント転送設定レジスタ（転送元アドレスを記憶するカレント転送元アドレス設定レジスタ３１、転送先アドレスを記憶するカレント転送先アドレス設定レジスタ３２、転送回数を記憶するカレント転送回数設定レジスタ３３）と、カレントＤＭＡ転送の次に行うＤＭＡ転送の設定（以下ネクスト転送設定ともいう）を記憶する３つのネクスト転送設定レジスタ（次の転送元アドレスを記憶するネクスト転送元アドレス設定レジスタ４１、次の転送先アドレスを記憶するネクスト転送先アドレス設定レジスタ４２、次の転送回数を記憶するネクスト転送回数設定レジスタ４３）と、カレント転送設定に従い、ＤＭＡ転送の制御を行うＤＭＡ転送回路５０と、基準転送回数設定レジスタ６０と、比較器７０を備えている。それぞれのカレント転送設定レジスタに対して１つの演算器（それぞれ演算器３４ａ、演算器３４ｂ、演算器３４ｃ）および１つのセレクタ（それぞれセレクタ３４ａ、セレクタ３４ｂ、セレクタ３４ｃ）が設けられており、それぞれのネクスト転送設定レジスタに対して１つのフラグ（それぞれフラグ４５ａ、フラグ４５ｂ、フラグ４５ｃ）および１つの書込検出回路（それぞれ書込検出回路４８ａ、書込検出回路４８ｂ、書込検出回路４８ｃ）が設けられている。
【００１６】
ＤＭＡ転送回路５０は、３つのカレント転送設定レジスタに記憶されたカレント転送設定に基づいてたとえば外部メモリ２と周辺Ｉ／Ｏ１２とのデータのＤＭＡ転送を制御するようになっている。各カレント転送設定レジスタへのカレント転送設定は、各カレント転送設定レジスタおよび各ネクスト転送設定レジスタがクリアのとき（たとえばシステムリセットから最初のＤＭＡ転送要求発生までの期間）ＣＰＵ１０により直接行われる。一方、カレント転送設定レジスタに既にＤＭＡ転送の設定がなされているとき、カレント転送設定によるＤＭＡ転送完了後に、３つのカレント転送設定レジスタに、相対応するネクスト転送設定レジスタに記憶されたＤＭＡ転送設定がそれぞれ転送される。
【００１７】
各ネクスト転送設定レジスタへのネクスト転送設定は、カレント転送設定レジスタに既にカレント転送設定がなされているときにＣＰＵ１０により行われる。
【００１８】
演算器３４ｃは、カレント転送設定によるＤＭＡ転送中において、１回の転送がされる毎にカレント転送回数設定レジスタ３３に記憶されたカレント転送回数を１つデクリメントする。カレント転送回数設定レジスタ３３は、自身が記憶したカレント転送回数が０になったときに、カレント転送設定によるＤＭＡ転送が終了としたとして、ＤＭＡ転送終了信号を出力する。なお、この際、ＤＭＡ転送終了信号は、ＣＰＵ１０に対してＤＭＡ転送終了の割込通知信号としても出力される。
【００１９】
図２に示すＤＭＡ＿ＯＮ信号は、カレント転送設定によるＤＭＡ転送中においてアクティブ状態となる信号である。
【００２０】
各セレクタでは、ＤＭＡ転送中（すなわちＤＭＡ＿ＯＮ信号がアクティブ状態であるとき）において、相対応する演算器の出力が選択されてそれぞれの対応するカレント転送設定レジスタに入力される。また、カレント転送回数設定レジスタ３３からＤＭＡ転送終了信号が出された際には、相対応するネクスト転送設定レジスタの出力（すなわちネクスト転送設定）が選択されてそれぞれの対応するカレント転送設定レジスタに入力される。
【００２１】
また、前述したような、各カレント転送設定レジスタおよび各ネクスト転送設定レジスタがクリアのときにＣＰＵ１０によりカレント転送設定レジスタに設定を直接書き込む場合には、各セレクタでは書き込まれるデータが選択されてカレント転送設定レジスタに入力される。これにより周辺バス１５からデータを書き込むことが可能となる。
【００２２】
このように、カレント転送設定レジスタとネクスト転送設定レジスタを設けることにより、カレント転送設定によるＤＭＡ転送が実行されている最中にも、ネクスト転送設定を行いネクスト転送設定レジスタに記憶することができるため、カレントＤＭＡ転送が終了した後に次に転送すべき設定を行うことによる転送効率の低下を抑えることができる。
【００２３】
さらに、本実施の形態の情報処理装置１において、各ネクスト転送設定レジスタに対して、そのネクスト転送設定レジスタへの書込みを制御するフラグ（フラグ４５ａ、フラグ４５ｂ、フラグ４５ｃ）がそれぞれ設けられている。これらのフラグは、たとえば１ビットであり、０であるときには「書込許可」を示し、１であるときには「書込禁止」を示すように、それぞれの対応するネクスト転送設定レジスタが書込許可状態であるか書込禁止状態であるかを示す。
【００２４】
また、各ネクスト転送設定レジスタに対して、当該レジスタに対して書込みが行われることを検出する書込検出回路（書込検出回路４８ａ、書込検出回路４８ｂ、書込検出回路４８ｃ）がそれぞれ設けられている。これらの書込検出回路は、対応するネクスト転送設定レジスタへの書込みを検出した際にセット信号を発生する。
【００２５】
各フラグは、書込検出回路により発生されたセット信号によりにセットされ、ネクスト転送設定レジスタが書込禁止状態であることを示すようになる。
【００２６】
また、各フラグは、カレント転送回数設定レジスタ３３から出力されたＤＭＡ転送終了信号によりクリアされ、ネクスト転送設定レジスタが書込許可状態であることを示すようになる。
【００２７】
各フラグの内容は、ＣＰＵ１０から読み出すことができる。ＣＰＵ１０は、ネクスト転送設定レジスタにネクスト転送設定を書き込もうとする際に、フラグの内容を参照し、フラグがクリアされているときにのみネクスト転送設定を書き込む。
【００２８】
つまり、従来では、ネクスト転送設定レジスタに記憶されたネクスト転送設定がカレント転送設定レジスタへ転送されたかどうかがわからないとき、ネクスト転送設定レジスタに記憶されているネクスト転送設定がＣＰＵ１０により上書きされ、既に設定されていたネクスト転送設定によるＤＭＡ転送が行われない危険性がある。それに対して、本実施の形態において、ネクスト転送設定レジスタに対して書込みの制御を行うフラグを設け、ネクスト転送設定レジスタに記憶されたネクスト転送設定が、まだカレント転送設定レジスタに転送されていないときにはネクスト転送設定レジスタを書込禁止の状態にすることにより、ネクスト転送設定レジスタに設定されたネクスト転送設定の安全性を高めることができる。
【００２９】
次に基準転送回数設定レジスタ６０、比較器７０について説明する。
基準転送回数設定レジスタ６０は、基準となる転送回数（以下基準転送回数という）を格納している。この基準転送回数は、ＣＰＵ１０から設定可能であり、望ましくは１以上の値に設定される。
【００３０】
比較器７０は、基準転送回数設定レジスタ６０に記憶された基準転送回数とカレント転送回数設定レジスタ３３に記憶されたカレント転送回数とを比較して、基準転送回数とカレント転送回数とが一致したとき、ＣＰＵ１０に転送回数一致を示す割込通知信号を出力する。
【００３１】
ＣＰＵ１０は、この割込通知信号を受信すると、ネクスト転送設定レジスタへの書込みを準備する。
【００３２】
前述したように、カレント転送設定によるＤＭＡ転送が終了すると、ネクスト転送設定レジスタの内容がカレント転送設定レジスタに転送される。基準転送回数を「現在のＤＭＡ転送がまもなく終了する」ことを示す値にすれば、比較器７０から割込信号が発生するタイミングは、「カレント転送設定によるＤＭＡ転送がまもなく終了」を示すので、ＣＰＵ１０は効率良くネクスト転送設定を行うことができる。
【００３３】
なお、「現在のＤＭＡ転送がまもなく終了する」ことを示す値は、比較器７０から発生する割込信号によりＣＰＵ１０がネクスト転送設定レジスタへ設定するまでの処理時間を考慮して決めればよい。
【００３４】
また、ネクスト転送設定レジスタに既にネクスト転送設定がなされている場合において、ネクスト転送設定を行うタイミングを生成してＣＰＵ１０に知らせることにより、必要なときにだけＣＰＵ１０の処理資源を使用することができるため、転送効率のみならずＣＰＵ資源の効率的な利用を図ることができる。すなわち、比較器７０からＣＰＵ１０へ割込通知する機能がない場合には、ネクスト転送設定レジスタが書込禁止状態になっているとき、ＣＰＵ１０は次のネクスト転送設定を行うためにポーリングなどによりネクスト転送設定レジスタが書込許可状態になったか否かを監視する必要があり、ＣＰＵ１０の負担が大きい。一方、比較器７０からの割込みが発生したときにＣＰＵ１０がネクスト転送設定を行うようにすれば、ＣＰＵ１０はＤＭＡ転送状態を監視する必要がなくなり、割込みがあるまでは他の処理に資源を用いることができるため、ＣＰＵ１０の資源を効率的に稼働させることができる。
【００３５】
この構成は、可変長データのＤＭＡ転送においても効力を発揮することができる。
従来、可変長データをＤＭＡ転送する際に、その転送回数などを設定するために、複雑なソフトウェアまたは専用のハードウェアを必要とされていた。本実施の形態における基準転送回数設定レジスタ６０と比較器７０を利用して、可変長データのＤＭＡ転送を簡単に行うことができる。
【００３６】
図３に示すように、データはヘッダ部と、データ部から構成され、ヘッダ部から転送される。通常、可変長データは、そのヘッダ部には、データのサイズを示す情報（以下サイズ情報という）が含まれている。
【００３７】
そこで、可変長データをＤＭＡ転送する際に、ＣＰＵ１０は、最初にヘッダ部をＤＭＡ転送する設定をする。なお、このとき、カレント転送設定レジスタがクリアのときはカレント転送設定レジスタに設定し、カレント転送設定レジスタがクリアではないときはネクスト転送設定レジスタに設定する。そして、基準転送回数レジスタ６０には、ヘッダ部に含まれるサイズ情報の領域が転送されるのに必要な回数を設定する。
【００３８】
ヘッダ部のＤＭＡ転送が開始され、サイズ情報の領域が転送されると、比較器７０から割込信号が発生する。ＣＰＵ１０は、割込ルーチンにて、ＤＭＡ転送されたヘッダ部よりサイズ情報を読取り、それに基づいてデータ部の転送回数を算出するとともに、算出された転送回数をネクスト転送の転送回数としてネクスト転送回数設定レジスタ４３に設定する。こうすることによって、ヘッダ部のＤＭＡ転送終了後に続けてデータ部が転送される。
【００３９】
こうすることによって、複雑なソフトウェアまたは専用のハードウェアを用いることなく、可変長データのＤＭＡ転送を簡単に行うことができる。
【００４０】
図４はＤＭＡ転送においてＣＰＵ１０とＤＭＡＣ２０の動作例を示すタイミングチャートであり、図中矢印が示す方向は、処理の時間軸である。また、「ＤＭＡ転送設定」と「割込処理」はＣＰＵ１０により行われる処理であり、「ＤＭＡ転送実行」はＤＭＡＣ２０により行われる処理である。なお、各カレント転送設定レジスタおよびネクスト転送設定レジスタは初期状態としてＤＭＡ設定が行われていない状態とする。
【００４１】
最初にＣＰＵ１０にデータＡについて転送要求がなされたとき、ＣＰＵ１０によって、転送要求の内容に従い転送元アドレス、転送先アドレス、転送回数がカレント転送設定として該当するカレント転送設定レジスタに設定される。そして、カレント転送設定レジスタに記憶されたカレント転送設定に基づいてデータＡについてのＤＭＡ転送が行われる。
【００４２】
データＡのＤＭＡ転送中にＣＰＵ１０に割込みが発生しデータＢのＤＭＡ転送要求がなされたとき、各ネクスト転送設定レジスタはクリアな状態であり、それぞれのフラグは書込許可状態を示している。よって、ＣＰＵ１０により、データＢについてのＤＭＡ転送設定はネクスト転送設定としてネクスト転送設定レジスタへ設定される。このとき、フラグは書込禁止を示すように更新される。
【００４３】
データＡのＤＭＡ転送が完了したとき、ネクスト転送設定レジスタに記憶されたネクスト転送設定がカレント転送設定レジスタに転送され、データＢのＤＭＡ転送が行われる。また、各フラグはクリアされる。
【００４４】
データＢのＤＭＡ転送中にＣＰＵ１０にデータＣのＤＭＡ転送要求があったときも、上述したように、ネクスト転送設定としてネクスト転送設定レジスタに記憶され、データＣのＤＭＡ転送中にデータＤのＤＭＡ転送要求があったときも、ネクスト転送設定としてネクスト転送設定レジスタに記憶される。ここで、データＣのＤＭＡ転送中であって、かつデータＤについてのネクスト転送設定完了後、さらにデータＸについてのＤＭＡ転送要求がなされたとき、ネクスト転送設定レジスタに既にＤＭＡ転送設定がなされているため、フラグはセットされている。そのため、ＣＰＵ１０がデータＸについてのＤＭＡ転送設定をネクスト転送設定レジスタに書き込むことがなく、ネクスト転送設定レジスタに設定されたデータＤの転送が行われないことを防ぎ、ネクスト転送設定の安全性を高めることができる。
【００４５】
そして、データＣについてのＤＭＡ転送が完了したとき、ネクスト転送設定レジスタに記憶されたデータＤについてのＤＭＡ転送設定がカレント転送設定レジスタに転送される。データＤのＤＭＡ転送が開始した後、比較器７０からＣＰＵ１０へ割込みがなされ、ＣＰＵ１０によりデータＸのＤＭＡ転送設定がなされる。なお、データＤについてのネクスト転送設定がカレント転送設定レジスタに転送された後には各フラグがクリアされているため、データＸのＤＭＡ転送設定をネクスト転送設定レジスタに書き込むことができる。
【００４６】
これにより、ＣＰＵ１０はフラグを監視する必要がなくなり、比較器７０から割込みがあるまでは他の処理にＣＰＵ１０を用いるができるため、ＣＰＵ１０の資源を効率的に稼働させることができる。
【００４７】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、さまざまな変更、増減を加えてもよい。これらの変更、増減が加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
【００４８】
たとえば、図２に示すＤＭＡＣ２０において、各ネクスト転送設定レジスタに対して、別体にフラグを設けるようにしているが、フラグをネクスト転送設定レジスタ内にたとえばその上位ビットとして設けるようにしてもよい。図５はこの場合におけるネクスト転送設定レジスタの構成模式の一例を示す。なお、ここで、ネクスト転送元アドレス設定レジスタのみを示し、ネクスト転送先アドレス設定レジスタ、ネクスト転送回数設定レジスタの構成模式については、ネクスト転送設定レジスタの構成模式と同じであるため、ここでそれらの図示および詳細な説明を省略する。
【００４９】
図５に示すように、この場合、ネクスト転送元アドレス設定レジスタは、ネクスト転送元アドレスを示す複数（たとえば１６）のビットを有するとともに、書込みを制御するための１ビット（図中ＲＷ）を有している。
【００５０】
ＲＷは、書込検出回路により発生されたセット信号によりにセットされ、ネクスト転送元アドレス設定レジスタが書込禁止状態であることを示すようになる。
【００５１】
また、ＲＷは、カレント転送回数設定レジスタ３３から出力されたＤＭＡ転送終了信号によりクリアされ、ネクスト転送元アドレス設定レジスタが書込許可状態であることを示すようになる。
【００５２】
ＣＰＵ１０は、ネクスト転送設定レジスタにネクスト転送設定を書き込もうとする際に、その上位ビットのＲＷを参照し、このビットがクリアされているときにのみネクスト転送設定を書き込む。これによって、図２に示すような構成と同じ効果を得ることができる。
【００５３】
また、図２に示すＤＭＡＣ２０において、書込検出回路がネクスト転送設定レジスタへの書込を検出した際に発生したセット信号でフラグをセットしているが、たとえば、ＣＰＵ１０により、ネクスト転送設定レジスタへの書込時に直接フラグの値を更新するようにしてもよい。
【００５４】
また、図１に示す情報処理装置１において、ネクスト転送設定レジスタとなる各レジスタ４１〜４３に対してフラグを設けているが、全てのネクスト転送設定レジスタが書込許可状態か書込禁止状態を示すフラグを１つのみ設けるようにしてもよい。このとき、このフラグは、別体に設けてもよいし、レジスタ４１〜４３のいずれかに設けてもよい。
【００５５】
さらに、図２において、フラグと比較器７０との双方が設けられているＤＭＡＣ２０について例示しているが、フラグと比較器７０のいずれか一方だけでも、ネクスト転送設定レジスタに既に設定されたネクスト転送設定の安全性を保つようにすることができるので、フラグと比較器７０のいずれか一方のみを設けるようにしてもよい。
【００５６】
片方の比較器７０だけを設けたダイレクトメモリアクセスコントローラは、カレント転送設定レジスタと、ネクスト転送設定レジスタと、基準転送回数設定レジスタと、カレント転送設定レジスタに記憶されたカレント転送設定によるＤＭＡ転送中に、基準転送回数設定レジスタに記憶された基準転送回数とカレント転送設定レジスタに記憶されたカレント転送回数とを比較する比較器とを備える。比較器は、基準転送回数とカレント転送回数とが一致したとき、ネクスト転送設定レジスタへネクスト転送設定を書き込むための割込みを発生させる。このようなダイレクトメモリアクセスコントローラを用いた情報処理装置では、基準転送回数設定レジスタに「現在のＤＭＡ転送がまもなく終了する」ことを示す値にすれば、ネクスト転送設定レジスタに既に設定されたネクスト転送設定の安全性を守ることができるとともに、ＣＰＵが比較器からの割込があったときにネクスト転送設定レジスタにネクスト転送設定をするための準備を開始するようにすれば、装置全体の効率向上を図ることができる。
【図面の簡単な説明】
【００５７】
【図１】本発明の実施の形態にかかる情報処理装置を示すブロック図である。
【図２】図１に示す情報処理装置におけるＤＭＡＣを示すブロック図である。
【図３】転送されるデータの構成例を示す図である。
【図４】図２におけるＤＭＡＣの動作例の流れを示すタイミングチャートである。
【図５】フラグの他の構成例を示す模式図である。
【図６】従来のＤＭＡＣの動作例の流れを示すタイミングチャートである。
【図７】従来のＤＭＡＣの別の動作例の流れを示すタイミングチャートである。
【符号の説明】
【００５８】
１  情報処理装置
２  外部メモリ
１１  メモリコントローラ
１２  周辺Ｉ／Ｏ
１３  周辺バスブリッジ
１４  システムバス
１５  周辺バス
２０  ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）
３１  カレント転送元アドレス設定レジスタ
３２  カレント転送先アドレス設定レジスタ
３３  カレント転送回数設定レジスタ
３４  演算器
３５  セレクタ
４１  ネクスト転送元アドレス設定レジスタ
４２  ネクスト転送先アドレス設定レジスタ
４３  ネクスト転送回数設定レジスタ
４５  フラグ
４８  書込検出回路
５０  ＤＭＡ転送回路
６０  基準転送回数設定レジスタ
７０  比較器
ＲＷ  フラグ
【図１】
2007310735.tif 000003
【図２】
2007310735.tif 000004
【図３】
2007310735.tif 000005
【図４】
2007310735.tif 000006
【図５】
2007310735.tif 000007
【図６】
2007310735.tif 000008
【図７】
2007310735.tif 000009