(57)【特許請求の範囲】
【請求項１】
複数チャネルのＤＭＡ転送機能を有する複数チャネルＤＭＡコントローラであって，
各チャネルに対応した複数のＤＭＡ制御部と，
前記複数のＤＭＡ制御部からのＤＭＡ転送要求の競合制御を行うＤＭＡ制御アービタ部とを備え，
前記複数の各ＤＭＡ制御部は，
アクセス先の速度にもとづき，アクセス先におけるアクセス時間が所定時間内に収まるように，各アクセス先ごとに定められたＤＭＡ転送の最大サイズＮ（Ｎ＞０）を決定する手段と，
ＤＭＡ転送として指定されたデータ転送量Ｍ（Ｍ＞０）が，前記ＤＭＡ転送の最大サイズＮより大きい場合に，要求されたＤＭＡ転送を最大Ｎサイズごとの転送として分割する手段と，
分割したＤＭＡ転送要求を前記ＤＭＡ制御アービタ部へ通知する手段とを備える
ことを特徴とする複数チャネルＤＭＡコントローラ。
【請求項２】
複数チャネルのＤＭＡ転送機能を有する複数チャネルＤＭＡコントローラであって，
各チャネルに対応した複数のＤＭＡ制御部と，
前記複数のＤＭＡ制御部からのＤＭＡ転送要求の競合制御を行うＤＭＡ制御アービタ部とを備え，
前記複数の各ＤＭＡ制御部は，
ＤＭＡ転送の最大サイズＮ（Ｎ＞０）の指定を，ＤＭＡ転送要求元が指定するパラメータによって動的に受け付ける手段と，
ＤＭＡ転送として指定されたデータ転送量Ｍ（Ｍ＞０）が，前記ＤＭＡ転送の最大サイズＮより大きい場合に，要求されたＤＭＡ転送を最大Ｎサイズごとの転送として分割する手段と，
分割したＤＭＡ転送要求を前記ＤＭＡ制御アービタ部へ通知する手段とを備える
ことを特徴とする複数チャネルＤＭＡコントローラ。
【請求項３】
前記ＤＭＡ制御アービタ部は，同時に複数の前記ＤＭＡ制御部からのＤＭＡ転送要求があった場合に，ラウンドロビン方式による優先順位に従って競合制御を行う
ことを特徴とする請求項１または請求項２記載の複数チャネルＤＭＡコントローラ。
【請求項４】
一つ以上のプロセッサと，データ転送のための内部バスと，主記憶メモリと，周辺ＩＯデバイスと，前記プロセッサと前記内部バスとの間に接続される高速アクセス可能なメモリと，前記主記憶メモリまたは前記周辺ＩＯデバイスと前記内部バスとの間に接続されるアクセス速度の乗り換え用のバッファとを有するプロセッサシステムにおいて，
前記高速アクセス可能なメモリおよび前記アクセス速度の乗り換え用のバッファ間のＤＭＡ転送を制御するための請求項１，請求項２または請求項３記載の複数チャネルＤＭＡコントローラを，前記プロセッサと前記内部バスとの間に接続した
ことを特徴とするプロセッサシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，複数チャネルＤＭＡコントローラおよびプロセッサシステムであって，特にプロセッサバスインタフェースのデータ転送の効率化に関するものである。
【０００２】
【従来の技術】
図１３は，一般的なプロセッサシステムの構成例を示す図である。一般的なプロセッサシステムは，プロセッサ１０１，命令メモリ１０２，データメモリ１０３，ＤＭＡ（Direct Memory Access）コントローラ１０４，内部バス１０５，主記憶メモリ１０６，周辺ＩＯデバイス１０８等から構成されている。
【０００３】
近年のプロセッサシステムのほとんどは，ロジック回路のスピード向上に対して大容量メモリのアクセススピードが追従できないため，図１３に示すようにプロセッサ１０１と主記憶メモリ（大容量メモリ）１０６とを直接接続するのではなく，両者の間に小容量ではあるが高速なメモリ（キャッシュメモリ：命令メモリ１０２，データメモリ１０３）を装備し，階層型のメモリシステムを採用している。
【０００４】
高速なメモリは，キャッシュシステムやＤＭＡコントローラ（以下，ＤＭＡＣとも記載）１０４により，ある程度まとまったデータ転送を主記憶メモリ１０６との間で実施し，プロセッサ１０１とは１バイト単位の細かなアクセスを高速に実行している。特に信号処理向けのプロセッサ（ＤＳＰ：Digital Signal Processor）では，データ処理が主なアプリケーションであるため，メモリアクセスが頻繁に発生するが，次に処理するデータが予測可能であるため，前の演算処理を高速メモリであるデータメモリ１０３内のデータで行っている間に，並行して次の処理のためのデータをＤＭＡ転送することができる。これにより，低速な主記憶メモリ１０６とのデータ転送時間を，演算処理時間に隠すことができる。すなわち，データ転送と演算処理とを並列に実行することが可能となる。
【０００５】
しかし，プロセッサ１０１が高速なメモリ（１０２，１０３）しかアクセスしなければ全く問題ないが，命令メモリ１０２としてキャッシュシステムを用いていればキャッシュミスにより主記憶メモリ１０６等にアクセスする必要があり，また，データアクセスでは周辺ＩＯデバイス１０８への直アクセスが必要な場合もある。この場合，内部バス１０５上でＤＭＡ転送との競合が発生する場合が考えられる。
【０００６】
内部バス１０５上で複数の転送要求が同時に発生した場合，命令キャッシュミスや周辺ＩＯデバイス１０８への直アクセスを待たせると，プロセッサ１０１の動作を停止させてしまうので，直アクセスを最優先で実行し，ＤＭＡ転送はウェイト（Ｗａｉｔ）させることが賢明である。しかし，命令キャッシュミスや周辺ＩＯデバイス１０８への直アクセスにおいて，アクセス先のアクセス速度が低速であるとアクセス時間が長くなり，ＤＭＡ転送が待たされる時間が長くなることによりデータ転送と演算処理を並列に実行できなくなるため，プロセッサ１０１の実効性能は低下してしまう。
【０００７】
図１４は，従来の内部バス占有例（１）を示す図である。命令メモリ１０２のキャッシュミスや周辺ＩＯデバイス１０８へのアクセスがない状態では，ＤＭＡ転送（ＤＭＡ転送１）はプロセッサ１０１の動作と並列に実行される。次に，周辺ＩＯデバイス１０８のアクセスとＤＭＡ転送要求（ＤＭＡ転送２）が同時に発生した場合，周辺ＩＯデバイス１０８のアクセスが実行されるが，アクセス先が低速であると，図１４のようにＤＭＡ転送（ＤＭＡ転送２）が待たされる時間が長くなり，データ転送と演算処理の並列実行サイクルの割合が低下する。
【０００８】
また，競合が発生せずに，命令メモリ１０２のキャッシュミスや周辺ＩＯデバイス１０８への直アクセスを先に実行した場合でも，アクセス先のアクセス速度が低速であるとアクセス時間が長くなるため，上記直アクセスの直後にＤＭＡ転送要求が発生しても，前述した場合と同じくＤＭＡ転送が待たされる時間が長くなり，これもデータ転送と演算処理を並列に実行できなくなり，プロセッサ１０１の実効性能の低下になる。
【０００９】
図１５に，その従来の内部バス占有例（２）を示す。図１５に示すように周辺ＩＯデバイス１０８のアクセス実行後にＤＭＡ転送要求が発生した場合，周辺ＩＯデバイス１０８のアクセスの実行完了まで，ＤＭＡ転送はＷａｉｔすることになる。このように，データ転送と演算処理の並列実行サイクルが低下する。
【００１０】
これを解決する手法として，スプリット転送という方式が用いられることが多い。スプリット転送は，リード転送において，リード要求サイクルとリードデータ応答サイクルとを分離し，両者の間に他の転送を実行できるようにするための方式である。
【００１１】
図１６は，スプリット転送を実現するプロセッサシステムの構成例を示す。このプロセッサシステムは，プロセッサ２０１，命令メモリ２０２，データメモリ２０３，ＤＭＡコントローラ（ＤＭＡＣ）２０４，内部バス２０５，主記憶メモリ２０６，主記憶バッファ２０７，周辺ＩＯデバイス２０８，周辺ＩＯバッファ２０９等から構成されている。
【００１２】
スプリット転送では，主記憶メモリ２０６や周辺ＩＯデバイス２０８のような低速なインタフェースに対し，高速な内部バス２０５との間にバッファ（主記憶バッファ２０７，周辺ＩＯバッファ２０９）を配置して，低速なインタフェース（２０６，２０８）はバッファ（２０７，２０９）との間で低速なアクセスを実施し，バッファ（２０７，２０９）と内部バス２０５との間は高速なアクセスを実施することで，内部バス２０５の占有時間を短くすることを図っている。
【００１３】
図１７は，スプリット転送の例を示す。周辺ＩＯデバイス２０８へのアクセスがリードであった場合，図１７のように周辺ＩＯデバイス２０８のアクセスを実行すると，周辺ＩＯデバイス２０８から周辺ＩＯバッファ２０９への転送時は，内部バス２０５が占有されていないので，アクセス先が競合しなければＤＭＡ転送２が動作可能となり，図１４の例と比較して，２つの転送を並列実行するサイクルが増える。
【００１４】
【発明が解決しようとする課題】
しかし，たとえ上記のようなスプリット転送が実装されていたとしても，最初に競合が発生せずにＤＭＡ転送が受け付けられてしまうと，直後に命令メモリ２０２のキャッシュミスやプロセッサ２０１の周辺ＩＯデバイスへの直アクセスが発生した場合に，ＤＭＡ転送終了を待たなければならず，プロセッサ２０１の動作は長く停止させられてしまう。つまり，データ転送と演算処理を並列に実行できなくなり，プロセッサ２０１の実効性能は低下する。
【００１５】
図１８は，従来の内部バス占有例（３）を示す図である。図１３または図１６に示すプロセッサシステムにおいて，最初にＤＭＡ転送が受け付けられてＤＭＡ転送が実行されると，ＤＭＡ実行中に発生した命令メモリ１０２，２０２のキャッシュミスや周辺ＩＯデバイス１０８，２０８のアクセスはＷａｉｔさせられる。その間，プロセッサ１０１，２０１の動作も停止することとなり，データ転送と演算処理の並列実行サイクルが低下する。このケースでは，図１６のようにスプリット転送が実装されたプロセッサシステムであっても，キャッシュミスや周辺Ｉ／ＯデバイスのアクセスにＷａｉｔが生じてしまう。
【００１６】
本発明では，このデータ転送と演算処理を並列に実行できないタイミングを極力減らすことを目的とする。
【００１７】
【課題を解決するための手段】
ＤＭＡ転送の用途を考えた場合，細かな単位よりも，あるまとまったデータ長単位の転送を実施することが目的にかなう。細かな単位での設定も可能ではあるが，そのようにした場合，ＤＭＡ転送サイクルに対してのＤＭＡパラメータ設定サイクルが，オーバーヘッドとして現れてくる。したがって，ＤＭＡコントローラへの設定は，まとまった単位の転送が望ましいということになる。
【００１８】
しかしながら，上記課題として説明した図１８のような状況の場合，ＤＭＡ転送のサイズが大きいと，ＤＭＡ転送の転送終了までのプロセッサ停止時間が長くなるので，この点に関していえば，ＤＭＡ転送のサイズは，大きくならないことが望ましいということになる。
【００１９】
本発明は，この二つの相矛盾する課題を解決するため，ＤＭＡパラメータの設定はまとまったデータ長を設定し，実行するＤＭＡ転送のサイズを小さくすることができるように，ＤＭＡコントローラ上において，ＤＭＡパラメータにより設定された転送サイズ（Ｍバイト）の転送要求を，最大Ｎバイト単位の転送要求に分割し，複数回にわたって内部バスインタフェースにＤＭＡ転送要求を出す手段を有する。ここで，分割サイズＮの値は，ＤＭＡコントローラが，アクセス先の速度に基づいて自動的に決定する。または，転送サイズＭとともに，分割サイズＮの値を転送要求元から受け付ける。
【００２０】
図１は，本発明の内部バス占有例を示す図である。図１の例に示されるように，本発明では，一つのまとまったデータ長のＤＭＡ転送を分割して転送している。この分割した一つのＤＭＡ転送の終了後は，内部バスインタフェース上で複数の転送要求が同時に発生した場合と同じ動作となり，プロセッサの動作を最優先に実行することができるため，本発明の課題として説明した問題点を解消をすることが可能となる。
【００２１】
本発明は，特にＤＭＡ転送チャネルが複数存在する場合に効果的である。以下，図２に従って説明する。図２は，ＤＭＡ転送チャネルが複数存在する場合の例を示す図である。（Ａ）は，従来の複数のＤＭＡ転送の例であり，（Ｂ）は，本発明の複数のＤＭＡ転送の例である。
【００２２】
従来は図２（Ａ）に示されるように，複数のＤＭＡチャネルが存在していても特別な理由がない限りは先着順に処理するのが普通であり，一つのＤＭＡチャネルの転送終了を待たないと，別のＤＭＡチャネルの転送が実施できないというものであった。最初に受け付けたＤＭＡチャネルの転送が非常に大量のデータを転送するものであった場合，ほぼ同時に要求を出したＤＭＡチャネルが小量のデータ転送であったとしても，先着順で前のＤＭＡチャネルの大量のデータ転送が完了するまで，後のＤＭＡチャネルの小量のデータ転送が待たされることになる。このことにより，プロセッサ内で複数のタスクが動作していた場合に，先に，一つのタスクが大量データのＤＭＡ転送をしてしまうと，後で，その他のタスクですぐに実施したい小量データのＤＭＡ転送があっても，それを実施できなくなってしまう。最悪の結果として，プロセッサはデータが揃わないために，処理を停止することになる可能性がある。
【００２３】
本発明の手段を利用すれば，複数のＤＭＡチャネルが存在していても，それぞれのＤＭＡチャネルのＤＭＡ転送が分割される。さらに図２（Ｂ）のように，内部バスインタフェース上における複数のＤＭＡチャネルの転送要求の競合処理を，転送要求の受付が一部のＤＭＡチャネルに偏らないラウンドロビン方式のような優先順位の切替え方法を用いることによって，複数のＤＭＡチャネルによるＤＭＡ転送は，分割されたＤＭＡ転送単位で，順番に実行させることができる。このため，従来例のような問題がなくなり，大量データのＤＭＡ転送している最中にも，小量データのＤＭＡ転送を割り込ませることが可能となる。
【００２４】
【発明の実施の形態】
図３は，本発明のプロセッサバスインタフェースの構成例を示す図である。本システムは，プロセッサ１と内部バス５との間に高速なメモリとして命令キャッシュ２とデータＲＡＭ３を装備した階層型メモリシステムとなっており，プロセッサ１と内部バス５の直アクセスポートと，複数チャネルＤＭＡＣ４とを有する。複数チャネルＤＭＡＣ４は，各チャネルごとにＤＭＡ転送を分割転送する機能を備える。内部バス５と主記憶メモリ６および周辺ＩＯデバイス８との間には，スプリット転送のための速度乗換え用バッファ（主記憶バッファ７，周辺ＩＯバッファ９）を装備し，スプリット転送を実現する。
【００２５】
プロセッサ１は，命令キャッシュ２から命令を読み出し，処理を実行する。データに関しては，データＲＡＭ３から読み出したり，データＲＡＭ３に書き込んだりする。場合によっては，内部バス５に直アクセスすることもある。ＤＭＡ転送が発生する場合には，複数チャネルＤＭＡＣ４にＤＭＡ転送のためのパラメータを渡す。
【００２６】
命令キャッシュ２は，プロセッサ１に処理を実行させる命令を一時的に保持する。実行中のアプリケーションプログラム等の一部の命令列が格納される。すなわち，命令キャッシュ２には，内部バス５や主記憶バッファ７，周辺ＩＯバッファ９等を通して，主記憶メモリ６や周辺ＩＯデバイス８等から必要な命令をまとめて読み出し，それを一命令ずつ順にプロセッサ１に転送する。
【００２７】
データＲＡＭ３は，プロセッサ１で扱うデータを格納する。これには，扱われるデータファイルの一部のデータが格納される。内部バス５や主記憶バッファ７，周辺ＩＯバッファ９等を通して，主記憶メモリ６や周辺ＩＯデバイス８等と必要なデータをまとめて読み書きし，それを一データずつプロセッサ１との間でやりとりする。
【００２８】
複数チャネルＤＭＡＣ４は，プロセッサ１から与えられたパラメータにしたがって，各装置間のデータのＤＭＡ転送をコントロールする。
【００２９】
内部バス５は，接続されている全ての装置間のデータ転送を管理する。
【００３０】
主記憶メモリ６は，内部記憶装置としてアプリケーションプログラムや，データファイルを記憶する。主記憶バッファ７は，内部バス５と主記憶メモリ６との間でのデータ転送を管理し，内部バス５とは高速でデータ転送を行い，主記憶メモリ６とは低速（主記憶メモリ６のアクセス速度）でデータ転送を行う。
【００３１】
周辺ＩＯデバイス８は，外部記憶装置または入出力装置としてデータの入出力を行う。周辺ＩＯバッファ９は，内部バス５と周辺ＩＯデバイス８との間でのデータ転送を管理し，内部バス５とは高速でデータ転送を行い，周辺ＩＯデバイス８とは低速（周辺ＩＯデバイス８のアクセス速度）でデータ転送を行う。
【００３２】
図４は，複数チャネルＤＭＡＣの構成例を示す図である。複数チャネルＤＭＡＣ４は，複数チャネル分のＤＭＡＣ部（ＤＭＡ制御部）４１−１〜４１−ｎと，ＤＭＡＣアービタ部４２から構成される。
【００３３】
プロセッサ１から渡されたＤＭＡ転送のパラメータは，ＤＭＡ転送の指示順にＤＭＡＣ部（＃１）４１−１，ＤＭＡＣ部（＃２）４１−２，…，ＤＭＡＣ部（＃ｎ）４１−ｎに振り分けられる。
【００３４】
各ＤＭＡＣ部４１−１〜４１−ｎでは，それぞれに与えられたＤＭＡ転送を指定された分割サイズＮに分割し，各ＤＭＡＣ部４１−１〜４１−ｎごとに，ＤＭＡＣアービタ部４２へＤＭＡ（＃１，＃２，…，＃ｎ）転送要求を行う。
【００３５】
ＤＭＡＣアービタ部４２は，ＤＭＡ（＃１，＃２，…，＃ｎ）転送要求の競合チェックを行い，いずれか一つのＤＭＡ転送要求を選択し，内部バス５に対してＤＭＡ転送要求を行う。内部バス５からＤＭＡ転送ＡＣＫ（肯定応答信号）を受けると，前記選択されたＤＭＡ転送のＤＭＡＣ部４１に対してＤＭＡ転送ＡＣＫを送る。
【００３６】
次に，各チャネルごとに設けられるＤＭＡＣ部４１の構成を説明するが，ＤＭＡＣ部４１は，ＤＭＡ転送の分割手段の違いにより，複数の構成が考えられる。いくつかの構成例を，図を用いて説明する。また，ＤＭＡ転送において，転送サイズＭはシステム依存で実装するプログラムの作りにより様々であり，ハードウェア的な制約により最大値が規定されている。
【００３７】
図５は，ＤＭＡＣ部４１の構成例（１）であって，分割サイズＮが固定値の場合のＤＭＡＣ部４１の構成例を示す図である。ＤＭＡＣ部４１は，転送元／転送先アドレス生成部４３１と，分割判定／転送サイズ決定部４４１と，ＤＭＡ転送用パラメータレジスタ群４５１とから構成され，分割サイズＮは固定値としてあらかじめ設定されている。
【００３８】
プロセッサ１は，転送元アドレス（ＳＡＤＲ）指定レジスタ，転送先アドレス（ＤＡＤＲ）指定レジスタ，転送サイズＭ指定レジスタ，転送開始指示／状態レジスタからなるＤＭＡＣ部４１のＤＭＡ転送用パラメータレジスタ群４５１にＤＭＡ転送用パラメータを設定し，転送開始指示／状態レジスタをセットして転送開始を指示する。
【００３９】
転送元／転送先アドレス生成部４３１は，ＤＭＡ転送用パラメータレジスタ群４５１から転送元アドレス／転送先アドレスを取り込み，最初の分割後のＤＭＡ転送元アドレス／転送先アドレスとする。
【００４０】
また，分割判定／転送サイズ決定部４４１は，ＤＭＡ転送用パラメータレジスタ群４５１から転送サイズＭを取り込み，転送サイズＭと固定値である分割サイズＮとの大小を判定し，小さいほうの値を採用して分割後のＤＭＡ転送サイズ（ＭまたはＮ）とし，ＤＭＡ転送要求指示を出す。
【００４１】
ＤＭＡＣアービタ部４２から，分割後のＤＭＡ転送の終了であるＤＭＡ転送ＡＣＫを受けると，転送終了したＤＭＡ転送が最終のＤＭＡ転送でなければ，転送元／転送先アドレス生成部４３１は，転送終了したＤＭＡ転送サイズＮを用いて次のＤＭＡ転送元アドレス／転送先アドレスを，以下のように生成する。
【００４２】
ＳＡＤＲ＝ＳＡＤＲ＋Ｎ
ＤＡＤＲ＝ＤＡＤＲ＋Ｎ
すなわち，前のＤＭＡ転送元アドレス／転送先アドレスのそれぞれに分割サイズＮを加えて，次のＤＭＡ転送元アドレス／転送先アドレスとする。
【００４３】
また，分割判定／転送サイズ決定部４４１は，残りの転送サイズを，以下のように生成する。
【００４４】
Ｍ＝Ｍ−Ｎ
分割判定／転送サイズ決定部４４１は，新たなＭと分割サイズＮの大小を判定し，分割後のＤＭＡ転送サイズ（ＭまたはＮ）を決定し，再び，ＤＭＡ転送要求指示を出す。
【００４５】
上記の処理を繰り返し，分割されたＤＭＡ転送のすべての転送が終了したならば，ＤＭＡ転送完了をプロセッサ１に通知するために，転送開始指示／状態レジスタをクリア（またはレジスタ内の完了フラグをセット）する。
【００４６】
スプリット転送の機構が実装されているシステムにおいて，分割サイズＮを固定値とする手法は，次のようなメリットがある。図３のようにスプリット転送の機構が実装されている場合には，アクセス先のアクセス速度によらずに，転送のデータサイズのみでバス占有時間が決定する。このことにより，分割サイズＮを固定値とする手法では，内部バス５での転送競合が発生した場合の競合による転送待ち時間が，転送を実行している分割サイズＮにより決定できるため，転送競合のペナルティ予測が立てやすい。
【００４７】
図６は，ＤＭＡＣ部４１の構成例（２）であって，指定された転送元アドレス／転送先アドレスにより，分割サイズＮを決定する場合のＤＭＡＣ部４１の構成例を示す図である。ＤＭＡＣ部４１は，転送元／転送先アドレス生成部４３２と，分割判定／転送サイズ決定部４４２と，ＤＭＡ転送用パラメータレジスタ群４５２と，分割サイズ決定部４６２とから構成されている。
【００４８】
プロセッサ１は，転送元アドレス（ＳＡＤＲ）指定レジスタ，転送先アドレス（ＤＡＤＲ）指定レジスタ，転送サイズＭ指定レジスタ，転送開始指示／状態レジスタからなるＤＭＡＣ部４１のＤＭＡ転送用パラメータレジスタ群４５２にＤＭＡ転送用パラメータを設定し，転送開始指示／状態レジスタをセットして転送開始を指示する。
【００４９】
転送元／転送先アドレス生成部４３２は，ＤＭＡ転送用パラメータレジスタ群４５２から転送元アドレス／転送先アドレスを取り込み，最初の分割後のＤＭＡ転送元アドレス／転送先アドレスとする。
【００５０】
分割サイズ決定部４６２は，転送元／転送先アドレス生成部４３２で生成された分割後のＤＭＡ転送元アドレス／ＤＭＡ転送先アドレスを判定することで，分割サイズＮを決定する。分割判定／転送サイズ決定部４４２は，ＤＭＡ転送用パラメータレジスタ群４５２から転送サイズＭを取り込み，転送サイズＭと分割サイズＮとの大小を判定し，小さいほうの値を採用して分割後のＤＭＡ転送サイズ（ＭまたはＮ）とし，ＤＭＡ転送要求指示を出す。
【００５１】
ＤＭＡＣアービタ部４２から分割後のＤＭＡ転送の終了であるＤＭＡ転送ＡＣＫを受けると，転送終了したＤＭＡ転送が最終のＤＭＡ転送でなければ，転送元／転送先アドレス生成部４３２は，転送終了したＤＭＡ転送サイズＮを用いて次のＤＭＡ転送元アドレス／転送先アドレスを，以下のように生成する。
【００５２】
ＳＡＤＲ＝ＳＡＤＲ＋Ｎ
ＤＡＤＲ＝ＤＡＤＲ＋Ｎ
そして，分割サイズ決定部４６２は，新たに生成されたＤＭＡ転送元アドレス／転送先アドレスを用いて分割サイズＮを決定する。このように分割サイズＮは，新たに生成されたＤＭＡ転送元アドレス／転送先アドレスを用いて生成されるため，プロセッサ１により指定された１回のＤＭＡ転送内で，分割サイズＮを，分割されたＤＭＡ転送ごとに適切な値とすることが可能である。
【００５３】
また，分割判定／転送サイズ決定部４４２は，残りの転送サイズを，転送した分割サイズＮを用いて以下のように生成する。
【００５４】
Ｍ＝Ｍ−Ｎ
分割判定／転送サイズ決定部４４２は，新たなＭと分割サイズＮの大小を判定し，分割後のＤＭＡ転送サイズ（ＭまたはＮ）を決定し，再び，ＤＭＡ転送要求指示を出す。
【００５５】
上記の処理を繰り返し，分割されたＤＭＡ転送のすべての転送が終了したならば，ＤＭＡ転送完了をプロセッサ１に通知するために，転送開始指示／状態レジスタをクリアする。
【００５６】
このように指定された転送元アドレス／転送先アドレスによって分割サイズＮを決定する手法は，特にアクセス速度がアクセス先によって異なるような場合に，そのアクセス時間をある一定時間内になるようにするときに有用である。例えば，プロセッサバスインタフェースにおいて，スプリット転送の機構が実装されていない場合，アクセス先のアクセス時間は内部バス５の占有時間と同じになるため，分割された転送ごとのアクセス時間が一定であれば，内部バス５はある一定の時間内で開放されることが保証される。すなわち，指定された転送元アドレス／転送先アドレスによって分割サイズＮを決定する手法では，アクセス時間が一定になるように分割サイズＮを決定することにより，内部バス５での転送競合による転送待ち時間を，ある一定の時間内に保証することが可能である。このため，転送競合のペナルティ予測が立てやすいというメリットがある。
【００５７】
一方，本手法を用いた場合，図３のようにスプリット転送の機構が実装されているシステムでは，アクセス先でのアクセス時間の最大値が決まるので，アクセス速度が遅いものほど，分割サイズＮが小さくなり，１回のアクセスにおける内部バス５の占有時間は短くなる。すなわち，内部バス５に接続されているアクセス先の中でアクセス速度のばらつきが大きいと，アクセス先によって内部バス５の占有時間が異なり，内部バス５での転送競合におけるペナルティ予測が立てにくくなる。
【００５８】
図７は，ＤＭＡＣ部４１の構成例（３）であって，分割サイズＮが，ＤＭＡ転送用パレメータレジスタ群の中の一つとして，プロセッサ１から送らてくる場合のＤＭＡＣ部４１の構成例を示す図である。ＤＭＡＣ部４１は，転送元／転送先アドレス生成部４３３と，分割判定／転送サイズ決定部４４３と，ＤＭＡ転送用パレメータレジスタ群４５３とから構成される。
【００５９】
プロセッサ１は，転送元アドレス（ＳＡＤＲ）指定レジスタ，転送先アドレス（ＤＡＤＲ）指定レジスタ，分割サイズＮ指定レジスタ，転送サイズＭ指定レジスタ，転送開始指示／状態レジスタとからなるＤＭＡＣ部４１のＤＭＡ転送用パラメータレジスタ群４５３にＤＭＡ転送用パラメータを設定し，転送開始指示／状態レジスタをセットして転送開始を指示する。
【００６０】
転送元／転送先アドレス生成部４３３は，ＤＭＡ転送用パラメータレジスタ群４５３から転送元アドレス／転送先アドレスを取り込み，最初の分割後のＤＭＡ転送元アドレス／転送先アドレスとする。
【００６１】
また，分割判定／転送サイズ決定部４４３は，ＤＭＡ転送用パラメータレジスタ群４５３から転送サイズＭと分割サイズＮを取り込み，転送サイズＭと分割サイズＮの大小を判定し，小さいほうの値を採用して分割後のＤＭＡ転送サイズ（ＭまたはＮ）とし，ＤＭＡ転送要求指示を出す。
【００６２】
ＤＭＡＣアービタ部４２から分割後のＤＭＡ転送の終了であるＤＭＡ転送ＡＣＫを受けると，転送終了したＤＭＡ転送が最終のＤＭＡ転送でなければ，転送元／転送先アドレス生成部４３３は，転送終了したＤＭＡ転送サイズＮを用いて次のＤＭＡ転送元アドレス／転送先アドレスを，以下のように生成する。
【００６３】
ＳＡＤＲ＝ＳＡＤＲ＋Ｎ
ＤＡＤＲ＝ＤＡＤＲ＋Ｎ
また，分割判定／転送サイズ決定部４４３は，残りの転送サイズを以下のように生成する。
【００６４】
Ｍ＝Ｍ−Ｎ
さらに，分割判定／転送サイズ決定部４４３は，新たなＭと分割サイズＮの大小を判定し，分割後のＤＭＡ転送サイズ（ＭまたはＮ）を決定し，再び，ＤＭＡ転送要求指示を出す。
【００６５】
上記の処理を繰り返し，分割されたＤＭＡ転送のすべての転送が終了したならば，ＤＭＡ転送完了をプロセッサ１に通知するために，転送開始指示／状態レジスタをクリアする。
【００６６】
このようなプロセッサ１からのパラメータ設定により分割サイズＮを決定する手法を用いた場合，スプリット転送機構の実装の有無や，内部バス５に接続されているアクセス先の特性に応じて，最適な分割サイズＮでもってＤＭＡ転送を実行させることができる。
【００６７】
図８は，ＤＭＡＣ部４１のＤＭＡ転送の分割処理フローチャートである。ＤＭＡＣ部４１は，プロセッサ１からＤＭＡ転送のパラメータを受けると（Ｓ１０），分割サイズＮを決定する（Ｓ１１）。分割サイズＮの決定方法としては，あらかじめ固定値を用意する方法（図５参照），転送元アドレス／転送先アドレスから分割サイズＮを求める方法（図６参照），分割サイズＮをプロセッサ１にパラメータで設定させる方法（図７参照）などがある。
【００６８】
次に，転送サイズＭと分割サイズＮとの大小を比較する（Ｓ１２）。分割サイズＮのほうが転送サイズＭより小さい場合，分割サイズＮでＤＭＡ転送要求を出し（Ｓ１３），ＤＭＡ転送の終了を示すＤＭＡ転送ＡＣＫを受けるまで待機する。ＤＭＡ転送ＡＣＫを受けたら（Ｓ１４），転送サイズＭから転送した分割サイズＮを減算して転送されていない残りの転送部分のサイズを新たな転送サイズＭとし，次の分割された転送部分の転送元アドレス／転送先アドレスを求め（Ｓ１５），Ｓ１１へ戻って，次のＤＭＡ転送の処理を行う。
【００６９】
Ｓ１２の判定において，転送サイズＭのほうが小さい場合，これ以上転送を分割する必要がないので，そのまま転送サイズＭでＤＭＡ転送要求を出し（Ｓ１６），ＤＭＡ転送ＡＣＫを受けるまで待機し，ＤＭＡ転送ＡＣＫを受けたなら（Ｓ１７），転送終了とする。
【００７０】
図９は，ＤＭＡＣアービタ部４２の構成例を示す。ＤＭＡＣアービタ部４２は，ＤＭＡ転送要求判定部４２１，優先度書換判定部４２２，要求受付優先度情報部４２３から構成される。
【００７１】
ＤＭＡ転送要求判定部４２１は，複数のＤＭＡＣ部４１からのＤＭＡ転送要求を受けることができる。複数のＤＭＡ転送要求を受けた場合，ＤＭＡ転送要求判定部４２１は，要求受付優先度情報部４２３の要求受付優先度情報から，どのＤＭＡ転送要求を優先するかを決定し，最も優先順位の高いＤＭＡ転送要求を一つ選択して内部バス５へ送る。
【００７２】
優先度書換判定部４２２では，ＤＭＡ転送要求判定部４２１から内部バス５へ送ったＤＭＡ転送要求により，要求受付優先度情報を書き換えるか否かを判定し，書き換える場合には，要求受付優先度情報の書き換え情報を，要求受付優先度情報部４２３へ出力する。要求受付優先度情報の書き換え情報を決定する方法として，ラウンドロビン方式で決定する方法やプロセッサ１があらかじめ決定して設定しておく方法等，様々な方法が考えられる。
【００７３】
要求受付優先度情報部４２３は，優先度書換判定部４２２から入力した要求受付優先度情報の書き換え情報に従い，要求受付優先度情報を書き換える。
【００７４】
ＤＭＡ転送要求判定部４２１は，内部バス５からのＤＭＡ転送要求ＡＣＫを受けると，そのＤＭＡ転送要求を出していたＤＭＡＣ部４１へＤＭＡ転送ＡＣＫを送る。
【００７５】
図１０は，ＤＭＡＣアービタ部４２の動作フローチャートを示す。ＤＭＡＣアービタ部４２は，ＤＭＡＣ部４１からのＤＭＡ転送要求を待つ。ＤＭＡ転送要求があると（Ｓ２０），ＤＭＡ転送要求が複数あるかどうかを判定し（Ｓ２１），複数あれば，要求受付優先度情報に従って優先度の高いＤＭＡ転送要求を選択し（Ｓ２２），選択されたＤＭＡ転送要求を内部バス５へ出力する（Ｓ２３）。ここで図中の吹き出し部分は，要求受付優先度情報の例である。ＤＭＡ転送要求が一つだけのときには（Ｓ２１），そのままそのＤＭＡ転送要求を内部バス５へ出力する（Ｓ２３）。
【００７６】
その後，必要に応じて要求受付優先度情報の書き換えを行い（Ｓ２４，Ｓ２５），内部バス５からのＤＭＡ転送要求ＡＣＫを待つ（Ｓ２６）。ＤＭＡ転送ＡＣＫがあれば，該当するチャネルのＤＭＡＣ部４１へＤＭＡ転送ＡＣＫを出力する（Ｓ２７）。以上の動作を繰り返す。
【００７７】
図１１は，内部バス５の構成例を示す。内部バス５は，バス制御部５１，セレクタ５２等を備える。バス制御部５１は，内部バス５に接続された各装置からの転送要求を受ける。一度に複数の転送要求を受けたとき，バス制御部５１は，優先度の高い転送要求を選択し，選択された転送要求のバスセレクト信号をセレクタ５２へ出力する。優先順位を決定する方法は，固定優先順位方式で決定する方法，プロセッサ１が事前に決定する方法等，様々な方法が考えられる。
【００７８】
セレクタ５２は，バス制御部５１からのバスセレクト信号を受け取り，バスセレクト信号で指定された転送要求の転送元の入力データを選択し，そのデータ信号をバスに載せることにより出力先への転送を実行する。
【００７９】
図１２は，バス制御部５１のバス調停フローチャートである。内部バス５への転送要求が発生すると，その転送要求を受け付ける処理を行う（Ｓ３０）。まず，転送元／転送先が低速デバイスであった場合，バッファと低速デバイスとの間がデータ転送中である可能性があるため，この場合には，処理が終了するまで次の要求を受け付けることができないので，該当する要求は，受け付けないようにマスクする必要がある（Ｓ３１）。このマスク処理後に転送要求が残っていれば，その転送要求を受け付けることになる（Ｓ３２）。転送要求が複数であった場合には，優先順位を考慮して要求を選択する必要がある。ここでは，プロセッサ１の停止期間を極力短くすることを考慮に入れた固定優先順位方式の例を示した。すなわち，優先順位は，主記憶バッファ転送要求，周辺ＩＯバッファ転送要求，命令転送要求，直アクセス要求，ＤＭＡ転送要求としている。この優先順位に従って要求を選択する（Ｓ３３）。
【００８０】
ここで選択された転送要求が，低速デバイスへのリード処理であった場合には（Ｓ３４），該当する低速デバイスに対して，バッファと低速デバイス間の転送の指示を通知し（Ｓ３５），この時点では内部バス５のデータバスを経由したデータ転送は行わない。また，選択された転送要求がＤＭＡ転送であれば（Ｓ３６），転送を受け付けたことを複数チャネルＤＭＡＣ４にＤＭＡ転送ＡＣＫとして出力し（Ｓ３７），処理を終了する。選択された転送要求がＤＭＡ転送でない，すなわち命令転送要求や直アクセス要求であった場合には（Ｓ３６），選択した転送要求をマスクして待機状態とし（Ｓ３８），処理を終了する。
【００８１】
次に，選択された転送要求が，低速デバイスへのリード処理以外の場合（Ｓ３４），即座に内部バス５を経由したデータ転送が実行できるはずであるので，転送元／転送先に内部バス５から転送要求を出力し（Ｓ３９），図１１のセレクタ５２に対するバスセレクト信号をセットして（Ｓ４０），データ転送を実行する（Ｓ４１）。転送終了後，選択した転送要求に対する転送ＡＣＫを出力する（Ｓ４２）。また，命令転送要求や直アクセス要求で低速デバイスへのリード処理が事前に受け付けられており，上記の転送要求による転送先が命令転送要求や直アクセス要求であった場合，命令転送要求や直アクセス要求がマスクされているはずであるので，そのマスクを解除する必要がある（Ｓ４２）。
【００８２】
これにより，従来，例えば図１８に示すようなバス占有状態であったものが，図１に示すようなバス占有状態となり，内部バス５の使用が効率的になる。
【００８３】
【発明の効果】
以上説明したように，各チャネルごとに長いサイズのＤＭＡ転送を短いサイズのＤＭＡ転送に分割し，分割された短いサイズのＤＭＡ転送を順次実行することにより，たとえ最初に競合が発生せずにＤＭＡ転送が受け付けられてしまい，その直後に命令メモリのキャッシュミスやプロセッサの周辺ＩＯデバイスへの直アクセスが発生してしまったような場合でも，長いＤＭＡ転送の終了を待つ必要がなくなる。
【００８４】
また，前述のＤＭＡ転送の分割手段とＤＭＡＣアービタ部を備えた複数チャネルＤＭＡＣにより，複数のＤＭＡ転送が競合したとき，ラウンドロビン方式等を利用して分割されたＤＭＡ転送を順に実行すれば，複数のＤＭＡ転送を効率よく多重化できる。
【図面の簡単な説明】
【図１】本発明の内部バス占有例を示す図である。
【図２】複数のＤＭＡ転送が存在する場合の本発明と従来技術の動作を比較する図である。
【図３】本発明のプロセッサバスインタフェースの構成例を示す図である。
【図４】複数チャネルＤＭＡＣの構成例を示す図である。
【図５】各チャネル対応のＤＭＡＣ部の構成例（１）を示す図である。
【図６】各チャネル対応のＤＭＡＣ部の構成例（２）を示す図である。
【図７】各チャネル対応のＤＭＡＣ部の構成例（３）を示す図である。
【図８】ＤＭＡＣ部のＤＭＡ転送の分割処理フローチャートである。
【図９】ＤＭＡＣアービタ部の構成例を示す図ある。
【図１０】ＤＭＡＣアービタ部の動作フローチャートである。
【図１１】内部バスの構成例を示す図である。
【図１２】バス制御部のバス調停フローチャートである。
【図１３】一般的なプロセッサシステムの構成例を示す図である。
【図１４】従来の内部バス占有例（１）を示す図である。
【図１５】従来の内部バス占有例（２）を示す図である。
【図１６】スプリット転送のプロセッサシステムの構成例を示す図である。
【図１７】スプリット転送の例を示す図である。
【図１８】従来の内部バス占有例（３）を示す図である。
【符号の説明】
１    プロセッサ
２    命令キャッシュ
３    データＲＡＭ
４    複数チャネルＤＭＡＣ
４１  ＤＭＡＣ部
４２  ＤＭＡＣアービタ部
５    内部バス
５１  バス制御部
５２  セレクタ
６    主記憶メモリ
７    主記憶バッファ
８    周辺ＩＯデバイス
９    周辺ＩＯバッファ
【図１】
0005040050.tif 000002
【図２】
0005040050.tif 000003
【図３】
0005040050.tif 000004
【図４】
0005040050.tif 000005
【図５】
0005040050.tif 000006
【図６】
0005040050.tif 000007
【図７】
0005040050.tif 000008
【図８】
0005040050.tif 000009
【図９】
0005040050.tif 000010
【図１０】
0005040050.tif 000011
【図１１】
0005040050.tif 000012
【図１２】
0005040050.tif 000013
【図１３】
0005040050.tif 000014
【図１４】
0005040050.tif 000015
【図１５】
0005040050.tif 000016
【図１６】
0005040050.tif 000017
【図１７】
0005040050.tif 000018
【図１８】
0005040050.tif 000019