(57)【要約】【課題】転送先の周辺モジュールに内蔵されたバッファメモリの記憶容量に制約されることなく、中央演算処理装置に対する割り込みの発生回数を低減させることを可能とするデータ転送制御装置を提供すること。【解決手段】任意の記憶容量を有する主メモリと、周辺モジュールに内蔵されたデータ転送用のバッファとして機能するファーストイン・ファーストアウトとの間のデータ転送を制御するためのデータ転送制御装置において、データの転送回数を示す値であって前記ファーストイン・ファーストアウトの記憶容量に応じた値が設定される転送回数レジスタ３０３と、前記主メモリに記憶されたデータ量に応じた値が設定され転送回数レジスタ３０４とを備え、転送回数レジスタ３０３の値に基づきデータの転送を制御すると共に、転送回数レジスタ３０４の値に基づき中央演算処理装置に対し割り込み信号を出力する。【選択図】      図２
2004227501.tif 000002
【特許請求の範囲】
【請求項１】
任意の記憶容量を有する第１のメモリと、周辺モジュールに内蔵されたデータ転送用のバッファメモリとして機能する所定の記憶容量を有する第２のメモリとの間のデータ転送を制御するためのデータ転送制御装置において、
前記データ転送の回数を示す値であって前記第２のメモリの記憶容量に応じた値が設定される第１のレジスタと、
前記データ転送の回数を示す値であって前記第１のメモリに記憶されたデータ量に応じた値が設定される第２のレジスタと、
前記第１のレジスタの値に基づき、前記第２のメモリの書き込み動作を制御しながら所定ビット幅のデータの転送を制御すると共に、前記第２のレジスタの値に基づき、前記第１のメモリに記憶されたデータを管理する中央演算処理装置に対し割り込み信号を出力する制御部と、
を備えたデータ転送制御装置。
【請求項２】
前記制御部が、前記データ転送の回数と前記第２のレジスタに設定された値とが一致した場合に前記割り込み信号を出力することを特徴とする請求項１に記載されたデータ転送制御装置。
【請求項３】
前記第２のレジスタのサイズが、前記第１のメモリの記憶容量に応じて設定されたことを特徴とする請求項１または２に記載されたデータ転送制御装置。
【請求項４】
前記第１のメモリと前記第２のメモリとの間のデータ転送がＤＭＡ転送であることを特徴とする請求項１ないし３の何れかに記載されたデータ転送制御装置。
【請求項５】
任意の記憶容量を有する第１のメモリと、周辺モジュールに内蔵されたデータ転送用のバッファメモリとして機能する所定の記憶容量を有する第２のメモリとの間のデータ転送を制御するためのデータ転送制御方法において、
前記データ転送の回数を示す値であって前記第２のメモリの記憶容量に応じた値を第１のレジスタに設定するステップと、
前記データ転送の回数を示す値であって前記第１のメモリに記憶されたデータ量に応じた値を第２のレジスタに設定するステップと、
前記第１のレジスタの値に基づき、前記第２のメモリの書き込み動作を制御しながら前記所定ビット幅のデータの転送を制御すると共に、前記第２のレジスタの値に基づき、前記第１のメモリに記憶されたデータを管理する中央演算処理装置に対し割り込み信号を出力するステップと、
を含むデータ転送制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＤＭＡコントローラなどのデータ転送制御装置に関し、特に中央演算処理装置に対する割り込み処理を軽減させるための技術に関する。
【０００２】
【従来の技術】
一般に、メモリを搭載するシステムでは、中央演算処理装置（ＣＰＵ；Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｎｇ  Ｕｎｉｔ）の負荷を軽減するため、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラを備え、ＣＰＵ通信デバイスやストレージデバイスなどの機能をサポートするための周辺モジュール自身がＤＭＡリクエストをＤＭＡコントローラに出力し、転送元のアドレスと転送先のアドレスとの間でＤＭＡ方式によるデータ転送を行っている（特許文献１参照）。このようなシステムでは、大容量の主メモリから周辺モジュールへのデータ転送の効率化を図るために、周辺モジュールがデータ転送用のバッファメモリとして小容量のファーストイン・ファーストアウト（ＦＩＦＯ）を備えている場合が多く、この場合、主メモリに記憶された大規模なデータを周辺モジュール内のバッファメモリに受け渡す際、バッファメモリの容量に合わせて、データを複数回に分けてデータ転送している。
【０００３】
以下、図５に示すフローに沿って、上述の周辺モジュールに内蔵されたバッファメモリにシステムのメモリ内のデータを転送する場合の手順を説明する。予め、システムの使用者は、中央演算処理装置が実行すべきプログラム内にＤＭＡ転送リクエストに関する命令を予め組み込んでおく。中央演算処理装置は、プログラムを実行する過程でユーザによるＤＭＡ転送リクエストを検出する（ステップＳ２１）。ＤＭＡリクエストを検出すると、中央演算処理装置は転送先となる周辺モジュール内のバッファメモリの記憶容量に基づき、１回のＤＭＡリクエストに対する転送回数を、ＤＭＡコントローラに内蔵された転送回数レジスタに設定する（ステップＳ２２）。また、中央演算処理装置は、転送すべき全データ量に基づく転送回数を記憶する。さらに、データ転送を行う際のアドレスの指定方法を表す値をＤＭＡコントロールレジスタに設定する（ステップＳ２３）。
【０００４】
次に、ＤＭＡ転送が終了したか否かを判断し（ステップＳ２４）、ＤＭＡ転送が終了していない場合には（ステップＳ２４；ＮＯ）、周辺モジュールからのＤＭＡリクエストが有るか否かの判断を行う（ステップＳ２５）。なお、ステップＳ２５〜Ｓ２７は、ＤＭＡコントローラ側で行われるステップである。ここで、ＤＭＡリクエストがある場合（ステップＳ２５；ＹＥＳ）、ＤＭＡ転送を開始し（ステップＳ２６）、１回目のＤＭＡ転送が終了すると、割り込み信号を中央演算処理装置に出力する（ステップＳ２７）。この割り込みを受けた中央演算装置では、割り込みを受ける都度、プログラムに従って所定の割り込み処理を実行する。なお、ステップＳ２４も割り込み処理の中の一つである。その後、処理を上述のステップＳ２４に戻し、主メモリ内の転送対象の全データに対するＤＭＡ転送が終了するまで同様の処理を繰り返し実行する。
【０００５】
【特許文献１】
特開平５−２７６２２１号公報
【０００６】
【発明が解決しようとする課題】
しかし、上述の従来のデータ転送方式によれば、ＤＭＡ転送の過程で、中央演算処理装置に対する割り込みが頻繁に発生し、この割り込みを受ける中央演算処理装置側のオーバヘッドが過大になるという問題がある。即ち、通常、ファーストイン・ファーストアウト等が用いられるデータ転送用のバッファメモリの記憶容量は数十バイトと小さいため、ＤＭＡコントローラがＤＭＡリクエストを受けてから中央演算処理装置に割り込みを発生するまでのＤＭＡ転送によるデータ転送量は数十バイトに留まる。一般に、ＯＳを搭載したマイコンの場合、１回の割り込みで数マイクロ秒のオーバヘッドが発生することが知られているが、１回のＤＭＡ転送によるデータ転送量が転送先のバッファメモリの記憶容量以下に制約されるため、バッファメモリの記憶容量が小さい程、中央演算処理装置に対する割り込みが頻繁に発生することになる。
【０００７】
この発明は、上記事情に鑑みてなされたもので、周辺モジュールに内蔵されたバッファメモリにデータ転送する際に、このバッファメモリの記憶容量に制約されることなく、中央演算処理装置に対する割り込みの発生回数を低減させることを可能とするデータ転送制御装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
上記課題を解決するため、この発明は以下の構成を有する。即ち、この発明に係るデータ転送制御装置は、任意の記憶容量を有する第１のメモリと、周辺モジュールに内蔵されたデータ転送用のバッファメモリとして機能する所定の記憶容量を有する第２のメモリとの間のデータ転送を制御するためのデータ転送制御装置において、前記データ転送の回数を示す値であって前記第２のメモリの記憶容量に応じた値が設定される第１のレジスタと、前記データ転送の回数を示す値であって前記第１のメモリに記憶されたデータ量に応じた値が設定される第２のレジスタと、前記第１のレジスタの値に基づき、前記第２のメモリの書き込み動作を制御しながら所定ビット幅のデータの転送を制御すると共に、前記第２のレジスタの値に基づき、前記第１のメモリに記憶されたデータを管理する中央演算処理装置に対し割り込み信号を出力する制御部と、を備える。上記データ転送制御装置において、例えば、前記制御部が、前記データ転送の回数と前記第２のレジスタに設定された値とが一致した場合に前記割り込み信号を出力することを特徴とし、また、例えば、前記第２のレジスタのサイズが、前記第１のメモリの記憶容量に応じて設定されたことを特徴とし、さらに、前記第１のメモリと前記第２のメモリとの間のデータ転送がＤＭＡ転送であることを特徴とする。
【０００９】
この発明に係るデータ転送制御方法は、任意の記憶容量を有する第１のメモリと、周辺モジュールに内蔵されたデータ転送用のバッファメモリとして機能する所定の記憶容量を有する第２のメモリとの間のデータ転送を制御するためのデータ転送制御方法において、前記データ転送の回数を示す値であって前記第２のメモリの記憶容量に応じた値を第１のレジスタに設定するステップと、前記データ転送の回数を示す値であって前記第１のメモリに記憶されたデータ量に応じた値を第２のレジスタに設定するステップと、前記第１のレジスタの値に基づき、前記第２のメモリの書き込み動作を制御しながら前記所定ビット幅のデータの転送を制御すると共に、前記第２のレジスタの値に基づき、前記第１のメモリに記憶されたデータを管理する中央演算処理装置に対し割り込み信号を出力するステップと、を含む。
【００１０】
【発明の実施の形態】
以下、図面を参照して、この発明の一実施形態を説明する。
図１に、この実施形態に係るデータ転送制御装置が適用されたシステムの構成を示す。このシステムは、例えば電子楽器のように、複数チャネルのデータを処理するためのもので、同図において、１００は中央演算処理装置（ＣＰＵ）、２００はバスアービタ機能を有するバスデコーダ、３００は本発明のデータ転送制御装置に係るＤＭＡコントローラ、４００は外部のＣＰＵ通信デバイスやストレージデバイスなどの機能をサポートするための周辺モジュール、４１０はデータ転送用のバッファとして機能するファーストイン・ファーストアウト（ＦＩＦＯ）、５００は任意の容量を有する主メモリである。ここで、ファーストイン・ファーストアウト４１０は、周辺モジュール４００に内蔵されたデータ転送用のバッファメモリとして機能するものであり、この実施形態では３２バイトの記憶容量を有するものとする。
【００１１】
図２に、ＤＭＡコントローラ３００の構成例を示す。このＤＭＡコントローラ３００は、同図に示すように、バスインタフェース３０１、転送サイズレジスタ３０２、転送回数レジスタ３０３，３０４、転送元アドレスレジスタ３０５、転送先アドレスレジスタ３０６、ＤＭＡコントロールレジスタ３０７、割り込みステータスレジスタ３０８、割り込みイネーブルレジスタ３０９、リードライト制御部３１０、転送回数制御部３１１、アドレス制御部３１２、起動制御部３１３、割り込み制御部３１４から構成される。バスインタフェース３０１には、上述の各レジスタが接続されると共に、中央演算処理装置１００から、各レジスタの値を設定するための制御信号として、リードライト制御信号ＲＷ、アドレス信号ＡＤ、データ信号ＤＡが入力される。
【００１２】
転送サイズレジスタ３０２にはリードライト制御部３１０が接続され、転送回数レジスタ３０３，３０４には転送回数制御部３１１が接続され、転送元アドレスレジスタ３０５と転送先アドレスレジスタ３０６とＤＭＡコントロールレジスタ３０７にはアドレス制御部３１２が接続され、割り込みステータスレジスタ３０８および割り込みイネーブルレジスタ３０９には割り込み制御部３１４が接続される。また、リードライト制御部３１０およびアドレス制御部３１２には起動制御部３１３が接続され、転送回数制御部３１１には割り込み制御部３１４が接続される。ここで、各制御部が入出力する信号、即ちリードライト制御信号ＳＲＷ、ＤＭＡリクエスト信号ＲＥＱ、ＤＭＡアクノリッジ信号ＡＣＫ、アドレス信号ＡＤＤは、ＤＭＡコントローラ３００の制御対象となる周辺モジュール４００やメモリ５００等を制御するための信号であり、割り込み信号ＩＮＴは中央演算処理装置１００に割り込みをかけるための信号である。
【００１３】
以下、図３に示すフローに沿って、図１に示すシステムの動作について、主メモリ５００に記憶された１０２４バイトのデータを周辺モジュール４００にＤＭＡ転送する場合を例に説明する。
システムの使用者は、中央演算処理装置１００が実行すべきプログラムの中に、主メモリ５００をデータ転送元とし周辺モジュール４００内のファーストイン・ファーストアウト４１０をデータ転送先とするＤＭＡ転送リクエストに関する命令を予め組み込んでおく。このプログラムデータは例えば転送対象のデータと共に主メモリ５００に格納される。中央演算処理装置１００は、主メモリ５００からプログラムデータを読み出して実行し、その過程でＤＭＡ転送リクエストを検出する（ステップＳ２１）。
【００１４】
続いて、中央演算処理装置１００は、ＤＭＡ転送リクエストを検出すると、転送回数レジスタやＤＭＡコントロールレジスタ等の各種レジスタの値を設定する（ステップＳ１２，Ｓ１３）。具体的には、転送サイズレジスタ３０２に、主メモリ５００から周辺モジュール４００に出力されるデータのビット幅を設定する。このビット幅は、このシステムの設計段階で定められたシステム特有の所定のビット幅であり、ここでは、３２ビット（ロングワード）を表す値を設定するものとする。転送回数レジスタ３０３には、主メモリ５００から出力される所定ビット幅（３２ビット幅）のデータの転送回数を示す値を設定する。この転送回数は、ファーストイン・ファーストアウト４１０の記憶容量に応じて設定されるものであり、ファーストイン・ファーストアウト４１０の記憶容量を満たすのに必要とされる上記所定ビット幅（３２ビット）のデータの転送回数である。この例では、ファーストイン・ファーストアウト４１０の記憶容量を３２バイト（＝３２ビット×８）としているので、転送回数として８回（＝３２バイト／３２ビット）を示す値が転送回数レジスタ３０３に設定される。
【００１５】
もう一つの転送回数レジスタ３０４には、同じく上記所定ビット幅（３２ビット幅）のデータの転送回数を示す値であって、主メモリ５００に記憶された転送対象のデータ量に応じた値を設定する。この例では、主メモリ５００に記憶された転送対象のデータ量を１０２４バイトとしているので、２５６回（＝１０２４バイト／３２ビット）を表す値が転送回数レジスタ３０４に設定される。転送元アドレスレジスタ３０５には、データ転送元である主メモリ５００に記憶された転送対象のデータの先頭アドレスが設定され、転送先アドレスレジスタ３０６には、データ転送先であるファーストイン・ファーストアウト４１０に割り付けられた固定アドレスが設定される。
【００１６】
ＤＭＡコントロールレジスタ３０７には、転送先アドレスの指定方式を示す値が設定される。ここではファーストイン・ファーストアウト４１０に割り付けられた固定アドレスを指定するものとする。ただし、このアドレスの指定方式を示す値は、周辺モジュール４００のアドレス仕様に応じて適切に選択すればよく、例えば転送先がＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）から構成されている場合には、記憶領域を指定するためのアドレスを順次的にインクリメントして指定する方式を表す値をＤＭＡコントロールレジスタ３０７に設定すればよい。割り込みステータスレジスタ３０８および割り込みイネーブルレジスタ３０９は、割り込み信号ＩＮＴの出力を許可するための条件を設定するためのものである。このうち、割り込みステータスレジスタ３０８には、中央演算処理装置１００により指定される値が設定され、割り込みイネーブルレジスタ３０９には、処理対象のチャネルを選択するための値が設定される。
【００１７】
続いて、上述の中央演算処理装置１００による各種レジスタの設定が終了すると、ＤＭＡコントローラ３００側でＤＭＡ転送を行うための動作を開始する。即ち、ＤＭＡコントローラ内の転送回数制御部３１１は、ＤＭＡ転送の回数が転送回数レジスタ３０４に設定された値（２５６回）に達したか否かを判断する（ステップＳ１４）。このＤＭＡ転送の回数が転送回数レジスタ３０４に設定された値（２５６回）に達していない場合（ステップＳ１４；ＮＯ）、起動制御部３１３がＤＭＡリクエストを受け付けたか否かを判断し（ステップＳ１５）、ＤＭＡリクエストをまだ受け付けていない場合（ステップＳ１５；ＮＯ）にはその状態で待機する。
【００１８】
ここで、起動制御部３１３が最初のＤＭＡリクエストを受け付けると（ステップＳ１５；ＹＥＳ）、アドレス制御部３１２が、ＤＭＡコントロールレジスタ３０７に設定された値が表すアドレス方式に従ってアドレス信号ＡＤＤを周辺モジュール４００に出力し、転送回数レジスタ３０３に設定された値（８回）が表す回数だけ主メモリ５００からファーストイン・ファーストアウト４１０にＤＭＡ転送を行う（ステップＳ１６）。図４を参照して具体的に説明すると、この場合、ステップＳ１６では、主メモリ５００に記憶された転送対象の１０２４バイトのデータのうち、最初の３２バイトのデータＤ１を８回に分けて、３２ビット（所定ビット幅のデータ）ずつ周辺モジュール４００内の３２ビット構成のデータレジスタ４１１を介してファーストイン・ファーストアウト４０１に転送する。これにより、ファーストイン・ファーストアウト４１０が３２バイトのデータＤ１で埋まる。このデータＤ１は、その後、ファーストイン・ファーストアウト４１０から外部に読み出される。
【００１９】
上述のステップＳ１６の後、処理を上述のステップＳ１４に戻し、同様に転送回数制御部３１１により転送回数レジスタ３０４に設定された回数（２５６回）のＤＭＡ転送が終了したか否かを判断する。この段階では上述のステップＳ１６でのＤＭＡによる転送回数の累計は８回であるから、転送回数は転送回数レジスタ３０４に設定された値に到達していない。そして、新たなＤＭＡリクエストを受けたか否かが判断され（ステップＳ１５）、ＤＭＡリクエストが有れば、次の３２バイトのデータＤ２を転送回数レジスタ３０３に設定された回数（８回）に分けて同様にＤＭＡ転送する。ファーストイン・ファーストアウト４１０に転送されたデータＤ２が外部に読み出される。この段階で、ステップＳ１６でのＤＭＡ転送回数の累計は１６回となるが、転送回数レジスタ３０４に設定された値（２５６回）にはまだ到達しない。
【００２０】
上述のステップＳ１４〜Ｓ１６によるＤＭＡ転送を繰り返し実行し、後続のデータＤ２〜Ｄ３２の各データを同様にＤＭＡ転送する。その結果、ステップＳ１６での転送回数の累計が転送回数レジスタ３０４に設定された値（２５６回）に到達すると（ステップＳ１４；ＹＥＳ）、割り込み制御部３１４が、割り込みステータスレジスタ３０８および割り込みイネーブルレジスタ３０９の値を参照し、これらの値が割り込みを許容するものである場合に中央演算処理装置１００に対し割り込み信号ＩＮＴを出力し（ステップＳ１７）、一連のＤＭＡ転送動作を終了する。
【００２１】
以上、この発明の一実施形態を説明したが、この発明は、この実施の形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等があっても本発明に含まれる。例えば、上述の実施の形態では、ステップＳ１６において、８回に分けてデータをＤＭＡ転送するものとしたが、転送すべきデータ量によっては、例えば最後のデータＤ３２のデータ量が８回を要しない場合もある。この場合には、転送すべきデータがなくなった時点で転送を取りやめて、次のステップＳ１４に処理を戻せばよい。また、ステップＳ１４では転送回数が２５６回に到達したか否かを判断するものとしたが、この転送回数の値は転送すべきデータ量に応じて適切に設定すればよい。さらに、ステップＳ１６では各データを８回に分けてＤＭＡ転送するものとしたが、この転送回数の値は、ファーストイン・ファーストアウト４１０の記憶容量に応じて適切に設定すればよい。
【００２２】
【発明の効果】
以上説明したように、この発明によれば、転送先のメモリの記憶容量に応じた値を第１のレジスタに設定し、転送元のメモリに記憶されたデータ量に応じた値を第２のレジスタに設定し、第１のレジスタの値に基づき転送先のメモリの書き込み動作を制御しながらデータ転送を制御すると共に、第２のレジスタの値に基づき中央演算処理装置に対し割り込み信号を出力するようにしたので、周辺モジュールに内蔵されたバッファメモリにデータ転送する際に、このバッファメモリの記憶容量に制約されることなく、中央演算処理装置に対する割り込みの発生回数を低減させることが可能となる。
【図面の簡単な説明】
【図１】この発明の実施形態に係るデータ転送制御装置が適用されたシステムの構成を示すブロック図である。
【図２】この発明の実施形態に係るデータ転送制御装置であるＤＭＡコントローラの構成を示すブロック図である。
【図３】この発明の実施形態に係るシステムの動作の流れを示すフローチャートである。
【図４】この発明の実施形態に係るシステムのＤＭＡ転送によるデータ転送を説明するための図である。
【図５】従来技術に係るデータ転送の流れを説明するためのフローチャートである。
【符号の説明】
１００；中央演算処理装置、２００；バスデコーダ、３００；ＤＭＡコントローラ、３０１；バスインタフェース、３０２；転送サイズレジスタ、３０３；転送回数レジスタ、３０４；転送回数レジスタ、３０５；転送元アドレスレジスタ、３０６；転送先アドレスレジスタ、３０７；ＤＭＡコントローラ、３０８；割り込みステータスレジスタ、３０９；割り込みイネーブルレジスタ、３１０；リードライト制御部、３１１；転送回数制御部、３１２；アドレス制御部、３１３；起動制御部、３１４；割り込み制御部、４００；周辺モジュール、４１０；ファーストイン・ファーストアウト、５００；主メモリ。
【図１】
2004227501.tif 000003
【図２】
2004227501.tif 000004
【図３】
2004227501.tif 000005
【図４】
2004227501.tif 000006
【図５】
2004227501.tif 000007