(57)【要約】【課題】面積をわずかしか必要としない多重処理可能なＤＭＡモジュールを得る。【解決手段】本発明はＤＭＡモジュールに関する。このモジュールは、ＤＭＡプロセスにおいて記憶スペースを読み出しまたは書き込むために、アドレス可能なメモリ（５）において第１のアドレス（４６）が表す記憶スペースに読み出しアクセスし、そこで少なくとも１つの第２のアドレス（５２）を読み出す。またこのモジュールは、第２のアドレス（５２）を隣接する記憶スペースに合わせて前方向調整し、第２のアドレス（５２）が表す記憶スペースで書き込みまたは読み出しアクセスを実行する。このモジュールは最後に、第１のアドレス（４６）が表す記憶スペースにこの第２のアドレスを記憶させる。【選択図】図３
2004213666.tif 000002
【特許請求の範囲】
【請求項１】
ＤＭＡモジュールにおいて、すなわち
ａ）アドレス可能なメモリ（５）の記憶スペースへの書き込みおよび／または読み出しアクセスを実行するＤＭＡ制御ロジック（４２）と、
ｂ）記憶されたアドレスを隣接する記憶スペースに合わせて前方向調整するアドレスカウンタとを備える上記のＤＭＡモジュールにおいて、
このアドレスカウンタが、メモリ（５）からのアドレス値の読み出しと、そのアドレス値のメモリへの書き込みとの間で、このアドレス値を正確に１回前方向調整するものとして設けられていることを特徴とする、上記のＤＭＡモジュール。
【請求項２】
ＤＭＡモジュールを操作する方法であって、下記の諸段階を含むもの：
ａ）アドレス可能なメモリ（５）において第１のアドレスが表す記憶スペースに読み出しアクセスを実行して、そこで少なくとも１つの第２のアドレス（５２）を読み出すこと、
ｂ）第２のアドレス（５２）を隣接する記憶スペースに合わせて前方向調整することと、第２のアドレス（５２）を第１のアドレスが表す記憶スペースに記憶させることとを、任意の順序で行うこと、
ｃ）第２のアドレス（５２）が表す記憶スペースで書き込みまたは読み出しアクセスを実行すること。
【請求項３】
段階ｃ）を実行する前にかならずカウント値（５３）を読み出すことと、そのカウント値（５３）を減分または増分して段階ｃ）の後でふたたび記憶することと、そのカウント値が事前指定された最終値に達するとその手順を終了することとを特徴とする、請求項２に記載の方法。
【請求項４】
カウント値（５３）が、段階ａ）の読み出しアクセスのときはそれとともに読み出され、段階ｂ）の書き込みアクセスのときはそれとともに書き込まれることを特徴とする、請求項３に記載の方法。
【請求項５】
いずれの書き込みないし読み出しアクセスも、ＤＭＡモジュール（４）をメモリ（５）と結合するバス（８）の１サイクルの範囲内で行われることを特徴とする、請求項２〜４のいずれかに記載の方法。
【請求項６】
ＤＭＡモジュール（４）は、それがメモリ（５）へのアクセスを行う１つのバスサイクルで、同様にメモリ（５）と結合されているマイクロコントローラ（１）を停止させることを特徴とする、請求項２〜５のいずれかに記載の方法。
【請求項７】
周辺モジュールがＤＭＡアクセスをリクエストし、周辺モジュールの識別により第１のアドレスを選択するという段階を含む、請求項２〜６のいずれかに記載の方法。
【請求項８】
周辺モジュールがその割り込みリクエスト回線を経由してＤＭＡアクセスをリクエストすることを特徴とする、請求項７に記載の方法。
【請求項９】
割り込みリクエスト回線を経由してＤＭＡアクセスを作動するとき、割り込みリクエストは抑制されることを特徴とする、請求項７または８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＭＡモジュールとその操作方法に関する。ＤＭＡモジュールは、定期的に反復されるデータ転送タスクをＣＰＵから負担解除するため、マイクロコンピュータシステムやマイクロコントローラシステムで使用される。ＤＭＡモジュールとは、次のように特化されたプロセッサの一種と理解される。すなわち、アクセスしたい記憶領域の指定、たとえばスタートおよびストップアドレス、あるいはスタートアドレスおよびそれにつながるいくつかの記憶スペースの指定を受け取り、指定された領域のアドレスを順次迅速にアドレスバスにアウトプットして、記憶領域の迅速な読み出しと書き込みを可能にするプロセッサである。ＤＭＡモジュールは、２つの記憶領域の間、または１つの記憶領域と周辺装置との間のそのようなデータ転送を可能とし、そのためのＣＰＵの処理タスクを必要としない。従ってＤＭＡモジュールは、ＣＰＵに単純なデータ転送タスクの負担を解除し、平均的に達成可能なＣＰＵパフォーマンスをこれにより向上する。
【背景技術】
【０００２】
ＣＰＵとＤＭＡモジュールがメモリにアクセスするための共通なバスを共有するならば、ＤＭＡモジュールがメモリにアクセスして書き込みまたは読み出しするバスサイクルごとに、ＣＰＵが同時にアクセスを試みるのを防止するため、ＣＰＵを停止しなければならない。この「サイクル  スティーリング（ｃｙｃｌｅ  ｓｔｅａｌｉｎｇ）」と呼ばれる方法の場合、ＣＰＵはたしかにＤＭＡの操作によってわずかにブレーキをかけられる。しかしこのようにして失われるＣＰＵサイクルの個数は、ＣＰＵ自体がデータ伝送を制御しなければならない場合よりも明らかに少ない。従ってＤＭＡモジュールの使用によってＣＰＵパフォーマンスの向上が得られる。
【０００３】
ＤＭＡ伝送は、常にスタートアドレスからストップアドレスに行われる。従来の方法によれば、両方のアドレスともＤＭＡモジュールの内部レジスタに記憶される。これにより、ただ１つのバスサイクルの中で１つのアドレスをアウトプットし、そのアドレスが表す記憶場所を読み出しあるいは書き込んで、それに続く読み出し動作または書き込み動作のためアドレスカウンタを前方向調整することができる。
【０００４】
このようなレジスタを２つ持つＤＭＡモジュールは、その都度１つだけＤＭＡプロセスを同時に実行できる。優先度の高い１つのＤＭＡプロセスを実行できるようにするため、動作中のＤＭＡプロセスを中断しなければならないとき、動作中の優先度の低いプロセスはその時点の数値とともに、ＤＭＡモジュールから送出されて中間記憶されなければならない。優先度の高いプロセスの対応するパラメーターをロードして、そのプロセスを実行するためである。アドレスのこのようなロードアウトとロードインは、ＤＭＡモジュールとマイクロコントローラにブレーキをかけるので、望ましくないことである。
【０００５】
考えられるのは、このようなＤＭＡモジュールに多数のレジスタペアを装備し、これらのペアがさまざまなＤＭＡプロセスのパラメーターをそれぞれに含むことができるものとし、また動作中のＤＭＡプロセスを優先度の高いプロセスのために中断するには、これらのペアを切り替えるだけでよいようにすることであろう。
しかしこの場合に生じる問題は、この種のレジスタは半導体基板上の必要面積が大きく、同じ大きさのメモリエレメントがＲＡＭ中で必要とする面積の５倍に達することである。必要面積がこのように大きいため、多重処理可能なＤＭＡモジュールの製造は高価なものとなる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の課題は、面積をわずかしか必要としないＤＭＡモジュールを得ること、ないしはこのような面積の小さいＤＭＡモジュールを使用できるＤＭＡモジュール操作方法を得ることである。
【課題を解決するための手段】
【０００７】
この課題はまず、次のようなＤＭＡモジュールの場合、すなわち従来の方法によって、アドレス可能なメモリの記憶スペースへの書き込みアクセスまたは読み出しアクセスを実行するＤＭＡ制御ロジックと、記憶されたアドレスを隣接する記憶スペースに合わせて前方向調整するアドレスカウンタとを備えるＤＭＡモジュールの場合、次のようにして解決される。すなわち、このアドレスカウンタは、ＤＭＡモジュールの内部レジスタには働かず、メモリからのアドレス値の読み出しとメモリへのアドレス値の書き込みとの間に、このアドレス値を正確に１回前方向調整するものとして設けられることにより、解決される。言い換えれば、アドレスカウンタが、メモリからのアドレス値の読み出しとメモリへのアドレス値の書き込みとの間に、このアドレスカウンタを正確に１回、前に進めるように設けられることにより、解決される。アドレス値が読み出され、ないし書き込まれるメモリの記憶スペースは、従来の方法ではＤＭＡモジュールに内蔵されていたレジスタの機能をこうして引き受ける。このようにしてＤＭＡモジュールの必要スペースが減少し、重要な追加的利点として次のことが得られる。すなわち、多数のＤＭＡプロセスの制御にこのＤＭＡモジュールを使用することができ、これらのプロセスをたがいに中断することができる。そのためにはメモリの多数の記憶スペースを、ＤＭＡブロックを指定するためのメモリとして用意すればそれでよい。
【０００８】
このようなＤＭＡモジュールの操作は、次の諸段階からなる。
ａ）アドレス可能なメモリにおいて第１のアドレスが表す記憶スペースに対する読み出しアクセスの実行。これはそこで少なくとも１つの第２のアドレスを読み出すためであって、そのアドレスとは、動作中のＤＭＡプロセスでアクセスしなければならない次の記憶スペースを示すものである。
ｂ）第２のアドレスを隣接する記憶スペースに合わせて前方向調整する（または、第２のアドレスを隣接する記憶スペースに合わせて前進させる）。この第２のアドレスを、第１のアドレスが表す記憶スペースに記憶させる。
ｃ）第２のアドレスが表す記憶スペースに、書き込みアクセスまたは読み出しアクセスを実行する（この場合、最初に第２のアドレスを前方向調整して、次にその表す記憶スペースにアクセスするのか、あるいはその逆を行うのかはどうでもよいことである）。
【０００９】
これまでＤＭＡプロセスから次のプロセスに交代するには、まずレジスタ値を送出して交換する必要があったが、ＤＭＡプロセスに必要なパラメーターはアドレス可能なメモリにつねに存在するので、その必要はなくなる。従って、さまざまなＤＭＡプロセス間の迅速な切り替えが可能である。
１つのＤＭＡプロセスがいつ完了したかを、ＤＭＡモジュールが検出できるためには、段階ｃ）を実行する前にかならず、実行されるべきメモリアクセスの回数を表すカウント値を読み出すこと、そしてそのカウント値を減分し、段階ｃ）を実行した後そのカウント値をふたたび記憶させることが合目的である。ＤＭＡモジュールはそのカウント値により、ＤＭＡプロセスがいつ完了したかを検出し、プロセス動作を正しい時点で終了することができる。
【００１０】
メモリアクセスの回数を最小限にするためには、このカウント値を段階ａ）の読み出しアクセスごとにともに読み出し、段階ｂ）の書き込みアクセスごとにともに書き込むのが合目的である。これが問題なく可能なのは、第２のアドレスとカウント値の總ビット数が、個々の読み出しアクセスで読み出されたデータワードの幅、すなわちデータバスの幅を超えない場合である。従って１つのＤＭＡプロセスに必要なパラメーターを読み出し、ないし書き込むには、それぞれ１つのバスサイクルで十分である。
【００１１】
本発明のもう１つの視点は、周辺モジュールがＤＭＡ転送を「注文する」のに用いるＤＭＡリクエスト信号を伝送するため、周辺モジュールにしばしばいずれにせよ設けられている割り込みリクエスト回線を利用することである。したがって有利な方法として、ＤＭＡモジュールを割り込みコントローラへのリクエスト回線に接続し、いわば割り込みコントローラに前置する。
【００１２】
このようにして、高価な割り込みを導入する以前に、（ＣＰＵパフォーマンスと比較して）「より安価な」いくつかのＤＭＡ転送を導入する構造が生まれる。このような構造は、いちじるしいＣＰＵ負荷なしで、長いインターバルにわたってデータを収集し、最後にＣＰＵ関与の下に集中して処理を行うのに適している。
【００１３】
本発明によれば、最初はＤＭＡ制御の下にゆっくりと、周辺モジュールとＲＡＭとの間でデータ表を伝送するが、最後にＣＰＵ割り込みルーチンを導入する。このＣＰＵ割り込みルーチンにおいて、ＣＰＵが時間的に集中してたとえば既存のデータ表を処理し、次にＤＭＡモジュールを次のデータ表伝送のためにコンフィギュレーションし、このＤＭＡシーケンスをスタートすることができる。
【発明を実施するための最良の形態】
【００１４】
本発明のそのほかの諸特徴と利点を、添付の図面の引用による下記の実施例をもとに説明する。
図１に図式的に示したマイクロコントローラシステムは、ＣＰＵ１、バスコントローラ２、割り込み管理ユニット（割り込みコントローラＩＣＵ）３、ＤＭＡコントローラ４、スタティック・ランダムアクセスメモリ（ＳＲＡＭ）５、読み出し専用メモリ（ＲＯＭ）６、入／出力モジュール７を備える。これらのコンポーネント１〜７は、アドレス−、データ−、制御−回線を持つ内部のバス８によって相互に結合されている。Ｉ／Ｏモジュール７はさらに外部の１つまたは複数のデータ端末と結合され、データ端末からデータを受け取って内部のバス８に供給するか、あるいはデータ端末に内部のバス８からデータを出力する。Ｉ／Ｏモジュール７、ＤＭＡコントローラ４、ＩＣＵ３は、バス８から分離された多数の制御回線９〜１２によって相互に直接結合されているが、図２も併せて用いこれらの構造と機能をさらに詳しく説明する。
【００１５】
図２はＤＭＡコントローラ４の構造の詳細を示す。ＤＭＡコントローラ４の機能は２つに分かれるがその１つが、ＤＭＡアクセスを作動できるさまざまなプロセスの管理、ここではモジュール７を介してマイクロコントローラシステムと結合しているさまざまなデータ送信装置または受信装置の管理、すなわちあたえられた時点で複数のプロセスのうちいずれのためにＤＭＡを実行するのか決定することである。ＤＭＡコントローラ４のもう１つの部分は、具体的なメモリアクセスの制御を担当する。これら２つの領域の管理回路を、ここではＤＭＡチャンネルロジック４１ないしＤＭＡ制御ロジック４２と呼ぶ。ＤＭＡチャンネルロジック４１は、いずれのＤＭＡチャンネルに対しても、すなわちそのためにＤＭＡを作動できるいずれのプロセスに対しても１回存在する。リクエストプロセスｘを識別する信号ＤＲＥＱｘ（ｘ＝１、２、３等）を制御回線９から加えられるインプットマルチプレクサ４３は、ＤＭＡプロセスがペンディングであることを表明するフラッグを、ＲＳフリップフロップでセットする。対応するＤＭＡサイクルが動作終了しているとき、このフラッグはＤＭＡチャンネルロジック４１により自動的にリセットされる。リリースフラッグＥＮは、プライオリティエンコーダー４５に対してこのペンディングフラッグをマスクする。プライオリティエンコーダー４５はすべてのＤＭＡチャンネルロジック４１のアウトプットと結合されており、みずからのアウトプットに順序数を供給する。この順序数とは、ペンディングであるＤＭＡプロセスのチャンネルロジック４１のうち優先度レベルが最も高いものに対応するものである。個々のプロセスの優先度レベルは、プライオリティエンコーダー４５に記録される。ＤＭＡチャンネルロジック４１は、さらに制御回線１０を経由して作動プロセスに、肯定応答信号ＤＡＣＫｘをフィードバックする。この信号はＤＭＡアクセスの実行を表示する。また―アクセス方向に応じて―メモリ５から読み出されたデータ値が内部のバス８にあって受け入れ可能であること、あるいはプロセスから供給されたデータ値が受け入れ済みであって、新たなデータ値を供給しなければならないことを、プロセスに通知する。
【００１６】
スイッチ４７がリクエスト信号回線ＤＲＥＱｘ（ｘ＝１、２、３）に配置されている。このスイッチによって、回線ＤＲＥＱｘに到着する信号を直接ＩＣＵ３にループして、割り込みを作動できるようにするか、あるいはＤＭＡチャンネルロジック４１から生じた制御信号をＩＣＵ３に供給するかのどちらかを、選択して行うことができる。回線１２は、リクエスト信号ＤＲＥＱｘがスイッチ４７で回線１１にループされるという条件のとき、ＩＣＵ３とインタフェース７との間でデータを直接伝送するのに用いられる。
【００１７】
ＤＭＡ制御ロジック４２は、１つのＤＭＡサイクルの範囲内で、いずれの個々のアクセスの実行をも制御する。時間的にオーバーラップして実行できるさまざまなＤＭＡプロセスを管理するため、ＤＭＡ制御ロジック４２は、ＳＲＡＭ５にファイルされているＤＭＡベクトル表５１にアクセスする。このＤＭＡベクトル表５１のスタートアドレスは、ＤＭＡ制御ロジック４２のＤＭＡベクトルベース（表開始レジスタ）４６に記録されている。ＤＭＡベクトル表の記入は３２ビットワードであって、これらのワードはＤＭＡプロセスの指定を形成し、図３に示すように、それぞれ２４ビット幅のアドレス５２と８ビット幅のカウント値とにより構成される。このアドレスは、ＳＲＡＭ５においてＤＭＡアクセスを行いたいとされるブロックのスタートアドレスであり、カウント値はこのブロックの長さをバイトで表示する。
【００１８】
このアドレスとカウント値は、ＤＭＡプロセスの開始前にその都度、たとえばＣＰＵ１によってＤＭＡベクトル表５１に書き込まれる。このカウント値をここでたとえば８ビットと想定すると、ＤＭＡブロックは最大２8＝２５６バイトの長さを持つ。当然のことながら、このＤＭＡベクトルのスタートアドレスとカウント値への区分を任意にこれと異なるものとし、異なるブロック長さとすることも考えられる。
【００１９】
ＤＭＡ制御ロジック４２がプライオリティエンコーダー４５から、そのためアクセスを実行したいＤＭＡプロセスの番号を受け取ると、制御ロジック４２は、プライオリティエンコーダー４５から供給された番号の４倍をベクトルベース４６のアドレスに加算することにより、アクセスアドレスを計算する。プライオリティエンコーダー４５から供給された番号が、数値１、２または３を取ることができるとき、制御ロジック４２は、図３のベクトル表５１で「ＤＭＡ‐ベクトル１」、「ＤＭＡ‐ベクトル２」、「ＤＭＡ‐ベクトル３」などと記載されたフィールドにアクセスすることができる。
【００２０】
容易に理解できることであるがＤＭＡコントローラ４は、その回路構造にこれといった変更を加えずに異なる個数のＤＭＡプロセスを管理するために、容易に適合可能である。プロセスの個数に対する制限的要因は、プライオリティエンコーダー４５のアウトプット幅、すなわちプライオリティエンコーダーがＤＭＡ作動側プロセスの番号を制御ロジック４２に伝達する回線のビット数と、ＤＭＡベクトル表５１の大きさとの２つだけである。
【００２１】
図４は、１つのＤＭＡプロセスの過程におけるマイクロコントローラシステム内部のさまざまな信号の推移を示す。この場合ｆsysは、ＣＰＵとＤＭＡコントローラ４とが動作するときに用いるシステムクロックパルスを表す。ｆsysの１つの周期は、１つのＣＰＵクロックパルスに相当する。信号ＤＲＥＱｘ（ｘ＝１、２、３等）のパルスは、プロセスｘによるＤＭＡリクエストを表示する。このリクエストに対応が行われるまで、複数のクロックサイクルが経過することがある。対応が行われると、ＤＭＡコントローラ４からメモリ制御に供給される信号ＤＡＣＣが、低いレベルから高いレベルに切り替わる。これは、ＤＭＡコントローラ４がバスを支配していることと、ＣＰＵ１が書き込みまたは読み出しアクセスをしてはならないこととを表示するためである。レベルの高いＤＡＣＣをともなうクロックサイクルの最初のサイクルで、ＤＭＡコントローラ４は、ベクトル「ＤＭＡ‐ベクトル１」、「ＤＭＡ‐ベクトル２」または「ＤＭＡ‐ベクトル３」のうち１つのアドレスを、バス８のアドレス回線Ａに供給する。これらのベクトルのアドレスは、リクエスト側プロセスの識別と、ベクトルベース４６に記録されたアドレスとにより計算される。これらベクトルの表５１が存在するＳＲＡＭ５はそれに対して、対応するアドレスに記録されたＤＭＡブロックの指定（スタートアドレスと伝送されるべきバイト数からなる）を、バス８のデータ回線に合わせて設定する。これらの数値は、ＤＭＡコントローラ４からアドレスレジスタないしカウンタに受け入れられる。
【００２２】
続くクロックサイクルでは、ＤＭＡベクトルのアドレスがあらためてバス８のアドレス回線に合わせて設定される。同時に１だけ増分されたスタートアドレスと１だけ減分されたカウント値とが、バス８のデータ回線に供給される。これはそれまでのＤＭＡベクトルにこれらの数値を上書きするためである。
【００２３】
次のクロックサイクルでは、増分されたアドレスがアドレス回線にアウトプットされる。これは―ＤＭＡプロセスのアクセス方向に応じて―対応する記憶場所に書き込みまたは読み出しアクセスを実行するためである。
ただ１つのＤＭＡプロセスの複数の書き込みまたは読み出しアクセスが直接に、すなわち優先度がより高いＤＭＡプロセスによって中断されることなく順次続く場合、第２のおよびいずれのその後のメモリアクセスに対しても、ＤＭＡベクトルの読み出しの段階を省略できる。そこに記憶された指定は、ＤＭＡモジュールのレジスタにすでに記憶されているからである。従って、ＤＭＡベクトルが表す記憶場所は、次のようなレジスタの機能を持つ。それは、ＳＲＡＭ５にあるメモリアドレス、かつ次の書き込み／読み出しアクセスを行いたいアドレスのすぐ前のメモリアドレスを示すレジスタである。すなわち、あるＤＭＡプロセスを初期設定するとき、ＤＭＡベクトルに書き込まれるアドレス自体には何らアクセスが行われず、それに続くアドレスに初めてアクセスが行われる。カウント値が０（ゼロ）に達すると、ＤＭＡプロセスは終了される。
【００２４】
上記と異なる方法として、割り当てられたＤＭＡベクトルが示す記憶場所でＤＭＡプロセスを初期設定するとき、処理されるべきメモリブロックの大きさと、そこで書き込みまたは読み出し動作を実行したい最初のアドレスとが記憶されることも、もちろん意図できるであろう。その場合、上記図４に関連して説明した手順はわずかに変更されるだけであろう。ＤＭＡベクトルが表す記憶場所の読み出しには、そこに挙げられたアドレスへの書き込み／読み出しアクセスを直接続けることができよう。そして増分されたアドレスと減分されたカウント値は、それに続くクロックサイクルで、ＤＭＡベクトルが表す場所に記憶されることとなろう。
【００２５】
一連の場合においてＤＭＡプロセスは、ある１つの記憶スペースを読み出しまたはそれに書き込むために３クロックサイクルを、そして続く記憶スペースいずれのためにも、ＣＰＵが停止しているクロックサイクルを少なくとも２サイクル必要とする。これは、次のようなＤＭＡの場合よりも、すなわち、処理されるべきメモリブロックのアドレスがＤＭＡコントローラのレジスタに直接記録されており、送出が行われたメモリから得る必要がないＤＭＡの場合よりもたしかに遅い。しかしこれは依然として、ＣＰＵ１自体がこのタスクを実行しなければならない場合よりも明らかに速い。ＤＭＡコントローラ内に必要なレジスタの個数は、ＤＭＡコントローラ４が同時に処理できるＤＭＡプロセスの回数に依存しないので、任意の回数のＤＭＡプロセスを同時に処理できるＤＭＡコントローラを構成するのは、本発明によって非常に簡単になる。
【産業上の利用可能性】
【００２６】
本発明のＤＭＡモジュールは、マイクロコンピュータシステムやマイクロコントローラシステムで使用される。
【図面の簡単な説明】
【００２７】
【図１】本発明を応用できる典型的なマイクロコントローラシステムのブロック図。
【図２】本発明によるＤＭＡコントローラのブロック図。
【図３】ＤＭＡベクトル表の構造を示す図。
【図４】図２のＤＭＡコントローラに生じるさまざまな信号のタイムチャート。
【図１】
2004213666.tif 000003
【図２】
2004213666.tif 000004
【図３】
2004213666.tif 000005
【図４】
2004213666.tif 000006