(57)【特許請求の範囲】
【請求項１】
複数の仮想ダイレクトメモリアクセスチャネルをサポートするためのダイレクトメモリアクセスエンジンであって、
ダイレクトメモリアクセスコントローラを含み、前記ダイレクトメモリアクセスコントローラは、
物理ダイレクトメモリアクセス制御ブロックと、
物理ダイレクトメモリアクセスチャネルリソースと、
前記物理ダイレクトメモリアクセス制御ブロックに結合され、前記物理ダイレクトメモリアクセス制御ブロックおよび前記物理ダイレクトメモリアクセスチャネルリソースを共有する複数の仮想ダイレクトメモリアクセスチャネルとを含み、前記ダイレクトメモリアクセスエンジンはさらに、
前記複数の仮想ダイレクトメモリアクセスチャネルに対するパラメータを格納するパラメータテーブルを含むメモリと、
前記物理ダイレクトメモリアクセス制御ブロックおよび前記物理ダイレクトメモリアクセスチャネルリソースに結合される物理ダイレクトメモリアクセスチャネルとを含み、
アクティブな仮想ダイレクトメモリアクセスチャネルの前記パラメータは、前記パラメータテーブルから前記物理ダイレクトメモリアクセスチャネルリソースへロードされ、前記物理ダイレクトメモリアクセス制御ブロックは、前記物理ダイレクトメモリアクセスチャネルリソースを用いて、ロードされたパラメータに基づいてアクティブなチャネルに対するダイレクトメモリアクセス転送を行なう、ダイレクトメモリアクセスエンジン。
【請求項２】
複数の仮想ダイレクトメモリアクセスチャネルをサポートするためのダイレクトメモリアクセスエンジンであって、
ダイレクトメモリアクセスコントローラを含み、前記ダイレクトメモリアクセスコントローラは、
物理ダイレクトメモリアクセス制御ブロックと、
物理ダイレクトメモリアクセスチャネルリソースと、
前記物理ダイレクトメモリアクセス制御ブロックおよび前記物理ダイレクトメモリアクセスチャネルリソースに結合された、物理ダイレクトメモリアクセスチャネルと、
前記物理ダイレクトメモリアクセス制御ブロックに結合され、前記物理ダイレクトメモリアクセスチャネル、前記物理ダイレクトメモリアクセス制御ブロックおよび前記物理ダイレクトメモリアクセスチャネルリソースを共有する複数の仮想ダイレクトメモリアクセスチャネルと、
前記複数の仮想ダイレクトメモリアクセスチャネルに対するパラメータを格納するパラメータテーブルを含むメモリとを含み、
アクティブな仮想ダイレクトメモリアクセスチャネルの前記パラメータは、前記パラメータテーブルから前記物理ダイレクトメモリアクセスチャネルリソースへロードされ、前記物理ダイレクトメモリアクセス制御ブロックは、前記物理ダイレクトメモリアクセスチャネルリソースを用いて、ロードされたパラメータに基づいてアクティブなチャネルに対するダイレクトメモリアクセス転送を行なう、ダイレクトメモリアクセスエンジン。
【請求項３】
前記複数の仮想ダイレクトメモリアクセスチャネルのうちアクティブな仮想ダイレクトメモリアクセスチャネルに対するパラメータが、パラメータテーブルから物理ダイレクトメモリアクセスチャネルリソースおよび物理ダイレクトメモリアクセス制御ブロックにロードされる、請求項１または２記載のダイレクトメモリアクセスエンジン。
【請求項４】
前記複数の仮想ダイレクトメモリアクセスチャネルのうちのアクティブな仮想ダイレクトメモリアクセスチャネルについてのパラメータを、前記パラメータテーブルから、前記物理ダイレクトメモリアクセスチャネルリソースおよび前記ダイレクトメモリアクセス制御ブロックにロードする実行ユニットをさらに含む、請求項１または２記載のダイレクトメモリアクセスエンジン。
【請求項５】
所与の時間には前記複数の仮想ダイレクトメモリアクセスチャネルのうち１つのチャネルがアクティブになる、請求項１または２記載のダイレクトメモリアクセスエンジン。
【請求項６】
前記物理ダイレクトメモリアクセスチャネルリソースおよび前記物理ダイレクトメモリアクセス制御ブロックが、前記複数の仮想ダイレクトメモリアクセスチャネルのうちアクティブな仮想ダイレクトメモリアクセスチャネルに対するパラメータを格納する、請求項１または２記載のダイレクトメモリアクセスエンジン。
【請求項７】
前記ダイレクトメモリアクセスコントローラが、前記パラメータに基づいて、前記物理ダイレクトメモリアクセスチャネルを介して、前記複数の仮想ダイレクトメモリアクセスチャネルのうちアクティブな仮想ダイレクトメモリアクセスチャネルに対するダイレクトメモリアクセス転送を行なう、請求項１または２のいずれかに記載のダイレクトメモリアクセスエンジン。
【請求項８】
前記複数の仮想ダイレクトメモリアクセスチャネルのうちアクティブなチャネルに対するダイレクトメモリアクセスリクエスト線をさらに含む、請求項１または２記載のダイレクトメモリアクセスエンジン。
【請求項９】
前記複数の仮想ダイレクトメモリアクセスチャネルのうちアクティブなチャネルに対するダイレクトメモリアクセスアクノレッジ線をさらに含む、請求項１、２または４記載のダイレクトメモリアクセスエンジン。
【請求項１０】
複数の仮想ダイレクトメモリアクセスチャネルをサポートするためのマイクロコントローラであって、
実行ユニットと、前記実行ユニットに結合されたダイレクトメモリアクセスユニットとを含み、
前記ダイレクトメモリアクセスユニットが、請求項１乃至９いずれか１項記載のダイレクトメモリアクセスエンジンを含む、
マイクロコントローラ。
【請求項１１】
前記ダイレクトメモリアクセスエンジンは、前記複数の仮想ダイレクトメモリアクセスチャネルのうちアクティブなチャネルに対するダイレクトメモリアクセスリクエスト線と、前記複数の仮想ダイレクトメモリアクセスチャネルのうちアクティブなチャネルに対するダイレクトメモリアクセスアクノレッジ線とを含み、
前記ダイレクトメモリアクセスリクエスト線を受け、前記ダイレクトメモリアクセスアクノレッジ線を提供するために、前記ダイレクトメモリアクセスエンジンに結合されるダイレクトメモリアクセスリクエスト／アクノレッジポートブロックをさらに含む、
請求項１０記載のマイクロコントローラ。
【請求項１２】
前記ダイレクトメモリアクセスリクエスト／アクノレッジポートブロックが、
前記アクティブな仮想ダイレクトメモリアクセスチャネルに対応するダイレクトメモリアクセスアクノレッジ信号を前記ダイレクトメモリアクセスコントローラから前記ダイレクトメモリアクセスアクノレッジ線へ導くためのステアリング論理を含む、請求項１１記載のマイクロコントローラ。
【請求項１３】
前記ダイレクトメモリアクセスアクノレッジ信号を前記ダイレクトメモリアクセスリクエスト／アクノレッジポートブロックに与え、かつ前記ダイレクトメモリアクセスアクノレッジ信号を前記ダイレクトメモリアクセスリクエスト／アクノレッジポートブロックから受けるように前記ダイレクトメモリアクセスリクエスト／アクノレッジポートブロックに結合された装置をさらに含む、請求項１１記載のマイクロコントローラ。
【請求項１４】
複数の仮想ダイレクトメモリアクセスチャネルをサポートするためにダイレクトメモリアクセスエンジンを用いてダイレクトメモリアクセス転送を制御する方法であって、
ダイレクトメモリアクセスエンジンはダイレクトメモリアクセスコントローラを含み、前記ダイレクトメモリアクセスコントローラは、物理ダイレクトメモリアクセス制御ブロックと、物理ダイレクトメモリアクセスチャネルリソースと、複数の仮想ダイレクトメモリアクセスチャネルとを有し、
前記複数の仮想ダイレクトメモリアクセスチャネルは、前記物理ダイレクトメモリアクセス制御ブロックおよび前記物理ダイレクトメモリアクセスチャネルリソースを共有しており、
前記ダイレクトメモリアクセスエンジンはさらに物理ダイレクトメモリアクセスチャネルを有し、前記ダイレクトメモリアクセスエンジンはさらに、前記複数の仮想ダイレクトメモリアクセスチャネルに対するパラメータを格納するためのパラメータテーブルを有するメモリを含み、前記方法は、
前記複数の仮想ダイレクトメモリアクセスチャネルのうち第１のアクティブな仮想ダイレクトメモリアクセスチャネルに対するパラメータテーブルからのパラメータを前記ダイレクトメモリアクセスコントローラにロードするステップと、
前記ダイレクトメモリアクセスコントローラにロードされたパラメータに基づいて前記物理ダイレクトメモリアクセスチャネルを介して第１のアクティブな仮想ダイレクトメモリアクセスチャネルに対するダイレクトメモリアクセス転送を行なうステップとを含む、方法。
【請求項１５】
複数の仮想ダイレクトメモリアクセスチャネルをサポートするためにダイレクトメモリアクセスエンジンを用いてダイレクトメモリアクセス転送を制御する方法であって、
ダイレクトメモリアクセスエンジンはダイレクトメモリアクセスコントローラを含み、前記ダイレクトメモリアクセスコントローラは、物理ダイレクトメモリアクセス制御ブロックと、物理ダイレクトメモリアクセスチャネルリソースと、物理ダイレクトメモリアクセスチャネルと、複数の仮想ダイレクトメモリアクセスチャネルとを有し、
前記複数の仮想ダイレクトメモリアクセスチャネルは、物理ダイレクトメモリアクセスチャネル、物理ダイレクトメモリアクセス制御ブロックおよび物理ダイレクトメモリアクセスチャネルリソースを共有しており、
前記ダイレクトメモリアクセスエンジンはさらに、前記複数の仮想ダイレクトメモリアクセスチャネルに対するパラメータを格納するためのパラメータテーブルを有するメモリを含み、前記方法は、
前記複数の仮想ダイレクトメモリアクセスチャネルのうち第１のアクティブな仮想ダイレクトメモリアクセスチャネルに対するパラメータテーブルからのパラメータを前記ダイレクトメモリアクセスコントローラにロードするステップと、
前記ダイレクトメモリアクセスコントローラにロードされたパラメータに基づいて前記物理ダイレクトメモリアクセスチャネルを介して第１のアクティブな仮想ダイレクトメモリアクセスチャネルに対するダイレクトメモリアクセス転送を行なうステップとを含む、方法。
【請求項１６】
前記複数の仮想ダイレクトメモリアクセスチャネルのうち第２のアクティブな仮想ダイレクトメモリアクセスチャネルに対するパラメータテーブルからのパラメータを前記ダイレクトメモリアクセスコントローラにロードするステップと、
前記ダイレクトメモリアクセスコントローラにロードされたパラメータに基づいて前記物理ダイレクトメモリアクセスチャネルを介して第２のアクティブな仮想ダイレクトメモリアクセスチャネルに対するダイレクトメモリアクセス転送を行なうステップとをさらに含む、請求項１４または１５記載の方法。
【請求項１７】
前記ロードするステップが実行ユニットにより行なわれる、請求項１４または１５記載の方法。
【請求項１８】
前記ダイレクトメモリアクセス転送を行なうステップが、前記ダイレクトメモリアクセス制御ブロックにより制御される、請求項１４または１５記載の方法。
【請求項１９】
マイクロコントローラ内に前記ダイレクトメモリアクセスエンジンを設けるステップをさらに含む、請求項１４または１５記載の方法。
【請求項２０】
前記ロードするステップが、
前記パラメータの一部を前記物理ダイレクトメモリアクセスチャネルリソースにロードするステップを含む、請求項１４または１５記載の方法。
【請求項２１】
前記ロードするステップが、
前記パラメータの一部を前記物理ダイレクトメモリアクセス制御ブロックにロードするステップをさらに含む、請求項１４または１５載の方法。
【発明の詳細な説明】
【０００１】
【技術分野】
本発明はマイクロコントローラにおけるダイレクトメモリアクセス制御に関し、より具体的には、複数の仮想ダイレクトメモリアクセスチャネルをサポートするためのダイレクトメモリアクセスエンジンに関する。
【０００２】
【背景技術】
マイクロコントローラ
技術が進歩するにつれて、従来はマイクロプロセッサが、またはコンピュータシステムが全体として供給していた特定のサービスを、コンピュータシステムのコンポーネントが提供するようになってきた。この進歩する技術の主要なものはマイクロコントローラすなわち組込み式コントローラとして知られており、これは要するにパーソナルコンピュータにおいて用いられるようなマイクロプロセッサであるが、同じモノリシック半導体基板（すなわちチップ）上に非常に多くの付加的な機能が組み合わされたものである。典型的なパーソナルコンピュータでは、マイクロプロセッサが基礎的な計算機能を行なう一方、ネットワークを介した通信、コンピュータメモリの制御およびユーザとの入力／出力を提供するなどの機能は、その他の集積回路が行なう。
【０００３】
典型的なマイクロコントローラでは、これらの機能の多くが集積回路チップ自体の内部に組込まれている。典型的なマイクロコントローラ、たとえばカリフォルニア州サニィベイルのアドバンスト・マイクロ・ディバイシズ・インコーポレイテッドによるＡｍ１８６ＥＭまたはＡＭ１８６ＥＳは、コアマイクロプロセッサを含むだけでなく、メモリコントローラ、ダイレクトメモリアクセス（ＤＭＡ）コントローラ、割込みコントローラ、ならびに非同期および同期の両シリアルインターフェイスもさらに含む。コンピュータシステムにおいて、典型的にはこれらの装置は別々の集積回路として実現されるので、より大きな面積を必要とし、製品のサイズを大きくする。これらの機能を単一チップ内に組込むことにより、サイズが著しく減じられる。これは消費者製品において重要であることが多い。
【０００４】
消費者製品の設計者の観点からみれば、特定の付加された特徴の組合わせにより、ある特定のマイクロコントローラが所与のアプリケーションに対して魅力的になることがよくある。標準の８０ｘ８６マイクロプロセッサ命令を用いる多くのマイクロコントローラが利用可能であり、このようなマイクロコントローラに対してはソフトウェアの開発が容易である。実行ユニットの命令セットが類似しているので、付加された特徴が、特定のマイクロコントローラ間を区別する主要な基準となることが多い。
【０００５】
マイクロコントローラを組込みシステムにおいて実現する際には、他のよくある要求または所望される特徴は、マイクロコントローラの何らかの特定の部分がその他の部分と折衝するときに必要な帯域幅を減じることである。たとえば、マイクロコントローラのコアは実行ユニットであり、これは本質的にはマイクロプロセッサコアである。実行ユニットはそれ専用にプログラムされたタスクを自由に行なうべきであり、マイクロコントローラ内の他のユニットを待って時間を費やすべきではない。
【０００６】
ダイレクトメモリアクセス
実行ユニットを解放するのにしばしば有用なものとして、ダイレクトメモリアクセス（ＤＭＡ）ユニット、タイマ制御ユニット、および割込み制御ユニットがある。このようなユニットはある外部トランザクションが生ずるのを待機するタスクの負荷をなくし、さらにＤＭＡユニットの場合は、実際にタスクそれ自体の負荷を軽減する。ＤＭＡユニットは、記憶位置間の転送、入力／出力ポート間の転送、およびある記憶位置とある入力／出力ポートとの間の転送を行なうようプログラムされ得る。これらのタスクの負荷をなくすことにより、実行ユニットは、このような転送が行なわれる間待機しなくてもよくなり、これによってコンピュータシステムの全体の速度が速くなり得る。
【０００７】
ＤＭＡユニットは、マイクロプロセッサが関与することなく、ＤＭＡユニットの制御レジスタを転送制御情報で初期化することによって機能する。転送制御情報は、通常、ソースアドレス（転送されるデータのブロックの先頭のアドレス）、デスティネーションアドレス（データのブロックの先頭の転送先のアドレス）、およびデータブロックのサイズを含む。マイクロプロセッサおよびＤＭＡユニットの両者とも、適切なアドレスへデータを分配する前に内部にデータを記憶するが、ＤＭＡユニットは、ペリフェラルもしくはメモリ装置へ、またはペリフェラルもしくはメモリ装置からの、アドレスとバス制御信号とを供給し、そのペリフェラルまたはメモリ装置が読出または書込サイクルの間にあるペリフェラルまたはメモリ装置にアクセスするようにできる。
【０００８】
ＤＭＡユニットでは特定のチャネルが実現され、ペリフェラル装置またはメモリ装置が他のペリフェラルまたはメモリ装置へ／から（ＤＭＡユニットによる内部データ記憶を伴ってまたは伴わずに）データを転送できるようにする。チャネルは、ペリフェラルまたはメモリ装置からのＤＭＡリクエスト信号（ＤＲＥＱ）を介してアクティブにされ得る。ＤＭＡユニットはＤＲＥＱを受け、ＤＭＡアクノレッジ信号（ＤＡＣＫ）またはそれをシミュレートしたものを与え、チャネルを介してペリフェラルまたはメモリ装置へ／からデータを転送する。ＤＭＡチャネルをよく使用するペリフェラル装置には、ＤＲＡＭ（ダイナミックランダムアクセスメモリ）リフレッシュ回路、サウンドカード、ＳＣＳＩホストアダプタ、パラレルポート、テープカード、ネットワークカード、モデム、およびフロッピーディスクコントローラがある。
【０００９】
ダイレクトメモリアクセスチャネルは従来、ハードウェアでサポートされており、ダイレクトメモリアクセスコントローラ内の制御論理によって管理されている。この制御論理は、典型的には複数のレジスタ（たとえばＤＭＡコマンドレジスタ、ＤＭＡモードレジスタ、ＤＭＡステータスレジスタ、ＤＭＡマスクレジスタ、ＤＭＡリクエストレジスタ、ＤＭＡカウントレジスタ、およびＤＭＡアドレスレジスタなど）の形態をとり、貴重なシリコンスペースを取ってしまう。各ダイレクトメモリアクセスチャネルは制御論理中の固有の部分（たとえばＤＭＡカウントレジスタおよびＤＭＡアドレスレジスタ）と対応づけられている。
【００１０】
ＵＳ−Ａ−５，６１９，７２７は、ｎ個のＤＭＡブロックが直列に接続され、各ＤＭＡブロックがデータ転送のためのｍ個の独立したチャネルを有する、複数チャネルのダイレクトメモリアクセス装置を開示する。ソースアドレスおよびデスティネーションアドレスなど、ＤＭＡ転送を制御するためのパラメタは、ｍ個のチャネルの各々に対してメモリ内に格納される。この装置では、各ＤＭＡブロックが、それ自体の物理制御回路およびそれ自体の物理制御レジスタを備える物理ＤＭＡチャネルを有する。
本発明によれば、複数の仮想ダイレクトメモリアクセスチャネルをサポートするためのダイレクトメモリアクセスエンジンが提供され、このダイレクトメモリアクセスエンジンはダイレクトメモリアクセスコントローラを含み、ダイレクトメモリアクセスコントローラは、物理ダイレクトメモリアクセス制御ブロックと、物理ダイレクトメモリアクセスチャネルリソースと、物理ダイレクトメモリアクセス制御ブロックに結合されて物理ダイレクトメモリアクセス制御ブロックおよび物理ダイレクトメモリアクセスチャネルリソースを共有する複数の仮想ダイレクトメモリアクセスチャネルとを含み、上記ダイレクトメモリアクセスエンジンはさらに、複数の仮想ダイレクトメモリアクセスチャネルに対するパラメタを格納するパラメタテーブルを含むメモリを含み、上記ダイレクトメモリアクセスコントローラはさらに、物理ダイレクトメモリアクセス制御ブロックおよび物理ダイレクトメモリアクセスチャネルリソースに結合される物理ダイレクトメモリアクセスチャネルとを含む。
好ましくは、ダイレクトメモリアクセスエンジンはさらに、複数の仮想ダイレクトメモリアクセスチャネルのアクティブチャネルに対するダイレクトメモリアクセスリクエスト線およびダイレクトメモリアクセスアクノレッジ線を含む。
【００１１】
本発明により、各ダイレクトメモリアクセスチャネルをそれ自体の制御論理と対応づける必要がなくなる。このようにして、複数のダイレクトメモリアクセスチャネルに対するダイレクトメモリアクセス制御論理で大きなシリコン面積を費やすのではなく、単一のダイレクトメモリアクセスに対するダイレクトメモリアクセス制御情報を記憶するために、メモリが用いられる。
【００１２】
添付の図面を参照するとともに以下の発明の詳細な説明を考察することにより、本発明をよりよく理解することができる。
【００１３】
【発明の実施の形態】
ここで図面を参照して、図１は、本発明に従ったマイクロコントローラＭのアーキテクチャ例のブロック図である。マイクロコントローラＭは種々のオンチップユニットをサポートし得る。図示したアーキテクチャでは、実行ユニット１００と、メモリユニット１０２と、バス制御ユニット１０４と、ダイレクトメモリアクセス（ＤＭＡ）ユニット１０６と、テストアクセスポート１０８と、タイマユニット１１０と、ペリフェラル制御ユニット１１２と、割込み制御ユニット１１４と、プログラマブルＩ／Ｏユニット１１６と、ポートユニット１１８とが、各々、システムバス１２０に結合される。システムバス１２０は、これらの結合されたユニットのいずれかの間に、データ、アドレスおよび制御情報を通信するためのデータバス、アドレスバスおよび制御バスを含み得る。
【００１４】
実行ユニット１００には、メモリユニット１０２により記憶されたコードを実行するための高度に集積化されたプロセッサ１０１が備えられ得る。開示した実施例における実行ユニット１００は、カリフォルニア州サニィベイルのアドバンスト・マイクロ・ディバイシズからの種々のマイクロコントローラに実装されたＡｍ１８６命令セットと互換性がある。この実行ユニット１００の代わりに他のさまざまな実行ユニットを用いてもよい。
【００１５】
メモリユニット１０２は、オンチップまたはオフチップメモリ装置への、およびオンチップまたはオフチップメモリ装置からのデータ通信を制御するための、複数のメモリコントローラをサポートし得る。これらのメモリ装置は、たとえば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、読出専用メモリ（ＲＯＭ）、および／またはフラッシュメモリを含み得る。メモリコントローラの一例として、拡張データ出力（ＥＤＯ）および同期ＤＲＡＭ（ＳＤＲＡＭ）サポート、書込バッファリングサポート、ならびに先読みバッファリングサポートを提供するＤＲＡＭコントローラが挙げられる。
【００１６】
バス制御ユニット１０４は、種々のバスを制御し、かつそれらのバスに接続されたペリフェラルをサポートするためのバスコントローラのホストを提供し得る。これらのバスコントローラは、たとえば、ＵＳＢ（Universal Serial Bus）コントローラ、ＩＳＡ（Industry Standard Architecture）バスコントローラ、ＰＣＩ（Peripheral Component Interconnect）バスコントローラ、汎用バスコントローラ、および／またはＶＬ−バスコントローラを含み得る。バス制御ユニット１０４は、このように、マイクロコントローラＭが多数の外部バスおよびペリフェラルをサポートできるようにする。
【００１７】
ＤＭＡユニット１０６には、マイクロコントローラＭのユニット間のダイレクトメモリアクセス転送を制御するためのいくつかのＤＭＡチャネルを有する複数のＤＭＡコントローラが備えられ得る。本発明によれば、ＤＭＡユニット１０６は、複数の仮想ＤＭＡチャネルをサポートするためのＤＭＡエンジン１５０を備える。テストアクセスポート１０８は、製造環境においてマイクロコントローラＭをテストするためのスキャンインターフェイスをもたらし、ポート１０８のテスト論理を制御するためのテストアクセスポート（ＴＡＰ）コントローラをサポートする。
【００１８】
ペリフェラル制御ユニット１１２は、種々のペリフェラル装置を制御するための集積化されたペリフェラルコントローラのホストを提供し得る。これらのペリフェラルコントローラは、たとえば、グラフィックコントローラ、キーボードコントローラ、および／またはＰＣカードコントローラを含み得る。グラフィックコントローラは、内部の統合メモリアーキテクチャ（ＵＭＡ）および種々のグラフィックアダプタとのソフトウェア互換性をもたらす。ＰＣカードコントローラまたはアダプタは、ＰＣＭＣＩＡ（パーソナルコンピュータメモリカード国際協会）の規格に従うのが好ましい。
【００１９】
割込み制御ユニット１１４は、複数の割込みリクエストをサポートするための複数の割込みコントローラを備え得る。各割込みコントローラは、それに対応する割込みリクエストの発行および受理を規制し得る。プログラマブルＩ／Ｏユニット１１６は、複数の汎用Ｉ／Ｏピンをサポートする。これらのピンは、マイクロコントローラＭに外部装置のためのパラレルインターフェイスを与える。ポートユニット１１８は、標準パラレルポートインターフェイス、シリアルポートインターフェイス、および／または赤外ポートインターフェイスをもたらし得る。パラレルポートインターフェイスは、高速転送のための強化パラレルポート（ＥＰＰ）モードをサポートし得る。シリアルポートインターフェイスおよび赤外インターフェイスは、ＰＣ互換性がもてるように、業界標準ユニバーサル非同期レシーバ／トランスミッタ（ＵＡＲＴ）により駆動され得る。
【００２０】
マイクロコントローラＭのこれらのユニットは、さまざまな構成および組合せが可能である。マイクロコントローラＭは、たとえばＡｍ１８６TMＥＤマイクロコントローラ、ＥｌａｎTMＳＣ４００マイクロコントローラまたはＡｍ１８６TMＣＣマイクロコントローラであり得る。当然ながら、開示されたユニットは例示的であり、網羅的ではない。さらに、マイクロコントローラＭによりサポートされる特定のユニットの選択は、特定のマイクロコントローラのアプリケーションの機能であり得る。一例として、モバイルコンピューティングアプリケーションについては、赤外ポートインターフェイス、グラフィックコントローラ、およびＰＣカードコントローラがサポートされ得る。別の例としては、通信アプリケーションに関して、ＵＳＢコントローラおよびＨＬＤＣ（High-Level Data Link Control）コントローラがサポートされ得る。開示したマイクロコントローラＭはこのように、アーキテクチャ的な柔軟性を備える。
【００２１】
本発明に従った技術および回路は、多種多様のマイクロコントローラに適用可能である。「マイクロコントローラ」という用語自体が業界ではさまざまな異なる定義を有する。会社によっては、付加的特徴（Ｉ／Ｏなど）を備えるプロセッサコアがオン・ボードメモリを有さなければ「マイクロプロセッサ」であると呼ぶ場合もあり、今日では、デジタルシグナルプロセッサ（ＤＳＰ）は専用および汎用の両方のコントローラ機能に対して用いられる。ここでは、「マイクロコントローラ」という用語はこれらの製品すべてを包含して用いられており、通常は、単一モノリシック集積回路上において付加機能がすべて実現された実行ユニットを意味する。
【００２２】
図２を参照して、複数の仮想ＤＭＡチャネルをサポートするＤＭＡエンジン１５０の一例の概略図が示される。ＤＭＡエンジン１５０は、ＤＭＡコントローラ２００およびメモリ２０８を備える。ＤＭＡコントローラ２００は、単一の物理ＤＭＡチャネル２０４および複数の仮想ＤＭＡチャネル２０２をサポートする。複数の仮想ＤＭＡチャネル２０２は、ｎ（ｎは整数）個の仮想ＤＭＡチャネルとして表わされる。所与の時間には、複数の仮想ＤＭＡチャネル２０２のうち１つのチャネルがアクティブになり得る。アクティブな仮想ＤＭＡチャネルは、単一の物理ＤＭＡチャネル２０４を使用する。物理ＤＭＡチャネル２０４はこうして複数の仮想ＤＭＡチャネル２０４の間で変化する。図２において、斜線で示される物理ＤＭＡチャネル２０４は、ＶＩＲＴＵＲＬ＿ＤＭＡ＿１チャネルに対応するものとして表わされる。
【００２３】
アクティブ仮想ＤＭＡチャネル２０２によるＤＭＡ転送は、ＤＭＡコントローラ２００の物理ＤＭＡ制御ブロック２０６により制御される。物理ＤＭＡ制御ブロック２０６は、５つの標準型の構成レジスタ２２８（ＤＭＡモードレジスタ、ＤＭＡステータスレジスタ、ＤＭＡマスクレジスタ、ＤＭＡリクエストレジスタ、およびＤＭＡコマンドレジスタ）の何らかの組合せを含み得る。その時々で、物理ＤＭＡ制御ブロック２０６は、物理ＤＭＡチャネル２０４を用いる仮想ＤＭＡチャネル２０２に適応するように構成され得る。ＤＭＡコントローラ２００はさらに、物理ＤＭＡチャネルリソース２２０を含む。ＤＭＡコントローラ２００のプログラミング状態の間に、物理ＤＭＡチャネルリソース２２０および物理ＤＭＡ制御ブロック２０６が、アクティブ仮想ＤＭＡチャネルによるＤＭＡ転送に対するパラメタでプログラムされる。物理ＤＭＡチャネルリソース２２０は、単一の物理ＤＭＡチャネル２０４にのみ適応するように構成される。開示した実施例では、物理ＤＭＡチャネルリソース２２０は、単一のＤＭＡチャネルに対して、ＤＭＡ転送カウントレジスタ２２４およびＤＭＡアドレスカウンタ（ソースおよびデスティネーション）２２６などの１組のＤＭＡ転送制御リソースを含み得る。これに代えて、本発明によれば、ＤＭＡコントローラ２００は、より多数の仮想ＤＭＡチャネル２０２によって共有されるいかなる数の物理ＤＭＡチャネル２０４もサポートし得る。物理ＤＭＡチャネル２０４と同様、物理ＤＭＡチャネルリソース２２０の使用も複数の仮想ＤＭＡチャネル２０２の間で変化する。物理ＤＭＡチャネルリソース２２０は、ハードウェアを最小化するよう構成されるのが好ましい。
【００２４】
ＤＭＡコントローラ２００はさらに、メモリ２０８およびペリフェラル装置２１６に結合される。ＤＭＡコントローラ２００は、メモリ２０８にメモリ読出信号ＭＥＭ  ＲＤおよびメモリ書込信号ＭＥＭ  ＷＲを与える。ペリフェラル装置２１６には、ペリフェラル読出信号ＤＥＶ  ＲＤおよびペリフェラル書込信号ＤＥＶ  ＷＲがＤＭＡコントローラ２００により与えられる。メモリ２０８は、複数の仮想ＤＭＡチャネル２０２に対するパラメタを格納するためのパラメタテーブルまたは同様のデータ構成２１０をもたらす。複数の仮想ＤＭＡチャネル２０２に対するパラメタが、実行ユニット１００によりパラメタテーブル２１０にロードされ得る。メモリ２０８は実行ユニット１００にアドレス線ＡＤＤＲを与え、実行ユニット１００がパラメタテーブル２１０をアドレス指定できるようにする。仮想ＤＭＡチャネル２０２がアクティブになると、特定の仮想ＤＭＡチャネル２０２に対するパラメタが、パラメタテーブル２１０から物理ＤＭＡチャネルリソース２２０および物理ＤＭＡ制御ブロック２０６へ与えられる。開示した実施例では、関連のパラメタがＤＭＡコントローラ２００の物理ＤＭＡリソース２２０へ実行ユニット１００によってロードされる。ＤＭＡコントローラ２００は、ロードされたパラメタに基づいてＤＭＡ転送を行なう。ＤＭＡ転送中、ＤＭＡコントローラ２００は、メモリ２０８、ペリフェラル装置２１６および実行ユニット１００に結合されたローカルデータバスＤＡＴＡを所有する。
【００２５】
言うまでもなく、開示した実施例において少なくとも４つのタイプのＤＭＡ転送が可能である。すなわち、メモリ−ペリフェラル装置転送、ペリフェラル−メモリ装置転送、メモリ−メモリ装置転送およびペリフェラル−ペリフェラル装置転送である。メモリ−ペリフェラル装置転送は、メモリ読出信号ＭＥＭ  ＲＤおよびペリフェラル書込信号ＤＥＶ  ＷＲに従って行なわれるメモリ装置２０８からペリフェラル装置２１６へのデータ転送である。ペリフェラル−メモリ装置転送は、ペリフェラル読出信号ＤＥＶ  ＲＤおよびメモリ書込信号ＭＥＭ  ＷＲに従って行なわれるペリフェラル装置２１６からメモリ装置２０８へのデータ転送である。
【００２６】
メモリ−メモリ装置転送は、メモリ読出信号ＭＥＭ  ＲＤおよびメモリ書込信号ＭＥＭ  ＷＲに従って行なわれる、メモリ装置２０８のあるメモリアドレス領域からメモリ装置２０８の別のメモリアドレス領域へのデータ転送である。ペリフェラル−ペリフェラル装置転送は、ペリフェラル読出信号ＤＥＶ  ＲＤおよびペリフェラル書込信号ＤＥＶ  ＷＲに従って行なわれる、ペリフェラル装置２１６のあるＩ／Ｏアドレス領域からペリフェラル装置２１６の別のＩ／Ｏアドレス領域へのデータ転送である。メモリ−メモリ装置転送またはペリフェラル−ペリフェラル装置転送は、読出フェーズ、内部データ記憶フェーズ、および書込フェーズを含み得る。読出フェーズでは、読出アドレスがメモリ２０８またはペリフェラル装置２１６に与えられる。次に、読出データがＤＭＡコントローラ２００の一時レジスタ（図示せず）により記憶され得る。その後、書込アドレスがメモリ２０８またはペリフェラル装置２１６に与えられる。これに代えて、一時レジスタなしにメモリ−メモリ転送またはペリフェラル−ペリフェラル転送を行なうこともできる。簡略化のため、単一のメモリ装置２０８および単一のペリフェラル装置２１６が図示されるが、ＤＭＡエンジン１５０は、複数のメモリ装置および複数のペリフェラル装置の間でＤＭＡ転送を制御してもよい。開示した実施例では、仮想ＤＭＡチャネル２０２はメモリ装置２０８またはペリフェラル装置２１６に割当てられ得る。
【００２７】
ＤＭＡエンジン１５０はさらに、ＤＭＡリクエスト／アクノレッジポートブロック２１２を含む。開示した実施例では、ＤＭＡリクエスト／アクノレッジポートブロック２１２は、ペリフェラル装置２１６またはメモリ装置２０８からリクエスト信号ＤＲＥＱ（ｎ）を受け得る。ある装置が、ＤＭＡリクエスト信号ＤＲＥＱ（ｎ）をＤＭＡリクエスト／アクノレッジポートブロック２１２へ与え、ＤＭＡ転送を要求する。ＤＭＡリクエスト／アクノレッジポートブロック２１２は、ＤＭＡアクノレッジ信号ＤＡＣＫ（ｎ）をペリフェラル装置２１６またはメモリ装置２０８へ供給し得る。ＤＭＡアクノレッジ信号ＤＡＣＫ（ｎ）がアクティブということは、仮想ＤＭＡチャネル２０２が可能化されており、ＤＭＡリクエストを発行した対応の装置がサービスを受けていることを示す。
【００２８】
図３を参照して、仮想ＤＭＡ制御処理の一例のフローチャートが示される。この仮想ＤＭＡ制御プロセスの例は、仮想ＤＭＡチャネル２０２によるＤＭＡ転送の初期化および実行を表わす。ステップ３００の始めに、ダイレクトメモリアクセスリクエスト信号ＤＲＱ（ｎ）がペリフェラル装置２１６またはメモリ装置２０８によってＤＭＡリクエスト／アクノレッジポートブロック２１２に対してアサートされているか否かが判断される。ＤＲＱ（ｎ）がアサートされていなければ、またはアクティブでなければ、制御はステップ３００にとどまる。ＤＲＱ（ｎ）がアクティブであれば、制御はステップ３０２へ進み、ここでＤＭＡリクエスト／アクノレッジポートブロック２１２により割込信号ＩＮＴが実行ユニット１００に与えられる。次に、ステップ３０４で、実行ユニット１００は、ＣＰＵ読出信号ＣＰＵ  ＲＤを与えて、ＤＭＡリクエスト／アクノレッジポートブロック２１２を読出し、どの装置がサービスを要求しているかを判断する。ステップ３０４から、制御はステップ３０６に進み、ここでＤＭＡコントローラ２００は、ＤＭＡ転送のために割り当てられた仮想ＤＭＡチャネル２０２に対するパラメタでロードされる。これらのパラメタは、パラメタテーブル２１０からＤＭＡ制御ブロック２０６および物理ＤＭＡリソース２２０へロードされる。パラメタのある一部はＤＭＡ制御ブロック２０６にロードされ、またパラメタのある一部は物理ＤＭＡチャネルリソース２２０にロードされ得る。
【００２９】
ＤＭＡエンジン１５０はさらに、特定の調停方式に従って複数の仮想ＤＭＡチャネルリクエスト間で仮想ＤＭＡチャネル２０２を選択するためのＤＭＡアービタ（図示せず）を含み得る。複数のダイレクトメモリアクセスリクエスト信号ＤＲＱ（ｎ）が同時にアクティブになると、優先順位の最も高いダイレクトメモリアクセスリクエストＤＲＱ（ｎ）が選択される。
【００３０】
次に、ステップ３０８で、ＤＭＡコントローラ２００は要求を発した装置に通常のアクノレッジ信号ＡＣＫで肯定応答する。ステップ３０９で、アクノレッジ信号ＤＡＣＫ（ｎ）が、ＤＭＡリクエスト／アクノレッジポートブロック２１２により要求している装置に対してアサートされ、割当てられたまたはアクティブな仮想ＤＭＡチャネル２０２を可能化またはアクティブにする。適切なＤＡＣＫ（ｎ）信号がＤＭＡリクエスト／アクノレッジポートブロック２１２のステアリング論理２１４により決定される。ステアリング論理２１４は、本質的には、割当てられたまたはアクティブな仮想ＤＭＡチャネル２０２に対応する通常のアクノレッジ信号ＡＣＫを検出するので、要求を発した装置に対応のアクノレッジ信号ＤＡＣＫ（ｎ）が与えられ得る。このステアリングフェーズの前には、アクノレッジ信号ＤＡＣＫ（ｎ）は、複数の仮想ＤＭＡチャネル２０２により仮想的な意味で物理レベルで共有されている。物理的なレベルでは、物理的なＤＭＡチャネル２０４は仮想的に通常のアクノレッジ信号ＡＣＫを共有する。通常のアクノレッジ信号ＡＣＫは適切なＤＡＣＫ（ｎ）信号に振分けられる。
【００３１】
ステップ３１０において、アクティブな仮想ＤＭＡチャネル２０２に対するＤＭＡ転送が、物理ＤＭＡ制御ブロック２０６および物理ＤＭＡチャネルリソース２２０にロードされたパラメタに基づいて行なわれる。ステップ３１０から、制御はステップ３１２へ進み、ここで実行ユニット１００は、たとえば割込みなどにより、仮想ＤＭＡ動作が完了したことを通知される。制御はステップ３１４を経て終了し、このステップ３１４で仮想ＤＭＡ制御処理が完了する。
【００３２】
このように、本発明は、複数の仮想ダイレクトメモリアクセスチャネル２０２をサポートするためのダイレクトメモリアクセスエンジン１５０を提供する。ダイレクトメモリアクセスエンジン１５０は、ダイレクトメモリアクセスコントローラ２００と、複数の仮想ダイレクトメモリアクセスチャネル２０２に対するパラメタを含むメモリ２０８内のパラメタテーブル２１０とを含む。ダイレクトメモリアクセスエンジン１５０は、単一の物理的なダイレクトメモリアクセスチャネル２０４および複数の仮想ダイレクトメモリアクセスチャネル２０２を備える。複数の仮想ダイレクトメモリアクセスチャネル２０２のうち１つのチャネルが、ある所与の時間にアクティブにされ得る。アクティブチャネル２０２に対するパラメタは、パラメタテーブル２１０から、ダイレクトメモリアクセスコントローラ２００のダイレクトメモリアクセス制御ブロック２０６および物理ダイレクトメモリアクセスチャネルリソース２２０へロードされる。物理ダイレクトメモリアクセス制御ブロック２０６は、物理ＤＭＡチャネルリソース２２０を用いて、ロードされたパラメタに基づいてアクティブチャネル２０２に対するダイレクトメモリアクセス転送を行なう。物理ＤＭＡチャネルリソース２２０は、複数の仮想ダイレクトメモリアクセスチャネル２０２により共有される。ダイレクトメモリアクセスエンジン１５０はさらに、複数の仮想ダイレクトメモリアクセスチャネル２０２のアクティブチャネル２０２のためのダイレクトメモリアクセスリクエスト線ＤＲＥＱ（ｎ）およびダイレクトメモリアクセスアクノレッジ線ＤＡＣＫ（ｎ）を含む。
【００３３】
当然ながら、ＤＭＡコントローラ２００は、より多数の仮想ＤＭＡチャネル２０２によって共有されるいかなる数の物理ＤＭＡチャネルにも適応できるように、複数の物理ＤＭＡチャネルリソース２００および複数の物理ＤＭＡ制御ブロック２０６をサポートし得る。
【００３４】
本発明により、各ダイレクトメモリアクセスチャネルをその固有の制御論理と対応づける必要がなくなる。この方法で、複数のダイレクトメモリアクセスチャネルに対するダイレクトメモリアクセス制御論理で大きなシリコン面積を費やすのではなく、単一のダイレクトメモリアクセスチャネルに対するダイレクトメモリアクセス制御情報を記憶するためにメモリが用いられる。
【００３５】
本発明の前述の開示および記述は本発明を例示しかつ説明するものであり、図示した回路、構造および動作方法の細部と同様、構成要素、回路要素、信号、レジスタおよび接続などを前掲の請求の範囲から逸脱することなくさまざまに変更することが可能である。
【図面の簡単な説明】
【図１】  本発明に従ったダイレクトメモリアクセスエンジンを備えるマイクロコントローラのブロック図である。
【図２】  本発明に従った図１のダイレクトメモリアクセスエンジンの一例の概略図である。
【図３】  本発明に従った仮想ダイレクトメモリアクセス制御処理の一例のフロー図である。
【図１】
0004562107.tif 000002
【図２】
0004562107.tif 000003
【図３】
0004562107.tif 000004