(57)【要約】【課題】単一の独立マルチプロセッサ・サブシステム・コアを含むシステム・オン・チップ（ＳｏＣ）構成要素を提供すること。【解決手段】ＳｏＣ構成要素は、複数の多重プロセッサを含み、各多重プロセッサは、プロセッサ・クラスタを形成する、それと関連付けられたローカル・メモリと、ＳｏＣ集積回路（ＩＣ）内で各プロセッサ・クラスタを接続するスイッチ・ファブリック手段とを有する。単一のＳｏＣ独立マルチプロセッサ・サブシステム・コアは、ＤＳＰ、コプロセッサ、ハイブリッドＡＳＩＣまたはネットワーク処理構成として構成されるとき、ＳｏＣデバイスのためのマルチスレッド化オペレーション処理を実行することができる。加えて、スイッチ・ファブリック手段は、ＳｏＣローカル・システム・バス・デバイスを、独立マルチプロセッサ・サブシステム・コアを有するＳｏＣプロセッサ構成要素と相互接続する。【選択図】図６
2005044361.tif 000002
【特許請求の範囲】
【請求項１】
通信バス・デバイスを含む、システム・オン・チップ（ＳｏＣ）集積回路（ＩＣ）において使用するためのマイクロプロセッサ・サブシステムであって、
単一のプロセッサ・コア・アセンブリとして形成され、所与の処理機能を実施するためのオペレーションを実行することができる、２つ以上のマイクロプロセッサ・デバイスと、
少なくとも１つのデータおよび命令を前記単一のプロセッサ・コア・アセンブリに格納するために、前記サブシステム内の前記２つ以上のマイクロプロセッサ・デバイスに関連付けられた記憶デバイスと、
前記単一のプロセッサ・コア・アセンブリ内に存在し、前記２つ以上のマイクロプロセッサ・デバイスと前記ＳｏＣ  ＩＣ通信バス・デバイスの間の通信を可能にして、それにより前記単一のプロセッサ・コア・アセンブリが前記ＳｏＣ  ＩＣの構成要素と通信できるようにするための相互接続手段とを含む、マイクロプロセッサ・サブシステム。
【請求項２】
前記単一のプロセッサ・コア・アセンブリの前記２つ以上のマイクロプロセッサ・デバイスは、プログラム制御下で特定の機能のセットを可能にするために動作する、請求項１に記載のマイクロプロセッサ・サブシステム。
【請求項３】
前記相互接続手段はスイッチ・ファブリックを含む、請求項１に記載のマイクロプロセッサ・サブシステム。
【請求項４】
前記相互接続手段は通信バスを含む、請求項１に記載のマイクロプロセッサ・サブシステム。
【請求項５】
前記ＳｏＣ  ＩＣはネットワーク・プロセッサ・アセンブリであり、前記マイクロプロセッサ・サブシステムはパケット通信処理機能を実施する、請求項２に記載のマイクロプロセッサ・サブシステム。
【請求項６】
前記単一のプロセッサ・コア・アセンブリは、ファイバ・チャネル、Ｇｂイーサネット（Ｒ）、Ｉｎｆｉｎｉｂａｎｄを含むグループからの１つまたは複数を含むネットワーク通信プロトコルに従って通信を受信することができる、１つまたは複数のインターフェース・デバイスをさらに含む、請求項５に記載のマイクロプロセッサ・サブシステム。
【請求項７】
前記ネットワーク・プロセッサ・アセンブリは、ＤＳＰ、コプロセッサ、ハイブリッドＡＳＩＣまたは他のネットワーク処理構成のうち１つとして構成され、前記ネットワーク・プロセッサ・アセンブリは、
ネットワーク処理デバイスと、
前記ネットワーク・プロセッサ・アセンブリの構成要素を前記ネットワーク処理デバイスと相互接続するための高速ローカル・バス手段とを含む、請求項６に記載のマイクロプロセッサ・サブシステム。
【請求項８】
前記ネットワーク・プロセッサ・アセンブリの構成要素は、ＳＲＡＭ、ＤＤＲコントローラ、ＰＣＩ−Ｘブリッジ、直接メモリ・アクセスＤＭＡデバイス、ＤＭＡコントローラ、１つまたは複数のＩ／Ｏインターフェース・デバイスを介して外部構成要素とインターフェースをとるためのオン・チップ周辺バス（ＯＰＢ）、および、データ・リンク層インターフェースをイーサネット（Ｒ）・ローカル・エリア・ネットワーク（ＬＡＮ）システムに提供するために使用されたメディア・アクセス制御（ＭＡＣ）プロトコル・デバイスを含むグループから選択された１つまたは複数を含む、請求項７に記載のマイクロプロセッサ・サブシステム。
【請求項９】
前記単一のプロセッサ・コア・アセンブリは、前記マイクロプロセッサ・サブシステムと前記ＳｏＣ  ＩＣの前記通信バス・デバイスの間のデータの流れを可能にするための、プログラマブル・プロセッサ・ローカル・バス・ブリッジ・デバイスをさらに含む、請求項１に記載のマイクロプロセッサ・サブシステム。
【請求項１０】
前記プログラマブル・プロセッサ・ローカル・バス・ブリッジ・デバイスは、通信信号およびシグナリング・プロトコルを、前記単一のプロセッサ・コア・アセンブリを実装する前記ＳｏＣ  ＩＣデバイスを介して通信する２つの通信システムの間で適合させる、請求項９に記載のマイクロプロセッサ・サブシステム。
【請求項１１】
前記相互接続手段は、２つ以上のマイクロプロセッサ・デバイスに対応する独立スレッド・グループを共に結合するためのクロスバー・スイッチを含む、請求項１に記載のマイクロプロセッサ・サブシステム。
【請求項１２】
前記サブシステム内の前記２つ以上のマイクロプロセッサ・デバイスに関連付けられた前記記憶デバイスは、ローカルＳＲＡＭメモリ、メモリ・キャッシュ、および、サブプロセッサを共に接続するＩ−キャッシュのうち１つまたは複数を含む、請求項１に記載のマイクロプロセッサ・サブシステム。
【請求項１３】
前記単一のプロセッサ・コア・アセンブリの前記２つ以上のマイクロプロセッサ・デバイスは、１つまたは複数のネットワーク・プロトコル通信の処理をハンドルするために前記ＳｏＣ  ＩＣの通信バス・デバイスをポーリングする手段を含む、請求項８に記載のマイクロプロセッサ・サブシステム。
【請求項１４】
システム・オン・チップ（ＳｏＣ）集積回路（ＩＣ）ネットワーク・プロセッサ・アーキテクチャであって、
ＳｏＣネットワーク・プロセッサ機能を複数のネットワーク・プロセッサ構成要素の間で制御するためのネットワーク・プロセッサ・コアと、
前記ＳｏＣネットワーク・プロセッサの構成要素の間で通信を可能にするためのＳｏＣローカル・システム・バス・デバイスであって、１つのＳｏＣネットワーク・プロセッサ構成要素は、
ｉ）所与の機能を実施する少なくとも１つのマイクロプロセッサと、
ｉｉ）少なくとも１つのデータおよび命令を格納するための、少なくとも１つのメモリ・記憶デバイスと、
ｉｉｉ）２つ以上のマイクロプロセッサ・デバイスと前記ＳｏＣ  ＩＣローカル・システム・バス・デバイスの間の高速通信を可能にするための相互接続手段と含む、独立マルチプロセッサ・サブシステム・コアを含む、ＳｏＣローカル・システム・バス・デバイスとを含み、
前記単一のＳｏＣマルチプロセッサ・サブシステム・コアは、マルチスレッド化ネットワーク処理機能を提供する、ＳｏＣ  ＩＣネットワーク・プロセッサ・アーキテクチャ。
【請求項１５】
前記単一のＳｏＣマルチプロセッサ・サブシステム・コアは、ファイバ・チャネル、Ｇｂイーサネット（Ｒ）、Ｉｎｆｉｎｉｂａｎｄを含むグループからの１つまたは複数を含むネットワーク通信プロトコルに従って通信を受信することができる、１つまたは複数のインターフェース・デバイスをさらに含む、請求項１４に記載のＳｏＣ  ＩＣネットワーク・プロセッサ・アーキテクチャ。
【請求項１６】
ＤＳＰ、コプロセッサ、ハイブリッドＡＳＩＣまたは他のネットワーク処理構成のうち１つとして構成され、前記ＳｏＣローカル・システム・バス・デバイスは、前記ＳｏＣネットワーク・プロセッサ構成要素を前記ネットワーク・プロセッサ・コアと相互接続するための高速ローカル・バス手段である、請求項１５に記載のＳｏＣ  ＩＣネットワーク・プロセッサ・アーキテクチャ。
【請求項１７】
前記ネットワーク・プロセッサ構成要素は、ＳＲＡＭ、ＤＤＲコントローラ、ＰＤＩ−Ｘブリッジ、直接メモリ・アクセスＤＭＡデバイス、ＤＭＡコントローラ、１つまたは複数のＩ／Ｏインターフェース・デバイスを介して外部構成要素とインターフェースをとるためのオン・チップ周辺バス（ＯＰＢ）、および、データ・リンク層インターフェースをイーサネット（Ｒ）・ローカル・エリア・ネットワーク（ＬＡＮ）システムに提供するために使用されたメディア・アクセス制御（ＭＡＣ）プロトコル・デバイスを含むグループから選択された１つまたは複数を含む、請求項１６に記載のＳｏＣ  ＩＣネットワーク・プロセッサ・アーキテクチャ。
【請求項１８】
前記マルチプロセッサ・サブシステム・コアは、前記マイクロプロセッサ・サブシステムと前記ＳｏＣローカル・システム・バス・デバイスの間のデータの流れを可能にするための、プログラマブル・プロセッサ・ローカル・バス・ブリッジ・デバイスをさらに含む、請求項１４に記載のＳｏＣ  ＩＣネットワーク・プロセッサ・アーキテクチャ。
【請求項１９】
前記プログラマブル・プロセッサ・ローカル・バス・ブリッジ・デバイスは、通信信号およびシグナリング・プロトコルを、前記単一のマルチプロセッサ・サブシステム・コアを実装する前記ＳｏＣ  ＩＣデバイスを介して通信する２つの通信システムの間で適合させる、請求項１８に記載のＳｏＣ  ＩＣネットワーク・プロセッサ・アーキテクチャ。
【請求項２０】
前記単一のマルチプロセッサ・サブシステム・コアの前記相互接続手段は、２つ以上のマイクロプロセッサ・デバイスに対応する独立スレッド・グループを共に結合するためのクロスバー・スイッチを含む、請求項１４に記載のＳｏＣ  ＩＣネットワーク・プロセッサ・アーキテクチャ。
【請求項２１】
前記サブシステム内の前記２つ以上のマイクロプロセッサ・デバイスに関連付けられた前記少なくとも１つのメモリ・記憶デバイスは、ローカルＳＲＡＭメモリ、メモリ・キャッシュ、および、前記マイクロプロセッサ・デバイスを共に接続するためのＩ−キャッシュのうち１つまたは複数を含む、請求項１４に記載のＳｏＣ  ＩＣネットワーク・プロセッサ・アーキテクチャ。
【請求項２２】
前記単一のマルチプロセッサ・サブシステム・コアは、１つまたは複数のネットワーク・プロトコル通信の処理をハンドルするために前記ＳｏＣ  ＩＣのローカル・システム・バス・デバイスをポーリングする手段を含む、請求項２１に記載のＳｏＣ  ＩＣネットワーク・プロセッサ・アーキテクチャ。
【請求項２３】
システム・オン・チップ（ＳｏＣ）プロセッサ集積回路（ＩＣ）アーキテクチャであって、
ＳｏＣ処理機能を複数のＳｏＣ構成要素デバイスの間で制御するためのプロセッサ・コアと、
前記ＳｏＣ構成要素デバイスの間で通信を可能にするためのＳｏＣローカル・システム・バス・デバイスであって、１つのＳｏＣ構成要素デバイスは、
各多重プロセッサにローカル・メモリが関連付けられプロセッサ・クラスタを形成する、複数の多重プロセッサと、
前記ＳｏＣ  ＩＣ内で各プロセッサ・クラスタを接続するスイッチ・ファブリック手段とを含む、単一の独立マルチプロセッサ・サブシステム・コアを含む、ＳｏＣローカル・システム・バス・デバイスとを含み、
前記単一のＳｏＣマルチプロセッサ・サブシステム・コアは、マルチスレッド化オペレーション処理を実行することができる、システム・オン・チップ（ＳｏＣ）プロセッサ集積回路（ＩＣ）アーキテクチャ。
【請求項２４】
複数の多重プロセッサを含む前記独立マルチプロセッサ・サブシステム・コアは、機能的ＳｏＣ構成要素として使用するための事前定義された機能のセットを実装し、前記スイッチ・ファブリックは、前記ＳｏＣ  ＩＣ内の各プロセッサ・クラスタを接続して、前記コア内の前記機能によって必要とされる処理のためのデータ・トラフィックの流れを可能にする、請求項２３に記載のシステム・オン・チップ（ＳｏＣ）プロセッサ集積回路（ＩＣ）アーキテクチャ。
【請求項２５】
前記スイッチ・ファブリック手段は、前記コア内の前記機能によって必要とされた処理のための、データ・トラフィックおよび命令トラフィックの通信をさらに可能にする、請求項２３に記載のシステム・オン・チップ（ＳｏＣ）プロセッサ集積回路（ＩＣ）アーキテクチャ。
【請求項２６】
前記スイッチ・ファブリック手段は、前記マルチプロセッサ・サブシステム・コア内の独立スレッド・グループをセルラー方式で編成する、クロスバー・スイッチを含む、請求項２３に記載のシステム・オン・チップ（ＳｏＣ）プロセッサ集積回路（ＩＣ）アーキテクチャ。
【請求項２７】
前記複数の多重プロセッサの各々は、ローカルＳＲＡＭメモリ、演算論理装置（ＡＬＵ）または浮動小数点演算装置（ＦＰＵ）のうち１つおよび対応するデータ・キャッシュ、ならびに、プロセッサ・スレッド・グループを共に接続するための命令キャッシュ（Ｉ−キャッシュ）を含む、請求項２６に記載のシステム・オン・チップ（ＳｏＣ）プロセッサ集積回路（ＩＣ）アーキテクチャ。
【請求項２８】
前記単一の独立マルチプロセッサ・サブシステム・コアは、マイクロプロセッサ、ＤＳＰ、コプロセッサ、ハイブリッドＡＳＩＣまたは別のネットワーク・プロセッサ構成のうち１つを含む、ＳｏＣ実装において機能する、請求項２６に記載のシステム・オン・チップ（ＳｏＣ）プロセッサ集積回路（ＩＣ）アーキテクチャ。
【請求項２９】
前記プロセッサ・クラスタの前記関連付けられたローカル・メモリは、ローカルＳＲＡＭまたはオン・チップＤＲＡＭを含む、請求項２６に記載のシステム・オン・チップ（ＳｏＣ）プロセッサ集積回路（ＩＣ）アーキテクチャ。
【請求項３０】
バスおよびＩ／Ｏメディア接続をダイレクトするためのソフトウェア・ポーリング接続手段をさらに含み、前記ポーリング接続手段は前記ＳｏＣローカル・システム・バス・デバイスをポーリングして、１つまたは複数のネットワーク・プロトコルをハンドルする、請求項２６に記載のシステム・オン・チップ（ＳｏＣ）プロセッサ集積回路（ＩＣ）アーキテクチャ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク・プロセッサ・デバイスに関し、より詳細には、複雑なシステム・オン・チップ（ＳＯＣ）実装の設計を、自己完結型プロセッサ・サブシステムをシステム・オン・チップ設計のための構成要素として提供することによって単純化するためのシステムおよび方法に関する。
【背景技術】
【０００２】
ＳｏＣを構築する現在の現況技術は、設計者が特に、ａ）マイクロプロセッサ、メモリ、基本Ｉ／Ｏマクロ（例えば、フレーマ）などの基本構成要素からアセンブルすること、ｂ）異なるデバイスの間のバス競合をモデル化し、適切なバス構造を選択すること、ｃ）すべての構成要素をＳｏＣハードウェア設計中に統合すること、および、ｄ）すべての構成要素を、カスタム・ソフトウェアを使用して統合することを必要とする。
【０００３】
しかし、現況技術のＳｏＣ設計方法に固有の問題があり、これには、それだけに限定されないが、労力がかかること、誤りを起こしやすいこと、特定の応用例の範囲に精通している高度に熟練した設計者を必要とすること、バス・モデル化または共通システム・バス上の競合あるいはその両方について大きなモデリング・オーバーヘッドを要すること、ＴＣＰ／ＩＰ、ＩｎｆｉｎｉＢａｎｄ、ＦｉｂｒｅＣｈａｎｎｅｌ、ｉＳＣＳＩ、および他の標準化プロトコルのような基本サービスを提供するために、ハードウェアおよびソフトウェア統合を必要とすることが含まれる。ＳｏＣ統合設計手法の成功例は、Ｍｏｔｏｒｏｌａ，Ｉｎｃから入手可能なＭＰＣ８５６０統合通信プロセッサにおいて実施されている。
【０００４】
多数のサブシステムがカードまたはボード上で統合されるＳｏＣ設計の他の手法は、システム・コストを押し上げる構成要素数、故障しやすさの増大、および、高相互接続多層ボードのコストによる問題を示す。
【０００５】
図１および２は、ネットワーク・プロセッサ・チップ１０（図１）および１５（図２）のそれぞれの従来技術の実施態様を例示し、これらはそれぞれ多数の処理コア２０、ローカル・メモリ、データ・メモリ、リンク・メモリ、ＣＰＵ、バッファおよびＰＨＹ（ネットワーク物理層）インターフェースを含む。これらはスタンドアロンＮＰＵ（ネットワーク・プロセッサ・ユニット）であり、共通マクロを介して「オープン」システム・バスに接続しない。
【０００６】
図３は、ネットワーク・プロセッサ・チップ３０の従来技術の実施態様を例示し、これは、プロセッサ４０、システム・バス、キャッシュ、および、ＰＣＩ（ＰＣＩバス）ブリッジなどの「ブリッジ」を通じて、今日のシステムにおいて一般に使用されているローカル・プロセッサ・バスに接続されたローカル・メモリを含む。
【０００７】
したがって、マルチプロセッサ・サブシステムを構成要素として有するＳｏＣ集積回路、およびさらに、独立ＳｏＣ構成要素としての実装のために事前定義された機能を有する自己完結型マルチプロセッサ・サブシステムを提供し、さらに、マルチスレッド化機能を提供することが大変望ましくなる。
【０００８】
ＳｏＣプロセッサおよび構成要素設計の態様が記載されている、関連する参照文献には、以下が含まれる。
【０００９】
米国特許第６，３３１，９７７号には、チップの内部のいくつかの機能Ｉ／Ｏの間のクロスバー・スイッチ、および、いくつかの外部接続ピンを含む、システム・オン・チップ（ＳＯＣ）が記載されており、ただしピンの数は内部Ｉ／Ｏの数より少ない。
【００１０】
米国特許第６，２６２，５９４号には、システム・オン・チップのパッドのグループの構成可能な使用のためのクロスバー・スイッチを実装する装置および方法が記載されている。
【００１１】
米国特許第６，０３８，６３０号には、多数のデータ・バスを介して外部構造にアクセスする多数の機能ユニットを有する統合システムのための、共有アクセス制御デバイスを提供するための、クロスバー・スイッチを実装する装置および方法が記載されている。
【００１２】
米国特許出願第ＵＳ２００２／０１８４４１９号には、共通バス・システムを使用するシステム・オン・チップのための異なる構成要素の使用を可能にするＡＳＩＣが記載されており、また、共通バスとの互換性を達成するための、異なる速度およびデータ幅を有する機能ユニットのためのラッパーが記載されている。
【００１３】
米国特許出願第ＵＳ２００２／０１７６４０２号には、ＳｏＣ上の機能ユニットをリンクするための八角形相互接続ネットワークが記載されている。相互接続ネットワーク上の機能ユニットはリングとして編成され、中間の構成要素を結合するいくつかのクロス・データ・リンクを使用する。
【００１４】
米国特許出願第ＵＳ２００１／００４２１４７号には、ＳＯＣ相互接続のためのシステム・リソース・ルーターが記載されており、これは、各データ・キャッシュ（Ｄ−キャッシュ）および命令（Ｉ−キャッシュ）を接続する２つのチャネル・ソケットを含む。また、相互接続を提供するために、外部データ転送イニシエーター、２つの内部Ｍ−チャネル・バス、およびＭ−チャネル・コントローラもが含まれる。
【００１５】
米国特許出願第ＵＳ２００２／０１７２１９７号には、ｐｏｉｎｔ−ｔｏ−ｐｏｉｎｔ方式における、チップ上に組み込まれたクロスバー・スイッチを介して、多数の送信および受信デバイスを接続する通信システムが記載されている。
【００１６】
米国特許出願第ＵＳ２００１／００４７４６５号には、本発明のいくつかの変形形態が記載されており、これは、送信を個々の送信タスクに分割すること、各送信タスクについての計算の複雑性を決定すること、および、計算の複雑性を回路毎のＭＩＰＳの数に基づかせることによって、合計のゲートを最小限にするための、通信システム（通常、ＳＯＣまたはＡＳＩＣ）のためのスケーラブルなアーキテクチャを提供する。
【００１７】
エー・ブリンクマン(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)という名称の参照文献には、グローバル・バスＩアーキテクチャ（ＧＢＩＡ）、グローバル・バスＩＩアーキテクチャ（ＧＢＩＩＡ）、Ｂｉ−ＦＩＦＯバス・アーキテクチャ（ＢＦＢＡ）、クロスバー・スイッチ・バス・アーキテクチャ（ＣＳＢＡ）、およびコアコネクト・バス・アーキテクチャ（ＣＣＢＡ）を含む、マルチプロセッサＳｏＣバス・アーキテクチャが記載されている。
【００１９】
従来技術の構成のいずれも、プロセッサ・パフォーマンス、およびさらにＳＯＣ、ＡＳＩＣ、ＮＰまたはＤＳＰ統合を改善するために、それぞれがマルチスレッド化構成においてＳＲＡＭまたはｅＤＲＡＭにローカルに接続する、多数のサブプロセッサ（スレッド・グループ）を含むプロセッサ・コアを教示しない。
【特許文献１】米国特許第６，３３１，９７７号
【特許文献２】米国特許第６，２６２，５９４号
【特許文献３】米国特許第６，０３８，６３０号
【特許文献４】米国特許出願第ＵＳ２００２／０１８４４１９号
【特許文献５】米国特許出願第ＵＳ２００２／０１７６４０２号
【特許文献６】米国特許出願第ＵＳ２００１／００４２１４７号
【特許文献７】米国特許出願第ＵＳ２００２／０１７２１９７号
【特許文献８】米国特許出願第ＵＳ２００１／００４７４６５号
【非特許文献１】エー・ブリンクマン(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)
【非特許文献３】シー・ジェー・ゲオルギオウ(C. J. Georgiou)他、「次世代ネットワーキングのためのプログラマブルなスケーラブル・プラットフォーム(Aprogrammable scalable platform for next generation networking)」、ネットワーク・プロセッサにおけるワークショップ(Workshopon Network Processors)の議事録、2002年2月8〜9日、アナハイム(Anaheim), CA
【発明の開示】
【発明が解決しようとする課題】
【００２０】
本発明の目的は、ＳｏＣ集積回路においてマルチスレッド化オペレーションを実行することができる、専用にプログラムされた構成要素として機能する、自己完結型マルチプロセッサ・サブシステム構成要素を提供することである。
【課題を解決するための手段】
【００２１】
本発明では、自己完結型マルチプロセッサ（ＭＰ）構成要素はサブプロセッサ・コアを含み、その各々は、マルチスレッド化プロセッサ・コアをＳｏＣ設計における構成要素として可能にするために、ローカル・メモリ（例えば、ＳＲＡＭ）を含む。加えて、自己完結型マルチプロセッサ構成要素に含まれるものは、ローカル相互接続媒体であり、これは、ＳｏＣ集積回路の単一のローカル・プロセッサ・バスに接続するクロスバー・スイッチ（または類似のタイプのスイッチ設計）などである。ＳｏＣ  ＩＣを、高機能マイクロプロセッサ、ＤＳＰ（デジタル信号プロセッサ）、コプロセッサ、ハイブリッドＡＳＩＣ、ネットワーク・プロセッサ（ＮＰ）または他の類似のプロセッサ構成ＡＳＩＣとして構成することができる。自己完結型マルチプロセッサ・サブシステム構成要素を有するこのようなＳｏＣ集積回路は、マルチスレッド化機能を提供し、それにより、あるコンテキストからのプログラム・コードおよびデータが他のコンテキストから独立したままであることを可能にすることによって、サブプロセッサ・コア（スレッド単位）は他のスレッドから独立して動作する。クロスバー・スイッチはさらに、チップの残りとの通信を、明確なハードウェアおよびソフトウェア・インターフェースを介して可能にする。
【００２２】
本発明のもう１つの態様では、ＳｏＣ  ＡＳＩＣ設計における構成要素としての自己完結型マルチプロセッサ（ＭＰ）構成要素は、特定の使用のための適切なソフトウェアを有する既製のマルチスレッド化プロセッサ・コアとして使用可能である。ＭＰ構成要素は他の構成要素に、標準化されたインターフェースを使用して接続され、これはプロセッサ・ローカル・バス（ＰＬＢ）アダプタなどであり、コアコネクト−ＰＬＢバスまたは他のいずれかのオン・チップ・バスまたはバス・プロトコルなど、標準化されたＡＳＩＣ方法のバスによりローカル相互接続媒体をブリッジする。
【００２３】
本発明のマルチスレッド化オペレーションを提供する自己完結型マルチプロセッサ（ＭＰ）構成要素は、プロセッサ速度を改善するだけでなく、オフ・チップ・アクセス時間を短縮し、キャッシュ待ち時間を著しく短縮し、命令およびデータ・パケット処理を改善する。容易に再構成可能であるソフトウェア・ポーリング技術を介して、プロセッサ・コアを、異なる通信プロトコル（ファイバ・チャネル、イーサネット（Ｒ）、ＩＰｓｅｃ、ＡＴＭ、Ｉｐｖ６など）について適合させることができる。
【００２４】
本発明のもう１つの態様では、マルチプロセッサ・コアはポーリング・ソフトウェアを含み、これは、ＭＰコアがローカル・プロセッサ・バス、または、イーサネット（Ｒ）、ファイバ・チャネル、ｉＳＣＳＩなどの共通メディア・インターフェースＭＡＣ、あるいはその両方と接続できるようにする。これは、より効率的なデータ処理、再使用可能コア設計、プロトコル独立コア設計、および、より高いレベルのＳｏＣパフォーマンスのために共通プロセッサ・バスに接続された多数のシステム処理コアを可能にする。ＳｏＣマイクロプロセッサ設計として構成されるとき、共通バスに接続されたマルチプロセッサは、パフォーマンス（より高い速度、より少ない待ち時間、大幅に改善されたキャッシュ・パフォーマンス、または、外部記憶を除くオフ・チップ・キャッシュもしくはメモリ・オフロードをまとめての、さらに要求の省略、あるいはその両方）を向上させる。プロセッサ速度が増す（例えば、２ＧＨｚ〜１０ＧＨｚより高い）ので、本発明は、今日のＰＣおよびワークステーション・コンピュータ設計において見られる一般のマイクロプロセッサ速度およびメモリ・キャッシュ・ボトルネックを利用するための最も効果的な方法を提供する。
【００２５】
本発明のこのＳｏＣ設計を、それだけに限定されないが、ＩＰＳｅｃＶＰＮ（仮想プライベート・ネットワーク）トンネリング・エンジン、ＴＣＰ／ＩＰオフロード・エンジン、ｉＳＣＳＩのためのネットワーク処理、および、例えばＭＰＥＧエンコード／デコード、サウンド／音声／ビデオ処理、暗号化エンジン、圧縮／圧縮解除エンジンなどのマルチメディア処理を含む、応用例および使用のために実施することができるので有利である。
【００２６】
本発明の装置および方法のさらなる特徴、態様および利点は、以下の本明細書、付属の特許請求の範囲、および添付の図面に関してよりよく理解されるであろう。
【発明を実施するための最良の形態】
【００２７】
マルチプロセッサ・システム・オン・チップは、異なる構成要素の多数のインスタンス、すなわち、（ｉ）機能ユニット、（ｉｉ）メモリ（キャッシュおよびメイン・メモリを含む）、および（ｉｉｉ）相互接続からなる。設計の選択には、構成要素の相対および絶対数、それらの特定の機能、および互いに対するそれらの配置が含まれる。
【００２８】
図５は、例示的自己完結型プロセッサ・ベースのサブシステム１５０を、本発明によるマルチプロセッサ・システム・オン・チップ設計のための構成要素として示す。図５に示す例では、自己完結型プロセッサ・ベースのサブシステム１５０は、複数のプロセッサ・ユニット１００、ＳＲＡＭメモリ１１０によって提供されるものなどの共有メモリ、およびスイッチ・ファブリック１２０を含む。図４に示すように、各プロセッサ・ユニット１００は複数の個別プロセッサ・コア１２５を含み、例えば、４つのプロセッサ・コア１２５は、処理ユニットまたは「クワッド」１００を、図４に示すように含み、各プロセッサ・コア１２５は、実行ユニットまたはプロセッサ・デバイスを含み、例えば、１６Ｋバイトのメモリを提供する、ＳＲＡＭ１３０として示す共通ローカル（プライベート）メモリに接続される。
【００２９】
一実施形態では、図５に示す自己完結型プロセッサ・ベースのサブシステム１５０は、本発明の譲受人であるインターナショナル・ビジネス・マシーンズ・コーポレーション（ＩＢＭ）によって開発されたマルチスレッド化アーキテクチャ・チップ設計に基づいており、これは本明細書で「Ｃｙｃｌｏｐｓ」と呼ばれ、シー・ジェー・ゲオルギオウ(C. J. Georgiou)他、「次世代ネットワーキングのためのプログラマブルなスケーラブル・プラットフォーム(Aprogrammable scalable platform for next generation networking)」、ネットワーク・プロセッサにおけるワークショップ(Workshopon Network Processors)の議事録、2002年2月8〜9日、アナハイム(Anaheim), CAという名称の参照文献に詳細に記載されている。単一のＣｙｃｌｏｐｓチップは、多数（通常、数百）の単純スレッド実行単位を含むことができ、各々は独立した命令のストリームを同時に実行する。各個別スレッドのパフォーマンスは、総合のチップ・パフォーマンスが、等しい数のトランジスタによる従来の設計よりはるかによいようなものである。Ｃｙｃｌｏｐｓはプロセッサ・イン・メモリ（ＰＩＭ）設計を使用し、そこでメイン・メモリおよび処理ロジックが単一のシリコン片に結合（内蔵）される。大規模のスケーラブル・システムはセルラー手法により、Ｃｙｃｌｏｐｓをビルディング・ブロックとして使用して構築され、セルは、各チップ内に提供された通信リンクを通じて通常のパターンにおいて相互接続される。
【００３０】
図５に示す好ましい実施形態では、ネットワーキング・アプリケーションについて示されたＣｙｃｌｏｐｓ設計において、８つのプロセッサ・ユニットまたは「クワッド」１００が含まれ、各クワッドはさらに、内部メモリにより組み込み共有メモリ（ＳＲＡＭ）１１０に接続され、オン・チップ・スイッチ・ファブリック１２０に接続され、オン・チップ・スイッチ・ファブリック１２０をオン・チップ・クロス・バー・スイッチまたはパケット・スイッチ・ファブリックなどにすることができる。したがって、一実施形態では、自己完結型プロセッサ・ベースのサブシステム１５０の構成要素は、３２の実行のスレッド、最大１２８ｋＢのローカルＲＡＭ１３０および５１２Ｋバイトの共有ＳＲＡＭ１１０を提供する。他の設計が可能であり、これには、科学／工学の応用例のための６４ビット・ハイ・エンド・バージョンが含まれることを理解されたい。この設計では、多数の処理タスクを、同時に実行中の多数のスレッドに分割して、真のマルチスレッド化機能を提供することができる。より詳細には、図６のように、Ｃｙｃｌｏｐｓアーキテクチャにおいて適合された多重処理手法は、多数の単純コア１２５を含み、これはプロセッサ・クラスタ１００’を形成し、各々が低減されているが汎用の、約４０のＲＩＳＣのような命令の命令セットを有する。図６のように、クラスタ１００’の各プロセッサ・コア１２５はそれ自体のレジスタ・ファイル１２６、演算論理装置（ＡＬＵ）１２７および命令シーケンサー１２８を有する。図示の実施形態では、プロセッサ・コア１２５は、単純な４ステージの深さのパイプラインを有する、シングル・イシュー・アーキテクチャを有する。４つのコアは、それらのスタックおよびローカル変数を格納するためのローカルＳＲＡＭ１３０、および、ヘッダー・フィールドなど、処理される必要のあるパケットの部分を共有し、プロセッサ・データ・キャッシュの通常の属性のいずれもなしに、情報「キャッシュ」デバイスとして効果的に機能することができる。図示の実施形態では、２つの４プロセッサ・クラスタ１００’は命令キャッシュ（Ｉ−キャッシュ）１３１を共有し、これは、命令の長時間の停止状態を防止するために十分なプロセッサ１２５のための帯域幅を有し、キャッシュのトラッシングおよび命令ミス率の増大を引き起こすことなく、プロセッサの大部分のワーキング・セットに対処する。各プロセッサ・コア１２５はスレッド・グループを含み、マルチスレッド化機能において実行するために、Ｉ−キャッシュ１３１を介して接続することができることを理解されたい。サブプロセッサ（スレッド・グループ）が多くなるほど、より高速のプロセッサ・サイクル・タイムおよび低減されたキャッシュ要求／待ち時間に関して、全体のプロセッサ・コアがよりよく動作するようになる。例示的実施形態は２〜２５６のサブプロセッサ・グループを対象とし、本明細書で説明するように、好ましい実施形態は３２のものである。しかし、本発明はこのように真の同時のマルチスレッド化、マルチプロセッサ設計を提供し、サブプロセッサの数によって限定されないことを理解されたい。
【００３１】
小さい命令セットおよび機能の単純さにより、プロセッサ・コアを最小サイズにして、高い比率のＭＩＰＳ／ｍｍ２のシリコン・エリアを実現させることができる。これは、多数のコアをむしろ小さいフットプリントのチップ上に配置して、スレッド・レベルの並列性を利用することを可能にする。したがって、本発明を有利に適用させて、より低いカード・アセンブリ・コストのためにより高い統合／ボード密度を可能にし、また、それが真の「システム・オン・チップ」実装であるので、より大きい帯域幅のアプリケーションおよび処理コアのための向上されたスケーラビリティを提供することができ、プラグ・アンド・プレイ・システム設計のための多数の「コア」を可能にし、より大きいアーキテクチャの柔軟性を可能にする。しかし、プロセッサ・コアは、送信タスクまたは計算の負荷に基づいてゲートまたはトランジスタ数を減らすためにスケーラブルであるのではなく、むしろ、アプリケーション／目標市場に応じた固定設計である。さらに、マルチプロセッサまたはサブシステム・コアはタスクを分割せず、それらをＤＳＰまたはＡＳＩＣ機能ブロックに割り当て、むしろプログラム・コードおよびデータ・パケットは、各々が等しいメモリ（例えば、データ・キャッシュ用の１６ｋＢ  ＳＲＡＭ）および回路（ＡＬＵ、レジスタ・ファイルなど）を有する多数のサブプロセッサ（スレッド・グループ）内で処理される。スレッド・グループ内のこれらのサブプロセッサはスレッド単位を形成し、これは、全体としてローカル・システムまたはオン・チップ・ローカル・バス（ＳＯＣアプリケーションのため）に接続されたプロセッサ・コアを含む。
【００３２】
本発明では、各ローカル・プロセッサ（スレッド・グループであり、これは、多数のスレッド単位またはさらなるサブプロセッサを含む）がセルラー編成において構成され、各プロセッサがＮバンクの対称オン・チップ・メモリ（例えば、４ｘ６４ＫＢにおける２５６ＫＢ  ＳＲＡＭ、またはｎｘ５１２ＫＢブロックにおける４または８ＭＢ  ｅＤＲＡＭ）を有し、各バンクは、各ローカル・プロセッサ・グループ（スレッド・グループ）に、クロスバー・スイッチを介してアドレス可能である。ＳＲＡＭまたはｅＤＲＡＭの別々のオン・チップ・メモリが、すべてのサブプロセッサ・コア（または、スレッド・グループ）への連続アドレス・スペースをハンドルするために提供される。統合１６ＫＢ  ＳＲＡＭメモリ（スレッド・グループにつき１つ）は、チップ上のすべてのプロセッサ・スレッドによってアクセス可能である。
【００３３】
図６および１１をより詳細に見ると、本発明によるマルチプロセッサＳｏＣ設計は、ストレージ・エリア・ネットワーク（ＳＡＮ）プロセッサ・アーキテクチャ１５０’を含み、これは、以下のプロトコルに限定されないが、ファイバ・チャネル２０１、Ｉｎｆｉｎｉｂａｎｄ２０２およびＧｂイーサネット（Ｒ）２０３に従って、ネットワーク・パケット通信機能をハンドルすることができる。図６のように、ネットワーク・プロセッサＳｏＣ設計１５０’は、データ・パケット、接続情報およびプログラムを格納するための、メモリ１６０の組み込みバンクを含む。組み込みメモリ（ＳＲＡＭまたはＤＲＡＭ）の使用は有利であり、これは、著しい量のメモリをチップ上に、そのサイズを過度に増すことなく配置することができるからである。加えて、組み込みメモリは、短く予測可能なアクセス時間を有し、これを単一のパケットの処理のための時間許容度において計上することができ、また、従来のオフ・チップ・メモリに比較して著しいパフォーマンスの利点を提供し、これは、全体のトラフィックが内部相互接続において低減され、結果としてリソースの衝突がより少数となり、パフォーマンスの低下および電力消費が低減されるからである。データの格納に加えて、組み込みメモリ１６０内の現在の制御、状況およびルーティング情報が維持される。いくつかの応用例は、使用可能なオン・チップ・メモリを超えるメモリ要件を必要とする可能性があるので、ＳｏＣネットワーク・プロセッサ・アーキテクチャは、高帯域幅ＤＤＲメモリ・インターフェース１６５を介して接続されたオフ・チップＤＲＡＭ（図示せず）を使用する。外部ＤＲＡＭは、統計値、アーカイブ情報を格納し、ならびに、輻輳バッファリングを提供することができる。
【００３４】
図６のＳｏＣネットワーク・プロセッサ１５０’では、大部分のネットワーク通信プロトコル機能はプログラマチックに実装される。しかし、ネットワーク・プロトコルのより低いレベルでの非常に時間依存型の機能は、ハードウェア・アクセラレータを介して実装される。ハードウェア・アクセラレータは低レベル・プロトコル・タスクをハンドルし、これは、データ・エンコード／デコード、シリアライゼーション／デシリアライゼーション、リンク管理、ならびに、ＣＲＣおよびチェックサム計算などである。これらのタスクは、転送されたパケットのあらゆるバイトにおいて実行され、ソフトウェアにおいて実装される場合、非常に計算が高価となる。これらの機能のハードウェア実装はしたがって、ファイバ・チャネルおよびギガビット・イーサネット（Ｒ）ではネットワーク・インターフェース１７５において実装されたハードウェア・アクセラレータ、Ｉｎｆｉｎｉｂａｎｄではネットワーク・インターフェース１８５として提供され、各々は小さいシリコン・エリアのみを必要とし、それぞれＩｎｆｉｎｉｂａｎｄおよびファイバ・チャネル通信リンク１９０、１９５とインターフェースをとる。
【００３５】
さらに図６のように、ＳｏＣネットワーク・プロセッサ設計１５０’は、クロスバー・スイッチ１２０を含む内部相互接続を含み、クロスバー・スイッチ１２０は、プロセッサ・クラスタ１００’、共有メモリ・ブロック１６０、外部ＤＲＡＭメモリ・アクセスのための外部メモリ・インターフェース１６５、および、ネットワーク・プロトコル層ハードウェア支援デバイス１７５、１８５を相互接続する。例示的実施形態では、クロスバー・スイッチ１２０は６４ビット・データ・パスを有し、パイプライニングに値するいくつかのワード、および、データのオーバーフローを回避するためのトークン・シグナリングを提供する。プロセッサ・クワッドは、クロスバー１２０へのポートを共有し、そのため、例えば１６ポートを有するクロスバーは、最大３２プロセッサ・システムを相互接続するために十分である。しかし、クロスバー・スイッチ１２０を擬似クロスバー、バス、スイッチ、または、適切である可能性のある他のそのような相互接続で置き換えることができることを理解されたい。これを本明細書で図９に関して説明する。
【００３６】
本明細書で概して述べたように、ＳｏＣネットワーク・プロセッサ・アーキテクチャはセルラーであり、すなわち、設計を応用例の要件に応じてカスタム・スケーリングできるようにする。例えば、ファイバ・チャネルのエンドポイント機能は、ＩｎｆｉｎｉｂａｎｄへのｉＳＣＳＩプロトコル変換を有するより複雑なＴＣＰ／ＩＰ終端よりも少ない計算能力を必要とする。しかし、本発明では、プロセッサ・コアまたはクラスタ１００’および組み込みメモリ・ブロックの数を、著しい設計変更を行なうことなく、容易に応用例の要件に適合させることができる。
【００３７】
図７は、図６および１１の自己完結型マルチプロセッサ・サブシステム１５０’を使用する、ＳｏＣネットワーク接続プロセッサ２００の第１の実施形態を示す。譲受人ＩＢＭから入手可能なＣｙｃｌｏｐｓＥは、サブシステム１５０’として使用するための１つの可能性である。図７の実施形態では、サブシステム１５０’は例えば、ＡＲＭ  ＡＭＢＡ(Advanced Microcontroller Bus Architecture)、ＭＩＰ(MicroprocessorInterface Program)、オープン規格コアコネクト、ＡＨＢ(Advanced High-Performance Bus)など、ＳｏＣ標準化プロセッサ・ローカル・バス（ＰＬＢ）を含むプロセッサ・ローカル・バス２１０に、共通マクロ（例えば、ＰＬＢコネクター・マクロ）を介して接続され、マルチ・ソース・バス・アーキテクチャへの真のプラグ・アンド・プレイ・システム・オン・チップ（ＳＯＣ）を可能にする。
【００３８】
図７および１１に示すネットワーク接続プロセッサ２００の実施形態は、ＰｏｗｅｒＰＣまたは他の類似のプロセッサ２２５を、ＳｏＣサブシステム内で計算能力を提供するために実装する。同じく、ＰＰＣ４４０を、別のＰＰＣコア、ＭＩＰＳコア、またはＳｏＣインテグレータによって選択されるような他のマイクロプロセッサで置き換えることができる。同様に、図７に示す他の構成要素には、ＳＲＡＭ２１５、ＤＤＲコントローラ２１８、ＰＣＩ−Ｘブリッジ２２２、直接メモリ・アクセスＤＭＡデバイス２２６、ＤＭＡコントローラ２２８、１つまたは複数のＩ／Ｏインターフェース・デバイス２４５を介して外部構成要素とインターフェースをとるためのオン・チップ周辺バス（ＯＰＢ）２４０が含まれる。加えて、メディア・アクセス制御（ＭＡＣ）プロトコル・デバイス２５０は、イーサネット（Ｒ）ＬＡＮシステムのためのデータ・リンク層を提供するために使用され、プロセッサ・コア・タイマ２３３および割り込みコントローラ２３５は、特定のＳｏＣの設計者／インテグレータによって行なわれた選択に従って、存在しても省略されてもよい。
【００３９】
図８は、本発明によるシステム・オン・チップ（ＳｏＣ）ネットワーク接続多重処理システム３００の第２の実施形態を例示する。図７のように、図８のＳｏＣ多重処理システム３００は、プロセッサ（例えば、４４０コア）、ローカル・プロセッサ・バス（ＰＬＢ）２１０、オン・チップ周辺バス（ＯＰＢ）、およびいくつかの構成要素を含み、これは、ＳＲＡＭ、ＤＤＲコントローラ、ＰＣＩ−ＸブリッジおよびＤＭＡコントローラなどであるが、ＯＰＢバス２４０とインターフェースをとるＯＰＢブリッジ２２９を含む。プロセッサ・バスまたはＰＬＢ２１０は、ＡＭＢＡ、ＭＩＰ、コアコネクトＰＬＢ、ＡＨＢなど、ＳｏＣ標準化プロセッサ・ローカル・バスである。ＰＬＢ２１０に接続された構成要素のうち１つは、プロセッサ・ベースのサブシステム３５０であり、これを以下で図９に関してより詳細に説明する。図８に示す要素は例示的であり、限定するものではない。例えば、ＰＰＣ４４０を、ＰＰＣ４０５もしくはＰＰＣ４４０、または、ＡＲＭもしくはＭＩＰＳプロセッサ・コア、または、ＳｏＣインテグレータによって選択されるような他のマイクロプロセッサのような、別のＰＰＣコアで置き換えることができ、あるいは、本発明の主な範囲を限定することなく、完全に新規なコアを含むことができる。同様に、ここで挙げる他の構成要素（または、ＳｏＣライブラリからの他のいずれかの構成要素）は、特定のＳｏＣの設計者／インテグレータによって行なわれた選択に従って、存在しても省略されてもよい。例えば、図８のように、オン・チップ周辺バス２４０とインターフェースをとるために提供されたデバイスには、それだけに限定されないが、以下のＲＡＭ／ＲＯＭ周辺コントローラ２４５ａ、外部バス・マスター２４５ｂ、ＵＡＲＴデバイス２４５ｃ、Ｉｎｔｅｒ−ＩＣバス（Ｉ２Ｃ）インターフェース２４５ｄ、汎用Ｉ／Ｏインターフェース２４５ｅおよびゲートウェイ・インターフェース２４５ｆのうち１つまたは複数が含まれる可能性がある。したがって、多重チップ構成が可能にされることを理解されたい。
【００４０】
図９は、本発明のさらなる実施形態による自己完結型プロセッサ・ベースのサブシステム３５０を示す。このサブシステムは、図７および８に示すものなど、ＳｏＣネットワーク接続プロセッサ・システムにおける構成要素として統合され、プロセッサ・バス２１０に、ＡＳＩＣライブラリにおける共通マクロにすることができるＰＬＢブリッジを介して接続される。プロセッサ・ベースのサブシステム３５０は、図６のプロセッサ・クラスタ１００’など、１つまたは多数のプロセッサ・クラスタ、データまたは命令あるいはその両方を格納するための１つまたは複数のローカル・メモリ・セル、ならびに、別々のバス、ファブリック、クロスバー・スイッチまたは他の相互接続手段１２０として実施されたローカル相互接続手段を含む。好ましい実施形態では、マルチプロセッサ・サブシステム３５０は、ＳｏＣネットワーク・プロセッサ・バス２１０を介して通信するためのＰＬＢブリッジ・マクロ構成要素４１０を含むが、他のいかなるブリッジング・マクロも、プロセッサ・ベースのサブシステム３５０とＳｏＣバス２１０の間のデータの流れを可能にするために選択することができることを理解されたい。プロセッサ・バス２１０は、プロセッサおよび構成要素を接続するためのシステム・オン・チップ・アセンブリにおいて使用された、別々のバス、スイッチまたは相互接続手段である。
【００４１】
サブシステムおよびプロセッサ・バス２１０（図７および８）の分離は、１）サブシステム・トラフィックがＰＬＢトラフィックから分離され、帯域幅競合が回避されること、２）グローバル標準化バス上のサブシステムとＳｏＣシステムの間のトラフィックのみがインターフェース・トラフィック（データ受信および送信）であること、３）サブシステム・バス／スイッチ相互接続ファブリックが、高パフォーマンスのソリューションを実施するために最適化されたＭＰファブリックを、標準化された構成要素、およびＳｏＣシステム内の接続プロトコルに対処するための要件なしに、提供するために設計されることにおいて、有利である。このようにしてＳｏＣのソリューションは、マルチプロセッサ（ＭＰ）ファブリックをＭＰの高パフォーマンスのために最適化でき、ＳｏＣライブラリの全ての既存の標準化された構成要素を使用できるという両方の意味において、有益である。
【００４２】
相互接続バス／スイッチ／ファブリック１２０を含むサブシステム３５０は特にプロセッサ・バス２１０へ、ブリッジング構成要素４１０を使用して接続され、ブリッジング構成要素４１０は、２つの通信システムの間の異なる速度、データ幅、信号およびシグナリング・プロトコルについて、例えば、ＰＬＢからＯＰＢのブリッジ、またはＰＬＢからＰＣＩ−Ｘなど、既存のブリッジが実行する方法で適合する。ＰＬＢまたはＡＭＢＡなどの標準化プロセッサ・ローカル相互接続へのインターフェースの実装により、この新しい構成要素をＳｏＣ構成要素ライブラリに統合することが可能となる。このブリッジ構成要素４１０の可能な実施態様を図１０に示す。このブリッジ・マクロ４１０の目的は、制御信号、データ幅、動作周波数およびアドレス・スペースを、ＳｏＣプロセッサ・バス２１０と、プロセッサ・ベースのサブシステムのローカル・バス１２０の間で変換／調整することである。好ましくは、ブリッジ・マクロ構成要素４１０は、プロセッサ・ベースのサブシステムのモジュールに来るデータ、およびそこから出て行くデータのためのデータ・バッファリングを実施し、サブシステムおよびＰＬＢのためのＤＭＡコントローラを含むことができる。構成および状況レジスタを、メモリ・マップ・レジスタとしてサブシステム・アドレス・スペースにおいて実装することができる。構成レジスタは、プロセッサ・ベースのサブシステム３５０によって設定され、これはまた、ブリッジ４１０の状況も読み取る。このモジュールはまた、ＳｏＣプロセッサ・バスにおける様々なデータ幅の間で選択するため（例えば、６４または１２８ＰＬＢにより動作するためのオペレーション・モードを設定するため）、または、例えばラインおよびバースト・データ転送など、オペレーションの様々なモードをサポートするため、あるいはその両方の設定を含むこともできる。ＳｏＣアドレス・スペースおよびサブシステム・アドレス・スペースは、同じアドレス・スペースを共有することができるが、必ずしもそうしなければならないとは限らない。
【００４３】
図１０のブリッジ・マクロ４１０は特にＰＬＢバス上で、ＰＬＢスレーブ４２０ａおよびＰＬＢマスター４２０ｂとして機能する。ＰＬＢスレーブとして、ブリッジ・マクロ４１０は、プロセッサ・ベースのサブシステム３５０からのデータ片を得るための、ＳｏＣプロセッサからの読み取りおよび書き込みリクエストを実施する。プロセッサ・ベースのサブシステムにおけるメモリ内のデータについての読み取りリクエストの間、ブリッジは読み取りリクエストをＰＬＢ２１０から受信し、アドレスを解決し、プロセッサ・ベースのサブシステムのバス／ファブリック／スイッチ１２０についての読み取りリクエストを生成する。これは、読み取りデータをプロセッサ・ベースのサブシステム３５０からバッファし、データをＰＬＢ２１０へ、ＰＬＢバス２１０によって指定された幅および速度において転送する。プロセッサ・ベースのサブシステムにおけるメモリ内のデータについての書き込みリクエストの間、ブリッジはＰＬＢ２１０からの書き込みリクエストについてのデータをバッファし、プロセッサ・ベースのサブシステムにおけるメモリ・バンクについてのアドレスを解決し、データをプロセッサ・ベースのサブシステム３５０における適切なメモリ・バンクへ、そのバス／ファブリック／スイッチ１２０によって指定されたように転送する。
【００４４】
逆に、ＰＬＢマスター４２０ｂとして機能するとき、ブリッジ・マクロ４１０は、プロセッサ・ベースのサブシステムからのデータ、およびそれへのデータを転送するためのＤＭＡコントローラを実装することができるが、そうしなければならないわけではない。データをＤＭＡコントローラによって、プロセッサ・ベースのサブシステムからＳｏＣのＤＤＲメモリへ転送することにおいて、コントローラはＰＬＢ書き込みリクエストについてのアドレスおよびシグナリングを設定し、次いで、データをＤＤＲメモリに転送する。ＤＤＲからプロセッサ・ベースのサブシステムへのデータのＤＭＡ転送の間、マクロはＰＬＢ読み取りリクエストについてのアドレスおよびシグナリングを設定し、データをバッファし、データをプロセッサ・ベースのサブシステムにおけるメモリ・バンクに転送する。
【００４５】
好ましい実施形態では、プロセッサ・ベースのサブシステム３５０は組み込みソフトウェアを含み、これは特定の機能のセットについての既製の機能（パーソナライゼーション）を提供する。可能な使用は、あるネットワーク・プロトコルから別のネットワーク・プロトコルへのネットワーク・プロトコル変換、プロトコル・トラフィック終端、同様のＴＣＰ／ＩＰオフロード・エンジン、ＩＰＳｅｃ  ＶＰＮトンネリング・エンジン、ｉＳＣＳＩのためのネットワーク処理、暗号化エンジン、圧縮／圧縮解除エンジン、またはマルチメディア処理では、類似のＭＰＥＧエンコード／デコード、またはサウンド／音声／ビデオ処理である。
【００４６】
プロセッサ・ベースのサブシステムにおけるデータの流れの例示として、図９のプロセッサ・ベースのサブシステム３５０、および、図７または８あるいはその両方のＳｏＣアーキテクチャを使用するＴＣＰ／ＩＰオフロード・エンジンの可能な実施態様を、ここで以下のように説明する。
【００４７】
・ＳｏＣプロセッサ・コア２２５（例えば、ＰＰＣ４４０）がデータ処理のためのリクエストを設定し、このリクエスト、および、ＤＤＲメモリ内のデータへのポインタをプロセッサ・ベースのサブシステム３５０へ、ブリッジ４１０を介して送信する。これを、割り込み信号を起こすこと、または、定期的にポーリングされる、専用レジスタ（図示せず）もしくは事前に指定された記憶場所にデータを書き込むこととして実施することができる。
【００４８】
・プロセッサ・ベースのサブシステム３５０がこのリクエストを認識し、ＤＭＡエンジン２２６（図８）を活動化させて、データをＳｏＣメモリからプロセッサ・ベースのサブシステム内のメモリに転送する。
【００４９】
・データがプロセッサ・ベースのサブシステム３５０内のメモリに転送され、データの終了がシグナル通知される。
【００５０】
・プロセッサ・ベースのサブシステム３５０が、ＴＣＰ／ＩＰプロトコルなど、指定されたプロトコル・タスクを実施し、データを一連のパケットに区分化し、パケットについての適切なヘッダを生成するなどし、データをイーサネット（Ｒ）ＭＡＣ（メディア・アクセス制御）ネットワーク・インターフェース回路に送信する。プロセッサ・ベースのサブシステム３５０は、必要とされた場合、ＳｏＣプロセッサ３００からの干渉なしに、プロトコルによって定義されたように、パケットを再送信する。
【００５１】
・すべてのデータが送信された後、ＳｏＣプロセッサ３００に、タスク完了について通知される。これを、割り込みをＰＰＣに送信すること、または、定期的にＳｏＣプロセッサによってポーリングされるある事前定義された位置に書き込むこととして実施することができる。
【００５２】
以下は、１つまたは複数のネットワーク・プロトコルに従って、受信されたパケットをルーティングするための好ましい実施形態における、サブシステム・コードの例である。
ｆｏｒ（；；）
｛
ＭＡＣをポーリングする；
ｉｆ（パケットが受信される）
パケットを、プロトコルに従って処理する
ｉｆ（パケットがうまく受信される）
パケットを、ＰＬＢブリッジを介して転送する
コアコネクト・バス・マスターへの通知イベントを引き起こす
ＰＬＢブリッジ状況をポーリングする；
ｉｆ（リクエスト）
リクエストを処理する
ｉｆ（パケットが送信されるべきである）
パケットを、ＭＡＣを介して転送する
｝
【００５３】
プロセッサ・ベースのサブシステムにおけるデータの流れは、例えば、メディアＩ／Ｏ（ＭＡＣ）デバイスとプロセッサ・ローカル・バス（ＰＬＢ）の間のソフトウェア・ポーリングを介して実行されるが、接続はプロトコル独立であり、多数のネットワーク・プロトコル・タイプ（イーサネット（Ｒ）、ファイバ・チャネル、ＩＰｖ６、ＡＴＭ、ＩＰｓｅｃ、ＨＩＰＰＩ、その他）を、同じ接続ラインを介してサポートすることができることを理解されたい。ソフトウェア・ポーリングおよび接続メカニズムは、バスおよびＩ／Ｏメディア接続をダイレクトするために提供され、さらなる利点を提供し、並列性、および、メディア・タイプまたは起点にかかわらずデータのパケットがうまく処理されているときを識別するためのパイプライン構造を含む、本発明の特徴を向上させる。
【００５４】
本発明を詳細に、その例示的かつ実行された実施形態に関して示し、説明したが、形態および詳細における前述および他の変更を本発明において、付属の特許請求の範囲の範囲によってのみ限定されるべきである本発明の精神および範囲から逸脱することなく行なうことができることは、当業者には理解されよう。
【図面の簡単な説明】
【００５５】
【図１】従来技術による、多重処理コア、メモリおよびインターフェースを含む、ネットワーク・プロセッサ・チップの様々な従来技術の実施態様を例示する図である。
【図２】従来技術による、多重処理コア、メモリおよびインターフェースを含む、ネットワーク・プロセッサ・チップの様々な従来技術の実施態様を例示する図である。
【図３】従来技術による、多重処理コア、メモリおよびインターフェースを含む、ネットワーク・プロセッサ・チップの様々な従来技術の実施態様を例示する図である。
【図４】本発明の好ましい実施形態において使用される、例示的プロセッサ・コアを示す図である。
【図５】本発明の好ましい実施形態において使用される、例示的プロセッサ・コアを示す図である。
【図６】本発明の好ましい実施形態による機能を実装するマルチプロセッサ・サブシステムの例示的概観を示す図である。
【図７】本発明の第２の実施形態による、図５のＳｏＣサブシステムを使用するネットワーク接続プロセッサのさらなる実施形態を示す図である。
【図８】本発明のさらなる実施形態によるプロセッサ・ベースのサブシステムを使用するＳｏＣを示す図である。
【図９】本発明のさらなる実施形態によるＳｏＣマルチプロセッサ・サブシステムを示す図である。
【図１０】図９のシステムにおいて提供されたブリッジ構成要素の可能な実施態様を示す図である。
【図１１】本発明による独立マルチプロセッサ・コア１５０’を実装する、１つの例示的ネットワーク・プロセッサ構成２００を示す図である。
【符号の説明】
【００５６】
１００  プロセッサ・ユニット
１００’  プロセッサ・クラスタ
１１０  ＳＲＡＭメモリ
１２０  スイッチ・ファブリック
１２５  プロセッサ・コア
１２６  レジスタ・ファイル
１２８  命令シーケンサー
１３０  ＳＲＡＭ
１３１  命令キャッシュ（Ｉ−キャッシュ）
１５０  自己完結型プロセッサ・ベースのサブシステム
１５０’  ストレージ・エリア・ネットワーク（ＳＡＮ）プロセッサ・アーキテクチャ
１６０  メモリ
１６５  高帯域幅ＤＤＲメモリ・インターフェース
１７５  ネットワーク・インターフェース
１８５  ネットワーク・インターフェース
１９０  Ｉｎｆｉｎｉｂａｎｄ通信リンク
１９５  ファイバ・チャネル通信リンク
２００  ＳｏＣネットワーク接続プロセッサ
２１０  プロセッサ・ローカル・バス
２１５  ＳＲＡＭ
２１８  ＤＤＲコントローラ
２２２  ＰＣＩ−Ｘブリッジ
２２５  ＰｏｗｅｒＰＣまたは他の類似のプロセッサ
２２６  直接メモリ・アクセスＤＭＡデバイス
２２８  ＤＭＡコントローラ
２２９  ＯＰＢブリッジ
２３３  プロセッサ・コア・タイマ
２３５  割り込みコントローラ
２４０  オン・チップ周辺バス（ＯＰＢ）
２４５  Ｉ／Ｏインターフェース・デバイス
２４５ａ  ＲＡＭ／ＲＯＭ周辺コントローラ
２４５ｂ  外部バス・マスター
２４５ｃ  ＵＡＲＴデバイス
２４５ｄ  Ｉｎｔｅｒ−ＩＣバス（Ｉ２Ｃ）インターフェース
２４５ｅ  汎用Ｉ／Ｏインターフェース
２４５ｆ  ゲートウェイ・インターフェース
２５０  メディア・アクセス制御（ＭＡＣ）プロトコル・デバイス
３００  システム・オン・チップ（ＳｏＣ）ネットワーク接続多重処理システム
３５０  プロセッサ・ベースのサブシステム
４１０  ＰＬＢブリッジ・マクロ構成要素
【図１】
2005044361.tif 000003
【図２】
2005044361.tif 000004
【図３】
2005044361.tif 000005
【図４】
2005044361.tif 000006
【図５】
2005044361.tif 000007
【図６】
2005044361.tif 000008
【図７】
2005044361.tif 000009
【図８】
2005044361.tif 000010
【図９】
2005044361.tif 000011
【図１０】
2005044361.tif 000012
【図１１】
2005044361.tif 000013