(57)【特許請求の範囲】
【請求項１】
ダイレクトメモリアクセスコントローラ（５０）により移動されるべきメモリのブロック（２６）を指示する第１のダイレクトメモリアクセス記述子（２０）のアドレスをダイレクトメモリアクセスコントローラ（５０）に提供し、第１のダイレクトメモリアクセス記述子（２０）は後続のダイレクトメモリアクセス記述子のアドレスを含むステップ及び後続のダイレクトメモリアクセス記述子（３０）のアドレス（２６）を読み出すステップを含む、ダイレクトメモリアクセスコントローラ（５０）によってメモリブロックを移動させる方法において、
第１のダイレクトメモリアクセス記述子（２０）は後続のダイレクトメモリアクセス記述子に含まれるデータポインタの可変的な数の指示を含み、
さらに指示されたデータポインタ（３６、４０）の数（２２）に依存する複数の読み出しサイクルが実行され、
後続のダイレクトメモリアクセス記述子（３０）におけるデータポインタ（３６、４０）の数の指示（２２）は、該データポインタ（３６、４０）の数を後続のダイレクトメモリアクセス記述子（３０）の最初の語の使用されていないビット（２２）にエンコードすることによって提供されることを特徴とする、ダイレクトメモリアクセスコントローラ（５０）によってメモリブロックを移動させる方法。
【請求項２】
データポインタ（３６、４０）の可変的な数がダイレクトメモリアクセスコントローラ（５０）によって読み出され、該ダイレクトメモリアクセスコントローラ（５０）が実行する読み出しサイクルの数を決定することを特徴とする、請求項１記載の方法。
【請求項３】
４つまでのデータポインタ（３６、４０、・・・）が後続のダイレクトメモリアクセス記述子（３０）に含まれることを特徴とする、請求項１又は２記載の方法。
【請求項４】
ダイレクトメモリアクセスコントローラによってメモリブロックを移動させる装置において、該装置は以下のものを有し、すなわち、
ダイレクトメモリアクセスコントローラ（５０）により移動されるべきメモリのブロック（２６）を指示する第１のダイレクトメモリアクセス記述子（２０）のアドレスが提供されるダイレクトメモリアクセスコントローラ（５０）を有し、第１のダイレクトメモリアクセス記述子（２０）は後続のダイレクトメモリアクセス記述子（３０）のアドレス（２６）を含み、さらに第１のダイレクトメモリアクセス記述子（２０）は後続のダイレクトメモリアクセス記述子（３０）に含まれるデータポインタ（３６、４０）の可変的な数の指示（２２）を含み、
カウンタ（５２）を有し、該カウンタ（５２）はダイレクトメモリアクセスコントローラ（５０）により処理される前記後続のダイレクトメモリアクセス記述子（３０）に含まれるデータポインタ（３６、４０）の数を示す数字（２２）を格納し、前記カウンタ（５２）はダイレクトメモリアクセス記述子（３０）が処理される場合にダイレクトメモリアクセスコントローラ（５０）により実行されるメモリ読み出しサイクルの数を制御し、後続のダイレクトメモリアクセス記述子（３０）におけるデータポインタ（３６、４０）の数の指示（２２）は、該データポインタ（３６、４０）の数を後続のダイレクトメモリアクセス記述子（３０）の最初の語の使用されていないビット（２２）にエンコードすることによって提供される、ダイレクトメモリアクセスコントローラによってメモリブロックを移動させる装置。
【発明の詳細な説明】
【０００１】
発明の分野
本発明は一般的にコンピュータシステムに、とりわけダイレクトメモリアクセスコントローラに関する。
【０００２】
発明の背景
コンピュータの初期には、データは中央処理ユニット（ＣＰＵ）によってメモリへと及びメモリから移動された。しかし、ハードドライブ又はＣＤ-ＲＯＭのような大容量ストレージデバイスに対するデータ転送レートが増大するにつれて、ＣＰＵはデータの転送を処理するには遅すぎ、ＣＰＵを使用することはＣＰＵが他のタスクを実行することを妨げることになった。この結果、現在大抵のコンピュータはメモリへと及びメモリからデータを移動させるためにダイレクトメモリアクセスコントローラ（ＤＭＡ）を組み込んでいる。ＤＭＡはメモリからデータを読み出すか又はメモリにデータを書き込むためにアドレス及びデータバスを制御することによって動作する。データを移動させるために、ＣＰＵはＤＭＡコントローラにＤＭＡ記述子のアドレスを与える。この記述子は、移動すべきデータブロックのサイズならびにメモリにおけるデータブロックのアドレスを有するポインタを含む幾つかの事前定義された情報を含むデータのセットである。
【０００３】
以前は、各記述子はほんの１つ又はせいぜい２つのデータポインタを含んでいた。ＤＭＡコントローラがデータブロックを移動させようとする度毎に新しい記述子が読み出されなければならず、これによってデータを移動させるレートは低減される。データ転送レートをスピードアップするためには、ＤＭＡコントローラがデータを移動させるために読み出さなくてはならない記述子の数を低減する方法が必要である。
【０００４】
発明の要旨
データがＤＭＡコントローラにより転送されるレートを増大させるために、記述子は後続の記述子のアドレスならびにこの後続の記述子に含まれるデータポインタの可変的な数の指示を含む。後続の記述子におけるポインタの数はＤＭＡコントローラに格納される。後続の記述子が読み出されると、ポインタの格納された数がＤＭＡコントローラにより実行される読み出しサイクルの数を制御する。
【０００５】
本発明の有利な実施形態では、記述子は整列した３２ビットメモリに格納されている。記述子アドレスの最後の２つのアドレスビットは必要ではなく、それゆえ次の記述子におけるポインタの数を格納するために利用される。
【０００６】
本発明によるＤＭＡコントローラはカウンタを有し、このカウンタは後続の記述子におけるデータポインタの数を格納する。記述子を読み出すと、このカウンタは、次の記述子において動作する際にＤＭＡコントローラによって実行される読み出しサイクルの数を制御する。
【０００７】
図面の説明
本発明の前述のアスペクト及び多くの利点は添付した図面と共に以下の詳しい記述を参照することによって理解されるだろう。
【０００８】
図１は本発明の連結リストＤＭＡ記述子を示し、
図２は各ＤＭＡ記述子がどのように後続の記述子に格納されたデータポインタの数の指示を含むのかを示し、
図３は本発明のＤＭＡコントローラがどのように後続の記述子に含まれるデータポインタの数を格納するためのカウンタを含んでいるかのかを示す。
【０００９】
有利な実施例の詳細な記述
本発明は、後続の記述子に含まれるデータポインタの可変的な数の指示を含むことによってダイレクトメモリアクセス（ＤＭＡ）コントローラにより実行されるメモリ転送のレートを増大させるための方法である。
【００１０】
図１は本発明の実施例による連結リストＤＭＡ記述子１０を図示している。本発明の有利な実施形態では、記述子は一連の３２ビット語としてメモリに格納される。記述子１０の最初の語１２はＤＭＡコントローラにより読み出される次の記述子のアドレスを含む。第２の語１４はデータを移動させるためにＤＭＡコントローラにより必要な従来のデータを含み、移動されるデータブロックのサイズを格納する一対のバイト１５を含んでいる。記述子１０の第３の語１６は移動されるデータブロックの３２ビットアドレスを含む。
【００１１】
記述子が１つ又はせいぜい２つのデータブロックに対するポインタを含む従来技術とは異なり、記述子１０はＤＭＡコントローラにより移動されるデータブロックに対するデータポインタを４つまで含むことができる。記述子１０は整列されたメモリに一連の３２ビット語として格納されているので、次の記述子の３２ビットアドレスの最後の２つのビットは常に００である。それゆえ、これら最後の２つのビット１８は有利には後続の記述子に含まれるデータポインタの数を格納するのに利用される。この記述子が記述子のリストの中の最後の記述子であるならば、次の記述子ポインタは、ヌル文字（すなわち全てゼロ）か又はなにか他の直ぐに識別可能なコードのような、ＤＭＡコントローラにより識別されうるなんらかの事前定義された値にセットされる。
【００１２】
図２は本発明の実施例によるＤＭＡ記述子の連結リストを図示している。第１の記述子２０はその最初の３２ビット語２２として第２のＤＭＡ記述子３０のアドレスを格納している。上記のように、３２ビット語２２の最後の２つのビットは第２のＤＭＡ記述子３０に含まれているデータポインタの数を格納する。ここに示された例では、語２２の最後の２つのビットは値０１を含み、これにより後続のＤＭＡ記述子３０が２つのデータポインタを含むことを示している。第１のＤＭＡ記述子２０の第２の３２ビット語２４はＤＭＡコントローラにより必要ないくつかの標準的な情報ならびに移動されるデータブロックのサイズの指示を含む。ここに示された例では、３２ビット語２４の最後の２つのバイトは移動されるデータブロックが２５６バイトを有することを指示している。第１の記述子２０の第３の３２ビット語２６は移動される２５６バイトデータブロックに対するポインタを含む。
【００１３】
第２のＤＭＡ記述子３０の最初の３２ビット語３２は本来後続の記述子のアドレスとして格納されたヌル文字を有し、これによりこの第２のＤＭＡ記述子３０がリストの中の最後の記述子であることを示している。第２のＤＭＡ記述子３０は移動される２つのデータブロックを指示する２つのデータポインタを含む。３２ビット語の対３４及び３６は第１のデータブロックの長さ（すなわち２５６バイト）及びそのアドレスを格納し、他方で３２ビット語の第２の対３８及び４０は第２の３２バイトデータブロック及びそのアドレスを指示する。
【００１４】
記述子の連結リストに後続のＤＭＡ記述子を加えるために、次の記述子のアドレスが前のＤＭＡ記述子３０の最初の３２ビット語３２に格納される。ここに示された例では、最初の３２ビット語３２として格納されたヌル文字が後続のＤＭＡ記述子４４のアドレスによって上書きされている。ここでもまた、アドレスの最後の２つのビットは後続のＤＭＡ記述子４４内のデータポインタの数を含む。ここに示された例では、この最後の２つのビットは００であり、後続のＤＭＡ記述子４４がただ１つのデータポインタを含むことを示している。
【００１５】
ＤＭＡ記述子２０、３０及び４４により形成された連結リストはＤＭＡコントローラの動作とは無関係にアップデートされる。当業者ならば理解するように、ＤＭＡコントローラは後続記述子アドレスレジスタを含み、この後続記述子アドレスレジスタには次の記述子のアドレスがＣＰＵによって格納されている。ＤＭＡ記述子の連結リストにＤＭＡ記述子を加えるためには、リストの中の最後のＤＭＡ記述子の次のアドレススペースが、新しい記述子のアドレスを反映するようにアップデートされる。さらに、ＤＭＡコントローラの中の後続記述子アドレスレジスタが、新しい記述子のアドレスを反映するようにアップデートされる。上記のように、後続ＤＭＡ記述子アドレスの最後の２つのビットは、リストに加えられる新しいＤＭＡ記述子に含まれるデータポインタの数を含む。
【００１６】
リストに新しいＤＭＡ記述子を加える場合、ＤＭＡコントローラの３つの可能な状態がある。まず最初に、ＤＭＡコントローラがまだ記述子のリストの中の最後の記述子において動作し始めていないことがあり得る。それゆえ、ＤＭＡコントローラが以前の最後の記述子において動作し始める前に、リストの中の最後の記述子のための後続ＤＭＡ記述子アドレスフィールドが修正されるならば、このＤＭＡコントローラは次のアドレスがヌルではないことを識別し、もう１つのＤＭＡ記述子を処理することを知る。以前の最後の記述子の後続記述子アドレスフィールドをアップデートすることに加えて、ＣＰＵも新しいＤＭＡ記述子のアドレスをＤＭＡコントローラの後続記述子アドレスレジスタに書き込む。それゆえ、もしＤＭＡコントローラが既に（ヌルにセットされた）最後の記述子の次のアドレスフィールドを読み出してしまったならば、ＤＭＡコントローラは処理される最後の記述子に含まれる全てのデータポインタを処理した後でＤＭＡコントローラの後続記述子アドレスレジスタを読み出すことによって新しい記述子を検出しようとする。最後に、もしＤＭＡコントローラが以前の最後の記述子に含まれるデータポインタを処理し終わっているならば、新しいＤＭＡ記述子のアドレス及びこの記述子に含まれるデータポインタの数がＤＭＡコントローラの後続記述子アドレスレジスタに書き込まれるまで、このＤＭＡコントローラは停止状態に入る。
【００１７】
図３は本発明の１つの実施形態によるＤＭＡコントローラに加えられた付加機能を示すブロック図である。このＤＭＡコントローラ５０はカウンタ５２を含むこと以外は従来のＤＭＡコントローラと同じやり方で構成されている。このカウンタ５２は後続記述子アドレスの最後の２つのビットから決定される後続のＤＭＡ記述子のポインタの数を格納する。カウンタ５２に格納されたポインタの数は次のＤＭＡ記述子を処理している時にＤＭＡコントローラによって実行される読み出しサイクルの数を制御する。つまり、後続記述子アドレスレジスタ５４において指示された次のＤＭＡ記述子を処理すると、ＤＭＡコントローラは複数の語がメモリから読み出されるようにする。ここで、語の数はカウンタ５２に格納されたポインタの数に依存する。例えば、もし各データポインタに対して格納された情報が２語のデータを必要とし、レジスタ５０が後続のＤＭＡ記述子に２つのデータポインタが存在することを指示するならば、この場合、ＤＭＡコントローラは５語のデータがメモリから読み出されるようにする。つまり、次のＤＭＡ記述子のアドレスに対して１語、次のＤＭＡ記述子に含まれる２つのデータポインタの各々に対して２語である。
【００１８】
上の記述から分かるように、本発明はＤＭＡコントローラに関連するオーバーヘッドを低減するための方法である。本発明の有利な実施形態は、ポインタの可変的な数に対する指示を格納するために後続記述子アドレスフィールドの以前は使用されていなかったビットを利用するが、この指示は記述子の他の位置に置くこともできることは当然である。しかし、後続ＤＭＡ記述子アドレスの以前は使用されていなかったビットを利用することは有利である。なぜなら、ＤＭＡに次のアドレス及びポインタの数を供給するためにこのＤＭＡに必要なのはただ１度の書き込みサイクルだけだからある。
【図面の簡単な説明】
【図１】  本発明の連結リストＤＭＡ記述子を示す。
【図２】  各ＤＭＡ記述子がどのように後続の記述子に格納されたデータポインタの数の指示を含むのかを示す。
【図３】  本発明のＤＭＡコントローラがどのように後続の記述子に含まれるデータポインタの数を格納するためのカウンタを含んでいるかのかを示す。
【符号の説明】
１０  連結リストＤＭＡ記述子
１２  記述子１０の最初の語
１４  第２の語
１５  一対のバイト
１６  第３の語
１８  最後の２つのビット
２０  第１の記述子
２２  最初の３２ビット語
２４  第２の３２ビット語
２６  第３の３２ビット語
３０  第２のＤＭＡ記述子
３２  最初の３２ビット語
３４、３６  ３２ビット語の対
３８、４０第２の３２ビット語の対
４４  後続のＤＭＡ記述子
５０  ＤＭＡコントローラ
５２  カウンタ
５４  後続記述子アドレスレジスタ
【図１】
0003878851.tif 000002
【図２】
0003878851.tif 000003
【図３】
0003878851.tif 000004