(57)【特許請求の範囲】
【請求項１】
少なくとも１つのバス・デバイスが、ソース・ワード・サイズを有するデータを供給することのできるデータ供給デバイスであり、少なくとも１つのバス・デバイスが、ターゲット・ワード・サイズを有するデータを受信することのできるデータ受信デバイスであり、かつ少なくとも１つのバス・デバイスがデータ転送をリクエスト及び制御することのできるマスタ・デバイスである、複数のバス・デバイスと、
前記複数のバス・デバイスの各々に接続され、マスタ・デバイスの制御のもとでデータ供給デバイスからデータ受信デバイスへとデータを転送することのできるデータ・バスと、
マスタ・デバイスとして前記データ・バスに接続される直接メモリ・アクセス・ユニットであって、前記ソース・ワード・サイズをストアするソース・ワード・サイズ・レジスタと、前記ターゲット・ワード・サイズをストアするターゲット・ワード・サイズ・レジスタと、ソース開始アドレスをストアするソース開始アドレス・レジスタと、ソース増加サイズをストアするソース増加サイズ・レジスタと、ターゲット開始アドレスをストアするターゲット開始アドレス・レジスタと、ターゲット増加サイズをストアするターゲット増加サイズ・レジスタとを含む、前記直接メモリ・アクセス・ユニットと、
を具備し、
前記直接メモリ・アクセス・ユニットは、前記ソース開始アドレスで、そしてその後、前記ソース増加サイズだけ異なる連続するアドレスで始まる、第１データ供給デバイスから前記ソース・ワード・サイズでデータを読み取り、前記ターゲット開始アドレスで、そしてその後、前記ターゲット増加サイズだけ異なる連続するアドレスで始まる、第１データ受信デバイスに前記ターゲット・ワード・サイズで前記読み取ったデータを供給することによって、第１データ供給デバイスから第１データ受信デバイスへと前記データ・バスを介してデータを転送することができる、
データ転送システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明の技術分野は、コンピュータ・システム内のデータ転送およびデータ・バス・システムである。
【０００２】
【発明の背景】
コンピュータ・システムがより複雑になるにつれ、チップ内およびそのチップから外部デバイスへと、またはそれと反対にデータを転送するのに、多重プロセッサおよび多様な周辺デバイスを使用することが一般に行われてきている。便宜上および性能上の理由から、そのようなシステムは、ほとんどいつも、同様のデバイス間の通信を分離する多重セットのバスを有する。多重バス・システムは、別々のバスの間でのコヒーレントな衝突のない通信を可能とするためのバス・コントローラを備えなければならない。この目的でマイクロコントローラが用いられ、所定の時間にどのデバイスが問題のバスの制御を行うのかを決定する、バス・アービトレーションを提供する。
【０００３】
高性能マイクロコントローラのデザインのために、卓越した標準バス・システムが現れている。「アドバンスト・マイクロコントローラ・バス・アーキテクチャ・システム（Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ−ｃｏｎｔｒｏｌｌｅｒ  ＢｕｓＡｒｃｈｉｔｅｃｔｕｒｅ  Ｓｙｓｔｅｍ）」ＡＭＢＡが、アドバンストＲＩＳＣマシンズ（ＡＲＭ）株式会社（英国ケンブリッジ）により定義され、また１９９８年４月１４日付けの米国特許５，７４０，４６１に記述されている。ＣＩＳＣ変種のコンピュータ・システムは、複合命令セット・コンピュータであり、全バージョンに渡ってトータルで逆方向の互換性の要求を有する。ＲＩＳＣ（縮小命令セット・コンピュータ）システムは、対照的に単純命令セットを有して、オペレーションの効率を最大化するよう設計されている。複合オペレーションは、ＲＩＳＣマシンにおいても同様に達成されるが、それらは、単純命令の組み合わせを用いて達成される。ＡＭＢＡアーキテクチャを構成するＡＲＭ株式会社のＲＩＳＣマシンが、ここで主に記載される。
【０００４】
標準ＡＭＢＡは、２つのメイン・バス、すなわち高性能ＡＨＢバスとより控えめな性能の周辺バスＡＰＢを有する。ＡＨＢバスは、メイン・メモリ・バスであって、ＲＡＭと外部メモリ・コントローラとを含む。この基礎的なシステムの定義において、大量のデータを転送する高性能周辺が要求されるならば、この周辺もまた高性能ＡＨＢバス上に配置される。しかしながら、これは、システムの性能を低減し、というのも、中央処理ユニット（ＣＰＵ）は、周辺がバスを制御するとき、メモリにアクセスすることができないからである。
【０００５】
アドバンストＲＩＳＣマシンズ株式会社（ＡＲＭ）は、効率のよいアービトレーションの構成を提案し、ＣＰＵおよび高性能周辺が、単一のＡＨＢバスのバス時間を共有することができるよう転送を分割している。ＡＲＭはまた、分離のためにおよび単一のアービタを用いて、第２バスを用いることを提案している。この提案はまた、唯一のトランザクションのみが所定時間で進行することができるものとしている。
【０００６】
この発明のマイクロコントローラＤＭＡは、広範囲のアプリケーションに適応可能な汎用ＤＭＡである。その使用は、主に、１つのメモリ位置から別のところへとＣＰＵのオーバヘッドを最小にしてまたはそれなしにデータの高速転送を促進するものである。マイクロコントローラＤＭＡが、データを動かしている一方で、ＣＰＵがプログラム・メモリからの命令を実行し続けることも可能である。マイクロコントローラＤＭＡが、単純に動くデータのＣＰＵを蘇らせるので、これは、高性能システムを可能とする。
【０００７】
一般にＤＭＡは、周辺データ・レジスタ（またはバッファ）からシステム・レベルのＲＡＭへとデータを動かすのに用いられる。それはまた、ＲＡＭにストアされるデータを周辺に転送する。システムＲＡＭはまた、周辺データを表す変数を保有するので、マイクロコントローラＤＭＡが、一旦データを周辺からＲＡＭへと動かしたならば、ＣＰＵは、更新されたデータを得るために周辺にアクセスする必要はない。これは、２つの方法で性能を向上させ、すなわち、
１．ＣＰＵは、ローディングを、そして、データのストアをする必要がない。
ＲＡＭからの単一のローディングのみで十分である。
２．システムＲＡＭにアクセスする方が周辺データ・レジスタよりもサイクル効率がよい。ＡＭＢＡシステムにおいては、データＲＡＭの位置するＡＨＢバスは、一般に待機ゼロのパイプラインの通ったバスである。ほとんどの周辺が位置するＡＰＢバスは、一般に少なくとも２つの待機状態を必要とする。ＤＭＡコントローラは、双方の待機状態のＣＰＵをＡＰＢバスへと、そしてＣＰＵストアオペレーションにリリーフ（ｒｅｌｉｅｖｅ）する。
【０００８】
いくつかのバス標準においては、ある構成要素は（ＡＭＢＡのＡＰＢ構成要素について３２ビットのように）定義された固定アドレス長を有し、一方、別の部分は、（ＡＭＢＡ支援多重バス・サイズのＡＨＢ構成要素のような）多重アドレス長を可能とする。しかしながら、レジスタの実際のワード・サイズは、固定アドレス長よりも（３２ビットについて定義されるバスにおける８ビットまたは１６ビット・レジスタのように）小さなものであり、レジスタのワード・サイズだけ単純に増加させることは、アドレス長がより大きなサイズに固定されるので、結果として正しくないアドレスになってしまう。ＤＭＡコントローラは、ＡＨＢバスにおけるような可変アドレス長と、ＡＰＢバスにおけるような固定アドレス長の双方をサポートする必要がある。
【０００９】
【発明の概略】
この発明においては、以下のものを含む多くのユニークな特徴をサポートするハードウェアを含むマイクロコントローラＤＭＡが記述される。
１．より大きなワード・サイズのソース・アドレスの単一読み取りとその一方でのターゲット・アドレスへのサブワード・サイズの多重書き込みを可能とすること。
２．４セットの制御ビットが提供される。２セットは、ソース・ワード・サイズおよびソース増加サイズを含む、ソース・アドレスのためである。２セットは、ターゲット・ワード・サイズおよびターゲット増加サイズを含むターゲット・アドレスのためである。
３．完全バイトを、一度に、隣のより低いバイト位置に移行させるバイト・シフタ／レジスタが、（１６ビットまたは３２ビット・サイズのワードのような）より大きなワードの（８ビットまたは１６ビットのような）より小さなワード・サイズを有する宛先への転送を可能とする。
【００１０】
上記の特徴により、プログラマが、ソースの実際のワード・サイズと宛先の場所の双方を設定することが可能となり、かつプログラマが、増加するサイズを設定することもまた可能となる。ＡＰＢバスのような固定バス・システムにおいて、この値は固定サイズに設定することができる。可変ワード・サイズのシステムでは、これは、現在の周辺がサポートするものならなんにでも設定することができる。ソースおよび宛先アドレスの双方について、まったく別々のソフトウェア・プログラム可能ワード・サイズおよび増加サイズが提供される。アドレス増加サイズは、転送のワード・サイズに依存しない。
【００１１】
ユーザは、マイクロコントローラＤＭＡがどのようにデータを取り扱い、またアドレスがどのように増大されるかについて完全な制御を行う。実際の作業は全て、尚もハードウェアで行われ、更なるソフトウェアのオーバヘッドは必要とされない。しかしながら、ここで、同じマイクロコントローラＤＭＡを用いて、ＡＨＢおよびＡＰＢを有するＡＭＢＡのような異なるバス標準を備えたシステムにおいて、例えば、転送のサイズを固定したり、ワード・サイズを翻訳するのにＣＰＵに過度に負担をかけたりするといったことによって、効率を妥協したり周辺またはバス効率を制限したりすることなく、データを転送することができる。
【００１２】
【発明の実施の形態】
この発明の多重トランザクション・アドバンスト高性能バス・システム（ＭＴＡＨＢ）は、アドバンストＲＩＳＣマシンズ株式会社（ＡＲＭ）のマイクロコントローラ・バス・アーキテクチャ（ＡＭＢＡ）への改良型として用いられる。ＡＭＢＡマシンは、ＡＲＭプロセッサという名前で特定されるＲＩＳＣプロセッサを用いる。アドバンストＲＩＳＣマシンズ株式会社（英国ケンブリッジ）は、このクラスのマシンが完全に記載されている１９９８年４月１４日付けの米国特許５，７４０，４６１を取得している。この発明で用いられている技術は、以下に示されるとおり、より広い適用性のものであり、多重バス・アーキテクチャを有する様々な多重プロセッサ・システムで用いることができる。
【００１３】
図１は、ＡＭＢＡ標準を例示する。ＡＭＢＡは、２つのメイン・バス、すなわち、アドバンスト高性能バス（ＡＨＢ）１００と、より控えめな性能のアドバンスト周辺バス（ＡＰＢ）１２０とを有する。ＡＨＢバス１００は、メイン・メモリ・バスであって、ランダム・アクセス・メモリ（ＲＡＭ）１０７、リード・オンリ・メモリ（ＲＯＭ）１０８および外部メモリ・インタフェース（ＥＭＩ）コントローラ１０２へのＣＰＵアドバンスト高性能メモリ・バス・インタフェース１０６を介してＣＰＵ１００に結合する。図１は更に、やはりＡＨＢバス１００に結合される第２マスタ・デバイス直接メモリ・アクセス（ＤＭＡ）ユニット１０３を例示する。２つのマスタＣＰＵ１０１およびＤＭＡ１０３間のバス・アクセスのためのアービトレーションは、Ｍバス・アービタ１１０において生じる。Ｍバス・アービタ１１０は、Ｍバス・デコーダ１１１および選択ライン１１２を介して様々なスレーブ・デバイスへのアクセスを制御する。この基本的なシステムの定義において、大量のデータを転送する高性能周辺が要求されるならば、この周辺もまた高性能ＡＨＢバス１００上に配置される。図１は、そのような高性能周辺デバイス１３０を例示する。この高性能周辺デバイス１３０をＡＨＢバス１１０に配置することは、システムの性能を低減し、というのも、ＣＰＵ１０１およびＤＭＡ１０３は、高性能周辺デバイス１３０がＡＨＢバス１００の制御を行うとき、メモリにアクセスすることができないからである。ＡＲＭは、有効なアービトレーションの構成を提案し、ＣＰＵ１０１、ＤＭＡ１０３および高性能周辺１３０が、単一のＡＨＢバス１００のバス時間を共有することができるように、転送を分割している。
【００１４】
ＡＲＭはまた、分離のための、および単一アービタを用いる第２バスの使用を提案している。図１に示されるとおり、この第２バスはアドバンスト周辺バス（ＡＰＢ）１２０と呼ばれている。ＡＰＢバス１２０は、ＡＨＢバス１００と同じように作動する。ＡＰＢバス１２０は、ＡＨＢからＡＰＢへのバス・ブリッジ１０９を介してＡＨＢバス１００に接続される。ＡＨＢからＡＰＢへのバス・ブリッジ１０９は、ＡＨＢバス１００へのスレーブである。単一のＭバス・アービタ１１０を備える２バス・システムは、利用性が限られており、というのも、それは、１つのトランザクションだけが所定の時間で進行するのを可能とするからである。メモリおよび高性能周辺デバイス１３０を含む、全ての高性能デバイスが、ＡＨＢバス１００上にあることに注意されたい。ＵＡＲＴ１１５、タイマ１１６、キーパッド１１７ならびに周辺１２１乃至１２３を含む全ての控えめな性能の周辺デバイスは、周辺バス１２０上に備わる。
【００１５】
図２は、ＡＨＢバスの制御をリクエストするマスタと、アービトレーションの決定を行うアービタとこの標準ＡＭＢＡシステムにおいて実行されるコマンドについてマスタによって選択されるスレーブとの間の信号フローを例示する。ＡＨＢバスト（ｂｕｓｔ）アービタ１１１、ＡＨＢマスタ２００およびＡＨＢスレーブ２１０は各々、リセット信号ＨＲｅｓｅｔｘ２２２およびクロック信号ＨＣｌｏｃｋｘ２２３を受信する。ＡＨＢマスタ２００は、ＨＢｕｓＲｅｑｘ信号２３１を活性化することによって、ＡＨＢアービタ１１０のリクエストを行う。ＡＨＢマスタ２００は、ＨＧｒａｎｔｘ信号２３２によるＡＨＢアービタ１１０からの許可を受信する。ＡＨＢマスタ２００は、認可を確認して、ＨＬｏｃｋ信号２３３によるこのアービトレーションの決定をロックする。そして、ＡＨＢマスタ２００は、アドレス２０５をＡＨＢデコーダ１１１に送る。ＡＨＢデコーダ１１１は、選択されたスレーブ・デバイスに供給される選択信号１１２を活性化する。この例において、選択されたスレーブ・デバイスは、ＡＨＢスレーブ２１０である。ＡＨＢマスタ２００と、ＡＨＢスレーブ２１０の相互作用は、制御信号２１３を介して完結され、ＨＲｅｓｐ信号２１１とＨＲｅａｄｙ信号２１２を介して認識される。読み取りおよび書き込みオペレーションのためのデータは、全てのマスタと全てのスレーブとの間でＡＨＢバス１００を介して流れる。ＡＨＢスレーブ２１０は、ＨＲＤａｔａ［３１：０］バス２０６を介してＡＨＢバス１００にデータを供給し、ＨＷＤａｔａ［３１：０］バス２０７を介してＡＨＢバス１００からデータを受信する。同様に、ＡＨＢマスタ２００は、ＨＲＤａｔａ［３１：０］バス２０８を介してＡＨＢバス１００からデータを受信し、ＨＷＤａｔａ［３１：０］バス２０９を介してＡＨＢバス１００にデータを供給する。これに関して、読み取りおよび書き込みは、ＡＨＢマスタ２００の観点から考えられているということに注意すること。こうして、データ読み取りにおいて、データは、ＡＨＢスレーブ２１０からＨＲＤａｔａ［３１：０］バス２０６を介してＡＨＢバス１００に流れ、またＡＨＢバス１００からＨＲＤａｔａ［３１：０］バス２０８を介して流れる。もちろん、所定の時間に１つのマスタのみが活性化され、このマスタが１つのスレーブのみを選択し、その上でそれは転送（読み取りまたは書き込み）コマンドを実行する。
【００１６】
周辺からデータＲＡＭへのデータの転送と関連するオーバヘッドの中央処理ユニット（ＣＰＵ）をリリーフすることによって、直接メモリ・アクセス・ユニット（ＤＭＡ）は、システムの性能を向上することができる。これは、ＣＰＵのオーバヘッドを２つの方法で低減する。第１に、最も明らかなものとして、ＣＰＵは、データの動き（通常、ロード−ストアアーキテクチャにおいて１つのメモリ位置からの「ＬＯＡＤ」および別の位置への「ＳＴＯＲＥ」）と関連するコードを走らせる必要がないので、ＣＰＵは、そのメイン・タスクで自由に続けられるいくつかのサイクルを有する。第２に、周辺は一般に、より遅い待機状態バス上にある。ロード−ストアオペレーションを行う間、ＣＰＵはまた、同数の待機状態だけ待たなければならない。ＤＭＡでは、ＤＭＡコントローラのみが待たなければならず、それによって、他のＣＰＵタスクのためのこれらのサイクルを自由にしている。
【００１７】
図３は、この発明のマイクロコントローラＤＭＡの素子を詳細に例示する。ＤＭＡ制御レジスタ３２１乃至３２８は、転送に関係する全ての情報をストアする。レジスタ・ブロック３１４は、ＤＭＡ状態レジスタＤＭＡＳＴと、ブロック割込みレジスタＢＩとを含む。ソースおよびターゲット・ワード・サイズ、ブロック・サイズ、ソースおよびターゲット増加サイズ、ソース開始アドレスおよびターゲット開始アドレスは、転送を始めることができる前に、それぞれの制御レジスタ３２１乃至３２８から得られなければならない。
【００１８】
転送するワードの数（転送の長さ）は、カウンタ値（ＣＮＴＶＡＬ）レジスタ３２７の値によって決定され、ＤＭＡ制御論理ブロック３１５内のＣＮＴＶＡＬカウンタ３３３にローディングされる。各ブロックのサイズは、ＢＳレジスタ３２８にストアされるブロック・サイズ値から得られる。ソース開始アドレスは、ＳＡＤＤＲレジスタ３２５にストアされ、またターゲット開始アドレスは、ＴＡＤＤＲレジスタ３２６にストアされる。
【００１９】
実際の実施例において、制御レジスタ３２１乃至３２８は、しばしばＡＰＢバス上に配置されて、これらのレジスタをローディングすることにより、チップ構成を容易にする。これらの実施例において、マイクロコントローラＤＭＡは、ＡＰＢバスからの通常のデータ転送によって要求されて、制御レジスタの内容のコピーを検索する。
【００２０】
ＡＨＢ／ＡＰＢの境界を横切るワード・サイズの調整についての要求は、以下のように概要される。ＡＰＢバス１２０は、常に３２ビットのバスである、３２ビットのアクセスのみをサポートする。他方、ＡＨＢバス１００は、８ビット、１６ビットまたは３２ビットのデータ・タイプをサポートする。マイクロコントローラＤＭＡが、ＡＰＢバス周辺からＡＨＢバス１００上のデバイスにデータを書き込むためには、それは、例えＡＰＢバス１２０が、８ビットまたは１６ビットのデータ・レジスタのみを有するとしても、常に３２ビットのワードを転送し、ストアしなければならない。
【００２１】
２つのプログラム可能なレジスタが備えられていて、ユーザがワード・サイズを選択できるものとなっている。ＳＷＳレジスタ３２１は、ソース・ワード・サイズを設定する。ＴＷＳレジスタ３２２は、ターゲット・ワード・サイズを設定する。そして、マイクロコントローラＤＭＡは、ソース・ワード・サイズＳＷＳレジスタ３２１によって定義されるとおり、ソースからデータを読み取るが、ターゲット・ワード・サイズＴＷＳレジスタ３２２によって定義されるとおり、ターゲット位置にデータを書き込む。
【００２２】
マイクロコントローラＤＭＡは、メモリ中のデータを利用できる最も有効なメモリ・サイズに配列する。プログラム可能なターゲット・ワード・サイズを備えるマイクロコントローラＤＭＡはまた、転送されるべきデータが１ワードまたは半ワードのみであるならば、ＡＰＢ周辺への３２ビット転送を保証する。
【００２３】
この発明の技術の２つの主な利点は、
１．メモリからＡＰＢバス１２０への転送において、３２ビットのアクセスがＡＰＢ周辺に行われなければならない。アプリケーション・プログラムが、メモリにバイトすなわち半ワード境界上のデータをストアしているならば、ＤＭＡは、その境界を完全ワードに整列するよう変更しなければならない。プログラム可能なソース・ワード・サイズおよびターゲット・ワード・サイズで、マイクロコントローラＤＭＡは、サブワード・サイズの境界上のデータを読み取ることができるが、完全ワードとしてデータを書き込む。
２．ＡＰＢ周辺からメモリへデータをストアする際には、データは常にＡＰＢメモリ空間からの完全ワードとして読み取られなければならないが、全てのデータが完全ワードを占有するわけではない。マイクロコントローラＤＭＡは、ターゲット・ワード・サイズを所望の幅（８ビット、１６ビットまたは３２ビット）にプログラムすることによって、所望のワード・サイズで、より効率よくＡＰＢデータをメモリにパックすることができる。これによって、アプリケーション・プログラムは、ソース・コード（例えば、バイトまたはキャラ）においてサブワード・サイズのデータ・タイプを用い、ソフトウェアでワードのサイズを変えることなく、メモリから直接正しいデータを読み取ることが可能となる。
【００２４】
データ転送プロセスは、読み取りデータ・レジスタ３０１にストアされているデータで開始する。ＤＭＡ制御ロジック３１５は、コマンドをアドレス生成器／増加器３１２、データ・バイト・シフタ３０４およびワード・フォーマッタ３０５に送り、次の所望の転送または次の部分転送に必要なモードにおける全ての多重化およびレジスタ機能を設定する。書き込みデータ・レジスタ３１０および出力アドレス・レジスタ３１１は、データの内容および次のオペレーションに必要なアドレス・ワードを保有する。
【００２５】
ＣＮＴＶＡＬカウンタ３３３が０ｘ００００までカウントダウンするとき、ＤＭＡトランスファが完全に行われる。転送される各ワードは、ＳＷＳレジスタ３２１によって決定されるサイズを有しており、ＣＮＴＶＡＬカウンタ３３３を１だけ低減させる。０ｘ００００に到達すると、対応するＤＭＡ状態ビットがＤＭＡ状態レジスタＤＭＡＳＴに設定され、またブロック割込みレジスタＢＩを介してブロック割込みが生じ、その双方はＤＭＡ状態／割込みレジスタ・ブロック３１４の一部である。
【００２６】
ＤＭＡは、全体の転送を可変数のブロックに分けるというオプションを有する。「１」というブロック・サイズは、ＤＭＡが一度に１ワードのみを転送するということを指示する。しかしながら、ＳＤＲＡＭのようなあるメモリのタイプは、バースト転送を可能とし、その間にメモリの場所を連続して読み取らなければならない。ブロックはまた、ＡＨＢパイプラインを利用し、または連続しないアクセスにおいて１サイクルのペナルティを防止するのに有用である。ＤＭＡは、全体ブロック転送長についてＡＨＢバス１００を保有する。
【００２７】
ＤＭＡ制御ロジック３１５は、完全な転送のためのパラメータを保持する制御レジスタ３２１乃至３２８からのデータに基づく制御信号を生成する。ＣＮＴＶＡＬカウンタ３３３は、ＣＮＴＶＡＬレジスタ３２７にストアされる転送のためのプログラムされた数のワードで初期化される。出力アドレス・レジスタ３１１は、開始アドレスに初期化される。これらは、ＳＡＤＤＲレジスタ３２５にストアされるソース開始アドレスおよびＴＡＤＤＲレジスタ３２６にストアされるターゲット開始アドレスである。出力アドレス・レジスタ３１１にストアされる現在のアドレスは、ＳＡＤＤＲおよびＴＡＤＤＲ開始アドレスへと初期化され、ワード転送の完了でアドレスを増加することにより更新される。
【００２８】
図４は、ＤＭＡ転送プロセスのフロー・チャートを例示する。現在のソースおよびターゲット・アドレスは、出力アドレス・レジスタ３１１（処理ブロック４０１）にストアされる。次に、ソース・アドレスにストアされるデータ・ワードは、ＤＭＡ読み取りデータ・レジスタ３０１（処理ブロック４０２）に移動される。
【００２９】
次にデータは、ワード・フォーマッタ３０５においてサイズ調整またはバイト・シフト調整を用いてフォーマットされ、結果が書き込みデータ・レジスタ３１０（処理ブロック４０３）にストアされる。このプロセスは、通常、多数のクロック・サイクルを要する。図４に例示されるとおり、このプロセスは、ＣＮＴＶＡＬレジスタ３３３、ブロック・サイズ・レジスタＢＳ３２８、ソース・ワード・サイズ・レジスタＳＷＳ３２１、ターゲット・ワード・レジスタＴＷＳ３２２、ソース・アドレス増加サイズ・レジスタＳＩＳ３２３およびターゲット・アドレス増加サイズ・レジスタＴＩＳ３２４が含まれるＤＭＡ総合制御信号４２０を含む。ソース・ワード・サイズＳＷＳレジスタ３２１およびターゲット・ワード・サイズ・レジスタＴＷＳ３２２に関して、双方は８ビット、１６ビットまたは３２ビットのワード・サイズに設定される。ターゲット・アドレスで割り当てられるものより大きなワードを含むソース・アドレスが選択されるならば、ターゲットはより大きなデータ・ワードを受信するが、これらは多数のより小さなワード・サイズの書き込みが行われる。
【００３０】
例えば、１つの周辺における１６ビット・データ・レジスタが、８ビット・データ・レジスタのみを有する別の周辺に、１６ビット全部を送る必要があるならば、マイクロコントローラＤＭＡは、ソース・アドレスを一旦読み取るが、しかしターゲット・アドレスに多数の書き込みを生じさせる。８ビット・ターゲットの周辺への１６ビット・ソース周辺書き込みは、１６ビット・ソースから一度の読み取りを行うが、必要に応じて増加された８ビット・ターゲット・アドレスに２つの書き込みを行う。３２ビット・ソース周辺からの転送は、１６ビット・ターゲット周辺への２つの書き込みかまたは８ビット・ターゲット周辺への４度の書き込みという結果を生じる
【００３１】
ＤＭＡデータ・バイト・シフタ３０４に関して、３２ビット・ワードのようなより大きなワードの、８ビットのようなより小さなワード・サイズを有する宛先への転送を考える。この種のオペレーションにおいて、多数の書き込みが宛先になされる必要がある。第１のクロックで、より低いバイトまたは半ワードは、宛先に転送されるためにより低いバイトまたは半ワードに整列される必要がある。次のクロックで、バイト２が書き込まれ、バイト３がバイト１の位置等に移動する。全ての４つのバイトが書き込まれるならば、マイクロコントローラＤＭＡは、３２ビット・ソース位置から次の読み取りを行って、そのプロセスを繰り返すことができる。読み取りデータ・レジスタ３０１および書き込みデータ・レジスタ３１０双方における３２ビット・レジスタで、マイクロコントローラＤＭＡは、その制御出力３３２を通してデバイスをスレーブとし、必要とされる全体のおよび部分的なデータ転送の全域に渡って要求される多重書き込みを実行するのに十分な柔軟性を有する。
【００３２】
前述の特長によって、プログラマは、ソースおよび宛先場所双方の実際のワード・サイズを設定することが可能となる。またプログラマは、増加するサイズをもまたセットすることが可能となる。ＡＰＢバス１２０のような固定バス・システムにおいては、この値は固定サイズに設定される。可変ワード・サイズのシステムにおいて、これは、現在の周辺がサポートするものなら何にでも設定することができる。ソースおよび宛先アドレス双方についての完全に別々なソフトウェア・プログラム可能ワード・サイズおよび増加サイズが提供される。アドレス増加サイズは、転送のワード・サイズに依存しない。
【００３３】
ユーザは、マイクロコントローラＤＭＡがどのようにデータを取り扱い、アドレスがどのように増加されるかについて完全な制御を行う。実際の作業は全て、尚もハードウェアで行われており、更なるソフトウェア・オーバヘッドは必要とされない。しかしながら、ここで同じマイクロコントローラＤＭＡを用いて、ＡＨＢバス１１０およびＡＰＢバス１２０を有するＡＭＢＡのような異なるバス標準を備えるシステムにおいて、効率を妥協することなく、転送のサイズを固定することにより周辺またはバス効率を制限することなく、またはワード・サイズを翻訳するためにＣＰＵに過度に負荷をかけることなく、データを転送することができる。
【００３４】
ワード転送を完了するために、続いてデータ・ワードを、書き込みデータ・レジスタから現在ターゲットのアドレス位置（処理ブロック４０４）へと移動する。各ワードが転送されるとき、ＣＮＴＡＬカウンタ３３３は、１だけ低減する（処理ブロック４０５）。
【００３５】
ＣＮＴＶＡＬカウンタ３３３が検査されて、それが１６進法のゼロ（０ｘ００００）であることを決定する（決定ブロック４０８）。ＤＭＡデータ転送が、ＤＭＡ転送全体をまだ完了していない（ノー・ブランチ４０８）ならば、すなわちＣＮＴＶＡＬカウンタ３３３がまだ０ｘ００００に到達していないならば、ＤＭＡコントローラは、転送の次のワードを実行する。ソースおよびターゲット・アドレスが増加される（処理ブロック４１１）。これらのアドレスは、スタート・ソース・アドレス・レジスタＳＡＤＤＲ３２５およびスタート・ターゲット・アドレス・レジスタＴＡＤＤＲ３２６によって開始される。ソース・アドレスは、ソース・アドレス増加サイズ・レジスタＳＩＳ３２３にストアされる値だけ増加され、またターゲット・アドレスは、ターゲット増加サイズ・レジスタＴＩＳ３２４にストアされる値だけ増加される。
【００３６】
ＤＭＡが、全転送を完了し、かつＣＮＴＶＡＬカウンタ３３３が０ｘ００００（イエス・ブランチ４０９）に到達したならば、ＤＭＡＳＴレジスタにおける転送完了状態ビットが設定される（処理ブロック４１０）。そして、ＤＭＡは、ＣＰＵ割込みを生成し（処理ブロック４１２）、ＣＰＵのＤＭＡデータ転送の完了を認識するよう要求する（処理ブロック４１３）。そうする際に、ＣＰＵは、ＤＭＡＳＴ状態をクリアし、更なるＤＭＡ転送アクションを可能とする。
【００３７】
次のＤＭＡリクエストは、アドレス・レジスタＳＡＤＤＲからアドレス・レジスタ（ＴＡＤＤＲ）におけるアドレスへのデータの新たな転送を開始させ、図４において例示される処理ステップを繰り返す。
【００３８】
ＤＭＡコントローラの状態を制御し、表示する制御レジスタおよびビットの表が以下である。ＤＭＡの各独立チャンネルにはレジスタ源の完全なセットがある。好ましい実施例には、３２のＤＭＡチャンネルが含まれる。
【００３９】
スタート・ソース・アドレス・レジスタＳＡＤＤＲ３２５は、データを対応するＤＭＡチャンネルについてのものから移動させるための開始アドレスをストアする。好ましくは、これは、完全３２ビット・アドレスである。以下の転送開始アドレスは、対応するアドレス増加選択ビットＩＡＤＤ（以下参照）でプログラムされる値に依存して、ＳＩＳ［１：０］だけ増大するかしないかする。好ましい実施例において、この機能について３２の別々のレジスタ、３２のＤＭＡチャンネルの各々について１つの完全な３２ビット・レジスタがある。
【００４０】
スタート・ターゲット・アドレス・レジスタＴＡＤＤＲ３２６は、データを対応するＤＭＡチャンネルについてのものに移動する宛先アドレスをストアする。これは好ましくは、完全３２ビット・アドレスである。ここにストアされる値は、宛先場所のためのターゲット・アドレスである。開始アドレスからのデータの連続する転送の各々に際し、ターゲット・アドレスは、転送が完了する、すなわち、対応するＣＮＴＶＡＬレジスタ３３３が０ｘ００００になるときまで、対応するＴＩＡＤＤビットの状態に依存して、対応するＴＩＳ［１：０］だけ選択的に増加する。好ましい実施例において、この機能のために３２の別々のレジスタ、３２のＤＭＡチャンネルの各々について１つの完全な３２ビット・レジスタがある。
【００４１】
ソース・ワード・サイズ・レジスタＳＷＳ３２１は、対応するＤＭＡチャンネルについて読み取られるワードの実際のサイズをストアする。ＤＭＡチャンネルについて２ビットＳＷＳ［１：０］が必要とされる。ビットＳＷＳ［１：０］は、以下のとおり符号化される。
0004729207.tif 000002
【００４２】
ターゲット・ワード・サイズ・レジスタＴＷＳ３２２は、対応するＤＭＡチャンネルについて書き込まれるべきワードの実際のサイズをストアする。各ＤＭＡチャンネルについて２ビットＴＷＳ［１：０］が必要とされる。ビットＴＷＳ［１：０］は、以下のように符号化される。
0004729207.tif 000003
【００４３】
ワード数カウント・レジスタＣＮＴＶＡＬ［１５：０］３３３は、ＤＭＡ状態（ＤＭＡＳＴ）イベントを引き起こすまでに、ＤＭＡトランザクションの数を数えた値をストアする。このレジスタの内容が０ｘ００００に到達するとき、対応するＤＭＡＳＴビットは活性化される。
【００４４】
ＤＭＡブロック・サイズ・レジスタＢＳ３２８は、連続して行われるべきＤＭＡアクセスの数値をストアする。ＤＭＡリクエストが行われるとき、ＤＭＡコントローラは、割込みなしに直ちにこのレジスタにプログラムされるワードの数を転送する。ブロック転送の間、ＤＭＡコントローラはＡＨＢバス１００の制御を解除しない。ブロック・サイズ・レジスタＢＳ３２８の値は、ＣＮＴＶＡＬレジスタ３２７にストアされるカウント値およびＣＮＴＶＡＬカウンタ３３３の現在の値から独立するものであることに注意されたい。データのブロック・サイズの転送を完了するに際し、ＡＨＢバス１００において新しいアービトレーションがもたらされる。ブロック・サイズがカウント値未満であるなら、長いＤＭＡ転送は、より高い優先順位のリクエスト、すなわち、ラウンドロビン優先順位（ｒｏｕｎｄ ｒｏｂｉｎ  ｐｒｉｏｒｉｔｙ）における異なる懸案リクエストによって、ブロック・サイズの各転送の完了にあたって割込みすることができる。
【００４５】
ソース増加サイズ・レジスタＳＩＳ３２３は、対応するＤＭＡチャンネルについてのワード転送の間、開始アドレスのためのアドレス増加サイズをストアする。各ＤＭＡチャンネルには、２ビットＳＩＳ［１：０］が必要とされる。ビットＳＩＳ［１：０］は、以下のように符号化される。
0004729207.tif 000004
【００４６】
ターゲット増加サイズ・レジスタＴＩＳ３２４は、対応するＤＭＡチャンネルについての転送の間、ターゲット・アドレスについてのアドレス増加サイズをストアする。各ＤＭＡチャンネルには、２ビットＴＩＳ［１：０］が必要とされる。ビットＴＩＳ［１：０］は以下のように符号化される。
0004729207.tif 000005
【００４７】
以下のレジスタは、ＤＭＡ状態／割込みレジスタ・ブロック３１４の一部、すなわち、ブロック割込みレジスタＢＩ、ブロック割込みイネーブル・レジスタＢＩＥ、ＤＭＡ状態レジスタＤＭＡＳＴ、ソース・アドレス増加選択レジスタＳＩＡＤＤおよびターゲット・アドレス増加選択レジスタＴＩＡＤＤである。これらのレジスタの各々には、各ＤＭＡチャンネルに対応する単一ビットが含まれる。これらのビットの符号化は、表１において一覧とされている。
0004729207.tif 000006
ブロック割込みビットＢＩは、ＤＭＡブロック転送完了し、またＤＭＡコントローラが対応するＢＳレジスタ３２８でプログラムされたワードの数を移動し終えたかどうか指示する。対応するＢＩＥビットもまた設定されているならば、割込みは、ＣＰＵ１０１に戻って生成される。ソフトウェアは、ブロック転送のあと、このフラッグをクリアしなければならず、ハードウェアはこのビットをリセットしない。ブロック割込みビットＢＩと対応するブロック割込みイネーブル・ビットＢＩＥ双方の協力が、ＤＭＡデータ転送の終わりにＣＰＵ割込みを生成するのに必要とされる。対応するＤＭＡリクエストが行われていないならば、または懸案のＤＭＡリクエストがあって、転送が終わっていないならば、ＤＭＡ状態ビットＤＭＡＳＴは「０」である。このビットは、ソフトウェアによってリセットされなければならず、ハードウェアはこのビットをリセットしない。
【００４８】
以上の説明に関して更に以下の項を開示する。
（１）少なくとも１つのバス・デバイスがデータを供給することのできるバス・データ供給デバイスであり、少なくとも１つのバス・デバイスがデータを受信することのできるバス・データ受信デバイスであり、かつ少なくとも１つのバス・デバイスがデータ転送をリクエストして制御することのできるバス・マスタ・デバイスである複数のバス・デバイスと、
前記複数のバス・デバイスの各々に接続され、バス・マスタ・デバイスの制御のもとでバス・データ供給デバイスからバス・データ受信デバイスへとデータを転送することのできるデータ・バスと、
バス・マスタ・デバイスとして前記データ・バスに接続される直接メモリ・アクセス・ユニットであって、
ソース・ワード・サイズをストアするソース・ワード・サイズ・レジスタおよび
ターゲット・ワード・サイズをストアするターゲット・ワード・サイズ・レジスタを含む前記直接メモリ・アクセス・ユニットと
を具備し、
前記直接メモリ・アクセス・ユニットは、前記ソース・ワード・データ・サイズに対応するデータ・サイズで第１バス・データ供給デバイスからデータをリコールして、前記ターゲット・ワード・サイズに対応するデータ・サイズで第１バス・データ受信デバイスに前記リコールされたデータを供給することによって、第１バス・データ供給デバイスから第１バス・データ・リコーリング・デバイスへと前記第１のバスを介してデータを転送することができる
データ転送システム。
【００４９】
（２）前記直接メモリ・アクセス・ユニットは、更に
前記ソース・ワード・サイズの前記データ・バスを介しての前記バス・データ供給デバイスからのデータでローディングされた読み取りデータ・レジスタと、
前記ターゲット・ワード・サイズで、前記データ・バスを介して、前記バス・データ受信デバイスへとデータを供給する書き込みデータ・レジスタと
前記読み取りデータ・レジスタから前記書き込みデータ・レジスタへとデータを転送するよう接続され、それによって前記ターゲット・ワード・サイズで前記書き込みデータ・レジスタにデータを配列するワード・フォーマッタと
を含む（１）項記載のデータ転送システム。
【００５０】
（３）前記第１バスへデータを供給することも、前記第１バスからデータを受信することもできる第１バス供給／受信デバイスである、少なくとも１つの第１バス・デバイスを更に具備する（２）項記載のデータ転送システム。
【００５１】
（４）少なくとも１つの第１バス供給／受信デバイスが、更にデータ転送を制御することのできる中央処理ユニットからなる（３）項記載のデータ転送システム。
【００５２】
（５）少なくとも１つの第１バス供給／受信デバイスが、更にデータ転送を制御することのできる直接メモリ・アクセス・ユニットからなる（３）項記載のデータ転送システム。
【００５３】
（６）少なくとも１つの第１バス供給／受信デバイスが、データ転送を制御することのできないメモリからなる（３）項記載のデータ転送システム。
【００５４】
（７）少なくとも１つの第１バス供給／受信デバイスが、
更にデータ転送を制御することのできる中央処理ユニットであって、前記ソース・データ・サイズ・レジスタおよび前記ターゲット・データ・サイズ・レジスタにデータをローディングするために前記直接メモリ・アクセス・ユニットに接続される前記中央処理ユニットからなる
（３）項記載のデータ転送システム。
【００５５】
（８）前記直接メモリ・アクセス・ユニットが、
ソース開始アドレスをストアするソース開始アドレス・レジスタと、
ソース増加サイズをストアするソース増加サイズ・レジスタと、
ターゲット開始アドレスをストアするターゲット開始アドレス・レジスタと、
ターゲット増加サイズをストアするターゲット増加サイズ・レジスタとを更に含み、
前記直接メモリ・アクセス・ユニットは、前記ソース開始アドレスで、そしてその後前記ソース増加サイズだけ異なる連続するアドレスで始まる前記第１バス・データ供給デバイスからデータをリコールし、そして前記ターゲット開始アドレスで、そしてその後前記ターゲット増加サイズだけ異なる連続するアドレスで開始する前記第１バス・データ受信デバイスに前記リコールされたデータを供給する
（３）項記載のデータ転送システム。
【００５６】
（９）少なくとも１つの第１バス供給／受信デバイスが、更にデータ転送を制御することのできる中央処理ユニットからなり、前記中央処理ユニットは、前記ソース開始アドレス・レジスタにデータをローディングする前記直接メモリ・アクセス・ユニットに接続され、前記ソース増加サイズ・レジスタは、前記ターゲット開始アドレス・レジスタと前記ターゲット増加サイズ・レジスタとをストアする
（８）項記載のデータ転送システム。
【００５７】
（１０）前記少なくとも１つのバス・マスタ・デバイス、前記直接メモリ・アクセス・ユニットおよび前記第１のバスの各々に接続されるバス・アービタであって、前記データ・バスでの１つかつ１つのみのバス・マスタ・デバイスへのデータ転送の制御を認める前記バス・アービタを更に具備し、
前記直接メモリ・アクセス・ユニットは、
前記直接メモリ・アクセス・ユニットによって送信されるべき複数のデータ・ワードをストアするカウンタ値レジスタと、
割込みされること無く送信されるべきブロック・サイズをストアするブロック・サイズ・レジスタとを更に含み、
前記直接メモリ・アクセス・ユニットは、前記バス・アービタからのバス制御を要求し、前記データ・バスでのデータ送信の制御を認める際に前記直接メモリ・アクセス・ユニットは、その後、
転送されるべき前記複数のデータ・ワードのより少ない方に等しい量のデータおよび割込みされること無く送信されるべき前記ブロック・サイズを転送し、その後、
転送されたデータが送信されるべき前記複数のデータ・ワードに等しいならば、データ転送を終え、および
データ転送を保留し、前記データ・バスでのデータ転送の制御を放出し、前記バス・アービタからのバス制御を再度リクエストする
（３）項記載のデータ転送システム。
【００５８】
（１１）少なくとも１つの第１バス供給／受信デバイスが、更にデータ転送を制御することのできる中央処理ユニットからなり、前記中央処理ユニットは、前記カウンタ値レジスタと前記ブロック・サイズ・レジスタとにデータをローディングする前記直接メモリ・アクセス・ユニットに接続される
（１０）項記載のデータ転送システム。
【００５９】
（１２）前記複数のバス・デバイスが第１バス・デバイスからなり、前記データ・バスが第１データ・バスからなる第１項記載のデータ転送システムであって、
少なくとも１つの第２バス・デバイスがデータを供給することのできる第２バス・データ供給デバイスであり、少なくとも１つの第２バス・デバイスがデータを受信することのできる第２バス・データ受信デバイスであり、少なくとも１つの第２バス・デバイスがデータ転送をリクエストし制御することのできる第２バス・マスタ・デバイスであり、各第２バス・デバイスが所定のデータ・サイズを有する複数の第２バス・デバイスと、
前記所定のデータ・サイズを有し、前記複数の第２バス・デバイスの各々に接続され、第２バス・データ供給デバイスから第２バス・データ受信デバイスへと第２バス・マスタ・デバイスの制御のもとでデータを転送することのできる第２データ・バスと、
前記第１データ・バスと前記第２データ・バスとに接続されるバス・ブリッジであって、前記第１バス・デバイスと前記第２バス・デバイスとの間でデータを転送することのできる前記バス・ブリッジとを更に具備し、
前記直接メモリ・アクセス・ユニットは、第２バス・デバイスから第１バス・デバイスへの前記バス・ブリッジを介してのデータ転送のために前記ソース・ワード・サイズ・レジスタに前記所定のデータ・サイズをストアし、第１バス・デバイスから第２バス・デバイスへの前記バス・ブリッジを介してのデータ転送のために前記ターゲット・ワード・サイズ・レジスタに前記所定のデータ・サイズをストアする
前記データ転送システム。
【００６０】
（１３）マイクロコントローラ直接メモリ・アクセス（ＤＭＡ）ユニットが、ソース・ワード・サイズでソース・アドレスの単一読み取りのためのハードウェア・サポートを含むが、独立したターゲット・ワード・サイズでターゲット・アドレスに書き込む。これによって、例えば、より大きなワード・サイズでソース・アドレスの単一読み取りが可能となり、またターゲット・アドレスへの多数のサブワード・サイズの書き込みが可能となる。これは、ソース・ワード・サイズ（３２１）、ソース増加サイズ（３２３）、ターゲット・ワード・サイズ（３２２）およびターゲット増加サイズ（３２４）の独立した制御レジスタストアによってイネーブルされる。一度に全体のバイトを次のより低いバイト位置へとシフトするバイト・シフタ／レジスタ（３０５）が、大きなワードの、小さなワード・サイズを有する宛先への転送を可能とする。
【図面の簡単な説明】
【図１】従来のＡＨＢバス・システムを有する従来技術のアドバンスト・マイクロコントローラ・バス・アーキテクチャＡＭＢＡのブロック図。
【図２】ＡＭＢＡアーキテクチャにおける従来技術の単一マスタ、スレーブおよびアービタの組み合わせの信号相互接続を示す図。
【図３】この発明のマイクロコントローラＤＭＡのブロック図。
【図４】調整可能ワード・サイズ転送およびアドレス配列／増加を備えるマイクロコントローラＤＭＡ転送フローを示す図。
【符号の説明】
１００  ＡＨＢバス
１０１  ＣＰＵ
１１０  ＡＨＢバス・アービタ
１１１  ＡＨＢバス・デコーダ
３２１〜３２８  ＤＭＡ制御レジスタ
【図１】
0004729207.tif 000007
【図２】
0004729207.tif 000008
【図３】
0004729207.tif 000009
【図４】
0004729207.tif 000010