(57)【要約】【課題】  無効となった転送要求をＤＭＡにより破棄することができなかった。【解決手段】  キュー（３２１〜３２ｉ）は、識別子を用いてグループ化された複数の転送要求（ＤＳ１〜ＤＳｎ）を記憶し、リクエストチャネルを構成する。制御部（３３１〜３３ｉ、３４、３６、３７）は、グループ化された複数の転送要求に基づく転送処理に対応して設定された終了時間が経過した場合、キューの転送要求を消去する。【選択図】      図３
2006178787.tif 000002
【特許請求の範囲】
【請求項１】
転送要求に応じてデータを転送する転送処理部と、
識別子が付加された複数の前記転送要求を記憶する複数の転送要求記憶部と、
前記複数の転送要求記憶部の１つを選択し、選択した転送要求記憶部に記憶された複数の前記転送要求を順次取り出し、前記転送処理部に供給する選択部と、
前記識別子と、前記識別子が付加された複数の前記転送要求に基づく転送処理の終了時間を示す時間情報を記憶し、前記選択部から供給される前記転送要求に含まれる識別子に基づき前記時間情報を読み出す第１の記憶部と、
前記第１の記憶部から供給された時間情報に基づき、複数の前記転送要求の処理時間を判断し、処理時間が前記時間情報を経過した場合、当該転送要求以降の転送要求をキャンセルするキャンセルリクエスト信号を生成し、前記転送要求記憶部に供給する経過時間判定部と
を具備することを特徴とする半導体装置。
【請求項２】
前記経過時間判定部は、
現在転送処理中のグループの識別子を記憶するレジスタと、
前記選択部から供給される識別子と前記レジスタに記憶された識別子とを比較する比較器と、
前記比較器から不一致信号が出力された場合、前記記憶部から供給された時間情報が設定され、この時間情報をダウンカウントするカウンタと、
前記カウンタよりカウント値が“０”であることを示す信号が供給され、前記比較器から一致信号が供給された場合、前記キャンセルリクエスト信号を出力する判別部と
を具備することを特徴とする請求項１記載の半導体装置。
【請求項３】
転送要求に応じてデータを転送する転送処理部と、
識別子が付加された複数の前記転送要求を記憶する複数の転送要求記憶部と、
前記複数の転送要求記憶部の１つを選択し、選択した転送要求記憶部に記憶された複数の前記転送要求を順次取り出し、前記転送処理部に供給する選択部と、
複数の前記転送要求に基づき設定された転送処理の終了時間が外部から供給される現在時間を経過した場合、当該転送要求以降の転送要求をキャンセルするキャンセルリクエスト信号を生成し、前記転送要求記憶部に供給する経過時間判定部と
を具備することを特徴とする半導体装置。
【請求項４】
前記経過時間判定部は、
現在転送処理中の転送要求の識別子を記憶する第１のレジスタと、
前記選択部から供給される識別子と前記レジスタに記憶された識別子とを比較する第１の比較器と、
前記比較器から不一致信号が出力された場合、前記選択部から供給される前記終了時間を保持する第２のレジスタと、
前記第２のレジスタに保持された前記終了時間と前記外部から供給される現在時間とを比較する第２の比較器と、
前記第１、第２の比較器から一致信号が供給された場合、前記キャンセルリクエスト信号を出力する判別部と
を具備することを特徴とする請求項３記載の半導体装置。
【請求項５】
複数の転送要求から選択された１つの選択要求に付加された識別子に対応する終了時間を設定し、
前記選択された転送要求に基づくデータの転送処理中に、設定された終了時間が経過した場合、前記選択された転送要求を消去する
ことを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダイレクト・メモリ・アクセス装置（以下、ＤＭＡと称す）を有する半導体装置とそのデータ転送方法に関する。
【背景技術】
【０００２】
近時、ＣＰＵ（中央処理装置）の速度と外部バスの速度との差が拡大し、ＤＭＡ処理が多様化、複雑化している。これに伴い、従来ＣＰＵによって転送が行われていたような処理もＤＭＡが行うようになってきている。このため、例えばＤＭＡが直接入出力デバイスから転送開始のイベントを受け取り、事前に用意された処理内容（デスクリプタ）を用いて転送を行うことにより、ＣＰＵの処理をさらに軽減する構成を持つデバイスがある。
【０００３】
また、バスによるデータ転送において、転送要求から実際に転送が開始されるまでの時間を制御したり、転送するデータの種類により転送を行うマスタ機能の優先度を変更したりすることができるデータ転送制御装置が開発されている（例えば特許文献１参照）。
【０００４】
しかし、ＤＭＡを用いた転送処理ではデスクリプタが前もって用意され、さらに転送の状態はＤＭＡによって管理されている。このため、ＤＭＡ側の理由によって転送処理を中止する場合（例えばエラーが発生した場合）の処理は容易である。しかし、ＣＰＵのコンテキストによってＤＭＡ処理が不要となり、転送処理を中止する場合、ＣＰＵが当該チャネルのＤＭＡ要求の発行を停止し、当該デスクリプタをＤＭＡチャネルのキューから取り除くなどの処理を行う必要がある。この処理は、近年の高速プロセッサにおいて、ＣＰＵと外部バスの速度が大きく違うため、ＣＰＵはかなりの時間待たされることなり、性能が悪化する。
【０００５】
一方、膨大なデータのリアルタイム入出力、例えば高精細の映像の入出力などのように、中断ができないような転送処理の場合、次のデータの入出力は以前のデータの状態にかかわらず外部装置に入出力されなくてはならない。このため、ＣＰＵの内部バスの混雑などによってデータ転送が停滞した場合において、間に合わなくなったデータ転送をキャンセルできない場合、次のデータの入出力にも影響を与えてしまう。これはＣＰＵがデータ転送を細かく管理している場合、あまり大きな問題とはならないが、例えば映像入出力コントローラとＤＭＡとが自動的に転送を開始するようなシステムにおいては影響が大きい。つまり、複数のデスクリプタによって構成された長大なリアルタイム転送コンテキストを持つ場合、無効となった転送処理をＤＭＡが自発的に破棄することができないと、システムの性能が低下する。
【特許文献１】特開２０００−３２２３７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、無効となった転送要求をＤＭＡにより破棄することができ、システムの性能低下を防ぐことが可能な半導体装置とそのデータ転送方法を提供する。
【課題を解決するための手段】
【０００７】
本発明の半導体装置の第１の態様は、転送要求に応じてデータを転送する転送処理部と、識別子が付加された複数の前記転送要求を記憶する複数の転送要求記憶部と、前記複数の転送要求記憶部の１つを選択し、選択した転送要求記憶部に記憶された複数の前記転送要求を順次取り出し、前記転送処理部に供給する選択部と、前記識別子と、前記識別子が付加された複数の前記転送要求に基づく転送処理の終了時間を示す時間情報を記憶し、前記選択部から供給される前記転送要求に含まれる識別子に基づき前記時間情報を読み出す第１の記憶部と、前記第１の記憶部から供給された時間情報に基づき、複数の前記転送要求の処理時間を判断し、処理時間が前記時間情報を経過した場合、当該転送要求以降の転送要求をキャンセルするキャンセルリクエスト信号を生成し、前記転送要求記憶部に供給する経過時間判定部とを具備している。
【０００８】
本発明の半導体装置の第２の態様は、転送要求に応じてデータを転送する転送処理部と、識別子が付加された複数の前記転送要求を記憶する複数の転送要求記憶部と、前記複数の転送要求記憶部の１つを選択し、選択した転送要求記憶部に記憶された複数の前記転送要求を順次取り出し、前記転送処理部に供給する選択部と、複数の前記転送要求に基づき設定された転送処理の終了時間が外部から供給される現在時間を経過した場合、当該転送要求以降の転送要求をキャンセルするキャンセルリクエスト信号を生成し、前記転送要求記憶部に供給する経過時間判定部とを具備している。
【０００９】
本発明のデータ転送方法の態様は、複数の転送要求から選択された１つの選択要求に付加された識別子に対応する終了時間を設定し、前記選択された転送要求に基づくデータの転送処理中に、設定された終了時間が経過した場合、前記選択された転送要求を消去することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、無効となった転送要求をＤＭＡにより破棄することができ、システムの性能低下を防ぐことが可能な半導体装置とそのデータ転送方法を提供できる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態について図面を参照して説明する。
【００１２】
（第１の実施形態）
図１は、第１の実施形態の構成を示している。図１において、ＣＰＵ１１、ＤＭＡコントローラ（ＤＭＡＣ）１２、入出力（Ｉ／Ｏ）デバイス１３、及びメモリ１４は、バス１５に接続されている。Ｉ／Ｏデバイス１３には、外部入出力装置１６が接続されている。ＣＰＵ１１、ＤＭＡＣ１２、Ｉ／Ｏデバイス１３、メモリ１４、及びバス１５は、例えば１チップ内に形成されている。前記バス１５は例えば１２８ビットのデータ幅を有し、ＤＭＡのターゲットデバイスは、例えば３２ビット幅としている。さらに、このバス１５はそのプロトコルによって、転送時のデータバスサイジングをサポートするものとする。例えばＣＰＵ１１が１２８ビットのデータをＩ／Ｏデバイス１３を介して転送しようとした場合、Ｉ／Ｏデバイス１３からのデータ幅情報をＣＰＵ１１のバスＩ／Ｆが認識する。これにより、１２８ビットのデータ転送は、自動的に３２ビットのデータ転送４回に分割されて実行される。
【００１３】
外部入出力機器１６は、Ｉ／Ｏデバイス１３へのデータ転送を開始すると、ある一定量のデータを連続的に転送するものとする。この実施形態では、ＤＭＡの方向に依存しない。このため、例えば外部入出力機器１６からのデータをＩ／Ｏデバイス１３を経由してメモリ１４に転送するものとする。
【００１４】
また、転送されるデータは、例えば画像データであり、ＣＰＵ１３はメモリ１４に記憶された画像データをリアルタイムで処理するものとする。この場合、画像データは次のフレームの画像処理を妨げることなく転送する必要がある。しかし、バスの混雑によってデータがある時間までにＣＰＵ１３に到達しない場合、現在の画像データは意味を持たないため転送の継続の必要はなく、また、次のフレームの取り込みを妨げることなく処理しなくてはならないとする。
【００１５】
Ｉ／Ｏデバイス１３は、例えば画像入出力機器により構成された外部入出力機器１６が画像データの転送を開始すると、ＤＭＡＣ１２に対して転送開始要求を発行する。ＤＭＡＣ１２は、外部から転送開始トリガを与えることができる構成であり、この転送開始要求をトリガとして、所定のチャネルのＤＭＡ処理をアクティブにする。このようにして、Ｉ／Ｏデバイス１３による転送処理は、ＣＰＵ１１が介在せずに実行される。
【００１６】
図２は、第１の実施形態に示す適用されるデスクリプタの一例を示している。図２は、ｎ個のデスクリプタＤＳ１〜ＤＳｎを示している。１つのデスクリプタは、例えば１水平ラインのデータを転送するための処理内容、例えば転送元アドレス、転送先アドレス、転送長、転送元転送方式、転送先転送方式、次ポインタ、グループ識別子（ＩＤ）を有している。ｎ個（水平走査線数分）のデスクリプタＤＳ１〜ＤＳｎにより、１フレーム分のデータが転送される。ｎ個のデスクリプタＤＳ１〜ＤＳｎは、次ポインタと転送元アドレスを用いてリンクされている。前記グループＩＤは、ｎ個のデスクリプタＤＳ１〜ＤＳｎが一連のグループであることを示しており、同じグループＩＤを有するデスクリプタが１つのグループとして扱われる。すなわち、一連のグループに含まれるデスクリプタは、共通のグループＩＤを含んでいる。
【００１７】
図３は、第１の実施形態に適用されるＤＭＡＣ１２の一例を示している。図３において、ＤＭＡＣ１２は、バス制御装置３１と、リクエストチャネルとしての複数のキュー３２１〜３２ｉと、これらキュー３２１〜３２ｉを制御する複数のキューコントローラ３３１〜３３ｉと、キュー３２１〜３２ｉが接続され、これらキュー３２１〜３２ｉの１つを選択するチャネルアービタ３４と、チャネルアービタ３４に接続されたＤＭＡ処理部３５と、グループＩＤ−レイテンシハッシュとしてのメモリ３６と、経過時間判定部３７とにより構成されている。メモリ３６、及び経過時間判定部３７以外の構成は、通常のＤＭＡＣが有する回路である。
【００１８】
前記バス制御装置３１は、バス１５に接続される。前記キュー３２１〜３２ｉは、例えばファーストイン／ファーストアウトのレジスタにより構成された記憶部である。
【００１９】
メモリ３６は、例えばＣＡＭ(Content-Address memory)構造のメモリであり、グループＩＤ（Ｇ−ＩＤ）に対応してデッドラインデータ（ＤＬＤ）を記憶している。各デッドラインデータは、例えば図２に示すデスクリプタチェーンに基づき、１フレームのデータを転送するのに必要な時間に設定されている。すなわち、デッドラインデータＤＬＤは、複数のデスクリプタからなる１つのグループの転送処理に必要な相対的時間を示している。このメモリ３６の内容は、バス制御装置３１を介してＣＰＵ１１により書き換えられる。メモリ３６に記憶されたデッドラインデータは、チャネルアービタ３４から供給されるグループＩＤに基づいて読み出される。この読み出されたデッドラインデータは、経過時間判定部３７に供給される。
【００２０】
経過時間判定部３７は、グループＩＤにより示される転送処理の時間を管理するものであり、転送処理中のグループに設定されたデッドラインを管理する。この経過時間判定部３７は、例えばレジスタ３７ａ、比較器３７ｂ、インバータ回路３７ｃ、例えばサチュレイトダウンカウンタにより構成されたカウンタ３７、例えばアンド回路により構成された判定器３７ｅにより構成されている。
【００２１】
レジスタ３７ａは、転送処理中のカレントＩＤを記憶する。比較器３７ｂは、レジスタ３７ａに記憶されたカレントＩＤとグループＩＤとを比較する。比較器３７ｂは、レジスタ３７ａに記憶されたカレントＩＤとグループＩＤとが一致した場合、例えばハイレベルの一致信号を出力し、不一致の場合、例えばローレベルの不一致信号を出力する。インバータ回路３７ｃは、比較器３７ｂから供給される信号を反転し、レジスタ３７ａ及びカウンタ３７ｄに信号を供給する。レジスタ３７ａは、インバータ回路３７ｃから供給される信号が例えばハイレベルの場合、すなわち、比較器３７ｂからローレベルの不一致信号が出力された場合、チャネルアービタ３４から供給されるグループＩＤをカレントＩＤとして記憶する。カウンタ３７ｄは、インバータ回路３７ｃから供給される信号が例えばハイレベルの場合、すなわち、比較器３７ｂからローレベルの不一致信号が出力された場合、メモリ３６から供給されるデッドラインデータをセットする。
【００２２】
このカウンタ３７ｄは、セットされたデッドラインデータを例えばクロック信号に応じてカウントダウンし、カウント値が“０”となった場合、その値を保持する。このカウンタ３７ｄは、カウント値が“０”以外の場合、例えばローレベルの信号を出力し、カウント値が“０”となった場合、例えばハイレベルの信号を出力する。比較器３７ｂの出力信号とカウンタ３７ｄの出力信号は判定器３７ｅに供給される。
【００２３】
この判定器３７ｅは、比較器３７ｂからハイレベルの一致信号が供給され、且つカウンタ３７ｄからカウント値が“０”であることを示すハイレベルの信号が供給された場合、ハイレベルのキャンセルリクエスト信号ＣＲを出力する。この判定器３７ｅの出力信号はチャネルアービタ３４に供給されるとともに、複数のアンド回路３８の一方入力端にそれぞれ供給される。
【００２４】
これらアンド回路３８の他方入力端には、チャネルアービタ３４から出力されるチャネルＩＤが供給される。これらアンド回路３８の出力信号は、対応するキューコントローラ３３１〜３３ｎに供給される。
【００２５】
尚、メモリ３６は、グループＩＤに対応してデッドラインデータを記憶しているが、これに限定されるものではなく、例えばチャネルＩＤとグループＩＤに対応してデッドラインデータを記憶させ、チャネルアービタ３４から供給されるチャネルＩＤとグループＩＤに応じてデッドラインデータを読み出すように構成してもよい。
【００２６】
また、カウンタ３７ｄは、サチュレイトダウンカウンタを用いて構成したが、これに限定されるものではなく、他のカウンタ又はタイマなどを用いることも可能である。さらに、判定器３７ｅを構成するアンド回路、及びアンド回路３８も一例であり、論理構成に応じてアンド回路を他の論理回路に変形可能なことは言うまでもない。
【００２７】
上記構成において、動作について説明する。先ず、デスクリプタを転送要求としてリクエストチャネルに設定する。すなわち、図２に示すようにグループＩＤによりグループ化されたデスクリプタは、ＣＰＵ１１からバス制御装置３１を介して複数のキュー３２１〜３２ｎのいずれかに格納される。キュー３２１〜３２ｎに対するデスクリプタの格納は、ＤＭＡＣ１２が能動的に、若しくはＣＰＵ１１の制御により実行される。チャネルアービタ３４は、通常の構成であり、複数のリクエストチャネルから１つのチャネルを選択する。また、チャネルアービタ３４は、選択したチャネルのキューに格納された先頭のデスクリプタを取り出し、ＤＭＡ処理部３５に送る。ＤＭＡＣ１２の動作は、転送処理のキャンセル以外は通常のＤＭＡＣと同様の動作である。すなわち、ＤＭＡ処理部３５は、チャネルアービタ３４からデスクリプタを受け取ると、デスクリプタに記載された転送元アドレス、転送先アドレス、転送長、転送時のアドレスのカウント方法などを保持する転送元転送方式、及び転送先転送方式に従って、転送処理を行う。さらに、ＤＭＡ処理部３５は、転送中止を示すフラグを含んだステータスレジスタ３５ａを有し、転送が中止された際、そのリクエストチャネルの転送が中止された旨をステータスレジスタ３５ａの対応するフラグに設定するとともに、ＣＰＵに中止されたリクエストチャネルを通知する。
【００２８】
次に、ＤＭＡＣ１２による転送処理のキャンセル動作について説明する。
【００２９】
チャネルアービタ３４は、前述したように、選択したチャネルに対応するキューに格納されている先頭のデスクリプタを取り出し、このデスクリプタからグループＩＤを取り出す。このグループＩＤは、メモリ３６に供給される。メモリ３６は、記憶されているグループＩＤと供給されたグループＩＤとが一致した場合、このグループＩＤに対応するデッドラインデータを出力する。
【００３０】
一方、経過時間判定部３７は、チャネルアービタ３４から供給されるグループＩＤとメモリ３６から供給されるデッドラインデータとを受け取る。比較器３７ｂは、レジスタ３７ａから出力されるカレントＩＤと、チャネルアービタ３４から供給されるグループＩＤとを比較する。この比較の結果、カレントＩＤとグループＩＤとが不一致である場合、転送要求のグループが変化したものと判断され、インバータ回路３７ｃの出力信号に応じて、チャネルアービタ３４から供給されるグループＩＤがレジスタ３７ａに設定される。これとともに、メモリ３６から供給されるデッドラインデータがカウンタ３７ｄにセットされる。
【００３１】
この状態において、ＤＭＡ処理部３５は、前述したように、デスクリプタの記載に従って転送処理を実行する。カウンタ３７ｄはセットされたデッドラインデータをダウンカウントする。このとき、比較器３７ｂからはカレントＩＤとグループＩＤとを比較した結果として一致信号が出力されている。この状態において、カウンタ３７ｄの値が“０”となった場合、すなわち、現在の転送要求を処理している途中で、デッドラインとなった場合、カウンタ３７ｄは、ハイレベルの信号を出力する。このため、判定器３７ｅから例えばハイレベルのキャンセルリクエストＣＲが出力される。このキャンセルリクエストＣＲは、チャネルアービタ３４及び複数のアンド回路３８に供給される。このアンド回路３８には、チャネルＩＤが供給される。このため、キューコントローラ３３１〜３３ｉのうち、チャネルＩＤで示される現在転送処理中のチャネルのキューコントローラにキャンセルリクエストＣＲが供給される。
【００３２】
キャンセルリクエストＣＲが供給されたキューコントローラは、キューの先頭のデスクリプタ、すなわち現在扱っているデスクリプタを消去する。これと同時に、チャネルアービタ３４は、キャンセルリクエストＣＲに応じて、選択されているキューから後続のデスクリプタを取り出す。このデスクリプタのグループＩＤは比較器３７ｂに供給される。このグループＩＤとカレントＩＤとが同一である場合、比較器３７ｂから一致信号が出力される。また、カウンタ３７ｄの出力信号はハイレベルのままであるため、判定器３７ｅからキャンセルリクエストＣＲが出力される。したがって、このデスクリプタもキャンセルされる。このようにして、共通のグループＩＤを有するデスクリプタがキューから順次消去される。
【００３３】
一方、チャネルアービタ３４により取り出されたグループＩＤがカレントＩＤと異なる場合、レジスタ３７ａ、カウンタ３７ｄの内容が更新され、新規の転送が行われる。すなわち、この場合、比較器３７ｂから不一致信号が出力される。このため、新たなグループＩＤがレジスタ３７ａに設定されるとともに、メモリ３６からこのグループＩＤに対応して読み出されたデッドラインデータがカウンタ３７ｄに設定さる。このようにして、新たなグループの転送動作が上述したように実行される。
【００３４】
上記第１の実施形態によれば、一連のグループを構成する各デスクリプタは、共通のグループＩＤを有し、ＤＭＡＣ１２は、グループＩＤに対応したデッドラインデータを記憶するメモリ３６と、このメモリ３６から出力されたデッドラインデータをダウンカウントするカウンタ３７ｄを有し、ＤＭＡ処理部３５による転送処理中に経過時間判定部３７が、転送処理中のグループＩＤのデッドラインを検出した場合、共通のグループＩＤを有するデスクリプタをキューの中から順次消去している。このため、ＤＭＡＣ１２により、長大なデスクリプタを短時間、且つ確実に消去することができるため、ＣＰＵ１１の負担を軽減でき、処理効率の低下を防止できる。
【００３５】
（第２の実施形態）
図４、図５は、第２の実施形態を示している。図４は、ＤＭＡＣ１２の構成を示し、図５は、デスクリプタの構成を示している。
【００３６】
第１の実施形態において、ＤＭＡＣ１２は、メモリ３６に記憶されたデッドラインデータに基づいて、内部的に転送処理の経過時間を管理している。これに対して、第２の実施形態は、ＤＭＡＣ１２の外部から供給される時間情報を用いて転送処理の経過時間を管理する。
【００３７】
先ず、図５に示すデスクリプタの構成について説明する。第２の実施形態において、複数のデスクリプタＤＳ１〜ＤＳｎにより構成されたデスクリプタチェーンの先頭のデスクリプタＤＳ１は、デッドラインデータＤＬＤ、及びバリッドフラグＶＦを有している。デッドラインデータＤＬＤは、グループＩＤによりグループ化された複数のデスクリプタによる転送処理が終了する時刻を示している。この時刻は、例えばＣＰＵ１１により管理された絶対的な時間である。しかし、この時間は、これに限らず、ＤＭＡＣ１２とＣＰＵ１１とにより共通に認識できる時間であればよい。また、バリッドフラグＶＦは、デッドラインデータＤＬＤとしての転送終了時間の有効又は無効を示している。これらデッドラインデータＤＬＤ、及びバリッドフラグＶＦは、ＣＰＵ１１により設定される。
【００３８】
次に、図４に示すＤＭＡＣ１２について説明する。図４において、図３と同一部分には同一符号を付し、異なる部分について説明する。
【００３９】
図５に示すグループ化されたデスクリプタは、ＣＰＵ１１からバス制御装置３１を介して複数のキュー３２１〜３２ｎのいずれかに格納される。キュー３２１〜３２ｎに対するデスクリプタの格納は、ＤＭＡＣ１２が能動的に、若しくはＣＰＵ１１の制御により実行される。チャネルアービタ３４は、選択したチャネルに対応するキューに格納された先頭のデスクリプタを取り出し、ＤＭＡ処理部３５に送る。これとともに、チャネルアービタ３４は、選択したチャネルに対応するキューに格納されている先頭のデスクリプタを取り出し、このデスクリプタからグループＩＤ、デッドラインデータＤＬＤ、バリッドフラグＶＦを取り出す。これらグループＩＤ、デッドラインデータＤＬＤ、バリッドフラグＶＦは、経過時間判定部３７に供給される。
【００４０】
経過時間判定部３７は、レジスタ３７ａ、比較器３７ｂ、インバータ回路３７ｃに加えて、レジスタ４１ａ、インバータ回路４１ｂ、レジスタ４１ｃ、比較器４１ｄ、判定器４１ｅにより構成されている。
【００４１】
レジスタ４１ａは、比較器３７ｂから不一致信号が出力された場合、インバータ回路３７ｃの出力信号に応じてデッドラインデータＤＬＤを保持する。また、レジスタ４１ｃは、比較器３７ｂから一致信号が出力された場合、インバータ回路４１ｂの出力信号に応じて前記バリッドフラグＶＦを保持する。比較器４１ｄは、レジスタ４１ａに保持されたデッドラインデータＤＬＤと、例えばＣＰＵ１１から供給されるシステムの現在時刻を示す時間データＳＴＤとを比較する。この比較器４１ｄの比較結果は、比較器３７ｂの出力信号及びレジスタ４１ｃから供給されるバリッドフラグと共に、例えばアンド回路により構成された判定部４１ｅに供給される。この判定部４１ｅは、比較器４１ｄ、３７ｂから一致信号が供給され、レジスタ４１ｃから供給されるバリッドフラグＶＦが有効を示す場合、転送処理をキャンセルするキャンセルリクエストＣＲを出力する。このキャンセルリクエストＣＲは、チャネルアービタ３４、及びアンド回路３８に供給される。
【００４２】
上記構成において、動作について説明する。転送処理は、第１の実施形態と同様である。転送処理中において、比較器４１ｄは、レジスタ４１ａに保持されているデッドラインデータとＣＰＵ１１から供給される時間データＳＴＤとを比較する。この比較の結果、これらが一致した場合、設定時間を経過したものとして、比較器４１ｄは例えばハイレベルの一致信号を出力する。この時、比較器３７ｂは、レジスタ３７ａに保持されているカレントＩＤと、チャネルアービタ３４から供給されるグループＩＤが一致しているため、例えばハイレベルの一致信号を出力する。さらに、レジスタ４１ｃは、有効なバリッドフラグＶＦを保持しているため、ハイレベルの信号を出力する。このため、判定器４１ｅは、入力条件が満足するため、例えばハイレベルのキャンセルリクエスト信号ＣＲを出力する。このキャンセルリクエスト信号ＣＲは、チャネルアービタ３４及び複数のアンド回路３８に供給される。このアンド回路３８にはチャネルＩＤが供給されている。このため、キューコントローラ３３１〜３３ｉのうち、チャネルＩＤで示される現在転送中のチャネルのキューコントローラにキャンセルリクエストＣＲが供給される。
【００４３】
キャンセルリクエストＣＲが供給されたキューコントローラは、キューの先頭のデスクリプタ、すなわち現在扱っているデスクリプタを消去する。これと同時に、チャネルアービタ３４は、キャンセルリクエストＣＲに応じて、選択されているキューから後続のデスクリプタを取り出す。このデスクリプタのグループＩＤは比較器３７ｂに供給される。このグループＩＤとカレントＩＤとが同一である場合、比較器３７ｂから一致信号が出力される。また、カウンタ３７ｄの出力信号はハイレベルのままであるため、判定器３７ｅからキャンセルリクエストＣＲが出力される。したがって、このデスクリプタもキャンセルされる。このようにして、共通のグループＩＤを有するデスクリプタがキューから順次消去される。
【００４４】
一方、チャネルアービタ３４により取り出されたグループＩＤがカレントＩＤと異なる場合、レジスタ３７ａ、レジスタ４１ａ、４１ｃの内容が更新され、新規の転送が行われる。すなわち、この場合、比較器３７ｂから不一致信号が出力される。このため、新たなグループＩＤがレジスタ３７ａにカレントＩＤとして設定されるとともに、チャネルアービタ３４から供給されるデッドラインデータがレジスタ４１ａに設定され、バリッドフラグＶＦがレジスタ４１ｃに設定される。このようにして、新たなグループの転送動作が上述したように実行される。
【００４５】
上記第２の実施形態によれば、グループ化された複数のデスクリプタの先頭のデスクリプタに転送処理期限としてのデッドラインデータＤＬＤを絶対時間により設定し、転送処理中において、先頭のデスクリプタから取り出されたデッドラインデータＤＬＤとＣＰＵ１１からの現在時刻が一致した場合、転送処理時間が経過したものとして、共通のグループＩＤを有するデスクリプタをキューの中から順次消去している。このため、ＤＭＡＣ１２により、長大なデスクリプタを短時間、且つ確実に消去することができるため、ＣＰＵ１１の負担を軽減でき、処理効率の低下を防止できる。
【００４６】
尚、本発明は上記実施形態に限定されるものではなく、本発明の要旨を変えない範囲において種々変形実施可能なことは勿論である。
【図面の簡単な説明】
【００４７】
【図１】ＤＭＡコントローラを有するシステムの一例を示す構成図。
【図２】第１の実施形態のＤＭＡコントローラに適用されるデスクリプタの一例を示す構成図。
【図３】ＤＭＡコントローラの第１の実施形態を示す構成図。
【図４】ＤＭＡコントローラの第２の実施形態を示す構成図。
【図５】第２の実施形態のＤＭＡコントローラに適用されるデスクリプタの一例を示す構成図。
【符号の説明】
【００４８】
１１…ＣＰＵ、１２…ＤＭＡＣ、１３…Ｉ／Ｏデバイス、３２１〜３２ｉ…キュー、３３１〜３３ｉ…キューコントローラ、３４…チャネルアービタ、３５…ＤＭＡ処理部、３６…メモリ、３７…経過時間判定部、３７ａ、４１ａ、４１ｃ…レジスタ、３７ｂ、４１ｄ…比較器、３７…カウンタ、３７ｅ、４１ｅ…判定器。
【図１】
2006178787.tif 000003
【図２】
2006178787.tif 000004
【図３】
2006178787.tif 000005
【図４】
2006178787.tif 000006
【図５】
2006178787.tif 000007