JPH08297628A - 同次プログラミング環境において(n)のデータマネージャで(n+1)のI/Oチャネルを制御する方法及び装置 - Google Patents
同次プログラミング環境において(n)のデータマネージャで(n+1)のI/Oチャネルを制御する方法及び装置Info
- Publication number
- JPH08297628A JPH08297628A JP8060667A JP6066796A JPH08297628A JP H08297628 A JPH08297628 A JP H08297628A JP 8060667 A JP8060667 A JP 8060667A JP 6066796 A JP6066796 A JP 6066796A JP H08297628 A JPH08297628 A JP H08297628A
- Authority
- JP
- Japan
- Prior art keywords
- channel
- data
- dma
- transfer
- data manager
- 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
-
- 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/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/122—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware performs an I/O function other than control of data transfer
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
(57)【要約】 (修正有)
【課題】 多重タスキングの、多重スレッドされたオペ
レーティングシステムの制御下にあるコンピュータシス
テムの入力/出力性能を改良するための装置と方法であ
る。 【解決手段】 単一のデータマネージャを使用し、最大
メディア帯域幅を維持しながら、チャネル0に対するP
RDテーブルの連続DMA分散収集サブブロックをチャ
ネル1に対するPRDテーブルの連続DMA分散収集サ
ブブロックに連鎖する装置と方法を提供する。DMAブ
ロック転送はI/Oデバイスのバッファメモリからのデ
ータの使用可能度に基づいてスケジュールされて転送さ
れ、これによりメディアまたはネットワークのアイドル
タイムを最小限にするとともにI/Oバスのアイドルタ
イムを最小限にする。これにより、多I/Oバスおよび
これらに関連したデバイスの最大に近い集合体帯域幅が
得られる。
レーティングシステムの制御下にあるコンピュータシス
テムの入力/出力性能を改良するための装置と方法であ
る。 【解決手段】 単一のデータマネージャを使用し、最大
メディア帯域幅を維持しながら、チャネル0に対するP
RDテーブルの連続DMA分散収集サブブロックをチャ
ネル1に対するPRDテーブルの連続DMA分散収集サ
ブブロックに連鎖する装置と方法を提供する。DMAブ
ロック転送はI/Oデバイスのバッファメモリからのデ
ータの使用可能度に基づいてスケジュールされて転送さ
れ、これによりメディアまたはネットワークのアイドル
タイムを最小限にするとともにI/Oバスのアイドルタ
イムを最小限にする。これにより、多I/Oバスおよび
これらに関連したデバイスの最大に近い集合体帯域幅が
得られる。
Description
【0001】
【発明の属する技術分野】本発明は、コンピュータシス
テムの入出力(I/O)動作に関し、より詳しくは、多
I/OチャネルのコンピュータシステムのI/O性能を
最小のコストで改良するための装置と方法に関するもの
である。本発明は、Windows NT、OS/2、
System 7.5、NovellあるいはUnix
のような多重タスク、多重スレッドのオペレーティング
システムにより制御されるコンピュータシステムにおい
て使用することを意図しているものであるが、Wind
owsあるいはDOSのような単一のスレッドおよび/
または単一のタスクのオペレーティングシステムにより
制御されるコンピュータシステムにおいても顕著なコス
ト効果を提供することができるものである。
テムの入出力(I/O)動作に関し、より詳しくは、多
I/OチャネルのコンピュータシステムのI/O性能を
最小のコストで改良するための装置と方法に関するもの
である。本発明は、Windows NT、OS/2、
System 7.5、NovellあるいはUnix
のような多重タスク、多重スレッドのオペレーティング
システムにより制御されるコンピュータシステムにおい
て使用することを意図しているものであるが、Wind
owsあるいはDOSのような単一のスレッドおよび/
または単一のタスクのオペレーティングシステムにより
制御されるコンピュータシステムにおいても顕著なコス
ト効果を提供することができるものである。
【0002】
(関連技術の説明)一般的なコンピュータシステムは通
常は1つまたはそれより多くの中央処理ユニット(CP
Us)、メインメモリおよび1つまたはそれより多くの
I/Oチャネルを有して構成される。I/Oチャネルの
機能はCPUsのメインメモリと記憶ユニットまたはネ
ットワークのインターフェースとの間でデータの転送を
することである。記憶ユニットはデータおよびCPUが
特定のプログラミングのタスクを行う際に使用するプロ
グラムを記憶している。一般的な記憶ユニットとしては
ハードディスクドライブ、CDROMsおよびテープド
ライブなどがある。ネットワークのインターフェースデ
バイスはネットワーク上で他のコンピュータシステムと
の間でデータの転送を行うためのものである。一般的な
ネットワークインターフェースとしては、イーサーネッ
ト、ファイバーチャネル、ATMあるいはFDDIなど
がある。
常は1つまたはそれより多くの中央処理ユニット(CP
Us)、メインメモリおよび1つまたはそれより多くの
I/Oチャネルを有して構成される。I/Oチャネルの
機能はCPUsのメインメモリと記憶ユニットまたはネ
ットワークのインターフェースとの間でデータの転送を
することである。記憶ユニットはデータおよびCPUが
特定のプログラミングのタスクを行う際に使用するプロ
グラムを記憶している。一般的な記憶ユニットとしては
ハードディスクドライブ、CDROMsおよびテープド
ライブなどがある。ネットワークのインターフェースデ
バイスはネットワーク上で他のコンピュータシステムと
の間でデータの転送を行うためのものである。一般的な
ネットワークインターフェースとしては、イーサーネッ
ト、ファイバーチャネル、ATMあるいはFDDIなど
がある。
【0003】最近では、CPUにより実行されるアプリ
ケーションがリアルタイムな、フルモーションのビデオ
を発生するためにマイクロプロセッサ(Intel P
entium、Power PC、およびMIPs R
4400)の高性能の処理パワーを利用する方向に移行
している。このようなアプリケーションをサポートする
ためには、実質的により多くのI/O帯域幅が必要とな
る。一般的には、I/O帯域幅における制限およびCP
Uあるいはビデオカードの処理パワーにおける制限のた
めにフルモーションビデオのウインドウはそのサイズが
ビデオモニタの一部に制限されている。マルチウインド
の、グラフィックスが強調された環境ではマウスのクリ
ック動作やコマンドに対する即時の応答が要求される。
大きなテキストファイルあるいはアプリケーションを表
示するアイコン(ICON)上でマウスのクリックをし
た場合でも、選択されたファイルがI/Oチャネル上に
あるか否かに拘らず、あるいはI/Oデバイスが現在大
量のフルモーションのビデオデータを転送しているか否
かに拘らず、即時の視覚的な結果がでなければならな
い。このような即時の応答に対する要請を高い帯域幅転
送の要求と関連させた場合には、将来的にI/Oコント
ローラによりI/O要求が割込優先されおよび再スケジ
ュールできるように命令することが必要となる。
ケーションがリアルタイムな、フルモーションのビデオ
を発生するためにマイクロプロセッサ(Intel P
entium、Power PC、およびMIPs R
4400)の高性能の処理パワーを利用する方向に移行
している。このようなアプリケーションをサポートする
ためには、実質的により多くのI/O帯域幅が必要とな
る。一般的には、I/O帯域幅における制限およびCP
Uあるいはビデオカードの処理パワーにおける制限のた
めにフルモーションビデオのウインドウはそのサイズが
ビデオモニタの一部に制限されている。マルチウインド
の、グラフィックスが強調された環境ではマウスのクリ
ック動作やコマンドに対する即時の応答が要求される。
大きなテキストファイルあるいはアプリケーションを表
示するアイコン(ICON)上でマウスのクリックをし
た場合でも、選択されたファイルがI/Oチャネル上に
あるか否かに拘らず、あるいはI/Oデバイスが現在大
量のフルモーションのビデオデータを転送しているか否
かに拘らず、即時の視覚的な結果がでなければならな
い。このような即時の応答に対する要請を高い帯域幅転
送の要求と関連させた場合には、将来的にI/Oコント
ローラによりI/O要求が割込優先されおよび再スケジ
ュールできるように命令することが必要となる。
【0004】ごく最近では、パーソナルコンピュータ
(PC)分野において低コストで、高性能のI/Oを提
供するための新しい提案が種々なされている。大きなバ
ッファを有し、秒当たり16メガバイトより多くのDM
A帯域幅を有するIDEチャネルとインターフェースす
ることができる、エンハンスドIDEのディスクドライ
ブが、開発され製造されており、またこれが数年のうち
にPC工業におけるメインストリームになる可能性が高
い。Brad Hoslerは、「A Program
ming Interface for Bus Ma
ster IDEControllers」と称され
る、多重タスク環境におけるシステム性能を改良するた
めのIDEインターフェース使用を提案しており、これ
により上記したDMAが可能なIDEディスクドライブ
に固有の能力が保証される。本明細書中に背景技術とし
て組み入れられる、Hoslerの提案は、I/O転送
データの大きなあるいは小さなブロックがメインメモリ
から分散されあるいは収集されることを許容する単純な
分散/収集機構を特定したものである。この機構は必要
とされる多数のプロセッサ割込およびフルモーションビ
デオをサポートするために必要とされるような、大きな
データのブロックを転送する際におけるI/Oデバイス
のCPUとの相互作用の全体数を削減できる。分散収集
のプログラミングインターフェース使用は当初はIDE
チャネル上のハードディスクを制御するために仕様され
たものであるが、ソフトウェアドライバを書き替えるこ
とでIDEチャネル上の他のタイプの記憶デバイス、他
のタイプのI/Oチャネル上の記憶デバイスあるいは同
様な同次的な分散収集プログラミングインターフェース
を使用しているネットワークのインターフェースデバイ
スにもアクセスできるようになる。
(PC)分野において低コストで、高性能のI/Oを提
供するための新しい提案が種々なされている。大きなバ
ッファを有し、秒当たり16メガバイトより多くのDM
A帯域幅を有するIDEチャネルとインターフェースす
ることができる、エンハンスドIDEのディスクドライ
ブが、開発され製造されており、またこれが数年のうち
にPC工業におけるメインストリームになる可能性が高
い。Brad Hoslerは、「A Program
ming Interface for Bus Ma
ster IDEControllers」と称され
る、多重タスク環境におけるシステム性能を改良するた
めのIDEインターフェース使用を提案しており、これ
により上記したDMAが可能なIDEディスクドライブ
に固有の能力が保証される。本明細書中に背景技術とし
て組み入れられる、Hoslerの提案は、I/O転送
データの大きなあるいは小さなブロックがメインメモリ
から分散されあるいは収集されることを許容する単純な
分散/収集機構を特定したものである。この機構は必要
とされる多数のプロセッサ割込およびフルモーションビ
デオをサポートするために必要とされるような、大きな
データのブロックを転送する際におけるI/Oデバイス
のCPUとの相互作用の全体数を削減できる。分散収集
のプログラミングインターフェース使用は当初はIDE
チャネル上のハードディスクを制御するために仕様され
たものであるが、ソフトウェアドライバを書き替えるこ
とでIDEチャネル上の他のタイプの記憶デバイス、他
のタイプのI/Oチャネル上の記憶デバイスあるいは同
様な同次的な分散収集プログラミングインターフェース
を使用しているネットワークのインターフェースデバイ
スにもアクセスできるようになる。
【0005】(従来装置の説明)図1はバスマスタ分散
収集DMA動作を行うために使用される装置を示してい
る。I/O制御デバイス20は1つまたはそれより多く
の記述子テーブルのポインタのレジスタ22、データマ
ネージャ24、I/Oインターエース26およびCPU
インターフェース28を有している。各データマネージ
ャ24は(i)I/Oデバイス(図示せず)とメインメ
モリ30との間のバスマスタのデータ転送を管理するた
めの専用DMAエンジン、および(ii)I/Oチャネ
ルあるいはインターフェースバス32とプロセッサイン
ターフェース28との間で最大データ転送帯域幅を維持
するために必要とされるバッファメモリ、を有してい
る。I/O制御デバイス20(I/Oコントローラとも
呼ばれる)はブリッジ36を通り、インターフェース2
1を経て、CPU34とメインメモリ30に接続され
る。ブリッジ36はプロセッサのバスの延長を単に提供
するものであり、バッファ動作および全く異なるバス構
造とPCIのようなプロトコルを使用してプロセッサバ
スを延長している。
収集DMA動作を行うために使用される装置を示してい
る。I/O制御デバイス20は1つまたはそれより多く
の記述子テーブルのポインタのレジスタ22、データマ
ネージャ24、I/Oインターエース26およびCPU
インターフェース28を有している。各データマネージ
ャ24は(i)I/Oデバイス(図示せず)とメインメ
モリ30との間のバスマスタのデータ転送を管理するた
めの専用DMAエンジン、および(ii)I/Oチャネ
ルあるいはインターフェースバス32とプロセッサイン
ターフェース28との間で最大データ転送帯域幅を維持
するために必要とされるバッファメモリ、を有してい
る。I/O制御デバイス20(I/Oコントローラとも
呼ばれる)はブリッジ36を通り、インターフェース2
1を経て、CPU34とメインメモリ30に接続され
る。ブリッジ36はプロセッサのバスの延長を単に提供
するものであり、バッファ動作および全く異なるバス構
造とPCIのようなプロトコルを使用してプロセッサバ
スを延長している。
【0006】CPUプログラムとデータ記憶を含む他
に、メインメモリ30はエントリ38を有する1つまた
はそれより多くの物理領域記述子テーブル37を有して
いる。メインメモリ30はI/Oチャネルあるいはイン
ターフェースバス32上のI/Oデバイスとの間で転送
されるDMAデータ40のブロックを記憶する。データ
領域40は、物理領域記述子テーブル37において各エ
ントリ38により特定される、データの連続した倍長語
のリニアDMA転送のブロックを表している。
に、メインメモリ30はエントリ38を有する1つまた
はそれより多くの物理領域記述子テーブル37を有して
いる。メインメモリ30はI/Oチャネルあるいはイン
ターフェースバス32上のI/Oデバイスとの間で転送
されるDMAデータ40のブロックを記憶する。データ
領域40は、物理領域記述子テーブル37において各エ
ントリ38により特定される、データの連続した倍長語
のリニアDMA転送のブロックを表している。
【0007】(従来法の説明)図2はI/O動作を行う
ために使用される従来の方法を示している。ステップ4
2において、CPUはメインメモリ内に物理領域記述子
(PRD)を用意する。各PRDテーブルのエントリは
8バイト長であり、開始アドレスのアドレス識別子およ
び転送されるメモリバッファの転送サイズから構成され
る。PRDテーブルは8192のテーブルエントリまで
含まれ、各エントリは、I/Oチャネルデバイスとメイ
ンメモリとの間で転送される、単一の、連続したデータ
のブロックを特定している。順次の各PRDテーブルエ
ントリはあるデータのブロックがメインメモリ内の利用
可能ないずれかのロケーションとの間のデータブロック
の転送を特定している。
ために使用される従来の方法を示している。ステップ4
2において、CPUはメインメモリ内に物理領域記述子
(PRD)を用意する。各PRDテーブルのエントリは
8バイト長であり、開始アドレスのアドレス識別子およ
び転送されるメモリバッファの転送サイズから構成され
る。PRDテーブルは8192のテーブルエントリまで
含まれ、各エントリは、I/Oチャネルデバイスとメイ
ンメモリとの間で転送される、単一の、連続したデータ
のブロックを特定している。順次の各PRDテーブルエ
ントリはあるデータのブロックがメインメモリ内の利用
可能ないずれかのロケーションとの間のデータブロック
の転送を特定している。
【0008】ステップ44において、CPUはメインメ
モリの物理領域、I/O制御デバイスの記述子テーブル
のポインタのレジスタに対する記述子テーブルを書き込
む。CPUはI/OコントローラのDMA転送方向ビッ
トを書き込み、また適当なI/Oコントローラの割込ビ
ットおよび先の転送から得られたエラーフラグを取り消
す。
モリの物理領域、I/O制御デバイスの記述子テーブル
のポインタのレジスタに対する記述子テーブルを書き込
む。CPUはI/OコントローラのDMA転送方向ビッ
トを書き込み、また適当なI/Oコントローラの割込ビ
ットおよび先の転送から得られたエラーフラグを取り消
す。
【0009】ステップ46において、CPUはI/Oデ
バイスに適当なDMAコマンドを発行する。
バイスに適当なDMAコマンドを発行する。
【0010】ステップ48において、CPUはI/Oコ
ントローラに分散収集の開始のコマンドを書き込む。
ントローラに分散収集の開始のコマンドを書き込む。
【0011】ステップ50、52において、I/Oコン
トローラは、PRDテーブル内のエントリの完全なセッ
トにより特定されたI/Oデバイスとメインメモリとの
間で全ての連続的なDMAブロック転送を順次行うこと
によりバスマスタの分散収集DMA動作を行う。
トローラは、PRDテーブル内のエントリの完全なセッ
トにより特定されたI/Oデバイスとメインメモリとの
間で全ての連続的なDMAブロック転送を順次行うこと
によりバスマスタの分散収集DMA動作を行う。
【0012】ステップ56において、I/Oデバイスは
要求されたデータ転送が完了したことを示す信号を送
る。I/Oコントローラは全ての要求されたデータがI
/Oコントローラの内部FIFOsを通過してメインメ
モリあるいはI/Oデバイスのいずれかに正しく書き込
まれたときにはプロセッサに信号を送る。
要求されたデータ転送が完了したことを示す信号を送
る。I/Oコントローラは全ての要求されたデータがI
/Oコントローラの内部FIFOsを通過してメインメ
モリあるいはI/Oデバイスのいずれかに正しく書き込
まれたときにはプロセッサに信号を送る。
【0013】I/Oコントローラは次のバスマスタのD
MA動作に対して使用される。
MA動作に対して使用される。
【0014】(従来技術の改良が必要な理由)図1にお
いて先に説明した装置は多重I/Oチャネルのバスマス
タの分散収集動作を行うために使用できる。つまり、別
の物理領域記述子(PRD)テーブルを追加すること
で、各I/Oチャネルのプロトコルおよび機能に拘ら
ず、I/Oチャネルおよびその関連したI/Oデバイス
がDMA転送の機能がある限り、I/O制御デバイスに
より管理される各I/Oチャネルに対して、「n」の専
用PRDテーブルが存在する。さらに、「n」のI/O
チャネル上に位置するI/Oデバイスとメインメモリの
間でデータを転送する機能の、1から「n」のデータマ
ネージャが存在する。このようなデータ転送を行うため
の従来技術の構成は、データマネージャを制御するため
に使用される方法がI/Oデバイスとメインメモリとの
間の最大の可能なI/O帯域幅を正しく維持できないこ
とから、各I/Oチャネルに対する単一のデータマネー
ジャのためのものである。図3は、先に説明した従来の
装置と方法を使用する2重チャネル分散収集I/Oコン
トローラのための、単一および二重データのマネージャ
の性能のシナリオを示している。ここで、I/Oデバイ
スのバッファがI/OチャネルDMAにより空になって
いるときにはI/Oチャネルはアイドル(IDLE)状
態である。図3に示されたI/OチャネルはI/Oデバ
イスのメディア速度の2倍の帯域幅で動作するものであ
る。図3のその他の点は当業者であれば自明である、説
明は省略する。
いて先に説明した装置は多重I/Oチャネルのバスマス
タの分散収集動作を行うために使用できる。つまり、別
の物理領域記述子(PRD)テーブルを追加すること
で、各I/Oチャネルのプロトコルおよび機能に拘ら
ず、I/Oチャネルおよびその関連したI/Oデバイス
がDMA転送の機能がある限り、I/O制御デバイスに
より管理される各I/Oチャネルに対して、「n」の専
用PRDテーブルが存在する。さらに、「n」のI/O
チャネル上に位置するI/Oデバイスとメインメモリの
間でデータを転送する機能の、1から「n」のデータマ
ネージャが存在する。このようなデータ転送を行うため
の従来技術の構成は、データマネージャを制御するため
に使用される方法がI/Oデバイスとメインメモリとの
間の最大の可能なI/O帯域幅を正しく維持できないこ
とから、各I/Oチャネルに対する単一のデータマネー
ジャのためのものである。図3は、先に説明した従来の
装置と方法を使用する2重チャネル分散収集I/Oコン
トローラのための、単一および二重データのマネージャ
の性能のシナリオを示している。ここで、I/Oデバイ
スのバッファがI/OチャネルDMAにより空になって
いるときにはI/Oチャネルはアイドル(IDLE)状
態である。図3に示されたI/OチャネルはI/Oデバ
イスのメディア速度の2倍の帯域幅で動作するものであ
る。図3のその他の点は当業者であれば自明である、説
明は省略する。
【0015】歴史的には、I/Oデバイスは、それらの
技術的な性質およびそれらの機構的あるいはネットワー
クの遅延により、I/Oバスの帯域幅の1/16から1
/2でしかデータ転送を支持することができない。多く
のI/Oデバイスは、それらの低いメディアまたはネッ
トワークの帯域幅を補償するために、バッファメモリ
(サイズが32から256Kバイト)を含んでいる。よ
って、デバイスのバッファメモリが遅いメディア速度で
部分的に充填したときでも、I/Oバスの転送は、より
遅いメディアまたはネットワーク性能による速度ではな
くてより早いバスの帯域幅によるデータ速度で行われ
る。しかしながら、バッファスペースがバッファサイズ
よりも大きな転送により使い尽くされた場合には、転送
帯域幅はメディアまたはネットワークの帯域幅に戻って
しまう。さらに、図3においてDMAsを行うための従
来技術では分散収集の動作の間においてI/Oデバイス
のバッファを効率的に利用していない。実際には、単一
のデータマネージャおよび2つのI/Oチャネルで従来
技術の方法を使用した際には大きなメディアのアイドル
時間およびI/Oバスのアイドル時間が生じる。単一の
データマネージャ機構では、他のチャネル上のバスマス
タの動作が開始される前にI/OチャネルのPRDテー
ブルの完了を要求することにより集合I/O性能が悪化
してしまう。二重データマネージャのI/Oコントロー
ラはこのような問題を解決できるが、FIFOsが大き
くまたDMAエンジンが複雑となるので、コスト的に高
くなってしまう。
技術的な性質およびそれらの機構的あるいはネットワー
クの遅延により、I/Oバスの帯域幅の1/16から1
/2でしかデータ転送を支持することができない。多く
のI/Oデバイスは、それらの低いメディアまたはネッ
トワークの帯域幅を補償するために、バッファメモリ
(サイズが32から256Kバイト)を含んでいる。よ
って、デバイスのバッファメモリが遅いメディア速度で
部分的に充填したときでも、I/Oバスの転送は、より
遅いメディアまたはネットワーク性能による速度ではな
くてより早いバスの帯域幅によるデータ速度で行われ
る。しかしながら、バッファスペースがバッファサイズ
よりも大きな転送により使い尽くされた場合には、転送
帯域幅はメディアまたはネットワークの帯域幅に戻って
しまう。さらに、図3においてDMAsを行うための従
来技術では分散収集の動作の間においてI/Oデバイス
のバッファを効率的に利用していない。実際には、単一
のデータマネージャおよび2つのI/Oチャネルで従来
技術の方法を使用した際には大きなメディアのアイドル
時間およびI/Oバスのアイドル時間が生じる。単一の
データマネージャ機構では、他のチャネル上のバスマス
タの動作が開始される前にI/OチャネルのPRDテー
ブルの完了を要求することにより集合I/O性能が悪化
してしまう。二重データマネージャのI/Oコントロー
ラはこのような問題を解決できるが、FIFOsが大き
くまたDMAエンジンが複雑となるので、コスト的に高
くなってしまう。
【0016】最近のI/Oの関連開発およびPC分野に
おける種々の提案があるものの、多重タスク、多重スレ
ッドのオペレーティングシステムにおける最大I/O性
能を合理的なコストで達成するためには別の機能が必要
とされている。本発明は最小のコストでコンピュータシ
ステムのI/O性能をさらに改良することができる装置
及び方法を提供するものである。
おける種々の提案があるものの、多重タスク、多重スレ
ッドのオペレーティングシステムにおける最大I/O性
能を合理的なコストで達成するためには別の機能が必要
とされている。本発明は最小のコストでコンピュータシ
ステムのI/O性能をさらに改良することができる装置
及び方法を提供するものである。
【0017】本発明の目的は、改良されたデータ処理シ
ステムを提供することにある。
ステムを提供することにある。
【0018】本発明の他の目的は、データ処理システム
において改良されたI/O動作を提供することにある。
において改良されたI/O動作を提供することにある。
【0019】本発明の他の目的は、データ処理システム
において改良されたDMA動作を提供することにある。
において改良されたDMA動作を提供することにある。
【0020】本発明の別の目的は、データ処理システム
における、最小のコスト増額で、改良されたDMA性能
を提供することにある。
における、最小のコスト増額で、改良されたDMA性能
を提供することにある。
【0021】
【課題を解決するための手段】本発明は、多重タスク、
多重スレッドのオペレーティングシステムの制御下にあ
るコンピュータシステムの入力/出力性能を改良するた
めの装置と方法を提供するものである。特に、本発明
は、単一のデータマネージャを使用し、最大メディア帯
域幅を維持しながら、チャネル0に対するPRDテーブ
ルの連続DMA分散収集サブブロックをチャネル1に対
するPRDテーブルの連続DMA分散収集サブブロック
に連鎖する装置と方法を提供する。DMAブロック転送
はI/Oデバイスのバッファメモリからのデータの使用
可能度に基づいてスケジュールされて転送され、これに
よりメディアまたはネットワークのアイドルタイムを最
小限にするとともにI/Oバスのアイドルタイムを最小
限にする。これにより、多I/Oバスおよびこれらに関
連したデバイスの最大に近い集合体帯域幅が得られる。
本装置と方法はこのようにして、単一のデータマネージ
ャで相補された2つのI/Oチャネルシステムを有する
従来技術に対して顕著な性能を提供している。本発明の
装置と方法は、より高いプライオリティ要求が同じチャ
ネル上のデバイスあるいは同じデバイス上で出会った場
合に、問題の処理中のDMA要求を与えられたI/Oチ
ャネル上のI/Oデバイスに割込優先するための手段を
提供するものである。
多重スレッドのオペレーティングシステムの制御下にあ
るコンピュータシステムの入力/出力性能を改良するた
めの装置と方法を提供するものである。特に、本発明
は、単一のデータマネージャを使用し、最大メディア帯
域幅を維持しながら、チャネル0に対するPRDテーブ
ルの連続DMA分散収集サブブロックをチャネル1に対
するPRDテーブルの連続DMA分散収集サブブロック
に連鎖する装置と方法を提供する。DMAブロック転送
はI/Oデバイスのバッファメモリからのデータの使用
可能度に基づいてスケジュールされて転送され、これに
よりメディアまたはネットワークのアイドルタイムを最
小限にするとともにI/Oバスのアイドルタイムを最小
限にする。これにより、多I/Oバスおよびこれらに関
連したデバイスの最大に近い集合体帯域幅が得られる。
本装置と方法はこのようにして、単一のデータマネージ
ャで相補された2つのI/Oチャネルシステムを有する
従来技術に対して顕著な性能を提供している。本発明の
装置と方法は、より高いプライオリティ要求が同じチャ
ネル上のデバイスあるいは同じデバイス上で出会った場
合に、問題の処理中のDMA要求を与えられたI/Oチ
ャネル上のI/Oデバイスに割込優先するための手段を
提供するものである。
【0022】先に説明した同次プログラミングのインタ
ーフェース環境においては、本発明は「n」のデータマ
ネージャを使用することで「n+1」のI/Oチャネル
を制御するために容易に拡張されるものである。
ーフェース環境においては、本発明は「n」のデータマ
ネージャを使用することで「n+1」のI/Oチャネル
を制御するために容易に拡張されるものである。
【0023】本発明の装置は、新しい多重タスク、多重
スプレッドのオペレーティングシステムにおいて見出だ
された割込優先スケジュール技術を使用することで、ソ
フトウェアのドライバに対する性能の効率的な方法を提
供するものである。割込優先サポートによって性能のク
リティカルなI/O要求の応答時間を小さくできる。
スプレッドのオペレーティングシステムにおいて見出だ
された割込優先スケジュール技術を使用することで、ソ
フトウェアのドライバに対する性能の効率的な方法を提
供するものである。割込優先サポートによって性能のク
リティカルなI/O要求の応答時間を小さくできる。
【0024】
【発明の実施の形態】以下に、本発明の実施の形態を添
付図面を参照して詳細に説明する。
付図面を参照して詳細に説明する。
【0025】(好適な実施の形態の説明)図4に好まし
い装置を示した。I/O制御デバイス120は単一のデ
ータマネージャ124および2つのIDEのI/Oチャ
ネル127と129をインターフェースするI/Oイン
ターフェース論理126を有している。メインメモリ1
30は、バス/チャネル0とバス/チャネル1上でのバ
スマスタのDMA転送を制御するための2つの物理領域
記述子テーブル137と139を有している。単一のP
RDテーブルは、121と123で示した、各I/Oチ
ャネルに専用となっている。データマネージャ124
は、チャネル間およびPRD間のPRDテーブルのエン
トリにより交互に特定されるDMA分散収集ブロックを
連鎖するために必要な論理を含んでいる。データマネー
ジャはまた、いずれかのチャネル上のターゲットデバイ
スが転送のために準備されたDMAデータを含んでいる
か否かを決定するために必要な論理を有している。PR
Dテーブル137と139は、他のチャネルがデータ転
送のために準備されない場合にはデータマネージャによ
り「スワップ」されない。
い装置を示した。I/O制御デバイス120は単一のデ
ータマネージャ124および2つのIDEのI/Oチャ
ネル127と129をインターフェースするI/Oイン
ターフェース論理126を有している。メインメモリ1
30は、バス/チャネル0とバス/チャネル1上でのバ
スマスタのDMA転送を制御するための2つの物理領域
記述子テーブル137と139を有している。単一のP
RDテーブルは、121と123で示した、各I/Oチ
ャネルに専用となっている。データマネージャ124
は、チャネル間およびPRD間のPRDテーブルのエン
トリにより交互に特定されるDMA分散収集ブロックを
連鎖するために必要な論理を含んでいる。データマネー
ジャはまた、いずれかのチャネル上のターゲットデバイ
スが転送のために準備されたDMAデータを含んでいる
か否かを決定するために必要な論理を有している。PR
Dテーブル137と139は、他のチャネルがデータ転
送のために準備されない場合にはデータマネージャによ
り「スワップ」されない。
【0026】(好ましい方法の説明)図5から図7はI
/O動作を行うために使用される好ましい方法を示して
いる。ステップ142と143において、CPUはメイ
ンメモリ内に物理領域記述子(PRD)を準備する。各
PRDテーブルエントリは8バイト長であり、また開始
アドレスのアドレスポインタおよび転送されるメモリバ
ッファの転送カウントを有している。PRDテーブルは
8192PRDテーブルエントリまで含ませることがで
き、各エントリはI/Oチャネルデバイスとメインメモ
リの間で転送される単一の、連続したデータブロックを
特定している。順次のPRDテーブルエントリは、メモ
リ内のデータブロックがそこから転送されあるいはそこ
へ転送される利用可能な位置を特定している。
/O動作を行うために使用される好ましい方法を示して
いる。ステップ142と143において、CPUはメイ
ンメモリ内に物理領域記述子(PRD)を準備する。各
PRDテーブルエントリは8バイト長であり、また開始
アドレスのアドレスポインタおよび転送されるメモリバ
ッファの転送カウントを有している。PRDテーブルは
8192PRDテーブルエントリまで含ませることがで
き、各エントリはI/Oチャネルデバイスとメインメモ
リの間で転送される単一の、連続したデータブロックを
特定している。順次のPRDテーブルエントリは、メモ
リ内のデータブロックがそこから転送されあるいはそこ
へ転送される利用可能な位置を特定している。
【0027】ステップ144と145において、CPU
はメインメモリの物理領域記述子テーブルの開始アドレ
スをI/O制御デバイスの記述子テーブルのポインタレ
ジスタに書き込む。CPUはI/OコントローラのDM
A転送方向ビットを書き込みまた先の転送の結果により
生じた適当なI/Oコントローラ割込ビットおよびエラ
ーフラグを取り消す。CPUは、書き込まれるテーブル
がアクティブなバスマスタでない限りいつでもいずれか
の記述子テーブルポインタに書き込むことができる。
はメインメモリの物理領域記述子テーブルの開始アドレ
スをI/O制御デバイスの記述子テーブルのポインタレ
ジスタに書き込む。CPUはI/OコントローラのDM
A転送方向ビットを書き込みまた先の転送の結果により
生じた適当なI/Oコントローラ割込ビットおよびエラ
ーフラグを取り消す。CPUは、書き込まれるテーブル
がアクティブなバスマスタでない限りいつでもいずれか
の記述子テーブルポインタに書き込むことができる。
【0028】ステップ146あるいは147(どのチャ
ネルが使用されているかによる)において、CPUは適
当なDMAコマンドをI/Oデバイスに発行する。他の
チャネル上の第2のI/Oデバイスは別のDMAコマン
ドを先に述べたI/OデバイスのDMA動作と同時に発
行する。
ネルが使用されているかによる)において、CPUは適
当なDMAコマンドをI/Oデバイスに発行する。他の
チャネル上の第2のI/Oデバイスは別のDMAコマン
ドを先に述べたI/OデバイスのDMA動作と同時に発
行する。
【0029】ステップ148あるいは149(どのチャ
ネルが使用されているかによる)において、CPUはI
/Oコントローラの1つのチャネルに分散収集の開始コ
マンドを書き込む。第2のI/O制御デバイスは分散収
集の開始コマンドを他のチャネルのバスマスタの動作を
同時に発行する。
ネルが使用されているかによる)において、CPUはI
/Oコントローラの1つのチャネルに分散収集の開始コ
マンドを書き込む。第2のI/O制御デバイスは分散収
集の開始コマンドを他のチャネルのバスマスタの動作を
同時に発行する。
【0030】図5乃至7の残りのステップに示したよう
に、I/Oコントローラは、そのチャネルに対する関連
したPRDテーブルエントリにより特定された、アクテ
ィブなI/Oデバイスから利用可能な第1の連続的なD
MAブロック転送上におけるバスマスタDMA動作を行
う。上記した連続的なDMAブロック転送に続いて、デ
ータマネージャは、他のチャネル上にI/Oデバイスか
らデータが利用可能である場合には、そのチャネルから
のブロックを転送する。データが他のチャネルから利用
可能であり、またデータが元のチャネルから利用可能で
ある場合には、データマネージャは元のチャネルから転
送を行う。転送はこのようにして2つのチャネルの1つ
からデータが利用可能な限り継続し、また現在のPRD
テーブルは使い尽くされない。どのチャネルも転送のた
めの利用可能なデータがない場合には、データマネージ
ャは最初の利用可能なデータ転送の機会を待機する。デ
ータがいずれかのチャネルから利用可能である場合に
は、上記した他のチャネルのDMAフローが再開され
る。
に、I/Oコントローラは、そのチャネルに対する関連
したPRDテーブルエントリにより特定された、アクテ
ィブなI/Oデバイスから利用可能な第1の連続的なD
MAブロック転送上におけるバスマスタDMA動作を行
う。上記した連続的なDMAブロック転送に続いて、デ
ータマネージャは、他のチャネル上にI/Oデバイスか
らデータが利用可能である場合には、そのチャネルから
のブロックを転送する。データが他のチャネルから利用
可能であり、またデータが元のチャネルから利用可能で
ある場合には、データマネージャは元のチャネルから転
送を行う。転送はこのようにして2つのチャネルの1つ
からデータが利用可能な限り継続し、また現在のPRD
テーブルは使い尽くされない。どのチャネルも転送のた
めの利用可能なデータがない場合には、データマネージ
ャは最初の利用可能なデータ転送の機会を待機する。デ
ータがいずれかのチャネルから利用可能である場合に
は、上記した他のチャネルのDMAフローが再開され
る。
【0031】ステップ156あるいは157(どのチャ
ネルが使用されているかによる)において、I/Oデバ
イスは転送の状態を決定し、次いで要求されたデータ転
送が完了したことの信号を送る。I/Oコントローラ
は、全ての要求されたデータがI/Oコントローラの内
部FIFOsを通り、またメインメモリあるいはI/O
デバイスのいずれかに正しく書き込まれたときにはプロ
セッサに信号を送る。他のチャネル上のI/Oデバイス
は元のチャネルによるPRDテーブルの完了に次いで動
作を継続する。
ネルが使用されているかによる)において、I/Oデバ
イスは転送の状態を決定し、次いで要求されたデータ転
送が完了したことの信号を送る。I/Oコントローラ
は、全ての要求されたデータがI/Oコントローラの内
部FIFOsを通り、またメインメモリあるいはI/O
デバイスのいずれかに正しく書き込まれたときにはプロ
セッサに信号を送る。他のチャネル上のI/Oデバイス
は元のチャネルによるPRDテーブルの完了に次いで動
作を継続する。
【0032】(割込優先機構の説明)この好ましい方法
は転送プロセスの間にいつでもいずれかのバスマスタを
割込優先するための機能を提供している。I/Oバスを
横切るデータ転送の前の機構的またはネットワークの遅
延の間の割込優先、およびアクティブなDMAデータ転
送の間の割込優先の、2つのタイプの割込優先が存在す
る。最初の割込優先(つまり、データ転送の前)は図5
のブロック158からの「Yes」がある点で検知され
る。第2の割込優先(つまり、アクティブなDMAデー
タ転送の間)は図6のブロック154と155からの
「Yes」がある点において検知される。割込優先の間
は、プロセス/プログラムは割込優先されたチャネルの
ためにI/O制御デバイスからの分散収集の開始コマン
ドを取り消し、適当な記述子テーブルポインタを評価す
る。
は転送プロセスの間にいつでもいずれかのバスマスタを
割込優先するための機能を提供している。I/Oバスを
横切るデータ転送の前の機構的またはネットワークの遅
延の間の割込優先、およびアクティブなDMAデータ転
送の間の割込優先の、2つのタイプの割込優先が存在す
る。最初の割込優先(つまり、データ転送の前)は図5
のブロック158からの「Yes」がある点で検知され
る。第2の割込優先(つまり、アクティブなDMAデー
タ転送の間)は図6のブロック154と155からの
「Yes」がある点において検知される。割込優先の間
は、プロセス/プログラムは割込優先されたチャネルの
ためにI/O制御デバイスからの分散収集の開始コマン
ドを取り消し、適当な記述子テーブルポインタを評価す
る。
【0033】ポインタが先に実行されたPRDテーブル
からの最後のPRDテーブルエントリのアドレスを含ん
でいる場合には、割込優先は「DMAの前」のタイプと
なる。プロセス/プログラムはアクティブなI/Oデバ
イスのコマンドを取り消し、所望のI/Oデバイスに新
しいDMAを送り、PRDテーブルを書き直し、現在の
記述子ポインタレジスタをセーブし、記述子ポインタレ
ジスタを書き替え、またI/O制御デバイスに新しい分
散収集の開始コマンドを送る。割込優先のPRDテーブ
ルがその転送を完了した場合には、割込優先されたI/
OデバイスへのDMAコマンドの再発行に続いて、先に
セーブされた記述子ポインタレジスタが再ロードされ
る。
からの最後のPRDテーブルエントリのアドレスを含ん
でいる場合には、割込優先は「DMAの前」のタイプと
なる。プロセス/プログラムはアクティブなI/Oデバ
イスのコマンドを取り消し、所望のI/Oデバイスに新
しいDMAを送り、PRDテーブルを書き直し、現在の
記述子ポインタレジスタをセーブし、記述子ポインタレ
ジスタを書き替え、またI/O制御デバイスに新しい分
散収集の開始コマンドを送る。割込優先のPRDテーブ
ルがその転送を完了した場合には、割込優先されたI/
OデバイスへのDMAコマンドの再発行に続いて、先に
セーブされた記述子ポインタレジスタが再ロードされ
る。
【0034】ポインタが現在のPRDテーブルからのい
ずれかのPRDテーブルエントリのアドレスを含んでい
る場合には、割込優先は「DMA間」のタイプである。
プロセス/プログラムはI/O制御デバイスに「現在の
テーブルエントリの後に停止」のコマンドを書き込む。
データマネージャは現在のPRDテーブルエントリのD
MAを完了し、次いでプロセッサに割り込む。
ずれかのPRDテーブルエントリのアドレスを含んでい
る場合には、割込優先は「DMA間」のタイプである。
プロセス/プログラムはI/O制御デバイスに「現在の
テーブルエントリの後に停止」のコマンドを書き込む。
データマネージャは現在のPRDテーブルエントリのD
MAを完了し、次いでプロセッサに割り込む。
【0035】プロセス/プログラムはアクティブなI/
Oデバイスのコマンドを取り消し、新しいDMAコマン
ドを所望のI/Oデバイスに送り、PRDテーブルを書
き替え、現在の記述子ポインタレジスタをセーブし、記
述子ポインタレジスタを書き替え、また新しい分散収集
の開始コマンドをI/O制御デバイスに送る。割込優先
するPRDテーブルがその転送を完了したときには、割
込優先されたI/Oデバイスへの短縮されたDMAコマ
ンドの再発行に続いて、先にセーブされた記述子ポイン
タレジスタが再ロードされる。
Oデバイスのコマンドを取り消し、新しいDMAコマン
ドを所望のI/Oデバイスに送り、PRDテーブルを書
き替え、現在の記述子ポインタレジスタをセーブし、記
述子ポインタレジスタを書き替え、また新しい分散収集
の開始コマンドをI/O制御デバイスに送る。割込優先
するPRDテーブルがその転送を完了したときには、割
込優先されたI/Oデバイスへの短縮されたDMAコマ
ンドの再発行に続いて、先にセーブされた記述子ポイン
タレジスタが再ロードされる。
【0036】(同時割込の併合)上記したように、分散
収集PRDテーブル内のPRDテーブルエントリにより
制御された、多重の連続的なDMAブロックは、特定の
I/Oデバイスのメモリ空間にあるいはこれから転送さ
れる。PRDテーブル内の最後のエントリにより制御さ
れた最後のデータ転送に続いて、プロセッサは、I/O
コントローラの現在の構成に依存して、I/Oデバイス
あるいはI/Oコントローラのいずれかにより割込され
る。多重I/Oチャネル上の多重I/Oデバイスに対す
る「n」の同時データ転送動作は、基本的には決定的で
はない時間スケールに基づいて完了する。このような同
時I/Oチャネル動作の特徴は与えられた割込を応答す
るI/Oデバイス、チャネルおよび動作に関連するため
の機構を必要とする。さらに、同時I/O動作は、ハー
ドウェア割込の待合わせ論理、あるいはホストコンピュ
ータに対する複雑な割込処理用のソフトウェアを必要と
する、多重の、オーバラップする割込を発生させる。
収集PRDテーブル内のPRDテーブルエントリにより
制御された、多重の連続的なDMAブロックは、特定の
I/Oデバイスのメモリ空間にあるいはこれから転送さ
れる。PRDテーブル内の最後のエントリにより制御さ
れた最後のデータ転送に続いて、プロセッサは、I/O
コントローラの現在の構成に依存して、I/Oデバイス
あるいはI/Oコントローラのいずれかにより割込され
る。多重I/Oチャネル上の多重I/Oデバイスに対す
る「n」の同時データ転送動作は、基本的には決定的で
はない時間スケールに基づいて完了する。このような同
時I/Oチャネル動作の特徴は与えられた割込を応答す
るI/Oデバイス、チャネルおよび動作に関連するため
の機構を必要とする。さらに、同時I/O動作は、ハー
ドウェア割込の待合わせ論理、あるいはホストコンピュ
ータに対する複雑な割込処理用のソフトウェアを必要と
する、多重の、オーバラップする割込を発生させる。
【0037】図8から図10に示したように、本発明は
選択的なアービットレーションによる割込発生を制御す
るものである。分散収集の転送がその最後のPRDテー
ブルエントリに達したときには、プロセッサの割込が頻
繁となり、そのテーブルエントリにより制御されるデー
タ転送の完了に次いで起きる。他のチャネルの同時の分
散収集DMA転送は、最後のブロック転送PRDエント
リ自体が実行されない限りPRDテーブルを通して行わ
れることが許容される。第2の最終のPRDテーブルエ
ントリ転送がぶつかった場合には、その動作は最初のチ
ャネルの転送の完了の割込がホストプロセッサにより行
われるまで延期される。2つより多くのアクティブなI
/Oチャネルが存在しており、また先の両方のチャネル
が最後のテーブルエントリ状態に達した場合には、CP
Uが所期または問題の先のデータ転送完了の割込を行う
前においてそのチャネルがテーブル状態の最も終りにぶ
つからない限り、第3のI/Oチャネルが分散収集DM
A動作を開始する。
選択的なアービットレーションによる割込発生を制御す
るものである。分散収集の転送がその最後のPRDテー
ブルエントリに達したときには、プロセッサの割込が頻
繁となり、そのテーブルエントリにより制御されるデー
タ転送の完了に次いで起きる。他のチャネルの同時の分
散収集DMA転送は、最後のブロック転送PRDエント
リ自体が実行されない限りPRDテーブルを通して行わ
れることが許容される。第2の最終のPRDテーブルエ
ントリ転送がぶつかった場合には、その動作は最初のチ
ャネルの転送の完了の割込がホストプロセッサにより行
われるまで延期される。2つより多くのアクティブなI
/Oチャネルが存在しており、また先の両方のチャネル
が最後のテーブルエントリ状態に達した場合には、CP
Uが所期または問題の先のデータ転送完了の割込を行う
前においてそのチャネルがテーブル状態の最も終りにぶ
つからない限り、第3のI/Oチャネルが分散収集DM
A動作を開始する。
【0038】そして、上記した技術によれば、ホストプ
ロセッサに各I/Oブロック転送要求の完了の信号を送
るために、離散した、オーバラップしない割込を提供す
ることができる。この機能により、装置の複雑さを最小
限とでき、また同時I/O転送を管理している場合にお
いて、ホストプロセッサの割込を取り扱うソフトウェア
の性能を改良することができる。従来の同時割込を取り
扱う方法はホストCPU上で実行されているソフトウェ
アを取り扱う割込待合わせあるいは複雑な割込を必要と
している。
ロセッサに各I/Oブロック転送要求の完了の信号を送
るために、離散した、オーバラップしない割込を提供す
ることができる。この機能により、装置の複雑さを最小
限とでき、また同時I/O転送を管理している場合にお
いて、ホストプロセッサの割込を取り扱うソフトウェア
の性能を改良することができる。従来の同時割込を取り
扱う方法はホストCPU上で実行されているソフトウェ
アを取り扱う割込待合わせあるいは複雑な割込を必要と
している。
【0039】(データマネージャのアービトレーション
および選択)一次のデータマネージャの選択およびアー
ビトレーションは、いずれかの時間点においてデータを
転送する与えられたI/Oデバイスの能力に基づいてい
る。一般的なI/Oデバイスは、より遅いメディアまた
はネットワークの帯域幅よりは最大のI/O帯域幅でI
/Oデバイスにあるいはこれからデータを転送するため
の内部バッファを有している。図11はデータ転送がど
のようにして選択され/可能となるのかを示している。
I/Oの読み込み動作の間、I/Oデバイスは、内部バ
ッファが予め形成された「高い量標」まで満たされたと
きにI/Oチャネルにデータ転送を要求し、これにより
DMAからI/Oチャネルが利用可能なI/O帯域幅を
効率的に利用することが確保される。I/Oの書き込み
動作の間、I/Oデバイスは、内部メモリバッファが
「低い量標」レベルにある時に、I/Oチャネルからの
データ転送を要求し、これによりI/Oバス帯域幅の効
率的な利用を再度行うことができる。一次のデータマネ
ージャのチャネル選択はいずれかの時間点におけるデー
タブロックを転送するためのI/Oデバイスの能力に直
接的に基づいている。この方法は、選択プロセスがI/
Oの読み込みの間におけるI/Oデバイスからの利用可
能な実際のデータにより、あるいはI/Oの書き込みの
間におけるターゲットのI/Oデバイス内の利用可能な
バッファにより制御されることから、効率的である。こ
の方法は、論理、バスモニタ論理および複雑なアービト
レーション論理あるいはソフトウェアあるいは他の考察
が不要であることから、コスト的に有利に構成できる。
および選択)一次のデータマネージャの選択およびアー
ビトレーションは、いずれかの時間点においてデータを
転送する与えられたI/Oデバイスの能力に基づいてい
る。一般的なI/Oデバイスは、より遅いメディアまた
はネットワークの帯域幅よりは最大のI/O帯域幅でI
/Oデバイスにあるいはこれからデータを転送するため
の内部バッファを有している。図11はデータ転送がど
のようにして選択され/可能となるのかを示している。
I/Oの読み込み動作の間、I/Oデバイスは、内部バ
ッファが予め形成された「高い量標」まで満たされたと
きにI/Oチャネルにデータ転送を要求し、これにより
DMAからI/Oチャネルが利用可能なI/O帯域幅を
効率的に利用することが確保される。I/Oの書き込み
動作の間、I/Oデバイスは、内部メモリバッファが
「低い量標」レベルにある時に、I/Oチャネルからの
データ転送を要求し、これによりI/Oバス帯域幅の効
率的な利用を再度行うことができる。一次のデータマネ
ージャのチャネル選択はいずれかの時間点におけるデー
タブロックを転送するためのI/Oデバイスの能力に直
接的に基づいている。この方法は、選択プロセスがI/
Oの読み込みの間におけるI/Oデバイスからの利用可
能な実際のデータにより、あるいはI/Oの書き込みの
間におけるターゲットのI/Oデバイス内の利用可能な
バッファにより制御されることから、効率的である。こ
の方法は、論理、バスモニタ論理および複雑なアービト
レーション論理あるいはソフトウェアあるいは他の考察
が不要であることから、コスト的に有利に構成できる。
【0040】つまり、一次DMAスケジューリングは、
I/Oデバイスのバッファを部分的に充填する(あるい
は空にする)ために、ターゲットのI/Oデバイスがメ
ディアあるいはネットワークから(あるいはこれらに)
十分なデータが転送されたか否かに依存する必要な機能
を有するものである。本装置によれば、多重I/Oチャ
ネルがバスマスタに対する一次の制約を受けたときに、
バスマスタDMA動作を「n+1」のI/Oチャネルに
対する「n」のデータマネージャからスケジューリング
するために使用される種々の二次のアービトレーション
およびスケジューリング技術を、最近アイドル状態とな
ったデータマネージャの使用を探索しながら行うことが
できる。ラウンドロビン法、ファーストカムファースト
サーブ(first come first serv
e)法、最長時間未使用、モーストリーセントリーユー
スド(most recently used)法など
が二次アービトレーションのために使用される。
I/Oデバイスのバッファを部分的に充填する(あるい
は空にする)ために、ターゲットのI/Oデバイスがメ
ディアあるいはネットワークから(あるいはこれらに)
十分なデータが転送されたか否かに依存する必要な機能
を有するものである。本装置によれば、多重I/Oチャ
ネルがバスマスタに対する一次の制約を受けたときに、
バスマスタDMA動作を「n+1」のI/Oチャネルに
対する「n」のデータマネージャからスケジューリング
するために使用される種々の二次のアービトレーション
およびスケジューリング技術を、最近アイドル状態とな
ったデータマネージャの使用を探索しながら行うことが
できる。ラウンドロビン法、ファーストカムファースト
サーブ(first come first serv
e)法、最長時間未使用、モーストリーセントリーユー
スド(most recently used)法など
が二次アービトレーションのために使用される。
【0041】(性能改良)図12は、I/Oデバイスの
バッファ性能および2つのI/Oチャネルの帯域幅を効
率的に利用するための好ましい方法を示している。な
お、図3についての場合と同様に、I/Oチャネルはア
クティブなバッファがI/OチャネルのDMAにより空
にされたときにアイドル状態となる。図8乃至10に示
されたI/OチャネルはI/Oデバイスのメディア速度
の2倍の帯域幅において動作するものである。
バッファ性能および2つのI/Oチャネルの帯域幅を効
率的に利用するための好ましい方法を示している。な
お、図3についての場合と同様に、I/Oチャネルはア
クティブなバッファがI/OチャネルのDMAにより空
にされたときにアイドル状態となる。図8乃至10に示
されたI/OチャネルはI/Oデバイスのメディア速度
の2倍の帯域幅において動作するものである。
【0042】図3を参照して、単一のデータマネージャ
は上記した二重データマネージャとほぼ同様に動作し、
先に説明した単一のデータマネージャ、二重I/Oに対
して著しい性能を発揮する。さらに、プロセス/プログ
ラムにより、I/Oデバイスのバッファサイズ、メディ
ア速度とプライオリティに基づいて転送サイズおよびP
RDテーブルエントリの数を変更することでI/O転送
性能を調整することができる。
は上記した二重データマネージャとほぼ同様に動作し、
先に説明した単一のデータマネージャ、二重I/Oに対
して著しい性能を発揮する。さらに、プロセス/プログ
ラムにより、I/Oデバイスのバッファサイズ、メディ
ア速度とプライオリティに基づいて転送サイズおよびP
RDテーブルエントリの数を変更することでI/O転送
性能を調整することができる。
【0043】(動作モード)本発明の一般的な動作を図
13に示した。単一のチャネルの動作は200で示し、
またチャネル0はブロックA、B、C、Dを転送し、次
いでチャネル1がブロックE、F、G、Hを転送する。
13に示した。単一のチャネルの動作は200で示し、
またチャネル0はブロックA、B、C、Dを転送し、次
いでチャネル1がブロックE、F、G、Hを転送する。
【0044】同時チャネル動作は202で示し、チャネ
ル0からのブロックA、B、C、Dの転送はチャネル1
からのブロックE、F、G、Hの転送にインターリーブ
される。個々のブロックは同時には転送されないが、イ
ンターリーブされて、全体のデータが同時に転送される
ようにみなされる。
ル0からのブロックA、B、C、Dの転送はチャネル1
からのブロックE、F、G、Hの転送にインターリーブ
される。個々のブロックは同時には転送されないが、イ
ンターリーブされて、全体のデータが同時に転送される
ようにみなされる。
【0045】チャネル0の割込優先付きの同時チャネル
動作を204に示し、特定のチャネル上の他のデバイス
からのデータ(この例ではチャネル0上のデバイス1か
らのブロックIとJ)が同じチャネル上のデバイスから
のデータの転送(この例では、チャネル0上のデバイス
0からのブロックA、B、C、D)を割込優先する。ブ
ロックは最初は202の通常の同時チャネル動作で示し
たのと同様に転送される。しかしながら、ブロックCを
転送する前に、チャネル0上の割込優先が受信される。
記述子ポインタレジスタの再書き込みを含む、先に説明
したプロセスが次いで行われる。チャネル1は次いでチ
ャネル0上の割込優先の第2のデバイスからのデータの
ブロック(ブロック1)を転送する。チャネル1は次い
でその次のデータのブロック(ブロックH)の転送を継
続する。チャネル0は次いでチャネル0上の割込優先さ
れた第2の装置からの次のデータのブロック(ブロック
J)を転送する。この第2のデバイスは転送するデータ
がもはやないので、チャネル0に対する元のPRDがリ
ストされ、またチャネル0上の第1のデバイスからのデ
ータ転送がブロックCとDで続けられる。
動作を204に示し、特定のチャネル上の他のデバイス
からのデータ(この例ではチャネル0上のデバイス1か
らのブロックIとJ)が同じチャネル上のデバイスから
のデータの転送(この例では、チャネル0上のデバイス
0からのブロックA、B、C、D)を割込優先する。ブ
ロックは最初は202の通常の同時チャネル動作で示し
たのと同様に転送される。しかしながら、ブロックCを
転送する前に、チャネル0上の割込優先が受信される。
記述子ポインタレジスタの再書き込みを含む、先に説明
したプロセスが次いで行われる。チャネル1は次いでチ
ャネル0上の割込優先の第2のデバイスからのデータの
ブロック(ブロック1)を転送する。チャネル1は次い
でその次のデータのブロック(ブロックH)の転送を継
続する。チャネル0は次いでチャネル0上の割込優先さ
れた第2の装置からの次のデータのブロック(ブロック
J)を転送する。この第2のデバイスは転送するデータ
がもはやないので、チャネル0に対する元のPRDがリ
ストされ、またチャネル0上の第1のデバイスからのデ
ータ転送がブロックCとDで続けられる。
【0046】チャネル1の割込優先付きの同時チャネル
動作を206で示した。この場合には、割込優先のチャ
ネル0の204の動作について上記したものと類似した
手順で動作が行われる。よって、詳細な説明は省略す
る。
動作を206で示した。この場合には、割込優先のチャ
ネル0の204の動作について上記したものと類似した
手順で動作が行われる。よって、詳細な説明は省略す
る。
【0047】(システム環境)図14は好ましいシステ
ム環境において使用されるI/O制御デバイス120を
示している。図示したように、この好ましい環境は、P
CIバスを備えたIDEの2つのチャネルをインターフ
ェースする際に使用される。IDEバスおよびPCIバ
スは従来公知である。I/O制御デバイス120は上記
した環境よりもより効率的に、DMA転送を行う。
ム環境において使用されるI/O制御デバイス120を
示している。図示したように、この好ましい環境は、P
CIバスを備えたIDEの2つのチャネルをインターフ
ェースする際に使用される。IDEバスおよびPCIバ
スは従来公知である。I/O制御デバイス120は上記
した環境よりもより効率的に、DMA転送を行う。
【0048】図15は図14のものとは別のシステム環
境を示している。ここに開示された技術はIDEバスに
加えてイーサネットチャネルを備えた2つのチャネルを
サポートするために拡張されている。このような拡張を
行うためには、チャネル21に対する別の記述子ポイン
タレジスタ125が付加される。別のDMAエンジン2
25が別のチャネルのための特別なDMAインターフェ
ースサポートを行うために付加される。このDMAエン
ジンは図5乃至7に示したものと同様に動作するが、
(図5乃至7に示した2つのチャネルに対して)単一の
チャネルを管理するためのフロー制御を有している点が
異なるものである。
境を示している。ここに開示された技術はIDEバスに
加えてイーサネットチャネルを備えた2つのチャネルを
サポートするために拡張されている。このような拡張を
行うためには、チャネル21に対する別の記述子ポイン
タレジスタ125が付加される。別のDMAエンジン2
25が別のチャネルのための特別なDMAインターフェ
ースサポートを行うために付加される。このDMAエン
ジンは図5乃至7に示したものと同様に動作するが、
(図5乃至7に示した2つのチャネルに対して)単一の
チャネルを管理するためのフロー制御を有している点が
異なるものである。
【0049】上記した装置と方法は、メディアあるいは
ネットワークの帯域幅およびI/Oデバイスのバッファ
サイズに基づく、メインメモリとI/Oデバイスの間の
DMA転送の性能調整のための機構を提供している。よ
り遅いI/Oデバイス(例えば、CDROMS、テープ
ドライブあるいはイーサネットドライブ)は、より少な
いブロック転送サイズを持つ多数の分散収集PRDテー
ブルエントリを使用して制御される。より速いI/Oデ
バイス(例えば、ハードディスクドライブあるいはファ
イバチャネルのスイッチ構造ポート)は大きなブロック
転送サイズを持つ少数の分散収集PRDテーブルエント
リを使用して制御される。同様に、より小さいバッファ
サイズを有するI/Oデバイスはより小さいブロック転
送サイズを持つ多数の分散収集PRDテーブルエントリ
を使用して制御される。大きなバッファサイズを持つI
/Oデバイスは大きなブロック転送サイズを有する少数
の分散収集PRDテーブルエントリを使用して制御され
る。バランスがとれた、高い集合帯域幅のシステム性能
を提供するために、ソフトウェアによりI/Oコントロ
ーラを容易に調整することができる。
ネットワークの帯域幅およびI/Oデバイスのバッファ
サイズに基づく、メインメモリとI/Oデバイスの間の
DMA転送の性能調整のための機構を提供している。よ
り遅いI/Oデバイス(例えば、CDROMS、テープ
ドライブあるいはイーサネットドライブ)は、より少な
いブロック転送サイズを持つ多数の分散収集PRDテー
ブルエントリを使用して制御される。より速いI/Oデ
バイス(例えば、ハードディスクドライブあるいはファ
イバチャネルのスイッチ構造ポート)は大きなブロック
転送サイズを持つ少数の分散収集PRDテーブルエント
リを使用して制御される。同様に、より小さいバッファ
サイズを有するI/Oデバイスはより小さいブロック転
送サイズを持つ多数の分散収集PRDテーブルエントリ
を使用して制御される。大きなバッファサイズを持つI
/Oデバイスは大きなブロック転送サイズを有する少数
の分散収集PRDテーブルエントリを使用して制御され
る。バランスがとれた、高い集合帯域幅のシステム性能
を提供するために、ソフトウェアによりI/Oコントロ
ーラを容易に調整することができる。
【0050】以上、本発明の好ましい実施の形態につい
て説明したが、本発明はこれらに限定されるものではな
く、本発明の請求の範囲内で変更などを適宜に行い得る
ものである。
て説明したが、本発明はこれらに限定されるものではな
く、本発明の請求の範囲内で変更などを適宜に行い得る
ものである。
【図1】 バスマスタ分散収集DMA動作を行うための
従来の機構のダイヤグラムである。
従来の機構のダイヤグラムである。
【図2】 バスマスタ分散収集DMA動作を行うための
従来の方法あるいはフローチャートのダイヤグラムであ
る。
従来の方法あるいはフローチャートのダイヤグラムであ
る。
【図3】 単一および二重のデータマネージャ、二重I
/Oチャネル動作に対する性能分析ダイヤグラムを含む
説明図である。
/Oチャネル動作に対する性能分析ダイヤグラムを含む
説明図である。
【図4】 2つのI/Oチャネルシステム内で単一のデ
ータマネージャにより制御されたバスマスタ分散収集D
MAを行うための機構のダイヤグラムである。
ータマネージャにより制御されたバスマスタ分散収集D
MAを行うための機構のダイヤグラムである。
【図5】 2つのI/Oチャネルシステム内で単一のデ
ータマネージャにより制御されたバスマスタ分散収集D
MAを行うための方法のダイヤグラムの一部である。
ータマネージャにより制御されたバスマスタ分散収集D
MAを行うための方法のダイヤグラムの一部である。
【図6】 図5とa−a’の線で相互につながって示さ
れる、2つのI/Oチャネルシステム内で単一のデータ
マネージャにより制御されたバスマスタ分散収集DMA
を行うための方法のダイアグラムの一部である。
れる、2つのI/Oチャネルシステム内で単一のデータ
マネージャにより制御されたバスマスタ分散収集DMA
を行うための方法のダイアグラムの一部である。
【図7】 図6とb−b’の線で相互につながって示さ
れる、2つのI/Oチャネルシステム内で単一のデータ
マネージャにより制御されたバスマスタ分散収集DMA
を行うための方法のダイヤグラムの一部である。
れる、2つのI/Oチャネルシステム内で単一のデータ
マネージャにより制御されたバスマスタ分散収集DMA
を行うための方法のダイヤグラムの一部である。
【図8】 同時割込を併合するための方法を示した説明
図である。
図である。
【図9】 同時割込を併合するための方法を示した説明
図である。
図である。
【図10】 同時割込を併合するための方法を示した説
明図である。
明図である。
【図11】 データマネージャによりアービットレーシ
ョンおよび選択をするための方法を示した説明図であ
る。
ョンおよび選択をするための方法を示した説明図であ
る。
【図12】 本発明の単一データマネージャ、二重I/
Oチャネル動作のための性能分析ダイヤグラムを含む説
明図である。
Oチャネル動作のための性能分析ダイヤグラムを含む説
明図である。
【図13】 本発明により支持される可能な動作のモー
ドを示したダイヤグラムを示した説明図である。
ドを示したダイヤグラムを示した説明図である。
【図14】 PCI/二重IDEのI/Oチャネル制御
デバイスを使用する、本発明の好ましい動作環境のブロ
ックダイヤグラムの説明図である。
デバイスを使用する、本発明の好ましい動作環境のブロ
ックダイヤグラムの説明図である。
【図15】 PCI/二重IDE/イーサネットI/O
チャネル制御デバイスを使用する、本発明の好ましい他
の動作環境のブロックダイヤグラムの説明図である。
チャネル制御デバイスを使用する、本発明の好ましい他
の動作環境のブロックダイヤグラムの説明図である。
120 I/O制御デバイス 124 データマネージャ 126 I/Oインターフェース論理 127、129 I/Oチャネル 130 メインメモリ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョエル エム.ウォード アメリカ合衆国 コロラド州 80525 フ ォート コリンズ、オックスフォード レ ーン ナンバー 38 1024 (72)発明者 マイケル エー.ウィンチェル アメリカ合衆国 コロラド州 80525 フ ォート コリンズ、バーベリー ドライブ 1431
Claims (3)
- 【請求項1】 データ処理システム内の複数の入力/出
力(I/O)デバイスからデータのブロックを転送する
ための方法において、 複数のI/Oデバイスからのデータの使用可能度に基づ
いてDMAブロック転送をスケジューリングするステッ
プからなる方法。 - 【請求項2】 中央処理ユニット(CPU)、 メモリ、 CPUとメモリの間に接続されたI/Oコントローラ、
およびI/Oコントローラに接続された複数のI/Oデ
バイスを組み合わせてなり、前記I/Oデバイスがそれ
ぞれバッファを有し、I/Oコントローラが少なくとも
1つのバッファ内のデータの使用可能度に基づいてI/
Oデバイスからメモリにデータを転送するための手段を
有する、組み合わせ。 - 【請求項3】 データ処理システム内部でDMAデータ
転送を行うための方法において、 テーブル内に保持された分散収集PRDエントリーのロ
ケーションに基づいてデータのブロックをインターリー
ブするステップからなる方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US40743995A | 1995-03-17 | 1995-03-17 | |
US08/407,439 | 1995-03-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH08297628A true JPH08297628A (ja) | 1996-11-12 |
Family
ID=23612093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8060667A Pending JPH08297628A (ja) | 1995-03-17 | 1996-03-18 | 同次プログラミング環境において(n)のデータマネージャで(n+1)のI/Oチャネルを制御する方法及び装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5894560A (ja) |
EP (1) | EP0732659B1 (ja) |
JP (1) | JPH08297628A (ja) |
DE (1) | DE69614291T2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018502362A (ja) * | 2014-10-31 | 2018-01-25 | 日本テキサス・インスツルメンツ株式会社 | ノンブロッキング高性能トランザクションクレジットシステムを備えるマルチコアバスアーキテクチャ |
Families Citing this family (102)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6005849A (en) * | 1997-09-24 | 1999-12-21 | Emulex Corporation | Full-duplex communication processor which can be used for fibre channel frames |
US5999963A (en) * | 1997-11-07 | 1999-12-07 | Lucent Technologies, Inc. | Move-to-rear list scheduling |
US6092124A (en) * | 1998-04-17 | 2000-07-18 | Nvidia Corporation | Method and apparatus for accelerating the rendering of images |
US6332161B1 (en) * | 1998-09-25 | 2001-12-18 | Charles Schwab & Co., Inc. | Customer web log-in architecture |
US6240467B1 (en) * | 1998-10-07 | 2001-05-29 | International Business Machines Corporation | Input/output operation request handling in a multi-host system |
EP1134664B1 (en) * | 1998-11-26 | 2005-01-12 | Matsushita Electric Industrial Co., Ltd. | Image processing device |
US6330623B1 (en) * | 1999-01-08 | 2001-12-11 | Vlsi Technology, Inc. | System and method for maximizing DMA transfers of arbitrarily aligned data |
US6571258B1 (en) * | 1999-09-13 | 2003-05-27 | Hewlett Packard Development Company L.P. | Computer data storage system with parallelization migration plan generator |
US6381619B1 (en) * | 1999-09-13 | 2002-04-30 | Hewlett-Packard Company | Computer data storage system with migration plan generator |
US6782465B1 (en) * | 1999-10-20 | 2004-08-24 | Infineon Technologies North America Corporation | Linked list DMA descriptor architecture |
US6665746B1 (en) * | 2000-03-31 | 2003-12-16 | International Business Machine Corporation | System and method for prioritized context switching for streaming data memory transfers |
US6691257B1 (en) | 2000-04-13 | 2004-02-10 | Stratus Technologies Bermuda Ltd. | Fault-tolerant maintenance bus protocol and method for using the same |
US6708283B1 (en) | 2000-04-13 | 2004-03-16 | Stratus Technologies, Bermuda Ltd. | System and method for operating a system with redundant peripheral bus controllers |
US6687851B1 (en) | 2000-04-13 | 2004-02-03 | Stratus Technologies Bermuda Ltd. | Method and system for upgrading fault-tolerant systems |
US6633996B1 (en) | 2000-04-13 | 2003-10-14 | Stratus Technologies Bermuda Ltd. | Fault-tolerant maintenance bus architecture |
US6735715B1 (en) | 2000-04-13 | 2004-05-11 | Stratus Technologies Bermuda Ltd. | System and method for operating a SCSI bus with redundant SCSI adaptors |
US6820213B1 (en) | 2000-04-13 | 2004-11-16 | Stratus Technologies Bermuda, Ltd. | Fault-tolerant computer system with voter delay buffer |
US6901481B2 (en) | 2000-04-14 | 2005-05-31 | Stratus Technologies Bermuda Ltd. | Method and apparatus for storing transactional information in persistent memory |
US6802022B1 (en) | 2000-04-14 | 2004-10-05 | Stratus Technologies Bermuda Ltd. | Maintenance of consistent, redundant mass storage images |
US6845409B1 (en) * | 2000-07-25 | 2005-01-18 | Sun Microsystems, Inc. | Data exchange methods for a switch which selectively forms a communication channel between a processing unit and multiple devices |
US6697867B1 (en) | 2000-07-25 | 2004-02-24 | Sun Microsystems, Inc. | System and method for accessing multiple groups of peripheral devices |
US6874039B2 (en) * | 2000-09-08 | 2005-03-29 | Intel Corporation | Method and apparatus for distributed direct memory access for systems on chip |
US6785751B1 (en) * | 2000-09-19 | 2004-08-31 | Intel Corporation | Method and apparatus for minimizing bus contention for I/O controller write operations |
US6763417B2 (en) | 2000-12-20 | 2004-07-13 | Computer Network Technology Corporation | Fibre channel port adapter |
US6886171B2 (en) * | 2001-02-20 | 2005-04-26 | Stratus Technologies Bermuda Ltd. | Caching for I/O virtual address translation and validation using device drivers |
US6766479B2 (en) | 2001-02-28 | 2004-07-20 | Stratus Technologies Bermuda, Ltd. | Apparatus and methods for identifying bus protocol violations |
US6766413B2 (en) | 2001-03-01 | 2004-07-20 | Stratus Technologies Bermuda Ltd. | Systems and methods for caching with file-level granularity |
US6874102B2 (en) * | 2001-03-05 | 2005-03-29 | Stratus Technologies Bermuda Ltd. | Coordinated recalibration of high bandwidth memories in a multiprocessor computer |
US7065672B2 (en) * | 2001-03-28 | 2006-06-20 | Stratus Technologies Bermuda Ltd. | Apparatus and methods for fault-tolerant computing using a switching fabric |
US6996750B2 (en) * | 2001-05-31 | 2006-02-07 | Stratus Technologies Bermuda Ltd. | Methods and apparatus for computer bus error termination |
US7346135B1 (en) | 2002-02-13 | 2008-03-18 | Marvell International, Ltd. | Compensation for residual frequency offset, phase noise and sampling phase offset in wireless networks |
US20030229733A1 (en) * | 2002-06-05 | 2003-12-11 | Hepner David Frank | DMA chaining method, apparatus and system |
US7640549B2 (en) * | 2002-07-22 | 2009-12-29 | Agilent Technologies, Inc. | System and method for efficiently exchanging data among processes |
US7230929B2 (en) * | 2002-07-22 | 2007-06-12 | Qlogic, Corporation | Method and system for dynamically assigning domain identification in a multi-module fibre channel switch |
US7154886B2 (en) * | 2002-07-22 | 2006-12-26 | Qlogic Corporation | Method and system for primary blade selection in a multi-module fiber channel switch |
US7397768B1 (en) | 2002-09-11 | 2008-07-08 | Qlogic, Corporation | Zone management in a multi-module fibre channel switch |
US7362717B1 (en) | 2002-10-03 | 2008-04-22 | Qlogic, Corporation | Method and system for using distributed name servers in multi-module fibre channel switches |
US6886141B1 (en) * | 2002-10-07 | 2005-04-26 | Qlogic Corporation | Method and system for reducing congestion in computer networks |
US7263153B2 (en) | 2002-10-09 | 2007-08-28 | Marvell International, Ltd. | Clock offset compensator |
US7319705B1 (en) | 2002-10-22 | 2008-01-15 | Marvell International Ltd. | Programmable pre-emphasis circuit for serial ATA |
US7319669B1 (en) | 2002-11-22 | 2008-01-15 | Qlogic, Corporation | Method and system for controlling packet flow in networks |
US7246192B1 (en) | 2003-01-10 | 2007-07-17 | Marvell International Ltd. | Serial/parallel ATA controller and converter |
JP4330889B2 (ja) | 2003-01-20 | 2009-09-16 | 株式会社日立製作所 | 記憶デバイス制御装置にソフトウエアをインストールする方法、記憶デバイス制御装置の制御方法、及び記憶デバイス制御装置 |
US7463646B2 (en) * | 2003-07-16 | 2008-12-09 | Qlogic Corporation | Method and system for fibre channel arbitrated loop acceleration |
US7453802B2 (en) * | 2003-07-16 | 2008-11-18 | Qlogic, Corporation | Method and apparatus for detecting and removing orphaned primitives in a fibre channel network |
US7152132B2 (en) * | 2003-07-16 | 2006-12-19 | Qlogic Corporation | Method and apparatus for improving buffer utilization in communication networks |
US7620059B2 (en) * | 2003-07-16 | 2009-11-17 | Qlogic, Corporation | Method and apparatus for accelerating receive-modify-send frames in a fibre channel network |
US7471635B2 (en) * | 2003-07-16 | 2008-12-30 | Qlogic, Corporation | Method and apparatus for test pattern generation |
US7388843B2 (en) * | 2003-07-16 | 2008-06-17 | Qlogic, Corporation | Method and apparatus for testing loop pathway integrity in a fibre channel arbitrated loop |
US7355966B2 (en) * | 2003-07-16 | 2008-04-08 | Qlogic, Corporation | Method and system for minimizing disruption in common-access networks |
US7558281B2 (en) * | 2003-07-21 | 2009-07-07 | Qlogic, Corporation | Method and system for configuring fibre channel ports |
US7894348B2 (en) * | 2003-07-21 | 2011-02-22 | Qlogic, Corporation | Method and system for congestion control in a fibre channel switch |
US7525983B2 (en) * | 2003-07-21 | 2009-04-28 | Qlogic, Corporation | Method and system for selecting virtual lanes in fibre channel switches |
US7522522B2 (en) * | 2003-07-21 | 2009-04-21 | Qlogic, Corporation | Method and system for reducing latency and congestion in fibre channel switches |
US7580354B2 (en) * | 2003-07-21 | 2009-08-25 | Qlogic, Corporation | Multi-speed cut through operation in fibre channel switches |
US7512067B2 (en) * | 2003-07-21 | 2009-03-31 | Qlogic, Corporation | Method and system for congestion control based on optimum bandwidth allocation in a fibre channel switch |
US7420982B2 (en) * | 2003-07-21 | 2008-09-02 | Qlogic, Corporation | Method and system for keeping a fibre channel arbitrated loop open during frame gaps |
US7406092B2 (en) * | 2003-07-21 | 2008-07-29 | Qlogic, Corporation | Programmable pseudo virtual lanes for fibre channel systems |
US7583597B2 (en) * | 2003-07-21 | 2009-09-01 | Qlogic Corporation | Method and system for improving bandwidth and reducing idles in fibre channel switches |
US7646767B2 (en) * | 2003-07-21 | 2010-01-12 | Qlogic, Corporation | Method and system for programmable data dependant network routing |
US7684401B2 (en) * | 2003-07-21 | 2010-03-23 | Qlogic, Corporation | Method and system for using extended fabric features with fibre channel switch elements |
US7792115B2 (en) * | 2003-07-21 | 2010-09-07 | Qlogic, Corporation | Method and system for routing and filtering network data packets in fibre channel systems |
US7522529B2 (en) * | 2003-07-21 | 2009-04-21 | Qlogic, Corporation | Method and system for detecting congestion and over subscription in a fibre channel network |
US7447224B2 (en) * | 2003-07-21 | 2008-11-04 | Qlogic, Corporation | Method and system for routing fibre channel frames |
US7630384B2 (en) * | 2003-07-21 | 2009-12-08 | Qlogic, Corporation | Method and system for distributing credit in fibre channel systems |
US7573909B2 (en) * | 2003-07-21 | 2009-08-11 | Qlogic, Corporation | Method and system for programmable data dependant network routing |
US7477655B2 (en) * | 2003-07-21 | 2009-01-13 | Qlogic, Corporation | Method and system for power control of fibre channel switches |
US7430175B2 (en) | 2003-07-21 | 2008-09-30 | Qlogic, Corporation | Method and system for managing traffic in fibre channel systems |
US7466700B2 (en) * | 2003-07-21 | 2008-12-16 | Qlogic, Corporation | LUN based hard zoning in fibre channel switches |
US8930583B1 (en) | 2003-09-18 | 2015-01-06 | Marvell Israel (M.I.S.L) Ltd. | Method and apparatus for controlling data transfer in a serial-ATA system |
US7352701B1 (en) | 2003-09-19 | 2008-04-01 | Qlogic, Corporation | Buffer to buffer credit recovery for in-line fibre channel credit extension devices |
US7103504B1 (en) | 2003-11-21 | 2006-09-05 | Qlogic Corporation | Method and system for monitoring events in storage area networks |
US7564789B2 (en) * | 2004-02-05 | 2009-07-21 | Qlogic, Corporation | Method and system for reducing deadlock in fibre channel fabrics using virtual lanes |
US7480293B2 (en) * | 2004-02-05 | 2009-01-20 | Qlogic, Corporation | Method and system for preventing deadlock in fibre channel fabrics using frame priorities |
JP2005221731A (ja) * | 2004-02-05 | 2005-08-18 | Konica Minolta Photo Imaging Inc | 撮像装置 |
US7457893B2 (en) * | 2004-03-11 | 2008-11-25 | International Business Machines Corporation | Method for dynamically selecting software buffers for aggregation according to current system characteristics |
US7930377B2 (en) * | 2004-04-23 | 2011-04-19 | Qlogic, Corporation | Method and system for using boot servers in networks |
US7340167B2 (en) * | 2004-04-23 | 2008-03-04 | Qlogic, Corporation | Fibre channel transparent switch for mixed switch fabrics |
US7958292B2 (en) | 2004-06-23 | 2011-06-07 | Marvell World Trade Ltd. | Disk drive system on chip with integrated buffer memory and support for host memory access |
US7404020B2 (en) * | 2004-07-20 | 2008-07-22 | Qlogic, Corporation | Integrated fibre channel fabric controller |
US8099533B2 (en) * | 2004-08-03 | 2012-01-17 | Nxp B.V. | Controller and a method for controlling the communication between a processor and external peripheral device |
US7411958B2 (en) * | 2004-10-01 | 2008-08-12 | Qlogic, Corporation | Method and system for transferring data directly between storage devices in a storage area network |
US8295299B2 (en) * | 2004-10-01 | 2012-10-23 | Qlogic, Corporation | High speed fibre channel switch element |
US7380030B2 (en) * | 2004-10-01 | 2008-05-27 | Qlogic, Corp. | Method and system for using an in-line credit extender with a host bus adapter |
US7593997B2 (en) * | 2004-10-01 | 2009-09-22 | Qlogic, Corporation | Method and system for LUN remapping in fibre channel networks |
US7519058B2 (en) | 2005-01-18 | 2009-04-14 | Qlogic, Corporation | Address translation in fibre channel switches |
JP2006259898A (ja) * | 2005-03-15 | 2006-09-28 | Toshiba Corp | I/oコントローラ、信号処理システム、およびデータ転送方法 |
US20060222126A1 (en) * | 2005-03-31 | 2006-10-05 | Stratus Technologies Bermuda Ltd. | Systems and methods for maintaining synchronicity during signal transmission |
US20060222125A1 (en) * | 2005-03-31 | 2006-10-05 | Edwards John W Jr | Systems and methods for maintaining synchronicity during signal transmission |
US20070011499A1 (en) * | 2005-06-07 | 2007-01-11 | Stratus Technologies Bermuda Ltd. | Methods for ensuring safe component removal |
US7548560B1 (en) | 2006-02-27 | 2009-06-16 | Qlogic, Corporation | Method and system for checking frame-length in fibre channel frames |
US9007646B2 (en) * | 2006-03-14 | 2015-04-14 | Core Wireless Licensing S.A.R.L. | System and method for enabling the fast extraction of interleaved image data |
CN100444144C (zh) * | 2006-07-27 | 2008-12-17 | 威盛电子股份有限公司 | 微电脑系统的直接内存存取作业方法 |
US7613816B1 (en) | 2006-11-15 | 2009-11-03 | Qlogic, Corporation | Method and system for routing network information |
US8683126B2 (en) * | 2007-07-30 | 2014-03-25 | Nvidia Corporation | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory |
GB2459939B (en) * | 2008-05-16 | 2012-02-15 | Icera Inc | Fetching descriptors in a multiple context DMA engine |
JP5287301B2 (ja) * | 2009-01-30 | 2013-09-11 | 富士通株式会社 | ディスクリプタ転送装置、i/oコントローラ、及びディスクリプタ転送方法 |
US8589600B2 (en) * | 2009-12-14 | 2013-11-19 | Maxeler Technologies, Ltd. | Method of transferring data with offsets |
US9280498B2 (en) | 2011-03-02 | 2016-03-08 | Nec Corporation | Data control system, data control method, and data control program |
KR102180972B1 (ko) * | 2014-04-23 | 2020-11-20 | 에스케이하이닉스 주식회사 | 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치 |
US9792244B2 (en) | 2015-02-13 | 2017-10-17 | Honeywell International Inc. | Multiple processor architecture with flexible external input/output interface |
CN113127391B (zh) * | 2021-05-13 | 2023-03-14 | 西安微电子技术研究所 | 一种多设备兼容的dma数据传输引擎设计方法 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4371932A (en) * | 1979-07-30 | 1983-02-01 | International Business Machines Corp. | I/O Controller for transferring data between a host processor and multiple I/O units |
CA1228677A (en) * | 1984-06-21 | 1987-10-27 | Cray Research, Inc. | Peripheral interface system |
US4831523A (en) * | 1986-10-31 | 1989-05-16 | Bull Hn Information Systems Inc. | Multiple DMA controller chip sequencer |
US4805137A (en) * | 1987-01-08 | 1989-02-14 | United Technologies Corporation | Bus controller command block processing system |
US4782439A (en) * | 1987-02-17 | 1988-11-01 | Intel Corporation | Direct memory access system for microcontroller |
US4821170A (en) * | 1987-04-17 | 1989-04-11 | Tandem Computers Incorporated | Input/output system for multiprocessors |
JPH065524B2 (ja) * | 1987-11-18 | 1994-01-19 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 記憶装置管理方法 |
JPH01237864A (ja) * | 1988-03-18 | 1989-09-22 | Fujitsu Ltd | Dma転送制御装置 |
US5212795A (en) * | 1988-10-11 | 1993-05-18 | California Institute Of Technology | Programmable DMA controller |
US5016160A (en) * | 1988-12-15 | 1991-05-14 | International Business Machines Corporation | Computer system having efficient data transfer operations |
EP0375909B1 (en) * | 1988-12-30 | 1995-08-30 | International Business Machines Corporation | Multiple I/O channel |
US5179709A (en) * | 1989-01-13 | 1993-01-12 | International Business Machines Corporation | Look ahead bus transfer request |
US5251303A (en) * | 1989-01-13 | 1993-10-05 | International Business Machines Corporation | System for DMA block data transfer based on linked control blocks |
US5131081A (en) * | 1989-03-23 | 1992-07-14 | North American Philips Corp., Signetics Div. | System having a host independent input/output processor for controlling data transfer between a memory and a plurality of i/o controllers |
JP2550496B2 (ja) * | 1989-03-30 | 1996-11-06 | 三菱電機株式会社 | Dmaコントローラ |
KR940002905B1 (en) * | 1989-12-15 | 1994-04-07 | Ibm | Apparatus for conditioning priority arbitration in buffered direct memory addressing |
US5185876A (en) * | 1990-03-14 | 1993-02-09 | Micro Technology, Inc. | Buffering system for dynamically providing data to multiple storage elements |
US5206933A (en) * | 1990-03-15 | 1993-04-27 | International Business Machines Corporation | Data link controller with channels selectively allocatable to hyper channels and hyper channel data funneled through reference logical channels |
JP3074737B2 (ja) * | 1990-12-29 | 2000-08-07 | カシオ計算機株式会社 | ファイル更新処理装置 |
US5305319A (en) * | 1991-01-31 | 1994-04-19 | Chips And Technologies, Inc. | FIFO for coupling asynchronous channels |
US5404454A (en) * | 1991-02-28 | 1995-04-04 | Dell Usa, L.P. | Method for interleaving computer disk data input-out transfers with permuted buffer addressing |
US5379381A (en) * | 1991-08-12 | 1995-01-03 | Stratus Computer, Inc. | System using separate transfer circuits for performing different transfer operations respectively and scanning I/O devices status upon absence of both operations |
CA2069711C (en) * | 1991-09-18 | 1999-11-30 | Donald Edward Carmon | Multi-media signal processor computer system |
EP0537401A1 (en) * | 1991-10-16 | 1993-04-21 | International Business Machines Corporation | Method for exchanging messages between a shared memory and communication adapters using an efficient logical protocol |
US5367639A (en) * | 1991-12-30 | 1994-11-22 | Sun Microsystems, Inc. | Method and apparatus for dynamic chaining of DMA operations without incurring race conditions |
US5388237A (en) * | 1991-12-30 | 1995-02-07 | Sun Microsystems, Inc. | Method of and apparatus for interleaving multiple-channel DMA operations |
US5251312A (en) * | 1991-12-30 | 1993-10-05 | Sun Microsystems, Inc. | Method and apparatus for the prevention of race conditions during dynamic chaining operations |
US5386532A (en) * | 1991-12-30 | 1995-01-31 | Sun Microsystems, Inc. | Method and apparatus for transferring data between a memory and a plurality of peripheral units through a plurality of data channels |
EP0549924A1 (en) * | 1992-01-03 | 1993-07-07 | International Business Machines Corporation | Asynchronous co-processor data mover method and means |
US5388219A (en) * | 1992-03-02 | 1995-02-07 | International Business Machines Corporation | Efficient channel and control unit for host computer |
WO1993018461A1 (en) * | 1992-03-09 | 1993-09-16 | Auspex Systems, Inc. | High-performance non-volatile ram protected write cache accelerator system |
US5524268A (en) * | 1992-06-26 | 1996-06-04 | Cirrus Logic, Inc. | Flexible processor-driven control of SCSI buses utilizing tags appended to data bytes to determine SCSI-protocol phases |
GB2270780A (en) * | 1992-09-21 | 1994-03-23 | Ibm | Scatter-gather in data processing systems. |
US5551006A (en) * | 1993-09-30 | 1996-08-27 | Intel Corporation | Low cost writethrough cache coherency apparatus and method for computer systems without a cache supporting bus |
US5574944A (en) * | 1993-12-15 | 1996-11-12 | Convex Computer Corporation | System for accessing distributed memory by breaking each accepted access request into series of instructions by using sets of parameters defined as logical channel context |
US5655151A (en) * | 1994-01-28 | 1997-08-05 | Apple Computer, Inc. | DMA controller having a plurality of DMA channels each having multiple register sets storing different information controlling respective data transfer |
US5687392A (en) * | 1994-05-11 | 1997-11-11 | Microsoft Corporation | System for allocating buffer to transfer data when user buffer is mapped to physical region that does not conform to physical addressing limitations of controller |
US5613162A (en) * | 1995-01-04 | 1997-03-18 | Ast Research, Inc. | Method and apparatus for performing efficient direct memory access data transfers |
US5671439A (en) * | 1995-01-10 | 1997-09-23 | Micron Electronics, Inc. | Multi-drive virtual mass storage device and method of operating same |
-
1996
- 1996-03-15 EP EP96301799A patent/EP0732659B1/en not_active Expired - Lifetime
- 1996-03-15 DE DE69614291T patent/DE69614291T2/de not_active Expired - Lifetime
- 1996-03-18 JP JP8060667A patent/JPH08297628A/ja active Pending
- 1996-08-26 US US08/702,998 patent/US5894560A/en not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018502362A (ja) * | 2014-10-31 | 2018-01-25 | 日本テキサス・インスツルメンツ株式会社 | ノンブロッキング高性能トランザクションクレジットシステムを備えるマルチコアバスアーキテクチャ |
JP2020191122A (ja) * | 2014-10-31 | 2020-11-26 | 日本テキサス・インスツルメンツ合同会社 | ノンブロッキング高性能トランザクションクレジットシステムを備えるマルチコアバスアーキテクチャ |
Also Published As
Publication number | Publication date |
---|---|
DE69614291T2 (de) | 2001-12-06 |
DE69614291D1 (de) | 2001-09-13 |
US5894560A (en) | 1999-04-13 |
EP0732659A1 (en) | 1996-09-18 |
EP0732659B1 (en) | 2001-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH08297628A (ja) | 同次プログラミング環境において(n)のデータマネージャで(n+1)のI/Oチャネルを制御する方法及び装置 | |
US5864712A (en) | Method and apparatus for controlling (N+I) I/O channels with (N) data managers in a homogenous software programmable environment | |
JP3273202B2 (ja) | 複数のデータチャネルを介してデータを転送する方法及びその回路アーキテクチャ | |
JP3271125B2 (ja) | データを転送する方法と装置及びデータ転送をインタリーブする装置 | |
US6754732B1 (en) | System and method for efficient data transfer management | |
US6272499B1 (en) | Linked lists of transfer descriptors scheduled at intervals | |
JP3251815B2 (ja) | 対等サブシステム間のデータストリーミング機能を効率的に処理するコンピュータシステム | |
US6292856B1 (en) | System and method for application influence of I/O service order post I/O request | |
US6401149B1 (en) | Methods for context switching within a disk controller | |
US5469548A (en) | Disk array controller having internal protocol for sending address/transfer count information during first/second load cycles and transferring data after receiving an acknowldgement | |
US6088740A (en) | Command queuing system for a hardware accelerated command interpreter engine | |
US5884050A (en) | Mechanism for high bandwidth DMA transfers in a PCI environment | |
KR100869675B1 (ko) | 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법 | |
US5664145A (en) | Apparatus and method for transferring data in a data storage subsystems wherein a multi-sector data transfer order is executed while a subsequent order is issued | |
JPH0827707B2 (ja) | Fifoバッファの制御装置及び制御方法並びにデータ転送を制御する装置 | |
JP2557199B2 (ja) | インターフェース・システムおよび方法 | |
US6665746B1 (en) | System and method for prioritized context switching for streaming data memory transfers | |
US5555390A (en) | Data storage method and subsystem including a device controller for respecifying an amended start address | |
US6681270B1 (en) | Effective channel priority processing for transfer controller with hub and ports | |
US7334056B2 (en) | Scalable architecture for context execution | |
US5613141A (en) | Data storage subsystem having dedicated links connecting a host adapter, controller and direct access storage devices | |
US5961614A (en) | System for data transfer through an I/O device using a memory access controller which receives and stores indication of a data status signal | |
JP4741735B2 (ja) | ディスク・コントローラ・メモリ・アーキテクチャ用システムおよび方法 | |
JPH0628261A (ja) | データ転送方法及び装置 | |
JP3349547B2 (ja) | スケジューリングシステム |