(57)【要約】【課題】複数のデータ・ソースと、データ宛先のペアの間のデータ転送を制御するように動作できる直接メモリ・アクセス・コントローラ。【解決手段】少なくとも一つのデータ・ソースからデータを受信して少なくとも一つのデータ宛先へデータを出力するように動作可能な少なくとも一つのポートと、前記複数のデータ・ソースとデータ宛先のペアの前記少なくともいくつかの間でデータを転送をするように動作できるチャネルであって、前記チャネルはデータ転送制御データを記憶するように動作できるレジスタとを含み、前記データ転送制御データは、転送される前記データのソース・アドレス、転送される前記データの宛先アドレスおよび制御データを含み、前記データ・ソース・アドレスおよび前記データ宛先アドレスが前記データ・ソースとデータ宛先を規定する。【選択図】図１
2007172622.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ・ソースとデータ宛先のペアの間でデータ転送を制御するように動作できる直接メモリ・アクセス・コントローラであって、
（ｉ）少なくとも一つのデータ・ソースからデータを受信して、少なくとも一つのデータ宛先へデータを出力するように動作できる少なくとも一つのポートと、
（ｉｉ）前記複数のデータ・ソースとデータ宛先のペアの前記少なくともいくつかの間でデータ転送をするように動作できる一つのチャネルとを含み、前記チャネルはデータ転送制御データを記憶するように動作できるレジスタを含み、前記データ転送制御データが転送されるべき前記データのソース・アドレス、転送されるべき前記データの宛先データおよび制御データを含み、前記データ・ソース・アドレスおよび前記データ宛先アドレスが前記データ・ソースおよびデータ宛先を規定するものであって、
（ｉｉｉ）データ・ソースとデータ宛先のペアの間のデータ転送に先立って、前記直接メモリ・アドレス・コントローラが、メモリから前記データ・ソースおよびデータ宛先のペアに対応するデータ転送制御データを要求して、前記データ転送制御データを前記チャネル・レジスタ内に記憶するように動作可能であり、
（ｉｖ）前記データ転送の保留または完了に引き続いて、前記直接メモリ・アクセス・コントローラが前記メモリへ修正されたデータ転送制御データを出力するように動作可能であり、これにより、前記メモリから受信されるデータ転送制御データに従って、異なったデータ・ソースとデータ宛先のペアの間でデータを転送するように、前記チャネルが動作できるようにした前記直接メモリ・アクセス・コントローラ。
【請求項２】
前記メモリ内のそれぞれのデータ・ソースおよびデータ宛先のペアの間のデータ転送のために、前記データ転送制御データの記憶位置を識別する識別子を記憶するように動作できるデータ記憶域を、前記直接メモリ・アクセス・コントローラが含む請求項１記載の直接メモリ・アクセス・コントローラ。
【請求項３】
前記識別子が、少なくとも一つのベース・アドレスおよび前記少なくとも一つのべース・アドレスに対する少なくとも一つのオフセットを含む請求項２記載の直接メモリ・アクセス・コントローラ。
【請求項４】
前記少なくとも一つのデータ・ソースおよび前記少なくとも一つのデータ宛先の内の少なくとも一つがメモリおよび周辺装置を含む請求項１記載の直接メモリ・アクセス・コントローラ。
【請求項５】
複数のデータ・ソースおよび複数のデータ宛先を含み、前記データ・ソースおよびデータ宛先の少なくともいくつかが周辺装置を含む請求項１記載の直接メモリ・アクセス・コントローラ。
【請求項６】
前記周辺装置の一つが前記複数のデータ・ソースの一つおよび前記複数のデータ宛先の一つを含む請求項１記載の直接メモリ・アクセス・コントローラ。
【請求項７】
異なったデータ・ソースおよびデータ宛先のペアの間でさらなるデータ転送を要求する信号に応答して、前記直接メモリ・アクセス・コントローラが現在のデータ転送を保留して、前記メモリへ修正された前記現在のデータ転送の制御データを出力して、前記さらなるデータ転送を遂行するのに先立って、前記さらなるデータ転送に関するデータ転送制御情報を受信するように動作できる請求項１記載の直接メモリ・アクセス・コントローラ。
【請求項８】
前記データ転送に関する先方優先進行信号を前記直接メモリ・アクセス・コントローラが検出するまで、さらなるデータ転送を要求する前記信号に応答して、前記データ転送を継続するように前記直接メモリ・アクセス・コントローラが動作可能であり、前記先方優先通行信号に応答して、前記データ転送を保留するように前記直接メモリ・アクセス・コントローラが動作できる請求項７記載の直接メモリ・アクセス・コントローラ。
【請求項９】
前記チャネルは、前記複数のデータ・ソースおよびデータ宛先のペアのいずれかの間でデータ転送をするように動作可能である請求項１記載の直接メモリ・アクセス・コントローラ。
【請求項１０】
前記チャネルは、前記チャネル・プログラム・カウンタを記憶するように動作可能なさらなるレジスタを含む請求項１記載の直接メモリ・アクセス・コントローラ。
【請求項１１】
複数のチャネルをさらに含み、前記複数のチャネルの各々はデータ転送制御データを記憶するためのそれぞれのレジスタを含み、前記データ転送制御データは転送されるべき前記データのソース・アドレス、転送されるべき前記データの宛先アドレスおよび制御データを含み、前記データ・ソース・アドレスおよび前記データ宛先アドレスが前記データ・ソースおよびデータ宛先を規定する請求項１記載の直接メモリ・アクセス・コントローラ。
【請求項１２】
前記それぞれのチャネルが割り当てられているかどうかを各々指示する複数のチャネルに対応する複数のインジケータを記憶するように動作できるチャネル割り当てレジスタを含み、前記チャネル割り当てレジスタに従ってデータ転送のために一つのチャネルを選択するように動作可能である請求項１１記載の前記直接メモリ・アクセス・コントローラ。
【請求項１３】
前記複数のチャネルの少なくとも一つが、前記複数のデータ・ソースとデータ宛先ペアの特定のあらかじめ定義された１つの間でデータを転送するように動作できる請求項１１記載の直接メモリ・アクセス・コントローラ。
【請求項１４】
請求項１から１３のいずれかに記載の直接メモリ・アクセス・コントローラおよび一つのメモリを含むデータ処理装置であって、前記メモリは特定データ・ソースおよびデータ宛先のペアの間のデータ転送に関するデータ転送制御情報を記憶するように動作でき、前記メモリが前記直接メモリ・アクセス・コントローラとバスを介してデータ通信する前記データ処理装置。
【請求項１５】
直接メモリ・アクセス・コントローラを使用して、複数のデータ・ソースおよびデータ宛先のペアの間のデータ転送を制御する方法であって、
（ｉ）前記複数のデータ・ソースおよびデータ宛先のペアの一つの間のデータ転送を要求する信号に応答するステップと；
（ｉｉ）前記データ・ソースおよびデータ宛先のペアに対応するデータ転送制御データをメモリから要求するステップと；
（ｉｉｉ）前記メモリから前記データ転送制御データを受信して、前記データ転送制御データを少なくとも一つのチャネルのレジスタに記憶するステップと、
（ｉｖ）前記少なくとも一つのチャネルを使用して、前記データ・ソースから前記データ宛先へデータを転送するステップと；
（ｖ）前記データ転送の完了または保留に引き続いて修正されたデータ転送制御データを前記メモリへ出力するステップとを含む前記方法。
【請求項１６】
前記データ・ソースおよびデータ宛先のペアに対応するデータ転送制御データを要求する前記ステップが、前記直接メモリ・アクセス・コントローラ内のデータ記憶域から前記ペアの前記データ転送制御データの記憶位置を識別する識別子を読み取って前記メモリ内の前記記憶位置にアクセスするステップを含む請求項１５記載の方法。
【請求項１７】
前記少なくとも一つのデータ・ソースおよび前記少なくとも一つのデータ宛先の少なくとも一つがメモリを含む請求項１５記載の方法。
【請求項１８】
前記少なくとも一つのデータ・ソースおよび前記少なくとも一つのデータ宛先の少なくとも一つが周辺機器を含む請求項１７記載の方法。
【請求項１９】
異なったデータ・ソースとデータ宛先のペアの間でさらなるデータ転送を要求する信号に応答して、データを転送する前記ステップを保留するステップを含む請求項１５記載の方法であって；
（ｉ）修正され保留された前記データ転送制御データを前記メモリへ出力するステップと、
（ｉｉ）さらなる前記データ転送に関するデータ転送制御情報を受信して、さらなる前記データ転送制御データを少なくとも一つのチャネルのレジスタへ記憶するステップと；
（ｉｉｉ）前記少なくとも一つのチャネルを使用して、異なった前記データ・ソースおよびデータ宛先のペアからデータを転送するステップを含む前記方法。
【請求項２０】
データを転送する前記ステップを保留する前記ステップは、異なったデータ・ソースおよびデータ宛先のペアの間のさらなるデータ転送を要求する信号および前記データ転送に関する先方優先通行信号に応答してのみ遂行される請求項１９記載の方法。
【請求項２１】
前記直接メモリ・アクセス・コントローラが複数のチャネルを含む請求項１５記載の方法であって、データ転送制御データを要求するのに先立ってチャネル割り当てレジスタを読み取って前記複数のチャネルの空いている一つを選択して、選択された前記チャネルのレジスタに前記データ転送制御データを記憶するさらなるステップを含む前記方法。
【請求項２２】
データ・プロセッサ上で実行するときに、請求項１５記載の方法のステップを遂行するように前記データ・プロセッサを制御するように動作可能なコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理システムにおけるデータ転送の制御の分野に関する。特に、本発明は、直接メモリ・アクセス・コントローラの分野に関する。
【背景技術】
【０００２】
直接メモリ・アクセス（ＤＭＡ）コントローラは、メモリと他の周辺装置の間または異なったメモリの間で、ＣＰＵを通じてデータを渡さずにデータ転送を制御するために使用される。ＤＭＡコントローラは、複数の制御チャネルを有することができ、これらはハードウェア内に設定されて、データ・ソースとデータ宛先の間のデータ転送に使用される。チャネルは、特定のデータ・ソースとデータ宛先の間のデータ・ストリームと見ることができる。ＡＲＭ（ＡＲＭケンブリッジ、英国、の登録商標）ＰＬ０８０／ＰＬ０８１において、各ＤＭＡチャネルはハードウェアで完全に装備され、それにより特定チャネルに関する全ての状態／記憶域が直ちに利用できるようになっている。これは、かなりのゲートカウントを必要とし、全てのチャネルが全ての時間においてアクティブであることはありそうもないので、ゲートカウントのいくらかは長時間にわたり使用されないままになる。さらに、ＤＭＡコントローラ内のボトルネック（たとえば、単一バス・インターフェイス・ユニット）は、全てのチャネルを同時に働かすわけではなく、それらをシーケンスにしなければならないことことを意味する。こうして、すべてのチャネルがアクティブである場合においても、それらはアービトレーションを待っている間、静止状態のままになっている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
いくつかのシステムにおいて、特に多数の周辺装置を有するシステムにおいて、多数のチャネルが必要であるが、しかし、周辺装置は低い周波数帯域を必要とするだけであり、多くの時間においてアクティブではなく、チャネルはしばしば使用されない。
【０００４】
いくつかの他の公知のシステムにおいて、いくつかの制御チャネルが一つの特定装置の専用であり、一方他の装置は空いているチャネルを選択して使用することができる。たとえば、ある周辺装置とメモリの間のデータ転送を開始するために、この特定装置のドライバがＤＭＡチャネルの一つを設定して、それからこの制御チャネルを使用して、いくつかのデータ項目からなるデータの一つのバーストを転送することができる。制御チャネルの設定は、チャネル・レジスタへ必要なコンテキスト情報を書き込むためのデバイス・ドライバを使用するＣＰＵによる、そうしたシステムにおいて実行をできる。これは明らかにＣＰＵ使用オーバーヘッドを有する。
【課題を解決するための手段】
【０００５】
本発明の第１の面が提供するのは、複数のデータ・ソースとデータ宛先のペアの間のデータ転送を制御するように動作できる直接メモリ・アクセス・コントローラであって、それは少なくとも一つのデータ・ソースからデータを受信して、少なくとも一つのデータ宛先へデータを出力するように動作できる少なくとも一つのポートと、前記複数のデータ・ソースとデータ宛先のペアの内の前記少なくともいくつかの間でデータ転送をするように動作できる一つのチャネルとを含み、前記チャネルはデータ転送制御データを記憶するように動作できるレジスタを含み、前記データ転送制御データが転送されるべき前記データのソース・アドレスと、転送されるべき前記データの宛先データおよび制御データを含み、前記データ・ソース・アドレスおよび前記データ宛先アドレスが前記データ・ソースおよびデータ宛先を規定するものであって、データ・ソースとデータ宛先のペアの間でデータ転送するのに先立って、前記直接メモリ・アクセス・コントローラがメモリから前記データ・ソースおよびデータ宛先のペアに対応するデータ転送制御データを要求して、前記データ転送制御データを前記チャネル・レジスタ内に記憶するように動作可能であり、前記データ転送の保留または完了に引き続いて前記直接メモリ・アクセス・コントローラが前記メモリへ修正されたデータ転送制御データを出力するように動作可能であり、これにより、前記メモリから受信されるデータ転送制御データに従って異なったデータ・ソースとデータ宛先のペアの間でデータを転送するように、前記チャネルが動作できるようにしたものである。
【０００６】
使用されるメモリから読み取られて修正されて、そしてメモリへ戻されて保存されるこのデータ・パスに対応するデータ転送制御情報を使用して、特定のデータ・ソースおよびデータ宛先ペアへ一つのチャネルを割り当てる能力は、現在のデータ転送要求に応答して、ＤＭＡコントローラが特定のデータ・ソースおよびデータ宛先のペアを一つのチャネルへ割り当てることを可能にする。これによりシステムが極度に柔軟になり、チャネルが割り当てられて使用されないことを避けるかまたはそれを少なくとも妨げることになり、それによりゲート使用の能率を増加する。こうして同一数のチャネルについてゲート・カウントの削減が達成され、または同一のゲート・カウントについて一層多くの数のチャネルが効果的に供給される。注意すべきは、データ・ソースとデータ宛先のペアがある特定時間において、データが相互に転送されるデータ・ソースとデータ宛先であるのみであることである。こうして、特定データ・ソースが多数のデータ宛先とペアを形成することおよびその逆が、可能になる。さらにある特定データ転送におけるデータ・ソースが異なったデータ転送におけるデータ宛先になることができる。同様に、データを受信し出力する少なくとも一つのポートがデータを受信し、出力する単一ポートを含むことができるし、および／または複数のポートがあって、少なくともそのいくつかが入力ポートまたは出力ポートとして専用であることもできる。
【０００７】
好ましくは、前記直接メモリ・アクセス・コントローラは、前記メモリ内のそれぞれのデータ・ソースおよびデータ宛先ペアの間のデータ転送について、前記データ転送制御データの記憶位置を識別する識別子を記憶するように動作できるデータ記憶域を含む。
【０００８】
しかしながら、ＤＭＡコントローラの外部のメモリにチャネルのコンテキストを記憶することにより、ＤＭＡコントローラ内の記憶空間が減少されるが、この節約のいくらかはこの外部メモリ内の各チャネルに対応するデータ転送制御データの記憶位置を識別する識別子を記憶する必要により相殺される。しかしながら、ＤＭＡコントローラ内にこれらの識別子を記憶する利点は、それにより要求されたコンテキスト情報へのアクセスが単純でまっすぐな方法で可能になることである。
【０００９】
いくつかの実施例において、これらの識別子は、メモリ内のデータ転送制御データのアドレスを含み、他においては、前記識別子が少なくとも一つのベース・アドレスおよび前記少なくとも一つのベース・アドレスに対する少なくとも一つのオフセットを含む。
【００１０】
たとえば、各チャネルについて所与のオフセットを有するバーチャル・チャネル・コンテキストのベースのアドレスであるベース・アドレスを使用することにより、このデータを記憶するのに必要な記憶空間の大きさを削減できるし、一方それへの容易なアクセスを可能にできる。
【００１１】
ほとんどの実施例において、前記少なくとも一つのデータ・ソースと少なくとも一つのデータ宛先の少なくとも一つは、一つのメモリおよび前記少なくとも一つのデータ・ソースの少なくとも一つを含み、また少なくとも一つのデータ宛先は周辺装置を含む。
【００１２】
いくつかの実施例において、直接メモリ・アクセス・コントローラは、複数のデータ・ソースおよび複数のデータ宛先を含み、そこで前記データ・ソースおよびデータ宛先の少なくともいくつかは、周辺装置を含む。
【００１３】
周辺装置は、しばしばそれらのデータ転送に関連する低周波数帯域を有し、またしばしばかなり長い時間にわたりアクティブでない。こうして、それらはデータ転送中のバーチャル・チャネルの使用によく適合し、それにより特定チャネルがすべての時間に使用されるように割り当てられずに、要求に応じてのみ割り当てられるようにすることができる。
【００１４】
いくつかの実施例において、前記周辺機器の一つは前記複数のデータ・ソースの一つおよび前記複数のデータ宛先の一つを含む。
【００１５】
ある一つの周辺機器が、ちょうどデータの一つのソースまたは宛先であり得るが、多くはデータの送信および受信の両方をすることができ、こうして一つの特定データ転送の間にデータ・ソースがあり得るし、一方もう一つの間にそれらはデータ宛先であり得る。
【００１６】
いくつかの実施例において、前記直接メモリ・アクセス・コントローラは、異なったデータ・ソースおよびデータ宛先のペアの間のさらなるデータ転送を要求する信号に応答して、現在のデータ転送を保留するように動作することができ、こうして前記修正された現在のデータ転送制御データを前記メモリに出力し、また前記さらなるデータ転送を進行するのに先立って、前記さらなるデータ転送に関するデータ転送制御情報を受信することができる。
【００１７】
データ転送の途中で一つのチャネルを解除する能力は、協調型マルチタスキング環境を可能にする。
【００１８】
好ましくは、前記直接メモリ・アクセス・コントローラは、前記さらなるデータ転送を要求する前記信号に応答して、前記直接メモリ・アクセス・コントローラが前記現在のデータ転送に関する先方優先通行（ｙｉｅｌｄ）信号を検出するまで、前記現在のデータ転送を継続するように動作可能であり、前記直接メモリ・アクセス・コントローラは、前記先方優先通行信号に応答して前記現在のデータ転送を保留するように動作可能である。
【００１９】
データ転送内の先方優先通行信号は、あるデータ転送を保留して他の一層緊急のデータ転送を遂行させることが安全である場合に、ＤＭＡコントローラに通知するために使用できる。これにより、不適当な瞬間にデータ転送が停止されるのを防ぎ、または少なくとも妨げることができ、データ転送を効率的な方法で保留させることをシステムが出来るようにする。
【００２０】
好ましくは、前記チャネルは、前記チャネル・プログラム・カウンタを記憶するように動作できるさらなるレジスタを含む。
【００２１】
前記チャネル内のチャネル・プログラム・カウンタ・レジスタは、チャネルがそのデータ転送を完了した時に、ＤＭＡプログラムの実行を再スタートできるようにする。
【００２２】
好ましくは、直接メモリ・アクセス・コントローラは複数のチャネルを含み、前記複数のチャネルの各々は、データ転送制御データを記憶するためのそれぞれのレジスタを含み、前記データ転送制御データは、転送されるべき前記データのソース・アドレスと転送されるべき前記データの宛先アドレスおよび制御データを含み、前記データ・ソース・アドレスおよび前記データ宛先アドレスは、前記データ・ソースおよび前記データ宛先を規定する。
【００２３】
各々が特定のデータ・ソース／データ宛先のペアに割り当て可能な複数のチャネルを使用することにより、非常に柔軟なシステムが可能になり、それはあまりにも多くのチャネルの必要なしに多くの異なったポイントの間でのデータを転送できるようにする。
【００２４】
有利には、直接メモリ・アクセスは、さらに前記複数のチャネルに対応する複数のインジケータを記憶するように動作できるチャネル割り当てレジスタを含み、そのインジケータの各々は、前記それぞれのチャネルが割り当てられているかどうかを示し、前記直接メモリ・アクセス・コントローラは、前記チャネル割り当てレジスタにより、データ転送のために一つのチャネルを選択するように動作できる。
【００２５】
ＤＭＡコントローラが適切なチャネルを選択できるようにするために、どのチャネルが空いているかを知ることが必要である。これは、チャネル割り当てレジスタの使用により単純だが洗練された方法で実行され、そこには特定チャネルの状態が単純に表現される。空いているチャネルが何もない場合は、ＤＭＡはある特定のデータ転送を保留することを選択するかも知れないが、しかしながらチャネル割り当てレジスタを供給することは、すべてのチャネルが現在割り当てられている場合にのみこれを実行することが必要であることを意味する。
【００２６】
いくつかの実施例において、前記複数のチャネル内の少なくとも一つは、前記複数のデータ・ソース、データ宛先ペアの内の特定の所定のものの間で、データを転送するように動作できる。
【００２７】
いくつかの実施例においては、特定のデータ・ソースまたはデータ宛先のペアをチャネルへ割り当てるほうが、それを直接に割り当てるよりも有利であることが発見された。これは、この特定ペアの間でデータがしばしば転送されて、こうしてこれらチャネルを保存し回復するために特別なバス活動が必要であり、またこれを実行するために必要な特別な時間が獲得される僅かな追加のチャネル資源と比較して有利ではない場合に特に適当である。
【００２８】
いくつかの実施例において、データ・ソースとデータ宛先のペアのサブセットへ一つのチャネルを割り当てることができ、一方他の実施例においては前記複数のデータ・ソースとデータ宛先のペアのいずれかの間で、一つのチャネルがデータを転送するように動作することができる。
【００２９】
本発明のなおさらなる面は、本発明の第１の面による直接メモリ・アクセス・コントローラおよび一つのメモリを含み、前記メモリは特定のデータ・ソースおよびデータ宛先のペアの間のデータ転送に関するデータ転送制御情報を記憶するように動作でき、前記メモリは一つのバスを介して前記直接メモリ・アクセス・コントローラとデータ通信をする。
【００３０】
本発明のなおさらなる面は、直接メモリ・アクセス・コントローラを使用して複数のデータ・ソースおよびデータ宛先のペアの間のデータ転送を制御する方法を含み、それは以下のステップを含む：前記複数のデータ・ソースおよびデータ宛先のペアの一つの間のデータ転送を要求する信号に応答して；メモリから前記データ・ソース・データ宛先のペアに対応するデータ転送制御データを要求する；前記メモリから前記データ転送制御データを受信して、少なくとも一つのチャネルのレジスタへ前記データ転送制御データを記憶する；前記少なくとも一つのチャネルを使用して、前記データ・ソースから前記データ宛先へデータを転送する；前記データ転送の完了または保留に続いて、前記メモリへ修正されたデータ転送制御データを出力する。本発明のなおさらなる面は、データ・プロセッサ上で実行するときにそのデータ・プロセッサを制御して、本発明のなおさらなる面による方法の諸ステップを遂行するように動作できるコンピュータ・プログラム製品を供給する。
【実施例】
【００３１】
図１は、本発明の一つの実施例によるデータ処理装置を図式的に示す。データ処理装置１０は、本発明の実施例によるＤＭＡ（直接メモリ・アクセス）コントローラ２０を含む。直接メモリ・アクセス・コントローラ２０は、周辺装置３０（１）、…３０（ｎ）とメモリ４０の間のデータ転送を制御する。これら装置の間のデータ転送は、チャネルＰＣ０またはＰＣ１により遂行される。一つのチャネルは、一つまたはそれ以上のＤＭＡ転送についてのパラメータをセットしてこれらの転送を遂行する、一連の命令を含む作業の単一スレッドとして見ることができる。
【００３２】
データ転送の間にデータ・ソースが、周辺装置３０（１）、…（ｎ）であれば、ＤＭＡコントローラ２０がデータ・ソースから信号を受信し、この信号は特定データ宛先へ送信する準備が出来ているデータをデータ・ソースが有することが示す。注意すべきは、データ・ソースがメモリである場合は、データ転送を要求するために信号を送る必要がないことである。ＤＭＡコントローラ２０がこのデータを受信する用意があるとの信号を特定データ宛先から受信する場合は、ＤＭＡコントローラ２０がこのデータを転送するのに必要なステップを開始する。注意すべきは、データ宛先がメモリである場合は信号を送ることまたは実際に要求することの必要がなく、ＤＭＡコントローラはそうした信号を待たずに、直ちにデータを転送するのに必要なステップを開始することである。
【００３３】
データ転送を処理するためには、この特定データ・ソース／データ宛先のペアへチャネルの一つを割り当てることが必要である。割り当て論理６０が割り当てレジスタ６２と共にこれを実行する。割り当て論理６０は割り当てレジスタ６２を読み取っていずれかのチャネルが利用可能であるかどうかを見る。チャネルの一つが利用可能であれば、割り当て論理６０は適当なデータ・ソースとデータ宛先のペアへそれを割り当てる。これを実行するために、割り当て論理はこのデータ・ソース／宛先ペアに関するコンテキスト情報を要求して、システム・システム・メモリ７０からこれにアクセスする。システム・メモリ７０が、実際にバーチャル・チャネル・コンテキスト情報である複数のものを記憶する。各バーチャル・チャネルは、一つの特定データ・ソースおよびデータ宛先のペアに関係する。こうして、割り当て論理６０は、要求されたデータ・ソース、データ宛先のペアへ選択されたチャネルを割り当てるために、要求されたデータ・ソース、データ宛先に関するシステム・メモリ７０内の適当なアドレスへアクセスする必要がある。
【００３４】
ＤＭＡコントローラ２０内のデータ・ソース８０は、バーチャル・チャネルの位置を記憶する。こうして、割り当て論理が位置を検索するが、この位置は一般にデータ・ストア８０からのベース・アドレスおよびオフセットの形式であり、システム・メモリ７０内のコンテキスト情報にアクセスする。
【００３５】
コンテキスト情報は、ソースから読み取られるデータのアドレス、宛先においてデータが書き込まれるべきアドレスおよび制御情報を含む。制御情報は、バースト長さおよびデータ・サイズなどのデータ転送に関する情報を含む。それはまた、キャッシュ制御フィールドおよび保護制御フィールドなどの追加情報を含むこともある。
【００３６】
それから、このコンテキスト情報は選択されたチャネルのレジスタ５２、５４へロードされる。いくつかの実施例においてこの情報は３つの３２ビット・ワードの形式である。この情報がＤＭＡコントローラ２０のチャネルＰＣ０のＰＣ１へロードされると、そのときこのチャネルは、指示されたデータ・ソースおよびデー宛先の間でデータを転送する用意がある。
【００３７】
注意すべきは、バーチャル・チャネルの位置がＤＭＡコントローラ内に記憶される必要があるのと同様に、状態の追加的な量がＤＭＡコントローラ内に要求されることである。こうして、多くのチャネルについての情報を記憶するためにシステム・メモリ７０を使用でき、こうしてチャネルが使用される場合以外はＤＭＡコントローラに記憶される必要がないが、この情報の位置は記憶される必要がない。たとえば、３２個のありえるデータ・ソース／データ宛先ペアがメモリ内に記憶され、こうしてそれらのコンテキスト情報は３２Ｘ３個の３２ビット・ワードの量になる。ＤＭＡコントローラ内では同時に二つだけのチャネルが割り当てられ、従って６個の３２ビット・ワードが記憶される。しかしながら、３２個の異なったチャネルのメモリ内の位置に関する情報は記憶される必要がない。
【００３８】
ＤＭＡコントローラ内に必要な記憶域の量を削減するために、バーチャル・チャネルのコンテキストに関する情報は、システム・メモリ内で特別な方法により記憶され、それによりデータの各個へのポインタの必要なしにアクセスできる。これは、後述するスタック・タイプのシステムを使用して実行される。
【００３９】
注意すべきは、チャネルを割り当てまたは解除するときのシステム・メモリとＤＭＡコントローラの間のこのコンテキスト情報の転送は、バス活動にオーバー・ヘッドを有することである。
【００４０】
データ転送が完了すると、選択されたチャネルのレジスタ５２、５４に記憶されたデータは、システム・メモリ７０内の適当な位置へ転送されて戻される。レジスタ内に記憶されたデータは宛先およびソースからデータが書き込まれまた読み取られた時に、修正済みになっている。さらにデータ転送処理の開始に際して、割り当てレジスタが修正されて、選択されたチャネルがビジーであることを指示する。データ転送に続いて、割り当てレジスタが更新されて、このチャネルが再び空いていることを指示する。
【００４１】
いくつかの状況においては、割り当て論理６０は、割り当てレジスタ６２へアクセスするに際して、チャネルが一つも利用できないことを発見するであろう。そうした場合は、「ＤＭＡ先方優先通行（ｙｉｅｌｄ）」信号を検出するまで、それはチャネルを監視する。これは、ある特定チャネルがデータ・ソースからデータ宛先へデータ転送の処理中であっても、それが中断可能ポイントにおいてであることを指示する。こうして、このデータ転送は、レジスタ５２または５４の値をシステム・メモリ７０へダウンロードして、新しいデータ・ソースおよびデータ宛先に関する情報をシステム・メモリ７０から読み取ることにより、中断される。こうして、新しいデータ転送が進行できる。それが完了すると、レジスタからの情報がシステム・メモリ７０へダウンロードして戻され、以前のデータ転送に対応する情報がこのレジスタへロードされて戻され、このデータ転送はそのとき完了する。
【００４２】
スタックまたはヒープ・タイプのシステムは、記憶装置として下記のように使用される。ＤＭＡコントローラはＤＭＡポインタ、ＤＳＴ［３１：０］を含み、これは、アクティブでないＤＭＡチャネルのシステム・メモリ上の位置を指示するポインタである。
【００４３】
各チャネルは、多数のチャネル作業レジスタを含む。これらは、ソース・アドレス・レジスタ、宛先アドレス・レジスタ、チャネル制御レジスタ、ループ０カウンタ、ループ０プログラム・カウンタ、ループ１カウンタおよびループ１プログラム・カウンタを含む。
【００４４】
スタック・タイプ・チャネル・レジスタのパッキングは、そのレジスタ・ファイルがメモリ内の４個および６個の３２ビット・ワードへフィットするように行われる。スレッド・スイッチ上にコンテンツをスタックし、再記憶するようにＤＭＡハードウェアを使用可能にするには、メモリ・フォーマットを定義する必要がある。
【００４５】
メモリ・フォーマットｒｅｇｆｉｌｅは、下記の通りである。注意すべきは、二つのループ・リターン・プログラム・カウンタ・レジスタに対応するＲＳ４およびＲＳ５は、関連ループがアクティブである場合だけロードする必要があることである。ここに説明する実施例は、３２個のバーチャル・チャネルおよび８個の物理チャネルＲＳ０がｒｅｇｆｉｌｅスタック０であり、ＲＳ１がｒｅｇｆｉｌｅスタック１であり、こうして、ｒｅｇｆｉｌｅスタック５であるＲＳ５までその通りである。ＲＳ０［３１：０］は、ＳＡＲ［３１：０］、すなわちそれぞれのバーチャル・チャネルのソース・アドレスの位置を含む。ＲＳ１［３１：０］は、ＤＡＲ［３１：０］、すなわちそれぞれのバーチャル・チャネルの宛先アドレスの位置を含む。ＲＳ２［３１：０］は、ＣＣＲ［３１：０］、すなわち、それぞれのバーチャル・チャネルの制御情報の位置を含む。ＲＳ３［１５：８］は、ＬＣ１［７：０］であり、また、ＲＳ３［７：０］は、ＬＣ０［７：０］である。これは、この実施例に存在する８個のアクチャル・チャネルの各々の上で走る各プログラム・スレッドのループ０および１のループ・カウンタ反復に関係する。ＲＳ４［３１：０］は、ＬＰＣ０［３１：０］を含み、ＲＳ５［３１：０］は、ＬＰＣ１［３１：０］、すなわち、３２個のバーチャル・チャネルのループ１およびループ０のためのループ・リターン・プログラム・カウンタを含む。
【００４６】
図２は、チャネルＰＣ０チャネルＰＣ１を使用するデータ転送のタイミング図解を示す。見られるように、それらは両方とも全ての時間では使用されていない。
【００４７】
図３は、本発明の代わりの実施例を示し、そこで物理チャネルの一つは、特定周辺機器およびメモリへあらかじめ割り当てられ、また、もう一つのチャネルは、システム・メモリ７０内に記憶されたバーチャル・チャネル情報により割り当てられることができる。一つの特定周辺機器とメモリまたは２個のメモリまたは実際二つの周辺機器が、非常に頻繁に互いの間でデータを転送する。そうした場合では、一つの特定チャネルへそれらを永久的に割り当てるのが有利である。これは、バーチャル・チャネルの使用により、ゲート・カウントを大きく増加させずにサービス可能なチャネルの数を増加させ得るが、しかし装置のタイミングにインパクトを与えるからである。こうして、特定の場所の間で大量のデータ転送があり得る場合は、一つのチャネルを事前に配置して、それを他の場所へ配置させないようにすることが速度上有利である。
【００４８】
図４は、データの転送に関するプログラム・スレッドを示す。このスレッドは、転送を制御し、またチャネル処理の一部分である。それは、「ｄｍａｗｆｐ」を含み、これは「周辺機器を待て」との命令であるが、その意味はデータ転送のために一つのチャネルを供給することをＤＭＡコントローラが必要とすることである。見られるように、「ｄｍａｙｉｅｌｄ」の命令も含まれるが、これは、他のデータ・ソース／データ宛先ペアがチャネルを要求すれば、そのポイントにおいてデータ転送が中断され得ることを指示する。これが起れば、チャネル・データはメモリへ戻されて記憶される。
【００４９】
リセットから命令を取り出す管理者スレッドもあり得る。これらの命令は、ｐｃ値をチャネル記憶域へ記憶すること（ｄｍａｄｏ命令）により、一つのｄｍａスレッドを開始できる。ｄｍａスレッドは、それから取り出しをやめるポイントにおいてｄｍａｅｎｄ命令へ来るまで実行する。
【００５０】
添付図面を参照しながら、本書に本発明の例示的な実施例を詳細に説明してきたが、本発明はそれら厳密な実施例に限定されるのではなく、またその種々の変更と修正を添付の特許請求の範囲に定義された本発明の範囲と精神から離れることなく、当業者が実施できることを理解すべきである。
【図面の簡単な説明】
【００５１】
【図１】本発明の一つの実施例によるＤＭＡコントローラを含むデータ処理装置を図式的に示す。
【図２】図１のＤＭＡコントローラの二つのチャネル間のデータ転送のタイミングを示す。
【図３】本発明のさらなる実施例のＤＭＡコントローラおよび関連メモリおよび周辺機器を図式的に示す。
【図４】ＤＭＡコントローラによるデータ転送を制御するプログラムのプログラム・スレッドを示す。
【符号の説明】
【００５２】
１０  データ処理装置
２０  ＤＭＡ（直接メモリ・アクセス）コントローラ
３０  周辺装置
４０  メモリ
５２，５４  レジスタ
６０  割り当て論理
６２  割り当てレジスタ
７０  システム・メモリ
【図１】
2007172622.tif 000003
【図２】
2007172622.tif 000004
【図３】
2007172622.tif 000005
【図４】
2007172622.tif 000006