(57)【要約】      （修正有）【課題】第１のプロトコル・タイプに従って生成されたパケットを受信し、プロトコル変換を実施して、第２のプロトコル・タイプに変換されたパケットを生成、出力するシングル・チップ・プロトコル・コンバーター集積回路を提供する。【解決手段】シングル・チップ・プロトコル・コンバーターは、システム・オン・チップ（ＳｏＣ）にマクロ・コアとして実装され、プロトコル変換のプロセスは、ホスト・システムのリソースを必要としない。パケット変換は第１のプロトコル・バージョン・レベルに従って生成されたパケットを変換、処理して、第２のプロトコル・バージョン・レベルであるが同じプロトコル・ファミリー・タイプ内のプロトコル・バージョン・レベルに従って変換されたパケットを生成する。変換マクロ実装は、チップの動作機能性を適合させて修正するように構成可能であるプロセッサー・デバイスに多重処理機能を含む。【選択図】図５
2005216283.tif 000002
【特許請求の範囲】
【請求項１】
第１のタイプに従って生成されたパケットを受信すること、および、前記パケットを処理してプロトコル変換を実施すること、および、第２のタイプの変換されたパケットを、その出力のために生成することができる、シングル・チップ・プロトコル・コンバーター集積回路（ＩＣ）であって、それにより前記プロトコル変換処理は前記シングル集積回路チップ内で完全に実行される、シングル・チップ・プロトコル・コンバーター集積回路（ＩＣ）。
【請求項２】
前記チップは、
１つまたは複数のプロセッサー・コア・アセンブリであって、各々は、プロトコル変換機能を実施するためのオペレーションを実行することができる２つ以上のマイクロプロセッサー・デバイスを含む、プロセッサー・コア・アセンブリと、
各プロセッサー・コア・アセンブリ内の少なくとも１つのデータおよび命令を格納するための、前記２つ以上のマイクロプロセッサー・デバイスに関連付けられたローカル・ストレージ・デバイスと、
１つまたは複数の通信プロトコルに従って通信パケットの受信および送信を可能にする、１つまたは複数のインターフェース・デバイスと、
前記２つ以上のマイクロプロセッサー・デバイスと前記インターフェース・デバイスの間の通信を可能にするための、前記プロトコル・コンバーター内に存在する相互接続手段とを含む、請求項１に記載のシングル・チップ・プロトコル・コンバーター集積回路（ＩＣ）。
【請求項３】
前記１つまたは複数のインターフェース・デバイスは、プログラマブルなメディア・アクセス制御インターフェース・デバイス（ＭＡＣ）、および、特定のプロトコルのパケットを受信するためのプロトコル・インターフェース・アクセラレーター・デバイスを含むグループからの１つまたは複数を含む、請求項２に記載のシングル・チップ・プロトコル・コンバーターＩＣ。
【請求項４】
前記１つまたは複数のプロセッサー・コア・アセンブリ、ストレージ・デバイス、相互接続手段、およびインターフェース・デバイスは連携して、第１および第２のプロトコルの間の変換のために必要とされたパケットのサイズ変更および再フォーマットを可能にし、前記シングル・チップ・プロトコル・コンバーターのデザインはさらに、受信されたパケットの、単一のプロトコル・タイプの異なるバージョン・レベルの間の変換を可能にするように適合される、請求項３に記載のシングル・チップ・プロトコル・コンバーターＩＣ。
【請求項５】
それにより、第１のタイプの前記受信されたパケットは、１つまたは複数のマイクロプロセッサー・デバイスにパーティション化され、各プロセッサー・デバイスは、同じ命令のセットを実行し、特定のプロトコル・プロセスとペアにされる、請求項２に記載のシングル・チップ・プロトコル・コンバーターＩＣ。
【請求項６】
プロトコル変換のための前記受信された命令は、プロセッサー・コア・アセンブリ内に完全に含まれ、前記処理は、前記シングル・チップ・プロトコル・コンバーターＩＣ上の異なるリソースによってハンドルするための前記プロトコル・オペレーションのパーティション化を含む、請求項２に記載のシングル・チップ・プロトコル・コンバーターＩＣ。
【請求項７】
前記相互接続手段はクロスバー・スイッチを含む、請求項２に記載のシングル・チップ・プロトコル・コンバーターＩＣ。
【請求項８】
シングル・チップ・プロトコル・コンバーター・デザインを、プロトコル変換に関係する１つまたは複数の機能を実行するように適合させる手段をさらに含む、請求項２に記載のシングル・チップ・プロトコル・コンバーターＩＣ。
【請求項９】
前記シングル・チップ・プロトコル・コンバーターは、システム・オン・チップ（ＳｏＣ）集積回路（ＩＣ）内のマクロ・コアとして実装され、プロトコル変換のプロセスは、前記ＳｏＣのプロトコル変換マクロ・コア内に含まれる、請求項２に記載のシングル・チップ・プロトコル・コンバーターＩＣ。
【請求項１０】
前記ＳｏＣ  ＩＣは、プロセッサー要素、メモリ・ストレージ要素、ローカル通信バスおよびＩ／Ｏインターフェースを含むコンポーネントを含み、前記シングル・チップ・プロトコル・コンバーターのコアは、前記シングル・チップ・プロトコル・コンバーター・コアと、前記ＳｏＣ  ＩＣの前記コンポーネントの間の通信を、前記ローカル通信バスを介して可能にするためのバス・インターフェース・デバイスをさらに含む、請求項２に記載のシングル・チップ・プロトコル・コンバーターＩＣ。
【請求項１１】
前記１つまたは複数のインターフェース・デバイスは、ファイバー・チャネル、Ｇｂイーサネット（Ｒ）、Ｉｎｆｉｎｉｂａｎｄ、ｉＳＣＳＩ、ＦＣ−ＩＰ、ＴＣＰ／ＩＰ、ＩＰ、ＭＰＬＳ、ＶｏＤＳＬ、ＣＡＮおよびＳＡＭＢＡを含むグループからの１つまたは複数を含む、ネットワーク通信プロトコルに従った通信を受信することができる、請求項２に記載のシングル・チップ・プロトコル・コンバーターＩＣ。
【請求項１２】
システム・オン・チップ（ＳｏＣ）集積回路（ＩＣ）デバイスであって、プロセッサー要素、メモリ・ストレージ要素、およびローカル通信バス、および、プロトコル・タイプに従ってパケットを受信するインターフェース手段、および、組み込みプロトコル・コンバーター・コア・デバイスを含み、前記組み込みプロトコル・コンバーター・コア・デバイスは、第１のプロトコル・タイプに従って生成されたパケットを受信すること、前記パケットを処理してプロトコル変換を実施すること、および、第２のプロトコル・タイプの変換されたパケットを、その出力のために生成する機能を含み、それにより前記プロトコル変換処理は前記組み込みプロトコル・コンバーター・コア・デバイス内で完全に実行される、ＳｏＣ  ＩＣデバイス。
【請求項１３】
前記組み込みプロトコル・コンバーター・コア・デバイスは、
１つまたは複数のプロセッサー・コア・アセンブリであって、各々は、プロトコル変換機能を実施するためのオペレーションを実行することができる２つ以上のマイクロプロセッサー・デバイスを含む、プロセッサー・コア・アセンブリと、
各プロセッサー・コア・アセンブリ内の少なくとも１つのデータおよび命令を格納するための、前記２つ以上のマイクロプロセッサー・デバイスに関連付けられたローカル・ストレージ・デバイスと、
１つまたは複数の通信プロトコルに従って通信パケットの受信および送信を可能にする、１つまたは複数のインターフェース・デバイスと、
前記２つ以上のマイクロプロセッサー・デバイスと前記インターフェース・デバイスの間の通信を可能にするための、前記プロトコル・コンバーター内に存在する相互接続手段とを含む、請求項１２に記載のＳｏＣ  ＩＣデバイス。
【請求項１４】
前記インターフェース手段は、プログラマブルなメディア・アクセス制御インターフェース・デバイス（ＭＡＣ）、および、特定のプロトコルのパケットを外部リンクから受信するため、かつ、前記パケットを前記組み込みプロトコル・コンバーター・コア・デバイスのインターフェース・デバイスに転送するためのプロトコル・インターフェース・アクセラレーター・デバイスを含むグループからの１つまたは複数を含む、請求項１３に記載のＳｏＣ  ＩＣデバイス。
【請求項１５】
前記１つまたは複数のインターフェース・デバイスは、プログラマブルなメディア・アクセス制御インターフェース・デバイス（ＭＡＣ）、および、特定のプロトコルのパケットを前記ＳｏＣ  ＩＣから受信するためのプロトコル・インターフェース・アクセラレーター・デバイスを含むグループからの１つまたは複数を含む、請求項１４に記載のＳｏＣ  ＩＣデバイス。
【請求項１６】
前記１つまたは複数のプロセッサー・コア・アセンブリ、ストレージ・デバイス、相互接続手段、およびインターフェース・デバイスは連携して、第１および第２のプロトコルの間の変換のために必要とされたパケットのサイズ変更および再フォーマットを可能にし、前記組み込みプロトコル・コンバーター・コア・デバイスはさらに、受信されたパケットの、単一のプロトコル・タイプの異なるバージョン・レベルの間の変換を可能にするように適合される、請求項１３に記載のＳｏＣ  ＩＣデバイス。
【請求項１７】
それにより、第１のタイプの受信されたパケットは、１つまたは複数のマイクロプロセッサー・デバイスにパーティション化され、各プロセッサー・デバイスは、同じ命令のセットを実行し、特定のプロトコル・プロセスとペアにされ、プロトコル変換のための前記命令のセットは、プロセッサー・コア・アセンブリ内に完全に含まれ、前記処理は、前記ＳｏＣ  ＩＣデバイス上の異なるリソースによってハンドルするための前記プロトコル・オペレーションのパーティション化を含む、請求項１３に記載のＳｏＣ  ＩＣデバイス。
【請求項１８】
前記１つまたは複数のインターフェース・デバイスは、ファイバー・チャネル、Ｇｂイーサネット（Ｒ）、Ｉｎｆｉｎｉｂａｎｄ、ｉＳＣＳＩ、ＦＣ−ＩＰ、ＴＣＰ／ＩＰ、ＩＰ、ＭＰＬＳ、ＶｏＤＳＬ、ＣＡＮおよびＳＡＭＢＡを含むグループからの１つまたは複数を含む、ネットワーク通信プロトコルに従った通信を受信することができる、請求項１３に記載のＳｏＣ  ＩＣデバイス。
【請求項１９】
ＤＳＰ、コプロセッサー、ハイブリッドＡＳＩＣまたは他のネットワーク処理実装のうち１つとして構成され、前記プロセッサー要素はネットワーク処理デバイスを含み、前記ローカル通信バス・デバイスは、前記組み込みプロトコル・コンバーター・コア・デバイスを前記ネットワーク処理デバイスと相互接続する、請求項１６に記載のＳｏＣ  ＩＣデバイス。
【請求項２０】
前記ネットワーク処理実装のコンポーネントは、ＳＲＡＭ、ＤＤＲコントローラー、ＰＣＩ−Ｘブリッジ、直接メモリ・アクセスＤＭＡデバイス、ＤＭＡコントローラー、および、１つまたは複数のＩ／Ｏインターフェース・デバイスを介して外部コンポーネントとインターフェースをとるためのオン・チップ周辺バス（ＯＰＢ）を含むグループから選択された１つまたは複数を含む、請求項１９に記載のＳｏＣ  ＩＣデバイス。
【請求項２１】
第１のプロトコル・バージョン・レベルに従って生成されたパケットを受信すること、および、前記パケットを処理してプロトコル変換を実施すること、および、同じプロトコル・タイプ内の第２のプロトコル・バージョン・レベルへと変換されたパケットを、その出力のために生成することができる、シングル・チップ・プロトコル・コンバーター集積回路（ＩＣ）であって、それにより前記プロトコル変換の処理は前記シングル集積回路チップ内で完全に実行される、シングル・チップ・プロトコル・コンバーター集積回路（ＩＣ）。
【請求項２２】
前記チップは、
１つまたは複数のプロセッサー・コア・アセンブリであって、各々は、プロトコル変換機能を実施するためのオペレーションを実行することができる２つ以上のマイクロプロセッサー・デバイスを含む、プロセッサー・コア・アセンブリと、
各プロセッサー・コア・アセンブリ内の少なくとも１つのデータおよび命令を格納するための、前記２つ以上のマイクロプロセッサー・デバイスに関連付けられたローカル・ストレージ・デバイスと、
１つまたは複数の通信プロトコルに従って通信パケットの受信および送信を可能にする、１つまたは複数のインターフェース・デバイスと、
前記２つ以上のマイクロプロセッサー・デバイスと前記インターフェース・デバイスの間の通信を可能にするための、前記プロトコル・コンバーター内に存在する相互接続手段とを含む、請求項２１に記載のシングル・チップ・プロトコル・コンバーター集積回路（ＩＣ）。
【請求項２３】
前記シングル・チップ・プロトコル・コンバーターは、システム・オン・チップ（ＳｏＣ）集積回路（ＩＣ）内のマクロ・コアとして実装され、プロトコル変換のプロセスは、前記ＳｏＣのプロトコル変換マクロ・コア内に含まれる、請求項２２に記載のシングル・チップ・プロトコル・コンバーターＩＣ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク・プロセッサー・デバイスおよびストレージ・エリア・ネットワークに関し、詳細には、単一のＩＣチップ内で、あるいは従来のＳｏＣ、ＤＳＰ、ＦＰＧＡ内のサブブロセッサー・コア・コンポーネント、または類似の集積回路サブシステムとして実装された、プロトコル変換のためのアーキテクチャを提供することによって、多数のネットワーク・プロトコルに渡るシステムおよび方法に関する。
【背景技術】
【０００２】
市場がストレージ・エリア・ネットワーク（ＳＡＮ）およびネットワーク接続ストレージ（ＮＡＳ）システムへ移行するにつれて、ならびにインターネットの大規模な拡大により、サーバーおよびストレージ・デザインにおける新しい要求が出されている。並列ＳＣＳＩ接続を介して接続されたストレージは、ファイバー・チャネル（ＦＣ）ストレージ・エリア・ネットワーク（ＳＡＮ）、ならびに、ｉＳＣＳＩおよびFibre Channel over IP（ＦＣ−ＩＰ）などの他の新生のネットワーキング・アーキテクチャによって置き換えられつつある。ｉＳＣＳＩは、通常はギガビット・イーサネット（Ｒ）の周囲に構築された、ＴＣＰ／ＩＰネットワークを介したブロック・データの転送に関係しており、ＦＣ−ＩＰは、インターネット・プロトコル（ＩＰ）ベースのストレージ・ネットワーキング技術であり、この技術により、ＩＰネットワークを介してデータをＳＡＮ設備の間でトンネリングすることによってＦＣ情報の送信が可能となる。
【０００３】
汎用ＣＰＵは、ネットワーク・プロトコル変換の計算要件を満たすことができず、あるいは、単位コスト、スペースおよび電力に関して費用が高すぎる。これは、ネットワーキングおよびプロトコル処理機能の多数をホスト・プロセッサーからホスト・バス・アダプター（ＨＢＡ）またはネットワーク・インターフェース・コントローラ（ＮＩＣ）へオフロードすることにつながる。最初は、大部分のＨＢＡおよびＮＩＣはＡＳＩＣ内で、ハードワイヤード・ロジックを使用して実装された。しかし、ＴＣＰ／ＩＰまたはｉＳＣＳＩなど、複雑なネットワーク・プロトコルを実装する必要性が生じたので、プログラマブルなソリューションが、それが提供するいくつかの利点のために魅力的なものとなっており、これらの利点は、プログラマブルなソリューションが、異なる発展するプロトコルに対処することができること、プログラマブルなソリューションがプログラム変更を介して容易にアップグレード可能であること、プログラマブルなソリューションが、より速い市場参入までの期間を提供することである。
【０００４】
既存のＳＡＮはしばしば物理的にリモートであり、時としてより遠い距離にあり、しばしば、多数のネットワーク・アーキテクチャを使用している。既存のＳＡＮを統合するため、また、既存のＷＡＮおよびＬＡＮインフラストラクチャーを利用するために、データ通信および遠隔通信の分野でネットワーク・プロトコル変換のための必要性がある。プロトコル変換は、システム内のすべての異なる部分のシームレスな統合およびオペレーションを可能にするようになる。
【０００５】
システム・レベルのプロトコル・コンバーター製品は、BrocadeCommunications Systemsによって、マルチプロトコル・ファブリック・ルーティング・サービスのために発表されており、これは[http://biz.yahoo.com/prnews/031028/sftu100_1.html]であり、FibreChannel-to-Fibre Channel（ＦＣ−ｔｏ−ＦＣ）、ｉＳＣＳＩ−ｔｏ−ＦＣブリッジング、および、ファイバー・チャネルからＦＣ−ＩＰへの変換を提供するように計画している。
【０００６】
既存のプロトコル・コンバーターは多数のチップをカード上に統合して、所望のロジック機能性、またはより一般には、既存のホスト・システムにプラグ・インされたホスト・バス・アダプター・カード（ＨＢＡ）を、あるいはメインのホストＩ／Ｏカード上のドーター・カードとして得て、結果として、単位コスト、スペースおよび電力に関してかさばる、より高価な製品を生じる。加えて、既存のプロトコル・コンバーターはプログラマブルではなく、あるいはプログラム可能性が非常に制限されており、異なる、あるいは新しいプロトコルに対処するために容易にアップグレードされない。加えて、様々な物理層アクセス・モジュールまたはチップが存在し、それらの実装および回路技術はしばしば１つの特定の物理層プロトコルに合わせて最適化されており、より新しい物理層プロトコルがポート上で必要とされるとき、ホスト・バス・アダプター（ＨＢＡ）カード全体またはいくつかのコンポーネントの交換が必要となる。同じ物理Ｉ／Ｏカード内の変換は通常行われず、シングル・チップ・ソリューション内で、あるいはＳｏＣ半導体デバイス内の組み込みコアとして通常行われない。
【０００７】
従来技術によるシステム・オン・チップ・デザイン２０を図１に例示する。これは、ＰＰＣ４４０（Ｐｏｗｅｒ  ＰＣ）２５などの処理要素、ローカル・プロセッサー・バス（ＰＬＢ）２１、オン・チップ周辺バス（ＯＰＢ）２４、ならびに、ＳＲＡＭ１５、ＤＤＲコントローラー１８、ＰＣＩ−Ｘブリッジ２２、ＤＭＡ２６およびＤＭＡコントローラー２８などのいくつかのコンポーネント、イーサネット（Ｒ）ＬＡＮシステムのためのデータ・リンク層を提供するために使用されるイーサネット（Ｒ）・メディア・アクセス制御（ＭＡＣ）プロトコル・デバイス５０、プロセッサー・コア・タイマー３３および割り込みコントローラー３５、ならびに、ＯＰＢバス２４およびＰＬＢ２１とインターフェースをとるＯＰＢブリッジ２９を含む。図１に示す従来技術の実施態様では、Ｉ．Ｂ．Ｍ．の組み込みＰｏｗｅｒＰＣ４４０プロセッサー・コアおよびコアコネクト・ローカル・バスが利用されるが、ＡＲＭ（例えば、http://www.arm.com/products/?OpenDocumentを参照されたい）、ＭＩＰＳ（ＭＩＰＳ：「ＭＩＰＳ３２  ４ＫＰ−組み込みＭＩＰＳプロセッサー・コア(MIPS324KP-Embedded MIPS Processor Core)」、http://www.ce.chalmers.se/〜thomas1/in1E/mips32_4Kp_brief.pdf）処理コアなど、他の組み込みプロセッサー・コアを使用する類似の構成を見つけることができる。図１のように、オン・チップ周辺バス２４とインターフェースをとるために提供された他のデバイスには、以下のＲＡＭ／ＲＯＭ周辺コントローラー４５ａ、外部バス・マスター４５ｂ、ＵＡＲＴデバイス４５ｃ、Ｉｎｔｅｒ−ＩＣバス（Ｉ２Ｃ）インターフェース４５ｄ、汎用Ｉ／Ｏインターフェース４５ｅおよびゲートウェイ・インターフェース４５ｆのうち１つまたは複数が含まれる。
【０００８】
ＳｏＣプロセッサーおよびコンポーネント・デザインの態様が記載されている、関連する参照文献には、以下が含まれる。
【０００９】
米国特許第６，３３１，９７７号には、チップの内部のいくつかの機能Ｉ／Ｏの間のクロスバー・スイッチ、および、いくつかの外部接続ピンを含む、システム・オン・チップ（ＳＯＣ）が記載されており、ただしピンの数は内部Ｉ／Ｏの数より少ない。
【００１０】
米国特許第６，２６２，５９４号には、システム・オン・チップのパッドのグループの構成可能な使用のためのクロスバー・スイッチを実装する装置および方法が記載されている。
【００１１】
米国特許第６，０３８，６３０号には、多数のデータ・バスを介して外部構造にアクセスする多数の機能ユニットを有する統合システムのための、共有アクセス制御デバイスを提供するための、クロスバー・スイッチを実装する装置および方法が記載されている。
【００１２】
米国特許出願第ＵＳ２００２／０１８４４１９号には、共通バス・システムを使用するシステム・オン・チップのための異なるコンポーネントの使用を可能にするＡＳＩＣが記載されており、また、共通バスとの互換性を達成するための、異なる速度およびデータ幅を有する機能ユニットのためのラッパーが記載されている。
【００１３】
米国特許出願第ＵＳ２００２／０１７６４０２号には、ＳｏＣ上の機能ユニットをリンクするための八角形相互接続ネットワークが記載されている。相互接続ネットワーク上の機能ユニットはリングとして編成され、中間のコンポーネントを結合するいくつかのクロス・データ・リンクを使用する。
【００１４】
米国特許出願第ＵＳ２００１／００４２１４７号には、ＳＯＣ相互接続のためのシステム・リソース・ルーターが記載されており、これは、各データ・キャッシュ（Ｄ−キャッシュ）および命令（Ｉ−キャッシュ）を接続する２つのチャネル・ソケットを含む。また、相互接続を提供するために、外部データ転送イニシエーター、２つの内部Ｍ−チャネル・バス、およびＭ−チャネル・コントローラーもが含まれる。
【００１５】
米国特許出願第ＵＳ２００２／０１７２１９７号には、point-to-point方式における、チップ上に組み込まれたクロスバー・スイッチを介して、多数の送信および受信デバイスを接続する通信システムが記載されている。
【００１６】
米国特許出願第ＵＳ２００１／００４７４６５号には、本発明のいくつかの変形形態が記載されており、これは、送信を個々の送信タスクに分割すること、各送信タスクについての計算の複雑性を決定すること、および、計算の複雑性を回路毎のＭＩＰＳの数に基づかせることによって、合計のゲートを最小限にするための、通信システム（通常、ＳＯＣまたはＡＳＩＣ）のためのスケーラブルなアーキテクチャを提供する。
【００１７】
エー・ブリンクマン(A. Brinkmann)、ジェー・シー・ニーマン(J. C.Niemann)、アイ・ヘヘマン(I. Hehemann)、ディー・ランゲン(D. Langen)、エム・ポルマン(M. Porrmann)、ユー・ルッカート(U.Ruckert)、「次世代システム・オン・チップのためのオン・チップ相互接続(On-Chip Interconnects for NextGeneration System-on-Chips)」、ＡＳＩＣ２００３の会議の議事録、2003年9月26〜27日、ロチェスター(Rochester)、ニューヨーク(NewYork)という名称の参照文献には、アクティブなスイッチ・ボックスを利用して、パケット・ネットワーク通信を可能にするためにプロセッサー・セルを接続する、ＳｏＣアーキテクチャが記載されている。この論文は、マルチスレッド化機能を有するプロセッサー・コアに言及しておらず、その記載もない。
【００１８】
Kyeong Keol Ryu、Eung Shinおよびヴィンセント・ジェー・ムーニー(VincentJ. Mooney)、「５つの異なるマルチプロセッサーＳｏＣバス・アーキテクチャの比較(A Comparison of Five DifferentMultiprocessor SoC Bus Architectures)」、デジタル・システム・デザインにおけるユーロマイクロ・シンポジウム(EuromicroSymposium on Digital System Design)(DSS'01)の会議の議事録、2001年9月4〜6日、ワルシャワ(Warsaw)、ポーランド(Poland)という名称の参照文献には、グローバル・バスＩアーキテクチャ（ＧＢＩＡ）、グローバル・バスＩＩアーキテクチャ（ＧＢＩＩＡ）、Ｂｉ−ＦＩＦＯバス・アーキテクチャ（ＢＦＢＡ）、クロスバー・スイッチ・バス・アーキテクチャ（ＣＳＢＡ）、およびコアコネクト・バス・アーキテクチャ（ＣＣＢＡ）を含む、マルチプロセッサーＳｏＣバス・アーキテクチャが記載されている。
【００１９】
単一の組み込みプロセッサーに基づいた手法は、いくつかの応用例に対して費用効率が高い統合ソリューションを提供するが、より要求の厳しい応用例によって必要とされる計算能力、および、プロトコル変換のための柔軟性、または例えば２．５Gｂｐｓファイバー・チャネルから１０Ｇｂｐｓファイバー・チャネルへの将来のプロトコル速度増大のための柔軟性に欠けることがある。
【００２０】
過去数年間で、図１のＳｏＣの計算能力は、いくつかのネットワーキングの応用例において、プロセッサー・コア２５と並列に動作する、図２に示す共通バス（ＰＬＢ）に接続された専用プロセッサー・コア（アクセラレータ）３９の追加を通じて、向上されている。これらの追加の専用プロセッサー・コア３９ａ、３９ｂなどは、シリコン・エリア内で通常小さく、これは、通常の汎用プロセッサーで見られる機能の多数（例えば、仮想アドレッシングをサポートするためのメモリ管理ユニットなど）が排除されるからである。この手法の例は、ＩＢＭのＰｏｗｅｒＮＰ（例えば、エム・ヘッデス(M. Heddes)、「ＩＢＭパワー・ネットワーク・プロセッサー・アーキテクチャ(IBM Power Networkprocessor architecture)」、ホット・チップス１２(Hot Chips 12)の議事録、パロ・アルト(Palo Alto)、ＣＡ、ＵＳＡ、2000年8月、IEEEコンピューター・ソサエティ(ComputerSociety)という名称の参照文献を参照されたい）、および、ＮＥＣのＴＣＩ／ＩＰオフロード・エンジン（例えば、「１０  Ｔｅｎｓｉｌｉｃａ  Ｘｔｅｎｓａプロセッサー・コア付きの、ＮＥＣの新しいＴＣＰ／ＩＰオフロード・エンジン(NEC'sNew TCP/IP Offload Engine Powered by 10 Tensilica Xtensa Processor Cores)」、http://www.tensilica.com/html/pr_2003_05_12.htmlという名称の参照文献を参照されたい）である。これらのシステムはプログラマブルであり、したがって、ハードワイヤード・アクセラレーターに比較してより柔軟であるが、いくつかの欠点を有する。すなわち、ａ）これらのシステムは追加のトラフィックをＳｏＣバス（例えば、ＰＬＢ２１）上で引き起こし、これは、バスがこのときプロセッサー・アクセラレータへの命令およびデータ・ストリームをサポートしなければならず、場合によっては帯域幅競合およびシステム・パフォーマンスの制限を引き起こすからであること、ｂ）ＳｏＣバスはしばしばマルチプロセッサーのパフォーマンスに合わせて最適化されないが、ＳｏＣシステム内の標準化されたコンポーネントおよび接続プロトコルとの互換性に合わせて最適化されること、ｃ）プロセッサー・アクセラレータ３９はしばしば非常に制限された命令セットのみを実施し、アセンブラー言語を使用し、したがって、プロセッサー・アクセラレータ上で実行するアプリケーションの開発および保守が非常に困難となり、費用がかかるようになることである。
【００２１】
第３のタイプのＳｏＣデザイン７５は、モトローラのＭＰＣ５５５４マイクロコントローラー（「デザイン・ニュース(Design News)」、2003年11月3日、38ページ）など、クロスバー・スイッチを介して接続された組み込みプロセッサー・コアであり、そのブロック図を図３に示す。図３に例示するように、モトローラのＳｏＣデザインは、ＰｏｗｅｒＰＣプロセッサー・コア、メモリおよびバス・インターフェースを含む、図１および２のＳｏＣデザインと類似の多数の要素からなるが、とりわけ、３ｘ５クロスバー・スイッチ７２をローカル・バスの１つの代わりとして実装する。クロスバー・スイッチ７２をＳｏＣデザインに組み込むことによって、プロセッサー・コア通信はより高速に発生することができ、３つのラインが同時に動作し、それにより帯域幅競合の問題にある程度まで対処する。しかし、ＳｏＣはなお、マルチプロセッサー・サポート、または、単一のＳｏＣチップ内のプロトコル変換のようなより高度な機能、または高速インターフェースに合わせて最適化されていない。チップ内のＩ／Ｏ通信はクロスバー・スイッチによって制限され、なお、外部バス・インターフェースおよびホスト・システム・バスとの通信を必要とし、いかなる将来のアップグレードのためのマイクロコントローラー（ＳｏＣチップ）のパフォーマンスおよび柔軟性をも制限する。いかなるプロトコル変換も、いくつかのステージまたはチップ内で、オフ・チップで実行されることが必要となる。加えて、データ・パケットを、ホスト・システム・バス上に出された命令から分離することはできない。図３の実施例では、あるプロトコル、例えば、通常は自動車の応用例において使用されるＦｌｅｘＣａｎ（ＣＡＮプロトコル：「コントロール・エリア・ネットワーク」）データ・ストリームが現在モトローラＭＰＣ５５５４チップ内に、外部Ｉ／Ｏブリッジ７８を介して実装されており、ならびに、ＤＳＰＩ（または「シリアル・ペリフェラル・インターフェース」）またはｅＳＣＩ（「拡張シリアル通信インターフェース」）などの他のプロトコルが現在実装されており、各プロトコルまたはＩ／Ｏ固有のストリームは、Ｉ／Ｏブリッジ、クロスバー・スイッチ、および通常は内部チップ・バスまたは外部バス・インターフェースのいずれかを通じてシステム・バスへと至る。
【００２２】
現在、シングル・チップ内に今日のプロトコル変換はなく、ある独立プロトコルまたはプロトコル・バージョン・レベルからまったく新しいプロトコルまたはバージョン・レベルへの、内部チップ・バスに接続された組み込みコアによるプロトコル変換のための手段はない。
【００２３】
現在のプロトコル変換はシステム、またはカード・レベルでのみ行われ、前述のように多数のチップを含み、１つの例は、図４に示す、ＳＡＮネットワークについて前述したBrocade Silkworm Fablic Application Server（例えば、http://www.brocade.com/san/extending_valueof_SANs.jspを参照されたい）である。
【００２４】
図４に概念的に示す従来技術のＢｒｏｃａｄｅシステム１００では例えば、FibreChannel-to-Fibre Channel（ＦＣ−ｔｏ−ＦＣ）ルーティング１０２、ｉＳＣＳＩ−ｔｏ−ＦＣブリッジング１０４、およびファイバー・チャネルからＦＣ−ＩＰへの変換１１０の機能が提供される。Ｂｒｏｃａｄｅのデザインは、今日の既存の技術に勝る改良であり、１つのファイバーＩ／Ｏポート・カードが多数のプロトコルをサポートすることができ、システム内の他のポート上のトラフィックを妨げることなく、同じＩ／Ｏカード上であるプロトコルから別のプロトコルへのマイグレーションを行うこともできる。これは、パケットの処理機能、ローカル・メモリおよびフレーム・バッファーを有するいくつかのインラインＲＩＳＣプロセッサー・チップ、ソフトウェア・プリプロセッサー、およびプロセッサー・カード内の変換エンジンにおいて、データおよび制御フレームを分割することによって実施される。これは標準の単一のＨＢＡカードに勝る改良であり、単一のＨＢＡカード内で２つのネットワーク・プロトコルを可能にし、コストおよびスペース、メイン・システム・バス上のトラフィックを妨げることなくプロトコルを変更する柔軟性、データ転送オーバーヘッド、およびメイン・システム・プロセッサー・メモリ上のメモリ競合をなくす。Ｂｒｏｃａｄｅの手法におけるマルチプロセッサーは完全にパイプライン化され、ローカル・メモリに接続される。
【００２５】
この機能性を、単一のＨＢＡカードまたはブリッジ・カードとは対照的にシングル・チップ内に組み込んで、シングル・チップ内の真のプロトコル変換を可能にし、プロトコル・コンバーター内のデータおよび制御フレームを処理して、完成したパケットをローカルＳｏＣバスまたはシステム・バスに送達することが、大変望ましいであろう。これは、Ｉ／Ｏカードをさらに削減する可能性、ハードウェアの節約（チップの数）、より少ない帯域幅競合、メモリ競合を可能にし、より高いプロトコル速度、および、ＳｏＣチップ内の（あるいはローカル・システム・バスに接続された）より多くのプロセッサー、およびより高いスループットを可能にするであろう。
【特許文献１】米国特許出願第１０／６０４，４９１号
【特許文献２】米国特許第６，３３１，９７７号
【特許文献３】米国特許第６，２６２，５９４号
【特許文献４】米国特許第６，０３８，６３０号
【特許文献５】米国特許出願第ＵＳ２００２／０１８４４１９号
【特許文献６】米国特許出願第ＵＳ２００２／０１７６４０２号
【特許文献７】米国特許出願第ＵＳ２００１／００４２１４７号
【特許文献８】米国特許出願第ＵＳ２００２／０１７２１９７号
【特許文献９】米国特許出願第ＵＳ２００１／００４７４６５号
【非特許文献１】http://biz.yahoo.com/prnews/031028/sftu100_1.html
【非特許文献２】http://www.arm.com/products/?OpenDocument
【非特許文献３】ＭＩＰＳ：「ＭＩＰＳ３２  ４ＫＰ−組み込みＭＩＰＳプロセッサー・コア(MIPS324KP-Embedded MIPS Processor Core)」、http://www.ce.chalmers.se/〜thomas1/in1E/mips32_4Kp_brief.pdf
【非特許文献４】エー・ブリンクマン(A. Brinkmann)、ジェー・シー・ニーマン(J.C. Niemann)、アイ・ヘヘマン(I. Hehemann)、ディー・ランゲン(D. Langen)、エム・ポルマン(M. Porrmann)、ユー・ルッカート(U.Ruckert)、「次世代システム・オン・チップのためのオン・チップ相互接続(On-Chip Interconnects for NextGeneration System-on-Chips)」、ＡＳＩＣ２００３の会議の議事録、2003年9月26〜27日、ロチェスター(Rochester)、ニューヨーク(NewYork)
【非特許文献５】Kyeong Keol Ryu、Eung Shinおよびヴィンセント・ジェー・ムーニー(VincentJ. Mooney)、「５つの異なるマルチプロセッサーＳｏＣバス・アーキテクチャの比較(A Comparison of Five DifferentMultiprocessor SoC Bus Architectures)」、デジタル・システム・デザインにおけるユーロマイクロ・シンポジウム(EuromicroSymposium on Digital System Design)(DSS'01)の会議の議事録、2001年9月4〜6日、ワルシャワ(Warsaw)、ポーランド(Poland)
【非特許文献６】エム・ヘッデス(M. Heddes)、「ＩＢＭパワー・ネットワーク・プロセッサー・アーキテクチャ(IBMPower Network processor architecture)」、ホット・チップス１２(Hot Chips 12)の議事録、パロ・アルト(PaloAlto)、ＣＡ、ＵＳＡ、2000年8月、IEEEコンピューター・ソサエティ(Computer Society)
【非特許文献７】「１０  Ｔｅｎｓｉｌｉｃａ  Ｘｔｅｎｓａプロセッサー・コア付きの、ＮＥＣの新しいＴＣＰ／ＩＰオフロード・エンジン(NEC's New TCP/IP Offload Engine Powered by 10 Tensilica XtensaProcessor Cores)」、http://www.tensilica.com/html/pr_2003_05_12.html
【非特許文献８】「デザイン・ニュース(Design News)」、2003年11月3日、38ページ
【非特許文献９】http://www.brocade.com/san/extending_valueof_SANs.jsp
【発明の開示】
【発明が解決しようとする課題】
【００２６】
本発明の目的は、ホスト・システムのリソースを必要とすることなくプロトコル変換処理をシングル・チップまたは組み込みマクロ実装内で完全に実行する、シングル・チップ上の、あるいはＳｏＣマクロとして埋め込まれるような、自己完結型プロトコル・コンバーターを提供することである。
【課題を解決するための手段】
【００２７】
本発明の一態様によれば、有効なプロトコル・コンバーターが単一の半導体チップ上で、あるいは、ＳｏＣタイプのデザインで使用するためのシングル・チップ組み込みプロトコル・コンバーター・マクロとして提供され、シングル・チップまたは組み込みＳｏＣマクロ実装は、ある通信プロトコルを別の新しい通信プロトコルに変換すること、または、ある通信プロトコル・バージョン・レベルを別の通信プロトコル・バージョン・レベルに変換すること、あるいはその両方ができる。例えば、ＳｏＣ組み込みプロトコル・コンバーター・マクロまたはシングル・チップ・プロトコル・コンバーターは、パケットをあるプロトコル・バージョン・レベル、例えばファイバー・チャネル２Ｇｂ／ｓから、別の例えばファイバー・チャネル１０Ｇｂ／ｓへ変換すること、または、シングル・チップまたは組み込みＳｏＣマクロ内のあるプロトコルから完全に異なるプロトコルへの変換（例えば、ファイバー・チャネルからイーサネット（Ｒ）またはｉＳＣＳＩなど）のために構成可能である。
【００２８】
シングル・チップとして実装されるか、組み込みマクロとして実装されるかにかかわらず、プロトコル・コンバーターは、１つまたは複数のプロセッサー・コア・アセンブリであって、その各々は、プロトコル変換機能を実施するためのオペレーションを実行することができる２つ以上のマイクロプロセッサー・デバイスを含む、プロセッサー・コア・アセンブリと、各プロセッサー・コア・アセンブリ内の少なくとも１つのデータおよび命令を格納するための、前記２つ以上のマイクロプロセッサー・デバイスに関連付けられたローカル・ストレージ・デバイスと、１つまたは複数の通信プロトコルに従って通信パケットの受信および送信を可能にする、１つまたは複数の構成可能なインターフェース・デバイスと、前記２つ以上のマイクロプロセッサー・デバイスとインターフェース・デバイスの間の通信を可能にするための相互接続手段とを含む。したがって、シングル・チップ・プロトコル・コンバーターおよび組み込みマクロ・デザインは、ＳｏＣタイプのデザインを、はるかにより高いプロトコル速度に応じてスケールするための手段を含み、より多数のプロセッサーをＳｏＣ実装内に組み込む機能を含むので有利である。
【００２９】
シングル・チップまたは組み込みプロトコル・コンバーター機能性を、完全にパイプライン化されたマルチスレッド化のマルチプロセッサー・チップ・デザインを利用することによって実現することができ、そこではローカル・メモリがチップ内に（あるいはＳｏＣ接続マクロとして）組み込まれてプロトコル変換のすべての機能（サイズ変更、再フォーマット、制御、パーティション化）がハンドルされて、完成したパケットがローカル・バスに送達される。
【００３０】
好ましくは、シングル・チップ・プロトコル・コンバーターおよび組み込みマクロ・デザインは、プロトコル処理の大部分を、ホスト・システム・バスのリソースを必要とすることなく実行し（すなわち、処理はＳｏＣ接続マクロ内で行われる）、すなわち、いかなるプロトコル変換されたパケットも後でローカルＳｏＣまたはシステム・バス上に、必要とされるときに配置される。プロトコル処理命令は、スタンド・アロン・デザインのためのＳｏＣプロトコル・マクロまたはプロトコル変換チップ内で、完全に実行される。改善されたバス・パフォーマンス、システム帯域幅、システム内のプロトコルの数の増加、および、ホスト・バス接続カードの著しい削減または除去を達成することができる。
【００３１】
シングル・チップ組み込みマクロのために、通常はプロトコル変換の応用例において使用されるメイン・システム・ドーター・カードは除去され、したがってコストが低下し、パフォーマンスが高まる。
【００３２】
さらに、ＳｏＣ組み込みプロトコル・コンバーター・マクロまたはシングル・チップ・プロトコル・コンバーター・アーキテクチャは、ある機能（すなわち、プロトコル変換）からまったく新しい機能（ＴＣＰ／ＩＰオフロード、アクセラレータ、ファイアウォール機能など）へと容易に再構成可能である。このように、シングル・チップまたは組み込みプロトコル・コンバーター・マクロの動作機能を、まったく新しい動作機能へと修正することができ、この新しい動作機能は、そのために最初にプログラムされていた可能性のある第１の動作機能とは別のユニークなものである。この動作機能変更を、それだけに限定されないが、チップ内のプロセッサー・コア・アセンブリ（プロセッサー・クラスター）の数、クラスター内のプロセッサーの数、ローカル・メモリ（例えば、クラスター内の命令キャッシュ・メモリ）の量、および、各クラスターに関連付けられたローカル・メモリ（ＳＲＡＭ、ＤＲＡＭなど）の量を含む要素に基づかせることができる。
【００３３】
さらなる実施形態によれば、シングル・チップ・プロトコル・コンバーター集積回路（ＩＣ）またはＳｏＣプロトコル変換マクロ・コア実装は、十分なローカル・メモリ、制御ロジック、収集および作業キュー、クロスバー・スイッチまたは他のスイッチング・サブシステム、プロトコル制御、インターフェース、およびバス・ブリッジＩ／Ｏ機能がシングル・チップ・デザイン内に組み込まれた、マルチスレッド化、パイプライン、マルチプロセッサー・コアを利用する。標準バス・ブリッジＩ／Ｏ機能をシステム・オン・チップ（ＳｏＣ）ローカル・バスに組み込むことによって、組み込みプロトコル・コンバーター・マクロはさらに、より高い密度、効率、改善されたホスト・プロセッサー・パフォーマンス、帯域幅、およびメモリ競合の改善、オーバーヘッドの削減のために実現される。マルチスレッド化の手法である、少数の命令、単純なプロセッサー構造、組み込みメモリ、および、プロセッサー内の深くまで実行しないコンテキストによるパイプライン化では、プロトコル・コンバーター・チップまたは組み込みマクロを非常に適合可能にすることができ、また、多数のプロトコル、バージョン・レベル、および、最初のプロトコル・コンバーター・チップまたは組み込みＳｏＣマクロが最初に意図されたものとは別のネットワーク機能に対しても再構成可能にすることができる。
【００３４】
本発明のＳｏＣ組み込みプロトコル・コンバーター・マクロまたはシングル・チップ・プロトコル・コンバーターは、ＳＡＮネットワーク、サーバー、ホーム・ネットワーク、自動車ネットワーク、産業および遠隔通信から、単純なＩ／Ｏプロトコル・データ・ストリームまでの、多数の応用例に適用されるので有利である。
【００３５】
本発明の装置および方法のさらなる特徴、態様および利点は、以下の説明、付属の特許請求の範囲、および添付の図面に関してよりよく理解されるであろう。
【発明を実施するための最良の形態】
【００３６】
本明細書で参照されるとき、「プロトコル」という用語は、通常は規格機関によって指定されたいずれかの特定の入力／出力（Ｉ／Ｏ）通信データ物理層ストリームを指し、あるいは、会社内部の独自のインターフェースにすることができ、その例には、それだけに限定されないが、ファイバー・チャネル、ギガビット・イーサネット（Ｒ）、ｉＳＣＳＩ、ＩＰ、ＴＣＰ／ＩＰ、ＦＣ−ＩＰ、ＥＳＣＯＮ、ＦＣＯＮ、ＣＡＮ、ＳＡＭＢＡ、ＤＳＬ、ＶｏＩＰ、ＭＰＬＳ、ＧＭＰＬＳその他多数が含まれる。
【００３７】
説明する実施形態では、プロトコルは、ファイバー・チャネル、イーサネット（Ｒ）、ｉＳＣＳＩ、ＥＳＣＯＮ、ＦＣＯＮ、ＩＰ、階層化、または、ＦＣ−ＩＰ、ＩＰ／ＭＰＬＳなどのカプセル化されたプロトコルなど、通信プロトコルである。データ通信プロトコルは通常、バイト、ワードまたはセット、フレーム、およびパケット単位で配列されたデータ・ビットを有し、フレームの開始、フレームの終了、ソース、宛先などの制御文字、ならびに、ビット・ストリームのペイロード内の実際のデータを有する。
【００３８】
本発明のプロトコル・コンバーターは専用プロセッサーを使用し、スタンドアロンまたはＳｏＣ（システム・オン・チップ）タイプのデザイン内で統合されるものとして実装される。ＳｏＣ実装のためのマクロとして利用することができるベース・プロトコル・コンバーター・チップ３５０のブロック図を、図５に例示する。
【００３９】
このコアの基本的構造およびオペレーションは、本明細書に組み込まれた、２００３年７月２５日出願の「システム・オン・チップ・デザインのためのコンポーネントとしての自己完結型プロセッサー・サブシステム(Self-Contained processor subsystem as component for System-on-Chipdesign)」という名称の、所有者が同じである同時係属の関連米国特許出願第１０／６０４，４９１号に記載されており、そのオペレーションをここで本明細書で説明する。
【００４０】
簡単に言えば、図５のように、シングル・チップ上の（または、ＳｏＣ組み込みマクロ・コアとしての）プロトコル・コンバーターは、プロトコル変換専用の自己完結型プロセッサー・ベースのサブシステム３５０であるが、他のネットワーク機能へと再構成可能であり、１つまたは複数のプロセッサー・クラスター２００、データまたは命令あるいはその両方を格納するための１つまたは複数のローカル・メモリ・バンク２１５、および、クロスバー・スイッチ（または別法として、ファブリック・スイッチまたはＭＰバスを利用することができる）または他の類似のスイッチング手段として実装されたローカル相互接続手段２２０を含む。本発明のシングル・チップ・プロトコル・コンバーター・デザインは、ＰｏｗｅｒＰＣアーキテクチャから導出された、低減された汎用命令セットを有する、多数の単純なプロセッサー・コアを含む。
【００４１】
各プロセッサー・クラスター２００は、１つまたは複数の処理コア２０５を含み、その各々は、４ステージの深さのパイプラインを有するシングル・イシュー・アーキテクチャであり、各プロセッサー・コア２０５はそれ自体のレジスター・ファイル２２６、演算論理装置（ＡＬＵ）２２５および命令シーケンサー２２７を有する。図５に示すシングル・チップ・プロトコル・コンバーター、および、図８に示すプロトコル変換のためのＳｏＣ組み込みマクロの実施形態では、８個のプロセッサー・コア２０５がプロセッサー・クラスター２００内に、命令キャッシュ２０８と共にパックされる。命令キャッシュのサイズはデザイン・オプション、例えば３２ｋＢであり、これはネットワーク・アプリケーションには十分である。ローカル・バスを介して少なくとも２個のプロセッサー・コア２０５に関連付けられたローカルＳＲＡＭメモリ・ユニット２３０が、さらに提供される。例えば、１個、２個または１６個ものプロセッサー・クラスター（１２８個のコアを含む）など、十分な計算能力をサポートするために必要とされるプロトコル・コンバーター３５０内のプロセッサー・クラスター２００の厳密な数は、アプリケーションの要件によって決まる。例えば、ファイバー・チャネル・ネットワーク・プロトコルのための機能性を実施するには、より複雑なＴＣＰ／ＩＰ終端、ＩＰ、またはｉＳＣＳＩプロトコル変換の実施態様のためよりも少ない計算能力が必要となる。
【００４２】
本発明のプロセッサー・ベースのサブシステム・プロトコル・コンバーター３５０のもう１つの特徴は、組み込みメモリ２１５を、アプリケーション・プログラム、現在の制御情報、およびアプリケーションによって使用されるデータを格納するために使用することである。標準の動作条件下でスムーズなオペレーションを提供するために十分な量のメモリが、そのサイズを過度に増すことなく、プロトコル・コンバーター内に配置される。従来のオフ・チップ・メモリと比較して、組み込みメモリのさらなる利点は、短く予測可能なアクセス時間を提供することであり、これはパケットの処理のための時間許容度推定において正確に計上される。
【００４３】
プロトコル・コンバーター・チップ３５０内のすべての要素はクロスバー・スイッチ２２０を介して相互接続され、クロスバー・スイッチ２２０は具体的には、プロセッサー・クラスター２００、共有メモリ・ブロック２１５、およびネットワーク・プロトコル層ハードウェア支援デバイスまたは組み込みＭＡＣインターフェース１７５、１８５を相互接続する。ＳｏＣ内の組み込みマクロとして実装されるとき（本明細書で図８〜１０に関して説明するものなど）、クロスバー・スイッチ２２０は、ＳｏＣプロセッサー・ローカル・バス２１０または外部システム・バス２２３（例えば、ＰＣＩまたはＰＣＩ−Ｘなど）に、ブリッジ・マクロ（バス）２２４を用いて接続されるか、あるいは直接接続される。ブリッジを、異なる速度、バス幅、信号およびシグナリング・プロトコルに対処するように適合させることができる。マクロＳｏＣ実装では、プロトコル・コンバーター・マクロ３５０と組み込みプロセッサー・ローカル・バス２１０（例えば、ＩＢＭのコアコネクトのＰＬＢ、またはＡＲＭＢＡのＡＲＭ、ＭＩＰなど）の間の標準インターフェースの利点は、プロセッサー・コンバーターをＳｏＣコンポーネント・ライブラリ内のマクロとして統合することを可能にすることである。
【００４４】
ネットワーク・プロトコルのより低いレベルでの非常に時間依存型の機能のためにさらに実装されるものは、ハードウェア・アクセラレータであり、これは低レベル・プロトコル・タスクをハンドルし、これらのタスクは、データ・エンコード／デコード、シリアライゼーション／デシリアライゼーション、リンク管理、ならびに、ＣＲＣおよびチェックサム計算などである。これらのタスクは、転送されたパケットのあらゆるバイトにおいて実行され、ソフトウェア内で実装される場合、非常に計算が高価となる。これらの機能のハードウェア実装はしたがって、ファイバー・チャネルおよびギガビット・イーサネット（Ｒ）１８５のためのネットワーク・インターフェース１７５内で実装されたハードウェア・アクセラレータとして提供され、各々は小さいシリコン・エリアのみを必要とし、各ファイバー・チャネルおよびギガビット・イーサネット（Ｒ）通信リンク１９０、１９５とそれぞれインターフェースをとる。
【００４５】
プロトコル・コンバーター・コア３５０およびプロセッサー・バス（ＳｏＣプロセッサー・ローカル・バス、またはシングル・チップ実装におけるシステム・バス）の分離から生じる追加の利点は、１）プロトコル・コアとＳｏＣシステムまたはシステム・バスの間の唯一のトラフィックがデータの流れのトラフィック（データの受信および送信）であり、したがって帯域幅競合が最小限にされること、および、２）サブシステム相互接続ファブリック（すなわち、スイッチ）が、最適化された高パフォーマンスのソリューションをプロトコル・コアに提供し、標準コンポーネント・インターフェースおよびＳｏＣ全体の接続プロトコル、スイッチ・ファブリックに接続された他のプロセッサー、またはメイン・システム・バス自体に対処する必要なしに、より高いプロトコル変換速度、単一のＳｏＣまたはホスト・バス・アダプター・カード内でハンドルされるプロトコルの増加、およびメイン・システム・バス上の競合の低減が可能となることである。
【００４６】
プロセッサー・サブシステムがプロトコル・コンバーターとして（スタンドアロン・シングル・チップ、または組み込みＳｏＣマクロとして）実装されるときのオペレーションを、このとき説明する。一実施形態では、シングル・チップ・プロトコル・コンバーター３５０（または、ＳｏＣデザインでは組み込みマクロ）は、ファイバー・チャネル（ＦＣ）からギガビット・イーサネット（Ｒ）（ＧＥ）への変換を提供する。このデザインにより、ファイバー・チャネルからＩＰ、ファイバー・チャネルからｉＳＣＳＩ、ファイバー・チャネルからＩｎｆｉｎｉｂａｎｄ、ＴＣＰ／ＩＰからｉＳＣＳＩ、および本明細書で述べた他のプロトコルのいずれかなど、多数の組み合わせが可能になることを理解されたい。実際には、この実装はデータ通信プロトコルのみに限定されないが、自動車ネットワーク、家庭または産業の環境内で実装することができ、これらは、ＣＡＮなどの自動車ネットワークのためのモトローラＭＰＣ５５５４マイクロコントローラー、またはホーム・アプリケーションのためのＳＡＭＢＡネットワークに類似したものなどである。
【００４７】
図６は、ファイバー・チャネルからギガビット・イーサネット（Ｒ）へのシングル・チップ・プロトコル・コンバーター３００として構成された、図５のシングル・チップ・プロトコル・コア３５０の例示的な図解である。
【００４８】
図６に示すプロトコル・コアでは、必要とされたエンドポイント機能性、ならびに、２つのプロトコルの間の変換のために必要とされたパケットのサイズ変更および再フォーマットが実装される。この実装のための基本は、プロトコル・オペレーションをパーティション化して、これらのプロトコル・オペレーションをチップ上の異なるリソースによってハンドルすることができるようにすることである。プロセッサー（または、プロセッサーのグループ）に対する各プロトコル・オペレーションは、実装されるネットワーク物理インターフェースに近いいくつかの時間依存型機能を除いて、ハードウェア・アクセラレータによる。パケットおよび処理の流れをここで、図６に関して以下のように説明する。受信されたパケットおよびある状況情報は、インバウンドＦＩＦＯバッファから組み込みメモリへ、ＤＭＡロジックによって転送され、ＤＭＡロジックはすでに空きバッファのリストから空のメモリ域へのポインタを受信している。パケット・ヘッダーが検査されてパケット・コンテキストが決定され、必要な場合は現在のコンテキストがスイッチされ、これは、制御情報をメモリから得ることによって、あるいは、パケットが新しい交換の第１のものである場合に新しい制御情報を生成することによって行われる。加えて、受信されたパケットが検証されて、このパケットが、属する交換のサービス・クラスによりコンパイルすることが保証される。受信されたパケットについての肯定応答をソースに戻すように送信することが必要とされる場合（例えば、ファイバー・チャネル内のクラス２サービス）、肯定応答パケットが生成される。肯定応答パケットについての対応するヘッダー情報がアセンブルされ、パケットがアウトバウンド・ファイバー・チャネル・ネットワーク・インターフェースに送信される。パケットは、本明細書ではデータ・ビットの集合として定義され、少なくとも宛先情報を含み、また通常、通信パケットではヘッダーも含む。
【００４９】
一方、ギガビット・イーサネット（Ｒ）のパケット・ヘッダーが、受信されたパケットについて生成され、パケットはイーサネット（Ｒ）・ネットワーク・プロトコルに従ってサイズ変更される。新たに形成されたパケット（または複数のパケット）は、イーサネット（Ｒ）（ＥＭＡＣ）ネットワーク・インターフェース・ハードウェア・モジュール１８５内のアウトバウンドＦＩＦＯバッファに転送される。類似のタスクは、反対のプロトコル変換を実行するため、すなわち、パケットをイーサネット（Ｒ）からファイバー・チャネル・ネットワークに転送するために行われる。このプロトタイプ・シングル・チップ・ファイバー・チャネル／イーサネット（Ｒ）・プロトコル・コンバーターの実装３００の論理表現を、図６に例示する。この実装の例は１４個のプロセッサーを使用し、これらのプロセッサーは、図６の処理ブロック２６０内に示すファイバー・チャネル（ＦＣ）からイーサネット（Ｒ）への変換において動作し、ＦＣ入力パケットはプロセッサーＰ１で受信され、反対の変換プロセスを図６の処理ブロック２７０に示す。
【００５０】
プロトコル・タスクをハードウェア・リソースに割り当てることは、図６に示すプロセスの流れに従って以下のように実行される。プロセッサーＰ１がファイバー・チャネル・インバウンドＤＭＡセットアップおよびターゲット・メモリ域割り当てを処理し、プロセッサーＰ２が、パケット・ヘッダー情報に基づいて、４個のプロセッサーＰ３〜Ｐ６のうち１つにパケットをディスパッチし、これがコンテキスト・スイッチ、パケット検証、および、必要とされる場合に肯定応答パケット生成を実行し、プロセッサーＰ７がイーサネット（Ｒ）・ヘッダー生成を実行し、イーサネット（Ｒ）・アウトバウンド・ネットワーク・インターフェースへのデータ転送をセットアップし、もはや必要とされないメモリ域ブロックを空きバッファのリンク・リストに戻す。同様に、イーサネット（Ｒ）・ネットワークからファイバー・チャネル・ネットワークへのパケットの流れは、図６に示すようにプロセッサーＰ８〜Ｐ１４によってハンドルされる。イーサネット（Ｒ）・ネットワークに送信されるパケットへのポインタは、作業キュー２４９に配置され、ファイバー・チャネル上で送信されるパケットへのポインタは、ファイバー・チャネル・アウトバウンド作業キュー２５９上に配置される。
【００５１】
他のネットワーク・プロトコルまたはプロトコル変換を、類似の方法で容易に実装することができる。例えば、ｉＳＣＳＩまたはＴＣＰ／ＩＰプロトコル・スタックの実装では、ユニプロセッサー実装のための既存のコードを再利用することができ、この既存のコードをアーキテクチャに適合させるための適度のプログラミング労力のみが必要となる。具体的には、パケット・ディスパッチングおよび収集のタスク（それぞれ、受信パスではＰ２およびＰ７のラベルが付けられたプロセッサー、および、送信パスではＰ９およびＰ１４のラベルが付けられたプロセッサー）を実装しなければならないが、ネットワーク・プロトコルは、ほとんど不変で並列で、Ｐ３からＰ６、およびＰ１０からＰ１３のラベルが付けられたプロセッサー上で実行するように適合される。プロトコル・タスクを並列で実行するプロセッサーの数を、タスクの複雑さに従ってスケールして、タイミング要件を満たさなければならない。例えば、ｉＳＣＳＩプロトコル変換は、シングル・チップ・プロトコル変換を実行するための図６に示す実施例では、１４個を超えるプロセッサーを必要とすることがある。
【００５２】
多数のプロセッサー・コア上のパケット処理は、すべての処理オペレーションを実行する単一のプロセッサーにパケットが割り当てられる、実行−完了の手法に従うことによって、あるいは、それにより別々のプロセッサーに割り当てられる複数のパイプライン・ステージにパケット処理オペレーションがパーティション化される、パイプライン化を介して実行される。本明細書で説明する一実施態様では、パイプライン化手法は、例えばＩ−キャッシュなど、ハードウェア・リソースのよりよい利用を提供する。別々のパイプライン・ステージに割り当てることができるネットワーク・オペレーションの例は、ヘッダー・ハンドリング、パケット検証、肯定応答の生成、パケットの再配列およびメッセージ・アセンブリ、ならびにエンドツーエンド制御である。
【００５３】
プロトコル・タスクをプロセッサーにスケジューリングすることは、初期化中に静的に実行され、すなわち、各プロセッサー２０５は同じセットのオペレーションを様々なパケット上で実行する。同様に、ガーベッジ・コレクションなど、動的メモリ管理に関連付けられたオーバーヘッドを回避するために、静的メモリ管理が使用される。使用されるすべてのメモリ構造２３０は、システム起動中に初期化される。これらのメモリ構造には、データ・パケットを格納するためのメモリ域２７５、既存のネットワーク接続の制御および状況情報のためのメモリ２８０、プログラムコード２８５および作業キューが含まれる。このアーキテクチャにおいて使用される様々なメモリ構造を図７に例示する。これは、パケット・プロトコル変換のすべてのサブプロセスがシングル・チップ内に、あるいは、ＳｏＣタイプのデザインに接続された組み込みマクロとして残ることができるようにし、最後の完成したパケットをシステム・バスまたは内部ＳｏＣバスに送達することができるようにする、これらの構造の提供である。
【００５４】
図７のように、データ・パケットを格納するメモリ域２１５は、リンク・リスト２７５として編成される。着信パケットは、リンク・リストから得られた次の空きバッファに格納される。パケット処理中に、パケットが格納されるメモリ域へのポインタのみが、プロセッサーの間で受け渡される。パケット処理が完了するとき、パケットはアウトバウンド・ネットワーク・インターフェースに転送され、バッファは空きバッファのリストに戻される。
【００５５】
プロセッサー同期化は、さらに（図７に）示すように、作業キュー２９０を介したメッセージ受け渡しの形態で実行される。この手法では、各プロセッサーＰ１〜Ｐ４が作業キュー２９０に関連付けられ、これが、そのスレッドによって処理されることを待機中のパケットへのポインタを格納する。プロセッサーが次のパケットに取り組む準備ができているとき、プロセッサーは次の保留中パケットのポインタをその作業キューから得る。処理を終了するとき、プロセッサーはこのパケットへのポインタを、パイプライン内の次のスレッドの作業キューに配置する。メモリ・アクセス衝突の際の正確なオペレーションを保証するために、ロッキングが利用される。
【００５６】
プロセッサーのスケジューリングにおける重要な考慮事項は、すべてのパイプライン・ステージが同じパケット処理時間を必要としないことがあること、およびさらに、各パイプライン・ステージの処理時間がパケット・コンテキストに応じて変わることがあることである。例えば、ファイバー・チャネルでは、パケット処理時間は、パケットがパケットのシーケンス内の最初のパケットであるか、中央のパケットであるか、最後のパケットであるかによって、パケットがリンク制御情報を搬送するかどうかによって、また、パケットが送信請求メッセージに属するか、非送信請求メッセージに属するかによって決まる。パイプラインのステージの１つが他のステージより著しく遅い場合、その作業キューがオーバーロードされるようになり、ボトルネックになることがある。これは、いくつかのプロセッサー、例えば図７のＰ１〜Ｐ４を使用して同じパイプライン・ステージに並列に取り組むことによって、修正される。
【００５７】
パイプライン・ステージ内の処理時間がパケットの間で変わることがあるので、すべてのプロセッサーを十分に利用することはできない。その代わりに、パイプライン・ステージの間で調和のとれたスループットは、十分なバッファリングおよび分離ロジックを提供することによって達成される。
【００５８】
同じタスクに取り組むために多数のプロセッサーを割り当てるには、タスク・ディスパッチング・プロセッサー（例えば、図７ではプロセッサーＰ５として示し、「ＭＴ」というラベルが付けられる）の導入が必要となる。パケット割り当て方法は短い処理時間で実行するように単純であり、リソース競合およびロッキングを通じたパフォーマンス劣化につながってはならない。
【００５９】
その代わりに、ファイバー・チャネルの実施態様では、ビン・ソート・アルゴリズムが使用され、これは結果として、同じコンテキスト・グループに属するすべてのパケットを単一のプロセッサーによって処理することになる。現在のコンテキストに関する情報はプロセッサーのレジスター・ファイル内にキャッシュされ、リソース競合、およびこの情報をフェッチするための平均アクセス時間が減る。ソートのオーバーヘッドは、単純なハッシュ関数を使用することによって低く保たれる。一実施態様では、パケット・ソートおよびプロセッサー割り当てのタスクは約５０個の命令のみを導入する。しかし、これは、デザインの選択に応じて変わることがあり、３５個〜２００個の命令のいずれにも及ぶ可能性があることを理解されたい。図示の実施形態では、可能な限り少ない命令セットとして使用されており、例えば、３５個〜５０個の命令に及ぶ。いずれかの所与の時間に通常のネットワーク・トラフィック内のプロセッサーよりもアクティブなコンテキスト・グループがあることがあり、いくつかの異なるコンテキストを単一のプロセッサーに同時に割り当てることができる。最悪の場合、すべてのパケットがただ１つのプロセッサーに割り当てられることがあり、プロセッサーのオーバーロードを引き起こす可能性がある。しかし、実際のアプリケーションを実行中のネットワーク・トラフィックは、これが問題ではないことを明らかにしており、これはコンテキスト・グループが、並列で動作するプロセッサーの間で均一に分散されるからである。
【００６０】
シングル・チップ・プロトコル・コンバーターのアーキテクチャはセルラーであり、デザインをカスタム・スケールすることができる。デザインでは、プロセッサー・コアおよび組み込みメモリ・ブロックの数は、著しいデザインの変更を行うことなくアプリケーションの要件に容易に適合される。例えば、以下のネットワーキング・アプリケーションでは、１０Ｇｂ／ｓの回線速度で動作するマルチプロセッサー・プロトコル・コンバーターの、必要とされる計算能力は、後述のように変わることがある。この点で、プロトコル・コンバーター・デザインは実際に他のネットワーク処理機能に「適合可能」であり、これは、レイアウト・デザイン、組み込みメモリ、異なるプロセスによってハンドルされたネットワークおよびプロトコル・リソースのパーティション化によるものであり、また、様々なサブプロセッサーに委任され、「制約されない」ものであり、すなわち、プロセッサーは特定のネットワーク機能から独立しており、これは、各プロセッサーが、ＴＣＰ／ＩＰオフロード機能、フレーム分類子機能、前処理機能、ハードウェア・アクセラレータ、ＲＩＳＣまたはデータ処理機能など、ただ１つの所与の潜在的機能性のみを有する従来技術とは異なることに留意されたい。本発明のシングル・チップ・プロトコル・コンバーター３５０、または組み込みマクロ・コア５５０として、同じプロセッサー、およびローカル・メモリのペアは、所期のオペレーションをスケールするために十分な処理能力が与えられる限り、異なるネットワーク機能（すなわち、オペレーション）を実行することができる。いくつかの実施例を以下に挙げる。
【００６１】
プロトコル変換：１４個のプロセッサー（すなわち、２個の８コア・プロセッサー・クラスター）。図５および６に示す６４バイトのＩ−キャッシュ、６４ＫバイトのデータＳＲＡＭ、ＰｏｗｅｒＰＣ４４０（または他のプロセッサー）、および他のマクロを含むチップは、０．１３ｍのＡＳＩＣ技術では約３５ｍｍ２を必要とするようになる。
【００６２】
ＴＣＰ／ＩＰオフロード・エンジン：３２個のプロセッサー、すなわち、４個のプロセッサー・クラスターであり、１２８ＫバイトのＩ−キャッシュおよび１２８ＫバイトのＳＲＡＭを仮定すると、これは上記の技術では５０ｍｍ２を占有するようになる。
【００６３】
統合ファイアウォール：１２８個のプロセッサー（推定）、すなわち、１６個のプロセッサー・コア・クラスター。５１２ＫバイトのＩ−キャッシュおよび５１２ＫバイトのＳＲＡＭを仮定すると、結果として生じるチップは約１５０ｍｍ２となる。
【００６４】
同じ基本アーキテクチャ（より多数のサブプロセッサーをチップ内で、あるいは、所与のアプリケーションのために必要とされるＳｏＣ組み込みマクロとして構築することができる）は、ネットワーク速度または市況が変化するときに適合可能である。例えば、このアーキテクチャは、このチップを「ファイアウォール・プロセッサー」または「プロトコル・コンバーター」として、あるいは、実装されてもいないまったく新しいデザインまたはプロトコルとしても再構成するように適合される。このように、１つの基本デザインは、多数のアプリケーションおよび潜在的な機能まで拡張可能である。チップまたは組み込みマクロＳｏＣコアのネットワーク機能を、チップのデザインを変更することなく、変更することができ、これはプロセッサーおよびメモリ・ユニットの数を単に選択すること、および次いで、適切なソフトウェア・コアまたはバージョン・レベルを適用することによって行うことができる。新しいプロトコル機能のための、選択されるプロセッサーおよびメモリ・ユニットの数は、意図された新しい機能のためのコアのパフォーマンスの統計シミュレーションによって選択される。
【００６５】
前述のように、プロトコル・コンバーターを、別の半導体基板上のスタンドアロンの集積回路チップとして実装することができ、あるいは、ＳｏＣタイプのデザイン、ＦＰＧＡ、ＤＳＰなどのマクロとして組み込むことができる。本発明の第２の態様によってＳｏＣ（システム・オン・チップ）デザイン４００内の組み込みマクロ・コアとして実装されたプロトコル・コンバーターの一実施例を、図８に示す。マクロはＳｏＣデザインに限定されないが、標準ＤＳＰ、マイクロコントローラー、ＦＰＧＡ、ＡＳＩＣおよびマイクロプロセッサー内で実装することもでき、これは、必要とされるものが、完成されたデータ・パケット（変換済または未変換）を送達するための標準バス・インターフェースまたはブリッジのみであるからである。「ＳｏＣ」という用語は一般的に、ローカル・バスまたは多数のオン・チップ・バスに接続された少なくとも１つの処理要素、メモリ要素、Ｉ／Ｏインターフェースおよびコアを有する、システム・オン・チップを定義するために使用される。
【００６６】
図８のように、組み込みプロトコル・コンバーター・マクロ・コア５５０（スタンドアロン・チップ・デザインとして図５にも示す）を含むＳｏＣ４００の一実施形態は、ＣＰＵまたはＭＰＵ要素４２５（ここではＩＢＭのＰｏｗｅｒＰＣ４４０として示すが、ＰｏｗｅｒＰＣの他にも、ＡＲＭ、ＭＩＰなど、他のＳｏＣプロセッサー・コアを実装することができることを理解されたい）、ローカルＳｏＣバス２１０（図８でＩＢＭのコアコネクトＰＬＢ２１０（プロセッサー・ローカル・バス）として例示）、オプショナルのより低速のバス（図８でＩＢＭのオン・チップ周辺バスまたはＯＰＢ２４０として例示）、および、図１に示すものなど、いずれかの数のＳｏＣコンポーネント（コア）を含み、このＳｏＣコンポーネント（コア）には、ＳＲＡＭ４１５、ＤＤＲコントローラー４１８、ＰＣＩ−Ｘブリッジ４２２、ＤＭＡ４２６およびＤＭＡコントローラー４２８、ＯＰＢブリッジ４２９などが含まれる。ＯＰＢ２４０は他のデバイスを接続し、これには、ＲＡＭ／ＲＯＭ周辺コントローラー４４５ａ、外部バス・マスター４４５ｂ、ＵＡＲＴデバイス４４５ｃ、Ｉｎｔｅｒ−ＩＣバス（Ｉ２Ｃ）インターフェース４４５ｄ、汎用Ｉ／Ｏインターフェース４４５ｅおよびゲートウェイ・インターフェース４４５ｆのうち１つまたは複数が含まれる。
【００６７】
図８に示す実施形態には、自己完結型プロセッサー・ベースのプロトコル・コンバーター５５０が含まれ、これは、シングル・チップ・プロトコル・コンバーターまたはＳｏＣシステム４００内の組み込みマクロ・コアとして統合され、プロセッサー・コア４２５バスと、ブリッジ２２４およびＰＬＢ２１０を介して通信する。上述のように、プロセッサー・ベースのプロトコル・コンバーター・マクロ・コア５５０は、１つまたは複数のプロセッサー・クラスター２００、データまたは命令あるいはその両方を格納するための１つまたは複数のローカル・メモリ・バンク２１５、図示の実施形態ではクロスバー・スイッチ２２０などのローカル相互接続手段、または同等に、ファブリックまたはＮｘＸスイッチなど、および、少なくとも２つのネットワーク・プロトコルのための少なくとも２つのメディアアクセス制御（ＭＡＣ）インターフェース・ユニット１７５、１８５（メディアアクセス制御）を含む。図８のように、これらのＭＡＣユニット１７５、１８５は各外部ＭＡＣインターフェース・デバイス４７５、４８５とインターフェースをとり、各外部ＭＡＣインターフェース・デバイスは、物理層チップ（ＰＨＹ）、ＳｏＣ組み込みＭＡＣもしくはＰＨＹ機能、または、ＳｏＣもしくはホスト・カードから分離した外部プロトコル・チップであってもよい。すなわち、図８のＭＡＣ４７５、４８５は、ファイバー・チャネル・ハードウェア支援コアおよびイーサネット（Ｒ）１０／１００／１Ｇ  ＥＭＡＣを含むことができるが、いかなるプロトコルのためのインターフェースを含んでもよく、別々のＭＡＣまたはＰＨＹデバイス（物理層チップ）としてオフ・チップで統合することができ、あるいは、ローカル・カード上のＳｏＣチップの外部であってもよい。自動車の応用例またはホーム・ネットワーキングなど、今日のより低速の応用例では、これが望ましいことがある。
【００６８】
図９は、組み込みＳｏＣ内の単一のパケットの、外部プロトコル・インターフェースへのプロトコル変換のためのプロセスの流れを例示する。マクロ内のローカル・メモリがパケットの処理およびＤＭＡ転送を制御するので、パケットをマクロからのプロトコル変換の後に第１のインターフェースから第２のＩ／Ｏインターフェースへ転送することができ、あるいはローカルＳｏＣバス２１０に、かつ最終的にホスト・システム・バス２２３（例えば、図９に示すＰＣＩ−Ｘ１３３ＭＨｚまたは類似の等価物）に出力することができる。好ましくは、通信は二重であり、すなわち、送信および受信方向の通信を可能にするリンクを含む。図９に示す例として、ＡからＢへのパケット変換を、第１のプロトコルに従ったパケットで示し、例えば、１Ｇイーサネット（Ｒ）・パケットがＳｏＣ外部プロトコル・チップ、マクロまたはＥＭＡＣ（外部イーサネット（Ｒ）Ｉ／Ｏ）インターフェース４８５で受信され、クロスバー・スイッチ２２０を介してマクロの内部メモリ２１５へのコンバーター・マクロのＥＭＡＣ１８５内部ＦＩＦＯへ転送される。作業キューを用いたマクロの内部メモリ（ＳＲＡＭ、ＤＲＡＭなど）はイーサネット（Ｒ）・パケットを収集し、オン・チップ・コントローラー機能はイーサネット（Ｒ）・パケットを、クロスバー・スイッチを介して、例えば図９に示す「ｐｒｏｃ．１」クラスターのサブプロセッサーに転送する。本明細書で説明するように、並列性、パイプライン化、およびマルチスレッド化により、プロトコル変換のプロセスは、プロトコル変換のために組み込みプロトコル・コンバーター・マクロ・コア５５０内のいくつかのサブプロセッサーの間で均一に分割され、いくつかの変換プロセスは１つのプロセッサーとマッチさせられることを理解されたい。このように、ただ１つのラウンドを通じても、例えば、「Ａ」が「Ｂ」へ「ｐｒｏｃ．１」から「ｐｒｏｃ．３」まで進むことが示され、実際にはパケットは変換のためにいくつかのプロセッサーの間でパーティション化される。プロトコルＡからＢへのパケット変換を図９に示すが、代替プロセスは、「Ｂ終了」の反対側で入ってプロトコル＃１（Ａ−側）で出るプロトコルＢ’パケットを有することを含むようになる。Ｂ’およびＡ’プロセスの流れは双方向二重リンクの反対側になることを理解されたい。
【００６９】
実際のプロトコル変換は、組み込みプロトコル・コンバーター・マクロ・コア５５０内に含まれた処理要素で実行される。マクロは、並列に実行するいくつかのプロセスＰ０、Ｐ１．．．Ｐｎを有し、各方向（すなわち、受信および送信）につき１セットである。これらの各プロセスは、マクロのＰｒｏｃ．０、Ｐｒｏｃ．１、Ｐｒｏｃ．２などのラベルが付けられた処理要素のうち１つにマップされる。３つの異なる種類のプロセスが、説明した実施形態における組み込みＳｏＣマクロのプロセッサー上で実行するために提供され、これらのプロセスには以下が含まれる。
１．ディスパッチ：タスクをプロセッサーに割り振るプロセス。
２．プロトコル処理：プロトコル処理タスク。
３．収集：ＤＭＡ  ＳｏＣコントローラーを、パケットをコアの内部メモリから転送するように、ならびに、パケットが転送された後にいくつかのメモリ管理機能を実行するように設定する。
【００７０】
これらのプロセスの間の通信は、図７に示すものなど、メモリ内の基本的に専用のエリアである作業キューを介して実施される。アイドル・プロセスは、それがいずれかの保留中の作業を有するかどうかを、その作業キューを定期的にポーリングすることによって判断する。
【００７１】
プロトコル・マクロ・コアは、必要とされるすべての特定のプロトコル・タスクを実施し、これらのタスクは、データを一連のＩＰパケットにパーティション化すること、ＩＰパケット・ヘッダーの生成、イーサネット（Ｒ）・パケットの生成などであり、また、パケットをイーサネット（Ｒ）ＭＡＣマクロに戻すように移動する。プロトコルによって定義されるように、パケットを再送する必要がある場合、これはＳｏＣローカル・プロセッサーからの干渉なしに行われ、パケット／データ転送リクエストまたは実際のデータ転送のみが、外部ＤＭＡまたはＤＤＲメモリによって必要とされる。パケット「Ａ」から「Ｂ」へのプロトコル変換の後、パケットはローカル・オン・チップ・マクロ・メモリに戻すように転送され、データの終わりが通知される。そこから、ローカル・マクロ・メモリおよび組み込みローカルＤＭＡコントローラーは、変換されたパケットを、クロスバー・スイッチ、ファイバー・チャネル・インターフェース、および最終的には外部Ｉ／Ｏインターフェースを通じて転送する。別法として、ファイバー・チャネル・インターフェースは、組み込みコントローラーに最終的な変換済パケットを送信させることができる。
【００７２】
外部ＳｏＣ  ＤＤＲ４１８またはＤＭＡ４２６はさらに、パケットをプロトコル・コンバーター・インターフェースから送信することに対して、パケットをローカルＳｏＣバスへ、バス・ブリッジを介して、必要であれば最終的にはホスト・システム・バス２２３上へと送達させるようにリクエストすることができる。同様に、ホスト・バス２２３はパケットをプロトコル変換のためにマクロに送信し、変換され戻された完成したパケットを受信するか、あるいは、各プロトコルおよびパケット・タイプに応じて外部プロトコル・インターフェース４７５、４８５のどちらかに転送することができる。
【００７３】
図１０は、ホスト・バス２２３から受信され、外部ＳｏＣインターフェース４８５に送信のために送達される、単一のパケットのプロトコル変換のための例示的プロセスの流れを例示する。図１０に例示したプロセスの流れの例では、ファイバー・チャネル・プロトコル・パケットがホスト・システム・バス２２３から送信（発信）され、例えば１Ｇ  ＥＭＡＣインターフェース４８５などの外部イーサネット（Ｒ）・インターフェースへの変換および送信のために、ＳｏＣプロトコル・コンバーター・マクロ３５０へ送信される。図１０のように、ＳｏＣメイン・プロセッサー（ＰｏｗｅｒＰＣ４４０）はデータ処理のためのリクエストを設定し、このリクエスト、および、外部ＤＤＲメモリ内のデータへのポインタをプロトコル・コンバーター・マクロ・コア５５０へ、バス・ブリッジ２２４を介して送信する。図示の実施形態では、割り込み信号が生じるが、これを、データを専用レジスタまたは事前に指定されたメモリ位置に書き込むことによって、実施することができる。
【００７４】
組み込みプロトコル・コンバーター・マクロ・コア５５０はリクエストを認識し、ＤＭＡエンジンを起動してデータを外部ホストまたはＳｏＣローカル・メモリからマクロ・ローカル・メモリに転送する。データ（例えば、パケット＃Ｂ）は、ローカルＳｏＣバスおよびブリッジ・バスを介してマクロのローカル・メモリ２１５に転送される。すべてのデータが送信されるとき、ＳｏＣプロセッサーはタスク完了について通知を受ける。これを、割り込みをＰｏｗｅｒＰＣ４４０に送信すること、または、ＰｏｗｅｒＰＣ４４０によって定期的にポーリングされるある事前定義された位置に書き込むことによって、実施することができる。
【００７５】
作業キュー、収集シーケンス、および、タスク・ディスパッチング・プロセッサー（ＭＴ）（図７に示す）である１つのプロセッサーを用いて、ファイバー・チャネル・パケット（Ｂ）はマクロのローカル・メモリから多数のサブプロセッサーへ、本明細書で説明したパケットのパーティション化によって転送される。例えば、プロトコル「Ｂ」（ファイバー・チャネル・タイプ）からプロトコル「Ａ」（ギガビット・イーサネット（Ｒ）・タイプ）へのプロトコル変換の完了時に、完成されたパケットは、クロスバー・スイッチ２２０を介してローカル・マクロのメモリに戻るように転送される。ローカルＤＭＡリクエストは、パケット「Ａ」をマクロのメモリから外部イーサネット（Ｒ）・インターフェース４８５に転送して、転送および変換を完了する。
【００７６】
本明細書で説明した方法は、Ｉ／Ｏカードおよびチップの数の削減、柔軟性の大幅な改善、ネットワーク機能性、より高い密度（より多数のプロセッサーがローカルまたはホスト・バスに接続される）、より高いプロトコル処理速度、帯域幅の改善、メモリ競合の低減、エンド・システム顧客のための柔軟性、ネットワーク・デザイン／アップグレードの容易さ、および、今日存在するものより大幅に改善されたプロトコル変換を可能にする。
【００７７】
本発明を詳細に、その例示的かつ実行された実施形態に関して示し、説明したが、形態および詳細における前述および他の変更を本発明において、付属の特許請求の範囲の範囲によってのみ限定されるべきである本発明の精神および範囲から逸脱することなく行うことができることは、当業者には理解されよう。
【図面の簡単な説明】
【００７８】
【図１】従来技術による単一のプロセッサーの使用における通常のＳｏＣを例示するブロック図である。
【図２】従来技術によるプロセス・アクセラレーターを使用する、今日の市場に出ている通常のＳｏＣを示すブロック図である。
【図３】従来技術によるモトローラＭＰＣ５５５４マイクロコントローラー（クロスバー・スイッチを組み込むＳｏＣ）を示すブロック図である。
【図４】従来技術によるＳＡＮネットワークのためのＢｒｏｃａｄｅのＳｉｌｋｗｏｒｍ（商標）Ｆａｂｒｉｃ  Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｖｅｒ＿を示すブロック図である。
【図５】本発明の一実施形態によるシングル・チップ・プロトコル・コンバーター・コア・デザインの例示的概観を示す図である。
【図６】本発明の一実施形態による、ファイバー・チャネルからギガビット・イーサネット（Ｒ）のシングル・チップ・プロトコル・コンバーターとして構成されたプロトコル・コアの例示的な図解の図である。
【図７】本発明の一実施形態によるよるシングル・チップ・プロトコル・コンバーター内の例示的メモリ割り振りを示す図である。
【図８】本発明の第２の態様によるＳｏＣデザイン内の組み込みマクロとして構成されたプロトコル・コンバーター・チップを示す図である。
【図９】本発明による図８のシステムのための、ＳｏＣマクロ内から外部Ｉ／ＯへのＳｏＣプロトコル・コンバーター・パケットの流れを示す図である。
【図１０】本発明による、ホスト・バスからＳｏＣデバイス外部パケット送達インターフェースへの例示的ＳｏＣプロトコル・コンバーター・パケットの流れを示す図である。
【符号の説明】
【００７９】
１７５  ネットワーク・プロトコル層ハードウェア支援デバイスまたは組み込みＭＡＣインターフェース
１８５  ネットワーク・プロトコル層ハードウェア支援デバイスまたは組み込みＭＡＣインターフェース
１９０  ファイバー・チャネル通信リンク
１９５  ギガビット・イーサネット（Ｒ）通信リンク
２００  プロセッサー・クラスター
２０５  プロセッサー・コア
２０８  命令キャッシュ
２１０  ＳｏＣプロセッサー・ローカル・バス
２１５  ローカル・メモリ・バンク
２２０  ローカル相互接続手段
２２３  外部システム・バス
２２４  ブリッジ・マクロ（バス）
２２５  演算論理装置（ＡＬＵ）
２２６  レジスター・ファイル
２２７  命令シーケンサー
２３０  ローカルＳＲＡＭメモリ・ユニット
２４０  オン・チップ周辺バスまたはＯＰＢ
２４９  作業キュー
２５９  ファイバー・チャネル・アウトバウンド作業キュー
２６０  処理ブロック
２７０  処理ブロック
２７５  メモリ域
２８０  メモリ
２８５  プログラムコード
２９０  作業キュー
３００  シングル・チップ・プロトコル・コンバーター
３５０  ベース・プロトコル・コンバーター・チップ
４００  ＳｏＣ（システム・オン・チップ）デザイン
４１５  ＳＲＡＭ
４１８  ＤＤＲコントローラー
４２２  ＰＣＩ−Ｘブリッジ
４２５  ＣＰＵまたはＭＰＵ要素
４２６  ＤＭＡ
４２８  ＤＭＡコントローラー
４２９  ＯＰＢブリッジ
４４５ａ  ＲＡＭ／ＲＯＭ周辺コントローラー
４４５ｂ  外部バス・マスター
４４５ｃ  ＵＡＲＴデバイス
４４５ｄ  Ｉｎｔｅｒ−ＩＣバス（Ｉ２Ｃ）インターフェース
４４５ｅ  汎用Ｉ／Ｏインターフェース
４４５ｆ  ゲートウェイ・インターフェース
４７５  外部ＭＡＣインターフェース・デバイス
４８５  外部ＭＡＣインターフェース・デバイス
５５０  組み込みマクロ・コア
【図１】
2005216283.tif 000003
【図２】
2005216283.tif 000004
【図３】
2005216283.tif 000005
【図４】
2005216283.tif 000006
【図５】
2005216283.tif 000007
【図６】
2005216283.tif 000008
【図７】
2005216283.tif 000009
【図８】
2005216283.tif 000010
【図９】
2005216283.tif 000011
【図１０】
2005216283.tif 000012