(57)【要約】【課題】多数コアプロセッサの信頼性強化を提供する。【解決手段】一実施形態において、本発明は、多数コアプロセッサにおける利用可能なコアを特定し、第一のサブセットのコアをイネーブル状態に割り当て、第二のサブセットのコアを予備状態に割り当て、前記割り当てに関する情報をストレージに格納する方法を含む。特定の実施形態においては、温度アウェアアルゴリズムに基づいてコアをイネーブル状態に割り当ててよい。その他の実施形態を記載し権利請求する。【選択図】図２
2009524863.tif 000002
【特許請求の範囲】
【請求項１】
多数コアプロセッサにおける複数の利用可能なコアを特定することと、
前記複数の利用可能なコアのうち第一のサブセットを処理を実行するようイネーブル状態に割り当て、前記複数の利用可能なコアのうち第二のサブセットを予備状態に割り当てることと、
前記割り当てに関する情報をストレージに格納することと
を含む方法。
【請求項２】
前記イネーブル状態にあるコアに隣接する個数が最小であるコアを特定することにより前記第一のサブセットを割り当てることを更に含む請求項１に記載の方法。
【請求項３】
コントローラに対応付けられたビットマップに前記情報を格納することを更に含み、前記ビットマップは前記多数コアプロセッサのコアの配置に対応し、前記コントローラは、前記第一及び第二のサブセットを割り当てる、
請求項１に記載の方法。
【請求項４】
前記第一のサブセットのうちの故障したコアに関する故障情報を受け取り、前記第二のサブセットのコアを前記第一のサブセットのコアとして再割り当てすることを更に含む請求項１に記載の方法。
【請求項５】
前記第一のサブセットに含まれるコアに隣接する個数が最小である前記第二のサブセットの前記コアを特定することにより、前記第二のサブセットの前記コアを再割り当てすることを更に含む請求項４に記載の方法。
【請求項６】
第一のサブセットにおける第一のコアと前記第一のサブセットにおける第二のコアとの間の距離に基づいて、第一の処理を前記第一のコアに割り当て、第二の処理を前記第二のコアに割り当てることを更に含み、前記第一の処理と前記第二の処理とは互いに通信する、
請求項１に記載の方法。
【請求項７】
前記第二のサブセットと前記多数コアプロセッサにおける故障したコアとを介して前記第一のサブセットが発生した熱を放熱させることを更に含む請求項１に記載の方法。
【請求項８】
前記多数コアプロセッサの信頼性メトリックが最大化されるように前記第一のサブセットを割り当てることを更に含む請求項１に記載の方法。
【請求項９】
前記多数コアプロセッサの動作における計算量に対する通信量の比に基づいて前記信頼性メトリックが最大化されるように前記第一のサブセットの割り当てをディセーブルすることを更に含む請求項８に記載の方法。
【請求項１０】
ダイ上に位置する複数のコアと、アクティブステータスとすべき第一グループのコアを選択し、バックアップステータスとすべき第二グループのコアを選択するアロケータとを含む多数コアプロセッサを含み、
前記アロケータは、前記第一グループのコアを前記ダイ上のそれらの位置に基づき選択する、
装置。
【請求項１１】
前記アロケータは、前記第一グループのコアのうち一のコアが故障した後、前記第二グループのコアのうち一のコアを前記第一グループのコアのうちに含めるべく選択する、
請求項１０に記載の装置。
【請求項１２】
前記アロケータは、前記第一グループのコアに隣接する個数が最小である前記コアを、前記第二グループのコアのうちから特定する、
請求項１１に記載の装置。
【請求項１３】
前記アロケータは、第一の処理を前記第一グループのコアのうち第一のコアにスケジューリングし、第二の処理を前記第一グループのコアのうち第二のコアにスケジューリングし、
前記第一の処理と前記第二の処理は、互いに通信する、
請求項１０に記載の装置。
【請求項１４】
前記多数コアプロセッサは、コアステータス情報を格納するストレージを更に含み、前記コアステータス情報は、前記複数のコアの位置及び対応するステータス情報を含む、
請求項１０に記載の装置。
【請求項１５】
前記アロケータは、前記第一グループのコアのうち一のコアが故障した後に前記ストレージにアクセスし、前記第一グループのコアとして再構成すべき前記第二グループのコアのうちの一のコアを前記コアステータス情報に基づき選択する、
請求項１４に記載の装置。
【請求項１６】
前記アロケータは、前記多数コアプロセッサにおける専用コアを含む、
請求項１０に記載の装置。
【請求項１７】
前記アロケータは、割り当てプログラムを格納する読み出し専用メモリ（ＲＯＭ）を含むマイクロコントローラを含む、
請求項１０に記載の装置。
【請求項１８】
機械により実行されると前記機械をイネーブルする命令を含む機械読み出し可能格納媒体を含む物品であって、前記命令は、
プロセッサの第一のコアに関する故障情報を受け取ることと、
前記プロセッサの少なくとも一つの予備コアを、命令を実行するようイネーブルすべく、温度アウェアアルゴリズムに基づき選択することと
を含む方法を実行するよう前記機械をイネーブルする物品。
【請求項１９】
前記少なくとも一つの予備コアを選択することは、前記プロセッサの目標性能レベルに達するまで複数のコアを選択することを更に含む、
請求項１８に記載の物品。
【請求項２０】
前記方法は、コア動作パラメータ情報を受け取り、前記コア動作パラメータ情報を用いて前記目標性能レベルに達するまで前記複数のコアを選択することを更に含み、前記コア動作パラメータ情報は、経時最大動作周波数を含む、
請求項１９に記載の物品。
【請求項２１】
前記方法は、前記温度アウェアアルゴリズムを用いて前記少なくとも一つの予備コア選択することにより、前記プロセッサの動作温度を低下させることを更に含む、
請求項１８に記載の物品。
【請求項２２】
前記方法は、前記温度アウェアアルゴリズムに基づいて、イネーブル状態にあるコアに隣接する個数が最小である前記少なくとも一つの予備コアを選択することを更に含む、
請求項１８に記載の物品。
【請求項２３】
前記方法は、前記プロセッサの性能を向上させるべく前記温度アウェアアルゴリズムなしで前記少なくとも一つの予備コアを選択することを更に含み、前記プロセッサは、多数コアプロセッサを含む、
請求項１８に記載の物品。
【請求項２４】
前記方法は、イネーブルされたコアのサブセットのうち第一のコアと前記イネーブルされたコアのサブセットのうち第二のコアとの間の距離に基づいて、第一の処理を前記第一のコアに割り当て、第二の処理を前記第二のコアに割り当てることを更に含み、前記第一の処理と前記第二の処理は互いに通信する、
請求項１８に記載の物品。
【請求項２５】
インターコネクト・ファブリックを介して結合される複数のコアと、第一のサブセットのコアを動作に割り当て、第二のサブセットのコアを予備として割り当てるコントローラとを含む多数コアプロセッサと、
前記多数コアプロセッサに接続されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）と
を含み、
前記コントローラは、前記第一のサブセットのコアに隣接するコアのアクティベート・ステータスに基づき前記第一のサブセットのコアを割り当てる、
システム。
【請求項２６】
前記コントローラは、前記第一のサブセットのコアのうち一のコアが故障したとき、前記第二のサブセットのコアのうち、前記第一のサブセットのコアに隣接する個数が最小であるコアを、前記第一のサブセットのコアのうちに含めるべく選択する、
請求項２５に記載のシステム。
【請求項２７】
前記コントローラは、第一の処理を前記第一のサブセットのコアのうち第一のコアにスケジューリングし、第二の処理を前記第一のサブセットのコアのうち第二のコアにスケジューリングするとき、第一の動作モードにおいては温度アウェアアルゴリズムに従って、第二の動作モードにおいては前記温度アウェアアルゴリズムに従わずにスケジューリングする、
請求項２５に記載のシステム。
【請求項２８】
前記コントローラは、コアステータス情報を格納するストレージを更に含み、前記コアステータス情報は、前記複数のコアの位置と対応するアクティベート・ステータス情報とを含む、
請求項２５に記載のシステム。
【請求項２９】
前記インターコネクト・ファブリックは、前記第一のサブセットのコアの割り当てに基づいて再構成されることができる、
請求項２５に記載のシステム。
【請求項３０】
前記コントローラは、割り当てプログラムを含む読み出し専用メモリ（ＲＯＭ）を含む、
請求項２５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、マルチプロセッサシステムに関し、特に、マルチプロセッサシステムの信頼性向上に関する。
【０００２】
コンピュータシステムは、複雑性を一段と増し、マルチコアプロセッサ等の先進のプロセッサを含むようになってきている。命令を並行して実行する二つのプロセッサコアを有するデュアルコアプロセッサが導入されている。将来的には、更にコアを、たとえば３個以上のコアを含むプロセッサが生産されることが期待される。現在のロードマップには、４個のコア及び８個のコアを有するプロセッサが含まれる。
【０００３】
また、長期的にはプロセッサは、単一のプロセッサパッケージに多数のコアが存在し、更にはパッケージにおける単一の基板もしくはダイ上に多数のコアが存在する多数コア環境へと進化することが予期される。したがって、８個、１６個、３２個、６４個、１２８個、もしくはそれより多い個数のコアを含むプロセッサが将来利用可能となることが期待される。このような多数コアプロセッサに付随する複雑性に加え、信頼性に関する懸念が増大する。具体的には、多様な技術的課題に起因して多数コアプロセッサのコアは、シングルコアもしくはデュアルコアプロセッサよりも故障率が高くなるであろう。
【０００４】
このような高率の故障率となる原因は多数存在し、またこれらの原因の全てが組み合わさることにより多数コアプロセッサのコアは世代ごとに寿命が縮小する虞がある。このような寿命縮小の原因は、エレクトロマイグレーション、ストレスマイグレーション、経時絶縁破壊（ＴＤＤＢ）、負バイアス温度不安定性（ＮＢＴＩ）、温度サイクリング等の数多くの劣化源に求められる。これらの故障メカニズムの大半は高温で発生する。つまり、高温であるほどコアの平均故障時間（ＭＴＴＦ）は短くなる。通常、プロセッサもしくはプロセッサのコアの故障率は、時間当たりの故障数（ＦＩＴ）と呼ばれ、これは１０９時間において予期される故障数である。ＦＩＴ値を用いると、ＭＴＴＦは１／ＦＩＴと算出できる。固定条件（たとえば、温度、電圧、周波数、及び利用）下での定常状態動作を想定したＭＴＴＦは、多様な技術に関して算出される。したがって、これらのパラメータのいずれかが増加することにより、寿命信頼性が更に悪化する虞がある。
【図面の簡単な説明】
【０００５】
【図１】本発明の一実施形態に係る多数コアプロセッサのブロック図である。
【０００６】
【図２】本発明の一実施形態に係る方法のフロー図である。
【０００７】
【図３】本発明の一実施形態に係るコア割り当て方法のフロー図である。
【０００８】
【図４】本発明の一実施形態に係るコア再割り当て方法のフロー図である。
【０００９】
【図５】本発明の一実施形態に係る信頼性最大化方法のフロー図である。
【００１０】
【図６】本発明の実施形態に係るマルチプロセッサシステムのブロック図である。
【発明を実施するための最良の形態】
【００１１】
本発明の実施形態は、半導体デバイス、特に、たとえば多数コアプロセッサ等のプロセッサの信頼性を向上させるべく用いてよい。多様な実施例において、多数コアプロセッサのコアを命令実行に割り当てる多様なスキームを実現してよい。これらの割り当てスキームにおいては、多様な動作パラメータに基づいてアクティベートもしくはイネーブルされるコアを選択してよい。アクティベートするコアの選択時に考慮する動作パラメータとしては、特に温度が挙げられる。半導体故障メカニズムの多くは高温で発生するので、温度はコアのＭＴＴＦと多数コア信頼性とに直接の関連を有する。したがって、本発明の実施形態においては、多数コア信頼性を最大化すべく温度を管理するためのコア粒度メカニズムを実装してよい。多数コア信頼性を最大化しつつ、コアの割り当て時にはコアの劣化と処理の変動とを更に考慮に入れてよい。
【００１２】
コア割り当てスキームに加え、本発明の実施形態においては、たとえば現在イネーブルされているコアが故障したとき、もしくは望ましい動作レベルでの処理を継続できないときに、再割り当てを実行してもよい。多様な実施形態において、再割り当てスキームにおける考慮事項として、利用可能な予備コア群のうちアクティブなコアもしくはイネーブルするコアとして利用するための一以上のコアを選択するための温度に基づく解析を用いてよい。さらに、本発明の実施形態においては、アクティベートするコアを処理負荷に基づいて選択してよい。たとえば、互いに通信し合う処理の性能を向上させるべく、緊密に関連する処理を互いに近接した関連性を有するコアにスケジューリングして通信経路を最短化してよい。
【００１３】
多数コアプロセッサ上で、コア温度は、隣接するコアに対して側面から実質的な影響を与え得る。たとえば、２個の隣接し合うコアが同時にオンされた場合、１以上の予備コアによりそれらが離間されている場合に比較してそれらの平均温度は高くなる。予備コア（もしくは、故障したコア）は、アクティブコアが発生する熱を吸収し、アクティブコアの温度を下げる。例として、アクティブコアを１６個、予備コアを１６個有する３２コアの多数コアプロセッサを想定する。本発明の実施形態に係る割り当て／再割り当てスキームを用いることにより、大幅にコア温度を下げることができる。たとえば、市松模様パターン（たとえば、１個の接続（ｏｎｌｉｎｅ）コアと１個の予備コア）においては、アクティベートされるコアが連なっている場合よりも低い温度での動作が可能である。
【００１４】
多数コア環境でのコア信頼性をこの方法で向上させて多数コアプロセッサの寿命を伸ばしてよい。望まれるアーキテクチャに基づき、異なる実施形態を異なる方法で実施してよい。いくつかの実施形態においては、専用のハードウェアを用いて多数コアプロセッサのコアを選択・制御してよい。他の実施形態においては、ソフトウェアにだけ基づく方法を実施してよい。もちろん、ハードウェアだけ、ソフトウェアだけのスキームに変更を加えて所定量の専用ハードウェアを、当該専用ハードウェア上で、及び／又はその他の処理資源上で動作するソフトウェアと併用してよい。たとえば、いくつかの実施形態においては、マイクロコントローラを用い、コントローラのマイクロコードとして実装される一以上のアルゴリズムを実行してよい。他の実施形態においては、マルチコアプロセッサの専用コア上、又は選択したコアもしくはその一部上で実行されるようアルゴリズムをソフトウェアで実装してよい。
【００１５】
割り当て／再割り当てスキームは、コアの故障率を最小化し、したがって多数コア信頼性を最大化するコア毎（つまり、コア粒度）ベースであってよい。いくつかの実施例において、多数コアプロセッサのコアのうち実質数をを予備として保持してよい。コアが故障したとき、利用可能な予備のプールから予備コアを選択してよく、さらに多数コア信頼性が最大化されるように選択してよい。
【００１６】
コアの故障メカニズムの大半は強い温度依存性を有しており、一般則としてコアの故障率は温度が高い場合に増大する。したがって、温度を考慮したコア割り当て／再割り当てスキームにより多数コアプロセッサの信頼性は拡大するであろう。いくつかの実施形態においては、目標寿命を保証する性能レベルの持続を最長化する多数コア使用モデルを実施することができる。同様に、当該モデルは、目標とする性能レベルが保証されるように寿命を最長化することができる。初期のコア割り当てと、コア故障時もしくはシステムが望まれる性能を提供できないときのコアの再構成とを提供するこれらのモデルにおいては、処理の変動と周波数の経時劣化とを考慮する。さらに、異なるコア同士が通信し合う用途に関連するいくつかの実施形態においては、性能を信頼性と均衡させてよい。
【００１７】
図１は、本発明の一実施形態に係る多数コアプロセッサのブロック図である。図１に示すように、プロセッサ１０は、複数の個別コア１５をを含む。より具体的には、図１の実施形態は、インターコネクト・ファブリック３０を介して連結される８×８のコアのアレイを含む構成を示す。図１の実施形態に係る本特定的実施例を示す一方で、本発明の範囲はこれに限定されず、他の実施形態においては他の構成、たとえば、一次元、二次元、もしくは三次元メッシュ、又は一次元、二次元、もしくは三次元トーラス構成等を用いてよいことは理解されよう。さらに、図１の実施形態においては、６４個の個別コアを図示しているが、別の実施例においては多数コアプロセッサはより多数の又はより少数のコア含んでよいことは理解されよう。
【００１８】
少なくともシングルコア又はデュアルコアのプロセッサと比べると、各コア１５は比較的小さい。多様な実施形態において、各コア１５は、ローカルメモリ（たとえば、キャッシュメモリ）を含んでよく、更に共有メモリに接続されてよい。具体的には、図１に示すように、インターコネクト・ファブリック３０を介して個別コア１５にグローバルな共有メモリである共有メモリ２０を接続してよい。図を簡易にするべく図１には示さなかったが、プロセッサ１０はその他のコンポーネント、たとえば、入出力（Ｉ／Ｏ）インターフェース、インターコネクト、バス、ロジック等を含んでよいことは理解されよう。
【００１９】
アクティベートすべきコア１５は、多様なアルゴリズムに基づいて選択してよい。そのようなアクティベートを有効にするべく、アクティベートされるコア１５同士の接続が向上し、通信速度が速められるようインターコネクト・ファブリック３０を構成してよい。
【００２０】
図２は、本発明の一実施形態に係る方法のフロー図である。図２に示すように、方法１００を用いて望まれる性能レベルが達成されるように多数コアプロセッサのコアの割り当てを行ってよい。多様な実施形態において、たとえば専用のマイクロコントローラ、その他のロジック、又はプロセッサのコアにおいて方法１００を実行してよい。図２に示すように、方法１００は、多数コアプロセッサの利用可能なコアを特定すること（ブロック１１０）から開始してよい。たとえば、初期化時もしくはその他の機会において、全てのコアにポーリング要求を送信し、応答可能なコア（つまり、故障していないコア）からの応答を受信してよい。
【００２１】
引き続き図２を参照し、次に、プロセッサ内の第一グループのコアをアクティブステータスに割り当ててよい（ブロック１２０）。いくつかの実施形態においては、コアの、その他のアクティブコアに対する相対位置に基づいて、コアを第一グループへ割り当ててよい。つまり、多様な実施形態において、イネーブルすべきコアの分析には隣接するコアのステータスを考慮してよい。アクティブコアの温度は当該アクティブコアに隣接する故障コアもしくは予備コアを通じて消散するので、このようにアクティブな隣接コアの数が最小であるコアをイネーブル対象として選択することにより低動作温度が得られるようにしてよい。所与の性能レベルに達するまで第一グループへとコアを割り当ててよい。性能レベルは、多様に表現され、たとえば秒当たりの命令数もしくはその他の類似の指標により表される。動作するべくアクティベートされる第一グループのコア１５（図１に示す）に基づいて、コア同士を連結するインターコネクト・ファブリックを構成もしくは再構成してよい。より具体的には、第一グループのコア同士の通信が向上するようにインターコネクト・ファブリックを選択的に制御してよい。一実施形態においては、第一グループのコアが効率的に接続されるようにインターコネクト・ファブリックを構成するスイッチを構成してよい。
【００２２】
引き続き図２を参照し、次に、第二グループのコアを予備ステータスに割り当ててよい（ブロック１３０）。つまり、第一グループへといくつかのコアをイネーブルすることにより望まれる性能レベルに到達したときに、残りの利用可能なコアを予備ステータスの第二グループに入れてよい。後述するように、これらの予備コアは、後に第二グループから第一グループへと移行させることができる。
【００２３】
引き続き図２を参照し、たとえば初期化時において利用可能なコアが第一及び第二グループに割り当てられた後、多数コアプロセッサは通常動作へと進行してよい。この動作の間、ポーリング動作の所与の間隔もしくは信号を受信する所与の間隔で、コアの故障が生じたかを判定してよい（菱形１４０）。故障が生じた場合、制御は上記したブロック１１０へと戻る。したがって、上記のフローを再度実行して、故障したコアの代替として一以上のコアを再割り当てしてよい。
【００２４】
引き続き図２を参照し、菱形１４０においてコアの故障が生じていないと判定された場合、制御は菱形１５０へと進む。菱形１５０においては、性能レベルの変化が生じたかを判定してよい。二種類の性能レベル変化が生じ得る。一方は、望まれる性能レベルの変更をたとえばユーザから指示される場合の変化である。たとえば、より複雑な動作を実行するべくより高度の性能をユーザが望む場合がある。性能変化の第二の種類は、たとえば一以上のコアが以前の周波数では動作しないことにより多数コアプロセッサの実性能レベルが変化する場合である。したがって、このような性能レベル変化が菱形１５０において判定された場合、制御はブロック１１０へと戻り、一以上のコアの再割り当てを行う。このような性能レベル変化が菱形１５０において判定されない場合は、制御は上記した菱形１４０へと戻る。図２の実施形態において本特定的実施例を記載したが、本発明の範囲はこれに限定されないことは理解されよう。
【００２５】
図２の方法はコアの割り当て及び再割り当ての一般的手順を示すが、いくつかの実施形態においては、コアの割り当て及び再割り当てに異なるアルゴリズムを実装してよい。いくつかの実施形態においては、たとえば欲張り最適化アプローチを用い、両スキームにおいて類似したアクティブコア選択を実施してよい。しかし、他の実施形態では、割り当てスキームと再割り当てスキームとにおいて異なるコア選択法を実施してよい。
【００２６】
図３は、本発明の一実施形態に係るコア割り当てスキームのフロー図である。図３に示すように、方法２００は、コアステータス情報を受け取ること（ブロック２１０）から開始してよい。たとえば、多数コアプロセッサを高出力化したとき、各コアは、高出力化が成功し利用可能であることと、現在の最大動作周波数とを示す信号を送ってよい。次に、ブロック２２０において、健全なコアの全てを予備として初期化してよい（ブロック２２０）。したがって、多数コアプロセッサに存在する健全なコアの個数が初期においては投入された予備リストが保持される。
【００２７】
次に、現在の性能が目標の性能レベルを下回っているかを判定してよい（菱形２３０）。性能レベルは、動作に望まれる健全なコアの個数、秒当たりの命令数、もしくは別の類似のメトリックに対応したものであってよい。性能レベルが目標レベルを下回っていないと判定された場合、方法２００は終了してよい。そうでない場合、制御は菱形２３０からブロック２４０へと進む。ブロック２４０では、本明細書に記載したような信頼性最大化アルゴリズムに基づいてコアを割り当ててよい（ブロック２４０）。この割り当ての後、コア同士を連結するインターコネクト・ファブリックを当該割り当てに従って構成してよいことに注意されたい。つまり、多数コアプロセッサの信頼性最大化を目的とするアルゴリズムに基づいてコアをアクティベートしてよい。多数コア信頼性を最大化する多様な方法を実行してよい。しかし、多くの実施形態においては、多数コアプロセッサの全体温度を低下させること、もしくは多数コアプロセッサの少なくとも一以上のアクティブコアの動作温度を低下させることを狙った方法でコアの割り当てを行ってよい。後述するように、このような信頼性最大化アルゴリズムの特定の実施例を多様な実施形態により実行してよい。
【００２８】
引き続き図３を参照して、制御はブロック２４０からブロック２５０に進む。ブロック２５０においては、選択されたコアをアクティブであると識別してよい。たとえば、一実施形態においては、ビットマップもしくはその他の格納形態により実施されるコア位置マップに、アクティベートされたコア、つまりアクティブ状態に設定されたコアに対応するエントリを設けて、当該コアをアクティブであると識別できるようにしてよい。次に、制御はブロック２６０へと進む。ブロック２６０においては、予備コアのカウント値をディクリメントしてよい（ブロック２６０）。図３に示すように、制御はブロック２６０から上記した菱形２３０へと戻る。
【００２９】
図３の実施形態において本特定的実施例を記載したが、本発明の範囲はこれに限定されず、コア割り当てのその他の方法を実行してよいことは理解されよう。いくつかの実施形態においては、多数コアプロセッサが高出力化されるたびに図３の方法２００を実行してよい。しかし、プロセッサのリセット時もしくはその他の類似のイベント時等、その他の多様な機会において方法２００を実施してよい。
【００３０】
図４は、本発明の一実施形態に係る再割り当て方法のフロー図である。図３に関して記載した方法２００と同様、図４の方法３００は、マイクロコントローラ、専用ロジック、多数コアプロセッサのコア、もしくはその他の手段を介して実行してよい。
【００３１】
図４に示すように、方法３００は、コア故障情報を受け取ること（ブロック３１０）から開始してよい。たとえば、故障しかけているコアは、故障信号を送ってよい。または、ポーリング法により、たとえばウォッチドッグタイマーメカニズムに従って周期的にコアにポーリングしてよい。コアがポーリングに応答しない場合、故障であることが示される。このような故障情報を受け取ると、故障したコアを故障コアとして識別してよい（ブロック３２０）。たとえば、ビットマップ等のコアマップを故障情報により更新してよい。
【００３２】
次に、制御は菱形３３０に進んでよい。菱形３３０においては、多数コアプロセッサの性能は、（故障に照らして）目標レベルを下回るかを判定してよい（菱形３３０）。下回っていなければ、方法３００は終了してよい。下回っていれば、制御は菱形３３０からブロック３４０へと進む。ブロック３４０においては、信頼性最大化アルゴリズムに基づいてコアを割り当ててよい（ブロック３４０）。また、それに従ってインターコネクト・ファブリックを再構成してよい。制御はブロック３４０からブロック３５０に進む。ブロック３５０においては、選択したコアをアクティブであると識別してよい。その後、制御はブロック３６０に進み、予備コアのカウント値をディクリメントしてよい（ブロック３６０）。図４に示すように、制御はブロック３６０から上記した菱形３３０へと戻る。
【００３３】
上記したように、割り当てモードであるか再割り当てモードであるかに拘わらず、実施形態においては、アクティベートすべきコアの選択において信頼性最大化アルゴリズムを実施してよい。図５は、本発明の一実施形態に係る信頼性最大化方法のフロー図である。図５に示すように、方法４００は、たとえば予備コアリストにある予備コアを分析用に選択すること（ブロック４１０）から開始してよい。分析は、分析対象のコアに隣接するコアを特定することから始めてよい（ブロック４２０）。いくつかの実施形態においては、所与のプロセッサ配置及び所与のコアの位置に依存して、当該所与のコアには１個乃至４個のコアが隣接する。したがって、ブロック４２０においては、これらの隣接コアを特定してよい。次に、故障状態又は予備状態にある隣接コアの個数を判定する（ブロック４３０）。
【００３４】
制御はブロック４３０から菱形４４０へと進む。菱形４４０においては、選択したコアに関してブロック４３０で判定した個数（つまり、隣接する個数）が現在の最適コアについての個数より大きいかを判定してよい（菱形４４０）。つまり、（隣接する予備コアもしくは故障コアの）数が最大である以前に分析したコアの当該値に現在の隣接個数を比較してよい。選択したコアの数のほうが大きければ、制御はブロック４５０に進み、選択したコアが最適コアとして設定される。制御はブロック４５０又は菱形４４０から菱形４６０へと進む。菱形４６０においては、分析されていない予備コアが残っているかを判定してよい（菱形４６０）。残っている場合、制御は上記したブロック４１０に戻る。残っていなければ、制御はブロック４７０に進む。制御４７０においては、特定された最適コアを割り当ててよい（ブロック４７０）。つまり、アクティブな隣接コアの個数が最小であるコアが選択される。このように、故障した隣接コアもしくは予備の隣接コアが選択したアクティブコアの放熱を助けるので、選択したコアにおいて、また多数コアプロセッサ全体において温度を低下させることができる。図５の実施形態において本特定的実施例を記載したが、本発明の範囲はこれに限定されないことは理解されよう。
【００３５】
いくつかの実施形態においては、多数コア信頼性を最大化し、かつ目標性能を保証するべくいずれのコアをアクティベートするかをアルゴリズムにより選択してよい。どのコアが故障し、どのコアが現在接続（ｏｎｌｉｎｅ）されているかもしくは予備状態にあるかについての情報をマイクロコントローラがグローバルに収集してよい。一実施形態においては、この情報をマイクロコントローラ上にビットマップとして保持してよい。別の実施形態においては、コアが完全故障したこと、もしくは動作周波数は低下するがコアは動作し続けるであろうことを故障として表してよい。酸化物の厚さに関わる問題、ＮＢＴＩ効果等の、ｐチャネル酸化金属半導体（ＰＭＯＳ）トランジスタの閾値電圧を経時上昇させる経時効果により劣化したコアは、当初の周波数では動作できないが、それより低い周波数においては動作できる。
【００３６】
コアの割り当て／再割り当てを行ったとき、マイクロコントローラ上のコアビットマップを更新してよい。別の実施形態においては、アルゴリズムをソフトウェアとして実装してコア上でカーネルもしくはユーザ処理として実行してよい。又は、アルゴリズムをハードウェア（たとえば、単純な組み込みコア／ＲＯＭの組み合わせ）として実装してマイクロコントローラの一部としてよい。いずれの場合においても、アルゴリズムは比較的に低頻度で（たとえば、コアが故障したとき、又は負荷の実質的な変化が生じたとき）実行されるので、メカニズムに依存した出力への影響は最小限である。
【００３７】
一実施形態においては、アルゴリズムは、いずれのコアを接続（ｏｎｌｉｎｅ）すべきか（つまり、アクティブもしくはイネーブル状態にするか）を選択する初期コア割り当てセクションと、コアの故障時に多数コア信頼性を最大化するべくいずれの予備コアをアクティベートすべきかを決定する再構成セクションとの二つのセクションを有する。アルゴリズムは、更に（たとえば、再構成セクションにおいて）通信処理を取り扱い、性能が最大化されるようにそれらをコアに割り当ててよい。
【００３８】
表１は、本発明の一実施形態に係るアルゴリズムの擬似コード表記を示す。
【００３９】
【表１】
2009524863.tif 000003
【００４０】
表１に示すように、割り当て部分（ＣＯＲＥ  ＡＬＬＯＣＡＴＩＯＮ）において、プリセットされた性能目標に達するまでコアを選択してよい。性能目標は、（たとえば、プロセッサの平均販売価格に基づいた）ユーザにより入手可能なコアの個数に対応させてよい。または、性能目標は、多数コアプロセッサの全計算能力を抽象したものであってよく、処理の変動とコアの劣化とを考慮に入れることが可能となる。これらの課題に起因して、いくつかのコアはその他のコアよりも速度が落ちる可能性がある。このような実施形態においては、コア毎のダイ内変動プローブ（ｉｎ−ｄｉｅ  ｖａｒｉａｔｉｏｎ  ｐｒｏｂｅ；ＩＤＶＰ）を介してコア速度をマイクロコントローラに報告してよい。各コアの速度はコア割り当てループにおける考慮事項としてマイクロコントローラにより記憶してよい。
【００４１】
引き続き表１を参照して、再構成部分（ＣＯＲＥ  ＲＥＣＯＮＦＩＧＵＲＡＴＩＯＮ）はコアの故障によりアクティベートされる。目標性能に達するまで、一個（もしくはそれ以上）の予備コアを接続（ｏｎｌｉｎｅ）してよい。再割り当てにおいては、コア周波数の低下も考慮してよい。コアのＩＤＶＰもしくは予測可能コアマイレージ監視回路（ｐｒｅｄｉｃｔｉｖｅ  ｃｏｒｅ  ｍｉｌｅａｇｅ  ｍｏｎｉｔｏｒｉｎｇ  ｃｉｒｃｕｉｔｓ）によりコア周波数の低下がマイクロコントローラに報告されたとき、マイクロコントローラのメモリにおいてコア速度が更新され、コア再構成ループにおいて劣化が考慮される。現在の性能が劣化により目標性能を下回ったとき、コアを更に接続（ｏｎｌｉｎｅ）する。
【００４２】
表１の実施形態に示すように、コア割り当てセクションとコア再割り当てセクションの両方が同じ関数Ｔ−ａｗａｒｅ＿ｃｏｒｅｓ、つまり接続（ｏｎｌｉｎｅ）すべき予備コアを選択する温度アウェアな関数を用いる。関数Ｔ−ａｗａｒｅ＿ｃｏｒｅｓは、多数コア信頼性を最大化すべく利用可能な予備のセットから最適な予備コアを選択する欲張り最適化アプローチを用いる。表１の実施形態においては、最適コアは、接続（ｏｎｌｉｎｅ）された隣接コアがもっとも少ないコアである。故障コアも予備コアと類似した放熱特性を有するので、候補コアの隣接コアを確認するとき故障コアも考慮されることに注意されたい。また、歩留まりに関する問題により故障したコアも（存在するのであれば）、候補コアの隣接コアとして考慮されるので、動作コアの信頼性を増大させる最適化機会が拡大されることにも注意されたい。
【００４３】
二次的な考慮事項として、性能の視点からコア間通信を考察することができる。したがって、処理間での通信が存在する場合であれば、接続（ｏｎｌｉｎｅ）すべきコアを選択した後において、オプションとしての二次的な最適化のパスをアクティベートする。いくつかの実施例においては、オペレーティングシステム（ＯＳ）がこのデータをマイクロコントローラに供給してよい。この最適化パス（つまり、表１における関数Ｍｉｎｉｍｉｚｅ＿ｃｏｍｍｕｎｉｃａｔｉｏｎ）は、積極的な最適化アプローチを用いて互いに近接したコアに対して相互通信する処理をそれぞれ割り当てることにより性能を向上させることができる。接続（ｏｎｌｉｎｅ）されたコアから開始して、このパスは、次の相互通信処理を最近接したコアに割り当てる。所望のコアの全てが接続（ｏｎｌｉｎｅ）されるまでこの割り当てを反復してよい。他の実施形態においては、温度アウェアアルゴリズムをディセーブルし、緊密に相互通信する処理、たとえば緊密に関連する処理に対して互いに近接した複数のコアを割り当ててよい。
【００４４】
つまり、本発明の実施形態に係る割り当て／再割り当てメカニズムは、ＯＳ／アプリケーション制御を介して有効化及び無効化することができる。たとえば、計算量に対する通信量の比が高ければ、これらのメカニズムを無効化して信頼性を二次的な目標とした上で、互いに近接したコアを割り当てることができるようにして性能を高めてよい。しかし、他の実施形態においては、多数コアプロセッサの寿命のうちの消耗期の大半においてはコア故障率が高まるであろうので、この期においてはメカニズムをイネーブルしてよい。
【００４５】
多くの異なるシステム類型において実施形態を実施してよい。図６は、本発明の実施形態に係るマルチプロセッサシステムのブロック図である。図６に示すように、マルチプロセッサシステムは、ポイントツーポイントのインターコネクトシステムであり、ポイントツーポイントインターコネクト５５０を介して結合された第一プロセッサ５７０及び第二プロセッサ５８０を含む。しかし、他の実施形態においては、マルチプロセッサシステムは、別のバスアーキテクチャのものであってよく、たとえば、マルチドロップバスもしくは別のその種のインプリメンテーションであってよい。図６に示すように、プロセッサ５７０及び５８０のそれぞれは、第一及び第二のプロセッサコア（つまり、プロセッサコア５７４ａ及び５７４ｂ、並びにプロセッサコア５８４ａ及び５８４ｂ）を含む多数コアプロセッサであってよいが、特定の実施形態においてはその他のコア、可能性としてはより多くのその他のコアが存在してよい。プロセッサ５７０及び５８０は、更に、多数コアプロセッサのコアの割り当てを行うアロケータとして機能するコントローラ５７５及び５８５をそれぞれ含んでよい。多様な実施例において、コントローラ５７５及び５８５は、割り当てプログラムを含む組み込みＲＯＭに従ってプログラムされたマイクロコントローラであってよく、温度アウェアアルゴリズムに基づいてコアを複数のグループへと割り当ててよいが、その他の実施例も可能である。図６の実施形態においては詳細に示さないが、コントローラ５７５及び５８５は、プロセッサ５７０及び５８０に存在するコアと、それら各コアのステータス（たとえば、アクティブ、予備、もしくは故障）とを識別するビットマップもしくはその他のマップ情報を記憶するメモリを含んでよい。
【００４６】
引き続き図６を参照して、第一プロセッサ５７０は、メモリコントローラハブ（ＭＣＨ）５７２と、ポイントツーポイント（Ｐ−Ｐ）インターフェース５７６及び５７８とを更に含む。同様に、第二プロセッサ５８０は、ＭＣＨ５８２と、Ｐ−Ｐインターフェース５８６及び５８８とを含む。図６に示すように、ＭＣＨ５７２及び５８２は、プロセッサをメモリ、つまりメモリ５３２及びメモリ５３４へとそれぞれ接続し、これらメモリは、各プロセッサにローカルに取り付けられたメインメモリの一部であってよい。いくつかの実施例においては、グローバルメモリの少なくともいくらかの容量をプロセッサ５７０及び５８０の内部に実装してよい。
【００４７】
いくつかの実施形態においては、マルチプロセッサシステムのオペレーティングシステム（ＯＳ）は、第一プロセッサ５７０及び第二プロセッサ５８０のうちの一以上の上で動作してよい。ＯＳは、これらのプロセッサ及びそれらのコア上での処理をスケジューリングするスケジューラを含んでよい。いくつかの実施例においては、コントローラ５７５及び５８５は、アクティブ、予備、及び故障したコアの識別を含むマップ情報を提供してよい。スケジューラは、この情報を用い、第一プロセッサ５７０及び第二プロセッサ５８０の一方もしくは他方へと、あるいはこれらの一方もしくは他方から、又はこれらが有するコア間において処理を往来させてよい。更に、スケジューラは割り当てたコアに基づいてその他の制御機能を実施してよく、たとえば相互通信する処理間の距離を縮小するコア割り当てを実施してよい。他の実施形態においては、コントローラ５７５及び５８５により、又はプロセッサ５７０及び５８０におけるその他の位置において、このようなスケジューリングを実施してよい。
【００４８】
第一プロセッサ５７０及び第二プロセッサ５８０は、それぞれＰ−Ｐインターコネクト５５２及び５５４を介してチップセット５９０に接続されてよい。図６に示すように、チップセット５９０は、Ｐ−Ｐインターフェース５９４及び５９８を含む。チップセット５９０は、チップセット５９０を高性能グラフィックスエンジン５３８に接続するインターフェース５９２を更に含む。一実施形態においては、アドバンスド・グラフィックス・ポート（ＡＧＰ）バス５３９を用いてグラフィックスエンジン５３８をチップセット５９０に接続してよい。ＡＧＰバス５３９は、カリフォルニア州サンタクララ所在のインテルコーポレーションにより１９９８年５月４日に発行されたアクセラレーテッド・グラフィックス・ポート・インターフェース仕様書改訂版２．０に準拠したものであってよい。または、ポイントツーポイントインターコネクト５３９によりこれらのコンポーネントを接続してよい。
【００４９】
次に、チップセット５９０は、インターフェース５９６を介して第一バス５１６に接続されてよい。一実施形態においては、第一バス５１６は、１９９５年６月付のＰＣＩローカルバス仕様書実機バージョン改訂版２．１に規定される周辺コンポーネントインターコネクト（ＰＣＩ）バスであってよく、又はＰＣＩエクスプレスバス等のバス、もしくはその他の第三世代入出力（Ｉ／Ｏ）インターコネクトバスであってよいが、本発明の範囲はこれらに限定されない。
【００５０】
図６に示すように、多様なＩ／Ｏデバイス５１４を第一バス５１６に接続してよく、第一バス５１６を第二バス５２０に接続するバスブリッジ５１８も第一バス５１６に接続してよい。一実施形態においては、第二バス５２０はローピンカウント（ＬＰＣ）バスであってよい。一実施形態においては、たとえば、キーボード／マウス５２２、通信装置５２６、及びコード５３０を含むデータストレージユニット５２８等の多様なデバイスを第二バス５２０に接続してよい。また、オーディオＩ／Ｏ５２４を第二バス５２０に接続してよい。
【００５１】
実施形態をコードにより実施して格納媒体に格納してよく、当該格納媒体は、命令の実行をシステムにプログラムすべく用いることが可能な当該命令を格納している。格納媒体は、フロッピーディスク、光ディスク、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、書き換え可能コンパクトディスク（ＣＤ−ＲＷ）、光磁気ディスク等のあらゆる種類のディスク、読み出し専用メモリ（ＲＯＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）及びスタティックランダムアクセスメモリ（ＳＲＡＭ）等のランダムアクセスメモリ（ＲＡＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラム可能読み出し専用メモリ（ＥＥＰＲＯＭ）等の半導体デバイス、磁気カードもしくは光カード、又は電子形態の命令の格納に適したその他あらゆる種類の媒体であってよいが、これらに限定されない。
【００５２】
限られた数の実施形態に関して本発明を記載したが、当業者であれば、これらについて多数の変更及び多様化を認識するであろう。本発明の真の趣旨及び範囲に存在するこれら全ての変更及び多様化を添付の請求項は範囲に含むことが意図される。
【図１】
2009524863.tif 000004
【図２】
2009524863.tif 000005
【図３】
2009524863.tif 000006
【図４】
2009524863.tif 000007
【図５】
2009524863.tif 000008
【図６】
2009524863.tif 000009
【国際調査報告】
2009524863.tif 000010
2009524863.tif 000011
2009524863.tif 000012
2009524863.tif 000013
2009524863.tif 000014
2009524863.tif 000015
2009524863.tif 000016
2009524863.tif 000017