(57)【要約】      （修正有）【課題】高性能なネットワーキングおよび通信アプリケーション等の新しい技術を利用できると同時に高性能機能性も備えるプロセッサを提供する。【解決手段】プロセッサは、それぞれがデータキャッシュおよび命令キャッシュを持っている複数のマルチスレッドプロセッサコアを備えている。データスイッチ相互接続はプロセッサコアのそれぞれに接合されておりプロセッサコア間で情報を手渡すように構成されている。メッセージネットワークはプロセッサコアおよび複数の通信ポートのそれぞれに接合されている。データスイッチ相互接続がプロセッサコアのそれぞれにそれぞれのデータキャッシュによって接合されており、メッセージングネットワークがプロセッサコアのそれぞれにそれぞれのメッセージステーションによって接合されている。【選択図】図２Ａ
2010079921.tif 000002
【特許請求の範囲】
【請求項１】
それぞれがデータキャッシュおよび命令キャッシュを持っている複数のプロセッサコア、
前記複数のプロセッサコアのそれぞれのデータキャッシュに直接接合され、前記複数のプロセッサコア間でメモリ関連情報を手渡すように構成されているデータスイッチ相互接続リング装置、
複数の通信ポート、
前記データスイッチ相互接続リング装置から離れており、かつ、前記複数のプロセッサコアのそれぞれの命令キャッシュおよび前記複数の通信ポートと直接接合され、前記複数のプロセッサコアのいずれかと前記複数の通信ポートのいずれかとの間で非メモリ関連メッセージのポイント対ポイント転送を提供するように構成されている高速メッセージングリング構成部材、
を含む、マルチコアプロセッサ。
【請求項２】
前記データスイッチ相互接続は前記複数のプロセッサコアのそれぞれにそれぞれのデータキャッシュによって接合されており、
前記メッセージングネットワークは前記複数のプロセッサコアのそれぞれにそれぞれの命令キャッシュによって接合されていることを特徴とする、請求項１に記載のプロセッサ。
【請求項３】
前記データスイッチ相互接続に接合されており前記複数のプロセッサコアにアクセス可能な情報を保存するように構成されているレベル２キャッシュをさらに備えることを特徴とする、請求項１に記載のプロセッサ。
【請求項４】
前記データスイッチ相互接続に接合されており前記複数のプロセッサコアにアクセス可能な情報を保存するように構成されているレベル２キャッシュをさらに備えることを特徴とする、請求項２に記載のプロセッサ。
【請求項５】
前記メッセージングネットワークおよび前記複数の通信ポートに接合されており前記メッセージングネットワークおよび前記複数の通信ポートの間で情報を手渡すように構成されているインターフェーススイッチ相互接続、
をさらに備えることを特徴とする、請求項１に記載のプロセッサ。
【請求項６】
前記メッセージングネットワークおよび前記複数の通信ポートに接合されており前記メッセージングネットワークおよび前記複数の通信ポートの間で情報を手渡すように構成されているインターフェーススイッチ相互接続、
をさらに備えることを特徴とする、請求項２に記載のプロセッサ。
【請求項７】
前記メッセージングネットワークおよび前記複数の通信ポートに接合されており前記メッセージングネットワークおよび前記複数の通信ポートの間で情報を手渡すように構成されているインターフェーススイッチ相互接続、
をさらに備えることを特徴とする、請求項３に記載のプロセッサ。
【請求項８】
前記メッセージングネットワークおよび前記複数の通信ポートに接合されており前記メッセージングネットワークおよび前記複数の通信ポートの間で情報を手渡すように構成されているインターフェーススイッチ相互接続、
をさらに備えることを特徴とする、請求項４に記載のプロセッサ。
【請求項９】
データスイッチ相互接続および少なくとも１つの通信ポートに接合されており、前記データスイッチ相互接続および前記通信ポートと通信するように構成されているメモリブリッジ、
をさらに備えることを特徴とする、請求項１に記載のプロセッサ。
【請求項１０】
データスイッチ相互接続および少なくとも１つの通信ポートに接合されており、前記データスイッチ相互接続および前記通信ポートと通信するように構成されているメモリブリッジ、
をさらに備えることを特徴とする、請求項２に記載のプロセッサ。
【請求項１１】
データスイッチ相互接続および少なくとも１つの通信ポートに接合されており、前記データスイッチ相互接続および前記通信ポートと通信するように構成されているメモリブリッジ、
をさらに備えることを特徴とする、請求項３に記載のプロセッサ。
【請求項１２】
データスイッチ相互接続および少なくとも１つの通信ポートに接合されており、前記データスイッチ相互接続および前記通信ポートと通信するように構成されているメモリブリッジ、
をさらに備えることを特徴とする、請求項４に記載のプロセッサ。
【請求項１３】
前記データスイッチ相互接続、前記インターフェーススイッチ相互接続、および少なくとも１つの通信ポートに接合されており、前記データスイッチ相互接続、前記インターフェーススイッチ相互接続、および前記通信ポートと通信するように構成されているスーパーメモリブリッジ、
をさらに備えることを特徴とする、請求項９に記載のプロセッサ。
【請求項１４】
前記データスイッチ相互接続、前記インターフェーススイッチ相互接続、および少なくとも１つの通信ポートに接合されており、前記データスイッチ相互接続、前記インターフェーススイッチ相互接続、および前記通信ポートと通信するように構成されているスーパーメモリブリッジ、
をさらに備えることを特徴とする、請求項１１に記載のプロセッサ。
【請求項１５】
前記プロセッサコアのそれぞれは複数のスレッドを実行するように構成されていることを特徴とする、請求項１に記載のプロセッサ。
【請求項１６】
前記プロセッサコアのそれぞれは複数のスレッドを実行するように構成されていることを特徴とする、請求項２に記載のプロセッサ。
【請求項１７】
前記プロセッサコアのそれぞれは複数のスレッドを実行するように構成されていることを特徴とする、請求項９に記載のプロセッサ。
【請求項１８】
前記プロセッサコアのそれぞれは複数のスレッドを実行するように構成されていることを特徴とする、請求項１１に記載のプロセッサ。
【請求項１９】
それぞれがデータキャッシュを持っている複数のプロセッサコア、
前記複数のプロセッサコアにアクセス可能な情報を保存するように構成されているレベル２キャッシュ、
前記複数のプロセッサコアおよび前記レベル２キャッシュに接合されており、前記複数のプロセッサコアおよび前記レベル２キャッシュの間で情報を手渡すように構成されているデータスイッチ相互接続、
複数の通信ポート、
前記複数のプロセッサコアのそれぞれおよび前記複数の通信ポートと直接接合され、前記複数のプロセッサコアのいずれかと前記複数の通信ポートのいずれかとの間で非メモリ関連メッセージのポイント対ポイント転送を提供するように構成されている高速メッセージングリング構成部材、
を含む、マルチコアプロセッサ。
【請求項２０】
前記データスイッチ相互接続に接合されているメモリブリッジをさらに備え、
前記データスイッチ相互接続は、前記複数のプロセッサコア、前記レベル２キャッシュ、および前記メモリブリッジの間で情報を手渡すように構成されていることを特徴とする、請求項１９に記載のプロセッサ。
【請求項２１】
前記データスイッチ相互接続は、前記複数のプロセッサコアのそれぞれのそれぞれのデータキャッシュおよび前記レベル２キャッシュのそれぞれの部分にそれぞれが接合されている複数の素子を備えることを特徴とする、請求項１９に記載のプロセッサ。
【請求項２２】
前記データスイッチ相互接続は、前記複数のプロセッサコアのそれぞれのそれぞれのデータキャッシュ、前記レベル２キャッシュのそれぞれの部分、および前記メモリブリッジにそれぞれが接合されている複数の素子を備えることを特徴とする、請求項２０に記載のプロセッサ。
【請求項２３】
前記データスイッチ相互接続は、要求リング、データリング、スヌープリング、および応答リングを備える前記複数の素子と相互接続する４つのリングを備えることを特徴とする、請求項２１に記載のプロセッサ。
【請求項２４】
前記データスイッチ相互接続は、要求リング、データリング、スヌープリング、および応答リングを備える前記複数の素子と相互接続する４つのリングを備えることを特徴とする、請求項２２に記載のプロセッサ。
【請求項２５】
前記メモリブリッジは万が一キャッシュミスの場合にのみメインメモリからデータを回収するように構成されていることを特徴とする、請求項２２に記載のプロセッサ。
【請求項２６】
前記メモリブリッジは万が一キャッシュミスの場合にのみメインメモリからデータを回収するように構成されていることを特徴とする、請求項２４に記載のプロセッサ。
【請求項２７】
前記メモリブリッジはキャッシュサーチが完了する前にメインメモリから投機的にデータを回収するように構成されていることを特徴とする、請求項２２に記載のプロセッサ。
【請求項２８】
前記メモリブリッジはキャッシュサーチが完了する前にメインメモリから投機的にデータを回収するように構成されていることを特徴とする、請求項２４に記載のプロセッサ。
【請求項２９】
前記レベル２キャッシュはＭＯＳＩ（変形、自身の、共有の、無効な）プロトコルに基づいたコヒーレント技術を採用するように構成されていることを特徴とする、請求項１９に記載のプロセッサ。
【請求項３０】
前記レベル２キャッシュはＭＯＳＩ（変形、自身の、共有の、無効な）プロトコルに基づいたコヒーレント技術を採用するように構成されていることを特徴とする、請求項２０に記載のプロセッサ。
【請求項３１】
前記レベル２キャッシュはＭＯＳＩ（変形、自身の、共有の、無効な）プロトコルに基づいたコヒーレント技術を採用するように構成されていることを特徴とする、請求項２１に記載のプロセッサ。
【請求項３２】
前記レベル２キャッシュはＭＯＳＩ（変形、自身の、共有の、無効な）プロトコルに基づいたコヒーレント技術を採用するように構成されていることを特徴とする、請求項２２に記載のプロセッサ。
【請求項３３】
それぞれが複数のスレッドを実行するように構成された複数のプロセッサコア、
前記複数のプロセッサコアで駆動する複数の作動システム、
前記複数のプロセッサコアのそれぞれに接合され、前記複数のプロセッサコア間で情報を手渡すように構成されているデータスイッチ相互接続、
複数の通信ポート、
前記複数のプロセッサコアのそれぞれおよび前記複数の通信ポートと接合され、前記複数のプロセッサコアのいずれかと前記複数の通信ポートのいずれかとの間で非メモリ関連メッセージのポイント対ポイント転送を提供するように構成されている高速メッセージングリング構成部材、
を含む、異なる作動システムでソフトウェアアプリケーションを実行するためのマルチコアプロセッサ。
【請求項３４】
１番目のプロセッサコアは１番目の作動システムを駆動するように構成されており、
２番目のプロセッサコアは前記１番目の作動システムとは異なる２番目の作動システムを駆動するように構成されており、および
３番目のプロセッサコアは前記１番目の作動システムおよび前記２番目の作動システムとは異なる３番目の作動システムを駆動するように構成されていることを特徴とする、請求項３３に記載のプロセッサ。
【請求項３５】
１番目のスレッドは１番目の作動システムを駆動するように構成されており、
２番目のスレッドは前記１番目の作動システムとは異なる２番目の作動システムを駆動するように構成されており、および
３番目のスレッドは前記１番目の作動システムおよび前記２番目の作動システムとは異なる３番目の作動システムを駆動するように構成されていることを特徴とする、請求項３３に記載のプロセッサ。
【請求項３６】
１番目のコアは１番目の作動システムを駆動するように構成されており、および
１番目のスレッドは前記１番目の作動システムとは異なる２番目の作動システムを駆動するように構成されていることを特徴とする、請求項３３に記載のプロセッサ。
【請求項３７】
前記データスイッチ相互接続はそれぞれのデータキャッシュによって前記複数のプロセッサコアのそれぞれに接合されており、および
前記メッセージングネットワークはそれぞれの命令キャッシュによって前記複数のプロセッサコアのそれぞれに接合されていることを特徴とする、請求項３３に記載のプロセッサ。
【請求項３８】
前記データスイッチ相互接続に接合されており、前記複数のプロセッサコアにアクセス可能な情報を保存するように構成されているレベル２キャッシュをさらに備えることを特徴とする、請求項３３に記載のプロセッサ。
【請求項３９】
前記データスイッチ相互接続に接合されており、前記複数のプロセッサコアにアクセス可能な情報を保存するように構成されているレベル２キャッシュをさらに備えることを特徴とする、請求項３４に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本願は、本願でその全体を援用しすべての優先権を主張する、２００３年７月２５日に出願された仮出願第６０／４９０，２３６号（ＲＺＭＩ−Ｐ１０１Ｐ２）の優先権を主張する、２００３年１０月８日に出願されたシリアル番号第１０／６８２，５７９号（ＲＺＭＩ−Ｐ１０１）の一部継続出願である。
【０００２】
本発明はコンピュータおよび遠隔通信の分野に関し、特にコンピュータおよび遠隔通信アプリケーション用の最新型プロセッサに関する。
【背景技術】
【０００３】
現代のコンピュータおよび遠隔通信システムは、世界中で情報を通信できることをはじめとする多大な恩恵をもたらす。コンピュータおよび遠隔通信設備のための従来のアーキテクチャは多数の離散回路を備え、これらは処理能力および通信速度の両方を非効率にしてしまう。
【０００４】
例えば、図１は、多数の離散チップおよび技術を採用しているこのような従来のラインカードを描いている。図１で、従来のラインカード１００は以下の離散構成部材を備えている。すなわち、分類１０２、トラフィックマネージャ１０４、バッファメモリ１０６、セキュリティコプロセッサ１０８、伝送制御プロトコル（ＴＣＰ）／インターネットプロトコル（ＩＰ）オフロードエンジン１１０、Ｌ３＋コプロセッサ１１２、物理層装置（ＰＨＹ）１１４、媒体アクセス制御（ＭＡＣ）１１６、パケット転送エンジン１１８、ファブリックインターフェースチップ１２０、制御プロセッサ１２２、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）１２４、アクセス制御リスト（ＡＣＬ）３進内容−アドレス可能メモリ（ＴＣＡＭ）１２６、およびマルチプロトコルラベルスイッチング（ＭＰＬＳ）静的ランダムアクセスメモリ（ＳＲＡＭ）１２８である。カードはさらに、他のカードおよび／またはデータと接続できるスイッチファブリック１３０を備えている。
【０００５】
プロセッサおよび他の構成部材の進歩により、遠隔通信設備の情報を処理し、操作し、保存し、回収し、送達する能力が向上した。近年、技術者たちは機能を一体型回路に組み込むことで、必要な機能を同じかより良いレベルの性能で実行しつつも離散一体型回路の全体の数を減らし始めている。このような組み込みは新しい技術によりチップ上のトランジスタの数を増やせる能力および費用削減に対する要望により一層促進されてきた。このような組み込み一体型回路のいくつかは非常に機能的でしばしばチップ上のシステム（ＳｏＣ）と呼ばれる。しかしながら、回路およびシステムをチップ上に組む込むことは非常に複雑となる場合があり、多くの技術上の課題を課する。例えば、ハードウェアエンジニアは将来の設計が確実に柔軟であることを望み、ソフトウェアエンジニアは自分たちのソフトウェアがチップならびに将来の設計でも同じように確実に駆動することを望む。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
高性能な新規のネットワーキングおよび通信アプリケーションに対する要望は最新型スイッチングおよびルーチングにおいて高まり続けている。さらに、内容認識ネットワーキング、高度一体型セキュリティ、および保存管理の新しい形態といった解決法がフレキシブルマルチサービスシステムに移行し始めている。これらおよび他の次世代解決法に使用可能な技術はインテリジェンスおよび高性能に柔軟性を提供して新しいプロトコルおよびサービスに即座に適合されるようにしなければならない。
【０００７】
その結果、必要とされているのは新しい技術を利用できると同時に高性能機能性も提供する最新型プロセッサである。さらに、この技術は柔軟な改変能力を備えていれば特に役立つであろう。
【課題を解決するための手段】
【０００８】
本発明は、確認された制限を克服するための有用な新規の構造および技術を提供するものであり、新規の技術を利用できると同時に柔軟な改変とともに高い性能機能性も提供する最新型プロセッサを提供する。本発明は、モジュラー構成部材および通信構造を備えるチップ上の最新型アーキテクチャシステム（ＳｏＣ）を採用して高性能装置を提供する。
【０００９】
最新型プロセッサはそれぞれがデータキャッシュおよび命令キャッシュを持っている複数のプロセッサコアを備えている。データスイッチ相互接続はプロセッサコアのそれぞれに接合されプロセッサコア間で情報を手渡すように構成されている。メッセージングネットワークはプロセッサコアおよび複数の通信ポートのそれぞれに接合されている。
【００１０】
本発明の１つの側面では、データスイッチ相互接続はプロセッサコアのそれぞれにそれぞれのデータキャッシュによって接合されており、メッセージングネットワークはプロセッサコアのそれぞれにそれぞれの命令ステーションによって接合されている。
【００１１】
本発明の１つの側面では、最新型遠隔通信プロセッサは、データスイッチ相互接続に接合されておりプロセッサコアにアクセス可能な情報を保存するように構成されているレベル２（Ｌ２）キャッシュをさらに備えている。
【００１２】
本発明の１つの側面では、最新型遠隔通信プロセッサは、メッセージングネットワークおよび複数の通信ポートに接合されておりメッセージングネットワークおよび通信ポートの間で情報を手渡すように構成されているインターフェーススイッチ相互接続をさらに備えている。
【００１３】
本発明の１つの側面では、最新型遠隔通信プロセッサは、データスイッチ相互接続および少なくとも１つの通信ポートに接合されており、データスイッチ相互接続および通信ポートと通信するように構成されているメモリブリッジをさらに備えている。
【００１４】
本発明の１つの側面では、最新型遠隔通信プロセッサは、データスイッチ相互接続、インターフェーススイッチ相互接続、および少なくとも１つの通信ポートに接合されておりデータスイッチ相互接続、インターフェーススイッチ相互接続、および通信ポートと通信するように構成されているスーパーメモリブリッジをさらに備えている。
【００１５】
本発明の利点としては、コンピュータシステムとメモリとの間で効率的かつ費用効果的なやり方で高い帯域幅通信を提供する能力が挙げられる。
【図面の簡単な説明】
【００１６】
本発明を図面を参照しながら説明する、図面では、
【図１】従来のラインカードを描いている。
【図２Ａ】本発明の実施態様による例示的な最新型プロセッサを描いている。
【図２Ｂ】本発明の別の実施態様による例示的な最新型プロセッサを描いている。
【図３Ａ】従来の単一スレッド単一イシュー処理を描いている。
【図３Ｂ】従来の簡素なマルチスレッド化スケジューリングを描いている。
【図３Ｃ】機能停止したスレッドを備えた従来の簡素なマルチスレッド化スケジューリングを描いている。
【図３Ｄ】本発明の１つの実施態様によるイーガーラウンドロビンスケジューリングを描いている。
【図３Ｅ】本発明の１つの実施態様によるマルチスレッド化固定サイクルスケジューリングを描いている。
【図３Ｆ】本発明の１つの実施態様による、イーガーラウンドロビンスケジューリングを備えたマルチスレッド化固定サイクルを描いている。
【図３Ｇ】本発明の１つの実施態様による関連するインターフェースユニットを備えたコアを描いている。
【図３Ｈ】本発明の１つの実施態様によるプロセッサのパイプラインの一例を描いている。
【図３Ｉ】本発明の１つの実施態様によるプロセッサ内のコア割り込みフロー動作を描いている。
【図３Ｊ】本発明の１つの実施態様によるプログラマブルな割り込み中断コントローラ（ＰＩＣ）動作を描いている。
【図３Ｋ】本発明の１つの実施態様によるマルチスレッド割り当てのための戻りアドレススタック（ＲＡＳ）動作を描いている。
【図４Ａ】本発明の１つの実施態様によるデータスイッチ相互接続（ＤＳＩ）リングアレンジメントを描いている。
【図４Ｂ】本発明の１つの実施態様によるＤＳＩリング構成部材を描いている。
【図４Ｃ】本発明の１つの実施態様によるＤＳＩにおけるデータ回収の一例のフロー図を描いている。
【図５Ａ】本発明の１つの実施態様による高速メッセージングリング構成部材を描いている。
【図５Ｂ】図５Ａのシステムのためのメッセージデータ構造を描いている。
【図５Ｃ】本発明の１つの実施態様による高速メッセージングネットワーク（ＦＭＮ）に取り付けられたさまざまなエージェントの概念図を描いている。
【図５Ｄ】従来の処理システムにおけるネットワークトラフィックを描いている。
【図５Ｅ】本発明の実施態様によるパケットフローを描いている。
【図６Ａ】本発明の１つの実施態様によるパケットを４つのスレッドに均等に分配しているパケット分配エンジン（ＰＤＥ）を描いている。
【図６Ｂ】本発明の１つの実施態様によるラウンドロビンスキームを使ってパケットを分配しているＰＤＥを描いている。
【図６Ｃ】本発明の１つの実施態様によるパケットライフサイクル中のパケット順序付け装置（ＰＯＤ）の配置を描いている。
【図６Ｄ】本発明の１つの実施態様によるＰＯＤ外部分配を描いている。
【発明を実施するための形態】
【００１７】
本発明を、特定のアーキテクチャおよびプロトコルを参照して説明する。当業者であれば、説明は例示的なものであり本発明を実施するための最良の形態を提供するものであることを認識するであろう。説明は限定的なものではなく、遠隔通信および他の用途について言えることは例えばサーバー用途、分散型共用メモリ用途などの一般的なコンピュータ用途にも等しくあてはまる。本願で説明するように、イーサネット（登録商標）プロトコル、インターネットプロトコル、ハイパートランスポートプロトコルおよび他のプロトコルについて言及するが、本発明は他のプロトコルにも同様に適用できる。さらに、一体型回路を含むチップにも言及するが、本願で説明するものをチップ形態に組み合わせた他のハイブリッドまたはメタ回路も予測される。加えて、例示的なＭＩＰＳアーキテクチャおよび命令セットにも言及するが、他のアーキテクチャおよび命令セットも本発明で使用できる。他のアーキテクチャおよび命令セットとしては、例えばｘ８６、ＰｏｗｅｒＰＣ、ＡＲＭなどが挙げられる。
【００１８】
Ａ．アーキテクチャ
本発明は、図１の従来のラインカードで実行される多数の機能を整理統合し、ラインカード機能性を向上させるように設計されている。１つの実施態様では、本発明は多くの離散機能を実行するための回路系を備えた一体型回路である。一体型回路設計は、通信処理用にあつらえてある。従って、プロセッサ設計は計算を多く使う動作よりもむしろメモリを多く使う動作を強調する。プロセッサ設計は以下に説明するように高能率メモリアクセスおよびスレッド化処理用に構成された内部ネットワークを備えている。
【００１９】
図２Ａは、本発明の１つの実施態様による例示的な最新型プロセッサ（２００）を描いている。最新型プロセッサは特定の一体型回路にあらかじめ課せられている多くの機能を実行できる一体型回路である。例えば、最新型プロセッサはパケット転送エンジン、レベル３コプロセッサ、および制御プロセッサを備えている。プロセッサは必要に応じて他の構成部材を備えることができる。本願で示すように、例示的な機能的構成部材の数と仮定すると、例示的な実施態様では電力損失は約２０ワットである。当然ながら、本発明の他の実施態様では、電力損失は約２０ワットより大きくなったり小さくなったりし得る。
【００２０】
例示的なプロセッサはチップ上にネットワークとして設計されている。この分散処理アーキテクチャは構成部材に互いに通信させるもので、必ずしも共通のクロック速度を共有するものではない。例えば、１つのプロセッサ構成部材は比較的速い速度でクロックするが他のプロセッサ構成部材は比較的遅い速度でクロックする。ネットワークアーキテクチャはさらに将来の設計に他の構成部材を追加できる能力を、かかる構成部材を単純にネットワークに追加することによってサポートする。例えば、もし将来の通信インターフェースが所望される場合、このインターフェースはプロセッサチップにレイアウトしてプロセッサネットワークに連結できる。そして、将来のプロセッサを新しい通信インターフェースを備えて製造できる。
【００２１】
設計理念は、汎用ソフトウェアツールおよび再利用可能な構成部材を使ってプログラムできるプロセッサを作成することである。この設計理念をサポートするいくつかの例示的な特性としては次のものが挙げられる、すなわち、静的ゲート設計；低リスクカスタムメモリ設計；フリップフロップをベースとする設計；フルスキャン、メモリ内蔵自己試験（ＢＩＳＴ）、アーキテクチャ冗長およびテスタサポート特性を備える試験しやすい設計；クロックゲート化を含む消費電力削減；論理ゲート化およびメモリバンキング；インテリジェント的な案内配置をはじめとするデータ経路および制御分離；および物理的実施の急速フィードバックである。
【００２２】
ソフトウェア理念は業界標準開発ツールおよび環境の利用を可能とすることである。汎用ソフトウェアツールおよび再利用可能な構成部材を使って処理をプログラムすることが望まれている。業界標準ツールおよび環境としては、ｇｃｃ／ｇｄｂのような馴染み深いツール、および顧客またはプログラマによって選択された環境で開発できる能力が挙げられる。
【００２３】
ハードウェア抽象層（ＨＡＬ）定義を提供することによって既存および将来のコード投資を保護することもまた望まれている。このことで既存のアプリケーションを比較的簡単に移植できるようになりまた将来のチップ世代とのコードの互換性が可能となる。
【００２４】
ＣＰＵコアに戻ると、このコアはＭＩＰＳ６４に準拠するようにまた約１．５ＧＨｚ＋の範囲の周波数目標を持つように設計されている。アーキテクチャをサポートするさらなる例示的な特性としては次のものが挙げられる。すなわち、４方向多重スレッド化単一イシュー１０ステージパイプライン’をキャッシュラインロッキングを備えるリアルタイム処理サポートおよびベクトル化割り込みサポート；３２ＫＢ４方向セット連想命令キャッシュ；３２ＫＢ４方向セット連想データキャッシュ；および１２８エントリ変換索引バッファ（ＴＬＢ）である。
【００２５】
例示的な実施態様の重要な側面の１つは、高速プロセッサ入／出力（Ｉ／Ｏ）であり、これは２つのＸＧＭＩＩ／ＳＰＩ−４（例えば、図２Ａの囲い２２８ａおよび２２８ｂ）；３つの１ＧｂＭＡＣｓ；１つのフラッシュ部（例えば図２Ａの囲い２２６）および２つのクオードデータ速度（ＱＤＲ２）／二倍データ速度（ＤＤＲ２）ＳＲＡＭ部を備える、８００／１６００ＭＨｚメモリに変倍できる１つの１６ビットハイパートランスポート（例えば囲い２３２）；４００／８００ＭＨｚに変倍できる２つの６４ビットＤＤＲ２チャネル；および３２ビット周辺構成部材相互接続（ＰＣＩ）（例えば図２Ａの囲い２３４）、ジョイント試験アクセスグループ（ＪＴＡＧ）および万能非同期受信／送信器（ＵＡＲＴ）（例えば囲い２２６）によってサポートされている。
【００２６】
２つの縮小ＧＭＩＩ（ＲＧＭＩＩ）（例えば、図２Ａの囲い２３０ａおよび２３０ｂ）ポートもインターフェースの一部として含まれている。さらに、セキュリティ加速エンジン（ＳＡＥ）（例えば図２Ａの囲み２３８）は暗号化、復号化、認証、およびキー生成といったセキュリティ機能に対してハードウェアベースの加速を使うことができる。このような特性は、ＩＰＳｅｃおよびＳＳＬのようなソフトウェア送達高性能セキュリティアプリケーションを手助けできる。
【００２７】
ＣＰＵのためのアーキテクチャ理念は命令レベルパラレリズム（ＩＬＰ）よりもむしろスレッドレベルパラレリズム（ＴＬＰ）を最適化することであり、ＴＬＰアーキテクチャから得られる仕事量の恩恵をネットワーク化しそれを小規模に維持することなどがある。
【００２８】
アーキテクチャは単一のチップ上で多くのＣＰＵを具体化することを見込んでおり、これによりスケーラビリティをサポートする。一般に、スーパスケーラ設計はメモリ束縛の問題において最小の性能利得を持っている。アグレッシブ分岐予測はこのタイプのプロセッサアプリケーションにとって典型的には不必要であり、無駄でさえあり得る。
【００２９】
例示的な実施態様は狭いパイプラインを採用する、なぜならこれらは典型的には周波数スケーラビリティがよりよいからである。その結果、メモリ待ち時間は他のタイプのプロセッサと比べるとさほど問題とはならず、事実、どのようなメモリ待ち時間も以下に説明するマルチスレッド化によって効果的に隠すことができる。
【００３０】
本発明の実施態様は非ブロッキング負荷、ＣＰＵインターフェースにおけるメモリ再順序付け、およびセマフォーおよびメモリバリアついての特別な命令によってメモリサブシステムを最適化できる。
【００３１】
本発明の１つの側面では、プロセッサは負荷／保存に追加されたセマンティクスを獲得し解放できる。本発明の実施態様の他の側面では、プロセッサはタイマーサポートのために特別な原子間増分を採用できる。
【００３２】
上述のように、マルチスレッド化ＣＰＵは従来の技術と比較して恩恵をもたらす。本発明の例示的な実施態様はクロックごとにスレッドを切り替えられイシューに利用できる４つのスレッドを持つ細粒度マルチスレッディングを採用する。
【００３３】
マルチスレッディング側面は以下の利点を規定している。すなわち、長時間の待ち時間動作によって起こる空のサイクルの利用；領域対性能のトレードオフの最適化；メモリ束縛アプリケーションにとって理想的；メモリ帯域幅の最適な利用を可能とする；メモリサブシステム；ＭＯＳＩ（変形、自身の、共有の、無効な）プロトコルを使ったキャッシュコヒーレンス；ブロードキャストスヌープアプローチに対して縮小したスヌープ帯域幅および大きくなったスケーラビリティを含むフルマップキャッシュディレクトリ；大規模オンチップ共有デュアルバンク化２ＭＢ Ｌ２キャッシュ；エラーチェックおよび訂正（ＥＣＣ）保護キャッシュおよびメモリ；２ ６４ビット４００／８００ＤＤＲ２チャネル（例えば、１２．８ギガバイト／秒ピーク帯域幅）セキュリティパイプライン；オンチップ標準セキュリティ機能のサポート（例えば、ＡＥＳ、ＤＥＳ／３ＤＥＳ、ＳＨＡ−１、ＭＤ５およびＲＳＡ）；機能の連鎖化（例えば、暗号化→符号）を可能にしてメモリアクセスを縮小できること；ＲＳＡ以外でセキュリティパイプラインごとに４ギガバイトの帯域幅；オンチップスイッチ相互接続；チップ内通信用のメッセージ手渡しメカニズム；共有バスアプローチにわたってより大きなスケーラビリティを提供するためのスーパーブロック間のポイント対ポイント接続；データメッセージのための１６バイト全二重リンク（例えば、１ＧＨｚのリンクごとに３２ＧＢ／秒の帯域幅）；およびクレジットベースのフロー制御メカニズムである。
【００３４】
複数のプロセッサコアとともに使用されるマルチスレッディング技術の恩恵のいくつかとして、メモリ待ち時間許容および障害許容が挙げられる。
【００３５】
図２Ｂは、本発明の他の実施態様による例示的な最新型プロセッサを描いている。この実施態様は、このアーキテクチャを改変して他の構成部材、例えばビデオプロセッサ２１５を収容できることを示すために提供されるものである。このような場合、ビデオプロセッサはプロセッサコア、通信ネットワーク（例えば、ＤＳＩおよびメッセージングネットワーク）、および他の構成部材と通信できる。
【００３６】
Ｂ．プロセッサコアおよびマルチスレッディング
図２Ａの例示的な最新型プロセッサ２００は、複数のマルチスレッド化プロセッサコア２１０ａ−ｈを備えている。例示的なコアはそれぞれ関連するデータキャッシュ２１２ａ−ｈおよび命令キャッシュ２１４ａ−ｈを備えている。データスイッチ相互接続（ＤＳＩ）２１６をプロセッサコア２１０ａ−ｈのそれぞれに結合してプロセッサコア間およびＬ２キャッシュ２０８とメインメモリアクセス用のメモリブリッジ２０６、２０８の間でデータを手渡すように構成してよい。加えて、メッセージングネットワーク２２２をプロセッサコア２１０ａ−ｈのそれぞれおよび複数の通信ポート２４０ａ−ｆに結合してよい。図２Ａには８つのコアが描かれているが、本発明ではより少ないまたはより多い数のコアを使うことができる。同様に、本発明の側面では、コアは異なるソフトウェアプログラムおよびルーチンを実行でき、異なる動作システムを駆動さえできる。単一の統合化プラットフォーム内の異なるコアで異なるソフトウェアプログラムおよび動作システムを駆動する能力は、従来からのソフトウェアをより旧式の動作システム下で１つ以上のコアで駆動させるよう望まれる場合、およびより新しいソフトウェアを異なる単一の動作システムまたは複数の動作システム下で１つ以上の他のコアで駆動させるよう望まれる場合、特に便利である。同様に、例示的なプロセッサは複数の別々の機能を統合されたプラットフォーム内に組み込むことができるようにするため、コアで複数の異なるソフトウェアおよび動作システムを駆動できるということは、組み込まれている別々の機能に関連する本質的に異なるソフトウェアを利用し続けることができることを意味する。
【００３７】
例示的なプロセッサはマルチスレッド化動作が可能な複数のＣＰＵコア２１０ａ−ｈを備えている。例示的な実施態様では、８つの４方向マルチスレッド化ＭＩＰＳ６４−互換性ＣＰＵがありこれらはしばしばプロセッサコアと呼ばれる。本発明の実施態様は３２ハードウェアコンテキストを備えることができ、ＣＰＵコアは約１．５ＧＨｚ以上で動作し得る。本発明の１つの側面は、複数のＣＰＵコアの冗長性および障害許容性質である。従って、例えば、もしコアのうちの１つが故障すると、他のコアが動作を続けシステムは全体の性能がわずかに衰えるに過ぎない。１つの実施態様では、９番目のプロセッサコアをアーキテクチャに追加することで高い度合いの確実性で８つのコアが確実に機能するようにできる。
【００３８】
マルチスレッド化コアアプローチによりソフトウェアは多くのパケット処理アプリケーションに固有のパラレリズムをより効果的に使えるようになる。従来のプロセッサのほとんどは単一イシュー単一スレッド化アーキテクチャを使うが、これは典型的なネットワーキングアプリケーションにおいて性能が制約されている。本発明の側面では、複数のスレッドが異なるソフトウェアプログラムおよびルーチンを実行でき、異なる動作システムを駆動さえできる。異なるソフトウェアプログラムおよび動作システムを単一の統合されたプロットフォーム内の異なるスレッドで駆動させるこのような能力は、コアに関して上述したものと類似であるが、従来からのソフトウェアをより旧式の動作システム下で１つ以上のスレッドで駆動させるよう望まれる場合、およびより新しいソフトウェアを異なる単一の動作システムまたは複数の動作システム下で１つ以上の他のスレッドで駆動させるよう望まれる場合、特に便利である。同様に、例示的なプロセッサは統合化したプラットフォーム内に複数の別々の機能を組み込めるようにするため、スレッドで複数の異なるソフトウェアおよび動作システムを駆動させる能力は、組み込まれている別々の機能に関連する本質的に異なるソフトウェアを利用し続けることができることを意味する。以下に、単一のマルチスレッド化アプリケーションで性能を改善するために本発明によって使用されるいくつかの技術を説明する。
【００３９】
ここで図３Ａを参照すると、従来の単一スレッド単一イシュー処理が示されており、一般的な参照符号３００Ａで表示されている。サイクル番号はブロックの先頭から示されている。ブロック内の「Ａ」は最初のパケットを表すことができ、ブロック内の「Ｂ」は次のパケットを表わすことができる。ブロック内のサブ番号はパケット命令および／またはセグメントを表すことができる。キャッシュミス後の無駄使いされたサイクル５−１０は、図示されるように、実行準備の整った命令が他にないことから生じる。システムは本質的に機能停止して固有のメモリ待ち時間を対処しなければならず、そしてこれは望ましくない。
【００４０】
多くのプロセッサの場合、サイクルごとにより多くの命令を実行しこれにより命令レベルパラレリズム（ＩＬＰ）を規定することによって性能が改善される。このアプローチでは、より機能的なユニットがアーキテクチャに追加されてサイクルごとに複数の命令が実行されるようにする。このアプローチはまた、単一スレッド化複数イシュープロセッサ設計としても知られている。単一イシュー設計に対してはいくつかの改善がなされているが、性能は典型的には、一般にパケット処理アプリケーションの高い待ち時間性質により苦しみ続けている。特に、長い待ち時間メモリ参照により、通常同じような非効率を招き全体的な容量損失が大きくなる。
【００４１】
他のアプローチとしては、マルチスレッド化単一イシューアーキテクチャを使うことができる。この方法は、ネットワーキングアプリケーションに共通して見られるパケットレベルパラレリズムを利用し、そしてより十分に活用するものである。手短に言えば、メモリ待ち時間を適切に設計されたマルチスレッド化プロセッサによって効果的に隠すことができる。従って、このようなスレッド化設計では、メモリデータが返却されるのを待つ最中に１つのスレッドが活動停止となった場合、他のスレッドが命令を処理し続けることができる。これにより、他の簡素なマルチイシュープロセッサがこうむっている無駄遣いされたサイクルを最小とすることによってプロセッサの利用を最大とすることができる。
【００４２】
ここで図３Ｂを参照すると、従来の簡素なマルチスレッド化スケジューリングが示されており、一般的な参照符号３００Ｂで表されている。命令スケジューラ（ＩＳ）３０２ＢはＩＳ ３０２Ｂの左側の囲いに示されている４つのスレッド、Ａ、Ｂ、Ｃ、Ｄを受け取ることができる。それぞれのサイクルは図示されるように「ラウンドロビン」様式でスレッドのそれぞれから単純に異なるパケット命令を選択できる。このアプローチは一般に、イシューに利用できる命令をどのスレッドも持っていれば良好に機能する。しかしながら、このような「普通の」命令イシューパターンは典型的には実際のネットワーキングアプリケーションでは持続できない。命令キャッシュミス、データキャッシュミス、データ使用インターロック、およびハードウェア資源が利用できないといった共通の要因によりパイプラインが機能停止する可能性がある。
【００４３】
ここで図３Ｃを参照すると、スレッドが機能停止している従来の簡素なマルチスレッドスケジューリングが示されており一般的な参照符号３００Ｃで表されている。命令スケジューラ（ＩＳ）３０２Ｃは、Ａ、Ｂ、Ｃに加えてからの「Ｄ」スレッドの４つのスレッドを受け取ることができる。図示されるように、従来のラウンドロビンスケジューリングでは無駄使いされたサイクル４、８、１２が発生し、これらはＤスレッドからの命令がもしあれば失敗する位置である。この例では、図示されている期間中のパイプライン効率損失は２５％である。この方法に対してこのような効率損失を克服するように設計された改善が「イーガー」ラウンドロビンスケジューリングスキームである。
【００４４】
ここで図３Ｄを参照すると、本発明の実施態様によるイーガーラウンドロビンスケジューリングが示されており、一般的な参照符号３００Ｄで示されている。図示されているスレッドおよび利用可能な命令は図３Ｃと同じである。しかしながら、図３Ｄでは、スレッドはイーガーラウンドロビンスケジューラ（ＥＲＲＳ）３０２Ｄによって受け取ることができる。イーガーラウンドロビンスキームは、命令が処理に利用できる限り、それぞれのスレッドから命令を連続的にイシューすることによってパイプラインを完全な状態で維持できる。１つのスレッドが「休眠」しており命令をイシューしない場合は、スケジューラは例えば残りの３つのスレッドから３クロックサイクルごとに１つの速度で命令をイシューできる。同様に、２つのスレッドが活動停止している場合は、スケジューラは２つの活動しているスレッドから他のクロックサイクルごとに１つの速度で命令をイシューできる。このアプローチの鍵となる利点は、４方向マルチスレッディングでは完全には利用できない一般的なアプリケーションを全速で駆動できる能力である。他の適切なアプローチとしては、マルチスレッド化固定サイクルスケジューリングが挙げられる。
【００４５】
ここで図３Ｅを参照すると、例示的なマルチスレッド化固定サイクルスケジューリングが示されており、一般的な参照符号３００Ｅで表されている。命令スケジューラ（ＩＳ）３０２Ｅは、図示されているようにＡ、Ｂ、Ｃ、Ｄの４つの活動中のスレッドから命令を受け取ることができる。このプログラマブルな固定サイクルスケジューリングでは、所定のスレッドについて他のスレッドに切り替える前に固定の数のサイクルを設けることができる。図示されている例では、スレッドＢからなんらかの命令がイシューされる前にスレッドＡが、システムで可能な最大数であり得る２５６個の命令をイシューしている。いったんスレッドＢが開始されると、スレッドＢはスレッドＣ等へパイプラインを手渡す前に２００個の命令をイシューする。
【００４６】
ここで図３Ｆを参照すると、イーガーラウンドロビンスケジューリングを備えた例示的なマルチスレッド化固定サイクルが示されており、一般的な参照符号３００Ｆで表されている。命令スケジューラ（ＩＳ）３０２Ｆは図示されるようにＡ、Ｂ、Ｃ、Ｄの４つの活動中のスレッドから命令を受け取ることができる。このアプローチは、機能停止状態が生じた場合にパイプライン効率を最大とするために使用できる。例えば、もしスレッドＡが２５６個の命令をイシューする前に機能停止した場合（例えばキャッシュミス）、他のスレッドをラウンドロビン方式に使用することで、無駄使いとなる可能性のあるサイクルを「充填」できる。図３Ｆに示す例では、スレッドＡの命令にアクセス最中にサイクル７の後に機能停止状態が発生し、この時点でスケジューラはサイクル８のためにスレッドＢに切り替わることができる。同様に、スレッドＢの命令にアクセス中にサイクル１３の後に他の機能停止状態が生じた場合、スケジューラはサイクル１４のためにスレッドＣに切り替わることができる。この例では、スレッドＣの命令のアクセス中に機能停止は発生していないため、スレッドに対する制限はプログラムされているものの（例えば２００）スレッドＣのためのスケジューリングは続くことができるため、最後のＣスレッドの命令をサイクル２１４でパイプラインに配置できる。
【００４７】
ここで図３Ｇを参照すると、本発明の１つの実施態様による、関連するインターフェースユニットを備えたコアが示されており、一般的な参照符号３００Ｇで表されている。コア３０２Ｇは命令取出しユニット（ＩＦＵ）３０４Ｇ、命令キャッシュユニット（ＩＣＵ）３０６Ｇ、減結合バッファ３０８Ｇ、メモリ管理ユニット（ＭＭＵ）３１０Ｇ、命令実行ユニット（ＩＥＵ）３１２Ｇ、および負荷／保存ユニット（ＬＳＵ）３１４を備えている。ＦＵ３０４ＧはＩＣＵ３０６Ｇとインターフェースでき、ＩＥＵ３１２ＧはＬＳＵ３１４とインターフェースできる。ＩＣＵ３０６Ｇはまたスイッチブロック（ＳＷＢ）／レベル２（Ｌ２）キャッシュブロック３１６Ｇともインターフェースできる。レベル１（Ｌ１）データキャッシュであり得るＬＳＵ３１４Ｇはまた、ＳＷＢ／Ｌ２ ３１６Ｇともインターフェースできる。ＩＥＵ３１２Ｇはメッセージ（ＭＳＧ）ブロック３１８Ｇとインターフェースでき、ＳＷＢ３２０Ｇともインターフェースできる。さらに、実施例に従って使われるレジスタ３２２ＧはスレッドＩＤ（ＴＩＤ）、プログラムカウンタ（ＰＣ）、およびデータフィールドを備えることができる。
【００４８】
本発明の実施態様によると、それぞれのＭＩＰＳアーキテクチャコアは単一の物理的パイプラインを持ち得るが、マルチスレッディング機能（すなわち、４つの「仮想」コア）をサポートするように構成できる。ネットワークアプリケーションでは、通常の計算型の命令体系とは違い、スレッドはメモリアクセスまたは他の長時間の待ち時間動作を待たれやすい。従って、本願で説明するようなスケジューリングアプローチを使ってシステムの全体の効率を改善することができる。
【００４９】
ここで図３Ｈを参照すると、例示的な１０個のステージ（すなわちサイクル）プロセッサパイプラインが示されており、一般的な参照符号３００Ｈで表されている。一般的な動作では、それぞれの命令はパイプラインを進み１０個のサイクルまたはステージを取ることができる。しかしながら、なんらかの所定の時点で、それぞれのステージに存在する１０までの異なる命令もあり得る。従って、この例のパイプラインのスループットはそれぞれのサイクルごとに完了する１つの命令とできる。
【００５０】
図３Ｇおよび３Ｈを一緒に見ると、例えば、サイクル１−４がＩＦＵ３０４Ｇの動作を表し得る。図３Ｈでは、ステージまたはサイクル１（ＩＰＧステージ）は異なるスレッドのいずれかからの命令のスケジューリングを含むことができる（スレッドスケジューリング３０２Ｈ）。このようなスレッドスケジューリングは、例えばラウンドロビン、重み付けラウンドロビン（ＷＲＲ）、またはイーガーラウンドロビンを含むことができる。さらに、命令ポインタ（ＩＰ）がＩＰＧステージで生成され得る。ＩＣＵ３０６Ｇからの命令取出しはステージ２（ＦＥＴ）および３（ＦＥ２）で発生できステージ２の命令取出しスタート３０４Ｈで開始できる。ステージ３では、ブランチ予測３０６Ｈおよび／またはリターンアドレススタック（ＲＡＳ）（ジャンプレジスタ）３１０Ｈを開始できステージ４（ＤＥＣ）で完了され得る。ステージ４ではまた、取り出された命令を返却できる（命令リターン３０８Ｈ）。次に、命令ならびに他の関連する情報をステージ５に手渡すことができ減結合バッファ３０８Ｇにも入れることができる。
【００５１】
図３Ｈの実施例のパイプライン動作のステージ５−１０はＩＥＵ３１２Ｇの動作を表すことができる。ステージ５（ＲＥＧ）では、命令が復号化され得どのような必要なレジスタルックアップも完了される（レジスタルックアップ３１４Ｈ）。ステージ５ではまた、機能停止が必要かどうかをハザード検出論理（ＬＤ−使用ハザード３１６Ｈ）が判断できる。もし機能停止が必要であれば、ハザード検出論理が減結合バッファ３０８Ｇに信号を送信して命令が再生される（例えば、減結合／再生３１２Ｈ）。しかしながら、もしこのような再生が信号で伝えられなければ、命令は代わりに減結合バッファ３０８Ｇから取り出され得る。さらに、ハザード／従属が長時間の待ち時間動作（例えば、データキャッシュミス）によるものである場合のようないくつかの状況では、スレッドは再生されず代わりに休眠状態とされる場合がある。ステージ６（ＥＸＥ）では、命令は「実行」され得、これは例えばＡＬＵ／シフトおよび／または他の動作（例えば、ＡＬＵ／シフト／ＯＰ３１８Ｈ）を含み得る。ステージ７（ＭＥＭ）では、データメモリ動作を開始でき分岐の成果を分析できる（分岐分析３２０Ｈ）。さらに、データメモリルックアップをステージ７、８（ＲＴＮ）、および９（ＲＴ２）にまたがるように拡張し得、負荷データをステージ９（ＲＴ２）によって返却できる（負荷返却３２２Ｈ）。ステージ１０（ＷＲＢ）では、命令をコミットまたはリタイアでき、すべての関連するレジスタを最終的に特定の命令のために更新することができる。
【００５２】
一般に、アーキテクチャはパイプラインで機能停止がないように設計されている。この方法は実行を簡単にすると同時に動作の周波数を大きくするための両方の目的で採用されていた。しかしながら、パイプラインを機能停止または停止する必要がある状況がいくつかある。このような状況では、ＩＦＵ３０４Ｇの機能的部分とみなすことができる減結合バッファ３０８Ｇは、パイプライン全体をフラッシュしてそのスレッドをはじめからスタートさせて機能停止を実行する代わりに再スタートまたは停止時点からの「返答」を見込むことができる。例えば、信号をＩＦＵ３０４Ｇによって減結合バッファ３０８Ｇに提供することで起動停止が必要であることを表示できる。１つの実施態様では、減結合バッファ３０８Ｇは命令のための待ち行列として働き、これによりＩＦＵ３０４Ｇから得られたそれぞれの命令が減結合バッファ３０８Ｇにも行くようになる。このような待ち行列では、上述のように命令は特定のスレッドスケジューリングに基づいて故障状態でスケジュールできる。万が一、機能停止が要求されている減結合バッファ３０８Ｇへと信号が送信される場合は、「停止」時点後のこれらの命令は再スレッド化できる。他方、もし機能停止が要求されていれば、単に命令を減結合バッファから取り出してパイプラインを続けることができる。従って、機能停止なしに、減結合バッファ３０８Ｇは先入れ先出し（ＦＩＦＯ）バッファと本質的に同じように挙動できる。しかしながら、もしいくつかのスレッドのうちの１つが機能停止を要求している場合は、残りのスレッドがバッファを進むことができこれらはホールドアップされなくてもよい。
【００５３】
本発明の実施態様の他の側面として、変換牽引バッファ（ＴＬＢ）を、図３ＧのＭＭＵ３１０Ｇのようなメモリ管理ユニット（ＭＭＵ）の一部として管理できる。これは別々の、同様に共通の、ＴＬＢ分配アクセス複数スレッドを備えることができる。１２８エントリＴＬＢは６４エントリジョイントメインＴＬＢおよび２つの３２エントリマイクロＴＬＢを備えることができ、１つづつがそれぞれ命令およびデータ側用である。関連するマイクロＴＬＢにアクセスすることによって変換が満たされない場合は、メインＴＬＢに要求を送ってよい。メインＴＬＢも望ましいエントリを含んでいなければ割り込みまたは発生する場合がある。
【００５４】
ＭＩＰＳアーキテクチャに対する準拠を維持するために、メインＴＬＢは対にされているエントリ（例えば、異なる物理的ページにマップ化された一対の連続的な仮想ページ）、可変ページサイズ（例えば、４Ｋから２５６Ｍ）、およびソフトウェア管理をＴＬＢ読み取り／書き込み命令を介してサポートできる。複数のスレッドをサポートするには、マイクロＴＬＢおよびメインＴＬＢのエントリを、それらがインストールされているスレッドのスレッドＩＤ（ＴＩＫ）でタグ付けする。さらに、メインＴＬＢは少なくとも２つのモードで作動させることができる。「パーティション」モードでは、それぞれのアクティブなスレッドに排他的なサブセットまたはメインＴＬＢの一部を割り当ててエントリをインストールでき、変換中は、それぞれのスレッドは自身に属しているエントリだけを観察する。「グローバル」モードでは、いずれのスレッドにもメインＴＬＢのどの部分あるエントリも割り当ててすべてのスレッドからすべてのエントリが見えるようにできる。メインＴＬＢ書き込み中に「デマップ」メカニズムを使うことで、確実に重複した変換が異なるスレッドによって絶対に引き起こされることがないようにできる。
【００５５】
一例として、それぞれのマイクロＴＬＢにあるエントリは、最近使われていない（ＮＲＵ）アルゴリズムを使って割り当てることができる。モードにかかわらず、スレッドはマイクロＴＬＢのいずれの部分にもエントリを割り当ててよい。しかしながら、マイクロＴＬＢの変換はモードによって影響を受ける。グローバルモードでは、すべてのマイクロＴＬＢエントリはすべてのスレッドから見えるが、パーティションモードでは、それぞれのスレッドは自分自身のエントリしか見えない。さらに、メインＴＬＢはサイクルごとに最大１つの変換をサポートできるため、アービトレーションメカニズムを使って、すべてのスレッドからのマイクロＴＬＢ「ミス」要求が絶対に公平に取り扱われるようにできる。
【００５６】
標準的なＭＩＰＳアーキテクチャでは、アドレススペースの非マップ領域は物理的アドレスは仮想アドレスに等しいという規則に従う。しかしながら、本発明の実施態様によると、この制約は解除され、非マップ領域は「仮想ＭＩＰＳ」モードで作動しつつマイクロＴＬＢ／メインＴＬＢヒエラルキーを介して仮想−物理的マッピングを受けることができる。このアプローチによりユーザーは異なるスレッドの非マップ領域を互いに分離できるようになる。しかしながらこの方法の副産物として、非マップアドレスを自身の仮想ページ数（ＶＰＮ２）フィールドに含んでいるメインＴＬＢエントリは無効であるという標準的なＭＩＰＳ規則は違反される。本発明の１つの実施態様では、この能力はユーザーへと戻すことができ、これによりメインＴＬＢのそれぞれのエントリは仮想ＭＩＰＳモードでユーザーにだけ見える特別な「マスター有効」ビットを備えることができる。例えば、無効なエントリはマスター有効ビット値「０」によって表すことができ、有効なエントリはマスター有効ビット値「１」で表すことができる。
【００５７】
本発明の他の側面として、システムは順序内パイプラインで故障負荷／保存スケジューリングをサポートできる。実行の一例として、ユーザープログラマブルなリラックス化メモリ順序付けモデルがあり全体の性能を最大化する。１つの実施形態では、順序付けはユーザプログラミングにより、強く順序付けされたモデルから弱く順序付けされたモデルに進むように変更することができる。システムは４つのタイプをサポートする、すなわち（ｉ）負荷−負荷再順序付け、（ｉｉ）負荷−保存再順序付け、（ｉｉｉ）保存−保存再順序付け、および（ｉｖ）保存−負荷再順序付けである。順序付けのそれぞれのタイプはレジスタのビットベクトルによって別々にリラックス化できる。もしそれぞれのタイプがリラックス化状態に設定されていれば、弱く順序付けされたモデルを達成できる。
【００５８】
ここで図３Ｉを参照すると、本発明の１つの実施態様によるプロセッサ内のコア割り込みフロー動作が示されており、一般的な参照符号３００Ｉで表されている。プログラマブルな割り込みコントローラ（ＰＩＣ）、は以下に図３Ｊを参照してより詳細に説明するように、割り込みカウンタおよびＭＳＧブロックを備える割り込みを累算３０２Ｉに提供できる。従って、動作３００Ｉはシステム全体のプロセッサまたはコアのいずれの内部でも生じることができる。機能的ブロックスケジュールスレッド３０４Ｉはブロック３０２Ｉから制御インターフェースを受け取ることができる。ＭＩＰＳアーキテクチャへの拡張は、ＥＩＲＲ３０８Ｉへの原因３０６ＩならびにＥＩＭＲ３１２Ｉへのステータス３１０Ｉを備えるシャドウマッピングによって実現できる。ＭＩＰＳアーキテクチャは一般に、指定されたステータスおよび原因レジスタのそれぞれについて、ソフトウェア割り込みについては２ビット、ハードウェアについては６ビットを提供するにすぎない。本発明の実施態様によると、このＭＩＰＳ命令アーキテクチャ互換性は拡張を行いつつ保持できる。
【００５９】
図３Ｉにより詳細に示すように、割り込み保留のためのＥＩＲＲ３０８Ｉへの原因３０６Ｉのシャドウマッピングは、ＥＩＲＲ３０８Ｉの０−７ビットへの８−１５ビットの原因３０６Ｉレジスタマッピングを備えることができる。また、ソフトウェア割り込みはＰＩＣを進むのとは対照的にコア内にとどまることができ、原因３０６Ｉのビット８および／または９に書き込むことで実行できる。原因３０６Ｉの残りの６ビットはハードウェア割り込みに使うことができる。同様に、マスク用のＥＩＭＲ３１２Ｉへのステータス３１０Ｉのためのシャドウマッピングは、ＥＩＭＲ３１２Ｉのビット０−７へのステータス３１０Ｉレジスタマッピングのビット８−１５を備えることができる。さらに、ソフトウェア割り込みはステータス３１０Ｉのビット８および／または９への書き込みによって実行できると同時に残りの６ビットはハードウェア割り込みに使うことができる。このやり方で、本発明の実施態様によるレジスタ拡張は割り込みをハンドリングする際により大きな柔軟性を提供することができる。１つの実施態様では、割り込みはＩＥＲＲ３０８Ｉの非シャドウ化ビット８−６３および／またはＥＩＭＲ３１２Ｉのビット８−６３を介しても伝達できる。
【００６０】
ここで図３Ｊを参照すると、本発明の１つの実施態様によるＰＩＣ動作が示されており、一般的な参照符号３００Ｊで表されている。例えば、フロー３００Ｊは図２Ａの囲い２２６の実装に備えることができる。図３Ｊでは、同期３０２Ｊが割り込み指示を受け取ることができ、制御入力を保留３０４Ｊ制御ブロックに提供できる。保留３０４Ｊは割り込みゲートウェイとして効果的に作用するものであるが、システムタイマおよびウォッチドッグタイマ指示を受け取ることもできる。スケジュール割り込み３０６Ｊは保留３０４Ｊから入力を受け取ることができる。割り込み宛て先変更テーブル（ＩＲＴ）３０８Ｊはスケジュール割り込み３０６Ｊから入力を受け取ることができる。
【００６１】
図示されるように、ＩＲＴ３０８Ｊの割り込みおよび／またはエントリはそれぞれ、割り込みのための関連する属性（例えば、属性３１４Ｊ）を備えることができる。属性３１４Ｊは例えば、ＣＰＵマスク３１６−１Ｊ、割り込みベクトル３１６−２Ｊ、ならびにフィールド３１６−３Ｊおよび３１６−４Ｊを備えることができる。割り込みベクトル３１６−２Ｊは、割り込みの優先を指定する６ビットフィールドであり得る。１つの実施態様では、上で図３Ｉを参照して説明したように、ＥＩＲＲ３０８Ｉへのマッピングを介してより少ない数の割り込みベクトル３１６−２Ｊで関連する割り込みについてより高い優先を表すことができる。図３Ｊでは、ＣＰＵ＆スレッド３１０Ｊにわたるスケジュールはブロック３０８Ｊから属性３１４Ｊからの情報のような入力を受け取ることができる。特に、ＣＰＵマスク３１６−１Ｊを使ってＣＰＵまたはコアのいずれに割り込みを送達すべきかを指示できる。送達３１２Ｊブロックはブロック３１０Ｊから入力を受け取ることができる。
【００６２】
ＰＩＣに加えて、例えば３２個のスレッドはそれぞれが６４ビット割り込みベクトルを含み得る。ＰＩＣはエージェントから割り込みまたは要求を受け取ってそれらを適切なスレッドに送達し得る。１つの実行例として、この制御はソフトウェアプログラマブルであり得る。従って、ソフトウェア制御は適切なＰＩＣ制御レジスタをプログラムすることによりすべての外部タイプの割り込みを１つ以上のスレッドに宛て先変更するよう決定し得る。同様に、ＰＩＣはＰＣＩ−インターフェース（例えば、図２ＡのＰＩＣ−Ｘ２３４）から割り込み事象または指示を受け取り、そしてこれをプロセッサコアの特定のスレッドへと宛て先変更し得る。さらに、割り込み宛て先変更テーブル（例えば図３ＪのＩＲＴ３０８Ｊ）はＰＩＣから受け取った事象の識別（例えば割り込み指示）ならびにその指示に関連する情報を１つ以上の「エージェント」に記載し得る。事象は、指定の受け取り者に事象を送達するのに使われ得るベクトル数を規定するためにソフトウェアによって設定できるコアマスクを使うことによって特定のコアへと宛て先変更できる。このアプローチの利点は、このやり方によりソフトウェアがポーリングなしに割り込み元を識別できることである。
【００６３】
複数の受け取り者が所定の事象または割り込みについてプログラムされている場合、グローバル「ラウンドロビン」体系または割り込みごとベースのローカルラウンドロビン体系を使うようにＰＩＣスケジューラをプログラムして事象を送達できる。例えば、もしスレッド５、１４、および２７が外部割込みを受け取るようにプログラムされている場合は、ＰＩＣスケジューラは最初の外部割り込みをスレッド５に送達し、次の割り込みをスレッド１４に送達し、次の割り込みをスレッド２７に送達しそして次の割り込みについてはスレッド５に戻るなどとし得る。
【００６４】
加えて、ＰＩＣはまたいずれのスレッドも他のいずれのスレッドにも割り込めるようにし得る（すなわち、スレッド間割り込み）。このことは保存（すなわち書き込み動作）をＰＩＣアドレススペースに対して実行することによりサポートできる。このような書き込み動作のために使える値は割り込みベクトルおよびスレッド間割り込みのためにＰＩＣによって使用される目標スレッドを規定できる。そしてソフトウェア制御は標準的な規定を使ってスレッド間割り込みを識別できる。一例として、ベクトル範囲をこの目的で予約してよい。
【００６５】
図３Ｇおよび３Ｈを参照して上で説明したように、それぞれのコアはパイプライン減結合バッファ（例えば、図３Ｇの減結合３０８Ｇ）を備えることができる。本発明の実施態様の１つの側面では、複数のスレッドを備えた順序内パイプラインでの資源利用を最大とできる。従って、減結合バッファは、機能停止を要求していないスレッドが停止せずに流れるようにできる点で「スレッドに気づいて」いる。このやり方で、パイプライン減結合バッファはあらかじめスケジュールされたスレッドを再順序付けできる。上述のように、スレッドスケジューリングはパイプラインの最初でのみ発生できる。当然ながら、所定のスレッド内での命令の再順序付けは通常、減結合バッファによっては実行されず、別々のスレッドはペナルティーを課せられずにできる、なぜならこれらは機能静止されたスレッドがホールドアップされている間も効果的に減結合バッファをバイパスできるようにされているからである。
【００６６】
本発明の１つの実施態様では、コア実装に３サイクルキャッシュを使うことができる。このような３サイクルキャッシュはシステムの費用を削減するために、特別に設計されたキャッシュとは対照的に「オフザシェルフ」セルライブラリキャッシュとできる。その結果、負荷と１つのデータおよび／または命令との間で３つのサイクルのギャップがある場合がある。減結合バッファは効果的に作動してこの３サイクル遅延を利用できる。例えば、もしスレッドがたった１つしかなかった場合、３サイクル遅延が課せられるであろう。しかしながら、４つのスレッドが収容されている場合、他のスレッドによってスロット介入を引き受けることができる。さらに、ブランチの予測もまたサポートすることができる。正確に予測されてはいるが採用されていない分岐に対してのペナルティーはない。正確に予測され採用されている分岐については、１サイクル「バブル」またはペナルティーがある。予測がなくなった場合、５サイクルバブルがあるが、このようなペナルティーは４つのスレッドが作動している場合は大幅に小さくできる、なぜならバブルは他のスレッドによって単純に引き受けられるからである。例えば、５サイクルバブルのかわりに４つのスレッドのそれぞれが１つを引き受けることができこれによりたった１つのバブルペナルティだけが効果的に残る。
【００６７】
図３Ｄ、３Ｅ、および３Ｆを参照して上で説明したように、本発明の実施態様による命令スケジューリング体系はイーガーラウンドロビンスケジューリング（ＥＲＲＳ）、スレッドごとに固定の数のサイクル、およびＥＲＲＳを備えるマルチスレッド化固定サイクルを備えることができる。さらに、矛盾がある状態でスレッドを起動させるための特定のメカニズムはスコアボードメカニズムの使用を備えることができ、これはメモリアクセス、掛け算および／または割り算のような長時間の待ち時間動作を追跡できるものである。
【００６８】
ここで３Ｋを参照すると、複数のスレッド割り当てのための返却アドレススタック（ＲＡＳ）動作が示されており、一般的な参照符号３００Ｋで表されている。この動作は例えば、図３ＧのＩＦＵ３０４Ｇで実行できるもので、図３Ｈの動作３１０Ｈでも表されている。命令のうち、本発明の実施態様でサポートされるのは（ｉ）予測が開始されるか開始されずターゲットが分かっている場合の分岐命令、（ｉｉ）常に開始されターゲットが分かっている場合のジャンプ命令、（ｉｉｉ）常に開始されターゲットがレジスタおよび／または未知の内容を持つスタックから回収される場合のジャンプレジスタである。
【００６９】
図３Ｋの動作例では、ジャンプアンドリンク（ＪＡＬ）命令を発生させて（３０２Ｋ）動作を開始するようにできる。ＪＡＬに応答して、プログラムカウンタ（ＰＣ）を返却アドレススタック（ＲＡＳ）（３０４Ｋ）に配置できる。ＲＡＳの一例がスタック３１２Ｋとして示されており、１つの実施態様では、スタック３１２Ｋはネストされたサブルーチンコールを収容するための先入れ後出し（ＦＩＬＯ）タイプのスタックである。スタック３１２ＫにＰＣを配置するのとほぼ平行に、サブルーチンコールを行うことができる（３０６Ｋ）。その後、サブルーチン命令に関連するさまざまな動作が発生できる（３０８Ｋ）。いったんサブルーチンフローが完了すると、返却アドレスをスタック３１２Ｋ（３１０Ｋ）から回収でき、なんらかの分岐遅延（３１４Ｋ）に引き続きメインプログラムが継続できる（３１６Ｋ）。
【００７０】
複数のスレッド動作の場合、スタック３１２Ｋを区切ることができこれによりエントリが多数のスレッドにわたって動的に構成されるようになる。区切りはアクティブなスレッドの数を収容するように変更できる。従って、たった１つのスレッドだけ使用中の場合は、スタック３１２Ｋのために割り当てられているエントリの全体のセットをそのスレッドのために使うことができる。しかしながら、もし複数のスレッドがアクティブな場合は、スタック３１２Ｋのエントリはスレッドを収容してスタック３１２Ｋの利用可能な空間を効率的に利用するように動的に構成できる。
【００７１】
従来のマルチプロセッサ環境では割り込みは典型的には異なるＣＰＵに与えられ、ラウンドロビンベースで、または割り込みをハンドリングするための特定のＣＰＵを指定することによって処理を行う。しかしながら本発明の実施態様によると、図３Ｊにより詳細に動作が示されている図２ＡのＰＩＣ２２６はバランスを負荷しマルチスレッド化マシンで複数のＣＰＵ／コアおよびスレッドにわたって割り込みを宛て先変更する能力を持ち得る。図３Ｊを参照して上で説明したように、ＩＲＴ３０８Ｊは属性３１４Ｊに示すようにそれぞれの割り込みのための属性を備えることができる。割り込みハンドリング外である特定のＣＰＵおよび／またはスレッドがマスクされるようにすることによって負荷バランス化を簡単にするために、ＣＰＵマスク３１６−１Ｊを使うことができる。１つの実施態様では、ＣＰＵマスクは３２ビットの幅とでき、それぞれが４つのスレッドを持つ８個のコアがどのように組み合わせられてもマスクできるようになっている。一例として、図２Ａのコア−２ ２１０ｃおよびコア−７ ２１０ｈは利用可能性の高いプロセッサとなるように意図されており、従って図３ＪのＣＰＵマスク３１６−１ＪはＩＲＴ３０８Ｊにそれぞれの割り込みのために「１」に設定されている対応するビットセットを持つことでコア−２またはコア−７ではどのような割り込み処理も不可能となっている。
【００７２】
さらに、ＣＰＵ／コアならびにスレッドの両方について、特定の割り込みについてマスクされていないこれらのコアおよび／またはスレッドの間でラウンドロビン体系（例えばポインタによって）を採用できる。このやり方により、最大のプログラマブル柔軟性が割り込み負荷バランス化に見込まれる。従って、図３Ｊの動作３００Ｊは２つのレベルの割り込みスケジューリング、すなわち（ｉ）上述のような３０６Ｊのスケジューリング、および（ｉｉ）ＣＰＵ／コアおよびスレッドマスキングを含む負荷バランス化アプローチを見込んでいる。
【００７３】
本発明の実施態様の他の側面として、スレッド−対−スレッド割り込みが可能とされており、これにより１つのスレッドが他のスレッドに割り込むことができる。このようなスレッド−対−スレッド割り込みは遠隔通信アプリケーションで慣行されているように異なるスレッドの同期化に使える。また、本発明の実施態様によると、このようなスレッド−対−スレッド割り込みはどのスケジューリングも経なくてもよい。
【００７４】
Ｃ．データスイッチおよびＬ２キャッシュ
ここで図２Ａに戻ると、例示的なプロセッサは高性能を促すさらに多数の構成部材を備えてよく、８方向セット連想オンチップレベル−２（Ｌ２）キャッシュ（２ＭＢ）；キャッシュコヒーレントハイパートランスポートインターフェース（７６８Ｇｂｐｓ）；ハードウェア加速サービス品質（ＱＯＳ）および分類；セキュリティハードウェア加速−ＡＥＳ、ＤＥＳ／３ＤＥＳ、ＳＨＡ−１、ＭＤ５、およびＲＳＡ；パケット順序付けサポート；文字列処理サポート；ＴＯＥハードウェア（ＴＣＰオフロードエンジン）；および多数のＩＯ信号が挙げられる。本発明の１つの実施態様の１つの側面では、データスイッチ相互接続２１６をプロセッサコア２１０ａ−ｈのそれぞれに、それぞれのデータキャッシュ２１２ａ−ｈによって接合してよい。また、メッセージングネットワーク２２２をプロセッサコア２１０ａ−ｈのそれぞれにそれぞれの命令キャッシュ２１４ａ−ｈによって接合してよい。さらに、本発明の１つの実施態様の１つの側面では、最新型遠隔通信プロセッサはまた、データスイッチ相互接続に接合されたＬ２キャッシュ２０８も備えることができ、プロセッサコア２１０ａ−ｈにアクセス可能な情報を保存するように構成できる。例示されている実施態様では、Ｌ２キャッシュはプロセッサコアと同じ数のセクション（しばしばバンクと呼ばれる）を備えている。この例を図４Ａを参照しながら説明するが、より多くのまたはより少ない数のＬ２キャッシュセクションを使うことも可能である。
【００７５】
上で説明したように、本発明の実施態様はＭＯＳＩ（変形、自身の、共有の、無効な）プロトコルを使うキャッシュコヒーレンスの維持を含み得る。「自身の」状態を追加すると、汚染されたキャッシュラインをプロセスコア全体にわたって共有させることによって「ＭＳＩ」プロトコルが改善される。特に、本発明の実施例の一例は、８つのプロセッサコアならびに入／出力装置の３２ハードウェアコンテキストまでで駆動中のソフトウェアに対してメモリのフルコヒーレントビューを提示し得る。Ｌ１およびＬ２キャッシュ（例えば、図２Ａの２１２ａ−ｈおよび２０８のそれぞれ）ヒエラルキーにわたってＭＯＳＩプロトコルを使ってよい。さらに、すべての外部参照（例えば、入／出力装置によって開始されたもの）はＬ１およびＬ２キャッシュをスヌープさせることでデータのコヒーレンスおよび一貫性を確実なものとできる。１つの実施態様では、以下により詳細に説明するように、リングベースのアプローチを使ってマルチプロセッシングシステムでキャッシュコヒーレンスを実現してよい。一般には、コヒーレンスを維持するために１つのデータについてたった１つの「ノード」だけが所有者となり得る。
【００７６】
本発明の実施態様の１つの側面によると、Ｌ２キャッシュ（例えば、図２Ａのキャッシュ２０８）は２ＭＢで、ラインサイズが３２Ｂの８方向セット連想統合化（すなわち命令およびデータ）キャッシュであり得る。さらに、サイクルごとに８つまでの同時参照がＬ２によって受け取られることが可能である。Ｌ２アレーはコアクロックの約半分の速度で駆動し得るが、アレーはパイプライン化されて、アレー全体にわたって約２つのコアクロック分の待ち時間でコアクロックごとにすべてのバンクによって要求が受け取られるようになっている。また、Ｌ２キャッシュ設計はＬ１キャッシュを「包含しない」ようにでき全体のメモリ容量が効果的に増加されるようにできる。
【００７７】
Ｌ２キャッシュを実装する場合のＥＣＣ保護については、キャッシュデータおよびキャッシュタグアレーの両方をＳＥＣＤＥＤ（単一エラー訂正二重エラー検出）エラー保護コードによって保護できる。従って、ソフトウェアの介入なしにすべての単一ビットエラーが訂正される。また、訂正不可能なエラーが検出された場合は、キャッシュラインが改変されるときはいつでもこれらをコードエラー例外としてソフトウェアに手渡すことができる。１つの実施態様では、以下により詳細に説明するように、それぞれのＬ２キャッシュは構成部材のリングにあるいずれの他の「エージェント」とも同じように動作し得る。
【００７８】
本発明の実施態様の他の側面によると、データ移動リングにある「ブリッジ」を使ってメモリおよび入／出力トラフィックを最適に宛先変更できる。図２Ａのスーパーメモリ入／出力ブリッジ２０６およびメモリブリッジ２１８は物理的に別々の構造体であり得るが、これらは概念的には同じである。ブリッジは、例えばメインメモリおよび入／出力アクセスのためのメインゲートキーパーである。さらに、１つの実施態様では、入／出力はメモリマップ化できる。
【００７９】
ここで図４Ａを参照すると、本発明の１つの実施態様によるデータスイッチ相互接続（ＤＳＩ）リングアレンジメントが示されており、一般的な参照符号４００Ａで表されている。このようなリングアレンジメントは図２Ａのスーパーメモリ入／出力ブリッジ２０６およびメモリブリッジ２１８と一緒にＤＳＩ２１６を実装したものとできる。図４Ａでは、ブリッジ２０６はメモリ＆入／出力およびリングの残り部分との間のインターフェースを可能とすることができる。リング素子４０２ａ−ｊはそれぞれ図２Ａのコア２１０ａ−ｈおよびメモリブリッジの１つに対応している。従って、Ｌ２ｈおよびコア２１０ｈにインターフェースしている４０２ｈにわたって、素子４０２ａはＬ２キャッシュＬ２ａおよびコア−０ ２１０ａにインターフェースしており、素子４０２ｂはＬ２ｂおよびコア２１０ｂにインターフェースしているなどである。ブリッジ２０６はリングに素子４０２ｉを備えており、ブリッジ２１８はリングに素子４０２ｊを備えている。
【００８０】
図４Ａに示すように、実施態様の一例では４つのリング、すなわち要求リング（ＲＱ）、データリング（ＤＴ）、スヌープリング（ＳＮＰ）、および応答リング（ＲＳＰ）がリング構造体を作り上げることができる。リング上の通信はパケットベースの通信である。例示的なＲＱリングパケットとしては、宛て先ＩＤ，トランザクションＩＤ，アドレス、要求タイプ（例えばＲＤ、ＲＤ＿ＥＸ、ＷＲ、ＵＰＧ）、有効ビット、キャッシュ可能表示、およびバイト使用可能などが挙げられる。例示的なＤＴリングパケットとしては、例えば宛て先ＩＤ、トランザクションＩＤ、データ、ステータス（例えば、エラー表示）、および有効ビットが挙げられる。例示的なＳＮＰリングパケットとしては、例えば宛て先ＩＤ、有効ビット、ＣＰＵスヌープ応答（例えば、きれいな、共有の、または汚染された表示）、Ｌ２スヌープ応答、ブリッジスヌープ応答、再試行（ＣＰＵ、ブリッジ、およびＬ２のそれぞれについて）、ＡＥＲＲ（例えば不法な要求、要求パリティ）、およびトランザクションＩＤが挙げられる。例示的なＲＳＰリングパケットとしては、ＳＮＰのすべてのフィールドが挙げられるが、ＲＳＰリングの「進行中の（ｉｎ−ｐｒｏｇｒｅｓｓ）」ステータスとは対照的に「最終」ステータスを表示してよい。
【００８１】
ここで図４Ｂを参照すると、本発明の１つの実施態様によるＤＳＩリング構成部材が図示されており、一般的な参照符号４００Ｂで表されている。１つの実施態様では、リング構成部材４０２ｂ−０は４つのリングＲＱ、ＤＴ、ＳＮＰ、またはＲＳＰのうちの１つと対応し得る。同様に、リング構成部材４０２ｂ−１、４０２ｂ−２、および４０２ｂ−３はそれぞれ４つのリングのうちの１つと対応し得る。一例として、「ノード」はリング構成部材４０２ｂ−０、４０２ｂ−１、４０２ｂ−２、および４０２ｂ−３の合計によって形成できる。
【００８２】
受信データまたは「リングイン」はフリップフロップ４０４Ｂで受信できる。フリップフロップ４０４Ｂの出力はフリップフロップ４０６Ｂおよび４０８Ｂならびにマルチプレクサ４１６Ｂに接続できる。フリップフロップ４０６Ｂおよび４０８Ｂの出力はローカルデータアプリケーションに使うことができる。フリップフロップ４１０Ｂは関連するＬ２キャッシュからの入力を受信できると同時にフリップフロップ４１２Ｂは関連するＣＰＵからの入力を受信できる。フリップフロップ４１０Ｂおよび４１２Ｂからの出力は「マルチプレクサ４１４Ｂに接続できる。マルチプレクサ４１４Ｂの出力はマルチプレクサ４１６Ｂに接続できマルチプレクサ４１６Ｂの出力は送出データまたは「リングアウト」に接続できる。また、リング構成部材４０２ｂ−０は有効なビット信号を受信できる。
【００８３】
一般に、リングインで受信されたより優先度の高いデータはもしデータが有効であれば（例えば、有効ビット＝「１」）マルチプレクサ４１６Ｂによって選択されることになる。もし有効でなければ、データはマルチプレクサ４１４Ｂを介してＬ２かＣＰＵのいずれかから選択できる。さらに、この例では、もしリングインで受信されたデータがローカルノードを意図していれば、フリップフロップ４０６Ｂおよび／または４０８Ｂはデータを再び受け取る前にリング全体にわたってデータを渡すのではなくデータをローカルコアへと渡すことができる。
【００８４】
ここで図４Ｃを参照すると、本発明の１つの実施態様によるＤＳＩにおけるデータ回収例のフロー図が示されており、一般的な参照符号４００Ｃで表されている。フローはスタート４５２で開始でき、要求を要求リング（ＲＱ）（４５４）に配置できる。リング構造にあるそれぞれのＣＰＵおよびＬ２は要求されたデータ（４５６）があるかどうかをチェックできる。また、要求は、リング（４５８）に取り付けられたそれぞれのメモリブリッジで受け取ることができる。もしＣＰＵまたはＬ２のいずれかが要求されたデータを持っていれば（４６０）、データはデータを持っているノードによってデータリング（ＤＴ）に置くことができる（４６２）。もしＣＰＵまたはＬ２のいずれも要求されたデータを見出さなかった場合（４６０）、データはメモリブリッジ（４６４）のいずれかによって回収できる。データを見出したノードまたはメモリブリッジのいずれかによってスヌープリング（ＳＮＰ）および／または応答リング（ＲＳＰ）に承認を配置することができ（４６６）、そして終了でフローを完了できる（４６８）。１つの実施態様では、メモリブリッジによるＳＮＰおよび／またはＲＳＰリングに対する承認がほのめかされている。
【００８５】
他の実施態様では、メモリブリッジはメモリ要求を開始するのにＬ２キャッシュのいずれにもデータが見出されなかったという表示をまたなくてもよい。代わりに、メモリ要求（例えば、ＤＲＡＭに対する）を投機的にイシューしてよい。このアプローチでは、もしＤＲＡＭからの応答の前にデータが見出されれば、以降の応答は廃棄できる。投機的なＤＲＡＭアクセスは、比較的長時間のメモリ待ち時間の影響を緩和するのに役立つことができる。
【００８６】
Ｄ．メッセージ手渡しネットワーク
図２Ａではまた、本発明の１つの実施態様の１つの側面において、最新型遠隔通信プロセッサは、メッセージングネットワーク２２２および通信ポート２４０ａ−ｆのグループに接合され、メッセージングネットワーク２２２および通信ポート２４０ａ−ｆの間で情報を手渡すように構成されているインターフェーススイッチ相互接続（ＩＳＩ）２２４を備えることができる。
【００８７】
ここで図５Ａを参照すると、本発明の１つの実施態様による高速メッセージングリング構成部材またはステーションが示されており、一般的な参照符号５００Ａで表されている。関連するリング構造は例えば、ＭＩＰＳアーキテクチャの延長としてポイント−対−ポイントメッセージを収容し得る。「リングイン」信号は挿入待ち行列５０２Ａおよび受信待ち行列（ＲＣＶＱ）５０６Ａの両方に接続できる。挿入待ち行列はまた、出力が「リングアウト」とできるマルチプレクサ５０４Ａにも接続できる。挿入待ち行列は常に優先されリングが後退されないようになっている。ＣＰＵコアのための関連するレジスタが点線の囲い５２０Ａおよび５２２Ａに示されている。囲い５２０Ａ内では、バッファＲＣＶバッファ５１０Ａ−０からＲＣＶバッファ５１０Ａ−ＮがＲＣＶＱ５０６Ａとインターフェースできる。マルチプレクサ５０４Ａへの第２の入力は送信待ち行列（ＸＭＴＱ）に接続できる。囲い５２０Ａ内ではまた、バッファＸＭＴバッファ５１２Ａ−０からＸＭＴバッファ５１２Ａ−ＮがＸＭＴＱ５０８Ａとインターフェースできる。ステータス５１４Ａレジスタもまた囲い５２０Ａに見出せる。点線の囲い５２２Ａ内には、メモリマップ化構成レジスタ５１６Ａおよびクレジットベースのフロー制御５１８Ａを見出すことができる。
【００８８】
ここで図５Ｂを参照すると、図５Ａのシステムのためのメッセージデータ構成が示されており、一般的な参照符号５００Ｂで表されている。識別フィールドはスレッド５０２Ｂ、ソース５０４Ｂ、および宛て先５０８Ｂを備え得る。また、メッセージサイズ表示子サイズ５０８Ｂも存在できる。識別フィールドおよびメッセージサイズ表示子はサイドボード５１４Ｂを形成できる。それ自体が送信されるメッセージまたはデータ（例えば、ＭＳＧ５１２Ｂ）は５１０Ｂ−０、５１０Ｂ−１、５１０Ｂ−２、および５１０−３などのいくつかの部分を備えることができる。実施態様によると、メッセージは原子的であり全メッセージは割り込みできないようになっている。
【００８９】
クレジットベースのフロー制御は、例えばメッセージ送信を管理するためのメカニズムを提供できる。１つの実施態様では、ターゲット／レシーバのためのすべての送信器に割り当てられているクレジットの総数はその受信待ち行列（例えば、図５ＡのＲＣＶＱ５０６Ａ）にあるエントリ数の合計を上回ることはできない。例えば、１つの実施態様では２５６がクレジットの総数であり得る、なぜならそれぞれのターゲット／受け取り手のＲＣＶＱのサイズが２５６エントリであり得るからである。一般に、ソフトウェアはクレジットの割り当てを制御し得る。ブートアップ時には、例えば、それぞれの送り手／送信器または参加エージェントはいくつかのデフォルト番号のクレジットを割り当てられ得る。そしてソフトウェアは送信器ベースで自由にクレジットを割り当ててよい。例えば、それぞれの送り手／送信器はソフトウェアによってシステムにある他のターゲット／受け取り手のそれぞれについて設定されているプログラム可能な数のクレジットを持つことができる。しかしながら、システム内のすべてのエージェントが送信クレジットの分配におけるターゲット／受け取り手として参加しなければならないというわけではない。１つの実施態様では、コア−０クレジットがコア−１、コア−２、．．．、コア−７、ＲＧＭＩＩ＿０、ＲＧＭＩＩ＿１、ＸＧＭＩＩ／ＳＰＩ−４．２＿０、ＸＧＭＩＩ／ＳＰＩ−４．２＿１、ＰＯＤ０、ＰＯＤ１、．．．、ＰＯＤ４などのそれぞれ１つづつについてプログラムできる。以下のテーブル１は受け取り手としてのコア−０についてのクレジット分布の例を示している。
【００９０】
テーブル１
┌──────────┬─────────────────────┐
│送信エージェント    │割り当てられているクレジット(合計２５６個)│
├──────────┼─────────────────────┤
│コア−０            │０                                        │
├──────────┼─────────────────────┤
│コア−１            │３２                                      │
├──────────┼─────────────────────┤
│コア−２            │３２                                      │
├──────────┼─────────────────────┤
│コア−３            │３２                                      │
├──────────┼─────────────────────┤
│コア−４            │０                                        │
├──────────┼─────────────────────┤
│コア−５            │３２                                      │
├──────────┼─────────────────────┤
│コア−６            │３２                                      │
├──────────┼─────────────────────┤
│コア−７            │３２                                      │
├──────────┼─────────────────────┤
│ＰＯＤ０            │３２                                      │
├──────────┼─────────────────────┤
│ＲＧＭＩＬ０        │３２                                      │
├──────────┼─────────────────────┤
│ＡＬＬ Ｏｔｈｅｒｓ │０                                        │
└──────────┴─────────────────────┘
【００９１】
この例では、コア−１がコア−０へサイズ２のメッセージを送信する場合（例えば２つの６４ビットデータ素子）、コア−０のコア−１クレジットは２だけ減分される（例えば、３２から３０へ）。コア−０がメッセージを受信する場合、メッセージはコア−０のＲＣＶＱに進むことができる。いったんコア−０のＲＣＶＱからメッセージが取り除かれると、そのメッセージ保存空間は本質的に開放されるまたは利用可能とされ得る。そしてコア−０は送り手に信号を（例えば、コア−１に解放クレジット信号を）送信してさらに利用可能な空間の量（例えば２）を知らせる。もしコア−１がコア−０から送られてくる解放クレジット信号に対応することなくコア−０に対してメッセージを送り続ける場合、最終的にはコア−１についてのクレジット数はゼロとなることができコア−１はコア−０へもはやどのようなメッセージも送ることができない。例えば、コア−０が解放クレジット信号で応答する場合にのみ、コア−１はコア−０へさらなるメッセージを送信できる。
【００９２】
ここで図５Ｃを参照すると、本発明の１つの実施態様によるさまざまなエージェントがどのように高速メッセージングネットワーク（ＦＭＮ）に取り付けられるかの概念図が示されており、一般的な参照符号５００Ｃで表されている。８つのコア（コア−０ ５０２Ｃ−０からコア−７ ５０２Ｃ−７）が関連するデータキャッシュ（Ｄ−キャッシュ５０４Ｃ−０から５０４Ｃ−７）および命令キャッシュ（Ｉ−キャッシュ５０６Ｃ−０から５０６Ｃ−７）がＦＭＮにインターフェースできる。さらに、ネットワーク入／出力インターフェースグループもまたＦＭＮにインターフェースできる。ポートＡに関連して、ＤＭＡ５０８Ｃ−Ａ、パーサ／分類器５１２Ｃ−Ａ、およびＸＧＭＩＩ／ＳＰＩ−４．２ポートＡ５１４Ｃ−Ａがパケット分配エンジン（ＰＤＥ）５１０Ｃ−Ａを介してＦＭＮにインターフェースできる。同様に、ポートＢについては、ＤＭＡ５０８Ｃ−Ｂ、パーサ／分類器５１２Ｃ−Ｂ、およびＸＧＭＩＩ／ＳＰＩ−４．２ポートＢ５１４Ｃ−ＢがＰＤＥ５１０Ｃ−Ｂを介してＦＭＮにインターフェースできる。また、ＤＭＡ５１６Ｃ、パーサ／分類器５２０Ｃ、ＲＧＭＩＩポートＡ ５２２Ｃ−Ａ、ＲＧＭＩＩポートＢ ５２２Ｃ−Ｂ、ＲＧＭＩＩポートＣ ５２２Ｃ−Ｃ、ＲＧＭＩＩポートＤ ５２２Ｃ−ＤはＰＤＥ５１８Ｃを介してＦＭＮにインターフェースできる。また、ＤＭＡ５２６Ｃを備えるセキュリティ加速エンジン５２４ＣおよびＤＭＡエンジン５２８ＣがＦＭＮにインターフェースできる。
【００９３】
本発明の１つの実施態様の１つの側面として、ＦＭＮにあるすべてのエージェント（例えば図５Ｃに示すコア／スレッドまたはネットワーキングインターフェース）はＦＭＮにある他のいずれのエージェントにもメッセージを送信できる。この構造はエージェント同士の間での高速パケット移動も見込むことができるが、ソフトウェアはいずれの他の適切な目的のためにもそのようにメッセージ保有者の構文および意味論を定義することによってメッセージングシステムの使用を変更することができる。いずれの場合でも、ＦＭＮにあるエージェントはそれぞれ、図５Ａを参照して上で説明したように送信待ち行列（例えば５０８Ａ）および受信待ち行列（例えば５０６Ａ）を備えている。従って、特定のエージェント向けのメッセージは関連する受信待ち行列にドロップすることができる。特定のエージェントから生じるすべてのメッセージは関連する送信待ち行列に入れることができ、その後ＦＭＮに押し出されて目的とする受け取り手に送達される。
【００９４】
本発明の実施態様の他の側面では、コア（例えば、コア−０ ５０２Ｃ−０からコア−７ ５０２Ｃ−７または図５Ｃ）のすべてのスレッドは待ち行列資源を共有できる。メッセージ送信を絶対に公平とするために、「ラウンドロビン」体系を実装してメッセージを受け取り送信待ち行列に入れることができる。このことですべてのスレッドが、たとえそれらのうちの１つがより速い速度でメッセージを送信している場合でもメッセージを送れることが保証できる。従って、所定の送信待ち行列はメッセージが送信される時点でいっぱいである可能性がある。このような場合、すべてのスレッドは、送信待ち行列がより多くのメッセージを受け取るだけの空きを持つまで、１つのメッセージをそれぞれコア内で待ち行列に並ばせることができる。図５Ｃに示すように、ネットワーキングインターフェースはＰＤＥを使うことで、入ってくるパケットを指定されたスレッドに分配する。さらに、ネットワーキングインターフェースについて送出されるパケットはパケット順序付けソフトウェア中を引き回すことができる。
【００９５】
ここで図５Ｄを参照すると、従来の処理システムのネットワークトラフィックが示されており、一般的な参照符号５００Ｄで表されている。パケット入力はパケット分配５０２Ｄによって受信でき、パケット処理（５０４Ｄ−０から５０４Ｄ−３）のために送られる。パケットソート／順序付け５０６Ｄはパケット処理からの出力を受け取ることができ、パケット出力を提供できる。このようなパケットレベル平行処理アーキテクチャは本質的にはネットワーキングアプリケーションに適しているが、効果的なアーキテクチャは入ってくるパケット分配および送出されるパケットソーティング／順序付けのために効率的なサポートを提供して平衡パケット処理の利点を最大としなければならない。図５Ｄに示すように、あらゆるパケットは単一の分配（例えば、５０２Ｄ）および単一のソーティング／順序付け（例えば、５０６Ｄ）を通らなければならない。これらの動作は両方ともパケットの流れに対して直列化効果を持っており、システムの性能全体がこれら２つの機能の減速によって判断されるようになっている。
【００９６】
ここで図５Ｅを参照すると、本発明の１つの実施態様によるパケットフローが示されており、一般的な参照符号５００Ｅによって表されている。このアプローチは、システムを通ってパケットが流れることを可能とする大規模な（すなわち、拡張性のある）高性能アーキテクチャを提供する。ネットワーキング入力５０２ＥはＲＧＭＩＩ、ＸＧＭＩＩ、および／またはＳＰＩ−４．２インターフェース構成ポートを備えることができる。パケットが受信された後、これらは例えば、パケット分配エンジン（ＰＤＥ）５０４Ｅを介して高速メッセージングネットワーク（ＦＭＮ）を使ってパケット処理５０６Ｅのためのスレッド、すなわちスレッド０、１、２などからスレッド３１までのうちの１つに分配できる。選択されたスレッドはパケットヘッダまたはペイロードによってプログラムされたように１つ以上の機能を実行でき、そしてパケットをパケット順序付けソフトウェア５０８Ｅに置く。他の実施態様として、例えば図２Ａの囲い２３６に示すようなパケット順序付け装置（ＰＯＤ）を図５Ｅの５０８Ｅの代わりに使ってよい。いずれの実装においても、この機能はパケット順序付けをセットアップしてこれをＦＭＮを介して送出ネットワーク（例えば、ネットワーキング出力５１０Ｅ）へと手渡す。ネットワーキング入力と同じく、送出ポートは例えば構成されたＲＧＭＩＩ、ＸＧＭＩＩ、またはＳＰＩ−４．２インターフェースのいずれであってもよい。
【００９７】
Ｅ．インターフェーススイッチ
本発明の実施態様の１つの側面では、図２Ａに示すようにＦＭＮはそれぞれのＣＰＵ／コアにインターフェースできる。このようなＦＭＮ−対−コアインターフェース化はプッシュ／ポップ命令、メッセージ待ち命令、およびメッセージ到着割り込みを備えることができる。従来のＭＩＰＳアーキテクチャでは、コプロセッサまたは「ＣＯＰ２」空間が割り当てられている。しかしながら本発明の実施態様によると、ＣＯＰ２に指定されている空間はかわりにＦＭＮを介したメッセージング使用のために予約されている。１つの実施態様では、ソフトウェアが実行可能な命令としてはメッセージ送信（ＭｓｇＳｎｄ）、メッセージ負荷（ＭｓｇＬｄ）、ＣＯＰ２へのメッセージ（ＭＴＣ２）、ＣＯＰ２からのメッセージ（ＭＦＣ２）、およびメッセージ待ち（ＭｓｇＷａｉｔ）が挙げられる。ＭｓｇＳｎｄおよびＭｓｇＬｄ命令はターゲット情報ならびにメッセージサイズ表示を備えることができる。ＭＴＣ２およびＭＦＣ２命令は、図５Ａのステータス５１４Ａおよびレジスタ５２２Ａのローカル構成レジスタから／へのデータ転送を備えることができる。ＭｓｇＷａｉｔ命令は、メッセージが利用可能となるまで（すなわち、メッセージ到着への割り込み）本質的に「休眠」状態に入る動作を備えることができる。
【００９８】
本発明の実施態様の他の側面として、高速メッセージング（ＦＭＮ）リング構成部材を「バケット」に組織化することができる。例えば、図５ＡのＲＣＶＱ５０６ＡおよびＸＭＴＱ５０８Ａはそれぞれ、上述したようなスレッド概念と同じやり方で複数のバケットにわたって区切ってよい。
【００９９】
本発明の実施態様の１つの側面では、パケット分配エンジン（ＰＤＥ）はＸＧＭＩＩ／ＳＰＩ−４．２インターフェースおよび４つのＲＧＭＩＩインターフェースのそれぞれを備えて、入ってくるパケットを処理スレッドへと効率的かつ負荷バランス化された状態で分配できるようにする。高いスループットネットワーキングアプリケーションにとってはハードウェアで加速されたパケット分配が重要である。ＰＤＥがなくてもパケット分配は例えばソフトウェアによってハンドリングできる。しかしながら６４Ｂパケットの場合、ＸＧＭＩＩタイプのインターフェースでこの機能を実行するには約２０ｎｓだけしか利用できない。さらに、単一プロデューサ複数消費者の状況により、待ち行列ポインタ管理をハンドリングしなければならないであろう。このようなソフトウェアのみによる解決策が、システム全体の性能に影響することなく必要なパケット送達速度についていくことは単純には不可能である。
【０１００】
本発明の１つの実施態様によると、ＰＤＥは処理スレッドとしてソフトウェアによって指定されているスレッドに迅速にパケットを分配するために、高速メッセージングネットワーク（ＦＭＮ）を利用できる。１つの実施態様では、ＰＤＥは目的とする受け取り手の間でパケットを分配するために重み付けラウンドロビン体系を実装できる。１つの実施態様では、パケットは実際には移動されないが、ネットワーキングインターフェースがそれを受け取るにつれてメモリに書き込まれる。ＰＤＥは「パケット記述子」をメッセージに挿入でき、そしてこれをソフトウェアによって指定された、受け取り手のうちの１つに送信できる。このことはまた、すべてのスレッドがいずれかの所定のインターフェースからのパケット受け取りに参加しなければならないというわけではないことを意味する。
【０１０１】
ここで図６Ａを参照すると、本発明の１つの実施態様による等しく４つのスレッドにわたるＰＤＥ分配パケットが示されており、一般的な参照符号６００Ａで表されている。この例では、ソフトウェアはパケットを受け取る場合に備えて４から７のスレッドを選択し得る。そしてＰＤＥは例えばこれらのスレッドのうちの１つを順次選択してそれぞれのパケットを分配する。図６Ａではネットワーキング入力は、スレッド４、５、６、または７のうちのいずれか１つを選択してパケットを分配できるパケット分配エンジン（ＰＤＥ）６０２Ａによって受け取られることができる。この特定の例では、スレッド４は時間ｔ1でパケット１を受け取ることができ、時間ｔ5でパケット５を受け取ることができる。スレッド５は時間ｔ2でパケット２を受け取ることができ、時間ｔ6でパケット６を受け取ることができる。スレッド６は時間ｔ3でパケット３を受け取ることができ、時間ｔ7でパケット７を受け取ることができる。スレッド７は時間ｔ4でパケット４を受け取ることができ、時間ｔ8でパケット８を受け取ることができる。
【０１０２】
ここで図６Ｂを参照すると、本発明の１つの実施態様によるラウンドロビン体系を使ったＰＤＥ分配パケットが示されており、一般的な参照符号６００Ｂで表されている。ＦＭＮを参照して上で説明したように、ソフトウェアはあらゆる送信器からのすべてのレシーバを見込んだクレジットの数をプログラムできる。ＰＤＥは本質的には送信器であるため、クレジット情報を使ってパケットを「ラウンドロビン」なやり方で分配することもできる。図６Ｂでは、図示されるようにＰＤＥ６０２Ｂはネットワーキング入力を受信でき、パケットを指定のスレッド（例えば、スレッド０からスレッド３）に提供できる。この例では、スレッド２（例えば、レシーバ）が他のスレッドよりもパケットをより遅く処理中であり得る。ＰＤＥ６０２Ｂはこのレシーバからのクレジット可用性のスローペースを検出でき、より効率的に処理中のスレッドにパケットを案内することによって調整できる。特に、スレッド２はＰＤＥ内で得られる最小数のクレジットをサイクルｔ11で持っている。サイクルｔ11におけるパケット１１の次の論理的なレシーバがスレッド２であったとしても、ＰＤＥはこのスレッドにおける処理遅延を識別でき、それに従ってパケット１１の分配に最適なターゲットとしてスレッド３を選択できる。この特定の例では、スレッド２は他のスレッドに比較して処理が遅延していることを提示し続けることができ、その結果、ＰＤＥはこのスレッドへの分配を回避できる。また万が一、レシーバのいずれも新しいパケットを受け取るだけの空きを持っていない場合は、ＰＤＥはパケット待ち行列をメモリへと拡張できる。
【０１０３】
ネットワーキングアプリケーションのほとんどはパケットが無作為な到着順序となっていることに対してあまり強くないので、パケットを順序良く送達することが望ましい。さらに、システム内で平行処理とパケット順序向けの特性を兼備することは困難である。１つのアプローチとしては順序付け作業をソフトウェアに託すことが挙げられるが、この場合はライン速度を維持することが困難となる。他のオプションとしては、すべてのパケットを単一のフローで同じ処理スレッドに送って順序付けが本質的に自動的となるようにすることが挙げられる。しかしながら、このアプローチはパケット分配の前にフロー識別（すなわち分類）が必要となり、これによりシステムの性能が落ちる。他の欠点は、最大フローのスループットが単一のスレッドの性能によって決定されることである。このことは単一の大規模フローがシステムを横切るにつれてスループットを維持する妨げとなる。
【０１０４】
本発明の１つの実施態様によると、パケット順序付け装置（ＰＯＤ）と呼ばれる最新型ハードウェア加速構造を使うことができる。ＰＯＤの目的は、パケットをネットワーキング出力インターフェースに送られる前に再順序付けすることによって平行処理スレッドを無制限に使えるようにすることである。ここで図６Ｃを参照すると、本発明の１つの実施態様によるパケットライフサイクル中のＰＯＤ配置が示されており、一般的な参照符号６００Ｃで表されている。この図は本質的にはプロセッサにわたるパケットのライフサイクル中のＰＯＤの論理的な配置を図示している。この特定の例では、図示されるように、ＰＤＥ６０２Ｃはパケットをスレッドに送信できる。スレッド０は時間ｔ1でパケット１を受信でき、時間ｔ5でパケット５を受信できるなどとなっていてサイクルｔn-3まで続いている。スレッド１は時間ｔ2でパケット２を受信でき、時間ｔ6でパケット６を受信できるなどとなっていてサイクルｔn-2まで続いている。スレッド２は時間ｔ3でパケット３を受信でき、時間ｔ7でパケット７を受信できるなどとなっていて時間n-1まで続いている。最終的に、スレッド３は時間ｔ4でパケット４を受信でき、時間ｔ8でパケット８を受信できるなどとなっていて時間ｔnまで続いている。
【０１０５】
パケット順序付け装置（ＰＯＤ）６０４Ｃは、異なるスレッドからパケットを受信してネットワーキング出力へと送信する際のパケットソータと考えることができる。所定のネットワーキングインターフェースによって受信されたすべてのパケットにはシーケンス番号を割り当てることができる。そしてこのシーケンス番号はＰＤＥによって残りのパケット情報とともに作業スレッドへと転送できる。いったんスレッドがパケットの処理を完了すると、このスレッドは元のシーケンス番号とともにパケット記述子をＰＯＤへと転送できる。ＰＯＤはこれらのパケットを、例えば受信インターフェースによって割り当てられた元々のシーケンス番号によって厳密に決定された順序で外付けのインターフェースへと解放できる。
【０１０６】
ほとんどのアプリケーションではＰＯＤは無作為な順序でパケットを受信する、なぜならパケットは典型的には無作為な順序でスレッドによって処理されるからである。ＰＯＤは受信インターフェースによって割り当てられたシーケンス番号に基づいて待ち行列を確立することができ、パケットを受信と同時にソートし続けることができる。ＰＯＤは受け取りインターフェースによって割り当てられた順序で所定の外付けインターフェースにパケットをイシューできる。ここで図６Ｄを参照すると、本発明の１つの実施態様によるＰＯＤ外付け分配が図示されており、一般的な参照符号６００Ｄで表されている。パケット順序付け装置（ＰＯＤ）６０２Ｄに見られるように、パケット２および４は最初はスレッドを実行することによってＰＯＤに送信されることができる。いくつかのサイクル後、スレッドはパケット３で作業を完了できこれをＰＯＤに配置できる。パケットはまだ順序付けされていなくてよい、なぜならパケット１がまだ配置されていないからである。最終的にはパケット１がサイクルｔ7で完了され、それに従ってＰＯＤに配置される。そしてパケットは順序付けされることができＰＯＤは１、２、３、４の順序でパケットをイシューし始めることができる。もしパケット５が次に受信される場合は、これはパケット４に引き続く出力でイシューされる。残りのパケットは受信されると同時にそれぞれ、次のより高位の数のパケットが受信されるまで待ち行列に保存できる（例えば、深さ５１２の構造）。このような場合、パケットは外付けのフロー（例えばネットワーキング出力）に追加することができる。
【０１０７】
もっとも古いパケットは絶対にＰＯＤに到着することがないようにでき、これにより非常駐ヘッドオブラインブロッキング状況を作成できる。適切に取り扱われない場合、このエラー状態によりシステムがデッドロックされる場合がある。しかしながら、実施態様の１つの側面によると、ＰＯＤには、いったんタイムアウトカウンタが期限切れとなると非到着パケットをリストの先頭でドロップするように設計されているタイムアウトメカニズムが設けられている。タイムアウトカウンタが期限切れとなる前に待ち行列容量（例えば５１２個の位置）を満たす速度でパケットがＰＯＤに入力されることも可能である。実施態様の１つの側面によると、ＰＯＤが待ち行列容量に到着すると、リストの先頭にあるパケットをドロップすることができ、新しいパケットを受け取ることができる。この動作によりどのようなヘッドオブラインブロッキング状況でも同様に取り除ける。またソフトウェアは、不良なパケット、制御パケット、またはなんらかの他の適切な理由によりある特定のシーケンス番号がＰＯＤに入らないようであることに気づく場合がある。このような場合、ソフトウェア制御はＰＯＤに「ダミー」の記述子を挿入することで、ＰＯＤを自動的に反応させる前に非常駐ヘッドオブラインブロッキング状態を排除してよい。
【０１０８】
本発明の実施態様によると、５つのプログラマブルＰＯＤが（例えばチップで）利用可能であり、包括的な「ソーティング」構造としてみることができる。１つの構造例では、ソフトウェア制御（すなわちユーザーを介して）はＰＯＤのうちの４つを４つのネットワーキングインターフェースに割り当てることができ残り１つのＰＯＤを包括的なソーティングのために割り当てることができる。さらにＰＯＤはソフトウェア単独制御で十分であれば、もしアプリケーションにとって望ましければ単純にバイパスできる。
【０１０９】
Ｆ．メモリインターフェースおよびアクセス
本発明の実施態様の１つの側面では、最新型遠隔通信プロセッサはさらに、データスイッチ相互接続および少なくとも１つの通信ポート（例えば、囲い２２０）に接合され、データスイッチ相互接続および通信ポートと通信するように構成されたメモリブリッジ２１８を備えることができる。
【０１１０】
本発明の１つの側面では、最新型遠隔通信プロセッサはさらに、データスイッチ相互接続（ＤＳＩ）、インターフェーススイッチ相互接続、および少なくとも１つの通信ポート（例えば囲い２０２、囲い２０４）に接合されており、データスイッチ相互接続、インターフェーススイッチ相互接続、および通信ポートと通信するように構成されたスーパーメモリブリッジ２０６を備えることができる。
【０１１１】
本発明の実施態様の他の側面では、図４Ａ、４Ｂ、および４Ｃを参照して上で説明したようにリングベースのデータ移動ネットワークにメモリ順序付けを実装できる。
Ｇ．結論
本発明の利点としては、コンピュータシステムとメモリとの間で高い帯域幅の通信を効率的かつ費用効果的なやり方で提供できる能力が挙げられる。
【０１１２】
例示的な実施態様および最良の形態を説明してきたが、以下の特許請求の範囲で定義されるような本発明の主題および精神にとどまりつつ、開示された実施態様に対して改変および変形を加えることができる。
【図１】
2010079921.tif 000003
【図２Ａ】
2010079921.tif 000004
【図２Ｂ】
2010079921.tif 000005
【図３Ａ】
2010079921.tif 000006
【図３Ｂ】
2010079921.tif 000007
【図３Ｃ】
2010079921.tif 000008
【図３Ｄ】
2010079921.tif 000009
【図３Ｅ】
2010079921.tif 000010
【図３Ｆ】
2010079921.tif 000011
【図３Ｇ】
2010079921.tif 000012
【図３Ｈ】
2010079921.tif 000013
【図３Ｉ】
2010079921.tif 000014
【図３Ｊ】
2010079921.tif 000015
【図３Ｋ】
2010079921.tif 000016
【図４Ａ】
2010079921.tif 000017
【図４Ｂ】
2010079921.tif 000018
【図４Ｃ】
2010079921.tif 000019
【図５Ａ】
2010079921.tif 000020
【図５Ｂ】
2010079921.tif 000021
【図５Ｃ】
2010079921.tif 000022
【図５Ｄ】
2010079921.tif 000023
【図５Ｅ】
2010079921.tif 000024
【図６Ａ】
2010079921.tif 000025
【図６Ｂ】
2010079921.tif 000026
【図６Ｃ】
2010079921.tif 000027
【図６Ｄ】
2010079921.tif 000028