JP6286065B2 - アウトオブオーダープロセッサの書き込み結合メモリ領域アクセスに依存するロードリプレイを除外する装置及び方法 - Google Patents

アウトオブオーダープロセッサの書き込み結合メモリ領域アクセスに依存するロードリプレイを除外する装置及び方法 Download PDF

Info

Publication number
JP6286065B2
JP6286065B2 JP2016564427A JP2016564427A JP6286065B2 JP 6286065 B2 JP6286065 B2 JP 6286065B2 JP 2016564427 A JP2016564427 A JP 2016564427A JP 2016564427 A JP2016564427 A JP 2016564427A JP 6286065 B2 JP6286065 B2 JP 6286065B2
Authority
JP
Japan
Prior art keywords
load
microinstruction
core
load microinstruction
bus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016564427A
Other languages
English (en)
Other versions
JP2017503294A (ja
Inventor
コル,ジェラード,エム
エディー,コリン
ヘンリー,ジー,グレン
Original Assignee
ヴィア アライアンス セミコンダクター カンパニー リミテッド
ヴィア アライアンス セミコンダクター カンパニー リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ヴィア アライアンス セミコンダクター カンパニー リミテッド, ヴィア アライアンス セミコンダクター カンパニー リミテッド filed Critical ヴィア アライアンス セミコンダクター カンパニー リミテッド
Publication of JP2017503294A publication Critical patent/JP2017503294A/ja
Application granted granted Critical
Publication of JP6286065B2 publication Critical patent/JP6286065B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/507Low-level

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Microcomputers (AREA)

Description

本発明は、一般的にはマイクロエレクトロニクスの分野に関し、より詳細には、アウトオブオーダープロセッサのロードリプレイを軽減する節電メカニズムに関する。
集積デバイス技術は、過去40年間で飛躍的に進歩した。マイクロプロセッサ分野について詳細には、4ビット単一命令の10マイクロメートルのデバイスから始まったものが、半導体製造技術の進歩により、アーキテクチャ及び密度の点でますます複雑なデバイスを設計することが可能となった。80年代及び90年代には、単一のダイに搭載された数百万個のトランジスタを含む、いわゆるパイプラインマイクロプロセッサやスーパースカラマイクロプロセッサが開発された。それから20年を経た現在、単一のダイに搭載された数十億のトランジスタを備え、データ処理用の複数のマイクロプロセッサコアを含む、32ナノメートルのデバイスが製造されている。
今日のマルチコアプロセッサにおける命令並列性の採用に加えて、アウトオブオーダー実行(out−of−order execution)メカニズムもまた普及している。アウトオブオーダー実行の原理によると、命令は、実行ユニットによる実行のためにリザベーションステーションにキューイングされ、古い命令の実行結果であるオペランドを待機している命令のみがリザベーションステーションで保持される。オペランドを待機していない命令は、実行のためにディスパッチされる。実行に続いて、結果がキューイングされ、典型的にはリタイア状態と呼ばれるプロセッサステージで、レジスタに正しい順序で戻される。よって、命令は元のプログラム順と異なる順序で実行される。
アウトオブオーダー実行はスループットを大幅に向上させる。これは、本来であればアイドル状態となる実行ユニットを利用して、古い命令がオペランドを待機している間に新しい命令を実行するからである。ただし、当業者が理解するように、命令は必ずしも正常に実行されるとは限らない。結果として、ある命令が正常に実行されなかった場合、その命令と、その命令よりも新しいすべての命令とを、再び実行しなければならない。この概念は「リプレイ(”replay”)」と呼ばれている。これは、今日のプロセッサのメカニズムが、現在の実行を基本的に停止し、命令が異常実行された直前のポイントまでマシン状態を後退させ、異常実行された命令と、その命令よりも新しいすべての命令とをリプレイするからである。新しい命令は、異常実行された命令のディスパッチよりも前にディスパッチされている場合と、そうでない場合とがある。
ただし、リプレイは例外的なケースであり、リプレイがパフォーマンスに与える影響は、多くの場合は無視できる。しかし、オペランドが利用できるまで命令をリザベーションステーションで保持することのパフォーマンス面での影響は甚大であり、マイクロプロセッサの設計者は、特定の命令を、そのオペランドが実行の直前に利用可能となる可能性が高い場合にディスパッチできるようにするアクセラレーション手法を開発した。これらの特定の命令がディスパッチされるだけでなく、これらの特定の命令に必要なオペランドを適時に提供するメカニズムも設けられる。
本願は、そのようなアクセラレーション手法の1つに対処する。このアクセラレーション手法では、オンコアの(on−core)キャッシュメモリに存在する可能性が高いと予想されるオペランドを必要とする新しい命令が、実行されることでそのオペランドのキャッシュからの取得を可能にするロード命令がディスパッチされてから、指定されたクロックサイクル数の後にディスパッチされる。よって、ロード命令がディスパッチされたとき、そのオペランドを待機している新しい命令は、指定されたクロックサイクル数が発生するまで、それぞれのリザベーションステーションでストール(stall)される。その後、必要なオペランドが利用可能になるという高い確実性を持って、それらの新しい命令が実行のためにディスパッチされる。
上述したアクセラレーション手法を利用することによるパフォーマンスの向上は非常に大きいため、マイクロプロセッサのアーキテクトは、通常、ほとんどのロード命令(I/Oからのロード、キャッシュ不可のロード、割り込みレジスタからのロード、特殊ロードなど)にこの手法を適用する。ただし、オペランドを取得するために指定されたサイクル数よりも多くを要し、よってオペランドが利用可能になるという見込みでディスパッチされた新しい命令のすべてをリプレイすることが必要となるロード命令が存在することも確かである。このロードアクセラレーション手法によるパフォーマンスの向上は、稀に生じるリプレイによるパフォーマンスの低下を補って余りある。
しかし、マルチコアプロセッサ技術が進化し続ける中、設計者は、レベル2(L2)キャッシュ、割り込みコントローラ、ヒューズアレイなどの頻繁にアクセスされない特定のプロセッサリソースを、各コア内で複製するのではなく、マルチコアプロセッサダイの共通領域に配置するほうがよいと考えている。つまり、これら上述のリソースは、プロセッサコアによって共有される。当業者が理解するように、オペランドをオフコアの(off−core)リソース(たとえば、ヒューズアレイ)からロードするには、オンコアのリソース(たとえば、L1キャッシュ)からのロードに必要な時間よりもかなり長い時間がかかる。そして上述したアクセラレーション手法の下でディスパッチされた新しい命令をリプレイしなければならないことにより生じるパフォーマンス低下は甚大ではないが、電力利用への影響は大きく、かなりの数の命令が、リプレイを余儀なくされることが事実上確実な条件の下で実行されていることが、本発明者により確認された。また、これらの命令の最初の実行で電力が必然的に浪費されるため、電池寿命、熱プロファイル、及び信頼性の観点で不利である。
そのため、必要なリプレイの数を減らすことにより、プロセッサで電力を節約することを可能にする装置及び方法が求められている。
加えて、アウトオブオーダープロセッサの節電を実現する、同プロセッサのロードリプレイ低減メカニズムが求められている。
本発明は、数ある出願の中でも特に、上述した問題を解決すると共に、先行技術の他の問題、欠点、及び制限に対処することを目的としている。
本発明の一側面は、アウトオブオーダープロセッサでのリプレイを低減する装置に関する。この装置は、第1のリザベーションステーションと、第2のリザベーションステーションとを備える。第1のリザベーションステーションは、第1のロードマイクロ命令をディスパッチするように構成され、かつ第1のロードマイクロ命令がオンコアのキャッシュメモリ以外の規定のリソースからオペランドを取得するようになされた指定されたロードマイクロ命令であるかを検出して保持バス上で示すように構成される。第2のリザベーションステーションは、保持バスに接続され、第1のロードマイクロ命令に依存する1つ又は複数の新しいマイクロ命令を、第1のロードマイクロ命令がディスパッチされてから第1のクロックサイクル数の後に、実行のためにディスパッチするように構成され、保持バス上で第1のロードマイクロ命令が指定されたロードマイクロ命令であることが示されている場合に、1つ又は複数の新しいマイクロ命令のディスパッチを、第1のロードマイクロ命令がオペランドを取得するまでストールさせるように構成される。複数の非コア(non−core)リソースは、ジョイントテストアクショングループインターフェイスを通じてアウトオブオーダープロセッサに対応する複数の指定されたロード命令を用いてプログラムされたランダムアクセスメモリを含み、アウトオブオーダープロセッサは、初期化時に、複数の指定されたロード命令を判断するためにランダムアクセスメモリにアクセスする。
本発明の別の側面は、リプレイを低減する装置に関する。装置は、複数のコアを含むマルチコアプロセッサを含む。複数のコアのそれぞれは、第1のリザベーションステーションと、第2のリザベーションステーションとを備える。第1のリザベーションステーションは、第1のロードマイクロ命令をディスパッチするように構成され、かつ第1のロードマイクロ命令がオンコアのキャッシュメモリ以外の規定のリソースからオペランドを取得するようになされた指定されたロードマイクロ命令であるかを検出して保持バス上で示すように構成される。第2のリザベーションステーションは、保持バスに接続され、第1のロードマイクロ命令に依存する1つ又は複数の新しいマイクロ命令を、第1のロードマイクロ命令がディスパッチされてから第1のクロックサイクル数の後に、実行のためにディスパッチするように構成され、かつ保持バス上で第1のロードマイクロ命令が指定されたロードマイクロ命令であることが示されている場合に、1つ又は複数の新しいマイクロ命令のディスパッチを、第1のロードマイクロ命令がオペランドを取得するまでストールさせるように構成される。複数の非コアリソースは、ジョイントテストアクショングループインターフェイスを通じてアウトオブオーダープロセッサに対応する複数の指定されたロード命令を用いてプログラムされたランダムアクセスメモリを含み、マルチコアプロセッサは、初期化時に、複数の指定されたロード命令を判断するためにランダムアクセスメモリにアクセスする。
本発明のさらなる側面は、アウトオブオーダープロセッサでのリプレイを低減する方法に関する。方法は、ジョイントテストアクショングループインターフェイスを通じてアウトオブオーダープロセッサに対応する複数の指定されたロード命令を用いてプログラムされたランダムアクセスメモリを含む複数の非コアリソースを配置するステップと、初期化時に、複数の指定されたロード命令を判断するためにランダムアクセスメモリにアクセスするステップと、第1のリザベーションステーションを通じて、第1のロードマイクロ命令をディスパッチし、第1のロードマイクロ命令がオンコアのキャッシュメモリ以外の規定のリソースからオペランドを取得するようになされx86特殊バスサイクルの実行により得られるロード命令を含む指定されたロードマイクロ命令であるか否かを検出して保持バス上で示すステップと、保持バスに接続された第2のリザベーションステーションを通じて、第1のロードマイクロ命令に依存する1つ又は複数の新しいマイクロ命令を、第1のロードマイクロ命令がディスパッチされてから第1のクロックサイクル数後に実行のためにディスパッチし、保持バス上で第1のロードマイクロ命令が指定されたロードマイクロ命令であることが示されている場合は、1つ又は複数の新しいマイクロ命令のディスパッチを、第1のロードマイクロ命令がオペランドを取得するまでストールさせるステップとを含む。
産業上の利用可能性に関し、本発明は、汎用又は専用のコンピューティングデバイスで使用され得るマイクロプロセッサ内で実装される。
本発明の上記及び他の目的、特徴、及び利点は、以下の説明及び添付の図面を参照することで、よりよく理解される。
各コアの外部に配置された共通リソースを利用する今日のマルチコアプロセッサを示すブロック図である。 図1に示す今日の各コアの例示的なコアステージを示すブロック図である。 非コアリソースからのロードのための節電メカニズムを備えた本発明のマルチコアプロセッサを示すブロック図である。 図3に示す各コアの例示的なコアステージを示すブロック図である。 図4に示すアンコア(uncore)ストール要素の詳細を示すブロック図である。 図4に示す各リザベーションステーションの詳細を示すブロック図である。 図4に示すアンコアミス要素の詳細を示すブロック図である。
本発明の例示的かつ例証的な実施形態について以下に説明する。明瞭性を考慮して、本明細書では実際の実装のすべての特徴については説明しない。当業者は、そのような実際の実施形態を発展させる過程で、具体的な目的を達成するために、実装に固有のさまざまな意思決定がなされることを理解する。そうした意思決定には、システム関連及びビジネス関連の制約への準拠など、実装ごとに異なるものが含まれる。さらに、そのような開発努力は複雑で時間がかかるものとなる可能性があるが、それでも本開示の利益を受ける当業者にとってはありふれた作業であろうことが理解される。好ましい実施形態に対する多様な変更は当業者にとって明白であり、本明細書で定義された一般原理は他の実施形態にも適用され得る。よって、本発明は本明細書で図示及び説明された特定の実施形態に限定されることを意図したものではなく、本明細書で開示される原理及び新規な特徴に一致する最も広い範囲が与えられる。
本発明について、添付の図面を参照しながら以下に説明する。さまざまな構造、システム、及びデバイスが、図面に概略的に示されている。これらは説明のみを目的としており、また当業者にとって既知である詳細事項によって本発明が不明瞭にならないようにしている。しかしながら添付の図面は、本発明の例証的な例について記述及び説明するために用意されている。本明細書で使用される用語及びフレーズは、それらの用語及びフレーズの関連分野における当業者による理解と一致する意味を持つものとして理解及び解釈されるべきである。用語又はフレーズの特殊な定義(即ち、当業者により理解される通常かつ慣例的な意味と異なる定義)を、その用語又はフレーズの本明細書での一貫した使用により暗示することは意図されていない。用語又はフレーズが特殊な意味(即ち、当業者による理解と異なる意味)を持つことが意図されている場合、そのような特殊な定義は、それらの用語又はフレーズの特殊な定義を直接かつ明白に提供する定義の態様で、本明細書において明示的に説明される。
定義
集積回路(IC):典型的にはシリコンである半導体材料の小片の上に組み立てられた、一群の電子回路。よってICは、チップ、マイクロチップ、又はダイとも呼ばれる。
中央処理装置(CPU):算術演算、論理演算、及び入力/出力演算を含むデータ操作を実行することで、コンピュータプログラム(「コンピュータアプリケーション」又は「アプリケーション」とも呼ばれる)の命令を実行する電子回路(即ち、「ハードウェア」)。
マイクロプロセッサ:単一の集積回路でCPUとして機能する電子デバイス。マイクロプロセッサは、デジタルデータを入力として受け取り、メモリ(オンダイ又はオフダイ)からフェッチした命令に応じてデータを処理し、命令により規定された操作の結果を出力として生成する。汎用マイクロプロセッサは、デスクトップコンピュータ、モバイルコンピュータ、又はタブレットコンピュータで利用されることがあり、計算、テキスト編集、マルチメディア表示、インターネット閲覧などの用途に利用される。またマイクロプロセッサは、組み込みシステムに配置されて、アプライアンス、携帯電話、スマートフォン、産業用制御デバイスなどの幅広いデバイスを制御し得る。
マルチコアプロセッサ:マルチコアマイクロプロセッサとも呼ばれるマルチコアプロセッサは、単一の集積回路上に組み立てられた複数のCPU(「コア」)を備えるマイクロプロセッサである。
命令セットアーキテクチャ(ISA)又は命令セット:データ型、命令、レジスタ、アドレッシングモード、メモリアーキテクチャ、割り込み及び例外処理、並びに入力/出力を含む、コンピュータアーキテクチャのプログラミングに関連する部分。ISAは、一群のオペコード(即ち、機械語命令)の仕様と、特定のCPUにより実装されるネイティブ命令とを含む。
x86互換マイクロプロセッサ:x86 ISAに基づいてプログラムされたコンピュータアプリケーションを実行できるマイクロプロセッサ。
マイクロコード:複数のマイクロ命令を示すために利用される用語。マイクロ命令(「ネイティブ命令」とも呼ばれる)は、マイクロプロセッサのサブユニットが実行するレベルでの命令である。例示的なサブユニットには、整数ユニット、浮動小数点ユニット、マルチメディア(MMX)ユニット、及びロード/ストアユニットがある。たとえば、マイクロ命令は、縮小命令セットコンピュータ(RISC)マイクロプロセッサにより直接実行される。x86互換マイクロプロセッサなどの複合命令セットコンピュータ(CISC)マイクロプロセッサの場合、x86命令が関連するマイクロ命令に変換され、関連するマイクロ命令がCISCマイクロプロセッサ内のサブユニットにより直接実行される。
ヒューズ:典型的にはフィラメントとして配置される導電性構造であり、フィラメントの全体に電圧を加えることにより、及び/又はフィラメントを通じて電流を流すことにより、選択位置で破損させることができる。ヒューズは、すべての潜在的なプログラム可能領域にフィラメントを作成するために、既知の組み立て手法を使用して、ダイ微細構成(die topography)全域の指定された領域に配置され得る。ヒューズ構造は、ダイに配置された対応するデバイスの所望のプログラミング性を実現するために、組み立て後に飛ばされる(又は飛ばされない)。
マルチコアプロセッサのロードメカニズム及び非コアリソースからのロード操作を実行するために今日のマルチコアプロセッサ内で利用されている関連手法の上述した背景説明に鑑みて、それらの今日の手法の制限及び欠点を、図1及び図2を参照しながら説明する。それに続いて、本発明について図3〜図7を参照しながら説明する。
図1を参照すると、各コア101の外部に配置された共通リソースを利用する今日のマルチコアプロセッサを示すブロック図100が提示されている。ブロック図100は、4つのプロセッサコア101が配置されたデバイスダイ110を示している。本発明者は、明瞭性を目的として、本明細書ではクワッドコア(即ち、4つのコア101)のマルチコアマイクロプロセッサについて説明することを指摘する。しかし、本発明の原理及び特徴は、異なる数のコア101を備えたマルチコアマイクロプロセッサにも適用することができる。
当業者が理解するように、設計及び/又はビジネスに関連する理由により、アーキテクトは特定のプロセッサリソースをコア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を通じてアクセス)などの他の要素に接続される。
動作中、オペレーティングシステムの制御下にある各コア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にアクセスして割り込み操作を実行することができる。
図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を通じて接続されている。
本発明者は、実行ユニットEULの外部で、他の実行ユニットEU1〜EUNが、整数ユニット、浮動小数点ユニット、マルチメディアユニット、ストアユニットなど、今日のスーパースカラプロセッサに典型的なユニットを含み得ることを指摘する。本願で特に興味深いのは、実行ユニットEULである。このユニットは、ロードユニット222.Lとして図示されており、その主な機能は、図1を参照しながら上述したシステムメモリ、システムI/O、アンコアリソース230などの多様なリソースからオペランドをロードすることである。
よって、ロードユニット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を通じて接続されている。
図2に示されたコアステージは、今日のスーパースカラ、即ち「アウトオブオーダー」プロセッサコア201の単なる例示であり、本発明を明確に教示する目的で提示されていることが指摘される。当業者が理解するように、プロセッサコアステージは、アーキテクチャ及び対象の用途によって異なり得る。
動作中、プログラム命令(図示せず)がフェッチユニット211によってメモリからフェッチされる。x86互換プロセッサコア201の場合、これらのプログラム命令は、x86 ISAに適合する。プログラム命令は、トランスレータ212にバス241上で順番に提供される。トランスレータ212は、プログラム命令により指定された操作を実行するために、対応する実行ユニットEU1〜EUN、EULにサブ操作を指示する1つ又は複数のマイクロ命令にプログラム命令を変換する。マイクロ命令は、リネームユニット213にバス242上で提供される。リネームユニット213において、一部のマイクロ命令で指定されているアーキテクチャレジスタ(即ち、オペランドのレジスタ位置)が、プロセッサコア201のハードウェアレジスタ(図示せず)に再マップされる。これは、独立したマイクロ命令ストリームの実行並列性を高めるためである。またリネームユニット213は、連続的なプログラム順に応じて、各マイクロ命令にタグ付けする。マイクロ命令のソースオペランドフィールド及びデスティネーションオペランドフィールドにも、1つ又は複数のオペランドが依存する新しいマイクロ命令のタグがタグ付けされる。リネーム済みマイクロ命令は、リプレイマルチプレクサ214にバス243上で提供される。
リプレイマルチプレクサ214は、複数の機能をアウトオブオーダープロセッサコア201で実行する。主として、マルチプレクサ214は、リネーム済み各マイクロ命令のオペコードを読み取って、実行のための適切な実行ユニットEU1〜EUN、EULを判断する。たとえば、リネームされた整数マイクロ命令はEU1により実行され、浮動小数点マイクロ命令はEU2により実行される、という具合である。そして本出願で特に興味深いのは、リネームされたロードマイクロ命令が、ロード実行ユニットEULにより実行され得ることである。よって、リプレイマルチプレクサ214は、1つ又は複数のリネーム済みマイクロ命令を、1つ又は複数のリザベーションステーションRS1〜RSN、RSLに提供して、対応する実行ユニットEU1〜EUN、EULへのディスパッチを待機させる。
各リザベーションステーションRS1〜RSN、RSLは、レジスタファイル226にアクセスして、キューイングされているリネーム済みマイクロ命令の操作に必要なオペランドを読み取る。古いリネーム済みマイクロ命令のタグがタグ付けされていないリネーム済みマイクロ命令(即ち、古いリネーム済みマイクロ命令に依存していないリネーム済みマイクロ命令)は、対応する実行ユニットEU1〜EUN、EULにすぐにディスパッチされて実行される。従属するリネーム済みマイクロ命令(即ち、まだ実行が完了していない古いリネーム済みマイクロ命令のタグを含む、リネーム済みマイクロ命令)は、通常はタグ付けされた従属オペランドが利用可能になるまで、リザベーションステーションRS1〜RSN、RSLにより保持される。タグ付けされた従属オペランドが利用可能になると、それらのオペランドが従属するリネーム済みマイクロ命令に提供され、それらのマイクロ命令が対応する実行ユニットEU1〜EUN、EULにディスパッチされて実行される。実行ユニットEU1〜EUN、EULは、マイクロ命令を実行していないときに、節電機能を実行することもできる。通常、実行ユニットEU1〜EUN、EULの内部のクロックは、マイクロ命令を実行していないときはシャットダウンされ、それによって電力が大幅に節約される。
リネーム済みマイクロ命令及びその結果は、リオーダバッファ224にバス252を通じて提供される。リオーダバッファは、リネーム済みマイクロ命令のアウトオブオーダー実行のすべての結果を、プログラム順に戻す。つまり、リネームされたプログラムレジスタからの結果は、対応するアーキテクチャレジスタに再マップされ、指定されたプログラム実行順序に応じてアーキテクチャレジスタに入れるためにキューイングされる。実行が正常に完了して適切な結果が得られたマイクロ命令は、リタイアユニット225にバス257上で提供される。これらのリタイア済みマイクロ命令の結果は、レジスタファイル226にWBバス255上で書き戻される。
当業者が理解するように、リネーム済みマイクロ命令の実行を失敗させ得る条件はいくつかある。たとえば、プログラムの例外、一般的な割り込み、I/O割り込み、分岐(branch)例外などがあるが、これらに限定されない。リオーダバッファが、リネーム済みマイクロ命令が正常に実行されなかったと判断した場合、そのリネーム済みマイクロ命令を、実行のためにディスパッチされたすべての新しいリネーム済みマイクロ命令と共に再実行(「リプレイ」)しなければならない。よって、リオーダバッファ224は、正常に実行されなかったリネーム済みマイクロ命令のタグをリプレイバス258で提供することにより、リプレイイベントを開始する。
正常に実行されなかったリネーム済みマイクロ命令のタグがリプレイマルチプレクサ214に提供されると、それに応じてリプレイマルチプレクサ214は、REPLAY258でタグが提供されたリネーム済みマイクロ命令から始まるリネーム済みマイクロ命令の実行に適合するように、マシン状態をバックアップする。
また当業者は、パフォーマンスを向上させるために、マイクロプロセッサの設計者が命令の実行方法に関する仮定をしばしば行うことを理解する。たとえば、技術分野において、かなりの割合のブランチが分岐しないことがよく知られている。よって、フェッチユニット211は、そのような仮定に基づいて実行用の命令をキューイングするように構成され得る。ブランチが分岐しない場合、全体的な実行速度が向上する。ブランチが分岐した場合、そのブランチよりも古いすべての命令を、分岐したプログラムパスの命令で置換する必要がある。
マイクロプロセッサの設計者が行うもう1つの仮定は、ロードマイクロ命令が指定されたクロックサイクル数でL1キャッシュ223にヒットするというものである。この仮定は、L1キャッシュのヒット統計、たとえば90パーセントのヒット率と、設計上L1キャッシュ223にアクセスするために必要なクロックサイクル数とに基づく。本願の目的では、L1キャッシュ223へのアクセスに4クロックサイクルを要すると想定するが、そのような数は命令の目的に合わせて選択される。その他の数のクロックサイクルも考えられる。
よって、リザベーションステーションRS1〜RSNは、古いロードマイクロ命令に対応するタグを有するリネーム済みマイクロ命令を、その古いロード命令のディスパッチから4クロックサイクルまでストールさせ、その後リネーム済みマイクロ命令を対応する実行ユニットEU1〜EUNにディスパッチするロジックを含み得る。このとき、古いロードマイクロ命令が4クロックサイクル以内でL1キャッシュ223にヒットし、タグ付けされたオペランドが準備できたことが仮定されている。図2には示されていないが、さらに実行ユニットEU1〜EUN、EULは、ロード操作により利用可能となったオペランドにアクセスし、それらのオペランドを現在実行中のマイクロ命令に提供し得ることが指摘される。L1キャッシュ223にヒットしたロードについては、ディスパッチされた新しい従属マイクロ命令にオペランドが提供され、それらの新しいマイクロ命令が、他の方法で提供されたときよりもはるかに高速に実行を完了する。しかし、L1キャッシュでミスしたロード(ヒット率が90パーセントと仮定される場合は約10パーセントの時間)については、ロードが正常に完了した後、ヒットするという仮定の下でディスパッチされたすべての新しい従属マイクロ命令をリプレイしなければならない。よって、L1キャッシュ223でミスした場合、ロード実行ユニットEULは、ミスしたロード命令のタグをバスMISS253で示すことによりその旨をリオーダバッファ224に通知して、新しい従属命令のリプレイを開始する。
そのようなスキームは、パフォーマンスの観点から見て非常に効果的である。これは、今日のキャッシュ223のほとんどが、極めて効率的だからである。よって、推定されるキャッシュアクセスのクロックサイクル数(たとえば、4クロックサイクル)に基づいて、ロードマイクロ命令に従属するすべてのマイクロ命令を、そのロード命令のディスパッチから複数のクロックサイクルにわたりストールさせるのが一般的である。従属マイクロ命令は、それぞれのリザベーションステーションRS1〜RSNでストールし、ロードマイクロ命令で指定されたオペランドがL1キャッシュ223から利用可能であると仮定されるときにディスパッチされる。通常、このアクセラレーションスキームは、すべてのロード命令に対して利用される。これには、L1キャッシュ223以外のリソースにアクセスするロード命令も含まれる。これらの種類のロード命令は、メモリロード命令と比べて稀にしか実行されないため、メモリ以外のリソースにアクセスするロード命令のリプレイに関連するパフォーマンスへの影響は、概ね許容される。よって、ロードマイクロ命令が正常に実行する(即ち、「解決する」)ために指定されたクロックサイクル数(この例では4クロックサイクル)よりも多くを要する場合、ロード実行ユニットEULは、バスMISSでミスを宣言し、それによって新しい従属マイクロ命令をロードの完了後にリプレイさせる。
上述した手法は、過去数十年にわたり、スーパースカラプロセッサ201のパフォーマンスの向上に役立ってきた。しかし、本発明者は、このスキームを図1に示すようなマルチコアプロセッサ構成に適用する場合に、新たな課題が生じることに気付いた。より詳細には、そのようなスキームは、L1キャッシュ223へのアクセスが大半を占める構成では極めて効果的だが、アンコアリソース230へのアクセスが増えつつあるマルチコアプロセッサ構成に適用した場合には、あまり電力効率が良くない。なぜなら、アンコアリソース230へのアクセス時間は、今日のL1キャッシュ223へのアクセス時間と比べて、非常に低速だからである。
これは、ヒューズアレイ108、バスユニット105(キャッシュ不可のロードの場合)、APIC107、I/Oユニット106、そしておそらくはL2キャッシュ103、RAM104などのアンコアリソース230に具体的に向けられたすべてのロードマイクロ命令が、そうしたアンコアリソース230からのロードのタグを含む新しい従属マイクロ命令のリプレイを招くことを意味する。そして本発明者は、パフォーマンスへの影響はそれほどではないものの、これらの新しい従属マイクロ命令の無駄な初期実行により、電力が著しく消費されることに気付いた。これは、リプレイされることが確実なロードマイクロ命令が実行ユニットEU1〜EUNにディスパッチされ、本来であれば電源管理メカニズムにより節約される電力が利用されるからである。
本発明は、今日のロードメカニズムの上述した制限及びその他の制限を、新規なスキームに基づいてロードリプレイの回数を低減することによりアウトオブオーダーマルチコアプロセッサで電力を節約する装置及び方法を提供することにより克服する。これについて、図3〜図7を参照しながら以下に説明する。
図3を参照すると、非コアリソースからのロードのための節電メカニズムを備えた本発明のマルチコアプロセッサを示すブロック図300が提示されている。ブロック図300は、4つのプロセッサコア301が配置されたデバイスダイ310を示している。4つのコア301は、本発明を明瞭に教示する目的でのみ示されており、以下に説明する原理及び詳細は、非コアリソースからの特定のロード操作のアクセス時間がオンコアキャッシュのアクセス時間よりも長い、任意の数のコア301を備えるプロセッサに適用できることが指摘される。
図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)要素、グラフィックアダプタ、コプロセッサ、及びプロセッサ間通信要素を含み得るが、これらに限定されない。
図1のマルチコアプロセッサとは対照的に、本発明のマルチコアプロセッサは、リプレイ低減装置要素320を各コア301内に備える。一実施形態では、リプレイ低減装置320は、オンコアキャッシュ(図示せず)以外のリソースに向けられたロードを検出し、それらのロードが解決するまで、すべての新しい従属マイクロ命令のディスパッチをストールさせ、本来であればリプレイイベントを発生させるすべての指示のアサーションを除外するように構成されている。よって、コア301内の1つ又は複数の実行ユニット(図示せず)は、新しい従属マイクロ命令のディスパッチをストールさせることにより電力管理モードに入り、それによって本来であればダイ310で浪費される電力を節約することができる。
動作中、オペレーティングシステムの制御下にある各コア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にアクセスして割り込み操作を実行することができる。
これらのアンコア302からのロードの結果としてミスを自動的に宣言して新しい従属マイクロ命令ストリームをリプレイさせる代わりに、リプレイ低減装置320は、ロードが解決するまで新しい従属マイクロ命令ストリームの実行をストールさせ、それによって実行ユニットの電力管理機能を利用できるようにする。一実施形態では、リプレイ低減装置320は、具体的にアンコアリソース302に向けられているわけではないが、ミスの指示を招くことが確実である他の種類のロードをも検出し得る。これらの他の種類のロードは、I/Oロード、指定されたサイクル数を必要とするロード、第2レベルアドレス変換に関連するロード(即ち、ネステッドページング、x86拡張ページテーブルロード)などページテーブルウォークを必要とすることが既知であるロード、x86特殊バスサイクル(たとえば、シャットダウン、停止、フラッシュなど)の実行により生じるロード、及びキャッシュ不可のメモリ領域又は書き込み結合領域に解決されることが既知であるロードを含むが、これらに限定されない。他の実施形態では、完了するために指定されたサイクル数よりも多くを必要とする可能性が極めて高い任意の種類のロード操作を検出することを意図する。
図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を通じて接続されている。
実行ユニットEULを除き、他の実行ユニットEU1〜EUNは、整数ユニット、浮動小数点ユニット、マルチメディアユニット、ストアユニットなど、今日のスーパースカラプロセッサに典型的なユニットを含み得る。実行ユニットEULは、ロードユニット422.Lであり、その主な機能は、図3を参照しながら上述したシステムメモリ、システムI/O、及びアンコアリソース430を含むがこれらに限定されない多様なリソースからオペランドをロードすることである。実行ユニットEULは、アンミス要素UMISS462をさらに含む。
よって、ロードユニット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を通じて接続されている。
図4に示されたコアステージは、本発明の側面を明瞭に教示するための例として提示されていることが指摘される。なぜなら、これらのコアステージは、今日のアウトオブオーダープロセッサコアの例示であるからである。ただし、当業者は本明細書に記載された本発明の側面及び特徴を、アーキテクチャ及び対象の用途に応じて要求され得る他のプロセッサコアステージ構成に適用できることが指摘される。
動作中、プログラム命令(図示せず)がフェッチユニット411によってメモリ(図示せず)からフェッチされる。x86互換プロセッサコア401の場合、これらのプログラム命令は、x86 ISAに適合する。プログラム命令は、トランスレータ412にバス441上で順番に提供される。トランスレータ412は、プログラム命令により指定された操作を実行するために、対応する実行ユニットEU1〜EUN、EULにサブ操作を指示する1つ又は複数のマイクロ命令にプログラム命令を変換する。マイクロ命令は、リネームユニット413にバス442上で提供される。リネームユニット413において、一部のマイクロ命令で指定されているアーキテクチャレジスタ(即ち、オペランドのレジスタ位置)が、プロセッサコア401のハードウェアレジスタ(図示せず)に再マップされる。これは、独立したマイクロ命令ストリームの実行並列性を高めるためである。またリネームユニット413は、連続的なプログラム順に応じて、各マイクロ命令にタグ付けする。マイクロ命令のソースオペランドフィールド及びデスティネーションオペランドフィールドにも、1つ又は複数のオペランドが依存する新しいマイクロ命令のタグがタグ付けされる。リネーム済みマイクロ命令は、リプレイマルチプレクサ414にバス443上で提供される。
リプレイマルチプレクサ414は、リネームされた各マイクロ命令のオペコードを読み取って、実行のための適切な実行ユニットEU1〜EUN、EULを判断する。詳細には、リネームされたロードマイクロ命令は、ロード実行ユニットEULにより実行される。よって、リプレイマルチプレクサ414は、1つ又は複数のリネーム済みマイクロ命令を、1つ又は複数のリザベーションステーションRS1〜RSN、ERSLに提供して、対応する実行ユニットEU1〜EUN、EULへのディスパッチを待機させる。
各リザベーションステーションRS1〜RSN、ERSLは、レジスタファイル426にアクセスして、キューイングされているリネーム済みマイクロ命令の操作に必要なオペランドを読み取る。古いリネーム済みマイクロ命令のタグがタグ付けされていないリネーム済みマイクロ命令(即ち、古いリネーム済みマイクロ命令に依存していないリネーム済みマイクロ命令)は、対応する実行ユニットEU1〜EUN、EULにすぐにディスパッチされて実行される。後述する例外を除き、従属する新しいリネーム済みマイクロ命令(即ち、まだ実行が完了していない古いリネーム済みマイクロ命令のタグを含む、リネーム済みマイクロ命令)は、通常はタグ付けされた従属オペランドが利用可能になるまで、リザベーションステーションRS1〜RSN、ERSLにより保持される。タグ付けされた従属オペランドが利用可能になると、それらのオペランドが従属する新しいリネーム済みマイクロ命令に提供され、それらの新しいマイクロ命令が対応する実行ユニットEU1〜EUN、EULにディスパッチされて実行される。実行ユニットEU1〜EUN、EULは、マイクロ命令を実行していないときに、節電機能を実行することもできる。実行ユニットEU1〜EUN、EULの内部のクロックは、マイクロ命令を実行していないときはシャットダウンされ、それによって電力が大幅に節約される。
リネーム済みマイクロ命令及びその結果は、リオーダバッファ424にバス452を通じて提供される。リオーダバッファ424は、リネーム済みマイクロ命令のアウトオブオーダー実行のすべての結果を、プログラム順に戻す。つまり、リネームされたプログラムレジスタからの結果は、対応するアーキテクチャレジスタに再マップされ、指定されたプログラム実行順序に応じてアーキテクチャレジスタに入れるためにキューイングされる。実行が正常に完了して適切な結果が得られたマイクロ命令は、リタイアユニット425にバス457上で提供される。これらのリタイア済みマイクロ命令の結果は、レジスタファイル426にWBバス455上で書き戻される。
リオーダバッファ424が、リネーム済みマイクロ命令が正常に実行されなかったと判断した場合、そのリネーム済みマイクロ命令を、実行用にディスパッチされたすべての新しい従属リネーム済みマイクロ命令と共にリプレイしなければならない。よって、リオーダバッファ424は、正常に実行されなかったリネーム済みマイクロ命令のタグをリプレイバス458で提供することにより、リプレイイベントを開始する。
正常に実行されなかったリネーム済みマイクロ命令のタグがリプレイマルチプレクサ414に提供されると、それに応じてリプレイマルチプレクサ414は、REPLAY458でタグが提供されたリネーム済みマイクロ命令から始まるリネーム済みマイクロ命令の実行に適合するように、マシン状態をバックアップする。
後述する例外を除き、本発明は、新しいロードマイクロ命令に依存するマイクロ命令を、そのロードマイクロ命令が指定されたクロックサイクル数でL1キャッシュ423にヒットすると想定して、そのロードマイクロ命令がディスパッチされてから指定されたクロックサイクル数にわたりストールするように構成されたリザベーションステーションRS1〜RSNを含む。一実施形態では、指定されたクロックサイクル数は4クロックサイクルである。その他の数のクロックサイクルも考えられる。
よって、後述する例外を除き、リザベーションステーションRS1〜RSNは、古いロードマイクロ命令に対応するタグを有するリネーム済みマイクロ命令を、その古いロード命令のディスパッチから4クロックサイクルまでストールさせ、その後リネーム済みの新しいマイクロ命令を対応する実行ユニットEU1〜EUNにディスパッチするロジックを含む。このとき、古いロードマイクロ命令が4クロックサイクル以内でL1キャッシュ423にヒットし、タグ付けされたオペランドが準備できたことが仮定されている。図4には示されていないが、さらに実行ユニットEU1〜EUN、EULは、ロード操作により利用可能となったオペランドにアクセスし、それらのオペランドを現在実行中のマイクロ命令に提供し得ることが指摘される。L1キャッシュ423にヒットしたロードなど、指定されたサイクル数未満で完了したロードについては、ディスパッチされた新しい従属マイクロ命令にオペランドが提供され、それらの新しいマイクロ命令が、他の方法で提供されたときよりもはるかに高速に実行を完了する。L1キャッシュにおいてミスしたロードなど、指定されたクロックサイクルよりも多くを要するロードについては、ロードが正常に完了した後、ヒットするという仮定の下でディスパッチされたすべての新しい従属マイクロ命令をリプレイしなければならない。よって、L1キャッシュ423でミスした場合、ロード実行ユニットEULは、ミスしたロード命令のタグをバスMISS453で示すことによりその旨をリオーダバッファ424に通知して、新しい命令のリプレイを開始する。
しかし、本発明はまた、アンコアストールロジック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に指示する。
有利なことに、本発明は、システムメモリからキャッシュされたオペランドに対応するロードマイクロ命令に関するパフォーマンスを効率化し、1つ又は複数のマイクロ命令タイプのロードマイクロ命令に関連するリプレイの回数を実質的に低減する。それにより、実行ユニットEU1〜EUNが、実装された従属関係のストールによって空になったときに、節電モードに入れるようにする。
したがって、たとえば、ヒューズアレイ308、バスユニット305、APIC307、I/Oユニット306、L2キャッシュ303、RAM304などのアンコアリソース430に具体的に向けられたロードマイクロ命令により、アンコアリソース430からのそれらのロードのタグを有する新しい従属マイクロ命令がリプレイされることがなくなる。
一実施形態では、1つ又は複数のロードマイクロ命令タイプは、指定されたアンコアリソース430からのロードを、他のタイプのロードと共に含み得る。この他のタイプのロードは、I/Oロード、特定のサイクル数を必要とするロード、ページテーブルウォークを必要とすることが既知であるシステムメモリからのロード、x86特殊バスサイクル(たとえば、シャットダウン、停止、フラッシュなど)の実行により生じるロード、キャッシュ不可のメモリ領域に解決されることが既知であるロード、及び書き込み結合メモリ領域に解決されることが既知であるロードを含むが、これらに限定されない。他の実施形態では、完了するために指定されたサイクル数よりも多くを必要とする可能性が極めて高い任意の種類のロード操作を検出することを意図する。
一実施形態では、アンコアストール要素461とアンミス要素462とは、本発明のプロセッサコア401の初期化(たとえば、電源投入又はリセット)時に、規定のロードマイクロ命令タイプを検出するように構成され得る。規定のロードマイクロ命令タイプは、初期化時に、ヒューズアレイ308の指定された位置から読み込まれ得る。別の実施形態では、各コア401は、プログラミングを通じて、異なるタイプの規定のロードマイクロ命令をヒューズアレイ308で検出するように構成され得る。ここで、各コア401に関連するタイプは、ヒューズアレイ308の対応する位置に対してプログラムされ得る。さらなる実施形態では、規定のロードマイクロ命令タイプは、マルチコアデバイス310へのジョイントテストアクショングループ(JTAG)インターフェイス(図示せず)を通じて、電源投入時又はリセット時にRAM304に対してプログラムされ得る。規定のロードマイクロ命令タイプは、その後の初期化時にRAM304の指定された位置から読み込まれる。
図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を生成する。
当業者が理解するように、x86 ISAなどの今日のISAは、直接(direct)、間接(indirect)、イミディエイト(immediate)、及び相対(relative)を含むが、これらに限定されない複数の異なるオペランドアドレッシングモードを提供する。結果として、ソースフィールドSRC A〜Cの1つ又は複数はオペランドを含み得、1つ又は複数はオペランドの位置(結果のデスティネーションを含む)を指定し得る。そこで、ストール要素461の動作について、本願を多数のISAに幅広く適用できるよう、ソースフィールドSRC A〜Cの内容に関しては総称的に触れながら説明する。
動作的に言うと、マイクロ命令がリプレイマルチプレクサ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をデアサートし、それによってストールを解放する。
図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を監視する。
レジスタ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にディスパッチする準備ができたことを示す。
タグフィールドTAG A〜Cのいずれかの内容がアサート時にHOLDYのタグと一致しない場合、確認ロジック601はREADYをアサートして、レジスタ610内のマイクロ命令を対応する実行ユニットEU1〜EUNにディスパッチする準備ができたことを示す。
図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を生成する。
レジスタ710のフィールド711〜718の内容は、図5及び図6を参照して上述した同様の名前のフィールドと同じである。除外ロジック701は、MICRO OPの内容を読み取るように構成されている。MICRO OPが、新しい従属マイクロ命令をストールさせる上述した規定のロードオペコードのいずれかを含んでいない場合、ロードミス除外ロジック701は、信号NOMISSをデアサートし、それによって対応するロード実行ユニットEUL422.Lに、信号MISSの状態を通常のロード命令実行手続きに従って管理するよう通知する。MICRO OPが規定のオペコードのいずれかを含んでいる場合、除外ロジック701はNOMISSをアサートし、それによって対応するロード実行ユニットEUL422.Lに、レジスタ710のマイクロ命令の実行時にMISSのアサーションを除外するよう通知する。
本発明の上述した要素は、本明細書に記載された機能及び操作を実行するように構成される。本発明の要素は、ロジック、回路、デバイス、若しくはマイクロコード(即ち、マイクロ命令若しくはネイティブ命令)、又はロジック、回路、デバイス、若しくはマイクロコードの組合せ、又は本発明の上述した機能及び操作を実行するために利用される等価の要素を含む。これらの操作及び機能を達成するために利用される要素は、マルチコアマイクロプロセッサ内の他の機能及び/又は操作を実行するために利用される他の回路、マイクロコードなどと共有され得る。
本発明及び対応する詳細な説明の各部分は、ソフトウェア、即ちコンピュータメモリ内でのデータビットの操作のアルゴリズム及び記号表現で表される。これらの説明及び表現は、当業者がその作業の実体を他の当業者に効果的に伝えるためのものである。本明細書で使用される意味、及び一般的に使用される意味でのアルゴリズムとは、所望の目的に至る一連の自己矛盾のないステップと理解される。これらのステップは、物理量を物理的に操作することを必要とする。通常、必須ではないものの、これらの物理量は、格納し、移動し、組合せ、比較し、及びその他の方法で操作することができる、光学的、電気的、又は磁気的な信号の形式をとる。これらの信号をビット、値、要素、記号、文字、用語、数字などとして表すことは、特に共通使用のために、往々にして便利であることが立証されている。
ただし、これらの用語及び同様の用語のすべては適切な物理量と関連付けられるものであり、これらの物理量に適用される便利なラベルに過ぎないことに留意すべきである。特に明記されない限り、又は記載から明らかであるように、「処理」、「演算」、「計算」、「判断」、「表示」などの用語は、コンピュータシステムのレジスタ及びメモリ内で物理的かつ電子的な量として表されたデータを操作して、コンピュータシステムのメモリやレジスタなどの情報ストレージ、送信デバイス、又はディスプレイデバイス内で物理量として同様に表された他のデータに変換する、コンピュータシステム、マイクロプロセッサ、中央処理装置、又は同様の電子コンピューティングデバイスの動作及びプロセスを意味する。
また、本発明のソフトウェアにより実装される側面は、典型的には何らかの形式のプログラムストレージ媒体で符号化され、又は何らかの種類の伝送媒体で実装されることに留意されたい。プログラムストレージ媒体は、電子的(たとえば、読み取り専用メモリ、読み取り専用フラッシュメモリ、電子的プログラム可能読み取り専用メモリ、ランダムアクセスメモリ)、磁気的(たとえば、フロッピー(登録商標)ディスク又はハードドライブ)、又は光学的(たとえば、コンパクトディスク読み取り専用メモリ、即ち「CD−ROM」)であり得、読み取り専用又はランダムアクセス可能であり得る。同様に、伝送媒体は、金属トレース、ツイストペア(twisted wire pair)、同軸ケーブル、光ファイバ、又は技術分野で知られるその他の何らかの適切な伝送媒体であり得る。本発明は、特定の実装のこれらの側面によって限定されない。
上記で開示された特定の実施形態は、あくまでも例示のためのものである。当業者は、開示された概念及び特定の実施形態を基盤として容易に使用して、本発明と同じ目的を達成する他の構造を設計又は修正できること、並びに添付の特許請求の範囲に記載された本発明の範囲から逸脱せずに、多様な変更、交換、及び代替を加えられることを理解する。


Claims (21)

  1. アウトオブオーダープロセッサでのリプレイを低減する装置であって、
    第1のロードマイクロ命令をディスパッチするように構成された第1のリザベーションステーションであり、前記第1のロードマイクロ命令が複数の非コアリソースの1つに向けられた複数の指定されたロード命令の1つであるかを検出して保持バス上で示すように構成された、第1のリザベーションステーションと、
    前記保持バスに接続され、前記第1のロードマイクロ命令に依存する1つ又は複数の新しいマイクロ命令を、前記第1のロードマイクロ命令がディスパッチされてから第1のクロックサイクル数の後に、実行のためにディスパッチするように構成された第2のリザベーションステーションであり、前記保持バス上で前記第1のロードマイクロ命令が複数の指定されたロード命令の前記1つであることが示されている場合に、前記1つ又は複数の新しいマイクロ命令のディスパッチを、前記第1のロードマイクロ命令がオペランドを取得するまでストールさせるように構成された、第2のリザベーションステーションと、を備え、
    前記複数の非コアリソース
    記アウトオブオーダープロセッサに対する前記複数の指定されたロード命令が、ジョイントテストアクショングループインターフェイスを通じてプログラムされたランダムアクセスメモリを含み、
    初期化時に、前記アウトオブオーダープロセッサは、前記複数の指定されたロード命令を読み込むために前記ランダムアクセスメモリにアクセスする、
    装置。
  2. 前記アウトオブオーダープロセッサがマルチコアプロセッサを含み、前記マルチコアプロセッサ内の各コアが、前記第1のリザベーションステーションと前記第2のリザベーションステーションとを含む、
    請求項1に記載の装置。
  3. 前記複数の非コアリソースの1つが、前記ランダムアクセスメモリを含み、
    前記ランダムアクセスメモリが、前記各コアと同じダイに配置され、かつ、前記各コアの外部に配置された、
    請求項2に記載の装置。
  4. 前記複数の非コアリソースの1つが、前記マルチコアプロセッサと同じダイに配置されておらず、
    前記複数の非コアリソースの1つが、各コアと同じダイに配置され、かつ、前記各コアの外部に配置されたバスユニットを通じてアクセスされる、
    請求項2に記載の装置。
  5. 前記第1のリザベーションステーションに接続され、前記第1のロードマイクロ命令を受け取って実行するように構成されたロード実行ロジックであり、実行するマイクロ命令を受け取らない場合に節電状態に入るように構成された、ロード実行ロジックを、
    さらに含む、請求項1に記載の装置。
  6. 前記第1のロードマイクロ命令が前記指定されたロードマイクロ命令でない場合、前記ロード実行ロジックが、ミスバス上で、前記第1のロードマイクロ命令が前記第1のクロックサイクル数で正常な実行に失敗するか否かを示し、
    前記1つ又は複数の新しいマイクロ命令のリプレイを開始する、
    請求項5に記載の装置。
  7. 前記第1のロードマイクロ命令が前記指定されたロードマイクロ命令である場合、前記ロード実行ロジックが、前記第1のロードマイクロ命令が正常な実行のために前記第1のクロックサイクル数よりも多くを必要とする場合に正常な実行に失敗することを示さず、
    前記1つ又は複数の新しいマイクロ命令のリプレイを除外する、
    請求項6に記載の装置。
  8. リプレイを低減する装置であって、
    前記装置は、複数のコアを含むマルチコアプロセッサを含み、
    前記複数のコアそれぞれが、
    第1のロードマイクロ命令をディスパッチするように構成された第1のリザベーションステーションであり、前記第1のロードマイクロ命令が複数の非コアリソースの1つに向けられた複数の指定されたロード命令の1つであるかを検出して保持バス上で示すように構成された、第1のリザベーションステーションと、
    前記保持バスに接続され、前記第1のロードマイクロ命令に依存する1つ又は複数の新しいマイクロ命令を、前記第1のロードマイクロ命令がディスパッチされてから第1のクロックサイクル数の後に、実行のためにディスパッチするように構成された第2のリザベーションステーションであり、前記保持バス上で前記第1のロードマイクロ命令が複数の指定されたロード命令の前記1つであることが示されている場合に、前記1つ又は複数の新しいマイクロ命令のディスパッチを、前記第1のロードマイクロ命令がオペランドを取得するまでストールさせるように構成された、第2のリザベーションステーションと、を備え、
    前記複数の非コアリソース
    記マルチコアプロセッサに対する前記複数の指定されたロード命令が、ジョイントテストアクショングループインターフェイスを通じてプログラムされたランダムアクセスメモリを含み、
    初期化時に、前記マルチコアプロセッサは、前記複数の指定されたロード命令を読み込むために前記ランダムアクセスメモリにアクセスする、
    装置。
  9. 前記マルチコアプロセッサが、x86互換のマルチコアプロセッサを含む、
    請求項8に記載の装置。
  10. 前記複数の非コアリソースの1つが、前記ランダムアクセスメモリを含み、
    前記ランダムアクセスメモリが、前記マルチコアプロセッサと同じダイに配置され、かつ、前記複数のコアそれぞれの外部に配置された、
    請求項8に記載の装置。
  11. 前記複数の非コアリソースの1つが、前記マルチコアプロセッサと同じダイに配置されておらず、
    前記複数の非コアリソースの1つが、前記複数のコアのそれぞれと同じダイに配置され、かつ、前記複数のコアそれぞれの外部に配置されたバスユニットを通じてアクセスされる、
    請求項8に記載の装置。
  12. 前記複数のコアそれぞれが、
    前記第1のリザベーションステーションに接続され、前記第1のロードマイクロ命令を受け取って実行するように構成されたロード実行ロジックであり、実行するマイクロ命令を受け取らない場合に節電状態に入るように構成された、ロード実行ロジックを、
    さらに含む請求項8に記載の装置。
  13. 前記第1のロードマイクロ命令が前記指定されたロードマイクロ命令でない場合、前記ロード実行ロジックが、ミスバス上で、前記第1のロードマイクロ命令が正常な実行のために前記第1のクロックサイクル数よりも多くを必要とするときに正常な実行に失敗することを示し、
    前記1つ又は複数の新しいマイクロ命令のリプレイを開始する、
    請求項12に記載の装置。
  14. 前記第1のロードマイクロ命令が前記指定されたロードマイクロ命令である場合、前記ロード実行ロジックが、前記第1のロードマイクロ命令が正常な実行のために前記第1のクロックサイクル数よりも多くを必要とするときに正常な実行に失敗することを示さず、
    前記1つ又は複数の新しいマイクロ命令のリプレイを除外する、
    請求項13に記載の装置。
  15. アウトオブオーダープロセッサでのリプレイを低減する方法であって、
    記アウトオブオーダープロセッサに対する複数の指定されたロード命令が、ジョイントテストアクショングループインターフェイスを通じてプログラムされたランダムアクセスメモリを含む複数の非コアリソースを配置するステップと、
    初期化時に、前記複数の指定されたロード命令を読み込むために前記ランダムアクセスメモリにアクセスするステップと、
    第1のリザベーションステーションを通じて、第1のロードマイクロ命令をディスパッチし、前記第1のロードマイクロ命令が前記複数の非コアリソースの1つに向けられた前記複数の指定されたロード命令の1つであるか否かを検出して保持バス上で示すステップと、
    前記保持バスに接続された第2のリザベーションステーションを通じて、前記第1のロードマイクロ命令に依存する1つ又は複数の新しいマイクロ命令を、前記第1のロードマイクロ命令がディスパッチされてから第1のクロックサイクル数の後に、実行のためにディスパッチし、前記保持バス上で前記第1のロードマイクロ命令が前記複数の指定されたロード命令の1つであることが示されている場合は、前記1つ又は複数の新しいマイクロ命令のディスパッチを、前記第1のロードマイクロ命令がオペランドを取得するまでストールさせるステップと、
    を含む方法。
  16. 前記アウトオブオーダープロセッサがマルチコアプロセッサを含み、
    前記マルチコアプロセッサ内の各コアが、前記第1のリザベーションステーションと前記第2のリザベーションステーションとを含む、
    請求項15に記載の方法。
  17. 前記複数の非コアリソースの1つが、前記ランダムアクセスメモリを含み、
    前記ランダムアクセスメモリが、前記各コアと同じダイに配置され、かつ、前記各コアの外部に配置された、
    請求項16に記載の方法。
  18. 前記複数の非コアリソースの1つが、前記マルチコアプロセッサと同じダイに配置されておらず、
    複数の非コアリソースの前記1つが、各コアと同じダイに配置され、かつ、前記各コアの外部に配置されたバスユニットを通じてアクセスされる、
    請求項16に記載の方法。
  19. 前記第1のリザベーションステーションに接続されたロード実行ロジックを通じて、前記第1のロードマイクロ命令を受け取って実行し、実行するマイクロ命令を受け取らない場合は節電状態に入るステップ、をさらに含む、
    請求項15に記載の方法。
  20. 前記第1のロードマイクロ命令が前記指定されたロードマイクロ命令でない場合、ミスバス上で、前記第1のロードマイクロ命令が正常な実行のために前記第1のクロックサイクル数よりも多くを必要とするときに正常な実行に失敗することを示し、
    前記1つ又は複数の新しいマイクロ命令のリプレイを開始する、
    請求項19に記載の方法。
  21. 前記第1のロードマイクロ命令が前記指定されたロードマイクロ命令である場合、前記第1のロードマイクロ命令が正常な実行のために前記第1のクロックサイクル数よりも多くを必要とするときに正常な実行に失敗することを示さず、
    前記1つ又は複数の新しいマイクロ命令のリプレイを除外する、
    請求項20に記載の方法。
JP2016564427A 2014-12-14 2014-12-14 アウトオブオーダープロセッサの書き込み結合メモリ領域アクセスに依存するロードリプレイを除外する装置及び方法 Active JP6286065B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2014/003170 WO2016097791A1 (en) 2014-12-14 2014-12-14 Apparatus and method for programmable load replay preclusion

Publications (2)

Publication Number Publication Date
JP2017503294A JP2017503294A (ja) 2017-01-26
JP6286065B2 true JP6286065B2 (ja) 2018-02-28

Family

ID=55606083

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016564427A Active JP6286065B2 (ja) 2014-12-14 2014-12-14 アウトオブオーダープロセッサの書き込み結合メモリ領域アクセスに依存するロードリプレイを除外する装置及び方法

Country Status (5)

Country Link
US (1) US10209996B2 (ja)
JP (1) JP6286065B2 (ja)
CN (2) CN105528193B (ja)
TW (1) TWI559223B (ja)
WO (1) WO2016097791A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10678542B2 (en) * 2015-07-24 2020-06-09 Apple Inc. Non-shifting reservation station
US10452434B1 (en) 2017-09-11 2019-10-22 Apple Inc. Hierarchical reservation station
CN108415730B (zh) * 2018-01-30 2021-06-01 上海兆芯集成电路有限公司 微指令调度方法及使用此方法的装置
CN108279928B (zh) * 2018-01-30 2021-03-19 上海兆芯集成电路有限公司 微指令调度方法及使用此方法的装置
CN111497858B (zh) * 2020-05-14 2021-04-23 浙江吉利新能源商用车集团有限公司 一种车辆重量估算方法及系统

Family Cites Families (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5636374A (en) 1994-01-04 1997-06-03 Intel Corporation Method and apparatus for performing operations based upon the addresses of microinstructions
US5649138A (en) 1996-01-04 1997-07-15 Advanced Micro Devices Time dependent rerouting of instructions in plurality of reservation stations of a superscalar microprocessor
US5809275A (en) 1996-03-01 1998-09-15 Hewlett-Packard Company Store-to-load hazard resolution system and method for a processor that executes instructions out of order
US6163838A (en) 1996-11-13 2000-12-19 Intel Corporation Computer processor with a replay system
US7200737B1 (en) 1996-11-13 2007-04-03 Intel Corporation Processor with a replay system that includes a replay queue for improved throughput
US5958041A (en) 1997-06-26 1999-09-28 Sun Microsystems, Inc. Latency prediction in a pipelined microarchitecture
US5889679A (en) 1997-07-15 1999-03-30 Integrated Device Technology, Inc. Fuse array control for smart function enable
US6598156B1 (en) * 1999-12-23 2003-07-22 Intel Corporation Mechanism for handling failing load check instructions
US6678810B1 (en) 1999-12-30 2004-01-13 Intel Corporation MFENCE and LFENCE micro-architectural implementation method and system
US6549985B1 (en) 2000-03-30 2003-04-15 I P - First, Llc Method and apparatus for resolving additional load misses and page table walks under orthogonal stalls in a single pipeline processor
US7065632B1 (en) 2000-04-07 2006-06-20 Ip First Llc Method and apparatus for speculatively forwarding storehit data in a hierarchical manner
US6981129B1 (en) 2000-11-02 2005-12-27 Intel Corporation Breaking replay dependency loops in a processor using a rescheduled replay queue
US6959378B2 (en) 2000-11-06 2005-10-25 Broadcom Corporation Reconfigurable processing system and method
US7203817B2 (en) 2001-09-24 2007-04-10 Broadcom Corporation Power consumption reduction in a pipeline by stalling instruction issue on a load miss
US6810466B2 (en) 2001-10-23 2004-10-26 Ip-First, Llc Microprocessor and method for performing selective prefetch based on bus activity level
US6952764B2 (en) 2001-12-31 2005-10-04 Intel Corporation Stopping replay tornadoes
US20060248319A1 (en) 2002-02-05 2006-11-02 Sun Microsystems, Inc. Validating branch resolution to avoid mis-steering instruction fetch
JP3577052B2 (ja) * 2002-03-19 2004-10-13 株式会社東芝 命令発行装置及び命令発行方法
US6934830B2 (en) 2002-09-26 2005-08-23 Sun Microsystems, Inc. Method and apparatus for reducing register file access times in pipelined processors
US7165167B2 (en) * 2003-06-10 2007-01-16 Advanced Micro Devices, Inc. Load store unit with replay mechanism
US7111153B2 (en) 2003-09-30 2006-09-19 Intel Corporation Early data return indication mechanism
US7284117B1 (en) 2003-11-04 2007-10-16 Advanced Micro Devices, Inc. Processor that predicts floating point instruction latency based on predicted precision
TWI232457B (en) 2003-12-15 2005-05-11 Ip First Llc Early access to microcode ROM
WO2006114874A1 (ja) 2005-04-21 2006-11-02 Fujitsu Limited プロセッサ装置
JP4837305B2 (ja) * 2005-05-10 2011-12-14 ルネサスエレクトロニクス株式会社 マイクロプロセッサ及びマイクロプロセッサの制御方法
US20070198812A1 (en) * 2005-09-27 2007-08-23 Ibm Corporation Method and apparatus for issuing instructions from an issue queue including a main issue queue array and an auxiliary issue queue array in an information handling system
JP2006146953A (ja) * 2006-01-04 2006-06-08 Nec Electronics Corp プロセッサ、システムlsi、システムlsiの設計方法、及び、それを記録した記録媒体
US8812822B2 (en) 2006-02-09 2014-08-19 International Business Machines Corporation Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss
US7577825B2 (en) 2006-02-28 2009-08-18 Intel Corporation Method for data validity tracking to determine fast or slow mode processing at a reservation station
US7721071B2 (en) 2006-02-28 2010-05-18 Mips Technologies, Inc. System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor
US20080005504A1 (en) 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US7502914B2 (en) 2006-07-31 2009-03-10 Advanced Micro Devices, Inc. Transitive suppression of instruction replay
WO2008029450A1 (fr) 2006-09-05 2008-03-13 Fujitsu Limited Dispositif de traitement d'informations comprenant un mécanisme de correction d'erreur de prédiction d'embranchement
US7647518B2 (en) 2006-10-10 2010-01-12 Apple Inc. Replay reduction for power saving
US8838663B2 (en) 2007-03-30 2014-09-16 Intel Corporation Method and apparatus for performing multiplicative functions
US7827390B2 (en) 2007-04-10 2010-11-02 Via Technologies, Inc. Microprocessor with private microcode RAM
KR101100145B1 (ko) 2007-06-20 2011-12-29 후지쯔 가부시끼가이샤 명령실행 제어장치 및 명령실행 제어방법
US7861066B2 (en) 2007-07-20 2010-12-28 Advanced Micro Devices, Inc. Mechanism for predicting and suppressing instruction replay in a processor
US8190864B1 (en) 2007-10-25 2012-05-29 Oracle America, Inc. APIC implementation for a highly-threaded x86 processor
US9311085B2 (en) 2007-12-30 2016-04-12 Intel Corporation Compiler assisted low power and high performance load handling based on load types
GB2457303A (en) 2008-02-11 2009-08-12 Linear Algebra Technologies Randomly accessing elements of compressed matrix data by calculating offsets from non-zero values of a bitmap
US7937561B2 (en) 2008-04-03 2011-05-03 Via Technologies, Inc. Merge microinstruction for minimizing source dependencies in out-of-order execution microprocessor with variable data size macroarchitecture
US7937563B2 (en) 2008-05-27 2011-05-03 Advanced Micro Devices, Inc. Voltage droop mitigation through instruction issue throttling
US20090327657A1 (en) 2008-06-25 2009-12-31 Zeev Sperber GENERATING AND PERFORMING DEPENDENCY CONTROLLED FLOW COMPRISING MULTIPLE MICRO-OPERATIONS (uops)
US8566565B2 (en) * 2008-07-10 2013-10-22 Via Technologies, Inc. Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications
EP3087988A3 (en) 2008-10-06 2017-03-01 Idera Pharmaceuticals, Inc. Use of inhibitors of toll-like receptors in the prevention and treatment of hypercholesterolemia and hyperlipidemia and diseases related thereto
CN101526895B (zh) * 2009-01-22 2011-01-05 杭州中天微系统有限公司 基于指令双发射的高性能低功耗嵌入式处理器
CN101477454A (zh) 2009-01-22 2009-07-08 浙江大学 嵌入式处理器的乱序执行控制装置
JP5326708B2 (ja) * 2009-03-18 2013-10-30 富士通株式会社 演算処理装置および演算処理装置の制御方法
KR20100121215A (ko) * 2009-05-08 2010-11-17 삼성전자주식회사 반도체 장치, 및 상기 반도체 장치의 os 이미지 라이트 방법
CN101847094A (zh) 2009-05-29 2010-09-29 威盛电子股份有限公司 非循序执行的微处理器及其操作方法
US8464029B2 (en) 2009-05-29 2013-06-11 Via Technologies, Inc. Out-of-order execution microprocessor with reduced store collision load replay reduction
CN101853150B (zh) 2009-05-29 2013-05-22 威盛电子股份有限公司 非循序执行的微处理器及其操作方法
US8443175B2 (en) 2009-07-10 2013-05-14 Via Technologies, Inc. Microprocessor with first processor for debugging second processor
US8386755B2 (en) 2009-07-28 2013-02-26 Via Technologies, Inc. Non-atomic scheduling of micro-operations to perform round instruction
CN101894009B (zh) 2009-08-07 2013-05-22 威盛电子股份有限公司 乱序执行的微处理器以及相关执行指令的方法
US8533438B2 (en) 2009-08-12 2013-09-10 Via Technologies, Inc. Store-to-load forwarding based on load/store address computation source information comparisons
US20110078350A1 (en) 2009-09-30 2011-03-31 Via Technologies, Inc. Method for generating multiple serial bus chip selects using single chip select signal and modulation of clock signal frequency
CN101710272B (zh) 2009-10-28 2012-09-05 龙芯中科技术有限公司 指令调度装置和方法
US9104399B2 (en) 2009-12-23 2015-08-11 International Business Machines Corporation Dual issuing of complex instruction set instructions
US8341472B2 (en) * 2010-06-25 2012-12-25 Via Technologies, Inc. Apparatus and method for tamper protection of a microprocessor fuse array
US8918625B1 (en) 2010-11-24 2014-12-23 Marvell International Ltd. Speculative scheduling of memory instructions in out-of-order processor based on addressing mode comparison
JP5625903B2 (ja) 2010-12-29 2014-11-19 富士通株式会社 演算処理装置および演算処理方法
US8639884B2 (en) 2011-02-28 2014-01-28 Freescale Semiconductor, Inc. Systems and methods for configuring load/store execution units
JP2012198803A (ja) * 2011-03-22 2012-10-18 Fujitsu Ltd 演算処理装置及び演算処理方法
EP2695055B1 (en) 2011-04-07 2018-06-06 VIA Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US8862861B2 (en) 2011-05-13 2014-10-14 Oracle International Corporation Suppressing branch prediction information update by branch instructions in incorrect speculative execution path
CN103765409A (zh) 2011-09-06 2014-04-30 英特尔公司 有功率效率的处理器体系结构
US9367107B2 (en) * 2011-10-19 2016-06-14 Psion Inc. Method and system for controlling reset state change in a system-on-a-chip device
US9009449B2 (en) 2011-11-10 2015-04-14 Oracle International Corporation Reducing power consumption and resource utilization during miss lookahead
US20140208074A1 (en) 2012-03-30 2014-07-24 Boris A. Babayan Instruction scheduling for a multi-strand out-of-order processor
US9128725B2 (en) * 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US9645819B2 (en) 2012-06-15 2017-05-09 Intel Corporation Method and apparatus for reducing area and complexity of instruction wakeup logic in a multi-strand out-of-order processor
GB2503438A (en) * 2012-06-26 2014-01-01 Ibm Method and system for pipelining out of order instructions by combining short latency instructions to match long latency instructions
US10241797B2 (en) 2012-07-17 2019-03-26 Advanced Micro Devices, Inc. Replay reduction by wakeup suppression using early miss indication
US9582276B2 (en) 2012-09-27 2017-02-28 Apple Inc. Processor and method for implementing barrier operation using speculative and architectural color values
US9582287B2 (en) 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US10235180B2 (en) 2012-12-21 2019-03-19 Intel Corporation Scheduler implementing dependency matrix having restricted entries
US20140189328A1 (en) 2012-12-27 2014-07-03 Tomer WEINER Power reduction by using on-demand reservation station size
GB2509974B (en) 2013-01-21 2015-04-01 Imagination Tech Ltd Allocating resources to threads based on speculation metric
US9256428B2 (en) 2013-02-06 2016-02-09 International Business Machines Corporation Load latency speculation in an out-of-order computer processor
US9116817B2 (en) 2013-05-09 2015-08-25 Apple Inc. Pointer chasing prediction
KR20140139923A (ko) 2013-05-28 2014-12-08 한국전자통신연구원 멀티코어 프로세서 및 멀티코어 프로세서 시스템
US9606806B2 (en) 2013-06-25 2017-03-28 Advanced Micro Devices, Inc. Dependence-based replay suppression
US9715389B2 (en) 2013-06-25 2017-07-25 Advanced Micro Devices, Inc. Dependent instruction suppression
US9489206B2 (en) 2013-07-16 2016-11-08 Advanced Micro Devices, Inc. Dependent instruction suppression
GB2510655B (en) * 2013-07-31 2015-02-25 Imagination Tech Ltd Prioritizing instructions based on type
TWI571797B (zh) 2013-08-21 2017-02-21 上海兆芯集成電路有限公司 組態資料的處理裝置及方法
US8879345B1 (en) 2013-08-21 2014-11-04 Via Technologies, Inc. Microprocessor mechanism for decompression of fuse correction data
US9495159B2 (en) 2013-09-27 2016-11-15 Intel Corporation Two level re-order buffer
US9389863B2 (en) 2014-02-10 2016-07-12 Via Alliance Semiconductor Co., Ltd. Processor that performs approximate computing instructions
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads

Also Published As

Publication number Publication date
CN105528193B (zh) 2019-04-09
CN105528193A (zh) 2016-04-27
WO2016097791A1 (en) 2016-06-23
CN105468336B (zh) 2019-02-12
TW201621635A (zh) 2016-06-16
CN105468336A (zh) 2016-04-06
JP2017503294A (ja) 2017-01-26
US10209996B2 (en) 2019-02-19
TWI559223B (zh) 2016-11-21
US20160350123A1 (en) 2016-12-01

Similar Documents

Publication Publication Date Title
JP6286065B2 (ja) アウトオブオーダープロセッサの書き込み結合メモリ領域アクセスに依存するロードリプレイを除外する装置及び方法
US10114794B2 (en) Programmable load replay precluding mechanism
JP6286067B2 (ja) アウトオブオーダープロセッサでの長いロードサイクルに依存するロードリプレイを除外するメカニズム
EP3032400B1 (en) Load replay precluding mechanism
JP6286066B2 (ja) アウトオブオーダープロセッサでのロードリプレイを低減する節電メカニズム
EP3032405B1 (en) Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor
JP6286068B2 (ja) アウトオブオーダープロセッサでのキャッシュ不可に依存するロードリプレイを除外するメカニズム
US20160342420A1 (en) Mechanism to preclude shared ram-dependent load replays in an out-of-order processor
EP3032402B1 (en) Programmable load replay precluding mechanism
EP3032401B1 (en) Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor
EP3055769B1 (en) Mechanism to preclude load replays dependent on page walks in out-of-order processor
US10108427B2 (en) Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor
EP3032399A2 (en) Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor
US20160350121A1 (en) Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor
US10175984B2 (en) Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor
US10083038B2 (en) Mechanism to preclude load replays dependent on page walks in an out-of-order processor
EP3032406B1 (en) Apparatus and method to preclude x86 special bus cycle load replays in an out-of-order processor
EP3032403B1 (en) Mechanism to preclude shared ram-dependent load replays in an out-of-order processor
EP3049956B1 (en) Mechanism to preclude i/o-dependent load replays in out-of-order processor
US9740271B2 (en) Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor
EP3032407A2 (en) Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170307

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170802

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180116

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180202

R150 Certificate of patent or registration of utility model

Ref document number: 6286065

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250