(57)【要約】第１のランダムアクセスメモリ（ＲＡＭ）と、第２のＲＡＭ108A-108Bと、第１のＲＡＭ108Aに結合された第１のプロセッサ114Aと、第２のＲＡＭに結合された第２のプロセッサ108Bとを有するシステムである。第１のＲＡＭ108Aは少なくとも２つのエンジン（102A、104A）からの入力／出力（Ｉ／Ｏ）完了を記憶するように構成されている。第２のＲＡＭ108Bもまた少なくとも２つのエンジン（102B、104B）からのＩ／Ｏ完了を記憶するように構成されている。全てのエンジンがアクチブであるとき、システムはエンジンから第１および２のＲＡＭ108A、108BへＩ／Ｏ完了を書込む。第１のプロセッサ114Aは第１のＲＡＭ（108A）に記憶されているＩ／Ｏ完了を処理する。第２のプロセッサ114Bは第２のＲＡＭ（108A）に記憶されているＩ／Ｏ完了を処理する。
2005513596.tif 000002
【特許請求の範囲】
【請求項１】
第１の直接メモリアクセス（ＤＭＡ）エンジン、第２のＤＭＡエンジン、第１のランダムアクセスメモリ（ＲＡＭ）、第１のプロセッサを具備している第１のチャンネルと、
第３のＤＭＡエンジン、第４のＤＭＡエンジン、第２のＲＡＭ、第２のプロセッサを具備している第２のチャンネルとを具備しているシステム。
【請求項２】
第１のモードにおいて、第１のＲＡＭは第１および第２のＤＭＡエンジンからの入力／出力（Ｉ／Ｏ）完了を記憶するように構成され、第１のプロセッサは第１のＲＡＭに記憶されたＩ／Ｏ完了を処理するように構成され、第２のＲＡＭは第３および第４のＤＭＡエンジンからのＩ／Ｏ完了を記憶するように構成され、第２のプロセッサは第２のＲＡＭに記憶されたＩ／Ｏ完了を処理するように構成されている請求項１記載のシステム。
【請求項３】
第２のモードのおいて、第２のＲＡＭは少なくとも第１のＤＭＡエンジンからのＩ／Ｏ完了を記憶するように構成され、第２のプロセッサは第２のＲＡＭに記憶された第１のＤＭＡエンジンからのＩ／Ｏ完了を処理するように構成されている請求項２記載のシステム。
【請求項４】
第２のＲＡＭは第１のＤＭＡエンジンからのＰＣＩ  ＲｘとＰＣＩ  Ｔｘ  Ｉ／Ｏ完了とを記憶する請求項３記載のシステム。
【請求項５】
第２のＲＡＭは第１のＤＭＡエンジンからのリンクＲｘとリンクＴｘ  Ｉ／Ｏ完了とを記憶する請求項３記載のシステム。
【請求項６】
第２のモードのおいて、第２のＲＡＭは第１および第２のＤＭＡエンジンからのＩ／Ｏ完了を記憶するように構成され、第２のプロセッサは第２のＲＡＭに記憶された第１および第２のＤＭＡエンジンからのＩ／Ｏ完了を処理するように構成されている請求項２記載のシステム。
【請求項７】
第２のＲＡＭは第１のＤＭＡエンジンからのＰＣＩ  Ｔｘ  Ｉ／Ｏ完了と、第２のＤＭＡエンジンからのリンクＴｘ  Ｉ／Ｏ完了とを記憶する請求項６記載のシステム。
【請求項８】
第２のＲＡＭは第２のＤＭＡエンジンからのリンクＲｘ  Ｉ／Ｏ完了と、第１のＤＭＡエンジンからのＰＣＩ  Ｒｘ  Ｉ／Ｏ完了とを記憶する請求項６記載のシステム。
【請求項９】
第２のＲＡＭは第１のＤＭＡエンジンからのＰＣＩ  Ｔｘ  Ｉ／Ｏ完了と、第２のＤＭＡエンジンからのリンクＲｘ  Ｉ／Ｏ完了とを記憶する請求項６記載のシステム。
【請求項１０】
第２のＲＡＭは第１のＤＭＡエンジンからのＰＣＩ  Ｒｘ  Ｉ／Ｏ完了と、第２のＤＭＡエンジンからのリンクＴｘ  Ｉ／Ｏ完了とを記憶する請求項６記載のシステム。
【請求項１１】
第１および第３のＤＭＡエンジンはそれぞれホストメモリと中間メモリとの間でデータを転送するように構成され、各転送後、第１および第３のＤＭＡエンジンはＩ／Ｏ完了を発生する請求項１記載のシステム。
【請求項１２】
さらに、データをホストメモリへまたはホストメモリから転送するように構成されている周辺コンポーネントインターフェースバスを具備している請求項１１記載のシステム。
【請求項１３】
第２および第４のＤＭＡエンジンはそれぞれ中間メモリとファイバチャンネルインターフェースとの間でデータを転送するように構成され、各転送後、第２および第４のＤＭＡエンジンはＩ／Ｏ完了を発生する請求項１記載のシステム。
【請求項１４】
第１および第２のＲＡＭはゼロ待機状態のＲＡＭである請求項１記載のシステム。
【請求項１５】
第１および第２のＲＡＭは待機状態を有する請求項１記載のシステム。
【請求項１６】
第１および第２のＤＭＡエンジンまたは第３および第４のＤＭＡエンジンを付勢するように構成され、第１および第２のＤＭＡエンジンがインアクチブであるならば、第１のＲＡＭは第３および第４のＤＭＡエンジンからのＩ／Ｏ完了を記憶するように構成され、第３および第４のＤＭＡエンジンがインアクチブであるならば、第２のＲＡＭは第１および第２のＤＭＡエンジンからのＩ／Ｏ完了を記憶するように構成される請求項１記載のシステム。
【請求項１７】
第１および第２のＤＭＡエンジンまたは第３および第４のＤＭＡエンジンがインアクチブであるかを検出するように構成され、第１および第２のＤＭＡエンジンがインアクチブであるならば、第１のＲＡＭは第３および第４のＤＭＡエンジンからのＩ／Ｏ完了を記憶するように構成され、第３および第４のＤＭＡエンジンがインアクチブであるならば、第２のＲＡＭは第１および第２のＤＭＡエンジンからのＩ／Ｏ完了を記憶するように構成される請求項１記載のシステム。
【請求項１８】
第２のプロセッサはそれが第２のＲＡＭに記憶された第１のＤＭＡエンジンからのＩ／Ｏ完了を処理した後、メッセージを第１のプロセッサへ送信するように構成されている請求項１記載のシステム。
【請求項１９】
メッセージは第１のプロセッサにＩ／Ｏ完了に関するデータをさらに処理させる請求項１８記載のシステム。
【請求項２０】
第１のＲＡＭはメッセージを記憶するように構成されている請求項１８記載のシステム。
【請求項２１】
第１のプロセッサはホストメモリと中間メモリとの間で転送されたデータに関するＩ／Ｏ完了を処理するように構成され、第２のプロセッサは中間メモリとファイバチャンネルインターフェースとの間で転送されたデータに関するＩ／Ｏ完了を処理するように構成されている請求項１記載のシステム。
【請求項２２】
第１のプロセッサはホストメモリから中間メモリへ転送されたデータと、中間メモリからファイバチャンネルインターフェースへ転送されたデータに関するＩ／Ｏ完了を処理するように構成され、第２のプロセッサはファイバチャンネルインターフェースから中間メモリへ転送されたデータと、中間メモリからホストメモリへ転送されたデータに関するＩ／Ｏ完了を処理するように構成されている請求項１記載のシステム。
【請求項２３】
第１のプロセッサはホストメモリから中間メモリへ転送されたデータと、ファイバチャンネルインターフェースから中間メモリへ転送されたデータに関するＩ／Ｏ完了を処理するように構成され、第２のプロセッサは中間メモリからファイバチャンネルインターフェースへ転送されたデータと、中間メモリからホストメモリへ転送されたデータに関するＩ／Ｏ完了を処理するように構成されている請求項１記載のシステム。
【請求項２４】
ハードウェアは第１および第２のプロセッサにより処理されるＩ／Ｏ完了のタイプを制御するように構成されている請求項１記載のシステム。
【請求項２５】
ファームウェアは第１および第２のプロセッサにより処理されるＩ／Ｏ完了のタイプを制御するように構成されている請求項１記載のシステム。
【請求項２６】
第１および第２のＲＡＭはそれぞれ複数の論理ブロックを構成し、各論理ブロックは予め定められたタイプのデータ転送に関するＩ／Ｏ完了を記憶するように構成されている請求項１記載のシステム。
【請求項２７】
各チャンネルはさらに、データがＲＡＭに記憶されるときにプロセッサへの通知を発生するように構成される制御論理装置を具備している請求項２６記載のシステム。
【請求項２８】
第１および第２のＲＡＭはそれぞれ複数の論理ブロックを具備し、各論理ブロックはＤＭＡエンジンの１つからのＩ／Ｏ完了を記憶するように構成されている請求項１記載のシステム。
【請求項２９】
さらに、各論理ブロックに対するプットポインタおよびゲットポインタを具備し、プットポインタは新しいＩ／Ｏ完了を記憶するために論理ブロック内の位置のアドレスを含み、ゲットポインタは記憶されたＩ／Ｏ完了を検索するために論理ブロック内の位置のアドレスを含んでいる請求項２８記載のシステム。
【請求項３０】
第１のＲＡＭは第２のプロセッサからのメッセージを記憶するように構成されている論理ブロックを具備し、第２のＲＡＭは第１のプロセッサからのメッセージを記憶するように構成されている論理ブロックを具備している請求項１記載のシステム。
【請求項３１】
各プロセッサはデータが堅密に結合されたメモリ（ＤＴＣＭ）およびＤＴＣＭポートを具備している請求項１記載のシステム。
【請求項３２】
各チャンネルはさらに、ＲＡＭに結合されてＲＡＭへのアクセスを制御するように構成された制御論理装置を具備している請求項１記載のシステム。
【請求項３３】
各チャンネルはさらに、種々のクロックドメインからの信号を同期するように構成されているＲＡＭ制御論理装置を具備し、信号はＲＡＭにより受信される請求項３２記載のシステム。
【請求項３４】
各チャンネルはさらに、ＲＡＭ内の位置のアドレスを指向するポインタを制御するように構成されたファームウェアを具備している請求項１記載のシステム。
【請求項３５】
各チャンネルはさらに、ＤＭＡエンジンとＲＡＭとの間に複数のレジスタを具備し、各レジはＩ／Ｏ完了がＲＡＭへ転送される前に予め定められたＤＭＡエンジンからのＩ／Ｏ完了を記憶するように構成されている請求項１記載のシステム。
【請求項３６】
各チャンネルはさらに、ＲＡＭへ転送するためＩ／Ｏ完了を有する複数のレジスタ間で仲裁を行うように構成されている仲裁装置を具備している請求項３５記載のシステム。
【請求項３７】
各チャンネルはさらに、レジスタがフルであるときにＤＭＡエンジンへ信号を発生するように構成されている制御論理装置を具備している請求項３５記載のシステム。
【請求項３８】
さらに、第１と第２のプロセッサ間に結合されている複数のレジスタを具備し、それらのレジスタは第１のプロセッサが第２のプロセッサへ送信するためのメッセージを有していることを第１のプロセッサが第２のプロセッサへ通知することを可能にするように構成されている請求項１記載のシステム。
【請求項３９】
第１のプロセッサはドアベルの他のチャンネルレジスタ中に１ビットを書込むように構成され、ドアベルの他のチャンネルレジスタは第２のプロセッサに結合されるドアベルレジスタにマップされ、ビットは第１のプロセッサからのメッセージを第２のプロセッサへ通知する請求項３８記載のシステム。
【請求項４０】
第１のプロセッサによりドアベルエネーブルレジスタに書込まれたビットが第２のプロセッサを中断することを可能にするために、第２のプロセッサはドアベルエネーブルレジスタ中に１ビットを書込むように構成されている請求項３９記載のシステム。
【請求項４１】
第１のプロセッサは第２のプロセッサのドアベルエネーブルレジスタを読取るように構成されている請求項４０記載のシステム。
【請求項４２】
入力／出力完了を記憶するように構成されたランダムアクセスメモリ（ＲＡＭ）と、
入力／出力完了をランダムアクセスメモリに送信するように構成された第１および第２のエンジンと、
ランダムアクセスメモリに記憶された入力／出力完了を処理するように構成されたプロセッサとを具備しているチャンネル。
【請求項４３】
ランダムアクセスメモリが第１および第２のエンジンからの入力／出力完了を記憶するように構成される第１のモードと、ランダムアクセスメモリが少なくとも１つの第３のエンジンからの入力／出力完了を記憶するように構成される第２のモードで動作するように構成されている請求項４２記載のチャンネル。
【請求項４４】
第２のチャンネルのエンジンからの入力／出力完了を記憶するために第１のチャンネルのランダムアクセスメモリ（ＲＡＭ）を構成し、
第１のチャンネルのＲＡＭでＩ／Ｏ完了を処理するステップを含んでいる方法。
【請求項４５】
さらに、第２のチャンネルの２つのエンジンからのＩ／Ｏ完了を記憶するために第１のチャンネルのＲＡＭを構成するステップを含んでいる請求項４４記載の方法。
【請求項４６】
さらに、ホストメモリと中間メモリとの間でデータを転送し、
入力／出力完了を発生するステップを含んでいる請求項４４記載の方法。
【請求項４７】
さらに、中間メモリとファイバチャンネルインターフェースの間でデータを転送し、
入力／出力完了を発生するステップを含んでいる請求項４４記載の方法。
【請求項４８】
さらに、第１のタイプの入力／出力完了を管理するために第１のプロセッサを指定し、第１のタイプのＩ／Ｏ完了を管理するため第２のプロセッサを指定する請求項４４記載の方法。
【請求項４９】
さらに、第１のチャンネルの入力／出力完了を処理するために第１のプロセッサを指定し、第２のチャンネルのＩ／Ｏ完了を処理するために第２のプロセッサを指定する請求項４４記載の方法。
【請求項５０】
さらに、第２のプロセッサが入力／出力完了の処理を終了したときを第１のプロセッサに通知するステップを含んでいる請求項４４記載の方法。
【請求項５１】
第１のプロセッサに通知するステップは、第２のプロセッサから第１のプロセッサに関連するランダムアクセスメモリへメッセージを送信するステップを含んでいる請求項５０記載の方法。
【請求項５２】
第１のプロセッサへの通知は、第１のレジスタへの１ビットの書込みを含んでおり、第１のレジスタは第２のレジスタにマップされ、第１のプロセッサは第２のプロセッサが第１のプロセッサのメッセージを有するか否かを決定するために第２のレジスタをアクセスする請求項５０記載の方法。
【請求項５３】
第１のチャンネルのエンジンがインアクチブであるか否かを検出し、
第１のチャンネルのエンジンがインアクチブであるならば、第２のチャンネルのエンジンからの入力／出力（Ｉ／Ｏ）完了を第１のチャンネルのランダムアクセスメモリ中に記憶し、
第１のチャンネルのランダムアクセスメモリでＩ／Ｏ完了を処理するステップを含んでいる方法。
【請求項５４】
さらに、第２のチャンネルのエンジンから第２のチャンネルのランダムアクセスメモリへ入力／出力（Ｉ／Ｏ）完了を記憶する請求項５３記載の方法。
【請求項５５】
複数のデータパスから入力／出力（Ｉ／Ｏ）完了を受信し、
複数のレジスタにＩ／Ｏ完了を記憶し、各レジスタは予め定められたデータパスからのＩ／Ｏ完了を記憶するように構成され、
レジスタからランダムアクセスメモリの複数の論理ブロックへＩ／Ｏ完了を転送し、各論理ブロックは予め定められたデータパスからのＩ／Ｏ完了を記憶するように構成されているステップを含んでいる方法。
【請求項５６】
複数のデータパスからの入力／出力（Ｉ／Ｏ）完了の受信は、第１のモードでデータパスの第１のセットからＩ／Ｏ完了を受信し、第２のモードでデータパスの第２のセットからＩ／Ｏ完了を受信するステップを含んでいる請求項５５記載の方法。
【請求項５７】
さらに、レジスタから仲裁装置へＩ／Ｏ完了を転送し、
ランダムアクセスメモリの論理ブロックに送信されるＩ／Ｏ完了を仲裁し、
仲裁装置からランダムアクセスメモリの論理ブロックへＩ／Ｏ完了を送信するステップを含んでいる請求項５５記載の方法。
【請求項５８】
仲裁はラウンドロビン方法の使用を含んでいる請求項５５記載の方法。
【請求項５９】
さらに、複数のデータパスを介して複数のレディ信号を複数のデータソースへ送信するステップを含み、各レディ信号はレジスタがＩ／Ｏ完了を記憶する準備がされていることを示している請求項５５記載の方法。
【請求項６０】
さらに、レディ信号を検出し、データソースがランダムアクセスメモリへ書込むためのＩ／Ｏ完了を有するならば、書込みエネーブル信号を発生する請求項５９記載の方法。
【請求項６１】
さらに、処理の準備がされている未処理の完了が存在するか否かを決定するためポインタの使用を含んでいる請求項５５記載の方法。
【請求項６２】
さらに、論理ブロックがフルであるか否かを決定するためのポインタの使用を含んでいる請求項５５記載の方法。
【請求項６３】
さらに、論理ブロックがフルであるならば、Ｉ／Ｏ完了が論理ブロックに書込まれることを防止することを含んでいる請求項６２記載の方法。
【請求項６４】
さらに、データパスに結合されたソースへ、ソースからのＩ／Ｏ完了を記憶するように構成されている論理ブロックおよびレジスタがフルであることを通知するステップを含んでいる請求項６２記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のソースからデータを受信し、処理するデータ処理システムに関する。
【背景技術】
【０００２】
本出願は、2001年12月12日出願の米国特許出願第60/340,386号明細書（発明の名称“Supercharge Message Exchanger”）に対して優先権を主張しており、これは全体的に本出願で参考文献とされている。また、本出願は2002年12月10日出願の米国特許暫定出願（発明の名称“Supercharge Message Exchanger”）に対して優先権を主張している。
【０００３】
データ処理システムは複数のソースからデータを受信する。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
メッセージ交換システムは２以上のプロセッサがさらに効率的に通信することを可能にするために提供され、これは入力／出力（Ｉ／Ｏ）処理速度を改良する。
【０００５】
１実施形態では、システムはＩ／Ｏ完了が２つのプロセッサに関連する２つのメモリにポストされることを可能にする。いずれかのプロセッサはＩ／Ｏ完了通知をアクセスでき、それに続く動作のためにＩ／Ｏを準備する。
【０００６】
１実施形態では、システムはＤＭＡからのＩ／Ｏ完了通知とプロセッサ間のメッセージを記憶するためにゼロ待機状態のランダムアクセスメモリ（ＲＡＭ）を使用する。ゼロ待機状態のＲＡＭはＲＡＭアクセス待ち時間を減少する。代わりに、システムは減少された性能でより多くの情報容量を実現するため待機状態で高い待ち時間のＲＡＭを使用する。
【０００７】
複数の異なるソースが複数のデータパスにより同時にＲＡＭに書込もうとするとき、システムはレジスタにデータを記憶することによりデータの崩壊の可能性を克服する。システムはまたＲＡＭの複数の論理的区画への公正で迅速なアクセスを可能にする。また、レジスタはＲＡＭがフルでありソースがＲＡＭへ書込みを継続しようとするときデータ崩壊の可能性を克服する。
【課題を解決するための手段】
【０００８】
システムは異なるクロックドメインから発生するＩ／Ｏ完了を管理するように構成されている。例えば２つのＩ／Ｏ完了は周辺コンポーネントインターフェース（ＰＣＩ）側から来てもよく、これは３３ＭＨｚ、６６ＭＨｚ、または１３３ＭＨｚで動作している。２つのＩ／Ｏ完了はファイバチャンネルリンク側から来てもよく、これは１０６ＭＨｚまたは２００ＭＨｚクロックに同期されてもよい。ＡＲＭプロセッサは２００ＭＨｚクロックでＩ／Ｏ完了またはプロセッサ間メッセージをポストする。
【０００９】
システムはＲＡＭの空またはフル状態と、ＲＡＭ中のフルである位置の数を追跡する。
【００１０】
さらに、システムはまたプロセッサに重要な事象について通知するためにドアベルレジスタを使用してもよい。ドアベルレジスタは第１のプロセッサが特定のドアベルビットを設定し、第２のプロセッサが特定のドアベルビットを読取りクリアすることを可能にする。第１のプロセッサはまた特定のドアベルビットが第２のプロセッサにより設定されるとき中断を発生することができる。
【００１１】
システムは用途特定集積回路（ＡＳＩＣ）またはフィールドプログラム可能なゲートアレイ（ＦＰＧＡ）装置中に構成されてもよい。
【００１２】
アプリケーションの１特徴は、第１のチャンネルと第２のチャンネルを備えたシステムに関する。第１のチャンネルは第１の直接メモリアクセス（ＤＭＡ）エンジンと、第２のＤＭＡエンジンと、第１のランダムアクセスメモリ（ＲＡＭ）と、第１のプロセッサとを具備している。第２のチャンネルは第３のＤＭＡエンジンと、第４のＤＭＡエンジンと、第２のＲＡＭと、第２のプロセッサとを具備している。
【００１３】
別の特徴はランダムアクセスメモリと、第１および第２のエンジンと、プロセッサとを具備するチャンネルに関する。ランダムアクセスメモリは入力／出力完了を記憶するように構成されている。第１および第２のエンジンは入力／出力完了をランダムアクセスメモリに送信するように構成されている。プロセッサはランダムアクセスメモリに記憶された入力／出力完了を処理するように構成されている。
【００１４】
別の特徴は、第２のチャンネルのエンジンからの入力／出力（Ｉ／Ｏ）完了を記憶するために第１のチャンネルのランダムアクセスメモリ（ＲＡＭ）を構成し、第１のチャンネルのＲＡＭのＩ／Ｏ完了を処理するステップを含んでいる方法に関する。
【００１５】
別の特徴は、第１のチャンネルのエンジンがインアクチブであるか否かを検出し、第１のチャンネルのエンジンがインアクチブであるならば、第２のチャンネルのエンジンからの入力／出力（Ｉ／Ｏ）完了を第１のチャンネルのランダムアクセスメモリに記憶し、第１のチャンネルのランダムアクセスメモリ中のＩ／Ｏ完了を処理することを含んでいる方法に関する。
【００１６】
別の特徴は、複数のデータパスから入力／出力（Ｉ／Ｏ）完了を受信し、複数のレジスタ中にＩ／Ｏ完了を記憶し、各レジスタは予め定められたデータパスからＩ／Ｏ完了を記憶するように構成され、レジスタからＩ／Ｏ完了をランダムアクセスメモリの複数の論理ブロックに転送し、各論理ブロックは予め定められたデータパスからＩ／Ｏ完了を記憶するように構成されているステップを含んでいる方法に関する。
【発明を実施するための最良の形態】
【００１７】
１以上の実施形態の詳細について添付図面によって以下説明する。他の特徴および利点は説明および図面と、特許請求の範囲から明白であろう。  
種々の図面の同一の参照符号は同一のエレメントを示している。
【００１８】
図１は、スーパーチャージチャンネルシステムとして作用するように構成されたデュアルチャンネルシステム100の１実施形態を示している。システム100は２つの周辺コンポーネントインターフェース（ＰＣＩ）受信／送信（Ｒｘ／Ｔｘ）直接メモリアクセス（ＤＭＡ）ポートまたはエンジン102A、102B、２つのリンク（例えばファイバチャンネル）Ｒｘ／Ｔｘ  ＤＭＡポートまたはエンジン104A、104Bと、２つの完了ＲＡＭインターフェース論理装置106A、106Bと、２つの完了ＲＡＭ108A、108Bと、メッセージ区域110A、110Bと、データが堅密に結合されたメモリ（ＤＴＣＭ）ポート112A、112Bと、プロセッサ114A、114Bとを含んでいる。システム100は図１に示された素子の代わりにまたは追加して別の素子を含んでいてもよい。
【００１９】
ＰＣＩ  Ｒｘ／Ｔｘ  ＤＭＡエンジン102A、102Bは（ＰＣＩバスを介して）ホストメモリ140と外部の中間メモリ120（図６の外部メモリ605と同一）との間でデータを転送する。メモリ120はシステム100のオンまたはオフのＡＳＩＣである。リンクＲｘ／Ｔｘ  ＤＭＡエンジン104A、104Bは中間メモリ120とファイバチャンネルリンク／インターフェース150との間でデータを転送する。ファイバチャンネルリンク／インターフェース150はＮ−ポートまたはＬ−ポート或いはＮＬ−ポートとも呼ばれる。
【００２０】
システム100はチャンネルＡ部分（側）101AとチャンネルＢ部分（側）101Bとを含んでいる。各“チャンネル”101はＰＣＩ  Ｒｘ／Ｔｘ  ＤＭＡエンジン102、リンクＲｘ／Ｔｘ  ＤＭＡエンジン104、完了RAMインターフェース論理装置106、完了ＲＡＭ108、プロセッサ114を含んでいる。
【００２１】
ＰＣＩおよびファイバチャンネルＤＭＡはここでは例として使用されている。他の構成では、システム100は他のタイプのバス、ネットワークまたはプロトコルと共に使用されることができる。
【００２２】
１実施形態では、プロセッサ114A、114BはＡＲＭ社により開発されたＡＲＭ９４６コアプロセッサであるが、他のタイプのプロセッサが使用されてもよい。プロセッサ114A、114BはＡＲＭ９４６に限定されない。
【００２３】
［データ転送］  
データ転送は２ステッププロセスであってもよい。“送信パス”では、ＰＣＩ  ＤＭＡエンジン102Aまたは102Bの一方がＰＣＩバスを介してＰＣＩ側のホストメモリ140から中間メモリ120へデータを転送する。リンクＤＭＡエンジン104Aまたは104Bの１つはその後、中間メモリ120からファイバチャンネルリンク／インターフェース150へデータを転送する。
【００２４】
“受信パス”では、リンクＤＭＡエンジン104Aまたは104Bの一方がファイバチャンネルリンクインターフェース150から中間メモリ120へデータを転送する。ＰＣＩ  ＤＭＡエンジン102Aまたは102Bはその後、中間メモリ120からＰＣＩ側のホストメモリ140へデータを転送する。
【００２５】
［Ｉ／Ｏ完了］  
データがエンジン102A、102B、104Aまたは104Bの１つにより中間メモリ120に適切に記憶され、またはそこから検索されるとき、エンジン102A、102B、104Aまたは104Bは対応する“Ｉ／Ｏ完了”通知（通告）を対応する完了ＲＡＭインターフェース論理装置106Aまたは106Bへ出力する。
【００２６】
“Ｉ／Ｏ完了”は入力（Ｉ）または出力（Ｏ）動作が適切に完了し、またはエラーで完了するときのことである。Ｉ／Ｏの例には、（１）ホストメモリ140から中間メモリ120へデータを転送し（送信パス）、（２）中間メモリ120からホストメモリ140へデータを転送し（受信パス）、（３）中間メモリ120からリンク150へデータを転送し（送信パス）、（４）リンク150から中間メモリ120へデータを転送する（受信パス）ことが含まれている。プロセッサ114Aまたは114Bの一方は各動作が適切に完了するときを知る必要がある。プロセッサ114はまた動作が完了したがエラーを有しているか否かを知る必要があり、エラーの回復方法が呼出されることができる。
【００２７】
図１はプロセッサ114A、114Bの一方または両者がＲＡＭ108Aまたは108Bに記憶されたＩ／Ｏ完了を処理する態様を示している。
【００２８】
第１の構成では、ハードウェアはモード制御ビットをファームウェアへ提供するように構成され、ここでモード制御ビットは単一のチャンネルモード、デュアルチャンネルモードまたはスーパーチャージモードにシステム100を設定する。
【００２９】
第２の構成では、ハードウェアおよび／またはファームウェアはシステム100を単一のチャンネルモード、デュアルチャンネルモードおよび／またはスーパーチャージモード間で切換える。例えば、ハードウェアまたはファームウェアはＤＭＡエンジン102と104の１セット（例えば102Aと104B）がアイドルであるか否かをダイナミックに決定し、単一のチャンネルモードからスーパーチャージモードへ切換える。
【００３０】
［単一のチャンネルモード］  
非スーパーチャージの“単一のチャンネル”モードでは、“送信”と“受信”パスは両者ともＩ／Ｏ完了通知を処理するために１“チャンネル”101で同時に動作している。したがって、ただ１つのプロセッサ114がＩ／Ｏ完了の処理全体を制御している。単一のチャンネルモードでは、１つのチャンネル101だけが動作可能であり、“他方のチャンネル”101は動作可能ではなく、すなわちアイドルである。“動作可能ではない”チャンネルは処理されるＩ／Ｏ完了がないチャンネル101として規定される。
【００３１】
［デュアルチャンネルモード］  
“デュアルチャンネルモード”では、両チャンネル101A、101Bは送信および受信動作の両者を同時に独立して実行している。両チャンネルA 101AおよびB 101Bはまた同時にＩ／Ｏ完了を処理している。基本的に、“デュアルチャンネル”モードは単一のチャンネル動作が両チャンネルで行われているときである。
【００３２】
非スーパーチャージの“単一のチャンネル”と“デュアルチャンネル”モードでは、Ｉ／Ｏ完了はただ１つの完了ＲＡＭ108にポストされ、これはプロセッサのＤＴＣＭポートへ接続される。
【００３３】
［スーパーチャージモード］  
チャンネル101Aまたは101Bの１つだけが単一のチャンネルモードで動作しているとき、他方のチャンネルは動作可能ではない状態である。動作可能ではないチャンネルの処理リソースは使用されていない。
【００３４】
モード制御ビット（または単一のチャンネルモードを検出するハードウェアまたはファームウェア）にしたがって、プロセッサ114A、114BはＩ／Ｏ処理速度を増加し、性能を高めるために“スーパーチャージ”モードを付勢することができる。スーパーチャージモードでは、アクチブチャンネル101は動作可能ではないチャンネル101からハードウェアコンポーネントを使用する。特に、各Ｒｘ／Ｔｘ  ＤＭＡエンジン102Aと104A（またはチャンネルＢがアクチブならば102B、104B）はＰＣＩおよびリンクI／O完了通知を完了ＲＡＭ108Aと108Bへ書込み／ポストする。この特徴はプロセッサ114Aまたは114BがＩ／Ｏ完了をアクセスし、それに続く処理動作（即ち次のＤＭＡ段）のためのＩ／Ｏを準備し、もしもあるならば、他のプロセッサ114にその後の処理動作のためのＩ／Ｏを準備するように通知することを可能にする。
【００３５】
この特性はＩ／Ｏ処理のボトルネックを防止する。Ｉ／Ｏを生成する（即ち最初にＤＭＡ動作をセットアップする）プロセッサ114は、ＤＭＡ動作が完了するとき、Ｉ／Ｏ完了通知の事後処理中に係わる必要はない。その代わりに、ＤＭＡ完了はファームウェアに関与せずに動作を開始するために他のプロセッサ114に対する完了ＲＡＭ108へ直接送られる。
【００３６】
“スーパーチャージ”モードでは、プロセッサ114A、114Bの両者は単一のアクチブチャンネル101を制御し、即ち両方のプロセッサ114A、114Bは単一のアクチブチャンネルのＩ／Ｏ完了で動作できる。スーパーチャージモードにはアイドルチャンネルは存在しない。しかしながら、以下説明するように、選択される構造にしたがって、使用されていないハードウェアが幾つか存在する。
【００３７】
スーパーチャージモードはプロセッサ114A、114Bが処理動作を分割するために使用される態様においてフレキシブルである。各Ｒｘ／Ｔｘ  ＤＭＡエンジン102、104からの両完了ＲＡＭ108A、108BへのＩ／Ｏ完了通知の書込みはシステム100のファームウェアが最適な解決策を決定するために異なる構造で実験することを可能にする。
【００３８】
スーパーチャージモード構造では、ハードウェアまたはファームウェアはＰＣＩ  ＴｘおよびＲｘ  ＤＭＡ動作からＩ／Ｏ完了を処理するために１つのプロセッサ114Aを専用にし、その一方で他方のプロセッサ114BはファイバチャンネルリンクのＴｘとＲｘ  ＤＭＡ動作からのＩ／Ｏ完了を処理するために専用にされる（以下説明する図６参照）。しかしながら、システム100はＰＣＩ  ＴｘとＲｘ  ＤＭＡ動作を処理する１つのプロセッサ114と、リンクＴｘとＲｘ  ＤＭＡ動作を管理する他のプロセッサ114に限定されない。
【００３９】
別のスーパーチャージモード構造では、ハードウェアまたはファームウェアは一方のプロセッサ114Aがホストメモリ140からファイバチャンネルリンク／インターフェース150までの“送信パス”全体（即ちＰＣＩ  Ｔｘ  ＤＭＡとリンクＴｘ  ＤＭＡ）を制御することを可能にし、他方のプロセッサ114Bがファイバチャンネルリンク／インターフェース150からホストメモリ140までの“受信パス”全体（即ちリンクＲｘ  ＤＭＡとＰＣＩ  Ｒｘ  ＤＭＡ）を制御することを可能にするように構成されている。
【００４０】
別のスーパーチャージモード構造では、ハードウェアまたはファームウェアは１つのプロセッサ114をＰＣＩ  ＴＸとＮＬ−ポートＲｘの処理専用とし、他方のプロセッサ114をＰＣＩ  ＲＸとＮＬ−ポートＴｘの処理専用とする。
【００４１】
ハードウェアまたはファームウェアはまたこれらの構造の可変度を許容する。
【００４２】
プロセッサ114AがＰＣＩ  Ｔｘ  ＤＭＡ動作を終了されるとき、１つのプロセッサ114AがＰＣＩ  ＴｘとＲｘ  ＤＭＡ動作を制御するスーパーチャージ構造では、プロセッサ114Aは他方のプロセッサ114Bにデータがファイバチャンネルリンク／インターフェース150へ送信する準備がされていることを通知するため、ライン130Bを介してメッセージを（リンクＴｘとＲｘ  ＤＭＡ動作を制御する）他方のプロセッサ114Bへ送信する。
【００４３】
システム100はＩ／Ｏ完了通知を記憶するため、ＲＡＭ108A、108Bとして低い待ち時間でゼロ待機状態のＲＡＭを使用し、それによりプロセッサ114Aまたは114Bのいずれかは迅速に次のＤＭＡ段に対するＩ／Ｏを準備することができる。ゼロ待機状態ＲＡＭ108A、108Bはプロセッサ114A、114BによりＲＡＭアクセス時間を減少する。低い待ち時間でゼロ待機状態のＲＡＭおよび他の特定化されたハードウェアは毎秒当りのＩ／Ｏ完了数（ＩＯＰＳ）を改良するために高い性能を与える手段を提供する。
【００４４】
別のシステムでは、ソフトウェアは高い待ち時間のメモリ（待ち状態のメモリ）を使用して１つのプロセッサから別のプロセッサへＩ／Ｏ完了メッセージをマニュアルで移動する。このタイプの別のシステムは低い性能を生じる。
【００４５】
［プロセッサ間の通信］  
２つのプロセッサ114A、114Bとの間の通信は少なくとも２つの方法で行われる。第１に、ライン130A、130Bは２つのプロセッサ114A、114Bの間に高速度で効率的な通信交換機構を設けることができる。ライン130A、130Bはデータ処理速度を改善する。ライン130A、130Bは各プロセッサ114が単一のワードまたは８つのワードのバーストを他のプロセッサのゼロ待機状態完了ＲＡＭ108へ書込むことを可能にする。
【００４６】
例えば、スーパーチャージモードでは、ＰＣＩ  ＴＸ／ＲＸエンジン102AとリンクＴｘ／Ｒｘエンジン104AからのＤＭＡ  Ｉ／Ｏ完了はプロセッサの完了ＲＡＭ108A、108Bとの両者にポストされる。１つのプロセッサ114AがＩ／Ｏ完了を処理するとき、プロセッサ114Aはライン130Bを介して他のプロセッサ114Bへメッセージを送信することができる。プロセッサ114A、114B間の通信メッセージは“プロセッサＡが特定のＩ／ＯのＤＭＡデータを完了し、Ｉ／Ｏが次の処理ステップの準備がされている”ような情報を伝送する。システム100は“スーパーチャージモード”で動作しているとき、ライン130A、130Bを介して２つのＡＲＭプロセッサ114A、114B間での効率的なメッセージの交換は劇的にＩ／Ｏ処理速度を改良する。
【００４７】
第２に、各プロセッサ114は図６および７により以下説明するように、ドアベルレジスタと制御論理装置602A、602Bとの使用により他のプロセッサに通知することができる。
【００４８】
［制御論理装置およびＲＡＭ］  
図２は、図１のシステム100の各側101A、101B中に設けられている完了制御論理装置200およびＤＴＣＭ  ＲＡＭ214の１実施形態を示している。制御論理装置200は５つのデータパス、即ちファイバチャンネル受信パスＦＲｘＱ240、ファイバチャンネル送信パスＦＴｘＱ242、ＰＣＩ受信パスＤＸＢＲｘ244、ＰＣＩ送信パスＤＸＢＴｘ246、および他のＡＲＭプロセッサ114からの書込みパス130に結合されている。制御論理装置200はシステムクロックライン（sysclk）、システムリセットライン（sysrst）、“データが堅密に結合されたメモリ”（ＤＴＣＭ）ポート112、ＡＲＭプロセッサ114へのインターフェース262にもまだ結合されている。図１および２に示されているように、インターフェース／信号ライン262はＲＡＭインターフェース論理装置（図１では106、図２では200）とＡＲＭプロセッサ114との間である。
【００４９】
図２のＤＴＣＭ  ＲＡＭ214は図１では完了ＲＡＭ108Aとメッセージ区域110A（または完了ＲＡＭ108Bとメッセージ区域110B）に対応する。図２では、データが堅密に結合されたメモリ（ＤＴＣＭ）ポート112はＡＲＭプロセッサ114がＤＴＣＭ  ＲＡＭ214と通信することを可能にする。ＤＴＣＭ  ＲＡＭ214はＡＲＭプロセッサ114A、114B内の専用のＤＴＣＭポート112とインターフェースする。“ＤＴＣＭ”はプロセッサのＤＴＣＭポートプロトコルをサポートするメモリとして規定されてもよい。ＤＴＣＭポート112はＡＲＭプロセッサ114に組込まれるので、プロセッサのメモリに対するアクセス時間は劇的に改良される。
【００５０】
図２の完了制御論理装置200は複数のマルチプレクサ202、204、206、208、210、複数のレジスタ250−257、仲裁装置212、ＡＲＭとＣＲデータおよびアドレスデコーダ226（“ＣＲ”は完了ＲＡＭを表す）、ｐｕｔ＿ｃｔｌ制御装置228、別の仲裁装置230、ＣＲレジスタ232（“ＣＲ”は完了ＲＡＭを表す）を含んでいる。制御論理装置200は図２に示されているエレメントに加えて、またはその代わりに他のエレメントを含んでいてもよい。制御装置228は４つのプットポインタを追跡する。
【００５１】
レジスタシンボル250−257は単一ビットレジスタとして示されているが、レジスタシンボル250−257は任意の所望の数のビットを記憶するように構成されたレジスタを表している。第５のレジスタ257は示されているデコーダ226に結合されているかまたはデコーダ226内である。
【００５２】
１実施形態では、ＤＴＣＭ  ＲＡＭ214は２つの読取りポートと２つの書込みポートを有する。ＤＴＣＭ  ＲＡＭ214は同期ＲＡＭである。１構造では、ＲＡＭ214は１０２４×３２ＲＡＭであるが、種々の他のワード長と任意の数のワードを有するＲＡＭが使用されてもよい。
【００５３】
１実施形態ではＤＴＣＭ  ＲＡＭ214はＦＲＸＱｕｅｕｅ完了ブロック216、ＦＴＸＱｕｅｕｅ完了ブロック218、ＤＸＢＲｘ完了ブロック220、ＤＸＢＴｘ完了ブロック222のような（“待ち行列”または“区画”とも呼ばれる）複数の論理ブロックに分割されている。これらのブロック216、218、220、222は図１のＲＡＭ108に対応する。他のプロセッサからのメッセージブロック110はＤＴＣＭ  ＲＡＭ214の別の区画である。各ブロックは３２、６４、１２８または７６８エントリのような任意の所望の数のエントリを有してもよい。
【００５４】
各ブロックはそのそれぞれのソースからＩ／Ｏ完了を記憶するように動作する。例えばＦＲＸＱｕｅｕｅ完了ブロック216はファイバチャンネルリンク受信ＤＭＡ動作からＲｘ  Ｉ／Ｏ完了を記憶する。Ｒｘ  Ｉ／Ｏ完了はファイバチャンネルリンク／インターフェース150から中間メモリ120へ転送されるデータに関する。別の例として、ＤＸＢＲｘ完了ブロック220はＰＣＩ受信ＤＭＡ動作からのＩ／Ｏ完了を記憶する。
【００５５】
制御論理装置200は各Ｉ／Ｏ完了がただ１つのＲＡＭブロック216、218,220、222またはブロックが十分なスペースを有するならば110に書込まれることを可能にするように構成されている。制御論理装置200はＩ／Ｏ完了がＤＴＣＭ  ＲＡＭ214へ書込まれるときはいつでも、プロセッサ114へプロセッサ中断を発生する。
【００５６】
ＲＡＭブロックがフルであり、新しいＩ／Ｏ完了が到着するならば、新しいＩ／Ｏ完了はデータをＤＴＣＭ  ＲＡＭ214に重書きしてはならない。その代わりに、制御論理装置200はデータソースが新しく到着するＩ／Ｏ完了を最初に、レジスタ250−257のようなレジスタへ書込むことを可能にする。その後、制御論理装置200はデータをＤＴＣＭ  ＲＡＭ214へ書込む。
【００５７】
レジスタが既に新しいＩ／Ｏ完了で満たされているならば、レジスタは新しいデータを記憶する準備がされていない可能性がある。エラーフラグは制御論理装置200またはファームウェアにより断定され、ソースはＩ／Ｏ完了を再度、後に、再送信するように命令される。
【００５８】
［ＲＡＭ動作］  
システムのリセット後、完了ＲＡＭ制御論理装置200は５つのデータパス240−248に結合するデータソースへ５つのＲＥＡＤＹ信号を発生する。セットＲＥＡＤＹ信号を検出するとき、各データソースはそれがＤＴＣＭ  ＲＡＭ214へ書込むためのデータ（Ｉ／Ｏ完了）を有するならば、書込みエネーブル信号を発生する。５つのデータパス240−248は一度、書込みエネーブル信号が断定されると、５つの異なる“ｄａｔａｉｎ＿ｒｅｇ”レジスタ250−257へ第１のデータを送信し始める。レジスタ250−257が満たされるとき、ＲＥＡＤＹ信号はデータソースがさらにデータを“ｄａｔａｉｎ＿ｒｅｇ”レジスタ250−257へ書込まないように宣言を無効にする（deassert）。
【００５９】
異なるソースからの書込みエネーブル信号とデータ信号（Ｉ／Ｏ完了）は時には、完了ＲＡＭ制御論理装置200の動作速度と比較して異なる速度（クロックドメイン）で送信される。例えばＤＸＢ受信パス244（ＰＣＩ受信）からのデータ信号（Ｉ／Ｏ完了）は３３ＭＨｚ、６６ＭＨｚまたは１３３ＭＨｚで受信される。リンクＦＲｘＱパス240（ファイバチャンネルリンク受信）からのデータは２００ＭＨｚクロックに同期される。リンクＦＴｘＱパス242（ファイバチャンネルリンク送信）からのデータは１０６ＭＨｚクロックに同期される。ＡＲＭプロセッサはＩ／Ｏ完了またはプロセッサ間メッセージを２００ＭＨｚクロックでポストする。これらの信号が同期されていないならば、システム100は重要な完了情報を失う可能性がある。システム100は信号が処理される前に、これらの異なる信号を共通のクロックドメインへ同期するか再クロックするように構成されている。
【００６０】
レジスタ250−257が満たされるとき、制御論理装置200は“ｄａｔａｉｎ＿ｒｅｇ”レジスタ250−257のデータを特別なＲＡＭブロック216―222、110へ移動するか否かを決定する。特別なＲＡＭブロック216―222、110が満たされていないならば、制御論理装置200はデータを“ｄａｔａｉｎ＿ｒｅｇ”レジスタから特別なＲＡＭブロック216―222、110へ移動する。制御論理装置200はまた関連する“ｄａｔａｉｎ＿ｒｅｇ”レジスタが次のＩ／Ｏ完了メッセージを記憶する準備がされていることを示すためにＲＥＡＤＹ信号をソースへ通知する。
【００６１】
特定のＲＡＭブロック216―222、110が満たされているならば、制御論理装置200は“ｄａｔａｉｎ＿ｒｅｇ”レジスタのデータを特別なＲＡＭブロック216―222、110へ移動しない。ソースへのＲＥＡＤＹ信号は低アクチブの状態で維持される。
【００６２】
ソースがデータをソースの関連する“ｄａｔａｉｎ＿ｒｅｇ”レジスタに書込みを続けようとするならば、先にレジスタにロードされたデータは重書きされる。制御論理装置200はフラグを設定し、または中断信号をソースへ送信する。ソースはデータが崩壊されるときと、崩壊されるデータを知っている。ソースは後にデータを再送信する。この場合、ＤＴＣＭ  ＲＡＭ214のデータは重書きされない。
【００６３】
５つのデータパス240−248はＤＴＣＭ  ＲＡＭ214の５つの異なるブロック216―222、110にアクセスしようとする。５つの異なるレジスタ250−257は５つの異なるソースからデータを記憶するように構成されている。ＰＣＩ  ＤＭＡ102と、ＬＩＮＫ  ＤＭＡ104と、ＡＲＭプロセッサ114とが複数のデータパス240−248を介して同時にＩ／Ｏ完了をＤＴＣＭ  ＲＡＭ214へ書込もうとするとき、制御論理装置200はデータ崩壊の可能性を克服することができる。
【００６４】
全ての５つのレジスタ250−257がロードされるとき、仲裁装置212はＤＴＣＭ  ＲＡＭ214へ最初に書込まれるレジスタデータを決定する。仲裁装置212はデータを異なるＲＡＭブロック216、218、220、222、110へ移動するために、ラウンドロビン方法のような迅速で公正な仲裁方法を使用してもよい。仲裁方法は異なるソースからのデータがＲＡＭブロック216―222、110へ公正で迅速なアクセスすることを確実にする。
【００６５】
制御論理装置200はまた特定のデータソースのＲＡＭ書込みサイクルが第２の書込みが同一のデータソースにより試みられる前に完了することを確実にすることによってデータの崩壊の可能性を克服する。中断はＩ／Ｏ完了の通知が重書きされたならば、データソースとファームウェアに通知するために制御論理装置100またはファームウェアによって発生される。データソースは完了通知を再送信する。
【００６６】
別の方法では、ＲＡＭブロック216―222、110および／またはレジスタ250−257が満たされるとき、それぞれのＤＭＡへのＲＥＡＤＹ信号（図２の“ｒｄｙ”）は完了状態の書込みを阻止するためにインアクチブになる。ＤＭＡはＲＥＡＤＹ信号が再度アクチブになるまで待機モードにされる。その後Ｉ／Ｏ完了状態は完了ＲＡＭまたはレジスタ250―257へ書込まれる。
【００６７】
［ＲＡＭポインタ］  
図３は、図２のＲＡＭ214からのＲＡＭブロック300、ファームウェア306、ゲットポインタフィールド302、プットポインタフィールド304、プットポインタ304のための制御論理装置308の１実施形態を示している。ファームウェア306はメモリに記憶され、図２の制御論理装置200の制御装置またはプロセッサにより実行される。代わりにファームウェア306は図２のプロセッサ114により実行されてもよい。制御論理装置308は図２の完了ＲＡＭ制御論理装置200を表している。レジスタ310はゲット／読取りポインタ302とプット／書込みポインタ304を記憶するように構成されている。図３のＲＡＭブロック300は図２のＲＡＭブロック216−222の１つを表している。図２の各ＲＡＭブロック216−222はその固有のゲットおよびプットポインタ302、304に関連されている。
【００６８】
図２の第１の４つのＲＡＭブロック216、218、220、222がフルであるか否かを決定するために、ＲＡＭ制御論理装置200は第１の４つのＲＡＭブロック216―222に対する４つのプットポインタを管理する。Ｉ／Ｏ完了メッセージが対応するＲＡＭブロック300（図２のＲＡＭブロック216、218、220または222の１つ）に書込まれるとき、ｐｕｔ＿ｃｔｌ制御装置228はプットポインタ304をインクリメントする（図３）。
【００６９】
ｐｕｔ＿ｃｔｌ制御装置228はプットポインタ値をＣＲ  Ｒｅｇレジスタ232へ送り、ここで特定のＲＡＭブロック300に対応するプットポインタ304とゲットポインタ302との間で比較が行われる。プットポインタ304がゲットポインタ302よりも大きいとき、中断がファームウェア306に対して発生され、少なくとも１つの完了メッセージが完了ＲＡＭブロック300に存在することを示す。
【００７０】
ファームウェア306がＩ／Ｏ完了メッセージを検索するとき、ファームウェア306は対応するゲットポインタ302をインクリメントする。ファームウェア306は全ての未処理のメッセージを検索し、適切なゲットポインタ302をインクリメントするとき、ゲットポインタ302はプットポインタ304に等しく、中断状態は除去される。
【００７１】
ＲＡＭブロック300のゲットポインタ302とプットポインタ304はファームウェア306により容易に追跡される。図３では、制御論理装置308はブロック300への各書込み動作が完了した後、１だけプットポインタ304をインクリメントする。プットポインタ304がＲＡＭブロック300の最後（最後のエントリＥＮＴＲＹ  ｎ）に到達するとき、制御論理装置308はプットポインタ304にＲＡＭブロック300の最初（“ＥＮＴＲＹ０”）にラップバックさせる。
【００７２】
ファームウェア306は図３のゲットポインタ302のような４つのゲットポインタを管理し、これは第１の４つのＲＡＭ区画216−222内のエントリを指向する。ファームウェア306は各読取り動作が完了した後、１だけゲットポインタ302をインクリメントする。ゲットポインタがＲＡＭブロック300の最後（最後のエントリ“ＥＮＴＲＹ  ｎ”）に到達するとき、ファームウェア306はゲットポインタ302に最初（“ＥＮＴＲＹ０”）にラップさせる。
【００７３】
データ（Ｉ／Ｏ完了）がＲＡＭブロック300に書込まれるとすぐに、中断はＲＡＭ制御論理装置300により発生される。ファームウェア306はＤＴＣＭポート112を通してＲＡＭブロック300からプロセッサ114へデータを読出し始める。
【００７４】
制御論理装置308またはファームウェア306は各ＲＡＭブロック216−222の状態を追跡し満たされる完了ＲＡＭ数を予測するためプットおよびゲットポインタ304、302の値を使用する。ファームウェア306または制御論理装置308はまたＲＡＭブロック300がフルまたは空であるときを予測するためにプットおよびゲットポインタ302、304を使用する。例えば、プットポインタ304がゲットポインタ302マイナス１に等しい（Ｐｕｔ＝Ｇｅｔ−１）ならば、ブロックまたは待ち行列300はフルである。この状態は使用されることができない１つの利用可能な位置がＲＡＭ214に存在し、最後のエントリのデータがブロック216、218、220、222、110に関連する“ｄａｔａｉｎ＿ｒｅｇ”レジスタ250、252、254、256、257（図２）に記憶されることを意味している。最後のＲＡＭ位置が書込まれたならば、プットおよびゲットポインタ304、302は等しく、実際にブロック300がフルであるときブロック300が空であることを示す。この理由で、特定のＲＡＭブロック300中でスペースが利用可能になるまで、最後のＲＡＭエントリは外部レジスタに記憶される。
【００７５】
プットおよびゲットポインタ304、302が等しく、即ちｐｕｔ＝ｇｅｔならば、ブロック300で、ブロックまたは待ち行列300は空である。チップリセット後、プットおよびゲットポインタ304、302はデフォルト状態の値に等しい。
【００７６】
［別のプロセッサからのメッセージの記憶］  
図２の第５のＲＡＭ区画／ブロック110は図１のメッセージ区域110A、110Bの１つを表している。第５のＲＡＭブロック110は“他のプロセッサ”からのメッセージを記憶するように構成されている。例えば、図１のメッセージ区域110Aはプロセッサ区域114Bからのメッセージを記憶するように構成され、メッセージ区域110Bはプロセッサ区域114Aからのメッセージを記憶するように構成されている。図１のチャンネルＢのプロセッサ114BはチャンネルＡのＲＡＭ108Aの第５のＲＡＭ区画ブロック110（図１のメッセージ区域110A）へメッセージを書込むためにＡＲＭプロセッサインターフェース248のＡＲＭレジスタアクセスを使用する。
【００７７】
デコーダ226はＲＡＭブロック101にＩ／Ｏ完了メッセージを書込むために初期書込みアドレスを与える。Ｉ／Ｏ完了メッセージが一度ブロック110に書込まれると、デコーダ226は次の書込み動作のために書込みアドレスをインクリメントする。次のメッセージの書込みサイクルでは、プロセッサインターフェース248はアドレスを与える必要はない。ハードウェア200はそれ故、新しいメッセージが記憶されるべき場所を示す情報を含んでいる。
【００７８】
チャンネルＢのプロセッサ114Bがメッセージの書込みを完全に新しいアドレスへ通報するならば、プロセッサ114Bはメッセージとアドレスの両者を提供しなければならない。図１および２のチャンネルＢの“ＤＴＣＭ”ポート112BはチャンネルＢの固有のメッセージと完了データを検索するために使用される。同様に、図１のチャンネルＡの“ＤＴＣＭ”ポート112AはチャンネルＡの固有のメッセージと完了データの検索に使用される。
【００７９】
ＤＴＣＭは物理的にプロセッサの非常に近くに位置されることができるので、システム100はゼロ待機状態アクセスを管理できる。
【００８０】
図４は図１のシステム100を使用するプロセスの１実施形態を示している。ブロック400では、システム100は単一のチャンネル101Aまたは101Bが作動中であり、他のチャンネルがアイドルまたは動作できないことを検出する。システム100は“スーパーチャージモード”に入る。ブロック402で、第１のプロセッサ（114Aと仮定する）はホストメモリ140と中間メモリ120との間のデータ転送からのＩ／Ｏ完了のような１つのタイプのＩ／Ｏ完了を処理することができる。第２のプロセッサ（114Bと仮定する）は中間メモリ120とファイバチャンネルリンク／インターフェース150との間のデータ転送からのＩ／Ｏ完了のような別のタイプのＩ／Ｏ完了を処理することができる。
【００８１】
ブロック404では、第１のプロセッサ114AはＩ／Ｏ完了を終了し、第２のプロセッサ114Bに次の処理段のＩ／Ｏを準備するように通知するため、メッセージを第２のプロセッサへ送信する。
【００８２】
図５は図２、３の制御論理装置200およびＲＡＭ214を使用するプロセスの１実施形態を示している。ブロック500で、完了ＲＡＭ制御論理装置200は複数のＲＥＡＤＹ信号を複数のデータパス（例えば240−248）を介して複数のデータソースへ発生する。
【００８３】
ブロック502で、各データソースはセットＲＥＡＤＹ信号を検出し、データソースがＤＴＣＭ  ＲＡＭ214へ書込むためのデータ（Ｉ／Ｏ完了）を有するならば書込みエネーブル信号を発生する。
【００８４】
ブロック504で、一度書込みエネーブル信号が宣言されると、複数のデータパスはデータを複数のデータインレジスタ（例えば250−256）へ送信し始める。
【００８５】
ブロック506で、レジスタが満たされるとき、ＲＥＡＤＹ信号はデータソースがさらに多くのデータをデータインレジスタに書込まれることを阻止するため宣言が無効にされる。
【００８６】
ブロック508で、レジスタが満たされるとき、制御論理装置200はデータインレジスタからＤＴＣＭ  ＲＡＭ214へデータを移動するか否かを決定し、これは各ＲＡＭブロック216−222が満たされているか否かにしたがう。
【００８７】
ブロック510で、レジスタが満たされないならば、制御論理装置200はデータをＲＡＭブロックへ移動する。制御論理装置200はまた関連するデータインレジスタが次のデータセグメントを記憶する準備がされていることを示すためにソースへＲＥＡＤＹ信号を宣言する。
【００８８】
ブロック511で、５つのレジスタ250−256の全てまたはその幾つかがロードされるとき、仲裁装置212は最初にＤＴＣＭ  ＲＡＭ214へ書込まれるレジスタデータを決定する。仲裁装置212はＲＡＭ214への公生で迅速なアクセスのためのラウンドロビン方法を使用する。
【００８９】
ブロック512で、ＲＡＭブロック216―222がフルであるならば、制御論理装置200はデータインデータレジスタのデータをＲＡＭブロック216―222に移動しない。ソースへのＲＥＡＤＹ信号は低いアクチブの状態である。
【００９０】
ブロック514で、ソースがデータをソースの関連するデータインレジスタに書込みを続けようとする。レジスタが既にデータを記憶しているならば、制御論理装置200はフラグを設定し、または中断信号をソースへ送信する。
【００９１】
［ドアベルレジスタおよび制御論理装置］  
図６はスーパーチャージチャンネルモードで動作する２つのプロセッサ114A、114B、例えば単一のファイバチャンネルリンクを制御するため共に動作する２つのプロセッサ114A、114Bを有するシステム600の１実施形態を示している。システム600はＰＣＩ／Ｘインターフェース606、２つの完了ＲＡＭ108A、108B、リンクＲｘ／Ｔｘ  ＤＭＡエンジン104、ＰＣＩ  Ｒｘ／Ｔｘ  ＤＭＡエンジン102、２つのプロセッサ114A、114B、プロセッサ114A、114B間のドアベルレジスタおよび制御論理装置602A、602B、ＮＬ−ポートおよび並直列モジュール608、ＱＤＲ  ＲＡＭ制御装置604、ＱＤＲ外部メモリ605を含んでいる。
【００９２】
図７は、図６のプロセッサ間ドアベルレジスタおよび論理装置の１実施形態のブロック図である。図７はチャンネルＡのドアベルレジスタ704A、706A、708A、710Aのセット702Aと、チャンネルＢのドアベルレジスタ704B、706B、708B、710Bのセット702Bとの相互作用およびマッピングを示している。レジスタはドアベルレジスタＲＯ／ＲＣ704A、704B、ドアベルエネーブルレジスタＲ／Ｗ706A、706B、ドアベルの他チャンネルＲ／Ｗレジスタ708A、708B、ドアベルエネーブル他チャンネル読取り専用レジスタ710A、710Bを含んでいる。
【００９３】
図６および７はＤＴＣＭとドアベルレジスタ602A、602Bの動作全体を示している。チャンネルＡおよびＢのプロセッサ114A、114Bはドアベルレジスタと制御論理装置602A、602Bを通して通信できる。各プロセッサ114は他のプロセッサ114に重要な事象について通知するためにドアベルレジスタと制御論理装置602A、602Bとを使用する。
【００９４】
例えば、プロセッサＡ  114Aは１ビットをチャンネルＡのドアベルの他チャンネルレジスタ708Aへ書込むことによりプロセッサＢ  114Bを“リング（ring）する”ことができる。チャンネルＡのドアベルの他チャンネルレジスタ708Aは２つのレジスタ708Aと704Bとの間の矢印により示されているように、チャンネルＢのドアベルレジスタ704BとしてプロセッサＢのアドレス復号スペースへマップされる。したがって、チャンネルＡのドアベルの他チャンネルレジスタ708Aにビットを設定することにより、ビットをチャンネルＢのドアベルレジスタ704Bへ設定させる。
【００９５】
プロセッサＢ  114Bは適切なエネーブルビットをチャンネルＢのドアベルエネーブルレジスタ706Bに設定することによりドアベルレジスタ704Bの特定のドアベルビットで中断を発生することを可能にできる。プロセッサＢ  114Bはドアベルレジスタ704Bのビットセットを読取りクリアする。
【００９６】
プロセッサＡ  114Aは、レジスタ706BからチャンネルＡのドアベルエネーブル他チャンネルレジスタ710Aまでの矢印により示されているように、プロセッサＢのドアベルエネーブルレジスタ706Bの読取り専用能力を有する。
【００９７】
またプロセッサＢ  114BがプロセッサＡ  114Aをリングすることを可能にするレジスタ704A、706A、708B、710Bの対応するセットも存在する。したがってプロセッサＡ  114Aは特定のドアベルビットがプロセッサＢ  114Bにより設定されるときに中断を発生することもできる。
【００９８】
多数の実施形態を説明した。それにもかかわらず、種々の変更が本発明の技術的範囲を逸脱せずに行われることが理解されよう。したがって他の変更は特許請求の範囲に記載された技術的範囲内に含まれる。
【図面の簡単な説明】
【００９９】
【図１】スーパーチャージチャンネルシステムとして作用するように構成されたデュアルチャンネルシステムの１実施形態を示す図。
【図２】図１のシステムの各側に構成される完了制御論理装置および完了ＲＡＭの１実施形態を示す図。
【図３】図２のＲＡＭからのＲＡＭブロック、ゲットおよびプットポインタ、ファームウェア、レジスタ、完了ＲＡＭ制御論理装置の１実施形態を示す図。
【図４】図１のシステムを使用するプロセスの１実施形態を示す図。
【図５】図２および３の制御論理装置およびＲＡＭを使用するプロセスの１実施形態を示す図。
【図６】単一のチャンネルモードで動作するデュアルプロセッサの１実施形態を示す図。
【図７】プロセッサ間ドアベルレジスタの１実施形態のブロック図。
【図１】
2005513596.tif 000003
【図２】
2005513596.tif 000004
【図３】
2005513596.tif 000005
【図４】
2005513596.tif 000006
【図５】
2005513596.tif 000007
【図６】
2005513596.tif 000008
【図７】
2005513596.tif 000009
【国際調査報告】
2005513596.tif 000010