(57)【要約】【課題】チップの内部投票ベースのビルトイン・セルフ・テスト（ＢＩＳＴ）を実施するために、マルチコア・プロセッサ集積回路デバイスまたはチップ上に配設されるスキャン論理部を利用する、方法および回路装置を提供すること。【解決手段】チップ上で内部的にテスト・パターンが生成され、チップ上の複数の処理コア内のスキャン・チェインに通信される。スキャン・チェインにより出力される試験結果は、チップ上で互いに比較され、多数決が使用されて、不良処理コアを表す異常値の試験結果を識別する。不良試験結果内のビット位置が使用されて、スキャン・チェイン内の不良ラッチまたは不良処理コア内の不良機能ユニットあるいはその両方を識別し、不良処理コアまたは不良機能ユニットあるいはその両方を、試験に応じて自動的にディセーブルにすることができる。【選択図】図６
2015509183.tif 000002
【特許請求の範囲】
【請求項１】
マルチコア集積回路デバイス上に配設された複数の処理コアであって、各処理コアがスキャン・チェインを含む、前記複数の処理コアと、
前記マルチコア集積回路デバイス上に配設され、前記複数の処理コアの前記スキャン・チェインにテスト・パターンを通信し、前記テスト・パターンに応じて前記複数の処理コアの前記スキャン・チェインにより出力される試験結果を比較するように構成される、スキャン論理部であって、前記複数の処理コアにより出力される前記試験結果の大多数と異なる不良処理コアの前記スキャン・チェインにより出力される前記試験結果に基づいて、前記複数の処理コアのうちの前記不良処理コアを識別するようにさらに構成される、前記スキャン論理部と
を備える、回路装置。
【請求項２】
前記スキャン・チェインが直列スキャン・チェインであり、前記複数の処理コアの前記スキャン・チェインにより出力される前記試験結果のビット単位比較を実施するように前記スキャン論理部が構成される、請求項１に記載の回路装置。
【請求項３】
前記スキャン・チェインがそれぞれ、互いに直列に結合される複数のラッチを含み、前記複数の処理コアにより出力される試験結果の前記大多数と異なる前記試験結果のビットの位置に基づいて、前記不良処理コア内の不良ラッチを識別するように前記スキャン論理部がさらに構成される、請求項２に記載の回路装置。
【請求項４】
前記スキャン・チェインがそれぞれ、前記試験結果を１回に１ビットずつ出力するように構成され、前記スキャン論理部が、前記試験結果の各ビットを受け取ることに関連してカウンタを増加し、前記カウンタを使用して前記不良ラッチを識別するように構成される、請求項３に記載の回路装置。
【請求項５】
不良データ構造体をさらに備え、前記複数の処理コアにより出力される試験結果の前記大多数と異なる前記不良処理コアの前記試験結果内のビットを識別することに関連して、前記不良データ構造体内の前記カウンタの値を記憶するように前記スキャン論理部が構成される、請求項４に記載の回路装置。
【請求項６】
前記不良データ構造体が複数の記憶要素を備え、各記憶要素が前記複数の処理コアのうちの１つの処理コアに関連し、前記不良処理コアに関連する前記記憶要素内の前記カウンタの前記値を前記スキャン論理部が記憶するように構成される、請求項５に記載の回路装置。
【請求項７】
前記不良データ構造体が複数のエントリを備え、前記複数の処理コアのいずれかで検出されたそれぞれの不良に応じて、前記不良に関連するカウンタ値を前記不良データ構造体内のエントリに記憶するように前記スキャン論理部が構成される、請求項６に記載の回路装置。
【請求項８】
前記不良データ構造体が複数の電子ヒューズを備える、請求項５に記載の回路装置。
【請求項９】
各処理コアの前記スキャン・チェイン内の前記複数のラッチが、前記処理コアの複数の機能ユニット内に配設され、前記不良ラッチを識別することに応じて不良機能ユニットを識別するように前記スキャン論理部が構成される、請求項３に記載の回路装置。
【請求項１０】
前記不良機能ユニットを識別することに応じて前記不良機能ユニットを自動的にディセーブルにするように前記スキャン論理部が構成される、請求項９に記載の回路装置。
【請求項１１】
前記不良機能ユニットに関連する電子ヒューズをとばすことにより、前記不良機能ユニットを自動的にディセーブルにするように前記スキャン論理部が構成される、請求項１０に記載の回路装置。
【請求項１２】
前記スキャン論理部が複数のテスト・パターンを前記複数の処理コアに通信するように構成され、各テスト・パターンに関し、
前記テスト・パターンを前記複数の処理コアの前記スキャン・チェインにクロック入力し、
前記複数の処理コアを複数のクロック・サイクルの間クロック制御し、
前記複数の処理コアの前記スキャン・チェインから前記試験結果をクロック出力する
ように構成される、請求項３に記載の回路装置。
【請求項１３】
前記スキャン論理部が、複数の疑似乱数テスト・パターンを生成するように構成される疑似乱数論理部を含む、請求項１２に記載の回路装置。
【請求項１４】
前記スキャン論理部が、前記複数の処理コアに所定のシーケンスのテスト・パターンを通信するように構成される、請求項１２に記載の回路装置。
【請求項１５】
前記スキャン論理部が、前記マルチコア集積回路デバイス上に配設された前記処理コアの全ての前記スキャン・チェインにより出力される試験結果を比較するように構成される、請求項１に記載の回路装置。
【請求項１６】
前記スキャン論理部が、互いに並列に複数の比較を実施するように構成され、各比較が、前記マルチコア集積回路デバイス上に配設された前記処理コアのサブセットの前記スキャン・チェインにより出力される試験結果を比較する、請求項１に記載の回路装置。
【請求項１７】
請求項１に記載の回路装置を含む、集積回路デバイス。
【請求項１８】
コンピュータ可読媒体および前記コンピュータ可読媒体上に記憶されて請求項１に記載の回路装置を規定する論理規定プログラム・コードを備えるプログラム製品。
【請求項１９】
複数の処理コアを含むマルチコア集積回路デバイスのビルトイン・セルフ・テスト（ＢＩＳＴ）を実施する方法であって、各処理コアがスキャン・チェインを含み、
前記マルチコア集積回路デバイス上に配設されたスキャン論理部を使用して、前記複数の処理コアの前記スキャン・チェインにテスト・パターンを通信するステップと、
前記スキャン論理部を使用して前記テスト・パターンに応じて前記複数の処理コアの前記スキャン・チェインにより出力される試験結果を比較するステップと、
前記複数の処理コアにより出力される前記試験結果の大多数と異なる前記不良処理コアの前記スキャン・チェインにより出力される前記試験結果に基づいて、前記複数の処理コアのうちの不良処理コアを識別するステップと
を含む方法。
【請求項２０】
前記スキャン・チェインが直列スキャン・チェインであり、試験結果を比較するステップが前記複数の処理コアの前記スキャン・チェインにより出力される前記試験結果のビット単位の比較を実施するステップを含み、前記スキャン・チェインがそれぞれ互いに直列に結合される複数のラッチを含み、前記複数の処理コアにより出力される試験結果の前記大多数と異なる前記試験結果内のビットの位置に基づいて、前記不良処理コア内の不良ラッチを識別するステップをさらに含む、請求項１９に記載の方法。
【請求項２１】
不良データ構造体内の前記ビット位置に関連する値を記憶するステップをさらに含む、請求項２０に記載の方法。
【請求項２２】
各処理コアの前記スキャン・チェイン内の前記複数のラッチが前記処理コアの複数の機能ユニット内に配設され、前記不良ラッチを識別するステップに応答して不良機能ユニットを識別するステップをさらに含む、請求項２１に記載の方法。
【請求項２３】
前記不良機能ユニットを識別するステップに応答して前記スキャン論理部で前記不良機能ユニットを自動的にディセーブルにするステップをさらに含む、請求項２２に記載の方法。
【請求項２４】
前記スキャン論理部で複数の疑似乱数テスト・パターンを生成するステップと、前記複数の疑似乱数テスト・パターンを前記複数の処理コアに通信するステップとをさらに含む、請求項１９に記載の方法。
【請求項２５】
前記スキャン論理部で複数の所定のシーケンスのテスト・パターンを生成するステップと、前記所定のシーケンスのテスト・パターンを前記複数の処理コアに通信するステップとをさらに含む、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にデータ処理に関し、詳細には、プロセッサ・アーキテクチャおよび製造されるプロセッサ・チップのビルトイン・セルフ・テスト（ＢＩＳＴ）に関する。
【０００２】
半導体技術がクロック速度の増加に関して実質的な限界に刻々と近づき続けているので、設計者は、性能改善を得るために、プロセッサのアーキテクチャにおける並列処理にますます着目している。集積回路デバイスまたはチップのレベルでは、複数の処理コアが同じチップ上に配設され、別個のプロセッサ・チップ、またはある程度までは完全に別個のコンピュータと、ほとんど同じように機能することがしばしばある。加えて、コア内部でさえ、一定のタイプの動作を取り扱うことに特殊化した複数の実行ユニットを使用することで、並列処理が採用されている。実施するのに複数のクロック・サイクルがかかる場合がある一定の動作をステージに分割し、前の動作が完了する前に他の動作が開始されることが可能になるように、パイプライン化も多くの例で採用されている。複数の命令ストリームが並列に処理されることを可能にし、全体としてより多くの仕事が任意の所与のクロック・サイクルで実施されることを可能にするために、マルチスレッドも採用されている。
【０００３】
しかし、プロセッサ・チップの複雑さの増加による１つの影響は、製造されるチップの試験が、大幅にこれまで以上に複雑、かつ時間がかかるようになったことである。初期の集積回路デバイスは、デバイスがその意図されたように動作することを保証するために、デバイスの関連する内部動作の全てを監視することを可能にする、十分な入出力ピンをしばしば有していた。しかし、現在の設計物は数百万または数十億のトランジスタおよび多くの追加の高レベルの機能を組み込んでいるので、デバイス動作の直接監視を可能にする十分な入出力接続性をもうけることは、実現不可能である。
【０００４】
これらの制限に対処するために、今や多くの集積回路デバイスが、デバイスの論理回路内にバウンダリ・スキャン・アーキテクチャを組み込み、デバイスの内部回路の多くへのアクセスを可能にしている。バウンダリ・スキャン・アーキテクチャを用いて、ラッチの１つまたは複数の直列のスキャン・チェインまたはスキャン経路がデバイスの外部ポートに結合され、個別のラッチが、設計物のキー・ポイントでデバイスの論理回路内に埋め込まれる。スキャン・チェインとして動作するように特に構成されていないとき、ラッチは、通常ならばデバイスの機能性を変化させない。しかし、ラッチが特定のモードで構成されるとき、ラッチは一緒になってシフト・レジスタとして動作し、その結果、異なる状態をシミュレートするために、単一の発生源からラッチのチェイン内にデータをシフトすることができ、その結果、デバイス内で生成されたデータを単一の出力を通してシフト・アウトすることができる。したがって、バウンダリ・スキャン・アーキテクチャを用いて、任意の所与の時間におけるデバイス内の様々な回路の現在の状況を記録し、後で外部機器を介してアクセスして、製造されるデバイスの動作を検証することができる。
【０００５】
しかし、集積回路デバイスの試験を実施するために外部機器を利用する必要があることは、特にボリュームの大きい部品にとって、著しく負担になる場合がある。外部の試験インターフェイスが比較的速度が遅いことに起因して、実施するのに数分かかる可能性がある完全な試験を実施することと、より短時間で、不良部品が良品と誤って識別される危険がある、より表面的な試験を実施することとの間で、トレードオフをしばしば行わなければならない。さらに、外部機器を利用する必要があることによって、新しい欠陥が発生したかどうか決定するために、現場でチップを再試験することがしばしば不可能になる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
したがって、プロセッサ・チップなどの複雑な集積回路デバイスを、効率的かつコスト効果的に試験する方法に関し、かなりの必要性が当業界には存在し続けている。
【課題を解決するための手段】
【０００７】
本発明は、チップの内部投票ベースのビルトイン・セルフ・テスト（ＢＩＳＴ）を実施するために、マルチコア・プロセッサ集積回路デバイスまたはチップ上に配設されるスキャン論理部を利用する、方法および回路装置を提供することにより、従来技術に関連するこれらおよび他の問題に対処する。チップ上で内部的にテスト・パターンが生成され、チップ上の複数の処理コア内のスキャン・チェインに通信される。スキャン・チェインにより出力される試験結果は、チップ上で互いに比較され、多数決が使用されて、不良処理コアを表す、異常値の試験結果を識別する。いくつかの実施形態では、不良試験結果内のビット位置が使用されて、スキャン・チェイン内の不良ラッチまたは不良処理コア内の不良機能ユニットあるいはその両方を識別し、いくつかの実施形態では、不良処理コアまたは不良機能ユニットあるいはその両方を、試験に応じて自動的にディセーブルにすることができる。
【０００８】
本発明の１つの態様に一致して、ビルトイン・セルフ・テスト（ＢＩＳＴ）は、複数の処理コアを含み、各処理コアがスキャン・チェインを含むタイプのマルチコア集積回路デバイス用に実施される。マルチコア集積回路デバイス上に配設されるスキャン論理部は、複数の処理コアのスキャン・チェインにテスト・パターンを通信し、スキャン論理部を使用してテスト・パターンに応じて複数の処理コアのスキャン・チェインにより出力される試験結果を比較する。次いで、複数の処理コアにより出力される試験結果の大多数とは異なる不良処理コアのスキャン・チェインにより出力される試験結果に基づいて、複数の処理コアのうちの不良処理コアが識別される。
【０００９】
本発明を特徴付けるこれらおよび他の利点および特徴は、本明細書に添付し、本明細書のさらなる部分を形成する請求項に記載される。しかし、本発明および本発明の使用を通じて得られる利点および目的をより良好に理解するために、図面および本発明の例示的な実施形態が記載される添付の記載事項への参照をするべきである。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に一致するデータ処理で有用な例示的なコンピュータを含む、例示的な自動化されたコンピューティング機械のブロック図である。
【図２】図１のコンピュータに実装された例示的なＮＯＣのブロック図である。
【図３】図２のＮＯＣからのノードの例示的な実装を詳細に示すブロック図である。
【図４】図２のＮＯＣからのＩＰブロックの例示的な実装を示すブロック図である。
【図５】本発明に一致する内部投票ベースのＢＩＳＴを組み込んだ例示的なマルチコア・プロセッサ・チップのブロック図である。
【図６】図５で参照されるスキャン・エンジンの例示的な実装のブロック図である。
【図７】図５で参照される処理コアの１つの例示的な実装のブロック図である。
【図８】本発明に一致する内部投票ベースのＢＩＳＴを実施するときの、図５のマルチコア・プロセッサ・チップにより実施される動作の、例示的なシーケンスを示す流れ図である。
【発明を実施するための形態】
【００１１】
本発明に一致する実施形態は、マルチコア・プロセッサ集積回路デバイスまたはチップ上に配設されるスキャン論理部を利用して、チップの内部投票ベースのビルトイン・セルフ・テスト（ＢＩＳＴ）を実施する。チップ上で内部的にテスト・パターンが生成され、チップ上の複数の処理コア内のスキャン・チェインに通信される。スキャン・チェインにより出力される試験結果は、チップ上で互いに比較され、多数決が使用されて、不良処理コアを表す、異常値の試験結果を識別する。
【００１２】
本発明に一致するマルチコア・プロセッサ集積回路デバイスまたはチップは、互いの機能的な複製である複数の処理コアを含み、そのため、同じ入力が処理コアのスキャン・チェインに入力されること、ならびに処理コアが同じ数のクロック・サイクルでクロック制御されることに応答して、処理コアのスキャン・チェインにより出力される試験結果は、処理コアのいずれかに不良が存在しない場合、同じである。処理コアは、典型的には、例えば、発行ユニット、固定小数点実行ユニット、浮動小数点実行ユニットもしくは他の補助実行ユニットを含む、複数の機能ユニットまたはアクセラレータ、Ｌ１もしくはＬ２キャッシュあるいはその両方などのオンボード・キャッシュの１つもしくは複数レベルなどを含むが、処理コア内に配設され、ＢＩＳＴを介して試験することが可能な実質的に全ての回路論理部は、本発明では、機能ユニットと考えることができることを理解されよう。
【００１３】
処理コアは、必ずしもそうではないが、典型的には直列に接続された複数のラッチとして実装される、１つまたは複数のスキャン・チェインも含み、そのため、データは、ビット単位で、クロック・サイクル当たり１ビットずつスキャン・チェインへとスキャン入力し、スキャン・チェインからスキャン出力することができる。本発明では、スキャン・チェインは、任意の数のサブセットまたはグループにグループ化され、任意の数の機能ユニットに分散され、テスト・パターンを受け取るための入力およびそのようなテスト・パターンから生成される試験結果を出力するための出力を含む、任意の数のラッチを含むことができる。試験結果は、典型的には、テスト・パターンがスキャン・チェインにスキャン入力された後で、処理コアまたは少なくともその一部が１つまたは複数のサイクルぶんクロック制御された後の、スキャン・チェインに記憶されたデータを表す。
【００１４】
マルチコア・プロセッサ・チップの内部に配設されるスキャン論理部は、例えば、線形フィードバック・シフト・レジスタ（ＬＦＳＲ）または他の疑似乱数論理部により生成することができるような疑似乱数テスト・パターンといったテスト・パターンを生成するように構成される。あるいは、スキャン論理部は、例えば所定のシーケンスで、所定のテスト・パターンを生成することができる。所定のテスト・パターンは、揮発性もしくは不揮発性メモリ配列に記憶される、または試験の前に処理コアにロードされる専用論理部により生成することができる。例えば、設計プロセス期間に、特定の処理コア設計物を完全かつ効率的に試験するのに好適なテスト・パターンのシーケンスを決定し、次いでそれらのテスト・パターンをスキャン論理部の設計物に組み込むことが望ましい場合がある。
【００１５】
スキャン論理部は、望ましくは、不良処理コアを、試験された処理コアにより出力される試験結果の大多数とは異なる、その処理コアのスキャン・チェインにより出力される試験結果に基づいて識別する、投票アルゴリズムを実装するように構成される比較論理部も含む。言い換えると、「正しい」試験結果は、処理コアの大多数により戻される試験結果として決定され、そのため、大多数の意見の一致とは異なる試験結果を戻す任意の処理コアは不良であると識別することができる。
【００１６】
さらに、典型的には、試験結果データが処理コアのスキャン・チェインにより出力されると比較論理部は実行中に動作し、そのため、直列スキャン・チェインが実装される場合には、スキャン・チェインの出力をビット単位ベースで比較することができる。したがって、処理コアの大多数の意見の一致とは異なるビットを出力する任意の処理コアは不良であると識別することができる。さらに、試験結果の各ビットの位置を監視することにより不良ビットが得られたラッチを識別することができ、例えば、チップ上に常駐するマッピング・テーブルを介して処理コア内のラッチの場所が知られている実施形態では、ラッチが配設されている機能ユニットを識別することもできる。
【００１７】
不良または不合格の機能ユニットの識別情報は、本発明のいくつかの実施形態で、マルチコア・プロセッサ・チップを自動的に構成するために使用することもできる。例えば、電子ヒューズが使用され、処理コアまたは処理コア内の個別の機能ユニットをさえ選択的にイネーブルまたはディセーブルにする場合、不良機能ユニットの識別情報がスキャン論理部により使用されて、例えば電子ヒューズをとばすことにより、機能ユニットまたは処理コアを自動的にディセーブルにすることができる。
【００１８】
本発明に一致するスキャン論理部は、チップ上の処理コアの全てによって出力される試験結果の比較を実施することができ、別の場合には、処理コアのサブセットまたはグループを並列に試験するように構成される複数のインスタンスを含むことができる。例えば、処理コアは、わずか３つの処理コアのグループにグループ化することができ、そのため、グループ内の他の２つの処理コアとは異なる試験結果を戻す処理コアが不良であると識別され、チップ上の処理コアの全てを適切に試験するのに、十分なスキャン論理部のインスタンスがもうけられることになる。スキャン論理部の異なるインスタンスが使用されて処理コアのグループを比較するときでも、共通のテスト・パターン生成論理部を使用して、処理コアの全てにテスト・パターンを出力できることも理解されよう。さらに、処理コアの冗長なグループの複数のタイプが同じチップ上に配設される場合、異なるテスト・パターンを使用して処理コアの異なるグループを試験できることを理解されよう。
【００１９】
他の変形形態および変更形態が当業者には明らかであろう。したがって、本発明は、本明細書で議論される特定の実装に限定されない。
【００２０】
ハードウェア環境およびソフトウェア環境
ここで、図面に戻ると、複数の図を通して同様の番号は同様の部分を示しているが、図１では、本発明の実施形態に一致するデータ処理で有用な例示的なホスト・コンピュータ１０を含む、例示的な自動化されたコンピューティング機械を示している。図１のホスト・コンピュータ１０は、少なくとも１つのコンピュータ・プロセッサ１２または「ＣＰＵ」ならびにランダム・アクセス・メモリ１４（「ＲＡＭ」）を含み、ＲＡＭ１４は、高速メモリ・バス１６およびバス・アダプタ１８を介してコンピュータ・プロセッサ１２、およびホスト・コンピュータ１０の他の構成要素に接続される。
【００２１】
ＲＡＭ１４には、アプリケーション・プログラム２０、例えば、ワード・プロセシング、スプレッドシート、データベース操作、ビデオ・ゲーム、株式市場シミュレーション、原子の量子プロセス・シミュレーション、または他のユーザレベルのアプリケーションなどの特定のデータ処理タスクを実行するための、ユーザレベルのコンピュータ・プログラム命令のモジュールが記憶される。ＲＡＭ１４には、オペレーティング・システム２２も記憶される。本発明の実施形態に関して有用なオペレーティング・システムとしては、ＵＮＩＸ（Ｒ）、Ｌｉｎｕｘ（Ｒ）、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ＸＰ（Ｒ）、ＡＩＸ（Ｒ）、ＩＢＭのｉ５／ＯＳ（Ｒ）および当業者に想到される他のオペレーティング・システムが挙げられる。図１の例の中のオペレーティング・システム２２およびアプリケーション・プログラム２０はＲＡＭ１４内に示されるが、そのようなソフトウェアの多くの構成要素が、典型的には、例えばディスク・ドライブ２４上といった、不揮発性メモリにも記憶される。
【００２２】
以下でより明らかになるように、本発明に一致する実施形態は、ネットワーク・オン・チップ（ＮＯＣ）集積回路デバイス、またはチップ内に実装することができ、したがって、ホスト・コンピュータ１０は、２つの例示的なＮＯＣ、すなわち、ＮＯＣビデオ・アダプタ２６およびＮＯＣコプロセッサ２８を含んで示されている。ＮＯＣビデオ・アダプタ２６は、代替的にグラフィックス・アダプタと呼ぶことができるが、表示スクリーンまたはコンピュータ・モニタなどの表示デバイス３０へのグラフィックス出力のため特に設計されたＩ／Ｏアダプタの例である。ＮＯＣビデオ・アダプタ２６は、高速ビデオ・バス３２、バス・アダプタ１８、およびやはり高速バスであるフロント・サイド・バス３４を介してコンピュータ・プロセッサ１２に接続される。ＮＯＣコプロセッサ２８は、バス・アダプタ１８、ならびにやはり高速バスであるフロント・サイド・バス３４および３６を介してコンピュータ・プロセッサ１２に接続される。図１のＮＯＣコプロセッサは、例えば、コンピュータ・プロセッサ１２の指令で特定のデータ処理タスクを加速するように最適化することができる。
【００２３】
図１の例示的なＮＯＣビデオ・アダプタ２６およびＮＯＣコプロセッサ２８のそれぞれは、統合プロセッサ（「ＩＰ」）ブロック、ルータ、メモリ通信コントローラ、およびネットワーク・インターフェイス・コントローラを含むＮＯＣを含み、その詳細は、図２〜図３に関連して以下でさらに詳細に議論されることとなる。ＮＯＣビデオ・アダプタおよびＮＯＣコプロセッサは、それぞれ、並列処理を使用し、共有メモリへの高速なランダム・アクセスが必要でもあるプログラム用に最適化される。しかし、本発明がＮＯＣデバイスおよびＮＯＣデバイス・アーキテクチャ以外のデバイスおよびデバイス・アーキテクチャに実装可能であることが、本開示の恩恵を被る当業者には理解されよう。したがって、本発明は、ＮＯＣデバイス内の実装に限定されない。
【００２４】
図１のホスト・コンピュータ１０は、拡張バス４０を介して結合されるディスク・ドライブ・アダプタ３８およびコンピュータ・プロセッサ１２およびホスト・コンピュータ１０の他の構成要素へのバス・アダプタ１８を含む。ディスク・ドライブ・アダプタ３８は、不揮発性データ記憶装置をディスク・ドライブ２４の形でホスト・コンピュータ１０に接続し、例えば、インテグレーテッド・ドライブ・エレクトロニクス（「ＩＤＥ」）アダプタ、スモール・コンピュータ・システム・インターフェイス（「ＳＣＳＩ」）アダプタ、および当業者に想到される他のものを使用して実装することができる。不揮発性コンピュータ・メモリは、当業者に想到されるような、光ディスク・ドライブ、電気的消去可能プログラム可能読取り専用メモリ（いわゆる「ＥＥＰＲＯＭ」または「Ｆｌａｓｈ」メモリ）、ＲＡＭドライブなどとして実装することもできる。
【００２５】
ホスト・コンピュータ１０は、例えば、コンピュータ表示スクリーンなどの表示デバイスへの出力ならびにキーボードおよびマウスなどのユーザ入力デバイス４４からのユーザ入力を制御するための、ソフトウェア・ドライバおよびコンピュータ・ハードウェアを介してユーザ指向の入出力装置を実装する、１つまたは複数の入出力（「Ｉ／Ｏ」）アダプタ４２も含む。加えて、ホスト・コンピュータ１０は、他のコンピュータ４８とのデータ通信およびデータ通信ネットワーク５０とのデータ通信のための通信アダプタ４６を含む。そのようなデータ通信は、ＲＳ−２３２接続を介して、ユニバーサル・シリアル・バス（「ＵＳＢ」）などの外部バスを介して、ＩＰデータ通信ネットワークなどのデータ通信ネットワークを介して、ならびに当業者に想到される他の方法で直列に実行することができる。通信アダプタは、１つのコンピュータが他のコンピュータに直接またはデータ通信ネットワークを介してデータ通信を送信する、データ通信のハードウェア・レベルを実装する。ホスト・コンピュータ１０で使用するために好適な通信アダプタの例としては、有線ダイアルアップ通信用モデム、有線データ通信ネットワークの通信用のイーサネット（Ｒ）（ＩＥＥＥ  ８０２．３）アダプタ、および無線データ通信ネットワークの通信用の８０２．１１アダプタが挙げられる。
【００２６】
さらに説明するために、図２では、本発明の実施形態による例示的なＮＯＣ１０２の機能ブロック図を記載する。図２のＮＯＣは、「チップ」１００上、すなわち集積回路上に実装される。ＮＯＣ１０２は、相互接続されるノードへとグループ化される、統合プロセッサ（「ＩＰ」）ブロック１０４、ルータ１１０、メモリ通信コントローラ１０６、およびネットワーク・インターフェイス・コントローラ１０８を含む。各ＩＰブロック１０４は、メモリ通信コントローラ１０６およびネットワーク・インターフェイス・コントローラ１０８を介してルータ１１０に適合される。各メモリ通信コントローラは、ＩＰブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェイス・コントローラ１０８は、ルータ１１０を介してＩＰブロック間通信を制御する。
【００２７】
ＮＯＣ１０２では、各ＩＰブロックは、ＮＯＣ内のデータ処理用ビルディング・ブロックとして使用される、同期または非同期の論理部設計の再使用可能なユニットを表す。用語「ＩＰブロック」は、関係者により所有され、他のユーザまたは半導体回路の設計者にライセンスが与えられる、関係者の知的財産である設計としてＩＰブロックを有効に表している「知的財産ブロック」として展開されることがある。しかし、本発明の範囲では、ＩＰブロックが、何らかの特定の所有権を施されることについての要件はない。そのため、その用語は、この明細書では、「統合プロセッサ・ブロック」として常に展開される。ここで指定されるように、ＩＰブロックは、知的財産の対象であってもなくてもよい、論理部、セル、またはチップ・レイアウト設計の再使用可能なユニットである。ＩＰブロックは、ＡＳＩＣチップ設計またはＦＰＧＡ論理部設計として形成することができる論理部コアである。
【００２８】
ＩＰブロックを類推によって述べる、１つの方法では、コンピュータ・プログラミングにとってライブラリがあり、またはプリント回路板設計にとって個別集積回路装置要素があるように、ＮＯＣ設計にとってＩＰブロックがある。本発明の実施形態に一致するＮＯＣでは、ＩＰブロックは、完全な専用マイクロプロセッサまたは汎用マイクロプロセッサとして、一般的なゲート・ネットリストとして実装することができ、または当業者が想到することができる他の方法で実装することができる。ネットリストは、高水準プログラム・アプリケーションにとってのアセンブリコード・リストに類似している、ＩＰブロックの論理機能のブール代数表現（ゲート、標準セル）である。ＮＯＣは、例えば、ＶｅｒｉｌｏｇまたはＶＨＤＬなどのハードウェア記述言語で記載される合成可能形式で実装することもできる。ネットリストおよび合成可能実装に加えて、ＮＯＣは、低水準の物理的記述で伝えることもできる。ＳＥＲＤＥＳ、ＰＬＬ、ＤＡＣ、ＡＤＣなどのアナログＩＰブロック要素は、ＧＤＳＩＩなどのトランジスタ・レイアウト形式で供給することができる。ＩＰブロックのデジタル要素が同様にレイアウト形式で提供されることがある。本発明に一致して実装されるＩＰブロックならびに他のロジック回路は、そのようなロジックを実装する回路装置の機能性またはレイアウトあるいはその両方を、様々なレベルの詳細さで規定する例えば論理規定プログラム・コードといった、コンピュータ・データ・ファイルの形で供給できることも理解されよう。したがって、本発明は、完全に機能する集積回路デバイス、そのようなデバイスを利用するデータ処理システム、および他の有形の物理的なハードウェア回路に実装される回路装置の文脈で記載されてきており、以降も記載されることになるが、本開示の恩恵を被る当業者なら、本発明がプログラム製品内で実装することもでき、プログラム製品を供給するために使用されるコンピュータ可読記憶媒体の特定のタイプに関わらず、本発明が等しく適用されることを理解されよう。コンピュータ可読記憶媒体の例としては、限定するものではないが、（とりわけ）揮発性および不揮発性のメモリ・デバイス、フロッピ・ディスク、ハード・ディスク・ドライブ、ＣＤ−ＲＯＭ、およびＤＶＤなどの物理的で記録可能なタイプの媒体が挙げられる。
【００２９】
図２の例の中の各ＩＰブロック１０４は、メモリ通信コントローラ１０６を介してルータ１１０に適合される。各メモリ通信コントローラは、ＩＰブロックとメモリとの間でデータ通信を実現するように適合される、同期論理回路および非同期論理回路の集合である。ＩＰブロックとメモリとの間のそのような通信の例としては、メモリ・ロード命令およびメモリ・ストア命令が挙げられる。メモリ通信コントローラ１０６は、図３を参照して以下でより詳細に記載される。各ＩＰブロック１０４は、やはり、ＩＰブロック１０４間でルータ１１０を介して通信を制御するネットワーク・インターフェイス・コントローラ１０８を介して、ルータ１１０に適合される。ＩＰブロック間の通信の例としては、並列アプリケーションおよびパイプライン化アプリケーションで、ＩＰブロック間でデータおよびそのデータを処理するための命令を搬送するメッセージが挙げられる。ネットワーク・インターフェイス・コントローラ１０８は、やはり、図３を参照して以下でより詳細に記載される。
【００３０】
ルータ１１０およびルータ１１０間の対応するリンク１１８は、ＮＯＣのネットワーク動作を実装する。リンク１１８は、全てのルータを接続する、物理的な並列ワイヤ・バス上に実装されるパケット構造であってよい。すなわち、各リンクは、全てのヘッダ情報およびペイロード・データを含む、全データ交換パケットを同時に収めるのに十分な幅のワイヤ・バス上に実装することができる。パケット構造が、例えば８バイトのヘッダおよび５６バイトのペイロード・データを含む６４バイトを含む場合、各リンクに対するワイヤ・バスは、６４バイト幅、５１２本のワイヤとなる。加えて、各リンクは双方向性である場合があり、その結果、リンク・パケット構造が６４バイトを含む場合、ワイヤ・バスは、各ルータとネットワーク内のその隣接先のそれぞれとの間に、実際には１０２４本のワイヤを含む。そのような実装では、メッセージは、２パケット以上を含むことができるが、各パケットは、ワイヤ・バスの幅に正確に合うことになる。代替では、パケットの一部を収めるのに十分なだけの幅であるワイヤ・バス上にリンクを実装することができ、そのためパケットが複数のビートに分割されることになり、例えばその結果、リンクが幅１６バイト、すなわち１２８本のワイヤで実装される場合、６４バイトのパケットは４つのビートに分割することができる。実質的な物理的制限ならびに所望の性能特性に基づいて、異なる実装では異なるバス幅を使用できることが理解されよう。ルータとワイヤ・バスの各セクションとの間の接続をポートと呼ぶ場合、各ルータは５つのポート、すなわち、ネットワーク上のデータ伝送の４つの方向それぞれに１つずつ、および、ルータを特定のＩＰブロックにメモリ通信コントローラおよびネットワーク・インターフェイス・コントローラを介して適合させるための５番目のポートを含む。
【００３１】
各メモリ通信コントローラ１０６が、ＩＰブロックとメモリとの間の通信を制御する。メモリは、オフチップ・メインＲＡＭ１１２、メモリ通信コントローラ１０６を介してＩＰブロックに直接接続されるオンチップ・メモリ１１４、ＩＰブロックとして使用可能なオンチップ・メモリ１１６、およびオンチップ・キャッシュを含むことができる。ＮＯＣ１０２では、オンチップ・メモリ１１４、１１６の両方を、例えばオンチップ・キャッシュ・メモリとして実装することができる。全てのこれらの形のメモリは、本当に、ＩＰブロックに直接取り付けられるメモリに関してさえ、同じアドレス空間、物理アドレスまたは仮想アドレス内に配設することができる。したがって、メモリ・アドレス指定メッセージは、ＩＰブロックに関して完全に双方向性であることができる。というのは、そのようなメモリは、ネットワーク上の任意の場所の任意のＩＰブロックから直接アドレス指定することができるからである。ＩＰブロック上のオンチップ・メモリ１１６は、そのＩＰブロックまたはＮＯＣ内の任意の他のＩＰブロックからアドレス指定することができる。メモリ通信コントローラに直接取り付けられるオンチップ・メモリ１１４は、そのメモリ通信コントローラによりネットワークに適合されるＩＰブロックによってアドレス指定することができ、ＮＯＣ内の任意の場所の任意の他のＩＰブロックからアドレス指定することもできる。
【００３２】
ＮＯＣ１０２は、本発明の実施形態に一致するＮＯＣについての、２つの代替のメモリ・アーキテクチャを示す、２つのメモリ管理ユニット（「ＭＭＵ」）１２０、１２２を含む。ＭＭＵ１２０は、ＩＰブロック内に実装され、ＩＰブロック内のプロセッサが、仮想メモリで動作することを可能にする一方で、ＮＯＣの残りのアーキテクチャ全体が、物理的なメモリ・アドレス空間で動作することを可能にする。ＭＭＵ１２２は、オフチップで実装され、データ通信ポート１２４を介してＮＯＣと接続される。データ通信ポート１２４は、ＮＯＣとＭＭＵとの間で信号を伝導するのに必要なピンおよび他の相互接続、ならびにＮＯＣパケット形式から外部のＭＭＵ１２２により必要とされるバス形式にメッセージ・パケットを変換するのに十分なインテリジェンスを含む。ＭＭＵが外部に配置されていることは、ＮＯＣの全てのＩＰブロック内の全てのプロセッサが仮想メモリ・アドレス空間で動作することができ、オフチップ・メモリの物理アドレスへの全ての変換をオフチップのＭＭＵ１２２により取り扱うことができることを意味する。
【００３３】
ＭＭＵ１２０、１２２の使用により示される２つのメモリ・アーキテクチャに加えて、データ通信ポート１２６は、本発明の実施形態で利用することができる、ＮＯＣ内で有用な第３のメモリ・アーキテクチャを示す。データ通信ポート１２６は、ＮＯＣ１０２のＩＰブロック１０４とオフチップ・メインＲＡＭ１１２との間で直接接続を実現する。処理経路内にＭＭＵがないので、このアーキテクチャによって、ＮＯＣの全てのＩＰブロックによる物理的なアドレス空間の利用が可能になる。アドレス空間を双方向で共有することで、ＮＯＣの全てのＩＰブロックは、データ通信ポート１２６に直接接続されるＩＰブロックを介して導かれる、ロードおよびストアを含む、メモリ・アドレス指定メッセージによりアドレス空間内のメモリにアクセスすることができる。データ通信ポート１２６は、ＮＯＣとオフチップ・メインＲＡＭ１１２との間で信号を伝導するのに必要なピンおよび他の相互接続、ならびにＮＯＣパケット形式からオフチップ・メインＲＡＭ１１２により必要とされるバス形式にメッセージ・パケットを変換するのに十分なインテリジェンスを含む。
【００３４】
図２の例では、ＩＰブロックのうちの１つはホスト・インターフェイス・プロセッサ１２８と表される。ホスト・インターフェイス・プロセッサ１２８は、ＮＯＣとＮＯＣを設置することができるホスト・コンピュータ１０との間にインターフェイスをもうけ、例えば、ホスト・コンピュータからＮＯＣのＩＰブロック間でデータ処理要求を受け取り、送ることを含む、ＮＯＣ上の他のＩＰブロックへのデータ処理サービスも実現する。例えば、ＮＯＣは、図１を参照して上で記載したような、より大きなホスト・コンピュータ１０上にＮＯＣビデオ・アダプタ２６またはＮＯＣコプロセッサ２８を実装することができる。図２の例では、ホスト・インターフェイス・プロセッサ１２８は、より大きなホスト・コンピュータにデータ通信ポート１３０を介して接続される。データ通信ポート１３０は、ＮＯＣとホスト・コンピュータとの間で信号を伝導するのに必要なピンおよび他の相互接続、ならびにＮＯＣからのメッセージ・パケットをホスト・コンピュータ１０により必要とされるバス形式に変換するのに十分なインテリジェンスを含む。図１のコンピュータ内のＮＯＣコプロセッサの例では、そのようなポートは、ＮＯＣコプロセッサ２８のリンク構造と、ＮＯＣコプロセッサ２８とバス・アダプタ１８との間のフロント・サイド・バス３６で必要なプロトコルとの間の、データ通信形式変換を実現することになる。
【００３５】
次いで、図３は、１３２でまとめて示される、ＮＯＣ１０２内の、ＩＰブロック１０４、メモリ通信コントローラ１０６、ネットワーク・インターフェイス・コントローラ１０８、およびルータ１１０の中に実装される構成要素をさらに詳細に示す機能ブロック図である。ＩＰブロック１０４は、コンピュータ・プロセッサ１３４およびＩ／Ｏ機能部１３６を含む。この例では、コンピュータ・メモリは、ＩＰブロック１０４内のランダム・アクセス・メモリ（「ＲＡＭ」）１３８のセグメントにより表される。図２を参照して上で記載されたように、メモリは、各ＩＰブロックのその内容がＮＯＣ内の任意のＩＰブロックからアドレス指定可能およびアクセス可能である、物理的なアドレス空間のセグメントを占めることができる。各ＩＰブロック内のコンピュータ・プロセッサ１３４、Ｉ／Ｏ機能部１３６、およびランダム・アクセス・メモリ１３８は、ＩＰブロックを一般的にプログラム可能なマイクロコンピュータとして有効に実装する。しかし、上で説明したように、本発明の範囲では、ＩＰブロックは、ＮＯＣ内のデータ処理用ビルディング・ブロックとして使用される、同期または非同期の論理部の再使用可能なユニットを全体として表す。したがって、一般的にプログラム可能なマイクロコンピュータとしてＩＰブロックを実装することは、説明のために有用な共通の実施形態であるが、本発明を制限するものではない。
【００３６】
図３のＮＯＣ１０２では、各メモリ通信コントローラ１０６は、複数のメモリ通信実行エンジン１４０を含む。各メモリ通信実行エンジン１４０がイネーブルとなり、ネットワークとＩＰブロック１０４との間の双方向性のメモリ通信命令の流れ１４１、１４２、１４４を含む、ＩＰブロック１０４からのメモリ通信命令を実行する。メモリ通信コントローラにより実行されるメモリ通信命令は、特定のメモリ通信コントローラを介してルータに適合されるＩＰブロックからのみならず、ＮＯＣ１０２内の任意の場所のＩＰブロック１０４からでも始めることができる。すなわち、ＮＯＣ内の任意のＩＰブロックがメモリ通信命令を生成し、そのメモリ通信命令を実行するために、別のＩＰブロックに関連する別のメモリ通信コントローラに、ＮＯＣのルータを介してそのメモリ通信命令を伝送することができる。そのようなメモリ通信命令としては、例えば、変換索引バッファ制御命令、キャッシュ制御命令、バリア命令、ならびにメモリ・ロードおよびメモリ・ストア命令が挙げられる。
【００３７】
各メモリ通信実行エンジン１４０がイネーブルとなり、別個かつ他のメモリ通信実行エンジンと並列に、完全なメモリ通信命令を実行する。メモリ通信実行エンジンは、メモリ通信命令の並行処理能力に最適化されたスケーラブル・メモリ・トランザクション・プロセッサを実装する。メモリ通信コントローラ１０６は、その全てが複数のメモリ通信命令の同時実行のため並行して動作する、複数のメモリ通信実行エンジン１４０をサポートする。新しいメモリ通信命令は、メモリ通信コントローラ１０６によりメモリ通信実行エンジン１４０に割り振られ、メモリ通信実行エンジン１４０は、複数の応答イベントを同時に受け入れることができる。この例では、メモリ通信実行エンジン１４０の全てが同一である。したがって、メモリ通信コントローラ１０６により同時に取り扱うことができるメモリ通信命令の数をスケーリングすることは、メモリ通信実行エンジン１４０の数をスケーリングすることにより実装される。
【００３８】
図３のＮＯＣ１０２では、各ネットワーク・インターフェイス・コントローラ１０８がイネーブルとなり、ＩＰブロック１０４間でルータ１１０を介して伝送するため、通信命令をコマンド形式からネットワーク・パケット形式に変換する。通信命令は、ＩＰブロック１０４により、またはメモリ通信コントローラ１０６によりコマンド形式で公式化され、コマンド形式でネットワーク・インターフェイス・コントローラ１０８に提供することができる。コマンド形式は、ＩＰブロック１０４およびメモリ通信コントローラ１０６のアーキテクチャ上のレジスタ・ファイルに準拠する、固有形式であってよい。ネットワーク・パケット形式は、典型的には、ネットワークのルータ１１０を介して伝送するのに必要な形式である。それぞれのそのようなメッセージは、１つまたは複数のネットワーク・パケットから構成される。ネットワーク・インターフェイス・コントローラ内でコマンド形式からパケット形式に変換されるそのような通信命令の例としては、ＩＰブロックとメモリとの間の、メモリ・ロード命令およびメモリ・ストア命令が挙げられる。そのような通信命令としては、並列アプリケーションおよびパイプライン化したアプリケーションで、ＩＰブロック間でデータおよびそのデータを処理するための命令を搬送するメッセージをＩＰブロック間で送信する通信命令も挙げられる。
【００３９】
図３のＮＯＣ１０２では、各ＩＰブロックがイネーブルとなり、メモリ・アドレス・ベースの通信を、ＩＰブロックのメモリ通信コントローラを介してメモリとの間で、次いでＩＰブロックのネットワーク・インターフェイス・コントローラを介してネットワークにも送信する。メモリ・アドレス・ベースの通信は、ロード命令またはストア命令などの、ＩＰブロックのメモリ通信コントローラのメモリ通信実行エンジンにより実行される、メモリ・アクセス命令である。そのようなメモリ・アドレス・ベースの通信は、典型的には、ＩＰブロックで始まり、コマンド形式で公式化され、実行するためにメモリ通信コントローラにハンドオフされる。
【００４０】
多くのメモリ・アドレス・ベースの通信がメッセージ・トラフィックで実行される。というのは、どのＩＰブロックが任意の特定のメモリ・アドレス・ベースの通信を始めたのかに関わらず、アクセスされる任意のメモリは、物理的なメモリ・アドレス空間の中で、オンチップまたはオフチップの、ＮＯＣ内の任意のメモリ通信コントローラに直接取り付けられる、または究極的にはＮＯＣの任意のＩＰブロックを介してアクセスされる、任意の場所に配置することができるからである。したがって、ＮＯＣ１０２では、メッセージ・トラフィックで実行される全てのメモリ・アドレス・ベースの通信は、コマンド形式からパケット形式へ変換しネットワークを介してメッセージで伝送するために、メモリ通信コントローラから関連するネットワーク・インターフェイス・コントローラに受け渡される。パケット形式への変換では、ネットワーク・インターフェイス・コントローラは、メモリ・アドレス・ベースの通信によりアクセスされる１つのメモリ・アドレスまたは複数のメモリ・アドレスに依存して、パケットのネットワーク・アドレスも識別する。メモリ・アドレス・ベースのメッセージは、メモリ・アドレスでアドレス指定される。各メモリ・アドレスは、ネットワーク・インターフェイス・コントローラによって、ネットワーク・アドレス、典型的にはある範囲の物理的なメモリ・アドレスを担当するメモリ通信コントローラのネットワーク位置にマッピングされる。メモリ通信コントローラ１０６のネットワーク位置は、当然、そのメモリ通信コントローラの関連するルータ１１０、ネットワーク・インターフェイス・コントローラ１０８、およびＩＰブロック１０４のネットワーク位置でもある。各ネットワーク・インターフェイス・コントローラ内の命令変換論理部１５０は、メモリ・アドレス・ベースの通信をＮＯＣのルータを介して伝送するために、メモリ・アドレスをネットワーク・アドレスに変換することが可能である。
【００４１】
ネットワークのルータ１１０からメッセージ・トラフィックを受け取ると、各ネットワーク・インターフェイス・コントローラ１０８は、メモリ命令のため各パケットを調べる。メモリ命令を含む各パケットは、受け取ったネットワーク・インターフェイス・コントローラに関連するメモリ通信コントローラ１０６に渡され、さらなる処理のためにパケットの残りのペイロードをＩＰブロックに送る前に、メモリ命令を実行する。このようにして、メモリの内容は、特定のメモリの内容に依存するメッセージからの命令の実行をＩＰブロックが始める前に、ＩＰブロックによるデータ処理をサポートするように常に準備される。
【００４２】
図３のＮＯＣ１０２では、各ＩＰブロック１０４がイネーブルとなり、そのメモリ通信コントローラ１０６をバイパスし、ＩＰブロック間のネットワーク・アドレス指定通信１４６を、ＩＰブロックのネットワーク・インターフェイス・コントローラ１０８を介してネットワークに直接送信する。ネットワーク・アドレス指定通信は、ネットワーク・アドレスによって別のＩＰブロックに導かれるメッセージである。当業者には想到されるように、そのようなメッセージは、パイプライン化したアプリケーションではワーキング・データを伝送し、ＳＩＭＤアプリケーションでのＩＰブロック間の単一プログラム処理では複数のデータを伝送し、以下同様である。ＮＯＣのルータを介してメッセージが導かれるネットワーク・アドレスを知っている発信側ＩＰブロックによって、メモリ・アドレス・ベースの通信が最初からネットワーク・アドレス指定されているという点で、そのようなメッセージは、メモリ・アドレス・ベースの通信とは異なっている。そのようなネットワーク・アドレス指定通信は、ＩＰブロックによりＩ／Ｏ機能部１３６を介して直接ＩＰブロックのネットワーク・インターフェイス・コントローラにコマンド形式で受け渡され、次いで、ネットワーク・インターフェイス・コントローラによりパケット形式に変換され、別のＩＰブロックにＮＯＣのルータを介して伝送される。そのようなネットワーク・アドレス指定通信１４６は双方向性であり、任意の特定のアプリケーション内でのネットワーク・アドレス指定通信１４６の使用に依存して、場合によって、ＮＯＣの各ＩＰブロックに行ったり来たりする。しかし、各ネットワーク・インターフェイス・コントローラがイネーブルとなり、関連するルータとの間でそのような通信の送信および受信の両方を行い、各ネットワーク・インターフェイス・コントローラがイネーブルとなり、関連するＩＰブロックとの間でそのような通信の直接送信および直接受信の両方を行って、関連するメモリ通信コントローラ１０６をバイパスする。
【００４３】
図３の例の中の各ネットワーク・インターフェイス・コントローラ１０８もイネーブルとなり、ネットワーク上に仮想チャネルを実装し、タイプによりネットワーク・パケットを特徴付ける。各ネットワーク・インターフェイス・コントローラ１０８は、各通信命令をタイプにより分類し、ＮＯＣ上で伝送するためルータ１１０にパケット形式で命令をハンドオフする前に、命令のタイプをネットワーク・パケット形式の領域で記録する、仮想チャネル実装論理部１４８を含む。通信命令のタイプの例としては、ＩＰブロック間ネットワーク・アドレス・ベースのメッセージ、要求メッセージ、要求メッセージへの応答、キャッシュに向けた無効化メッセージ、メモリ・ロード・メッセージおよびメモリ・ストア・メッセージ、ならびにメモリ・ロード・メッセージへの応答などが挙げられる。
【００４４】
図３の例の中の各ルータ１１０は、ルーティング論理部１５２、仮想チャネル制御論理部１５４、および仮想チャネル・バッファ１５６を含む。ルーティング論理部は、典型的には、ルータ１１０、リンク１１８、およびルータ間のバス・ワイヤにより形成されるネットワーク内のデータ通信用の、データ通信プロトコル・スタックを実装する同期論理部および非同期論理部のネットワークとして実装される。ルーティング論理部１５２は、当業者がオフチップ・ネットワークでルーティング・テーブルと関連付ける可能性がある機能部を含むが、少なくともいくつかの実施形態のルーティング・テーブルは、ＮＯＣで使用するには遅くて煩雑すぎると考えられる。同期論理部および非同期論理部のネットワークとして実装されるルーティング論理部は、単一のクロック・サイクルと同じくらい速いルーティング決定を行うように構成することができる。この例でのルーティング論理部は、ルータで受け取った各パケットを転送するためにポートを選択することによりパケットをルーティングする。各パケットは、各パケットがルーティングされるネットワーク・アドレスを含む。
【００４５】
上のメモリ・アドレス・ベースの通信の記載では、各メモリ・アドレスは、ネットワーク・インターフェイス・コントローラによってネットワーク・アドレス、すなわちメモリ通信コントローラのネットワーク位置にマッピングされるものとして記載された。メモリ通信コントローラ１０６のネットワーク位置は、当然、そのメモリ通信コントローラの関連するルータ１１０、ネットワーク・インターフェイス・コントローラ１０８、およびＩＰブロック１０４のネットワーク位置でもある。ＩＰブロック間、またはネットワーク・アドレス・ベースの通信では、したがって、アプリケーション・レベルのデータ処理が、ネットワーク・アドレスを、ＮＯＣのルータ、リンク、およびバス・ワイヤにより形成されるネットワーク内のＩＰブロックの位置として見ることも一般的である。図２では、そのようなネットワークの１つの組織が行および列のメッシュであり、例えば、メッシュの関連するルータ、ＩＰブロック、メモリ通信コントローラ、およびネットワーク・インターフェイス・コントローラの各組の一意の識別子、またはメッシュ内のそのような各組のｘ、ｙ座標のいずれかとして各ネットワーク・アドレスを実装できることを示す。
【００４６】
図３のＮＯＣ１０２では、各ルータ１１０が２つ以上の仮想通信チャネルを実装し、各仮想通信チャネルは、通信のタイプにより特徴付けられる。通信命令のタイプ、およびしたがって仮想チャネルのタイプとしては、上に述べられたもの、すなわち、ＩＰブロック間ネットワーク・アドレス・ベースのメッセージ、要求メッセージ、要求メッセージへの応答、キャッシュに向けた無効化メッセージ、メモリ・ロード・メッセージおよびメモリ・ストア・メッセージ、ならびにメモリ・ロード・メッセージへの応答などが挙げられる。仮想チャネルをサポートして、図３の例の中の各ルータ１１０は、仮想チャネル制御論理部１５４および仮想チャネル・バッファ１５６も含むことができる。仮想チャネル制御論理部１５４は、それぞれの受け取ったパケットをその割り当てられた通信のタイプについて検査し、ＮＯＣ上の隣接するルータにポートを介して伝送するため、その通信のタイプの発信用仮想チャネル・バッファに各パケットを入れる。
【００４７】
各仮想チャネル・バッファ１５６は、有限の記憶空間を有する。多くのパケットを短期間に受け取ると、仮想チャネル・バッファがいっぱいになる場合があり、その結果、それ以上のパケットをバッファに入れることができない場合がある。他のプロトコルでは、バッファがいっぱいの仮想チャネルに到達するパケットは欠落することになる。しかし、この例の各仮想チャネル・バッファ１５６は、バス・ワイヤの制御信号でイネーブルとなり、仮想チャネル制御論理部を介して周りのルータに通知して、仮想チャネルでの伝送を一時停止する、すなわち特定の通信タイプのパケットの伝送を一時停止する。１つの仮想チャネルがそのように一時停止されるとき、全ての他の仮想チャネルは影響を受けず、全容量で動作を続けることができる。制御信号は、各ルータに関連するネットワーク・インターフェイス・コントローラ１０８へと各ルータを介してずっと戻って配線される。各ネットワーク・インターフェイス・コントローラは、そのような信号を受信すると、その関連するメモリ通信コントローラ１０６またはその関連するＩＰブロック１０４から、一時停止された仮想チャネルへの通信命令を受け入れることを拒否するように構成される。このようにして、仮想チャネルの一時停止は、発信側ＩＰブロックまでずっと戻って、仮想チャネルを実装する全てのハードウェアに影響をおよぼす。
【００４８】
仮想チャネルでのパケット伝送を一時停止することの１つの効果は、欠落するパケットが全くなくなることである。例えばインターネット・プロトコルなどのいくつかの信頼できないプロトコルでパケットが欠落した可能性がある状況にルータが遭遇する場合、図３の例の中のルータは、バッファ空間が再び利用可能になるまで、仮想チャネルでの全てのパケットの伝送を、ルータの仮想チャネル・バッファ１５６およびルータの仮想チャネル制御論理部１５４により一時停止して、パケットを欠落させる必要をなくすことができる。したがって、図３のＮＯＣは、ハードウェアの極めて薄い層で、高い信頼性のネットワーク通信プロトコルを実装することができる。
【００４９】
図３の例のＮＯＣは、オンチップのメモリ・キャッシュとオフチップのメモリ・キャッシュとの両方の間のキャッシュ・コヒーレンシを維持するように構成することもできる。各ＮＯＣは、複数のキャッシュをサポートすることができ、キャッシュのそれぞれは、同じ基礎となるメモリ・アドレス空間に対して動作する。例えば、キャッシュは、ＩＰブロックにより、メモリ通信コントローラにより、またはＮＯＣの外部のキャッシュ・コントローラにより制御することができる。図２の例の中のオンチップ・メモリ１１４、１１６のいずれかが、オンチップのキャッシュとしても実装することができ、本発明の範囲内で、キャッシュ・メモリは、オフチップでも実装することができる。
【００５０】
図３に示される各ルータ１１０は、４つのポート１５８Ａ〜Ｄがリンク１１８を介して他のルータに接続され、５番目のポート１６０が各ルータをその関連するＩＰブロック１０４にネットワーク・インターフェイス・コントローラ１０８を介して接続している５つのポート、およびメモリ通信コントローラ１０６を含む。図２および図３の説明から理解できるように、ＮＯＣ１０２のルータ１１０およびリンク１１８は、各ルータ内の垂直ポートおよび水平ポートを接続する垂直リンクおよび水平リンクでメッシュ・ネットワークを形成する。例えば、図３の説明では、ポート１５８Ａ、１５８Ｃ、および１６０が垂直ポートと呼ばれ、ポート１５８Ｂおよび１５８Ｄが水平ポートと呼ばれる。
【００５１】
次いで、図４は、発行または命令ユニット（ＩＵ）１６２、実行ユニット（ＸＵ）１６４、および補助実行ユニット（ＡＸＵ）１６６に仕切られた処理要素として実装される、本発明に一致するＩＰブロック１０４の１つの例示的な実装を、別の方法で示す。示された実装では、ＩＵ１６２はＬ１命令キャッシュ（ｉＣＡＣＨＥ）１７０からの命令を受け取る複数の命令バッファ１６８を含む。各命令バッファ１６８は、複数例えば４つの対称的なマルチスレッド化（ＳＭＴ）ハードウェア・スレッドのうちの１つに専用である。有効アドレス−実アドレス変換ユニット（ｉＥＲＡＴ）１７２がｉＣＡＣＨＥ１７０に結合され、より低次のメモリからの命令を取り出すために、複数のスレッド・フェッチ・シーケンサ１７４からの命令フェッチ要求を実アドレスに変換するために使用される。各スレッド・フェッチ・シーケンサ１７４は、特定のハードウェア・スレッドに専用であり、関連するスレッドにより実行される命令が適切な実行ユニットへ発送するためｉＣＡＣＨＥに確実にフェッチされるように使用される。図４にやはり示されるように、命令バッファ１６８内にフェッチされる命令は、分岐予測論理部１７６により監視することもでき、このことによって、スレッドの実行での分岐から生じる命令キャッシュ・ミスを最小化するため、手がかりを各スレッド・フェッチ・シーケンサ１７４へ提供する。
【００５２】
ＩＵ１６２は、各ハードウェア・スレッドに専用の、依存性／発行論理ブロック１７８も含み、依存性を解決して命令バッファ１６８からＸＵ１６４への命令の発行を制御するように構成される。加えて、示された実施形態では、別個の依存性／発行論理部１８０がＡＸＵ１６６にもうけられ、したがって、異なるスレッドにより別個の命令をＸＵ１６４およびＡＸＵ１６６へ同時に発行することを可能にする。代替の実施形態では、依存性／発行論理部１８０をＩＵ１６２内に配設することができ、またはその全体を省略することができ、そのため、依存性／発行論理ブロック１７８がＡＸＵ１６６に命令を発行する。
【００５３】
ＸＵ１６４は、固定小数点論理部１８４、分岐論理部１８６、およびロード／ストア論理部１８８に結合される汎用レジスタ（ＧＰＲ）１８２の組を含む、固定小数点実行ユニットとして実装される。ロード／ストア論理部１８８は、ｄＥＲＡＴ論理部１９２により提供される有効アドレス−実アドレス変換でＬ１データ・キャッシュ（ｄＣＡＣＨＥ）１９０に結合される。ＸＵ１６４は、例えば３２ｂまたは６４ｂのＰｏｗｅｒＰＣ命令セットの全てまたは一部といった、事実上任意の命令セットを実装するように構成することができる。
【００５４】
ＡＸＵ１６６は、専用の依存性／発行論理部１８０ならびに１つまたは複数の実行ブロック１９４を含む補助実行ユニットとして動作する。ＡＸＵ１６６は、任意の数の実行ブロックを含むことができ、例えば、浮動小数点ユニット、あるいは暗号化／復号化ユニット、コプロセッサ、ベクトル処理ユニット、画像処理ユニット、ＸＭＬ処理ユニットなど１つまたは複数の特殊化した実行ユニットといった、事実上任意のタイプの実行ユニットを実装することができる。示された実施形態では、ＡＸＵ１６６は、例えば、ＡＸＵ設計された状態とＸＵ設計された状態との間で直接動くことをサポートするために、ＸＵ１６４への高速補助インターフェイスを含む。
【００５５】
ＩＰブロック１０４での通信は、ＮＯＣ１０２に結合されたネットワーク・インターフェイス・コントローラ１０８を介して、図２に関して上で議論されたように管理することができる。例えばＬ２キャッシュ・メモリにアクセスするためといった、アドレス・ベースの通信は、メッセージ・ベースの通信と一緒に提供することができる。例えば、各ＩＰブロック１０４は、ＩＰブロック間のノード間通信を取り扱うために、専用の受信ボックスまたは送信ボックスあるいはその両方を含むことができる。
【００５６】
本発明の実施形態は、図１〜図４に関して上で記載されたハードウェア環境およびソフトウェア環境内に実装することができる。しかし、本発明が数多くの異なる環境で実装することができ、本発明の精神および範囲から逸脱することなく上記のハードウェアおよびソフトウェアの実施形態に他の変更を加えることができることは、本開示の恩恵を被る当業者には理解されよう。したがって本発明は、本明細書に開示される特定のハードウェアおよびソフトウェア環境に限定されない。
【００５７】
内部投票ベースのＢＩＳＴ
現在のマルチコア・プロセッサ・チップおよび他のシステム・オン・チップ（ＳＯＣ）では、典型的には、同じプロセッサ・コアの多くの複製したコピーが存在し、複製したコピーの数は、数十のコアから数百のコアまたはそれ以上に増加することが予想される。この複製したハードウェアを活用して、より速く、より正確なハードウェアＢＩＳＴを可能にできることが見い出された。特に、同じ初期値を複数のコアにスキャン入力し、コアをクロック制御し、次いでデータをスキャン出力して結果を比較することによって、投票方式を使用して、ハードウェアが悪いかどうかを決定することができる。少なくとも３つのコアが使用される限り、不合格のシグネチャを有する不良コアを識別することができる。さらに、それらの不合格のシグネチャを比較することにより、正確にどのラッチが不合格であるかを識別することができ、不合格のラッチが特定の機能ユニットで識別される場合、不合格の機能ユニットも識別することができ、所望であれば、自動的にディセーブルにされる。 
【００５８】
本発明に一致する実施形態では、コアへの最初のスキャンは、ＪＴＡＧポートを介し、オンボードの自動テスト・パターン生成（ＡＴＰＧ）論理部を使用して開始し、テスト・パターンの所定のシーケンスを生成することができる。あるいは、疑似乱数テスト・パターンを、例えばオンボードのハードウェア線形フィードバック・シフト・レジスタ（ＬＦＳＲ）を使用して生成することができる。そうすることにより、試験は、任意の外部テスタ機器から分離され、しばしば、テスタとチップとの間で通信が行われるのに必要なテスト・パターンまたは試験結果あるいは両方の組合せが達成することができたよりも著しく速い速度で、高価なテスタから離れて試験を実施することが可能になる。いくつかの実施形態では、試験は、現場で、チップの製造およびパッケージングの後に実施することもできる。
【００５９】
このレベルの試験を実施することおよび不合格のラッチを自動的に決定することにより、不合格であるコアの特定の領域を、しばしば識別することができる。さらに、不合格の場所に依存して、不合格のコアは、命令を回避すること、機能ユニットもしくは機能ユニット（例えば、オンボード・キャッシュなどのメモリ配列用）の領域をディセーブルにすること、または不合格の論理構成要素に対処するための内部パッチ・プロセッサをイネーブルにすることのいずれかにより、その論理部を回避するように構成することができる。 
【００６０】
さらに、いくつかの実施形態では、本明細書に記載されたＢＩＳＴプロセスを、設計物内の多くのグループのコアにわたって並列に実行することができる。ハードウェア出力を投票して比較させることにより、シリコン形成前のテスト・パターン生成と試験との依存性を減少させることができる。というのは、事前計算された出力テスト・パターンを有することに、何ら必要性がないことが多いからである。このことは、より多くのテスト・パターンを生成させること、またはテスト・パターンを実行中に変化させて、設計物の特定の部分の試験を拡張することを可能にすることもできる。
【００６１】
ここで図５を参照すると、データ処理システムが、複数の処理コア２０２を含むマルチコア・プロセッサ・チップ２００を組み込んで示される。この図に示されるように、いくつかの処理コアは、例えばサービス・プロセッサ２０４といった、特殊目的用に指定することができ、いくつかの処理コアは、冗長なコア２０６と同様に未使用または予備であってよい。例えば、本発明の１つの実施形態では、実際に使用する１６個の機能コアおよび１つのサービス・プロセッサ、ならびに１つの非活動状態の予備コアを有する意図で、マルチコア・プロセッサ・チップ２００上に１８個の処理コアを製造することが望ましい場合がある。次いで、ＢＩＳＴ期間に、任意の処理コアが不良であると決定される場合、そのコアを非活動状態にして、予備コアを機能コアとして使用するために活動状態にすることができる。また、任意の機能コアが部分的に不良であると決定される場合、例えば、浮動小数点または他の補助機能ユニットが不良であると決定されるが、コアはサービス・プロセッサとして使用するのに場合によっては好適である場合、必要により、その部分的に不良のコアをサービス・プロセッサとして使用することができる。本発明の精神および範囲から逸脱することなく、異なる数の機能コア、予備コア、サービス・プロセッサなどを実装できることを理解されよう。
【００６２】
本発明に一致する内部投票ベースのＢＩＳＴを実装するために、マルチコア・プロセッサ・チップ２００は、例えば、スキャン・エンジン２０８、不良テーブル２１０、および１つまたは複数の電子ヒューズ２１２を含む、スキャン論理部を含む。加えて、例えばＪｏｉｎｔ  Ｔｅｓｔ  Ａｕｔｏｍａｔｉｏｎ  Ｇｒｏｕｐ（ＪＴＡＧ）標準を使用して実装される、従来型のテスト・ポート２１３を使用して、例えば外部の試験機器に、スキャン論理部への外部アクセスを可能にすることができる。
【００６３】
図６は、スキャン・エンジン２０８の一部の、１つの例示的な実装を示す。この実装では、スキャン・エンジン２０８は、３つのグループで処理コア２０２を試験するように構成され、したがって、３つの処理コア２０２Ａ、２０２Ｂ、および２０２Ｃのそれぞれで、スキャン・チェイン２１４の入力および出力への接続が図で示されている。各スキャン・チェイン２１４は、典型的には、複数のラッチを含み、複数のラッチは、一緒にグループ化することができ、さもなければ、各処理コア内の複数の機能ユニット間で分散することができる。３つの処理コアを含むプロセッサ・チップに関し、図６では、そのチップについて内部投票ベースのＢＩＳＴを実施するのに必要な比較論理部の全てを実装していることを理解されたい。４つ以上の処理コアを含むプロセッサ・チップに関し、図６に示されているスキャン・エンジン２０８の少なくとも一部が複製されて、３つの処理コアの他のグループを取り扱うことができる。別の場合には、４つ以上の処理コアの試験結果が比較されて、不良処理コアおよびその中の不良ラッチを識別することができる。
【００６４】
さらに、この実装では、スキャン・チェインは、単一のビット入力および単一のビット出力を有し、クロック・サイクル当たり１ビットの速度で、データが、スキャン・チェインにスキャン入力し、スキャン・チェインからスキャン出力することを可能にする、直列スキャン・チェインである。しかし、本発明は、本明細書に開示される特定のスキャン・チェイン実装に限定されないことを理解されよう。
【００６５】
スキャン・エンジン２０８は、各処理コア２０２Ａ〜Ｃのスキャン・チェイン２１４の入力に同じテスト・パターンを出力するために結合されるＬＦＳＲ２１６および決定性テスト・パターン生成器２１８のうちの１つまたは両方を含むことができる。前者を使用して疑似乱数テスト・パターンを生成することができ、一方、後者を使用してテスト・パターンの決定性シーケンスを生成することができる。いくつかの実施形態では、ＬＦＳＲ２１６および決定性テスト・パターン生成器２１８のうちの１つだけが利用される。テスト・パターンの決定性シーケンスは、例えば、特定のプロセッサ・アーキテクチャ用に特に設計されたテスト・パターンを適用し、確実に設計物を効率的かつ完全に試験することに有用な場合がある。一方、疑似乱数試験は、本質的により力ずくな場合があるが、プロセッサ・チップで内部的に試験が起こり、任意の外部の試験機器に依拠しないので、試験を実施することができる速度は著しく速くなり、そのため、他の場合には外部の試験機器を介して適用される可能性があるものと同じ時間枠に著しく多数のテスト・パターンを適用することができ、そのため、疑似乱数テスト・パターンの使用を通して、多くのインスタンスで、十分な試験カバレッジを依然として得ることができることを理解されよう。単一のテスト・パターン生成器をプロセッサ・チップ内の全ての処理コアに適用できること、または異なるテスト・パターン生成器を処理コアの異なるグループに使用できることも理解されよう。
【００６６】
この実装では、不良テーブル２１０は、各処理コア用に、そのコアのスキャン・チェイン内の第１の不良ラッチの場所を記憶するデータ構造体として実装される。したがって、不良テーブル２１０は、それぞれ処理コア２０２Ａ〜Ｃに関連付けられ、図６では、それぞれＰＣＡ、ＰＣＢ、およびＰＣＣと表される、少なくとも１つの記憶要素を含む。追加の処理コア用に追加の記憶要素をもうけることができ、いくつかの実施形態では、並列に試験される他のグループの処理コア用に不良テーブル２１０を複製することができること、または単一のデータ構造体を使用して、複数のグループの処理コア用に試験結果を記憶できることを理解されよう。
【００６７】
スキャン・エンジン２０８は、処理コア２０２Ａ〜Ｃ内のスキャン・チェインの単一ビット出力間の任意の不一致に応答して不一致信号２２４をアサートする、例えば１対のＸＮＯＲゲート２２０、２２１およびＮＡＮＤゲート２２２を含む比較論理部も含む。ＸＮＯＲゲート２２０は、処理コア２０２Ａおよび２０２Ｂのスキャン・チェイン出力に排他的ＮＯＲ演算を実施し、一方ＸＮＯＲゲート２２１は、処理コア２０２Ｂおよび２０２Ｃのスキャン・チェイン出力に排他的ＮＯＲ演算を実施する。ＸＮＯＲゲート２２０、２２１の出力は、次いでＮＡＮＤゲート２２２に送られ、処理コア２０２Ａ〜Ｃにより出力されるビットの全てが一致しないときはいつでも、不一致信号２２４を不良テーブル２１０にアサートする。
【００６８】
比較論理部は、やはり処理コア２０２Ａ〜Ｃの出力を受け取り、処理コアのうちのどれが、処理コアの大多数（ここでは、２個）により出力される「意見の一致」した正しいビットとは異なるビットを出力しているかを決定する、コアＩＤ論理部２２６も含む。コアＩＤ論理部２２６は、各処理コア２０２Ａ〜Ｃ用に１つずつ、３つの選択信号を不良テーブル２１０に出力する。選択信号は、関連する処理コアが異常値である、すなわちそのビットに関しての不良処理コアであるときはいつでもアサートされる。加えて、カウンタ２２８を使用して、各スキャン・チェイン２１４内のビット位置に対応する、またはさもなければ相関する値を生成し、不良処理コアのスキャン・チェイン内のラッチに相関付けられる不一致ビットの位置決めを可能にする。カウンタ２２８の値は、やはり不良テーブル２１０に出力される。
【００６９】
任意の数Ｎの処理コア間の多数決を実装し、異常値処理コアを決定し、Ｎ個の処理コアから意見の一致する正しい結果を決定し、カウンタ値または他のラッチ／ビット位置識別器を管理する比較論理部を構成すること、ならびに複数のグループの処理ノードにわたるそのような論理部を複製することは、本開示の恩恵を被る当業者の能力の範囲内であろう。したがって、本発明は、本明細書に開示される特定の構成に限定されない。
【００７０】
不良テーブル２１０は、不一致信号２２４のアサートに応答して、コアＩＤ論理部２２６によりアサートされる関連するイネーブル信号により選択されるように、異常値処理コア２０２Ａ〜Ｃに対応する記憶要素にカウンタ２２８の現在値を記憶するように構成される。この実装では、不良テーブル２１０は、各処理コア２０２Ａ〜Ｃで検出された第１の不良ラッチに対応するカウンタ値を記憶し、図６に示されるように、処理コア２０２Ａおよび２０２Ｃが不良であると識別され、一方処理コア２０２Ｂは不良と識別されない。
【００７１】
カウンタ２２８がスキャン・チェイン内のラッチに相関付けられる方法は、異なる実施形態で変化することができる。例えば、図７は、命令または発行ユニット（ＩＵ）２３０、Ｌ１キャッシュ２３２、固定小数点実行ユニット（ＸＵ）２３４、および浮動小数点実行ユニット（ＦＰＵ）２３６を含む、例示的な処理コア２０２を示す。この実装では、スキャン・チェイン２１４は、それぞれＩＵ２３０、Ｌ１キャッシュ２３２、ＸＵ２３４、およびＦＰＵ２３６に配設される４つのラッチ・グループ２３８、２４０、２４２、および２４４に仕切られる。例えばマッピング・テーブル２４６といった、マッピング・データ構造体がスキャン・エンジンに組み込まれ、どの機能ユニットにスキャン・チェイン２１４内の特定のラッチまたはビット位置が配設されるのかをスキャン・エンジンが決定することを可能にすることができる。したがって、図７に示されるように、ラッチ／ビット位置１〜２０００がＩＵ２３０に対応することができ、ラッチ／ビット位置２００１〜３０００がＬ１キャッシュ２３２に対応することができ、ラッチ／ビット位置３００１〜６０００がＸＵ２３４に対応することができ、ラッチ／ビット位置６００１〜１００００がＦＰＵ２３６に対応することができる。
【００７２】
スキャン・チェイン２１４内のラッチ／ビット位置にカウンタ２２８（図６）を相関付けることにより、処理コア内の不良ラッチを検出すると、スキャン・エンジンがそのラッチ／ビット位置を処理コア２０２内の機能ユニットにマッピングし、そのことにより、処理コア内の不良機能ユニット（例えば、図６に一時的に戻ると、処理コア２０２ＡのＩＵおよび処理コア２０２ＣのＬ１キャッシュ）を識別することができる。さらに、いくつかの実施形態では、不良機能ユニットを知ることによって、スキャン・エンジンがその機能ユニットまたは処理コアを自動的にディセーブルにすることを可能にすることができ、またはさもなければ、不良機能ユニットに対処するため、プロセッサ・チップを自動的に再構成することを求めることができる。しかし、他の実施形態では、機能ユニットへのラッチ／ビット位置のマッピングは、外部の試験機器内に実装することができ、このことにより、ラッチ／ビット位置だけがオンボードでプロセッサ・チップに記憶され、不良機能ユニットの決定はオフチップで実施される。
【００７３】
図８は、本発明に一致する内部投票ベースのＢＩＳＴを実施するための、マルチコア・プロセッサ・チップ２００（図５）のスキャン・エンジン２０８により実施される例示的な動作のシーケンス２５０を示す。この実装では、全ての処理コアが同じテスト・パターンを受け取ることが仮定されている。したがって、ブロック２５２では、疑似乱数テスト・パターンまたは所定のテスト・パターンのいずれかのテスト・パターンが処理コアのうちの全てのスキャン・チェインにスキャン入力またはクロック入力される。次いで、処理コアは、Ｎ（１または複数）サイクルぶんクロック制御され（ブロック２５４）、入力されたテスト・パターンへの処理コアの応答を試験し、Ｎクロック・サイクル後に、クロックはブロック２５６で停止される。
【００７４】
次いで、ブロック２５８で、ビット位置カウンタは、スキャン・チェインから出力される、第１のラッチまたはビット位置に対応する値にリセットされる。次いで、ブロック２６０で、処理コアのそれぞれのスキャン・チェインから試験結果がビット単位でクロック出力またはスキャン出力され、試験結果のビット単位比較を実施する。スキャン・チェインから出力されるビットの全てが互いに一致していれば、ブロック２６２は、ブロック２６４に制御を渡し、スキャン・チェインの次のラッチ／ビット位置に対応する値にカウンタを増加（または適切な場合は、減少）させる。ブロック２６６は、次いで、制御をブロック２６０に戻し、結果のスキャン出力を続ける。しかし、スキャン・エンジン内の比較論理部による試験結果ビット間の任意の不一致に応答して、ブロック２６２は制御をブロック２６８に渡し、例えば異常値処理コアに対応する記憶要素に現在のカウンタ値を記憶させることにより、不良テーブル内に不良を記憶する。次いで、制御がブロック２６４に渡り、カウンタを更新し、試験結果のスキャン出力を続ける。
【００７５】
試験結果のビットの全てが一度スキャン出力されたら、ブロック２６６は制御をブロック２７０に渡し、適用されるべき追加のテスト・パターンが残っているかどうかを決定する。疑似乱数テスト・パターンについては、ブロック２７０は、所定の数のテスト・パターンの後に試験を停止することができる。テスト・パターンの所定のシーケンスについては、所望のシーケンス内のテスト・パターンの全てが一度適用されたら、ブロック２７０は、試験を停止することができる。したがって、追加のテスト・パターンを適用する必要がある場合、ブロック２７０は、制御をブロック２５２に戻し、新しいテスト・パターンでスキャンする。
【００７６】
しかし、一度全てのテスト・パターンが適用されたら試験は完了し、ブロック２７０は、任意選択で制御をブロック２７２に渡し、チップをプログラムする。チップのプログラミングは、典型的には、自動的にチップの部分をディセーブルにすること、または外部の試験機器により取り出されて、チップの部分を後でディセーブルにするために、もしくは完全にチップを廃棄するために使用することができるデータを記憶することのいずれかを含む。
【００７７】
チップのプログラミングは、例えば、マッピング・テーブルにアクセスすること、および不良であると識別される処理コア内の任意の不良機能ユニットを自動的にディセーブルにすることを含むことができる。プログラミングは、処理コアを完全にディセーブルにすること、または別の処理コア（例えば、予備または冗長なコア）を再マッピングして元は不良処理コアに割り当てられた機能を取り扱うこと、あるいはその両方も含むことができる。プログラミングは、不良処理コアを選択して、例えばサービス・プロセッサとして機能するといった、特殊なタスクを取り扱うことも含むことができる。処理コア内の異なる機能ユニットで検出される不良に応じて、異なるアクションをとることができること、例えば、処理コアは、浮動小数点ユニットなしで低減した能力で依然として機能することができる場合があるが、発行ユニットなしでは完全に使用不可能な場合があることを理解されよう。
【００７８】
機能ユニットは、粒度の異なるレベルで規定できることも理解されよう。例えば、キャッシュまたは他のオンボード・メモリは、複数の機能ユニットに仕切ることができ、その結果、例えば、キャッシュの特定の部分が不良であると見い出された場合、キャッシュは、不良と識別されたキャッシュの部分に起因して、サイズが減少するが、依然として活動状態である。別の例として、実行ユニットの異なる部分が異なるタイプの命令を取り扱うことができ、実行ユニットの１つの部分内の不良によって、処理コアは、実行ユニットのその部分により取り扱われる任意の命令に関してソフトウェアをトラップして、その部分だけがディセーブルにされ、一方で、依然として他のタイプの命令を取り扱うためにイネーブルにされる結果となることができる。また、機能ユニットを階層的に規定することができ、特定の機能ユニットを他の機能ユニットが含むことができる。したがって、例えば、発行ユニット内の分岐予測ユニットが不良であると識別されるが、分岐予測ユニットをディセーブルにして依然として発行ユニットが動作することを可能にすることができる。
【００７９】
チップをプログラムすることは、例えば、不良コード、または不良のラッチ、機能ユニットもしくは処理コアあるいはこれらの組合せの識別情報を記憶することにより、試験結果を不揮発性メモリに記憶することを含むこともできる。不揮発性メモリは、例えば、電子ヒューズとして、または当技術分野で知られている他の方法で実装することができる。
【００８０】
他のデータ構造体を使用して、本発明に一致する不良データを記憶できることも理解されよう。例えば、不良テーブルを電子ヒューズで実装することができ、そのため、各処理コア内の第１の不良ラッチだけが識別される。別の場合には、不良テーブルまたは他のデータ構造体が、特定の処理コアまたは機能ユニットあるいはその両方への、（所与の処理コア内で検出される複数の不良を含む）それぞれの検出された不良をマッピングする複数のエントリを記憶することができる。データ構造体は、カウンタ値ではなく機能ユニット識別子を記憶することもでき、または単に、もしも不良がある場合には、どの処理コアが不良であるのかを識別することができる。不良データ構造体は、イネーブル回路を兼ねることもでき、そのため、機能ユニットまたは処理コアあるいはその両方の不良のロギングによって、その特定のユニット／コアがイネーブルにされるかまたはディセーブルにされるかを示すその機能ユニットまたは処理コアあるいはその両方用のフラグを設定する結果となることができる。
【００８１】
したがって、本発明に一致する実施形態は、従来型の試験方法論を超えるいくつかの長所を提供する。プロセッサ・チップで内部にＢＩＳＴを実装することにより、テスト・パターンまたは試験結果あるいはその両方がチップと外部の試験機器との間で通信されなければならない場合に可能であったよりも、著しく速く試験を実施することができる。多くの製造環境では、個別のプロセッサ・チップが外部の試験機器上に長く位置すると、それだけ、処理能力が低下して製造コストが大きくなり、この時間を減少すれば、処理能力を改善し、単位当たりのコストを低下させる。投票または比較論理部を実装することにより、所与のテスト・パターンについての「正しい」結果をシミュレートする必要、またはさもなければ前もって決定する必要がない。というのは、正しさは、処理コアの大多数がそれらのそれぞれの結果として何を出力するのかに単に基づいているからである。さらに、不良処理コアまたは不良機能ユニットあるいはその両方を識別することにより、不良処理コアまたは機能ユニットあるいはその両方を含む多くのチップは、その全体が廃棄されるのではなく、依然として低減した能力で動作するように再構成することができる。
【００８２】
本発明の精神および範囲から逸脱することなく、開示された実施形態に対し、様々な変更を行うことができる。したがって、本発明は、添付される特許請求の範囲に存在する。
【図１】
2015509183.tif 000003
【図２】
2015509183.tif 000004
【図３】
2015509183.tif 000005
【図４】
2015509183.tif 000006
【図５】
2015509183.tif 000007
【図６】
2015509183.tif 000008
【図７】
2015509183.tif 000009
【図８】
2015509183.tif 000010
【手続補正書】
【提出日】平成26年8月26日(2014.8.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
マルチコア集積回路デバイス上に配設された複数の処理コアであって、各処理コアがスキャン・チェインを含む、前記複数の処理コアと、
前記マルチコア集積回路デバイス上に配設され、前記複数の処理コアの前記スキャン・チェインにテスト・パターンを通信し、前記テスト・パターンに応じて前記複数の処理コアの前記スキャン・チェインにより出力される試験結果を比較するように構成される、スキャン論理部であって、前記複数の処理コアにより出力される前記試験結果の大多数と異なる不良処理コアの前記スキャン・チェインにより出力される前記試験結果に基づいて、前記複数の処理コアのうちの前記不良処理コアを識別するようにさらに構成される、前記スキャン論理部と
を備える、回路装置。
【請求項２】
前記スキャン・チェインが直列スキャン・チェインであり、前記複数の処理コアの前記スキャン・チェインにより出力される前記試験結果のビット単位比較を実施するように前記スキャン論理部が構成される、請求項１に記載の回路装置。
【請求項３】
前記スキャン・チェインがそれぞれ、互いに直列に結合される複数のラッチを含み、前記複数の処理コアにより出力される試験結果の前記大多数と異なる前記試験結果のビットの位置に基づいて、前記不良処理コア内の不良ラッチを識別するように前記スキャン論理部がさらに構成される、請求項２に記載の回路装置。
【請求項４】
前記スキャン・チェインがそれぞれ、前記試験結果を１回に１ビットずつ出力するように構成され、前記スキャン論理部が、前記試験結果の各ビットを受け取ることに関連してカウンタを増加し、前記カウンタを使用して前記不良ラッチを識別するように構成される、請求項３に記載の回路装置。
【請求項５】
不良データ構造体をさらに備え、前記複数の処理コアにより出力される試験結果の前記大多数と異なる前記不良処理コアの前記試験結果内のビットを識別することに関連して、前記不良データ構造体内の前記カウンタの値を記憶するように前記スキャン論理部が構成される、請求項４に記載の回路装置。
【請求項６】
前記不良データ構造体が複数の記憶要素を備え、各記憶要素が前記複数の処理コアのうちの１つの処理コアに関連し、前記不良処理コアに関連する前記記憶要素内の前記カウンタの前記値を前記スキャン論理部が記憶するように構成される、請求項５に記載の回路装置。
【請求項７】
前記不良データ構造体が複数のエントリを備え、前記複数の処理コアのいずれかで検出されたそれぞれの不良に応じて、前記不良に関連するカウンタ値を前記不良データ構造体内のエントリに記憶するように前記スキャン論理部が構成される、請求項６に記載の回路装置。
【請求項８】
前記不良データ構造体が複数の電子ヒューズを備える、請求項５に記載の回路装置。
【請求項９】
各処理コアの前記スキャン・チェイン内の前記複数のラッチが、前記処理コアの複数の機能ユニット内に配設され、前記不良ラッチを識別することに応じて不良機能ユニットを識別するように前記スキャン論理部が構成される、請求項３に記載の回路装置。
【請求項１０】
前記不良機能ユニットを識別することに応じて前記不良機能ユニットを自動的にディセーブルにするように前記スキャン論理部が構成される、請求項９に記載の回路装置。
【請求項１１】
前記不良機能ユニットに関連する電子ヒューズをとばすことにより、前記不良機能ユニットを自動的にディセーブルにするように前記スキャン論理部が構成される、請求項１０に記載の回路装置。
【請求項１２】
前記スキャン論理部が複数のテスト・パターンを前記複数の処理コアに通信するように構成され、各テスト・パターンに関し、
前記テスト・パターンを前記複数の処理コアの前記スキャン・チェインにクロック入力し、
前記複数の処理コアを複数のクロック・サイクルの間クロック制御し、
前記複数の処理コアの前記スキャン・チェインから前記試験結果をクロック出力する
ように構成される、請求項３に記載の回路装置。
【請求項１３】
前記スキャン論理部が、複数の疑似乱数テスト・パターンを生成するように構成される疑似乱数論理部を含む、請求項１２に記載の回路装置。
【請求項１４】
前記スキャン論理部が、前記複数の処理コアに所定のシーケンスのテスト・パターンを通信するように構成される、請求項１２に記載の回路装置。
【請求項１５】
前記スキャン論理部が、前記マルチコア集積回路デバイス上に配設された前記処理コアの全ての前記スキャン・チェインにより出力される試験結果を比較するように構成される、請求項１に記載の回路装置。
【請求項１６】
前記スキャン論理部が、互いに並列に複数の比較を実施するように構成され、各比較が、前記マルチコア集積回路デバイス上に配設された前記処理コアのサブセットの前記スキャン・チェインにより出力される試験結果を比較する、請求項１に記載の回路装置。
【請求項１７】
請求項１に記載の回路装置を含む、集積回路デバイス。
【請求項１８】
請求項１に記載の回路装置に実行させる論理規定プログラム・コードを備えるプログラム。
【請求項１９】
複数の処理コアを含むマルチコア集積回路デバイスのビルトイン・セルフ・テスト（ＢＩＳＴ）を実施する方法であって、各処理コアがスキャン・チェインを含み、
前記マルチコア集積回路デバイス上に配設されたスキャン論理部を使用して、前記複数の処理コアの前記スキャン・チェインにテスト・パターンを通信するステップと、
前記スキャン論理部を使用して前記テスト・パターンに応じて前記複数の処理コアの前記スキャン・チェインにより出力される試験結果を比較するステップと、
前記複数の処理コアにより出力される前記試験結果の大多数と異なる前記不良処理コアの前記スキャン・チェインにより出力される前記試験結果に基づいて、前記複数の処理コアのうちの不良処理コアを識別するステップと
を含む方法。
【請求項２０】
前記スキャン・チェインが直列スキャン・チェインであり、試験結果を比較するステップが前記複数の処理コアの前記スキャン・チェインにより出力される前記試験結果のビット単位の比較を実施するステップを含み、前記スキャン・チェインがそれぞれ互いに直列に結合される複数のラッチを含み、前記複数の処理コアにより出力される試験結果の前記大多数と異なる前記試験結果内のビットの位置に基づいて、前記不良処理コア内の不良ラッチを識別するステップをさらに含む、請求項１９に記載の方法。
【請求項２１】
不良データ構造体内の前記ビット位置に関連する値を記憶するステップをさらに含む、請求項２０に記載の方法。
【請求項２２】
各処理コアの前記スキャン・チェイン内の前記複数のラッチが前記処理コアの複数の機能ユニット内に配設され、前記不良ラッチを識別するステップに応答して不良機能ユニットを識別するステップをさらに含む、請求項２１に記載の方法。
【請求項２３】
前記不良機能ユニットを識別するステップに応答して前記スキャン論理部で前記不良機能ユニットを自動的にディセーブルにするステップをさらに含む、請求項２２に記載の方法。
【請求項２４】
前記スキャン論理部で複数の疑似乱数テスト・パターンを生成するステップと、前記複数の疑似乱数テスト・パターンを前記複数の処理コアに通信するステップとをさらに含む、請求項１９に記載の方法。
【請求項２５】
前記スキャン論理部で複数の所定のシーケンスのテスト・パターンを生成するステップと、前記所定のシーケンスのテスト・パターンを前記複数の処理コアに通信するステップとをさらに含む、請求項１９に記載の方法。
【国際調査報告】
2015509183.tif 000011
2015509183.tif 000012
2015509183.tif 000013