JP2010102694A - 高スレッド化ネットワーク・オン・ア・チップ・プロセッサにおけるスループットをユーザが損なうのを防止するためのセキュリティ方法 - Google Patents

高スレッド化ネットワーク・オン・ア・チップ・プロセッサにおけるスループットをユーザが損なうのを防止するためのセキュリティ方法 Download PDF

Info

Publication number
JP2010102694A
JP2010102694A JP2009197459A JP2009197459A JP2010102694A JP 2010102694 A JP2010102694 A JP 2010102694A JP 2009197459 A JP2009197459 A JP 2009197459A JP 2009197459 A JP2009197459 A JP 2009197459A JP 2010102694 A JP2010102694 A JP 2010102694A
Authority
JP
Japan
Prior art keywords
node
noc
computer
unit
message
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.)
Granted
Application number
JP2009197459A
Other languages
English (en)
Other versions
JP5473487B2 (ja
Inventor
Eric Oliver Mejdrich
エリック・オリヴァー・メユドリヒ
Robert Allen Shearer
ロバート・アレン・シアラー
Paul Emery Schardt
ポール・エメリ・シャルト
Matthew Ray Tubbs
マシュー・レイ・タブス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010102694A publication Critical patent/JP2010102694A/ja
Application granted granted Critical
Publication of JP5473487B2 publication Critical patent/JP5473487B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity

Abstract

【課題】 高スレッド化ネットワーク・オン・ア・チップ(NOC)プロセッサにおけるスループットを非トラステッド作業単位メッセージが損なうのを防止するためのコンピュータによって実行される方法、システム、およびコンピュータ・プログラムを提供することにある。
【解決手段】 セキュリティ・メッセージは、非トラステッド作業単位メッセージに関連するものであり、NOC内の指定のノードがあまり特権的ではない非セキュア・モードで作業単位メッセージからの命令を実行している間にセキュア・モードで動作するよう、NOC内の他のリソースに指示する。したがって、第1のノード以外のリソースが非トラステッド作業単位メッセージから保護されているために、NOC内のスループットは損なわれない。
【選択図】 図1

Description

本発明は、コンピュータの分野に関し、具体的にはスレッド化コンピュータ(threadedcomputer)に関する。さらに詳細には、本発明は、ネットワーク・オン・ア・チップ(NOC:NetworkOn a Chip)集積回路プロセッサに関する。
ネットワーク・オン・ア・チップ(NOC)は、固有の処理装置を作成するために単一チップにネットワーク・アーキテクチャを適用する新規な集積回路である。演算論理装置とメモリとの間、ならびにシステム・バスおよび入出力(I/O)バスに沿った演算論理装置と入出力バッファとの間を流れるデータを調整する制御装置を有する標準的な単一フォン・ノイマン・アーキテクチャを利用するのではなく、NOCはパケットを使用して論理ノード(そのそれぞれがノイマン型プロセッサを利用することができる)間でデータを渡す。各パケットは、そのパケットを受信し処理する予定の論理ノードをアドレス指定するヘッダを含む。
このようなパケットをNOCにディスパッチし、その結果、NOC内のリソースにアクセスすることは、ホスト・コンピュータが他の内部リソース(たとえば、メモリ、ディスプレイ、入力装置など)のようにNOCを取り扱うカーネル・モードで動作するホスト・コンピュータの制御下で行われる場合が多い。したがって、カーネル・モードで動作している間に、ホスト・コンピュータからNOC内の任意のノード(すなわち、処理装置)にパケットをディスパッチすることができる。このパケットは、どのユーザ・ソースから送ることもでき、非トラステッド作業単位メッセージ(untrusted work unit message)の形になる場合が多い。その結果、カーネル・モードでNOCを操作すると、NOC内のリソースに対する損害、NOC内のリソースに関する不当な競合、NOC内の種々のノードによる操作同士の衝突、またはNOCセキュリティの侵害(たとえば、NOC内のノードおよびリソースに対する内部または外部あるいはその両方のアクセスを制御するロジック)、あるいはこれらの組み合わせを含む、NOCのスループットに対するいくつかの脅威が提起される。
高スレッド化ネットワーク・オン・ア・チップ(NOC)プロセッサにおけるスループットを非トラステッド作業単位メッセージが損なうのを防止するためのコンピュータによって実行される方法、システム、およびコンピュータ・プログラム(computerprogram product)が提示される。
セキュリティ・メッセージは、非トラステッド作業単位メッセージに関連するものであり、NOC内の指定のノードがあまり特権的ではない非セキュア・モードで作業単位メッセージからの命令を実行している間にセキュア・モードで動作するよう、NOC内の他のリソースに指示する。したがって、第1のノード以外のリソースが非トラステッド作業単位メッセージから保護されているために、NOC内のスループットは損なわれない。
本発明の上記ならびに追加の目的、特徴、および利点は、以下の詳細な説明で明らかになるであろう。
本発明に特有なものと思われる新規な特徴は特許請求の範囲に明記されている。しかし、本発明そのもの、ならびにその好ましい使用態様、追加の目的および利点は、添付図面に併せて読んだときに、以下に示す例示的な一実施形態の詳細な説明を参照することにより、最も良く理解できるであろう。
本発明の一実施形態で使用するために企図されている、ホスト・コンピュータに結合された模範的なネットワーク・オン・ア・チップ(NOC)の高レベル描写を示す図である。 図1に示されているNOC内のノード内のコアの追加の詳細を示す図である。 本発明の一実施形態により1つまたは複数のNOCを利用するコンピュータの模範的な一実施形態を示す図である。 図1および図3に描写されている1つまたは複数のNOCの追加の詳細を示す図である。 図4に示されているNOCからのIPブロック・ノードの追加の詳細を示す図である。 図5に示されているNOCのIPブロック・ノードで検出されるプロセッサ・コアの追加の詳細を示す図である。 受信された作業単位メッセージによる使用のために許可されていない、NOC内のリソースを保護することにより、NOC内のスループットを損なうのを防止するために本発明によって行われる模範的な諸ステップの高レベル流れ図である。
次に、添付図面、特に図1に関連して説明すると、模範的なネットワーク・オン・ア・チップ(NOC)102が提示されている。NOC102は、複数のノード104a〜104d(この場合、「d」は整数である)を含む。NOC102に関する追加の詳細は、以下の図2〜図6に提示する。複数のノード104a〜104dのそれぞれは、少なくとも1つのプロセッサ・コア(コア(複数も可)106a〜106dとして描写されている)を含む。ノード104a〜104dのそれぞれは、1つまたは複数のナノカーネルに関連するものである。すなわち、ノード104a〜104dのそれぞれが異なる専用ナノカーネル(たとえば、描写されているナノカーネル108a〜108d)に関連付けることができるか、またはノード104a〜104dのすべてが単一のナノカーネル(図示せず)を共用することもできる。ナノカーネルは、NOC内のプロセッサ・ノードによって実行される処理活動を調整することによりNOC内のソフトウェア・スレッドを管理するソフトウェア論理として定義される。この調整は、1)特定の作業単位メッセージを特定のノードに向けること、または2)セキュリティ・メッセージによって設定されたパラメータに応じてNOC102内のリソースへのアクセスを管理すること、あるいはその両方を含むが、これらに限定されない。
次に、NOC102に結合されたホスト・コンピュータ110について考慮する。ホスト・コンピュータ110は、NOC102に保管されたユーザ・アプリケーション112からの命令を含む、NOC102への命令のディスパッチを監視する。(ユーザ・アプリケーション112はホスト・コンピュータ110内に保管されているものとして描写されているが、ユーザ・アプリケーション112は、加えて/代わって、NOC102または他の外部位置(図示せず)内に保管することができることに留意されたい。)ユーザ・アプリケーション112は、複数の作業単位メッセージ114を含むことができ、そのそれぞれは1つまたは複数のソフトウェア・スレッド(第1のソフトウェア・スレッド124および第2のソフトウェア・スレッド126として模範的な方法で後述する)を含むことができる。複数の作業単位メッセージ114の1つは描写されている作業単位メッセージ116であると想定し、その作業単位メッセージ116は、NOC102のノード104a内で実行される予定の複数命令(たとえば、ペイロード118)を含むものとする。受信側ロジック120は、ホスト・コンピュータ110から作業単位メッセージ116を受信し、それをナノカーネル108aに向ける。ナノカーネル108aは作業単位メッセージ116をノード104aに転送する。したがって、ノード104aはペイロード118(すなわち、第1のソフトウェア・スレッド124または第2のソフトウェア・スレッド126あるいはその両方)を実行することができる。以下の図2においてより詳細に説明する通り、第1のソフトウェア・スレッド124および第2のソフトウェア・スレッド126は、コア106a内の異なるハードウェア・スレッド内で実行することができる。
また、ノード104aは、作業単位メッセージ116内でセキュリティ・メッセージ122を処理することもできる。セキュリティ・メッセージ122は、実行中にどのリソースがペイロード118と対話する可能性があり、どのリソースが対話する可能性がないかに関する命令を含む。たとえば、ノード104aは、第1のソフトウェア・スレッド124が、他のノード104b〜104d、メモリ・リソース128(すなわち、NOC102にアクセス可能であるかまたはNOC102内にある動的または静的キャッシュ、レジスタ、システム・メモリ、大容量記憶装置など)、または入出力(I/O)リソース130(すなわち、ネットワーク・ポート、キーボード、マウス、プリンタ、モニタなど)、あるいはこれらの組み合わせを含む、NOC102内の任意の他のリソースへのアクセスを試みるのを防止することができる。図2においてより詳細に説明する通り、1つのハードウェア・スレッド(ペイロード118からの特定のソフトウェア・スレッドを実行している)が同じコア内の他のハードウェア・スレッドにアクセスできないように、ナノカーネル108aは、セキュリティ・メッセージ122により、ノード104a内の個別ハードウェア・スレッドも制御することができる。
これらのリソースにアクセスするために第1のソフトウェア・スレッド124または作業単位メッセージ116またはノード104aあるいはこれらの組み合わせからの任意の要求を拒否するようこのようなリソースに指示するために、ナノカーネル108aは、セキュリティ・メッセージ122を他のリソース(ノード104b〜104d、メモリ・リソース128、I/Oリソース130)に転送することもできる。
上記の通り、各ノード(たとえば、ノード104a〜104dのそれぞれ)は、1つまたは複数のプロセッサ・コア(たとえば、描写されているプロセッサ・コア(複数も可)106a〜106dのうちの1つ)を含む。このようなプロセッサ・コアの模範的な一実施形態の追加の詳細は図2にプロセッサ・コア206として提示されている。プロセッサ・コア206内には、有効/実アドレス・テーブル(ERAT:Effective-to-Real Address Table)202が存在し、これは、ユーザ・アプリケーション(たとえば、図1に示されているユーザ・アプリケーション112)または作業単位メッセージ(たとえば、図1に示されている作業単位メッセージ116)にすることができる作業単位208から種々のソフトウェア・スレッド204a〜204dをディスパッチするために使用される。作業単位208がプロセッサ・コア206(NOC内のアドレス指定されたノード内にあるもの)によって受信されると、レジスタ210d、実行ユニット212d、および出力バッファ214dから構成された特定のハードウェア・スレッド216は、ソフトウェア・スレッド204d内の命令を実行することになる。以下の図6に関連して説明すると、模範的なハードウェア・スレッドは、FPRマッパ660、FPIQ672、FPR688、およびFPU604から構成することができる。もう1つの模範的なハードウェア・スレッドは、GPRマッパ658、FXIQ668、FXU605、およびGPR686から構成することができる。その他のものはFXU694、LSU698、CRU690、BEU692などを含むものとして企図することができるので、これらは模範的なハードウェア・スレッドである。
もう一度、図2を参照し、ソフトウェア・スレッド204dは図1に描写されている第1のソフトウェア・スレッド124であると想定する。したがって、セキュリティ・メッセージ122は、ハードウェア・スレッド216がソフトウェア・スレッド204d(すなわち、第1のソフトウェア・スレッド124)からの命令を実行する予定であるが、ハードウェア・スレッド216またはソフトウェア・スレッド204dあるいはその両方は、ソフトウェア・スレッド204dが実行している間、他のハードウェア・スレッド(それぞれ、他のレジスタ210a〜210c、実行ユニット212a〜212c、および出力バッファ214a〜214cから構成される)のいずれかにアクセスするのを禁止される予定であることを指示することができる。この例では、第2のソフトウェア・スレッド126(ソフトウェア・スレッド204bとして描写されている)は、ソフトウェア・スレッド126/204bおよびハードウェア・スレッド218がNOC102内の他のリソースへのアクセスを許可され、ソフトウェア・スレッド124/204dおよびハードウェア・スレッド216がNOC102内のこのような他のリソースへのアクセスを禁止されるように、ハードウェア・スレッド218内で非セキュア・カーネル・モードで実行することができる。
次に図1に戻り、模範的な目的のために、ユーザ・アプリケーション112はモニタ(たとえば、以下の図3に示されているディスプレイ装置346)上にオレンジの写実的な描写を作成するためのアプリケーションであると想定する。また、ノード104aは第2のソフトウェア・スレッド126を実行して、オレンジのワイヤフレーム(すなわち、骨組みだけの球体のデジタル・イメージ)を作成したと想定する。オレンジのワイヤフレームに対して必要なシェーディング/テクスチャリングなどを行うために、第1のソフトウェア・スレッド124は、同じノード104a(描写されているもの)内またはノード104b〜104dとは異なるノード内のいずれかで実行する必要がある。しかし、第1のソフトウェア・スレッド124は、無許可のユーザによって作成されたか、ウィルスによって破壊されているか、またはトラステッド・ソースからの1つのトラステッド・ソフトウェアとして妥当性検査されていない(たとえば、受信したときに公開鍵/秘密鍵のペアなどのセキュリティ・アルゴリズムによって認証されていない)1つの非トラステッド・コードにすることができる。したがって、セキュリティ・メッセージ122は、NOC102のスループットを損なうのを防止するために、第1のハードウェア・スレッド124を他のリソースから分離する。第1のソフトウェア・スレッド124であるシェーダは、信頼できるものとして妥当性検査された後でのみ、第2のソフトウェア・スレッド126によって作成されたワイヤフレームについて作業して、写実的に描写されたオレンジの最終イメージを作成することができる。
この場合も、図1に描写されているNOC102の一実施形態では、ノード104a〜104dのそれぞれが、それぞれの専用ナノカーネル108a〜108dに対する排他的権利を有することに留意されたい。しかし、他の一実施形態では、単一ナノカーネル(図示せず)を使用して、すべてのノード104a〜104d間のメッセージを制御する。しかし、この好ましい実施形態では、各ナノカーネルが固有の所定の方法でメッセージを管理することができる、より堅固なアーキテクチャを提供するために、各ノードとともに異なるナノカーネルを使用する。
非トラステッドの第1のソフトウェア・スレッド124がNOC102内の他のリソースにアクセスするのを防止することにより、いくつかの利点が得られる。たとえば、作業単位メッセージがどこに送信されるかを指示するルーティング・テーブルを保護することができる。このような作業単位メッセージがどこに送信されるかを制御することにより、許可トラフィックのために帯域幅が予約され、その結果、待ち時間問題が低減される。許可メッセージのみが種々のリソースにアクセスできるので、これにより、ロード・バランシングおよびリソース割り振りが行われる。
本発明によるNOCを利用する模範的な装置は、図3に高レベルで記述されている。描写されている通り、図3は、本発明の諸実施形態によるNOCとともにデータ処理で有用な模範的なコンピュータ302のブロック図を明記している。コンピュータ302は少なくとも1つのコンピュータ・プロセッサ304を含む。コンピュータ302は、高速メモリ・バス308およびバス・アダプタ310によりプロセッサ304およびコンピュータ302の他のコンポーネントに結合されるシステム・メモリである、ランダム・アクセス・メモリ(RAM)306も含む。
RAM306には、たとえば、ワード・プロセッシング、スプレッドシート、データベース操作、ビデオ・ゲーム、株式市場シミュレーション、原子量子プロセス・シミュレーション、またはその他のユーザレベル・アプリケーションなどの特定のデータ処理タスクを実行するためのコンピュータ・プログラム命令のモジュールであるアプリケーション・プログラム312が保管されている。また、アプリケーション・プログラム312は、上記の図1〜図2および以下の図7に記載されているものなどの制御プロセスも含む。また、RAM306には、オペレーティング・システム(OS)314も保管されている。OS314は、アプリケーション・プログラム312などのリソースへの透過的ユーザ・アクセスを可能にするためにシェル316を含む。一般に、シェル316は、ユーザとオペレーティング・システムとの間のインタープリタおよびインターフェースを提供するプログラムである。より具体的には、シェル316は、コマンド・ライン・ユーザ・インターフェースに入力されたかまたはファイルから入力されたコマンドを実行する。したがって、コマンド・プロセッサとも呼ばれるシェル316は、一般に、オペレーティング・システムのソフトウェア階層の最高レベルであり、コマンド・インタープリタとして機能する。シェルは、システム・プロンプトを提供し、キーボード、マウス、またはその他のユーザ入力媒体によって入力されたコマンドを解釈し、解釈されたコマンド(複数も可)を処理のためにオペレーティング・システムの適切な下位レベル(たとえば、カーネル318)に送信する。シェル316はテキストベースで行指向のユーザ・インターフェースであるが、本発明は、図形、音声、ジェスチャなどの他のユーザ・インターフェース・モードも等しくサポートすることに留意されたい。
描写されている通り、OS314は、メモリ管理、プロセスおよびタスク管理、ディスク管理、ならびにマウスおよびキーボード管理を含む、OS314の他の部分およびアプリケーション・プログラム(たとえば、アプリケーション312)によって要求される本質的なサービスの提供を含む、OS314用の下位レベルの機能を含むカーネル318も含む。
図3の例のオペレーティング・システム314およびアプリケーション312はRAM306内に示されているが、このようなソフトウェア・コンポーネントは、データ記憶装置320としてのディスク・ドライブ上などの不揮発性メモリに保管することもできる。
このコンピュータ例302は、NOCビデオ・アダプタ322およびNOCコプロセッサ324という本発明の諸実施形態による2つのNOC例を含む。NOCビデオ・アダプタ322は、ディスプレイ画面またはコンピュータ・モニターなどのディスプレイ装置346への図形出力のために特別に設計されたI/Oアダプタの一例である。NOCビデオ・アダプタ322は、高速ビデオ・バス326、バス・アダプタ310、および同じく高速バスであるフロント・サイド・バス328によりプロセッサ304に接続される。
このNOCコプロセッサ例324は、バス・アダプタ310、フロント・サイド・バス328、および同じく高速バスであるフロント・サイド・バス330によりプロセッサ304に接続される。NOCコプロセッサ324は、メイン・プロセッサ304の命令で特定のデータ処理タスクを加速するように最適化される。
このNOCビデオ・アダプタ例322およびNOCコプロセッサ例324はそれぞれ、統合プロセッサ(「IP:Integrated Processor」)ブロック、ルータ、メモリ通信コントローラ、およびネットワーク・インターフェース・コントローラを含む、本発明の一実施形態によるNOCを含み、各IPブロックはメモリ通信コントローラおよびネットワーク・インターフェース・コントローラによりルータに対して適合され、各メモリ通信コントローラはIPブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース・コントローラはルータによるIPブロック間通信を制御する。NOCビデオ・アダプタ322およびNOCコプロセッサ324は、並列処理を使用し、共用メモリへの高速ランダム・アクセスも必要とするプログラム用に最適化される。しかし、一実施形態では、本明細書に記載され、本発明によって使用するために企図されているNOCは、共用メモリへの直接アクセスではなく、パケット・データのみを利用する。この場合も、本発明によって使用するために企図されている模範的なNOCアーキテクチャの追加の詳細は以下の図4〜図6に提示されることに留意されたい。
引き続き図3について説明すると、コンピュータ302は、拡張バス334およびバス・アダプタ310によりプロセッサ304およびコンピュータ302の他のコンポーネントに結合されたディスク・ドライブ・アダプタ332を含むことができる。ディスク・ドライブ・アダプタ332は、データ記憶装置320として表されたディスク・ドライブの形で不揮発性データ記憶装置をコンピュータ302に接続する。本発明の諸実施形態によるNOCによるデータ処理のためにコンピュータ内で有用なディスク・ドライブ・アダプタとしては、統合ドライブ・エレクトロニクス(「IDE:Integrated Drive Electronics」)アダプタ、小型コンピュータ・システム・インターフェース(「SCSI:Small Computer System Interface」)アダプタ、当業者にとって思い浮かぶその他のものを含む。当業者にとって思い浮かぶように、光ディスク・ドライブ、電気的消去可能プログラマブル読み取り専用メモリ(いわゆる「EEPROM」または「フラッシュ」メモリ)などの不揮発性コンピュータ・メモリも実現することができる。
このコンピュータ例302は、1つまたは複数の入出力(「I/O」)アダプタ336も含む。I/Oアダプタ(複数も可)336は、たとえば、コンピュータ・ディスプレイ画面などのディスプレイ装置への出力ならびにキーボードおよびマウスなどのユーザ入力装置338からのユーザ入力を制御するためのソフトウェア・ドライバおよびコンピュータ・ハードウェアによるユーザ指向入出力を実現する。
模範的なコンピュータ302は、他のコンピュータ342とのデータ通信のためならびにデータ通信ネットワーク344とのデータ通信のために通信アダプタ340も含むことができる。このようなデータ通信は、RS−232接続により、ユニバーサル・シリアル・バス(「USB」)などの外部バスにより、IPデータ通信ネットワークなどのデータ通信ネットワークにより、さらに当業者にとって思い浮かぶその他の方法で、シリアルに実行することができる。通信アダプタは、直接またはデータ通信ネットワークを介して、あるコンピュータが他のコンピュータにデータ通信を送信するハードウェア・レベルのデータ通信を実現する。本発明の諸実施形態によるNOCとともにデータ処理に有用な通信アダプタの例としては、有線ダイヤルアップ通信のためのモデム、有線データ通信ネットワーク通信のためのイーサネット(IEEE802.3)アダプタ、および無線データ通信ネットワーク通信のためのIEEE802.xアダプタを含む。
NOCビデオ・アダプタ322およびNOCコプロセッサ324はNOCの2つの模範的な使い方に過ぎないが、本明細書に記載されているNOCならびに作業パケットの制御は、NOCがデータ処理に有用であるコンテキストであれば、どのようなコンテキストでも見つけられることに留意されたい。
次に図4に関連して説明すると、本発明の諸実施形態による模範的なNOC402の機能ブロック図が提示されている。NOC402は、図3に示されているNOCビデオ・アダプタ322またはNOCコプロセッサ324あるいはその両方として利用可能な模範的なNOCである。NOC402は、集積回路チップ400上に実現され、ホスト・コンピュータ101(たとえば、図3に示されているプロセッサ304)によって制御される。NOC400は、統合プロセッサ(「IP」)ブロック404と、ルータ410と、メモリ通信コントローラ406と、ネットワーク・インターフェース・コントローラ408とを含む。各IPブロック404は、専用メモリ通信コントローラ406および専用ネットワーク・インターフェース・コントローラ408によりルータ410に対して適合されている。各メモリ通信コントローラ406は、IPブロック404とメモリ(たとえば、オンチップ・メモリ414またはオフチップ・メモリ412あるいはその両方)との間の通信を制御し、各ネットワーク・インターフェース・コントローラ408は、ルータ410によりIPブロック間通信を制御する。
NOC402では、各IPブロック404は、NOC402内のデータ処理のためのビルディング・ブロックとして使用される同期または非同期論理設計の再使用可能ユニットを表す。「IPブロック」という用語は、「知的財産ブロック」と呼ばれることもあり、したがって、IPブロック404は、ある当事者によって所有され、ある当事者の知的財産であり、半導体回路の他のユーザまたは設計者にライセンス供与される設計として指定される。しかし、本発明の範囲では、IPブロックは任意の特定の所有権の対象とするという要件はまったくなく、したがって、この用語は本明細書では必ず「統合プロセッサ・ブロック」として詳述される。したがって、ここで指定されるIPブロック404は、知的財産の主題である場合もあれば、主題ではない場合もある、論理、セル、またはチップ・レイアウト設計の再使用可能ユニットである。さらに、IPブロック404は、特定用途向け集積回路(ASIC)チップ設計またはフィールド・プログラマブル・ゲート・アレイ(FPGA)論理設計として形成可能な論理コアである。
類推によってIPブロックを説明すると、IPブロックがNOC設計のためのものであり、ライブラリがコンピュータ・プログラミングのためのものであり、離散集積回路コンポーネントがプリント回路板設計のためのものであるということになる。本発明の諸実施形態によるNOCでは、IPブロックは、汎用ゲート・ネットリストとして、完全な特殊目的または汎用マイクロプロセッサとして、あるいは当業者にとって思い浮かぶ他の方法で、実現することができる。ネットリストは、高レベル・プログラム・アプリケーションのためのアセンブリ・コード・リストに類似したIPブロックの論理機能のブール代数表現(ゲート、標準セル)である。また、NOCは、たとえば、VerilogまたはVHSICハードウェア記述言語(VHDL)などのハードウェア記述言語で記述された合成可能な形で実現することもできる。ネットリストおよび合成可能な実現例に加えて、NOCは、下位レベルの物理的記述で配布することもできる。シリアライザ/デシリアライザ(SERDES)、フェイズロック・ループ(PLL)、デジタル・アナログ変換器(DAC)、アナログ・デジタル変換器(ADC)などのアナログIPブロック・エレメントは、グラフィック・データ・システムII(GDSII)などのトランジスタレイアウト・フォーマットで配布することができる。IPブロックのデジタル・エレメントもレイアウト・フォーマットで提供されることもある。
図4に示されている各IPブロック404は、メモリ通信コントローラ406によりルータ410に対して適合されている。各メモリ通信コントローラは、IPブロックとメモリとの間のデータ通信を提供するように適合された同期および非同期論理回路の集合である。IPブロックとメモリとの間のこのような通信の例としては、メモリ・ロード命令およびメモリ・ストア命令を含む。メモリ通信コントローラ406については、以下の図5においてより詳細に説明する。
また、図4に描写されている各IPブロック404は、ネットワーク・インターフェース・コントローラ408によりルータ410に対して適合されている。各ネットワーク・インターフェース・コントローラ408は、IPブロック404同士のルータ410による通信を制御する。IPブロック同士の通信の例としては、並列アプリケーションおよびパイプライン化アプリケーションにおいてIPブロック間でデータを処理するための命令とそのデータを伝達するメッセージ(たとえば、メッセージ/データ・パケット)を含む。ネットワーク・インターフェース・コントローラ408については、以下の図5においてより詳細に説明する。
ルータ410およびルータ間のリンク420は、図4に示されているNOC402のネットワーク操作を実現する。リンク420は、すべてのルータを接続する物理的な並列ワイヤ・バス上に実現されたパケット構造である。すなわち、各リンクは、すべてのヘッダ情報およびペイロード・データを含む、データ交換パケット全体を同時に収容するために十分な幅のワイヤ・バス上に実現される。パケット構造が、たとえば、8バイトのヘッダと56バイトのペイロード・データを含む64バイトを含む場合、各リンクの範囲を定めるワイヤ・バスは64バイト幅であり、したがって、512本のワイヤを必要とする。加えて、各リンク420は双方向性であり、したがって、リンク・パケット構造が64バイトを含む場合、ワイヤ・バスは、実際にはネットワーク内の各ルータ410とその隣接ルータ410のそれぞれとの間の1024本のワイヤを含む。1つのメッセージは2つ以上のパケットを含むことができるが、各パケットはワイヤ・バスの幅に正確に収まる。ルータとワイヤ・バスの各セクションとの間の接続をポートという場合、各ルータは、ネットワーク上の4つの方向のデータ伝送のそれぞれについて1つずつと、メモリ通信コントローラおよびネットワーク・インターフェース・コントローラにより特定のIPブロックに対してルータを適合させるための第5のポートという5つのポートを含む。
上記の通り、各メモリ通信コントローラ406は、IPブロックとメモリとの間の通信を制御する。メモリは、オフチップ・メインRAM412、メモリ通信コントローラ406によりIPブロックに直接接続されるオンチップ・メモリ415、IPブロックとして使用可能になっているオンチップ・メモリ414、およびオンチップ・キャッシュを含むことができる。図4に示されているNOC402では、たとえば、オンチップ・メモリ(414、415)のいずれかをオンチップ・キャッシュ・メモリとして実現することができる。これらの形式のメモリはいずれも、IPブロックに直接付加されたメモリの場合でも、物理アドレスまたは仮想アドレスの同じアドレス空間に配置することができる。したがって、このようなメモリはネットワーク上のどこでも任意のIPブロックから直接アドレス指定することができるので、メモリ・アドレス指定メッセージはIPブロックに対して全面的に双方向性にすることができる。IPブロック上のオンチップ・メモリ414は、そのIPブロックまたはNOC内の任意の他のIPブロックからアドレス指定することができる。オンチップ・メモリ415は、メモリ通信コントローラに直接付加され、そのメモリ通信コントローラによってネットワークに対して適合されるIPブロックによってアドレス指定することができる。また、オンチップ・メモリ415は、NOC402内のどこでも任意の他のIPブロック404からアドレス指定することもできる。
模範的なNOC402は、2つのメモリ管理ユニット(「MMU:MemoryManagement Unit」)407および409を含み、本発明の諸実施形態によるNOCのための2つの代替メモリ・アーキテクチャを例示している。MMU407は、特定のIPブロック404で実現され、そのIPブロック404内のプロセッサが仮想メモリで動作できるようにし、NOC402の残りのアーキテクチャ全体が物理的なメモリ・アドレス空間で動作できるようにする。MMU409は、ポート416として参照されるデータ通信ポートによりNOCに接続されたオフチップとして実現される。ポート416は、NOC402とMMU409との間の信号を伝導するために必要なピンおよびその他の相互接続部ならびにNOCパケット・フォーマットから外部MMU409によって要求されるバス・フォーマットにメッセージ・パケットを変換するために十分な知能を含む。MMU409の外部位置とは、NOC402のすべてのIPブロック404内のすべてのプロセッサが仮想メモリ・アドレス空間で動作することができ、オフチップ・メモリの物理アドレスへのすべての変換がオフチップMMU409によって処理されることを意味する。
MMU407および409の使用により例示される2つのメモリ・アーキテクチャに加えて、ポート418として描写されているデータ通信ポートは、本発明の諸実施形態によるNOCにおいて有用な第3のメモリ・アーキテクチャを例示するものである。ポート418は、NOC402のIPブロック404とオフチップ・メモリ412との間の直接接続を提供する。処理経路内にMMUがまったくない場合、このアーキテクチャはNOCのすべてのIPブロックによる物理アドレス空間の利用を可能にする。このアドレス空間を双方向的に共用する際に、NOCのすべてのIPブロックは、ポート418に直接接続されたIPブロックにより向けられた、ロードおよびストアを含む、メモリ・アドレス指定メッセージによりアドレス空間内のメモリにアクセスすることができる。ポート418は、NOCとオフチップ・メモリ412との間の信号を伝導するために必要なピンおよびその他の相互接続部ならびにNOCパケット・フォーマットからオフチップ・メモリ412によって要求されるバス・フォーマットにメッセージ・パケットを変換するために十分な知能を含む。
図4に示されている模範的なNOC402では、IPブロック404の1つはホスト・インターフェース・プロセッサ405として指定される。ホスト・インターフェース・プロセッサ405は、NOC402とホスト・コンピュータ202(図2に紹介されている)との間のインターフェースを提供する。ホスト・インターフェース・プロセッサ405は、たとえば、ホスト・コンピュータからNOCデータ処理要求を受信し、IPブロック間でディスパッチすることを含む、データ処理サービスをNOC上の他のIPブロックに提供する。
ホスト・インターフェース・プロセッサ405は、ポート417などのデータ通信ポートにより、より大型のホスト・コンピュータ110に接続される。ポート417は、NOC402とホスト・コンピュータ110との間の信号を伝導するために必要なピンおよびその他の相互接続部ならびにNOC402からホスト・コンピュータ110によって要求されるバス・フォーマットにメッセージ・パケットを変換するために十分な知能を含む。図3に示されているコンピュータ302内のNOCコプロセッサ324の例では、このようなポートは、NOCコプロセッサ324とバス・アダプタ310との間のフロント・サイド・バス330に必要なプロトコルと、NOCコプロセッサ324のリンク構造とのデータ通信フォーマット変換を可能にするであろう。
次に図5を参照すると、本発明の諸実施形態によるNOC402の追加の詳細が提示されている。図4および図5に描写されている通り、NOC402は、チップ(たとえば、図4に示されているチップ400)上に実現され、統合プロセッサ(「IP」)ブロック404、ルータ410、メモリ通信コントローラ406、およびネットワーク・インターフェース・コントローラ408を含む。各IPブロック404はメモリ通信コントローラ406およびネットワーク・インターフェース・コントローラ408によりルータ410に対して適合される。各メモリ通信コントローラ406はIPブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース・コントローラ408はルータ410によるIPブロック間通信を制御する。図5の例では、その構造および動作に関するより詳細な説明を支援するために、メモリ通信コントローラ406およびネットワーク・インターフェース・コントローラ408によりルータ410に対して適合されたIPブロック404のセット522が拡大されている。図5の例のIPブロック、メモリ通信コントローラ、ネットワーク・インターフェース・コントローラ、およびルータはいずれも、拡大セット522と同じように構成される。
図5の例では、各IPブロック404は、1つまたは複数のコア550を含むコンピュータ・プロセッサ526と、I/O機能524とを含む。この例では、コンピュータ・メモリは、各IPブロック404内のランダム・アクセス・メモリ(「RAM」)528のセグメントによって表される。図4の例に関連して上述したように、このメモリは、各IPブロック上のその内容がNOC内の任意のIPブロックからアドレス指定可能でありアクセス可能である物理アドレス空間のセグメントを占有することができる。各IPブロック上のプロセッサ526、I/O機能524、およびメモリ(RAM528)は、一般にプログラム可能なマイクロコンピュータとしてIPブロックを効果的に実現する。しかし、上記で説明したように、本発明の範囲では、IPブロックは一般に、NOC内のデータ処理のためのビルディング・ブロックとして使用される同期または非同期論理の再使用可能ユニットを表す。したがって、一般にプログラム可能なマイクロコンピュータとしてIPブロックを実現することは、説明のために有用な共通の一実施形態であるが、本発明の制限ではない。
図5に示されているNOC402では、各メモリ通信コントローラ406は複数のメモリ通信実行エンジン540を含む。各メモリ通信実行エンジン540は、ネットワーク・インターフェース・コントローラ408とIPブロック404との間の双方向メモリ通信命令の流れ(544、545、546)を含む、IPブロック404からのメモリ通信命令を実行できるようになっている。メモリ通信コントローラによって実行されるメモリ通信命令は、特定のメモリ通信コントローラによりルータに対して適合されたIPブロックからだけでなく、NOC402内のどこでも任意のIPブロック404からも発生することができる。すなわち、NOC402内の任意のIPブロック404は、メモリ通信命令を生成し、そのメモリ通信命令の実行のためにNOC402のルータ410により他のIPブロックに関連する他のメモリ通信コントローラにそのメモリ通信命令を伝送することができる。このようなメモリ通信命令は、たとえば、変換索引バッファ制御命令、キャッシュ制御命令、バリア命令、ならびにメモリ・ロードおよびストア命令を含むことができる。
描写されているメモリ通信実行エンジン540のそれぞれは、完全なメモリ通信命令を単独でならびに他のメモリ通信実行エンジン540と並列に実行できるようになっている。メモリ通信実行エンジン540は、メモリ通信命令の同時スループットのために最適化されたスケーラブル・メモリ・トランザクション・プロセッサを実現する。メモリ通信コントローラ406は複数のメモリ通信実行エンジン540をサポートし、そのすべてのエンジンは複数のメモリ通信命令を同時実行するために同時に動作する。新しいメモリ通信命令はメモリ通信コントローラ406によって各メモリ通信実行エンジン540に割り振られ、メモリ通信実行エンジン540は複数の応答イベントを同時に受け入れることができる。この例では、メモリ通信実行エンジン540はすべて同一である。したがって、メモリ通信コントローラ406によって同時に処理できるメモリ通信命令の数のスケーリングは、メモリ通信実行エンジン540の数をスケーリングすることによって実現される。
図5に描写されているNOC402では、各ネットワーク・インターフェース・コントローラ408は、ルータ410によりIPブロック404間で伝送するためにコマンド・フォーマットからネットワーク・パケット・フォーマットに通信命令を変換できるようになっている。通信命令は、IPブロック410によるかまたはメモリ通信コントローラ406によってコマンド・フォーマットで公式化され、コマンド・フォーマットでネットワーク・インターフェース・コントローラ408に提供される。コマンド・フォーマットは、IPブロック404およびメモリ通信コントローラ406のアーキテクチャ・レジスタ・ファイルに準拠するネイティブ・フォーマットである。ネットワーク・パケット・フォーマットは、ネットワークのルータ410による伝送に必要なフォーマットである。このようなメッセージはそれぞれ、1つまたは複数のネットワーク・パケットから構成される。ネットワーク・インターフェース・コントローラでコマンド・フォーマットからパケット・フォーマットに変換されるこのような通信命令の例としては、IPブロックとメモリとの間のメモリ・ロード命令およびメモリ・ストア命令を含む。このような通信命令は、並列アプリケーションおよびパイプライン化アプリケーションにおいてIPブロック間でデータを処理するための命令とそのデータを伝達するIPブロック間でメッセージを送信する通信命令も含むことができる。
図5に示されているNOC402では、各IPブロック404は、IPブロックのメモリ通信コントローラによりメモリとの間でメモリアドレスベースの通信を送信し、次にそのネットワーク・インターフェース・コントローラによりネットワークにメモリアドレスベースの通信を送信できるようになっている。メモリアドレスベースの通信は、IPブロックのメモリ通信コントローラのメモリ通信実行エンジンによって実行される、ロード命令またはストア命令などのメモリ・アクセス命令である。このようなメモリアドレスベースの通信は、典型的には、IPブロックで発生し、コマンド・フォーマットで公式化され、実行のためにメモリ通信コントローラに受け渡される。
アクセスすべきメモリはいずれも、NOC内の任意のメモリ通信コントローラに直接付加されたオンチップまたはオフチップの物理メモリ・アドレス空間内のどこにでも位置することができるか、またはどのIPブロックが任意の特定のメモリアドレスベースの通信を発生したかにかかわらず、NOCの任意のIPブロックにより最終的にアクセスすることができるので、多くのメモリアドレスベースの通信はメッセージ・トラフィックで実行される。メッセージ・トラフィックで実行されるすべてのメモリアドレスベースの通信は、(命令変換ロジック536を使用して)コマンド・フォーマットからパケット・フォーマットに変換し、メッセージに入れてネットワークにより伝送するために、メモリ通信コントローラから関連のネットワーク・インターフェース・コントローラに渡される。パケット・フォーマットに変換する際に、ネットワーク・インターフェース・コントローラは、メモリアドレスベースの通信によってアクセスすべき1つまたは複数のメモリ・アドレスに依存して、そのパケットに関するネットワーク・アドレスも識別する。メモリアドレスベースのメッセージはメモリ・アドレスでアドレス指定される。各メモリ・アドレスは、ネットワーク・インターフェース・コントローラによってネットワーク・アドレスにマッピングされ、典型的には、ある範囲の物理メモリ・アドレスを担当するメモリ通信コントローラのネットワーク位置にマッピングされる。メモリ通信コントローラ406のネットワーク位置は、当然、そのメモリ通信コントローラの関連ルータ410、ネットワーク・インターフェース・コントローラ408、およびIPブロック404のネットワーク位置でもある。各ネットワーク・インターフェース・コントローラ内の命令変換ロジック536は、NOCのルータによりメモリアドレスベースの通信を伝送するために、メモリ・アドレスをネットワーク・アドレスに変換することができる。
ネットワークのルータ410からメッセージ・トラフィックを受信すると、各ネットワーク・インターフェース・コントローラ408は、メモリ命令について各パケットを検査する。メモリ命令を含む各パケットは、受信側ネットワーク・インターフェース・コントローラに関連するメモリ通信コントローラ406に手渡され、そのネットワーク・インターフェース・コントローラは、パケットの残りのペイロードをIPブロックに送信してさらに処理する前に、メモリ命令を実行する。このようにして、メモリ内容はいつでも、IPブロックが特定のメモリ内容に依存するメッセージからの命令の実行を開始する前に、IPブロックによるデータ処理をサポートする準備ができている。
次に図5に描写されているNOC402に戻ると、各IPブロック404は、そのメモリ通信コントローラ406をバイパスし、IPブロックのネットワーク・インターフェース・コントローラ408によりネットワークに直接、IPブロック間のネットワーク・アドレス指定通信546を送信できるようになっている。ネットワーク・アドレス指定通信は、ネットワーク・アドレスによって他のIPブロックに向けられたメッセージである。このようなメッセージは、当業者にとって思い浮かぶように、パイプライン化アプリケーション内の作業データ、SIMDアプリケーション内のIPブロック間の単一プログラム処理のための複数データなどを伝送する。このようなメッセージは、NOCのルータによりメッセージが向けられるネットワーク・アドレスを把握している発生側IPブロックにより、開始からネットワーク・アドレス指定されるという点で、メモリアドレスベースの通信とは異なるものである。このようなネットワーク・アドレス指定通信は、そのI/O機能524によりIPブロックによってコマンド・フォーマットでIPブロックのネットワーク・インターフェース・コントローラに直接渡され、次にネットワーク・インターフェース・コントローラによってパケット・フォーマットに変換され、NOCのルータにより他のIPブロックに伝送される。このようなネットワーク・アドレス指定通信546は、任意の特定のアプリケーションにおけるそれぞれの使い方に応じて、潜在的にNOCの各IPブロックとの間で移行する双方向性である。しかし、各ネットワーク・インターフェース・コントローラは、関連ルータとの間でこのような通信を送受信(通信542)できるようになっており、各ネットワーク・インターフェース・コントローラは、関連IPブロックとの間でこのような通信を直接送受信(通信546)して、関連メモリ通信コントローラ406をバイパスできるようになっている。
図5の例の各ネットワーク・インターフェース・コントローラ408は、タイプ別にネットワーク・パケットを特徴付けて、ネットワーク上の仮想チャネルを実現できるようにもなっている。各ネットワーク・インターフェース・コントローラ408は、NOC上で伝送するためにパケット形式でルータ410に命令を受け渡す前に、各通信命令をタイプ別に分類し、ネットワーク・パケット・フォーマットのフィールドに命令のタイプを記録する仮想チャネル実現ロジック538を含む。通信命令タイプの例としては、IPブロック間ネットワークアドレスベースのメッセージ、要求メッセージ、要求メッセージへの応答、キャッシュに向けられた無効化メッセージ、メモリ・ロードおよびストア・メッセージ、ならびにメモリ・ロード・メッセージへの応答などを含む。
図5の例の各ルータ410は、経路指定ロジック530と、仮想チャネル制御ロジック532と、仮想チャネル・バッファ534とを含む。経路指定ロジックは、典型的には、ルータ410、リンク420、およびルータ間のバス・ワイヤによって形成されたネットワークにおけるデータ通信のためのデータ通信プロトコル・スタックを実現する同期および非同期論理のネットワークとして実現される。経路指定ロジック530は、当業者がオフチップ・ネットワークにおいてルーティング・テーブルと関連付けることができる機能を含み、少なくとも一部の実施形態のルーティング・テーブルはNOCで使用するには遅すぎ厄介なものであると見なされている。同期および非同期論理のネットワークとして実現された経路指定ロジックは、単一クロック・サイクル程度の高速で経路指定決定を行うように構成することができる。この例の経路指定ロジックは、ルータで受信した各パケットを転送するためのポートを選択することによりパケットを経路指定する。各パケットは、そのパケットが経路指定されるネットワーク・アドレスを含む。この例の各ルータは、バス・ワイヤ(520−A、520−B、520−C、520−D)により他のルータに接続された4つのポート521と、ネットワーク・インターフェース・コントローラ408およびメモリ通信コントローラ406により各ルータをその関連IPブロック404に接続する第5のポート523という5つのポートを含む。
上記でメモリアドレスベースの通信について説明する際に、各メモリ・アドレスは、ネットワーク・インターフェース・コントローラによって、メモリ通信コントローラのネットワーク位置であるネットワーク・アドレスにマッピングされたものとして説明されている。メモリ通信コントローラ406のネットワーク位置は、当然、そのメモリ通信コントローラの関連ルータ410、ネットワーク・インターフェース・コントローラ408、およびIPブロック404のネットワーク位置でもある。したがって、IPブロック間通信またはネットワークアドレスベースの通信では、アプリケーションレベルのデータ処理においてNOCのルータ、リンク、およびバス・ワイヤによって形成されたネットワーク内のIPブロックの位置としてネットワーク・アドレスを表示することも典型的なことである。図4は、このようなネットワークの編成の1つが行と列のメッシュになっており、たとえば、そのメッシュの関連ルータ、IPブロック、メモリ通信コントローラ、およびネットワーク・インターフェース・コントローラからなる各セット用の固有の識別子またはそのメッシュ内のこのような各セットのx、y座標のいずれかとして、各ネットワーク・アドレスを実現できることを例示していることに留意されたい。
図5に描写されているNOC402では、各ルータ410は2つまたはそれ以上の仮想通信チャネルを実現し、各仮想通信チャネルは通信タイプによって特徴付けられる。通信命令タイプ、したがって、仮想チャネル・タイプとしては、IPブロック間ネットワークアドレスベースのメッセージ、要求メッセージ、要求メッセージへの応答、キャッシュに向けられた無効化メッセージ、メモリ・ロードおよびストア・メッセージ、ならびにメモリ・ロード・メッセージへの応答など、上述のものを含む。仮想チャネルをサポートして、図5に描写されている各ルータ410は、仮想チャネル制御ロジック532および仮想チャネル・バッファ534も含む。仮想チャネル制御ロジック532は、それに割り当てられた通信タイプについて各受信パケットを検査し、ポートによりNOC上の隣接ルータに伝送するためにその通信タイプに関する発信仮想チャネル・バッファ内に各パケットを置く。
各仮想チャネル・バッファ534は有限の記憶空間を有する。多くのパケットが短期間に受信されると、仮想チャネル・バッファはいっぱいになる可能性があり、したがって、それ以上パケットをバッファに入れることができなくなる。他のプロトコルでは、そのバッファがいっぱいである仮想チャネル上に到着したパケットは除去されるであろう。しかし、この例の各仮想チャネル・バッファ534は、バス・ワイヤの制御信号により、仮想チャネルにおける伝送を中断する、すなわち、特定の通信タイプのパケットの伝送を中断するよう、仮想チャネル制御ロジックにより周囲のルータに勧告できるようになっている。ある仮想チャネルがこのように中断されると、他のすべての仮想チャネルは影響を受けず、全能力で動作し続けることができる。制御信号は、各ルータから各ルータの関連ネットワーク・インターフェース・コントローラ408まで全面的に有線になる。各ネットワーク・インターフェース・コントローラは、このような信号を受信すると、その関連メモリ通信コントローラ406からまたはその関連IPブロック404から、中断された仮想チャネルに関する通信命令を受け入れることを拒否するよう構成される。このようにして、仮想チャネルの中断は、発生側IPブロックまで全面的に、仮想チャネルを実現するすべてのハードウェアに影響する。
仮想チャネルにおけるパケット伝送を中断することによる影響の1つは、図5のアーキテクチャでどのパケットも除去されないことである。たとえば、インターネット・プロトコルなど、何らかの信頼できないプロトコルでパケットが除去される可能性のある状況をルータが検出した場合、バッファ空間がもう一度使用可能になり、パケットを除去する必要性が解消されるまで、図5の例のルータはその仮想チャネル・バッファ534およびその仮想チャネル制御ロジック532により仮想チャネル内のパケットのすべての伝送を中断する。したがって、図5に描写されているNOC402は、極めて薄い層のハードウェアにより高信頼性のネットワーク通信プロトコルを実現する。
図5に描写されているネットワーク・インターフェース・コントローラ408およびルータ410は、上記の図2に記載されているパケット受信側ロジック212およびパケット・リダイレクト・ロジック216の機能を実行することに留意されたい。加えて、ブレークポイント検出ロジック214は、上述のようにシングルステップで着信ソフトウェア・パケットを引き起こすようにIPブロック404とのインターフェースを取る。
次に図6を参照すると、元々は図5に提示されているコア550の追加の模範的な詳細が提示されている。コア550は、統一されたレベル2(L2)キャッシュ616と、それぞれ二叉のレベル1(L1)の命令(I)キャッシュ618およびデータ(D)キャッシュ620とを含む、オンチップ・マルチレベル・キャッシュ階層を含む。当業者にとって周知の通り、キャッシュ616、618、および620は、システム・メモリ(たとえば、図3に示されているRAM306)内のメモリ位置に対応するキャッシュ・ラインへの低待ち時間アクセスを可能にする。
命令取り出しアドレス・レジスタ(IFAR:instructionfetch address register)630内に常駐する有効アドレス(EA:effectiveaddress)に応答して、処理のためにL1 Iキャッシュ618から命令が取り出される。各サイクル中に、条件付き分岐命令の予測による投機的ターゲット経路(speculative target path)および順次アドレスを提供する分岐予測ユニット(BPU:branch prediction unit)636、フラッシュおよび割り込みアドレスを提供するグローバル完了テーブル(GCT:global completion table)638、予測された条件付き分岐命令の解決による非投機的アドレス(non-speculative address)を提供する分岐実行ユニット(BEU:branchexecution unit)692という3つのソースのうちの1つからIFAR630に新しい命令取り出しアドレスをロードすることができる。分岐履歴テーブル(BHT:branch history table)635はBPU636に関連するものであり、今後の分岐命令の予測を支援するために条件付き分岐命令の解決がそこに記録される。
IFAR630内の命令取り出しアドレスなどの有効アドレス(EA)は、プロセッサによって生成された命令またはデータのアドレスである。EAは、セグメント・レジスタおよびそのセグメント内のオフセット情報を指定する。メモリ内のデータ(命令を含む)にアクセスするために、EAは、1つまたは複数のレベルの変換により、そのデータまたは命令が保管されている物理的位置に関連する実アドレス(RA:real address)に変換される。
コア550内では、有効/実アドレス変換は、メモリ管理ユニット(MMU)および関連のアドレス変換機構によって実行される。好ましくは、命令アクセスおよびデータ・アクセスのために別々のMMUが提供される。図6には、明瞭にするために、単一のMMU661が例示されており、命令ストア・ユニット(ISU:Instruction Store Unit)601への接続のみを示している。しかし、当業者であれば、MMU611が好ましくはロード/ストア・ユニット(LSU:load/store unit)696および698ならびにメモリ・アクセスを管理するために必要な他のコンポーネントへの接続(図示せず)も含むことを理解するであろう。MMU611は、データ変換索引バッファ(DTLB:Data Translation Lookaside Buffer)612および命令変換索引バッファ(ITLB:Instruction Translation Lookaside Buffer)613を含む。各TLBは最近参照されたページ・テーブル項目を含み、その項目はデータ(DTLB612)または命令(ITLB613)についてEAをRAに変換するためにアクセスされる。ITLB613からの最近参照されたEA/RA変換は、EOP有効/実アドレス・テーブル(ERAT:effective-to-real address table)632にキャッシュされる。
ERAT632によりIFAR630に含まれるEAを変換し、Iキャッシュ・ディレクトリ634内の実アドレス(RA)をルックアップした後に、IFAR630内のEAに対応する命令のキャッシュ・ラインがL1 Iキャッシュ618に常駐しないことをヒット/ミス・ロジック622が判断した場合、ヒット/ミス・ロジック622は、Iキャッシュ要求バス624を介して要求アドレスとしてL2キャッシュ616にRAを提供する。このような要求アドレスは、最近のアクセス・パターンに基づいてL2キャッシュ616内の事前取り出しロジックによって生成することもできる。要求アドレスに応答して、L2キャッシュ616は複数命令のキャッシュ・ラインを出力し、その命令は、おそらく任意選択の事前デコード・ロジック602を通過した後、Iキャッシュ再ロード・バス626を介して事前取り出しバッファ(PB:prefetch buffer)628およびL1 Iキャッシュ618にロードされる。
IFAR630内のEAによって指定されたキャッシュ・ラインがL1キャッシュ618内に常駐すると、L1 Iキャッシュ618は、分岐予測ユニット(BPU)636および命令取り出しバッファ(IFB)640の両方にキャッシュ・ラインを出力する。BPU636は、複数命令のキャッシュ・ラインを走査して分岐命令を捜し、条件付き分岐命令があれば、その結果を予測する。分岐予測後に、BPU636は、上述の通り、IFAR630に投機的命令取り出しアドレスを供給し、条件付き分岐命令がその後、分岐実行ユニット692によって解決されたときに予測の正確さを決定できるように、分岐命令キュー664にその予測を渡す。
IFB640は、複数命令のキャッシュ・ラインが命令変換ユニット(ITU)642によって変換できるまで、L1 Iキャッシュ618から受信した複数命令のキャッシュ・ラインを一時的にバッファリングする。コア550の例示されている実施形態では、ITU642は、ユーザ命令セット・アーキテクチャ(UISA:user instruction set architecture)命令からの命令を、コア550の実行ユニットによって直接実行可能な、おそらく異なる数の内部ISA(IISA:internal ISA)命令に変換する。このような変換は、たとえば、読み取り専用メモリ(ROM)テンプレートに保管されたマイクロコードを参照することにより、実行することができる。少なくともいくつかの実施形態では、UISA/IISA変換の結果、UISA命令とは異なる数のIISA命令または対応するUISA命令とは異なる長さのIISA命令あるいはその両方が得られる。結果として得られるIISA命令は、次に、グローバル完了テーブル638によって命令グループに割り当てられ、そのメンバは相互に対して順不同にディスパッチし実行することが許可される。グローバル完了テーブル638は、それに関する実行を少なくとも1つの関連EAによって完了する必要がある各命令グループを追跡し、その関連EAは好ましくは命令グループ内の最も古い命令のEAである。
UISA/IISA命令変換後に、命令は、命令タイプに基づいて、おそらく順不同に、ラッチ644、646、648、および650のうちの1つにディスパッチされる。すなわち、分岐命令およびその他の条件レジスタ(CR:condition register)変更命令はラッチ644にディスパッチされ、固定小数点およびロード・ストア命令はラッチ646および648のいずれか一方にディスパッチされ、浮動小数点命令はラッチ650にディスパッチされる。実行結果を一時的に保管するためにリネーム・レジスタを必要とする各命令には、次に、CRマッパ652、リンクおよびカウント(LC:link and count)レジスタ・マッパ654、例外レジスタ(XER:exceptionregister)マッパ656、汎用レジスタ(GPR:general-purpose register)マッパ658、および浮動小数点レジスタ(FPR:floating-point register)マッパ660のうちの適切なマッパによって1つまたは複数のリネーム・レジスタが割り当てられる。
ディスパッチされた命令は、次に、CR発行キュー(CRIQ:CRissue queue)662、分岐発行キュー(BIQ:branch issue queue)664、固定小数点発行キュー(FXIQ:fixed-point issue queue)666および668、ならびに浮動小数点発行キュー(FPIQ:floating-point issue queue)670および672のうちの適切な発行キューに一時的に入れられる。データ依存および逆依存が観察される限り、実行のために発行キュー662、664、666、668、670、および672から、処理装置603の実行ユニットに対し適切な機会に命令を発行することができる。しかし、いずれかの命令を再発行する必要がある場合、命令の実行が完了し、結果データがある場合にそのデータが書き戻されるまで、命令は発行キュー662〜672に維持される。
例示されている通り、コア550の実行ユニットは、CR変更命令を実行するためのCRユニット(CRU)690、分岐命令を実行するための分岐実行ユニット(BEU)692)、固定小数点命令を実行するための2つの固定小数点ユニット(FXU)694および605、ロードおよびストア命令を実行するための2つのロード/ストア・ユニット(LSU)696および698、浮動小数点命令を実行するための2つの浮動小数点ユニット(FPU)606および604を含む。実行ユニット690〜604のそれぞれは、好ましくは、いくつかのパイプライン・ステージを有する実行パイプラインとして実現される。
実行ユニット690〜604のうちの1つにおける実行中に、命令は、実行ユニットに結合されたレジスタ・ファイル内の1つまたは複数の構築レジスタまたはリネーム・レジスタあるいはその両方からのオペランドがある場合にそのオペランドを受信する。CR変更命令またはCR依存命令を実行しているときに、CRU690およびBEU692はCRレジスタ・ファイル680にアクセスし、そのレジスタ・ファイルは好ましい一実施形態では1つのCRと、それぞれが1つまたは複数のビットから形成されたいくつかの個別フィールドを含むいくつかのCRリネーム・レジスタとを含む。これらのフィールドの中には、ある値(典型的には命令の結果またはオペランド)がゼロより小さいか、ゼロより大きいか、またはゼロに等しいかどうかをそれぞれ示すLT、GT、EQフィールドがある。リンクおよびカウント・レジスタ(LCR)ファイル682は、それぞれのカウント・レジスタ(CTR)、リンク・レジスタ(LR)、およびリネーム・レジスタを含み、それによりBEU692は条件付き分岐を解決して経路アドレスを入手することもできる。同期している汎用レジスタ・ファイル(GPR)684および686は、レジスタ・ファイルを複製し、FXU694および605ならびにLSU696および698によってアクセスされ生成された固定小数点値および整数値を保管する。浮動小数点レジスタ・ファイル(FPR)688は、GPR684および686のように、同期レジスタの複製セットとして実現することもでき、FPU606および604による浮動小数点命令の実行ならびにLSU696および698による浮動小数点ロード命令の実行の結果として得られる浮動小数点値を含む。
実行ユニットが命令の実行を終了した後、その実行ユニットはGCT638に通知し、そのGCTはプログラムの順序で命令の完了をスケジュールする。CRU690、FXU694および605、またはFPU606および604のうちの1つによって実行された命令を完了するために、GCT638は実行ユニットに信号を送り、その実行ユニットは、割り当てられたリネーム・レジスタ(複数も可)からの結果データがある場合にそのデータを適切なレジスタ・ファイル内の1つまたは複数の構築レジスタに書き戻す。次に命令は発行キューから除去され、その命令グループ内のすべての命令が完了すると、GCT638から除去される。しかし、他のタイプの命令は異なる方法で完了される。
BEU692が条件付き分岐命令を解決し、取るべき実行経路の経路アドレスを決定すると、その経路アドレスはBPU636によって予測された投機的経路アドレスと比較される。経路アドレスが一致する場合、それ以上の処理は不要である。しかし、計算された経路アドレスが予測された経路アドレスと一致しない場合、BEU692は正しい経路アドレスをIFAR630に供給する。いずれかの場合、次に分岐命令をBIQ664から除去することができ、同じ命令グループ内の他のすべての命令が実行を完了すると、分岐命令をGCT638から除去することができる。
ロード命令の実行後、ロード命令を実行することによって計算された有効アドレスは、データERAT(例示せず)によって実アドレスに変換され、次に要求アドレスとしてL1 Dキャッシュ620に提供される。この時点で、ロード命令はFXIQ666または668から除去され、指示されたロードが実行されるまでロード・リオーダ・キュー(LRQ:load reorder queue)609に入れられる。要求アドレスがL1 Dキャッシュ620で見当たらない場合、要求アドレスはロード・ミス・キュー(LMQ:load miss queue)607に入れられ、それにより要求されたデータがL2キャッシュ616から取り出され、それに失敗すると、他のコア550またはシステム・メモリ(たとえば、図5に示されているRAM528)から取り出される。LRQ609は、排他的アクセス要求(たとえば、変更予定の読み取り(read-with-intent-to-modify))をスヌープし、未完了のロードに対して相互接続ファブリック(図示せず)上でフラッシュまたは強制終了し、ヒットが発生した場合、ロード命令を取り消して再発行する。ストア命令は、ストア命令の実行後にストア用の有効アドレスがそこにロードされるストア・キュー(STQ:store queue)610を利用して同様に完了する。STQ610からL1 Dキャッシュ620およびL2キャッシュ616のいずれか一方または両方にデータを保管することができる。
コア550は状態を有し、その状態は特定の時点で保管データ、命令、およびハードウェア状態を含み、本明細書では「ハード」または「ソフト」のいずれかとして定義されることに留意されたい。「ハード」状態は、プロセス内の現在のポイントからプロセスを実行するためにコア550にとってアーキテクチャ上必要な、コア550内の情報として定義される。対照的に、「ソフト」状態は、プロセスの実行の効率を改善すると思われるコア550内の情報として定義されるが、アーキテクチャ上正しい結果を達成するために必要なものではない。コア550では、ハード状態は、CRR680、LCR682、GPR684および686、FPR688などのユーザレベル・レジスタならびにスーパバイザ・レベル・レジスタ651の内容を含む。コア550のソフト状態は、L1 Iキャッシュ618、L1 Dキャッシュ620の内容などの「パフォーマンスクリティカル」情報、DTLB612およびITLB613などのアドレス変換情報と、BHT635およびL2キャッシュ616の内容の全部または一部などのあまり重要ではない情報の両方を含む。ソフトウェア・スレッド(たとえば、第1のソフトウェア・スレッド124または第2のソフトウェア・スレッド126あるいはその両方)がコア550に入るかまたはそこを出ると必ず、ハード状態およびソフト状態は、ハード/ソフト状態を明記された位置に直接格納するか、またはコンテキスト交換を使用してそれを完全にフラッシュすることにより、それぞれ格納されるかまたは復元される。この状態管理は好ましくはナノカーネル(たとえば、上記の図1に記載されているナノカーネル108a〜108d)によって実行され、したがって、1つの非トラステッド・ソフトウェア(たとえば、図1に記載されている作業単位メッセージ116)は悪意を持ってまたは不注意でコンテキスト交換を引き起こすことはない。
次に図7を参照すると、非トラステッド作業単位メッセージが高スレッド化ネットワーク・オン・ア・チップ(NOC)プロセッサにおけるスループットを損なうのを防止するために行われる模範的な諸ステップの高レベル流れ図が提示されている。開始ブロック702の後、一実施形態においてNOC内の特定の第1のノードに関連するナノカーネルが作業単位メッセージを受信する(ブロック704)。上述の通り、この作業単位メッセージは、実行可能命令のペイロード、ならびに実行可能命令が第1のノード内で処理される間にNOC内のリソースをどのように利用し保護するかに関するセキュリティ命令を含む。したがって、その作業単位メッセージが実行している間に他のリソース(ノード、ハードウェア・スレッド、コア、メモリ、I/O装置など)を保護する(セキュア環境に置く)必要がないとセキュリティ・メッセージ/命令が判断した場合(照会ブロック706)、その作業単位メッセージは、NOC内の他のリソースにアクセスできる第1のノード内で通常の非セキュア・モードで実行され(ブロック708)、プロセスは終了する(終了ブロック722)。
しかし、NOC内の他のリソースを保護する必要がある(たとえば、作業単位メッセージが非トラステッドである)場合、ブロック710に記載されているように、その作業単位メッセージを受信するナノカーネルは、他のリソース(作業単位メッセージ内の命令が実行される予定の第1のノード以外のリソース)用のセキュア環境を確立する。これらの他のリソースは、第1のノード内で実行されているペイロード命令に対してそのリソース自体を暴露することを拒否するよう、作業単位メッセージ内のセキュリティ・メッセージによって指示される。また、作業単位からのペイロード命令が第1のノード内で実行されている間に第1のノードがNOC内の他のリソースにアクセスできないように、第1のノードに関連するナノカーネルは、そのノードを下位のあまり特権的ではないモードに押し込む(ブロック712)。次に、第1のノードは、すべての命令が処理されるまで(照会ブロック716)、作業単位メッセージからのペイロード命令を実行し始める(ブロック714)。作業単位メッセージまたは第1のノードあるいはその両方がNOC内の保護リソースを利用しようと試みる場合、ホスト・コンピュータ(たとえば、図1に示されているホスト・コンピュータ110)に例外メッセージを伝送することができ、そのホスト・コンピュータは、他のリソースが損なわれているかまたは不適切に接触されているというリスクまたは証拠がある場合に、(たとえば、図1に記載されているユーザ・アプリケーション112から)ユーザ・アプリケーションベースの作業単位メッセージの伝送を完全に再始動することを含む、適切な方法でその例外を処理することができることに留意されたい。
ブロック718に記載されているように、作業単位メッセージからのすべてのペイロード命令の実行を完了すると、ナノカーネルは、上位の特権ノード(それがもう一度、NOC内の他のリソースにアクセスできる)に戻るよう、その関連の第1のノードに指示する。また、このナノカーネルは、もう一度、他のリソース自体を第1のノードにとって使用可能なものにするよう、そのリソースに指示し、その結果、そのセキュア環境の損失が発生する(ブロック720)。
本発明の少なくともいくつかの態様は代わって、プログラムを含むコンピュータ可読媒体で実現できることを理解されたい。本発明の諸機能を定義するプログラムは、書き込み不能記憶媒体(たとえば、CD−ROM)、書き込み可能記憶媒体(たとえば、ハード・ディスク・ドライブ、読み書きCD−ROM、光学媒体)を無制限に含む、様々な有形信号伝送媒体、ならびに、イーサネット、インターネット、無線ネットワーク、同様のネットワーク・システムなどのコンピュータ・ネットワークおよび電話網などの非有形通信媒体を介して、データ記憶システムまたはコンピュータ・システムに配布することができる。したがって、本発明における方法機能を指示するコンピュータ可読命令を伝達またはエンコードするときに、このような信号伝送媒体が本発明の代替諸実施形態を表すことを理解されたい。さらに、本明細書に記載されているハードウェア、ソフトウェア、またはソフトウェアとハードウェアの組み合わせあるいはそれらと同等の形の手段を有するシステムにより本発明を実現できることは言うまでもない。
102 ネットワーク・オン・ア・チップ(NOC)
104a〜d ノード
106a〜d コア(複数も可)
108a〜d ナノカーネル
110 ホスト・コンピュータ
112 ユーザ・アプリケーション
114 複数作業単位メッセージ
116 作業単位メッセージ
118 ペイロード
120 受信側ロジック
122 セキュリティ・メッセージ
124 第1のソフトウェア・スレッド
126 第2のソフトウェア・スレッド
128 メモリ・リソース
130 I/Oリソース

Claims (20)

  1. ネットワーク・オン・ア・チップ(NOC)内のリソースへの無許可アクセスを防止するためのコンピュータによって実行される方法において、前記方法が、
    ネットワーク・オン・ア・チップ(NOC)の第1のノードで作業単位メッセージを受信するステップと、
    前記NOCの前記第1のノードでセキュリティ・メッセージを受信するステップであって、前記第1のノードがあまり特権的ではない非セキュア・モードで実行している間にセキュア・モードで動作するよう、前記セキュリティ・メッセージが前記NOC内の第2のノードに指示し、前記セキュア・モードにより前記第1のノードが前記第2のノードにアクセスするのを防止するステップと、
    前記NOCの前記第1のノードで前記作業単位メッセージを実行するステップと、
    を含む、コンピュータによって実行される方法。
  2. 前記第1のノードおよび前記第2のノードが前記NOC内の異なるノードである、請求項1記載のコンピュータによって実行される方法。
  3. 前記第1のノードおよび前記第2のノードが前記NOC内の同じノードである、請求項1記載のコンピュータによって実行される方法。
  4. 前記作業単位メッセージが第1の操作と第2の操作とを含み、前記第1の操作が前記同じノード内の第1のコアで実行され、前記第2の操作が前記同じノード内の第2のコアで実行される、請求項3記載のコンピュータによって実行される方法。
  5. 前記作業単位メッセージが前記第1のノードで実行されるグラフィックス・シェーダであり、前記グラフィックス・シェーダが前記第1のノードで実行されている間にグラフィカル・ワイヤフレーム・ジェネレータが前記第2のノードで実行される、請求項2記載のコンピュータによって実行される方法。
  6. 前記作業単位メッセージからの命令が前記第1のノードで実行されている間に前記第1のノードにとってアクセス不能になるよう、前記セキュリティ・メッセージが前記NOCにとって使用可能なメモリ・リソースに指示する、請求項1記載のコンピュータによって実行される方法。
  7. 前記NOC内の各ノードが異なる専用ナノカーネルに関連し、各ナノカーネルが、前記NOC内のノードへの作業単位メッセージの伝送および前記NOC内のノード間の作業単位メッセージの伝送のみが可能である1つの細かいソフトウェア論理である、請求項1記載のコンピュータによって実行される方法。
  8. 前記第1のノードに関連する第1の専用ナノカーネルが受信側ロジックを制御し、前記受信側ロジックが前記第1のノードに前記作業単位メッセージをディスパッチし、前記セキュア・モードで動作するよう、前記受信側ロジックが前記第2のノードに指示する、請求項7記載のコンピュータによって実行される方法。
  9. 前記NOC内の他のノードへのアクセスを制限することにより、前記セキュリティ・メッセージが前記NOC内の前記他のノードへのメッセージ・トラフィックをさらに抑制する、請求項1記載のコンピュータによって実行される方法。
  10. 前記NOCがホスト・コンピュータによって制御され、前記作業単位メッセージが前記ホスト・コンピュータから前記第1のノードにディスパッチされ、前記作業単位メッセージが前記ホスト・コンピュータに保管されたユーザ・アプリケーションの一部である、請求項1記載のコンピュータによって実行される方法。
  11. 前記作業単位メッセージが、非トラステッド・ソースから送信された非トラステッド作業単位であり、前記非トラステッド・ソースが、前記NOC内の受信側ロジックによって許可ソースとして認証されていない、請求項1記載のコンピュータによって実行される方法。
  12. ホスト・コンピュータと、
    前記ホスト・コンピュータに結合され、第1のノードと、第2のノードと、受信側ロジックとを含む、ネットワーク・オン・ア・チップ(NOC)と、
    を含むシステムにおいて、前記受信側ロジックが、
    前記NOC内の前記第1のノードにアドレス指定された作業単位メッセージを受信し、
    前記第1のノードがあまり特権的ではない非セキュア・モードで実行している間にセキュア・モードで動作するよう、前記NOC内の前記第2のノードに指示するセキュリティ・メッセージを受信し、前記セキュア・モードにより前記第1のノードが前記第2のノードにアクセスするのを防止し、前記第1のノードが、前記あまり特権的ではない非セキュア・モードの間に前記作業単位メッセージを実行する、システム。
  13. コンピュータ・プログラムがエンコードされたコンピュータ可読記憶媒体において、前記コンピュータ・プログラムが、
    ネットワーク・オン・ア・チップ(NOC)の第1のノードで作業単位メッセージを受信し、
    前記NOCの前記第1のノードでセキュリティ・メッセージを受信し、前記第1のノードがあまり特権的ではない非セキュア・モードで実行している間にセキュア・モードで動作するよう、前記セキュリティ・メッセージが前記NOC内の第2のノードに指示し、前記セキュア・モードにより前記第1のノードが前記第2のノードにアクセスするのを防止し、
    前記NOCの前記第1のノードで前記作業単位メッセージを実行する
    ために構成されたコンピュータ実行可能命令を含む、コンピュータ可読記憶媒体。
  14. 前記第1のノードおよび前記第2のノードが前記NOC内の異なるノードである、請求項13記載のコンピュータ可読記憶媒体。
  15. 前記第1のノードおよび前記第2のノードが前記NOC内の同じノードである、請求項13記載のコンピュータ可読記憶媒体。
  16. 前記作業単位メッセージが第1の操作と第2の操作とを含み、前記第1の操作が前記同じノード内の第1のコアで実行され、前記第2の操作が前記同じノード内の第2のコアで実行される、請求項15記載のコンピュータ可読記憶媒体。
  17. 前記作業単位メッセージが前記第1のノードで実行されるグラフィックス・シェーダであり、前記グラフィックス・シェーダが前記第1のノードで実行されている間にグラフィカル・ワイヤフレーム・ジェネレータが前記第2のノードで実行される、請求項14記載のコンピュータ可読記憶媒体。
  18. 前記作業単位メッセージからの命令が前記第1のノードで実行されている間に前記第1のノードにとってアクセス不能になるよう、前記セキュリティ・メッセージが前記NOCにとって使用可能なメモリ・リソースに指示する、請求項13記載のコンピュータ可読記憶媒体。
  19. 前記NOC内の各ノードが異なる専用ナノカーネルに関連し、各ナノカーネルが、前記NOC内のノードへの作業単位メッセージの伝送および前記NOC内のノード間の作業単位メッセージの伝送のみが可能である1つの細かいソフトウェア論理である、請求項13記載のコンピュータ可読記憶媒体。
  20. 前記第1のノードに関連する第1の専用ナノカーネルが受信側ロジックを制御し、前記受信側ロジックが前記第1のノードに前記作業単位メッセージをディスパッチし、前記セキュア・モードで動作するよう、前記受信側ロジックが前記第2のノードに指示する、請求項19記載のコンピュータ可読記憶媒体。
JP2009197459A 2008-10-22 2009-08-27 高スレッド化ネットワーク・オン・ア・チップ・プロセッサにおけるスループットをユーザが損なうのを防止するためのセキュリティ方法 Expired - Fee Related JP5473487B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/255818 2008-10-22
US12/255,818 US8108908B2 (en) 2008-10-22 2008-10-22 Security methodology to prevent user from compromising throughput in a highly threaded network on a chip processor

Publications (2)

Publication Number Publication Date
JP2010102694A true JP2010102694A (ja) 2010-05-06
JP5473487B2 JP5473487B2 (ja) 2014-04-16

Family

ID=42109669

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009197459A Expired - Fee Related JP5473487B2 (ja) 2008-10-22 2009-08-27 高スレッド化ネットワーク・オン・ア・チップ・プロセッサにおけるスループットをユーザが損なうのを防止するためのセキュリティ方法

Country Status (4)

Country Link
US (1) US8108908B2 (ja)
JP (1) JP5473487B2 (ja)
KR (1) KR101072148B1 (ja)
TW (1) TW201030551A (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8108908B2 (en) * 2008-10-22 2012-01-31 International Business Machines Corporation Security methodology to prevent user from compromising throughput in a highly threaded network on a chip processor
KR101781617B1 (ko) * 2010-04-28 2017-09-25 삼성전자주식회사 통합 입출력 메모리 관리 유닛을 포함하는 시스템 온 칩
US8996879B2 (en) * 2010-12-23 2015-03-31 Intel Corporation User identity attestation in mobile commerce
JP2013196167A (ja) * 2012-03-16 2013-09-30 Toshiba Corp 情報処理装置
KR101954733B1 (ko) * 2012-10-26 2019-03-06 삼성전자주식회사 보안 콘텐츠를 처리하는 시스템 온 칩 및 그것을 포함하는 모바일 장치
JP2014191622A (ja) * 2013-03-27 2014-10-06 Fujitsu Ltd 処理装置
US9520180B1 (en) 2014-03-11 2016-12-13 Hypres, Inc. System and method for cryogenic hybrid technology computing and memory
US9742630B2 (en) * 2014-09-22 2017-08-22 Netspeed Systems Configurable router for a network on chip (NoC)
US10348563B2 (en) 2015-02-18 2019-07-09 Netspeed Systems, Inc. System-on-chip (SoC) optimization through transformation and generation of a network-on-chip (NoC) topology
US10218580B2 (en) 2015-06-18 2019-02-26 Netspeed Systems Generating physically aware network-on-chip design from a physical system-on-chip specification
US10452124B2 (en) 2016-09-12 2019-10-22 Netspeed Systems, Inc. Systems and methods for facilitating low power on a network-on-chip
US20180159786A1 (en) 2016-12-02 2018-06-07 Netspeed Systems, Inc. Interface virtualization and fast path for network on chip
US10063496B2 (en) 2017-01-10 2018-08-28 Netspeed Systems Inc. Buffer sizing of a NoC through machine learning
US10469337B2 (en) 2017-02-01 2019-11-05 Netspeed Systems, Inc. Cost management against requirements for the generation of a NoC
US10516606B2 (en) 2017-07-12 2019-12-24 Micron Technology, Inc. System for optimizing routing of communication between devices and resource reallocation in a network
US10511353B2 (en) 2017-07-12 2019-12-17 Micron Technology, Inc. System for optimizing routing of communication between devices and resource reallocation in a network
US10671460B2 (en) * 2018-02-05 2020-06-02 Micron Technology, Inc. Memory access communications through message passing interface implemented in memory systems
US11144457B2 (en) 2018-02-22 2021-10-12 Netspeed Systems, Inc. Enhanced page locality in network-on-chip (NoC) architectures
US10983910B2 (en) 2018-02-22 2021-04-20 Netspeed Systems, Inc. Bandwidth weighting mechanism based network-on-chip (NoC) configuration
US10547514B2 (en) 2018-02-22 2020-01-28 Netspeed Systems, Inc. Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation
US11176302B2 (en) 2018-02-23 2021-11-16 Netspeed Systems, Inc. System on chip (SoC) builder
US11023377B2 (en) 2018-02-23 2021-06-01 Netspeed Systems, Inc. Application mapping on hardened network-on-chip (NoC) of field-programmable gate array (FPGA)
TW202344019A (zh) * 2018-08-23 2023-11-01 美商阿爾克斯股份有限公司 具有主機確定學習及本地化路由與橋接整合的主機路由覆蓋機制的系統
US11782713B1 (en) * 2019-08-27 2023-10-10 Amazon Technologies, Inc. Security vulnerability mitigation using address space co-execution
US20230328045A1 (en) * 2022-04-08 2023-10-12 Xilinx, Inc. Secure shell and role isolation for multi-tenant compute

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08241293A (ja) * 1995-03-06 1996-09-17 Gijutsu Kenkyu Kumiai Shinjoho Shiyori Kaihatsu Kiko 遠隔メモリアクセス制御装置
WO2006022161A1 (ja) * 2004-08-25 2006-03-02 Nec Corporation 情報通信装置及びプログラム実行環境制御方法
JP2006221633A (ja) * 2005-02-07 2006-08-24 Sony Computer Entertainment Inc マルチプロセッサシステムにおいてプロセッサのセキュアな連携を行う方法および装置
JP2007172430A (ja) * 2005-12-26 2007-07-05 Hitachi Ltd 半導体集積回路
JP2007532075A (ja) * 2004-04-05 2007-11-08 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 集積回路及びタイムスロット割当て方法
WO2008078564A1 (ja) * 2006-12-22 2008-07-03 Panasonic Corporation 情報処理装置、集積回路、方法、およびプログラム
US20090089861A1 (en) * 2007-09-28 2009-04-02 Stmicroelectronics (Grenoble) Sas Programmable data protection device, secure programming manager system and process for controlling access to an interconnect network for an integrated circuit
US8108908B2 (en) * 2008-10-22 2012-01-31 International Business Machines Corporation Security methodology to prevent user from compromising throughput in a highly threaded network on a chip processor

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102004062203B4 (de) 2004-12-23 2007-03-08 Infineon Technologies Ag Datenverarbeitungseinrichtung, Telekommunikations-Endgerät und Verfahren zur Datenverarbeitung mittels einer Datenverarbeitungseinrichtung
FR2883117B1 (fr) 2005-03-08 2007-04-27 Commissariat Energie Atomique Architecture de noeud de communication dans un systeme de reseau sur puce globalement asynchrone.
KR100687659B1 (ko) 2005-12-22 2007-02-27 삼성전자주식회사 Axi 프로토콜에 따른 락 오퍼레이션을 제어하는네트워크 인터페이스, 상기 네트워크 인터페이스가 포함된패킷 데이터 통신 온칩 인터커넥트 시스템, 및 상기네트워크 인터페이스의 동작 방법

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08241293A (ja) * 1995-03-06 1996-09-17 Gijutsu Kenkyu Kumiai Shinjoho Shiyori Kaihatsu Kiko 遠隔メモリアクセス制御装置
JP2007532075A (ja) * 2004-04-05 2007-11-08 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 集積回路及びタイムスロット割当て方法
WO2006022161A1 (ja) * 2004-08-25 2006-03-02 Nec Corporation 情報通信装置及びプログラム実行環境制御方法
JP2006221633A (ja) * 2005-02-07 2006-08-24 Sony Computer Entertainment Inc マルチプロセッサシステムにおいてプロセッサのセキュアな連携を行う方法および装置
JP2007172430A (ja) * 2005-12-26 2007-07-05 Hitachi Ltd 半導体集積回路
WO2008078564A1 (ja) * 2006-12-22 2008-07-03 Panasonic Corporation 情報処理装置、集積回路、方法、およびプログラム
US20090089861A1 (en) * 2007-09-28 2009-04-02 Stmicroelectronics (Grenoble) Sas Programmable data protection device, secure programming manager system and process for controlling access to an interconnect network for an integrated circuit
US8108908B2 (en) * 2008-10-22 2012-01-31 International Business Machines Corporation Security methodology to prevent user from compromising throughput in a highly threaded network on a chip processor

Also Published As

Publication number Publication date
US20100100934A1 (en) 2010-04-22
TW201030551A (en) 2010-08-16
KR101072148B1 (ko) 2011-10-10
US8108908B2 (en) 2012-01-31
KR20100044686A (ko) 2010-04-30
JP5473487B2 (ja) 2014-04-16

Similar Documents

Publication Publication Date Title
JP5473487B2 (ja) 高スレッド化ネットワーク・オン・ア・チップ・プロセッサにおけるスループットをユーザが損なうのを防止するためのセキュリティ方法
US8423749B2 (en) Sequential processing in network on chip nodes by threads generating message containing payload and pointer for nanokernel to access algorithm to be executed on payload in another node
US7992043B2 (en) Software debugger for packets in a network on a chip
US7873066B2 (en) Streaming direct inter-thread communication buffer packets that support hardware controlled arbitrary vector operand alignment in a densely threaded network on a chip
US8140832B2 (en) Single step mode in a software pipeline within a highly threaded network on a chip microprocessor
US9710274B2 (en) Extensible execution unit interface architecture with multiple decode logic and multiple execution units
JP5496578B2 (ja) 高密度スレッド化ネットワーク・オン・ア・チップにおけるソフトウェア制御の任意ベクトル・オペランド選択をサポートする直接スレッド間通信バッファ
US8275598B2 (en) Software table walk during test verification of a simulated densely threaded network on a chip
US10776117B2 (en) Instruction predication using unused datapath facilities
US20120260252A1 (en) Scheduling software thread execution
US8719404B2 (en) Regular expression searches utilizing general purpose processors on a network interconnect
US9354887B2 (en) Instruction buffer bypass of target instruction in response to partial flush
US9195463B2 (en) Processing core with speculative register preprocessing in unused execution unit cycles
US9147078B2 (en) Instruction set architecture with secure clear instructions for protecting processing unit architected state information
US9053049B2 (en) Translation management instructions for updating address translation data structures in remote processing nodes
US8892851B2 (en) Changing opcode of subsequent instruction when same destination address is not used as source address by intervening instructions
US20140164465A1 (en) Vector execution unit with prenormalization of denormal values
US8880852B2 (en) Detecting logically non-significant operation based on opcode and operand and setting flag to decode address specified in subsequent instruction as different address
WO2020115455A1 (en) A system and method for handling exception causing events

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120330

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130917

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131213

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: 20140114

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140204

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees