JP4498356B2 - 最新型プロセッサ - Google Patents

最新型プロセッサ Download PDF

Info

Publication number
JP4498356B2
JP4498356B2 JP2006521286A JP2006521286A JP4498356B2 JP 4498356 B2 JP4498356 B2 JP 4498356B2 JP 2006521286 A JP2006521286 A JP 2006521286A JP 2006521286 A JP2006521286 A JP 2006521286A JP 4498356 B2 JP4498356 B2 JP 4498356B2
Authority
JP
Japan
Prior art keywords
thread
packet
core
processor
threads
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006521286A
Other languages
English (en)
Other versions
JP2007500886A (ja
Inventor
ハス,ディビット,ティー.
ザイディ,ナザー,エイ.
ラシド,アバス
ムクハージー,バサブ
カザ,ロヒニ,クリシュナ
ラミレズ,リカルド
Original Assignee
アールエムアイ コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アールエムアイ コーポレーション filed Critical アールエムアイ コーポレーション
Publication of JP2007500886A publication Critical patent/JP2007500886A/ja
Application granted granted Critical
Publication of JP4498356B2 publication Critical patent/JP4498356B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

関連出願
本願は、本願でその全体を援用しすべての優先権を主張する、2003年7月25日に出願された仮出願第60/490,236号(RZMI−P101P2)の優先権を主張する、2003年10月8日に出願されたシリアル番号第10/682,579号(RZMI−P101)の一部継続出願である。
本発明はコンピュータおよび遠隔通信の分野に関し、特にコンピュータおよび遠隔通信アプリケーション用の最新型プロセッサに関する。
現代のコンピュータおよび遠隔通信システムは、世界中で情報を通信できることをはじめとする多大な恩恵をもたらす。コンピュータおよび遠隔通信設備のための従来のアーキテクチャは多数の離散回路を備え、これらは処理能力および通信速度の両方を非効率にしてしまう。
例えば、図1は、多数の離散チップおよび技術を採用しているこのような従来のラインカードを描いている。図1で、従来のラインカード100は以下の離散構成部材を備えている。すなわち、分類102、トラフィックマネージャ104、バッファメモリ106、セキュリティコプロセッサ108、伝送制御プロトコル(TCP)/インターネットプロトコル(IP)オフロードエンジン110、L3+コプロセッサ112、物理層装置(PHY)114、媒体アクセス制御(MAC)116、パケット転送エンジン118、ファブリックインターフェースチップ120、制御プロセッサ122、ダイナミックランダムアクセスメモリ(DRAM)124、アクセス制御リスト(ACL)3進内容−アドレス可能メモリ(TCAM)126、およびマルチプロトコルラベルスイッチング(MPLS)静的ランダムアクセスメモリ(SRAM)128である。カードはさらに、他のカードおよび/またはデータと接続できるスイッチファブリック130を備えている。
プロセッサおよび他の構成部材の進歩により、遠隔通信設備の情報を処理し、操作し、保存し、回収し、送達する能力が向上した。近年、技術者たちは機能を一体型回路に組み込むことで、必要な機能を同じかより良いレベルの性能で実行しつつも離散一体型回路の全体の数を減らし始めている。このような組み込みは新しい技術によりチップ上のトランジスタの数を増やせる能力および費用削減に対する要望により一層促進されてきた。このような組み込み一体型回路のいくつかは非常に機能的でしばしばチップ上のシステム(SoC)と呼ばれる。しかしながら、回路およびシステムをチップ上に組む込むことは非常に複雑となる場合があり、多くの技術上の課題を課する。例えば、ハードウェアエンジニアは将来の設計が確実に柔軟であることを望み、ソフトウェアエンジニアは自分たちのソフトウェアがチップならびに将来の設計でも同じように確実に駆動することを望む。
高性能な新規のネットワーキングおよび通信アプリケーションに対する要望は最新型スイッチングおよびルーチングにおいて高まり続けている。さらに、内容認識ネットワーキング、高度一体型セキュリティ、および保存管理の新しい形態といった解決法がフレキシブルマルチサービスシステムに移行し始めている。これらおよび他の次世代解決法に使用可能な技術はインテリジェンスおよび高性能に柔軟性を提供して新しいプロトコルおよびサービスに即座に適合されるようにしなければならない。
その結果、必要とされているのは新しい技術を利用できると同時に高性能機能性も提供する最新型プロセッサである。さらに、この技術は柔軟な改変能力を備えていれば特に役立つであろう。
本発明は、確認された制限を克服するための有用な新規の構造および技術を提供するものであり、新規の技術を利用できると同時に柔軟な改変とともに高い性能機能性も提供する最新型プロセッサを提供する。本発明は、モジュラー構成部材および通信構造を備えるチップ上の最新型アーキテクチャシステム(SoC)を採用して高性能装置を提供する。
最新型プロセッサはそれぞれがデータキャッシュおよび命令キャッシュを持っている複数のプロセッサコアを備えている。データスイッチ相互接続はプロセッサコアのそれぞれに接合されプロセッサコア間で情報を手渡すように構成されている。メッセージングネットワークはプロセッサコアおよび複数の通信ポートのそれぞれに接合されている。
本発明の1つの側面では、データスイッチ相互接続はプロセッサコアのそれぞれにそれぞれのデータキャッシュによって接合されており、メッセージングネットワークはプロセッサコアのそれぞれにそれぞれの命令ステーションによって接合されている。
本発明の1つの側面では、最新型遠隔通信プロセッサは、データスイッチ相互接続に接合されておりプロセッサコアにアクセス可能な情報を保存するように構成されているレベル2(L2)キャッシュをさらに備えている。
本発明の1つの側面では、最新型遠隔通信プロセッサは、メッセージングネットワークおよび複数の通信ポートに接合されておりメッセージングネットワークおよび通信ポートの間で情報を手渡すように構成されているインターフェーススイッチ相互接続をさらに備えている。
本発明の1つの側面では、最新型遠隔通信プロセッサは、データスイッチ相互接続および少なくとも1つの通信ポートに接合されており、データスイッチ相互接続および通信ポートと通信するように構成されているメモリブリッジをさらに備えている。
本発明の1つの側面では、最新型遠隔通信プロセッサは、データスイッチ相互接続、インターフェーススイッチ相互接続、および少なくとも1つの通信ポートに接合されておりデータスイッチ相互接続、インターフェーススイッチ相互接続、および通信ポートと通信するように構成されているスーパーメモリブリッジをさらに備えている。
本発明の利点としては、コンピュータシステムとメモリとの間で効率的かつ費用効果的なやり方で高い帯域幅通信を提供する能力が挙げられる。
本発明を、特定のアーキテクチャおよびプロトコルを参照して説明する。当業者であれば、説明は例示的なものであり本発明を実施するための最良の形態を提供するものであることを認識するであろう。説明は限定的なものではなく、遠隔通信および他の用途について言えることは例えばサーバー用途、分散型共用メモリ用途などの一般的なコンピュータ用途にも等しくあてはまる。本願で説明するように、イーサネットプロトコル、インターネットプロトコル、ハイパートランスポートプロトコルおよび他のプロトコルについて言及するが、本発明は他のプロトコルにも同様に適用できる。さらに、一体型回路を含むチップにも言及するが、本願で説明するものをチップ形態に組み合わせた他のハイブリッドまたはメタ回路も予測される。加えて、例示的なMIPSアーキテクチャおよび命令セットにも言及するが、他のアーキテクチャおよび命令セットも本発明で使用できる。他のアーキテクチャおよび命令セットとしては、例えばx86、PowerPC、ARMなどが挙げられる。
A.アーキテクチャ
本発明は、図1の従来のラインカードで実行される多数の機能を整理統合し、ラインカード機能性を向上させるように設計されている。1つの実施態様では、本発明は多くの離散機能を実行するための回路系を備えた一体型回路である。一体型回路設計は、通信処理用にあつらえてある。従って、プロセッサ設計は計算を多く使う動作よりもむしろメモリを多く使う動作を強調する。プロセッサ設計は以下に説明するように高能率メモリアクセスおよびスレッド化処理用に構成された内部ネットワークを備えている。
図2Aは、本発明の1つの実施態様による例示的な最新型プロセッサ(200)を描いている。最新型プロセッサは特定の一体型回路にあらかじめ課せられている多くの機能を実行できる一体型回路である。例えば、最新型プロセッサはパケット転送エンジン、レベル3コプロセッサ、および制御プロセッサを備えている。プロセッサは必要に応じて他の構成部材を備えることができる。本願で示すように、例示的な機能的構成部材の数と仮定すると、例示的な実施態様では電力損失は約20ワットである。当然ながら、本発明の他の実施態様では、電力損失は約20ワットより大きくなったり小さくなったりし得る。
例示的なプロセッサはチップ上にネットワークとして設計されている。この分散処理アーキテクチャは構成部材に互いに通信させるもので、必ずしも共通のクロック速度を共有するものではない。例えば、1つのプロセッサ構成部材は比較的速い速度でクロックするが他のプロセッサ構成部材は比較的遅い速度でクロックする。ネットワークアーキテクチャはさらに将来の設計に他の構成部材を追加できる能力を、かかる構成部材を単純にネットワークに追加することによってサポートする。例えば、もし将来の通信インターフェースが所望される場合、このインターフェースはプロセッサチップにレイアウトしてプロセッサネットワークに連結できる。そして、将来のプロセッサを新しい通信インターフェースを備えて製造できる。
設計理念は、汎用ソフトウェアツールおよび再利用可能な構成部材を使ってプログラムできるプロセッサを作成することである。この設計理念をサポートするいくつかの例示的な特性としては次のものが挙げられる、すなわち、静的ゲート設計;低リスクカスタムメモリ設計;フリップフロップをベースとする設計;フルスキャン、メモリ内蔵自己試験(BIST)、アーキテクチャ冗長およびテスタサポート特性を備える試験しやすい設計;クロックゲート化を含む消費電力削減;論理ゲート化およびメモリバンキング;インテリジェント的な案内配置をはじめとするデータ経路および制御分離;および物理的実施の急速フィードバックである。
ソフトウェア理念は業界標準開発ツールおよび環境の利用を可能とすることである。汎用ソフトウェアツールおよび再利用可能な構成部材を使って処理をプログラムすることが望まれている。業界標準ツールおよび環境としては、gcc/gdbのような馴染み深いツール、および顧客またはプログラマによって選択された環境で開発できる能力が挙げられる。
ハードウェア抽象層(HAL)定義を提供することによって既存および将来のコード投資を保護することもまた望まれている。このことで既存のアプリケーションを比較的簡単に移植できるようになりまた将来のチップ世代とのコードの互換性が可能となる。
CPUコアに戻ると、このコアはMIPS64に準拠するようにまた約1.5GHz+の範囲の周波数目標を持つように設計されている。アーキテクチャをサポートするさらなる例示的な特性としては次のものが挙げられる。すなわち、4方向多重スレッド化単一イシュー10ステージパイプライン’をキャッシュラインロッキングを備えるリアルタイム処理サポートおよびベクトル化割り込みサポート;32KB4方向セット連想命令キャッシュ;32KB4方向セット連想データキャッシュ;および128エントリ変換索引バッファ(TLB)である。
例示的な実施態様の重要な側面の1つは、高速プロセッサ入/出力(I/O)であり、これは2つのXGMII/SPI−4(例えば、図2Aの囲い228aおよび228b);3つの1GbMACs;1つのフラッシュ部(例えば図2Aの囲い226)および2つのクオードデータ速度(QDR2)/二倍データ速度(DDR2)SRAM部を備える、800/1600MHzメモリに変倍できる1つの16ビットハイパートランスポート(例えば囲い232);400/800MHzに変倍できる2つの64ビットDDR2チャネル;および32ビット周辺構成部材相互接続(PCI)(例えば図2Aの囲い234)、ジョイント試験アクセスグループ(JTAG)および万能非同期受信/送信器(UART)(例えば囲い226)によってサポートされている。
2つの縮小GMII(RGMII)(例えば、図2Aの囲い230aおよび230b)ポートもインターフェースの一部として含まれている。さらに、セキュリティ加速エンジン(SAE)(例えば図2Aの囲み238)は暗号化、復号化、認証、およびキー生成といったセキュリティ機能に対してハードウェアベースの加速を使うことができる。このような特性は、IPSecおよびSSLのようなソフトウェア送達高性能セキュリティアプリケーションを手助けできる。
CPUのためのアーキテクチャ理念は命令レベルパラレリズム(ILP)よりもむしろスレッドレベルパラレリズム(TLP)を最適化することであり、TLPアーキテクチャから得られる仕事量の恩恵をネットワーク化しそれを小規模に維持することなどがある。
アーキテクチャは単一のチップ上で多くのCPUを具体化することを見込んでおり、これによりスケーラビリティをサポートする。一般に、スーパスケーラ設計はメモリ束縛の問題において最小の性能利得を持っている。アグレッシブ分岐予測はこのタイプのプロセッサアプリケーションにとって典型的には不必要であり、無駄でさえあり得る。
例示的な実施態様は狭いパイプラインを採用する、なぜならこれらは典型的には周波数スケーラビリティがよりよいからである。その結果、メモリ待ち時間は他のタイプのプロセッサと比べるとさほど問題とはならず、事実、どのようなメモリ待ち時間も以下に説明するマルチスレッド化によって効果的に隠すことができる。
本発明の実施態様は非ブロッキング負荷、CPUインターフェースにおけるメモリ再順序付け、およびセマフォーおよびメモリバリアついての特別な命令によってメモリサブシステムを最適化できる。
本発明の1つの側面では、プロセッサは負荷/保存に追加されたセマンティクスを獲得し解放できる。本発明の実施態様の他の側面では、プロセッサはタイマーサポートのために特別な原子間増分を採用できる。
上述のように、マルチスレッド化CPUは従来の技術と比較して恩恵をもたらす。本発明の例示的な実施態様はクロックごとにスレッドを切り替えられイシューに利用できる4つのスレッドを持つ細粒度マルチスレッディングを採用する。
マルチスレッディング側面は以下の利点を規定している。すなわち、長時間の待ち時間動作によって起こる空のサイクルの利用;領域対性能のトレードオフの最適化;メモリ束縛アプリケーションにとって理想的;メモリ帯域幅の最適な利用を可能とする;メモリサブシステム;MOSI(変形、自身の、共有の、無効な)プロトコルを使ったキャッシュコヒーレンス;ブロードキャストスヌープアプローチに対して縮小したスヌープ帯域幅および大きくなったスケーラビリティを含むフルマップキャッシュディレクトリ;大規模オンチップ共有デュアルバンク化2MB L2キャッシュ;エラーチェックおよび訂正(ECC)保護キャッシュおよびメモリ;2 64ビット400/800DDR2チャネル(例えば、12.8ギガバイト/秒ピーク帯域幅)セキュリティパイプライン;オンチップ標準セキュリティ機能のサポート(例えば、AES、DES/3DES、SHA−1、MD5およびRSA);機能の連鎖化(例えば、暗号化→符号)を可能にしてメモリアクセスを縮小できること;RSA以外でセキュリティパイプラインごとに4ギガバイトの帯域幅;オンチップスイッチ相互接続;チップ内通信用のメッセージ手渡しメカニズム;共有バスアプローチにわたってより大きなスケーラビリティを提供するためのスーパーブロック間のポイント対ポイント接続;データメッセージのための16バイト全二重リンク(例えば、1GHzのリンクごとに32GB/秒の帯域幅);およびクレジットベースのフロー制御メカニズムである。
複数のプロセッサコアとともに使用されるマルチスレッディング技術の恩恵のいくつかとして、メモリ待ち時間許容および障害許容が挙げられる。
図2Bは、本発明の他の実施態様による例示的な最新型プロセッサを描いている。この実施態様は、このアーキテクチャを改変して他の構成部材、例えばビデオプロセッサ215を収容できることを示すために提供されるものである。このような場合、ビデオプロセッサはプロセッサコア、通信ネットワーク(例えば、DSIおよびメッセージングネットワーク)、および他の構成部材と通信できる。
B.プロセッサコアおよびマルチスレッディング
図2Aの例示的な最新型プロセッサ200は、複数のマルチスレッド化プロセッサコア210a−hを備えている。例示的なコアはそれぞれ関連するデータキャッシュ212a−hおよび命令キャッシュ214a−hを備えている。データスイッチ相互接続(DSI)216をプロセッサコア210a−hのそれぞれに結合してプロセッサコア間およびL2キャッシュ208とメインメモリアクセス用のメモリブリッジ206、208の間でデータを手渡すように構成してよい。加えて、メッセージングネットワーク222をプロセッサコア210a−hのそれぞれおよび複数の通信ポート240a−fに結合してよい。図2Aには8つのコアが描かれているが、本発明ではより少ないまたはより多い数のコアを使うことができる。同様に、本発明の側面では、コアは異なるソフトウェアプログラムおよびルーチンを実行でき、異なる動作システムを駆動さえできる。単一の統合化プラットフォーム内の異なるコアで異なるソフトウェアプログラムおよび動作システムを駆動する能力は、従来からのソフトウェアをより旧式の動作システム下で1つ以上のコアで駆動させるよう望まれる場合、およびより新しいソフトウェアを異なる単一の動作システムまたは複数の動作システム下で1つ以上の他のコアで駆動させるよう望まれる場合、特に便利である。同様に、例示的なプロセッサは複数の別々の機能を統合されたプラットフォーム内に組み込むことができるようにするため、コアで複数の異なるソフトウェアおよび動作システムを駆動できるということは、組み込まれている別々の機能に関連する本質的に異なるソフトウェアを利用し続けることができることを意味する。
例示的なプロセッサはマルチスレッド化動作が可能な複数のCPUコア210a−hを備えている。例示的な実施態様では、8つの4方向マルチスレッド化MIPS64−互換性CPUがありこれらはしばしばプロセッサコアと呼ばれる。本発明の実施態様は32ハードウェアコンテキストを備えることができ、CPUコアは約1.5GHz以上で動作し得る。本発明の1つの側面は、複数のCPUコアの冗長性および障害許容性質である。従って、例えば、もしコアのうちの1つが故障すると、他のコアが動作を続けシステムは全体の性能がわずかに衰えるに過ぎない。1つの実施態様では、9番目のプロセッサコアをアーキテクチャに追加することで高い度合いの確実性で8つのコアが確実に機能するようにできる。
マルチスレッド化コアアプローチによりソフトウェアは多くのパケット処理アプリケーションに固有のパラレリズムをより効果的に使えるようになる。従来のプロセッサのほとんどは単一イシュー単一スレッド化アーキテクチャを使うが、これは典型的なネットワーキングアプリケーションにおいて性能が制約されている。本発明の側面では、複数のスレッドが異なるソフトウェアプログラムおよびルーチンを実行でき、異なる動作システムを駆動さえできる。異なるソフトウェアプログラムおよび動作システムを単一の統合されたプロットフォーム内の異なるスレッドで駆動させるこのような能力は、コアに関して上述したものと類似であるが、従来からのソフトウェアをより旧式の動作システム下で1つ以上のスレッドで駆動させるよう望まれる場合、およびより新しいソフトウェアを異なる単一の動作システムまたは複数の動作システム下で1つ以上の他のスレッドで駆動させるよう望まれる場合、特に便利である。同様に、例示的なプロセッサは統合化したプラットフォーム内に複数の別々の機能を組み込めるようにするため、スレッドで複数の異なるソフトウェアおよび動作システムを駆動させる能力は、組み込まれている別々の機能に関連する本質的に異なるソフトウェアを利用し続けることができることを意味する。以下に、単一のマルチスレッド化アプリケーションで性能を改善するために本発明によって使用されるいくつかの技術を説明する。
ここで図3Aを参照すると、従来の単一スレッド単一イシュー処理が示されており、一般的な参照符号300Aで表示されている。サイクル番号はブロックの先頭から示されている。ブロック内の「A」は最初のパケットを表すことができ、ブロック内の「B」は次のパケットを表わすことができる。ブロック内のサブ番号はパケット命令および/またはセグメントを表すことができる。キャッシュミス後の無駄使いされたサイクル5−10は、図示されるように、実行準備の整った命令が他にないことから生じる。システムは本質的に機能停止して固有のメモリ待ち時間を対処しなければならず、そしてこれは望ましくない。
多くのプロセッサの場合、サイクルごとにより多くの命令を実行しこれにより命令レベルパラレリズム(ILP)を規定することによって性能が改善される。このアプローチでは、より機能的なユニットがアーキテクチャに追加されてサイクルごとに複数の命令が実行されるようにする。このアプローチはまた、単一スレッド化複数イシュープロセッサ設計としても知られている。単一イシュー設計に対してはいくつかの改善がなされているが、性能は典型的には、一般にパケット処理アプリケーションの高い待ち時間性質により苦しみ続けている。特に、長い待ち時間メモリ参照により、通常同じような非効率を招き全体的な容量損失が大きくなる。
他のアプローチとしては、マルチスレッド化単一イシューアーキテクチャを使うことができる。この方法は、ネットワーキングアプリケーションに共通して見られるパケットレベルパラレリズムを利用し、そしてより十分に活用するものである。手短に言えば、メモリ待ち時間を適切に設計されたマルチスレッド化プロセッサによって効果的に隠すことができる。従って、このようなスレッド化設計では、メモリデータが返却されるのを待つ最中に1つのスレッドが活動停止となった場合、他のスレッドが命令を処理し続けることができる。これにより、他の簡素なマルチイシュープロセッサがこうむっている無駄遣いされたサイクルを最小とすることによってプロセッサの利用を最大とすることができる。
ここで図3Bを参照すると、従来の簡素なマルチスレッド化スケジューリングが示されており、一般的な参照符号300Bで表されている。命令スケジューラ(IS)302BはIS 302Bの左側の囲いに示されている4つのスレッド、A、B、C、Dを受け取ることができる。それぞれのサイクルは図示されるように「ラウンドロビン」様式でスレッドのそれぞれから単純に異なるパケット命令を選択できる。このアプローチは一般に、イシューに利用できる命令をどのスレッドも持っていれば良好に機能する。しかしながら、このような「普通の」命令イシューパターンは典型的には実際のネットワーキングアプリケーションでは持続できない。命令キャッシュミス、データキャッシュミス、データ使用インターロック、およびハードウェア資源が利用できないといった共通の要因によりパイプラインが機能停止する可能性がある。
ここで図3Cを参照すると、スレッドが機能停止している従来の簡素なマルチスレッドスケジューリングが示されており一般的な参照符号300Cで表されている。命令スケジューラ(IS)302Cは、A、B、Cに加えてからの「D」スレッドの4つのスレッドを受け取ることができる。図示されるように、従来のラウンドロビンスケジューリングでは無駄使いされたサイクル4、8、12が発生し、これらはDスレッドからの命令がもしあれば失敗する位置である。この例では、図示されている期間中のパイプライン効率損失は25%である。この方法に対してこのような効率損失を克服するように設計された改善が「イーガー」ラウンドロビンスケジューリングスキームである。
ここで図3Dを参照すると、本発明の実施態様によるイーガーラウンドロビンスケジューリングが示されており、一般的な参照符号300Dで示されている。図示されているスレッドおよび利用可能な命令は図3Cと同じである。しかしながら、図3Dでは、スレッドはイーガーラウンドロビンスケジューラ(ERRS)302Dによって受け取ることができる。イーガーラウンドロビンスキームは、命令が処理に利用できる限り、それぞれのスレッドから命令を連続的にイシューすることによってパイプラインを完全な状態で維持できる。1つのスレッドが「休眠」しており命令をイシューしない場合は、スケジューラは例えば残りの3つのスレッドから3クロックサイクルごとに1つの速度で命令をイシューできる。同様に、2つのスレッドが活動停止している場合は、スケジューラは2つの活動しているスレッドから他のクロックサイクルごとに1つの速度で命令をイシューできる。このアプローチの鍵となる利点は、4方向マルチスレッディングでは完全には利用できない一般的なアプリケーションを全速で駆動できる能力である。他の適切なアプローチとしては、マルチスレッド化固定サイクルスケジューリングが挙げられる。
ここで図3Eを参照すると、例示的なマルチスレッド化固定サイクルスケジューリングが示されており、一般的な参照符号300Eで表されている。命令スケジューラ(IS)302Eは、図示されているようにA、B、C、Dの4つの活動中のスレッドから命令を受け取ることができる。このプログラマブルな固定サイクルスケジューリングでは、所定のスレッドについて他のスレッドに切り替える前に固定の数のサイクルを設けることができる。図示されている例では、スレッドBからなんらかの命令がイシューされる前にスレッドAが、システムで可能な最大数であり得る256個の命令をイシューしている。いったんスレッドBが開始されると、スレッドBはスレッドC等へパイプラインを手渡す前に200個の命令をイシューする。
ここで図3Fを参照すると、イーガーラウンドロビンスケジューリングを備えた例示的なマルチスレッド化固定サイクルが示されており、一般的な参照符号300Fで表されている。命令スケジューラ(IS)302Fは図示されるようにA、B、C、Dの4つの活動中のスレッドから命令を受け取ることができる。このアプローチは、機能停止状態が生じた場合にパイプライン効率を最大とするために使用できる。例えば、もしスレッドAが256個の命令をイシューする前に機能停止した場合(例えばキャッシュミス)、他のスレッドをラウンドロビン方式に使用することで、無駄使いとなる可能性のあるサイクルを「充填」できる。図3Fに示す例では、スレッドAの命令にアクセス最中にサイクル7の後に機能停止状態が発生し、この時点でスケジューラはサイクル8のためにスレッドBに切り替わることができる。同様に、スレッドBの命令にアクセス中にサイクル13の後に他の機能停止状態が生じた場合、スケジューラはサイクル14のためにスレッドCに切り替わることができる。この例では、スレッドCの命令のアクセス中に機能停止は発生していないため、スレッドに対する制限はプログラムされているものの(例えば200)スレッドCのためのスケジューリングは続くことができるため、最後のCスレッドの命令をサイクル214でパイプラインに配置できる。
ここで図3Gを参照すると、本発明の1つの実施態様による、関連するインターフェースユニットを備えたコアが示されており、一般的な参照符号300Gで表されている。コア302Gは命令取出しユニット(IFU)304G、命令キャッシュユニット(ICU)306G、減結合バッファ308G、メモリ管理ユニット(MMU)310G、命令実行ユニット(IEU)312G、および負荷/保存ユニット(LSU)314を備えている。FU304GはICU306Gとインターフェースでき、IEU312GはLSU314とインターフェースできる。ICU306Gはまたスイッチブロック(SWB)/レベル2(L2)キャッシュブロック316Gともインターフェースできる。レベル1(L1)データキャッシュであり得るLSU314Gはまた、SWB/L2 316Gともインターフェースできる。IEU312Gはメッセージ(MSG)ブロック318Gとインターフェースでき、SWB320Gともインターフェースできる。さらに、実施例に従って使われるレジスタ322GはスレッドID(TID)、プログラムカウンタ(PC)、およびデータフィールドを備えることができる。
本発明の実施態様によると、それぞれのMIPSアーキテクチャコアは単一の物理的パイプラインを持ち得るが、マルチスレッディング機能(すなわち、4つの「仮想」コア)をサポートするように構成できる。ネットワークアプリケーションでは、通常の計算型の命令体系とは違い、スレッドはメモリアクセスまたは他の長時間の待ち時間動作を待たれやすい。従って、本願で説明するようなスケジューリングアプローチを使ってシステムの全体の効率を改善することができる。
ここで図3Hを参照すると、例示的な10個のステージ(すなわちサイクル)プロセッサパイプラインが示されており、一般的な参照符号300Hで表されている。一般的な動作では、それぞれの命令はパイプラインを進み10個のサイクルまたはステージを取ることができる。しかしながら、なんらかの所定の時点で、それぞれのステージに存在する10までの異なる命令もあり得る。従って、この例のパイプラインのスループットはそれぞれのサイクルごとに完了する1つの命令とできる。
図3Gおよび3Hを一緒に見ると、例えば、サイクル1−4がIFU304Gの動作を表し得る。図3Hでは、ステージまたはサイクル1(IPGステージ)は異なるスレッドのいずれかからの命令のスケジューリングを含むことができる(スレッドスケジューリング302H)。このようなスレッドスケジューリングは、例えばラウンドロビン、重み付けラウンドロビン(WRR)、またはイーガーラウンドロビンを含むことができる。さらに、命令ポインタ(IP)がIPGステージで生成され得る。ICU306Gからの命令取出しはステージ2(FET)および3(FE2)で発生できステージ2の命令取出しスタート304Hで開始できる。ステージ3では、ブランチ予測306Hおよび/またはリターンアドレススタック(RAS)(ジャンプレジスタ)310Hを開始できステージ4(DEC)で完了され得る。ステージ4ではまた、取り出された命令を返却できる(命令リターン308H)。次に、命令ならびに他の関連する情報をステージ5に手渡すことができ減結合バッファ308Gにも入れることができる。
図3Hの実施例のパイプライン動作のステージ5−10はIEU312Gの動作を表すことができる。ステージ5(REG)では、命令が復号化され得どのような必要なレジスタルックアップも完了される(レジスタルックアップ314H)。ステージ5ではまた、機能停止が必要かどうかをハザード検出論理(LD−使用ハザード316H)が判断できる。もし機能停止が必要であれば、ハザード検出論理が減結合バッファ308Gに信号を送信して命令が再生される(例えば、減結合/再生312H)。しかしながら、もしこのような再生が信号で伝えられなければ、命令は代わりに減結合バッファ308Gから取り出され得る。さらに、ハザード/従属が長時間の待ち時間動作(例えば、データキャッシュミス)によるものである場合のようないくつかの状況では、スレッドは再生されず代わりに休眠状態とされる場合がある。ステージ6(EXE)では、命令は「実行」され得、これは例えばALU/シフトおよび/または他の動作(例えば、ALU/シフト/OP318H)を含み得る。ステージ7(MEM)では、データメモリ動作を開始でき分岐の成果を分析できる(分岐分析320H)。さらに、データメモリルックアップをステージ7、8(RTN)、および9(RT2)にまたがるように拡張し得、負荷データをステージ9(RT2)によって返却できる(負荷返却322H)。ステージ10(WRB)では、命令をコミットまたはリタイアでき、すべての関連するレジスタを最終的に特定の命令のために更新することができる。
一般に、アーキテクチャはパイプラインで機能停止がないように設計されている。この方法は実行を簡単にすると同時に動作の周波数を大きくするための両方の目的で採用されていた。しかしながら、パイプラインを機能停止または停止する必要がある状況がいくつかある。このような状況では、IFU304Gの機能的部分とみなすことができる減結合バッファ308Gは、パイプライン全体をフラッシュしてそのスレッドをはじめからスタートさせて機能停止を実行する代わりに再スタートまたは停止時点からの「返答」を見込むことができる。例えば、信号をIFU304Gによって減結合バッファ308Gに提供することで起動停止が必要であることを表示できる。1つの実施態様では、減結合バッファ308Gは命令のための待ち行列として働き、これによりIFU304Gから得られたそれぞれの命令が減結合バッファ308Gにも行くようになる。このような待ち行列では、上述のように命令は特定のスレッドスケジューリングに基づいて故障状態でスケジュールできる。万が一、機能停止が要求されている減結合バッファ308Gへと信号が送信される場合は、「停止」時点後のこれらの命令は再スレッド化できる。他方、もし機能停止が要求されていれば、単に命令を減結合バッファから取り出してパイプラインを続けることができる。従って、機能停止なしに、減結合バッファ308Gは先入れ先出し(FIFO)バッファと本質的に同じように挙動できる。しかしながら、もしいくつかのスレッドのうちの1つが機能停止を要求している場合は、残りのスレッドがバッファを進むことができこれらはホールドアップされなくてもよい。
本発明の実施態様の他の側面として、変換牽引バッファ(TLB)を、図3GMMU310Gのようなメモリ管理ユニット(MMU)の一部として管理できる。これは別々の、同様に共通の、TLB分配アクセス複数スレッドを備えることができる。128エントリTLBは64エントリジョイントメインTLBおよび2つの32エントリマイクロTLBを備えることができ、1つづつがそれぞれ命令およびデータ側用である。関連するマイクロTLBにアクセスすることによって変換が満たされない場合は、メインTLBに要求を送ってよい。メインTLBも望ましいエントリを含んでいなければ割り込みまたは発生する場合がある。
MIPSアーキテクチャに対する準拠を維持するために、メインTLBは対にされているエントリ(例えば、異なる物理的ページにマップ化された一対の連続的な仮想ページ)、可変ページサイズ(例えば、4Kから256M)、およびソフトウェア管理をTLB読み取り/書き込み命令を介してサポートできる。複数のスレッドをサポートするには、マイクロTLBおよびメインTLBのエントリを、それらがインストールされているスレッドのスレッドID(TIK)でタグ付けする。さらに、メインTLBは少なくとも2つのモードで作動させることができる。「パーティション」モードでは、それぞれのアクティブなスレッドに排他的なサブセットまたはメインTLBの一部を割り当ててエントリをインストールでき、変換中は、それぞれのスレッドは自身に属しているエントリだけを観察する。「グローバル」モードでは、いずれのスレッドにもメインTLBのどの部分あるエントリも割り当ててすべてのスレッドからすべてのエントリが見えるようにできる。メインTLB書き込み中に「デマップ」メカニズムを使うことで、確実に重複した変換が異なるスレッドによって絶対に引き起こされることがないようにできる。
一例として、それぞれのマイクロTLBにあるエントリは、最近使われていない(NRU)アルゴリズムを使って割り当てることができる。モードにかかわらず、スレッドはマイクロTLBのいずれの部分にもエントリを割り当ててよい。しかしながら、マイクロTLBの変換はモードによって影響を受ける。グローバルモードでは、すべてのマイクロTLBエントリはすべてのスレッドから見えるが、パーティションモードでは、それぞれのスレッドは自分自身のエントリしか見えない。さらに、メインTLBはサイクルごとに最大1つの変換をサポートできるため、アービトレーションメカニズムを使って、すべてのスレッドからのマイクロTLB「ミス」要求が絶対に公平に取り扱われるようにできる。
標準的なMIPSアーキテクチャでは、アドレススペースの非マップ領域は物理的アドレスは仮想アドレスに等しいという規則に従う。しかしながら、本発明の実施態様によると、この制約は解除され、非マップ領域は「仮想MIPS」モードで作動しつつマイクロTLB/メインTLBヒエラルキーを介して仮想−物理的マッピングを受けることができる。このアプローチによりユーザーは異なるスレッドの非マップ領域を互いに分離できるようになる。しかしながらこの方法の副産物として、非マップアドレスを自身の仮想ページ数(VPN2)フィールドに含んでいるメインTLBエントリは無効であるという標準的なMIPS規則は違反される。本発明の1つの実施態様では、この能力はユーザーへと戻すことができ、これによりメインTLBのそれぞれのエントリは仮想MIPSモードでユーザーにだけ見える特別な「マスター有効」ビットを備えることができる。例えば、無効なエントリはマスター有効ビット値「0」によって表すことができ、有効なエントリはマスター有効ビット値「1」で表すことができる。
本発明の他の側面として、システムは順序内パイプラインで故障負荷/保存スケジューリングをサポートできる。実行の一例として、ユーザープログラマブルなリラックス化メモリ順序付けモデルがあり全体の性能を最大化する。1つの実施形態では、順序付けはユーザプログラミングにより、強く順序付けされたモデルから弱く順序付けされたモデルに進むように変更することができる。システムは4つのタイプをサポートする、すなわち(i)負荷−負荷再順序付け、(ii)負荷−保存再順序付け、(iii)保存−保存再順序付け、および(iv)保存−負荷再順序付けである。順序付けのそれぞれのタイプはレジスタのビットベクトルによって別々にリラックス化できる。もしそれぞれのタイプがリラックス化状態に設定されていれば、弱く順序付けされたモデルを達成できる。
ここで図3Iを参照すると、本発明の1つの実施態様によるプロセッサ内のコア割り込みフロー動作が示されており、一般的な参照符号300Iで表されている。プログラマブルな割り込みコントローラ(PIC)、は以下に図3Jを参照してより詳細に説明するように、割り込みカウンタおよびMSGブロックを備える割り込みを累算302Iに提供できる。従って、動作300Iはシステム全体のプロセッサまたはコアのいずれの内部でも生じることができる。機能的ブロックスケジュールスレッド304Iはブロック302Iから制御インターフェースを受け取ることができる。MIPSアーキテクチャへの拡張は、EIRR308Iへの原因306IならびにEIMR312Iへのステータス310Iを備えるシャドウマッピングによって実現できる。MIPSアーキテクチャは一般に、指定されたステータスおよび原因レジスタのそれぞれについて、ソフトウェア割り込みについては2ビット、ハードウェアについては6ビットを提供するにすぎない。本発明の実施態様によると、このMIPS命令アーキテクチャ互換性は拡張を行いつつ保持できる。
図3Iにより詳細に示すように、割り込み保留のためのEIRR308Iへの原因306Iのシャドウマッピングは、EIRR308Iの0−7ビットへの8−15ビットの原因306Iレジスタマッピングを備えることができる。また、ソフトウェア割り込みはPICを進むのとは対照的にコア内にとどまることができ、原因306Iのビット8および/または9に書き込むことで実行できる。原因306Iの残りの6ビットはハードウェア割り込みに使うことができる。同様に、マスク用のEIMR312Iへのステータス310Iのためのシャドウマッピングは、EIMR312Iのビット0−7へのステータス310Iレジスタマッピングのビット8−15を備えることができる。さらに、ソフトウェア割り込みはステータス310Iのビット8および/または9への書き込みによって実行できると同時に残りの6ビットはハードウェア割り込みに使うことができる。このやり方で、本発明の実施態様によるレジスタ拡張は割り込みをハンドリングする際により大きな柔軟性を提供することができる。1つの実施態様では、割り込みはIERR308Iの非シャドウ化ビット8−63および/またはEIMR312Iのビット8−63を介しても伝達できる。
ここで図3Jを参照すると、本発明の1つの実施態様によるPIC動作が示されており、一般的な参照符号300Jで表されている。例えば、フロー300Jは図2Aの囲い226の実装に備えることができる。図3Jでは、同期302Jが割り込み指示を受け取ることができ、制御入力を保留304J制御ブロックに提供できる。保留304Jは割り込みゲートウェイとして効果的に作用するものであるが、システムタイマおよびウォッチドッグタイマ指示を受け取ることもできる。スケジュール割り込み306Jは保留304Jから入力を受け取ることができる。割り込み宛て先変更テーブル(IRT)308Jはスケジュール割り込み306Jから入力を受け取ることができる。
図示されるように、IRT308Jの割り込みおよび/またはエントリはそれぞれ、割り込みのための関連する属性(例えば、属性314J)を備えることができる。属性314Jは例えば、CPUマスク316−1J、割り込みベクトル316−2J、ならびにフィールド316−3Jおよび316−4Jを備えることができる。割り込みベクトル316−2Jは、割り込みの優先を指定する6ビットフィールドであり得る。1つの実施態様では、上で図3Iを参照して説明したように、EIRR308Iへのマッピングを介してより少ない数の割り込みベクトル316−2Jで関連する割り込みについてより高い優先を表すことができる。図3Jでは、CPU&スレッド310Jにわたるスケジュールはブロック308Jから属性314Jからの情報のような入力を受け取ることができる。特に、CPUマスク316−1Jを使ってCPUまたはコアのいずれに割り込みを送達すべきかを指示できる。送達312Jブロックはブロック310Jから入力を受け取ることができる。
PICに加えて、例えば32個のスレッドはそれぞれが64ビット割り込みベクトルを含み得る。PICはエージェントから割り込みまたは要求を受け取ってそれらを適切なスレッドに送達し得る。1つの実行例として、この制御はソフトウェアプログラマブルであり得る。従って、ソフトウェア制御は適切なPIC制御レジスタをプログラムすることによりすべての外部タイプの割り込みを1つ以上のスレッドに宛て先変更するよう決定し得る。同様に、PICはPCI−インターフェース(例えば、図2AのPIC−X234)から割り込み事象または指示を受け取り、そしてこれをプロセッサコアの特定のスレッドへと宛て先変更し得る。さらに、割り込み宛て先変更テーブル(例えば図3JのIRT308J)はPICから受け取った事象の識別(例えば割り込み指示)ならびにその指示に関連する情報を1つ以上の「エージェント」に記載し得る。事象は、指定の受け取り者に事象を送達するのに使われ得るベクトル数を規定するためにソフトウェアによって設定できるコアマスクを使うことによって特定のコアへと宛て先変更できる。このアプローチの利点は、このやり方によりソフトウェアがポーリングなしに割り込み元を識別できることである。
複数の受け取り者が所定の事象または割り込みについてプログラムされている場合、グローバル「ラウンドロビン」体系または割り込みごとベースのローカルラウンドロビン体系を使うようにPICスケジューラをプログラムして事象を送達できる。例えば、もしスレッド5、14、および27が外部割込みを受け取るようにプログラムされている場合は、PICスケジューラは最初の外部割り込みをスレッド5に送達し、次の割り込みをスレッド14に送達し、次の割り込みをスレッド27に送達しそして次の割り込みについてはスレッド5に戻るなどとし得る。
加えて、PICはまたいずれのスレッドも他のいずれのスレッドにも割り込めるようにし得る(すなわち、スレッド間割り込み)。このことは保存(すなわち書き込み動作)をPICアドレススペースに対して実行することによりサポートできる。このような書き込み動作のために使える値は割り込みベクトルおよびスレッド間割り込みのためにPICによって使用される目標スレッドを規定できる。そしてソフトウェア制御は標準的な規定を使ってスレッド間割り込みを識別できる。一例として、ベクトル範囲をこの目的で予約してよい。
図3Gおよび3Hを参照して上で説明したように、それぞれのコアはパイプライン減結合バッファ(例えば、図3Gの減結合308G)を備えることができる。本発明の実施態様の1つの側面では、複数のスレッドを備えた順序内パイプラインでの資源利用を最大とできる。従って、減結合バッファは、機能停止を要求していないスレッドが停止せずに流れるようにできる点で「スレッドに気づいて」いる。このやり方で、パイプライン減結合バッファはあらかじめスケジュールされたスレッドを再順序付けできる。上述のように、スレッドスケジューリングはパイプラインの最初でのみ発生できる。当然ながら、所定のスレッド内での命令の再順序付けは通常、減結合バッファによっては実行されず、別々のスレッドはペナルティーを課せられずにできる、なぜならこれらは機能静止されたスレッドがホールドアップされている間も効果的に減結合バッファをバイパスできるようにされているからである。
本発明の1つの実施態様では、コア実装に3サイクルキャッシュを使うことができる。このような3サイクルキャッシュはシステムの費用を削減するために、特別に設計されたキャッシュとは対照的に「オフザシェルフ」セルライブラリキャッシュとできる。その結果、負荷と1つのデータおよび/または命令との間で3つのサイクルのギャップがある場合がある。減結合バッファは効果的に作動してこの3サイクル遅延を利用できる。例えば、もしスレッドがたった1つしかなかった場合、3サイクル遅延が課せられるであろう。しかしながら、4つのスレッドが収容されている場合、他のスレッドによってスロット介入を引き受けることができる。さらに、ブランチの予測もまたサポートすることができる。正確に予測されてはいるが採用されていない分岐に対してのペナルティーはない。正確に予測され採用されている分岐については、1サイクル「バブル」またはペナルティーがある。予測がなくなった場合、5サイクルバブルがあるが、このようなペナルティーは4つのスレッドが作動している場合は大幅に小さくできる、なぜならバブルは他のスレッドによって単純に引き受けられるからである。例えば、5サイクルバブルのかわりに4つのスレッドのそれぞれが1つを引き受けることができこれによりたった1つのバブルペナルティだけが効果的に残る。
図3D、3E、および3Fを参照して上で説明したように、本発明の実施態様による命令スケジューリング体系はイーガーラウンドロビンスケジューリング(ERRS)、スレッドごとに固定の数のサイクル、およびERRSを備えるマルチスレッド化固定サイクルを備えることができる。さらに、矛盾がある状態でスレッドを起動させるための特定のメカニズムはスコアボードメカニズムの使用を備えることができ、これはメモリアクセス、掛け算および/または割り算のような長時間の待ち時間動作を追跡できるものである。
ここで3Kを参照すると、複数のスレッド割り当てのための返却アドレススタック(RAS)動作が示されており、一般的な参照符号300Kで表されている。この動作は例えば、図3GのIFU304Gで実行できるもので、図3Hの動作310Hでも表されている。命令のうち、本発明の実施態様でサポートされるのは(i)予測が開始されるか開始されずターゲットが分かっている場合の分岐命令、(ii)常に開始されターゲットが分かっている場合のジャンプ命令、(iii)常に開始されターゲットがレジスタおよび/または未知の内容を持つスタックから回収される場合のジャンプレジスタである。
図3Kの動作例では、ジャンプアンドリンク(JAL)命令を発生させて(302K)動作を開始するようにできる。JALに応答して、プログラムカウンタ(PC)を返却アドレススタック(RAS)(304K)に配置できる。RASの一例がスタック312Kとして示されており、1つの実施態様では、スタック312Kはネストされたサブルーチンコールを収容するための先入れ後出し(FILO)タイプのスタックである。スタック312KにPCを配置するのとほぼ平行に、サブルーチンコールを行うことができる(306K)。その後、サブルーチン命令に関連するさまざまな動作が発生できる(308K)。いったんサブルーチンフローが完了すると、返却アドレスをスタック312K(310K)から回収でき、なんらかの分岐遅延(314K)に引き続きメインプログラムが継続できる(316K)。
複数のスレッド動作の場合、スタック312Kを区切ることができこれによりエントリが多数のスレッドにわたって動的に構成されるようになる。区切りはアクティブなスレッドの数を収容するように変更できる。従って、たった1つのスレッドだけ使用中の場合は、スタック312Kのために割り当てられているエントリの全体のセットをそのスレッドのために使うことができる。しかしながら、もし複数のスレッドがアクティブな場合は、スタック312Kのエントリはスレッドを収容してスタック312Kの利用可能な空間を効率的に利用するように動的に構成できる。
従来のマルチプロセッサ環境では割り込みは典型的には異なるCPUに与えられ、ラウンドロビンベースで、または割り込みをハンドリングするための特定のCPUを指定することによって処理を行う。しかしながら本発明の実施態様によると、図3Jにより詳細に動作が示されている図2AのPIC226はバランスを負荷しマルチスレッド化マシンで複数のCPU/コアおよびスレッドにわたって割り込みを宛て先変更する能力を持ち得る。図3Jを参照して上で説明したように、IRT308Jは属性314Jに示すようにそれぞれの割り込みのための属性を備えることができる。割り込みハンドリング外である特定のCPUおよび/またはスレッドがマスクされるようにすることによって負荷バランス化を簡単にするために、CPUマスク316−1Jを使うことができる。1つの実施態様では、CPUマスクは32ビットの幅とでき、それぞれが4つのスレッドを持つ8個のコアがどのように組み合わせられてもマスクできるようになっている。一例として、図2Aのコア−2 210cおよびコア−7 210hは利用可能性の高いプロセッサとなるように意図されており、従って図3JのCPUマスク316−1JはIRT308Jにそれぞれの割り込みのために「1」に設定されている対応するビットセットを持つことでコア−2またはコア−7ではどのような割り込み処理も不可能となっている。
さらに、CPU/コアならびにスレッドの両方について、特定の割り込みについてマスクされていないこれらのコアおよび/またはスレッドの間でラウンドロビン体系(例えばポインタによって)を採用できる。このやり方により、最大のプログラマブル柔軟性が割り込み負荷バランス化に見込まれる。従って、図3Jの動作300Jは2つのレベルの割り込みスケジューリング、すなわち(i)上述のような306Jのスケジューリング、および(ii)CPU/コアおよびスレッドマスキングを含む負荷バランス化アプローチを見込んでいる。
本発明の実施態様の他の側面として、スレッド−対−スレッド割り込みが可能とされており、これにより1つのスレッドが他のスレッドに割り込むことができる。このようなスレッド−対−スレッド割り込みは遠隔通信アプリケーションで慣行されているように異なるスレッドの同期化に使える。また、本発明の実施態様によると、このようなスレッド−対−スレッド割り込みはどのスケジューリングも経なくてもよい。
C.データスイッチおよびL2キャッシュ
ここで図2Aに戻ると、例示的なプロセッサは高性能を促すさらに多数の構成部材を備えてよく、8方向セット連想オンチップレベル−2(L2)キャッシュ(2MB);キャッシュコヒーレントハイパートランスポートインターフェース(768Gbps);ハードウェア加速サービス品質(QOS)および分類;セキュリティハードウェア加速−AES、DES/3DES、SHA−1、MD5、およびRSA;パケット順序付けサポート;文字列処理サポート;TOEハードウェア(TCPオフロードエンジン);および多数のIO信号が挙げられる。本発明の1つの実施態様の1つの側面では、データスイッチ相互接続216をプロセッサコア210a−hのそれぞれに、それぞれのデータキャッシュ212a−hによって接合してよい。また、メッセージングネットワーク222をプロセッサコア210a−hのそれぞれにそれぞれの命令キャッシュ214a−hによって接合してよい。さらに、本発明の1つの実施態様の1つの側面では、最新型遠隔通信プロセッサはまた、データスイッチ相互接続に接合されたL2キャッシュ208も備えることができ、プロセッサコア210a−hにアクセス可能な情報を保存するように構成できる。例示されている実施態様では、L2キャッシュはプロセッサコアと同じ数のセクション(しばしばバンクと呼ばれる)を備えている。この例を図4Aを参照しながら説明するが、より多くのまたはより少ない数のL2キャッシュセクションを使うことも可能である。
上で説明したように、本発明の実施態様はMOSI(変形、自身の、共有の、無効な)プロトコルを使うキャッシュコヒーレンスの維持を含み得る。「自身の」状態を追加すると、汚染されたキャッシュラインをプロセスコア全体にわたって共有させることによって「MSI」プロトコルが改善される。特に、本発明の実施例の一例は、8つのプロセッサコアならびに入/出力装置の32ハードウェアコンテキストまでで駆動中のソフトウェアに対してメモリのフルコヒーレントビューを提示し得る。L1およびL2キャッシュ(例えば、図2Aの212a−hおよび208のそれぞれ)ヒエラルキーにわたってMOSIプロトコルを使ってよい。さらに、すべての外部参照(例えば、入/出力装置によって開始されたもの)はL1およびL2キャッシュをスヌープさせることでデータのコヒーレンスおよび一貫性を確実なものとできる。1つの実施態様では、以下により詳細に説明するように、リングベースのアプローチを使ってマルチプロセッシングシステムでキャッシュコヒーレンスを実現してよい。一般には、コヒーレンスを維持するために1つのデータについてたった1つの「ノード」だけが所有者となり得る。
本発明の実施態様の1つの側面によると、L2キャッシュ(例えば、図2Aのキャッシュ208)は2MBで、ラインサイズが32Bの8方向セット連想統合化(すなわち命令およびデータ)キャッシュであり得る。さらに、サイクルごとに8つまでの同時参照がL2によって受け取られることが可能である。L2アレーはコアクロックの約半分の速度で駆動し得るが、アレーはパイプライン化されて、アレー全体にわたって約2つのコアクロック分の待ち時間でコアクロックごとにすべてのバンクによって要求が受け取られるようになっている。また、L2キャッシュ設計はL1キャッシュを「包含しない」ようにでき全体のメモリ容量が効果的に増加されるようにできる。
L2キャッシュを実装する場合のECC保護については、キャッシュデータおよびキャッシュタグアレーの両方をSECDED(単一エラー訂正二重エラー検出)エラー保護コードによって保護できる。従って、ソフトウェアの介入なしにすべての単一ビットエラーが訂正される。また、訂正不可能なエラーが検出された場合は、キャッシュラインが改変されるときはいつでもこれらをコードエラー例外としてソフトウェアに手渡すことができる。1つの実施態様では、以下により詳細に説明するように、それぞれのL2キャッシュは構成部材のリングにあるいずれの他の「エージェント」とも同じように動作し得る。
本発明の実施態様の他の側面によると、データ移動リングにある「ブリッジ」を使ってメモリおよび入/出力トラフィックを最適に宛先変更できる。図2Aのスーパーメモリ入/出力ブリッジ206およびメモリブリッジ218は物理的に別々の構造体であり得るが、これらは概念的には同じである。ブリッジは、例えばメインメモリおよび入/出力アクセスのためのメインゲートキーパーである。さらに、1つの実施態様では、入/出力はメモリマップ化できる。
ここで図4Aを参照すると、本発明の1つの実施態様によるデータスイッチ相互接続(DSI)リングアレンジメントが示されており、一般的な参照符号400Aで表されている。このようなリングアレンジメントは図2Aのスーパーメモリ入/出力ブリッジ206およびメモリブリッジ218と一緒にDSI216を実装したものとできる。図4Aでは、ブリッジ206はメモリ&入/出力およびリングの残り部分との間のインターフェースを可能とすることができる。リング素子402a−jはそれぞれ図2Aのコア210a−hおよびメモリブリッジの1つに対応している。従って、L2hおよびコア210hにインターフェースしている402hにわたって、素子402aはL2キャッシュL2aおよびコア−0 210aにインターフェースしており、素子402bはL2bおよびコア210bにインターフェースしているなどである。ブリッジ206はリングに素子402iを備えており、ブリッジ218はリングに素子402jを備えている。
図4Aに示すように、実施態様の一例では4つのリング、すなわち要求リング(RQ)、データリング(DT)、スヌープリング(SNP)、および応答リング(RSP)がリング構造体を作り上げることができる。リング上の通信はパケットベースの通信である。例示的なRQリングパケットとしては、宛て先ID,トランザクションID,アドレス、要求タイプ(例えばRD、RD_EX、WR、UPG)、有効ビット、キャッシュ可能表示、およびバイト使用可能などが挙げられる。例示的なDTリングパケットとしては、例えば宛て先ID、トランザクションID、データ、ステータス(例えば、エラー表示)、および有効ビットが挙げられる。例示的なSNPリングパケットとしては、例えば宛て先ID、有効ビット、CPUスヌープ応答(例えば、きれいな、共有の、または汚染された表示)、L2スヌープ応答、ブリッジスヌープ応答、再試行(CPU、ブリッジ、およびL2のそれぞれについて)、AERR(例えば不法な要求、要求パリティ)、およびトランザクションIDが挙げられる。例示的なRSPリングパケットとしては、SNPのすべてのフィールドが挙げられるが、RSPリングの「進行中の(in−progress)」ステータスとは対照的に「最終」ステータスを表示してよい。
ここで図4Bを参照すると、本発明の1つの実施態様によるDSIリング構成部材が図示されており、一般的な参照符号400Bで表されている。1つの実施態様では、リング構成部材402b−0は4つのリングRQ、DT、SNP、またはRSPのうちの1つと対応し得る。同様に、リング構成部材402b−1、402b−2、および402b−3はそれぞれ4つのリングのうちの1つと対応し得る。一例として、「ノード」はリング構成部材402b−0、402b−1、402b−2、および402b−3の合計によって形成できる。
受信データまたは「リングイン」はフリップフロップ404Bで受信できる。フリップフロップ404Bの出力はフリップフロップ406Bおよび408Bならびにマルチプレクサ416Bに接続できる。フリップフロップ406Bおよび408Bの出力はローカルデータアプリケーションに使うことができる。フリップフロップ410Bは関連するL2キャッシュからの入力を受信できると同時にフリップフロップ412Bは関連するCPUからの入力を受信できる。フリップフロップ410Bおよび412Bからの出力は「マルチプレクサ414Bに接続できる。マルチプレクサ414Bの出力はマルチプレクサ416Bに接続できマルチプレクサ416Bの出力は送出データまたは「リングアウト」に接続できる。また、リング構成部材402b−0は有効なビット信号を受信できる。
一般に、リングインで受信されたより優先度の高いデータはもしデータが有効であれば(例えば、有効ビット=「1」)マルチプレクサ416Bによって選択されることになる。もし有効でなければ、データはマルチプレクサ414Bを介してL2かCPUのいずれかから選択できる。さらに、この例では、もしリングインで受信されたデータがローカルノードを意図していれば、フリップフロップ406Bおよび/または408Bはデータを再び受け取る前にリング全体にわたってデータを渡すのではなくデータをローカルコアへと渡すことができる。
ここで図4Cを参照すると、本発明の1つの実施態様によるDSIにおけるデータ回収例のフロー図が示されており、一般的な参照符号400Cで表されている。フローはスタート452で開始でき、要求を要求リング(RQ)(454)に配置できる。リング構造にあるそれぞれのCPUおよびL2は要求されたデータ(456)があるかどうかをチェックできる。また、要求は、リング(458)に取り付けられたそれぞれのメモリブリッジで受け取ることができる。もしCPUまたはL2のいずれかが要求されたデータを持っていれば(460)、データはデータを持っているノードによってデータリング(DT)に置くことができる(462)。もしCPUまたはL2のいずれも要求されたデータを見出さなかった場合(460)、データはメモリブリッジ(464)のいずれかによって回収できる。データを見出したノードまたはメモリブリッジのいずれかによってスヌープリング(SNP)および/または応答リング(RSP)に承認を配置することができ(466)、そして終了でフローを完了できる(468)。1つの実施態様では、メモリブリッジによるSNPおよび/またはRSPリングに対する承認がほのめかされている。
他の実施態様では、メモリブリッジはメモリ要求を開始するのにL2キャッシュのいずれにもデータが見出されなかったという表示をまたなくてもよい。代わりに、メモリ要求(例えば、DRAMに対する)を投機的にイシューしてよい。このアプローチでは、もしDRAMからの応答の前にデータが見出されれば、以降の応答は廃棄できる。投機的なDRAMアクセスは、比較的長時間のメモリ待ち時間の影響を緩和するのに役立つことができる。
D.メッセージ手渡しネットワーク
図2Aではまた、本発明の1つの実施態様の1つの側面において、最新型遠隔通信プロセッサは、メッセージングネットワーク222および通信ポート240a−fのグループに接合され、メッセージングネットワーク222および通信ポート240a−fの間で情報を手渡すように構成されているインターフェーススイッチ相互接続(ISI)224を備えることができる。
ここで図5Aを参照すると、本発明の1つの実施態様による高速メッセージングリング構成部材またはステーションが示されており、一般的な参照符号500Aで表されている。関連するリング構造は例えば、MIPSアーキテクチャの延長としてポイント−対−ポイントメッセージを収容し得る。「リングイン」信号は挿入待ち行列502Aおよび受信待ち行列(RCVQ)506Aの両方に接続できる。挿入待ち行列はまた、出力が「リングアウト」とできるマルチプレクサ504Aにも接続できる。挿入待ち行列は常に優先されリングが後退されないようになっている。CPUコアのための関連するレジスタが点線の囲い520Aおよび522Aに示されている。囲い520A内では、バッファRCVバッファ510A−0からRCVバッファ510A−NがRCVQ506Aとインターフェースできる。マルチプレクサ504Aへの第2の入力は送信待ち行列(XMTQ)に接続できる。囲い520A内ではまた、バッファXMTバッファ512A−0からXMTバッファ512A−NがXMTQ508Aとインターフェースできる。ステータス514Aレジスタもまた囲い520Aに見出せる。点線の囲い522A内には、メモリマップ化構成レジスタ516Aおよびクレジットベースのフロー制御518Aを見出すことができる。
ここで図5Bを参照すると、図5Aのシステムのためのメッセージデータ構成が示されており、一般的な参照符号500Bで表されている。識別フィールドはスレッド502B、ソース504B、および宛て先508Bを備え得る。また、メッセージサイズ表示子サイズ508Bも存在できる。識別フィールドおよびメッセージサイズ表示子はサイドボード514Bを形成できる。それ自体が送信されるメッセージまたはデータ(例えば、MSG512B)は510B−0、510B−1、510B−2、および510−3などのいくつかの部分を備えることができる。実施態様によると、メッセージは原子的であり全メッセージは割り込みできないようになっている。
クレジットベースのフロー制御は、例えばメッセージ送信を管理するためのメカニズムを提供できる。1つの実施態様では、ターゲット/レシーバのためのすべての送信器に割り当てられているクレジットの総数はその受信待ち行列(例えば、図5AのRCVQ506A)にあるエントリ数の合計を上回ることはできない。例えば、1つの実施態様では256がクレジットの総数であり得る、なぜならそれぞれのターゲット/受け取り手のRCVQのサイズが256エントリであり得るからである。一般に、ソフトウェアはクレジットの割り当てを制御し得る。ブートアップ時には、例えば、それぞれの送り手/送信器または参加エージェントはいくつかのデフォルト番号のクレジットを割り当てられ得る。そしてソフトウェアは送信器ベースで自由にクレジットを割り当ててよい。例えば、それぞれの送り手/送信器はソフトウェアによってシステムにある他のターゲット/受け取り手のそれぞれについて設定されているプログラム可能な数のクレジットを持つことができる。しかしながら、システム内のすべてのエージェントが送信クレジットの分配におけるターゲット/受け取り手として参加しなければならないというわけではない。1つの実施態様では、コア−0クレジットがコア−1、コア−2、...、コア−7、RGMII_0、RGMII_1、XGMII/SPI−4.2_0、XGMII/SPI−4.2_1、POD0、POD1、...、POD4などのそれぞれ1つづつについてプログラムできる。以下のテーブル1は受け取り手としてのコア−0についてのクレジット分布の例を示している。
テーブル1
┌──────────┬───────────────────────┐
│送信エージェント │割り当てられているクレジット(合計256個) │
├──────────┼───────────────────────┤
│コア−0 │0 │
├──────────┼───────────────────────┤
│コア−1 │32 │
├──────────┼───────────────────────┤
│コア−2 │32 │
├──────────┼───────────────────────┤
│コア−3 │32 │
├──────────┼───────────────────────┤
│コア−4 │0 │
├──────────┼───────────────────────┤
│コア−5 │32 │
├──────────┼───────────────────────┤
│コア−6 │32 │
├──────────┼───────────────────────┤
│コア−7 │32 │
├──────────┼───────────────────────┤
│POD0 │32 │
├──────────┼───────────────────────┤
│RGMIL0 │32 │
├──────────┼───────────────────────┤
│ALL Others│0 │
└──────────┴───────────────────────┘
この例では、コア−1がコア−0へサイズ2のメッセージを送信する場合(例えば2つの64ビットデータ素子)、コア−0のコア−1クレジットは2だけ減分される(例えば、32から30へ)。コア−0がメッセージを受信する場合、メッセージはコア−0のRCVQに進むことができる。いったんコア−0のRCVQからメッセージが取り除かれると、そのメッセージ保存空間は本質的に開放されるまたは利用可能とされ得る。そしてコア−0は送り手に信号を(例えば、コア−1に解放クレジット信号を)送信してさらに利用可能な空間の量(例えば2)を知らせる。もしコア−1がコア−0から送られてくる解放クレジット信号に対応することなくコア−0に対してメッセージを送り続ける場合、最終的にはコア−1についてのクレジット数はゼロとなることができコア−1はコア−0へもはやどのようなメッセージも送ることができない。例えば、コア−0が解放クレジット信号で応答する場合にのみ、コア−1はコア−0へさらなるメッセージを送信できる。
ここで図5Cを参照すると、本発明の1つの実施態様によるさまざまなエージェントがどのように高速メッセージングネットワーク(FMN)に取り付けられるかの概念図が示されており、一般的な参照符号500Cで表されている。8つのコア(コア−0 502C−0からコア−7 502C−7)が関連するデータキャッシュ(D−キャッシュ504C−0から504C−7)および命令キャッシュ(I−キャッシュ506C−0から506C−7)がFMNにインターフェースできる。さらに、ネットワーク入/出力インターフェースグループもまたFMNにインターフェースできる。ポートAに関連して、DMA508C−A、パーサ/分類器512C−A、およびXGMII/SPI−4.2ポートA514C−Aがパケット分配エンジン(PDE)510C−Aを介してFMNにインターフェースできる。同様に、ポートBについては、DMA508C−B、パーサ/分類器512C−B、およびXGMII/SPI−4.2ポートB514C−BがPDE510C−Bを介してFMNにインターフェースできる。また、DMA516C、パーサ/分類器520C、RGMIIポートA 522C−A、RGMIIポートB 522C−B、RGMIIポートC 522C−C、RGMIIポートD 522C−DはPDE518Cを介してFMNにインターフェースできる。また、DMA526Cを備えるセキュリティ加速エンジン524CおよびDMAエンジン528CがFMNにインターフェースできる。
本発明の1つの実施態様の1つの側面として、FMNにあるすべてのエージェント(例えば図5Cに示すコア/スレッドまたはネットワーキングインターフェース)はFMNにある他のいずれのエージェントにもメッセージを送信できる。この構造はエージェント同士の間での高速パケット移動も見込むことができるが、ソフトウェアはいずれの他の適切な目的のためにもそのようにメッセージ保有者の構文および意味論を定義することによってメッセージングシステムの使用を変更することができる。いずれの場合でも、FMNにあるエージェントはそれぞれ、図5Aを参照して上で説明したように送信待ち行列(例えば508A)および受信待ち行列(例えば506A)を備えている。従って、特定のエージェント向けのメッセージは関連する受信待ち行列にドロップすることができる。特定のエージェントから生じるすべてのメッセージは関連する送信待ち行列に入れることができ、その後FMNに押し出されて目的とする受け取り手に送達される。
本発明の実施態様の他の側面では、コア(例えば、コア−0 502C−0からコア−7 502C−7または図5C)のすべてのスレッドは待ち行列資源を共有できる。メッセージ送信を絶対に公平とするために、「ラウンドロビン」体系を実装してメッセージを受け取り送信待ち行列に入れることができる。このことですべてのスレッドが、たとえそれらのうちの1つがより速い速度でメッセージを送信している場合でもメッセージを送れることが保証できる。従って、所定の送信待ち行列はメッセージが送信される時点でいっぱいである可能性がある。このような場合、すべてのスレッドは、送信待ち行列がより多くのメッセージを受け取るだけの空きを持つまで、1つのメッセージをそれぞれコア内で待ち行列に並ばせることができる。図5Cに示すように、ネットワーキングインターフェースはPDEを使うことで、入ってくるパケットを指定されたスレッドに分配する。さらに、ネットワーキングインターフェースについて送出されるパケットはパケット順序付けソフトウェア中を引き回すことができる。
ここで図5Dを参照すると、従来の処理システムのネットワークトラフィックが示されており、一般的な参照符号500Dで表されている。パケット入力はパケット分配502Dによって受信でき、パケット処理(504D−0から504D−3)のために送られる。パケットソート/順序付け506Dはパケット処理からの出力を受け取ることができ、パケット出力を提供できる。このようなパケットレベル平行処理アーキテクチャは本質的にはネットワーキングアプリケーションに適しているが、効果的なアーキテクチャは入ってくるパケット分配および送出されるパケットソーティング/順序付けのために効率的なサポートを提供して平衡パケット処理の利点を最大としなければならない。図5Dに示すように、あらゆるパケットは単一の分配(例えば、502D)および単一のソーティング/順序付け(例えば、506D)を通らなければならない。これらの動作は両方ともパケットの流れに対して直列化効果を持っており、システムの性能全体がこれら2つの機能の減速によって判断されるようになっている。
ここで図5Eを参照すると、本発明の1つの実施態様によるパケットフローが示されており、一般的な参照符号500Eによって表されている。このアプローチは、システムを通ってパケットが流れることを可能とする大規模な(すなわち、拡張性のある)高性能アーキテクチャを提供する。ネットワーキング入力502EはRGMII、XGMII、および/またはSPI−4.2インターフェース構成ポートを備えることができる。パケットが受信された後、これらは例えば、パケット分配エンジン(PDE)504Eを介して高速メッセージングネットワーク(FMN)を使ってパケット処理506Eのためのスレッド、すなわちスレッド0、1、2などからスレッド31までのうちの1つに分配できる。選択されたスレッドはパケットヘッダまたはペイロードによってプログラムされたように1つ以上の機能を実行でき、そしてパケットをパケット順序付けソフトウェア508Eに置く。他の実施態様として、例えば図2Aの囲い236に示すようなパケット順序付け装置(POD)を図5Eの508Eの代わりに使ってよい。いずれの実装においても、この機能はパケット順序付けをセットアップしてこれをFMNを介して送出ネットワーク(例えば、ネットワーキング出力510E)へと手渡す。ネットワーキング入力と同じく、送出ポートは例えば構成されたRGMII、XGMII、またはSPI−4.2インターフェースのいずれであってもよい。
E.インターフェーススイッチ
本発明の実施態様の1つの側面では、図2Aに示すようにFMNはそれぞれのCPU/コアにインターフェースできる。このようなFMN−対−コアインターフェース化はプッシュ/ポップ命令、メッセージ待ち命令、およびメッセージ到着割り込みを備えることができる。従来のMIPSアーキテクチャでは、コプロセッサまたは「COP2」空間が割り当てられている。しかしながら本発明の実施態様によると、COP2に指定されている空間はかわりにFMNを介したメッセージング使用のために予約されている。1つの実施態様では、ソフトウェアが実行可能な命令としてはメッセージ送信(MsgSnd)、メッセージ負荷(MsgLd)、COP2へのメッセージ(MTC2)、COP2からのメッセージ(MFC2)、およびメッセージ待ち(MsgWait)が挙げられる。MsgSndおよびMsgLd命令はターゲット情報ならびにメッセージサイズ表示を備えることができる。MTC2およびMFC2命令は、図5Aのステータス514Aおよびレジスタ522Aのローカル構成レジスタから/へのデータ転送を備えることができる。MsgWait命令は、メッセージが利用可能となるまで(すなわち、メッセージ到着への割り込み)本質的に「休眠」状態に入る動作を備えることができる。
本発明の実施態様の他の側面として、高速メッセージング(FMN)リング構成部材を「バケット」に組織化することができる。例えば、図5AのRCVQ506AおよびXMTQ508Aはそれぞれ、上述したようなスレッド概念と同じやり方で複数のバケットにわたって区切ってよい。
本発明の実施態様の1つの側面では、パケット分配エンジン(PDE)はXGMII/SPI−4.2インターフェースおよび4つのRGMIIインターフェースのそれぞれを備えて、入ってくるパケットを処理スレッドへと効率的かつ負荷バランス化された状態で分配できるようにする。高いスループットネットワーキングアプリケーションにとってはハードウェアで加速されたパケット分配が重要である。PDEがなくてもパケット分配は例えばソフトウェアによってハンドリングできる。しかしながら64Bパケットの場合、XGMIIタイプのインターフェースでこの機能を実行するには約20nsだけしか利用できない。さらに、単一プロデューサ複数消費者の状況により、待ち行列ポインタ管理をハンドリングしなければならないであろう。このようなソフトウェアのみによる解決策が、システム全体の性能に影響することなく必要なパケット送達速度についていくことは単純には不可能である。
本発明の1つの実施態様によると、PDEは処理スレッドとしてソフトウェアによって指定されているスレッドに迅速にパケットを分配するために、高速メッセージングネットワーク(FMN)を利用できる。1つの実施態様では、PDEは目的とする受け取り手の間でパケットを分配するために重み付けラウンドロビン体系を実装できる。1つの実施態様では、パケットは実際には移動されないが、ネットワーキングインターフェースがそれを受け取るにつれてメモリに書き込まれる。PDEは「パケット記述子」をメッセージに挿入でき、そしてこれをソフトウェアによって指定された、受け取り手のうちの1つに送信できる。このことはまた、すべてのスレッドがいずれかの所定のインターフェースからのパケット受け取りに参加しなければならないというわけではないことを意味する。
ここで図6Aを参照すると、本発明の1つの実施態様による等しく4つのスレッドにわたるPDE分配パケットが示されており、一般的な参照符号600Aで表されている。この例では、ソフトウェアはパケットを受け取る場合に備えて4から7のスレッドを選択し得る。そしてPDEは例えばこれらのスレッドのうちの1つを順次選択してそれぞれのパケットを分配する。図6Aではネットワーキング入力は、スレッド4、5、6、または7のうちのいずれか1つを選択してパケットを分配できるパケット分配エンジン(PDE)602Aによって受け取られることができる。この特定の例では、スレッド4は時間t1でパケット1を受け取ることができ、時間t5でパケット5を受け取ることができる。スレッド5は時間t2でパケット2を受け取ることができ、時間t6でパケット6を受け取ることができる。スレッド6は時間t3でパケット3を受け取ることができ、時間t7でパケット7を受け取ることができる。スレッド7は時間t4でパケット4を受け取ることができ、時間t8でパケット8を受け取ることができる。
ここで図6Bを参照すると、本発明の1つの実施態様によるラウンドロビン体系を使ったPDE分配パケットが示されており、一般的な参照符号600Bで表されている。FMNを参照して上で説明したように、ソフトウェアはあらゆる送信器からのすべてのレシーバを見込んだクレジットの数をプログラムできる。PDEは本質的には送信器であるため、クレジット情報を使ってパケットを「ラウンドロビン」なやり方で分配することもできる。図6Bでは、図示されるようにPDE602Bはネットワーキング入力を受信でき、パケットを指定のスレッド(例えば、スレッド0からスレッド3)に提供できる。この例では、スレッド2(例えば、レシーバ)が他のスレッドよりもパケットをより遅く処理中であり得る。PDE602Bはこのレシーバからのクレジット可用性のスローペースを検出でき、より効率的に処理中のスレッドにパケットを案内することによって調整できる。特に、スレッド2はPDE内で得られる最小数のクレジットをサイクルt11で持っている。サイクルt11におけるパケット11の次の論理的なレシーバがスレッド2であったとしても、PDEはこのスレッドにおける処理遅延を識別でき、それに従ってパケット11の分配に最適なターゲットとしてスレッド3を選択できる。この特定の例では、スレッド2は他のスレッドに比較して処理が遅延していることを提示し続けることができ、その結果、PDEはこのスレッドへの分配を回避できる。また万が一、レシーバのいずれも新しいパケットを受け取るだけの空きを持っていない場合は、PDEはパケット待ち行列をメモリへと拡張できる。
ネットワーキングアプリケーションのほとんどはパケットが無作為な到着順序となっていることに対してあまり強くないので、パケットを順序良く送達することが望ましい。さらに、システム内で平行処理とパケット順序向けの特性を兼備することは困難である。1つのアプローチとしては順序付け作業をソフトウェアに託すことが挙げられるが、この場合はライン速度を維持することが困難となる。他のオプションとしては、すべてのパケットを単一のフローで同じ処理スレッドに送って順序付けが本質的に自動的となるようにすることが挙げられる。しかしながら、このアプローチはパケット分配の前にフロー識別(すなわち分類)が必要となり、これによりシステムの性能が落ちる。他の欠点は、最大フローのスループットが単一のスレッドの性能によって決定されることである。このことは単一の大規模フローがシステムを横切るにつれてスループットを維持する妨げとなる。
本発明の1つの実施態様によると、パケット順序付け装置(POD)と呼ばれる最新型ハードウェア加速構造を使うことができる。PODの目的は、パケットをネットワーキング出力インターフェースに送られる前に再順序付けすることによって平行処理スレッドを無制限に使えるようにすることである。ここで図6Cを参照すると、本発明の1つの実施態様によるパケットライフサイクル中のPOD配置が示されており、一般的な参照符号600Cで表されている。この図は本質的にはプロセッサにわたるパケットのライフサイクル中のPODの論理的な配置を図示している。この特定の例では、図示されるように、PDE602Cはパケットをスレッドに送信できる。スレッド0は時間t1でパケット1を受信でき、時間t5でパケット5を受信できるなどとなっていてサイクルtn-3まで続いている。スレッド1は時間t2でパケット2を受信でき、時間t6でパケット6を受信できるなどとなっていてサイクルtn-2まで続いている。スレッド2は時間t3でパケット3を受信でき、時間t7でパケット7を受信できるなどとなっていて時間n-1まで続いている。最終的に、スレッド3は時間t4でパケット4を受信でき、時間t8でパケット8を受信できるなどとなっていて時間tnまで続いている。
パケット順序付け装置(POD)604Cは、異なるスレッドからパケットを受信してネットワーキング出力へと送信する際のパケットソータと考えることができる。所定のネットワーキングインターフェースによって受信されたすべてのパケットにはシーケンス番号を割り当てることができる。そしてこのシーケンス番号はPDEによって残りのパケット情報とともに作業スレッドへと転送できる。いったんスレッドがパケットの処理を完了すると、このスレッドは元のシーケンス番号とともにパケット記述子をPODへと転送できる。PODはこれらのパケットを、例えば受信インターフェースによって割り当てられた元々のシーケンス番号によって厳密に決定された順序で外付けのインターフェースへと解放できる。
ほとんどのアプリケーションではPODは無作為な順序でパケットを受信する、なぜならパケットは典型的には無作為な順序でスレッドによって処理されるからである。PODは受信インターフェースによって割り当てられたシーケンス番号に基づいて待ち行列を確立することができ、パケットを受信と同時にソートし続けることができる。PODは受け取りインターフェースによって割り当てられた順序で所定の外付けインターフェースにパケットをイシューできる。ここで図6Dを参照すると、本発明の1つの実施態様によるPOD外付け分配が図示されており、一般的な参照符号600Dで表されている。パケット順序付け装置(POD)602Dに見られるように、パケット2および4は最初はスレッドを実行することによってPODに送信されることができる。いくつかのサイクル後、スレッドはパケット3で作業を完了できこれをPODに配置できる。パケットはまだ順序付けされていなくてよい、なぜならパケット1がまだ配置されていないからである。最終的にはパケット1がサイクルt7で完了され、それに従ってPODに配置される。そしてパケットは順序付けされることができPODは1、2、3、4の順序でパケットをイシューし始めることができる。もしパケット5が次に受信される場合は、これはパケット4に引き続く出力でイシューされる。残りのパケットは受信されると同時にそれぞれ、次のより高位の数のパケットが受信されるまで待ち行列に保存できる(例えば、深さ512の構造)。このような場合、パケットは外付けのフロー(例えばネットワーキング出力)に追加することができる。
もっとも古いパケットは絶対にPODの到着することがないようにでき、これにより非常駐ヘッドオブラインブロッキング状況を作成できる。適切に取り扱われない場合、このエラー状態によりシステムがデッドロックされる場合がある。しかしながら、実施態様の1つの側面によると、PODには、いったんタイムアウトカウンタが期限切れとなると非到着パケットをリストの先頭でドロップするように設計されているタイムアウトメカニズムが設けられている。タイムアウトカウンタが期限切れとなる前に待ち行列容量(例えば512個の位置)を満たす速度でパケットがPODに入力されることも可能である。実施態様の1つの側面によると、PODが待ち行列容量に到着すると、リストの先頭にあるパケットをドロップすることができ、新しいパケットを受け取ることができる。この動作によりどのようなヘッドオブラインブロッキング状況でも同様に取り除ける。またソフトウェアは、不良なパケット、制御パケット、またはなんらかの他の適切な理由によりある特定のシーケンス番号がPODに入らないようであることに気づく場合がある。このような場合、ソフトウェア制御はPODに「ダミー」の記述子を挿入することで、PODを自動的に反応させる前に非常駐ヘッドオブラインブロッキング状態を排除してよい。
本発明の実施態様によると、5つのプログラマブルPODが(例えばチップで)利用可能であり、包括的な「ソーティング」構造としてみることができる。1つの構造例では、ソフトウェア制御(すなわちユーザーを介して)はPODのうちの4つを4つのネットワーキングインターフェースに割り当てることができ残り1つのPODを包括的なソーティングのために割り当てることができる。さらにPODはソフトウェア単独制御で十分であれば、もしアプリケーションにとって望ましければ単純にバイパスできる。
F.メモリインターフェースおよびアクセス
本発明の実施態様の1つの側面では、最新型遠隔通信プロセッサはさらに、データスイッチ相互接続および少なくとも1つの通信ポート(例えば、囲い220)に接合され、データスイッチ相互接続および通信ポートと通信するように構成されたメモリブリッジ218を備えることができる。
本発明の1つの側面では、最新型遠隔通信プロセッサはさらに、データスイッチ相互接続(DSI)、インターフェーススイッチ相互接続、および少なくとも1つの通信ポート(例えば囲い202、囲い204)に接合されており、データスイッチ相互接続、インターフェーススイッチ相互接続、および通信ポートと通信するように構成されたスーパーメモリブリッジ206を備えることができる。
本発明の実施態様の他の側面では、図4A、4B、および4Cを参照して上で説明したようにリングベースのデータ移動ネットワークにメモリ順序付けを実装できる。
G.結論
本発明の利点としては、コンピュータシステムとメモリとの間で高い帯域幅の通信を効率的かつ費用効果的なやり方で提供できる能力が挙げられる。
例示的な実施態様および最良の形態を説明してきたが、以下の特許請求の範囲で定義されるような本発明の主題および精神にとどまりつつ、開示された実施態様に対して改変および変形を加えることができる。
本発明を図面を参照しながら説明する、図面では、
従来のラインカードを描いている。 本発明の実施態様による例示的な最新型プロセッサを描いている。 本発明の別の実施態様による例示的な最新型プロセッサを描いている。 従来の単一スレッド単一イシュー処理を描いている。 従来の簡素なマルチスレッド化スケジューリングを描いている。 機能停止したスレッドを備えた従来の簡素なマルチスレッド化スケジューリングを描いている。 本発明の1つの実施態様によるイーガーラウンドロビンスケジューリングを描いている。 本発明の1つの実施態様によるマルチスレッド化固定サイクルスケジューリングを描いている。 本発明の1つの実施態様による、イーガーラウンドロビンスケジューリングを備えたマルチスレッド化固定サイクルを描いている。 本発明の1つの実施態様による関連するインターフェースユニットを備えたコアを描いている。 本発明の1つの実施態様によるプロセッサのパイプラインの一例を描いている。 本発明の1つの実施態様によるプロセッサ内のコア割り込みフロー動作を描いている。 本発明の1つの実施態様によるプログラマブルな割り込み中断コントローラ(PIC)動作を描いている。 本発明の1つの実施態様によるマルチスレッド割り当てのための戻りアドレススタック(RAS)動作を描いている。 本発明の1つの実施態様によるデータスイッチ相互接続(DSI)リングアレンジメントを描いている。 本発明の1つの実施態様によるDSIリング構成部材を描いている。 本発明の1つの実施態様によるDSIにおけるデータ回収の一例のフロー図を描いている。 本発明の1つの実施態様による高速メッセージングリング構成部材を描いている。 図5Aのシステムのためのメッセージデータ構造を描いている。 本発明の1つの実施態様による高速メッセージングネットワーク(FMN)に取り付けられたさまざまなエージェントの概念図を描いている。 従来の処理システムにおけるネットワークトラフィックを描いている。 本発明の実施態様によるパケットフローを描いている。 本発明の1つの実施態様によるパケットを4つのスレッドに均等に分配しているパケット分配エンジン(PDE)を描いている。 本発明の1つの実施態様によるラウンドロビンスキームを使ってパケットを分配しているPDEを描いている。 本発明の1つの実施態様によるパケットライフサイクル中のパケット順序付け装置(POD)の配置を描いている。 本発明の1つの実施態様によるPOD外部分配を描いている。

Claims (1)

  1. 一体型回路としてチップ上に形成されたプロセッサであって、
    それぞれがデータキャッシュおよび命令キャッシュを持っている複数のプロセッサコア、
    前記複数のプロセッサコアのそれぞれのデータキャッシュに直接接合され、前記複数のプロセッサコア間でメモリ関連情報を手渡すとともにメモリ関連情報をメモリブリッジを介して前記チップの外部へあるいは外部から送るように構成されているデータスイッチ相互接続リング装置、
    前記データスイッチ相互接続リング装置から離れており、かつ、前記複数のプロセッサコアのそれぞれの命令キャッシュおよび複数の通信ポートと直接接合され、前記複数のプロセッサコアのいずれかと前記複数の通信ポートのいずれかとの間で非メモリ関連メッセージのポイント対ポイント転送を提供するように構成されている高速メッセージングリング構成部材、
    を含む、マルチコアプロセッサ。
JP2006521286A 2003-07-25 2004-07-23 最新型プロセッサ Expired - Fee Related JP4498356B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US49023603P 2003-07-25 2003-07-25
US10/682,579 US20040103248A1 (en) 2002-10-08 2003-10-08 Advanced telecommunications processor
PCT/US2004/023871 WO2005013061A2 (en) 2003-07-25 2004-07-23 Advanced processor

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2008215090A Division JP2009026320A (ja) 2003-07-25 2008-08-25 プロセッサ
JP2009264696A Division JP2010079921A (ja) 2003-07-25 2009-11-20 プロセッサ

Publications (2)

Publication Number Publication Date
JP2007500886A JP2007500886A (ja) 2007-01-18
JP4498356B2 true JP4498356B2 (ja) 2010-07-07

Family

ID=34118823

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2006521286A Expired - Fee Related JP4498356B2 (ja) 2003-07-25 2004-07-23 最新型プロセッサ
JP2008215090A Pending JP2009026320A (ja) 2003-07-25 2008-08-25 プロセッサ
JP2009264696A Pending JP2010079921A (ja) 2003-07-25 2009-11-20 プロセッサ

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2008215090A Pending JP2009026320A (ja) 2003-07-25 2008-08-25 プロセッサ
JP2009264696A Pending JP2010079921A (ja) 2003-07-25 2009-11-20 プロセッサ

Country Status (6)

Country Link
US (1) US20040103248A1 (ja)
JP (3) JP4498356B2 (ja)
KR (1) KR101279473B1 (ja)
HK (1) HK1093796A1 (ja)
TW (1) TW200515277A (ja)
WO (1) WO2005013061A2 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7346757B2 (en) 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US7334086B2 (en) * 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US8478811B2 (en) * 2002-10-08 2013-07-02 Netlogic Microsystems, Inc. Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
US9088474B2 (en) * 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
US7961723B2 (en) 2002-10-08 2011-06-14 Netlogic Microsystems, Inc. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US8037224B2 (en) 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US7627721B2 (en) 2002-10-08 2009-12-01 Rmi Corporation Advanced processor with cache coherency
US8266379B2 (en) * 2003-06-02 2012-09-11 Infineon Technologies Ag Multithreaded processor with multiple caches
US20060045009A1 (en) * 2004-08-30 2006-03-02 Ken Madison Device and method for managing oversubsription in a network
TWI277872B (en) * 2004-10-19 2007-04-01 Via Tech Inc Method and related apparatus for internal data accessing of computer system
JP4981041B2 (ja) * 2005-06-29 2012-07-18 インテル コーポレイション キャッシュする方法、装置及びシステム
US7454590B2 (en) * 2005-09-09 2008-11-18 Sun Microsystems, Inc. Multithreaded processor having a source processor core to subsequently delay continued processing of demap operation until responses are received from each of remaining processor cores
US7383415B2 (en) 2005-09-09 2008-06-03 Sun Microsystems, Inc. Hardware demapping of TLBs shared by multiple threads
GB0519981D0 (en) * 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
US9596324B2 (en) 2008-02-08 2017-03-14 Broadcom Corporation System and method for parsing and allocating a plurality of packets to processor core threads
JP4858468B2 (ja) * 2008-03-12 2012-01-18 日本電気株式会社 プロトコル処理装置及び処理方法
US8190820B2 (en) * 2008-06-13 2012-05-29 Intel Corporation Optimizing concurrent accesses in a directory-based coherency protocol
US8412911B2 (en) * 2009-06-29 2013-04-02 Oracle America, Inc. System and method to invalidate obsolete address translations
US9038034B2 (en) * 2009-12-22 2015-05-19 Intel Corporation Compiling for programmable culling unit
KR101103818B1 (ko) * 2010-01-22 2012-01-06 한국과학기술원 메모리 관리 유닛 제어 장치, 이를 포함하는 멀티 코어 프로세서, 컴퓨터 시스템 및 메모리 관리 유닛 제어 방법
US20120017214A1 (en) * 2010-07-16 2012-01-19 Qualcomm Incorporated System and method to allocate portions of a shared stack
WO2012144149A1 (ja) * 2011-04-19 2012-10-26 パナソニック株式会社 マルチスレッドプロセッサ、マルチプロセッサシステム、実行装置、プロセッサボード
CN102163320B (zh) * 2011-04-27 2012-10-03 福州瑞芯微电子有限公司 一种图像处理专用可配置的mmu电路
US8595464B2 (en) 2011-07-14 2013-11-26 Oracle International Corporation Dynamic sizing of translation lookaside buffer for power reduction
WO2013018230A1 (ja) * 2011-08-04 2013-02-07 富士通株式会社 データ処理システムおよびデータ処理方法
JPWO2013018230A1 (ja) * 2011-08-04 2015-03-05 富士通株式会社 データ処理システムおよびデータ処理方法
US9477600B2 (en) * 2011-08-08 2016-10-25 Arm Limited Apparatus and method for shared cache control including cache lines selectively operable in inclusive or non-inclusive mode
KR101421232B1 (ko) * 2012-10-25 2014-07-21 주식회사 시큐아이 패킷 처리 장치, 방법 및 컴퓨터 판독 가능한 기록 매체
EP3211518A1 (en) * 2014-10-21 2017-08-30 Kabushiki Kaisha Tokyo Kikai Seisakusho Image processing device
US10007619B2 (en) * 2015-05-29 2018-06-26 Qualcomm Incorporated Multi-threaded translation and transaction re-ordering for memory management units
EP3107197B1 (en) * 2015-06-16 2022-01-19 Mitsubishi Electric R&D Centre Europe B.V. System and method for controlling the operation of a multi-die power module
US9838321B2 (en) * 2016-03-10 2017-12-05 Google Llc Systems and method for single queue multi-stream traffic shaping with delayed completions to avoid head of line blocking
US10664306B2 (en) * 2017-01-13 2020-05-26 Arm Limited Memory partitioning
US20180203807A1 (en) * 2017-01-13 2018-07-19 Arm Limited Partitioning tlb or cache allocation
WO2019093352A1 (ja) * 2017-11-10 2019-05-16 日本電気株式会社 データ処理装置
DE102019101853A1 (de) * 2018-01-31 2019-08-01 Nvidia Corporation Dynamische Partitionierung von Ausführungsressourcen

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0222757A (ja) * 1988-07-12 1990-01-25 Hitachi Ltd マルチプロセッサのメモリシステム
US5905729A (en) * 1995-07-19 1999-05-18 Fujitsu Network Communications, Inc. Mapping a data cell in a communication switch
US6084856A (en) * 1997-12-18 2000-07-04 Advanced Micro Devices, Inc. Method and apparatus for adjusting overflow buffers and flow control watermark levels
US6341337B1 (en) * 1998-01-30 2002-01-22 Sun Microsystems, Inc. Apparatus and method for implementing a snoop bus protocol without snoop-in and snoop-out logic
US6507862B1 (en) * 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor
US6574725B1 (en) * 1999-11-01 2003-06-03 Advanced Micro Devices, Inc. Method and mechanism for speculatively executing threads of instructions
WO2001043347A2 (en) * 1999-12-08 2001-06-14 The University Of British Columbia Weighted fair queuing scheduler
US6629268B1 (en) * 2000-01-25 2003-09-30 International Business Machines Corporation Method and apparatus for servicing a processing system through a test port
US6957432B2 (en) * 2000-03-21 2005-10-18 Microsoft Corporation Real-time scheduler
US6665791B1 (en) * 2000-03-30 2003-12-16 Agere Systems Inc. Method and apparatus for releasing functional units in a multithreaded VLIW processor
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
US6687903B1 (en) * 2000-06-28 2004-02-03 Emc Corporation Inhibiting starvation in a multitasking operating system
EP1182570A3 (en) * 2000-08-21 2004-08-04 Texas Instruments Incorporated TLB with resource ID field
US6745297B2 (en) * 2000-10-06 2004-06-01 Broadcom Corporation Cache coherent protocol in which exclusive and modified data is transferred to requesting agent from snooping agent
US6772268B1 (en) * 2000-12-22 2004-08-03 Nortel Networks Ltd Centralized look up engine architecture and interface
US20020161961A1 (en) * 2001-01-17 2002-10-31 Ajile Systems, Inc. Multiple virtual machine environment management system
US6901505B2 (en) * 2001-08-09 2005-05-31 Advanced Micro Devices, Inc. Instruction causing swap of base address from segment register with address from another register
US7058948B2 (en) * 2001-08-10 2006-06-06 Hewlett-Packard Development Company, L.P. Synchronization objects for multi-computer systems
US7134002B2 (en) * 2001-08-29 2006-11-07 Intel Corporation Apparatus and method for switching threads in multi-threading processors
US6904040B2 (en) * 2001-10-05 2005-06-07 International Business Machines Corporaiton Packet preprocessing interface for multiprocessor network handler
US7248585B2 (en) * 2001-10-22 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a packet classifier
JP3914771B2 (ja) * 2002-01-09 2007-05-16 株式会社日立製作所 パケット通信装置及びパケットデータ転送制御方法
US7290261B2 (en) * 2003-04-24 2007-10-30 International Business Machines Corporation Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor

Also Published As

Publication number Publication date
JP2007500886A (ja) 2007-01-18
WO2005013061A2 (en) 2005-02-10
US20040103248A1 (en) 2004-05-27
KR20060132538A (ko) 2006-12-21
JP2010079921A (ja) 2010-04-08
KR101279473B1 (ko) 2013-07-30
TW200515277A (en) 2005-05-01
WO2005013061A3 (en) 2005-12-08
HK1093796A1 (en) 2007-03-09
JP2009026320A (ja) 2009-02-05

Similar Documents

Publication Publication Date Title
JP4498356B2 (ja) 最新型プロセッサ
US7627717B2 (en) Advanced processor messaging apparatus including fast messaging ring components configured to accomodate point-to-point transfer of non-memory related messages
US7991977B2 (en) Advanced processor translation lookaside buffer management in a multithreaded system
US9264380B2 (en) Method and apparatus for implementing cache coherency of a processor
US8015567B2 (en) Advanced processor with mechanism for packet distribution at high line rate
US8953628B2 (en) Processor with packet ordering device
US8176298B2 (en) Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline
US7461215B2 (en) Advanced processor with implementation of memory ordering on a ring based data movement network
US20110225398A1 (en) Advanced processor scheduling in a multithreaded system
US20050033889A1 (en) Advanced processor with interrupt delivery mechanism for multi-threaded multi-CPU system on a chip
US7461213B2 (en) Advanced processor system using request, data, snoop, and response rings
US20110255542A1 (en) Advanced processor with mechanism for fast packet queuing operations
US7467243B2 (en) Advanced processor with scheme for optimal packet flow in a multi-processor system on a chip
WO2009017668A1 (en) Delegating network processor operations to star topology serial bus interfaces
US9088474B2 (en) Advanced processor with interfacing messaging network to a CPU
US20050033831A1 (en) Advanced processor with a thread aware return address stack optimally used across active threads
CN100498757C (zh) 高级处理器

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070417

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20070417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070417

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070717

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080408

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080707

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080714

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080807

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080814

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080825

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090721

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091120

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100119

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100406

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100413

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

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20140423

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees