【文献】
R.E.Kessler et al.,"The Alpha 21264 microprocessor architecture",Computer Design: VLSI in Computers and Processors, 1998. ICCD '98. Proceedings. International Confer,米国,IEEE,1998年10月 7日,pages:90-95
【文献】
Hisa Ando,高性能コンピュータ技術の基礎,日本,株式会社毎日コミュニケーションズ,2011年 6月20日,第1版,180頁
【文献】
小林 弘明 他,「OSにおける細粒度パワーゲーティング向けオブジェクトコードの実行時管理機構の研究」,情報処理学会研究報告 研究報告システムソフトウェアとオペレーティング・システム(OS),日本,一般社団法人情報処理学会,2011年 6月15日,No.117,1頁〜8頁
【文献】
高橋 昭宏 他,「FPGAによる省電力計算機の開発評価環境の試作」,情報処理学会 シンポジウム 先進的計算基盤システムシンポジウム(SACSIS) 2011 [online],日本,情報処理学会,2011年 5月18日,269頁〜270頁
(58)【調査した分野】(Int.Cl.,DB名)
前記アウトオブオーダープロセッサがマルチコアプロセッサを含み、前記マルチコアプロセッサ内の各コアが、前記第1のリザベーションステーションと前記第2のリザベーションステーションとを含む、
請求項1に記載の装置。
前記アウトオブオーダープロセッサがマルチコアプロセッサを含み、前記マルチコアプロセッサ内の各コアが、前記第1のリザベーションステーションと前記第2のリザベーションステーションとを含む、
請求項9に記載の方法。
【背景技術】
【0002】
集積デバイス技術は、過去40年間で飛躍的に進歩した。マイクロプロセッサ分野について詳細には、4ビット単一命令の10マイクロメートルのデバイスから始まったものが、半導体製造技術の進歩により、アーキテクチャ及び密度の点でますます複雑なデバイスを設計することが可能となった。80年代及び90年代には、単一のダイに搭載された数百万個のトランジスタを含む、いわゆるパイプラインマイクロプロセッサやスーパースカラマイクロプロセッサが開発された。それから20年を経た現在、単一のダイに搭載された数十億のトランジスタを備え、データ処理用の複数のマイクロプロセッサコアを含む、32ナノメートルのデバイスが製造されている。
【0003】
今日のマルチコアプロセッサにおける命令並列性の採用に加えて、アウトオブオーダー実行(out−of−order execution)メカニズムもまた普及している。アウトオブオーダー実行の原理によると、命令は、実行ユニットによる実行のためにリザベーションステーションにキューイングされ、古い命令の実行結果であるオペランドを待機している命令のみがリザベーションステーションで保持される。オペランドを待機していない命令は、実行のためにディスパッチされる。実行に続いて、結果がキューイングされ、典型的にはリタイア状態と呼ばれるプロセッサステージで、レジスタに正しい順序で戻される。よって、命令は元のプログラム順と異なる順序で実行される。
【0004】
アウトオブオーダー実行はスループットを大幅に向上させる。これは、本来であればアイドル状態となる実行ユニットを利用して、古い命令がオペランドを待機している間に新しい命令を実行するからである。ただし、当業者が理解するように、命令は必ずしも正常に実行されるとは限らない。結果として、ある命令が正常に実行されなかった場合、その命令と、その命令よりも新しいすべての命令とを、再び実行しなければならない。この概念は「リプレイ(”replay”)」と呼ばれている。これは、今日のプロセッサのメカニズムが、現在の実行を基本的に停止し、命令が異常実行された直前のポイントまでマシン状態を後退させ、異常実行された命令と、その命令よりも新しいすべての命令とをリプレイするからである。新しい命令は、異常実行された命令のディスパッチよりも前にディスパッチされている場合と、そうでない場合とがある。
【0005】
ただし、リプレイは例外的なケースであり、リプレイがパフォーマンスに与える影響は、多くの場合は無視できる。しかし、オペランドが利用できるまで命令をリザベーションステーションで保持することのパフォーマンス面での影響は甚大であり、マイクロプロセッサの設計者は、特定の命令を、そのオペランドが実行の直前に利用可能となる可能性が高い場合にディスパッチできるようにするアクセラレーション手法を開発した。これらの特定の命令がディスパッチされるだけでなく、これらの特定の命令に必要なオペランドを適時に提供するメカニズムも設けられる。
【0006】
本願は、そのようなアクセラレーション手法の1つに対処する。このアクセラレーション手法では、オンコアの(on−core)キャッシュメモリに存在する可能性が高いと予想されるオペランドを必要とする新しい命令が、実行されることでそのオペランドのキャッシュからの取得を可能にするロード命令がディスパッチされてから、指定されたクロックサイクル数の後にディスパッチされる。よって、ロード命令がディスパッチされたとき、そのオペランドを待機している新しい命令は、指定されたクロックサイクル数が発生するまで、それぞれのリザベーションステーションでストール(stall)される。その後、必要なオペランドが利用可能になるという高い確実性を持って、それらの新しい命令が実行のためにディスパッチされる。
【0007】
上述したアクセラレーション手法を利用することによるパフォーマンスの向上は非常に大きいため、マイクロプロセッサのアーキテクトは、通常、ほとんどのロード命令(I/Oからのロード、キャッシュ不可のロード、割り込みレジスタからのロード、特殊ロードなど)にこの手法を適用する。ただし、オペランドを取得するために指定されたサイクル数よりも多くを要し、よってオペランドが利用可能になるという見込みでディスパッチされた新しい命令のすべてをリプレイすることが必要となるロード命令が存在することも確かである。このロードアクセラレーション手法によるパフォーマンスの向上は、稀に生じるリプレイによるパフォーマンスの低下を補って余りある。
【0008】
しかし、マルチコアプロセッサ技術が進化し続ける中、設計者は、レベル2(L2)キャッシュ、割り込みコントローラ、ヒューズアレイなどの頻繁にアクセスされない特定のプロセッサリソースを、各コア内で複製するのではなく、マルチコアプロセッサダイの共通領域に配置するほうがよいと考えている。つまり、これら上述のリソースは、プロセッサコアによって共有される。当業者が理解するように、オペランドをオフコアの(off−core)リソース(たとえば、ヒューズアレイ)からロードするには、オンコアのリソース(たとえば、L1キャッシュ)からのロードに必要な時間よりもかなり長い時間がかかる。そして上述したアクセラレーション手法の下でディスパッチされた新しい命令をリプレイしなければならないことにより生じるパフォーマンス低下は甚大ではないが、電力利用への影響は大きく、かなりの数の命令が、リプレイを余儀なくされることが事実上確実な条件の下で実行されていることが、本発明者により確認された。また、これらの命令の最初の実行で電力が必然的に浪費されるため、電池寿命、熱プロファイル、及び信頼性の観点で不利である。
【0009】
そのため、必要なリプレイの数を減らすことにより、プロセッサで電力を節約することを可能にする装置及び方法が求められている。
【0010】
加えて、アウトオブオーダープロセッサの節電を実現する、同プロセッサのロードリプレイ低減メカニズムが求められている。
【発明を実施するための形態】
【0018】
本発明の例示的かつ例証的な実施形態について以下に説明する。明瞭性を考慮して、本明細書では実際の実装のすべての特徴については説明しない。当業者は、そのような実際の実施形態を発展させる過程で、具体的な目的を達成するために、実装に固有のさまざまな意思決定がなされることを理解する。そうした意思決定には、システム関連及びビジネス関連の制約への準拠など、実装ごとに異なるものが含まれる。さらに、そのような開発努力は複雑で時間がかかるものとなる可能性があるが、それでも本開示の利益を受ける当業者にとってはありふれた作業であろうことが理解される。好ましい実施形態に対する多様な変更は当業者にとって明白であり、本明細書で定義された一般原理は他の実施形態にも適用され得る。よって、本発明は本明細書で図示及び説明された特定の実施形態に限定されることを意図したものではなく、本明細書で開示される原理及び新規な特徴に一致する最も広い範囲が与えられる。
【0019】
本発明について、添付の図面を参照しながら以下に説明する。さまざまな構造、システム、及びデバイスが、図面に概略的に示されている。これらは説明のみを目的としており、また当業者にとって既知である詳細事項によって本発明が不明瞭にならないようにしている。しかしながら添付の図面は、本発明の例証的な例について記述及び説明するために用意されている。本明細書で使用される用語及びフレーズは、それらの用語及びフレーズの関連分野における当業者による理解と一致する意味を持つものとして理解及び解釈されるべきである。用語又はフレーズの特殊な定義(即ち、当業者により理解される通常かつ慣例的な意味と異なる定義)を、その用語又はフレーズの本明細書での一貫した使用により暗示することは意図されていない。用語又はフレーズが特殊な意味(即ち、当業者による理解と異なる意味)を持つことが意図されている場合、そのような特殊な定義は、それらの用語又はフレーズの特殊な定義を直接かつ明白に提供する定義の態様で、本明細書において明示的に説明される。
【0020】
定義
集積回路(IC):典型的にはシリコンである半導体材料の小片の上に組み立てられた、一群の電子回路。よってICは、チップ、マイクロチップ、又はダイとも呼ばれる。
【0021】
中央処理装置(CPU):算術演算、論理演算、及び入力/出力演算を含むデータ操作を実行することで、コンピュータプログラム(「コンピュータアプリケーション」又は「アプリケーション」とも呼ばれる)の命令を実行する電子回路(即ち、「ハードウェア」)。
【0022】
マイクロプロセッサ:単一の集積回路でCPUとして機能する電子デバイス。マイクロプロセッサは、デジタルデータを入力として受け取り、メモリ(オンダイ又はオフダイ)からフェッチした命令に応じてデータを処理し、命令により規定された操作の結果を出力として生成する。汎用マイクロプロセッサは、デスクトップコンピュータ、モバイルコンピュータ、又はタブレットコンピュータで利用されることがあり、計算、テキスト編集、マルチメディア表示、インターネット閲覧などの用途に利用される。またマイクロプロセッサは、組み込みシステムに配置されて、アプライアンス、携帯電話、スマートフォン、産業用制御デバイスなどの幅広いデバイスを制御し得る。
【0023】
マルチコアプロセッサ:マルチコアマイクロプロセッサとも呼ばれるマルチコアプロセッサは、単一の集積回路上に組み立てられた複数のCPU(「コア」)を備えるマイクロプロセッサである。
【0024】
命令セットアーキテクチャ(ISA)又は命令セット:データ型、命令、レジスタ、アドレッシングモード、メモリアーキテクチャ、割り込み及び例外処理、並びに入力/出力を含む、コンピュータアーキテクチャのプログラミングに関連する部分。ISAは、一群のオペコード(即ち、機械語命令)の仕様と、特定のCPUにより実装されるネイティブ命令とを含む。
【0025】
x86互換マイクロプロセッサ:x86 ISAに基づいてプログラムされたコンピュータアプリケーションを実行できるマイクロプロセッサ。
【0026】
マイクロコード:複数のマイクロ命令を示すために利用される用語。マイクロ命令(「ネイティブ命令」とも呼ばれる)は、マイクロプロセッサのサブユニットが実行するレベルでの命令である。例示的なサブユニットには、整数ユニット、浮動小数点ユニット、マルチメディア(MMX)ユニット、及びロード/ストアユニットがある。たとえば、マイクロ命令は、縮小命令セットコンピュータ(RISC)マイクロプロセッサにより直接実行される。x86互換マイクロプロセッサなどの複合命令セットコンピュータ(CISC)マイクロプロセッサの場合、x86命令が関連するマイクロ命令に変換され、関連するマイクロ命令がCISCマイクロプロセッサ内のサブユニットにより直接実行される。
【0027】
ヒューズ:典型的にはフィラメントとして配置される導電性構造であり、フィラメントの全体に電圧を加えることにより、及び/又はフィラメントを通じて電流を流すことにより、選択位置で破損させることができる。ヒューズは、すべての潜在的なプログラム可能領域にフィラメントを作成するために、既知の組み立て手法を使用して、ダイ微細構成(die topography)全域の指定された領域に配置され得る。ヒューズ構造は、ダイに配置された対応するデバイスの所望のプログラミング性を実現するために、組み立て後に飛ばされる(又は飛ばされない)。
【0028】
マルチコアプロセッサのロードメカニズム及び非コアリソースからのロード操作を実行するために今日のマルチコアプロセッサ内で利用されている関連手法の上述した背景説明に鑑みて、それらの今日の手法の制限及び欠点を、
図1及び
図2を参照しながら説明する。それに続いて、本発明について
図3〜
図7を参照しながら説明する。
【0029】
図1を参照すると、各コア101の外部に配置された共通リソースを利用する今日のマルチコアプロセッサを示すブロック
図100が提示されている。ブロック
図100は、4つのプロセッサコア101が配置されたデバイスダイ110を示している。本発明者は、明瞭性を目的として、本明細書ではクワッドコア(即ち、4つのコア101)のマルチコアマイクロプロセッサについて説明することを指摘する。しかし、本発明の原理及び特徴は、異なる数のコア101を備えたマルチコアマイクロプロセッサにも適用することができる。
【0030】
当業者が理解するように、設計及び/又はビジネスに関連する理由により、アーキテクトは特定のプロセッサリソースをコア101の間で共有することを選択する場合がある。パフォーマンス上の動機により、これらの共有リソースは、典型的にはコア101と同じダイ110に配置され、各コア101から高速バス111〜114を通じてアクセスされる。したがってブロック
図100は、L2キャッシュ103、ランダムアクセスメモリ(RAM)104、バスユニット105、入力/出力ユニット106、高度プログラム可能割り込みコントローラ(APIC)107、ヒューズアレイ108などの例示的な共有リソースを示している。コア101と同じダイ110に配置され、かつコア101の外部に位置する、これらの共有リソース103〜108の集まりを、以下ではアンコア(uncore)リソース102と呼ぶ。よって、バスB1 111は、コア1 101がアンコア102にアクセスすることを可能にする。バスB2 112は、コア2 101がアンコア102にアクセスすることを可能にする。バスB3 113は、コア3 101がアンコア102にアクセスすることを可能にする。バスB4 114は、コア4 101がアンコア102にアクセスすることを可能にする。典型的な構成では、マルチコアプロセッサは、デバイスダイ110の外部にある、システムメモリ(メモリバスMEMを通じてアクセス)、入力/出力要素(バスI/Oを通じてアクセス)、システム制御要素(バスCTRLを通じてアクセス)などの他の要素に接続される。
【0031】
動作中、オペレーティングシステムの制御下にある各コア101は、システムメモリからフェッチされた関連する命令を実行することができ、対象の用途に対応するオペランドを操作する。1つ又は複数のコア101は、1つ又は複数のアンコアリソース102にアクセスすることが必要な場合があり、対応するバスB1〜B4を通じて、制御された態様で、それら1つ又は複数のアンコアリソース102にアクセスする。たとえば、電源初期化時に、1つ又は複数のコア101は、ヒューズアレイ108からのロード操作を実行して構成パラメータを取得することができ、又はRAM104からのロードを実行してパッチ情報を取得することができる。通常の動作時に、コア101はL2キャッシュ103にアクセスして、オンコアキャッシュ(たとえば、L1キャッシュ)に存在しないメモリオペランドを読み取る/書き込むことができる。コア101は、バスユニット105にアクセスしてシステムメモリとの間で読み取り/書き込みを実行することができ、又はI/Oユニット106を利用してI/Oバスを通じてI/O操作を実行することができる。コア101は、さらにAPIC107にアクセスして割り込み操作を実行することができる。
【0032】
図2を参照すると、
図1に示す今日の各コア101の例示的なコアステージを示すブロック図が示されている。この図は、ダイ110に配置されたプロセッサコア201を示している。コア201はフェッチステージ211を含み、このフェッチステージがトランスレータステージ212にバス241を通じて接続されている。トランスレータステージ212は、リネームステージ213にバス242を通じて接続されている。リネームステージ213は、リプレイマルチプレクサステージ214にバス243を通じて接続されている。リプレイマルチプレクサ214は、複数のリザベーションステーションRS1〜RSN 221.1〜221.Nと、ロードリザベーションステーションRSL221.Lとに、リザベーションバス244を通じて接続されている。各リザベーションステーションRS1〜RSN、RSLは、対応する実行ユニットEU1〜EUN 222.1〜222.N、EUL222.Lに、対応するディスパッチバス251.1〜251.N、251.Lを通じて接続されている。リザベーションステーションRS1〜RSN、RSLは、レジスタファイル226にレジスタバス245を通じて接続されている。
【0033】
本発明者は、実行ユニットEULの外部で、他の実行ユニットEU1〜EUNが、整数ユニット、浮動小数点ユニット、マルチメディアユニット、ストアユニットなど、今日のスーパースカラプロセッサに典型的なユニットを含み得ることを指摘する。本願で特に興味深いのは、実行ユニットEULである。このユニットは、ロードユニット222.Lとして図示されており、その主な機能は、
図1を参照しながら上述したシステムメモリ、システムI/O、アンコアリソース230などの多様なリソースからオペランドをロードすることである。
【0034】
よって、ロードユニットEULは、L1キャッシュ223にバス254を通じて接続され、アンコア230にバス256を通じて接続されている。ほとんどのメモリオペランドについて、ロードユニット222.LはまずL1キャッシュ223にアクセスする。ロードがL1キャッシュ223でミスした場合、ロードユニット222.Lはアンコア230のL2キャッシュにアクセスしなければならない。また実行ユニットEU1〜EUN、EULは、リオーダバッファ224にバス252を通じて接続されている。さらに、ロードユニットEULは、リオーダバッファ224にバスMISS 253を通じて接続されている。リオーダバッファ224は、リプレイマルチプレクサ214にバスREPLAY258を通じて接続され、リタイアユニット225にバス257を通じて接続されている。リタイアユニット225は、レジスタファイル226に書き戻しWBバス255を通じて接続されている。
【0035】
図2に示されたコアステージは、今日のスーパースカラ、即ち「アウトオブオーダー」プロセッサコア201の単なる例示であり、本発明を明確に教示する目的で提示されていることが指摘される。当業者が理解するように、プロセッサコアステージは、アーキテクチャ及び対象の用途によって異なり得る。
【0036】
動作中、プログラム命令(図示せず)がフェッチユニット211によってメモリからフェッチされる。x86互換プロセッサコア201の場合、これらのプログラム命令は、x86 ISAに適合する。プログラム命令は、トランスレータ212にバス241上で順番に提供される。トランスレータ212は、プログラム命令により指定された操作を実行するために、対応する実行ユニットEU1〜EUN、EULにサブ操作を指示する1つ又は複数のマイクロ命令にプログラム命令を変換する。マイクロ命令は、リネームユニット213にバス242上で提供される。リネームユニット213において、一部のマイクロ命令で指定されているアーキテクチャレジスタ(即ち、オペランドのレジスタ位置)が、プロセッサコア201のハードウェアレジスタ(図示せず)に再マップされる。これは、独立したマイクロ命令ストリームの実行並列性を高めるためである。またリネームユニット213は、連続的なプログラム順に応じて、各マイクロ命令にタグ付けする。マイクロ命令のソースオペランドフィールド及びデスティネーションオペランドフィールドにも、1つ又は複数のオペランドが依存する新しいマイクロ命令のタグがタグ付けされる。リネーム済みマイクロ命令は、リプレイマルチプレクサ214にバス243上で提供される。
【0037】
リプレイマルチプレクサ214は、複数の機能をアウトオブオーダープロセッサコア201で実行する。主として、マルチプレクサ214は、リネーム済み各マイクロ命令のオペコードを読み取って、実行のための適切な実行ユニットEU1〜EUN、EULを判断する。たとえば、リネームされた整数マイクロ命令はEU1により実行され、浮動小数点マイクロ命令はEU2により実行される、という具合である。そして本出願で特に興味深いのは、リネームされたロードマイクロ命令が、ロード実行ユニットEULにより実行され得ることである。よって、リプレイマルチプレクサ214は、1つ又は複数のリネーム済みマイクロ命令を、1つ又は複数のリザベーションステーションRS1〜RSN、RSLに提供して、対応する実行ユニットEU1〜EUN、EULへのディスパッチを待機させる。
【0038】
各リザベーションステーションRS1〜RSN、RSLは、レジスタファイル226にアクセスして、キューイングされているリネーム済みマイクロ命令の操作に必要なオペランドを読み取る。古いリネーム済みマイクロ命令のタグがタグ付けされていないリネーム済みマイクロ命令(即ち、古いリネーム済みマイクロ命令に依存していないリネーム済みマイクロ命令)は、対応する実行ユニットEU1〜EUN、EULにすぐにディスパッチされて実行される。従属するリネーム済みマイクロ命令(即ち、まだ実行が完了していない古いリネーム済みマイクロ命令のタグを含む、リネーム済みマイクロ命令)は、通常はタグ付けされた従属オペランドが利用可能になるまで、リザベーションステーションRS1〜RSN、RSLにより保持される。タグ付けされた従属オペランドが利用可能になると、それらのオペランドが従属するリネーム済みマイクロ命令に提供され、それらのマイクロ命令が対応する実行ユニットEU1〜EUN、EULにディスパッチされて実行される。実行ユニットEU1〜EUN、EULは、マイクロ命令を実行していないときに、節電機能を実行することもできる。通常、実行ユニットEU1〜EUN、EULの内部のクロックは、マイクロ命令を実行していないときはシャットダウンされ、それによって電力が大幅に節約される。
【0039】
リネーム済みマイクロ命令及びその結果は、リオーダバッファ224にバス252を通じて提供される。リオーダバッファは、リネーム済みマイクロ命令のアウトオブオーダー実行のすべての結果を、プログラム順に戻す。つまり、リネームされたプログラムレジスタからの結果は、対応するアーキテクチャレジスタに再マップされ、指定されたプログラム実行順序に応じてアーキテクチャレジスタに入れるためにキューイングされる。実行が正常に完了して適切な結果が得られたマイクロ命令は、リタイアユニット225にバス257上で提供される。これらのリタイア済みマイクロ命令の結果は、レジスタファイル226にWBバス255上で書き戻される。
【0040】
当業者が理解するように、リネーム済みマイクロ命令の実行を失敗させ得る条件はいくつかある。たとえば、プログラムの例外、一般的な割り込み、I/O割り込み、分岐(branch)例外などがあるが、これらに限定されない。リオーダバッファが、リネーム済みマイクロ命令が正常に実行されなかったと判断した場合、そのリネーム済みマイクロ命令を、実行のためにディスパッチされたすべての新しいリネーム済みマイクロ命令と共に再実行(「リプレイ」)しなければならない。よって、リオーダバッファ224は、正常に実行されなかったリネーム済みマイクロ命令のタグをリプレイバス258で提供することにより、リプレイイベントを開始する。
【0041】
正常に実行されなかったリネーム済みマイクロ命令のタグがリプレイマルチプレクサ214に提供されると、それに応じてリプレイマルチプレクサ214は、REPLAY258でタグが提供されたリネーム済みマイクロ命令から始まるリネーム済みマイクロ命令の実行に適合するように、マシン状態をバックアップする。
【0042】
また当業者は、パフォーマンスを向上させるために、マイクロプロセッサの設計者が命令の実行方法に関する仮定をしばしば行うことを理解する。たとえば、技術分野において、かなりの割合のブランチが分岐しないことがよく知られている。よって、フェッチユニット211は、そのような仮定に基づいて実行用の命令をキューイングするように構成され得る。ブランチが分岐しない場合、全体的な実行速度が向上する。ブランチが分岐した場合、そのブランチよりも古いすべての命令を、分岐したプログラムパスの命令で置換する必要がある。
【0043】
マイクロプロセッサの設計者が行うもう1つの仮定は、ロードマイクロ命令が指定されたクロックサイクル数でL1キャッシュ223にヒットするというものである。この仮定は、L1キャッシュのヒット統計、たとえば90パーセントのヒット率と、設計上L1キャッシュ223にアクセスするために必要なクロックサイクル数とに基づく。本願の目的では、L1キャッシュ223へのアクセスに4クロックサイクルを要すると想定するが、そのような数は命令の目的に合わせて選択される。その他の数のクロックサイクルも考えられる。
【0044】
よって、リザベーションステーションRS1〜RSNは、古いロードマイクロ命令に対応するタグを有するリネーム済みマイクロ命令を、その古いロード命令のディスパッチから4クロックサイクルまでストールさせ、その後リネーム済みマイクロ命令を対応する実行ユニットEU1〜EUNにディスパッチするロジックを含み得る。このとき、古いロードマイクロ命令が4クロックサイクル以内でL1キャッシュ223にヒットし、タグ付けされたオペランドが準備できたことが仮定されている。
図2には示されていないが、さらに実行ユニットEU1〜EUN、EULは、ロード操作により利用可能となったオペランドにアクセスし、それらのオペランドを現在実行中のマイクロ命令に提供し得ることが指摘される。L1キャッシュ223にヒットしたロードについては、ディスパッチされた新しい従属マイクロ命令にオペランドが提供され、それらの新しいマイクロ命令が、他の方法で提供されたときよりもはるかに高速に実行を完了する。しかし、L1キャッシュでミスしたロード(ヒット率が90パーセントと仮定される場合は約10パーセントの時間)については、ロードが正常に完了した後、ヒットするという仮定の下でディスパッチされたすべての新しい従属マイクロ命令をリプレイしなければならない。よって、L1キャッシュ223でミスした場合、ロード実行ユニットEULは、ミスしたロード命令のタグをバスMISS253で示すことによりその旨をリオーダバッファ224に通知して、新しい従属命令のリプレイを開始する。
【0045】
そのようなスキームは、パフォーマンスの観点から見て非常に効果的である。これは、今日のキャッシュ223のほとんどが、極めて効率的だからである。よって、推定されるキャッシュアクセスのクロックサイクル数(たとえば、4クロックサイクル)に基づいて、ロードマイクロ命令に従属するすべてのマイクロ命令を、そのロード命令のディスパッチから複数のクロックサイクルにわたりストールさせるのが一般的である。従属マイクロ命令は、それぞれのリザベーションステーションRS1〜RSNでストールし、ロードマイクロ命令で指定されたオペランドがL1キャッシュ223から利用可能であると仮定されるときにディスパッチされる。通常、このアクセラレーションスキームは、すべてのロード命令に対して利用される。これには、L1キャッシュ223以外のリソースにアクセスするロード命令も含まれる。これらの種類のロード命令は、メモリロード命令と比べて稀にしか実行されないため、メモリ以外のリソースにアクセスするロード命令のリプレイに関連するパフォーマンスへの影響は、概ね許容される。よって、ロードマイクロ命令が正常に実行する(即ち、「解決する」)ために指定されたクロックサイクル数(この例では4クロックサイクル)よりも多くを要する場合、ロード実行ユニットEULは、バスMISSでミスを宣言し、それによって新しい従属マイクロ命令をロードの完了後にリプレイさせる。
【0046】
上述した手法は、過去数十年にわたり、スーパースカラプロセッサ201のパフォーマンスの向上に役立ってきた。しかし、本発明者は、このスキームを
図1に示すようなマルチコアプロセッサ構成に適用する場合に、新たな課題が生じることに気付いた。より詳細には、そのようなスキームは、L1キャッシュ223へのアクセスが大半を占める構成では極めて効果的だが、アンコアリソース230へのアクセスが増えつつあるマルチコアプロセッサ構成に適用した場合には、あまり電力効率が良くない。なぜなら、アンコアリソース230へのアクセス時間は、今日のL1キャッシュ223へのアクセス時間と比べて、非常に低速だからである。
【0047】
これは、ヒューズアレイ108、バスユニット105(キャッシュ不可のロードの場合)、APIC107、I/Oユニット106、そしておそらくはL2キャッシュ103、RAM104などのアンコアリソース230に具体的に向けられたすべてのロードマイクロ命令が、そうしたアンコアリソース230からのロードのタグを含む新しい従属マイクロ命令のリプレイを招くことを意味する。そして本発明者は、パフォーマンスへの影響はそれほどではないものの、これらの新しい従属マイクロ命令の無駄な初期実行により、電力が著しく消費されることに気付いた。これは、リプレイされることが確実なロードマイクロ命令が実行ユニットEU1〜EUNにディスパッチされ、本来であれば電源管理メカニズムにより節約される電力が利用されるからである。
【0048】
本発明は、今日のロードメカニズムの上述した制限及びその他の制限を、新規なスキームに基づいてロードリプレイの回数を低減することによりアウトオブオーダーマルチコアプロセッサで電力を節約する装置及び方法を提供することにより克服する。これについて、
図3〜
図7を参照しながら以下に説明する。
【0049】
図3を参照すると、非コアリソースからのロードのための節電メカニズムを備えた本発明のマルチコアプロセッサを示すブロック
図300が提示されている。ブロック
図300は、4つのプロセッサコア301が配置されたデバイスダイ310を示している。4つのコア301は、本発明を明瞭に教示する目的でのみ示されており、以下に説明する原理及び詳細は、非コアリソースからの特定のロード操作のアクセス時間がオンコアキャッシュのアクセス時間よりも長い、任意の数のコア301を備えるプロセッサに適用できることが指摘される。
【0050】
図1のマルチコアプロセッサと同様に、本発明のマルチコアプロセッサは、典型的にはコア301と同じダイ310に配置されるアンコアリソース302を含み得る。アンコアリソース302は、各コア301により高速バス311〜314を通じてアクセスされる。したがって
図300は、L2キャッシュ303、ランダムアクセスメモリ(RAM)304、バスユニット305、入力/出力ユニット306、APIC307、ヒューズアレイ308などであるがこれらに限定されない例示的な共有リソースを示す。よって、バスB1 311は、CORE1 301がアンコア302にアクセスすることを可能にする。バスB2 312は、CORE2 301がアンコア302にアクセスすることを可能にする。バスB3 313は、CORE3 301がアンコア302にアクセスすることを可能にする。バスB4 314は、CORE4 301がアンコア302にアクセスすることを可能にする。典型的な構成では、マルチコアプロセッサは、デバイスダイ310の外部にある、システムメモリ(メモリバスMEMを通じてアクセス)、入力/出力要素(バスI/Oを通じてアクセス)、システム制御要素(バスCTRLを通じてアクセス)などであるがこれらに限定されない他の要素(図示せず)に接続される。制御要素は、周辺構成要素相互接続エクスプレス(PCI−e)要素、周辺構成要素相互接続(PCI)要素、ユニバーサルシリアルバス(USB)要素、グラフィックアダプタ、コプロセッサ、及びプロセッサ間通信要素を含み得るが、これらに限定されない。
【0051】
図1のマルチコアプロセッサとは対照的に、本発明のマルチコアプロセッサは、リプレイ低減装置要素320を各コア301内に備える。一実施形態では、リプレイ低減装置320は、オンコアキャッシュ(図示せず)以外のリソースに向けられたロードを検出し、それらのロードが解決するまで、すべての新しい従属マイクロ命令のディスパッチをストールさせ、本来であればリプレイイベントを発生させるすべての指示のアサーションを除外するように構成されている。よって、コア301内の1つ又は複数の実行ユニット(図示せず)は、新しい従属マイクロ命令のディスパッチをストールさせることにより電力管理モードに入り、それによって本来であればダイ310で浪費される電力を節約することができる。
【0052】
動作中、オペレーティングシステムの制御下にある各コア301は、システムメモリからフェッチされた関連する命令を実行することができ、対象の用途に対応するオペランドを操作する。1つ又は複数のコア301は、1つ又は複数のアンコアリソース302にアクセスすることが必要な場合があり、対応するバスB1〜B4を通じて、制御された態様で、それら1つ又は複数のアンコアリソース302にアクセスする。たとえば、電源初期化時に、1つ又は複数のコア301は、ヒューズアレイ308からのロード操作を実行して構成パラメータを取得することができ、又はRAM304からのロードを実行してマイクロコードのパッチ及び/又は他の構成情報を取得することができる。通常の動作時に、コア301はL2キャッシュ303にアクセスして、システムメモリからキャッシュされた可能性がありオンコアキャッシュ(たとえば、L1キャッシュ)に存在していないメモリオペランドを読み取る/書き込むことができる。コア301は、バスユニット305にアクセスしてシステムメモリとの間で読み取り/書き込みを実行することができ、又はI/Oユニット306を利用してI/Oバスを通じてI/O操作を実行することができる。コア301は、バスユニット305にアクセスして制御要素との間で制御データの読み取り/書き込みを行うことができる。コア301は、さらにAPIC307にアクセスして割り込み操作を実行することができる。
【0053】
これらのアンコア302からのロードの結果としてミスを自動的に宣言して新しい従属マイクロ命令ストリームをリプレイさせる代わりに、リプレイ低減装置320は、ロードが解決するまで新しい従属マイクロ命令ストリームの実行をストールさせ、それによって実行ユニットの電力管理機能を利用できるようにする。一実施形態では、リプレイ低減装置320は、具体的にアンコアリソース302に向けられているわけではないが、ミスの指示を招くことが確実である他の種類のロードをも検出し得る。これらの他の種類のロードは、I/Oロード、指定されたサイクル数を必要とするロード、第2レベルアドレス変換に関連するロード(即ち、ネステッドページング、x86拡張ページテーブルロード)などページテーブルウォークを必要とすることが既知であるロード、x86特殊バスサイクル(たとえば、シャットダウン、停止、フラッシュなど)の実行により生じるロード、及びキャッシュ不可のメモリ領域又は書き込み結合領域に解決されることが既知であるロードを含むが、これらに限定されない。他の実施形態では、完了するために指定されたサイクル数よりも多くを必要とする可能性が極めて高い任意の種類のロード操作を検出することを意図する。
【0054】
図4を参照すると、
図3に示す各コア301の例示的なコアステージを示すブロック
図400が提示されている。このブロック図は、ダイ310に配置されたプロセッサコア401を示している。コア401はフェッチステージ411を含み、このフェッチステージがトランスレータステージ412にバス441を通じて接続されている。トランスレータステージ412は、リネームステージ413にバス442を通じて接続されている。リネームステージ413は、リプレイマルチプレクサステージ414にバス443を通じて接続されている。リプレイマルチプレクサ414は、複数のリザベーションステーションRS1〜RSN 421.1〜421.Nと、拡張ロードリザベーションステーションERSL421.Lとに、リザベーション及び保持バスHOLDY444を通じて接続されている。リザベーションステーションERSLは、アンコアストール要素461を含む。各リザベーションステーションRS1〜RSN、ERSLは、対応する実行ユニットEU1〜EUN 422.1〜422.N、EUL422.Lに、対応するディスパッチバス451.1〜451.N、451.Lを通じて接続されている。リザベーションステーションRS1〜RSN、ERSLは、レジスタファイル426にレジスタバス445を通じて接続されている。
【0055】
実行ユニットEULを除き、他の実行ユニットEU1〜EUNは、整数ユニット、浮動小数点ユニット、マルチメディアユニット、ストアユニットなど、今日のスーパースカラプロセッサに典型的なユニットを含み得る。実行ユニットEULは、ロードユニット422.Lであり、その主な機能は、
図3を参照しながら上述したシステムメモリ、システムI/O、及びアンコアリソース430を含むがこれらに限定されない多様なリソースからオペランドをロードすることである。実行ユニットEULは、アンミス要素UMISS462をさらに含む。
【0056】
よって、ロードユニットEULは、L1キャッシュ423にバス454を通じて接続され、アンコア430にバス456を通じて接続されている。メモリオペランドについて、ロードユニット422.LはまずL1キャッシュ423にアクセスする。ロードがL1キャッシュ423でミスした場合、ロードユニット422.Lはアンコア430のL2キャッシュ(図示せず)にアクセスしなければならない。また実行ユニットEU1〜EUN、EULは、リオーダバッファ424にバス452を通じて接続されている。さらに、ロードユニットEULは、リオーダバッファ424にバスMISS453を通じて接続されている。リオーダバッファ424は、リプレイマルチプレクサ414にバスREPLAY458を通じて接続され、リタイアユニット425にバス457を通じて接続され、リザベーションステーションRS1〜RSN、ERSLにHOLDYバス444を通じて接続されている。リタイアユニット425は、レジスタファイル426に書き戻しWBバス455を通じて接続されている。
【0057】
図4に示されたコアステージは、本発明の側面を明瞭に教示するための例として提示されていることが指摘される。なぜなら、これらのコアステージは、今日のアウトオブオーダープロセッサコアの例示であるからである。ただし、当業者は本明細書に記載された本発明の側面及び特徴を、アーキテクチャ及び対象の用途に応じて要求され得る他のプロセッサコアステージ構成に適用できることが指摘される。
【0058】
動作中、プログラム命令(図示せず)がフェッチユニット411によってメモリ(図示せず)からフェッチされる。x86互換プロセッサコア401の場合、これらのプログラム命令は、x86 ISAに適合する。プログラム命令は、トランスレータ412にバス441上で順番に提供される。トランスレータ412は、プログラム命令により指定された操作を実行するために、対応する実行ユニットEU1〜EUN、EULにサブ操作を指示する1つ又は複数のマイクロ命令にプログラム命令を変換する。マイクロ命令は、リネームユニット413にバス442上で提供される。リネームユニット413において、一部のマイクロ命令で指定されているアーキテクチャレジスタ(即ち、オペランドのレジスタ位置)が、プロセッサコア401のハードウェアレジスタ(図示せず)に再マップされる。これは、独立したマイクロ命令ストリームの実行並列性を高めるためである。またリネームユニット413は、連続的なプログラム順に応じて、各マイクロ命令にタグ付けする。マイクロ命令のソースオペランドフィールド及びデスティネーションオペランドフィールドにも、1つ又は複数のオペランドが依存する新しいマイクロ命令のタグがタグ付けされる。リネーム済みマイクロ命令は、リプレイマルチプレクサ414にバス443上で提供される。
【0059】
リプレイマルチプレクサ414は、リネームされた各マイクロ命令のオペコードを読み取って、実行のための適切な実行ユニットEU1〜EUN、EULを判断する。詳細には、リネームされたロードマイクロ命令は、ロード実行ユニットEULにより実行される。よって、リプレイマルチプレクサ414は、1つ又は複数のリネーム済みマイクロ命令を、1つ又は複数のリザベーションステーションRS1〜RSN、ERSLに提供して、対応する実行ユニットEU1〜EUN、EULへのディスパッチを待機させる。
【0060】
各リザベーションステーションRS1〜RSN、ERSLは、レジスタファイル426にアクセスして、キューイングされているリネーム済みマイクロ命令の操作に必要なオペランドを読み取る。古いリネーム済みマイクロ命令のタグがタグ付けされていないリネーム済みマイクロ命令(即ち、古いリネーム済みマイクロ命令に依存していないリネーム済みマイクロ命令)は、対応する実行ユニットEU1〜EUN、EULにすぐにディスパッチされて実行される。後述する例外を除き、従属する新しいリネーム済みマイクロ命令(即ち、まだ実行が完了していない古いリネーム済みマイクロ命令のタグを含む、リネーム済みマイクロ命令)は、通常はタグ付けされた従属オペランドが利用可能になるまで、リザベーションステーションRS1〜RSN、ERSLにより保持される。タグ付けされた従属オペランドが利用可能になると、それらのオペランドが従属する新しいリネーム済みマイクロ命令に提供され、それらの新しいマイクロ命令が対応する実行ユニットEU1〜EUN、EULにディスパッチされて実行される。実行ユニットEU1〜EUN、EULは、マイクロ命令を実行していないときに、節電機能を実行することもできる。実行ユニットEU1〜EUN、EULの内部のクロックは、マイクロ命令を実行していないときはシャットダウンされ、それによって電力が大幅に節約される。
【0061】
リネーム済みマイクロ命令及びその結果は、リオーダバッファ424にバス452を通じて提供される。リオーダバッファ424は、リネーム済みマイクロ命令のアウトオブオーダー実行のすべての結果を、プログラム順に戻す。つまり、リネームされたプログラムレジスタからの結果は、対応するアーキテクチャレジスタに再マップされ、指定されたプログラム実行順序に応じてアーキテクチャレジスタに入れるためにキューイングされる。実行が正常に完了して適切な結果が得られたマイクロ命令は、リタイアユニット425にバス457上で提供される。これらのリタイア済みマイクロ命令の結果は、レジスタファイル426にWBバス455上で書き戻される。
【0062】
リオーダバッファ424が、リネーム済みマイクロ命令が正常に実行されなかったと判断した場合、そのリネーム済みマイクロ命令を、実行用にディスパッチされたすべての新しい従属リネーム済みマイクロ命令と共にリプレイしなければならない。よって、リオーダバッファ424は、正常に実行されなかったリネーム済みマイクロ命令のタグをリプレイバス458で提供することにより、リプレイイベントを開始する。
【0063】
正常に実行されなかったリネーム済みマイクロ命令のタグがリプレイマルチプレクサ414に提供されると、それに応じてリプレイマルチプレクサ414は、REPLAY458でタグが提供されたリネーム済みマイクロ命令から始まるリネーム済みマイクロ命令の実行に適合するように、マシン状態をバックアップする。
【0064】
後述する例外を除き、本発明は、新しいロードマイクロ命令に依存するマイクロ命令を、そのロードマイクロ命令が指定されたクロックサイクル数でL1キャッシュ423にヒットすると想定して、そのロードマイクロ命令がディスパッチされてから指定されたクロックサイクル数にわたりストールするように構成されたリザベーションステーションRS1〜RSNを含む。一実施形態では、指定されたクロックサイクル数は4クロックサイクルである。その他の数のクロックサイクルも考えられる。
【0065】
よって、後述する例外を除き、リザベーションステーションRS1〜RSNは、古いロードマイクロ命令に対応するタグを有するリネーム済みマイクロ命令を、その古いロード命令のディスパッチから4クロックサイクルまでストールさせ、その後リネーム済みの新しいマイクロ命令を対応する実行ユニットEU1〜EUNにディスパッチするロジックを含む。このとき、古いロードマイクロ命令が4クロックサイクル以内でL1キャッシュ423にヒットし、タグ付けされたオペランドが準備できたことが仮定されている。
図4には示されていないが、さらに実行ユニットEU1〜EUN、EULは、ロード操作により利用可能となったオペランドにアクセスし、それらのオペランドを現在実行中のマイクロ命令に提供し得ることが指摘される。L1キャッシュ423にヒットしたロードなど、指定されたサイクル数未満で完了したロードについては、ディスパッチされた新しい従属マイクロ命令にオペランドが提供され、それらの新しいマイクロ命令が、他の方法で提供されたときよりもはるかに高速に実行を完了する。L1キャッシュにおいてミスしたロードなど、指定されたクロックサイクルよりも多くを要するロードについては、ロードが正常に完了した後、ヒットするという仮定の下でディスパッチされたすべての新しい従属マイクロ命令をリプレイしなければならない。よって、L1キャッシュ423でミスした場合、ロード実行ユニットEULは、ミスしたロード命令のタグをバスMISS453で示すことによりその旨をリオーダバッファ424に通知して、新しい命令のリプレイを開始する。
【0066】
しかし、本発明はまた、アンコアストールロジック461を拡張ロードリザベーションステーションERSL421.Lに含めることにより、上述したアクセラレーションスキームの例外を提供する。アンコアストールロジック461は、1つ又は複数のロードマイクロ命令タイプを検出して、それら1つ又は複数のロードマイクロ命令タイプのマイクロ命令に依存する新しいマイクロ命令を、そのオペランドが利用可能になるまでストールさせることにより、1つ又は複数の実行ユニットEU1〜EUNで節電を実装する。またアンミスロジック462は、1つ又は複数のロードマイクロ命令タイプを検出して、それら1つ又は複数のロードマイクロ命令タイプのマイクロ命令がオペランドを取得するために指定されたクロックサイクル数よりも多くを必要とする場合に、バスMISS453でのミスのアサーションを除外する。これにより、1つ又は複数のロードマイクロ命令タイプのマイクロ命令が実行を完了することが可能となり、1つ又は複数のマイクロ命令タイプのマイクロ命令に依存する新しいマイクロ命令がリザベーションステーションRS1〜RSNでストールされているため、それらの新しいマイクロ命令のリプレイが不要になる。一実施形態では、リザベーションステーションRS1〜RSN、ERSLは、1つ又は複数のマイクロ命令タイプの検出されたマイクロ命令に関する情報(たとえば、タグ)を相互間で通信し、及びバスHOLDY444を通じてリオーダバッファ424に通信して、新しい従属マイクロ命令のストールを開始する。1つ又は複数のロードマイクロ命令タイプのマイクロ命令が実行を完了すると、リオーダバッファ424は、完了した1つ又は複数のロードマイクロ命令タイプのマイクロ命令のタグをHOLDY444で提供することにより、ストールされた新しい従属マイクロ命令を解放してディスパッチさせるようリザベーションステーションRS1〜RSNに指示する。
【0067】
有利なことに、本発明は、システムメモリからキャッシュされたオペランドに対応するロードマイクロ命令に関するパフォーマンスを効率化し、1つ又は複数のマイクロ命令タイプのロードマイクロ命令に関連するリプレイの回数を実質的に低減する。それにより、実行ユニットEU1〜EUNが、実装された従属関係のストールによって空になったときに、節電モードに入れるようにする。
【0068】
したがって、たとえば、ヒューズアレイ308、バスユニット305、APIC307、I/Oユニット306、L2キャッシュ303、RAM304などのアンコアリソース430に具体的に向けられたロードマイクロ命令により、アンコアリソース430からのそれらのロードのタグを有する新しい従属マイクロ命令がリプレイされることがなくなる。
【0069】
一実施形態では、1つ又は複数のロードマイクロ命令タイプは、指定されたアンコアリソース430からのロードを、他のタイプのロードと共に含み得る。この他のタイプのロードは、I/Oロード、特定のサイクル数を必要とするロード、ページテーブルウォークを必要とすることが既知であるシステムメモリからのロード、x86特殊バスサイクル(たとえば、シャットダウン、停止、フラッシュなど)の実行により生じるロード、キャッシュ不可のメモリ領域に解決されることが既知であるロード、及び書き込み結合メモリ領域に解決されることが既知であるロードを含むが、これらに限定されない。他の実施形態では、完了するために指定されたサイクル数よりも多くを必要とする可能性が極めて高い任意の種類のロード操作を検出することを意図する。
【0070】
一実施形態では、アンコアストール要素461とアンミス要素462とは、本発明のプロセッサコア401の初期化(たとえば、電源投入又はリセット)時に、規定のロードマイクロ命令タイプを検出するように構成され得る。規定のロードマイクロ命令タイプは、初期化時に、ヒューズアレイ308の指定された位置から読み込まれ得る。別の実施形態では、各コア401は、プログラミングを通じて、異なるタイプの規定のロードマイクロ命令をヒューズアレイ308で検出するように構成され得る。ここで、各コア401に関連するタイプは、ヒューズアレイ308の対応する位置に対してプログラムされ得る。さらなる実施形態では、規定のロードマイクロ命令タイプは、マルチコアデバイス310へのジョイントテストアクショングループ(JTAG)インターフェイス(図示せず)を通じて、電源投入時又はリセット時にRAM304に対してプログラムされ得る。規定のロードマイクロ命令タイプは、その後の初期化時にRAM304の指定された位置から読み込まれる。
【0071】
図5を参照すると、
図4のアンコアストール要素461の詳細を示すブロック
図500が提示されている。ストール要素461は、アンコアロードオペコード検出ロジック501に接続されたマイクロ命令レジスタ510を含む。マイクロ命令レジスタ510は、マイクロ命令タグフィールドOP TAG511と、オペコードフィールドMICRO OP512と、ソースAフィールドSRC A513と、タグAフィールドTAG A514と、ソースBフィールドSRC B515と、タグBフィールドTAG B516と、ソースCフィールドSRC C517と、タグCフィールドTAG C518とを含む。検出ロジック501は、バス444に結び付けられたホールド信号HOLDYを生成する。
【0072】
当業者が理解するように、x86 ISAなどの今日のISAは、直接(direct)、間接(indirect)、イミディエイト(immediate)、及び相対(relative)を含むが、これらに限定されない複数の異なるオペランドアドレッシングモードを提供する。結果として、ソースフィールドSRC A〜Cの1つ又は複数はオペランドを含み得、1つ又は複数はオペランドの位置(結果のデスティネーションを含む)を指定し得る。そこで、ストール要素461の動作について、本願を多数のISAに幅広く適用できるよう、ソースフィールドSRC A〜Cの内容に関しては総称的に触れながら説明する。
【0073】
動作的に言うと、マイクロ命令がリプレイマルチプレクサ414により提供されると、ロードマイクロ命令がマイクロ命令レジスタ510に入力される。OP TAGは、レジスタ510の現在のマイクロ命令のタグを含み、MICRO OPは、そのオペコードを含む。TAG Aの内容は、SRC Aの内容が依存する古いマイクロ命令のタグを含み得る。TAG Bの内容は、SRC Bの内容が依存する古いマイクロ命令のタグを含み得る。TAG Cの内容は、SRC Cの内容が依存する古いマイクロ命令のタグを含み得る。検出ロジック501は、MICRO OPの内容を読み取るように構成されている。MICRO OPが、レジスタ510内の現在のマイクロ命令に依存する他のリザベーションステーションRS1〜RSN内の新しいマイクロ命令をストールさせる上述した規定のロードオペコードのいずれかを含んでいない場合、検出ロジック501はHOLDYをデアサートし、それによってRS1〜RSNに対してそれらの新しいマイクロ命令をいずれディスパッチしてもよいことを示す。しかし、MICRO OPが、レジスタ510内の現在のマイクロ命令に依存する他のリザベーションステーションRS1〜RSN内の新しいマイクロ命令をストールさせる上述した規定のロードオペコードのいずれかを含んでいる場合、検出ロジック501はHOLDYをアサートし、OP TAGの内容をバス444に置き、それによってRS1〜RSNに対して、レジスタ510内の現在のマイクロ命令により規定されるロードが完了し、ロードの結果が新しい従属マイクロ命令に提供されるまで、それらの新しいマイクロ命令をストールさせなければならないことを示す。ロードが完了すると、リオーダバッファ424はHOLDYをデアサートし、それによってストールを解放する。
【0074】
図6を参照すると、
図4のリザベーションステーションRS1〜RSNのそれぞれの詳細を示すブロック図が提示されている。リザベーションステーションは、従属確認ロジック601に接続されたマイクロ命令レジスタ610を含む。マイクロ命令レジスタ610は、マイクロ命令タグフィールドOP TAG611と、オペコードフィールドMICRO OP612と、ソースAフィールドSRC A613と、タグAフィールドTAG A614と、ソースBフィールドSRC B615と、タグBフィールドTAG B616と、ソースCフィールドSRC C617と、タグCフィールドTAG C618とを含む。従属確認ロジック601は、レディ信号READYを生成し、バス444に結び付けられたホールド信号HOLDYを監視する。
【0075】
レジスタ610のフィールド611〜618の内容は、
図5を参照して上述した同様の名前のフィールドと同じである。確認ロジック601は、ソースタグフィールドTAG A〜Cの内容を読み取るようにさらに構成される。タグフィールドTAG A〜Cのいずれかの内容がアサート時にHOLDYのタグと一致する場合、レジスタ610内のマイクロ命令は、レジスタ610内のマイクロ命令が依存するロードマイクロ命令が完了し、ロードを通じて得られたオペランドが対応するソースフィールドSRC A〜Cに提供され、リオーダバッファ424がHOLDYをデアサートするまで、ストールさせられる。HOLDYがデアサートされると、確認ロジック601がREADYをアサートして、レジスタ610内のマイクロ命令を対応する実行ユニットEU1〜EUNにディスパッチする準備ができたことを示す。
【0076】
タグフィールドTAG A〜Cのいずれかの内容がアサート時にHOLDYのタグと一致しない場合、確認ロジック601はREADYをアサートして、レジスタ610内のマイクロ命令を対応する実行ユニットEU1〜EUNにディスパッチする準備ができたことを示す。
【0077】
図7を参照すると、
図4のアンコアミス要素462の詳細を示すブロック
図700が提示されている。アンコアミス要素462は、ロードミス除外ロジック701に接続されたマイクロ命令レジスタ710を含む。マイクロ命令レジスタ710は、マイクロ命令タグフィールドOP TAG711と、オペコードフィールドMICRO OP712と、ソースAフィールドSRC A713と、タグAフィールドTAG A714と、ソースBフィールドSRC B715と、タグBフィールドTAG B716と、ソースCフィールドSRC C717と、タグCフィールドTAG C718とを含む。ミス除外ロジック701は、ノーミス信号NOMISSを生成する。
【0078】
レジスタ710のフィールド711〜718の内容は、
図5及び
図6を参照して上述した同様の名前のフィールドと同じである。除外ロジック701は、MICRO OPの内容を読み取るように構成されている。MICRO OPが、新しい従属マイクロ命令をストールさせる上述した規定のロードオペコードのいずれかを含んでいない場合、ロードミス除外ロジック701は、信号NOMISSをデアサートし、それによって対応するロード実行ユニットEUL422.Lに、信号MISSの状態を通常のロード命令実行手続きに従って管理するよう通知する。MICRO OPが規定のオペコードのいずれかを含んでいる場合、除外ロジック701はNOMISSをアサートし、それによって対応するロード実行ユニットEUL422.Lに、レジスタ710のマイクロ命令の実行時にMISSのアサーションを除外するよう通知する。
【0079】
本発明の上述した要素は、本明細書に記載された機能及び操作を実行するように構成される。本発明の要素は、ロジック、回路、デバイス、若しくはマイクロコード(即ち、マイクロ命令若しくはネイティブ命令)、又はロジック、回路、デバイス、若しくはマイクロコードの組合せ、又は本発明の上述した機能及び操作を実行するために利用される等価の要素を含む。これらの操作及び機能を達成するために利用される要素は、マルチコアマイクロプロセッサ内の他の機能及び/又は操作を実行するために利用される他の回路、マイクロコードなどと共有され得る。
【0080】
本発明及び対応する詳細な説明の各部分は、ソフトウェア、即ちコンピュータメモリ内でのデータビットの操作のアルゴリズム及び記号表現で表される。これらの説明及び表現は、当業者がその作業の実体を他の当業者に効果的に伝えるためのものである。本明細書で使用される意味、及び一般的に使用される意味でのアルゴリズムとは、所望の目的に至る一連の自己矛盾のないステップと理解される。これらのステップは、物理量を物理的に操作することを必要とする。通常、必須ではないものの、これらの物理量は、格納し、移動し、組合せ、比較し、及びその他の方法で操作することができる、光学的、電気的、又は磁気的な信号の形式をとる。これらの信号をビット、値、要素、記号、文字、用語、数字などとして表すことは、特に共通使用のために、往々にして便利であることが立証されている。
【0081】
ただし、これらの用語及び同様の用語のすべては適切な物理量と関連付けられるものであり、これらの物理量に適用される便利なラベルに過ぎないことに留意すべきである。特に明記されない限り、又は記載から明らかであるように、「処理」、「演算」、「計算」、「判断」、「表示」などの用語は、コンピュータシステムのレジスタ及びメモリ内で物理的かつ電子的な量として表されたデータを操作して、コンピュータシステムのメモリやレジスタなどの情報ストレージ、送信デバイス、又はディスプレイデバイス内で物理量として同様に表された他のデータに変換する、コンピュータシステム、マイクロプロセッサ、中央処理装置、又は同様の電子コンピューティングデバイスの動作及びプロセスを意味する。
【0082】
また、本発明のソフトウェアにより実装される側面は、典型的には何らかの形式のプログラムストレージ媒体で符号化され、又は何らかの種類の伝送媒体で実装されることに留意されたい。プログラムストレージ媒体は、電子的(たとえば、読み取り専用メモリ、読み取り専用フラッシュメモリ、電子的プログラム可能読み取り専用メモリ、ランダムアクセスメモリ)、磁気的(たとえば、フロッピー(登録商標)ディスク又はハードドライブ)、又は光学的(たとえば、コンパクトディスク読み取り専用メモリ、即ち「CD−ROM」)であり得、読み取り専用又はランダムアクセス可能であり得る。同様に、伝送媒体は、金属トレース、ツイストペア(twisted wire pair)、同軸ケーブル、光ファイバ、又は技術分野で知られるその他の何らかの適切な伝送媒体であり得る。本発明は、特定の実装のこれらの側面によって限定されない。
【0083】
上記で開示された特定の実施形態は、あくまでも例示のためのものである。当業者は、開示された概念及び特定の実施形態を基盤として容易に使用して、本発明と同じ目的を達成する他の構造を設計又は修正できること、並びに添付の特許請求の範囲に記載された本発明の範囲から逸脱せずに、多様な変更、交換、及び代替を加えられることを理解する。