(57)【要約】【課題】転送元デバイスへのアクセス方法と転送先デバイスへのアクセス方法とをそれぞれ独立に制御できないと、バス帯域の利用が制限されてしまい、また転送元もしくは転送先のデバイスのデータ転送特性を引き出せない。【解決手段】入出力デバイス１４（１４−１／１４−２）側に例えば１６バイトのデータバッファ３１を、ＤＭＡコントローラ１２（１２−１／１２−２）に例えば１６バイトのデータバッファ３２をそれぞれ実装してなるＤＭＡ装置において、転送元デバイス（本例では、入出力デバイス１４）のデータサイズと転送先デバイス（本例では、メインメモリ１３）のデータサイズとをそれぞれ独立に制御可能とすることで、転送元デバイスと転送先デバイスとに対してそれぞれ異なったメモリアクセス制御を適用してバス帯域を有効に利用する。【選択図】　　　　図３
2004145593.tif 000002
【特許請求の範囲】
【請求項１】
バスを共有するデバイス相互間でのデータの転送を、ＣＰＵを介さずに制御するダイレクトメモリアクセス装置であって、
ダイレクトメモリアクセス（ＤＭＡ）の対象となる転送元デバイスのデータサイズと転送先デバイスのデータサイズとを独立に制御可能なＤＭＡコントローラ
を備えたことを特徴とするダイレクトメモリアクセス装置。
【請求項２】
前記ＤＭＡコントローラは、前記転送元デバイスおよび前記転送先デバイスのそれぞれの特性に合わせたデータの転送タイプを設定する
ことを特徴とする請求項１に記載のダイレクトメモリアクセス装置。
【請求項３】
前記転送タイプがバースト転送である
ことを特徴とする請求項２記載のダイレクトメモリアクセス装置。
【請求項４】
前記ＤＭＡコントローラは、バス幅が狭いデバイスに対してバースト転送を複数回に分割して実行する
ことを特徴とする請求項３に記載のダイレクトメモリアクセス装置。
【請求項５】
前記ＤＭＡコントローラは、設定した転送タイプによって総データ転送数に対して転送の終わりにデータの余りが生じた場合は、その余り転送数を自動的に判断して最小データサイズの転送に切り替える
ことを特徴とする請求項２に記載のダイレクトメモリアクセス装置。
【請求項６】
前記設定した転送タイプが、複数回に分割されて実行されるバースト転送である
ことを特徴とする請求項５に記載のダイレクトメモリアクセス装置。
【請求項７】
バスを共有するメモリと特定の転送ブロックサイズを持つ周辺デバイスとの間でのデータの転送を、ＣＰＵを介さずに制御するＤＭＡコントローラを備えたダイレクトメモリアクセス装置であって、
前記ＤＭＡコントローラは、前記転送ブロックサイズのデータを保存する記憶手段と、前記転送元デバイスと前記転送先デバイスとの間でのデータの転送量を数える計数手段とを有し、前記転送ブロックサイズで繰り返しデータ転送を行う際のハンドシェイク操作を行う
ことを特徴とするダイレクトメモリアクセス装置。
【請求項８】
前記ＤＭＡコントローラは、ＤＭＡ転送の際のＣＰＵからの一連の設定を再現する機能を備え、ＣＰＵから再設定の指示が与えられるだけで前記一連の設定を再現する
ことを特徴とする請求項７に記載のダイレクトメモリアクセス装置。
【請求項９】
複数のバスインターフェイスを持つＣＰＵを含む複数のバスマスタと、
前記複数のバスマスタが共通に接続された共有バスとを備え、
前記複数のバスマスタの各々からバス転送要求に基づいてデフォルトバスマスタを決めるバスアービトレーション制御装置であって、
前記複数のバスマスタの全てからバス転送要求がない期間では前記ＣＰＵの前記複数のバスインターフェイスの中で最も最近にバス転送を行ったバスインターフェイスをデフォルトバスマスタに決定する
ことを特徴とするバスアービトレーション制御装置。
【請求項１０】
前記複数のバスマスタの各々からのバス転送要求によって優先順位を決めバス転送許可を前記複数のバスマスタの各々に対して出力する制御回路と、
前記複数のバスインターフェイスに対する前記バス転送許可の値からこれらバスインターフェイスの中の何れがバス転送を行うかを判断するバス転送判断回路と、
前記バス転送判断回路の判断結果を次に何れかのバス転送が起こるまで記憶保持する記憶回路とを有し、
前記複数のバスマスタの全てからバス転送要求がない期間では前記記憶回路に記憶保持されている判断結果に対応する前記バス転送許可をアクティブにする
ことを特徴とする請求項９に記載のバスアービトレーション制御装置。
【請求項１１】
バスを共有するデバイス相互間でのデータの転送を、ＣＰＵを介さずに制御するダイレクトメモリアクセス装置の制御方法であって、
ダイレクトメモリアクセス（ＤＭＡ）の対象となる転送元デバイスのデータサイズと転送先デバイスのデータサイズとを独立に制御する
ことを特徴とするダイレクトメモリアクセス装置の制御方法。
【請求項１２】
前記転送元デバイスおよび前記転送先デバイスのそれぞれの特性に合わせたデータの転送タイプを設定する
ことを特徴とする請求項１１に記載のダイレクトメモリアクセス装置の制御方法。
【請求項１３】
バスを共有するメモリと特定の転送ブロックサイズを持つ周辺デバイスとの間でのデータの転送を、ＣＰＵを介さずに制御するＤＭＡコントローラを備えたダイレクトメモリアクセス装置の制御方法であって、
前記転送ブロックサイズで繰り返しデータ転送を行う際のハンドシェイク操作を前記ＤＭＡコントローラによって行う
ことを特徴とするダイレクトメモリアクセス装置の制御方法。
【請求項１４】
複数のバスインターフェイスを持つＣＰＵを含む複数のバスマスタと、
前記複数のバスマスタが共通に接続された共有バスとを備え、
前記複数のバスマスタの各々からバス転送要求に基づいてデフォルトバスマスタを決めるバスアービトレーション制御装置の制御方法であって、
前記複数のバスマスタの全てからバス転送要求がない期間では前記ＣＰＵの前記複数のバスインターフェイスの中で最も最近にバス転送を行ったバスインターフェイスをデフォルトバスマスタに決定する
ことを特徴とするバスアービトレーション制御装置の制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、バスを共有するデバイス相互間でのデータの転送を、ＣＰＵを介さずに制御するダイレクトメモリアクセス（ＤＭＡ）装置および複数のバスマスタの各々からバス転送要求に基づいてデフォルトバスマスタを決めるバスアービトレーション制御装置、ならびにそれらの制御方法に関する。
【０００２】
【従来の技術】
組み込みシステム（コンピュータシステム）では、大量のデータを入出力装置との間で転送する場合に、ＣＰＵ（プロセッサ）の負荷を軽減するためや、必要とされるデータ転送速度を保証するためにＤＭＡ（ダイレクトメモリアクセス）が用いられる。このＤＭＡの制御を司るコントローラ（以下、ＤＭＡコントローラと記す）は、入出力装置と主記憶装置（メインメモリ）との間や１次メモリと２次メモリとの間のデータ転送において、ＣＰＵとは独立に、即ちＣＰＵを介さずに直接データのやり取り（受け渡し）を行うことによってＣＰＵの負荷の軽減を図っている。
【０００３】
ＤＭＡは、ハードディスク装置などバンド幅の大きな入出力装置との間で大きなデータ転送数を転送処理ために用いられている。このほかにも組み込みシステムにおいては、そのリアルタイム性を確保するためにＤＭＡを利用することができる。近年はＬＳＩの高機能化に伴い、システム内でのＣＰＵの負荷が高まっているのに加えて、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ　Ｓｅｒｉａｌ　Ｂｕｓ）など転送速度の速い入出力装置に対応するため、また従来から搭載されているＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ　Ａｓｙｎｃｈｒｏｎｏｕｓ　Ｒｅｃｅｉｖｅｒ／Ｔｒａｎｓｍｉｔｔｅｒ）デバイスなども高速化されているため、それら入出力装置とのデータ転送にはＤＭＡコントローラが使われている。
【０００４】
組み込みシステムには、複数のＤＭＡコントローラが実装されている場合がほとんどである。そして、それぞれのＤＭＡコントローラが独立にデータ転送を行う。また、組み込みシステムの場合は、そのリアルタイム性を確保するために、それぞれのＤＭＡコントローラ（バスマスタ）がデータバスを占有する時間を極力短くすることが必要とされる。
【０００５】
従来、ＤＭＡコントローラでは、転送元デバイスへのアクセス方法と転送先デバイスへのアクセス方法とをそれぞれ独立に制御できない方式が採用されていた（例えば、特許文献１）。このようなＤＭＡコントローラでは、１回のバスアクセスで転送可能なデータサイズ（バス幅）が転送元もしくは転送先デバイスのデータサイズ（バス幅）に設定され、また転送方式もそのデバイスの特性に合わせて設定されていた。
【０００６】
【特許文献１】
特許第３２０６０１号明細書
【０００７】
【発明が解決しようとする課題】
しかしながら、転送元デバイスへのアクセス方法と転送先デバイスへのアクセス方法とをそれぞれ独立に制御できない方式を採る従来のＤＭＡコントローラでは、バス帯域の利用が制限されてしまうことや、転送元もしくは転送先のデバイスのデータ転送特性を引き出せないなどの理由により、十分なデータ転送速度を保証できない場合がある。
【０００８】
また、転送先もしくは転送元のデバイスによって転送バス幅（データサイズ）が限定されてしまうことにより、ＤＭＡコントローラにおけるデータ転送（バスアクセス）の回数も増加する。この結果、システム内のバスを占有する時間が増大し、高速入出力装置からのデータ転送要求に対する応答性を十分に確保できなかったり、あるいはＣＰＵもしくは他のＤＭＡデバイスにおけるリアルタイム性にも影響を与えてしまうことになる。
【０００９】
本発明は、上記課題に鑑みてなされたものであり、その目的とするところは、十分なデータ転送速度を保証できるとともに、システムバスの占有時間の削減を可能としたダイレクトメモリアクセス装置および複数のバスマスタの各々からバス転送要求に基づいてデフォルトバスマスタを決めるバスアービトレーション制御装置、ならびにそれらの制御方法を提供することにある。
【００１０】
【課題を解決するための手段】
上記目的を達成するために、本願の第１発明では、バスを共有するデバイス相互間でのデータの転送を、ＣＰＵを介さずに制御するダイレクトメモリアクセス装置において、ダイレクトメモリアクセス（ＤＭＡ）の対象となる転送元デバイスのデータサイズと転送先デバイスのデータサイズとを独立に制御可能なデータ転送方式を採用することを特徴としている。
【００１１】
このデータ転送方式を採ることにより、転送元デバイスと転送先デバイスとに対してそれぞれ異なったメモリアクセス制御を適用してバス帯域を有効に利用することができるため、一つのＤＭＡコントローラがバスを占有する時間を大幅に減少させることができる。その結果、他のバスマスタがバス認可される機会が増加する。これはシステムバス全体の効率が向上したことを意味する。
【００１２】
本願の第２発明では、バスを共有するメモリと特定の転送ブロックサイズを持つ周辺デバイスとの間でのデータの転送を、ＣＰＵを介さずに制御するＤＭＡコントローラを備えたダイレクトメモリアクセス装置において、上記転送ブロックサイズで繰り返しデータ転送を行う際のハンドシェイク操作をＤＭＡコントローラによって行うことを特徴としている。
【００１３】
ブロックサイズＤＭＡ転送において、ＣＰＵの割り込みに相当するハンドシェイク操作をＤＭＡコントローラ側で行うことで、ＤＭＡ転送を行う際のＣＰＵの負荷を軽減できるため、アプリケーションを動作させる際にシステム全体の高速化を図ることができ、またＣＰＵは他の処理に専念できることになる。
【００１４】
本願の第３発明では、複数のバスインターフェイスを持つＣＰＵを含む複数のバスマスタと、これら複数のバスマスタが共通に接続された共有バスとを備え、複数のバスマスタの各々からバス転送要求に基づいてデフォルトバスマスタを決める複数のバスマスタの各々からバス転送要求に基づいてデフォルトバスマスタを決めるバスアービトレーション制御装置において、複数のバスマスタの全てからバス転送要求がない期間ではＣＰＵの複数のバスインターフェイスの中で最も最近にバス転送を行ったバスインターフェイスをデフォルトバスマスタに決定することを特徴としている。
【００１５】
ＣＰＵが決められた期間になるべく多くの仕事をこなすことを考慮し、全てのバスマスタからのバス転送要求がない期間、即ちアイドル状態の期間では、ＣＰＵのバスインターフェイスの中で最も最近にバス転送を行ったバスインターフェイスをデフォルトバスマスタに決定することで、即座にバス転送を開始できるため、アービトレーションによるハンドオーバーサイクルが発生しない。
【００１６】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。図１は、本発明が適用される組み込みシステム（コンピュータシステム）の構成例を示すブロック図である。
【００１７】
図１から明らかなように、本構成例に係る組み込みシステムは、１つのＣＰＵ（マイクロプロセッサ）１１、複数個（例えば、２個）のＤＭＡコントローラ１２Ａ，１２Ｂ、オンチップのメインメモリ１３、ＤＭＡコントローラ１２−１，１２−２に対応した２つの入出力（Ｉ／Ｏ）デバイス１４−１，１４−２および外部バスインターフェイス（Ｉ／Ｆ）１５がシステムバス１６を介して相互に接続されてなる回路ブロック１０と、この回路ブロック１０のチップ外において外部バス２１を介して外部バスインターフェイス１５に接続されたＤＲＡＭ２１およびフラッシュ（ＦＬＡＳＨ）メモリ２２を有する構成となっている。
【００１８】
上記構成の組み込みシステムにおいて、システムバス１６の幅を例えば３２ビットする。このシステムバス１６に対して入出力デバイス１４−１，１４−２は８ビット幅で接続されている。ＣＰＵ１１はシステム全体の制御を司る。ＤＭＡコントローラ１２−１，１２−２は、入出力デバイス１４−１，１４−２とメインメモリ１２との間や、ＤＲＡＭ２２とフラッシュメモリ２３との間のデータ転送において、ＣＰＵ１１を介在させないことによって当該ＣＰＵ１１の負荷を軽減する働きをする。
【００１９】
通常、ＤＭＡコントローラ１２−１，１２−２は、ＣＰＵ１１など他のバスマスタとシステムバス１６を共有する。そのシステムバス１６の占有権は、バスアービタ（バスアービトレーション制御装置）１７によって決定される。このバスアービタ１７の具体的な機能については後で詳細に説明する。入出力デバイス１４−１，１４−２の各々からはＤＭＡコントローラ１２−１，１２−２の各々に対して独立にデータ転送要求のための制御信号Ｒｅｑが送られ、逆にＤＭＡコントローラ１２−１，１２−２の各々からは入出力デバイス１４−１，１４−２の各々に対して独立に制御信号Ｒｅｑに対する応答のための制御信号Ａｃｋが返される。
【００２０】
ＤＭＡコントローラ１２−１，１２−２は、ＣＰＵ１１または各入出力デバイス１４−１，１４−２からのデータ転送要求に対して、バスアービタ１７にバス占有権の問い合わせ（Ｒｅｑｕｅｓｔ）を行い、それが認可（Ｇｒａｎｔ）されることにより、システムバス１６を通じてデータ転送を行う。ＤＭＡコントローラ１２−１，１２−２によるデータ転送は、まず転送元デバイスからデータを受け取り（データリード）、この受け取ったデータを転送先デバイスへ送る（データライト）ことによって行われる。本構成例のように、転送元および転送先となるデバイスが同一のバス階層に存在する場合は、基本的に、ＤＭＡコントローラ１２−１，１２−２は、図２に示すように、データリードとデータライトを順番に行うことによってデータ転送を完了する。
【００２１】
なお、本構成例に係る組み込みシステムにおいては、２個の入出力デバイス１４−１，１４−２に対応して２個のＤＭＡコントローラ１２−１，１２−２を実装した例を挙げたが、これは一例に過ぎず、３個以上の入出力デバイスに対応して３個以上のＤＭＡコントローラを実装しても良いことは勿論である。近年、ＬＳＩの高機能化に伴い、１０個程度、あるいはそれ以上ＤＭＡコントローラを実装しているのが現状である。
【００２２】
このように、１０個程度、あるいはそれ以上ＤＭＡコントローラを実装した組み込みシステムを内蔵するシングルチップマイクロコンピュータ（ＬＳＩ）は、例えばＰＤＡ（Ｐｅｒｓｏｎａｌ　Ｄｉｇｉｔａｌ　Ａｓｓｉｓｔａｎｔｓ）に代表される携帯情報端末に搭載されて用いられる。携帯情報端末に搭載して用いた場合、複数のＤＭＡコントローラに対応した複数の入出力デバイスにはその周辺機器としてメモリスティックやＵＳＢなどが接続されることになる。
【００２３】
ところで、最近の入出力デバイスは、外部通信装置との間でのデータ転送速度を向上させるために、データバッファをデバイス内に実装している場合が多い。このような入出力デバイスとのデータ転送を効率的に行うためには、ＤＭＡコントローラ１２−１，１２−２は、それぞれの装置の特性を考慮したデータアクセスを行うことが重要である。そのため、ＤＭＡコントローラ１２−１，１２−２の各々は、必要なサイズのデータバッファを実装している。ＤＭＡコントローラ１２−１，１２−２に実装するデータバッファが大きいほどデータ転送速度を向上できる効果もある。また、データバッファのサイズを決定するときは領域に対するインパクトもあわせて考慮する必要がある。
【００２４】
本構成例に係る組み込みシステムでは、図３に示すように、入出力デバイス１４（１４−１／１４−２）側に例えば１６バイトのデータバッファ３１を、ＤＭＡコントローラ１２（１２−１／１２−２）に例えば１６バイトのデータバッファ３２をそれぞれ実装しているものとする。そして、ここでは、例えば入出力デバイス１４からメインメモリ１３へデータ転送を行うことを前提とする。なお、ＤＭＡコントローラ１２はデータバッファ３２の他に、転送コントロール回路３３およびバスＩ／Ｆ３４を内蔵している。
【００２５】
このシステム構成では、入出力デバイス１４として、例えばＵＡＲＴ（１６Ｃ５５０など）デバイスが用いられる。入出力デバイス１４は、適切なデータ転送要求をＤＭＡコントローラ１２に通知することにより、最大１６バイト単位のバースト転送に対応可能となる。ここに、バースト転送とは、バスサイクルの連続使用で、複数のバイトデータをまとめて転送することである。ＤＭＡコントローラ１２側にも同様に１６バイトのデータバッファ３２が実装されているため、データ転送の際に１６バイト単位でバースト転送を行うことができる。
【００２６】
ここで、入出力デバイス１４側のデータサイズが８ビット幅であるのに対してシステムバス１６のバス幅は３２ビットであることから、このデータ転送ではデータライト時にバス幅が十分活用されないことになる。また、従来のＤＭＡコントローラの場合には、転送元デバイスのデータサイズ（リードデータサイズ）と転送先デバイスのデータサイズ（ライトデータサイズ）とをそれぞれ独立に制御できない転送方式であるため、図４（Ａ）に示すように、システムバス上にデータリード、データライト合わせて３２回のデータ転送サイクルが発生することになる。
【００２７】
［第１実施形態］
これらの点に鑑みてなされたのが、以下に説明する本発明の第１実施形態に係るＤＭＡ装置である。
【００２８】
本実施形態に係るＤＭＡ装置においては、転送元デバイス（本例では、入出力デバイス１４）のデータサイズと、転送先デバイス（本例では、メインメモリ１３）のデータサイズとをそれぞれ独立に制御可能なデータ転送方式を採用するようにしたことを特徴としている。このデータ転送方式を採用することにより、転送元デバイスと転送先デバイスとに対してそれぞれ異なったメモリアクセス制御を適用してバス帯域を有効に利用することができるため、一つのＤＭＡコントローラがシステムバス１６を占有する時間を大幅に減少させることができる。
【００２９】
このデータ転送方式は、ＤＭＡコントローラ１２のバス制御情報を、転送元アクセスと転送先アクセスとに分割してソフトウエアで設定できるようにすることによって実現できる。一例として、転送元デバイスのデータサイズを８ビット、転送先デバイスへのデータ転送（ライトデータ）サイズを３２ビットに設定することにより、図４（Ｂ）に示すように、書き込み転送のために生じるシステムバス１６の占有時間を８ＤＭＡ転送サイクル分だけ削減できるため、データライト時のバスアクセスを大幅に減少させることができる（データの統合化）。
【００３０】
このように、転送元デバイスのデータサイズと転送先デバイスのデータサイズとを独立に制御できる転送方式を採用することにより、一つのＤＭＡコントローラがシステムバスを占有する時間が減少するため、他のバスマスタ（ＣＰＵ、ＤＭＡコントローラ等）がバス認可される機会が増加する。これはシステムバス全体の効率が向上したことを意味する。データサイズの設定は柔軟に行うことができ、転送元デバイスのデータサイズと転送先デバイスのデータサイズは、ＤＭＡコントローラ１２に実装するデータバッファ３２のサイズ（本例では、１６バイト）に収まる条件で設定が可能となる。
【００３１】
データ転送においては、データサイズだけではなくデータの転送タイプも考慮することによりその効率の向上を図ることができる。組み込みシステム内にはさまざまなバススレーブデバイスが接続されている。さらに、外部には外部バスインターフェイス１５を介してＤＲＡＭ２２やフラッシュメモリ２３などのメモリデバイスが接続されている。これらメモリデバイスの中にも、データ転送速度を確保するためにバースト転送を採用するものが多くある。
【００３２】
また、デバイス内部にもＤＲＡＭなどを実装し、一部データバス幅を広げるなどしてデータ転送レートの向上を図る場合がある。これらのデバイスに対してはそれぞれの特性に合わせた転送タイプのデータ転送、即ちバースト転送を適切に行うことによりデータ転送効率の向上を図ることが可能である。また、バス幅が狭いデバイスに対しても、図５に示すように、バースト転送を複数回に分割して実行することが可能な仕様としている。このようなバースト転送の分割についても、設定された転送データサイズの組み合わせによってＤＭＡコントローラ１２内部で自動的に処理を行うようにしている（データの分散化）。
【００３３】
このようなデータの分散化による転送方式を採用した場合は、総データ転送数（転送ブロックの総データサイズ）によっては転送タイプ、データサイズの組み合わせによって転送の終わり（転送ブロックの終わり）にデータの余り（端数）が生じることもある。そのような場合には、可能な限りは設定転送タイプでのデータ転送を継続し、最終的に余り（端数）のみ最小データサイズ（本例では、８ｂｉｔ）および最小転送タイプ（単一データ転送）に自動的に切り替えて最終データまでの転送を完了させるようにする。
【００３４】
具体的には、図６に示すように、データサイズ３２ｂｉｔ、４バースト転送、最終データブロック１５バイト（端数３バイト）の場合を例に挙げると、端数分の３バイトの転送は自動的にデータサイズ８ｂｉｔに切り替えて転送を完了させるようにする。このような端数分の処理に関してソフトウエアで特別な意識を必要としない設計となっている。
【００３５】
この他にも転送元と転送先で異なるバイト配列（エンディアン）が用いられている場合でも、転送元および転送先にバイト配列の情報を付加して制御を行うことにより対応が可能である。
【００３６】
上述したように、第１実施形態に係るＤＭＡ装置では、組み込みシステムの限られたバス帯域を有効に利用して、ＤＭＡによるデータ転送の効率を高めるために、従来のデータ転送の方式を見直し、転送元データ転送（データリード）と転送先データ転送（データライト）との制御において、転送データサイズおよび転送タイプを独立に設定可能とし、転送元デバイスと転送先デバイスとにそれぞれ異なったメモリアクセス制御を適用することにより、同一システム内でバス幅の異なる入出力デバイス間のデータ転送（例えば、ＵＡＲＴ−メインメモリなど）においてシステムバス１６の利用効率を高めることが可能になる。
【００３７】
これは即、ＤＭＡコントローラ１２によるデータ転送効率、即ちデータ転送速度の向上につながる。また、ＤＭＡコントローラ１２によるバス占有の要求回数が減少するため、システム内のバスアービタ１７によるバス調停の回数も減少する。このことはシステムバス１６の信号変化の抑制につながり、それに伴って消費電力の低減を図ることも可能になる。
【００３８】
多くのＤＭＡコントローラおよび他のバスマスタが実装されるシステムにおいては、一つのバスマスタが要求するシステムバスの占有時間は他のバスマスタの応答性にも影響を与えることになる。特に、組み込みシステムの場合はリアルタイム性が重要視されており、ＤＭＡコントローラなどによるシステムバスの占有時間の削減はそのシステム（ＣＰＵ）のリアルタイム性を悪化させないという効果もある。
【００３９】
また、総転送データ数と転送タイプの組み合わせによって転送の終わりに生じるデータの余り（端数）についても、最小データサイズ（本例では、８ｂｉｔ）および最小転送タイプに自動的に切り替えて最終データまでの転送を完了することにより、データの余り（端数）に対してソフトウエアによる特別な注意は不要となるため、ＣＰＵ１１の負荷の削減にもつながる。
【００４０】
ところで、特定の転送ブロックサイズ（例えば、バッファメモリサイズやパケットサイズなど）を持つ周辺デバイス（ここでは、入出力デバイス１４−１，１４−２を例に挙げる）１４とメインメモリ１３との間でＤＭＡ転送を行う際、周辺デバイス１４の転送ブロックサイズに相当するデータの転送が完了する度に、ＤＭＡコントローラ１２は停止する。このとき、ＣＰＵ１１に対して割り込みが発生し、ＣＰＵ１１はこの割り込みを受け、適切な対処を行って再びＤＭＡ転送を開始する指示を出すなど、ＣＰＵ１１側のソフトウエア処理によるハンドシェイクが必要である。
【００４１】
具体的には、図７に示すように、周辺デバイス１４からの転送要求信号に応じてＣＰＵ１１に転送終了の割り込みが発生し、この割り込みを受けてＣＰＵ１１は、ＤＭＡコントローラ１２に対してＤＭＡ転送の再開処理、即ち転送開始指示を送る。このように、ＣＰＵ１１は割り込みルーチンにてＤＭＡコントローラ１２の転送再開処理を行うことにより、全データの転送に時間がかかるばかりでなく、ＣＰＵ１１が実行する他の処理を圧迫し、結果として、アプリケーション全体の速度低下を招くことになる。
【００４２】
また、ブロックサイズ転送を繰り返し、所望のデータ量の転送が完了した後、再び前回設定したメインメモリ１３の転送元先頭アドレスから、同様のＤＭＡ転送を行いたい場合がある。この場合、ＤＭＡコントローラ１２に対して、ＣＰＵ１１からアドレスなどの条件を再設定する必要である。
【００４３】
［第２実施形態］
これらの点に鑑みてなされたのが、以下に説明する本発明の第２実施形態に係るＤＭＡ装置である。
【００４４】
図８は、本実施形態に係るＤＭＡ装置のシステムの構成例を示すブロック図であり、図中、図１と同等部分には同一符号を付して示している。ここでは、図１の入出力デバイス１４−１，１４−２を周辺デバイス１４として示している。
【００４５】
図８において、ＤＭＡコントローラ１２は、データの転送量を数える計数手段である例えばカウンタ４１、周辺デバイス１４の転送ブロックサイズのデータを保存する記憶手段（領域）である例えばレジスタ４２、ソースアドレスポインタ４３およびデスティネーションアドレスポインタ４４を内蔵している。そして、本実施形態に係るＤＭＡ装置では、周辺デバイス１４からの転送要求信号をＤＭＡコントローラ１２に対して直接与える構成を採っている。
【００４６】
次に、上記構成の第２実施形態に係るＤＭＡ装置におけるデータ転送（ＤＭＡ転送）について説明する。
【００４７】
（周辺デバイスとのハンドシェイク）
まず、ＣＰＵ１１からＤＭＡコントローラ１２に対して、周辺デバイス１４の転送ブロックサイズを通知する。すると、ＤＭＡコントローラ１２は、通知された転送ブロックサイズをレジスタ４２などの記憶装置に保存する。なお、この周辺デバイス１４の転送ブロックサイズについては、固定値としてＤＭＡコントローラ１２があらかじめ知っておく、即ちレジスタ４２などの記憶装置にその値をあらかじめ格納しておくようにしても良い。
【００４８】
ＣＰＵ１１から転送開始指示があると、これを受けてＤＭＡコントローラ１２は、システムバス１６などのデータ経路を通して、周辺デバイス１４とメインメモリ１３との間でデータの転送を開始する。そして、データ転送の期間では、ＤＭＡコントローラ１２は、カウンタ４１で転送データ数をカウントし、そのカウントした転送データ数をレジスタ４２の格納値、即ち転送ブロックサイズと比較する。そして、比較結果が一致、即ち周辺デバイス１４の転送ブロックサイズ分のデータの転送が完了したことを知ると、ＤＭＡコントローラ１２は自動的に転送を一旦中止し、周辺デバイス１４からの転送要求を待つ。
【００４９】
周辺デバイス１４側で再び転送可能な状態になると、周辺デバイス１４はＤＭＡコントローラ１２に対して転送要求信号を出す。これを受けてＤＭＡコントローラ１２は、カウンタ４１をクリアしてデータの転送を再開する。この動作を繰り返すことで、ＤＭＡコントローラ１２はＣＰＵ１１を介在させることなく、すべてのデータの転送を完了することができる。
【００５０】
（アドレスのループ）
図９は、メインメモリ１３から周辺デバイス１４へデータ転送を行う場合における転送アドレスポインタ内容の変化の一例を示す図である。この例では、メインメモリ１３から周辺デバイス１４へのデータ転送であるので、図８のＤＭＡコントローラ１２において、メインメモリ１３の転送アドレスがソースアドレスポインタ４３で、周辺デバイス１４の転送アドレスがデスティネーションアドレスポインタ４４でそれぞれ管理されることになる。
【００５１】
ここでは、周辺デバイス１４の転送サイズを０ｘ１００としている。メインメモリ１３側の転送アドレスポインタ、即ちソースアドレスポインタ４３は０ｘ１０００から始まって０ｘ１０ｆｆまで進み、周辺デバイス１４の転送アドレスポインタ、即ちデスティネーションアドレスポインタ４４は０ｘ８０００から０ｘ８０ｆｆまで進み、このメモリ領域のデータが順次、ＤＭＡコントローラ１２によってメインメモリ１３から読み出され、周辺デバイス１４に書き込まれる。
【００５２】
転送ブロックサイズ分（０ｘ１００）のデータの転送が終わると、メインメモリ１３側のソースアドレスポインタ４３は０ｘ１１００であるが、周辺デバイス１４側は再び０ｘ８０００から使用するため、周辺デバイス１４側のデスティネーションアドレスポインタ４４を０ｘ８０００に戻す。転送量が周辺デバイス１４の転送ブロックサイズに達すると、ＤＭＡコントローラ１２はデータの転送を一時停止し、周辺デバイス１４が再び転送可能になったことをＤＭＡコントローラ１２に通知するための転送要求信号を、ＤＭＡコントローラ１２が周辺デバイス１４から受け取るまで待機する。
【００５３】
転送要求信号を受け取ったら、ＤＭＡコントローラ１２において、メインメモリ１３側のソースアドレスポインタ４３は０ｘ１１００から、周辺デバイス１４側のデスティネーションアドレスポインタ４４は０ｘ８０００からデータの転送を再開する。つまり、メインメモリ１３側はソースアドレスポインタ４３を連続して増加させるが、周辺デバイス１４側はデスティネーションアドレスポインタ４４をループさせる。以降、アプリケーションが要求する全てのデータの転送が完了するまで、上述した一連の処理を繰り返す。
【００５４】
このように、ＤＭＡコントローラ１２は、周辺デバイス１４側の転送アドレスポインタ、即ちデスティネーションアドレスポインタ４４を転送サイズ（本例では、０ｘ８０００〜０ｘ８０ｆｆ）でループさせるとともに、ブロックサイズの転送が完了する度に自動的に転送再開を待機することにより、ＣＰＵ１１を介在させることなくすべてのデータの転送を完了することができる。
【００５５】
図１０は、周辺デバイス１４からメインメモリ１３へデータ転送を行う場合における転送アドレスポインタ内容の変化の一例を示す図である。この場合も基本的に、メインメモリ１３から周辺デバイス１４へデータ転送を行う場合（図９を参照）における動作と同様の動作となる。
【００５６】
なお、周辺デバイス１４の仕様によっては、ＤＭＡコントローラ１２が読み書きするアドレスは固定であり、１つのアドレスに対して転送ブロックサイズ分のデータを読み書きすることで、上記の例と同様のデータ転送を行うことができる場合もある。この場合には、周辺デバイス１４側の転送アドレスポインタはループではなく固定で構わない。
【００５７】
（リロード機能）
上述した一連のブロックサイズ転送を繰り返し、所望のデータ量の転送が完了した後、再び先に設定したメインメモリ１３の転送元先頭アドレスから、同様のＤＭＡ転送を行いたい場合がある。そこで、本実施形態に係るＤＭＡ装置では、ＤＭＡ転送の際のＣＰＵ１１からの一連の設定を再現するリロード機能をＤＭＡコントローラ１２に対して持たせた構成を採っている。
【００５８】
このように、ＤＭＡコントローラ１２にリロード機能を持たせることにより、ＣＰＵ１１からＤＭＡコントローラ１２に対して単純な再設定の指示を与えるだけで、前回設定した設定値を復元することができるため、ＣＰＵ１１の負荷を軽減できる。このリロード機能については、ＤＭＡコントローラ１２において、特定のアドレスにマッピングされたレジスタを設け、当該レジスタの特定のビットをＣＰＵ１１から操作するなどの方法によって実現できる。ＣＰＵ１１からの明示的な指示でリロードされるため、リロードするか否かはＣＰＵ１１のユーザプログラムにより動的に決定可能である。
【００５９】
上述したように、第２実施形態に係るＤＭＡ装置では、周辺デバイス１４が特定の転送ブロックサイズ（例えば、バッファメモリサイズやパケットサイズ）を持ち、その転送ブロックサイズで繰り返してデータ転送を行う際に、ＣＰＵ１１によるハンドシェイク操作を、周辺デバイス１４の転送ブロックサイズを保存するための記憶領域（レジスタ４２）と、転送量を数えるカウンタ４１とを持つＤＭＡコントローラ１２側で行うことで、従来ＣＰＵ１１が行っていたソフトウエア処理を、ＤＭＡコントローラ１２によってハードウェアにて自動的に処理できる。これにより、ＤＭＡ転送を行う際のＣＰＵ１１の負荷を軽減できるため、アプリケーションを動作させる際にシステム全体の高速化を図ることができる。
【００６０】
図１１は、従来のＤＭＡコントローラを備えたＤＭＡ装置と、本実施形態によるブロックＤＭＡ転送機能を有するＤＭＡコントローラを備えたＤＭＡ装置について、一定の量のデータを転送するのに要する時間（ＤＭＡ転送の速度）の比較結果を示す模式図である。
【００６１】
従来のＤＭＡ転送では、周辺デバイス１４からの転送要求信号に応じてＣＰＵ１１に割り込みが発生し、この割り込みによってＣＰＵ１１は割り込みルーチンにてＤＭＡコントローラ１２の転送再開処理を行うため、全データの転送に時間がかかるばかりでなく、ＣＰＵ１１が実行する他の処理を圧迫し、結果として、アプリケーション全体の速度低下を招くことになっていた。これに対して、ブロックサイズＤＭＡ転送では、ＣＰＵ１１の割り込みに相当する処理をＤＭＡコントローラ１２側でハードウェアにて処理するため、ブロックサイズ単位のオーバーヘッドもなく、ＣＰＵ１１も他の処理に専念できることになる。
【００６２】
また、アプリケーションの動作中に、ＣＰＵ１１が一連の設定を行うモジュール（本例では、ＤＭＡコントローラ１２）に対して、ＣＰＵ１１から繰り返して同様の設定を行う必要がある場合、例えば動作中に設定値が変化する場合、二度目以降は一度目と同様に設定を再現する機能、即ちリロード機能を当該モジュール側が備えることで、ＣＰＵ１１による再設定の手順を省き、ＣＰＵ１１からは単純な指示を当該モジュールへ与えるだけで済むため、ＣＰＵ１１の負荷を軽減できる。例えば、データ転送の完了後に、ＤＭＡコントローラ１２に対してアドレスなどの再設定が必要な場合においても、ＤＭＡコントローラ１２がリロード機能を持つことで、簡単な操作で設定を復元でき、または復元せずにその時点のアドレス値から継続してデータを転送することも可能である。
【００６３】
ここまでは、ＤＭＡ装置について２つの実施形態を例に挙げて説明してきた。以下では、共有バスであるシステムバス１６に対する複数のバスマスタ（ＣＰＵ１１やＤＭＡコントローラ１２−１，１２−２など）のアービトレーションを行うバスアービタ（バスアービトレーション制御装置）１７について説明する。
【００６４】
アービトレーション方法として、各バスマスタに優先順位を付け、バス転送を要求しているバスマスタの中で最も優先順位の高いバスマスタにバス使用権（バス占有権）を与える方法がある。また、どのバスマスタからもバス使用要求がないとき（アイドル状態のとき）は、決められた１つのデフォルトバスマスタにバス使用権を与えるようにしている。
【００６５】
デフォルトバスマスタを選択する際には、最もバス転送要求をするであろうバスマスタをデフォルトバスマスタに選択するのが有利である。その理由は、共有バスがアイドル状態であるときにバスマスタがバス転送要求をした際に、そのバスマスタがデフォルトバスマスタであればバスアービタ１７におけるオーバーヘッドが低減され、結果的にバス効率が増すからである。
【００６６】
デフォルトバスマスタの決定方法としては、
▲１▼共有バスがアイドル状態になる直前にバス転送を行ったバスマスタをデフォルトバスマスタにする方法（例えば、特開平５−２５０３１１号公報参照）
▲２▼共有バス上で過去数回のバス転送のうち最も多くのバス転送を行ったバスマスタをデフォルトバスマスタにする方法（例えば、特開２０００−３５４４３号公報参照）
などがある。
【００６７】
しかしながら、決定方法▲１▼では、アイドル状態直前にバス転送を行ったバスマスタがバス転送要求頻度の低いバスマスタである場合、次にバス転送要求頻度の高い別のバスマスタが転送要求を行う可能性が高い。また、決定方法▲２▼では、ＣＰＵ１１、ＤＭＡコントローラ１２−１，１２−２など、すべてのバスマスタを対象として過去の数回の転送履歴を記憶しておき、その転送履歴を基に判断することになるので、多くのバスマスタを含む組み込みシステムにおいては論理の複雑化が予想される。
【００６８】
［第３実施形態］
これらの点に鑑みてなされたのが、以下に説明する本発明の第３実施形態に係るバスアービトレーションアーキテクチャである。
【００６９】
図１２は、本実施形態に係るバスアービトレーションアーキテクチャが適用されるＤＭＡ装置のシステムの構成例を示すブロック図であり、図中、図１と同等部分には同一符号を付して示している。ここでは、複数のバスマスタとして、ＣＰＵ（マイクロプロセッサ）１１および２つのＤＭＡコントローラ１２−１，１２−２を例に挙げ、ＤＭＡコントローラ１２−１，１２−２についてはバスマスタ１２−１，１２−２として示している。
【００７０】
図１２に示すように、ＣＰＵ１１はバスマスタとなる複数のバスインターフェイス、例えば２つのバスインターフェイス１１１，１１２を持っている。したがって、本構成例に係る組み込みシステムにおいては、２つのバスインターフェイス１１１，１１２と、その他のバスマスタ、例えば２つのＤＭＡコントローラ１２−１，１２−２との合計４つのバスマスタが１つのシステムバス１６を共有することになる。
【００７１】
バスアービタ１７は、システムバス（共有バス）１６でのデータ衝突が起こらないように、バス転送を行うバスマスタが常に１つであるように制御（バスアービトレーション）を行う。すなわち、バスマスタの各々がバスアービタ１７に対してバス転送要求ＲＥＱを出し、これを受けてバスアービタ１７が各バスマスタに対してバス転送許可ＧＲＮＴを与える、というアービトレーションハンドオーバーがバスインターフェイス１１１，１１２およびバスマスタ１２−１，１２−２の各々とバスアービタ１７との間で起こる。
【００７２】
図１３は、バスアービタ１７の具体的な構成例を示すブロック図である。図１３から明らかなように、本構成例に係るバスアービタ１７は、バスマスタの各々から入力されるバス転送要求ＲＥＱ＃１〜＃４によって優先順位を決め、バス転送許可ＧＲＮＴ＃１〜＃４を出力するラウンドロビン制御回路１７１と、バス転送許可ＧＲＮＴ＃１，＃２に基づいてデフォルトバスマスタを決定するプリグラント制御回路１７２とを有する構成となっている。
【００７３】
上記構成のバスアービタ１７において、バスマスタの各々からラウンドロビン制御回路１７１にバス転送要求ＲＥＱ＃１〜＃４が入力され、当該バス転送要求ＲＥＱ＃１〜＃４によってラウンドロビン制御回路１７１で優先順位が決められると、その優先順位により適応するバス転送許可ＧＲＮＴ＃１〜＃４がアクティブとなる。このとき、バス転送許可ＧＲＮＴ＃１〜＃４のうち、ＣＰＵ１１のバスインターフェイス１１１，１１２のバス転送許可ＧＲＡＮＴ＃１，＃２の値のみをプリグラント制御回路１７２に入力する。
【００７４】
ここで、バス転送許可ＧＲＮＴ＃１〜＃４のうち、バス転送許可ＧＲＡＮＴ＃１，＃２の値のみをプリグラント制御回路１７２に入力するということは、ＣＰＵ１１のバスインターフェイス１１１，１１２を他のバスマスタに優先してデフォルトバスマスタとして決定することを意味する。これは、ＣＰＵ１１が決められた期間になるべく多くの仕事をこなすことを考えた上でのことである。バス転送許可ＧＲＡＮＴ＃１，＃２がプリグラント制御回路１７２に入力されると、当該プリグラント制御回路１７２では、バス転送許可ＧＲＡＮＴ＃１，＃２の値から、バスインターフェイス１１１とバスインターフェイス１１２のどちらがデフォルトバスマスタとなるか決定される。
【００７５】
図１４は、プリグラント制御回路１７２の具体的な構成例を示すブロック図である。図１４から明らかなように、本構成例に係るプリグラント制御回路１７２は、バス転送許可ＧＲＡＮＴ＃１，＃２の値からバスインターフェイス１１１，１１２のどちらがバス転送を行うかを判断するバス転送判断回路１７１１と、このバス転送判断回路１７１１の判断結果を次にどちらかのバス転送が起こるまで記憶保持する記憶回路１７２２とを有する構成となっている。
【００７６】
上記構成のプリグラント制御回路１７２において、バス転送判断回路１７１１は、ラウンドロビン制御回路１７１で決められた優先順位に対応したバス転送許可ＧＲＮＴ＃１，＃２の値から、バスインターフェイス１１１とバスインターフェイス１１２のどちらでバス転送を行うかを判断する。この判断結果は、次にバスインターフェイス１１１，１１２のどちらかのバス転送が起こるまで記憶回路１７２２に記憶される。その結果、記憶回路１７２２に記憶保持されている判断結果に対応するバスマスタが最も最近にバス転送を行ったバスマスタとなる。
【００７７】
ここで、ＣＰＵ１１のバスインターフェイス１１１，１１２の中で最も最近にバス転送を行ったものをデフォルトバスマスタに決定するのは、最も最近にバス転送を行った方がまたバス転送要求を行うであろうという予測の上にたってのことである。そして、記憶回路１７２２に記憶保持された判断結果は、デフォルトバスマスタ情報ＤＥＦとしてラウンドロビン制御回路１７１に供給される。すると、ラウンドロビン制御回路１７１は、バスインターフェイス１１１，１１２のうちのデフォルトバスマスタ情報ＤＥＦで指定されたバスマスタ、即ち最も最近にバス転送を行ったバスマスタをデフォルトバスマスタに決定する。
【００７８】
次のバス転送を要求するバスマスタがいなくアイドル状態の期間、即ち全てのバスマスタからのバス転送要求がない期間では、記憶回路１７２２に記憶保持されている判断結果（デフォルトバスマスタ情報ＤＥＦ）に対応するバス転送許可ＧＲＮＴがアクティブとなる。その後、最初にバス転送を要求するバスマスタがデフォルトバスマスタである場合、バス転送許可ＧＲＮＴがアクティブであるため即座にバス転送を開始でき、アービトレーションによるハンドオーバーサイクルは発生しない。
【００７９】
上述したように、第３実施形態に係るバスアービタ１７においては、ＣＰＵ１１が決められた期間になるべく多くの仕事をこなすことを考慮し、全てのバスマスタからのバス転送要求がない期間では、ＣＰＵ１１のバスインターフェイス１１１，１１２の中で最も最近にバス転送を行ったバスインターフェイスをデフォルトバスマスタに決定することにより、即座にバス転送を開始できるため、アービトレーションによるハンドオーバーサイクルが発生せず、ＣＰＵ１１のバス転送要求時のバスハンドオーバーサイクルを低減できる。
【００８０】
また、ＣＰＵ１１がバスマスタとなるバスインターフェイスを複数個（本例では、２つ）持っている場合のデフォルトバスマスタ決定アーキテクチャによって次バスマスタを予測することにより、即座にバス転送を開始できるため、アービトレーションによるハンドオーバーサイクルが発生せず、ＣＰＵ１１のバス転送時のバスハンドオーバーサイクルを低減できる。
【００８１】
【発明の効果】
以上説明したように、本発明によれば、ＤＭＡの対象となる転送元デバイスのデータサイズと転送先デバイスのデータサイズとを独立に制御可能なデータ転送方式を採用することにより、転送元デバイスと転送先デバイスとに対してそれぞれ異なったメモリアクセス制御を適用してバス帯域を有効に利用することができるため、十分なデータ転送速度を保証できるとともに、システムバスの占有時間を削減できる。
【００８２】
また、ブロックサイズＤＭＡ転送において、ＣＰＵの割り込みに相当するハンドシェイク操作をＤＭＡコントローラ側で行うことで、ＤＭＡ転送を行う際のＣＰＵの負荷を軽減できるため、アプリケーションを動作させる際にシステム全体の高速化を図ることができる。さらに、全てのバスマスタからのバス転送要求がない期間では、ＣＰＵのバスインターフェイスの中で最も最近にバス転送を行ったバスインターフェイスをデフォルトバスマスタに決定することにより、即座にバス転送を開始できるため、ＣＰＵのバス転送要求時のバスハンドオーバーサイクルを低減できる。
【図面の簡単な説明】
【図１】本発明が適用される組み込みシステム（コンピュータシステム）の構成例を示すブロック図である。
【図２】ＤＭＡコントローラの基本転送のサイクルを示す図である。
【図３】本発明の第１実施形態に係るＤＭＡ装置における要部の構成例を示すブロック図である。
【図４】データリードサイクルおよびデータライトサイクルを示す図であり、（Ａ）は転送元データサイズと転送先データサイズとを独立に制御できない転送方式の場合を、（Ｂ）は独立に制御できる転送方式の場合をそれぞれ示している。
【図５】データの分散化による転送方式の概念図である。
【図６】データ端数の自動処理の概念図である。
【図７】一般的なＤＭＡ転送のシステムの構成例を示すブロック図である。
【図８】本発明の第２実施形態に係るＤＭＡ装置のシステムの構成例を示すブロック図である。
【図９】メインメモリから周辺デバイスへデータ転送を行う場合における転送アドレスポインタ内容の変化の一例を示す図である。
【図１０】周辺デバイスからメインメモリへデータ転送を行う場合における転送アドレスポインタ内容の変化の一例を示す図である。
【図１１】従来のＤＭＡ転送とブロックＤＭＡ転送とによって一定の量のデータを転送するのに要する時間の比較結果を示す模式図である。
【図１２】本発明の第３実施形態に係るバスアービトレーションアーキテクチャが適用されるＤＭＡ装置のシステムの構成例を示すブロック図である。
【図１３】バスアービタの具体的な構成例を示すブロック図である。
【図１４】プリグラント制御回路の具体的な構成例を示すブロック図である。
【符号の説明】
１１…ＣＰＵ、１２，１２−１，１２−２…ＤＭＡコントローラ、１３…メインメモリ、１４，１４−１，１４−２…入出力デバイス（周辺デバイス）、１６…システムバス（共有バス）、１７…バスアービタ（バスアービトレーション制御装置）
【図１】
2004145593.tif 000003
【図２】
2004145593.tif 000004
【図３】
2004145593.tif 000005
【図４】
2004145593.tif 000006
【図５】
2004145593.tif 000007
【図６】
2004145593.tif 000008
【図７】
2004145593.tif 000009
【図８】
2004145593.tif 000010
【図９】
2004145593.tif 000011
【図１０】
2004145593.tif 000012
【図１１】
2004145593.tif 000013
【図１２】
2004145593.tif 000014
【図１３】
2004145593.tif 000015
【図１４】
2004145593.tif 000016