JP4499420B2 - スーパーチャージメッセージ交換装置 - Google Patents

スーパーチャージメッセージ交換装置 Download PDF

Info

Publication number
JP4499420B2
JP4499420B2 JP2003551680A JP2003551680A JP4499420B2 JP 4499420 B2 JP4499420 B2 JP 4499420B2 JP 2003551680 A JP2003551680 A JP 2003551680A JP 2003551680 A JP2003551680 A JP 2003551680A JP 4499420 B2 JP4499420 B2 JP 4499420B2
Authority
JP
Japan
Prior art keywords
ram
completion
processor
channel
dma
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.)
Expired - Fee Related
Application number
JP2003551680A
Other languages
English (en)
Other versions
JP2005513596A (ja
Inventor
リウ、マイケル
ローチ、ブラドレイ
ス、サム
フィアッコ、ピーター
Original Assignee
エミュレックス デザイン アンド マニュファクチュアリング コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エミュレックス デザイン アンド マニュファクチュアリング コーポレーション filed Critical エミュレックス デザイン アンド マニュファクチュアリング コーポレーション
Publication of JP2005513596A publication Critical patent/JP2005513596A/ja
Application granted granted Critical
Publication of JP4499420B2 publication Critical patent/JP4499420B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Description

本発明は、複数のソースからデータを受信し、処理するデータ処理システムに関する。
本出願は、2001年12月12日出願の米国特許出願第60/340,386号明細書(発明の名称“Supercharge Message Exchanger”)に対して優先権を主張しており、これは全体的に本出願で参考文献とされている。また、本出願は2002年12月10日出願の米国特許暫定出願(発明の名称“Supercharge Message Exchanger”)に対して優先権を主張している。
データ処理システムは複数のソースからデータを受信する。
メッセージ交換システムは2以上のプロセッサがさらに効率的に通信することを可能にするために提供され、これは入力/出力(I/O)処理速度を改良する。
1実施形態では、システムはI/O完了が2つのプロセッサに関連する2つのメモリにポストされることを可能にする。いずれかのプロセッサはI/O完了通知をアクセスでき、それに続く動作のためにI/Oを準備する。
1実施形態では、システムはDMAからのI/O完了通知とプロセッサ間のメッセージを記憶するためにゼロ待機状態のランダムアクセスメモリ(RAM)を使用する。ゼロ待機状態のRAMはRAMアクセス待ち時間を減少する。代わりに、システムは減少された性能でより多くの情報容量を実現するため待機状態で高い待ち時間のRAMを使用する。
複数の異なるソースが複数のデータパスにより同時にRAMに書込もうとするとき、システムはレジスタにデータを記憶することによりデータの崩壊の可能性を克服する。システムはまたRAMの複数の論理的区画への公正で迅速なアクセスを可能にする。また、レジスタはRAMがフルでありソースがRAMへ書込みを継続しようとするときデータ崩壊の可能性を克服する。
システムは異なるクロックドメインから発生するI/O完了を管理するように構成されている。例えば2つのI/O完了は周辺コンポーネントインターフェース(PCI)側から来てもよく、これは33MHz、66MHz、または133MHzで動作している。2つのI/O完了はファイバチャンネルリンク側から来てもよく、これは106MHzまたは200MHzクロックに同期されてもよい。ARMプロセッサは200MHzクロックでI/O完了またはプロセッサ間メッセージをポストする。
システムはRAMの空またはフル状態と、RAM中のフルである位置の数を追跡する。
さらに、システムはまたプロセッサに重要な事象について通知するためにドアベルレジスタを使用してもよい。ドアベルレジスタは第1のプロセッサが特定のドアベルビットを設定し、第2のプロセッサが特定のドアベルビットを読取りクリアすることを可能にする。第1のプロセッサはまた特定のドアベルビットが第2のプロセッサにより設定されるとき中断を発生することができる。
システムは用途特定集積回路(ASIC)またはフィールドプログラム可能なゲートアレイ(FPGA)装置中に構成されてもよい。
アプリケーションの1特徴は、第1のチャンネルと第2のチャンネルを備えたシステムに関する。第1のチャンネルは第1の直接メモリアクセス(DMA)エンジンと、第2のDMAエンジンと、第1のランダムアクセスメモリ(RAM)と、第1のプロセッサとを具備している。第2のチャンネルは第3のDMAエンジンと、第4のDMAエンジンと、第2のRAMと、第2のプロセッサとを具備している。
別の特徴はランダムアクセスメモリと、第1および第2のエンジンと、プロセッサとを具備するチャンネルに関する。ランダムアクセスメモリは入力/出力完了を記憶するように構成されている。第1および第2のエンジンは入力/出力完了をランダムアクセスメモリに送信するように構成されている。プロセッサはランダムアクセスメモリに記憶された入力/出力完了を処理するように構成されている。
別の特徴は、第2のチャンネルのエンジンからの入力/出力(I/O)完了を記憶するために第1のチャンネルのランダムアクセスメモリ(RAM)を構成し、第1のチャンネルのRAMのI/O完了を処理するステップを含んでいる方法に関する。
別の特徴は、第1のチャンネルのエンジンがインアクチブであるか否かを検出し、第1のチャンネルのエンジンがインアクチブであるならば、第2のチャンネルのエンジンからの入力/出力(I/O)完了を第1のチャンネルのランダムアクセスメモリに記憶し、第1のチャンネルのランダムアクセスメモリ中のI/O完了を処理することを含んでいる方法に関する。
別の特徴は、複数のデータパスから入力/出力(I/O)完了を受信し、複数のレジスタ中にI/O完了を記憶し、各レジスタは予め定められたデータパスからI/O完了を記憶するように構成され、レジスタからI/O完了をランダムアクセスメモリの複数の論理ブロックに転送し、各論理ブロックは予め定められたデータパスからI/O完了を記憶するように構成されているステップを含んでいる方法に関する。
1以上の実施形態の詳細について添付図面によって以下説明する。他の特徴および利点は説明および図面と、特許請求の範囲から明白であろう。
種々の図面の同一の参照符号は同一のエレメントを示している。
図1は、スーパーチャージチャンネルシステムとして作用するように構成されたデュアルチャンネルシステム100の1実施形態を示している。システム100は2つの周辺コンポーネントインターフェース(PCI)受信/送信(Rx/Tx)直接メモリアクセス(DMA)ポートまたはエンジン102A、102B、2つのリンク(例えばファイバチャンネル)Rx/Tx DMAポートまたはエンジン104A、104Bと、2つの完了RAMインターフェース論理装置106A、106Bと、2つの完了RAM108A、108Bと、メッセージ区域110A、110Bと、データが堅密に結合されたメモリ(DTCM)ポート112A、112Bと、プロセッサ114A、114Bとを含んでいる。システム100は図1に示された素子の代わりにまたは追加して別の素子を含んでいてもよい。
PCI Rx/Tx DMAエンジン102A、102Bは(PCIバスを介して)ホストメモリ140と外部の中間メモリ120(図6の外部メモリ605と同一)との間でデータを転送する。メモリ120はシステム100のオンまたはオフのASICである。リンクRx/Tx DMAエンジン104A、104Bは中間メモリ120とファイバチャンネルリンク/インターフェース150との間でデータを転送する。ファイバチャンネルリンク/インターフェース150はN−ポートまたはL−ポート或いはNL−ポートとも呼ばれる。
システム100はチャンネルA部分(側)101AとチャンネルB部分(側)101Bとを含んでいる。各“チャンネル”101はPCI Rx/Tx DMAエンジン102、リンクRx/Tx DMAエンジン104、完了RAMインターフェース論理装置106、完了RAM108、プロセッサ114を含んでいる。
PCIおよびファイバチャンネルDMAはここでは例として使用されている。他の構成では、システム100は他のタイプのバス、ネットワークまたはプロトコルと共に使用されることができる。
1実施形態では、プロセッサ114A、114BはARM社により開発されたARM946コアプロセッサであるが、他のタイプのプロセッサが使用されてもよい。プロセッサ114A、114BはARM946に限定されない。
[データ転送]
データ転送は2ステッププロセスであってもよい。“送信パス”では、PCI DMAエンジン102Aまたは102Bの一方がPCIバスを介してPCI側のホストメモリ140から中間メモリ120へデータを転送する。リンクDMAエンジン104Aまたは104Bの1つはその後、中間メモリ120からファイバチャンネルリンク/インターフェース150へデータを転送する。
“受信パス”では、リンクDMAエンジン104Aまたは104Bの一方がファイバチャンネルリンクインターフェース150から中間メモリ120へデータを転送する。PCI DMAエンジン102Aまたは102Bはその後、中間メモリ120からPCI側のホストメモリ140へデータを転送する。
[I/O完了]
データがエンジン102A、102B、104Aまたは104Bの1つにより中間メモリ120に適切に記憶され、またはそこから検索されるとき、エンジン102A、102B、104Aまたは104Bは対応する“I/O完了”通知(通告)を対応する完了RAMインターフェース論理装置106Aまたは106Bへ出力する。
“I/O完了”は入力(I)または出力(O)動作が適切に完了し、またはエラーで完了するときのことである。I/Oの例には、(1)ホストメモリ140から中間メモリ120へデータを転送し(送信パス)、(2)中間メモリ120からホストメモリ140へデータを転送し(受信パス)、(3)中間メモリ120からリンク150へデータを転送し(送信パス)、(4)リンク150から中間メモリ120へデータを転送する(受信パス)ことが含まれている。プロセッサ114Aまたは114Bの一方は各動作が適切に完了するときを知る必要がある。プロセッサ114はまた動作が完了したがエラーを有しているか否かを知る必要があり、エラーの回復方法が呼出されることができる。
図1はプロセッサ114A、114Bの一方または両者がRAM108Aまたは108Bに記憶されたI/O完了を処理する態様を示している。
第1の構成では、ハードウェアはモード制御ビットをファームウェアへ提供するように構成され、ここでモード制御ビットは単一のチャンネルモード、デュアルチャンネルモードまたはスーパーチャージモードにシステム100を設定する。
第2の構成では、ハードウェアおよび/またはファームウェアはシステム100を単一のチャンネルモード、デュアルチャンネルモードおよび/またはスーパーチャージモード間で切換える。例えば、ハードウェアまたはファームウェアはDMAエンジン102と104の1セット(例えば102Aと104B)がアイドルであるか否かをダイナミックに決定し、単一のチャンネルモードからスーパーチャージモードへ切換える。
[単一のチャンネルモード]
非スーパーチャージの“単一のチャンネル”モードでは、“送信”と“受信”パスは両者ともI/O完了通知を処理するために1“チャンネル”101で同時に動作している。したがって、ただ1つのプロセッサ114がI/O完了の処理全体を制御している。単一のチャンネルモードでは、1つのチャンネル101だけが動作可能であり、“他方のチャンネル”101は動作可能ではなく、すなわちアイドルである。“動作可能ではない”チャンネルは処理されるI/O完了がないチャンネル101として規定される。
[デュアルチャンネルモード]
“デュアルチャンネルモード”では、両チャンネル101A、101Bは送信および受信動作の両者を同時に独立して実行している。両チャンネルA 101AおよびB 101Bはまた同時にI/O完了を処理している。基本的に、“デュアルチャンネル”モードは単一のチャンネル動作が両チャンネルで行われているときである。
非スーパーチャージの“単一のチャンネル”と“デュアルチャンネル”モードでは、I/O完了はただ1つの完了RAM108にポストされ、これはプロセッサのDTCMポートへ接続される。
[スーパーチャージモード]
チャンネル101Aまたは101Bの1つだけが単一のチャンネルモードで動作しているとき、他方のチャンネルは動作可能ではない状態である。動作可能ではないチャンネルの処理リソースは使用されていない。
モード制御ビット(または単一のチャンネルモードを検出するハードウェアまたはファームウェア)にしたがって、プロセッサ114A、114BはI/O処理速度を増加し、性能を高めるために“スーパーチャージ”モードを付勢することができる。スーパーチャージモードでは、アクチブチャンネル101は動作可能ではないチャンネル101からハードウェアコンポーネントを使用する。特に、各Rx/Tx DMAエンジン102Aと104A(またはチャンネルBがアクチブならば102B、104B)はPCIおよびリンクI/O完了通知を完了RAM108Aと108Bへ書込み/ポストする。この特徴はプロセッサ114Aまたは114BがI/O完了をアクセスし、それに続く処理動作(即ち次のDMA段)のためのI/Oを準備し、もしもあるならば、他のプロセッサ114にその後の処理動作のためのI/Oを準備するように通知することを可能にする。
この特性はI/O処理のボトルネックを防止する。I/Oを生成する(即ち最初にDMA動作をセットアップする)プロセッサ114は、DMA動作が完了するとき、I/O完了通知の事後処理中に係わる必要はない。その代わりに、DMA完了はファームウェアに関与せずに動作を開始するために他のプロセッサ114に対する完了RAM108へ直接送られる。
“スーパーチャージ”モードでは、プロセッサ114A、114Bの両者は単一のアクチブチャンネル101を制御し、即ち両方のプロセッサ114A、114Bは単一のアクチブチャンネルのI/O完了で動作できる。スーパーチャージモードにはアイドルチャンネルは存在しない。しかしながら、以下説明するように、選択される構造にしたがって、使用されていないハードウェアが幾つか存在する。
スーパーチャージモードはプロセッサ114A、114Bが処理動作を分割するために使用される態様においてフレキシブルである。各Rx/Tx DMAエンジン102、104からの両完了RAM108A、108BへのI/O完了通知の書込みはシステム100のファームウェアが最適な解決策を決定するために異なる構造で実験することを可能にする。
スーパーチャージモード構造では、ハードウェアまたはファームウェアはPCI TxおよびRx DMA動作からI/O完了を処理するために1つのプロセッサ114Aを専用にし、その一方で他方のプロセッサ114BはファイバチャンネルリンクのTxとRx DMA動作からのI/O完了を処理するために専用にされる(以下説明する図6参照)。しかしながら、システム100はPCI TxとRx DMA動作を処理する1つのプロセッサ114と、リンクTxとRx DMA動作を管理する他のプロセッサ114に限定されない。
別のスーパーチャージモード構造では、ハードウェアまたはファームウェアは一方のプロセッサ114Aがホストメモリ140からファイバチャンネルリンク/インターフェース150までの“送信パス”全体(即ちPCI Tx DMAとリンクTx DMA)を制御することを可能にし、他方のプロセッサ114Bがファイバチャンネルリンク/インターフェース150からホストメモリ140までの“受信パス”全体(即ちリンクRx DMAとPCI Rx DMA)を制御することを可能にするように構成されている。
別のスーパーチャージモード構造では、ハードウェアまたはファームウェアは1つのプロセッサ114をPCI TXとNL−ポートRxの処理専用とし、他方のプロセッサ114をPCI RXとNL−ポートTxの処理専用とする。
ハードウェアまたはファームウェアはまたこれらの構造の可変度を許容する。
プロセッサ114AがPCI Tx DMA動作を終了されるとき、1つのプロセッサ114AがPCI TxとRx DMA動作を制御するスーパーチャージ構造では、プロセッサ114Aは他方のプロセッサ114Bにデータがファイバチャンネルリンク/インターフェース150へ送信する準備がされていることを通知するため、ライン130Bを介してメッセージを(リンクTxとRx DMA動作を制御する)他方のプロセッサ114Bへ送信する。
システム100はI/O完了通知を記憶するため、RAM108A、108Bとして低い待ち時間でゼロ待機状態のRAMを使用し、それによりプロセッサ114Aまたは114Bのいずれかは迅速に次のDMA段に対するI/Oを準備することができる。ゼロ待機状態RAM108A、108Bはプロセッサ114A、114BによりRAMアクセス時間を減少する。低い待ち時間でゼロ待機状態のRAMおよび他の特定化されたハードウェアは毎秒当りのI/O完了数(IOPS)を改良するために高い性能を与える手段を提供する。
別のシステムでは、ソフトウェアは高い待ち時間のメモリ(待ち状態のメモリ)を使用して1つのプロセッサから別のプロセッサへI/O完了メッセージをマニュアルで移動する。このタイプの別のシステムは低い性能を生じる。
[プロセッサ間の通信]
2つのプロセッサ114A、114Bとの間の通信は少なくとも2つの方法で行われる。第1に、ライン130A、130Bは2つのプロセッサ114A、114Bの間に高速度で効率的な通信交換機構を設けることができる。ライン130A、130Bはデータ処理速度を改善する。ライン130A、130Bは各プロセッサ114が単一のワードまたは8つのワードのバーストを他のプロセッサのゼロ待機状態完了RAM108へ書込むことを可能にする。
例えば、スーパーチャージモードでは、PCI TX/RXエンジン102AとリンクTx/Rxエンジン104AからのDMA I/O完了はプロセッサの完了RAM108A、108Bとの両者にポストされる。1つのプロセッサ114AがI/O完了を処理するとき、プロセッサ114Aはライン130Bを介して他のプロセッサ114Bへメッセージを送信することができる。プロセッサ114A、114B間の通信メッセージは“プロセッサAが特定のI/OのDMAデータを完了し、I/Oが次の処理ステップの準備がされている”ような情報を伝送する。システム100は“スーパーチャージモード”で動作しているとき、ライン130A、130Bを介して2つのARMプロセッサ114A、114B間での効率的なメッセージの交換は劇的にI/O処理速度を改良する。
第2に、各プロセッサ114は図6および7により以下説明するように、ドアベルレジスタと制御論理装置602A、602Bとの使用により他のプロセッサに通知することができる。
[制御論理装置およびRAM]
図2は、図1のシステム100の各側101A、101B中に設けられている完了制御論理装置200およびDTCM RAM214の1実施形態を示している。制御論理装置200は5つのデータパス、即ちファイバチャンネル受信パスFRxQ240、ファイバチャンネル送信パスFTxQ242、PCI受信パスDXBRx244、PCI送信パスDXBTx246、および他のARMプロセッサ114からの書込みパス130に結合されている。制御論理装置200はシステムクロックライン(sysclk)、システムリセットライン(sysrst)、“データが堅密に結合されたメモリ”(DTCM)ポート112、ARMプロセッサ114へのインターフェース262にもまだ結合されている。図1および2に示されているように、インターフェース/信号ライン262はRAMインターフェース論理装置(図1では106、図2では200)とARMプロセッサ114との間である。
図2のDTCM RAM214は図1では完了RAM108Aとメッセージ区域110A(または完了RAM108Bとメッセージ区域110B)に対応する。図2では、データが堅密に結合されたメモリ(DTCM)ポート112はARMプロセッサ114がDTCM RAM214と通信することを可能にする。DTCM RAM214はARMプロセッサ114A、114B内の専用のDTCMポート112とインターフェースする。“DTCM”はプロセッサのDTCMポートプロトコルをサポートするメモリとして規定されてもよい。DTCMポート112はARMプロセッサ114に組込まれるので、プロセッサのメモリに対するアクセス時間は劇的に改良される。
図2の完了制御論理装置200は複数のマルチプレクサ202、204、206、208、210、複数のレジスタ250−257、仲裁装置212、ARMとCRデータおよびアドレスデコーダ226(“CR”は完了RAMを表す)、put_ctl制御装置228、別の仲裁装置230、CRレジスタ232(“CR”は完了RAMを表す)を含んでいる。制御論理装置200は図2に示されているエレメントに加えて、またはその代わりに他のエレメントを含んでいてもよい。制御装置228は4つのプットポインタを追跡する。
レジスタシンボル250−257は単一ビットレジスタとして示されているが、レジスタシンボル250−257は任意の所望の数のビットを記憶するように構成されたレジスタを表している。第5のレジスタ257は示されているデコーダ226に結合されているかまたはデコーダ226内である。
1実施形態では、DTCM RAM214は2つの読取りポートと2つの書込みポートを有する。DTCM RAM214は同期RAMである。1構造では、RAM214は1024×32RAMであるが、種々の他のワード長と任意の数のワードを有するRAMが使用されてもよい。
1実施形態ではDTCM RAM214はFRXQueue完了ブロック216、FTXQueue完了ブロック218、DXBRx完了ブロック220、DXBTx完了ブロック222のような(“待ち行列”または“区画”とも呼ばれる)複数の論理ブロックに分割されている。これらのブロック216、218、220、222は図1のRAM108に対応する。他のプロセッサからのメッセージブロック110はDTCM RAM214の別の区画である。各ブロックは32、64、128または768エントリのような任意の所望の数のエントリを有してもよい。
各ブロックはそのそれぞれのソースからI/O完了を記憶するように動作する。例えばFRXQueue完了ブロック216はファイバチャンネルリンク受信DMA動作からRx I/O完了を記憶する。Rx I/O完了はファイバチャンネルリンク/インターフェース150から中間メモリ120へ転送されるデータに関する。別の例として、DXBRx完了ブロック220はPCI受信DMA動作からのI/O完了を記憶する。
制御論理装置200は各I/O完了がただ1つのRAMブロック216、218,220、222またはブロックが十分なスペースを有するならば110に書込まれることを可能にするように構成されている。制御論理装置200はI/O完了がDTCM RAM214へ書込まれるときはいつでも、プロセッサ114へプロセッサ中断を発生する。
RAMブロックがフルであり、新しいI/O完了が到着するならば、新しいI/O完了はデータをDTCM RAM214に重書きしてはならない。その代わりに、制御論理装置200はデータソースが新しく到着するI/O完了を最初に、レジスタ250−257のようなレジスタへ書込むことを可能にする。その後、制御論理装置200はデータをDTCM RAM214へ書込む。
レジスタが既に新しいI/O完了で満たされているならば、レジスタは新しいデータを記憶する準備がされていない可能性がある。エラーフラグは制御論理装置200またはファームウェアにより断定され、ソースはI/O完了を再度、後に、再送信するように命令される。
[RAM動作]
システムのリセット後、完了RAM制御論理装置200は5つのデータパス240−248に結合するデータソースへ5つのREADY信号を発生する。セットREADY信号を検出するとき、各データソースはそれがDTCM RAM214へ書込むためのデータ(I/O完了)を有するならば、書込みエネーブル信号を発生する。5つのデータパス240−248は一度、書込みエネーブル信号が断定されると、5つの異なる“datain_reg”レジスタ250−257へ第1のデータを送信し始める。レジスタ250−257が満たされるとき、READY信号はデータソースがさらにデータを“datain_reg”レジスタ250−257へ書込まないように宣言を無効にする(deassert)。
異なるソースからの書込みエネーブル信号とデータ信号(I/O完了)は時には、完了RAM制御論理装置200の動作速度と比較して異なる速度(クロックドメイン)で送信される。例えばDXB受信パス244(PCI受信)からのデータ信号(I/O完了)は33MHz、66MHzまたは133MHzで受信される。リンクFRxQパス240(ファイバチャンネルリンク受信)からのデータは200MHzクロックに同期される。リンクFTxQパス242(ファイバチャンネルリンク送信)からのデータは106MHzクロックに同期される。ARMプロセッサはI/O完了またはプロセッサ間メッセージを200MHzクロックでポストする。これらの信号が同期されていないならば、システム100は重要な完了情報を失う可能性がある。システム100は信号が処理される前に、これらの異なる信号を共通のクロックドメインへ同期するか再クロックするように構成されている。
レジスタ250−257が満たされるとき、制御論理装置200は“datain_reg”レジスタ250−257のデータを特別なRAMブロック216―222、110へ移動するか否かを決定する。特別なRAMブロック216―222、110が満たされていないならば、制御論理装置200はデータを“datain_reg”レジスタから特別なRAMブロック216―222、110へ移動する。制御論理装置200はまた関連する“datain_reg”レジスタが次のI/O完了メッセージを記憶する準備がされていることを示すためにREADY信号をソースへ通知する。
特定のRAMブロック216―222、110が満たされているならば、制御論理装置200は“datain_reg”レジスタのデータを特別なRAMブロック216―222、110へ移動しない。ソースへのREADY信号は低アクチブの状態で維持される。
ソースがデータをソースの関連する“datain_reg”レジスタに書込みを続けようとするならば、先にレジスタにロードされたデータは重書きされる。制御論理装置200はフラグを設定し、または中断信号をソースへ送信する。ソースはデータが崩壊されるときと、崩壊されるデータを知っている。ソースは後にデータを再送信する。この場合、DTCM RAM214のデータは重書きされない。
5つのデータパス240−248はDTCM RAM214の5つの異なるブロック216―222、110にアクセスしようとする。5つの異なるレジスタ250−257は5つの異なるソースからデータを記憶するように構成されている。PCI DMA102と、LINK DMA104と、ARMプロセッサ114とが複数のデータパス240−248を介して同時にI/O完了をDTCM RAM214へ書込もうとするとき、制御論理装置200はデータ崩壊の可能性を克服することができる。
全ての5つのレジスタ250−257がロードされるとき、仲裁装置212はDTCM RAM214へ最初に書込まれるレジスタデータを決定する。仲裁装置212はデータを異なるRAMブロック216、218、220、222、110へ移動するために、ラウンドロビン方法のような迅速で公正な仲裁方法を使用してもよい。仲裁方法は異なるソースからのデータがRAMブロック216―222、110へ公正で迅速なアクセスすることを確実にする。
制御論理装置200はまた特定のデータソースのRAM書込みサイクルが第2の書込みが同一のデータソースにより試みられる前に完了することを確実にすることによってデータの崩壊の可能性を克服する。中断はI/O完了の通知が重書きされたならば、データソースとファームウェアに通知するために制御論理装置100またはファームウェアによって発生される。データソースは完了通知を再送信する。
別の方法では、RAMブロック216―222、110および/またはレジスタ250−257が満たされるとき、それぞれのDMAへのREADY信号(図2の“rdy”)は完了状態の書込みを阻止するためにインアクチブになる。DMAはREADY信号が再度アクチブになるまで待機モードにされる。その後I/O完了状態は完了RAMまたはレジスタ250―257へ書込まれる。
[RAMポインタ]
図3は、図2のRAM214からのRAMブロック300、ファームウェア306、ゲットポインタフィールド302、プットポインタフィールド304、プットポインタ304のための制御論理装置308の1実施形態を示している。ファームウェア306はメモリに記憶され、図2の制御論理装置200の制御装置またはプロセッサにより実行される。代わりにファームウェア306は図2のプロセッサ114により実行されてもよい。制御論理装置308は図2の完了RAM制御論理装置200を表している。レジスタ310はゲット/読取りポインタ302とプット/書込みポインタ304を記憶するように構成されている。図3のRAMブロック300は図2のRAMブロック216−222の1つを表している。図2の各RAMブロック216−222はその固有のゲットおよびプットポインタ302、304に関連されている。
図2の第1の4つのRAMブロック216、218、220、222がフルであるか否かを決定するために、RAM制御論理装置200は第1の4つのRAMブロック216―222に対する4つのプットポインタを管理する。I/O完了メッセージが対応するRAMブロック300(図2のRAMブロック216、218、220または222の1つ)に書込まれるとき、put_ctl制御装置228はプットポインタ304をインクリメントする(図3)。
put_ctl制御装置228はプットポインタ値をCR Regレジスタ232へ送り、ここで特定のRAMブロック300に対応するプットポインタ304とゲットポインタ302との間で比較が行われる。プットポインタ304がゲットポインタ302よりも大きいとき、中断がファームウェア306に対して発生され、少なくとも1つの完了メッセージが完了RAMブロック300に存在することを示す。
ファームウェア306がI/O完了メッセージを検索するとき、ファームウェア306は対応するゲットポインタ302をインクリメントする。ファームウェア306は全ての未処理のメッセージを検索し、適切なゲットポインタ302をインクリメントするとき、ゲットポインタ302はプットポインタ304に等しく、中断状態は除去される。
RAMブロック300のゲットポインタ302とプットポインタ304はファームウェア306により容易に追跡される。図3では、制御論理装置308はブロック300への各書込み動作が完了した後、1だけプットポインタ304をインクリメントする。プットポインタ304がRAMブロック300の最後(最後のエントリENTRY n)に到達するとき、制御論理装置308はプットポインタ304にRAMブロック300の最初(“ENTRY0”)にラップバックさせる。
ファームウェア306は図3のゲットポインタ302のような4つのゲットポインタを管理し、これは第1の4つのRAM区画216−222内のエントリを指向する。ファームウェア306は各読取り動作が完了した後、1だけゲットポインタ302をインクリメントする。ゲットポインタがRAMブロック300の最後(最後のエントリ“ENTRY n”)に到達するとき、ファームウェア306はゲットポインタ302に最初(“ENTRY0”)にラップさせる。
データ(I/O完了)がRAMブロック300に書込まれるとすぐに、中断はRAM制御論理装置300により発生される。ファームウェア306はDTCMポート112を通してRAMブロック300からプロセッサ114へデータを読出し始める。
制御論理装置308またはファームウェア306は各RAMブロック216−222の状態を追跡し満たされる完了RAM数を予測するためプットおよびゲットポインタ304、302の値を使用する。ファームウェア306または制御論理装置308はまたRAMブロック300がフルまたは空であるときを予測するためにプットおよびゲットポインタ302、304を使用する。例えば、プットポインタ304がゲットポインタ302マイナス1に等しい(Put=Get−1)ならば、ブロックまたは待ち行列300はフルである。この状態は使用されることができない1つの利用可能な位置がRAM214に存在し、最後のエントリのデータがブロック216、218、220、222、110に関連する“datain_reg”レジスタ250、252、254、256、257(図2)に記憶されることを意味している。最後のRAM位置が書込まれたならば、プットおよびゲットポインタ304、302は等しく、実際にブロック300がフルであるときブロック300が空であることを示す。この理由で、特定のRAMブロック300中でスペースが利用可能になるまで、最後のRAMエントリは外部レジスタに記憶される。
プットおよびゲットポインタ304、302が等しく、即ちput=getならば、ブロック300で、ブロックまたは待ち行列300は空である。チップリセット後、プットおよびゲットポインタ304、302はデフォルト状態の値に等しい。
[別のプロセッサからのメッセージの記憶]
図2の第5のRAM区画/ブロック110は図1のメッセージ区域110A、110Bの1つを表している。第5のRAMブロック110は“他のプロセッサ”からのメッセージを記憶するように構成されている。例えば、図1のメッセージ区域110Aはプロセッサ区域114Bからのメッセージを記憶するように構成され、メッセージ区域110Bはプロセッサ区域114Aからのメッセージを記憶するように構成されている。図1のチャンネルBのプロセッサ114BはチャンネルAのRAM108Aの第5のRAM区画ブロック110(図1のメッセージ区域110A)へメッセージを書込むためにARMプロセッサインターフェース248のARMレジスタアクセスを使用する。
デコーダ226はRAMブロック101にI/O完了メッセージを書込むために初期書込みアドレスを与える。I/O完了メッセージが一度ブロック110に書込まれると、デコーダ226は次の書込み動作のために書込みアドレスをインクリメントする。次のメッセージの書込みサイクルでは、プロセッサインターフェース248はアドレスを与える必要はない。ハードウェア200はそれ故、新しいメッセージが記憶されるべき場所を示す情報を含んでいる。
チャンネルBのプロセッサ114Bがメッセージの書込みを完全に新しいアドレスへ通報するならば、プロセッサ114Bはメッセージとアドレスの両者を提供しなければならない。図1および2のチャンネルBの“DTCM”ポート112BはチャンネルBの固有のメッセージと完了データを検索するために使用される。同様に、図1のチャンネルAの“DTCM”ポート112AはチャンネルAの固有のメッセージと完了データの検索に使用される。
DTCMは物理的にプロセッサの非常に近くに位置されることができるので、システム100はゼロ待機状態アクセスを管理できる。
図4は図1のシステム100を使用するプロセスの1実施形態を示している。ブロック400では、システム100は単一のチャンネル101Aまたは101Bが作動中であり、他のチャンネルがアイドルまたは動作できないことを検出する。システム100は“スーパーチャージモード”に入る。ブロック402で、第1のプロセッサ(114Aと仮定する)はホストメモリ140と中間メモリ120との間のデータ転送からのI/O完了のような1つのタイプのI/O完了を処理することができる。第2のプロセッサ(114Bと仮定する)は中間メモリ120とファイバチャンネルリンク/インターフェース150との間のデータ転送からのI/O完了のような別のタイプのI/O完了を処理することができる。
ブロック404では、第1のプロセッサ114AはI/O完了を終了し、第2のプロセッサ114Bに次の処理段のI/Oを準備するように通知するため、メッセージを第2のプロセッサへ送信する。
図5は図2、3の制御論理装置200およびRAM214を使用するプロセスの1実施形態を示している。ブロック500で、完了RAM制御論理装置200は複数のREADY信号を複数のデータパス(例えば240−248)を介して複数のデータソースへ発生する。
ブロック502で、各データソースはセットREADY信号を検出し、データソースがDTCM RAM214へ書込むためのデータ(I/O完了)を有するならば書込みエネーブル信号を発生する。
ブロック504で、一度書込みエネーブル信号が宣言されると、複数のデータパスはデータを複数のデータインレジスタ(例えば250−256)へ送信し始める。
ブロック506で、レジスタが満たされるとき、READY信号はデータソースがさらに多くのデータをデータインレジスタに書込まれることを阻止するため宣言が無効にされる。
ブロック508で、レジスタが満たされるとき、制御論理装置200はデータインレジスタからDTCM RAM214へデータを移動するか否かを決定し、これは各RAMブロック216−222が満たされているか否かにしたがう。
ブロック510で、レジスタが満たされないならば、制御論理装置200はデータをRAMブロックへ移動する。制御論理装置200はまた関連するデータインレジスタが次のデータセグメントを記憶する準備がされていることを示すためにソースへREADY信号を宣言する。
ブロック511で、5つのレジスタ250−256の全てまたはその幾つかがロードされるとき、仲裁装置212は最初にDTCM RAM214へ書込まれるレジスタデータを決定する。仲裁装置212はRAM214への公生で迅速なアクセスのためのラウンドロビン方法を使用する。
ブロック512で、RAMブロック216―222がフルであるならば、制御論理装置200はデータインデータレジスタのデータをRAMブロック216―222に移動しない。ソースへのREADY信号は低いアクチブの状態である。
ブロック514で、ソースがデータをソースの関連するデータインレジスタに書込みを続けようとする。レジスタが既にデータを記憶しているならば、制御論理装置200はフラグを設定し、または中断信号をソースへ送信する。
[ドアベルレジスタおよび制御論理装置]
図6はスーパーチャージチャンネルモードで動作する2つのプロセッサ114A、114B、例えば単一のファイバチャンネルリンクを制御するため共に動作する2つのプロセッサ114A、114Bを有するシステム600の1実施形態を示している。システム600はPCI/Xインターフェース606、2つの完了RAM108A、108B、リンクRx/Tx DMAエンジン104、PCI Rx/Tx DMAエンジン102、2つのプロセッサ114A、114B、プロセッサ114A、114B間のドアベルレジスタおよび制御論理装置602A、602B、NL−ポートおよび並直列モジュール608、QDR RAM制御装置604、QDR外部メモリ605を含んでいる。
図7は、図6のプロセッサ間ドアベルレジスタおよび論理装置の1実施形態のブロック図である。図7はチャンネルAのドアベルレジスタ704A、706A、708A、710Aのセット702Aと、チャンネルBのドアベルレジスタ704B、706B、708B、710Bのセット702Bとの相互作用およびマッピングを示している。レジスタはドアベルレジスタRO/RC704A、704B、ドアベルエネーブルレジスタR/W706A、706B、ドアベルの他チャンネルR/Wレジスタ708A、708B、ドアベルエネーブル他チャンネル読取り専用レジスタ710A、710Bを含んでいる。
図6および7はDTCMとドアベルレジスタ602A、602Bの動作全体を示している。チャンネルAおよびBのプロセッサ114A、114Bはドアベルレジスタと制御論理装置602A、602Bを通して通信できる。各プロセッサ114は他のプロセッサ114に重要な事象について通知するためにドアベルレジスタと制御論理装置602A、602Bとを使用する。
例えば、プロセッサA 114Aは1ビットをチャンネルAのドアベルの他チャンネルレジスタ708Aへ書込むことによりプロセッサB 114Bを“リング(ring)する”ことができる。チャンネルAのドアベルの他チャンネルレジスタ708Aは2つのレジスタ708Aと704Bとの間の矢印により示されているように、チャンネルBのドアベルレジスタ704BとしてプロセッサBのアドレス復号スペースへマップされる。したがって、チャンネルAのドアベルの他チャンネルレジスタ708Aにビットを設定することにより、ビットをチャンネルBのドアベルレジスタ704Bへ設定させる。
プロセッサB 114Bは適切なエネーブルビットをチャンネルBのドアベルエネーブルレジスタ706Bに設定することによりドアベルレジスタ704Bの特定のドアベルビットで中断を発生することを可能にできる。プロセッサB 114Bはドアベルレジスタ704Bのビットセットを読取りクリアする。
プロセッサA 114Aは、レジスタ706BからチャンネルAのドアベルエネーブル他チャンネルレジスタ710Aまでの矢印により示されているように、プロセッサBのドアベルエネーブルレジスタ706Bの読取り専用能力を有する。
またプロセッサB 114BがプロセッサA 114Aをリングすることを可能にするレジスタ704A、706A、708B、710Bの対応するセットも存在する。したがってプロセッサA 114Aは特定のドアベルビットがプロセッサB 114Bにより設定されるときに中断を発生することもできる。
多数の実施形態を説明した。それにもかかわらず、種々の変更が本発明の技術的範囲を逸脱せずに行われることが理解されよう。したがって他の変更は特許請求の範囲に記載された技術的範囲内に含まれる。
スーパーチャージチャンネルシステムとして作用するように構成されたデュアルチャンネルシステムの1実施形態を示す図。 図1のシステムの各側に構成される完了制御論理装置および完了RAMの1実施形態を示す図。 図2のRAMからのRAMブロック、ゲットおよびプットポインタ、ファームウェア、レジスタ、完了RAM制御論理装置の1実施形態を示す図。 図1のシステムを使用するプロセスの1実施形態を示す図。 図2および3の制御論理装置およびRAMを使用するプロセスの1実施形態を示す図。 単一のチャンネルモードで動作するデュアルプロセッサの1実施形態を示す図。 プロセッサ間ドアベルレジスタの1実施形態のブロック図。

Claims (61)

  1. 第1の直接メモリアクセス(DMA)エンジン、第2のDMAエンジン、第1および第2のDMAエンジンと結合されている第1のランダムアクセスメモリ(RAM)、第1のRAMと結合されている第1のプロセッサを具備している第1のチャンネルと、
    第3のDMAエンジン、第4のDMAエンジン、第3および第4のDMAエンジンと結合されている第2のRAM、第2のRAMと結合されている第2のプロセッサを具備している第2のチャンネルとを具備しており、
    第1のモードにおいて、第1のRAMは第1および第2のDMAエンジンからの入力/出力(I/O)完了を記憶するように構成され、第1のプロセッサは第1のRAMに記憶されたI/O完了を処理するように構成され、第2のRAMは第3および第4のDMAエンジンからのI/O完了を記憶するように構成され、第2のプロセッサは第2のRAMに記憶されたI/O完了を処理するように構成されており、
    第2のモードにおいて、第2のRAMは少なくとも第1のDMAエンジンからのI/O完了を記憶するように構成され、第2のプロセッサは第2のRAMに記憶された第1のDMAエンジンからのI/O完了を処理するように構成されている、システム。
  2. 第2のRAMは第1のDMAエンジンからのPCI RxとPCI Tx I/O完了とを記憶する請求項記載のシステム。
  3. 第2のRAMは第1のDMAエンジンからのリンクRxとリンクTx I/O完了とを記憶する請求項記載のシステム。
  4. 第1の直接メモリアクセス(DMA)エンジン、第2のDMAエンジン、第1および第2のDMAエンジンと結合されている第1のランダムアクセスメモリ(RAM)、第1のRAMと結合されている第1のプロセッサを具備している第1のチャンネルと、
    第3のDMAエンジン、第4のDMAエンジン、第3および第4のDMAエンジンと結合されている第2のRAM、第2のRAMと結合されている第2のプロセッサを具備している第2のチャンネルとを具備しており、
    第1のモードにおいて、第1のRAMは第1および第2のDMAエンジンからの入力/出力(I/O)完了を記憶するように構成され、第1のプロセッサは第1のRAMに記憶されたI/O完了を処理するように構成され、第2のRAMは第3および第4のDMAエンジンからのI/O完了を記憶するように構成され、第2のプロセッサは第2のRAMに記憶されたI/O完了を処理するように構成されており、
    第2のモードにおいて、第2のRAMは第1および第2のDMAエンジンからのI/O完了を記憶するように構成され、第2のプロセッサは第2のRAMに記憶された第1および第2のDMAエンジンからのI/O完了を処理するように構成されている、システム。
  5. 第2のRAMは第1のDMAエンジンからのPCI Tx I/O完了と、第2のDMAエンジンからのリンクTx I/O完了とを記憶する請求項記載のシステム。
  6. 第2のRAMは第2のDMAエンジンからのリンクRx I/O完了と、第1のDMAエンジンからのPCI Rx I/O完了とを記憶する請求項記載のシステム。
  7. 第2のRAMは第1のDMAエンジンからのPCI Tx I/O完了と、第2のDMAエンジンからのリンクRx I/O完了とを記憶する請求項記載のシステム。
  8. 第2のRAMは第1のDMAエンジンからのPCI Rx I/O完了と、第2のDMAエンジンからのリンクTx I/O完了とを記憶する請求項記載のシステム。
  9. 第1および第3のDMAエンジンはそれぞれホストメモリと中間メモリとの間でデータを転送するように構成され、各転送後、第1および第3のDMAエンジンは第1および第2のRAMの少なくとも1つに記憶されるI/O完了を発生する請求項1記載のシステム。
  10. さらに、データをホストメモリへまたはホストメモリから転送するように構成されている周辺コンポーネントインターフェースバスを具備している請求項記載のシステム。
  11. 第2および第4のDMAエンジンはそれぞれ中間メモリとファイバチャンネルインターフェースとの間でデータを転送するように構成され、各転送後、第2および第4のDMAエンジンは第1および第2のRAMの少なくとも1つに記憶されるI/O完了を発生する請求項1記載のシステム。
  12. 第1および第2のRAMは、RAMのクロック速度にかかわらず最高のクロック速度でプロセッサが動作できるゼロ待機状態のRAMである請求項1記載のシステム。
  13. 第1および第2のRAMは、プロセッサが休止している間は待機状態である請求項1記載のシステム。
  14. 第1および第2のDMAエンジンまたは第3および第4のDMAエンジンを付勢するように構成され、第1および第2のDMAエンジンがインアクチブであるならば、第1のRAMは第3および第4のDMAエンジンからのI/O完了を記憶するように構成され、第3および第4のDMAエンジンがインアクチブであるならば、第2のRAMは第1および第2のDMAエンジンからのI/O完了を記憶するように構成される請求項1記載のシステム。
  15. 第1および第2のDMAエンジンまたは第3および第4のDMAエンジンがインアクチブであるかを検出するように構成され、第1および第2のDMAエンジンがインアクチブであるならば、第1のRAMは第3および第4のDMAエンジンからのI/O完了を記憶するように構成され、第3および第4のDMAエンジンがインアクチブであるならば、第2のRAMは第1および第2のDMAエンジンからのI/O完了を記憶するように構成される請求項1記載のシステム。
  16. 第2のプロセッサはそれが第2のRAMに記憶された第1のDMAエンジンからのI/O完了を処理した後、メッセージを第1のプロセッサへ送信するように構成されている請求項1記載のシステム。
  17. メッセージは第1のプロセッサにI/O完了に関するデータをさらに処理させる請求項16記載のシステム。
  18. 第1のRAMはメッセージを記憶するように構成されている請求項16記載のシステム。
  19. 第1のプロセッサはホストメモリと中間メモリとの間で転送されたデータに関するI/O完了を処理するように構成され、第2のプロセッサは中間メモリとファイバチャンネルインターフェースとの間で転送されたデータに関するI/O完了を処理するように構成されており、前記I/O完了は第1および第2のRAMの少なくとも1つに記憶されている、請求項1記載のシステム。
  20. 第1のプロセッサはホストメモリから中間メモリへ転送されたデータと、中間メモリからファイバチャンネルインターフェースへ転送されたデータに関するI/O完了を処理するように構成され、第2のプロセッサはファイバチャンネルインターフェースから中間メモリへ転送されたデータと、中間メモリからホストメモリへ転送されたデータに関するI/O完了を処理するように構成されており、前記I/O完了は第1および第2のRAMの少なくとも1つに記憶されている、請求項1記載のシステム。
  21. 第1のプロセッサはホストメモリから中間メモリへ転送されたデータと、ファイバチャンネルインターフェースから中間メモリへ転送されたデータに関するI/O完了を処理するように構成され、第2のプロセッサは中間メモリからファイバチャンネルインターフェースへ転送されたデータと、中間メモリからホストメモリへ転送されたデータに関するI/O完了を処理するように構成されており、前記I/O完了は第1および第2のRAMの少なくとも1つに記憶されている、請求項1記載のシステム。
  22. ハードウェアは第1および第2のプロセッサにより処理されるI/O完了のタイプを制御するように構成されている請求項1記載のシステム。
  23. ファームウェアは第1および第2のプロセッサにより処理されるI/O完了のタイプを制御するように構成されている請求項1記載のシステム。
  24. 第1および第2のRAMはそれぞれ複数の論理ブロックを構成し、各論理ブロックは予め定められたタイプのデータ転送に関するI/O完了を記憶するように構成されている請求項1記載のシステム。
  25. 各チャンネルはさらに、データがRAMに記憶されるときにプロセッサへの通知を発生するように構成される制御論理装置を具備している請求項24記載のシステム。
  26. 第1および第2のRAMはそれぞれ複数の論理ブロックを具備し、各論理ブロックはDMAエンジンの1つからのI/O完了を記憶するように構成されている請求項1記載のシステム。
  27. さらに、各論理ブロックに対するプットポインタおよびゲットポインタを具備し、プットポインタは新しいI/O完了を記憶するために論理ブロック内の位置のアドレスを含み、ゲットポインタは記憶されたI/O完了を検索するために論理ブロック内の位置のアドレスを含んでいる請求項26記載のシステム。
  28. 第1のRAMは第2のプロセッサからのメッセージを記憶するように構成されている論理ブロックを具備し、第2のRAMは第1のプロセッサからのメッセージを記憶するように構成されている論理ブロックを具備している請求項1記載のシステム。
  29. 各プロセッサはデータが堅密に結合されたメモリ(DTCM)およびDTCMポートを具備している請求項1記載のシステム。
  30. 各チャンネルはさらに、RAMに結合されてRAMへのアクセスを制御するように構成された制御論理装置を具備している請求項1記載のシステム。
  31. 各チャンネルはさらに、種々のクロックドメインからの信号を同期するように構成されているRAM制御論理装置を具備し、信号はRAMにより受信される請求項30記載のシステム。
  32. 各チャンネルはさらに、RAM内の位置のアドレスを指向するポインタを制御するように構成されたファームウェアを具備している請求項1記載のシステム。
  33. 各チャンネルはさらに、DMAエンジンとRAMとの間に複数のレジスタを具備し、各レジスタはI/O完了がRAMへ転送される前に予め定められたDMAエンジンからのI/O完了を記憶するように構成されている請求項1記載のシステム。
  34. 各チャンネルはさらに、RAMへ転送するためI/O完了を有する複数のレジスタ間で仲裁を行うように構成されている仲裁装置を具備している請求項33記載のシステム。
  35. 各チャンネルはさらに、レジスタがフルであるときにDMAエンジンへ信号を発生するように構成されている制御論理装置を具備している請求項33記載のシステム。
  36. さらに、第1と第2のプロセッサ間に結合されている複数のレジスタを具備し、それらのレジスタは第1のプロセッサが第2のプロセッサへ送信するためのメッセージを有していることを第1のプロセッサが第2のプロセッサへ通知することを可能にするように構成されている請求項1記載のシステム。
  37. 第1のプロセッサはドアベルの他のチャンネルレジスタ中に1ビットを書込むように構成され、ドアベルの他のチャンネルレジスタは第2のプロセッサに結合されるドアベルレジスタにマップされ、ビットは第1のプロセッサからのメッセージを第2のプロセッサへ通知する請求項36記載のシステム。
  38. 第1のプロセッサによりドアベルエネーブルレジスタに書込まれたビットが第2のプロセッサを中断することを可能にするために、第2のプロセッサはドアベルエネーブルレジスタ中に1ビットを書込むように構成されている請求項37記載のシステム。
  39. 第1のプロセッサは第2のプロセッサのドアベルエネーブルレジスタを読取るように構成されている請求項38記載のシステム。
  40. 入力/出力完了を記憶するように構成されたランダムアクセスメモリ(RAM)と、
    入力/出力完了をランダムアクセスメモリに送信するように構成された第1および第2のエンジンと、
    ランダムアクセスメモリに記憶された入力/出力完了を処理するように構成されたプロセッサとを具備しており、
    第1のモードにおいて、ランダムアクセスメモリが第1および第2のエンジンからの入力/出力完了を記憶するように構成され、第2のモードにおいて、ランダムアクセスメモリが少なくとも別のチャンネルの第3のエンジンからの入力/出力完了を記憶するように構成されており、2つのチャンネルの少なくとも1つはアクチブであり、第3のエンジンは入力/出力完了をランダムアクセスメモリに記憶するように構成されている、チャンネル。
  41. 第2のチャンネルのエンジンからの入力/出力(I/O)完了を記憶するために第1のチャンネルの第1のランダムアクセスメモリ(RAM)を構成し、
    第1のチャンネルの前記第1のRAMに記憶されたI/O完了を処理するステップを含んでおり、
    第1および第2のチャンネルのすくなくとも1つはアクチブであり、処理されるI/O完了は第1と第2のチャンネルの両方からのI/O完了を含んでおり、
    第1のチャンネルは、第1のRAMと、第1のRAMと結合されている第1のプロセッサと、第1のRAMと結合されている少なくとも1つのエンジンとを具備しており、
    第2のチャンネルは、少なくとも1つのエンジンと、そのエンジンと結合されている第2のRAMと、第2のRAMと結合されている第2のプロセッサとを具備している、方法。
  42. さらに、第2のチャンネルの2つのエンジンからのI/O完了を記憶するために第1のチャンネルのRAMを構成するステップを含んでいる請求項41記載の方法。
  43. さらに、ホストメモリと中間メモリとの間でデータを転送し、
    第1のチャンネルの第1のRAMと第2のチャンネルの第2のRAMの少なくとも1つに記憶される入力/出力完了を発生するステップを含んでいる請求項41記載の方法。
  44. さらに、中間メモリとファイバチャンネルインターフェースの間でデータを転送し、
    第1のチャンネルの第1のRAMと第2のチャンネルの第2のRAMの少なくとも1つに記憶される入力/出力完了を発生するステップを含んでいる請求項41記載の方法。
  45. さらに、第1のタイプの入力/出力完了を管理するために第1のプロセッサを指定し、第1のタイプのI/O完了を管理するため第2のプロセッサを指定する請求項41記載の方法。
  46. さらに、第1のチャンネルの入力/出力完了を処理するために第1のプロセッサを指定し、第2のチャンネルのI/O完了を処理するために第2のプロセッサを指定する請求項41記載の方法。
  47. さらに、第2のプロセッサが入力/出力完了の処理を終了したときを第1のプロセッサに通知するステップを含んでいる請求項41記載の方法。
  48. 第1のプロセッサに通知するステップは、第2のプロセッサから第1のプロセッサに関連する第1のRAMへメッセージを送信するステップを含んでいる請求項47記載の方法。
  49. 第1のプロセッサへの通知は、第1のレジスタへの1ビットの書込みを含んでおり、第1のレジスタは第2のレジスタにマップされ、第1のプロセッサは第2のプロセッサが第1のプロセッサのメッセージを有するか否かを決定するために第2のレジスタをアクセスする請求項47記載の方法。
  50. 第1のチャンネルの直接メモリアクセス(DMA)エンジンがインアクチブであるか否かを検出し、
    第1のチャンネルのDMAエンジンがインアクチブであるならば、第2のチャンネルの第1のDMAエンジンからの入力/出力(I/O)完了を第1のチャンネルの第1のランダムアクセスメモリ(RAM)中に記憶し、
    第1のチャンネルの第1のランダムアクセスメモリ(RAM)中のI/O完了を処理するステップを含んでおり、
    第1のチャンネルは、少なくとも前記DMAエンジンと、そのDMAエンジンと結合されている第1のRAMと、第1のRAMと結合されている第1のプロセッサとを具備し、第1のプロセッサは、第1のRAMに記憶されているI/O完了を処理するように構成されており、
    第2のチャンネルは、少なくとも第1のDMAエンジンと、第1のエンジンと結合されている第2のRAMと、第2のRAMと結合されている第2のプロセッサとを具備している、方法。
  51. さらに、第2のチャンネルの第2のDMAエンジンからの入力/出力(I/O)完了を第2のチャンネルの第2のランダムアクセスメモリに記憶する請求項50記載の方法。
  52. 複数のデータパスから入力/出力(I/O)完了を受信し、複数のデータパスは、第1のチャンネルの第1のプロセッサによって動作が開始されるI/O要求から生じるI/O完了のための第1のプロセセッサのデータパスと、第2のチャンネルの第2のプロセッサによって動作が開始されるI/O要求から生じるI/O完了のための書き込みデータパスとを含んでおり、
    複数のレジスタにI/O完了を記憶し、各レジスタは複数のデータパスの1つからのI/O完了を記憶するように構成され、
    レジスタからランダムアクセスメモリの複数の論理ブロックへI/O完了を転送し、各論理ブロックは複数のデータパスの1つからのI/O完了を記憶するように構成されており、
    第1のプロセッサを用いて複数の論理ブロックに記憶されたI/O完了を処理するステップを含んでおり、処理されるI/O完了は第2のプロセッサによって動作が開始されるI/O要求から生じるI/O完了を含んでいる方法。
  53. 複数のデータパスからの入力/出力(I/O)完了の受信は、第1のモードでデータパスの第1のセットからI/O完了を受信し、第2のモードでデータパスの第2のセットからI/O完了を受信するステップを含んでいる請求項52記載の方法。
  54. さらに、レジスタから仲裁装置へI/O完了を転送し、
    ランダムアクセスメモリの論理ブロックに送信されるI/O完了を仲裁し、
    仲裁装置からランダムアクセスメモリの論理ブロックへI/O完了を送信するステップを含んでいる請求項52記載の方法。
  55. 仲裁はラウンドロビン方法の使用を含んでいる請求項52記載の方法。
  56. さらに、複数のデータパスを介して複数のレディ信号を複数のデータソースへ送信するステップを含み、各レディ信号はレジスタがI/O完了を記憶する準備がされていることを示している請求項52記載の方法。
  57. さらに、レディ信号を検出し、データソースがランダムアクセスメモリへ書込むためのI/O完了を有するならば、書込みエネーブル信号を発生する請求項56記載の方法。
  58. さらに、処理の準備がされている未処理の完了が存在するか否かを決定するためポインタの使用を含んでいる請求項52記載の方法。
  59. さらに、論理ブロックがフルであるか否かを決定するためのポインタの使用を含んでいる請求項52記載の方法。
  60. さらに、論理ブロックがフルであるならば、I/O完了が論理ブロックに書込まれることを防止することを含んでいる請求項59記載の方法。
  61. さらに、データパスに結合されたソースへ、ソースからのI/O完了を記憶するように構成されている論理ブロックおよびレジスタがフルであることを通知するステップを含んでいる請求項59記載の方法。
JP2003551680A 2001-12-12 2002-12-11 スーパーチャージメッセージ交換装置 Expired - Fee Related JP4499420B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US34038601P 2001-12-12 2001-12-12
US10/316,604 US6829660B2 (en) 2001-12-12 2002-12-10 Supercharge message exchanger
PCT/US2002/039788 WO2003050692A1 (en) 2001-12-12 2002-12-11 Supercharge message exchanger

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009287965A Division JP5537919B2 (ja) 2001-12-12 2009-12-18 データ転送のためのシステムおよび方法

Publications (2)

Publication Number Publication Date
JP2005513596A JP2005513596A (ja) 2005-05-12
JP4499420B2 true JP4499420B2 (ja) 2010-07-07

Family

ID=26980501

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2003551680A Expired - Fee Related JP4499420B2 (ja) 2001-12-12 2002-12-11 スーパーチャージメッセージ交換装置
JP2009287965A Expired - Fee Related JP5537919B2 (ja) 2001-12-12 2009-12-18 データ転送のためのシステムおよび方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2009287965A Expired - Fee Related JP5537919B2 (ja) 2001-12-12 2009-12-18 データ転送のためのシステムおよび方法

Country Status (7)

Country Link
US (3) US6829660B2 (ja)
EP (1) EP1466255B1 (ja)
JP (2) JP4499420B2 (ja)
KR (1) KR100962769B1 (ja)
CA (1) CA2468797C (ja)
DE (1) DE60231749D1 (ja)
WO (1) WO2003050692A1 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6829660B2 (en) * 2001-12-12 2004-12-07 Emulex Design & Manufacturing Corporation Supercharge message exchanger
US7397768B1 (en) 2002-09-11 2008-07-08 Qlogic, Corporation Zone management in a multi-module fibre channel switch
US7152132B2 (en) * 2003-07-16 2006-12-19 Qlogic Corporation Method and apparatus for improving buffer utilization in communication networks
US7646767B2 (en) 2003-07-21 2010-01-12 Qlogic, Corporation Method and system for programmable data dependant network routing
US7234101B1 (en) 2003-08-27 2007-06-19 Qlogic, Corporation Method and system for providing data integrity in storage systems
US7225277B2 (en) * 2003-09-04 2007-05-29 International Business Machines Corporation Proxy direct memory access
US7093037B2 (en) * 2003-09-22 2006-08-15 Emulex Design & Manufacturing Corporation Generalized queue and specialized register configuration for coordinating communications between tightly coupled processors
US20050240727A1 (en) * 2004-04-23 2005-10-27 Shishir Shah Method and system for managing storage area networks
US7930377B2 (en) 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
US7669190B2 (en) 2004-05-18 2010-02-23 Qlogic, Corporation Method and system for efficiently recording processor events in host bus adapters
US9264384B1 (en) 2004-07-22 2016-02-16 Oracle International Corporation Resource virtualization mechanism including virtual host bus adapters
US7401262B2 (en) * 2004-08-05 2008-07-15 International Business Machines Corporation Method and apparatus for a low-level console
US7577772B2 (en) * 2004-09-08 2009-08-18 Qlogic, Corporation Method and system for optimizing DMA channel selection
US7676611B2 (en) * 2004-10-01 2010-03-09 Qlogic, Corporation Method and system for processing out of orders frames
US7164425B2 (en) * 2004-12-21 2007-01-16 Qlogic Corporation Method and system for high speed network application
US7392437B2 (en) * 2005-01-20 2008-06-24 Qlogic, Corporation Method and system for testing host bus adapters
JP4606216B2 (ja) * 2005-03-24 2011-01-05 富士通セミコンダクター株式会社 通信データ制御装置
US7281077B2 (en) * 2005-04-06 2007-10-09 Qlogic, Corporation Elastic buffer module for PCI express devices
US7231480B2 (en) * 2005-04-06 2007-06-12 Qlogic, Corporation Method and system for receiver detection in PCI-Express devices
US7428603B2 (en) * 2005-06-30 2008-09-23 Sigmatel, Inc. System and method for communicating with memory devices via plurality of state machines and a DMA controller
US9813283B2 (en) 2005-08-09 2017-11-07 Oracle International Corporation Efficient data transfer between servers and remote peripherals
US7461195B1 (en) 2006-03-17 2008-12-02 Qlogic, Corporation Method and system for dynamically adjusting data transfer rates in PCI-express devices
GB0622408D0 (en) * 2006-11-10 2006-12-20 Ibm Device and method for detection and processing of stalled data request
US7716397B2 (en) * 2007-07-03 2010-05-11 Lsi Corporation Methods and systems for interprocessor message exchange between devices using only write bus transactions
US9973446B2 (en) 2009-08-20 2018-05-15 Oracle International Corporation Remote shared server peripherals over an Ethernet network for resource virtualization
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US8635412B1 (en) 2010-09-09 2014-01-21 Western Digital Technologies, Inc. Inter-processor communication
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US9331963B2 (en) 2010-09-24 2016-05-03 Oracle International Corporation Wireless host I/O using virtualized I/O controllers
US9158670B1 (en) 2011-06-30 2015-10-13 Western Digital Technologies, Inc. System and method for dynamically adjusting garbage collection policies in solid-state memory
US9083550B2 (en) 2012-10-29 2015-07-14 Oracle International Corporation Network virtualization over infiniband
MY186464A (en) * 2012-12-14 2021-07-22 Mimos Berhad System and method for optimal memory management between cpu and fpga unit
US9665509B2 (en) * 2014-08-20 2017-05-30 Xilinx, Inc. Mechanism for inter-processor interrupts in a heterogeneous multiprocessor system

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6426968A (en) * 1987-07-23 1989-01-30 Nec Corp Multi-processor system
US5130981A (en) * 1989-03-22 1992-07-14 Hewlett-Packard Company Three port random access memory in a network bridge
CA2009780C (en) * 1989-05-17 1999-07-27 Ernest D. Baker Method and apparatus for the direct transfer of information between application programs running on distinct processors without utilizing the services of one or both operating systems
JPH03110657A (ja) * 1989-09-25 1991-05-10 Tokyo Electric Co Ltd マイクロプロセッサ間のデータ転送方法
JP2546901B2 (ja) * 1989-12-05 1996-10-23 株式会社日立製作所 通信制御装置
JPH0675874A (ja) * 1992-04-24 1994-03-18 Texas Instr Inc <Ti> ネットワーク・フロント・エンド回路をネットワーク・アダプター回路に結合するための信号インターフェース
JPH07507893A (ja) 1992-06-12 1995-08-31 ザ、ダウ、ケミカル、カンパニー プロセス制御コンピュータ用保安フロントエンド通信システムおよび方法
US5307459A (en) * 1992-07-28 1994-04-26 3Com Corporation Network adapter with host indication optimization
US5828856A (en) 1994-01-28 1998-10-27 Apple Computer, Inc. Dual bus concurrent multi-channel direct memory access controller and method
US5961614A (en) 1995-05-08 1999-10-05 Apple Computer, Inc. System for data transfer through an I/O device using a memory access controller which receives and stores indication of a data status signal
JPH09102783A (ja) * 1995-10-03 1997-04-15 Mitsubishi Electric Corp Atm端末装置及びatm端末装置における通信路決定方法
US5671365A (en) 1995-10-20 1997-09-23 Symbios Logic Inc. I/O system for reducing main processor overhead in initiating I/O requests and servicing I/O completion events
JP3018975B2 (ja) * 1995-12-28 2000-03-13 株式会社日立製作所 Atmプロトコル処理コントローラ
US5894583A (en) * 1996-04-09 1999-04-13 International Business Machines Corporation Variable timeout method for improving missing-interrupt-handler operations in an environment having I/O devices shared by one or more systems
CA2194026C (en) 1996-12-24 2001-05-01 John V. Taglione Method and apparatus for moving data packets between networks while minimizing cpu interventions using a multi-bus architecture
US6067595A (en) * 1997-09-23 2000-05-23 Icore Technologies, Inc. Method and apparatus for enabling high-performance intelligent I/O subsystems using multi-port memories
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
JPH11252150A (ja) * 1998-02-27 1999-09-17 Toshiba Corp ネットワーク接続装置、及びネットワーク接続制御方法
US6185620B1 (en) * 1998-04-03 2001-02-06 Lsi Logic Corporation Single chip protocol engine and data formatter apparatus for off chip host memory to local memory transfer and conversion
US6434630B1 (en) * 1999-03-31 2002-08-13 Qlogic Corporation Host adapter for combining I/O completion reports and method of using the same
US6564271B2 (en) * 1999-06-09 2003-05-13 Qlogic Corporation Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter
US6253250B1 (en) 1999-06-28 2001-06-26 Telocity, Incorporated Method and apparatus for bridging a plurality of buses and handling of an exception event to provide bus isolation
JP3987241B2 (ja) * 1999-07-29 2007-10-03 株式会社東芝 系間情報通信システム
US7010575B1 (en) * 2000-03-31 2006-03-07 Emc Corporation Data storage system having separate data transfer section and message network having bus arbitration
US7103653B2 (en) * 2000-06-05 2006-09-05 Fujitsu Limited Storage area network management system, method, and computer-readable medium
US6829660B2 (en) * 2001-12-12 2004-12-07 Emulex Design & Manufacturing Corporation Supercharge message exchanger

Also Published As

Publication number Publication date
US20030126320A1 (en) 2003-07-03
JP2005513596A (ja) 2005-05-12
JP2010134939A (ja) 2010-06-17
EP1466255B1 (en) 2009-03-25
CA2468797C (en) 2012-07-10
US20060143341A1 (en) 2006-06-29
KR20040069329A (ko) 2004-08-05
US7096296B2 (en) 2006-08-22
DE60231749D1 (de) 2009-05-07
CA2468797A1 (en) 2003-06-19
US20050097240A1 (en) 2005-05-05
WO2003050692A1 (en) 2003-06-19
KR100962769B1 (ko) 2010-06-09
US6829660B2 (en) 2004-12-07
US7363396B2 (en) 2008-04-22
EP1466255A4 (en) 2006-11-29
JP5537919B2 (ja) 2014-07-02
EP1466255A1 (en) 2004-10-13

Similar Documents

Publication Publication Date Title
JP4499420B2 (ja) スーパーチャージメッセージ交換装置
JP2802043B2 (ja) クロック故障検出回路
US5664223A (en) System for independently transferring data using two independently controlled DMA engines coupled between a FIFO buffer and two separate buses respectively
US6161160A (en) Network interface device architecture for storing transmit and receive data in a random access buffer memory across independent clock domains
US7277449B2 (en) On chip network
JP2539614B2 (ja) ポインタアドレスを発生するための装置および方法
US7200137B2 (en) On chip network that maximizes interconnect utilization between processing elements
US7051150B2 (en) Scalable on chip network
US7139860B2 (en) On chip network with independent logical and physical layers
KR100881049B1 (ko) 복수의 어드레스 2 채널 버스 구조
US20040019733A1 (en) On chip network with memory device address decoding
JPH07281976A (ja) パケットfifoを管理する方法
EP1412871B1 (en) Method and apparatus for transmitting packets within a symmetric multiprocessor system
JP3769413B2 (ja) ディスクアレイ制御装置
US7447872B2 (en) Inter-chip processor control plane communication
US20040044877A1 (en) Computer node to mesh interface for highly scalable parallel processing system
KR20010056536A (ko) 이중포트 구조로 이루어진 다수의 트랜잭션 버퍼를 구비한캐쉬 제어기
US6425071B1 (en) Subsystem bridge of AMBA&#39;s ASB bus to peripheral component interconnect (PCI) bus
US6633927B1 (en) Device and method to minimize data latency and maximize data throughput using multiple data valid signals
US7043612B2 (en) Compute node to mesh interface for highly scalable parallel processing system and method of exchanging data
CN115328832B (zh) 一种基于pcie dma的数据调度系统与方法
JP2004318628A (ja) 演算処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081021

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090121

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090220

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090825

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091218

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100222

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100316

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100415

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4499420

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140423

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees