(57)【特許請求の範囲】
【請求項１】
複数のブロックに区分されており、且つそれらブロックの先頭部分に次に転送される他のブロックを示すポインタが付加されているデータを記憶する第１の装置から第２の装置に前記データをＤＭＡ転送するようにされているとともに、前記ＤＭＡ転送を行う際に用いられるバスをそのバスを用いてデータの処理を行うＣＰＵと共有しているデータ処理装置において、
転送する前記ブロックのうち先頭のものの前記第１の装置におけるアドレスを設定する転送元アドレス設定手段と、
転送する前記ブロックのうち先頭のものが転送される転送先の前記第２の装置におけるアドレスを設定する転送先アドレス設定手段と、
転送する前記ブロックの数を前記バスを用いて行われる前記ＤＭＡ転送と前記データの処理の効率を上げるようにして設定する転送数設定手段と、
転送した前記ブロックの数を計数する転送数計数手段と、
前記転送数設定手段の設定値と、前記転送数計数手段の計数値とを比較し、比較結果に対応してデータのＤＭＡ転送を制御する制御手段と、
を備えるとともに、
前記ブロックに含まれるダミーブロックのうち、１回のＤＭＡ転送において処理されるダミーのブロックの数を設定するダミーブロック数設定手段と、
処理した前記ダミーのブロックの数を計数するダミーブロック数計数手段と、
をさらに備え、
前記制御手段は、前記ダミーブロック数設定手段の設定値と、前記ダミーブロック数計数手段の計数値とを比較し、比較結果に対応してデータのＤＭＡ転送を制御するようになっている、
ことを特徴とするデータ処理装置。
【請求項２】
前記第２の装置は、画像を描画する描画装置であり、前記ポインタは、描画する前記画像の奥行き情報に対応して設定されていることを特徴とする
請求項１に記載のデータ処理装置。
【請求項３】
複数のブロックに区分されており、且つそれらブロックの先頭部分に次に転送される他のブロックを示すポインタが付加されているデータを記憶する第１の装置から第２の装置に前記データをＤＭＡ転送するデータ処理装置において、
転送する前記ブロックのうち先頭のものの前記第１の装置におけるアドレスを設定する転送元アドレス設定手段と、
転送する前記ブロックのうち先頭のものが転送される転送先の前記第２の装置におけるアドレスを設定する転送先アドレス設定手段と、
前記ブロックに含まれるダミーブロックのうち、１回のＤＭＡ転送において処理されるダミーのブロックの数を設定するダミーブロック数設定手段と、
処理した前記ダミーのブロックの数を計数するダミーブロック数計数手段と、
前記ダミーブロック数設定手段の設定値と、前記ダミーブロック数計数手段の計数値とを比較し、比較結果に対応してデータのＤＭＡ転送を制御する制御手段と、
を備えることを特徴とするデータ処理装置。
【請求項４】
複数のブロックに区分されており、且つそれらブロックの先頭部分に次に転送される他のブロックを示すポインタが付加されているデータを記憶する第１の装置から第２の装置に前記データをＤＭＡ転送するデータ処理装置にて実行されるデータ処理方法において、
前記データ処理装置が、
転送する前記ブロックのうち先頭のものの前記第１の装置におけるアドレス、及び転送する前記ブロックのうち先頭のものが転送される転送先の前記第２の装置におけるアドレスを設定するとともに、前記ブロックに含まれるダミーブロックのうち１回のＤＭＡ転送で転送するダミーのブロックの数を設定し、
処理した前記ダミーのブロックの数を計数し、
１回で処理する前記ダミーのブロックの数についての設定値と、前記ダミーのブロックの数についての計数値とを比較し、
比較結果に対応してデータのＤＭＡ転送を制御しながら前記ブロックの転送を行う
ことを特徴とするデータ処理方法。
【請求項５】
１つのブロックで転送するデータ数を設定する手段と、
あるブロックが転送されているときに、転送されたデータ数を計数する手段とを更に備えている、
請求項１記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ処理装置および方法に関し、例えばコンピュータグラフィックス装置において画像を描画する場合に、効率的にデータを処理することができるようにした、データ処理装置および方法に関する。
【０００２】
【従来の技術】
例えば、コンピュータグラフィックス装置や音声処理装置などにおいては、システム全体の制御をつかさどるＣＰＵ（中央演算処理装置）に対する負荷を軽減するために、ＤＭＡコントローラを設け、ＤＭＡ（Direct Memory Access）方式により、データをメモリから他のデバイスに直接転送することができるようにしている。これにより、ＣＰＵがメモリから他のデバイスへデータを転送する処理から解放されるため、その分ＣＰＵは、他の処理を実行することができ、システム全体の処理を効率的に実行することが可能となる。
【０００３】
このようなＤＭＡ転送においては、ＣＰＵが、転送するデータの転送元アドレス、転送先アドレスといった転送仕様情報をＤＭＡコントローラに設定し、ＤＭＡコントローラが、この設定に対応してＤＭＡ転送処理を実行することになる。従って、転送するデータやデータの転送先アドレスなどに変更が発生した場合、ＣＰＵは、変更された転送仕様情報をＤＭＡコントローラにその都度設定し直さなければならず、ＣＰＵがデータの転送のために係わる時間が増加し、結局、システム全体の処理能力を低下させる課題があった。
【０００４】
そこで、本発明者は、例えば特開平６−１３１２９１号として、転送仕様情報をデータに対応してメモリに記憶させ、ＣＰＵがデータを転送する度に転送仕様情報をＤＭＡコントローラに設定しなくてもよいようにした。これにより、システム全体の処理能力をより効率化することが可能となる。
【０００５】
【発明が解決しようとする課題】
ところで、ＣＰＵとＤＭＡコントローラは共通のバスを使用することが多い。この場合、ＣＰＵの処理を優先させたいときは、ＤＭＡコントローラが１回のＤＭＡ転送において転送するデータ量を、例えば１ブロック分のデータだけに限定するなどして、転送データ量ができるだけ少なくするように設計される。
【０００６】
これに対して、ＤＭＡコントローラによる処理を優先させたい場合においては、必要なブロック数のＤＭＡ転送が完了するまで、ＤＭＡコントローラがバスを支配するように設計が行われる。
【０００７】
そこで従来のシステムにおいては、ＣＰＵとＤＭＡコントローラによるバスの支配がバランスするように、各処理に対して優先順位を設定し、その優先順位に対応して、ＣＰＵまたはＤＭＡコントローラによりバスを支配させるようにしていた。
【０００８】
しかしながら、従来のシステムは、この優先順位を固定としているため、どのような場面においても予め設定した優先順位に従って処理が行われ、場合によっては、処理がかえって遅くなるような自体が発生することがあった。
【０００９】
本発明はこのような状況に鑑みてなされたものであり、より効率的にデータを処理することができるようにするものである。
【００１０】
【課題を解決するための手段】
請求項１に記載のデータ処理装置は、転送するブロックの数を設定する転送数設定手段と、転送したブロックの数を計数する転送数計数手段と、転送数設定手段の設定値と、転送数計数手段の計数値とを比較し、比較結果に対応してデータのＤＭＡ転送を制御する制御手段とを備えることを特徴とする。
【００１１】
請求項４に記載のデータ処理装置は、１回のＤＭＡ転送において処理するダミーのブロックの数を設定するダミーブロック数設定手段と、処理したダミーのブロックの数を計数するダミーブロック数計数手段と、ダミーブロック数設定手段の設定値と、ダミーブロック数計数手段の計数値とを比較し、比較結果に対応してデータのＤＭＡ転送を制御する制御手段とを備えることを特徴とする。
【００１２】
請求項５に記載のデータ処理方法は、転送するブロックの数を設定し、転送元アドレスから転送先アドレスに転送したブロックの数を計数し、転送するブロックの設定値と、転送したブロックの計数値とを比較し、比較結果に対応してデータのＤＭＡ転送を制御することを特徴とする。
【００１３】
請求項６に記載のデータ処理方法は、１回のＤＭＡ転送において処理するダミーのブロックの数を設定し、処理したダミーのブロックの数を計数し、ダミーのブロックの設定値と、ダミーのブロックの計数値とを比較し、比較結果に対応してデータのＤＭＡ転送を制御することを特徴とする。
【００１４】
請求項１に記載のデータ処理装置においては、転送数設定手段が、転送するブロックの数を設定し、転送数計数手段が、転送したブロックの数を計数し、制御手段が、転送数設定手段の設定値と、転送数計数手段の計数値とを比較し、比較結果に対応してデータのＤＭＡ転送を制御する。
【００１５】
請求項４に記載のデータ処理装置においては、ダミーブロック数設定手段が、１回のＤＭＡ転送において処理するダミーのブロックの数を設定し、ダミーブロック数計数手段が、転送したダミーのブロックの数を計数し、制御手段が、ダミーブロック数設定手段の設定値と、ダミーブロック数計数手段の計数値とを比較し、比較結果に対応してデータのＤＭＡ転送を制御する。
【００１６】
請求項５に記載のデータ処理方法においては、転送するブロックの設定値と、転送したブロックの計数値とが比較され、比較結果に対応してデータのＤＭＡ転送が制御される。
【００１７】
請求項６に記載のデータ処理方法においては、ダミーのブロックの設定値と、ダミーのブロックの計数値とが比較され、比較結果に対応してデータのＤＭＡ転送が制御される。
【００１８】
【発明の実施の形態】
図１は、本発明のデータ処理装置の構成例を示すブロック図である。ＣＰＵ１は、システム全体の制御を行う。メモリ４は、転送対象となるデータを記憶する。ＤＭＡコントローラ（ＤＭＡＣ）２は、メモリ４に記憶されているデータをデバイス３にＤＭＡ転送する場合の制御を行う。これらの各装置は、アドレスバス、データバス、および図示せぬ制御バスにより接続されている。
【００１９】
図２は、ＤＭＡＣ２を中心としたデータ処理装置のより詳細な構成例を表している。ＤＭＡＣ２のタイミング制御回路１１は、各種のタイミング信号を発生し、周辺制御回路１３、その他の回路に出力し、ＤＭＡＣ２の内部の各回路のタイミングを制御する。コントロールレジスタ１２は、ＣＰＵ１などからのＤＭＡＣ２に対する命令を保持する。周辺制御回路１３は、ＤＭＡＣ２から外部へ出力する制御信号を生成する。
【００２０】
データ数ラッチ回路１４は、１つのブロックで転送するデータ数の設定値を保持する。データ数ダウンカウンタ１５は、データ数ラッチ回路１４から設定値の入力を受け、データが転送される度に、その設定値を１ずつデクリメントし、転送されたデータ数を計数する。
【００２１】
ブロック数ラッチ回路１６は、１回のＤＭＡ転送で転送するブロック数の初期設定値を保持する。ブロック数ダウンカウンタ１７は、ブロック数ラッチ回路１６の初期設定値の入力を受け、１ブロック分のデータが転送される度に、その設定値を１だけデクリメントし、転送ブロック数を計数する。
【００２２】
転送先転送開始アドレスラッチ回路１８は、転送先（いまの場合デバイス３）の転送開始アドレスの初期値を保持する。この初期値としては、一般に、転送先領域の再上位または再下位アドレスが用いられる。転送先転送アドレスカウンタ１９は、転送先転送開始アドレスラッチ回路１８から転送先転送開始アドレスの初期値の入力を受け、タイミング制御回路１１から、転送先転送アドレスカウント許可フラグがカウントを「許可」しているとき、その設定値を所定の値ずつ変化させ、転送先転送アドレスを発生する。転送先転送アドレスカウント許可フラグがカウントを禁止している「禁止」状態のとき、転送先転送アドレスカウンタ１９は、転送先転送アドレスを変化させない。
【００２３】
転送元転送開始アドレスラッチ回路２０は、転送元（この実施例の場合メモリ４）の転送開始アドレスの初期値を保持する。この初期も、一般に、転送元領域の再上位または再下位アドレスが用いられる。転送元転送アドレスカウンタ２１は、転送元転送開始アドレスラッチ回路２０の設定値の入力を受け、タイミング制御回路１１が出力する転送元転送アドレスカウント許可フラグが「許可」のとき、設定値を次の値に変更し、転送元転送アドレスを発生する。転送元転送アドレスカウンタ２１の値は、カウントが「禁止」のとき、転送先転送アドレスが変化したとしても変化しない。データラッチ回路２２は、転送するデータを一時的に保持する。
【００２４】
なお、この実施例においては、処理対象とするデバイスを選択するためのデバイスセレクタ３１が設けられ、このデバイスセレクタ３１により選択されたデバイスに対して、所定の処理（いまの場合ＤＭＡ転送）が行われるようになされている。
【００２５】
ＣＰＵ１はメモリ４に、例えば図３に示すように、デバイス３に対して転送すべきデータをブロック化して記憶させる。この実施例においては、アドレスＡ１，Ａ２，Ａ３に、それぞれ転送すべきデータとしての転送ブロックＢ１，Ｂ２，Ｂ３が、それぞれ転送仕様Ｈ１，Ｈ２，Ｈ３を付加して記憶されている。
【００２６】
各転送仕様Ｈ１，Ｈ２，Ｈ３には、それぞれ対応する転送ブロックＢ１，Ｂ２，Ｂ３の転送データ長Ｌ１，Ｌ２，Ｌ３が、保持されている。また、この転送仕様Ｈ１，Ｈ２，Ｈ３には、転送の順番を示すリンク情報が保持されている。
【００２７】
すなわちＣＰＵ１は、転送ブロックをＢ１，Ｂ２，Ｂ３の順に転送するとき、転送ブロックＢ１の転送仕様Ｈ１に、転送ブロックＢ１の次に転送される転送ブロックＢ２が記憶されているメモリ４のアドレスＡ２を保持させる。転送ブロックＢ２の転送仕様Ｈ２には、転送ブロックＢ２の次に転送される転送ブロックＢ３のアドレスＡ３が保持され、転送ブロックＢ３の転送仕様Ｈ３には、転送ブロックＢ３の次に転送する転送ブロックＢ４（図示せず）のアドレスＡ４が保持される。
【００２８】
次に図４乃至図６のフローチャートを参照して、メモリ４からデバイス３にＤＭＡ転送する場合の動作について説明する。
【００２９】
最初に図４のステップＳ１において、ＣＰＵ１は、初期値を設定するための命令をＤＭＡＣ２のコントロールレジスタ１２にデータバスを介して出力し、保持させる。コントロールレジスタ１２は、この命令を受けたとき、ＣＰＵ１がデータバスを介してさらに出力する初期値を対応するラッチ回路にラッチさせる。これにより、ブロック数ラッチ致回路１６に１回のＤＭＡ転送で転送するブロック数の初期値が設定され、転送先転送開始アドレスラッチ回路１８に転送先（デバイス３）の転送先転送開始アドレスの初期値が設定され、また、転送元転送開始アドレスラッチ回路２０に転送元（メモリ４）の転送元転送開始アドレスの初期値が設定される。
【００３０】
次にステップＳ２に進み、デバイス３は、ＤＭＡＣ２の周辺制御回路１３に対してＤＭＡ転送を要求し、入力待機状態になる。周辺制御回路１３は、このときＣＰＵ１に対してステップＳ３において、停止要求の制御信号を出力する。ＣＰＵ１は、この要求を受けたときステップＳ４において、実行中の命令を終了し、停止状態となり、バスを解放する。
【００３１】
次にステップＳ５に進み、コントロールレジスタ１２は、転送先転送開始アドレスラッチ回路１８に保持されている転送先転送開始アドレスの初期値を転送先転送アドレスカウンタ１９に転送し、設定させる。また、ブロック数ラッチ回路１６に保持されているブロック数の初期値をブロック数ダウンカウンタ１７に転送し、保持させる。さらにステップＳ６に進み、コントロールレジスタ１２は、転送元転送開始アドレスラッチ回路２０に保持されている転送元転送開始アドレスの初期値を転送元転送アドレスカウンタ２１に転送させる。
【００３２】
次にステップＳ７において、タイミング制御回路１１は、転送元転送アドレスカウンタ２１の値（いまの場合、初期値）をアドレスバスに出力させると共に、メモリ４に対して読み出しの要求を出力する。
【００３３】
これに対応してステップＳ８において、メモリ４は、最初に転送すべき転送ブロックＢ１の先頭データ（転送仕様Ｈ１）を読み出し、データバスに出力する。このとき、コントロールレジスタ１２は、ステップＳ９において、データバスに出力された転送仕様Ｈ１のうち、次に転送すべき転送ブロックＢ２の先頭のアドレスＡ２を、転送元転送開始アドレスラッチ回路２０にラッチさせ、転送データ長Ｌ１をデータ数ラッチ回路１４にラッチさせる。データ数ラッチ回路１４の転送データ長Ｌ１は、さらにデータ数ダウンカウンタ１５に転送される。
【００３４】
次にステップＳ１０に進み、そのブロック（いまの場合、転送ブロックＢ１）のデータを転送する処理を実行する。このブロックデータ転送処理の詳細は、図６のフローチャートに示されている。
【００３５】
すなわち、ステップＳ３１において、転送元転送アドレスカウンタ２１は、タイミング制御回路１１が出力する転送元転送アドレスカウント許可フラグが「許可」を表しているとき、転送元転送アドレスをいま設定されているアドレスＡ１から次の値（転送ブロックＢ１の実際に転送すべきデータが記憶されている最初のアドレス）に変更する。タイミング制御回路１１は、転送元転送アドレスカウンタ２１が、その値を次の値にインクリメントするのに差し支えないタイミングにおいて、転送元転送アドレスカウンタ許可フラグを「許可」に設定する。
【００３６】
次にステップＳ３２に進み、タイミング制御回路１１は、ステップＳ３１で設定した転送元転送アドレスカウンタ２１の値を読み出させ、アドレスバスに出力させると同時に、メモリ４に対して読み出し要求を出力する。
【００３７】
ステップＳ３３において、メモリ４は、いま、アドレスバスを介して指定されたアドレスに記憶されているデータ（いまの場合、転送ブロックＢ１の実際に転送すべきデータ）を読み出し、データバスに出力する。
【００３８】
次にステップＳ３４において、周辺制御回路１３は、データラッチ回路２２にデータバスに出力されているデータのラッチを要求する。データラッチ回路２２は、この要求に対応してデータバスに出力されているデータをラッチする。
【００３９】
さらにステップＳ３５に進み、タイミング制御回路１１は、転送先転送アドレスカウンタ１９の値をアドレスバスに出力させる。ステップＳ３６においては、データラッチ回路２２がラッチしたデータをデータバスに出力する。ステップＳ３７において、デバイス３は、アドレスバスを介して、転送先転送アドレスとして指定されたアドレスに、データバスに出力されたデータを取り込む。これにより、転送ブロックＢ１の最初のデータが、メモリ４からデバイス３に転送されたことになる。
【００４０】
次にステップＳ３８に進み、タイミング制御回路１１がステップＳ３７におけるデバイス３の取り込み処理が完了したタイミングにおいて、転送先転送アドレスカウント許可フラグを「許可」としたとき、転送先転送アドレスカウンタ１９は、その値をインクリメントして、デバイス３の次の転送先転送アドレスに変更する。
【００４１】
このようにして、転送ブロックＢ１の１つのデータの転送が完了したとき、ステップＳ３９に進み、タイミング制御回路１１は、データ数ダウンカウンタ１５のカウント値を１だけデクリメントさせる。そして、デクリメントした値が０であるか否か（転送ブロックＢ１の全てのデータを転送したか否か）を判定する。データ数ダウンカウンタ１５のカウント値が０でない場合、転送ブロックＢ１の全てのデータをまだ転送していないことになるので、ステップＳ３１に戻り、それ以降の処理を繰り返す。
【００４２】
以上の処理が繰り返されて、転送ブロックＢ１の全てのデータが転送されたとき（データ数ラッチ回路１４にラッチされた値Ｌ１が、データ数ダウンカウンタ１５において１ずつデクリメントされ、その計数値が０となったとき）、ステップＳ３９において転送ブロックＢ１の転送完了が判定される。このとき、図６の処理は終了し、図５のステップＳ１１に進む。
【００４３】
以上のようにして、１ブロック分のデータの転送が完了したので（いまの場合、転送ブロックＢ１の転送が完了したので）、ステップＳ１１においてタイミング制御回路１１は、ブロック数ダウンカウンタ１７のカウント値を１だけデクリメントさせる。そして、そのデクリメントした値が０であるか否かを判定する（ブロック数ラッチ回路１６に初期設定した数だけブロック転送が行われたか否かを判定する）。
【００４４】
いまの場合、転送ブロックＢ１の転送を完了しただけであるので、まだ転送していない転送ブロックが残っている。そこでこの場合においては、ステップＳ１１からステップＳ６に戻り、それ以降の処理を実行する。
【００４５】
すなわちステップＳ６においては、転送元転送開始アドレスが、転送元転送開始アドレスラッチ回路２０から転送元転送アドレスカウンタ２１に初期設定される。この転送元転送開始アドレスラッチ回路２０にラッチされている転送元転送開始アドレスは、ステップＳ９において、転送ブロックＢ１の転送仕様Ｈ１から読み出されたアドレスＡ２に書き換えられている。そこで、今度は、転送元転送アドレスカウンタ２１に、次に転送すべき転送ブロックＢ２のアドレスＡ２が設定される。
【００４６】
次にステップＳ７に進み、タイミング制御回路１１は、転送元転送アドレスカウンタ２１に設定されているアドレスＡ２をアドレスバスに出力させ、メモリ４に読み出し要求を出力する。ステップＳ８においては、メモリ４がアドレスバスを介して指定されたアドレスＡ２に記憶されている転送ブロックＢ２の先頭データ（転送仕様Ｈ２）を読み出し、データバスに出力する。
【００４７】
ステップＳ９においては、データバスに読み出された転送仕様のうち、次に転送すべき転送ブロックＢ３のアドレスＡ３が転送元転送開始アドレスラッチ回路２０にラッチされ、現在の転送ブロックＢ２の転送データ長Ｌ２がデータ数ラッチ回路１４にラッチされる。
【００４８】
そしてステップＳ１０に進み、上述した場合と同様にして、転送ブロックＢ２のデータの転送が実行される。
【００４９】
すなわち、上述した場合と同様にして、ステップＳ３１乃至Ｓ３８の処理により、転送ブロックＢ２の１つのデータが転送され、ステップＳ３９においてデータ数ダウンカウンタ１５のカウント値Ｌ２が１だけデクリメントされ、その値が０でなければステップＳ３１に戻り、それ以降の処理が実行される。
【００５０】
以上の処理が繰り返されて、ステップＳ３９において、転送データ長Ｌ２の全てのデータが転送されたと判定された場合、そのブロックのデータ転送処理を終了する。
【００５１】
そして、図５のステップＳ１１に進み、ブロック数ダウンカウンタ１７のカウント値を１だけデクリメントする。デクリメントした値が０でなければ、すなわち、まだ全ての転送ブロックの転送が完了していないとき、再びステップＳ６に戻り、それ以降の処理を繰り返し実行する。
【００５２】
以上のようにして、ブロック数ラッチ回路１６に初期設定した数の転送ブロックの転送が完了したとき、ブロック数ダウンカウンタ１７のカウント値が０となるので、ステップＳ１１からステップＳ１２に進み、周辺制御回路１３は、ＣＰＵ１に対する停止要求を終了させる。以上により、メモリ４からデバイス３にデータのＤＭＡ転送が完了したので、バスは、ＤＭＡＣ２からＣＰＵ１明け渡されることになる。
【００５３】
なお、デバイス３がメモリであるとき、データラッチ回路２２が必要となるが、メモリでない場合においては、データラッチ回路２２を省略することも可能である。この場合、メモリ４の入出力と同時に、デバイス３の入出力を実行するようにする。
【００５４】
また、転送先転送開始アドレスラッチ回路１８、転送先転送アドレスカウンタ１９、デバイスセレクタ３１を省略し、周辺制御回路１３により、デバイス３を直接選択させるようにすることも可能である。
【００５５】
さらに、転送元転送開始アドレスラッチ回路２０、転送元転送アドレスカウンタ２１、デバイスセレクタ３１を省略し、周辺制御回路１３によりデバイス３を直接選択させるようにすることもできる。
【００５６】
ところで、データ構造を構築する際の手順の都合で、転送するリンク構造のデータ全体の中に転送するデータの実体がなく、次の転送ブロックを指し示すポインタだけの転送ブロック、あるいは実体を有しているが転送しないというブロック（ダミーブロック）が必要となる場合がある。
【００５７】
図７は、このような場合においてメモリ４に記憶させるデータの例を表している。この実施例においては、転送ブロックＢ１の転送データ長が０とされ、実質的に転送すべきデータの実体が存在しないブロックとされている。すなわち、このブロックは、転送仕様Ｈ１のみが実質的な存在意義を有している。この転送ブロックＢ１の転送仕様Ｈ１には、この転送ブロックを転送すべきか否かを表す転送フラグが１とされている（すなわち、転送すべきブロックであるとされている）。この転送仕様Ｈ１にはまた、図３における場合と同様に、転送ブロックＢ１の次に転送すべき転送ブロックＢ２が記憶されているアドレスＡ２が保持されている。
【００５８】
転送ブロックＢ２は、図３における場合と同様に、実体的な転送すべきデータを有するブロックとされている。そして、その転送仕様Ｈ２には、この転送ブロックＢ２が転送すべきブロックであることを表す転送フラグが１として記述されている。
【００５９】
転送ブロックＢ２の次に転送すべきブロックとしての転送ブロックＢ３は、転送ブロックＢ２の転送仕様Ｈ２で規定されているアドレスＡ３に記憶されている。この転送ブロックＢ３の転送仕様Ｈ３では、転送データ長がＬ３とされ、実体的なデータを有するブロックとされているが、転送フラグは０とされ、転送する必要がないブロックとされている。
【００６０】
図８は、図７に示すようなダミーブロックが存在する場合において、より効率的にデータ転送を行うことができるようにした実施例を表している。この実施例においては、ＤＭＡＣ２に、１回のＤＭＡ転送で処理するダミーブロックの最大数を設定するダミーブロック数ラッチ回路４１と、処理したダミーブロックの数を計数するダミーブロック数ダウンカウンタ４２が設けられている。また、転送フラグをラッチする転送フラグラッチ回路４３が設けられている。その他の構成は、図２における場合と同様である。
【００６１】
次に、その動作について、図９と図１０のフローチャートを参照して説明する。この図９と図１０のフローチャートのステップＳ５１乃至ステップＳ６３で示す処理は、図４と図５に示すステップＳ１乃至Ｓ１２の処理と基本的に同様の処理である。ただし、ステップＳ５１においては、ブロック数、転送元転送開始アドレス、および転送先転送開始アドレスの初期値が、それぞれブロック数ラッチ回路１６、転送元転送開始アドレスラッチ回路２０、および転送先転送開始アドレスラッチ回路１８に初期設定されるだけでなく、１回のＤＭＡ転送で処理するダミーブロックの最大数の初期値が、ダミーブロック数ラッチ回路４１に初期設定される。
【００６２】
ステップＳ５５において、転送先転送開始アドレスが、転送先転送開始アドレスラッチ回路１８から転送先転送アドレスカウンタ１９に初期設定され、ブロック数ラッチ回路１６からブロック数ダウンカウンタ１７にブロック数が初期設定されるだけでなく、ダミーブロック数ラッチ回路４１の初期設定値がダミーブロック数ダウンカウンタ４２に初期設定される。
【００６３】
また、ステップＳ５９において、データバスに読み出された転送仕様のうち、次に転送される転送ブロックの転送元転送開始アドレスが転送元転送アドレスラッチ回路２０にラッチされ、現在の転送ブロックの転送データ長がデータ数ラッチ回路１４にラッチされるだけでなく、現在の転送ブロックが転送すべきブロックであるか否かを表す転送フラグが、転送フラグラッチ回路４３にラッチされる。
【００６４】
さらに、ステップＳ５９（図５のステップＳ９に対応する）とステップＳ６１（図５のステップＳ１０に対応する）の間にステップＳ６０が設けられている。ステップＳ６０においては、データ数ラッチ回路１４にラッチされたデータ長が０であるか否か、あるいは、転送フラグラッチ回路４３にラッチされた転送フラグが０であるか否かが判定される。データ長が０ではなく、かつ、転送フラグも０ではない場合は、その転送ブロックは実際に転送すべきブロックであり、転送すべき実質的なデータを有しているので、ステップＳ６１に進み、そのブロックのデータを転送する処理が実行される。このステップＳ６１の詳細は、上述した図６に示す場合と同様である。
【００６５】
ステップＳ６１の後のステップＳ６２およびステップＳ６３の処理は、図５におけるステップＳ１１およびステップＳ１２と同様の処理である。
【００６６】
ステップＳ６０において、データ長が０であるか、あるいは転送フラグが０であると判定された場合、その転送ブロックは、ダミーブロックであるからステップＳ６４に進み、ダミーブロック数ダウンカウンタ４２のカウント値（その値はステップＳ５５において、ダミーブロック数ラッチ回路４１にステップＳ５１で初期設定された値が設定されている）を１だけデクリメントする。そして、デクリメントした値が０であるか否か、すなわち、全てのダミーブロックを処理したか否かが判定される。
【００６７】
まだ処理していないダミーブロックが残っている場合においては、ステップＳ５６（図４のステップＳ６に対応する）に戻り、それ以降の処理を実行する。そして、ステップＳ６４において、全てのダミーブロックの処理が終了したと判定された場合においては、ステップＳ６３に進み、周辺制御回路１３がＣＰＵ１に対する停止要求を終了させる。
【００６８】
その他の処理は、図４と図５に示した場合と同様である。
【００６９】
このようにすれば、ダミーブロック（転送データ長が０である転送ブロックまたは転送フラグが０とされている転送ブロック）は、実際には転送されず、その転送ブロックより後の転送ブロックへアクセスするためのリンク情報をたどる目的のためだけに、その処理が行われる。従って、迅速な処理が可能となる。
【００７０】
なお、この実施例においては、ブロック数ダウンカウンタ１７は、実質的にダミーブロックの数を計数しない。従って、ブロック数ラッチ回路１６に設定するブロック数も、ダミーブロックの数を除いた値が初期設定される。
【００７１】
図１１は、本発明のデータ処理装置を応用したコンピュータグラフィックス装置の構成例を表している。この実施例においては、ユーザが操作部６１を操作すると、その操作に対応する信号がＣＰＵ１に入力される。ＣＰＵ１は、この入力に対応する描画命令列を作成し、メモリ４に記憶させる。
【００７２】
メモリ４は、設定パケットバッファ４Ａと、実行パケットバッファ４Ｂに区分されており、両者は適宜切り替えられるようになされている。すなわち、設定パケットバッファ４Ａは、ＣＰＵ１から入力された描画命令列を書き込む（設定する）ためのものであり、実行パケットバッファ４Ｂは、設定された描画命令列を描画装置６２に転送するためのものである。
【００７３】
設定パケットバッファ４Ａに対する設定が完了すると、その設定パケットバッファ４Ａは実行パケットバッファ４Ｂに切り替えられ、それまでの実行パケットバッファ４Ｂは設定パケットバッファ４Ａに切り替えられ、ＣＰＵ１から次の描画命令列の設定が行われる。
【００７４】
描画する画像（オブジェクト）の表面は、描画装置６２が処理する最小単位の図形（三角形や四角形）としてのポリゴンに分解され、描画装置６２は、奥行き方向の深い位置にあるポリゴンから順に描画することにより、２次元画像表示面（フレームメモリ６３）上に立体的な画像を描画し、これを表示部６４に読み出して表示させることができる。ＣＰＵ１は、各ポリゴンの３次元的な奥行き情報であるＺデータに従って、奥行き方向の深い位置にあるポリゴンから順番に、描画命令列をメモリ４の設定パケットバッファ４Ａに作成、配列する。
【００７５】
図１２は、ＣＰＵ１が作成するポリゴンの描画命令の構成例を表している。同図に示すように、描画命令ＩＰは、基本的に、ポリゴン描画データＰＤと、タグＴＧより構成されている。タグＴＧには、次の描画命令が格納されているメモリ４上のアドレス（転送元転送開始アドレス）が書き込まれている。従って、このタグＴＧをたどることで、図１１の実行パケットバッファ４Ｂ内に示すように、描画命令ＩＰを所定の順番で読み出し、描画装置６２に供給することができる。
【００７６】
ポリゴン描画データＰＤは、その描画命令がどのような内容のものであるかを表す識別データＩＤＰ、ポリゴン（この実施例の場合、四角形のポリゴン）の４点の座標（Ｘ０，Ｙ０），（Ｘ１，Ｙ１），（Ｘ２，Ｙ２），（Ｘ３，Ｙ３）、およびポリゴンの中を所定の色でマッピングするための３原色の色データ（Ｒ，Ｇ，Ｂ）を含んでいる。
【００７７】
ＣＰＵ１は、コントロールパットなどからなる操作部６１からの入力に基づいて、物体や始点の動きを計算し、メモリ４の設定パケットバッファ４Ａ上にポリゴン描画命令列を作成する。ついで、Ｚデータ（奥行き情報）に対応して、ポリゴン描画命令列のタグＴＧを表示順序に従って書き換える。このとき、メモリ４の描画命令のアドレスは特に変更せずに、タグＴＧのみを書き換える。従って、この書き換えに要する時間は、極めて短いものですむことになる。
【００７８】
この描画命令列が完成すると、その設定パケットバッファ４Ａは、実行パケットバッファ４Ｂに切り替えられる。そして、それまでの実行パケットバッファ４Ｂが設定パケットバッファ４Ａに切り替えられて、ＣＰＵ１により新たなポリゴン描画命令列が書き込まれる。
【００７９】
ＤＭＡＣ２は各描画命令を、メモリ４の実行パケットバッファ４ＢからタグＴＧを順番にたどって、１描画命令毎に、実行パケットバッファ４Ｂから描画装置６２に転送する。従って、描画装置６２に転送されてくる描画命令列は、すでにソートされた状態にあるため、描画装置６２は、この描画命令を入力された順番に処理し、処理した結果得られたデータをフレームメモリ６３に記憶させる。このようにして、フレームメモリ６３に操作部６１の操作に対応する画像が描画される。そして、フレームメモリ６３に描画したデータが、そこから読み出され、表示部６４に出力され、表示される。
【００８０】
以上、本発明をコンピュータグラフィックス装置に応用した場合を例としたが、本発明は、その他のデータ処理装置に適応することが可能である。
【００８１】
【発明の効果】
請求項１に記載のデータ処理装置および請求項５に記載のデータ処理方法によれば、ブロックの転送数の設定値と転送数の計数値とを比較し、比較結果に対応してデータのＤＭＡ転送を制御するようにしたので、一度にＤＭＡ転送するデータ量をダイナミックに変更することが可能となり、より効率的なデータ処理を実現することが可能となる。
【００８２】
請求項４に記載のデータ処理装置および請求項６に記載のデータ処理方法によれば、ダミーのブロック数の設定値と計数値とを比較し、比較結果に対応してデータのＤＭＡ転送を制御するようにしたので、ダミーのブロックが含まれる場合においても、迅速にデータを処理することが可能となる。
【図面の簡単な説明】
【図１】本発明のデータ処理装置の構成例を示すブロック図である。
【図２】図１のＤＭＡＣ２のより詳細な構成例を示すブロック図である。
【図３】図２のメモリ４に記憶されている転送元ブロックの構造を説明する図である。
【図４】図２の実施例の動作を説明するフローチャートである。
【図５】図４に続くフローチャートである。
【図６】図５のステップＳ１０のより詳細な処理を説明するフローチャートである。
【図７】図８のメモリ４に記憶されている転送元ブロックの構造を示す図である。
【図８】本発明のデータ処理装置の他の実施例の構成例を示すブロック図である。
【図９】図８の実施例の動作を説明するフローチャートである。
【図１０】図９に続くフローチャートである。
【図１１】本発明のデータ処理装置の応用例を示すブロック図である。
【図１２】図１１の実施例における描画命令の構造を示す図である。
【符号の説明】
１  ＣＰＵ
２  ＤＭＡコントローラ
３  デバイス
４  メモリ
１１  タイミング制御回路
１２  コントロールレジスタ
１３  周辺制御回路
１４  データ数ラッチ回路
１５  データ数ダウンカウンタ
１６  ブロック数ラッチ回路
１７  ブロック数ダウンカウンタ
１８  転送先転送開始アドレスラッチ回路
１９  転送先転送アドレスカウンタ
２０  転送元転送開始アドレスラッチ回路
２１  転送元転送アドレスカウンタ
２２  データラッチ回路
【図１】
0003765852.tif 000002
【図２】
0003765852.tif 000003
【図３】
0003765852.tif 000004
【図４】
0003765852.tif 000005
【図５】
0003765852.tif 000006
【図６】
0003765852.tif 000007
【図７】
0003765852.tif 000008
【図８】
0003765852.tif 000009
【図９】
0003765852.tif 000010
【図１０】
0003765852.tif 000011
【図１１】
0003765852.tif 000012
【図１２】
0003765852.tif 000013