(57)【要約】【課題】適切なバッファ容量で複数のプログラムによるＤＭＡデータ転送を可能とすることである。【解決手段】複数のプログラムにより、データを格納するメモリから、各プログラムに対応する最大ビート数を格納する複数のレジスタとバッファとを備えるＤＭＡデバイスへのデータ転送は次のように実行する。ＤＭＡデバイスからのデータ転送要求に基いて、カウンタにセットされた格納アドレスを用いて転送命令を読み出し、メモリからＤＭＡデバイスへのＤＭＡデータ転送を実行する。その際に、データと実行する転送命令の格納アドレスをセットするカウンタのカウンタ識別子及び転送命令を実行するプログラムの最大ビート数をＤＭＡデバイスに出力する。一方、ＤＭＡデバイスは、前記カウンタ識別子に対応したプログラムの最大ビート数に従って前記バッファの割り当て及びＤＭＡデータ転送を制御する。【選択図】  図１
2014048955.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムによりＤＭＡデータ転送を制御するデータ転送装置であって、
データを格納するメモリと、
ＣＰＵから指示されたデータ転送命令を格納する格納手段と、
前記複数のプログラムそれぞれに対応するデータ転送命令が格納された前記格納手段のアドレスがセットされた複数のカウンタと、
前記複数のプログラムそれぞれに対応する最大ビート数を示す情報を格納する複数の第１のレジスタと、バッファとを備えたＤＭＡデバイスと、
前記ＤＭＡデバイスからのデータ転送要求に基いて、前記複数のカウンタにセットされたアドレスを用いて前記格納手段にアクセスして格納されたデータ転送命令を読み出し、前記メモリから前記ＤＭＡデバイスへのＤＭＡデータ転送を実行する際に、前記データと実行する前記データ転送命令のアドレスを格納するカウンタのカウンタ識別子を前記ＤＭＡデバイスに出力するデータ転送手段とを有し、
前記ＤＭＡデバイスは、前記カウンタ識別子に対応したプログラムの最大ビート数に従って前記バッファの割り当て及びＤＭＡデータ転送を制御することを特徴とするデータ転送装置。
【請求項２】
前記ＤＭＡデバイスは、前記バッファの空き容量を監視し、前記空き容量が前記出力されたカウンタ識別子に対応した最大ビート数の和より大きい場合に前記データ転送要求を送信することを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記ＤＭＡデバイスは、前記複数のカウンタのカウンタ識別子それぞれに対応させた、アドレスを格納する複数の第２のレジスタをさらに備え、
前記ＤＭＡデバイスは、前記出力されたカウンタ識別子に対応する第２のレジスタに格納されたアドレスを参照して前記受信したデータを前記アドレスに対応する処理ユニットに出力することを特徴とする請求項１又は２に記載のデータ転送装置。
【請求項４】
前記データ転送手段からの制御信号に従って、前記複数のカウンタのいずれかを選択する選択手段と、
前記選択手段により選択されたカウンタにセットされたアドレスを用いて前記格納手段にアクセスして格納されたデータ転送命令を読み出してデコードするデコード手段とをさらに有することを特徴とする請求項１乃至３のいずれか１項に記載のデータ転送装置。
【請求項５】
前記データ転送手段は、前記複数のプログラムそれぞれに対応して、前記選択手段は前記複数のカウンタの１つを順次、選択し、該選択されたカウンタにセットされたアドレスを用いて前記格納手段にアクセスして格納されたデータ転送命令を順次、実行することを特徴とする請求項１乃至４のいずれか１項に記載のデータ転送装置。
【請求項６】
前記最大ビート数が１であるか、２以上であるかに従って、前記ＤＭＡデバイスへのデータ転送のデータフォーマットを変更することを特徴とする請求項１乃至５のいずれか１項に記載のデータ転送装置。
【請求項７】
複数のプログラムにより、データを格納するメモリからのＤＭＡデバイスへのデータ転送を制御するデータ転送方法であって、
前記ＤＭＡデバイスは、前記複数のプログラムそれぞれに対応する最大ビート数を格納する複数のレジスタと、バッファとを備えており、
ＣＰＵから指示されたデータ転送命令を格納手段に格納する格納工程と、
前記複数のプログラムそれぞれに対応するデータ転送命令が格納された前記格納手段のアドレスを複数のカウンタにセットする設定工程と、
前記ＤＭＡデバイスからのデータ転送要求に基いて、前記複数のカウンタにセットされたアドレスを用いて前記格納手段にアクセスして格納されたデータ転送命令を読み出し、前記メモリから前記ＤＭＡデバイスへのＤＭＡデータ転送を実行する際に、前記データと実行する前記データ転送命令のアドレスを格納するカウンタのカウンタ識別子を前記ＤＭＡデバイスに出力するデータ転送工程とを有し、
前記ＤＭＡデバイスは、前記カウンタ識別子に対応したプログラムの最大ビート数に従って前記バッファの割り当て及びＤＭＡデータ転送を制御することを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ転送装置及びデータ転送方法に関し、特に、ＤＭＡデータ転送を行うデータ転送装置及びデータ転送方法に関する。
【背景技術】
【０００２】
ＣＰＵに負荷をかけることなくデータを転送するために、従来、ダイレクトメモリアクセス（ＤＭＡ）を採用した装置が提案されている。例えば、特許文献１に開示されているデータ転送装置には、図７に示すように３つのプログラムカウンタ（ＰＣ）３−１、３−２、３−３とこれらに格納された３つのアドレスのいずれかを選択するＰＣ選択部４が備えられている。そして、ＰＣ選択部４で選択されたアドレスに格納されている命令は一度、命令メモリ５に格納され、命令デコード部６でその命令がデコードされる。その命令に基づいて、データ転送実行部７がＤＭＡポート７−１もしくは７−２を介してＤＭＡデバイス１−１もしくは１−２にデータを転送する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３５２５９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＤＭＡデータ転送において高速転送を実行する場合、ＤＭＡデバイスのデータ処理性能の関係からデータ受信用バッファを設けることがある。複数の処理モードを持つ装置の場合、１つのＤＭＡデバイスに対して、そのモードによって連続転送量（以降、ビート数）が異なる場合がある。この場合は、ＤＭＡデバイスごとに、いずれのモードが選択されてもバッファ不足を生じさせない容量にする必要がある。
【０００５】
しかしながら、特許文献１に開示された従来例では、ＤＭＡ転送におけるビート数が分からないため、安全のためバッファ容量を多めに確保しておく必要がある。従って、限られた容量のバッファを有効に使用することができず、非効率であった。
【０００６】
本発明は上記従来例に鑑みてなされたもので、適切なバッファ容量で複数のプログラムによるＤＭＡデータ転送が可能なデータ転送装置及びデータ転送方法を提供することを目的としている。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明のデータ転送装置は、次のような構成を有する。
【０００８】
即ち、複数のプログラムによりＤＭＡデータ転送を制御するデータ転送装置であって、データを格納するメモリと、ＣＰＵから指示されたデータ転送命令を格納する格納手段と、前記複数のプログラムそれぞれに対応するデータ転送命令が格納された前記格納手段のアドレスがセットされた複数のカウンタと、前記複数のプログラムそれぞれに対応する最大ビート数を示す情報を格納する複数の第１のレジスタと、バッファとを備えたＤＭＡデバイスと、前記ＤＭＡデバイスからのデータ転送要求に基いて、前記複数のカウンタにセットされたアドレスを用いて前記格納手段にアクセスして格納されたデータ転送命令を読み出し、前記メモリから前記ＤＭＡデバイスへのＤＭＡデータ転送を実行する際に、前記データと実行する前記データ転送命令のアドレスを格納するカウンタのカウンタ識別子を前記ＤＭＡデバイスに出力するデータ転送手段とを有し、前記ＤＭＡデバイスは、前記カウンタ識別子に対応したプログラムの最大ビート数に従って前記バッファの割り当て及びＤＭＡデータ転送を制御することを特徴とする。
【発明の効果】
【０００９】
従って本発明によれば、複数のプログラムに従ってデータ転送する場合に、各プログラムごとの最大ビート数を格納し、この最大ビート数に基いてバッファの割り当て及びＤＭＡデータ転送を制御することができる。これにより、例えば、複数の処理モードを持ち、モード毎のビート数がプログラムごとに異なる場合においてもバッファ容量に適切に管理することができ、不必要にバッファ容量を増大させることはなくなる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態であるデータ転送部を含んだデータ処理装置の構成を示すブロック図である。
【図２】データ転送部の詳細な構成を示すブロック図である。
【図３】データ転送部の動作概要を示すフローチャートである。
【図４】ＤＭＡデバイスの構成と動作を説明する図である。
【図５】データ転送部とＤＭＡデバイス間の信号プロトコルを示すタイミングチャートである。
【図６】ＤＭＡデータポートからの転送データフォーマットを示す図である。
【図７】従来技術に従うデータ転送装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下添付図面を参照して本発明の実施形態の一例について詳細に説明する。
【００１２】
なお、この明細書において、「記録」（以下、「プリント」とも称する）とは、文字、図形等有意の情報を形成する場合のみならず、有意無意を問わず、広く記録媒体上に画像、模様、パターン等を形成する、又は媒体の加工を行う場合も表すものとする。また、人間が視覚で知覚し得るように顕在化したものであるか否かを問わない。
【００１３】
また、「記録媒体」とは、一般的な記録装置で用いられる紙のみならず、広く、布、プラスチック・フィルム、金属板、ガラス、セラミックス、木材、皮革等、インクを受容可能なものも表すものとする。
【００１４】
図１は、本発明の実施形態であるデータ転送部を含んだデータ処理装置１０１のブロック図である。
【００１５】
図１において、ＣＰＵ１０２は内蔵ＲＯＭ（不図示）に格納されたプログラムに従ってデータ処理を行う演算回路として動作する。データ転送部１０５は内蔵されたメモリ（不図示）に記憶されたプログラムに従って、メモリ１０４とＤＭＡデバイス１０６との間のＤＭＡデータ転送を制御する。ＣＰＵ１０２はデータ転送部１０５にも接続され、データ転送の開始や終了などのメッセージとデータ転送部１０５へのプログラムの転送を行う。
【００１６】
データ転送部１０５はプログラム（スレッド）を所定の単位で切り替えながら異なるデータを転送する。これにより見かけ上、複数の異なるデータが同時並行的に処理されることになる。データ転送部１０５は処理対象のデータを転送する際、当該データの転送に同期させて、当該データに対応したプログラム（スレッド）を識別する情報（ＰＧＮｕｍ）を転送する。
【００１７】
ＤＭＡデバイス１０６はデータ転送部１０５と２つのＤＭＡポート１０５ａ、１０５ｂを介して接続されている。ＤＭＡデバイス１０６はデータ転送部１０５からデータとコマンドを受信し、そのコマンド情報に基いて受信したデータをＩＰ＿Ａ１０７、ＩＰ＿Ｂ１０８、ＩＰ＿Ｃ１０９に転送する機能を有している。
【００１８】
ＩＰ＿Ａ１０７、ＩＰ＿Ｂ１０８、ＩＰ＿Ｃ１０９は所定の画像処理を実行するプロセッサ（Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｏｒ）であり、それぞれ異なる画像処理を実行可能な機能ブロック（処理ユニット）である。ＤＭＡデバイス１０６は処理対象のデータとともに送られてくるＰＧＮｕｍによって受信したデータがどのプログラムに対応したものであるかが分かるので、それに従ったＩＰにデータを転送する。また、ＤＭＡデバイス１０６はＰＧＮｕｍとともに送られてくるビート数コマンドによってプログラム毎の最大ビート数に応じたデータ転送及びバッファ制御を行う。
【００１９】
２つのＤＭＡポートとは処理対象のデータを送信するポートがＤＭＡデータポート１０５ａであり、ビート数を示すコマンドを送信するポートがＤＭＡコマンドポート１０５ｂである。
【００２０】
データ処理装置１０１は、例えば、インクジェット記録ヘッドを搭載した記録装置に適用される。この記録装置は、インクジェット記録ヘッドを搭載したキャリッジを往復走査して記録媒体にインクを吐出するエンジン部と、ホストと接続して画像データを受信し、画像処理や記録制御を行う印刷制御部と備える。この印刷制御部は、ＣＰＵやメモリやホストとのインタフェースを備えるが、このメモリへのデータの入出力にＤＭＡ転送が用いられ処理の高速化が図られている。この印刷制御部にデータ処理装置１０１が組み込まれ、データ転送の高速化を図っているものである。特に、記録媒体のサイズがＡ０、Ｂ０サイズなどの大判の記録用紙を用いる場合、この記録装置が扱う画像データ量も膨大になり、ここで説明するようなＤＭＡ転送を実行するデータ処理装置を適用することにより処理の高速化の点で効果は著しい。記録媒体のサイズがＡ４、Ｂ４サイズのオフィス用、個人用のインクジェット記録装置にも、このデータ処理装置が適用可能である。
【００２１】
なお、適用される記録装置は、上記構成のインクジェット記録装置のみならず、電子写真方式、昇華方式、熱転写方式など、他の記録方式を適用した多くの種類の記録装置に及ぶ。
【００２２】
図２はデータ転送部１０５の詳細な構成を示すブロック図である。ここでは、特に、ＤＭＡデバイス１０６への出力転送を例に図示している。
【００２３】
図２において、プログラムカウンタ（ＰＣ）更新部２００によりプログラムカウンタ（ＰＣ）２０１、２０２、２０３にセットされたアドレスは、メモリ２０６に格納された転送命令のアドレスを示すものである。プログラムカウンタ（ＰＣ）選択部２０４はプログラムカウンタ２０１、２０２、２０３のいずれか値をデータ転送実行部２０８からの制御信号に基づいて選択する。
【００２４】
アドレス（ａｄｒ）選択部２０５はメモリ２０６へのアクセスアドレスを切り替える。ＣＰＵ１０２からライトアクセスがある場合、ＣＰＵ１０２からのアドレスを選択するとともに、メモリ２０６にデータをライトするシーケンスを発生させ（不図示）、所望のアドレスにデータをライトする。命令デコード部２０７はメモリ２０６から読み込んだデータ転送命令を解読し、データ転送方向、データ転送先、データ転送元などを判定する。
【００２５】
データ転送実行部２０８は、命令デコード部２０７で解読したデータ転送命令に従ってＤＭＡデータポート１０５ａもしくはＣＰＵバス２１０を駆動してメモリ１０４とＤＭＡデバイス１０６とのデータ転送を実行する。ＤＭＡコマンドポート１０５ｂは、各プログラムのビート数をＤＭＡデバイス１０６に通知する。また、データ転送実行部２０８はデータ転送部１０５のプログラムカウンタ番号の管理も担っている。ＤＭＡデバイス１０６がデータ転送要求（ＤＭＡ＿Ｒｅｑ）信号をアサートすることで、２つのＤＭＡポート１０５ａ、１０５ｂとＤＭＡデバイス１０６との間のデータ転送が開始される。
【００２６】
次にデータ転送部の実際の動作をフローチャートを参照して説明する。
【００２７】
図３はデータ転送部１０５の動作概要を示すフローチャートである。
【００２８】
まず、ステップＳ３０１では、ＣＰＵ１０２がデータ転送部１０５のメモリ２０６に、３種類のデータ転送用のプログラムを書き込む。さらに、ステップＳ３０２では、ＣＰＵ１０２がデータ転送実行部２０８にプログラムを起動するように設定する。
【００２９】
ステップＳ３０３では、データ転送実行部２０８はプログラムカウンタ選択部２０４に対して制御信号を発行し、プログラムカウンタ２０１を選択するよう指示する。これにより、プログラムカウンタ２０１の値が示すメモリ２０６のアドレスに格納されている命令データが読み出され、命令デコード部２０７へ渡される。ステップＳ３０４では、受信したデータをデコードし、データ転送命令としてデータ転送実行部２０８へ伝達する。
【００３０】
ステップＳ３０５では受信したデータ転送命令に従って、データ転送実行部２０８は、メモリ１０４にリード要求を行う。ステップＳ３０６では、これに応じて、メモリ１０４から読み込んだ処理対象のデータを、どのプログラムに従ったデータかを識別するためのＰＧＮｕｍの情報とともにＤＭＡデータポート１０５ａを経てＤＭＡデバイス１０６へ転送する。或いは、メモリ１０４から読み込んだ処理対象のデータを、ＰＧＮｕｍの情報とともにビート数コマンドをＤＭＡコマンドポート１０５ｂを経てＤＭＡデバイス１０６へ転送する。
【００３１】
なお、ステップＳ３０３〜Ｓ３０６はパイプライン動作により実行される。例えば、ステップＳ３０３は、最初にプログラムカウンタ２０１を選択、次にプログラムカウンタ２０２を選択、その次はプログラムカウンタ２０３を選択というように、実行中のプログラムカウンタを順次選択していく。そして、所定単位毎に処理対象のプログラムを切り替えながら処理を進める。プログラムが最後まで実行されると、当該プログラムカウンタを除いたプログラムカウンタを順次選択し、すべてのプログラムが最後まで実行されるまで継続する。
【００３２】
ステップＳ３０４の命令デコードについても同様にステップＳ３０３で選択されたプログラムカウンタのアドレスに格納されている命令を順次デコードする。ステップＳ３０３やステップＳ３０４はデータ転送実行部２０８の動作状況に応じて一時停止することが可能である。即ち、ステップＳ３０３とステップＳ３０４がパイプライン動作することで、ステップＳ３０５において命令実行のための待ち時間を少なくすることが可能である。
【００３３】
ステップＳ３０７ではすべてのプログラムが実行されデータが転送されたかどうかを確認する。そして、転送未完了であれば、処理はステップＳ３０３に戻るが、転送終了と判断されれば、ＣＰＵ１０２へ割り込みをアサートし、データ転送が完了したことを通知して処理を終了する。
【００３４】
ここで、ＤＭＡデバイス１０６の構成と動作について詳細に説明する。
【００３５】
図４はＤＭＡデバイス１０６の構成と動作を説明する図である。
【００３６】
ＤＭＡデバイス１０６は、図１から分かるように、ＩＰ＿Ａ１０７、ＩＰ＿Ｂ１０８、ＩＰ＿Ｃ１０９と接続されており、ＩＰ１０７〜１０９のアドレス空間は分離するようにマッピングされている。
【００３７】
さて、ＤＭＡデバイス１０６は、図４（ａ）に示すように、プログラムカウンタ番号ごとにアドレスを管理するレジスタ（第２のレジスタ）１１０、１１１、１１２と最大ビート数を管理するレジスタ（第１のレジスタ）１１５、１１６、１１７を備えている。そして、ＣＰＵ１０２或いはＤＭＡコマンドポート１０５ｂより各ＩＰ１０７〜１０９に対応したアドレス値と最大ビート数が書き込まれる。レジスタ１１０、１１１、１１２には夫々、アドレスＡ、アドレスＢ、アドレスＣがセットされ、レジスタ１１５、１１６、１１７には最大ビート数Ａ、最大ビート数Ｂ、最大ビート数Ｃがセットされる。
【００３８】
なお、プログラムカウンタ２０１〜２０３の値（ＰＧＮｕｍ＝＃１、ＰＧＮｕｍ＝＃２、ＰＧＮｕｍ＝＃３）とレジスタ１１０〜１１２にセットされたアドレス（アドレスＡ、アドレスＢ、アドレスＣ）とは対応づけられている。また、プログラムカウンタ２０１〜２０３の値（ＰＧＮｕｍ＝＃１、ＰＧＮｕｍ＝＃２、ＰＧＮｕｍ＝＃３）はレジスタ１１５〜１１７にセットされた最大ビート数Ａ、最大ビート数Ｂ、最大ビート数Ｃとも対応付けられている。
【００３９】
また、ＤＭＡデバイス１０６は８個の格納領域に区分されたバッファ１１８を備え、ＤＭＡデータポート１０５ａから受信したデータを８回の受信分保持する。制御部１１９は、バッファ１１８の容量とレジスタ１１５〜１１７に格納された最大ビート数Ａ、Ｂ、Ｃの情報をもとにデータポート１０５ａへのＤＭＡ＿Ｒｅｑ信号を制御する。さらに、制御部１１９はデータポート１０５ａから受信したデータとプログラムカウンタ番号の値をバッファ１１８へ格納する。データ出力部１２０は、バッファ１１８に格納されたデータ４０２とプログラムカウンタ番号に基づいて対応づけられたレジスタ１１０〜１１２に格納されたアドレスの値を参照し、各ＩＰへの出力を実行する。ＤＭＡデバイス１０６は、前記アドレス値とデータ転送部から受信したデータをＩＰ１０７〜１０９に接続されたバス（ＩＰバス）へ出力する。このデータ転送で使用したアドレス値は次のアドレスを示すようにインクリメントし、次のデータ転送時に使用する。
【００４０】
図４（ｂ）はＤＭＡコマンドポート１０５ｂから転送されるコマンドのデータフォーマットを示している。図４（ｂ）に示されるように、この転送コマンドは、上位にＤＭＡデバイス１０６に存在するレジスタのアドレス（ａｄｄｒｅｓｓ）、下位にそのアドレスに格納するデータ（ｄａｔａ）を指定する。このようなフォーマットを用いて、ＤＭＡデバイス１０６のレジスタにコマンドは書き込まれる。
【００４１】
図４（ｃ）はＰＧＮｕｍ＃１〜３のビート数を設定した状態のレジスタとレジスタ値を示している。
【００４２】
ＤＭＡデバイス１０６は、下記の条件を満たした場合にＤＭＡデータポート１０５ａのＤＭＡ＿Ｒｅｑ信号をアサートする。その条件とは、最大ビート数が２以上の値を最大ビート数ａ、最大ビート数ｂ、最大ビート数ｃとすると、バッファ空き容量＞最大ビート数ａ＋最大ビート数ｂ＋最大ビート数ｃとなる条件である。即ち、バッファ空き容量を監視し、その結果、バッファ空き容量が全ての最大ビート数の和より大きい場合に、ＤＭＡ＿Ｒｅｑ信号をアサートする。
【００４３】
図５は、データ転送実行部２０８のＤＭＡデータポート１０５ａ及びＤＭＡコマンドポート１０５ｂとＤＭＡデバイス１０６との間のプロトコルを説明するタイミングチャートである。
【００４４】
図５において、ＣＬＫ４０１はデータ転送実行部２０８とＤＭＡデバイス１０６で使用するクロック信号であり、立ち上がりエッジを利用した同期回路で構成されている。Ｄａｔａ４０２はデータ転送実行部２０８がデータ転送のために使用するデータ、ＰＧＮｕｍ４０３はプログラムカウンタ２０１〜２０３のどのプログラムによってデータを転送されているかを示すプログラムカウンタ番号である。ＤＭＡ＿Ｒｅｑ４０４はＤＭＡデバイス１０６のデータ転送部１０５に対するデータ要求信号、ＤＭＡ＿Ａｃｋ４０５はデータ転送実行部２０８がＤＭＡデータポート１０５ａにデータを出力していることを示すデータ出力確定信号である。さらに、ＢＵＦ４０６はバッファ１１８の状態、つまり、バッファ１１８の空き容量を示す。
【００４５】
ここで、バッファ１１８の空き容量に応じたデータ転送要求信号４０４（ＤＭＡ＿Ｒｅｑ信号）の制御について説明する。
【００４６】
図５に示す例は３つのプログラムが同時動作している例である。各プログラムのビート数は、ＰＧＮｕｍ＃１＝１、ＰＧＮｕｍ＃２＝１、ＰＧＮｕｍ＃３＝４で、ＰＧＮｕｍ＃１とＰＧＮｕｍ＃２は２回転送、ＰＧＮｕｍ＃３は４ビート転送を１回実行する場合を示している。各プログラムはデータ転送を開始する前に、これから送信できる最大ビート数をＤＭＡコマンドポート１０５ｂのデータ（Ｄａｔａ）信号としてＤＭＡデバイス１０６に通知する。これらのデータはＤＭＡデバイスのレジスタ１１５〜１１７に最大ビート数Ａ、最大ビート数Ｂ、最大ビート数Ｃとして格納される。
【００４７】
さらに続いて、図５に示すタイミングチャートを参照して、ＤＭＡ処理フローを説明する。
【００４８】
クロックサイクル２（ＣＬＫ２）でＤＭＡデバイス１０６が、ＤＭＡ＿Ｒｅｑ４０４（データ要求信号）をアサートする。データ転送実行部２０８は、次のサイクル以降（ＣＬＫ３以降）で転送データの出力を試みる。図５によれば、クロックサイクル３、４（ＣＬＫ３、４）では出力データの準備ができていないため、ＤＭＡ＿Ａｃｋ４０５（データ出力確定信号）はディアサートの状態を出力している。クロックサイクル５（ＣＬＫ５）で出力データの準備が完了したので、ＤＭＡ＿Ａｃｋ４０５（データ出力確定信号）をアサートする。これとともに、Ｄａｔａ４０２（データ）とＤａｔａ４０２（データ）のＰＧＮｕｍ４０３（プログラムカウンタ番号）に＃１を出力する。
【００４９】
この実施形態では、プログラムカウンタ２０１〜２０３の値として、プログラムカウンタ番号＃１、＃２、＃３が、それぞれ対応している。
【００５０】
クロックサイクル６（ＣＬＫ６）でＤＭＡデバイス１０６はＤＭＡ＿Ａｃｋ（データ出力確定信号）がアサートされていることを確認する。これとともにＤａｔａ４０２（データ）とＰＧＮｕｍ４０３（プログラムカウンタ番号）を受信し、データはバッファ１１８に格納する。このタイミングでバッファ１１８の空き容量は１受信分のデータを格納したので、“８”から１つ減り、“７”となる。
【００５１】
このようにＤＭＡ＿Ｒｅｑ４０４（データ要求信号）とＤＭＡ＿Ａｃｋ４０５（データ出力確定信号）とが同時アサートされたクロックサイクルのＤａｔａ４０２（データ）とＰＧＮｕｍ４０３（プログラムカウンタ番号）を有効データとして扱うことができる。
【００５２】
以降同様にクロックサイクル１０（ＣＬＫ１０）まで処理を行う。クロックサイクル８（ＣＬＫ８）では、ＰＧＮｕｍ＃３の４ビート転送が開始される。図３で示した通り、データ転送はプログラムが実行中の場合は順番に実行されるため、４ビート転送の１ビート目（＃３−１）を転送している。クロックサイクル９（ＣＬＫ９）では、次のプログラムの転送を開始する。
【００５３】
クロックサイクル１１（ＣＬＫ１１）では、ＤＭＡ＿Ｒｅｑ４０４とＤＭＡ＿Ａｃｋ４０５がアサートされた状態でかつＢＵＦ４０６の値が３である。このため、クロックサイクル１１（ＣＬＫ１１）ではＢＵＦ４０６の値がＰＧＮｕｍ＃３の最大ビート数より小さくなる。この時点では、ＰＧＮｕｍ＃３の転送は１〜４ビートの可能性があるので、４ビート転送の場合を考慮してＤＭＡ＿Ｒｅｑ４０４をネゲートする。クロックサイクル１２（ＣＬＫ１２）ではＤＭＡ＿Ｒｅｑ４０４はネゲートされているが、クロックサイクル８（ＣＬＫ８）において、既にＰＧＮｕｍ＃３の４ビート転送の開始が許可されているため、２ビート目（＃３−２）の転送を実行する。クロックサイクル１３、１４（ＣＬＫ１３、１４）でもＰＧＮｕｍ＃３の３ビート目（＃３−３）、４ビート目（＃３−４）の転送を行う。
【００５４】
以上のようにこの実施形態によれば、単一のＤＭＡポートを複数のプログラムが共有する場合であっても、プログラムごとの最大ビート数をＤＭＡデバイスが随時認識しバッファを制御することができる。これにより、最大ビート数以下の任意のビート数で、任意のタイミングにデータ転送を実施することができる。
【００５５】
なお、以上説明した実施形態において、ビート数が１の場合（シングル転送モード）とビート数が２以上（複数ビート転送モード）の場合で、ＤＭＡデータポート１０５ａから転送データフォーマットを変更しても良い。
【００５６】
図６は、ＤＭＡデータポートからの転送データフォーマットを示す図である。
【００５７】
高速データ転送を行うプログラムはビート数を２以上に設定し、図６に示すように、ＤＭＡデータポート１０５ａはデータのみを転送する。これに対して、１ビート（シングル転送）のプログラムは、図６に示すように、上位をアドレス、下位をデータとしてビットを割り当てる。
【００５８】
ＤＭＡデバイス１０６は、データ４０２を受信した際、同時受信するＰＧＮｕｍ４０３と事前設定された最大ビート数を参照し、受信データフォーマットが複数ビート転送かシングル転送を判断することができる。このような構成にすることで、プログラムによるレジスタ設定を頻繁に送信するプログラムと大量データを高速転送するプログラムの作成が容易になる。
【００５９】
以上のように、データ転送部からプログラムカウンタ番号をデータと同期してＤＭＡデバイスへ転送するとともに、プログラム毎のビート数情報とＤＭＡデバイスのバッファ容量をもとにデータ要求信号を制御することができる。これにより、ＤＭＡデバイスはオーバヘッドなしにデータ転送を行ったプログラムを判断することができる。
【００６０】
なお、以上説明した実施形態では、３つのプログラムを同時動作する場合を例として説明したが、同じ構成で２つのプログラムが同時動作するにも適用可能である。この場合、ＤＭＡデバイスのバッファ数が８であるため、例えば、各プログラムビート数を４ビートに設定することが可能となる。
【００６１】
また、複数のプログラムを並行動作させるのではなく、１つずつ順次動作させるものであっても動作させるプログラムに応じたバッファの設定が可能である。このとき使用しないバッファ領域を他の用途で使用することによって処理の効率化が図れる。なお、本実施形態ではプログラムに従った転送先をＩＰとしたが、これに限らず他の処理ユニットに置き換えることも可能である。このように同じ構成であっても、単一のＤＭＡポートでプログラムごとに任意の転送ができるため、バッファ容量の最適設定や高速で自由度の高いデータ転送が実現可能となる。
【００６２】
また、以上説明した実施形態ではプログラムカウンタが３つの例を用いて説明したが、本発明はこれによって限定されるものではない。他の数のプログラムカウンタを備えていても良い。また、プログラムの識別には数字以外の識別子（例えば、カウンタ識別子）を用いても構わない。さらに、データ転送部とＤＭＡデバイスとの間でやりとりする信号についても上記説明した例は１例に過ぎず、これ以外のプロトコルも本発明に適用可能である。
【図１】
2014048955.tif 000003
【図２】
2014048955.tif 000004
【図３】
2014048955.tif 000005
【図４】
2014048955.tif 000006
【図５】
2014048955.tif 000007
【図６】
2014048955.tif 000008
【図７】
2014048955.tif 000009