JP2003108513A - ハードウェア・チェーン・プル - Google Patents
ハードウェア・チェーン・プルInfo
- Publication number
- JP2003108513A JP2003108513A JP2002175728A JP2002175728A JP2003108513A JP 2003108513 A JP2003108513 A JP 2003108513A JP 2002175728 A JP2002175728 A JP 2002175728A JP 2002175728 A JP2002175728 A JP 2002175728A JP 2003108513 A JP2003108513 A JP 2003108513A
- Authority
- JP
- Japan
- Prior art keywords
- pointer
- buffer
- local memory
- controller
- memory
- 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; CALCULATING OR 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Memory System (AREA)
- Information Transfer Systems (AREA)
Abstract
(57)【要約】
【課題】 チェーン・バッファをシステム・メモリから
ローカル・メモリにコピーして大きな分散・集積(scat
ter-gather)リストを与えること。 【解決手段】 本発明によるコントローラ(104)
は、DMAエンジンとプロセッサと回路とを有する。D
MAエンジン(124)は、システム・メモリからロー
カル・メモリへのコピーを行う。プロセッサは、ローカ
ル・メモリに書き込まれているメッセージを処理する。
回路は、プロセッサとは独立に動作することが可能で、
(i)第1のポインタを有する前記メッセージに関して
前記ローカル・メモリへの書込みをモニタし、(ii)
非ゼロ値を有する第1のポインタに応答して第1のポイ
ンタによって識別される第1のバッファをコピーするよ
うにDMAエンジンをプログラムする。
ローカル・メモリにコピーして大きな分散・集積(scat
ter-gather)リストを与えること。 【解決手段】 本発明によるコントローラ(104)
は、DMAエンジンとプロセッサと回路とを有する。D
MAエンジン(124)は、システム・メモリからロー
カル・メモリへのコピーを行う。プロセッサは、ローカ
ル・メモリに書き込まれているメッセージを処理する。
回路は、プロセッサとは独立に動作することが可能で、
(i)第1のポインタを有する前記メッセージに関して
前記ローカル・メモリへの書込みをモニタし、(ii)
非ゼロ値を有する第1のポインタに応答して第1のポイ
ンタによって識別される第1のバッファをコピーするよ
うにDMAエンジンをプログラムする。
Description
【0001】
【発明の属する技術分野】本発明は、広くは入出力処理
方法及び/又はアーキテクチャに関し、更に詳しくは、
チェーン・バッファをシステム・メモリからローカル・
メモリにコピーして大きな分散・集積(scatter-gathe
r)リストを与えることに関する。
方法及び/又はアーキテクチャに関し、更に詳しくは、
チェーン・バッファをシステム・メモリからローカル・
メモリにコピーして大きな分散・集積(scatter-gathe
r)リストを与えることに関する。
【0002】
【従来の技術】従来型のコンピュータは、リクエスト・
メッセージをホスト又はシステム・メモリにおいて構築
することによって入出力(I/O)処理を実行する。そ
して、メッセージは、実際のI/Oデータ転送を実行す
るインテリジェントI/Oプロトコル・コントローラに
送られる。I/Oデータ転送は、小さなブロックI/O
メッセージを実現することによって、より効率化するこ
とができるのが一般的である。結果的に、リクエスト・
メッセージによっては、転送されるべきデータをすべて
含むことができないものが生じる。
メッセージをホスト又はシステム・メモリにおいて構築
することによって入出力(I/O)処理を実行する。そ
して、メッセージは、実際のI/Oデータ転送を実行す
るインテリジェントI/Oプロトコル・コントローラに
送られる。I/Oデータ転送は、小さなブロックI/O
メッセージを実現することによって、より効率化するこ
とができるのが一般的である。結果的に、リクエスト・
メッセージによっては、転送されるべきデータをすべて
含むことができないものが生じる。
【0003】リクエスト・メッセージは、リクエスト・
メッセージがデータの1又は複数のバッファを転送する
ことを可能にする関連する分散・集積(SG)リストを
有しうる。SGリストは、リクエスト・メッセージに適
合しない場合には、そのリクエスト・メッセージにリン
クされている1又は複数のチェーン・バッファに記憶さ
れるのが通常である。それぞれのチェーン・バッファ
は、SGセグメントである。それぞれのSGセグメント
は、1又は複数のSG要素を含む。それぞれのSG要素
は、転送されるべきデータを含むシステム・メモリの中
のデータ・バッファを指している。SG要素は、データ
・バッファのアドレスと長さとを含む。I/Oプロトコ
ル・コントローラは、I/O動作のためにチェーン・バ
ッファが要求される場合には、2つの選択肢を有する。
I/Oプロトコル・コントローラは、システム・メモリ
に記憶されているSG要素に基づいて、直接メモリアク
セス(DMA)動作を制御することができる。あるい
は、I/Oプロトコル・コントローラは、チェーン・バ
ッファの全体をローカル・メモリにコピーし、そのコピ
ーに基づいてDMA動作を実行することができる。
メッセージがデータの1又は複数のバッファを転送する
ことを可能にする関連する分散・集積(SG)リストを
有しうる。SGリストは、リクエスト・メッセージに適
合しない場合には、そのリクエスト・メッセージにリン
クされている1又は複数のチェーン・バッファに記憶さ
れるのが通常である。それぞれのチェーン・バッファ
は、SGセグメントである。それぞれのSGセグメント
は、1又は複数のSG要素を含む。それぞれのSG要素
は、転送されるべきデータを含むシステム・メモリの中
のデータ・バッファを指している。SG要素は、データ
・バッファのアドレスと長さとを含む。I/Oプロトコ
ル・コントローラは、I/O動作のためにチェーン・バ
ッファが要求される場合には、2つの選択肢を有する。
I/Oプロトコル・コントローラは、システム・メモリ
に記憶されているSG要素に基づいて、直接メモリアク
セス(DMA)動作を制御することができる。あるい
は、I/Oプロトコル・コントローラは、チェーン・バ
ッファの全体をローカル・メモリにコピーし、そのコピ
ーに基づいてDMA動作を実行することができる。
【0004】図1を参照すると、リクエスト・メッセー
ジ10、12、14及び16が、関連するチェーン・バ
ッファ18、20、22及び24とリプライ・メッセー
ジ26及び28と共に、図解されている。リクエスト・
メッセージ10、14及び16は、チェーン・バッファ
18−24の使用を必要とするが、リクエスト・メッセ
ージ12はそういうことはない。リクエスト・メッセー
ジ10は、チェーン・バッファを必要とする場合には、
特定のチェーン・バッファ18を識別するポインタ30
を含む。チェーン・バッファ18は、チェーン・バッフ
ァ18それ自体をチェーン・バッファ20にリンクする
他のポインタ32を有するように示されている。
ジ10、12、14及び16が、関連するチェーン・バ
ッファ18、20、22及び24とリプライ・メッセー
ジ26及び28と共に、図解されている。リクエスト・
メッセージ10、14及び16は、チェーン・バッファ
18−24の使用を必要とするが、リクエスト・メッセ
ージ12はそういうことはない。リクエスト・メッセー
ジ10は、チェーン・バッファを必要とする場合には、
特定のチェーン・バッファ18を識別するポインタ30
を含む。チェーン・バッファ18は、チェーン・バッフ
ァ18それ自体をチェーン・バッファ20にリンクする
他のポインタ32を有するように示されている。
【0005】従来型のI/Oプロトコル・コントローラ
は、一度に1つのSG要素に対して動作する。従来型の
チェーン・バッファは、容易に、10個までの単純なS
G要素に対応することができる。システム・メモリに存
在するチェーン・バッファの中のSG要素にアクセスす
るには、I/Oプロトコル・コントローラは、共有され
ているシステム・バスを介してデータにアクセスするこ
とに伴う待ち時間(呼び出し時間、レイテンシ)を負担
しなければならない。更に、SG要素へのそのようなア
クセスは、それぞれが、共有バスの利用可能な帯域幅を
減少させ、システム全体のパフォーマンスを低下させ
る。
は、一度に1つのSG要素に対して動作する。従来型の
チェーン・バッファは、容易に、10個までの単純なS
G要素に対応することができる。システム・メモリに存
在するチェーン・バッファの中のSG要素にアクセスす
るには、I/Oプロトコル・コントローラは、共有され
ているシステム・バスを介してデータにアクセスするこ
とに伴う待ち時間(呼び出し時間、レイテンシ)を負担
しなければならない。更に、SG要素へのそのようなア
クセスは、それぞれが、共有バスの利用可能な帯域幅を
減少させ、システム全体のパフォーマンスを低下させ
る。
【0006】共有されているシステム・バスの利用を減
少させ、SG要素へのアクセスに付随するレイテンシを
短縮するには、チェーン・バッファ全体を、単一のDM
A動作を用いてローカル・メモリへコピーすることがで
きる。チェーン・バッファ全体をコピーすることが望ま
しい理由は、共有システム・バスを利用する方がより効
率的であり(すなわち、単一の共有システム・バス・ト
ランザクションを用いて、約10個のSG要素をローカ
ル・メモリの中に入れることができる)、それ以降のS
G要素のアクセス・レイテンシが短縮されるからであ
る。しかし、チェーン・バッファをローカル・メモリに
コピーすると、新たな問題が引き起こされる。第1に、
DMA動作は、通常、オンチップのI/Oプロセッサを
介して制御されるのであるが、コピーのタスクは、それ
以外の動作に関してI/Oプロセッサが有している利用
可能な帯域幅を縮小してしまう。第2に、チェーン・バ
ッファに関係するI/O動作は、チェーン・バッファが
ローカルにコピーされるまでは、開始することができな
いのである。
少させ、SG要素へのアクセスに付随するレイテンシを
短縮するには、チェーン・バッファ全体を、単一のDM
A動作を用いてローカル・メモリへコピーすることがで
きる。チェーン・バッファ全体をコピーすることが望ま
しい理由は、共有システム・バスを利用する方がより効
率的であり(すなわち、単一の共有システム・バス・ト
ランザクションを用いて、約10個のSG要素をローカ
ル・メモリの中に入れることができる)、それ以降のS
G要素のアクセス・レイテンシが短縮されるからであ
る。しかし、チェーン・バッファをローカル・メモリに
コピーすると、新たな問題が引き起こされる。第1に、
DMA動作は、通常、オンチップのI/Oプロセッサを
介して制御されるのであるが、コピーのタスクは、それ
以外の動作に関してI/Oプロセッサが有している利用
可能な帯域幅を縮小してしまう。第2に、チェーン・バ
ッファに関係するI/O動作は、チェーン・バッファが
ローカルにコピーされるまでは、開始することができな
いのである。
【0007】
【発明の概要】本発明は、一般的にDMAエンジンとプ
ロセッサと回路とを有するコントローラに関係してい
る。DMAエンジンは、システム・メモリからローカル
・メモリへのコピーを行うように構成されている。プロ
セッサは、ローカル・メモリに書き込まれているメッセ
ージを処理するように構成されている。回路は、プロセ
ッサとは独立に動作する。回路は、(i)第1のポイン
タを有する前記メッセージに関して前記ローカル・メモ
リへの書込みをモニタし、(ii)非ゼロ値を有する第
1のポインタに応答して第1のポインタによって識別さ
れる第1のバッファをコピーするようにDMAエンジン
をプログラムする。
ロセッサと回路とを有するコントローラに関係してい
る。DMAエンジンは、システム・メモリからローカル
・メモリへのコピーを行うように構成されている。プロ
セッサは、ローカル・メモリに書き込まれているメッセ
ージを処理するように構成されている。回路は、プロセ
ッサとは独立に動作する。回路は、(i)第1のポイン
タを有する前記メッセージに関して前記ローカル・メモ
リへの書込みをモニタし、(ii)非ゼロ値を有する第
1のポインタに応答して第1のポインタによって識別さ
れる第1のバッファをコピーするようにDMAエンジン
をプログラムする。
【0008】本発明の目的、特徴及び効果は、ローカル
・メモリへのチェーン・バッファ・コピーを方向付け、
(i)I/Oプロセッサに要求されるタスクをセーブ
し、(ii)すべてのチェーン・バッファがコピーされ
る前にI/O処理が開始されることを許容し、及び/又
は(iii)すべてのチェーン・バッファがコピーされ
る前にI/Oデータ転送が開始されることを許容する回
路を提供することを含む。
・メモリへのチェーン・バッファ・コピーを方向付け、
(i)I/Oプロセッサに要求されるタスクをセーブ
し、(ii)すべてのチェーン・バッファがコピーされ
る前にI/O処理が開始されることを許容し、及び/又
は(iii)すべてのチェーン・バッファがコピーされ
る前にI/Oデータ転送が開始されることを許容する回
路を提供することを含む。
【0009】
【発明の実施の形態】本発明の上述した及びそれ以外の
目的、特徴及び効果は、以下の詳細な説明と冒頭の特許
請求の範囲と添付の図面とから明らかである。
目的、特徴及び効果は、以下の詳細な説明と冒頭の特許
請求の範囲と添付の図面とから明らかである。
【0010】図2を参照すると、本発明の好適実施例に
よるシステム100のブロック図が、示されている。シ
ステム100は、一般に、コンピュータ・システムとし
て実現される。コンピュータ・システム100は、回路
102と、回路104と、回路106とを備えている。
回路102と回路104とは、バス108を介して結合
されている。回路104と回路106とは別のバス11
0を介して結合される。
よるシステム100のブロック図が、示されている。シ
ステム100は、一般に、コンピュータ・システムとし
て実現される。コンピュータ・システム100は、回路
102と、回路104と、回路106とを備えている。
回路102と回路104とは、バス108を介して結合
されている。回路104と回路106とは別のバス11
0を介して結合される。
【0011】回路102は、システム・メモリとして実
現される。システム・メモリ102は、一般に、コンピ
ュータ・システム100のメイン・メモリ又はホスト・
メモリである。システム・メモリ102は、これらに限
定されることは意図していないが、1若しくは複数のリ
クエスト・メッセージ、1若しくは複数のチェーン・バ
ッファ、及び/又は、1若しくは複数のデータ・バッフ
ァを含む様々な情報を記憶する。
現される。システム・メモリ102は、一般に、コンピ
ュータ・システム100のメイン・メモリ又はホスト・
メモリである。システム・メモリ102は、これらに限
定されることは意図していないが、1若しくは複数のリ
クエスト・メッセージ、1若しくは複数のチェーン・バ
ッファ、及び/又は、1若しくは複数のデータ・バッフ
ァを含む様々な情報を記憶する。
【0012】回路104は、I/Oプロトコル・コント
ローラ・カード又はモジュールとして実現される。I/
Oプロトコル・コントローラ104は、データ転送を通
信するのに用いられるI/Oインターフェース112を
有する。データ転送とは、コンピュータ・システム10
0の内部における及び/又はコンピュータ・システムの
外部にある他の回路(図示せず)とのデータの交換であ
る。I/Oプロトコル・コントローラ104は、一般
に、システム・メモリ102とI/Oインターフェース
112との間でデータを転送するように構成されてい
る。
ローラ・カード又はモジュールとして実現される。I/
Oプロトコル・コントローラ104は、データ転送を通
信するのに用いられるI/Oインターフェース112を
有する。データ転送とは、コンピュータ・システム10
0の内部における及び/又はコンピュータ・システムの
外部にある他の回路(図示せず)とのデータの交換であ
る。I/Oプロトコル・コントローラ104は、一般
に、システム・メモリ102とI/Oインターフェース
112との間でデータを転送するように構成されてい
る。
【0013】I/Oプロトコル・コントローラ104
は、バス108を介してシステム・メモリ102にアク
セスする。バス108は、一般に、コンピュータ・シス
テム100の共有システム・バスである。バス108
は、PCI(Peripheral Component Interconnect)バ
ス標準やVME(Versa Module Europa)バス標準など
に従って実現される。しかし、特定の応用例の設計基準
に合致するように、これ以外のバス標準を実現すること
ができる。
は、バス108を介してシステム・メモリ102にアク
セスする。バス108は、一般に、コンピュータ・シス
テム100の共有システム・バスである。バス108
は、PCI(Peripheral Component Interconnect)バ
ス標準やVME(Versa Module Europa)バス標準など
に従って実現される。しかし、特定の応用例の設計基準
に合致するように、これ以外のバス標準を実現すること
ができる。
【0014】回路106は、ローカル・メモリとして実
現することができる。ローカル・メモリ106は、一般
に、他の情報に加えて、システム・メモリ102からコ
ピーされたリクエスト・メッセージとチェーン・バッフ
ァとを記憶する。ローカル・メモリ106は、バス11
0を介して、I/Oプロトコル・コントローラ104に
結合することができる。バス110は、一般に、回路ボ
ード・レベルの専用バスである。ローカル・バス110
は、ローカル・メモリ106とI/Oプロトコル・コン
トローラ104の回路との間における迅速なデータ交換
を提供することができる。特定の応用例の設計基準に合
致するように、ローカル・バス110のこれ以外の変形
例を実現することもできる。
現することができる。ローカル・メモリ106は、一般
に、他の情報に加えて、システム・メモリ102からコ
ピーされたリクエスト・メッセージとチェーン・バッフ
ァとを記憶する。ローカル・メモリ106は、バス11
0を介して、I/Oプロトコル・コントローラ104に
結合することができる。バス110は、一般に、回路ボ
ード・レベルの専用バスである。ローカル・バス110
は、ローカル・メモリ106とI/Oプロトコル・コン
トローラ104の回路との間における迅速なデータ交換
を提供することができる。特定の応用例の設計基準に合
致するように、ローカル・バス110のこれ以外の変形
例を実現することもできる。
【0015】本発明は、一般に、関連するリクエスト・
メッセージの中に適合させることができないSGセグメ
ント及びSG要素をチェーン・バッファを用いて与える
任意のI/Oプロトコル・コントローラ104に応用す
ることができる。I/Oプロトコル・コントローラ10
4は、リクエスト・メッセージ114Aを、システム・
メモリ102からローカル・メモリ106にコピーす
る。リクエスト・メッセージ114Aをコピーするとい
うタスクは、埋込型I/Oプロセッサ116又は専用ハ
ードウェア(図示せず)を用いて達成することができ
る。リクエスト・メッセージ114Aのローカルなリク
エスト・メッセージ・コピー114Bが利用可能となれ
ば、I/Oプロトコルに依存しリクエスト・メッセージ
・コピー114Bに基づく作業は、I/Oプロセッサ1
16を介して実行される。回路118によって、関連す
るチェーン・バッファ120A及び122Aの存在とは
関係なく、I/Oプロセッサがリクエスト・メッセージ
・コピー114Bに対してI/Oプロトコルに依存する
作業を開始することが可能となる。更に、I/Oプロト
コル・コントローラ104は、オプションであるが、チ
ェーン・バッファ・コピーが完了する前にI/Oデータ
転送が開始されることを可能にするように構成すること
ができ、それによって、I/Oレイテンシが更に短縮さ
れる。
メッセージの中に適合させることができないSGセグメ
ント及びSG要素をチェーン・バッファを用いて与える
任意のI/Oプロトコル・コントローラ104に応用す
ることができる。I/Oプロトコル・コントローラ10
4は、リクエスト・メッセージ114Aを、システム・
メモリ102からローカル・メモリ106にコピーす
る。リクエスト・メッセージ114Aをコピーするとい
うタスクは、埋込型I/Oプロセッサ116又は専用ハ
ードウェア(図示せず)を用いて達成することができ
る。リクエスト・メッセージ114Aのローカルなリク
エスト・メッセージ・コピー114Bが利用可能となれ
ば、I/Oプロトコルに依存しリクエスト・メッセージ
・コピー114Bに基づく作業は、I/Oプロセッサ1
16を介して実行される。回路118によって、関連す
るチェーン・バッファ120A及び122Aの存在とは
関係なく、I/Oプロセッサがリクエスト・メッセージ
・コピー114Bに対してI/Oプロトコルに依存する
作業を開始することが可能となる。更に、I/Oプロト
コル・コントローラ104は、オプションであるが、チ
ェーン・バッファ・コピーが完了する前にI/Oデータ
転送が開始されることを可能にするように構成すること
ができ、それによって、I/Oレイテンシが更に短縮さ
れる。
【0016】I/Oプロトコル・コントローラ104
は、一般に、I/Oインターフェース112とI/Oプ
ロセッサ116と回路118と回路124と回路126
とを備えている。回路118は、チェーン・プル回路と
して実現される。チェーン・プル回路118の動作は、
後で詳述する。回路124は、直接メモリ・アクセス
(DMA)エンジンとして実現することができる。回路
126は、データ経路として実現される。DMAエンジ
ン124は、システム・メモリ102とローカル・メモ
リ106との間で、そして、システム・メモリ102と
データ経路126との間で情報を転送するように構成さ
れている。データ経路126は、I/Oインターフェー
ス112を介してデータを交換するように構成される。
は、一般に、I/Oインターフェース112とI/Oプ
ロセッサ116と回路118と回路124と回路126
とを備えている。回路118は、チェーン・プル回路と
して実現される。チェーン・プル回路118の動作は、
後で詳述する。回路124は、直接メモリ・アクセス
(DMA)エンジンとして実現することができる。回路
126は、データ経路として実現される。DMAエンジ
ン124は、システム・メモリ102とローカル・メモ
リ106との間で、そして、システム・メモリ102と
データ経路126との間で情報を転送するように構成さ
れている。データ経路126は、I/Oインターフェー
ス112を介してデータを交換するように構成される。
【0017】図3を参照すると、チェーン・プル回路1
18の動作方法の流れ図が示されている。チェーン・プ
ル回路118は、一般に、リクエスト・メッセージに関
係する動作を見張るために、ローカル・バス110を調
べる(例えば、ブロック130)。リクエスト・メッセ
ージ(例えば、図2のリクエスト・メッセージ114
A)のダウンロードが検出されると、チェーン・プル回
路118は、第1のチェーン・バッファ120Aを識別
するリクエスト・メッセージ114Aの中のポインタ1
32を捕捉する(例えば、ブロック134)。ポインタ
132は、アドレス値とそのアドレス値をシステム・メ
モリ106と関連させるインジケータ値とを用いて第1
のチェーン・バッファ120Aを識別する。
18の動作方法の流れ図が示されている。チェーン・プ
ル回路118は、一般に、リクエスト・メッセージに関
係する動作を見張るために、ローカル・バス110を調
べる(例えば、ブロック130)。リクエスト・メッセ
ージ(例えば、図2のリクエスト・メッセージ114
A)のダウンロードが検出されると、チェーン・プル回
路118は、第1のチェーン・バッファ120Aを識別
するリクエスト・メッセージ114Aの中のポインタ1
32を捕捉する(例えば、ブロック134)。ポインタ
132は、アドレス値とそのアドレス値をシステム・メ
モリ106と関連させるインジケータ値とを用いて第1
のチェーン・バッファ120Aを識別する。
【0018】チェーン・プル回路118は、ポインタ1
32がゼロ値すなわちチェーン・インジケータの最後を
有しているかどうかをチェックする(例えば、判断ブロ
ック136)。ポインタ132がゼロ値/チェーン・イ
ンジケータの最後を有している場合(例えば、判断ブロ
ック136のYES分岐)には、リクエスト・メッセー
ジ114Aは、関連するチェーン・バッファを全く有さ
ない。従って、チェーン・プル回路118は、更なるリ
クエスト・メッセージを求めてローカル・バス106の
モニタを継続する(例えば、ブロック130)。ポイン
タ132が非ゼロ値を有する、すなわち、チェーンがイ
ンジケータを継続する(例えば、判断ブロック136の
NO分岐)場合には、チェーン・プル回路118は、ロ
ーカル・メモリ106の中へのリクエスト・メッセージ
114Aのコピーが終了するのを待機する(例えば、ブ
ロック138)。
32がゼロ値すなわちチェーン・インジケータの最後を
有しているかどうかをチェックする(例えば、判断ブロ
ック136)。ポインタ132がゼロ値/チェーン・イ
ンジケータの最後を有している場合(例えば、判断ブロ
ック136のYES分岐)には、リクエスト・メッセー
ジ114Aは、関連するチェーン・バッファを全く有さ
ない。従って、チェーン・プル回路118は、更なるリ
クエスト・メッセージを求めてローカル・バス106の
モニタを継続する(例えば、ブロック130)。ポイン
タ132が非ゼロ値を有する、すなわち、チェーンがイ
ンジケータを継続する(例えば、判断ブロック136の
NO分岐)場合には、チェーン・プル回路118は、ロ
ーカル・メモリ106の中へのリクエスト・メッセージ
114Aのコピーが終了するのを待機する(例えば、ブ
ロック138)。
【0019】リクエスト・メッセージのローカル・メモ
リ106へのコピーが終了すると、チェーン・プル回路
118は、DMA動作を開始するようにDMAプログラ
ム124をプログラムする(例えば、ブロック14
0)。DMA動作は、第1のチェーン・バッファ120
Aをローカル・メモリ106の中へコピーする(例え
ば、ブロック142)。DMA動作の間には、チェーン
・プル回路118は、再びローカル・バス110を調べ
て(例えば、ブロック130)、入ってくる第1のチェ
ーン・バッファ120Aが追加的なチェーン・バッファ
(例えば、図2における第2のチェーン・バッファ12
2A)への参照を含むかどうかを判断する。チェーン・
プル回路118が第1のチェーン・バッファ120Aに
おいてチェーン・バッファ・ポインタ144を検出する
場合には、ポインタ144のアドレスが捕捉される(例
えば、ブロック134)。
リ106へのコピーが終了すると、チェーン・プル回路
118は、DMA動作を開始するようにDMAプログラ
ム124をプログラムする(例えば、ブロック14
0)。DMA動作は、第1のチェーン・バッファ120
Aをローカル・メモリ106の中へコピーする(例え
ば、ブロック142)。DMA動作の間には、チェーン
・プル回路118は、再びローカル・バス110を調べ
て(例えば、ブロック130)、入ってくる第1のチェ
ーン・バッファ120Aが追加的なチェーン・バッファ
(例えば、図2における第2のチェーン・バッファ12
2A)への参照を含むかどうかを判断する。チェーン・
プル回路118が第1のチェーン・バッファ120Aに
おいてチェーン・バッファ・ポインタ144を検出する
場合には、ポインタ144のアドレスが捕捉される(例
えば、ブロック134)。
【0020】ポインタ144をチェーン・プル回路11
8によって検査して、ポインタ144がゼロ値/チェー
ン・インジケータの最後を有している場合には(例え
ば、判断ブロック136のYES分岐)、チェーン・プ
ル回路118は、更なるリクエスト・メッセージ及び/
又はチェーン・バッファを求めてローカル・バス110
のモニタを継続する。ポインタ144が非ゼロ値を有す
る、すなわち、チェーンがインジケータを継続する場合
には(例えば、判断ブロック136のNO分岐)、チェ
ーン・プル回路118は、第1のチェーン・バッファ1
20Aのローカル・メモリ106へのコピーが終了する
のを待機する(例えば、ブロック138)。
8によって検査して、ポインタ144がゼロ値/チェー
ン・インジケータの最後を有している場合には(例え
ば、判断ブロック136のYES分岐)、チェーン・プ
ル回路118は、更なるリクエスト・メッセージ及び/
又はチェーン・バッファを求めてローカル・バス110
のモニタを継続する。ポインタ144が非ゼロ値を有す
る、すなわち、チェーンがインジケータを継続する場合
には(例えば、判断ブロック136のNO分岐)、チェ
ーン・プル回路118は、第1のチェーン・バッファ1
20Aのローカル・メモリ106へのコピーが終了する
のを待機する(例えば、ブロック138)。
【0021】チェーン・プル回路118は、ポインタ1
44によって識別される第2のチェーン・バッファ12
2AをダウンロードするようにDMAエンジン124を
プログラムする。ローカル・バス110をモニタし、現
にコピーされているチェーン・バッファからポインタを
捕捉し、非ゼロをチェックするすなわちチェーンがポイ
ンタを継続し、次のチェーン・バッファをダウンロード
するようにDMAをプログラムするというプロセスを見
ることができる。ゼロ・ポインタ/チェーンの最後イン
ジケータは、ローカル・メモリへ現にダウンロードされ
ているチェーン・バッファがリクエスト・メッセージと
関連する最後のチェーン・バッファであることを示す。
44によって識別される第2のチェーン・バッファ12
2AをダウンロードするようにDMAエンジン124を
プログラムする。ローカル・バス110をモニタし、現
にコピーされているチェーン・バッファからポインタを
捕捉し、非ゼロをチェックするすなわちチェーンがポイ
ンタを継続し、次のチェーン・バッファをダウンロード
するようにDMAをプログラムするというプロセスを見
ることができる。ゼロ・ポインタ/チェーンの最後イン
ジケータは、ローカル・メモリへ現にダウンロードされ
ているチェーン・バッファがリクエスト・メッセージと
関連する最後のチェーン・バッファであることを示す。
【0022】ブロック142に戻ると、現在のチェーン
・バッファのローカル・メモリ106へのダウンロード
が終了すると、チェーン・プル回路118は、リクエス
ト・メッセージのポインタ/先にダウンロードされたチ
ェーン・バッファを更新する(例えば、ブロック14
5)。例えば、第1のチェーン・バッファ120Aのダ
ウンロードが終了すると、チェーン・プル回路118
は、リクエスト・メッセージ・コピー144Bにおける
ポインタ132を更新する。ポインタの更新は、一般
に、ポインタ132の中のアドレスをシステム・メモリ
のアドレスからローカル・メモリのアドレスに変更す
る。ローカル・メモリのアドレスは、一般に、ローカル
・メモリ106に記憶されているちょうどダウンロード
された現在のチェーン・バッファ(例えば、チェーン・
バッファ・コピー120Bから)を指示すなわち識別す
る。
・バッファのローカル・メモリ106へのダウンロード
が終了すると、チェーン・プル回路118は、リクエス
ト・メッセージのポインタ/先にダウンロードされたチ
ェーン・バッファを更新する(例えば、ブロック14
5)。例えば、第1のチェーン・バッファ120Aのダ
ウンロードが終了すると、チェーン・プル回路118
は、リクエスト・メッセージ・コピー144Bにおける
ポインタ132を更新する。ポインタの更新は、一般
に、ポインタ132の中のアドレスをシステム・メモリ
のアドレスからローカル・メモリのアドレスに変更す
る。ローカル・メモリのアドレスは、一般に、ローカル
・メモリ106に記憶されているちょうどダウンロード
された現在のチェーン・バッファ(例えば、チェーン・
バッファ・コピー120Bから)を指示すなわち識別す
る。
【0023】チェーン・プル回路118は、ポインタ1
32をローカル・ポインタとしてマークする(例えば、
ブロック145)。例えば、システム・メモリ102に
記憶されているリクエスト・メッセージ114Aは、シ
ステム・ポインタとしてマークされている第1のチェー
ン・バッファ120Aへのポインタを有する。リクエス
ト・メッセージ114がローカル・メモリ106にコピ
ーされるときには、ポインタ132は依然としてシステ
ム・ポインタとしてマークされており、依然としてチェ
ーン・バッファ120Aのシステム・アドレスを含む。
しかし、第1のチェーン・バッファ・コピー120Bが
ローカル・メモリ106に記憶されるならば、ポインタ
132は、システム・メモリにおける第1のチェーン・
バッファ120Aではなく、ローカル・メモリ106に
おける第1のチェーン・バッファ・コピー120Bを指
すように変更される。第1のチェーン・バッファ・コピ
ー120Bのポインタは依然としてシステム・タイプの
ポインタとしてマークされており、第2のチェーン・バ
ッファ122Aのシステム・メモリ・アドレスを含むこ
とに注意すべきである。
32をローカル・ポインタとしてマークする(例えば、
ブロック145)。例えば、システム・メモリ102に
記憶されているリクエスト・メッセージ114Aは、シ
ステム・ポインタとしてマークされている第1のチェー
ン・バッファ120Aへのポインタを有する。リクエス
ト・メッセージ114がローカル・メモリ106にコピ
ーされるときには、ポインタ132は依然としてシステ
ム・ポインタとしてマークされており、依然としてチェ
ーン・バッファ120Aのシステム・アドレスを含む。
しかし、第1のチェーン・バッファ・コピー120Bが
ローカル・メモリ106に記憶されるならば、ポインタ
132は、システム・メモリにおける第1のチェーン・
バッファ120Aではなく、ローカル・メモリ106に
おける第1のチェーン・バッファ・コピー120Bを指
すように変更される。第1のチェーン・バッファ・コピ
ー120Bのポインタは依然としてシステム・タイプの
ポインタとしてマークされており、第2のチェーン・バ
ッファ122Aのシステム・メモリ・アドレスを含むこ
とに注意すべきである。
【0024】チェーン・プル回路118は、一般に、I
/Oプロセッサ116がI/O動作を開始するのに要求
される作業量を減少させる。更に、I/Oプロトコル・
コントローラ104は、(i)リクエスト・メッセージ
のダウンロードの終了と共に直ちに、又は、(ii)す
べてのチェーン・バッファがダウンロードされた後で、
のいずれかの場合に、ダウンロードされたリクエスト・
メッセージをI/Oプロセッサ116に送るように構成
することができる。
/Oプロセッサ116がI/O動作を開始するのに要求
される作業量を減少させる。更に、I/Oプロトコル・
コントローラ104は、(i)リクエスト・メッセージ
のダウンロードの終了と共に直ちに、又は、(ii)す
べてのチェーン・バッファがダウンロードされた後で、
のいずれかの場合に、ダウンロードされたリクエスト・
メッセージをI/Oプロセッサ116に送るように構成
することができる。
【0025】I/Oプロトコル・コントローラ104が
リクエスト・メッセージを直ちに送るように構成されて
いる場合には、I/Oデータ転送は、チェーン・バッフ
ァのダウンロードが終了する前に開始することができ
る。例えば、I/Oデータ経路126は、リクエスト・
メッセージ・コピー114Bにおいて見出されたSG要
素(例えば、ボックス146の中のSG_ELEMEN
T_0)を用いて、DMA動作を開始することができ
る。ポインタSG_ELEMENT_0は、システム・
メモリ102に記憶されているデータ・バッファ148
を識別する。データ・バッファ148は、I/Oインタ
ーフェース112を介してI/Oデータ経路126によ
って与えられるデータを含む。あるいは、データ・バッ
ファ148は、I/Oデータ経路126によってI/O
インターフェース112を介して受信されるデータを記
憶する場所でありうる。データ・バッファ148に対す
るデータ転送が終了すると、I/Oデータ経路126
は、第1のチェーン・バッファ・コピー120Bに記憶
されているSG要素によって識別される他のデータ・バ
ッファ(図示せず)と共に継続する。ポインタ132が
ローカル・タイプのポインタとしてマークされている場
合には、I/Oデータ経路126は、第1のチェーン・
バッファ・コピー120Bは有効であり用いられる容易
ができているという結論に達する。
リクエスト・メッセージを直ちに送るように構成されて
いる場合には、I/Oデータ転送は、チェーン・バッフ
ァのダウンロードが終了する前に開始することができ
る。例えば、I/Oデータ経路126は、リクエスト・
メッセージ・コピー114Bにおいて見出されたSG要
素(例えば、ボックス146の中のSG_ELEMEN
T_0)を用いて、DMA動作を開始することができ
る。ポインタSG_ELEMENT_0は、システム・
メモリ102に記憶されているデータ・バッファ148
を識別する。データ・バッファ148は、I/Oインタ
ーフェース112を介してI/Oデータ経路126によ
って与えられるデータを含む。あるいは、データ・バッ
ファ148は、I/Oデータ経路126によってI/O
インターフェース112を介して受信されるデータを記
憶する場所でありうる。データ・バッファ148に対す
るデータ転送が終了すると、I/Oデータ経路126
は、第1のチェーン・バッファ・コピー120Bに記憶
されているSG要素によって識別される他のデータ・バ
ッファ(図示せず)と共に継続する。ポインタ132が
ローカル・タイプのポインタとしてマークされている場
合には、I/Oデータ経路126は、第1のチェーン・
バッファ・コピー120Bは有効であり用いられる容易
ができているという結論に達する。
【0026】図4を参照すると、データ転送を実行する
方法の流れ図が示されている。この方法は、リクエスト
・メッセージをローカル・メモリ106にダウンロード
することによって開始する(例えば、ブロック15
0)。チェーン・プル回路118は、次に、図3に記載
されているように、リクエスト・メッセージと関連する
チェーン・バッファをダウンロードするように、DMA
エンジン124に命令する。すべてのチェーン・バッフ
ァがローカル・メモリ106にコピーされた後で、I/
Oプロセッサ116は、リクエスト・メッセージのプロ
トコル依存性に対して作用する(例えば、ブロック15
4)。次に、I/Oデータ経路126は、一般に、リク
エスト・メッセージによって定義されるように、データ
転送を実行する(例えば、ブロック156)。
方法の流れ図が示されている。この方法は、リクエスト
・メッセージをローカル・メモリ106にダウンロード
することによって開始する(例えば、ブロック15
0)。チェーン・プル回路118は、次に、図3に記載
されているように、リクエスト・メッセージと関連する
チェーン・バッファをダウンロードするように、DMA
エンジン124に命令する。すべてのチェーン・バッフ
ァがローカル・メモリ106にコピーされた後で、I/
Oプロセッサ116は、リクエスト・メッセージのプロ
トコル依存性に対して作用する(例えば、ブロック15
4)。次に、I/Oデータ経路126は、一般に、リク
エスト・メッセージによって定義されるように、データ
転送を実行する(例えば、ブロック156)。
【0027】図5を参照すると、データ転送を実行する
別の方法が示されている。この方法は、一般に、リクエ
スト・メッセージをローカル・メモリ106にダウンロ
ードすることによって開始する(例えば、ブロック16
0)。リクエスト・メッセージがコピーされた後で、し
かし、すべてのチェーン・バッファがローカル・メモリ
106にコピーされる前に、I/Oプロセッサ116
は、リクエスト・メッセージのプロトコル依存性に対し
て作用する(例えば、ブロック162)。同様に、リク
エスト・メッセージがローカル・メモリ106にコピー
されると、I/Oデータ経路126は、リクエスト・メ
ッセージ・コピー114Bの中の情報とポインタSG_
ELEMENT_0とを用いたデータ転送でありうる
(例えば、ブロック164)。
別の方法が示されている。この方法は、一般に、リクエ
スト・メッセージをローカル・メモリ106にダウンロ
ードすることによって開始する(例えば、ブロック16
0)。リクエスト・メッセージがコピーされた後で、し
かし、すべてのチェーン・バッファがローカル・メモリ
106にコピーされる前に、I/Oプロセッサ116
は、リクエスト・メッセージのプロトコル依存性に対し
て作用する(例えば、ブロック162)。同様に、リク
エスト・メッセージがローカル・メモリ106にコピー
されると、I/Oデータ経路126は、リクエスト・メ
ッセージ・コピー114Bの中の情報とポインタSG_
ELEMENT_0とを用いたデータ転送でありうる
(例えば、ブロック164)。
【0028】I/Oデータ経路126がリクエスト・メ
ッセージ・コピーだけを用いて可能な限り多くのデータ
転送を実行すると、リクエスト・メッセージ・コピーの
ポインタは、追加的なチェーン・バッファに関してチェ
ックされる(例えば、判断ブロック166)。ポインタ
がゼロ値/チェーン・インジケータの最後(例えば、判
断ブロック166のYES分岐)を有する場合には、処
理すべきチェーン・バッファは何も存在せず、データ転
送は完了される。ポインタが非ゼロを有する/チェーン
がポインタを継続する場合には(判断ブロック166の
NO分岐)、ポインタのタイプがチェックされる(判断
ブロック168)。
ッセージ・コピーだけを用いて可能な限り多くのデータ
転送を実行すると、リクエスト・メッセージ・コピーの
ポインタは、追加的なチェーン・バッファに関してチェ
ックされる(例えば、判断ブロック166)。ポインタ
がゼロ値/チェーン・インジケータの最後(例えば、判
断ブロック166のYES分岐)を有する場合には、処
理すべきチェーン・バッファは何も存在せず、データ転
送は完了される。ポインタが非ゼロを有する/チェーン
がポインタを継続する場合には(判断ブロック166の
NO分岐)、ポインタのタイプがチェックされる(判断
ブロック168)。
【0029】ポインタがローカル・ポインタである場合
には、第1のチェーン・バッファ・コピーは、ローカル
・メモリ106の中に既にコピーされている。従って、
I/Oデータ経路126は、チェーン・バッファ・コピ
ーにおいて見出されるSGセグメント及びSG要素を用
いてデータ転送を継続する。第1のチェーン・バッファ
・コピーにおいて定義されているデータ転送が終了する
と、第1のチェーン・バッファ・コピーは、ゼロ値/チ
ェーン・インジケータの最後に関してチェックされる
(例えば、判断ブロック166)。データ転送は、最後
のチェーン・バッファ・コピーがゼロ値/チェーン・イ
ンジケータの最後を伴うポインタを有するまで(判断ブ
ロック166のYES分岐)、ローカル・メモリ106
からの継続的な現在のチェーン・バッファ・コピーを用
いて継続される。
には、第1のチェーン・バッファ・コピーは、ローカル
・メモリ106の中に既にコピーされている。従って、
I/Oデータ経路126は、チェーン・バッファ・コピ
ーにおいて見出されるSGセグメント及びSG要素を用
いてデータ転送を継続する。第1のチェーン・バッファ
・コピーにおいて定義されているデータ転送が終了する
と、第1のチェーン・バッファ・コピーは、ゼロ値/チ
ェーン・インジケータの最後に関してチェックされる
(例えば、判断ブロック166)。データ転送は、最後
のチェーン・バッファ・コピーがゼロ値/チェーン・イ
ンジケータの最後を伴うポインタを有するまで(判断ブ
ロック166のYES分岐)、ローカル・メモリ106
からの継続的な現在のチェーン・バッファ・コピーを用
いて継続される。
【0030】リクエスト・メッセージ・コピー又は任意
の後続のチェーン・バッファ・コピーのポインタがシス
テム・ポインタである場合には、I/Oデータ経路12
6は、ローカル・メモリ106に次のSG要素が存在し
ないためにデータ転送を停止する(ブロック172)。
I/Oデータ経路は、リクエスト・メッセージ・コピー
のポインタ又は現在のチェーン・バッファ・コピーをポ
ーリングする間、待機する(例えば、ブロック17
4)。チェーン・プル回路118がポインタをローカル
・ポインタとしてマークするときには(例えば、図3の
ブロック144)、一般に、次のチェーン・バッファ・
コピーをローカル・メモリ106において用いることが
できる。そして、I/Oデータ経路126はポインタを
ローカルと認識し(例えば、判断ブロック168のYE
Sブロック)、データ転送動作を継続する(例えば、ブ
ロック170)。
の後続のチェーン・バッファ・コピーのポインタがシス
テム・ポインタである場合には、I/Oデータ経路12
6は、ローカル・メモリ106に次のSG要素が存在し
ないためにデータ転送を停止する(ブロック172)。
I/Oデータ経路は、リクエスト・メッセージ・コピー
のポインタ又は現在のチェーン・バッファ・コピーをポ
ーリングする間、待機する(例えば、ブロック17
4)。チェーン・プル回路118がポインタをローカル
・ポインタとしてマークするときには(例えば、図3の
ブロック144)、一般に、次のチェーン・バッファ・
コピーをローカル・メモリ106において用いることが
できる。そして、I/Oデータ経路126はポインタを
ローカルと認識し(例えば、判断ブロック168のYE
Sブロック)、データ転送動作を継続する(例えば、ブ
ロック170)。
【0031】データ転送プロセスのある実施例では、I
/Oデータ経路126は、ポインタが判断ブロック16
8のNO分岐に関してローカルでないときには、データ
転送を停止しない。I/Oデータ経路126は、システ
ム・ポインタを用いて、システム・メモリ102におい
て次のチェーン・バッファを見つける。I/Oデータ経
路126は、従って、次のチェーン・バッファからシス
テム・メモリ102に記憶されているものとして次のS
G要素を読み出す(例えば、ブロック176)。次のS
G要素を有しながら、I/Oデータ経路126は、デー
タ転送を継続する(例えば、ブロック170)。
/Oデータ経路126は、ポインタが判断ブロック16
8のNO分岐に関してローカルでないときには、データ
転送を停止しない。I/Oデータ経路126は、システ
ム・ポインタを用いて、システム・メモリ102におい
て次のチェーン・バッファを見つける。I/Oデータ経
路126は、従って、次のチェーン・バッファからシス
テム・メモリ102に記憶されているものとして次のS
G要素を読み出す(例えば、ブロック176)。次のS
G要素を有しながら、I/Oデータ経路126は、デー
タ転送を継続する(例えば、ブロック170)。
【0032】図2に戻ると、最後のチェーン・バッファ
がダウンロードされる前に開始されたデータ転送の例示
的な図解が示されている。データ・バッファ148をフ
ェッチするDMA動作は、リクエスト・メッセージ・コ
ピー114BからのポインタSG_ELEMENT_0
を用いて、I/Oデータ経路126を介して開始され
る。この例では、第1のチェーン・バッファ・コピー1
20Bは、ローカル・メモリ106の中に完全にダウン
ロードされうるが、第2のチェーン・バッファ122A
はそうではない。I/Oデータ経路126がポインタS
G_ELEMENT_0と関連するDMAを終了する
と、I/Oデータ経路126は、第1のチェーン・バッ
ファ・コピー120Bに含まれるSG要素と共に継続す
るのであるが、その理由は、第1のチェーン・バッファ
・コピー120Bはローカル・メモリ106において容
易に利用可能であるからである。第2のチェーン・バッ
ファ122Aがローカル・メモリ106にダウンロード
される前に、I/Oデータ経路126が第1のチェーン
・バッファ・コピー120Bの中のすべてのSG要素を
使い尽くす場合には、I/Oデータ経路126は、一般
に、第1のチェーン・バッファ・コピー120Bにおけ
るポインタ144をポーリングする。ポーリングは、ポ
インタ144がローカル・タイプになる(第2のチェー
ン・バッファ122Aがダウンロードを終了したことを
意味する)まで継続する。あるいは、I/Oデータ経路
126は、システム・メモリ102における第2のチェ
ーン・バッファ122Aで見出されるSG要素へのポイ
ンタ144(タイプ・システム)に従うこともある。ど
ちらのプロセスも、一般に、データ転送に関するI/O
レイテンシがチェーン・プル回路118によってどのよ
うに短縮されるのかを図解している。
がダウンロードされる前に開始されたデータ転送の例示
的な図解が示されている。データ・バッファ148をフ
ェッチするDMA動作は、リクエスト・メッセージ・コ
ピー114BからのポインタSG_ELEMENT_0
を用いて、I/Oデータ経路126を介して開始され
る。この例では、第1のチェーン・バッファ・コピー1
20Bは、ローカル・メモリ106の中に完全にダウン
ロードされうるが、第2のチェーン・バッファ122A
はそうではない。I/Oデータ経路126がポインタS
G_ELEMENT_0と関連するDMAを終了する
と、I/Oデータ経路126は、第1のチェーン・バッ
ファ・コピー120Bに含まれるSG要素と共に継続す
るのであるが、その理由は、第1のチェーン・バッファ
・コピー120Bはローカル・メモリ106において容
易に利用可能であるからである。第2のチェーン・バッ
ファ122Aがローカル・メモリ106にダウンロード
される前に、I/Oデータ経路126が第1のチェーン
・バッファ・コピー120Bの中のすべてのSG要素を
使い尽くす場合には、I/Oデータ経路126は、一般
に、第1のチェーン・バッファ・コピー120Bにおけ
るポインタ144をポーリングする。ポーリングは、ポ
インタ144がローカル・タイプになる(第2のチェー
ン・バッファ122Aがダウンロードを終了したことを
意味する)まで継続する。あるいは、I/Oデータ経路
126は、システム・メモリ102における第2のチェ
ーン・バッファ122Aで見出されるSG要素へのポイ
ンタ144(タイプ・システム)に従うこともある。ど
ちらのプロセスも、一般に、データ転送に関するI/O
レイテンシがチェーン・プル回路118によってどのよ
うに短縮されるのかを図解している。
【0033】チェーン・プル回路118は、ハードウェ
アのみの設計として実現することができる(例えば、ハ
ードウェア・チェーン・プル)。ハードウェア・チェー
ン・プル118は、DMAエンジン124の一部とし
て、又は、別個の回路として(図2に示されているよう
に)埋め込まれることが可能である。他の実施例では、
チェーン・プル回路118は、マイクロプロセッサにお
いて、及び/又は、専用のハードウェアと組み合わされ
て実行されるソフトウェア、ファームウェア又はマイク
ロコードとして実現されうる。しかし、望むのであれ
ば、チェーン・プル回路118は、I/Oプロセッサ1
16の外部においてそれとは独立に動作する。I/Oプ
ロセッサ116とチェーン・プル回路118との間の縦
続性のために、I/Oプロセッサ116は、チェーン・
プル回路118がチェーン・バッファのダウンロードを
指示している間、自由に、他のタスクを実行することが
できる。
アのみの設計として実現することができる(例えば、ハ
ードウェア・チェーン・プル)。ハードウェア・チェー
ン・プル118は、DMAエンジン124の一部とし
て、又は、別個の回路として(図2に示されているよう
に)埋め込まれることが可能である。他の実施例では、
チェーン・プル回路118は、マイクロプロセッサにお
いて、及び/又は、専用のハードウェアと組み合わされ
て実行されるソフトウェア、ファームウェア又はマイク
ロコードとして実現されうる。しかし、望むのであれ
ば、チェーン・プル回路118は、I/Oプロセッサ1
16の外部においてそれとは独立に動作する。I/Oプ
ロセッサ116とチェーン・プル回路118との間の縦
続性のために、I/Oプロセッサ116は、チェーン・
プル回路118がチェーン・バッファのダウンロードを
指示している間、自由に、他のタスクを実行することが
できる。
【0034】以上では、その好適実施例を参照しなが
ら、本発明を特定の場合に示し説明したが、当業者であ
れば理解するように、本発明の精神及び範囲から逸脱す
ることなく、形態及び詳細において様々な変更をなすこ
とが可能である。
ら、本発明を特定の場合に示し説明したが、当業者であ
れば理解するように、本発明の精神及び範囲から逸脱す
ることなく、形態及び詳細において様々な変更をなすこ
とが可能である。
【図面の簡単な説明】
【図1】チェーン・バッファを伴う従来型のリクエスト
・メッセージを示すブロック図である。
・メッセージを示すブロック図である。
【図2】本発明を実現するシステムのブロック図であ
る。
る。
【図3】システム・メモリとローカル・メモリとの間に
おける情報のコピー方法の流れ図である。
おける情報のコピー方法の流れ図である。
【図4】データ転送方法の流れ図である。
【図5】別のデータ転送方法の流れ図である。
─────────────────────────────────────────────────────
フロントページの続き
(72)発明者 ジェフリー・エム・ロジャース
アメリカ合衆国コロラド州80918,コロラ
ド・スプリングス,リンクレスト・ドライ
ブ 2520
Fターム(参考) 5B060 AA07 AC18
5B061 BA03 DD09 DD12 GG13 PP02
Claims (20)
- 【請求項1】 コントローラであって、 システム・メモリからローカル・メモリにコピーするよ
うに構成されたDMAエンジンと、 前記ローカル・メモリに書き込まれているメッセージを
処理するように構成されたプロセッサと、 前記プロセッサと独立に動作しており、(i)第1のポ
インタを有する前記メッセージに関して前記ローカル・
メモリへの書込みをモニタし、(ii)非ゼロ値を有す
る前記第1のポインタに応答して前記第1のポインタに
よって識別される第1のバッファをコピーするように前
記DMAエンジンをプログラムする回路と、 を備えていることを特徴とするコントローラ。 - 【請求項2】 請求項1記載のコントローラにおいて、
前記回路は、更に、前記ローカル・メモリにおける前記
第1のバッファのアドレスへの前記第1のポインタを更
新するように構成されていることを特徴とするコントロ
ーラ。 - 【請求項3】 請求項1記載のコントローラにおいて、
前記回路は、更に、(a)第2のポインタを有する前記
第1のバッファに関して前記ローカル・メモリへの書込
みをモニタし、(b)前記非ゼロ値を有する前記第2の
ポインタに応答して前記第2のポインタによって識別さ
れる第2のバッファをコピーするように前記DMAエン
ジンをプログラムするように構成されていることを特徴
とするコントローラ。 - 【請求項4】 請求項3記載のコントローラにおいて、
前記回路は、更に、前記ローカル・メモリにおける前記
第2のバッファのアドレスへの前記第2のポインタを更
新するように構成されていることを特徴とするコントロ
ーラ。 - 【請求項5】 請求項1記載のコントローラにおいて、
前記プロセッサは、前記DMAエンジンが最後のバッフ
ァを前記ローカル・メモリにコピーする前に前記メッセ
ージの処理を開始するように構成されていることを特徴
とするコントローラ。 - 【請求項6】 請求項1記載のコントローラにおいて、
前記メッセージと関連するデータ転送を実行するように
構成されたデータ経路を更に備えていることを特徴とす
るコントローラ。 - 【請求項7】 請求項6記載のコントローラにおいて、
前記データ経路は、更に、前記DMAエンジンが最後の
バッファを前記ローカル・メモリにコピーする前に前記
データ転送を開始するように構成されていることを特徴
とするコントローラ。 - 【請求項8】 請求項7記載のコントローラにおいて、
前記データ経路は、更に、前記データ転送に要求される
現在のバッファが前記ローカル・メモリにコピーされる
まで、前記データ転送を停止するように構成されている
ことを特徴とするコントローラ。 - 【請求項9】 請求項7記載のコントローラにおいて、
前記データ経路は、更に、前記システム・メモリに記憶
されている現在のバッファを用いて前記データ転送を継
続するように構成されていることを特徴とするコントロ
ーラ。 - 【請求項10】 請求項1記載のコントローラにおい
て、 前記回路は、更に、(a)前記ローカル・メモリにおけ
る前記第1のバッファの第1のアドレスへの前記第1の
ポインタを更新し、(b)前記第1のポインタの更新に
応答して前記第1のポインタをローカル・ポインタとし
てマークし、(c)第2のポインタを有する前記第1の
バッファに関して前記ローカル・メモリへの書込みをモ
ニタし、(d)非ゼロ値を有する前記第2のポインタに
応答して前記第2のポインタによって識別される第2の
バッファをコピーするように前記DMAエンジンをプロ
グラムし、(e)前記ローカル・メモリにおける前記第
2のバッファの第2のアドレスへの前記第2のポインタ
を更新し、(f)前記第2のポインタの更新に応答して
前記第2のポインタを前記ローカル・ポインタとしてマ
ークするように構成されており、 前記プロセッサは、更に、前記DMAエンジンが最後の
バッファを前記ローカル・メモリにコピーする前に前記
メッセージの処理を開始するように構成されていること
を特徴とするコントローラ。 - 【請求項11】 コントローラを動作する方法であっ
て、 (A)第1のポインタを有するメッセージに関してロー
カル・メモリへの書込みをモニタするステップと、 (B)前記メッセージを処理するステップと、 (C)非ゼロ値を有する前記第1のポインタに応答し
て、前記第1のポインタによって識別される第1のバッ
ファをシステム・メモリから前記ローカル・メモリにコ
ピーするステップであって、前記コピーは前記処理とは
独立して動作する、ステップと、 を含むことを特徴とする方法。 - 【請求項12】 請求項11記載の方法において、前記
ローカル・メモリにおける前記第1のバッファのアドレ
スへの前記第1のポインタを更新するステップを更に含
むことを特徴とする方法。 - 【請求項13】 請求項11記載の方法において、 第2のポインタを有する前記第1のバッファに関して前
記ローカル・メモリへの書込みをモニタするステップ
と、 前記非ゼロ値を有する前記第2のポインタに応答して前
記第2のポインタによって識別される第2のバッファを
前記システム・メモリから前記ローカル・メモリへコピ
ーするステップと、 を更に含むことを特徴とする方法。 - 【請求項14】 請求項13記載の方法において、前記
ローカル・メモリにおける前記第2のバッファのアドレ
スへの前記第2のポインタを更新するステップを更に含
むことを特徴とする方法。 - 【請求項15】 請求項11記載の方法において、最後
のバッファの前記ローカル・メモリへのコピーを完了す
る前に前記メッセージの処理を開始するステップを含む
ことを特徴とする方法。 - 【請求項16】 請求項11記載の方法において、前記
メッセージの処理に応答して前記メッセージと関連する
データ転送を実行するステップを更に含むことを特徴と
する方法。 - 【請求項17】 請求項16記載の方法において、最後
のバッファを前記ローカル・メモリにコピーする前に前
記データ転送を開始するステップを更に含むことを特徴
とする方法。 - 【請求項18】 請求項17記載の方法において、前記
データ転送に要求される現在のバッファが前記ローカル
・メモリにコピーされるまで前記データ転送を停止する
ステップを更に含むことを特徴とする方法。 - 【請求項19】 請求項17記載の方法において、前記
現在のバッファを前記ローカル・メモリにコピーする前
に前記システム・メモリに記憶されている現在のバッフ
ァを用いて前記データ転送を継続するステップを更に含
むことを特徴とする方法。 - 【請求項20】 コントローラであって、 第1のポインタを有するメッセージに関してローカル・
メモリへの書込みをモニタする手段と、 前記メッセージを処理する処理手段と、 非ゼロ値を有する前記第1のポインタに応答して前記第
1のポインタによって識別される第1のバッファをシス
テム・メモリから前記ローカル・メモリにコピーするコ
ピー手段であって、前記処理手段とは独立に動作するコ
ピー手段と、 を備えていることを特徴とするコントローラ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/957,106 US6718405B2 (en) | 2001-09-20 | 2001-09-20 | Hardware chain pull |
US09/957106 | 2001-09-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2003108513A true JP2003108513A (ja) | 2003-04-11 |
Family
ID=25499077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002175728A Pending JP2003108513A (ja) | 2001-09-20 | 2002-06-17 | ハードウェア・チェーン・プル |
Country Status (3)
Country | Link |
---|---|
US (1) | US6718405B2 (ja) |
EP (1) | EP1296249A3 (ja) |
JP (1) | JP2003108513A (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7054981B2 (en) * | 2001-10-22 | 2006-05-30 | Apple Computer, Inc. | Methods and apparatus for providing automatic high speed data connection in portable device |
US6993598B2 (en) * | 2003-10-09 | 2006-01-31 | International Business Machines Corporation | Method and apparatus for efficient sharing of DMA resource |
US7136943B2 (en) * | 2004-03-18 | 2006-11-14 | International Business Machines Corporation | Method and apparatus for managing context switches using a context switch history table |
US7539787B2 (en) * | 2005-10-18 | 2009-05-26 | International Business Machines Corporation | Destructive DMA lists |
US7376762B2 (en) * | 2005-10-31 | 2008-05-20 | Sigmatel, Inc. | Systems and methods for direct memory access |
US20070294546A1 (en) * | 2006-06-19 | 2007-12-20 | Apple Computer, Inc. | Host device shutdown system |
US20200192842A1 (en) * | 2018-12-14 | 2020-06-18 | Ati Technologies Ulc | Memory request chaining on bus |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01293431A (ja) * | 1988-05-23 | 1989-11-27 | Toshiba Corp | メモリアクセス方式 |
WO1993018461A1 (en) * | 1992-03-09 | 1993-09-16 | Auspex Systems, Inc. | High-performance non-volatile ram protected write cache accelerator system |
US5708849A (en) * | 1994-01-26 | 1998-01-13 | Intel Corporation | Implementing scatter/gather operations in a direct memory access device on a personal computer |
US5619728A (en) * | 1994-10-20 | 1997-04-08 | Dell Usa, L.P. | Decoupled DMA transfer list storage technique for a peripheral resource controller |
US6654853B1 (en) * | 1996-12-23 | 2003-11-25 | Lsi Logic Corporation | Method of secondary to secondary data transfer with mirroring |
WO1999034273A2 (en) * | 1997-12-30 | 1999-07-08 | Lsi Logic Corporation | Automated dual scatter/gather list dma |
US6145045A (en) * | 1998-01-07 | 2000-11-07 | National Semiconductor Corporation | System for sending and receiving data on a Universal Serial Bus (USB) using a memory shared among a number of end points |
US6298391B1 (en) * | 1998-03-13 | 2001-10-02 | Microsoft Corporation | Remote procedure calling with marshaling and unmarshaling of arbitrary non-conformant pointer sizes |
US6360219B1 (en) * | 1998-12-16 | 2002-03-19 | Gemstone Systems, Inc. | Object queues with concurrent updating |
US6782465B1 (en) * | 1999-10-20 | 2004-08-24 | Infineon Technologies North America Corporation | Linked list DMA descriptor architecture |
US6404428B1 (en) * | 2000-11-21 | 2002-06-11 | Ati International Srl | Method and apparatus for selectively providing drawing commands to a graphics processor to improve processing efficiency of a video graphics system |
-
2001
- 2001-09-20 US US09/957,106 patent/US6718405B2/en not_active Expired - Fee Related
-
2002
- 2002-06-13 EP EP02013437A patent/EP1296249A3/en not_active Withdrawn
- 2002-06-17 JP JP2002175728A patent/JP2003108513A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP1296249A3 (en) | 2004-12-08 |
US6718405B2 (en) | 2004-04-06 |
EP1296249A2 (en) | 2003-03-26 |
US20030056037A1 (en) | 2003-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100555257C (zh) | 处理页面复制期间的dma操作的存储控制器和方法 | |
US7500072B2 (en) | Migrating data that is subject to access by input/output devices | |
JP2010541105A (ja) | ファームウェアイメージの更新および管理 | |
US7664900B2 (en) | Multiprocessor system and method for processing memory access | |
EP3614258B1 (en) | Retrieving updated firmware code | |
JP2002245022A (ja) | マルチプロセッサシステムとその共有メモリ制御方法、及び共有メモリ制御プログラム | |
US7165124B2 (en) | Data transfer control system, electronic instrument, program, and data transfer control method | |
JP2004528656A (ja) | 組込み制御環境におけるリモート入出力機能への効率的なアクセスのための方法およびシステム | |
JP2002132741A (ja) | プロセッサ追加方法、計算機及び記録媒体 | |
JP2002503847A (ja) | 2次バスからのメッセージング・ユニットへのアクセス | |
JP2003108513A (ja) | ハードウェア・チェーン・プル | |
JP2001333137A (ja) | 自主動作通信制御装置及び自主動作通信制御方法 | |
JP2007264697A (ja) | 処理システム、プロジェクタ、プログラムおよび情報記憶媒体 | |
JP2000227907A (ja) | リブート制御装置およびリブート制御方法 | |
US20040230734A1 (en) | Data transfer control system, electronic instrument, and data transfer control method | |
JP2556268B2 (ja) | プログラムダウンロード方式 | |
JP2001075810A (ja) | コンピュータシステム、拡張ボードおよびコンピュータシステムにおける拡張ボードの機能更新方法 | |
JP2522412B2 (ja) | プログラマブルコントロ―ラと入出力装置の間の通信方法 | |
JP2009217336A (ja) | 計算機システム、ネットワークブートロードシステム、及び、そのブートロード方法 | |
JP2718690B2 (ja) | 通信制御システム | |
JP4535663B2 (ja) | ステートマシン制御方式およびステートマシン | |
JP2000040057A (ja) | 計算機システム、バッファ制御装置及び転送方法 | |
JPH06324861A (ja) | Cpu制御システム及び制御方法 | |
JP2002055825A (ja) | 自動アクセスシステム | |
JP3096760B2 (ja) | 共通データ参照設定装置及び参照設定方法 |