JP2000267987A - ダイレクト・メモリ・アクセス制御 - Google Patents

ダイレクト・メモリ・アクセス制御

Info

Publication number
JP2000267987A
JP2000267987A JP2000026831A JP2000026831A JP2000267987A JP 2000267987 A JP2000267987 A JP 2000267987A JP 2000026831 A JP2000026831 A JP 2000026831A JP 2000026831 A JP2000026831 A JP 2000026831A JP 2000267987 A JP2000267987 A JP 2000267987A
Authority
JP
Japan
Prior art keywords
dma
command
tail
pointer
head
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000026831A
Other languages
English (en)
Inventor
Emrys John Williams
エミリィズ・ジョン・ウィリアムズ
Crosland Andrew
アンドリュ・クロスランド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2000267987A publication Critical patent/JP2000267987A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

(57)【要約】 【課題】 DMAコントローラを含むシステムやDMA
コントローラへのDMAコマンドの転送に関連付けられ
た諸問題を軽減するシステムを提供する。 【解決手段】 システムはプロセッサとコンマンド・バ
ッファを備えている。コマンド・バッファは主プロセッ
サ・メモリ内でリング・バッファとされ、バスでプロセ
ッサによって直接アクセスされる。このDMAコントロ
ーラは、コマンド・バッファ内のダイレクト・メモリ・
アクセス・コマンド・シーケンスのヘッドとテールをア
ドレス指定するためのヘッド・ポインタとテール・ポイ
ンタを保持するヘッド・レジスタとテール・レジスタを
備える。このDMAコントローラは、その内にローカル
に保持されたDMAテール・ポインタを使用して、これ
らのDMAコマンドにアクセスする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ダイレクト・メモ
リ・アクセス(DMA)制御に関する。詳細には、DM
Aコントローラ、DMAコントローラを含むコンピュー
タ・システム、およびDMA制御の方法に関する。
【0002】
【従来の技術】DMAコントローラは、たとえば入出力
バスなどに接続された装置を、コンピュータ・システム
のプロセッサにあるメモリおよび/または他の資源に直
接アクセスできるようにするために、コンピュータ・シ
ステム内に備えられている。DMAコントローラは、こ
のような入出力装置と一体型にすることも分離型にする
ことも可能である。DMAコントローラは、例えば転送
を記憶するためのメモリを使いやすくするために、他の
構成に適用することもできる。本発明は一般に、DMA
コントローラおよびその動作方法に適用される。
【0003】したがって非限定的な例を上げると、DM
Aコントローラを備えたコンピュータ・システムの一般
的な一構成は、プロセッサ・バスを介してメモリに接続
されたプロセッサを含むであろう。プロセッサ・バスに
接続された入出力コントローラは、プロセッサ・バスと
その他のバス、たとえば「SBus」プロトコルと呼ば
れるシステム・バス・プロトコルの下で動作可能なバス
(SBus)との間にブリッジを形成することがある。
DMAコントローラはSBusにも接続可能であって、
入出力装置が接続された入出力バスにも別のブリッジを
備えることができる。プロセッサは、通常の動作ではメ
モリへの書込みおよびメモリからの読取りを行う。しか
しダイレクト・メモリ・アクセス・コントローラは、入
出力装置用のメモリに対して読取り/書込みアクセスを
提供するためにDMA動作を実行する。
【0004】DMAコントローラは、機能可能にするた
めにプロセッサからDMAコマンド(記述子とも呼ばれ
る)を受け取る必要がある。たとえばDMAコマンド
は、ダイレクト仮想メモリ・アクセス(Direct
Virtual MemoryAccess(DVM
A))および入出力バス・アクセスのための開始アドレ
スならびに所与の最大値までの転送長さを指定すること
ができる。DMAコマンドは、たとえば主メモリの制御
バッファ内に保持し、その後プロセッサの制御の下でD
MAコントローラに転送するように提案されてきた。し
かしこのような構成の場合、DMAコマンドをプロセッ
サからDMAコントローラに転送すると、システムのパ
フォーマンスに無視できない影響を及ぼす可能性があ
る。これは、DMAコマンドの転送に関連して、プロセ
ッサとDMAコントローラとの間にある1つまたは複数
のバスにハンドシェーキングを与えるのに必要な入出力
トラフィックによるものである。コマンド・バッファの
使用に関するもう1つの問題は、DMAコマンドのコマ
ンド・バッファに追加する場合およびコマンド・バッフ
ァから除去する場合のバッファのアドレス指定である。
これは、コマンド・バッファで動作可能なDMAコント
ローラに共通の問題である。
【0005】
【発明が解決しようとする課題】本発明の一目的は、D
MAコントローラ、このようなDMAコントローラを含
むシステム、ならびに、DMAコントローラへのDMA
コマンドの転送に関連付けられた前述の問題を軽減する
このようなシステムの動作方法を提供することである。
【0006】
【課題を解決するための手段】本発明の特定かつ好まし
い態様は、付属の特許請求の範囲にある独立項および従
属項に記載されている。従属項からの特徴の組み合わせ
は、適切に、かつ特許請求の範囲に明示的に記載されて
いるとおりに限らずに、独立項の特徴と組み合わせても
よい。
【0007】本発明の一態様によれば、コンピュータ・
システムにダイレクト・メモリ・アクセス(DMA)が
用意される。このコンピュータ・システムはプロセッサ
およびDMAコマンド・シーケンスを保持するためのコ
マンド・バッファを含む。DMAコントローラは、制御
論理と、コマンド・バッファ内にあるDMAコマンド・
シーケンスのヘッドおよびテールをそれぞれ指示するた
めのヘッド・ポインタおよびテール・ポインタを保持す
る、ヘッド・ポインタ・レジスタおよびテール・ポイン
タ・レジスタとを含む。この制御論理は、テール・レジ
スタ内のテール・ポインタに応答して、コマンド・バッ
ファからDMAコントローラに転送されるDMAコマン
ドにアクセスする。
【0008】DMAコントローラにテール・ポインタを
用意することにより、DMAコントローラは独自の制御
の下で、プロセッサを参照することなく、DMAコマン
ドに直接アクセスできるようになる。DMAコマンドを
コマンド・バッファに格納する場合、コマンド・バッフ
ァはプロセッサによって直接アドレス指定することがで
きる。したがってDMAコントローラは、DMAコント
ローラ内にローカルに保持されているDMAテール・ポ
インタを使用して、これらのDMAコマンドにアクセス
することができる。ヘッド・ポインタは、コマンド・バ
ッファ内のDMAコマンド・シーケンスのヘッド(すな
わちプロセッサによってDMAコマンドがバッファに追
加される場所)を指示し、テール・ポインタは、コマン
ド・バッファ内のコマンド・シーケンスのテール(すな
わちDMAコントローラによってDMAコマンドがコマ
ンド・バッファから取り出される場所)を指示するもの
であることを理解されよう。このように、DMAコマン
ドを転送するためにプロセッサとDMAコントローラと
の間にハンドシェーキングを行う必要なしに、プロセッ
サはDMAコマンドのバッファリングが可能であり、次
いでDMAコントローラはこれらのコマンドにいつでも
アクセス可能である。
【0009】コマンド・バッファは、バッファがモジュ
ロ・アドレス指定によってアドレス指定可能なリング・
バッファとして構成されることが好ましい。これによ
り、バッファのアドレス領域の終わりに達したときにバ
ッファの始めのアドレスに戻るようにポインタを自動的
に構成することができるので、バッファのアドレス指定
が容易になる。特に好都合な方法では、アドレス指定が
ベース・アドレスおよびオフセットを基準にして実行さ
れ、第2の所定値(たとえばn、ここでnはリング・バ
ッファのサイズである)に達するとオフセットは折り返
されるかまたは第1の所定値(たとえば0)に戻る。モ
ジュロ・アドレス指定を使用すると、プロセッサとDM
Aコントローラとの間でポインタの制御を分離するのが
容易になる。一実施形態では、プロセッサがヘッド・ポ
インタの更新を担当し、DMAコントローラがテール・
ポインタの更新を担当することができる。
【0010】本発明の一実施態様では、DMAコントロ
ーラの制御論理は、それぞれヘッド・レジスタ内および
テール・レジスタ内にあるヘッド・ポインタとテール・
ポインタとを比較するのに動作可能である。この制御論
理は、DMAコマンド・シーケンスが実際にはDMAコ
マンドを格納していない(すなわちコマンド・バッファ
が空である)ことを示すときに、ヘッド・ポインタとテ
ール・ポインタが同等であると応答するように構成する
ことができる。この場合DMAコントローラは、コマン
ド・バッファからDMAコマンドにアクセスするための
DMA動作を実行する必要がないことを知っている。こ
こで、ヘッド・ポインタとテール・ポインタが「同等」
であるということは、これらのポインタがコマンド・バ
ッファ内にある同じDMAコマンド・バッファ格納場所
を効果的に示すということである。これは、ポインタの
数値が同じであるか、異なるアドレス指定モードが採用
されている場合には互いに所定の関係を有するという意
味である。
【0011】本発明のこの実施態様では、制御論理は、
少なくとも1つのDMAコマンドがDMAコマンド・シ
ーケンス内にあることを示す場合に、ヘッド・ポインタ
とテール・ポインタが同等でないと応答するように動作
可能である。この場合DMA制御論理は、コマンド・バ
ッファ内にあるDMAコマンド・シーケンスのテールか
らDMAコントローラに転送されるDMAコマンドにア
クセスするために、テール・レジスタ内にあるテール・
ポインタを使用する。これによってDMAコントローラ
は、コマンド・バッファにアクセスする必要なしに、D
MAコマンドをコマンド・バッファからDMAコントロ
ーラに転送できるか否かをローカルに特定することがで
きる。
【0012】さらにDMAコントローラは、ダイレクト
・メモリ・アクセス・コマンドが読み取られたコマンド
・バッファ内のある位置に、完了インジケータを書き込
むように動作可能である。これは、どのDMAコマンド
が完了したのかを示すのに使用可能である。
【0013】さらにDMAコントローラは、コマンド・
バッファ内のある位置からのダイレクト・メモリ・アク
セス・コマンドが完了した後に、テール・ポインタ値を
更新するようにも動作可能である。
【0014】本発明の特定の一実施形態において、コマ
ンド・バッファは主メモリ内に備えられ、第1バスがプ
ロセッサとこのメモリとを接続する。プロセッサは、プ
ロセッサ・レジスタ内またはメモリ内に保持されている
ミラー・ヘッド・ポインタおよびミラー・テール・ポイ
ンタを使用して、この第1バスを介してDMAコマンド
をコマンド・バッファ内に直接格納し、DMAコントロ
ーラ内のヘッド・ポインタを直接更新することができ
る。DMAコントローラは、第1バスに直接または間接
的に接続される。したがって、DMAコントローラは、
DMAコントローラ内にローカルに保持されているDM
Aテール・ポインタを使用して、これらのDMAコマン
ドにアクセスすることができる。このように、DMAコ
マンドを転送するためにプロセッサとDMAコントロー
ラとの間にある第1バスにハンドシェーキングを行う必
要なしに、プロセッサはDMAコマンドのバッファリン
グが可能であり、次いでDMAコントローラはこれらの
コマンドにいつでもアクセス可能である。DMAコント
ローラは、1つまたは複数のDMA装置も接続される第
2バスに接続することができる。
【0015】その他の実施態様では、DMAコントロー
ラを入出力装置と一体型にしてもよい。
【0016】その他の実施態様では、DMAコントロー
ラをプロセッサと一体型にすることができる。このよう
な場合、DMAコマンド・バッファを内部プロセッサ記
憶域、たとえば特殊目的のバッファ内に保持することが
できる。
【0017】本発明の他の態様によれば、前述のよう
に、プロセッサと、ダイレクト・メモリ・アクセス(D
MA)コマンド・シーケンスをバッファリングするため
のコマンド・バッファと、DMAコントローラとを含む
コンピュータ・システムが提供される。
【0018】前述のように、特定の一実施態様では、コ
マンド・バッファをメモリ内に構成し、第1バスでプロ
セッサとメモリとを接続することができる。このプロセ
ッサは、DMAコマンドをコマンド・バッファに追加
し、DMAコントローラのヘッド・レジスタ内にあるヘ
ッド・ポインタを更新するように動作可能である。DM
Aコントローラは、1つまたは複数の入出力装置が接続
されている第2バスに接続することができる。別法とし
て、DMAコントローラを入出力装置に内蔵することも
でき、DMAをプロセッサに内蔵することもできる。
【0019】本発明の特定の実施態様では、第1バスと
DMAコントローラとの間に第3バスが備えられ、入出
力制御ブリッジがこの第1バスと第3バスとの間を接続
し、DMAコントローラがこの第3バスと第2バスとの
間を接続する。
【0020】コマンド・バッファからのDMAコマンド
の完了に関連して、DMAコントローラがそれ自体のテ
ール・ポインタの更新を担当することができる。コマン
ド・バッファ内へのDMAコマンドの格納に関連して、
プロセッサがDMAコントローラ内のヘッド・ポインタ
の更新を担当することができる。さらにプロセッサは、
ミラー・ヘッド・レジスタ内にミラー・ヘッド・ポイン
タを維持し、このプロセッサがミラー・ヘッド・ポイン
タに応答してDMAコマンドをコマンド・バッファのヘ
ッドに追加するように動作可能である。
【0021】プロセッサはレジスタまたはメモリ内にミ
ラー・テール・ポインタを維持し、このミラー・テール
・ポインタがコマンド・バッファ内にスペースが残って
いないことを示していると思われた場合にのみ、DMA
コントローラのテール・ポインタからこのミラー・テー
ル・ポインタを更新することができる。見込みとして
は、そのときまでにDMAコントローラがそれ自体のテ
ール・ポインタを進めており、実際にはスペースが使用
可能になっているであろう。これによって、プロセッサ
によるDMAコントローラ・レジスタの読取りが最小限
に抑えられる。
【0022】DMAコントローラ内でのヘッド・レジス
タの更新に関係するバスのオーバヘッドが発生するが、
これは、プロセッサの制御の下でプロセッサからDMA
コントローラへDMAコマンドを転送することに関連付
けられたバス・オーバヘッドに比べればごくわずかなも
のである。これは、ポインタがDMAコマンドよりも小
さいこと、ポインタをそれぞれのDMAコマンドに送信
する必要がないことを含む、いくつかの理由から生じ
る。またDMAコントローラは、DMAコマンドをダウ
ンロードする時期を選択することができる。さらに、ヘ
ッド・ポインタおよびテール・ポインタの制御を分離す
ることによって、DMAコントローラを効率よく動作さ
せることが容易になる。ヘッド・ポインタとテール・ポ
インタのアドレス指定は、コマンド・バッファのモジュ
ロ・アドレス指定が使用された場合(たとえばコマンド
・バッファがリング・バッファとして構成された場合)
に特に効率的である。
【0023】DMAコントローラは、入出力転送に使用
するのに加えて、あるいはその代わりに、転送を記憶す
るためのメモリに使用することができる。
【0024】本発明の他の態様によれば、プロセッサ
と、DMAコマンド・シーケンスを保持するためのコマ
ンド・バッファと、DMAコントローラとを含むコンピ
ュータ・システム内で、ダイレクト・メモリ・アクセス
(DMA)を制御する方法が提供されている。この方法
は、プロセッサが、少なくとも1つのDMAコマンド
を、コマンド・バッファ内のDMAコマンド・シーケン
スのヘッドに追加するステップと、DMAコントローラ
が、DMAコントローラ内のテール・レジスタに保持さ
れているテール・ポインタを使用するDMAによって、
コマンド・バッファ内のDMAコマンド・シーケンスの
テールから、DMAコマンドを転送するステップとを含
む。
【0025】
【発明の実施の形態】本発明の例示的な実施の形態を、
添付の図面を参照し例示的なものとしてのみ以下に示す
が、ここで参照符号などは要素などに関するものとす
る。
【0026】本発明の実施の形態について、フォールト
・トレラント・コンピュータ・システムの一部を形成す
るのに適したコンピュータ・システムの構成例を参照し
ながら下記に記載する。ただし、本発明はこのような実
施の形態に限定されるものではなく、DMAコントロー
ラを採用したどのようなコンピュータ・システムにでも
実装可能であることに留意されたい。
【0027】図1は、コンピュータ・システム10の例
を示す概略図である。図1に示されたコンピュータ・シ
ステム10は、本実施形態ではCPU 1およびCPU
2である第1プロセッサ12および第2プロセッサ1
4を含む。代替の実施形態では、たとえば一つのCPU
だけであってもよい。プロセッサ12とプロセッサ14
は、UPA(Universal Processor
Architecture)プロトコルの下で使用可
能な第1バス22に接続されている。さらに主メモリ1
6も、メモリ・インターフェース20を介してこの第1
バス22に接続されている。システム入出力コントロー
ラ30は、第1バス22とシステム・バス(SBus)
32との間でブリッジの役目を果たす。システム・コン
トローラ18は第1バス22に接続され、さらに制御ラ
イン24、26、28、および29を介してプロセッサ
12、プロセッサ14、主メモリ16、およびシステム
入出力コントローラ30にもそれぞれ接続されている。
【0028】SBus 32に別の構成要素(図示せ
ず)を接続するために、1つまたは複数のスロット(た
とえばスロット34)を備えることができる。プロセッ
サ入出力バス・ブリッジ36がSBus 32に接続さ
れる。これにより、1つまたは複数の周辺装置50を接
続するための周辺バス(PBus)33へ接続される。
プロセッサ入出力ブリッジ36は、入出力バス40を介
した1つまたは複数の周辺装置46および48へのプロ
セッサ入出力のアクセスを行う。
【0029】入出力バス40上にある周辺装置がプロセ
ッサ10へ、具体的にはプロセッサ10の主メモリ16
へDMAアクセスを行うために、入出力バス40とSB
us32との間にダイレクト・メモリ・アクセス・コン
トローラ(DMAC)38も接続されている。このDM
AC 38は別のバス・ブリッジを形成する。
【0030】フォールト・トレラント・コンピュータ・
システムの場合、入出力バスを1対のフォールト・トレ
ラント冗長バスとして構成することができる。その際、
コンピュータ・システム10の多様なインスタンスをそ
のバスに接続する。
【0031】図2は、DMAC38をさらに詳細に例示
した図である。DMAC 38は、ローダ・マシン62
(以下ローダ62と呼ぶ)およびムーバ・マシン64
(以下ムーバ64と呼ぶ)を備える。ローダ62とムー
バ64はそれぞれ、プロセッサ入出力インターフェース
(それぞれ66および68)を有し、これによってプロ
セッサ10がローダおよびムーバを直接制御できる。
【0032】本発明の一実施形態では、ローダ62はロ
ーダ・コントローラ84を備え、これによってローダ6
2が主メモリ16からDMAC 38へDMAコマンド
をロードできる。具体的に言えばローダ・コントローラ
84は、プロセッサ10の主メモリ16からムーバ64
内のムーバ・レジスタ74へDMAコマンドをロードす
るように動作する。
【0033】ローダ62はレジスタ72も備える。具体
的にこれらは、主メモリ16内にあるコマンド・バッフ
ァ92をアドレス指定するためのベース・ポインタ75
用のベース・レジスタ76と、コマンド・バッファ92
内にあるDMAコマンド・シーケンスのテールをアドレ
ス指定するテール・ポインタ77用のテール・ポインタ
・レジスタ78と、コマンド・バッファ92内にあるコ
マンド・シーケンスのヘッドをアドレス指定するヘッド
・ポインタ79用のヘッド・ポインタ・レジスタ80と
を含む。ローダ62にはその他のレジスタ82も備えら
れている。
【0034】ムーバ64は、バス間で大量のデータを移
動させるのに使用できる。これを実行するためのムーバ
転送機構85を含む。ムーバ64はムーバ・コントロー
ラ86を備える。これはムーバ・レジスタ74内のDM
Aコマンドに従ってDMA操作を制御するために使用可
能である。ムーバ64用のDMAコマンドは、プロセッ
サ10によってセットアップされた16バイト構造であ
る。DMAコマンドはムーバ64に、入出力バス40と
SBus DVMA(ダイレクト仮想メモリ・アクセ
ス)アドレスとの間でどちらかの方向にデータを移動さ
せ、主メモリに中継する。このDMAコマンドは、プロ
セッサ10によってムーバ・レジスタ74に直接書き込
むか、あるいは主メモリ16内のコマンド・バッファに
書き込んでから、ローダ62によってムーバ・レジスタ
74にロードすることができる。
【0035】DMAコマンドは、DVMAおよびフォー
ルト・トレラント入出力バス・アクセスに任意の開始ア
ドレスを指定することができる。これは、アラインメン
トの制約なしに、所与の最大値までの任意の転送長さを
指定することができる。DMAコマンドは、 − 主メモリのDVMAアドレスと、 − 入出力バス・アドレスと、 − バイト・カウントと、 − DVMAアクション・バイトとを含むことができ
る。
【0036】DVMAアクション・バイトは、(転送方
向に関する)方向インジケータ、妥当性ビット、割込み
イネーブル・ビット、およびライトバック・イネーブル
・ビットを含むコマンドおよび状況情報を備える。
【0037】本発明の実施形態は、プロセッサ10とD
MAC 38との間でDMAコマンドを転送する際のオ
ーバヘッドを最小限に抑えるために、DMAコマンドを
効率的に転送するための特定の機構を含む。
【0038】図3に示すように、主メモリの領域はコマ
ンド・バッファ92として構成される。コマンド・バッ
ファ92として構成された主メモリ16のこの領域は、
オペレーティング・システム90の制約およびDMAコ
ントローラによる主メモリ16の使い方により、主メモ
リ内に配置される。たとえば、現在の例では、このコマ
ンド・バッファは8Kバイト境界で配置された8Kバイ
ト・ページとして定義される。図3は、DMAC 36
内に保持されているベース・レジスタ76、テール・レ
ジスタ78、およびヘッド・レジスタ80も例示してい
る。プロセッサは、ミラー・ベース・レジスタ106、
ミラー・ヘッド・レジスタ110、およびミラー・テー
ル・レジスタ108内にそれぞれミラー・ベース・ポイ
ンタ105、ミラー・ヘッド・ポインタ109、および
ミラー・テール・ポインタ107を保持していることに
留意されたい。
【0039】本発明の一実施形態では、DMAC 38
のムーバ64内にあるコマンド・バッファ・ベース・レ
ジスタ(ベース・レジスタ)76が、主メモリ16内に
あるコマンド・バッファ92のベース91のアドレス指
定を可能にする。図4は、このベース・レジスタ76を
例示した図である。これは、ビット0〜12が0であり
(すなわち8K境界)、ビット13〜29が主メモリ1
6内の個々のページをアドレス指定する30ビット・レ
ジスタである。
【0040】テール・ポインタ77およびヘッド・ポイ
ンタ79(DMAC 38のテール・レジスタ78およ
びヘッド・レジスタ80にそれぞれ保持されている)
が、それぞれ、コマンド・バッファ92内に保持されて
いるDMAコマンド・シーケンスのテール98およびヘ
ッド100のアドレス指定を可能にする。DMAコマン
ド・シーケンスのヘッドは、このシーケンスの終端に関
係しており、ここでDMAコマンドがコマンド・バッフ
ァに追加(格納)される。DMAコマンド・シーケンス
のテールは、このシーケンスの終端に関係しており、こ
こでDMAコマンドがコマンド・バッファから取り出さ
れる(読み取られる)。以下に記載するように、コマン
ド・バッファはリング・バッファとしても構成される
(すなわち、モジュロ・アドレス指定によりアドレス指
定される)。
【0041】ベース・レジスタ76は、コマンド・バッ
ファ92内のDMAコマンドを見つけるためにDMAC
38が発行するSBus DVMAアドレスを含む。
【0042】テール・レジスタ78内のテール・ポイン
タ77は、現在処理されているDMAコマンド(たとえ
ばDMAコマンド102)のインデックスを提供する。
テール・レジスタ78のテール・ポインタ77における
それぞれの増分は、主メモリにおける16バイト増分を
表し、これは1つのDMAコマンドに対応する。テール
・ポインタ値がゼロの場合は、そのコマンドがベース・
レジスタ76の指示するアドレスにあることを表す。
【0043】図5は、テール・レジスタ78を例示する
図である。ビット0〜3(すなわち16バイト境界)が
ゼロであり、ビット4〜12がコマンド・バッファ92
内のインデックス値を示すことに留意されたい。
【0044】ヘッド・レジスタ80は最後のDMAコマ
ンド(たとえばDMAコマンド104)のインデックス
を含み、これは主メモリ16内のコマンド・バッファ9
2で有効である。ヘッド・レジスタ80内のヘッド・ポ
インタによって与えられるアドレス指定は、テール・レ
ジスタ78のテール・ポインタ77について説明したと
おりである。ヘッド・レジスタ80を例示した図6を見
るとわかるように、これは図5に例示したテール・レジ
スタ78と同じ形式である。
【0045】ヘッド・ポインタ79およびテール・ポイ
ンタ77の制御は、コマンド・バッファ92をリング・
バッファとして構成する(すなわちモジュロ・アドレス
指定が提供されている)ためのようなものであり、これ
によってポインタは、コマンド・バッファ92の一方の
端から他方の端へ折り返す。すなわち、アドレスは0〜
n(ここでnは最大インデックス値に対応する)まで増
加し、その後0に戻る。もちろんこのインデックス表示
は、nから0という逆方向に進み、その後nに戻っても
同じである。
【0046】DMAコントローラがアイドル状態であ
り、現在のコマンドについて進行中のすべてのDMAを
完了した状況で、ヘッド・レジスタ80およびテール・
レジスタ78にあるヘッド・ポインタ79およびテール
・ポインタ77が、それぞれコマンド・バッファ92内
の同じ位置を指示している場合、このコマンド・バッフ
ァには有効なDMAコマンドがなく、DMAコントロー
ラはその時点で転送する必要のあるDMAコマンドがな
いことを理解する。
【0047】以下に説明するように、ヘッド・レジスタ
80およびテール・レジスタ78が使用される方法は異
なる。具体的には、ヘッド・レジスタ80はプロセッサ
10によって管理されるが、テール・レジスタ78はD
MAC 38によって管理される。
【0048】次に、図1に示したシステムの動作につい
て、具体的にはDMAC 38の動作について、一般的
に説明する。
【0049】前述のように、DMAC 38はローダ6
2およびムーバ64を備え、プロセッサ12、14がD
MAC 38に対して提供するDMAコマンドに応答し
て動作することができる。DMAコマンドは、アライン
メントに関する制約なしに、DVMAおよび入出力バス
・アクセスに対して任意の開始アドレスを指定し、所与
の最大値までの任意の転送長さを指定することができ
る。ムーバ64は、実行可能な最大幅の転送および最長
のバーストを使用して、実行可能な最高の転送を処理す
る。読取り値が好都合なアドレスで終わらない場合、実
行可能な最速のバースト転送を使用するために、ムーバ
64によって、DMAコマンドに指定されたデータより
も多くのデータが転送のどちらかの端で読み取られてい
る可能性がある。過剰読取りになると、次の適切な境界
(たとえばSBusでは64バイト境界、入出力バスで
は8バイト境界)まで何も読み取らない。書込みは正確
に処理される。したがって、ムーバ64は、予測される
データを可能な限り最速の方法で書き込むのに適した、
小規模なSBusサイクルと入出力バス・サイクルの組
合わせであれば何でも使用する。
【0050】必要であれば、ローダ62は、完了状況の
主メモリ内にあるDMAコマンドを更新することができ
る。DMAコマンドに指定されていれば、ムーバ64が
SBus割込みを生成することもできる。この割込みが
プロセッサ10に達したときに、DMAコマンドは完了
しており、メモリへの書込みが要求されていることが保
証されているが、主メモリに達する完了状況とプロセッ
サに達する割込みとの間のタイミングの関係は決められ
ていない。
【0051】DMAの実行中、プロセッサは、主メモリ
16内にあるコマンド・バッファ92の待ち行列にDM
Aコマンドを入れることが可能であって、単一プロセッ
サ入出力書込みを使用して、すなわち新しいヘッド・ポ
インタをヘッド・レジスタ80に書き込むことによっ
て、その存在についての信号をローダ62に送信するこ
とができる。ムーバ64が1つのコマンドに対するDM
Aを完了したときに、ヘッド・ポインタ79とテール・
ポインタ77との間に何らかの差異があればそれを分析
することによって、ローダは即時に次のDMAコマンド
をムーバ・レジスタ74にロードし、プロセッサによる
何らかの支援を待たずに、新たにDMAを開始すること
ができる。言い換えれば、ローダ62は、ヘッド・ポイ
ンタ79とテール・ポインタ77との間の差異を使用し
て、DMAコマンドがコマンド・バッファ92からダウ
ンロードされるのを待っていることを示す。
【0052】図7Aおよび図7Bは、プロセッサ10お
よびDMAC 38の動作を例示した流れ図である。
【0053】図7Aは、プロセッサ10が実行する各ス
テップを表す。
【0054】ステップS1で、プロセッサは新しいDM
Aコマンド(たとえばDMAコマンド103)をコマン
ド・バッファ92に書き込む。プロセッサは、ミラー・
ヘッド・レジスタ110の内容(すなわちミラー・ヘッ
ド・ポインタ109)によって識別されるオフセット
で、DMAコマンドをコマンド・バッファ92に書き込
む。コマンド・バッファのベースは、ミラー・ベース・
レジスタ106の内容(すなわちミラー・ベース・ポイ
ンタ105)によって識別される。
【0055】ステップS2で、プロセッサはミラー・ヘ
ッド・レジスタ110内のミラー・ヘッド・ポインタ1
09を増分する。コマンド・バッファ92内の次の位置
は、ミラー・ヘッド・レジスタ110の内容を16バイ
トだけ増分することによって識別されるので、現時点で
最後のDMAコマンド104を超えて次の位置を指示す
る。
【0056】ステップS3で、プロセッサはミラー・ヘ
ッド・レジスタ110の内容とミラー・テール・レジス
タ108の内容とを比較する。
【0057】これらが同等であれば(本実施の形態の場
合はこれらが等しければ)、コマンド・バッファ内には
それ以上スペースがない可能性があることを意味する。
これを調べるには、ミラー・テール・レジスタ108の
内容とテール・レジスタ78の内容とを確実に対応させ
る必要がある。したがってステップS4で、プロセッサ
はテール・レジスタ78の現在の内容をミラー・テール
・レジスタ108にコピーする。最後にミラー・テール
・レジスタ108が更新されてから、DMAC38がテ
ール・レジスタ78内のテール・ポインタ77を変更し
た場合は、ミラー・ヘッド・レジスタ110の内容とミ
ラー・テール・レジスタ108の内容が同等ではないは
ずである。ステップS3およびS4によって形成される
ループは、ステップS3のテストによって、ヘッド・レ
ジスタ110の内容とテール・レジスタ108の内容が
同等でないことが示されるまで繰り返される。
【0058】ステップS3のテストによって、ミラー・
ヘッド・ポインタ109がミラー・テール・ポインタ1
07と同等でないことが示されると、プロセッサはステ
ップS5で、コマンド・バッファ92に書き込まれるD
MAコマンドが他にもあるかどうかを判定する。他にも
ある場合は、ステップS1に制御が戻される。他にない
場合、プロセッサはステップS6で、DMACのヘッド
・ポインタ79がミラー・ヘッド・ポインタ109に対
応するように更新するために、ミラー・ヘッド・レジス
タ110の内容をDMAC 38のヘッド・レジスタ8
0にコピーする。
【0059】その結果、プロセッサ10は、1つまたは
複数のDMAコマンドをバッファ92のヘッドに追加
し、DMACヘッド・レジスタ80への単一書込みによ
って、DMAC 38にすべてのコマンドを使用できる
ことを示すことがわかる。これによって、入出力帯域幅
要件を最小限に抑えることができる。
【0060】プロセッサ10は、コマンド・バッファ9
2内にスペースが存在するか否かを判定するために、各
インスタントでDMACテール・ポインタ77をミラー
リングする必要はない。プロセッサ10はほとんどの場
合に、前述のステップS1〜S6を使用して、ミラー・
テール・レジスタ108内に保持されているミラー・テ
ール・ポインタ107を使用することができる。プロセ
ッサ10は、ミラー・ヘッド・レジスタ110の内容と
ミラー・テール・レジスタ108の内容とを比較するこ
とで、コマンド・バッファ92にスペースがあるか否か
を判定する。これらのミラー・レジスタ110および1
08内にあるミラー・ポインタ値が同等でない場合(こ
の例では等しくない場合)、ミラー・ヘッド・レジスタ
110のミラー・ヘッド・ポインタが指すアドレスにあ
るコマンド・バッファ92にはスペースがある。プロセ
ッサは、DMAC 38のヘッド・レジスタ80に書き
込む際にミラー・ヘッド・ポインタ109それ自体を更
新するが、通常はミラー・テール・ポインタ107は修
正しない。ミラー・ヘッド・ポインタ109とミラー・
テール・ポインタ107との所定の関係が検出されると
(この例では、ミラー・ヘッド・ポインタ値とミラー・
テール・ポインタ値が等しい場合)、プロセッサ10
は、テール・ポインタ77を最後にチェックしてからD
MAC 38がこれを更新したか否かをチェックする。
プロセッサ10は、テール・ポインタ77の現在値を見
つけて、これをミラー・テール・レジスタ108にコピ
ーするかまたは書き込むために、DMAC 38にある
テール・レジスタ78に対して単一読取りアクセスを実
行することができる。プロセッサ10がDMA要求を生
成するのとほぼ同じ速度でDMAC 38が要求を処理
していれば、プロセッサ10は、リング・バッファ92
のローテーションが1回完了するごとにDMAテール・
レジスタ78にアクセスするだけでよい。これによっ
て、入出力帯域幅要件がさらに最小限に抑えられる。
【0061】図7Bは、DMAC 38が実行するステ
ップを表す。
【0062】ステップS11でローダ62は、ヘッド・
ポインタ79とテール・ポインタ77とを比較すること
ができる。ヘッド・ポインタ79とテール・ポインタ7
7が同等であれば、現在、主メモリからムーバ64への
転送を待っているDMAコマンドはないことが判定され
る。したがって、DMACローダ62は、ヘッド・ポイ
ンタ79とテール・ポインタ77との間に差異が生じる
まで待機する。ここで同等であると言うことは、ポイン
タが、コマンド・バッファ内にある共通のDMAコマン
ド格納位置を効果的に指し示しているという意味である
ことがわかる。本実施形態の場合、これは両者が同じ値
を有していることを意味する。ただし他の実施形態で
は、使用されるアドレス指定モードに応じて、互いに所
定の関係を保った値を有することができる。
【0063】ヘッド・ポインタ79とテール・ポインタ
77が同等でない場合(すなわち本実施形態では異なる
値を有する場合)、ローダ62はステップS12でテー
ル・ポインタ77を使用し、DMAの読取り操作によっ
て、コマンド・バッファ92内にある最後のコマンドに
アクセスする。したがってDMACローダ62は、次の
DMAコマンド(たとえばDMAコマンド102)を主
メモリ16からムーバ・レジスタ74に転送することが
できる。
【0064】ムーバがDMAコマンドに指定されたデー
タの移動を完了するステップS13に続いて、ローダは
ステップS14で、「実行済み」または「完了」という
指示を、DMAコマンドがそこから読み取られたばかり
のコマンド・バッファ位置に書き込むことができる。プ
ロセッサはこれを使用して、DMAC 38によってど
のDMAデータが首尾良く転送されたか否かを監視する
ことができる。
【0065】ステップS15で、DMACローダ62
は、テール・ポインタ77がコマンド・バッファ92内
の新しいテールを指し示すように更新する。
【0066】上記ステップS11〜S15は、図1のロ
ーダ・コントローラ84が提供する機能を決めるもので
ある。
【0067】前述のように、ヘッド・ポインタ79およ
びテール・ポインタ77は、モジュロ・アドレス指定を
使用して、コマンド・バッファ92をリング・バッファ
として構成することができる。この方式では、主メモリ
からDMAC 38への転送を待っているコマンドの文
字列は、コマンド・バッファ用に割り振られたメモリ・
スペース内で折り返すことができる。したがって、ヘッ
ド・ポインタ79およびテール・ポインタ77の修正
は、コマンド・バッファ92に割り振られたメモリ・ス
ペースに基づく「モジュロ」方式で実行されるのが効果
的である。
【0068】前述のように、プロセッサ10は、1つま
たは複数のDMAコマンドのシーケンスをコマンド・バ
ッファ92に書き込むのに使用することができる。この
コマンド・シーケンスは、転送されたDMAコマンドの
最後のアドレスだけをDMAC 38のヘッド・レジス
タ80に送信して書き込むことができる。テール・ポイ
ンタ77は、次のコマンドのアドレスを形成するために
使用されるので、DMAコマンドごとに更新される。D
MACローダ62は、一連のDMAコマンドをコマンド
・バッファ92からDMACムーバ64に転送するのに
使用することができる。この場合、DMAコマンドのシ
ーケンスがコマンド・バッファ92からDMACムーバ
64に転送され、最後のDMAコマンドが完了した後
に、割込みを生成するか、または主メモリ内の最終コマ
ンドの完了状況を更新することができる。
【0069】次に、DMACローダ62およびDMAC
ムーバ64で提供されるその他のレジスタについて簡単
に説明する。
【0070】DMACローダ62内のその他レジスタ8
2は、現在のローダ状況を示すローダ状況レジスタを含
むことができる。ローダは2つの主要な状態、すなわち
受動状態と能動状態の間で移動する。パワーオン・リセ
ット・コマンド、同期化リセット・コマンド、任意のデ
ータ転送エラー・コマンド、あるいは直接プロセッサ・
コマンドによって、ローダを能動状態に移動させること
ができる。
【0071】能動状態では、ローダはDMAコマンドを
処理中であっても処理中でなくてもよい。すべてのコマ
ンドが完了すると、ヘッド・レジスタ80の内容(すな
わちヘッド・ポインタ79)はテール・レジスタ78の
内容(すなわちテール・ポインタ77)と同等になる。
ローダは、プロセッサ10が新しい値をヘッド・レジス
タ80に書き込むのを能動状態で無期限に待機し、書き
込まれた後、ローダは新しいDMAコマンドを処理す
る。能動状態は、ローダにとって通常の状態である。
【0072】DMACムーバ64内にあるムーバ・レジ
スタ74は、いくつかの異なるレジスタを備える。
【0073】DMAC_ACTIONレジスタは、現在
のムーバ動作を決める。このレジスタは、DMACロー
ダ62によって自動的にロードされ、主メモリ内にある
DMACコマンドのアクション・バイトに依存してい
る。DMAC_ACTIONレジスタは、コマンドおよ
び状況情報を含む。これは、方向インジケータ、妥当性
インジケータ、割込みイネーブル・インジケータ、およ
びライトバック・イネーブル・インジケータを含むこと
ができる。方向インジケータは転送方向を示す。妥当性
インジケータは、コマンドの妥当性をチェックすること
ができる。割込みイネーブル・インジケータは、DMA
動作完了時にDMAムーバが割込みを生成するか否かを
示す。ライトバック・イネーブル・インジケータは、コ
マンド完了後に、完了状況がコマンド・バッファに書き
戻されるか否かを示す。DMACムーバはアクション・
コマンドを完了すると、終了状況でDMAC_ACTI
ONを更新する。書戻し(ライトバック)が許可される
と、DMAローダはDMAC_ACTIONレジスタ内
で、更新されたDMAC_ACTIONを主メモリ16
に書き戻す。DMAC_ACTIONレジスタは、その
他の状況インジケータに使用する状況ビットをさらに含
むことができる。
【0074】DMAC_DVMAレジスタは、DMAに
使用されるSBusDVMAアドレスを決める。このD
VMAアドレスは、システム入出力コントローラ30内
にある入出力メモリ管理ユニットによって、実アドレス
に変換される。このレジスタは、DMACローダ62に
よって、コマンド・バッファ92にあるDMAコマンド
から自動的にロードされる。
【0075】DMAC_IOADレジスタは、DMAに
使用する入出力バスDVMAアドレスを決める。このレ
ジスタも、ローダによって、コマンド・バッファ92に
あるDMAコマンドから自動的にロードされる。
【0076】DMAC_COUNTレジスタは、DMA
C転送バイトをカウントする。これは、DMAコマンド
に関して転送されるバイト数を与える。このレジスタ
も、DMACローダ62によって、コマンド・バッファ
92にあるDMAコマンドから自動的にロードされる。
【0077】前述のように、プロセッサ10は、ミラー
・ベース・ポインタ105、ミラー・テール・ポインタ
107、およびミラー・ヘッド・ポインタ109を、ミ
ラー・ベース・レジスタ106、ミラー・テール・レジ
スタ108、およびミラー・ヘッド・レジスタ110内
でそれぞれ維持する。図3に示すように、これらのレジ
スタは主メモリ内に保持することができる。別法とし
て、これらをCPUレジスタで形成することができる。
【0078】図8は、DMAC 36のその他の態様を
さらに詳細に例示した図である。具体的に言えば、図8
はDMA転送機構85をより詳細に例示した図である。
【0079】図8に示すように、第1のSBusインタ
ーフェース202は、SBus 32からデータを受け
取るために接続されている。第2のSBusインターフ
ェース204は、SBus 32にデータを転送するた
めに接続されている。これらのSBusインターフェー
スは、ムーバ・コントローラ86が供給するクロック信
号CSによってクロックされている。図3に示すよう
に、SBusは単一バス32である。ただし、SBus
は制御ライン、アドレス・ライン、およびデータ・ライ
ンを備えていてもよく、SBusインターフェース20
2および204は多重クロックト・クロック動作バッフ
ァとして構成することが可能であって、それぞれのバッ
ファが1つまたは複数の制御ライン、アドレス・ライ
ン、およびデータ・ラインに対して責任を負っている。
SBusインターフェース202の出力は、マルチプレ
クサ210への第1の入力を形成するために、ライン2
06を介して供給される。このマルチプレクサ210へ
の第2の入力は、アキュムレータ240の出力に接続さ
れたパス208によって形成される。
【0080】マルチプレクサ210への第1の入力と第
2の入力の選択は、ムーバ・コントローラ86による多
重信号MS出力によって実行される。マルチプレクサ2
10の出力211は、バッファ・ステージ212に供給
される。バッファ・ステージ212は、クロックト入力
ゲート214、バッファ記憶域(たとえば容量が128
×8バイトのランダム・アクセス・メモリ)、およびク
ロックト出力ゲート218を含む。クロックト入力ゲー
ト214およびクロックト出力ゲート218は、ムーバ
・コントローラ86からのクロック信号CSを受け取
る。
【0081】バッファ・ステージ212の出力は、第2
のマルチプレクサ230への第1の入力226と、保持
レジスタ222への入力224となる。保持レジスタ2
22は、ムーバ・コントローラ86からのクロック信号
CSによってクロックされる。保持レジスタ222の出
力は、第2のSBusインターフェース204への入力
220を形成する。
【0082】第2のマルチプレクサ230への第2の入
力228は、第1の入出力バス・インターフェース25
0からの出力によって形成される。
【0083】第2のマルチプレクサ230からの第1の
出力と第2の出力の選択も、ムーバ・コントローラ86
からの多重信号(MS)によって実行される。第2のマ
ルチプレクサ230の出力232は、シフタ/ローテー
タ234に供給される。このシフタ/ローテータ234
は、選択可能なバレルシフトを行うための制御可能なバ
レル・シフタである。シフタ/ローテータ234は、ム
ーバ・コントローラ86からシフト制御信号236を受
け取る。シフタ/ローテータ234からの出力238
は、アキュムレータ240に供給される。アキュムレー
タ240は、ムーバ・コントローラ86からバイト・イ
ネーブル信号242を受け取り、ムーバ・コントローラ
86からフェーズ信号244も受け取る。アキュムレー
タ240からの出力は、第1のマルチプレクサ210へ
の第2の出力208を形成し、第2の入出力バス・イン
ターフェース248への入力246も形成する。第1の
入出力バス・インターフェース250と第2の入出力バ
ス・インターフェース248も、ムーバ・コントローラ
86からのクロック信号CSによってクロックされる。
入出力バス・インターフェース248からの出力252
は、入出力バス40にデータを置くことであり、第1の
入力バス・インターフェース250への入力254は、
入出力バス40からのデータを受け取ることである。
【0084】次に、ムーバ転送機構85の動作について
下記に記載する。ムーバ・コントローラ86は、ムーバ
転送機構85の動作を制御するために、ムーバ64のム
ーバ・レジスタ74内にあるデータに応答して動作する
ことに留意されたい。
【0085】図9は、シフタ/ローテータ234を示す
概略図である。図4に示すように、シフタ/ローテータ
234への入力232およびシフタ/ローテータ234
からの出力238は、マルチバイト出力である。ムーバ
・コントローラ86からのシフト入力236は、シフト
制御信号236によって選択されたシフタ/ローテータ
234内でのバレルシフト動作を制御するために使用す
ることができる。
【0086】図10は、アキュムレータ240を例示し
た図である。シフタ/ローテータ234からアキュムレ
ータ240への入力238は、平行にバイト・マスク2
39へ供給される。バイト・マスクを使用して、バイト
・イネーブル信号242にしたがって、その入力から1
つまたは複数のバイトを選択することができる。アキュ
ムレータ・レジスタ241を使用して、フェーズ信号2
44により、バイト・マスク239が供給するバイトを
選択的に累積し、出力することができる。この例では、
マスキングはバイトごとに実行されるが、他の実施形態
では、例えばビットごとに選択することができることに
留意されたい。フェーズ信号はアキュムレータ・レジス
タ241の異なるフェーズの動作を累積し、その後累積
されたビットを出力するように制御する。バイト・イネ
ーブル信号242およびフェーズ信号244は、ムーバ
・コントローラ86によって供給される。アキュムレー
タ・レジスタ241からの出力は、ライン208および
246に供給される。
【0087】図8では、斜線で印を付けたように、すべ
ての内部データ・パス・ラインが64ビット幅(すなわ
ち8バイト幅)である。ただし、バス32および40上
のデータ・ラインおよびアドレス・ラインは、別のバス
・インターフェースを使用して別々に制御できることが
可能であって、この場合、バスとインターフェースとを
結ぶラインが内部データ幅とは異なる場合があることに
留意されたい。さらにまた、この例の内部データ幅は、
可能な内部データ幅の単なる一例であって、代わりに他
の内部データ幅(たとえば32ビットまたは128ビッ
ト)を使用してもよいことを理解されたい。
【0088】図11は、ソース・バス(SBus 32
または入出力バス40のいずれでもよい)とそれらのバ
スの他方にある宛先との間で実行可能な転送を例示した
図である。この例では、実施形態が64ビット幅のデー
タ・パスであるので、8バイト幅のデータ・ソースが表
示されている。ただし、上記で提案したように、他の実
施形態では他のデータ幅が採用されることがある。もち
ろんDMA転送は、DMAC 38の位置に応じて、他
のバス間でも実行可能である。
【0089】ソース情報260はワード0のバイト4か
ら開始していることに留意されたい。これに対して宛先
情報は、ワード10のバイト6から開始している。した
がって、単にバイトをワードごとにソースから宛先に転
送することはできないことがわかる。ムーバ転送機構
は、ソース・アドレスから宛先アドレスへのデータの転
送を非常に効率よく実行するように構成される。
【0090】次に、シフタ/ローテータ234とアキュ
ムレータ240の動作について、図12を参照しながら
説明する。
【0091】図12で、第1列は、転送の第1期、第2
期、第3期、および第4期でのシフタ/ローテータ23
4への入力232を表す。第2列は、これら4期におけ
るシフタ/ローテータ234の出力238を示す。第3
列は、第1期〜第4期について、第1フェーズおよび第
2フェーズでアキュムレータ240に供給されるバイト
・イネーブル信号242を表す。第4列は、4期の各フ
ェーズにおける、アキュムレータ・レジスタ241の内
容を例示する。第5列の矢印は、第1期〜第4期それぞ
れの第1フェーズ中に、アキュムレータ240の内容を
245で出力することを表す。第1列に示した1.1、
1.2、2.1などの参照番号は、第1期の第1フェー
ズ、第1期の第2フェーズ、第2期の第1フェーズなど
を表す。次に、図12についてより詳細に説明する。
【0092】以上のことから、第1期(1.1で示す)
では、シフタ・ローテータ234への入力はソース・ワ
ード0の内容(すなわち***ABCDE)である。シ
フタ/ローテータ234はこの情報を右へ2バイト分バ
レルシフトして、238の列1.1に示した信号(すな
わちDE***ABC)を提供する。この情報は、シフ
タ/ローテータ234の出力で即時に使用できる。同時
に、この第1フェーズでは、242の行1.1に図示さ
れたバイト・イネーブル信号(00000111)が、
アキュムレータ240のバイト・セレクタ239に供給
される。これによってアキュムレータ240に、アキュ
ムレータ・レジスタ241内に、バイトイネーブル信号
の「1」で識別される位置で使用可能なバイトを累積さ
せ、バイトイネーブル信号の「0」に対応するバイト位
置にある内容は選択しないようにさせる。アキュムレー
タ・レジスタ241の内容は、第1の宛先バイト10
(すなわち*****ABC)を形成するために(24
5の行1.1に示すように)即時に出力される。
【0093】1回の実行で3バイトが出力されるように
表示されている。これを望まないあるいはこれが不可能
な他の実施形態の場合、ムーバ・コントローラ86は信
号を供給して、出力に3バイトが1回に1バイト選択さ
れるようにすることができる。
【0094】行1.2に示すように、動作の第2フェー
ズでは、シフタ/ローテータ234への入力およびここ
からの出力はそのままである。ただし、アキュムレータ
に供給されるバイト・イネーブル信号242は1100
0000に変わる。その結果、アキュムレータ240に
入力される最初の2バイト(DおよびE)がセレクタ2
39によって選択され、アキュムレータ・レジスタ24
1に累積される。ただし、これらの信号は出力されず、
代わりに動作の次のフェーズになるまでアキュムレータ
・レジスタ内に保持される。
【0095】動作の次のフェーズは、ステップ2の第1
フェーズを形成する。行2.1に示すように、シフタ/
ローテータ234への入力232は、ソース・バスから
のワード1(すなわちFGHIJKLM)に関する情報
に変わる。シフタ/ローテータ234からの出力238
は、この入力を右へ2バイト分バレルシフトしたもの
(すなわちLMFGHIJK)に対応する。このフェー
ズで、図7の242に示すように、バイトイネーブル信
号が00111111に変わり、これによってセレクタ
239は、アキュムレータ・ユニット241で累積する
ために信号FGHIJKを選択する。これで宛先への第
2のワードの供給は完了し、次いで列2.1の245に
矢印で示されたように、8バイトのワードとして出力さ
れる。
【0096】図12での考察により、このプロセスがど
のようにして2.2、3.1、3.2、および4.1の
各フェーズへと続行されるかが理解されよう。第4の宛
先バイト(バイト13)に出力される情報は、フェーズ
4.1が終わった時点ですでにアキュムレータに格納さ
れているので、フェーズ4.2では必要ないことに留意
されたい。したがってこの例では、列4.1の245に
矢印で示されているように、この情報は即時に出力され
る。他の例で、1ワードが8バイトより少ないワードが
出力される場合、特定の実施形態により、1バイト、2
バイト、および/または4バイトのグループで出力する
ことができる。
【0097】したがって、バス32とバス40との間で
の転送、またはバス40とバス42との間での転送の場
合、ソースアラインメントから宛先アラインメントに転
送するために、情報がいかに効率よくバレルシフトされ
て累積されるかが理解されよう。
【0098】バイトの詳細な動きは、実施の形態によっ
て異なる。たとえば、どちらのバスもバースト・モード
で動作している場合、前述のようにアキュムレータ24
0を2つのフェーズで動作させるようにすることができ
る。第1フェーズでは、シフタから入出力データ・ワー
ドxのnバイトを入手する。第2フェーズでは、入出力
データ・ワード(x+1)から(8−n)バイトを入手
する。次いでアキュムレータの内容がバッファ216に
転送され、(x+1)からnバイトを即時に入手する、
といった具合である。値nはシフトに関係し、ソース・
バスおよび宛先バス上にある開始アドレスのバイト・オ
フセットに依存する。
【0099】シフト信号236、バイト・イネーブル信
号242、およびフェーズ信号244は、すべてムーバ
・コントローラ86によって提供されることに留意され
たい。このムーバ・コントローラ86を使用して、ソー
ス・アドレスおよび宛先アドレス、これらの信号を生成
するための転送方向、ならびに図8に例示した他のユニ
ットに供給されるクロック信号CSおよび多重信号MS
を含む、ムーバ・レジスタ74に格納されたデータに応
答することができる。
【0100】図13は、ムーバ・コントローラの動作を
まとめた構成図である。ステップS21では、ムーバ・
コントローラがムーバ・レジスタ74からソース・アド
レスおよび宛先アドレスを取り出す。S22では、バス
32とバス40との間の転送方向を決定する。この情報
は、一般にムーバ・レジスタ74のうちの1つの転送方
向指示によって決定される。ただし代わりに、関係する
バス・プロトコルを使用することができるソース・アド
レスおよび宛先アドレスから直接取り出すことも可能で
ある。
【0101】S23では、ムーバ・コントローラが、シ
フタ/ローテータ内で実行されるシフトおよび転送され
るブロック・シーケンスのサイズを決定する。
【0102】この情報は、基礎のしっかりしたアルゴリ
ズム、所与の正確なソース・アドレスおよび宛先アドレ
ス、ならびに転送方向により、容易に計算できることに
留意されたい。転送用ブロックの決定は、バス間での転
送をできる限り効率的に実行するように確定される。
【0103】図14に示すように、転送は異なるブロッ
ク・サイズで実行することが可能であって、使用可能な
バス・プロトコルおよび使用可能なハードウェア設計幅
の範囲内で実行される、これらのサイズによるブロック
転送の可用性に依存する。これは自由に選択することが
できる。
【0104】図14に示すように、転送ブロックは1バ
イト・サイズ、8バイト・サイズ、および64バイト・
サイズが可能であると考えられる。他の実施形態では、
1バイトよりも量が少ない場合にビット転送も可能であ
る。図14に概略を示したように、理論上の転送には、
以下のステップが含まれる。
【0105】ステップS31では、「8バイト」ブロッ
ク境界に達するまで、1バイト・サイズ・ブロックでの
初期転送が実行される。
【0106】ステップS32では、「64バイト」ブロ
ック境界に達するまで、8バイト・ブロック・サイズで
バイトを転送することができる。
【0107】ステップS33では、転送の終わりに近づ
き、8バイト・ブロック・サイズに戻る必要が生じるま
で、64バイト・ブロックで転送が実行される。
【0108】ステップS34では、残りのバイトを1バ
イト・サイズのブロックで転送する必要が生じるまで、
8バイト・ブロックが転送される。
【0109】ステップS35では、残りのバイトが転送
される。
【0110】前述のように、ステップS31より前に最
初のステップを設定することおよび/またはステップS
35より後に最終ステップを設定することによって、ビ
ットごとの転送を行うことができる。
【0111】以上のことから、実行される転送のサイズ
が決まっていてソース・アドレスと宛先アドレスが正確
であり、8バイト境界および64バイト境界を基準に分
布されていれば、上記の1つまたは複数ステージの組合
わせは、ムーバ・コントローラ86が容易に決定するこ
とができる。好適なアラインメントがすでに実行されて
いる場合、図9に示した1つまたは複数のステップが省
略できることは明らかである。
【0112】図13に戻ると、いったんステップS23
が決定されると、ステップS24で制御信号の詳細なシ
ーケンスを順番に生成し、ステップS25で転送を実行
することができる。
【0113】前述のように、バス32とバス40との間
の転送方向を決定する必要がある。SBus 32から
入出力バス40へ転送しても、その逆でもよい。
【0114】多重信号MSを第1のマルチプレクサ21
0および第2のマルチプレクサ230に提供することに
よって、転送方向の制御が実行される。図15は、入出
力バス40からSBus 32へのデータ転送を示す図
である。これを実行するために、第1のマルチプレクサ
210を制御して、アキュムレータ240の出力である
第2の入力を選択する。第2のマルチプレクサ230を
制御して、入出力バス・インターフェース250から第
2の入力228を選択する。
【0115】その結果、入出力バス・インターフェース
250で入出力バス40から受け取られた転送されるべ
きバイトが第2のマルチプレクサ230に供給され、今
度はこれがそれらのバイトをシフタ/ローテータ234
に供給する。図6および図7に関してすでに述べたシフ
ト/ローテーションおよび累積プロセスがシフタ/ロー
テータおよびアキュムレータで実行され、アキュムレー
タから出力されたバイトが第1のマルチプレクサ210
に供給される。SBusインターフェース240を介し
てSBus 32へ転送するために保持レジスタ222
へ転送されるデータ・ブロックを形成するために、第1
のマルチプレクサ210からの出力がバッファ216で
バッファリングされる。バッファ212および保持レジ
スタ222は、異なるバス速度およびバス・アクセスの
可用性を考慮に入れるために、入出力バスとSBus
32との間でのデータのバッファリングを可能にする。
【0116】図15では、ライン201、206、22
6、246、および252は破線で表示されていること
に留意されたい。これは、データが入出力バス40から
SBus 32に転送される場合に、データがこれらの
パスに沿って転送されないことを表している。
【0117】図16は、データ転送がSBus 32と
入出力バス40との間で実行される場合の、代替状況を
例示した図である。この場合、ライン201、206、
226、246、および252は実線で表示されてお
り、これに対してライン254、228、208、22
4、220、および203は破線で表示されていること
に留意されたい。これは、SBus 32から入出力バ
ス40へ情報が転送される際に、データは破線に沿って
流れないことを示している。
【0118】したがって、図16に示された状況では、
データはSBus 32からライン201を通ってSB
usインターフェース202で受け取られる。SBus
インターフェース202からのデータは、ライン206
を介して第1のマルチプレクサ210に供給される。こ
の場合、多重信号MSは、第1の入力を選択するために
第1のマルチプレクサ210に供給される。したがっ
て、マルチプレクサ210の入力206で受け取られた
データはその出力211に供給され、バッファ・ユニッ
ト212でバッファリングされる。このデータは、シフ
タ/ローテータおよびアキュムレータ240を通って入
出力バス40へ転送される一定に流れるように、バッフ
ァ・ユニット212から出力される。したがって、バッ
ファ・ユニット212から出力されるデータは、第2の
マルチプレクサ230の第1の入力226に供給され
る。多重信号MSは、その第1の入力226を選択する
ために、第2のマルチプレクサ230に供給される。し
たがって、マルチプレクサ230の第1の入力226の
データは、その出力232に供給される。図6および図
7に関する前述のシフト/ローテーションおよび累積動
作は、シフタ/ローテータ234およびアキュムレータ
240によって実行される。そこから出力されるデータ
は、ライン252を介して入出力バス40へ出力するた
めに、ライン245および246を介して入出力バス・
インターフェース248に供給される。
【0119】したがって、ソース・バスからデータを入
手し、これを宛先バスに出力するための所望のアライン
メントに再アラインメントするために、FIFOバッフ
ァ216と調和して使用されるシフト/累積機構234
〜240について記述してきた。具体的な例では、2つ
のバスはSBus 32と入出力バス40である。ソー
スはこれらバスのうちのいずれか一方、宛先はこれらバ
スのうちの他方とすることができる。ただし本発明は一
般に、どのような好適なバス・プロトコルの下でも動作
可能なバスに適用可能であることを理解されよう。
【0120】この例では、SBusで使用される本来の
バイト・アラインメントは64バイトであり、この機構
は可能であればどこでも64バイトのバースト転送を使
用できるようにする。本実施例の入出力バスは8バイト
にアラインメントされる。本実施例では、入出力バス転
送は512バイト長さまで可能であり、8バイト境界上
で開始および終了する。ただし他の実施例では、サイズ
の異なるバスの転送が実行できる。第1のモード(DM
A読取りモード)の場合、入出力バスがソースであり、
SBusは宛先である。シフタ/ローテータ234は、
開始ソース・アドレスおよび開始宛先アドレスの相対的
バイト・アラインメントに応じてデータをローテーショ
ンする、8バイトのバレル・シフタである。入出力バス
転送は、ソース・アドレスから読み取る際に使用するこ
とができる。図12を参照すると、転送の始めおよび終
わりに何らかの特別なデータを読み取れることに留意さ
れたい。バイトは、宛先アドレスが8バイトにアライン
メントされるまで、アキュムレータ内で入手される。次
いでこのアキュムレータの内容が、バッファ216に転
送される。その後このバッファの内容は、64バイト・
アドレス境界に達するまで、バイト転送または8バイト
転送を使用してSBusに書き込まれるが、この時点で
64バイトのバースト転送が使用される。
【0121】両方のバスがバースト・モードの場合、ア
キュムレータは2フェーズで動作する。第1フェーズで
は、シフタから入出力データ・ワードxのnバイトを入
手する。第2フェーズでは、入出力データ・ワード(x
+1)から(8−n)バイトを入手する。次いでこのア
キュムレータの内容がFIFOバッファに転送され、即
時に(x+1)からnバイトを入手する、といった具合
である。値nはシフトに関係し、ソース・バスおよび宛
先バス上にある開始アドレスのバイト・オフセットに依
存する。
【0122】DMA書込みモードでの動作は、SBus
がソースであり入出力バスが宛先であること以外は同じ
である。SBus読取りは必ず64バイト・バースト上
で開始する。転送の始めと終わりに何らかの特別なバイ
トが読み取られることがある。データはFIFOバッフ
ァ216に読み込まれ、シフタ/ローテータ234およ
びアキュムレータ240を通って進み、入出力バスに書
き込まれる。8バイト・アドレス境界に達するまで個々
のバイト(またはバイトのグループ)が入出力バスに書
き込まれ、この時点で残りが8バイト未満になるまで8
バイトのバースト転送が使用される。その後残りのバイ
トは1バイトずつ転送される。
【0123】ここまで、2つのバス間でバイトを転送す
るための非常に効果的で柔軟な方法について説明してき
た。バイト境界、8バイト境界、および64バイト境界
での転送を参照しながら説明してきたが、転送はその他
の境界でも実行可能であり、バイトのサブユニット、た
とえばビットごとでも実行可能であることが理解されよ
う。
【0124】DMAコマンドをプロセッサ10からDM
AC 38へ効率よく転送することができるDMAアー
キテクチャについて説明してきた。記載された実施形態
では、プロセッサ10は、1つの16バイトDMAコマ
ンドまたは一連の16バイトDMAコマンドを転送する
必要はなく、1つのヘッド・ポインタ(すなわちこの例
では12ビット)を転送した後に、ローカル・プロセッ
サ・メモリに保持されているコマンド・バッファ56に
DMAコマンドを書き込むだけでよい。その後DMAC
38は、DMACの都合のよいときに、DMA動作を
使用してDMAコマンドを転送することができる。した
がって本発明の一実施形態は、個々のDMAコマンドの
転送に関して、バスの使用とハンドシェーキングとを関
連付けることはない。またDMACは、DMAC内に保
持されているヘッド・ポインタとテール・ポインタとを
比較するだけで、DMAコマンドが転送を待機している
ことを自動的に識別することができる。
【0125】以上、本発明を含むコンピュータ・システ
ムの特定の例示的構成について説明してきたが、本発明
がこうした構成を有するコンピュータ・システムのみに
適用可能なものではないことを理解されよう。
【0126】DMAC 38は、図1に示した分離型装
置38のように実装する代わりに、入出力装置の一部ま
たはプロセッサの一部として内蔵することができる。こ
のような実施形態では、すでに述べた制御の効率が依然
として適用される。
【0127】図17は、コンピュータ・システム310
の例示的構成を示す図であり、ここでDMAC 338
は入出力装置346の一部として実装されている。図1
7に示すように、プロセッサ312と、メモリ316
と、入出力装置346のDMAC 338とは、プロセ
ッサ・バス322を介して相互に接続される。DMAC
およびプロセッサは、前述の図2から図7を参照しなが
ら説明したように、ポインタと制御の構成を含むことが
できる。DMAと入出力装置の入出力要素348との間
の双方向の動作は、DMAC 338によって制御する
ことができる。すでに述べた制御の効率がこの実施形態
に適用される。
【0128】図18は、コンピュータ・システム410
の他の例示的構成を示す図であり、ここでDMAC 4
38はプロセッサ412の一部として実装されている。
CPU 414およびDMAC 438は、バス・コン
トローラ440を介して相互に接続される。このプロセ
ッサ412のバス・コントローラ440と、メモリ41
6と、1つまたは複数の入出力装置446とは、バス4
22を介して相互に接続される。DMA動作は、たとえ
ばこのメモリ416と入出力装置446との間で実行可
能である。
【0129】図19は、コンピュータ・システム510
の他の例示的構成を示す図である。この場合、プロセッ
サ512と、メモリ516と、DMACと、1つまたは
複数の入出力装置546とは、バス522を介して相互
に接続される。このDMAC538は、メモリ516と
入出力装置546との間でDMAの転送を制御するのに
動作可能である。
【0130】図17〜図19で、矢印Aはそれぞれ、D
MAC x38をメモリx16から入出力装置x46へ
読み取る際の動作を示す。
【0131】いずれの実施形態でもDMACは、メモリ
と入出力装置との間でデータが移動する場合だけでな
く、メモリ内で移動する場合にも動作可能である。DM
ACがプロセッサと分離して実装される場合(たとえ
ば、図1、図17、および図19)、データは主メモリ
からDMACへ流れ、その後DMACから主メモリに書
き戻されるため、DMACには第2のバス・ポートが不
要である。
【0132】DMACは、主メモリと入出力装置との間
でデータをコピーするためのものであっても、常時単一
ポート装置として実装することができる。このような場
合、メモリ転送と入出力転送のどちらにもこの単一ポー
トが使用される。その結果、システム帯域幅の最適な使
用が達成されない可能性がある。ただし、好ましい実施
形態に関して説明したコマンド・バッファ制御の単純化
という点では、このような実施形態は依然として魅力的
であると言えよう。
【0133】実際、本発明の特定の実施形態について説
明してきたが、添付の特許請求の範囲に定義されている
ように、本発明の精神および範囲を逸脱しなければ、多
くの修正、追加、および/または置換が実行できること
を理解されよう。
【図面の簡単な説明】
【図1】本発明を組み込んだコンピュータ・システムの
例示的構成を示す概略構成図である。
【図2】図1のシステムのDMAコントローラを示す概
略構成図である。
【図3】主メモリにおけるコマンド・バッファを示す概
略図である。
【図4】ベース・レジスタを示す図である。
【図5】テール・レジスタを示す図である。
【図6】ヘッド・レジスタを示す図である。
【図7】DMAコマンドをDMAコントローラに転送す
るための、図1のコンピュータ・システムの動作を図示
した流れ図である。
【図8】図2のDMAコントローラのDMA転送機構を
示す概略構成図である。
【図9】図8の機構のシフタ/ローテータを示す概略構
成図である。
【図10】図8の機構のアキュムレータを示す概略図で
ある。
【図11】データを転送するためのソース・バイトおよ
び宛先バイトの位置合わせを示す図である。
【図12】シフタ/ローテータおよびアキュムレータの
動作を示す図である。
【図13】データを転送するための制御動作を示す流れ
図である。
【図14】可能なブロック転送動作を示す図である。
【図15】第1バスと第2バスとの間で転送するため
の、図8の機構の構成図である。
【図16】第1バスと第2バスとの間で転送するため
の、図3の機構の構成図である。
【図17】本発明を組み込んだコンピュータ・システム
の他の例示的構成を示す概略構成図である。
【図18】本発明を組み込んだコンピュータ・システム
の他の例示的構成を示す概略構成図である。
【図19】本発明を組み込んだコンピュータ・システム
の他の例示的構成を示す概略構成図である。
【符号の説明】
10 コンピュータ・システム 12 第1プロセッサ 14 第2プロセッサ 16 主メモリ 18 システム・コントローラ 20 メモリ・インターフェース 22 第1バス 24 制御ライン 26 制御ライン 28 制御ライン 29 制御ライン 30 システム入出力コントローラ 32 システム・バス(SBus) 33 周辺バス(PBus) 34 スロット 36 プロセッサ入出力ブリッジ 38 ダイレクト・メモリ・アクセス・コントローラ
(DMAC) 40 入出力バス 46 周辺装置 48 周辺装置 50 周辺装置 310 コンピュータ・システム 312 プロセッサ 316 メモリ 322 プロセッサ・バス 338 DMAC(ダイレクト・メモリ・アクセス・コ
ントローラ) 346 入出力装置 348 入出力要素
フロントページの続き (71)出願人 591064003 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A. (72)発明者 エミリィズ・ジョン・ウィリアムズ アメリカ合衆国・94089・カリフォルニア 州・サニーベイル・モース アベニュ 3 −205番・1063 (72)発明者 アンドリュ・クロスランド イギリス国・エイチピイ17 8イーエック ス・バッキンガムシャー・ハデンハム・シ アーストック・118

Claims (36)

    【特許請求の範囲】
  1. 【請求項1】 DMAコマンド・シーケンスを保持する
    ためのプロセッサとコマンド・バッファを備えたコンピ
    ュータ・システムのダイレクト・メモリ・アクセス(D
    MA)コントローラであって、DMAコントローラは、
    テール・レジスタ内のテール・ポインタに応答して、コ
    マンド・バッファからDMAコントローラに転送される
    DMAコマンドにアクセスする制御論理と、コマンド・
    バッファ内のDMAコマンド・シーケンスのヘッドを示
    すヘッド・ポインタを保持するためのヘッド・レジスタ
    と、コマンド・バッファ内のDMAコマンド・シーケン
    スのテールを示すテール・ポインタを保持するためのテ
    ール・レジスタとを含むDMAコントローラ。
  2. 【請求項2】 コマンド・バッファがリング・バッファ
    として構成される請求項1に記載のDMAコントロー
    ラ。
  3. 【請求項3】 制御論理が、ヘッド・レジスタおよびテ
    ール・レジスタ内のヘッド・ポインタとテール・ポイン
    タとをそれぞれ比較し、ヘッド・ポインタとテール・ポ
    インタに応答して、それらが同等であるときDMAコマ
    ンド・シーケンスがDMAコマンドを含まないことを示
    すように動作可能な請求項1に記載のDMAコントロー
    ラ。
  4. 【請求項4】 制御論理が、ヘッド・レジスタおよびテ
    ール・レジスタ内のヘッド・ポインタとテール・ポイン
    タとをそれぞれ比較し、ヘッド・ポインタとテール・ポ
    インタが同等でないことに応答して、少なくとも1つの
    DMAコマンドがDMAコマンド・シーケンス内にある
    ことを示し、次いでコマンド・バッファ内にあるDMA
    コマンド・シーケンスのテールからDMAコントローラ
    に転送されるDMAコマンドにアクセスするために、テ
    ール・レジスタ内にあるテール・ポインタを使用するよ
    うに動作可能な請求項1に記載のDMAコントローラ。
  5. 【請求項5】 さらに制御論理が、DMAコマンドが読
    み取られたコマンド・バッファ内のある位置に、完了イ
    ンジケータを書き込むように動作可能な請求項4に記載
    のDMAコントローラ。
  6. 【請求項6】 さらに制御論理が、コマンド・バッファ
    内のある位置からのDMAコマンドが完了した後に、テ
    ール・レジスタ内のテール・ポインタを更新するように
    動作可能な請求項4に記載のDMAコントローラ。
  7. 【請求項7】 制御論理が、コマンド・バッファをリン
    グ・バッファとして構成するように、コマンド・バッフ
    ァのモジュロ・アドレスを指定するためにテール・ポイ
    ンタを制御するように動作可能な請求項1に記載のDM
    Aコントローラ。
  8. 【請求項8】 プロセッサと、ダイレクト・メモリ・ア
    クセス(DMA)コマンド・シーケンスをバッファリン
    グするためのコマンド・バッファと、DMAコントロー
    ラとを含むコンピュータ・システムであって、DMAコ
    ントローラが、テール・レジスタ内のテール・ポインタ
    に応答して、コマンド・バッファからDMAコントロー
    ラに転送されるDMAコマンドにアクセスする制御論理
    と、コマンド・バッファ内のDMAコマンド・シーケン
    スのヘッドを示すヘッド・ポインタを保持するためのヘ
    ッド・レジスタと、コマンド・バッファ内のDMAコマ
    ンド・シーケンスのテールを示すテール・ポインタを保
    持するためのテール・レジスタとを含むコンピュータ・
    システム。
  9. 【請求項9】 コマンド・バッファがリング・バッファ
    として構成される請求項8に記載のコンピュータ・シス
    テム。
  10. 【請求項10】 プロセッサが、コマンド・バッファに
    DMAコマンドを追加し、DMAコントローラのヘッド
    ・レジスタ内にあるヘッド・ポインタを更新するように
    動作可能な請求項8に記載のコンピュータ・システム。
  11. 【請求項11】 プロセッサが、コマンド・バッファに
    複数のDMAコマンドを追加し、次いでDMAコントロ
    ーラのヘッド・レジスタ内にあるヘッド・ポインタを更
    新するように動作可能な請求項8に記載のコンピュータ
    ・システム。
  12. 【請求項12】 プロセッサが、ミラー・ヘッド・レジ
    スタ内にミラー・ヘッド・ポインタを維持し、プロセッ
    サがミラー・ヘッド・ポインタに応答してコマンド・バ
    ッファ内にあるコマンド・シーケンスのヘッドにDMA
    コマンドを追加するように動作可能な請求項8に記載の
    コンピュータ・システム。
  13. 【請求項13】 さらにプロセッサが、ミラー・テール
    ・レジスタ内にミラー・テール・ポインタを維持し、プ
    ロセッサが、ミラー・ヘッド・ポインタとミラー・テー
    ル・ポインタとの間の所定の関係に応答して、ミラー・
    テール・レジスタ内のミラー・テール・ポインタを更新
    するために、DMAコントローラ内にあるテール・レジ
    スタから現在のテール・ポインタ値を取り出す請求項1
    2に記載のコンピュータ・システム。
  14. 【請求項14】 DMAコントローラの制御論理が、ヘ
    ッド・レジスタおよびテール・レジスタ内のヘッド・ポ
    インタとテール・ポインタとをそれぞれ比較し、ヘッド
    ・ポインタとテール・ポインタに応答し、それらが同等
    であるときコマンド・バッファ内に転送できるDMAコ
    マンドがないことを示すように動作可能な請求項8に記
    載のコンピュータ・システム。
  15. 【請求項15】 DMAコントローラの制御論理が、ヘ
    ッド・レジスタおよびテール・レジスタ内のヘッド・ポ
    インタとテール・ポインタとをそれぞれ比較し、ヘッド
    ・ポインタとテール・ポインタが同等でないことに応答
    してコマンド・バッファ内に転送できるDMAコマンド
    が少なくとも1つあることを示し、次いでコマンド・バ
    ッファからDMAコントローラに転送されるDMAコマ
    ンドにアクセスするために、テール・レジスタ内にある
    テール・ポインタを使用するように動作可能な請求項8
    に記載のコンピュータ・システム。
  16. 【請求項16】 さらにDMAコントローラの制御論理
    が、DMAコマンドが読み取られたコマンド・バッファ
    内のある位置に、完了インジケータを書き込むように動
    作可能な請求項15に記載のコンピュータ・システム。
  17. 【請求項17】 さらにDMAコントローラの制御論理
    が、コマンド・バッファ内のある位置からのDMAコマ
    ンドが完了した後に、テール・ポインタ値を更新するよ
    うに動作可能な請求項15に記載のコンピュータ・シス
    テム。
  18. 【請求項18】 ポインタが、コマンド・バッファをリ
    ング・バッファとして構成するために、コマンド・バッ
    ファのモジュロ・アドレスを指定するように制御される
    請求項8に記載のコンピュータ・システム。
  19. 【請求項19】 コマンド・バッファがメモリ内で構成
    され、プロセッサ・バスがプロセッサとメモリとを接続
    する請求項8に記載のコンピュータ・システム。
  20. 【請求項20】 DMAコントローラがプロセッサ・バ
    スに接続された請求項19に記載のコンピュータ・シス
    テム。
  21. 【請求項21】 少なくとも1つの入出力装置がプロセ
    ッサ・バスに接続された請求項20に記載のコンピュー
    タ・システム。
  22. 【請求項22】 少なくとも1つの入出力装置が入出力
    バスに接続され、DMAコントローラがプロセッサ・バ
    スと入出力バスとの間に配置された請求項19に記載の
    コンピュータ・システム。
  23. 【請求項23】 プロセッサ・バスとDMAコントロー
    ラとの間の第3バスと、プロセッサ・バスと第3バスと
    の間に配置された入出力制御ブリッジと、第3バスと入
    出力バスとの間に配置されたDMAコントローラとを含
    む請求項22に記載のコンピュータ・システム。
  24. 【請求項24】 DMAコントローラがプロセッサに内
    蔵された請求項8に記載のコンピュータ・システム。
  25. 【請求項25】 DMAコントローラが、入出力装置に
    内蔵された請求項8に記載のコンピュータ・システム。
  26. 【請求項26】 プロセッサと、DMAコマンド・シー
    ケンスを保持するためのコマンド・バッファと、DMA
    コントローラとを含むコンピュータ・システム内で、ダ
    イレクト・メモリ・アクセス(DMA)を制御する方法
    であって、 プロセッサが、少なくとも1つのDMAコマンドを、コ
    マンド・バッファ内のDMAコマンド・シーケンスのヘ
    ッドに追加するステップと、 DMAコントローラが、DMAコントローラ内のテール
    ・レジスタに保持されているテール・ポインタを使用す
    るDMAによって、コマンド・バッファ内のDMAコマ
    ンド・シーケンスのテールから、DMAコマンドを転送
    するステップとを含む方法。
  27. 【請求項27】 コマンド・バッファをリング・バッフ
    ァとして構成するステップを含む請求項26に記載の方
    法。
  28. 【請求項28】 プロセッサが、コマンド・バッファ内
    のDMAコマンド・シーケンスのヘッドにDMAコマン
    ドを追加するステップと、DMAコントローラ内のヘッ
    ド・ポインタを更新するステップとを含む請求項26に
    記載の方法。
  29. 【請求項29】 プロセッサが、コマンド・バッファ内
    のコマンド・シーケンスのヘッドに複数のDMAコマン
    ドを追加するステップと、その後DMAコントローラ内
    のヘッド・ポインタを更新するステップとを含む請求項
    28に記載の方法。
  30. 【請求項30】 プロセッサが、ミラー・ヘッド・レジ
    スタ内にミラー・ヘッド・ポインタを維持するステップ
    と、プロセッサがミラー・ヘッド・ポインタに応答して
    コマンド・バッファ内にあるDMAコマンド・シーケン
    スのヘッドにDMAコマンドを追加するステップとを含
    む請求項28に記載の方法。
  31. 【請求項31】 さらにプロセッサが、ミラー・テール
    ・レジスタ内にミラー・テール・ポインタを維持するス
    テップと、プロセッサが、ミラー・ヘッド・ポインタと
    ミラー・テール・ポインタとの間の所定の関係に応答し
    て、ミラー・テール・レジスタ内のミラー・テール・ポ
    インタを更新するために、DMAコントローラ内にある
    テール・レジスタから現在のテール・ポインタ値を取り
    出すステップとを含む請求項30に記載の方法。
  32. 【請求項32】 DMAコントローラが、ヘッド・レジ
    スタ内のヘッド・ポインタとテール・レジスタ内のテー
    ル・ポインタとを比較するステップと、ヘッド・ポイン
    タとテール・ポインタが同等であることに応答して、コ
    マンド・バッファ内のDMAコマンド・シーケンスにD
    MAコマンドがないことを示すステップとを含む請求項
    26に記載の方法。
  33. 【請求項33】 DMAコントローラが、ヘッド・レジ
    スタ内のヘッド・ポインタとテール・レジスタ内のテー
    ル・ポインタとを比較するステップと、ヘッド・ポイン
    タとテール・ポインタが同等でないことに応答してコマ
    ンド・バッファ内のDMAコマンド・シーケンスに少な
    くとも1つのDMAコマンドがあることを示すステップ
    と、次いでDMAコントローラがテール・ポインタを使
    用して、コマンド・バッファのテールからDMAコマン
    ドにアクセスするステップとを含む請求項26に記載の
    方法。
  34. 【請求項34】 DMAコントローラが、コマンド・バ
    ッファから、DMAコマンドを完了した後にテール・ポ
    インタを更新するステップを含む請求項26に記載の方
    法。
  35. 【請求項35】 DMAコントローラが、DMAコマン
    ドが読み取られたコマンド・バッファ内のある位置に完
    了インジケーションを書き込むステップを含む請求項2
    6に記載の方法。
  36. 【請求項36】 コマンド・バッファをリング・バッフ
    ァとして構成するために、コマンド・バッファのモジュ
    ロ・アドレス指定を提供するようにポインタを修正する
    ステップを含む請求項26に記載の方法。
JP2000026831A 1999-02-03 2000-02-03 ダイレクト・メモリ・アクセス制御 Pending JP2000267987A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/243,257 US6363438B1 (en) 1999-02-03 1999-02-03 Method of controlling DMA command buffer for holding sequence of DMA commands with head and tail pointers
US09/243,257 1999-02-03

Publications (1)

Publication Number Publication Date
JP2000267987A true JP2000267987A (ja) 2000-09-29

Family

ID=22917979

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000026831A Pending JP2000267987A (ja) 1999-02-03 2000-02-03 ダイレクト・メモリ・アクセス制御

Country Status (4)

Country Link
US (1) US6363438B1 (ja)
EP (1) EP1026596B1 (ja)
JP (1) JP2000267987A (ja)
DE (1) DE60039465D1 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002323958A (ja) * 2001-04-25 2002-11-08 Sony Corp 記録再生装置及び記録再生制御方法
JP2004355621A (ja) * 2003-05-29 2004-12-16 Marconi Intellectual Property (Ringfence) Inc 動的なポートの更新
JP2008033721A (ja) * 2006-07-31 2008-02-14 Matsushita Electric Ind Co Ltd Dma転送制御装置
US7386636B2 (en) 2005-08-19 2008-06-10 International Business Machines Corporation System and method for communicating command parameters between a processor and a memory flow controller
JP2009505258A (ja) * 2005-08-19 2009-02-05 インターナショナル・ビジネス・マシーンズ・コーポレーション プロセッサと外部装置との間で命令およびデータを伝達するためのシステムおよび方法
US7500039B2 (en) 2005-08-19 2009-03-03 International Business Machines Corporation Method for communicating with a processor event facility
JP2009093536A (ja) * 2007-10-11 2009-04-30 Yokogawa Electric Corp データ転送装置及び半導体試験装置
US7778271B2 (en) 2005-08-19 2010-08-17 International Business Machines Corporation Method for communicating instructions and data between a processor and external devices

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4111472B2 (ja) * 1998-05-15 2008-07-02 キヤノン株式会社 通信制御方法及び装置及び通信システム
US6678755B1 (en) * 2000-06-30 2004-01-13 Micron Technology, Inc. Method and apparatus for appending memory commands during a direct memory access operation
US6862027B2 (en) * 2003-06-30 2005-03-01 Microsoft Corp. System and method for parallel execution of data generation tasks
US7355601B2 (en) * 2003-06-30 2008-04-08 International Business Machines Corporation System and method for transfer of data between processors using a locked set, head and tail pointers
US20050038946A1 (en) * 2003-08-12 2005-02-17 Tadpole Computer, Inc. System and method using a high speed interface in a system having co-processors
JP2005132525A (ja) * 2003-10-29 2005-05-26 Toyota Industries Corp 産業車輌における立席型運転席用背もたれ構造
US20050262275A1 (en) 2004-05-19 2005-11-24 Gil Drori Method and apparatus for accessing a multi ordered memory array
US20050289253A1 (en) * 2004-06-24 2005-12-29 Edirisooriya Samantha J Apparatus and method for a multi-function direct memory access core
US7840757B2 (en) * 2004-07-29 2010-11-23 International Business Machines Corporation Method and apparatus for providing high speed memory for a processing unit
US20060050722A1 (en) * 2004-09-03 2006-03-09 James Bury Interface circuitry for a receive ring buffer of an as fabric end node device
US8332592B2 (en) * 2004-10-08 2012-12-11 International Business Machines Corporation Graphics processor with snoop filter
US7475190B2 (en) * 2004-10-08 2009-01-06 International Business Machines Corporation Direct access of cache lock set data without backing memory
US20060080511A1 (en) * 2004-10-08 2006-04-13 International Business Machines Corporation Enhanced bus transactions for efficient support of a remote cache directory copy
US7305524B2 (en) * 2004-10-08 2007-12-04 International Business Machines Corporation Snoop filter directory mechanism in coherency shared memory system
US7577794B2 (en) 2004-10-08 2009-08-18 International Business Machines Corporation Low latency coherency protocol for a multi-chip multiprocessor system
US7664015B2 (en) * 2004-10-20 2010-02-16 L-3 Communications Security & Detection Systems Inspection system with data acquisition system interconnect protocol
US7499452B2 (en) * 2004-12-28 2009-03-03 International Business Machines Corporation Self-healing link sequence counts within a circular buffer
US20060140122A1 (en) * 2004-12-28 2006-06-29 International Business Machines Corporation Link retry per virtual channel
US7469312B2 (en) * 2005-02-24 2008-12-23 International Business Machines Corporation Computer system bus bridge
US7234017B2 (en) * 2005-02-24 2007-06-19 International Business Machines Corporation Computer system architecture for a processor connected to a high speed bus transceiver
US20060190655A1 (en) * 2005-02-24 2006-08-24 International Business Machines Corporation Apparatus and method for transaction tag mapping between bus domains
US7206886B2 (en) * 2005-02-24 2007-04-17 International Business Machines Corporation Data ordering translation between linear and interleaved domains at a bus interface
US7330925B2 (en) * 2005-02-24 2008-02-12 International Business Machines Corporation Transaction flow control mechanism for a bus bridge
US7275124B2 (en) 2005-02-24 2007-09-25 International Business Machines Corporation Method and system for controlling forwarding or terminating of a request at a bus interface based on buffer availability
US7275125B2 (en) * 2005-02-24 2007-09-25 International Business Machines Corporation Pipeline bit handling circuit and method for a bus bridge
US7194567B2 (en) * 2005-02-24 2007-03-20 International Business Machines Corporation Method and system for ordering requests at a bus interface
US8817029B2 (en) * 2005-10-26 2014-08-26 Via Technologies, Inc. GPU pipeline synchronization and control system and method
US7539790B1 (en) * 2005-11-15 2009-05-26 3Par, Inc. Reducing latency in SCSI protocol
US20080031593A1 (en) * 2006-08-07 2008-02-07 Shih-Fang Chuang Multi-layer structure unit for recording audio/video frame data and its operation method
US7970963B2 (en) * 2009-06-29 2011-06-28 Oracle America, Inc. Efficient buffer management in a multi-threaded network interface
US8190794B2 (en) * 2009-10-21 2012-05-29 Texas Instruments Incorporated Control function for memory based buffers
US8291136B2 (en) * 2009-12-02 2012-10-16 International Business Machines Corporation Ring buffer
CN103870415B (zh) * 2012-12-13 2019-02-19 德州仪器公司 用于在总线上执行事务的方法及系统
US9336167B2 (en) 2012-12-13 2016-05-10 Texas Instruments Incorporated I2C controller register, control, command and R/W buffer queue logic
KR20170032502A (ko) * 2015-09-14 2017-03-23 삼성전자주식회사 스토리지 장치 및 그것의 인터럽트 발생 방법
FR3094507A1 (fr) 2019-03-29 2020-10-02 Stmicroelectronics (Grenoble 2) Sas Accès direct en mémoire

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2703417B2 (ja) * 1991-04-05 1998-01-26 富士通株式会社 受信バッファ
US5594927A (en) * 1992-01-09 1997-01-14 Digital Equipment Corporation Apparatus and method for aligning data transferred via DMA using a barrel shifter and a buffer comprising of byte-wide, individually addressabe FIFO circuits
US5392406A (en) * 1992-09-18 1995-02-21 3Com Corporation DMA data path aligner and network adaptor utilizing same
US5448702A (en) * 1993-03-02 1995-09-05 International Business Machines Corporation Adapters with descriptor queue management capability
US6092116A (en) * 1996-12-11 2000-07-18 Lsi Logic Corporation DMA controller with response message and receive frame action tables
US6161154A (en) * 1997-11-26 2000-12-12 National Instruments Corporation System and method for extracting and restoring a video buffer from/to a video acquisition cycle
US6032204A (en) 1998-03-09 2000-02-29 Advanced Micro Devices, Inc. Microcontroller with a synchronous serial interface and a two-channel DMA unit configured together for providing DMA requests to the first and second DMA channel
US6124868A (en) * 1998-03-24 2000-09-26 Ati Technologies, Inc. Method and apparatus for multiple co-processor utilization of a ring buffer
US6112267A (en) * 1998-05-28 2000-08-29 Digital Equipment Corporation Hierarchical ring buffers for buffering data between processor and I/O device permitting data writes by processor and data reads by I/O device simultaneously directed at different buffers at different levels

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002323958A (ja) * 2001-04-25 2002-11-08 Sony Corp 記録再生装置及び記録再生制御方法
JP4742443B2 (ja) * 2001-04-25 2011-08-10 ソニー株式会社 記録再生装置、記録再生制御方法及び記録再生制御装置
JP2004355621A (ja) * 2003-05-29 2004-12-16 Marconi Intellectual Property (Ringfence) Inc 動的なポートの更新
US7386636B2 (en) 2005-08-19 2008-06-10 International Business Machines Corporation System and method for communicating command parameters between a processor and a memory flow controller
JP2009505258A (ja) * 2005-08-19 2009-02-05 インターナショナル・ビジネス・マシーンズ・コーポレーション プロセッサと外部装置との間で命令およびデータを伝達するためのシステムおよび方法
US7500039B2 (en) 2005-08-19 2009-03-03 International Business Machines Corporation Method for communicating with a processor event facility
US7778271B2 (en) 2005-08-19 2010-08-17 International Business Machines Corporation Method for communicating instructions and data between a processor and external devices
US7869459B2 (en) 2005-08-19 2011-01-11 International Business Machines Corporation Communicating instructions and data between a processor and external devices
US7930457B2 (en) 2005-08-19 2011-04-19 International Business Machines Corporation Channel mechanisms for communicating with a processor event facility
US8024489B2 (en) 2005-08-19 2011-09-20 International Business Machines Corporation System for communicating command parameters between a processor and a memory flow controller
JP2008033721A (ja) * 2006-07-31 2008-02-14 Matsushita Electric Ind Co Ltd Dma転送制御装置
JP2009093536A (ja) * 2007-10-11 2009-04-30 Yokogawa Electric Corp データ転送装置及び半導体試験装置

Also Published As

Publication number Publication date
US6363438B1 (en) 2002-03-26
EP1026596B1 (en) 2008-07-16
DE60039465D1 (de) 2008-08-28
EP1026596A3 (en) 2005-03-23
EP1026596A2 (en) 2000-08-09

Similar Documents

Publication Publication Date Title
JP2000267987A (ja) ダイレクト・メモリ・アクセス制御
JP2703417B2 (ja) 受信バッファ
US7363396B2 (en) Supercharge message exchanger
US6330631B1 (en) Data alignment between buses
US5919254A (en) Method and apparatus for switching between source-synchronous and common clock data transfer modes in a multiple processing system
US20120137030A1 (en) Reduced pin count interface
US20070022209A1 (en) Processing of data frames exchanged over a communication controller in a time-triggered system
JP6602579B2 (ja) 半導体装置およびシステム
JP2688171B2 (ja) 通信アダプタ並びにデータ転送システムおよび方法
JPH10334037A (ja) 通信dma装置
JP2000029826A (ja) 多重レベルキャッシングを有する3ポ―トfifoデ―タバッファ
JP5497743B2 (ja) 複数のプロセスからメモリ領域へのアクセスを制御する方法、及び、本方法を実現するためのメッセージメモリを備えた通信モジュール
JP3201439B2 (ja) ダイレクト・メモリ・アクセス・制御回路
JPH10111798A (ja) 情報処理装置
JPH1011387A (ja) 情報処理装置
JP4841314B2 (ja) データ転送回路
JPH11212900A (ja) システム制御装置
JP2752834B2 (ja) データ転送装置
JP3841056B2 (ja) 計算機システム
JPH10171764A (ja) 並列計算機共有メモリの制御方法
JPH07295885A (ja) データ処理装置
JP2000259524A (ja) データ受信回路
JPH09305536A (ja) バス転送方法及びそのための情報処理装置
JPH1196035A (ja) 共有データバッファ
JP2006302128A (ja) 情報処理装置