JP2000267989A - バス間でのデータのアラインメント - Google Patents
バス間でのデータのアラインメントInfo
- Publication number
- JP2000267989A JP2000267989A JP2000026826A JP2000026826A JP2000267989A JP 2000267989 A JP2000267989 A JP 2000267989A JP 2000026826 A JP2000026826 A JP 2000026826A JP 2000026826 A JP2000026826 A JP 2000026826A JP 2000267989 A JP2000267989 A JP 2000267989A
- Authority
- JP
- Japan
- Prior art keywords
- bus
- output
- bytes
- byte
- bridge
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
- G06F13/4018—Coupling between buses with data restructuring with data-width conversion
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Bus Control (AREA)
- Memory System (AREA)
Abstract
(57)【要約】
【課題】 シフトと累積ユニットを含む、第1、第2バ
スをブリッジするコンピュータ・システム用のバス・ブ
リッジを提供する。 【解決手段】 シフトと累積ユニットは、一方のバスか
らバイトを受け取るために接続された入力と、受け取っ
たバイトを選択可能にシフトする出力とを有するシフタ
を含み、かつ、シフタの出力を受け取るために接続され
た入力と、シフトされたバイトを選択可能に累積するア
キュムレータを含む。このアキュムレータが、第1、第
2バスのうちの他方に渡される再アラインメントされた
バイトを提供する出力を有する。シフタとアキュムレー
タを組み合わせることにより、所望の量のシフトと選択
されたビットまたはバイトの累積とを組み合わせ、一方
のバスからのバイト・セットを再アラインして、他方の
バス用のバイト・セットを形成することができる。
スをブリッジするコンピュータ・システム用のバス・ブ
リッジを提供する。 【解決手段】 シフトと累積ユニットは、一方のバスか
らバイトを受け取るために接続された入力と、受け取っ
たバイトを選択可能にシフトする出力とを有するシフタ
を含み、かつ、シフタの出力を受け取るために接続され
た入力と、シフトされたバイトを選択可能に累積するア
キュムレータを含む。このアキュムレータが、第1、第
2バスのうちの他方に渡される再アラインメントされた
バイトを提供する出力を有する。シフタとアキュムレー
タを組み合わせることにより、所望の量のシフトと選択
されたビットまたはバイトの累積とを組み合わせ、一方
のバスからのバイト・セットを再アラインして、他方の
バス用のバイト・セットを形成することができる。
Description
【0001】
【発明の属する技術分野】本発明は、コンピュータ・シ
ステムのバス間でのデータ転送に関する。詳細には、バ
ス間でデータを転送するためのバス・ブリッジ、バス間
でデータを転送するためのDMAコントローラ、かかる
バス・ブリッジまたはDAMコントローラあるいはその
両方を組み込んだコンピュータ・システム、およびバス
間でデータを転送する方法に関する。
ステムのバス間でのデータ転送に関する。詳細には、バ
ス間でデータを転送するためのバス・ブリッジ、バス間
でデータを転送するためのDMAコントローラ、かかる
バス・ブリッジまたはDAMコントローラあるいはその
両方を組み込んだコンピュータ・システム、およびバス
間でデータを転送する方法に関する。
【0002】
【従来の技術】この文脈において、ブリッジとはバス間
でデータを転送するための機構である。最新のコンピュ
ータ・システムでは複数のバスが備えられていることは
一般的であり、バス間でデータを転送するためにブリッ
ジ機構が備えられていることも珍しくない。このブリッ
ジ機構には多くの異なる形式があり、他の機能を組み込
んでいる場合もある。たとえば、入出力バスと別のバス
の間にDMAコントローラが備えられており、コンピュ
ータ・システムの一部を形成していることが知られてい
る。
でデータを転送するための機構である。最新のコンピュ
ータ・システムでは複数のバスが備えられていることは
一般的であり、バス間でデータを転送するためにブリッ
ジ機構が備えられていることも珍しくない。このブリッ
ジ機構には多くの異なる形式があり、他の機能を組み込
んでいる場合もある。たとえば、入出力バスと別のバス
の間にDMAコントローラが備えられており、コンピュ
ータ・システムの一部を形成していることが知られてい
る。
【0003】
【発明が解決しようとする課題】異なるバスに対して
は、異なるバイト・アドレス・アラインメントを有する
ことが望ましい場合がある。本発明は、それぞれのバス
上で選択可能なバス・アラインメントを使用することに
よって、バス間に効率のよい転送を提供するという問題
に対処する。
は、異なるバイト・アドレス・アラインメントを有する
ことが望ましい場合がある。本発明は、それぞれのバス
上で選択可能なバス・アラインメントを使用することに
よって、バス間に効率のよい転送を提供するという問題
に対処する。
【0004】
【課題を解決するための手段】本発明の具体的かつ好ま
しい態様は、添付の特許請求の範囲の独立項および従属
項で詳細に説明する。従属項の特徴の組み合わせを独立
項の特徴と適切に組み合わせることが可能であり、特許
請求の範囲で単に明示的に説明されているままに限らな
い。
しい態様は、添付の特許請求の範囲の独立項および従属
項で詳細に説明する。従属項の特徴の組み合わせを独立
項の特徴と適切に組み合わせることが可能であり、特許
請求の範囲で単に明示的に説明されているままに限らな
い。
【0005】本発明の一態様により、コンピュータ・シ
ステムには1つのバス・ブリッジが備えられている。コ
ンピュータ・システムは第1のバスおよび第2のバスを
含むことが可能であって、その第1のバスと第2のバス
のあいだにブリッジが配置されるであろう。ブリッジ
は、第1のバスと第2のバスのいずれか1つからバイト
を受け取るために接続される入力と、受信したバイトに
選択可能にシフト(シフト)する出力とを有するシフタ
を含む。さらに、シフタの出力を受け取るために接続さ
れる入力を有し、シフトされたバイトを選択的に累積す
るアキュムレータを含む。このアキュムレータは、第1
のバスおよび第2のバスの一方から他方のバスに渡すた
めに再アラインさせさたバイトを供給する出力を有す
る。
ステムには1つのバス・ブリッジが備えられている。コ
ンピュータ・システムは第1のバスおよび第2のバスを
含むことが可能であって、その第1のバスと第2のバス
のあいだにブリッジが配置されるであろう。ブリッジ
は、第1のバスと第2のバスのいずれか1つからバイト
を受け取るために接続される入力と、受信したバイトに
選択可能にシフト(シフト)する出力とを有するシフタ
を含む。さらに、シフタの出力を受け取るために接続さ
れる入力を有し、シフトされたバイトを選択的に累積す
るアキュムレータを含む。このアキュムレータは、第1
のバスおよび第2のバスの一方から他方のバスに渡すた
めに再アラインさせさたバイトを供給する出力を有す
る。
【0006】シフタとアキュムレータを組み合わせるこ
とにより、所望の量のシフトと選択されたバイトまたは
ビットの累積とを組み合わせ、一方のバスからのバイト
・セットを再アラインして、他方のバス用のバイト・セ
ットを形成することができる。この構造を使用すると、
効率的な方法の任意の再アラインメントによりバイトを
柔軟に転送することができる。入力バスから入力された
連続する入力バイト・セットに対して、シフタとアキュ
ムレータ・ユニットを連続サイクルで動作させることに
より、バースト転送も可能になる。
とにより、所望の量のシフトと選択されたバイトまたは
ビットの累積とを組み合わせ、一方のバスからのバイト
・セットを再アラインして、他方のバス用のバイト・セ
ットを形成することができる。この構造を使用すると、
効率的な方法の任意の再アラインメントによりバイトを
柔軟に転送することができる。入力バスから入力された
連続する入力バイト・セットに対して、シフタとアキュ
ムレータ・ユニットを連続サイクルで動作させることに
より、バースト転送も可能になる。
【0007】制御論理は、受け取ったバイトに適用され
るシフトを選択するための、およびシフトされたバイト
から累積されるバイトまたはビットを選択するための制
御信号を提供する。シフタおよびアキュムレータは、サ
イクル内の連続フェーズで使用可能である。1つのサイ
クルでは、シフトされたバイトから、第1のバイト・セ
ットまたはビット・セットを1つの出力バイト・セット
用に選択することができる。別のサイクルでは、シフト
されたバイトから、第2のバイト・セットまたはビット
・セットを別の出力バイト・セット用に選択することが
できる。
るシフトを選択するための、およびシフトされたバイト
から累積されるバイトまたはビットを選択するための制
御信号を提供する。シフタおよびアキュムレータは、サ
イクル内の連続フェーズで使用可能である。1つのサイ
クルでは、シフトされたバイトから、第1のバイト・セ
ットまたはビット・セットを1つの出力バイト・セット
用に選択することができる。別のサイクルでは、シフト
されたバイトから、第2のバイト・セットまたはビット
・セットを別の出力バイト・セット用に選択することが
できる。
【0008】この制御論理は、一方のバスから他方のバ
スへ、バイトのバースト転送を行うために、連続するサ
イクルやフェーズに対して制御信号を決定するように構
成される。
スへ、バイトのバースト転送を行うために、連続するサ
イクルやフェーズに対して制御信号を決定するように構
成される。
【0009】アキュムレータは出力レジスタを含むこと
ができる。第1のフェーズでは、シフトされた入力バイ
ト・セットから選択した部分を、出力レジスタの対応す
る部分に登録することで、再アラインメントされた出力
バイト・セットの累積を完了させることができる。第2
のフェーズでは、シフトされた入力バイト・セットの残
りの部分を、出力レジスタの対応する部分に登録するこ
とで、後続の再アラインメントされた出力バイト・セッ
トの累積を開始することができる。
ができる。第1のフェーズでは、シフトされた入力バイ
ト・セットから選択した部分を、出力レジスタの対応す
る部分に登録することで、再アラインメントされた出力
バイト・セットの累積を完了させることができる。第2
のフェーズでは、シフトされた入力バイト・セットの残
りの部分を、出力レジスタの対応する部分に登録するこ
とで、後続の再アラインメントされた出力バイト・セッ
トの累積を開始することができる。
【0010】相対的バス幅ならびにシフトと累積ユニッ
トの幅に応じて、1つのバイト・セットが1つのワー
ド、またはワードの一部を形成できることに留意された
い。
トの幅に応じて、1つのバイト・セットが1つのワー
ド、またはワードの一部を形成できることに留意された
い。
【0011】本発明の実施形態では、ブリッジはバイト
・セットをバッファリングするためのバッファをさらに
備え、このバッファは第1バスとシフタとの間を接続す
ることができる。このバッファは、バイトが第1バスか
ら第2バスへ転送される場合には第1バスとシフタとの
間を接続することが可能であり、第2バスから第1バス
へ転送される場合にはアキュムレータと第1バスとの間
を接続することが可能である。これは、第1バスと第2
バスに関するタイミングの異なる動作可能速度を考慮に
入れるために、データを柔軟にバッファリングするため
のものである。
・セットをバッファリングするためのバッファをさらに
備え、このバッファは第1バスとシフタとの間を接続す
ることができる。このバッファは、バイトが第1バスか
ら第2バスへ転送される場合には第1バスとシフタとの
間を接続することが可能であり、第2バスから第1バス
へ転送される場合にはアキュムレータと第1バスとの間
を接続することが可能である。これは、第1バスと第2
バスに関するタイミングの異なる動作可能速度を考慮に
入れるために、データを柔軟にバッファリングするため
のものである。
【0012】前述のように、バッファ・ユニットならび
にシフトおよび累積ユニットの選択順序を与えるため
に、バッファおよびシフタは入力マルチプレクサに関連
付けられることが好ましい。
にシフトおよび累積ユニットの選択順序を与えるため
に、バッファおよびシフタは入力マルチプレクサに関連
付けられることが好ましい。
【0013】バッファ・ユニットの入力マルチプレクサ
は、第1バスからのバイトを受け取るために接続可能な
第1の入力、アキュムレータからのバイトを受け取るた
めに接続される第2の入力、ならびにバッファ・ユニッ
トのバッファへバイトを出力するために接続される出力
を含むことができる。
は、第1バスからのバイトを受け取るために接続可能な
第1の入力、アキュムレータからのバイトを受け取るた
めに接続される第2の入力、ならびにバッファ・ユニッ
トのバッファへバイトを出力するために接続される出力
を含むことができる。
【0014】シフタの入力マルチプレクサは、第2バス
からのバイトを受け取るために接続される第1の入力、
バッファ・ユニットの出力からのバイトを受け取るため
に接続される第2の入力、ならびにシフタへバイトを出
力するために接続される出力とを備えることができる。
からのバイトを受け取るために接続される第1の入力、
バッファ・ユニットの出力からのバイトを受け取るため
に接続される第2の入力、ならびにシフタへバイトを出
力するために接続される出力とを備えることができる。
【0015】バス・ブリッジの一実施形態では、たとえ
ば入出力バスと別のプロセッサ・バスとの間を接続する
ためであり、たとえば適切なシステム・バス(SBu
s)プロトコルの下で使用可能なバスである、ダイレク
ト・メモリ・アクセス・コントローラを形成する。
ば入出力バスと別のプロセッサ・バスとの間を接続する
ためであり、たとえば適切なシステム・バス(SBu
s)プロトコルの下で使用可能なバスである、ダイレク
ト・メモリ・アクセス・コントローラを形成する。
【0016】本発明の他の態様では、第1バスおよび第
2バスを有するコンピュータ・システム用の、ダイレク
ト・メモリ・アクセス・コントローラが用意されてい
る。ダイレクト・メモリ・アクセス・コントローラは、
第1バスと第2バスとの間に配置することができる。こ
れは、第1バスおよび第2バスのうちの1つからバイト
を受け取るために接続される入力を有するシフタと、受
け取ったバイトに選択可能にシフトさせる出力とを備え
る。さらに、シフタの出力を受け取るために接続される
入力を有し、シフトされたバイトの選択的累積を行うア
キュムレータも備え、このアキュムレータは、第1バス
および第2バスのうちの他方へ渡すために再アラインメ
ントされたバイトを供給するための出力を有する。
2バスを有するコンピュータ・システム用の、ダイレク
ト・メモリ・アクセス・コントローラが用意されてい
る。ダイレクト・メモリ・アクセス・コントローラは、
第1バスと第2バスとの間に配置することができる。こ
れは、第1バスおよび第2バスのうちの1つからバイト
を受け取るために接続される入力を有するシフタと、受
け取ったバイトに選択可能にシフトさせる出力とを備え
る。さらに、シフタの出力を受け取るために接続される
入力を有し、シフトされたバイトの選択的累積を行うア
キュムレータも備え、このアキュムレータは、第1バス
および第2バスのうちの他方へ渡すために再アラインメ
ントされたバイトを供給するための出力を有する。
【0017】本発明の他の態様により、第1バス、第2
バス、ならびに前述のような第1バスと第2バスとの間
にあるバス・ブリッジを有するコンピュータ・システム
が提供されている。
バス、ならびに前述のような第1バスと第2バスとの間
にあるバス・ブリッジを有するコンピュータ・システム
が提供されている。
【0018】本発明の他の態様により、コンピュータ・
システムの第1バスと第2バスとの間でデータを転送す
る方法が提供されている。この方法は、受け取ったバイ
トに対して選択可能なシフトを行うために、第1バスお
よび第2バスのうちの1つから受け取ったバイトをシフ
トするステップと、第1バスおよび第2バスのうちの他
方へ渡すために再アラインメントされたバイトを供給す
るための、シフトされたバイトの選択的累積を実行する
ステップとを含む。
システムの第1バスと第2バスとの間でデータを転送す
る方法が提供されている。この方法は、受け取ったバイ
トに対して選択可能なシフトを行うために、第1バスお
よび第2バスのうちの1つから受け取ったバイトをシフ
トするステップと、第1バスおよび第2バスのうちの他
方へ渡すために再アラインメントされたバイトを供給す
るための、シフトされたバイトの選択的累積を実行する
ステップとを含む。
【0019】これらのステップは連続サイクルで繰り返
され、各サイクルで1つのバイト・セットが受け取られ
る。この1つのバイト・セットは、前述のようにワード
またはワードの一部である可能性がある。
され、各サイクルで1つのバイト・セットが受け取られ
る。この1つのバイト・セットは、前述のようにワード
またはワードの一部である可能性がある。
【0020】サイクルの第1フェーズでは、シフトされ
た入力バイト・セットの選択位置から出力レジスタの対
応する位置にバイトまたはビットを登録することによっ
て、再アラインメントされた出力バイト・セットの累積
を完了することが可能であって、サイクルの第2のフェ
ーズでは、シフトされた入力バイト・セットの残りの位
置から出力レジスタの対応する位置にバイトまたはビッ
トを登録することで、後続の再アラインメントされた出
力バイト・セットの累積を開始することが可能である。
た入力バイト・セットの選択位置から出力レジスタの対
応する位置にバイトまたはビットを登録することによっ
て、再アラインメントされた出力バイト・セットの累積
を完了することが可能であって、サイクルの第2のフェ
ーズでは、シフトされた入力バイト・セットの残りの位
置から出力レジスタの対応する位置にバイトまたはビッ
トを登録することで、後続の再アラインメントされた出
力バイト・セットの累積を開始することが可能である。
【0021】第1バスから第2バスへ転送する場合、バ
イトはシフタおよびアキュムレータによって処理される
前にバッファリングされ、第2バスから第1バスへ転送
する場合、バイトはシフタおよびアキュムレータによっ
て処理された後にバッファリングされる。
イトはシフタおよびアキュムレータによって処理される
前にバッファリングされ、第2バスから第1バスへ転送
する場合、バイトはシフタおよびアキュムレータによっ
て処理された後にバッファリングされる。
【0022】第1バスと第2バスの間でバイトのバース
トを転送する場合、その方法は初期フェーズにおいて、
初期出力バイト・セットを形成するために、最高2サイ
クルからのシフトされたバイトの選択ビットが累積され
るステップと、中間フェーズにおいて、中間出力バイト
・セットを形成するために、2サイクルからのシフトさ
れたバイトの選択ビットが累積されるステップと、最終
フェーズにおいて、最終出力バイト・セットを形成する
ために、最高2サイクルまでのシフトされたバイトの選
択ビットを累積するステップとの中の1つまたは複数の
ステップを含む。
トを転送する場合、その方法は初期フェーズにおいて、
初期出力バイト・セットを形成するために、最高2サイ
クルからのシフトされたバイトの選択ビットが累積され
るステップと、中間フェーズにおいて、中間出力バイト
・セットを形成するために、2サイクルからのシフトさ
れたバイトの選択ビットが累積されるステップと、最終
フェーズにおいて、最終出力バイト・セットを形成する
ために、最高2サイクルまでのシフトされたバイトの選
択ビットを累積するステップとの中の1つまたは複数の
ステップを含む。
【0023】第1バスと第2バスとの間でバイトのバー
ストを転送する場合、ここで効率的なブロック転送によ
って再アラインメントを達成するために、ブロック転送
は、選択されたビットの初期転送フェーズと、選択され
たバイトの初期転送フェーズと、選択されたバイト・ブ
ロックの初期転送フェーズと、ワードのサブブロックの
初期転送フェーズと、ワードのブロック転送フェーズ
と、ワードのサブブロック・ブロックの最終転送フェー
ズと、選択されたバイト・ブロックの最終転送フェーズ
と、選択されたバイトの最終転送フェーズと、選択され
たビットの最終転送フェーズとの中の、1つまたは複数
を含むことができる。
ストを転送する場合、ここで効率的なブロック転送によ
って再アラインメントを達成するために、ブロック転送
は、選択されたビットの初期転送フェーズと、選択され
たバイトの初期転送フェーズと、選択されたバイト・ブ
ロックの初期転送フェーズと、ワードのサブブロックの
初期転送フェーズと、ワードのブロック転送フェーズ
と、ワードのサブブロック・ブロックの最終転送フェー
ズと、選択されたバイト・ブロックの最終転送フェーズ
と、選択されたバイトの最終転送フェーズと、選択され
たビットの最終転送フェーズとの中の、1つまたは複数
を含むことができる。
【0024】
【発明の実施の形態】本発明の例示的な実施の形態を、
添付の図面を参照し例示的なものとしてのみ以下に示す
が、ここで参照符号などは要素などに関するものとす
る。
添付の図面を参照し例示的なものとしてのみ以下に示す
が、ここで参照符号などは要素などに関するものとす
る。
【0025】本発明の実施の形態について、フォールト
・トレラント・コンピュータ・システムの一部を形成す
るのに適したコンピュータ・システムの構成例を参照し
ながら下記に記載する。ただし、本発明はこのような実
施の形態に限定されるものではなく、DMAコントロー
ラを採用したどのようなコンピュータ・システムにでも
実装可能であることに留意されたい。
・トレラント・コンピュータ・システムの一部を形成す
るのに適したコンピュータ・システムの構成例を参照し
ながら下記に記載する。ただし、本発明はこのような実
施の形態に限定されるものではなく、DMAコントロー
ラを採用したどのようなコンピュータ・システムにでも
実装可能であることに留意されたい。
【0026】図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にもそれぞれ接続されている。
を示す概略図である。図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にもそれぞれ接続されている。
【0027】SBus 32に別の構成要素(図示せ
ず)を接続するために、1つまたは複数のスロット(た
とえばスロット34)を備えることができる。プロセッ
サ入出力バス・ブリッジ36がSBus 32に接続さ
れる。これにより、1つまたは複数の周辺装置50を接
続するための周辺バス(PBus)33へ接続される。
プロセッサ入出力ブリッジ36は、入出力バス40を介
した1つまたは複数の周辺装置46および48へのプロ
セッサ入出力のアクセスを行う。
ず)を接続するために、1つまたは複数のスロット(た
とえばスロット34)を備えることができる。プロセッ
サ入出力バス・ブリッジ36がSBus 32に接続さ
れる。これにより、1つまたは複数の周辺装置50を接
続するための周辺バス(PBus)33へ接続される。
プロセッサ入出力ブリッジ36は、入出力バス40を介
した1つまたは複数の周辺装置46および48へのプロ
セッサ入出力のアクセスを行う。
【0028】入出力バス40上にある周辺装置がプロセ
ッサ10へ、具体的にはプロセッサ10の主メモリ16
へDMAアクセスを行うために、入出力バス40とSB
us32との間にダイレクト・メモリ・アクセス・コン
トローラ(DMAC)38も接続されている。このDM
AC 38は別のバス・ブリッジを形成する。
ッサ10へ、具体的にはプロセッサ10の主メモリ16
へDMAアクセスを行うために、入出力バス40とSB
us32との間にダイレクト・メモリ・アクセス・コン
トローラ(DMAC)38も接続されている。このDM
AC 38は別のバス・ブリッジを形成する。
【0029】フォールト・トレラント・コンピュータ・
システムの場合、入出力バスを1対のフォールト・トレ
ラント冗長バスとして構成することができる。その際、
コンピュータ・システム10の多様なインスタンスをそ
のバスに接続する。
システムの場合、入出力バスを1対のフォールト・トレ
ラント冗長バスとして構成することができる。その際、
コンピュータ・システム10の多様なインスタンスをそ
のバスに接続する。
【0030】図2は、DMAC38をさらに詳細に例示
した図である。DMAC 38は、ローダ・マシン62
(以下ローダ62と呼ぶ)およびムーバ・マシン64
(以下ムーバ64と呼ぶ)を備える。ローダ62とムー
バ64はそれぞれ、プロセッサ入出力インターフェース
(それぞれ66および68)を有し、これによってプロ
セッサ10がローダおよびムーバを直接制御できる。
した図である。DMAC 38は、ローダ・マシン62
(以下ローダ62と呼ぶ)およびムーバ・マシン64
(以下ムーバ64と呼ぶ)を備える。ローダ62とムー
バ64はそれぞれ、プロセッサ入出力インターフェース
(それぞれ66および68)を有し、これによってプロ
セッサ10がローダおよびムーバを直接制御できる。
【0031】本発明の一実施形態では、ローダ62はロ
ーダ・コントローラ84を備え、これによってローダ6
2が主メモリ16からDMAC 38へDMAコマンド
をロードできる。具体的に言えばローダ・コントローラ
84は、プロセッサ10の主メモリ16からムーバ64
内のムーバ・レジスタ74へDMAコマンドをロードす
るように動作する。
ーダ・コントローラ84を備え、これによってローダ6
2が主メモリ16からDMAC 38へDMAコマンド
をロードできる。具体的に言えばローダ・コントローラ
84は、プロセッサ10の主メモリ16からムーバ64
内のムーバ・レジスタ74へDMAコマンドをロードす
るように動作する。
【0032】ローダ62はレジスタ72も備える。具体
的にこれらは、主メモリ16内にあるコマンド・バッフ
ァ92をアドレス指定するためのベース・ポインタ75
用のベース・レジスタ76と、コマンド・バッファ92
内にあるDMAコマンド・シーケンスのテールをアドレ
ス指定するテール・ポインタ77用のテール・ポインタ
・レジスタ78と、コマンド・バッファ92内にあるコ
マンド・シーケンスのヘッドをアドレス指定するヘッド
・ポインタ79用のヘッド・ポインタ・レジスタ80と
を含む。ローダ62にはその他のレジスタ82も備えら
れている。
的にこれらは、主メモリ16内にあるコマンド・バッフ
ァ92をアドレス指定するためのベース・ポインタ75
用のベース・レジスタ76と、コマンド・バッファ92
内にあるDMAコマンド・シーケンスのテールをアドレ
ス指定するテール・ポインタ77用のテール・ポインタ
・レジスタ78と、コマンド・バッファ92内にあるコ
マンド・シーケンスのヘッドをアドレス指定するヘッド
・ポインタ79用のヘッド・ポインタ・レジスタ80と
を含む。ローダ62にはその他のレジスタ82も備えら
れている。
【0033】ムーバ64は、バス間で大量のデータを移
動させるのに使用できる。これを実行するためのムーバ
転送機構85を含む。ムーバ64はムーバ・コントロー
ラ86を備える。これはムーバ・レジスタ74内のDM
Aコマンドに従ってDMA操作を制御するために使用可
能である。ムーバ64用のDMAコマンドは、プロセッ
サ10によってセットアップされた16バイト構造であ
る。DMAコマンドはムーバ64に、入出力バス40と
SBus DVMA(ダイレクト仮想メモリ・アクセ
ス)アドレスとの間でどちらかの方向にデータを移動さ
せ、主メモリに中継する。このDMAコマンドは、プロ
セッサ10によってムーバ・レジスタ74に直接書き込
むか、あるいは主メモリ16内のコマンド・バッファに
書き込んでから、ローダ62によってムーバ・レジスタ
74にロードすることができる。
動させるのに使用できる。これを実行するためのムーバ
転送機構85を含む。ムーバ64はムーバ・コントロー
ラ86を備える。これはムーバ・レジスタ74内のDM
Aコマンドに従ってDMA操作を制御するために使用可
能である。ムーバ64用のDMAコマンドは、プロセッ
サ10によってセットアップされた16バイト構造であ
る。DMAコマンドはムーバ64に、入出力バス40と
SBus DVMA(ダイレクト仮想メモリ・アクセ
ス)アドレスとの間でどちらかの方向にデータを移動さ
せ、主メモリに中継する。このDMAコマンドは、プロ
セッサ10によってムーバ・レジスタ74に直接書き込
むか、あるいは主メモリ16内のコマンド・バッファに
書き込んでから、ローダ62によってムーバ・レジスタ
74にロードすることができる。
【0034】DMAコマンドは、DVMAおよびフォー
ルト・トレラント入出力バス・アクセスに任意の開始ア
ドレスを指定することができる。これは、アラインメン
トの制約なしに、所与の最大値までの任意の転送長さを
指定することができる。DMAコマンドは、 − 主メモリのDVMAアドレスと、 − 入出力バス・アドレスと、 − バイト・カウントと、 − DVMAアクション・バイトとを含むことができ
る。
ルト・トレラント入出力バス・アクセスに任意の開始ア
ドレスを指定することができる。これは、アラインメン
トの制約なしに、所与の最大値までの任意の転送長さを
指定することができる。DMAコマンドは、 − 主メモリのDVMAアドレスと、 − 入出力バス・アドレスと、 − バイト・カウントと、 − DVMAアクション・バイトとを含むことができ
る。
【0035】DVMAアクション・バイトは、(転送方
向に関する)方向インジケータ、妥当性ビット、割込み
イネーブル・ビット、およびライトバック・イネーブル
・ビットを含むコマンドおよび状況情報を備える。
向に関する)方向インジケータ、妥当性ビット、割込み
イネーブル・ビット、およびライトバック・イネーブル
・ビットを含むコマンドおよび状況情報を備える。
【0036】本発明の実施形態は、プロセッサ10とD
MAC 38との間でDMAコマンドを転送する際のオ
ーバヘッドを最小限に抑えるために、DMAコマンドを
効率的に転送するための特定の機構を含む。
MAC 38との間でDMAコマンドを転送する際のオ
ーバヘッドを最小限に抑えるために、DMAコマンドを
効率的に転送するための特定の機構を含む。
【0037】図3に示すように、主メモリの領域はコマ
ンド・バッファ92として構成される。コマンド・バッ
ファ92として構成された主メモリ16のこの領域は、
オペレーティング・システム90の制約およびDMAコ
ントローラによる主メモリ16の使い方により、主メモ
リ内に配置される。たとえば、現在の例では、このコマ
ンド・バッファは8Kバイト境界で配置された8Kバイ
ト・ページとして定義される。図3は、DMAC 36
内に保持されているベース・レジスタ76、テール・レ
ジスタ78、およびヘッド・レジスタ80も例示してい
る。プロセッサは、ミラー・ベース・レジスタ106、
ミラー・ヘッド・レジスタ110、およびミラー・テー
ル・レジスタ108内にそれぞれミラー・ベース・ポイ
ンタ105、ミラー・ヘッド・ポインタ109、および
ミラー・テール・ポインタ107を保持していることに
留意されたい。
ンド・バッファ92として構成される。コマンド・バッ
ファ92として構成された主メモリ16のこの領域は、
オペレーティング・システム90の制約およびDMAコ
ントローラによる主メモリ16の使い方により、主メモ
リ内に配置される。たとえば、現在の例では、このコマ
ンド・バッファは8Kバイト境界で配置された8Kバイ
ト・ページとして定義される。図3は、DMAC 36
内に保持されているベース・レジスタ76、テール・レ
ジスタ78、およびヘッド・レジスタ80も例示してい
る。プロセッサは、ミラー・ベース・レジスタ106、
ミラー・ヘッド・レジスタ110、およびミラー・テー
ル・レジスタ108内にそれぞれミラー・ベース・ポイ
ンタ105、ミラー・ヘッド・ポインタ109、および
ミラー・テール・ポインタ107を保持していることに
留意されたい。
【0038】本発明の一実施形態では、DMAC 38
のムーバ64内にあるコマンド・バッファ・ベース・レ
ジスタ(ベース・レジスタ)76が、主メモリ16内に
あるコマンド・バッファ92のベース91のアドレス指
定を可能にする。図4は、このベース・レジスタ76を
例示した図である。これは、ビット0〜12が0であり
(すなわち8K境界)、ビット13〜29が主メモリ1
6内の個々のページをアドレス指定する30ビット・レ
ジスタである。
のムーバ64内にあるコマンド・バッファ・ベース・レ
ジスタ(ベース・レジスタ)76が、主メモリ16内に
あるコマンド・バッファ92のベース91のアドレス指
定を可能にする。図4は、このベース・レジスタ76を
例示した図である。これは、ビット0〜12が0であり
(すなわち8K境界)、ビット13〜29が主メモリ1
6内の個々のページをアドレス指定する30ビット・レ
ジスタである。
【0039】テール・ポインタ77およびヘッド・ポイ
ンタ79(DMAC 38のテール・レジスタ78およ
びヘッド・レジスタ80にそれぞれ保持されている)
が、それぞれ、コマンド・バッファ92内に保持されて
いるDMAコマンド・シーケンスのテール98およびヘ
ッド100のアドレス指定を可能にする。DMAコマン
ド・シーケンスのヘッドは、このシーケンスの終端に関
係しており、ここでDMAコマンドがコマンド・バッフ
ァに追加(格納)される。DMAコマンド・シーケンス
のテールは、このシーケンスの終端に関係しており、こ
こでDMAコマンドがコマンド・バッファから取り出さ
れる(読み取られる)。以下に記載するように、コマン
ド・バッファはリング・バッファとしても構成される
(すなわち、モジュロ・アドレス指定によりアドレス指
定される)。
ンタ79(DMAC 38のテール・レジスタ78およ
びヘッド・レジスタ80にそれぞれ保持されている)
が、それぞれ、コマンド・バッファ92内に保持されて
いるDMAコマンド・シーケンスのテール98およびヘ
ッド100のアドレス指定を可能にする。DMAコマン
ド・シーケンスのヘッドは、このシーケンスの終端に関
係しており、ここでDMAコマンドがコマンド・バッフ
ァに追加(格納)される。DMAコマンド・シーケンス
のテールは、このシーケンスの終端に関係しており、こ
こでDMAコマンドがコマンド・バッファから取り出さ
れる(読み取られる)。以下に記載するように、コマン
ド・バッファはリング・バッファとしても構成される
(すなわち、モジュロ・アドレス指定によりアドレス指
定される)。
【0040】ベース・レジスタ76は、コマンド・バッ
ファ92内のDMAコマンドを見つけるためにDMAC
38が発行するSBus DVMAアドレスを含む。
ファ92内のDMAコマンドを見つけるためにDMAC
38が発行するSBus DVMAアドレスを含む。
【0041】テール・レジスタ78内のテール・ポイン
タ77は、現在処理されているDMAコマンド(たとえ
ばDMAコマンド102)のインデックスを提供する。
テール・レジスタ78のテール・ポインタ77における
それぞれの増分は、主メモリにおける16バイト増分を
表し、これは1つのDMAコマンドに対応する。テール
・ポインタ値がゼロの場合は、そのコマンドがベース・
レジスタ76の指示するアドレスにあることを表す。
タ77は、現在処理されているDMAコマンド(たとえ
ばDMAコマンド102)のインデックスを提供する。
テール・レジスタ78のテール・ポインタ77における
それぞれの増分は、主メモリにおける16バイト増分を
表し、これは1つのDMAコマンドに対応する。テール
・ポインタ値がゼロの場合は、そのコマンドがベース・
レジスタ76の指示するアドレスにあることを表す。
【0042】図5は、テール・レジスタ78を例示する
図である。ビット0〜3(すなわち16バイト境界)が
ゼロであり、ビット4〜12がコマンド・バッファ92
内のインデックス値を示すことに留意されたい。
図である。ビット0〜3(すなわち16バイト境界)が
ゼロであり、ビット4〜12がコマンド・バッファ92
内のインデックス値を示すことに留意されたい。
【0043】ヘッド・レジスタ80は最後のDMAコマ
ンド(たとえばDMAコマンド104)のインデックス
を含み、これは主メモリ16内のコマンド・バッファ9
2で有効である。ヘッド・レジスタ80内のヘッド・ポ
インタによって与えられるアドレス指定は、テール・レ
ジスタ78のテール・ポインタ77について説明したと
おりである。ヘッド・レジスタ80を例示した図6を見
るとわかるように、これは図5に例示したテール・レジ
スタ78と同じ形式である。
ンド(たとえばDMAコマンド104)のインデックス
を含み、これは主メモリ16内のコマンド・バッファ9
2で有効である。ヘッド・レジスタ80内のヘッド・ポ
インタによって与えられるアドレス指定は、テール・レ
ジスタ78のテール・ポインタ77について説明したと
おりである。ヘッド・レジスタ80を例示した図6を見
るとわかるように、これは図5に例示したテール・レジ
スタ78と同じ形式である。
【0044】ヘッド・ポインタ79およびテール・ポイ
ンタ77の制御は、コマンド・バッファ92をリング・
バッファとして構成する(すなわちモジュロ・アドレス
指定が提供されている)ためのようなものであり、これ
によってポインタは、コマンド・バッファ92の一方の
端から他方の端へ折り返す。すなわち、アドレスは0〜
n(ここでnは最大インデックス値に対応する)まで増
加し、その後0に戻る。もちろんこのインデックス表示
は、nから0という逆方向に進み、その後nに戻っても
同じである。
ンタ77の制御は、コマンド・バッファ92をリング・
バッファとして構成する(すなわちモジュロ・アドレス
指定が提供されている)ためのようなものであり、これ
によってポインタは、コマンド・バッファ92の一方の
端から他方の端へ折り返す。すなわち、アドレスは0〜
n(ここでnは最大インデックス値に対応する)まで増
加し、その後0に戻る。もちろんこのインデックス表示
は、nから0という逆方向に進み、その後nに戻っても
同じである。
【0045】DMAコントローラがアイドル状態であ
り、現在のコマンドについて進行中のすべてのDMAを
完了した状況で、ヘッド・レジスタ80およびテール・
レジスタ78にあるヘッド・ポインタ79およびテール
・ポインタ77が、それぞれコマンド・バッファ92内
の同じ位置を指示している場合、このコマンド・バッフ
ァには有効なDMAコマンドがなく、DMAコントロー
ラはその時点で転送する必要のあるDMAコマンドがな
いことを理解する。
り、現在のコマンドについて進行中のすべてのDMAを
完了した状況で、ヘッド・レジスタ80およびテール・
レジスタ78にあるヘッド・ポインタ79およびテール
・ポインタ77が、それぞれコマンド・バッファ92内
の同じ位置を指示している場合、このコマンド・バッフ
ァには有効なDMAコマンドがなく、DMAコントロー
ラはその時点で転送する必要のあるDMAコマンドがな
いことを理解する。
【0046】以下に説明するように、ヘッド・レジスタ
80およびテール・レジスタ78が使用される方法は異
なる。具体的には、ヘッド・レジスタ80はプロセッサ
10によって管理されるが、テール・レジスタ78はD
MAC 38によって管理される。
80およびテール・レジスタ78が使用される方法は異
なる。具体的には、ヘッド・レジスタ80はプロセッサ
10によって管理されるが、テール・レジスタ78はD
MAC 38によって管理される。
【0047】次に、図1に示したシステムの動作につい
て、具体的にはDMAC 38の動作について、一般的
に説明する。
て、具体的にはDMAC 38の動作について、一般的
に説明する。
【0048】前述のように、DMAC 38はローダ6
2およびムーバ64を備え、プロセッサ12、14がD
MAC 38に対して提供するDMAコマンドに応答し
て動作することができる。DMAコマンドは、アライン
メントに関する制約なしに、DVMAおよび入出力バス
・アクセスに対して任意の開始アドレスを指定し、所与
の最大値までの任意の転送長さを指定することができ
る。ムーバ64は、実行可能な最大幅の転送および最長
のバーストを使用して、実行可能な最高の転送を処理す
る。読取り値が好都合なアドレスで終わらない場合、実
行可能な最速のバースト転送を使用するために、ムーバ
64によって、DMAコマンドに指定されたデータより
も多くのデータが転送のどちらかの端で読み取られてい
る可能性がある。過剰読取りになると、次の適切な境界
(たとえばSBusでは64バイト境界、入出力バスで
は8バイト境界)まで何も読み取らない。書込みは正確
に処理される。したがって、ムーバ64は、予測される
データを可能な限り最速の方法で書き込むのに適した、
小規模なSBusサイクルと入出力バス・サイクルの組
合わせであれば何でも使用する。
2およびムーバ64を備え、プロセッサ12、14がD
MAC 38に対して提供するDMAコマンドに応答し
て動作することができる。DMAコマンドは、アライン
メントに関する制約なしに、DVMAおよび入出力バス
・アクセスに対して任意の開始アドレスを指定し、所与
の最大値までの任意の転送長さを指定することができ
る。ムーバ64は、実行可能な最大幅の転送および最長
のバーストを使用して、実行可能な最高の転送を処理す
る。読取り値が好都合なアドレスで終わらない場合、実
行可能な最速のバースト転送を使用するために、ムーバ
64によって、DMAコマンドに指定されたデータより
も多くのデータが転送のどちらかの端で読み取られてい
る可能性がある。過剰読取りになると、次の適切な境界
(たとえばSBusでは64バイト境界、入出力バスで
は8バイト境界)まで何も読み取らない。書込みは正確
に処理される。したがって、ムーバ64は、予測される
データを可能な限り最速の方法で書き込むのに適した、
小規模なSBusサイクルと入出力バス・サイクルの組
合わせであれば何でも使用する。
【0049】必要であれば、ローダ62は、完了状況の
主メモリ内にあるDMAコマンドを更新することができ
る。DMAコマンドに指定されていれば、ムーバ64が
SBus割込みを生成することもできる。この割込みが
プロセッサ10に達したときに、DMAコマンドは完了
しており、メモリへの書込みが要求されていることが保
証されているが、主メモリに達する完了状況とプロセッ
サに達する割込みとの間のタイミングの関係は決められ
ていない。
主メモリ内にあるDMAコマンドを更新することができ
る。DMAコマンドに指定されていれば、ムーバ64が
SBus割込みを生成することもできる。この割込みが
プロセッサ10に達したときに、DMAコマンドは完了
しており、メモリへの書込みが要求されていることが保
証されているが、主メモリに達する完了状況とプロセッ
サに達する割込みとの間のタイミングの関係は決められ
ていない。
【0050】DMAの実行中、プロセッサは、主メモリ
16内にあるコマンド・バッファ92の待ち行列にDM
Aコマンドを入れることが可能であって、単一プロセッ
サ入出力書込みを使用して、すなわち新しいヘッド・ポ
インタをヘッド・レジスタ80に書き込むことによっ
て、その存在についての信号をローダ62に送信するこ
とができる。ムーバ64が1つのコマンドに対するDM
Aを完了したときに、ヘッド・ポインタ79とテール・
ポインタ77との間に何らかの差異があればそれを分析
することによって、ローダは即時に次のDMAコマンド
をムーバ・レジスタ74にロードし、プロセッサによる
何らかの支援を待たずに、新たにDMAを開始すること
ができる。言い換えれば、ローダ62は、ヘッド・ポイ
ンタ79とテール・ポインタ77との間の差異を使用し
て、DMAコマンドがコマンド・バッファ92からダウ
ンロードされるのを待っていることを示す。
16内にあるコマンド・バッファ92の待ち行列にDM
Aコマンドを入れることが可能であって、単一プロセッ
サ入出力書込みを使用して、すなわち新しいヘッド・ポ
インタをヘッド・レジスタ80に書き込むことによっ
て、その存在についての信号をローダ62に送信するこ
とができる。ムーバ64が1つのコマンドに対するDM
Aを完了したときに、ヘッド・ポインタ79とテール・
ポインタ77との間に何らかの差異があればそれを分析
することによって、ローダは即時に次のDMAコマンド
をムーバ・レジスタ74にロードし、プロセッサによる
何らかの支援を待たずに、新たにDMAを開始すること
ができる。言い換えれば、ローダ62は、ヘッド・ポイ
ンタ79とテール・ポインタ77との間の差異を使用し
て、DMAコマンドがコマンド・バッファ92からダウ
ンロードされるのを待っていることを示す。
【0051】図7Aおよび図7Bは、プロセッサ10お
よびDMAC 38の動作を例示した流れ図である。
よびDMAC 38の動作を例示した流れ図である。
【0052】図7Aは、プロセッサ10が実行する各ス
テップを表す。
テップを表す。
【0053】ステップS1で、プロセッサは新しいDM
Aコマンド(たとえばDMAコマンド103)をコマン
ド・バッファ92に書き込む。プロセッサは、ミラー・
ヘッド・レジスタ110の内容(すなわちミラー・ヘッ
ド・ポインタ109)によって識別されるオフセット
で、DMAコマンドをコマンド・バッファ92に書き込
む。コマンド・バッファのベースは、ミラー・ベース・
レジスタ106の内容(すなわちミラー・ベース・ポイ
ンタ105)によって識別される。
Aコマンド(たとえばDMAコマンド103)をコマン
ド・バッファ92に書き込む。プロセッサは、ミラー・
ヘッド・レジスタ110の内容(すなわちミラー・ヘッ
ド・ポインタ109)によって識別されるオフセット
で、DMAコマンドをコマンド・バッファ92に書き込
む。コマンド・バッファのベースは、ミラー・ベース・
レジスタ106の内容(すなわちミラー・ベース・ポイ
ンタ105)によって識別される。
【0054】ステップS2で、プロセッサはミラー・ヘ
ッド・レジスタ110内のミラー・ヘッド・ポインタ1
09を増分する。コマンド・バッファ92内の次の位置
は、ミラー・ヘッド・レジスタ110の内容を16バイ
トだけ増分することによって識別されるので、現時点で
最後のDMAコマンド104を超えて次の位置を指示す
る。
ッド・レジスタ110内のミラー・ヘッド・ポインタ1
09を増分する。コマンド・バッファ92内の次の位置
は、ミラー・ヘッド・レジスタ110の内容を16バイ
トだけ増分することによって識別されるので、現時点で
最後のDMAコマンド104を超えて次の位置を指示す
る。
【0055】ステップS3で、プロセッサはミラー・ヘ
ッド・レジスタ110の内容とミラー・テール・レジス
タ108の内容とを比較する。
ッド・レジスタ110の内容とミラー・テール・レジス
タ108の内容とを比較する。
【0056】これらが同等であれば(本実施の形態の場
合はこれらが等しければ)、コマンド・バッファ内には
それ以上スペースがない可能性があることを意味する。
これを調べるには、ミラー・テール・レジスタ108の
内容とテール・レジスタ78の内容とを確実に対応させ
る必要がある。したがってステップS4で、プロセッサ
はテール・レジスタ78の現在の内容をミラー・テール
・レジスタ108にコピーする。最後にミラー・テール
・レジスタ108が更新されてから、DMAC38がテ
ール・レジスタ78内のテール・ポインタ77を変更し
た場合は、ミラー・ヘッド・レジスタ110の内容とミ
ラー・テール・レジスタ108の内容が同等ではないは
ずである。ステップS3およびS4によって形成される
ループは、ステップS3のテストによって、ヘッド・レ
ジスタ110の内容とテール・レジスタ108の内容が
同等でないことが示されるまで繰り返される。
合はこれらが等しければ)、コマンド・バッファ内には
それ以上スペースがない可能性があることを意味する。
これを調べるには、ミラー・テール・レジスタ108の
内容とテール・レジスタ78の内容とを確実に対応させ
る必要がある。したがってステップS4で、プロセッサ
はテール・レジスタ78の現在の内容をミラー・テール
・レジスタ108にコピーする。最後にミラー・テール
・レジスタ108が更新されてから、DMAC38がテ
ール・レジスタ78内のテール・ポインタ77を変更し
た場合は、ミラー・ヘッド・レジスタ110の内容とミ
ラー・テール・レジスタ108の内容が同等ではないは
ずである。ステップS3およびS4によって形成される
ループは、ステップS3のテストによって、ヘッド・レ
ジスタ110の内容とテール・レジスタ108の内容が
同等でないことが示されるまで繰り返される。
【0057】ステップS3のテストによって、ミラー・
ヘッド・ポインタ109がミラー・テール・ポインタ1
07と同等でないことが示されると、プロセッサはステ
ップS5で、コマンド・バッファ92に書き込まれるD
MAコマンドが他にもあるかどうかを判定する。他にも
ある場合は、ステップS1に制御が戻される。他にない
場合、プロセッサはステップS6で、DMACのヘッド
・ポインタ79がミラー・ヘッド・ポインタ109に対
応するように更新するために、ミラー・ヘッド・レジス
タ110の内容をDMAC 38のヘッド・レジスタ8
0にコピーする。
ヘッド・ポインタ109がミラー・テール・ポインタ1
07と同等でないことが示されると、プロセッサはステ
ップS5で、コマンド・バッファ92に書き込まれるD
MAコマンドが他にもあるかどうかを判定する。他にも
ある場合は、ステップS1に制御が戻される。他にない
場合、プロセッサはステップS6で、DMACのヘッド
・ポインタ79がミラー・ヘッド・ポインタ109に対
応するように更新するために、ミラー・ヘッド・レジス
タ110の内容をDMAC 38のヘッド・レジスタ8
0にコピーする。
【0058】その結果、プロセッサ10は、1つまたは
複数のDMAコマンドをバッファ92のヘッドに追加
し、DMACヘッド・レジスタ80への単一書込みによ
って、DMAC 38にすべてのコマンドを使用できる
ことを示すことがわかる。これによって、入出力帯域幅
要件を最小限に抑えることができる。
複数のDMAコマンドをバッファ92のヘッドに追加
し、DMACヘッド・レジスタ80への単一書込みによ
って、DMAC 38にすべてのコマンドを使用できる
ことを示すことがわかる。これによって、入出力帯域幅
要件を最小限に抑えることができる。
【0059】プロセッサ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にアクセスするだけでよい。これによっ
て、入出力帯域幅要件がさらに最小限に抑えられる。
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にアクセスするだけでよい。これによっ
て、入出力帯域幅要件がさらに最小限に抑えられる。
【0060】図7Bは、DMAC 38が実行するステ
ップを表す。
ップを表す。
【0061】ステップS11でローダ62は、ヘッド・
ポインタ79とテール・ポインタ77とを比較すること
ができる。ヘッド・ポインタ79とテール・ポインタ7
7が同等であれば、現在、主メモリからムーバ64への
転送を待っているDMAコマンドはないことが判定され
る。したがって、DMACローダ62は、ヘッド・ポイ
ンタ79とテール・ポインタ77との間に差異が生じる
まで待機する。ここで同等であると言うことは、ポイン
タが、コマンド・バッファ内にある共通のDMAコマン
ド格納位置を効果的に指し示しているという意味である
ことがわかる。本実施形態の場合、これは両者が同じ値
を有していることを意味する。ただし他の実施形態で
は、使用されるアドレス指定モードに応じて、互いに所
定の関係を保った値を有することができる。
ポインタ79とテール・ポインタ77とを比較すること
ができる。ヘッド・ポインタ79とテール・ポインタ7
7が同等であれば、現在、主メモリからムーバ64への
転送を待っているDMAコマンドはないことが判定され
る。したがって、DMACローダ62は、ヘッド・ポイ
ンタ79とテール・ポインタ77との間に差異が生じる
まで待機する。ここで同等であると言うことは、ポイン
タが、コマンド・バッファ内にある共通のDMAコマン
ド格納位置を効果的に指し示しているという意味である
ことがわかる。本実施形態の場合、これは両者が同じ値
を有していることを意味する。ただし他の実施形態で
は、使用されるアドレス指定モードに応じて、互いに所
定の関係を保った値を有することができる。
【0062】ヘッド・ポインタ79とテール・ポインタ
77が同等でない場合(すなわち本実施形態では異なる
値を有する場合)、ローダ62はステップS12でテー
ル・ポインタ77を使用し、DMAの読取り操作によっ
て、コマンド・バッファ92内にある最後のコマンドに
アクセスする。したがってDMACローダ62は、次の
DMAコマンド(たとえばDMAコマンド102)を主
メモリ16からムーバ・レジスタ74に転送することが
できる。
77が同等でない場合(すなわち本実施形態では異なる
値を有する場合)、ローダ62はステップS12でテー
ル・ポインタ77を使用し、DMAの読取り操作によっ
て、コマンド・バッファ92内にある最後のコマンドに
アクセスする。したがってDMACローダ62は、次の
DMAコマンド(たとえばDMAコマンド102)を主
メモリ16からムーバ・レジスタ74に転送することが
できる。
【0063】ムーバがDMAコマンドに指定されたデー
タの移動を完了するステップS13に続いて、ローダは
ステップS14で、「実行済み」または「完了」という
指示を、DMAコマンドがそこから読み取られたばかり
のコマンド・バッファ位置に書き込むことができる。プ
ロセッサはこれを使用して、DMAC 38によってど
のDMAデータが首尾良く転送されたか否かを監視する
ことができる。
タの移動を完了するステップS13に続いて、ローダは
ステップS14で、「実行済み」または「完了」という
指示を、DMAコマンドがそこから読み取られたばかり
のコマンド・バッファ位置に書き込むことができる。プ
ロセッサはこれを使用して、DMAC 38によってど
のDMAデータが首尾良く転送されたか否かを監視する
ことができる。
【0064】ステップS15で、DMACローダ62
は、テール・ポインタ77がコマンド・バッファ92内
の新しいテールを指し示すように更新する。
は、テール・ポインタ77がコマンド・バッファ92内
の新しいテールを指し示すように更新する。
【0065】上記ステップS11〜S15は、図1のロ
ーダ・コントローラ84が提供する機能を決めるもので
ある。
ーダ・コントローラ84が提供する機能を決めるもので
ある。
【0066】前述のように、ヘッド・ポインタ79およ
びテール・ポインタ77は、モジュロ・アドレス指定を
使用して、コマンド・バッファ92をリング・バッファ
として構成することができる。この方式では、主メモリ
からDMAC 38への転送を待っているコマンドの文
字列は、コマンド・バッファ用に割り振られたメモリ・
スペース内で折り返すことができる。したがって、ヘッ
ド・ポインタ79およびテール・ポインタ77の修正
は、コマンド・バッファ92に割り振られたメモリ・ス
ペースに基づく「モジュロ」方式で実行されるのが効果
的である。
びテール・ポインタ77は、モジュロ・アドレス指定を
使用して、コマンド・バッファ92をリング・バッファ
として構成することができる。この方式では、主メモリ
からDMAC 38への転送を待っているコマンドの文
字列は、コマンド・バッファ用に割り振られたメモリ・
スペース内で折り返すことができる。したがって、ヘッ
ド・ポインタ79およびテール・ポインタ77の修正
は、コマンド・バッファ92に割り振られたメモリ・ス
ペースに基づく「モジュロ」方式で実行されるのが効果
的である。
【0067】前述のように、プロセッサ10は、1つま
たは複数のDMAコマンドのシーケンスをコマンド・バ
ッファ92に書き込むのに使用することができる。この
コマンド・シーケンスは、転送されたDMAコマンドの
最後のアドレスだけをDMAC 38のヘッド・レジス
タ80に送信して書き込むことができる。テール・ポイ
ンタ77は、次のコマンドのアドレスを形成するために
使用されるので、DMAコマンドごとに更新される。D
MACローダ62は、一連のDMAコマンドをコマンド
・バッファ92からDMACムーバ64に転送するのに
使用することができる。この場合、DMAコマンドのシ
ーケンスがコマンド・バッファ92からDMACムーバ
64に転送され、最後のDMAコマンドが完了した後
に、割込みを生成するか、または主メモリ内の最終コマ
ンドの完了状況を更新することができる。
たは複数のDMAコマンドのシーケンスをコマンド・バ
ッファ92に書き込むのに使用することができる。この
コマンド・シーケンスは、転送されたDMAコマンドの
最後のアドレスだけをDMAC 38のヘッド・レジス
タ80に送信して書き込むことができる。テール・ポイ
ンタ77は、次のコマンドのアドレスを形成するために
使用されるので、DMAコマンドごとに更新される。D
MACローダ62は、一連のDMAコマンドをコマンド
・バッファ92からDMACムーバ64に転送するのに
使用することができる。この場合、DMAコマンドのシ
ーケンスがコマンド・バッファ92からDMACムーバ
64に転送され、最後のDMAコマンドが完了した後
に、割込みを生成するか、または主メモリ内の最終コマ
ンドの完了状況を更新することができる。
【0068】次に、DMACローダ62およびDMAC
ムーバ64で提供されるその他のレジスタについて簡単
に説明する。
ムーバ64で提供されるその他のレジスタについて簡単
に説明する。
【0069】DMACローダ62内のその他レジスタ8
2は、現在のローダ状況を示すローダ状況レジスタを含
むことができる。ローダは2つの主要な状態、すなわち
受動状態と能動状態の間で移動する。パワーオン・リセ
ット・コマンド、同期化リセット・コマンド、任意のデ
ータ転送エラー・コマンド、あるいは直接プロセッサ・
コマンドによって、ローダを能動状態に移動させること
ができる。
2は、現在のローダ状況を示すローダ状況レジスタを含
むことができる。ローダは2つの主要な状態、すなわち
受動状態と能動状態の間で移動する。パワーオン・リセ
ット・コマンド、同期化リセット・コマンド、任意のデ
ータ転送エラー・コマンド、あるいは直接プロセッサ・
コマンドによって、ローダを能動状態に移動させること
ができる。
【0070】能動状態では、ローダはDMAコマンドを
処理中であっても処理中でなくてもよい。すべてのコマ
ンドが完了すると、ヘッド・レジスタ80の内容(すな
わちヘッド・ポインタ79)はテール・レジスタ78の
内容(すなわちテール・ポインタ77)と同等になる。
ローダは、プロセッサ10が新しい値をヘッド・レジス
タ80に書き込むのを能動状態で無期限に待機し、書き
込まれた後、ローダは新しいDMAコマンドを処理す
る。能動状態は、ローダにとって通常の状態である。
処理中であっても処理中でなくてもよい。すべてのコマ
ンドが完了すると、ヘッド・レジスタ80の内容(すな
わちヘッド・ポインタ79)はテール・レジスタ78の
内容(すなわちテール・ポインタ77)と同等になる。
ローダは、プロセッサ10が新しい値をヘッド・レジス
タ80に書き込むのを能動状態で無期限に待機し、書き
込まれた後、ローダは新しいDMAコマンドを処理す
る。能動状態は、ローダにとって通常の状態である。
【0071】DMACムーバ64内にあるムーバ・レジ
スタ74は、いくつかの異なるレジスタを備える。
スタ74は、いくつかの異なるレジスタを備える。
【0072】DMAC_ACTIONレジスタは、現在
のムーバ動作を決める。このレジスタは、DMACロー
ダ62によって自動的にロードされ、主メモリ内にある
DMACコマンドのアクション・バイトに依存してい
る。DMAC_ACTIONレジスタは、コマンドおよ
び状況情報を含む。これは、方向インジケータ、妥当性
インジケータ、割込みイネーブル・インジケータ、およ
びライトバック・イネーブル・インジケータを含むこと
ができる。方向インジケータは転送方向を示す。妥当性
インジケータは、コマンドの妥当性をチェックすること
ができる。割込みイネーブル・インジケータは、DMA
動作完了時にDMAムーバが割込みを生成するか否かを
示す。ライトバック・イネーブル・インジケータは、コ
マンド完了後に、完了状況がコマンド・バッファに書き
戻されるか否かを示す。DMACムーバはアクション・
コマンドを完了すると、終了状況でDMAC_ACTI
ONを更新する。書戻し(ライトバック)が許可される
と、DMAローダはDMAC_ACTIONレジスタ内
で、更新されたDMAC_ACTIONを主メモリ16
に書き戻す。DMAC_ACTIONレジスタは、その
他の状況インジケータに使用する状況ビットをさらに含
むことができる。
のムーバ動作を決める。このレジスタは、DMACロー
ダ62によって自動的にロードされ、主メモリ内にある
DMACコマンドのアクション・バイトに依存してい
る。DMAC_ACTIONレジスタは、コマンドおよ
び状況情報を含む。これは、方向インジケータ、妥当性
インジケータ、割込みイネーブル・インジケータ、およ
びライトバック・イネーブル・インジケータを含むこと
ができる。方向インジケータは転送方向を示す。妥当性
インジケータは、コマンドの妥当性をチェックすること
ができる。割込みイネーブル・インジケータは、DMA
動作完了時にDMAムーバが割込みを生成するか否かを
示す。ライトバック・イネーブル・インジケータは、コ
マンド完了後に、完了状況がコマンド・バッファに書き
戻されるか否かを示す。DMACムーバはアクション・
コマンドを完了すると、終了状況でDMAC_ACTI
ONを更新する。書戻し(ライトバック)が許可される
と、DMAローダはDMAC_ACTIONレジスタ内
で、更新されたDMAC_ACTIONを主メモリ16
に書き戻す。DMAC_ACTIONレジスタは、その
他の状況インジケータに使用する状況ビットをさらに含
むことができる。
【0073】DMAC_DVMAレジスタは、DMAに
使用されるSBusDVMAアドレスを決める。このD
VMAアドレスは、システム入出力コントローラ30内
にある入出力メモリ管理ユニットによって、実アドレス
に変換される。このレジスタは、DMACローダ62に
よって、コマンド・バッファ92にあるDMAコマンド
から自動的にロードされる。
使用されるSBusDVMAアドレスを決める。このD
VMAアドレスは、システム入出力コントローラ30内
にある入出力メモリ管理ユニットによって、実アドレス
に変換される。このレジスタは、DMACローダ62に
よって、コマンド・バッファ92にあるDMAコマンド
から自動的にロードされる。
【0074】DMAC_IOADレジスタは、DMAに
使用する入出力バスDVMAアドレスを決める。このレ
ジスタも、ローダによって、コマンド・バッファ92に
あるDMAコマンドから自動的にロードされる。
使用する入出力バスDVMAアドレスを決める。このレ
ジスタも、ローダによって、コマンド・バッファ92に
あるDMAコマンドから自動的にロードされる。
【0075】DMAC_COUNTレジスタは、DMA
C転送バイトをカウントする。これは、DMAコマンド
に関して転送されるバイト数を与える。このレジスタ
も、DMACローダ62によって、コマンド・バッファ
92にあるDMAコマンドから自動的にロードされる。
C転送バイトをカウントする。これは、DMAコマンド
に関して転送されるバイト数を与える。このレジスタ
も、DMACローダ62によって、コマンド・バッファ
92にあるDMAコマンドから自動的にロードされる。
【0076】前述のように、プロセッサ10は、ミラー
・ベース・ポインタ105、ミラー・テール・ポインタ
107、およびミラー・ヘッド・ポインタ109を、ミ
ラー・ベース・レジスタ106、ミラー・テール・レジ
スタ108、およびミラー・ヘッド・レジスタ110内
でそれぞれ維持する。図3に示すように、これらのレジ
スタは主メモリ内に保持することができる。別法とし
て、これらをCPUレジスタで形成することができる。
・ベース・ポインタ105、ミラー・テール・ポインタ
107、およびミラー・ヘッド・ポインタ109を、ミ
ラー・ベース・レジスタ106、ミラー・テール・レジ
スタ108、およびミラー・ヘッド・レジスタ110内
でそれぞれ維持する。図3に示すように、これらのレジ
スタは主メモリ内に保持することができる。別法とし
て、これらをCPUレジスタで形成することができる。
【0077】図8は、DMAC 36のその他の態様を
さらに詳細に例示した図である。具体的に言えば、図8
はDMA転送機構85をより詳細に例示した図である。
さらに詳細に例示した図である。具体的に言えば、図8
はDMA転送機構85をより詳細に例示した図である。
【0078】図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によって形成される。
ーフェース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によって形成される。
【0079】マルチプレクサ210への第1の入力と第
2の入力の選択は、ムーバ・コントローラ86による多
重信号MS出力によって実行される。マルチプレクサ2
10の出力211は、バッファ・ステージ212に供給
される。バッファ・ステージ212は、クロックト入力
ゲート214、バッファ記憶域(たとえば容量が128
×8バイトのランダム・アクセス・メモリ)、およびク
ロックト出力ゲート218を含む。クロックト入力ゲー
ト214およびクロックト出力ゲート218は、ムーバ
・コントローラ86からのクロック信号CSを受け取
る。
2の入力の選択は、ムーバ・コントローラ86による多
重信号MS出力によって実行される。マルチプレクサ2
10の出力211は、バッファ・ステージ212に供給
される。バッファ・ステージ212は、クロックト入力
ゲート214、バッファ記憶域(たとえば容量が128
×8バイトのランダム・アクセス・メモリ)、およびク
ロックト出力ゲート218を含む。クロックト入力ゲー
ト214およびクロックト出力ゲート218は、ムーバ
・コントローラ86からのクロック信号CSを受け取
る。
【0080】バッファ・ステージ212の出力は、第2
のマルチプレクサ230への第1の入力226と、保持
レジスタ222への入力224となる。保持レジスタ2
22は、ムーバ・コントローラ86からのクロック信号
CSによってクロックされる。保持レジスタ222の出
力は、第2のSBusインターフェース204への入力
220を形成する。
のマルチプレクサ230への第1の入力226と、保持
レジスタ222への入力224となる。保持レジスタ2
22は、ムーバ・コントローラ86からのクロック信号
CSによってクロックされる。保持レジスタ222の出
力は、第2のSBusインターフェース204への入力
220を形成する。
【0081】第2のマルチプレクサ230への第2の入
力228は、第1の入出力バス・インターフェース25
0からの出力によって形成される。
力228は、第1の入出力バス・インターフェース25
0からの出力によって形成される。
【0082】第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からのデータを受け取ることである。
出力と第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からのデータを受け取ることである。
【0083】次に、ムーバ転送機構85の動作について
下記に記載する。ムーバ・コントローラ86は、ムーバ
転送機構85の動作を制御するために、ムーバ64のム
ーバ・レジスタ74内にあるデータに応答して動作する
ことに留意されたい。
下記に記載する。ムーバ・コントローラ86は、ムーバ
転送機構85の動作を制御するために、ムーバ64のム
ーバ・レジスタ74内にあるデータに応答して動作する
ことに留意されたい。
【0084】図9は、シフタ/ローテータ234を示す
概略図である。図4に示すように、シフタ/ローテータ
234への入力232およびシフタ/ローテータ234
からの出力238は、マルチバイト出力である。ムーバ
・コントローラ86からのシフト入力236は、シフト
制御信号236によって選択されたシフタ/ローテータ
234内でのバレルシフト動作を制御するために使用す
ることができる。
概略図である。図4に示すように、シフタ/ローテータ
234への入力232およびシフタ/ローテータ234
からの出力238は、マルチバイト出力である。ムーバ
・コントローラ86からのシフト入力236は、シフト
制御信号236によって選択されたシフタ/ローテータ
234内でのバレルシフト動作を制御するために使用す
ることができる。
【0085】図10は、アキュムレータ240を例示し
た図である。シフタ/ローテータ234からアキュムレ
ータ240への入力238は、平行にバイト・マスク2
39へ供給される。バイト・マスクを使用して、バイト
・イネーブル信号242にしたがって、その入力から1
つまたは複数のバイトを選択することができる。アキュ
ムレータ・レジスタ241を使用して、フェーズ信号2
44により、バイト・マスク239が供給するバイトを
選択的に累積し、出力することができる。この例では、
マスキングはバイトごとに実行されるが、他の実施形態
では、例えばビットごとに選択することができることに
留意されたい。フェーズ信号はアキュムレータ・レジス
タ241の異なるフェーズの動作を累積し、その後累積
されたビットを出力するように制御する。バイト・イネ
ーブル信号242およびフェーズ信号244は、ムーバ
・コントローラ86によって供給される。アキュムレー
タ・レジスタ241からの出力は、ライン208および
246に供給される。
た図である。シフタ/ローテータ234からアキュムレ
ータ240への入力238は、平行にバイト・マスク2
39へ供給される。バイト・マスクを使用して、バイト
・イネーブル信号242にしたがって、その入力から1
つまたは複数のバイトを選択することができる。アキュ
ムレータ・レジスタ241を使用して、フェーズ信号2
44により、バイト・マスク239が供給するバイトを
選択的に累積し、出力することができる。この例では、
マスキングはバイトごとに実行されるが、他の実施形態
では、例えばビットごとに選択することができることに
留意されたい。フェーズ信号はアキュムレータ・レジス
タ241の異なるフェーズの動作を累積し、その後累積
されたビットを出力するように制御する。バイト・イネ
ーブル信号242およびフェーズ信号244は、ムーバ
・コントローラ86によって供給される。アキュムレー
タ・レジスタ241からの出力は、ライン208および
246に供給される。
【0086】図8では、斜線で印を付けたように、すべ
ての内部データ・パス・ラインが64ビット幅(すなわ
ち8バイト幅)である。ただし、バス32および40上
のデータ・ラインおよびアドレス・ラインは、別のバス
・インターフェースを使用して別々に制御できることが
可能であって、この場合、バスとインターフェースとを
結ぶラインが内部データ幅とは異なる場合があることに
留意されたい。さらにまた、この例の内部データ幅は、
可能な内部データ幅の単なる一例であって、代わりに他
の内部データ幅(たとえば32ビットまたは128ビッ
ト)を使用してもよいことを理解されたい。
ての内部データ・パス・ラインが64ビット幅(すなわ
ち8バイト幅)である。ただし、バス32および40上
のデータ・ラインおよびアドレス・ラインは、別のバス
・インターフェースを使用して別々に制御できることが
可能であって、この場合、バスとインターフェースとを
結ぶラインが内部データ幅とは異なる場合があることに
留意されたい。さらにまた、この例の内部データ幅は、
可能な内部データ幅の単なる一例であって、代わりに他
の内部データ幅(たとえば32ビットまたは128ビッ
ト)を使用してもよいことを理解されたい。
【0087】図11は、ソース・バス(SBus 32
または入出力バス40のいずれでもよい)とそれらのバ
スの他方にある宛先との間で実行可能な転送を例示した
図である。この例では、実施形態が64ビット幅のデー
タ・パスであるので、8バイト幅のデータ・ソースが表
示されている。ただし、上記で提案したように、他の実
施形態では他のデータ幅が採用されることがある。もち
ろんDMA転送は、DMAC 38の位置に応じて、他
のバス間でも実行可能である。
または入出力バス40のいずれでもよい)とそれらのバ
スの他方にある宛先との間で実行可能な転送を例示した
図である。この例では、実施形態が64ビット幅のデー
タ・パスであるので、8バイト幅のデータ・ソースが表
示されている。ただし、上記で提案したように、他の実
施形態では他のデータ幅が採用されることがある。もち
ろんDMA転送は、DMAC 38の位置に応じて、他
のバス間でも実行可能である。
【0088】ソース情報260はワード0のバイト4か
ら開始していることに留意されたい。これに対して宛先
情報は、ワード10のバイト6から開始している。した
がって、単にバイトをワードごとにソースから宛先に転
送することはできないことがわかる。ムーバ転送機構
は、ソース・アドレスから宛先アドレスへのデータの転
送を非常に効率よく実行するように構成される。
ら開始していることに留意されたい。これに対して宛先
情報は、ワード10のバイト6から開始している。した
がって、単にバイトをワードごとにソースから宛先に転
送することはできないことがわかる。ムーバ転送機構
は、ソース・アドレスから宛先アドレスへのデータの転
送を非常に効率よく実行するように構成される。
【0089】次に、シフタ/ローテータ234とアキュ
ムレータ240の動作について、図12を参照しながら
説明する。
ムレータ240の動作について、図12を参照しながら
説明する。
【0090】図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についてより詳細に説明する。
期、第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についてより詳細に説明する。
【0091】以上のことから、第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に示すように)即時に出力される。
では、シフタ・ローテータ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に示すように)即時に出力される。
【0092】1回の実行で3バイトが出力されるように
表示されている。これを望まないあるいはこれが不可能
な他の実施形態の場合、ムーバ・コントローラ86は信
号を供給して、出力に3バイトが1回に1バイト選択さ
れるようにすることができる。
表示されている。これを望まないあるいはこれが不可能
な他の実施形態の場合、ムーバ・コントローラ86は信
号を供給して、出力に3バイトが1回に1バイト選択さ
れるようにすることができる。
【0093】行1.2に示すように、動作の第2フェー
ズでは、シフタ/ローテータ234への入力およびここ
からの出力はそのままである。ただし、アキュムレータ
に供給されるバイト・イネーブル信号242は1100
0000に変わる。その結果、アキュムレータ240に
入力される最初の2バイト(DおよびE)がセレクタ2
39によって選択され、アキュムレータ・レジスタ24
1に累積される。ただし、これらの信号は出力されず、
代わりに動作の次のフェーズになるまでアキュムレータ
・レジスタ内に保持される。
ズでは、シフタ/ローテータ234への入力およびここ
からの出力はそのままである。ただし、アキュムレータ
に供給されるバイト・イネーブル信号242は1100
0000に変わる。その結果、アキュムレータ240に
入力される最初の2バイト(DおよびE)がセレクタ2
39によって選択され、アキュムレータ・レジスタ24
1に累積される。ただし、これらの信号は出力されず、
代わりに動作の次のフェーズになるまでアキュムレータ
・レジスタ内に保持される。
【0094】動作の次のフェーズは、ステップ2の第1
フェーズを形成する。行2.1に示すように、シフタ/
ローテータ234への入力232は、ソース・バスから
のワード1(すなわちFGHIJKLM)に関する情報
に変わる。シフタ/ローテータ234からの出力238
は、この入力を右へ2バイト分バレルシフトしたもの
(すなわちLMFGHIJK)に対応する。このフェー
ズで、図7の242に示すように、バイトイネーブル信
号が00111111に変わり、これによってセレクタ
239は、アキュムレータ・ユニット241で累積する
ために信号FGHIJKを選択する。これで宛先への第
2のワードの供給は完了し、次いで列2.1の245に
矢印で示されたように、8バイトのワードとして出力さ
れる。
フェーズを形成する。行2.1に示すように、シフタ/
ローテータ234への入力232は、ソース・バスから
のワード1(すなわちFGHIJKLM)に関する情報
に変わる。シフタ/ローテータ234からの出力238
は、この入力を右へ2バイト分バレルシフトしたもの
(すなわちLMFGHIJK)に対応する。このフェー
ズで、図7の242に示すように、バイトイネーブル信
号が00111111に変わり、これによってセレクタ
239は、アキュムレータ・ユニット241で累積する
ために信号FGHIJKを選択する。これで宛先への第
2のワードの供給は完了し、次いで列2.1の245に
矢印で示されたように、8バイトのワードとして出力さ
れる。
【0095】図12での考察により、このプロセスがど
のようにして2.2、3.1、3.2、および4.1の
各フェーズへと続行されるかが理解されよう。第4の宛
先バイト(バイト13)に出力される情報は、フェーズ
4.1が終わった時点ですでにアキュムレータに格納さ
れているので、フェーズ4.2では必要ないことに留意
されたい。したがってこの例では、列4.1の245に
矢印で示されているように、この情報は即時に出力され
る。他の例で、1ワードが8バイトより少ないワードが
出力される場合、特定の実施形態により、1バイト、2
バイト、および/または4バイトのグループで出力する
ことができる。
のようにして2.2、3.1、3.2、および4.1の
各フェーズへと続行されるかが理解されよう。第4の宛
先バイト(バイト13)に出力される情報は、フェーズ
4.1が終わった時点ですでにアキュムレータに格納さ
れているので、フェーズ4.2では必要ないことに留意
されたい。したがってこの例では、列4.1の245に
矢印で示されているように、この情報は即時に出力され
る。他の例で、1ワードが8バイトより少ないワードが
出力される場合、特定の実施形態により、1バイト、2
バイト、および/または4バイトのグループで出力する
ことができる。
【0096】したがって、バス32とバス40との間で
の転送、またはバス40とバス42との間での転送の場
合、ソースアラインメントから宛先アラインメントに転
送するために、情報がいかに効率よくバレルシフトされ
て累積されるかが理解されよう。
の転送、またはバス40とバス42との間での転送の場
合、ソースアラインメントから宛先アラインメントに転
送するために、情報がいかに効率よくバレルシフトされ
て累積されるかが理解されよう。
【0097】バイトの詳細な動きは、実施の形態によっ
て異なる。たとえば、どちらのバスもバースト・モード
で動作している場合、前述のようにアキュムレータ24
0を2つのフェーズで動作させるようにすることができ
る。第1フェーズでは、シフタから入出力データ・ワー
ドxのnバイトを入手する。第2フェーズでは、入出力
データ・ワード(x+1)から(8−n)バイトを入手
する。次いでアキュムレータの内容がバッファ216に
転送され、(x+1)からnバイトを即時に入手する、
といった具合である。値nはシフトに関係し、ソース・
バスおよび宛先バス上にある開始アドレスのバイト・オ
フセットに依存する。
て異なる。たとえば、どちらのバスもバースト・モード
で動作している場合、前述のようにアキュムレータ24
0を2つのフェーズで動作させるようにすることができ
る。第1フェーズでは、シフタから入出力データ・ワー
ドxのnバイトを入手する。第2フェーズでは、入出力
データ・ワード(x+1)から(8−n)バイトを入手
する。次いでアキュムレータの内容がバッファ216に
転送され、(x+1)からnバイトを即時に入手する、
といった具合である。値nはシフトに関係し、ソース・
バスおよび宛先バス上にある開始アドレスのバイト・オ
フセットに依存する。
【0098】シフト信号236、バイト・イネーブル信
号242、およびフェーズ信号244は、すべてムーバ
・コントローラ86によって提供されることに留意され
たい。このムーバ・コントローラ86を使用して、ソー
ス・アドレスおよび宛先アドレス、これらの信号を生成
するための転送方向、ならびに図8に例示した他のユニ
ットに供給されるクロック信号CSおよび多重信号MS
を含む、ムーバ・レジスタ74に格納されたデータに応
答することができる。
号242、およびフェーズ信号244は、すべてムーバ
・コントローラ86によって提供されることに留意され
たい。このムーバ・コントローラ86を使用して、ソー
ス・アドレスおよび宛先アドレス、これらの信号を生成
するための転送方向、ならびに図8に例示した他のユニ
ットに供給されるクロック信号CSおよび多重信号MS
を含む、ムーバ・レジスタ74に格納されたデータに応
答することができる。
【0099】図13は、ムーバ・コントローラの動作を
まとめた構成図である。ステップS21では、ムーバ・
コントローラがムーバ・レジスタ74からソース・アド
レスおよび宛先アドレスを取り出す。S22では、バス
32とバス40との間の転送方向を決定する。この情報
は、一般にムーバ・レジスタ74のうちの1つの転送方
向指示によって決定される。ただし代わりに、関係する
バス・プロトコルを使用することができるソース・アド
レスおよび宛先アドレスから直接取り出すことも可能で
ある。
まとめた構成図である。ステップS21では、ムーバ・
コントローラがムーバ・レジスタ74からソース・アド
レスおよび宛先アドレスを取り出す。S22では、バス
32とバス40との間の転送方向を決定する。この情報
は、一般にムーバ・レジスタ74のうちの1つの転送方
向指示によって決定される。ただし代わりに、関係する
バス・プロトコルを使用することができるソース・アド
レスおよび宛先アドレスから直接取り出すことも可能で
ある。
【0100】S23では、ムーバ・コントローラが、シ
フタ/ローテータ内で実行されるシフトおよび転送され
るブロック・シーケンスのサイズを決定する。
フタ/ローテータ内で実行されるシフトおよび転送され
るブロック・シーケンスのサイズを決定する。
【0101】この情報は、基礎のしっかりしたアルゴリ
ズム、所与の正確なソース・アドレスおよび宛先アドレ
ス、ならびに転送方向により、容易に計算できることに
留意されたい。転送用ブロックの決定は、バス間での転
送をできる限り効率的に実行するように確定される。
ズム、所与の正確なソース・アドレスおよび宛先アドレ
ス、ならびに転送方向により、容易に計算できることに
留意されたい。転送用ブロックの決定は、バス間での転
送をできる限り効率的に実行するように確定される。
【0102】図14に示すように、転送は異なるブロッ
ク・サイズで実行することが可能であって、使用可能な
バス・プロトコルおよび使用可能なハードウェア設計幅
の範囲内で実行される、これらのサイズによるブロック
転送の可用性に依存する。これは自由に選択することが
できる。
ク・サイズで実行することが可能であって、使用可能な
バス・プロトコルおよび使用可能なハードウェア設計幅
の範囲内で実行される、これらのサイズによるブロック
転送の可用性に依存する。これは自由に選択することが
できる。
【0103】図14に示すように、転送ブロックは1バ
イト・サイズ、8バイト・サイズ、および64バイト・
サイズが可能であると考えられる。他の実施形態では、
1バイトよりも量が少ない場合にビット転送も可能であ
る。図14に概略を示したように、理論上の転送には、
以下のステップが含まれる。
イト・サイズ、8バイト・サイズ、および64バイト・
サイズが可能であると考えられる。他の実施形態では、
1バイトよりも量が少ない場合にビット転送も可能であ
る。図14に概略を示したように、理論上の転送には、
以下のステップが含まれる。
【0104】ステップS31では、「8バイト」ブロッ
ク境界に達するまで、1バイト・サイズ・ブロックでの
初期転送が実行される。
ク境界に達するまで、1バイト・サイズ・ブロックでの
初期転送が実行される。
【0105】ステップS32では、「64バイト」ブロ
ック境界に達するまで、8バイト・ブロック・サイズで
バイトを転送することができる。
ック境界に達するまで、8バイト・ブロック・サイズで
バイトを転送することができる。
【0106】ステップS33では、転送の終わりに近づ
き、8バイト・ブロック・サイズに戻る必要が生じるま
で、64バイト・ブロックで転送が実行される。
き、8バイト・ブロック・サイズに戻る必要が生じるま
で、64バイト・ブロックで転送が実行される。
【0107】ステップS34では、残りのバイトを1バ
イト・サイズのブロックで転送する必要が生じるまで、
8バイト・ブロックが転送される。
イト・サイズのブロックで転送する必要が生じるまで、
8バイト・ブロックが転送される。
【0108】ステップS35では、残りのバイトが転送
される。
される。
【0109】前述のように、ステップS31より前に最
初のステップを設定することおよび/またはステップS
35より後に最終ステップを設定することによって、ビ
ットごとの転送を行うことができる。
初のステップを設定することおよび/またはステップS
35より後に最終ステップを設定することによって、ビ
ットごとの転送を行うことができる。
【0110】以上のことから、実行される転送のサイズ
が決まっていてソース・アドレスと宛先アドレスが正確
であり、8バイト境界および64バイト境界を基準に分
布されていれば、上記の1つまたは複数ステージの組合
わせは、ムーバ・コントローラ86が容易に決定するこ
とができる。好適なアラインメントがすでに実行されて
いる場合、図9に示した1つまたは複数のステップが省
略できることは明らかである。
が決まっていてソース・アドレスと宛先アドレスが正確
であり、8バイト境界および64バイト境界を基準に分
布されていれば、上記の1つまたは複数ステージの組合
わせは、ムーバ・コントローラ86が容易に決定するこ
とができる。好適なアラインメントがすでに実行されて
いる場合、図9に示した1つまたは複数のステップが省
略できることは明らかである。
【0111】図13に戻ると、いったんステップS23
が決定されると、ステップS24で制御信号の詳細なシ
ーケンスを順番に生成し、ステップS25で転送を実行
することができる。
が決定されると、ステップS24で制御信号の詳細なシ
ーケンスを順番に生成し、ステップS25で転送を実行
することができる。
【0112】前述のように、バス32とバス40との間
の転送方向を決定する必要がある。SBus 32から
入出力バス40へ転送しても、その逆でもよい。
の転送方向を決定する必要がある。SBus 32から
入出力バス40へ転送しても、その逆でもよい。
【0113】多重信号MSを第1のマルチプレクサ21
0および第2のマルチプレクサ230に提供することに
よって、転送方向の制御が実行される。図15は、入出
力バス40からSBus 32へのデータ転送を示す図
である。これを実行するために、第1のマルチプレクサ
210を制御して、アキュムレータ240の出力である
第2の入力を選択する。第2のマルチプレクサ230を
制御して、入出力バス・インターフェース250から第
2の入力228を選択する。
0および第2のマルチプレクサ230に提供することに
よって、転送方向の制御が実行される。図15は、入出
力バス40からSBus 32へのデータ転送を示す図
である。これを実行するために、第1のマルチプレクサ
210を制御して、アキュムレータ240の出力である
第2の入力を選択する。第2のマルチプレクサ230を
制御して、入出力バス・インターフェース250から第
2の入力228を選択する。
【0114】その結果、入出力バス・インターフェース
250で入出力バス40から受け取られた転送されるべ
きバイトが第2のマルチプレクサ230に供給され、今
度はこれがそれらのバイトをシフタ/ローテータ234
に供給する。図6および図7に関してすでに述べたシフ
ト/ローテーションおよび累積プロセスがシフタ/ロー
テータおよびアキュムレータで実行され、アキュムレー
タから出力されたバイトが第1のマルチプレクサ210
に供給される。SBusインターフェース240を介し
てSBus 32へ転送するために保持レジスタ222
へ転送されるデータ・ブロックを形成するために、第1
のマルチプレクサ210からの出力がバッファ216で
バッファリングされる。バッファ212および保持レジ
スタ222は、異なるバス速度およびバス・アクセスの
可用性を考慮に入れるために、入出力バスとSBus
32との間でのデータのバッファリングを可能にする。
250で入出力バス40から受け取られた転送されるべ
きバイトが第2のマルチプレクサ230に供給され、今
度はこれがそれらのバイトをシフタ/ローテータ234
に供給する。図6および図7に関してすでに述べたシフ
ト/ローテーションおよび累積プロセスがシフタ/ロー
テータおよびアキュムレータで実行され、アキュムレー
タから出力されたバイトが第1のマルチプレクサ210
に供給される。SBusインターフェース240を介し
てSBus 32へ転送するために保持レジスタ222
へ転送されるデータ・ブロックを形成するために、第1
のマルチプレクサ210からの出力がバッファ216で
バッファリングされる。バッファ212および保持レジ
スタ222は、異なるバス速度およびバス・アクセスの
可用性を考慮に入れるために、入出力バスとSBus
32との間でのデータのバッファリングを可能にする。
【0115】図15では、ライン201、206、22
6、246、および252は破線で表示されていること
に留意されたい。これは、データが入出力バス40から
SBus 32に転送される場合に、データがこれらの
パスに沿って転送されないことを表している。
6、246、および252は破線で表示されていること
に留意されたい。これは、データが入出力バス40から
SBus 32に転送される場合に、データがこれらの
パスに沿って転送されないことを表している。
【0116】図16は、データ転送がSBus 32と
入出力バス40との間で実行される場合の、代替状況を
例示した図である。この場合、ライン201、206、
226、246、および252は実線で表示されてお
り、これに対してライン254、228、208、22
4、220、および203は破線で表示されていること
に留意されたい。これは、SBus 32から入出力バ
ス40へ情報が転送される際に、データは破線に沿って
流れないことを示している。
入出力バス40との間で実行される場合の、代替状況を
例示した図である。この場合、ライン201、206、
226、246、および252は実線で表示されてお
り、これに対してライン254、228、208、22
4、220、および203は破線で表示されていること
に留意されたい。これは、SBus 32から入出力バ
ス40へ情報が転送される際に、データは破線に沿って
流れないことを示している。
【0117】したがって、図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に供給される。
データは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に供給される。
【0118】したがって、ソース・バスからデータを入
手し、これを宛先バスに出力するための所望のアライン
メントに再アラインメントするために、FIFOバッフ
ァ216と調和して使用されるシフト/累積機構234
〜240について記述してきた。具体的な例では、2つ
のバスはSBus 32と入出力バス40である。ソー
スはこれらバスのうちのいずれか一方、宛先はこれらバ
スのうちの他方とすることができる。ただし本発明は一
般に、どのような好適なバス・プロトコルの下でも動作
可能なバスに適用可能であることを理解されよう。
手し、これを宛先バスに出力するための所望のアライン
メントに再アラインメントするために、FIFOバッフ
ァ216と調和して使用されるシフト/累積機構234
〜240について記述してきた。具体的な例では、2つ
のバスはSBus 32と入出力バス40である。ソー
スはこれらバスのうちのいずれか一方、宛先はこれらバ
スのうちの他方とすることができる。ただし本発明は一
般に、どのような好適なバス・プロトコルの下でも動作
可能なバスに適用可能であることを理解されよう。
【0119】この例では、SBusで使用される本来の
バイト・アラインメントは64バイトであり、この機構
は可能であればどこでも64バイトのバースト転送を使
用できるようにする。本実施例の入出力バスは8バイト
にアラインメントされる。本実施例では、入出力バス転
送は512バイト長さまで可能であり、8バイト境界上
で開始および終了する。ただし他の実施例では、サイズ
の異なるバスの転送が実行できる。第1のモード(DM
A読取りモード)の場合、入出力バスがソースであり、
SBusは宛先である。シフタ/ローテータ234は、
開始ソース・アドレスおよび開始宛先アドレスの相対的
バイト・アラインメントに応じてデータをローテーショ
ンする、8バイトのバレル・シフタである。入出力バス
転送は、ソース・アドレスから読み取る際に使用するこ
とができる。図12を参照すると、転送の始めおよび終
わりに何らかの特別なデータを読み取れることに留意さ
れたい。バイトは、宛先アドレスが8バイトにアライン
メントされるまで、アキュムレータ内で入手される。次
いでこのアキュムレータの内容が、バッファ216に転
送される。その後このバッファの内容は、64バイト・
アドレス境界に達するまで、バイト転送または8バイト
転送を使用してSBusに書き込まれるが、この時点で
64バイトのバースト転送が使用される。
バイト・アラインメントは64バイトであり、この機構
は可能であればどこでも64バイトのバースト転送を使
用できるようにする。本実施例の入出力バスは8バイト
にアラインメントされる。本実施例では、入出力バス転
送は512バイト長さまで可能であり、8バイト境界上
で開始および終了する。ただし他の実施例では、サイズ
の異なるバスの転送が実行できる。第1のモード(DM
A読取りモード)の場合、入出力バスがソースであり、
SBusは宛先である。シフタ/ローテータ234は、
開始ソース・アドレスおよび開始宛先アドレスの相対的
バイト・アラインメントに応じてデータをローテーショ
ンする、8バイトのバレル・シフタである。入出力バス
転送は、ソース・アドレスから読み取る際に使用するこ
とができる。図12を参照すると、転送の始めおよび終
わりに何らかの特別なデータを読み取れることに留意さ
れたい。バイトは、宛先アドレスが8バイトにアライン
メントされるまで、アキュムレータ内で入手される。次
いでこのアキュムレータの内容が、バッファ216に転
送される。その後このバッファの内容は、64バイト・
アドレス境界に達するまで、バイト転送または8バイト
転送を使用してSBusに書き込まれるが、この時点で
64バイトのバースト転送が使用される。
【0120】両方のバスがバースト・モードの場合、ア
キュムレータは2フェーズで動作する。第1フェーズで
は、シフタから入出力データ・ワードxのnバイトを入
手する。第2フェーズでは、入出力データ・ワード(x
+1)から(8−n)バイトを入手する。次いでこのア
キュムレータの内容がFIFOバッファに転送され、即
時に(x+1)からnバイトを入手する、といった具合
である。値nはシフトに関係し、ソース・バスおよび宛
先バス上にある開始アドレスのバイト・オフセットに依
存する。
キュムレータは2フェーズで動作する。第1フェーズで
は、シフタから入出力データ・ワードxのnバイトを入
手する。第2フェーズでは、入出力データ・ワード(x
+1)から(8−n)バイトを入手する。次いでこのア
キュムレータの内容がFIFOバッファに転送され、即
時に(x+1)からnバイトを入手する、といった具合
である。値nはシフトに関係し、ソース・バスおよび宛
先バス上にある開始アドレスのバイト・オフセットに依
存する。
【0121】DMA書込みモードでの動作は、SBus
がソースであり入出力バスが宛先であること以外は同じ
である。SBus読取りは必ず64バイト・バースト上
で開始する。転送の始めと終わりに何らかの特別なバイ
トが読み取られることがある。データはFIFOバッフ
ァ216に読み込まれ、シフタ/ローテータ234およ
びアキュムレータ240を通って進み、入出力バスに書
き込まれる。8バイト・アドレス境界に達するまで個々
のバイト(またはバイトのグループ)が入出力バスに書
き込まれ、この時点で残りが8バイト未満になるまで8
バイトのバースト転送が使用される。その後残りのバイ
トは1バイトずつ転送される。
がソースであり入出力バスが宛先であること以外は同じ
である。SBus読取りは必ず64バイト・バースト上
で開始する。転送の始めと終わりに何らかの特別なバイ
トが読み取られることがある。データはFIFOバッフ
ァ216に読み込まれ、シフタ/ローテータ234およ
びアキュムレータ240を通って進み、入出力バスに書
き込まれる。8バイト・アドレス境界に達するまで個々
のバイト(またはバイトのグループ)が入出力バスに書
き込まれ、この時点で残りが8バイト未満になるまで8
バイトのバースト転送が使用される。その後残りのバイ
トは1バイトずつ転送される。
【0122】ここまで、2つのバス間でバイトを転送す
るための非常に効果的で柔軟な方法について説明してき
た。バイト境界、8バイト境界、および64バイト境界
での転送を参照しながら説明してきたが、転送はその他
の境界でも実行可能であり、バイトのサブユニット、た
とえばビットごとでも実行可能であることが理解されよ
う。
るための非常に効果的で柔軟な方法について説明してき
た。バイト境界、8バイト境界、および64バイト境界
での転送を参照しながら説明してきたが、転送はその他
の境界でも実行可能であり、バイトのサブユニット、た
とえばビットごとでも実行可能であることが理解されよ
う。
【0123】以上、本発明を含むコンピュータ・システ
ムの特定の例示的構成について説明してきたが、本発明
がこうした構成を有するコンピュータ・システムのみに
適用可能なものではないことを理解されよう。
ムの特定の例示的構成について説明してきたが、本発明
がこうした構成を有するコンピュータ・システムのみに
適用可能なものではないことを理解されよう。
【0124】実際、本発明の特定の実施形態について説
明してきたが、添付の特許請求の範囲に定義されている
ように、本発明の精神および範囲を逸脱しなければ、多
くの修正、追加、および/または置換が実行できること
を理解されよう。
明してきたが、添付の特許請求の範囲に定義されている
ように、本発明の精神および範囲を逸脱しなければ、多
くの修正、追加、および/または置換が実行できること
を理解されよう。
【図1】本発明を組み込んだコンピュータ・システムの
例示的構成を示す概略構成図である。
例示的構成を示す概略構成図である。
【図2】図1のシステムのDMAコントローラを示す概
略構成図である。
略構成図である。
【図3】主メモリにおけるコマンド・バッファを示す概
略図である。
略図である。
【図4】ベース・レジスタを示す図である。
【図5】テール・レジスタを示す図である。
【図6】ヘッド・レジスタを示す図である。
【図7】DMAコマンドをDMAコントローラに転送す
るための、図1のコンピュータ・システムの動作を図示
した流れ図である。
るための、図1のコンピュータ・システムの動作を図示
した流れ図である。
【図8】図2のDMAコントローラのDMA転送機構を
示す概略構成図である。
示す概略構成図である。
【図9】図8の機構のシフタ/ローテータを示す概略構
成図である。
成図である。
【図10】図8の機構のアキュムレータを示す概略図で
ある。
ある。
【図11】データを転送するためのソース・バイトおよ
び宛先バイトのアラインメントを示す図である。
び宛先バイトのアラインメントを示す図である。
【図12】シフタ/ローテータおよびアキュムレータの
動作を示す図である。
動作を示す図である。
【図13】データを転送するための制御動作を示す流れ
図である。
図である。
【図14】可能なブロック転送動作を示す図である。
【図15】第1バスと第2バスとの間で転送するため
の、図8の機構の構成図である。
の、図8の機構の構成図である。
【図16】第1バスと第2バスとの間で転送するため
の、図3の機構の構成図である。
の、図3の機構の構成図である。
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 周辺装置
(DMAC) 40 入出力バス 46 周辺装置 48 周辺装置 50 周辺装置
───────────────────────────────────────────────────── フロントページの続き (71)出願人 591064003 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A. (72)発明者 アンドリュ・クロスランド イギリス国・エイチピイ17 8イーエック ス・バッキンガムシャー・ハデンハム・シ アーストック・118
Claims (32)
- 【請求項1】 第1バスと第2バスを含むコンピュータ
・システム用のブリッジであって、第1バスと第2バス
の間に配置されるブリッジにおいて、 第1バスおよび第2バスのうちの一方からバイトを受け
取るために接続された入力と、シフトされたバイトに受
け取ったバイトに関して選択可能なシフトを行う出力と
を有するシフタと、 シフタの出力を受け取るために接続された入力を有し、
シフトされたバイトの選択的な累積を行うアキュムレー
タとを含み、アキュムレータが第1バスおよび第2バス
のうちの他方に渡される再アラインメントされたバイト
を供給する出力を有するブリッジ。 - 【請求項2】 シフタに接続され、受け取ったバイトに
適用されるシフトを制御信号が選択する第1の制御出力
と、アキュムレータに接続され、累積されるシフトされ
たバイトの一部を制御信号が選択する第2の制御出力と
を有する制御論理を含む請求項1に記載のブリッジ。 - 【請求項3】 制御論理が、1動作サイクル中の第1フ
ェーズおよび第2フェーズを決める動作の連続するサイ
クル中にフェーズ信号を供給する出力をさらに有し、シ
フタが動作サイクル中に入力バイト・セットを受け取る
ことが可能な請求項2に記載のブリッジ。 - 【請求項4】 アキュムレータが出力レジスタを含み、
アキュムレータが、 第1フェーズで、シフトされた入力バイト・セット内の
選択された位置の出力を、出力レジスタ内の対応する位
置に登録することによって、再アラインメントされた出
力バイト・セットの累積を完了し、 第2フェーズで、シフトされた入力バイト・セット内の
残りの位置からの出力を、出力レジスタ内の対応する位
置に登録することによって、後続の出力バイト・セット
の累積を開始するように構成される請求項3に記載のブ
リッジ。 - 【請求項5】 1つのバイト・セットが1つのワードを
形成する請求項4に記載のブリッジ。 - 【請求項6】 1つのバイト・セットが1つのワードの
一部を形成する請求項4に記載のブリッジ。 - 【請求項7】 制御論理が、一方のバスから他方のバス
へバイトのバースト転送を行うために、連続するサイク
ルおよびフェーズに対して制御信号を決定するように構
成された請求項4に記載のブリッジ。 - 【請求項8】 バイト・セットをバッファリングするた
めのバッファをさらに含む請求項1に記載のブリッジ。 - 【請求項9】 バイトが第1バスから第2バスへ転送さ
れる場合に、バッファが第1バスとシフタとの間に接続
可能な請求項8に記載のブリッジ。 - 【請求項10】 バイトが第2バスから第1バスへ転送
される場合に、バッファがアキュムレータと第1バスと
の間に接続可能な請求項8に記載のブリッジ。 - 【請求項11】 第1バスからバイトを受け取るために
接続された第1の入力と、アキュムレータからバイトを
受け取るために接続された第2の入力と、バッファにバ
イトを供給するために接続された出力とを有する第1の
マルチプレクサを含む請求項8に記載のブリッジ。 - 【請求項12】 第2バスからバイトを受け取るために
接続された第1の入力と、バッファの出力からバイトを
受け取るために接続された第2の入力と、シフタにバイ
トを供給するために接続された出力とを有する第2のマ
ルチプレクサを含む請求項8に記載のブリッジ。 - 【請求項13】 ブリッジがダイレクト・メモリ・アク
セス・コントローラを形成する請求項1に記載のブリッ
ジ。 - 【請求項14】 第1バスおよび第2バスを含むコンピ
ュータ・システムのためのブリッジであって、第1バス
と第2バスの間に配置されるブリッジにおいて、 第1バスおよび第2バスのうちの一方からのバイトをシ
フトする手段と、 第1バスおよび第2バスのうちの他方に渡される再アラ
インメントされたバイトを形成するためにシフト手段に
よってシフトされたバイトを選択的に累積する手段とを
含むブリッジ。 - 【請求項15】 第1バスと第2バスを含むコンピュー
タ・システム用のダイレクト・メモリ・アクセス・コン
トローラであって、第1バスと第2バスとの間に配置さ
れるダイレクト・メモリ・アクセス・コントローラにお
いて、 第1バスおよび第2バスのうちの一方からバイトを受け
取るために接続された入力と、受け取ったバイトに対し
て選択可能なシフトでシフトされたバイトを提供する出
力とを有するシフタと、 シフタの出力を受け取るために接続された入力を有し、
シフトされたバイトを選択的に累積するアキュムレータ
とを含み、アキュムレータが第1バスおよび第2バスの
うちの他方に渡される再アラインメントされたバイトを
供給する出力を有するダイレクト・メモリ・アクセス・
コントローラ。 - 【請求項16】 第1バス、第2バス、ならびに第1バ
スと第2バスとの間のブリッジを有するコンピュータ・
システムであって、ブリッジが、 第1バスおよび第2バスのうちの一方からバイトを受け
取るために接続された入力と、受け取ったバイトに選択
可能なシフトを与える出力とを有するシフタと、 シフタの出力を受け取るために接続された入力を有し、
シフトされたバイトを選択的に累積するアキュムレータ
とを含み、アキュムレータが第1バスおよび第2バスの
うちの他方に渡される再アラインメントされたバイトを
供給する出力を有するコンピュータ・システム。 - 【請求項17】 ブリッジが、シフタに接続され、受け
取ったバイトに適用されるシフトを選択する制御信号を
与える第1の制御出力と、アキュムレータに接続され、
シフタの出力の一部を選択的に累積する制御信号のため
の第2の制御出力とを有する制御論理を含む請求項16
に記載のコンピュータ・システム。 - 【請求項18】 制御論理が、1動作サイクル中の第1
フェーズおよび第2フェーズを決めるための動作の連続
するサイクル中にフェーズ信号を供給する出力をさらに
有し、シフタが動作サイクル中に入力バイト・セットを
受け取ることが可能な請求項17に記載のコンピュータ
・システム。 - 【請求項19】 一方のバスから他方のバスへ、バイト
のバースト転送を行うために、連続するサイクルおよび
フェーズに対して制御信号を決定するように制御論理が
構成されている請求項18に記載のコンピュータ・シス
テム。 - 【請求項20】 アキュムレータが出力レジスタを含
み、アキュムレータが、 第1フェーズで、シフタによって出力された選択可能な
位置からの出力を、出力レジスタ内の対応する位置に登
録することによって、再アラインメントされた出力バイ
ト・セットの累積を完了し、 第2フェーズで、シフタの出力から、残りの位置からの
出力を、出力レジスタ内の対応する位置に登録すること
によって、後続の再アラインメントされた出力バイト・
セットの累積を開始するように構成される請求項18に
記載のコンピュータ・システム。 - 【請求項21】 バス・ブリッジがバイト・セットをバ
ッファリングするためのバッファをさらに含む請求項1
6に記載のコンピュータ・システム。 - 【請求項22】 バイトが第1バスから第2バスへ転送
される場合に、バッファが第1バスとシフタとの間に接
続可能な請求項21に記載のコンピュータ・システム。 - 【請求項23】 バイトが第2バスから第1バスへ転送
される場合に、バッファがアキュムレータと第1バスと
の間に接続可能な請求項21に記載のコンピュータ・シ
ステム。 - 【請求項24】 第1バスからバイトを受け取るために
接続された第1の入力と、アキュムレータからバイトを
受け取るために接続された第2の入力と、バッファにバ
イトを供給するために接続された出力とを有する第1の
マルチプレクサを含む請求項21に記載のコンピュータ
・システム。 - 【請求項25】 第2バスからバイトを受け取るために
接続された第1の入力と、バッファの出力からバイトを
受け取るために接続された第2の入力と、シフタにバイ
トを供給するために接続された出力とを有する第2のマ
ルチプレクサを含む請求項21に記載のコンピュータ・
システム。 - 【請求項26】 ブリッジがダイレクト・メモリ・アク
セス・コントローラを形成する請求項16に記載のコン
ピュータ・システム。 - 【請求項27】 コンピュータ・システムにおいて第1
バスと第2バスとの間でデータを転送する方法であっ
て、 受け取ったバイトを選択可能にシフトするように、第1
バスおよび第2バスのうちの一方から受け取ったバイト
をシフトするステップと、 第1バスおよび第2バスのうちの他方へ渡される再アラ
インメントされたバイトを供給するために、シフトされ
たバイトの選択的累積を実行するステップとを含む方
法。 - 【請求項28】 連続するサイクルで使用可能であり、
各サイクルで1つのバイト・セットが第1バスおよび第
2バスのうちの一方から受け取られる請求項27に記載
の方法。 - 【請求項29】 サイクルの第1フェーズで、シフトさ
れた入力バイト・セットの選択部分を出力レジスタの対
応する部分に登録することによって、再アラインメント
された出力バイト・セットの累積を完了するステップ
と、 出力レジスタから再アラインメントされた出力バイト・
セットを出力するステップと、 サイクルの第2フェーズで、シフトされた入力バイト・
セットの残りの部分を、出力レジスタの対応する部分に
登録することによって、後続の再配置された出力バイト
・セットの累積を開始するステップとを含む請求項28
に記載の方法。 - 【請求項30】 第1バスから第2バスに転送する場合
は、シフトステップおよび累積ステップより前にバイト
がバッファされ、第2バスから第1バスに転送する場合
は、シフトステップおよび累積ステップの後にバイトが
バッファされる請求項27に記載の方法。 - 【請求項31】 第1バスと第2バスとの間でバイトの
バーストを転送する方法であって、 初期フェーズにおいて、初期出力バイト・セットを形成
するように、最高2サイクルだけシフトされたバイトの
うちの少なくとも選択部分が累積され、 中間フェーズにおいて、中間出力バイト・セットを形成
するように、2サイクルだけシフトされたバイトのうち
の少なくとも選択部分が累積され、 最終フェーズにおいて、最終出力バイト・セットを形成
するように、最高2サイクルだけシフトされたバイトの
うちの少なくとも選択部分が累積される請求項27に記
載の方法。 - 【請求項32】 第1バスと第2バスとの間でバイトの
バーストを転送する方法であって、効率的なブロック転
送により再アラインメントを達成するために、ブロック
転送が、 選択されたビットの初期転送フェーズと、 選択されたバイトの初期転送フェーズと、 選択されたバイト・ブロックの初期転送フェーズと、 ワードのサブブロックの初期転送フェーズと、 ワードのブロック転送フェーズと、 ワードのサブブロック・ブロックの最終転送フェーズ
と、 選択されたバイト・ブロックの最終転送フェーズと、 選択されたバイトの最終転送フェーズと、 選択されたビットの最終転送フェーズとの中の少なくと
も1つを含む請求項27に記載の方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US09/243,169 US6330631B1 (en) | 1999-02-03 | 1999-02-03 | Data alignment between buses |
| US09/243169 | 1999-02-03 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2000267989A true JP2000267989A (ja) | 2000-09-29 |
Family
ID=22917613
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000026826A Pending JP2000267989A (ja) | 1999-02-03 | 2000-02-03 | バス間でのデータのアラインメント |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US6330631B1 (ja) |
| EP (1) | EP1026597B1 (ja) |
| JP (1) | JP2000267989A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008033721A (ja) * | 2006-07-31 | 2008-02-14 | Matsushita Electric Ind Co Ltd | Dma転送制御装置 |
| JP2012123717A (ja) * | 2010-12-10 | 2012-06-28 | Mitsubishi Electric Corp | データ処理装置 |
Families Citing this family (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| ITTO20001117A1 (it) * | 2000-11-30 | 2002-05-30 | Cit Alcatel | Interfaccia perfezionata per reti di telecomunicazione a gerarchia sincrona. |
| CA2445960A1 (en) * | 2001-02-21 | 2002-12-19 | Amnis Corporation | Method and apparatus for labeling and analyzing cellular components |
| US6820186B2 (en) * | 2001-03-26 | 2004-11-16 | Sun Microsystems, Inc. | System and method for building packets |
| US7099345B2 (en) * | 2001-11-27 | 2006-08-29 | Sun Microsystems, Inc. | Method and system for buffering a data packet for transmission to a network |
| US7412584B2 (en) * | 2004-05-03 | 2008-08-12 | Intel Corporation | Data alignment micro-architecture systems and methods |
| US20060050722A1 (en) * | 2004-09-03 | 2006-03-09 | James Bury | Interface circuitry for a receive ring buffer of an as fabric end node device |
| DE102004057410B4 (de) | 2004-11-26 | 2015-11-12 | Robert Bosch Gmbh | Anordnung mit einem Schnittstellenmodul und Schnittstellenmodul |
| JP2009009186A (ja) * | 2007-06-26 | 2009-01-15 | Nec Electronics Corp | Dma転送制御装置及びdma転送方法 |
| IL187038A0 (en) * | 2007-10-30 | 2008-02-09 | Sandisk Il Ltd | Secure data processing for unaligned data |
| KR20110050665A (ko) * | 2008-08-06 | 2011-05-16 | 아스펜 액퀴지션 코포레이션 | 정지가능하고 재시작가능한 dma 엔진 |
| US8495271B2 (en) * | 2010-08-04 | 2013-07-23 | International Business Machines Corporation | Injection of I/O messages |
| US9336029B2 (en) | 2010-08-04 | 2016-05-10 | International Business Machines Corporation | Determination via an indexed structure of one or more partitionable endpoints affected by an I/O message |
| US20120036302A1 (en) | 2010-08-04 | 2012-02-09 | International Business Machines Corporation | Determination of one or more partitionable endpoints affected by an i/o message |
| US8549202B2 (en) | 2010-08-04 | 2013-10-01 | International Business Machines Corporation | Interrupt source controller with scalable state structures |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| ATE180907T1 (de) * | 1991-10-29 | 1999-06-15 | Advanced Micro Devices Inc | Arithmetik-logik-einheit |
| US5420815A (en) * | 1991-10-29 | 1995-05-30 | Advanced Micro Devices, Inc. | Digital multiplication and accumulation system |
| US5517627A (en) * | 1992-09-18 | 1996-05-14 | 3Com Corporation | Read and write data aligner and method |
| US5646874A (en) * | 1994-12-21 | 1997-07-08 | Vlsi Technology, Inc. | Multiplication/multiplication-accumulation method and computing device |
| US5701517A (en) * | 1994-12-22 | 1997-12-23 | Cirrus Logic, Inc. | Pipelined alignment shifter and method for universal bit field boundary alignment |
| US5694556A (en) | 1995-06-07 | 1997-12-02 | International Business Machines Corporation | Data processing system including buffering mechanism for inbound and outbound reads and posted writes |
| US5835788A (en) * | 1996-09-18 | 1998-11-10 | Electronics For Imaging | System for transferring input/output data independently through an input/output bus interface in response to programmable instructions stored in a program memory |
| US6044207A (en) | 1997-03-21 | 2000-03-28 | Adaptec, Inc. | Enhanced dual port I/O bus bridge |
| US6128669A (en) | 1997-09-30 | 2000-10-03 | Compaq Computer Corporation | System having a bridge with distributed burst engine to decouple input/output task from a processor |
| US6226704B1 (en) | 1998-12-01 | 2001-05-01 | Silicon Integrated Systems Corporation | Method and apparatus for performing bus transactions orderly and concurrently in a bus bridge |
-
1999
- 1999-02-03 US US09/243,169 patent/US6330631B1/en not_active Expired - Lifetime
-
2000
- 2000-01-21 EP EP00300446A patent/EP1026597B1/en not_active Expired - Lifetime
- 2000-02-03 JP JP2000026826A patent/JP2000267989A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008033721A (ja) * | 2006-07-31 | 2008-02-14 | Matsushita Electric Ind Co Ltd | Dma転送制御装置 |
| JP2012123717A (ja) * | 2010-12-10 | 2012-06-28 | Mitsubishi Electric Corp | データ処理装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| EP1026597A3 (en) | 2005-04-20 |
| EP1026597A2 (en) | 2000-08-09 |
| EP1026597B1 (en) | 2011-11-02 |
| US6330631B1 (en) | 2001-12-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2000267987A (ja) | ダイレクト・メモリ・アクセス制御 | |
| CN1093963C (zh) | 减少在两个相互异步总线之间数据的同步传送中的累积时间延迟 | |
| 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 | |
| JP5026660B2 (ja) | 直接メモリアクセス(dma)転送バッファプロセッサ | |
| US20080201496A1 (en) | Reduced pin count interface | |
| JPH04308956A (ja) | 受信バッファ | |
| JPH0775016B2 (ja) | データ処理システム及びデータ通信バス・システム | |
| JP6602579B2 (ja) | 半導体装置およびシステム | |
| US7035956B2 (en) | Transmission control circuit, reception control circuit, communications control circuit, and communications control unit | |
| WO2001006378A1 (en) | A master/slave communication system | |
| US7698475B2 (en) | DMA transfer control apparatus for performing direct memory access transfer from a transfer source to a transfer destination | |
| KR20080012233A (ko) | 버스트 메모리 액세스를 제어하는 메모리 인터페이스, 및그를 제어하는 방법 | |
| JP2000029826A (ja) | 多重レベルキャッシングを有する3ポ―トfifoデ―タバッファ | |
| JP2011524038A (ja) | 複数のプロセスからメモリ領域へのアクセスを制御する方法、及び、本方法を実現するためのメッセージメモリを備えた通信モジュール | |
| US20070156937A1 (en) | Data transfer in multiprocessor system | |
| US20060018176A1 (en) | Mark/re-read and mark/re-write operations in a multi-queue first-in first-out memory system | |
| US8639860B2 (en) | Data transfer system and data transfer method | |
| US7457901B2 (en) | Microprocessor apparatus and method for enabling variable width data transfers | |
| US7882322B2 (en) | Early directory access of a double data rate elastic interface | |
| US7779083B2 (en) | Message transmitting queue and associated method | |
| JP5587530B2 (ja) | エンジン・プロセッサ連携システム及び連携方法 | |
| JP3201439B2 (ja) | ダイレクト・メモリ・アクセス・制御回路 | |
| JPH1063569A (ja) | 主メモリデータ書込み装置 | |
| JP5811544B2 (ja) | 集積装置、情報処理システム、および、処理方法 |