(57)【特許請求の範囲】
【請求項１】
プロセッサリソースを共用するように適合されたマルチコアプロセッサであって、
第１のプロセッサコア、第２のプロセッサコア、第３のプロセッサコア、および第４のプロセッサコアであって、第１から第４のプロセッサコアは複数の層を含む３次元配列として構成され、第１のプロセッサコアを第１層とし、第２のプロセッサコアを第２層として第１のプロセッサコアの上に、第３のプロセッサコアを第３層として第２のプロセッサコアの上に、第４のプロセッサコアを第４層として第３のプロセッサコアの上に構成されたプロセッサコアを含む複数のプロセッサコアと、
前記複数のプロセッサコアのうちの２つ以上に選択的に結合される共用レジスタファイルと
を備え、前記第１のプロセッサコアは前記第２のプロセッサコアよりも大きいダイ面積を有し、前記第２のプロセッサコアは前記第１のプロセッサコアの層の上に構成されると共に前記第３のプロセッサコアよりも大きいダイ面積を有し、前記第３のプロセッサコアは前記第２のプロセッサコアの層の上に構成されると共に前記第４のプロセッサコアよりも大きいダイ面積を有し、前記第４のプロセッサコアは前記第３のプロセッサコアの層の上に構成される、マルチコアプロセッサ。
【請求項２】
前記共用レジスタファイルが、前記複数のプロセッサコアのうちの１つまたは複数によって実行されているタスクのプロセス状態を記憶するように構成されている請求項１に記載のマルチコアプロセッサ。
【請求項３】
前記複数のプロセッサコアが複数のヘテロジニアス・プロセッサ・コアを備え、前記ヘテロジニアス・プロセッサ・コアのうち少なくとも２つは、複雑さ、電力消費、クロック周波数、電力状態、電圧レベルまたは用途（汎用用途若しくは特定用途）のうち少なくとも１つが異なるものである、請求項１に記載のマルチコアプロセッサ。
【請求項４】
前記複数の層がそれぞれヘテロジニアス・プロセッサ・コアを少なくとも１つ以上備える請求項３に記載のマルチコアプロセッサ。
【請求項５】
前記複数のプロセッサコアがそれぞれ関連付けられたキャッシュを備える請求項１に記載のマルチコアプロセッサ。
【請求項６】
前記複数のプロセッサコアのうちの２つ以上に結合された共用キャッシュ
をさらに備える請求項１に記載のマルチコアプロセッサ。
【請求項７】
プロセッサリソースを共用するように適合されたマルチコアプロセッサであって、
単一の集積回路上で複数の層を構成し、各層のプロセッサコアがその下の層のプロセッサコアよりも小さい面積を有する複数のプロセッサコアと、
複数の共用レジスタファイルと、
前記複数のプロセッサコアのうちの２つ以上を前記複数の共用レジスタファイルのうちの対応する１つに選択的に結合するように適合されたマルチプレクサと
を備えるマルチコアプロセッサ。
【請求項８】
前記複数のプロセッサコアが複数のヘテロジニアス・プロセッサ・コアを備え、前記ヘテロジニアス・プロセッサ・コアのうち少なくとも２つは、複雑さ、電力消費、クロック周波数、電力状態、電圧レベルまたは用途（汎用用途若しくは特定用途）のうち少なくとも１つが異なるものである、請求項７に記載のマルチコアプロセッサ。
【請求項９】
複数の共用キャッシュと、
前記複数の共用キャッシュのうちの２つ以上を前記複数のプロセッサコアのうちの対応する１つに選択的に結合するように適合されたマルチプレクサと
をさらに備える請求項７に記載のマルチコアプロセッサ。
【請求項１０】
前記複数のヘテロジニアス・プロセッサ・コアのうちの前記２つ以上が異なる特定用途向けプロセッサコアを備える請求項８に記載のマルチコアプロセッサ。
【請求項１１】
前記複数のヘテロジニアス・プロセッサ・コアのうちの２つ以上が、異なるダイ面積、異なるスループット、および／または異なる電力消費特性を有するプロセッサコアを備える請求項８に記載のマルチコアプロセッサ。
【請求項１２】
前記複数の層がそれぞれヘテロジニアス・プロセッサ・コアを少なくとも１つ備える請求項８に記載のマルチコアプロセッサ。
【請求項１３】
前記複数のプロセッサコアがそれぞれ関連付けられたキャッシュを備える請求項７に記載のマルチコアプロセッサ。
【請求項１４】
前記複数のプロセッサコアのうちの２つ以上に結合された共用キャッシュ
をさらに備える請求項７に記載のマルチコアプロセッサ。
【請求項１５】
プロセッサリソースを共用するように適合されたヘテロジニアス・マルチコア・プロセッサであって、
それぞれが複数のヘテロジニアス・プロセッサ・コアのうちの１つまたは複数を備える複数の層を単一の集積回路上に備える３次元配列として構成された前記複数のヘテロジニアス・プロセッサ・コアであって、各層のヘテロジニアス・プロセッサ・コアはその下の層のヘテロジニアス・プロセッサ・コアよりも大きな面積を有さず、少なくとも１つの層のヘテロジニアス・プロセッサ・コアはその下の層のヘテロジニアス・プロセッサ・コアよりも小さな面積を有し、前記ヘテロジニアス・プロセッサ・コアのうち少なくとも２つは、複雑さ、電力消費、クロック周波数、電力状態、電圧レベルまたは用途（汎用用途若しくは特定用途）のうち少なくとも１つが異なるものであるヘテロジニアス・プロセッサ・コアと、
前記複数のヘテロジニアス・プロセッサ・コアのうちの２つ以上に結合された共用レジスタファイルであって、前記複数のプロセッサコアは前記３次元配列の異なる層に構成されたものである共用レジスタファイルと、
前記複数のヘテロジニアス・プロセッサ・コアのうちの２つ以上に結合された共用キャッシュと
を備えるヘテロジニアス・マルチコア・プロセッサ。
【請求項１６】
前記共用キャッシュがＬ２キャッシュを備え、前記複数のヘテロジニアス・プロセッサ・コアがそれぞれ関連付けられたＬ１キャッシュを備える請求項１５に記載のヘテロジニアス・マルチコア・プロセッサ。
【請求項１７】
前記複数のＬ１キャッシュがライトスルーキャッシュを備える請求項１６に記載のヘテロジニアス・マルチコア・プロセッサ。
【請求項１８】
前記複数のＬ１キャッシュが、前記複数のＬ１キャッシュ内の１つまたは複数のキャッシュブロックを無効にするように構成されたスヌープ・キャッシュ・コヒーレンス・プロトコルをさらに備える請求項１７に記載のヘテロジニアス・マルチコア・プロセッサ。
【請求項１９】
前記共用キャッシュが、前記共用キャッシュの１つまたは複数の行を電源オフにすることによってサイズを低減し、前記共用キャッシュの１つまたは複数の列を電源オフにすることによってアソシアティビティを低減するように構成されている請求項１６に記載のヘテロジニアス・マルチコア・プロセッサ。
【請求項２０】
前記共用レジスタファイルが、前記共用レジスタファイル内の１つまたは複数のレジスタを電源オフ、電源オンにするように構成されている請求項１６に記載のヘテロジニアス・マルチコア・プロセッサ。
【請求項２１】
各プロセッサコアにおいて、共用レジスタファイル中のアクティブなレジスタを指定するレジスタ名前変更表を更に含む、請求項１に記載のマルチコアプロセッサ。
【請求項２２】
各プロセッサコアにおいて、共用レジスタファイル中のアクティブなレジスタを指定するレジスタ名前変更表を更に含む、請求項７に記載のマルチコアプロセッサ。
【請求項２３】
各ヘテロジニアス・プロセッサ・コアにおいて、共用レジスタファイル中のアクティブなレジスタを指定するレジスタ名前変更表を更に含む、請求項１５に記載のヘテロジニアス・マルチコア・プロセッサ。
【発明の詳細な説明】
【背景技術】
【０００１】
特に指示しない限り、本項に記載される資料は本出願における特許請求の範囲の先行技術ではなく、本項に含まれることにより先行技術であると認められるものではない。
【０００２】
ヘテロジニアス（ｈｅｔｅｒｏｇｅｎｅｏｕｓ）・マルチコア・プロセッサとは、異なるプロセッサコアを有するマルチコアプロセッサを指し得る。これらの異なるプロセッサコアの間で作業負荷を分割することにより、ヘテロジニアス・マルチコア・プロセッサは、重複する汎用プロセッサコアを有するホモジニアス（ｈｏｍｏｇｅｎｅｏｕｓ）・マルチコア・プロセッサに優る性能の増大および／またはエネルギー効率の改善を実現することができる。
【０００３】
ヘテロジニアス・マルチコア・プロセッサ内の複数のプロセッサコアを利用してあるタスクが実行されてもよい。第１のプロセッサコアがその動作を完了し、タスクの実行を第２のプロセッサコアへ移転するとき、第２のプロセッサコアは、その現在のタスクから移転されるタスクへ移行するためのコンテキストスイッチを行うことができる。コンテキストスイッチを完了するために、第１のプロセッサコアは、移転されるタスクのプロセス状態を第２のプロセッサコアへコピーし得る。第２のプロセッサコアがその動作を開始するとき、第２のプロセッサコアは、移転されるタスクの実行を再開するためにそのプロセス状態を利用し得る。第１のプロセッサコアから第２のプロセッサコアへタスクのプロセス状態をコピーすることにより、大きなオーバーヘッドが生じる可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示では、一般に、プロセッサリソースを共用するように適合されたいくつかのマルチコアプロセッサを説明する。ある例示的マルチコアプロセッサは、複数のプロセッサコアを含むように構成され得る。また、例示的マルチコアプロセッサは、複数のプロセッサコアのうちの２つ以上に選択的に結合される共用レジスタファイルを含むようにも構成され得る。
【０００５】
本開示では、一般に、プロセッサリソースを共用するように適合されたいくつかのマルチコアプロセッサを説明する。ある例示的な複数コアプロセッサは、複数のプロセッサコアと複数の共用レジスタファイルとを含むように構成され得る。また、例示的マルチコアプロセッサは、複数のプロセッサコアのうちの２つ以上を複数の共用レジスタファイルのうちの対応する１つに選択的に結合するように適合されたマルチプレクサを含むようにも構成され得る。
【０００６】
本開示では、一般に、プロセッサリソースを共用するように適合されたいくつかのヘテロジニアス・マルチコア・プロセッサを説明する。ある例示的ヘテロジニアス・マルチコア・プロセッサは、複数のヘテロジニアス・プロセッサ・コアを含むように構成され得る。複数のヘテロジニアス・プロセッサ・コアは、３次元配列として構成され得る。３次元配列は、複数の層を含むように構成され得る。複数の層はそれぞれ、複数のヘテロジニアス・プロセッサ・コアのうちの１つまたは複数を含むように構成され得る。また、例示的ヘテロジニアス・プロセッサ・コアは、複数のヘテロジニアス・プロセッサ・コアのうちの２つ以上に結合された共用レジスタファイルと、複数のヘテロジニアス・プロセッサ・コアのうちの２つ以上に結合された共用キャッシュとを含むようにも構成され得る。
【０００７】
以上の概要は例示にすぎず、いかなる点においても限定のためのものではない。図面および以下の詳細な説明を参照すれば、前述の例示的態様、実施形態、および特徴に加えて、さらに別の態様、実施形態、および特徴も明らかになるであろう。
【図面の簡単な説明】
【０００８】
本開示の上記その他の特徴は、以下の説明および添付の特許請求の範囲を、添付の図面と併せて読めばより十分に明らかになるであろう。これらの図面は本開示によるいくつかの実施形態を示すものにすぎず、したがって、本開示の範囲を限定するものとみなすべきでないことを踏まえ、添付の図面を使用して、本開示をさらに具体的に詳細に説明する。
【０００９】
【図１】マルチコアプロセッサのための動作環境を示す機能ブロック図である。
【図２】複数のプロセッサコアを有するマルチコアプロセッサを示すブロック図である。
【図３】共用レジスタファイルを有するマルチコアプロセッサを示すブロック図である。
【図４】複数の共用レジスタファイルを有するマルチコアプロセッサを示すブロック図である。
【図５】Ｌ１キャッシュと共用Ｌ２キャッシュとを有するマルチコアプロセッサを示すブロック図である。
【図６】複数の共用キャッシュを有するマルチコアプロセッサを示すブロック図である。
【図７】共用レジスタと共用キャッシュとを有するマルチコアプロセッサを生成するためのプロセスを示す流れ図である。
【図８】複数の共用レジスタと複数の共用キャッシュとを有するマルチコアプロセッサを生成するためのプロセスを示す流れ図である。
【図９】すべて本明細書で提示される少なくともいくつかの実施形態に従って配置された例示的コンピューティングシステムを示すブロック図である。
【発明を実施するための形態】
【００１０】
以下の詳細な説明では、本開示の一部を形成する添付の図面を参照する。図面では、文脈上他の意味に解される場合を除き、類似の記号は、通常、類似の構成要素を識別する。詳細な説明、図面、および特許請求の範囲に記載される例示的実施形態は、限定を意図するものではない。本開示で提示する主題の趣旨または範囲を逸脱することなく、他の実施形態が利用されてもよく、他の変更が加えられてもよい。本明細書において概説し、図に例示する本開示の態様は、多種多様な構成として配置し、置換し、結合し、分離し、設計することができ、それらすべてが本開示において明確に企図されていることが容易に理解されるであろう。
【００１１】
本開示は一般に、とりわけ、マルチコアプロセッサにおける共用レジスタファイルおよび／または共用キャッシュのためのアーキテクチャを対象とするものである。マルチコアプロセッサは、ホモジニアス・プロセッサ・コアまたはヘテロジニアス・プロセッサ・コアを含み得る。１つまたは複数の共用レジスタファイルと１つまたは複数のキャッシュとが、３次元集積回路の各層が異なるプロセッサコアを含むことのできる３次元集積回路へと統合され得る。ある実施形態では、１つのレジスタファイルおよび／または１つのキャッシュがヘテロジニアス・プロセッサ・コア間で共用され得る。別の実施形態では、複数のレジスタファイルおよび／または複数のキャッシュが、ヘテロジニアス・プロセッサ・コア間で多重化され、共用され得る。共用レジスタファイルおよび／または共用キャッシュは、プロセッサコア間での共用リソースとして働くように適合させることができる。
【００１２】
次に図１を見ると、機能ブロック図１００に、本明細書で提示される少なくともいくつかの実施形態に従って配置されたマルチコアプロセッサ１１０のための動作環境が示されている。マルチコアプロセッサ１１０は、第１のプロセッサコア１１５Ａ、第２のプロセッサコア１１５Ｂ、第３のプロセッサコア１１５Ｃ、第４のプロセッサコア１１５Ｄ、第Ｎのプロセッサコア１１５Ｅといった複数の内部プロセッサコアを組み込むことができる。これらを総称して、すなわち全体として、プロセッサコア１１５ともいう。プロセッサコア１１５は、一般に、並列処理、並列タスク、並列スレッド、別々の順次プロセス、またはこれらの任意の組み合わせをサポートするように適合させることができる。
【００１３】
マルチコアプロセッサ１１０は、ホモジニアス・マルチコア・プロセッサまたはヘテロジニアス・マルチコア・プロセッサとすることができる。ヘテロジニアス・マルチコア・プロセッサでは、プロセッサコア１１５のうちの２つ以上が１つまたは複数の点において異なり得る。ある実施態様では、プロセッサコア１１５のうちの２つ以上が異なるサイズおよび／または複雑さを有し得る。例えば、第１のプロセッサコア１１５Ａは、第２のプロセッサコア１１５Ｂよりも大きいダイ面積、高いスループット、および高い電力消費を有し得る。別の実施態様では、プロセッサコア１１５のうちの２つ以上を異なる種類のプロセッサコアとすることができる。例えば、第３のプロセッサコア１１５Ｃは、中央処理装置といった汎用プロセッサコアとすることができ、第４のプロセッサコア１１５Ｄは、グラフィックス・プロセッシング・ユニットといった特定用途向けプロセッサコアとすることができる。
【００１４】
さらに別の実施態様では、プロセッサコア１１５のうちの２つ以上が、異なるサイズを有していてよく、異なる種類であってよい。また、様々なプロセッサコア１１５は、異なるクロック周波数や異なる電圧レベルといった異なる電力状態で動作してもよい。ある実施形態では、以下でより詳細に説明するように、プロセッサコア１１５は、例えば３次元集積回路内のような３次元配列として構成され得る。マルチコアプロセッサ１１０の例には、以下でより詳細に説明するように、マルチコアプロセッサ２００、３００、４００、５００、および／または６００が含まれ得る。
【００１５】
マルチコアプロセッサ１１０は、プロセッサコア１１５によって共用される共用リソース１２５をさらに含んでいてよい。ある実施形態では、共用リソース１２５は、共用レジスタファイルおよび／または共用キャッシュとすることができる。別の実施形態では、共用リソース１２５は、複数の共用レジスタファイルおよび／または複数の共用キャッシュとすることができる。共用リソース１２５の様々な実施態様を以下でより詳細に説明する。
【００１６】
メモリ１２０はマルチコアプロセッサ１１０によるアクセスのために適合され得る。マルチコアプロセッサ１１０は、メモリ１２０から読み取り、かつ／またはメモリ１２０に書き込むように構成することができる。そのような読取り動作および書込み動作は、マルチコアプロセッサ１１０の複数のコアの動作と関連付けられる命令とデータの両方に関連し得る。一般に、マルチコアプロセッサ１１０内の各プロセッサコアは、メモリ１２０に個々にアクセスするように構成され得る。メモリ１２０は、ランダム・アクセス・メモリ（「ＲＡＭ」）、スタティックＲＡＭ（「ＳＲＡＭ」）、ダイナミックＲＡＭ（「ＤＲＡＭ」）、シンクロナスダイナミックＲＡＭ（「ＳＤＲＡＭ」）、または他の任意の種類の揮発性もしくは不揮発性メモリとすることができる。
【００１７】
マルチコアプロセッサ１１０の複数のプロセッサコア１１５上の動作と関連付けられる命令およびデータは、１台または複数の記憶媒体機器１３０に記憶されてよく、記憶媒体機器１３０は、本明細書では、コンピュータ可読媒体とも総称され得る。記憶媒体機器１３０は、情報の不揮発性記憶をサポートし得る。記憶媒体機器１３０は、マルチコアプロセッサ１１０内の複数のプロセッサコアによるアクセスのために適合され得る。記憶媒体機器１３０は、マルチコアプロセッサ１１０内の複数のプロセッサコア１１５上で実行するためのソフトウェア１３２を記憶するように構成することができる。
【００１８】
例を挙げると、それだけに限らないが、コンピュータ可読媒体には、コンピュータ記憶媒体と通信媒体とが含まれ得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータといった情報の記憶のための任意の方法または技術において実施される揮発性、不揮発性、取り外し可能、および取り外し不能の媒体が含まれ得る。コンピュータ記憶媒体には、それだけに限らないが、ＲＡＭ、読取り専用メモリ（「ＲＯＭ」）、消去プログラム可能読取り専用メモリ（「ＥＰＲＯＭ」）、電気的ＥＰＲＯＭ（「ＥＥＰＲＯＭ」）、フラッシュメモリ他の固体メモリ技術、コンパクトディスクＲＯＭ（「ＣＤ−ＲＯＭ」）、デジタル多用途ディスク（「ＤＶＤ」）、高精細度ＤＶＤ（「ＨＤ−ＤＶＤ」）、ブルーレイ他の光記憶、磁気カセット、磁気テープ、ハード・ディスク・ドライブ（「ＨＤＤ」）などの磁気ディスク記憶他の磁気記憶装置、または所望の情報を記憶するのに使用することができ、マルチコアプロセッサ１１０からアクセスすることができる他の任意の媒体が含まれ得る。
【００１９】
外部クロック（「ＣＬＫ」）１４０はマルチコアプロセッサ１１０にクロック信号を提供することができる。ＣＬＫ１４０は、水晶発振器または他の任意のクロックもしくは発振源（不図示）を含んでいてよい。ＣＬＫ１４０は、クロックドライバ回路（不図示）を含んでいてよい。ＣＬＫ１４０と関連付けられたクロック信号は、マルチコアプロセッサ１１０内の様々な回路の時間を計り、同期をとるのに使用され得る。またマルチコアプロセッサ１１０は、リアル・タイム・クロック（「ＲＴＣ」）１４５にもインターフェースし得る。ＲＴＣ１４５は、時刻、曜日、暦日付、年などといった時間を維持するためのものとすることができる。
【００２０】
ネットワークインターフェース１５０は、システムをネットワーク１５５に論理的に接続するように適合され得る。無線インターフェース１６０は、アンテナ１６５を使用して、無線ネットワークまたは移動通信システムとの間で無線データパケットを送信し、かつ／または受信するように構成され得る。また、１つまたは複数のインターフェースバス１７０もマルチコアプロセッサ１１０にインターフェースするように適合され得る。インターフェースバスの例には、産業標準アーキテクチャ（「ＩＳＡ」）バス、周辺装置相互接続（「ＰＣＩ」）バス、ＰＣＩ−Ｅｘｐｒｅｓｓバス、アクセラレーテッド・グラフィックス・ポート（「ＡＧＰ」）バス、ユニバーサル・シリアル・バス（「ＵＳＢ」））、アドバンスド・テクノロジ・アタッチメント（「ＡＴＡ」）バス、シリアルＡＴＡ（「ＳＡＴＡ」）バス、小型コンピュータ・システム・インターフェース（「ＳＣＳＩ」）、ならびにコンピュータおよび埋め込みプロセッサシステムにおいて使用される他のそのようなバスおよびインターフェースが含まれ得る。アナログインターフェース１８０がマルチコアプロセッサ１１０に結合されていてもよい。アナログインターフェース１８０は、デジタル／アナログ変換器（「ＤＡＣ」）、アナログ／デジタル変換器（「ＡＤＣ」）、またはその両方を含んでいてよい。アナログインターフェース１８０は、ビデオ信号、オーディオ信号、赤外線信号、無線周波数（「ＲＦ」）信号、センサ信号、または他の任意の種類のアナログ信号に使用され得る。
【００２１】
また、マルチコアプロセッサ１１０には１つまたは複数の人間・機械インターフェース１９０が結合されていてもよい。人間・機械インターフェース１９０には、ビデオディスプレイ、キーボード、マウス、ライトペン、プロジェクタ、音声認識、スイッチ、ボタン、表示器、または人間から入力を受け取り、もしくは人間に出力を提供するための他の任意の機構が含まれ得る。
【００２２】
図１のブロック図１００は簡略化されており、マルチコアプロセッサ１１０に結合されたものとして図示されている構成要素のうちの１つまたは複数がマルチコアプロセッサ１１０に直接結合されていなくもよいことを理解すべきである。特に、１つまたは複数の構成要素をマルチコアプロセッサ１１０に結合するのに様々な種類の中間回路が利用されてもよい。
【００２３】
次に図２を見ると、ブロック図に、本明細書で提示される少なくともいくつかの実施形態に従って配置された、複数のプロセッサコア２１５と複数のレジスタファイル２０５とを有するマルチコアプロセッサ２００が示されている。例示的マルチコアプロセッサ２００は、第１のプロセッサコア２１５Ａ、第２のプロセッサコア２１５Ｂ、第３のプロセッサコア２１５Ｃ、および第４のプロセッサコア２１５Ｄを含む。プロセッサコア２１５Ａ〜２１５Ｄを総称して、すなわち全体として、プロセッサコア２１５ともいう。図２には４つのプロセッサコアが示されているが、マルチコアプロセッサ２００は、任意の適切な数のプロセッサコアを含み得ることを理解すべきである。図２に示すように、プロセッサコア２１５は、マルチコアプロセッサ２００上に水平配列として構成することができる。すなわち、プロセッサコア２１５は、マルチコアプロセッサ２００上の単一層上に構成することができる。
【００２４】
第１のプロセッサコア２１５Ａは、第２のプロセッサコア２１５Ｂよりも大きいダイ面積、高いスループット、および／または高い電力消費を有していてよい。第２のプロセッサコア２１５Ｂは、第３のプロセッサコア２１５Ｃよりも大きいダイ面積、高いスループット、および／または高い電力消費を有していてよい。第３のプロセッサコア２１５Ｃは、第４のプロセッサコア２１５Ｄよりも大きいダイ面積、高いスループット、および／または高い電力消費を有していてよい。別の実施形態では、プロセッサコア２１５のうちの２つ以上を同サイズとすることができる。さらに別の実施形態では、プロセッサコア２１５のうちの２つ以上を異なる種類（例えば、汎用プロセッサと専用プロセッサなど）とすることができる。
【００２５】
第１のプロセッサコア２１５Ａは、第１の関連付けられたレジスタファイル２０５Ａおよび／または第１の関連付けられたＬ１キャッシュ２１０Ａを含み得る。第２のプロセッサコア２１５Ｂは、第２の関連付けられたレジスタファイル２０５Ｂおよび／または第２の関連付けられたＬ１キャッシュ２１０Ｂを含み得る。第３のプロセッサコア２１５Ｃは、第３の関連付けられたレジスタファイル２０５Ｃおよび／または第３の関連付けられたＬ１キャッシュ２１０Ｃを含み得る。第４のプロセッサコア２１５Ｄは、第４の関連付けられたレジスタファイル２０５Ｄおよび／または第４の関連付けられたＬ１キャッシュ２１０Ｄを含み得る。またプロセッサコア２１５は、共用Ｌ２キャッシュ２２５に結合することもできる。レジスタファイル２０５Ａ〜２０５Ｄを総称して、すなわち全体として、レジスタファイル２０５ともいう。Ｌ１キャッシュ２１０Ａ〜２１０Ｄを総称して、すなわち全体として、Ｌ１キャッシュ２１０ともいう。
【００２６】
マルチコアプロセッサ２００内のプロセッサコア２１５のうちの２つ以上を利用してあるタスクが実行されてもよい。例えば、第１のプロセッサコア２１５Ａは、あるタスクについての様々な動作の実行を完了し、そのタスクの実行を第２のプロセッサコア２１５Ｂへ移転し得る。第２のプロセッサコア２１５Ｂは、現在のタスクから移転されるタスクへ移行するためのコンテキストスイッチを行うことができる。特に、第１のプロセッサコア２１５Ａは、第１のレジスタファイル２０５Ａから第２のレジスタファイル２０５Ｂへ移転されるタスクのプロセス状態２２０をコピーするように構成され得る。本明細書で使用する場合、タスクのプロセス状態とは、タスクの実行時の所与の時点における関連した変数（例えば、レジスタ値、プログラムカウンタ値など）の状態を指し得る。タスクのプロセス状態を保存し、後でそのプロセス状態によってタスクを再開することにより、タスクの前の実行の知識なしでタスクを正しく続行することができる。第２のプロセッサコア２１５Ｂが移転されたタスクに対する動作を開始するときに、第２のプロセッサコア２１５Ｂは、移転されたタスクの実行を再開するためにプロセス状態２２０を利用するように適合され得る。しかし、第１のレジスタファイル２０５Ａから第２のレジスタファイル２０５Ｂへプロセス状態２２０をコピーするには大きなオーバーヘッドが必要となり得る。
【００２７】
第１のレジスタファイル２０５Ａから第２のレジスタファイル２０５Ｂへプロセス状態２２０をコピーすることによって生じるオーバーヘッドに対処する一手法は、個々のレジスタファイル２０５を共用レジスタファイル（プロセッサコア２１５によって共用されるレジスタファイルなど）で置き換えることである。しかし、プロセッサコアが水平配列で構成されているとき、共用レジスタファイルは準最適となる場合がある。というのは、マルチコアプロセッサ２００上の空間限界により、共用レジスタファイルとプロセッサコア２１５のうちの少なくともいくつかとの距離が増大し、そのため、共用レジスタファイルの性能および速度が、個々のレジスタファイル２０５の性能および速度より低くなる可能性があるからである。レジスタは通常、非常に高速なメモリアクセスを提供するように設計されるため、レジスタの性能および速度を低減する設計は適さない場合がある。
【００２８】
次に図３を見ると、ブロック図に、本明細書で提示される少なくともいくつかの実施形態に従って配置された共用レジスタファイル３０５を有するマルチコアプロセッサ３００が示されている。例示的マルチコアプロセッサ３００は、第１のプロセッサコア３１５Ａ、第２のプロセッサコア３１５Ｂ、第３のプロセッサコア３１５Ｃ、および第４のプロセッサコア３１５Ｄを含む。プロセッサコア３１５Ａ〜３１５Ｄを総称して、すなわち全体として、プロセッサコア３１５ともいう。図３には４つのプロセッサコアが示されているが、マルチコアプロセッサ３００は、任意の適切な数のプロセッサを含み得ることを理解すべきである。
【００２９】
第１のプロセッサコア３１５Ａは、第２のプロセッサコア３１５Ｂよりも大きいダイ面積、高いスループット、および／または高い電力消費を有していてよい。第２のプロセッサコア３１５Ｂは、第３のプロセッサコア３１５Ｃよりも大きいダイ面積、高いスループット、および／または高い電力消費を有していてよい。第３のプロセッサコア３１５Ｃは、第４のプロセッサコア３１５Ｄよりも大きいダイ面積、高いスループット、および／または高い電力消費を有していてよい。別の実施形態では、プロセッサコア３１５のうちの２つ以上を同サイズとすることができる。さらに別の実施形態では、プロセッサコア３１５のうちの２つ以上を異なる種類とすることができる。
【００３０】
ある実施形態では、プロセッサコア３１５は、３次元集積回路内のような３次元配列として構成され得る。そのような３次元配列では、プロセッサコア３１５は、複数の層を有する垂直配列として構成され得る。例えば、図３に示すように、第１のプロセッサコア３１５Ａは、垂直配列の第１層として構成することができる。第２のプロセッサコア３１５Ｂは、垂直配列の第２層として第１のプロセッサコア３１５Ｂの上に構成することができる。第３のプロセッサコア３１５Ｃは、垂直配列の第３層として第２のプロセッサコア３１５Ｃの上に構成することができる。第４のプロセッサコア３１５Ｄは、垂直配列の第４層として第３のプロセッサコア３１５Ｃの上に構成することができる。
【００３１】
プロセッサコア３１５を垂直配列として構成することにより、さらに別の構成要素を、各プロセッサコア３１５に近接して構成することができる。例えば、共用レジスタファイル３０５がプロセッサコア３１５に近接して構成されてもよい。共用レジスタファイル３０５をプロセッサコア３１５に近接して構成することにより、共用レジスタファイル３０５は、個々のレジスタファイル２０５と同様の性能および速度で動作することができる。したがって、共用レジスタファイル３０５は個々のレジスタファイル２０５に取って代わることができる。
【００３２】
プロセッサコア３１５に対する共用レジスタファイル３０５の具体的な構成および位置決めは、（１）実装プラットフォーム、（２）アプリケーションの特性、および／または（３）主な設計目標という要因のうちの少なくとも１つまたは複数に依存し得る。実装プラットフォームの例には、単一集積回路、集積回路の３次元スタックなどが含まれ得る。アプリケーションの特性の例には、アプリケーションが利用するワーキングセットが大きいかそれとも小さいか、アプリケーションがモバイル向けかそれともデータセンタでの実行に適するか、アプリケーションがリアルタイムで実行されるかそれともベストエフォートで実行されるかなどが含まれ得る。設計目標の例には、高速度実行、低エネルギーまたは低電力利用、効率的熱管理、低コスト実装などが含まれる。第１の例示的実施態様として、高速度実行を主な設計目標とする場合には、共用レジスタファイル３０５（および他のメモリ）を集積回路の３次元スタックの中ほどに配置することができる。共用レジスタファイル３０５を集積回路の３次元スタックの中ほどに位置決めすることにより、共用レジスタファイル３０５と最も遠いプロセッサコアとの距離を最小限に抑えることができる。また、より大きくより高速なプロセッサコアが共用レジスタファイル３０５の近くに配置されてもよい。第２の例示的実施態様として、効率的熱管理を主な設計目標とする場合には、共用レジスタファイル３０５（および他のメモリ）を集積回路の３次元スタックの境界の近くに配置することができる。また、より大きくより高速なプロセッサコアが集積回路の３次元スタックの境界の近くに配置されてもよい。第３の説明例として、低エネルギー消費を主な設計目標とする場合には、よりアクティブなプロセッサコアを共用レジスタファイル３０５（および他のメモリ）の隣に配置することができ、共用レジスタファイル３０５（および他のメモリ）を集積回路の３次元スタックの中ほど近くに配置することができる。第４の説明例として、熱管理を主な設計目標とする単一のプレーナ集積回路では、よりアクティブなプロセッサコア同士を、単一集積回路の境界上に相互に離して配置することができる。第５の説明例として、高速度実行を主な設計目標とする単一のプレーナ集積回路では、統合メモリおよびより高速なプロセッサコアを、単一集積回路の中ほどに、相互に近接して配置することができる。
【００３３】
共用レジスタファイル３０５の実装によって、プロセッサコア３１５を、個々のレジスタファイル２０５間でプロセス状態２２０をコピーせずにタスクのプロセス状態２２０を共用するように適合させることができる。例えば、第１のプロセッサコア３１５Ａがあるタスクと関連付けられた動作の実行を完了し、そのタスクの実行を第２のプロセッサコア３１５Ｂに移転するとき、第２のプロセッサコア３１５Ｂは、現在のタスクから移転されるタスクへ移行するためのコンテキストスイッチを行うことができる。コンテキストスイッチを完了するために、第２のプロセッサコア３１５Ｂは、共用レジスタファイル３０５からタスクのプロセス状態２２０を取り出すように適合され得る。第２のプロセッサコア３１５Ｂは共用レジスタファイル３０５からプロセス状態２２０を取り出すため、個々のレジスタファイル２０５間でプロセス状態２２０をコピーすることによって生じるオーバーヘッドを無くし、または低減することができる。
【００３４】
ある実施形態では、プロセッサコア３１５のうちの２つ以上が、共用レジスタファイル３０５への異なるインターフェースを有していてよい。例えば、順不同実行が頻繁な（ｏｕｔ−ｏｆ−ｏｒｄｅｒ）プロセッサコアは多数のレジスタを利用する可能性があり、順序通り実行する（ｉｎ−ｏｒｄｅｒ）プロセッサコアはより少数のレジスタですむ可能性がある。プロセッサコア３１５の異なるインターフェースに対処するために、マルチコアプロセッサ３００はレジスタ名前変更表（不図示）を利用し得る。特に、レジスタ名前変更表は、コンテキストスイッチが発生するときにアクティブなレジスタを指定し得る。レジスタ名前変更表により、共用レジスタファイル３０５は、プロセッサコア３１５によって利用されないレジスタを電源オフにし（もしくは無効にし）、またはプロセッサコア３１５によって利用されるレジスタを電源オンにする（有効にする）ことができる。レジスタ名前変更は、コンテキストスイッチに際して、実行を開始するプロセッサコアがアクティブなレジスタの場所を認識するように解決され得る。これは、いくつかのやり方で達成することができ、レジスタ名前変更表がプロセッサコア３１５の内部にあるかそれとも外部にあるかに左右され得る。一例示的実施態様では、レジスタ名前変更表をプロセッサコア３１５の外部に構成することができ、より単純なプロセッサコアが、コンテキストスイッチ時に提供されるレジスタ名前変更表に含まれる情報を利用し得る。別の例示的実施態様では、レジスタ名前変更表を各プロセッサコア３１５の内部に構成することができ、よって、各プロセッサコア３１５の専用とすることができる。この場合には、レジスタは、コンテキストスイッチ時に「名前変更されない」ものとする、すなわち、レジスタをレジスタの標準の場所まで折り返すことができ、そのため、名前変更なしでプロセッサコア３１５のうちのいずれかを用いて実行が開始することができる。より単純なプロセッサコアは、共用レジスタファイル３０５内の残りのプロセッサコアを電源オフにする（または無効にする）ことができる。またこれらの動作は、オーバーヘッドを低減するためにコンテキストスイッチの少なくとも一部分と並列に実施されてもよい。
【００３５】
プロセッサコア３１５ごとに単一の共用レジスタファイル３０５が設けられるときには、プロセッサコア３１５のうちの１つをいつでも利用することができる。そのような実施態様は、プロセッサコア３１５が異なるサイズを有するときに適し得る。例えば、異なるサイズのプロセッサコアがあるタスクを実行するときには、タスクを実行することのできる最小のサイズを有するプロセッサコアが利用され得る。大きいプロセッサコアは小さいプロセッサコアより多くのエネルギーを消費し得るため、タスクを実行することのできる最小のプロセッサコアを利用すれば省エネルギーが実現され得る。
【００３６】
共用レジスタファイル３０５は、プロセッサコア３１５が異なるサイズを有するときに適し得るが、共用レジスタファイル３０５は、プロセッサコア３１５が異なる種類を有するときには適さない場合もある。例えば、第１のプロセッサコア３１５Ａが、グラフィックス処理を扱うように構成された特定用途向けプロセッサコアであり、第２のプロセッサコア３１５Ｂが、通信処理を扱うように構成された特定用途向けプロセッサコアである場合がある。共用レジスタファイル３０５は、一度に特定用途向けプロセッサコアのうちの一方を動作させる（すなわち、特定用途向けプロセッサコアの一方がアクティブになる）ように構成され得る。したがって、あるタスクがグラフィックス部分と通信部分とを含む場合には、一度に一方の部分しか扱われ得ない。しかし、両方の特定用途向けプロセッサコアを並列に動作させれば、両方の部分を同時に扱わせることが可能になり、それによって性能利得がもたらされ得る。
【００３７】
次に図４を見ると、ブロック図に、本明細書で提示される少なくともいくつかの実施形態に従って配置された複数の共用レジスタファイル４０５を有するマルチコアプロセッサ４００が示されている。例示的マルチコアプロセッサ４００は、第１のプロセッサコア４１５Ａ、第２のプロセッサコア４１５Ｂ、第３のプロセッサコア４１５Ｃ、および第４のプロセッサコア４１５Ｄを含む。プロセッサコア４１５Ａ〜４１５Ｄを総称して、すなわち全体として、プロセッサコア４１５ともいう。第１のプロセッサコア４１５Ａは、第２のプロセッサコア４１５Ｂよりも大きいダイ面積、高いスループット、および／または高い電力消費を有していてよい。第２のプロセッサコア４１５Ｂは、第３のプロセッサコア４１５Ｃよりも大きいダイ面積、高いスループット、および／または高い電力消費を有していてよい。第３のプロセッサコア４１５Ｃは、第４のプロセッサコア４１５Ｄよりも大きいダイ面積、高いスループット、および／または高い電力消費を有していてよい。別の実施形態では、プロセッサコア４１５のうちの２つ以上を同サイズとすることができる。さらに別の実施形態では、プロセッサコア４１５のうちの２つ以上を異なる種類とすることができる。
【００３８】
例示的マルチコアプロセッサ４００は、第１の共用レジスタファイル４０５Ａ、第２の共用レジスタファイル４０５Ｂ、第３の共用レジスタファイル４０５Ｃ、および第４の共用レジスタファイル４０５Ｄをさらに含む。共用レジスタファイル４０５Ａ〜４０５Ｄを総称して、すなわち全体として、共用レジスタファイル４０５ともいう。共用レジスタファイル４０５は、クロスバースイッチ４１０または他の適切なマルチプレクサを介してプロセッサコア４１５に結合され得る。クロスバースイッチ４１０は、共用レジスタファイル４０５とプロセッサコア４１５とを多重化するように構成され得る。クロスバースイッチ４１０は、各プロセッサコア４１５が、共用レジスタファイル４０５のうちのいずれか１つにアクセスすることを可能にし得る。図４に示すマルチコアプロセッサ４００は同数のレジスタファイル４０５とプロセッサコア４１５とを含むが、共用レジスタファイル４０５の数はプロセッサコア４１５の数と異なっていてもよいことを理解すべきである。
【００３９】
複数の共用レジスタファイル４０５を実施することにより、プロセッサコア４１５のうちの２つ以上を並列に利用することができる。そのような実施態様は、プロセッサコア４１５が異なる種類を有するときに適し得る。例えば、あるタスクがグラフィックス部分と通信部分とを含む場合がある。第１のプロセッサコア４１５Ａがグラフィックス・プロセッシング・ユニットであり、第２のプロセッサコア４１５Ｂが通信処理部である場合、第１のプロセッサコア４１５Ａと第２のプロセッサコア４１５Ｂとは、グラフィックス部分と通信部分とを同時に完了するために、レジスタファイル４０５のうちの２つを使用して並列に動作するように構成することができる。また、２つのレジスタファイルは、タスクのプロセス状態２２０を共用してもよい。よって、第１のプロセッサコア４１５Ａと第２のプロセッサコア４１５Ｂとがコンテキストスイッチを行うときに、第１のプロセッサコア４１５Ａと第２のプロセッサコア４１５Ｂとは、それぞれ、対応するレジスタファイルからプロセス状態２２０を取り出すように構成され得る。
【００４０】
次に図５を見ると、ブロック図に、本明細書で提示される少なくともいくつかの実施形態に従って配置されたＬ１キャッシュ５０５と共用Ｌ２キャッシュ５１０とを有する例示的マルチコアプロセッサ５００が示されている。第１のプロセッサコア５１５Ａは、第１のプロセッサコア５１５Ａに適切なキャッシュ機能を提供する対応する第１のキャッシュ５０５Ａを含む。第２のプロセッサコア５１５Ｂは、第２のプロセッサコア５１５Ｂに適切なキャッシュ機能を提供する対応する第２のキャッシュ５０５Ｂを含む。第３のプロセッサコア５１５Ｃは、第３のプロセッサコア５１５Ｃに適切なキャッシュ機能を提供する対応する第３のキャッシュ５０５Ｃを含む。第４のプロセッサコア５１５Ｄは、第４のプロセッサコア５１５Ｄに適切なキャッシュ機能を提供する対応する第４のキャッシュ５０５Ｄを含む。プロセッサコア５１５Ａ〜５１５Ｂを総称して、すなわち全体として、プロセッサコア５１５ともいう。キャッシュ５０５Ａ〜５０５Ｄを総称して、すなわち全体として、キャッシュ５０５ともいう。
【００４１】
コンテキストスイッチの間に、プロセッサコア５１５のうちの１つが、その対応するＬ１キャッシュ５０５をフラッシュするように適合され得る。キャッシュフラッシュに際してプロセッサコア５１５は対応するＬ１キャッシュ５０５からメインメモリ１２０へデータを書き込む。キャッシュフラッシュによって生じるオーバーヘッドを低減し、または無くすために、ある実施形態では、Ｌ１キャッシュ５０５がライトスルーキャッシュとして実施され得る。ライトスルーキャッシュにおいて、データは、データがキャッシュ５０５に書き込まれるのと実質的に同時にメインメモリ１２０に書き込まれ、それによってコンテキストスイッチ時のキャッシュフラッシュが不要になる。またＬ１キャッシュ５０５は、スヌープ・キャッシュ・コヒーレンス・プロトコルを実施して、データがメインメモリ１２０に書き込まれるときに他のＬ１キャッシュ５０５内のキャッシュブロックを必要に応じて無効にしてもよい。
【００４２】
共用Ｌ２キャッシュ５１０は、キャッシュ５０５間で共用されるように適合させることができる。プロセッサコア５１５が共用レジスタファイル３０５を利用するときには、プロセッサコア５１５のうちの１つをいつでもアクティブとすることができる。したがって、共用Ｌ２キャッシュ５１０は、プロセッサコア５１５が共用レジスタファイル３０５を利用するときに適し得る。
【００４３】
しかし、プロセッサコア５１５が複数の共用レジスタファイル４０５を利用するときには、単一の共用Ｌ２キャッシュ５１０は適さない場合がある。特に、共用Ｌ２キャッシュ５１０のサイズは、複数のプロセッサコア５１５が同時にアクティブになる可能性に対応するのに十分な大きさに構成され得る。さらに、Ｌ２キャッシュ５１０は、プロセッサコア５１５のうちの２つ以上が同時にアクティブになることを可能にするために、追加のポートを用いても構成されてもよい。これらのポートは読取りポートと書込みポートを含み得る。利用される読取りポートと書込みポートの数は同数でも異なる数でもよい。これらのポートは、単一の共用Ｌ２キャッシュ５１０のサイズを拡大し得る。
【００４４】
次に図６を見ると、ブロック図に、本明細書で提示されるいくつかの実施形態による複数の共用キャッシュ６０５を有する例示的マルチコアプロセッサ６００が示されている。例示的マルチコアプロセッサ６００は、第１のプロセッサコア６１５Ａ、第２のプロセッサコア６１５Ｂ、第３のプロセッサコア６１５Ｃ、および第４のプロセッサコア６１５Ｄを含む。プロセッサコア６１５Ａ〜６１５Ｄを総称して、すなわち全体として、プロセッサコア６１５ともいう。
【００４５】
マルチコアプロセッサ６００は、第１の共用キャッシュ６０５Ａ、第２の共用キャッシュ６０５Ｂ、第３の共用キャッシュ６０５Ｃ、および第４の共用キャッシュ６０５Ｄをさらに含む。共用キャッシュ６０５Ａ〜６０５Ｄを総称して、すなわち全体として、共用キャッシュ６０５ともいう。共用キャッシュ６０５は、クロスバースイッチ６１０または他の適切なマルチプレクサを介してプロセッサコア６１５に結合され得る。クロスバースイッチ６１０は、共用キャッシュ６０５とプロセッサコア６１５とを多重化するように配置され得る。クロスバースイッチ６１０は、各プロセッサコア６１５が共用キャッシュ６０５のうちのいずれか１つにアクセスすることを可能にするように配置され得る。図６に示す例示的マルチコアプロセッサ６００は同数のキャッシュ６０５とプロセッサコア６１５とを含むが、キャッシュ６０５の数はプロセッサコア６１５の数と異なっていてもよいことを理解すべきである。
【００４６】
ある実施形態では、複数の共用キャッシュ６０５を共用Ｌ２キャッシュとすることができる。プロセッサコア６１５が共用レジスタファイル４０５を利用するときには、プロセッサコア６１５のうちの２つ以上を同時にアクティブとすることができる。複数のＬ２キャッシュとプロセッサコア６１５とを多重化することにより、プロセッサコア６１５のうちの２つ以上（がアクティブである）ときに、プロセッサコア６１５はＬ２キャッシュのうちの２つ以上を利用し得る。複数のＬ２キャッシュが設けられているために、各Ｌ２キャッシュのサイズは、単一の共用Ｌ２キャッシュ５１０が設けられた場合よりも小さいままとすることができる。
【００４７】
別の実施形態では、複数の共用キャッシュ６０５を共用Ｌ１キャッシュとすることができる。コンテキストスイッチの間に、プロセッサコア６１５コアは、その対応するＬ１キャッシュをフラッシュし得る。Ｌ１キャッシュを共用することにより、キャッシュフラッシュが不要になり得る。というのは、プロセッサコア６１５は、現在のＬ１キャッシュがまだフラッシュされていないときにマルチプレクサを介して利用可能なＬ１キャッシュを選択するように構成され得るからである。しかし、マルチプレクサは、マルチコアプロセッサ６００をさらに複雑にする可能性もある。さらに、Ｌ１キャッシュは、潜在的に、プロセッサコア６１５のうちのどの１つによっても利用され得るため、Ｌ１キャッシュは、Ｌ１キャッシュ内の最小のＬ１キャッシュのサイズが、プロセッサコア６１５内の最大のプロセッサコアに良好なキャッシュ性能を提供するのに十分な大きさであるように構成され得る。
【００４８】
プロセッサコア６１５が特定用途向けプロセッサコアであるとき、いくつかの特定用途向けプロセッサコアは、その関連付けられるＬ１キャッシュについて特定の要件を有する場合がある。これらの要件は、Ｌ１キャッシュサイズおよび／またはキャッシュ構成を指定する場合がある。特定用途向けプロセッサコアが特定の要件を有する場合、Ｌ１キャッシュは、Ｌ１キャッシュ内の行を電源オフにすることによって、またはＬ１キャッシュ内の列を電源オフにすることによって、必要に応じて調整され得る。特に、Ｌ１キャッシュ内の行を電源オフにする（または無効にする）ことによって、Ｌ１キャッシュはその結合性を低減することができ、Ｌ１キャッシュ内の列を電源オフにする（または無効にする）ことによって、Ｌ１キャッシュはそのサイズを低減することができる。
【００４９】
次に図７を見ると、流れ図に、本明細書で説明される少なくともいくつかの実施形態による、マルチコアプロセッサを生成するためのプロセス７００が示されている。プロセス７００は、ブロック７０２、７０４、および／または７０６のうちの１つまたは複数によって例示される様々な動作、機能、または処置を含む。プロセス７００は、ブロック７０２（３次元配列を設ける）から開始してよく、そこで製造者は、プロセッサコア３１５といったヘテロジニアス・プロセッサ・コアの３次元配列を設けることができる。３次元配列は複数の層を含み得る。各層は、ヘテロジニアス・プロセッサ・コアのうちの１つを含み得る。ヘテロジニアス・プロセッサ・コアは異なるサイズおよび／または異なる種類を有していてよい。ブロック７０２に続いてブロック７０４が行われ得る。
【００５０】
ブロック７０４（共用レジスタファイルに結合する）で、製造者は、共用レジスタファイル３０５といった共用レジスタファイルを、ヘテロジニアス・プロセッサ・コアの３次元配列に結合し得る。共用レジスタファイルは、プロセッサコア内に埋め込まれている個々のレジスタファイルに取って代わることができる。ブロック７０４に続いてブロック７０６が行われ得る。
【００５１】
ブロック７０６（共用キャッシュに結合する）で、製造者は、共用キャッシュＬ２キャッシュ５１０といった共用キャッシュを、ヘテロジニアス・プロセッサ・コアの３次元配列に結合し得る。共用キャッシュは、Ｌ１キャッシュ、Ｌ２キャッシュ、および／または他の何らかの適切なキャッシュとすることができる。ブロック７０６の後、プロセス７００は、（例えば、周期的に、連続的に、あるいは必要に応じて要求時に）繰り返してもよく、終了してもよい。
【００５２】
次に図８を見ると、流れ図に、本明細書で説明される少なくともいくつかの実施形態による、マルチコアプロセッサを生成するためのプロセス８００が示されている。プロセス８００は、ブロック８０２、７０４、８０６、８０８および／または８１０によって例示される様々な動作、機能、または処置を含む。プロセス８００はブロック８０２（３次元配列を設ける）から開始してよく、そこで製造者は、プロセッサコア３１５といったヘテロジニアス・プロセッサ・コアの３次元配列を設けることができる。３次元配列は複数の層を含み得る。各層は、ヘテロジニアス・プロセッサ・コアのうちの１つを含み得る。ヘテロジニアス・プロセッサ・コアは、異なるサイズおよび／または異なる種類を有していてよい。ブロック８０２に続いてブロック８０４が行われ得る。
【００５３】
ブロック８０４（複数の共用レジスタファイルを設ける）で、製造者は、共用レジスタファイル４０５といった複数の共用レジスタファイルを設けることができる。複数の共用レジスタファイルは、プロセッサコア内に埋め込まれている個々のレジスタファイルに取って代わることができる。ブロック８０４に続いてブロック８０６が行われ得る。
【００５４】
ブロック８０６（複数の共用キャッシュを設ける）で、製造者は、共用キャッシュ６０５といった複数の共用キャッシュを設けることができる。共用キャッシュは、Ｌ１キャッシュ、Ｌ２キャッシュ、および／または他の何らかの適切なキャッシュとすることができる。ブロック８０６に続いてブロック８０８が行われ得る。
【００５５】
ブロック８０８（３次元配列を共用レジスタファイルに結合する）で、製造者は、共用レジスタファイルを、第１のマルチプレクサを介してヘテロジニアス・プロセッサ・コアの３次元配列に結合し得る。第１のマルチプレクサの一例がクロスバースイッチ４１０である。ブロック８０８に続いてブロック８１０が行われ得る。
【００５６】
ブロック８１０（３次元配列を共用キャッシュに結合する）で、製造者は、共用キャッシュを、第２のマルチプレクサを介してヘテロジニアス・プロセッサ・コアの３次元配列に結合し得る。第２のマルチプレクサの一例がクロスバースイッチ６１０である。ブロック８１０の後、プロセス８００は、（例えば、周期的に、連続的に、あるいは必要に応じて要求時に）繰り返してもよく、終了してもよい。
【００５７】
図９は、本明細書で提示する少なくともいくつかの実施形態を実施することのできるコンピューティングシステムのための例示的なコンピュータ・ハードウェア・アーキテクチャを示すコンピュータアーキテクチャ図である。図９は、マルチコアプロセッサ１１０と、メモリ９２０と、１つまたは複数のドライブ９３０とを含むコンピュータ９００を含む。コンピュータ９００は、通常のコンピュータシステム、埋め込み制御コンピュータ、ラップトップとして実施されてもよく、もしくはサーバコンピュータ、モバイル機器、セット・トップ・ボックス、キオスク、車両情報システム、携帯電話、カスタマイズマシン、または他のハードウェアプラットフォームとして実施されてもよい。マルチコアプロセッサ１１０は、ホモジニアス・マルチコア・プロセッサまたはヘテロジニアス・マルチコア・プロセッサとすることができる。ホモジニアス・マルチコア・プロセッサを適切とし得るのは、ホモジニアス・プロセッサ・コアが同一の機能および論理構造を有し得る場合でさえも、ホモジニアス・プロセッサ・コアは、大きく異なるタイミング、エネルギー、および他の特性を有する場合があるからである。さらに、ホモジニアス・プロセッサ・コアは、ヘテロジニアス・プロセッサ・コアと比べてより良い熱管理および電力漏洩の低減を提供し得る。マルチコアプロセッサ１１０は共用リソース１２５を含んでいてよく、共用リソース１２５はマルチコアプロセッサ１１０内のプロセッサコアによって共用され得る。マルチコアプロセッサ１１０の例には、それぞれ図３〜６に示される、マルチコアプロセッサ３００、マルチコアプロセッサ４００、マルチコアプロセッサ５００、およびマルチコアプロセッサ６００が含まれ得る。
【００５８】
ドライブ９３０、および各ドライブと関連付けられたコンピュータ記憶媒体は、コンピュータ９００のためのコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータを提供する。ドライブ９３０は、オペレーティングシステム９４０、アプリケーションプログラム９５０、プログラムモジュール９６０、およびデータベース９８０を含むことができる。コンピュータ９００はさらに、ユーザがコマンドおよびデータを入力するためのユーザ入力機器９９０を含む。入力機器には、電子デジタイザ、マイクロホン、キーボードおよび一般にマウスと呼ばれるポインティングデバイス、トラックボールまたはタッチパッドが含まれ得る。他の入力機器には、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどが含まれ得る。
【００５９】
上記その他の入力機器は、システムバスに結合されたユーザ入力インターフェースを介してマルチコアプロセッサ１１０に結合することができるが、パラレルポート、ゲームポート、ユニバーサル・シリアル・バス（「ＵＳＢ」）といった他のインターフェースおよびバス構造によって結合されてもよい。またコンピュータ９００などのコンピュータは、スピーカなどの他の周辺出力機器を含んでいてもよく、それらの出力機器は、出力周辺インターフェース９９４などを介して結合され得る。
【００６０】
コンピュータ９００は、ネットワークインターフェース９９６に結合されたリモートコンピュータなど、１台または複数のコンピュータへの論理接続を使用したネットワーク環境において動作し得る。リモートコンピュータは、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の一般的なネットワークノードとすることができ、コンピュータ９００に関して上述した要素の多くまたは全部を含むことができる。ネットワーキング環境は、オフィス、企業の広域ネットワーク（「ＷＡＮ」）、ローカル・エリア・ネットワーク（「ＬＡＮ」）、イントラネットおよびインターネットにおいてよく見られる。
【００６１】
ＬＡＮまたはＷＬＡＮネットワーキング環境で使用されるときに、コンピュータ９００は、ネットワークインターフェース９９６またはアダプタを介してＬＡＮに結合され得る。ＷＡＮネットワーキング環境で使用されるときに、コンピュータ９００は通常、モデム、またはインターネットやネットワーク９０８などのＷＡＮ上での通信を確立するための他の手段を含む。ＷＡＮには、インターネット、図示のネットワーク９０８、他の様々なネットワーク、またはそれらの任意の組み合わせが含まれ得る。コンピュータ間の通信リンク、リング、メッシュ、バス、クラウド、またはネットワークを確立する他の機構が使用されてもよいことが理解されるであろう。
【００６２】
いくつかの実施形態によれば、コンピュータ９００は、ネットワーキング環境に結合され得る。コンピュータ９００は、ドライブ９３０または他の記憶装置と関連付けられた１つまたは複数の物理的なコンピュータ可読記憶媒体の１つまたは複数の例を含み得る。システムバスは、マルチコアプロセッサ１１０がコンピュータ可読記憶媒体との間でコードおよび／またはデータを読み取ることを可能にし得る。媒体は、それだけに限らないが、半導体、磁性材料、光媒体、電気的記憶、電気化学的記憶、または他の任意のそのような記憶技術を含む任意の適切な技術を使用して実施された記憶素子としての装置を表し得る。媒体は、ＲＡＭ、ＲＯＭ、フラッシュ、または他の種類の揮発性もしくは不揮発性メモリ技術のいずれとして特徴付けられるにせよ、メモリ９２０と関連付けられた構成要素を表し得る。また媒体は、記憶ドライブ９３０として実施されるにせよ別のやり方で実施されるにせよ、２次記憶も表し得る。ハードドライブ実装形態は、固体として特徴付けられてもよく、磁気的に符号化された情報を記憶する回転媒体を含んでいてもよい。
【００６３】
記憶媒体は、１つまたは複数のプログラムモジュール９６０を含み得る。プログラムモジュール９６０は、マルチコアプロセッサ１１０にロードされ、実行されると、汎用コンピューティングシステムを専用コンピューティングシステムに変換するソフトウェア命令を含み得る。本明細書を全体で詳述するように、プログラムモジュール９６０は、コンピュータ９００が、本明細書で論じるコンポーネント、論理フロー、および／またはデータ構造を使用して全般的なシステムまたは動作環境内で関与するための様々なツールまたは技法を提供し得る。
【００６４】
マルチコアプロセッサ１１０は、任意の数のトランジスタまたは他の回路素子から構築されていてよく、これらのトランジスタまたは他の回路素子は、個々に、または集合的に任意の数の状態となり得る。より具体的には、マルチコアプロセッサ１１０は、状態機械または有限状態機械として動作し得る。そのような機械は、プログラムモジュール９６０内に含まれる実行可能命令をロードすることにより第２の機械、または特定の機械に変換され得る。これらのコンピュータ実行可能命令は、マルチコアプロセッサ１１０が状態間をどのように遷移するか指定することによってマルチコアプロセッサ１１０を変換し、それによって、マルチコアプロセッサ１１０を構成するトランジスタまたは他の回路素子を、第１の機械から第２の機械へと変換し得る。またどちらの機械の状態も、１つもしくは複数のユーザ入力機器９９０、ネットワークインターフェース９９６、他の周辺機器、他のインターフェース、または１名もしくは複数のユーザもしくは他の動作者から入力を受け取ることによっても変換され得る。またどちらの機械も、状態、すなわち、プリンタ、スピーカ、ビデオディスプレイなどといった様々な出力機器の様々な物理的特性も変換し得る。
【００６５】
また、プログラムモジュール９６０を符号化することにより、記憶媒体の物理的構造も変換され得る。物理的構造の特定の変換は、本明細書の様々な実施態様における様々な要因に左右され得る。そのような要因の例には、それだけに限らないが、記憶媒体を実施するのに使用される技術、記憶媒体が１次記憶として特徴付けられるかそれとも２次記憶として特徴付けられるかなどが含まれ得る。例えば、記憶媒体が半導体ベースのメモリとして実施される場合、プログラムモジュール９６０は、ソフトウェアがそこで符号化されるときに、半導体メモリ９２０の物理的状態を変換し得る。例えば、ソフトウェアは、半導体メモリ９２０を構成するトランジスタ、コンデンサ、または他のディスクリート回路素子の状態を変換し得る。
【００６６】
別の例として、記憶媒体は、ドライブ９３０などの磁気技術または光学技術を使用して実施されてもよい。そのような実施態様では、プログラムモジュール９６０は、ソフトウェアがそこで符号化されるときに、磁気媒体または光媒体の物理的状態を変換し得る。これらの変換は、所与の磁気媒体内の特定の位置の磁気特性を変更することを含み得る。またこれらの変換は、所与の光媒体内の特定の位置の物理的特徴または特性を変更して、それらの位置の光学特性を変更することも含み得る。本明細書の範囲および趣旨を逸脱することなく、物理媒体の他の様々な変換も可能であることを理解すべきである。
【００６７】
本明細書で説明する主題は、コンピュータシステム上でオペレーティングシステムおよびアプリケーションプログラムの実行と併せて実行されるプログラムモジュールの一般的状況において提示されているが、当業者は、別の実施態様が別の種類のプログラムモジュールとの組み合わせで実施されてもよいことを理解するであろう。一般に、プログラムモジュールには、ルーチン、プログラム、コンポーネント、データ構造、および特定のタスクを実行し、または特定の抽象データ型を実施する別の種類の構造が含まれる。さらに、本明細書で説明する主題は、ハンドヘルド機器、マルチコア・プロセッサ・システム、マイクロプロセッサベースまたはプログラマブル家電製品、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成を用いて実施されてもよいことも当業者は理解するであろう。
【００６８】
本開示は、様々な態様の例示として意図されている本出願に記載される特定の実施形態にだけ限定されるものではない。当業者には理解されるように、本開示の趣旨および範囲を逸脱することなく、多くの改変および変形を加えることができる。本明細書に記載されているもの以外の、本開示の範囲内の機能的に等価な方法および装置が、以上の説明を読めば当業者には明らかになるであろう。そのような改変および変形は、添付の特許請求の範囲の範囲内に含まれるものと意図されている。本開示は、添付の特許請求の範囲の各項と、かかる特許請求の範囲が権利付与される対象となる全範囲の均等物とによってのみ限定されるべきである。本開示は、特定の方法、試薬、化合物、組成物、または生体系だけに限定されず、当然ながら多様であり得ることを理解すべきである。また、本明細書において使用される用語は特定の実施形態を説明するためのものにすぎず、限定的であることが意図されていないことも理解すべきである。
【００６９】
本明細書における実質的にいかなる複数形および／または単形数の用語の使用についても、当業者は、状況および／または用途に合わせてしかるべく、複数形から単数形に、かつ／または単数形から複数形に変換することができる。本明細書においては明確にするために様々な単数形／複数形の置換形が明示され得る。
【００７０】
一般に、本明細書において、特に添付の特許請求の範囲（例えば添付の特許請求の範囲の本文など）において使用される用語は、一般には、「非限定的な（ｏｐｅｎ）」用語として意図されている（例えば、「ｉｎｃｌｕｄｉｎｇ（〜を含み）」という用語は「それだけに限らないが〜を含み」と解釈すべきであり、「ｈａｖｉｎｇ（〜を有し）」という用語は「少なくとも〜を有し」と解釈すべきであり、「ｉｎｃｌｕｄｅｓ（〜を含む）」という用語は、「それだけに限らないが、〜を含む」と解釈すべきであるなど）ことが当業者には理解されるであろう。さらに、導入請求項記載の特定の数が意図される場合、そのような意図は当該請求項において明示的に記載され、そのような記載がない場合にはそのような意図が存在しないことも当業者には理解されるであろう。例えば理解の一助として挙げると、添付の特許請求の範囲は、請求項記載を導入するために、「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」という導入句の使用を含み得る。しかし、そのような句の使用は、同じ請求項が「１つまたは複数の」あるいは「少なくとも１つの」という導入句および「ａ」や「ａｎ」といった不定冠詞を含むときでさえも、不定冠詞「ａ」または「ａｎ」による請求項記載の導入が、そのような導入請求項記載を含む任意の特定の請求項を、ただ１つのそのような記載を含む実施形態だけに限定することを意味するものと解釈されるべきではない（例えば、「ａ」および／または「ａｎ」は「少なくとも１つの」または「１つまたは複数の」を意味するものと解釈されるべきであるなど）。同じことが、請求項記載を導入するのに使用される定冠詞の使用についても当てはまる。加えて、導入請求項記載の特定の数が明示的に記載されている場合でさえも、そのような記載が、少なくとも記載される数を意味するものと解釈されるべきであることも当業者は理解するであろう（例えば、他の修飾語句を伴わない「２つの記載」という記載だけで、少なくとも２つの記載、または２つ以上の記載を意味するなど）。さらに、「Ａ、Ｂ、およびＣのうちの少なくとも１つなど」に類似した慣用表現が使用される場合、一般にそのような構造は、当業者が当該慣用表現を理解するはずの意味として意図されるものである（例えば、「Ａ、Ｂ、およびＣのうちの少なくとも１つを有するシステム」は、それだけに限らないが、Ａだけを、Ｂだけを、Ｃだけを、ＡとＢとを共に、ＡとＣとを共に、ＢとＣとを共に、かつ／またはＡ、Ｂ、およびＣを共に有するシステムを含むはずであるなど）。「Ａ、Ｂ、またはＣのうちの少なくとも１つなど」に類似した慣用表現が使用される場合、一般にそのような構造は、当業者が当該慣用表現を理解するはずの意味として意図されるものである（例えば、「Ａ、Ｂ、またはＣのうちの少なくとも１つを有するシステム」は、それだけに限らないが、Ａだけを、Ｂだけを、Ｃだけを、ＡとＢとを共に、ＡとＣとを共に、ＢとＣとを共に、かつ／またはＡ、Ｂ、およびＣを共に有するシステムを含むはずであるなど）。さらに、２つ以上の択一的項目を提示する事実上あらゆる選言的な語および／または句は、本明細書においてであれ、特許���求の範囲においてであれ、図面においてであれ、それらの項目のうちの１つ、それらの項目のうちのどちらか、またはそれらの項目の両方を含む可能性を企図するものと理解すべきであることも当業者には理解されるであろう。例えば、「ＡまたはＢ」という句は、「Ａ」または「Ｂ」または「ＡおよびＢ」の可能性を含むものと理解されるであろう。
【００７１】
加えて、本開示の特徴または態様がマーカッシュグループとして記載される場合、本開示が、それによって、マーカッシュグループの任意の個々のメンバまたはメンバの下位グループとしても記載されるものであることを当業者は理解するであろう。
【００７２】
当業者には理解されるように、ありとあらゆる目的で、例えば書面による説明を提供することに関して、本明細書において開示されるあらゆる範囲は、そのありとあらゆる可能な下位範囲および下位範囲の組み合わせも包含するものである。あらゆる記載範囲は、その同じ範囲が、少なくとも２等分、３等分、４等分、５等分、１０等分などに分割されることを十分に説明し、可能にするものとして容易に理解され得るものである。非限定的例を挙げると、本明細書で論じる各範囲は、下３分の１、中３分の１および上３分の１に容易に分割することができる。またやはり当業者には理解されるように、「最大〜まで（ｕｐ  ｔｏ）」、「少なくとも（ａｔ  ｌｅａｓｔ）」「〜より大（ｇｒｅａｔｅｒ  ｔｈａｎ）」「〜より小（ｌｅｓｓ  ｔｈａｎ）」などといったすべての表現は、記載される数を含み、後で前述の下位範囲に分割され得る範囲を指し示すものである。最後に、当業者には理解されるように、範囲は個々の各メンバを含む。よって例えば、１〜３個の要素を有するグループは、１個、２個、または３個の要素を有するグループを指す。同様に、１〜５個の要素を有するグループは、１個、２個、３個、４個または５個の要素を有するグループを指し、以下同様である。
【００７３】
本明細書では様々な態様および実施形態が開示されているが、当業者には他の態様および実施形態も明らかであろう。本明細書で開示する様々な態様および実施形態は例示のためのものであり、限定を意図するものではなく、その真の範囲および趣旨は添付の特許請求の範囲によって指示される。
【図１】
0005589091.tif 000002
【図２】
0005589091.tif 000003
【図３】
0005589091.tif 000004
【図４】
0005589091.tif 000005
【図５】
0005589091.tif 000006
【図６】
0005589091.tif 000007
【図７】
0005589091.tif 000008
【図８】
0005589091.tif 000009
【図９】
0005589091.tif 000010