JP6533643B2 - マイクロプロセッサ及びこれを使用した電子機器 - Google Patents

マイクロプロセッサ及びこれを使用した電子機器 Download PDF

Info

Publication number
JP6533643B2
JP6533643B2 JP2014051308A JP2014051308A JP6533643B2 JP 6533643 B2 JP6533643 B2 JP 6533643B2 JP 2014051308 A JP2014051308 A JP 2014051308A JP 2014051308 A JP2014051308 A JP 2014051308A JP 6533643 B2 JP6533643 B2 JP 6533643B2
Authority
JP
Japan
Prior art keywords
rename
data
renaming
checkpoint
rob
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.)
Expired - Fee Related
Application number
JP2014051308A
Other languages
English (en)
Other versions
JP2014179098A (ja
Inventor
サンシャナクリシュナン,プラースナ
アイアンガー,ラビ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2014179098A publication Critical patent/JP2014179098A/ja
Application granted granted Critical
Publication of JP6533643B2 publication Critical patent/JP6533643B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Retry When Errors Occur (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は半導体装置に関し、さらに具体的には、電子機器の動作を制御するマイクロプロセッサ及びこのようなマイクロプロセッサを使用する電子機器に関する。
中央処理装置(Central Processing Unit:以下、CPU)として公知されたCPUは、命令語を実行することによって動作する。
一部命令語はブランチングポイントを発生させ、実行の1つの経路が他の経路に優先して選択される。
仮にマイクロプロセッサが選択する経路に対する正確な推論的な予測(speculative prediction)を実行し、その経路にしたがって予め命令語(instruction)を実行すれば、マイクロプロセッサは向上した速度を有することができる。
このようなCPUは、非順次的(out−of−order)CPUとして知られている。しかし、予測ミスが生じれば、速度増加の長所が無くなり、復旧が要求される。
非順次的CPUの課題は、書込み後書込み(WAW:Write−After−Write)と書込み後読出し(WAR:Write−After−Read)のような危険要素である。
このような危険要素は、レジスター再命名(rename)によって防止され得り、これは再命名されたソース及び目的地レジスターを持続的に把握する再命名テーブルの助けによって実現可能である。
しかし、再命名の問題は、予測ミスブランチの命令語が存在する時毎に、再命名テーブルが完全にフラッシュ(flush)されなければならないことである。
フラッシュは、ブランチが非順次的に実行され得るので、誤りを予測されたブランチの命令語より古い命令語が再書込み(rewrite)を待機することができるという点で問題である。
このような古い命令語に対する再命名情報(rename information)は再命名テーブルに再構成されなければならない。
このような問題は遅延として現われる。
再構成過程の間に再命名ロジックは、パイプのフロントエンドが再命名のために新しい命令語を伝送することを停止しなければならない。このような停止は遅延をもたらし、ブランチの予測ミスに対するペナルティー(penalty)であるとすることができる。
このようなペナルティーは再構成遅延のみならず、リダイレクション(redirection)遅延及びパイプフロントエンドの深さによって決定される。
このような遅延を減少させるために、再命名パイプライン(rename pipeline)の一部として、ディスパッチ段階の以前に実行されるチェックポインティングスキーム(check−pointing scheme)が提案された。
このスキームで、各ブランチの命令語は新しいチェックポイントウインドウを開始する。
しかしながら、このようなアプローチは、機械で許諾されて進行中である(in−flight)ブランチが存在して、多いチェックポイントが要求されるので、高級な領域にあるという短所がある。
米国特許第8301849号明細書 米国特許第7809926号明細書 米国特許第7975129号明細書
本発明は、上記従来のマイクロプロセッサにおける問題点に鑑みてなされたものであって、本発明の目的は、動作速度が改善されたマイクロプロセッサを提供することにある。
上記目的を達成するためになされた本発明によるマイクロプロセッサは、再命名データ(rename data)を格納する再命名テーブルと、ディスパッチャー(dispatcher)と、前記ディスパッチャーから受信した再命名データを格納するチェックポイントテーブル(Check Point Table:CPT)と、リオーダーバッファ(Re−Order Buffer:ROB)エントリを含むリオーダーバッファとを有し、前記再命名テーブルがフラッシュ(flush)されれば、前記再命名テーブルは、前記チェックポイントテーブルに格納された前記再命名データを利用して再構成(rebuild)され、前記リオーダーバッファエントリのグループは、リオーダーバッファチェックポイントウインドウとして定義され、前記リオーダーバッファチェックポイントウインドウと、前記チェックポイントテーブルとの間のマッピングは、固定された静的関係(static relationship)に従うものであり、
前記再命名テーブルは、静的関係の側面で許諾される場合のみ、前記チェックポイントテーブルに格納された前記再命名データを利用して再構成されることを特徴とする。
測ミス(mis−prediction)を感知するためのブランチ実行ロジック(branch execution logic)をさらに有し、前記予測ミスが感知されたことに応答して、前記再命名テーブルはフラッシュされることが好ましい。
再命名データを生成する再命名器(renamer)をさらに有し、前記再命名テーブルは、前記再命名器から前記再命名データを受信することが好ましい。
クロックサイクルを定義するパルスを出力するクロックをさらに有し、前記再命名テーブルの再構成において、1つの前記チェックポイントテーブルから前記再命名テーブルへの再命名データのコピーは、前記クロックサイクルの中の1つのサイクル内で行われるものであることが好ましい。
また、上記目的を達成するためになされた本発明によるマイクロプロセッサは、命令語をマイクロオペレーション(micro−ops)にデコーディングするデコーダーと、前記マイクロオペレーションを実行する実行ユニットと、前記マイクロオペレーションにしたがって再命名データを生成する再命名器と、再命名テーブルと、前記再命名データのチェックポイントされたバーション(check−pointed version)を格納するチェックポイントテーブル(CPT)と、前記マイクロオペレーションから生成されたリオーダーバッファ(Re−order Buffer:ROB)データを格納するリオーダーバッファエントリを有するリオーダーバッファとを有し、前記再命名テーブルは、前記再命名データを格納するものであり、かつ、所定の条件が成立した場合には、前記再命名データが前記再命名テーブルからフラッシュされるものであり、前記リオーダーバッファデータは、再構成再命名データを含み、前記リオーダーバッファエントリのグループは、リオーダーバッファチェックポイントウインドウとして定義され、前記リオーダーバッファチェックポイントウインドウと、前記チェックポイントテーブルの間のマッピングは、固定された静的関係に従うものであり、前記静的関係の側面で許諾される場合のみ前記再命名データの前記チェックポイントされたバーションが前記チェックポイントテーブルから前記再命名テーブルにコピーされ、さらに、前記再命名テーブルにコピーされるべき再命名データのうち、残余のものが存在する場合には、前記再構成再命名データの少なくとも一部分が前記リオーダーバッファから前記再命名テーブルにコピーされることによって、前記再命名テーブルに格納された再命名データが前記再命名テーブルからフラッシュされた場合、再命名データを前記再命名テーブルに再格納することができることを特徴とする。
加的なチェックポイントテーブルをさらに有し、前記リオーダーバッファエントリは、前記チェックポイントテーブル又は前記付加的なチェックポイントテーブルにマッピングされることが好ましい。
命名データが前記再命名テーブルからフラッシュされる場合、リオーダーバッファエントリのリオーダーバッファ再構成ウインドウが定義され、前記リオーダーバッファから前記再命名テーブルにコピーされる前記再構成再命名データの部分は、前記リオーダーバッファ再構成ウインドウ内に存在することが好ましい。
また、上記目的を達成するためになされた本発明によるマイクロプロセッサは、マイクロオペレーション(micro−ops)にしたがって再命名データを生成する再命名器と、前記再命名データを格納する再命名テーブルと、前記マイクロオペレーションから生成され再構成再命名データを格納するリオーダーバッファデータを格納するリオーダーバッファ(Re−Order Buffer:ROB)と、前記再命名データのチェックポイントされたバーションを格納する2つ以上のチェックポイントテーブル(Check Point Table:CPT)とを有し、前記リオーダーバッファと前記2つ以上のチェックポイントテーブルとの間には、静的関係(static relationship)を有し、前記2つ以上のチェックポイントテーブルは、前記静的関係にしたがって各々チェックポイントされた再命名データを格納し、前記再命名テーブルに格納された再命名データが、前記再命名デーブルからフラッシュされる場合に、必要であれば、前記リオーダーバッファから前記再命名テーブルにコピーされる再構成再命名データと、前記静的関係の観点から許容されるのであれば、前記2つ以上のチェックポイントテーブルの少なくともいずれかから前記再命名テーブルにコピーされる再命名データの前記チェックポイントされたバージョンの間に重複がないようにしつつ、前記コピーを行うことにより、再命名データを前記再命名テーブルに格納されることを特徴とする。
前記マイクロオペレーションを実行ユニットに発送する(dispatching)ディスパッチャーをさらに有し、前記チェックポイントテーブルは、前記ディスパッチャーから前記再命名データの前記チェックポイントされたバーションを受信することが好ましい。
前記マイクロオペレーションの実行において、予測ミスを感知するためのブランチ実行ロジックをさらに含み、前記予測ミスが感知されたことに応答して、前記再命名データは、前記再命名テーブルからラッシュされることが好ましい。
クロックサイクルを定義するパルスを出力するクロックをさらに含み、前記再命名データの前記チェックポイントされたバーションが、前記クロックサイクル中の1つのサイクル内で前記チェックポイントテーブルから前記再命名テーブルにコピーされることが好ましい。
上記目的を達成するためになされた本発明による電子機器は、バス(Bus)と、前記バスに接続されたインターフェイスであって、通信ネットワークにデータを伝送し、前記通信ネットワークからデータを受信するように構成された前記インターフェイスと、前記バスに接続された入出力装置と、前記バスに接続され、前記入出力装置を通じてアクセス可能であるユーザーデータ又は命令語を格納するよう構成されたメモリと、前記バスに接続され、前記命令語を利用するよう構成されたコントローラとを有し、前記コントローラは、少なくとも1つのマイクロプロセッサを含み、前記マイクロプロセッサは、再命名データを格納する再命名テーブルと、ディスパッチャーと、チェックポイントテーブル(Check Point Table:CPT)と、リオーダーバッファ(Re−Order Buffer:ROB)エントリを含むリオーダーバッファとを含み、前記リオーダーバッファエントリのグループはリオーダーバッファチェックポイントウインドウ(checkpoint window)として定義され、前記リオーダーバッファチェックポイントウインドウと、前記チェックポイントテーブルの間のマッピングは、固定された静的関係に従うものであり、前記再命名テーブルがフラッシュされれば、前記再命名テーブルは、前記チェックポイントテーブルに格納された前記再命名データを利用して再構成され、前記再命名テーブルは、静的関係の側面で許諾される場合のみ、前記チェックポイントテーブルに格納された前記再命名データを利用して再構成されることを特徴とする。
前記インターフェイスは、無線であり、前記通信ネットワークも無線であることが好ましい。
測ミスを感知するためのブランチ実行ロジックをさらに有し、前記予測ミスが感知されたことに応答して前記再命名テーブルは、フラッシュされることが好ましい。
再命名データを生成する再命名器をさらに有し、前記再命名テーブルは、前記再命名器から前記再命名データを受信することが好ましい。
クロックサイクルを定義するパルスを出力するクロックをさらに有し、前記再命名テーブルの再構成において、1つの前記チェックポイントテーブルから前記再命名テーブルへの再命名データのコピーは、前記クロックサイクルの中の1つのサイクル内で行われるものであることが好ましい。
本発明に係るマイクロプロセッサ及びこれを使用した電子機器によれば、再命名テーブルを再構成するのに要求される時間を減少させ、動作速度を改善することができるという効果がある。
本発明の実施形態にしたがって作られたマイクロプロセッサの構成要素を示すブロック図である。 ROBの一部分のみがCPTにマッピングされる実施形態を説明するための図である。 ROBの一部分のみがCPTにマッピングされる実施形態を説明するための図である。 ROBの一部分のみがCPTにマッピングされる実施形態を説明するための図である。 本発明の実施形態によって作られたサンプルマイクロプロセッサに対するサンプルシークェンスを説明するためのブロック図である。 本発明の実施形態によって作られたサンプルマイクロプロセッサに対するサンプルシークェンスを説明するためのブロック図である。 本発明の実施形態によって作られたサンプルマイクロプロセッサに対するサンプルシークェンスを説明するためのブロック図である。 図3Cでのような再命名テーブルを再構成することに対する相対的なタイミングパルス図である。 本発明からの有利な結果がない第1サンプルシナリオに対する図3Cの構成要素を示す図である。 第2サンプルシナリオのための図3Cの構成要素を示す図である。 第3サンプルシナリオのための図3Cの構成要素を示す図である。 第4サンプルシナリオに対する図3Cの構成要素を示す図である。 第5シナリオに対する図3Cの構成要素を示す図である。 本発明の実施形態による半導体装置と共に動作するシステムを含む電子機器を示すブロック図である。 本発明の実施形態によるマイクロプロセッサの動作方法を説明するためのフローチャートである。
次に、本発明に係るマイクロプロセッサ及びこれを使用した電子機器を実施するための形態の具体例を図面を参照しながら説明する。
図1は、本発明の実施形態にしたがって作られたマイクロプロセッサ110の構成要素を示すブロック図である。
マイクロプロセッサ110は命令語を受信し、この命令語をマイクロオペレーション(以下、micro−ops)として知られるマイクロ命令語(micro−operation)にデコーディングするデコーダー120を含む。
マイクロプロセッサ110は、また「micro−ops」を実行する1つ以上の実行ユニットを含む。
図1では、3つの実行ユニット、即ち、実行ユニット−A(151)、実行ユニット−B(152)、実行ユニット−C(153)が示される。但し、ユニットの名は例示として示したものであり、本発明の技術的思想はこれに限定されない。
デコーダー120と実行ユニット(151、152、153)とはパイプ(pipe)と呼ばれる部分の一部分であり、このパイプは付加的な構成要素を含む。
このような付加的な構成要素の中の1つは、結局のところ、「micro−ops」を実行ユニットに発送する(dispatching)ように提供されるディスパッチャー140である。
図1の例で、ディスパッチングは、3つのスケジューラー、即ち、スケジューラー−A(141)、スケジューラー−B(142)、及びスケジューラー−C(143)の中の1つの直前で実行される。
スケジューラーは、「micro−ops」を実行ユニット(151、152、153)に伝送する。この実行ユニットは物理的レジスターファイルPRF(Physical Register File)150からソースを読み出して、「micro−ops」を実行する。当業者は上述した内容がパイプの構造に対する一実施形態に過ぎなく、他の構造が可能であることを明確に理解できる。
マイクロプロセッサ110は、再命名器(renamer)130を付加的に含み、この再命名器はデコーダー120から「micro−ops」を受信する。
再命名器130は、「micro−ops」にしたがって再命名データを生成する。
マイクロプロセッサ110は、さらに再命名テーブル136を含む。
再命名(rename)テーブル136は、再命名データを格納し、矢印(符号135)にしたがって再命名器130から受信する。
マイクロプロセッサ110は、リオーダーバッファ(Re−Order Buffer:以下、ROB)160を含む。
ROB160は、図1に個別的に開示していないROBエントリを含む。
以下で詳述するが、ROB160は、各々ROBエントリの中で可変的な1つのエントリをポインティングするリタイアポインター(Retire Pointer)とフラッシュポインター(Flush Ponter)を含む。
ROB160は循環されることもあり(circular)、循環されないこともあり得る。
ROBエントリは、「micro−ops」から生成されたROBデータ162を格納するためのものである。
一実施形態においては、各ROBエントリは、1つの「micro−ops」を格納するが、他の実施形態では、さらに多い「micro−ops」が1つのROBエントリに格納され得る。
ROBデータ162は、望ましくは、再命名テーブル136に格納された再命名データに応答する再構成再命名データ182を含む。
図1の実施形態でROBデータ162は、ディスパッチャー140から受信する。
マイクロプロセッサ110は、チェックポイントテーブル(Check−Point table:以下、CPT)170をさらに含む。
CPTに対して可能である具現化は、以下でさらに詳細に敍述する。
CPT170は、再命名テーブル136とその広さが同一である。
CPT170は、図1に個別的には示さなかったがCPTエントリを有する。
CPTエントリの個数は、再命名テーブル136の個数と同一であり、これはCPTが再命名テーブル136のような深さ(depth)を有することを意味する。
CPTエントリの数はCPT深さを定義する。
CPTエントリは、再命名テーブル136に格納された再命名データのチェックポイントされたバーション180を格納する。
再命名データのチェックポイントされたバーション180は、再命名データを生成する任意のバーションであるか、或いは、再命名データそれ自体であり、このような場合、再命名データはCPT170に格納されるので、チェックポイントされた再命名データ(check−pointed rename data)180と称される。
図1の実施形態で、再命名データのチェックポイントされたバーション180は、ディスパッチャー140から受信する。
以下でより詳細に説明するように、ROBチェックポイントウインドウは、ROBチェックポイントウインドウがROBエントリに対して固定される静的関係(符号188)にしたがってCPTにマッピングされる。
静的関係(符号188)は、以下で詳述するように、固定される。
このような方式でROBエントリに新しい「micro−ops」が割り当てられれば、選択されたCPTエントリは、「micro−ops」が目的地を有する場合、「micro−ops」に対する目的地再命名情報(destination rename information)としてアップデートされる。
上述したように、再命名テーブル136はフラッシュ(flush)される。より正確には、これは再命名テーブルに格納された再命名データがフラッシュされたことを意味する。
図1の実施形態で、マイクロプロセッサ110は、ブランチ実行ロジック157を含む。
ブランチ実行ロジック157は、フラッグ(符号190)で示される「micro−ops」の実行の中の予測ミス(符号190)を感知することができる。
再命名テーブル136は、予測ミス(符号190)の感知に応答してフラッシュされる。
再命名テーブル136がフラッシュされれば、以後、再構成することができる。
再構成の目的のために、マイクロプロセッサ110は、リタイアチェックポイントデータ(retire check−point data)を格納するリタイアテーブル138を包含することができる。
リタイアチェックポイントデータは、再構成の開始過程で矢印(符号139)にしたがって再命名テーブル136にコピーされ得る。
再構成の目的のために、フラッシュされた再命名データは、リタイアテーブルからの初期コピーを追加的に、データの2つのデータソース(data of sources)から再命名テーブル136に再格納することができる。
最初に、再命名データのチェックポイントされたバーション180は、矢印(符号175)にしたがって多量流入(mass importation)の形態にてCPT170から再命名テーブル136にコピーされ得る。
多量流入は、以下で説明するように、静的関係(符号188)の観点から許諾される場合、同時に生じるコピーで具現され得る。
第2に、ROBデータ162内の再構成再命名データ182の少なくとも一部分は、矢印(符号160)にしたがってROB160から再命名テーブル136にコピーされ、これは“walking the ROB”としても公知されたプロセスである。
上述したように、CPT170に対する多数の可能である具現化があり得る。
このような具現化は、プロセッサ時間を倹約するために、矢印(符号165)のコピーが成される間に、矢印(符号175)の同時コピーを経て再構成の目的のために具現することができることを分かる。実施形態は以下で記述する。
図2A、図2Bは、ROBの一部分のみがCPTにマッピングされる実施形態を説明するための図である。
より具体的には、ROB260は、ROB“0”から“95”に命名された96個のエントリを有する。
ROB260は、ROBエントリの中で任意の数を有することができる。そして、1つのCPTが提供される。
さらに、ROBチェックポイントウインドウは、ROB260に定義されることができ、エントリの任意の数からなされたグループであり得る。
この場合、ROBチェックポイントウインドウは、ROBエントリ“0”から“47”になされたグループである。
何らかのグループであることとは関係なく、ROBチェックポイントウインドウは、96個のROBチェックポイントウインドウに対して固定される。
このように、静的関係(符号288−1)は、ROB、より具体的にはROBチェックポイントウインドウが、CPT270にマッピングされる方法を示す。
このマッピングは、しばしば連関(association)であると称される。
本実施形態で、ROB260の中でROBエントリ“48”から“95”まではCPT270にマッピングされない。
再構成の目的のために、特定構成要素はそれ自体が格納されたROBエントリ又は連関されたCPTから再構成テーブルに再格納することができる。
仮にCPTからのコピーが許容されれば、この過程はより早くなり得る。
適用可能である静的関係(この実施形態で、符号288−1)は、ROB260からのみでなく、CPT270からも再構成をしなければならないか否か、及びどの程度に再構成しなければならないかに対して部分的に関与する。
実際には、静的関係(符号288−1)の観点から許諾されることによって、CPT270からのコピーが行われる。
許諾される場合に対する実施形態を以後に開示する。
図2Aの実施形態が好ましいものではないかどうかに関係なく、すべてのROBエントリがCPTにマッピングされるROBチェックポイントウインドウの部分ではない。
したがって、ROB260がウォーキング(walking)されなければならないさらに多いシナリオが存在し、このようなシナリオは以下でより詳細に説明される。
一実施形態において、付加的なCPT、即ち図1に示したCPT170、又は図2Aに示したCPT270に、付加的なCPTが提供される。
図2Aとは異なり、すべてのROBエントリが、上述されたCPT又は付加的なCPTにマッピングされる。
図2B、図2Cを参照して、2つの実施形態を開示する。
図2Bは、ROB260と同様に96個のROBエントリを有するROB261を示す。
ROB261は、2つの静的ROBチェックポイントウインドウ、即ち“0”から“47”のROBエントリを含むウインドウ、ROBエントリ“48”から“95”を含むウインドウに分けられる。
また、2つのCPT、即ち、CPT−0(271)及びCPT−1(272)が存在する。
CPT(271、272)は、再命名テーブルの深さと同一の深さを有する。
図2Bの実施形態で、ROBチェックポイントウインドウ−0とCPT271との間の連関と、ROBチェックポイントウインドウ−1とCPT272との間の連関に、図に示す静的関係(符号288−2)が存在する。
図2Cは、96つのエントリを有するROB263を開示する。
また、各々ROB263のROBチェックポイントウインドウに対応する4つのCPT、即ちCPT−0(273)、CPT−1(274)、CPT−2(275)、及びCPT−3(276)が存在する。
発明を実施するために要求されるものではないが、4つのROBチェックポイントウインドウの各々は同一の深さを有する。
静的関係(符号288−3)は、静的関係(符号288−2)と同様に、固定された一対一の連関関係のグループに対するものである。
以下と合わせて、大部分の場合、図2Cの実施形態は、4つのCPTを有するので、単なる2つを有する時とは異なり、再命名テーブルを再構成するのに要求されるサイクルの数が減少することを分かる。
図3A、図3B、図3Cは、本発明の本実施形態によって作られたサンプルマイクロプロセッサに対するサンプルシークェンスを説明するためのブロック図である。
マイクロプロセッサ310は、デコーダー320、再命名器330、再命名テーブル336、リタイアテーブル338、ディスパッチャー340、スケジューラー(341、342、343)、物理的レジスターファイル(PRF)350、実行ユニット(351、352、353)、ブランチ実行ロジック357、及びROB360を含み、これは図1と同様の構成要素を参照して説明される。
ROB360は、ROBデータ162と同様のROBデータ362を格納する。
ROBデータ362は、再構成再命名データ182と同様の再構成再命名データ382を含む。
また、マイクロプロセッサ310は、ROB360と静的関係を有する2つのCPT、即ち、CPT−0(370)及びCPT−1(371)を含む。
CPT−0(370)及びCPT−1(371)は、図2Bの静的関係(符号288−2)と同様の静的関係を有する。
CPT−0(370)及びCPT−1(371)は静的関係にしたがって各々チェックポイントされた再命名データ380、381を格納する。
図3Aで、マイクロプロセッサ310は、ノーマル動作を実行する。
命令語はパイプを通じてデコーダー320から受信され、実行ユニット(351、352、353)で実行される。
図3Bで、フラッグとして示す予測ミス(符号390)が感知される。
その結果、再命名テーブル336はフラッシュ(符号392)され、コメントによって示される。
図3Cで、コメント「再成」(符号393)によって示すように、再命名テーブル336は再構成される。
その結果、コメント「停止」(符号391)が示すようにパイプのフロントエンドで停止が発生する。
再構成は次のように実行される。
最初に、リタイアチェックポイントが矢印(符号339)にしたがってリタイアテーブル338からコピーされる。
再構成は、2つの他のソースから来るデータによって実行される。
チェックポイントされた再命名データ(380、381)は、適用可能である静的関係の観点から許諾された場合、矢印(符号375、376)にしたがってコピーされる。
そして、再命名データ382は矢印(符号365)にしたがってROB360をウォーキング(walking)することによってコピーされる。
しかし、一部の特別な場合には以下のサンプルシナリオに開示するように、2つのソースの中で1つのソースは関与しないことがあり得る。
マイクロプロセッサ310は、一般的に、図に示さなかったクロックを含む。
クロックは、クロックサイクルを定義するパルスを出力する。
クロックサイクルは、本発明の長所を評価する良い方法である。実施形態を以下に説明する。
図4は、図3Cでのような再命名テーブルを再構成することに対する相対的なタイミングパルス図である。
クロックサイクル412は、シングルパルス(single pulse)で示すNサイクルのグループ415を含む。数字“N”は後で詳細に説明する。
図4では予測ミスを感知し、以後のペナルティー(penalties)を説明する。
パルス492はコメント(符号392)による再命名テーブル336のフラッシング(flushing)に対応する。
延長された停止パルス491はコメント(符号391)による、パイプ(pipe)が停止された時間に対応する。
パルス491の持続は、予測ミスに対する時間ペナルティー及び以後のマイクロプロセッサの動作性能減少と関連する。
パルス491とサイクルのグループ415で、仮に“N”が大きければ、ペナルティーはさらに大きい。
パルス493Aとパルス493Bは、コメント(符号393)に対応して各々再構成の開始と終了を示す。
一般的に、再命名サイクル436は、サイクル439、サイクル475、サイクル476、N個のサイクルのグループ465を含む。
サイクル439は、矢印(符号339)の動作実行の際に、リタイアチェックポイントをコピーするためのものである。
サイクル475は、矢印(符号375)にしたがってCPTから同時にコピーするためのものである。
サイクル476は、矢印(符号376)にしたがって他の同時コピーに関するものである。
N個のサイクルのグループ465は、矢印(符号365)にしたがってROBをウォーキング(walking)するためのものである。
サイクルのグループ415と同様に、サイクル465は1つで図に示している。
但し、これは例示的なものであり、サイクルのグループ415とサイクル465とはN値を有することもあり得る。
矢印(符号339、375、376、365)は理解の便宜を助けるために図4で適切な位置で反復される。
しかし、具体的に、再命名サイクル436の一部は、毎度は包含されない。
いずれかが含まれ、いずれかが含まれないかに関する問題は予測ミスが感知され、以後の再命名テーブルがフラッシュされる時点で定義されるシナリオによる。具体的な動作のシナリオは図4を参照して説明する。
最初に、シナリオを理解するために、ROB再構成ウインドウは、再命名テーブルがフラッシュされる時、定義されたと認識されなければならない。
ROB再構成ウインドウは、リタイアポインターから開始し、フラッシュポインターが1つ先行するところで終了するROBエントリを有する。
ROB再構成ウインドウ内のROBエントリは、再命名テーブルに再格納される必要があると定義され、再格納は、1つ又はそれ以上のCPTからの同時のコピー動作又はROBをウォーキング(walking)する動作のいずれか1つによって実行される。
各場合において、ROBから再命名テーブルにコピーされる再構成再命名データの部分はROB再構成ウインドウ内に属する。
シナリオは、再命名テーブルがフラッシュされる時毎に異なり、ROB再構成ウインドウは一般的に互に異なるROBエントリのセットを包含する。
異なるシナリオ自体は、ROB再構成ウインドウが以前に言及されたROBチェックポイントウインドウの深さと関連して、どのようにして異なる大きさを有するのかを検証する。
また以下のシナリオの一側面は、CPTテーブルが同時に再命名テーブルにコピーされることが許諾されるか否か、又はROBをワーキング(walking)することによって同一の内容がコピーされるか否かを判断することに連関する。
このようなシナリオの多様な例を説明する。
シナリオの説明をするために、ROB360とCPT(370、371)とが図2Bで示したものと同様なものが使用されたと仮定する。
さらに、静的関係(符号288−2)と同様のROBチェックポイントウインドウとCPT(370、371)を示す波括弧によって示される静的関係が適用される。
図5は、本発明からの有利な結果がない第1サンプルシナリオに対する、図3Cの構成要素を示す図である。
CPT−0(370)はチェックポイントされた再命名データ580を格納し、CPT−1(371)はチェックポイントされた再命名データ581を格納する。
矢印で示したROB再構成ウインドウ563は、リタイアポインターが示すROBエントリ“15”で始めて、フラッシュポインターが示すROBエントリ“38”より1つ小さいROBエントリ“37”で終了する。
ROB再構成ウインドウ563内のROBデータ562は、CPT(370、371)からの同時コピー又は直接的にROB360をウォーキングすることによって再命名テーブル336に再格納される再構成再命名データ582を含む。
本実施形態で、ROB再構成ウインドウ563は全て、ROBエントリ“0”から“47”になされたROBチェックポイントウインドウ内にある。
このように、チェックポイントされた再命名データ581は、図で線を引いて消されたように、要求されない。
さらに、ROBエントリ“38”で“47”までのコンテンツはフラッシュされ、したがってチェックポイントされた再命名データ580は、CPT−0(370)が全て再命名テーブル336にコピーされるので、再構成プロセスの一部として再命名テーブルにコピーされない。
このように、チェックポイントされた再命名データ580もやはり、図で線を引いて消されたように要求されない。
したがって、コメント(符号567)によって、すべてのROBエントリ“15”〜“37”内の再構成再命名データ582は矢印(符号565)にしたがって、即ち、ROB360をウォーキングすることによって再格納される。
したがって、コメント(符号567)に対して、ROBエントリ“15”〜“37”内の再構成再命名データ582は矢印(符号565)にしたがって、例えばROB360をウォーキングすることによって、再格納される。
言い換えれば、図5のCPTは、再構成のために使用されなく、したがって、本発明は図5のシナリオでは長所を提供しない。
図5のシナリオに対して図4を簡略的に参照すれば、再命名サイクル475と再命名サイクル476とは全て包含しなく、数字“N”は最大“m”であり、ここで、“m”はこのようなシナリオの下でROB360がウォーキングされることができる最も多い段階の数を示す。
停止パルス491の期間は本発明ではない状態では減少しない。このようなことは残るシナリオ例では適用されない。
図6は、第2サンプルシナリオのための図3Cの構成要素を示す図である。
CPT−0(370)はチェックポイントされた再命名データ部分680を格納し、CPT−1(371)はチェックポイントされた再命名データ部分681を格納する。
ROB360内のROB再構成ウインドウ663は“15”から“54”のROBエントリに掛かっている。
ROB再構成ウインドウ663内で、ROBデータ662は、再命名テーブル336に再格納される再構成再命名データの一部分(682A、682B)を含む。
再構成再命名データをROB360内の所定部分(682A、682B)に分割したことがROBチェックポイントの境界で発生したことにより理解できる。
実際に、“15”から“47”のROBエントリはチェックポイントされた再命名データ部分680にマッピングされ、“48”から“54”のROBエントリはチェックポイントされた再命名データ部分681にマッピングされる。
チェックポイントされた再命名データ部分680は使用可能であり、コメント(符号677)によって、矢印(符号675)にしたがって再格納される。
したがって、再構成再命名データ部分682Aは必要としないようになって、示したように図で線を引いたように消される。
しかし、チェックポイントされた再命名データ部分681は、図5でと同様の理由で使用されないので、図に線を引いて示したように消される。
コメント(符号667)によって、“48”から“54”のROBエントリ内の再構成再命名データ部分682BはROB360をウォーキング(walking)することによって矢印(符号665)にしたがって再格納される。
図4を参照すれば、矢印(符号675)にしたがって再格納することは、1つのクロックパルス475内で発生し、クロックパルス476内では存在しない。
“N”は“m”より小さく、“0”より大きく、停止パルス491の持続期間は本発明によって減少される。
図6のシナリオでの再構成は、図5に比べてさらに多いデータをコピーことを要求するように見えるが、本発明の技術的思想によれば、より短い時間の所要ですむ。
図7は、第3サンプルシナリオのための図3Cの構成要素を示す図である。
CPT−0(370)はチェックポイントされた再命名データ部分780を格納し、CPT−1(371)はチェックポイントされた再命名データ部分781を格納する。
ROB再構成ウインドウ763は“80”のROBエントリから始めて、“95”のROBエントリから“0”のROBエントリを経て、“9”のROBエントリまで続ける。
これは、ROB360がROBデータを循環キュー(circular queue)内に格納することを、囲むような矢印(符号768)によって示している。
ROBデータ部分762Aは再構成再命名データ部分782Aを含み、ROBデータ部分762Bは再構成再命名データ部分782Bを含む。
“80”から“95”のROBエントリはチェックポイントされた再命名データ部分781にマッピングされ、“0”から“9”のROBエントリはチェックポイントされた再命名データ部分780にマッピングされる。
チェックポイントされた再命名データ部分781は使用可能であり、コメント(符号777)によって、矢印(符号776)にしたがって再格納される。
したがって、再構成再命名データ部分782Aは必要がなくなって、図に線を引いて示したように消される。
しかし、チェックポイントされた再命名データ部分780は、図5でと同様の理由で使用できなくなり、コメント(符号767)によって、再構成再命名データ782Bが矢印(符号765)にしたがってROB360をウォーキング(walking)して再格納される。
図4を参照すれば、矢印(符号776)にしたがって再格納することは1つのクロックパルス476内で発生し、クロックパルス475内では存在しない。
“N”は“0”より大きく、“m”より小さく、停止パルス491の持続期間は本発明によって最少化される。
図8は、第4サンプルシナリオに対する図3Cの構成要素を示す図である。
CPT−0(370)はチェックポイントされた再命名データ部分880を格納し、CPT−1(371)はチェックポイントされた再命名データ部分881を格納する。
ROB再構成ウインドウ863はROBエントリ“80”で始めて、ROBエントリ“95”でROBエントリ“0”を含んで、ROBエントリ“74”まで続けることを図に示す。
ROBデータ部分862Aは再構成再命名データ部分882Aを含み、ROBデータ部分862Bは再構成再命名データ部分882Bを含み、ROBデータ部分862Cは再構成再命名データ部分882Cを含む。
ROBエントリ“80”〜“95”及び“48”〜“74”はチェックポイントされた再命名データ部分881にマッピングされ、ROBエントリ“0”〜“47”はチェックポイントされた再命名データ部分880にマッピングされる。
チェックポイントされた再命名データ部分880は使用可能であり、コメント(符号877)に対して、矢印(符号875)にしたがって再格納される。
したがって、再構成再命名データ部分(882B)は、図で線を引いて消されたように必要としない。
しかし、チェックポイントされた再命名データ部分881は使用可能でない。
したがって、コメント(符号867)によって、再構成再命名データ部分882A及び882Cは矢印(符号865)にしたがって、即ちROB360をウォーキングすることによって再格納される。
図4を参照すれば、クロックパルス476が存在しない間に、1つのクロックパルス475で矢印(符号875)にしたがって、再格納が実行される。
“N”は“0”よりは大きく、“m”よりは小さく、本発明によって停止パルス491は減少される。
図9は、第5シナリオに対する図3Cの構成要素を示す図である。
CPT−0(370)はチェックポイントされた再命名データ部分980を格納し、CPT−1(371)はチェックポイントされた再命名データ部分981を格納する。
ROB再構成ウインドウ963はROBエントリ“0”〜“48”に掛かっている。
ROBデータ962は再構成再命名データ982を含む。
言い換えれば、ROBエントリ“0”〜“47”はROBチェックポイントウインドウの下の部分に正確に包含される。これは特別な場合であり、統計的に小さい頻度で発生する。
チェックポイントされた再命名データ部分980は使用可能であり、コメント(符号977)によって、矢印(符号975)にしたがって再格納される。
したがって、再構成再命名データ部分982は図で線を引いて消されたように必要としない。
さらに、このシナリオでコメント(符号967)によってROB360のウォーキングは無く、何らかの再構成再命名データもROB360から再命名テーブル336にコピーされない。従って、チェックポイントされた再命名データ部分981もやはり線を引いて消されたように必要としない。
図4を参照すれば、クロックパルス476が存在しない間に、1つのクロックパルス475で矢印(符号975)にしたがって、再格納が実行される。
“N”は“0”になり、パルス415、465のグループはない。本発明によって停止パルス491は減少される。
図10は、本発明の実施形態による半導体装置と共に動作するシステムを含む電子機器を示すブロック図である。
システム1000は、PDA(personal digital assistant)、ラップトップコンピュータ、モバイルコンピュータ、ウェブタブレット、無線フォン、携帯電話機、デジタル音楽再生器、有線又は無線電気装置、又は少なくとも前記の機器の中で2つ以上を含む複合電子装置内で使用され得る。
システム1000は、コントローラ1010、キーパッド(keypad)、キーボード(keyboard)、ディスプレイのような入出力装置1020、メモリ1030、バス1050を通じて互に通信するインターフェイス1040を包含する。
コントローラ1010は、例えば、本発明の実施形態にしたがって製造された少なくとも1つのマイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラのようなものを包含する。
メモリ1030は、コントローラ810によって使用される命令語及び/又は入出力装置を経てアクセス可能であるユーザーデータを格納する。
システム(或いは電子機器)1000は、通信ネットワークを通じてデータを伝送するか、或いは受信するユーザーインターフェイス1040を使用する。
伝送動作は、例えば、ケーブル、USBインターフェイスのような有線を経由することがあり得る。他の例として、通信ネットワークは無線であり、インターフェイス1040は無線であり、例えば、アンテナ、無線送受信機のようなものであり得る。
システム(或いは電子機器)1000は、CDMA、GSM(登録商標)、NADC、E−TDMA、WCDMA(登録商標)、CDMA2000、Wi−Fi、Muni Wi−Fi、Bluetooth(登録商標)、DECT(登録商標)、Wireless USB、Flash−OFDM、IEEE 802.20、GPRS、iBurst(登録商標)、WiBro、WiMAX(登録商標)、WiMAX(登録商標)−Advanced、UMTS−TDD、HSPA、EVDO、LTEAdvanced、MMDSのような通信システムの通信インターフェイスプロトコル内で使用され得る。
図11は、本発明の実施形態によるマイクロプロセッサの動作方法を説明するためのフローチャートである。
フローチャート1100の動作方法は、上述した実施形態、マイクロプロセッサ、電子装置によって実行される。
まず、S1110段階にて、命令語を「micro−ops」にデコーディングする。
次に、S1120段階にて、再命名データが「micro−ops」によって発生する。
次に、S1130段階にて、再命名データを再命名テーブルに格納する。
次に、S1140段階にて、再命名データのチェックポイントされたバーションをCPTに格納する。
次に、S1150段階にて、「micro−ops」から発生されたROBデータをROBに格納する。
ROBデータは必要である場合、結局のところ再命名テーブルを再構成するために使用される再構成再命名データを包含することができる。ROBはCPTと静的関係を維持する。
次に、S1160段階にて、「micro−ops」が実行される。
次に、S1170段階にて、再命名テーブルがフラッシュされたか否かを判断する。
言い換えれば、再命名データは再命名テーブルからフラッシュされる。
仮に「いいえ」であれば、S1110段階にもどる。
一実施形態において、再命名テーブルは上述したように予測ミスを感知することに応答してフラッシュされる。
仮に再命名テーブルがフラッシュされたら(「はい」であれば)、以後のS1180段階にしたがって、再命名データを再命名テーブルに再格納する。即ち、再命名テーブルが再構成される。
S1180段階は、S1182段階及びS1184段階の中で少なくとも1つを含む。
S1180段階で、ROBエントリのROB再構成ウインドウは再命名テーブルがフラッシュされた時、定義される。
ROB再構成ウインドウ内のこのようなROBエントリの再構成再命名データは、S1182段階によって、又はS1184段階によって再命名テーブルに再格納される。
S1182段階にて、再命名データのチェックポイントされたバーションは、仮にS1150段階の静的関係によって許諾されれば、CPTから再命名テーブルにコピーする。
一実施形態において、再命名データのチェックポイントされたバーションは1つのクロックサイクル内でコピーされる。
S1184段階にて、再構成再命名データはROBから再命名テーブルにコピーする。
望ましくは、これはS1182段階によってカバーされないで残ることに対して実行され、ROBをウォーキング(walking)することによって実行される。
なお、上述した動作の順序は例示的なものであり、本発明の技術的思想はこれに限定されない。例えば、上述した動作方法の順序は固定されたものでなく、本発明の技術的思想の他の実施形態にしたがって異なる順序によって実行することもできる。
さらに、他の実施形態で、新しい段階が追加されたり、各段階が修正されるか、或いは削除されることもあり得る。
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
110、310 マイクロプロセッサ
120、320 デコーダー
130、330 再命名器(renamer)
136、336 再命名テーブル
138、338 リタイアテーブル
140、340 ディスパッチャー
141〜143、341〜343 スケジューラー(A〜C)
150、350 物理的レジスターファイル(PRF)
151〜153、351〜353 実行ユニット(A〜C)
157、357 ブランチ実行ロジック
160、360 リオーダーバッファ(ROB)
162、362 ROBデータ
170、370、371 チェックポイントテーブル(CPT)
180 再命名データのチェックポイントされたバーション
182、382 再構成再命名データ
380、381 チェックポイントされた再命名データ

Claims (16)

  1. 再命名データ(rename data)を格納する再命名テーブルと、
    ディスパッチャー(dispatcher)と、
    前記ディスパッチャーから受信した再命名データを格納するチェックポイントテーブル(Check Point Table:CPT)と、
    リオーダーバッファ(Re−Order Buffer:ROB)エントリを含むリオーダーバッファとを有し、
    前記再命名テーブルがフラッシュ(flush)されれば、前記再命名テーブルは、前記チェックポイントテーブルに格納された前記再命名データを利用して再構成(rebuild)され、
    前記リオーダーバッファエントリのグループは、リオーダーバッファチェックポイントウインドウとして定義され、
    前記リオーダーバッファチェックポイントウインドウと、前記チェックポイントテーブルとの間のマッピングは、固定された静的関係(static relationship)に従うものであり、
    前記再命名テーブルは、静的関係の側面で許諾される場合のみ、前記チェックポイントテーブルに格納された前記再命名データを利用して再構成されることを特徴とするマイクロプロセッサ。
  2. 予測ミス(mis−prediction)を感知するためのブランチ実行ロジック(branch execution logic)をさらに有し、
    前記予測ミスが感知されたことに応答して、前記再命名テーブルはフラッシュされることを特徴とする請求項1に記載のマイクロプロセッサ。
  3. 再命名データを生成する再命名器(renamer)をさらに有し、
    前記再命名テーブルは、前記再命名器から前記再命名データを受信することを特徴とする請求項1に記載のマイクロプロセッサ。
  4. クロックサイクルを定義するパルスを出力するクロックをさらに有し、
    前記再命名テーブルの再構成において、1つの前記チェックポイントテーブルから前記再命名テーブルへの再命名データのコピーは、前記クロックサイクルの中の1つのサイクル内で行われるものであることを特徴とする請求項1に記載のマイクロプロセッサ。
  5. 命令語をマイクロオペレーション(micro−ops)にデコーディングするデコーダーと、
    前記マイクロオペレーションを実行する実行ユニットと、
    前記マイクロオペレーションにしたがって再命名データを生成する再命名器と、
    再命名テーブルと、
    前記再命名データのチェックポイントされたバーション(check−pointed version)を格納するチェックポイントテーブル(CPT)と、
    前記マイクロオペレーションから生成されたリオーダーバッファ(Re−order Buffer:ROB)データを格納するリオーダーバッファエントリを有するリオーダーバッファとを有し、
    前記再命名テーブルは、前記再命名データを格納するものであり、かつ、所定の条件が成立した場合には、前記再命名データが前記再命名テーブルからフラッシュされるものであり、
    前記リオーダーバッファデータは、再構成再命名データを含み、
    前記リオーダーバッファエントリのグループは、リオーダーバッファチェックポイントウインドウとして定義され、
    前記リオーダーバッファチェックポイントウインドウと、前記チェックポイントテーブルの間のマッピングは、固定された静的関係に従うものであり、
    前記静的関係の側面で許諾される場合のみ前記再命名データの前記チェックポイントされたバーションが前記チェックポイントテーブルから前記再命名テーブルにコピーされ、さらに、前記再命名テーブルにコピーされるべき再命名データのうち、残余のものが存在する場合には、前記再構成再命名データの少なくとも一部分が前記リオーダーバッファから前記再命名テーブルにコピーされることによって、
    前記再命名テーブルに格納された再命名データが前記再命名テーブルからフラッシュされた場合、再命名データを前記再命名テーブルに再格納することができることを特徴とするマイクロプロセッサ。
  6. 付加的なチェックポイントテーブルをさらに有し、
    前記リオーダーバッファエントリは、前記チェックポイントテーブル又は前記付加的なチェックポイントテーブルにマッピングされることを特徴とする請求項5に記載のマイクロプロセッサ。
  7. 再命名データが前記再命名テーブルからフラッシュされる場合、リオーダーバッファエントリのリオーダーバッファ再構成ウインドウが定義され、
    前記リオーダーバッファから前記再命名テーブルにコピーされる前記再構成再命名データの部分は、前記リオーダーバッファ再構成ウインドウ内に存在することを特徴とする請求項5に記載のマイクロプロセッサ。
  8. マイクロオペレーション(micro−ops)にしたがって再命名データを生成する再命名器と、
    前記再命名データを格納する再命名テーブルと、
    前記マイクロオペレーションから生成され再構成再命名データを格納するリオーダーバッファデータを格納するリオーダーバッファ(Re−Order Buffer:ROB)と、
    前記再命名データのチェックポイントされたバーションを格納する2つ以上のチェックポイントテーブル(Check Point Table:CPT)とを有し、
    前記リオーダーバッファと前記2つ以上のチェックポイントテーブルとの間には、静的関係(static relationship)を有し、前記2つ以上のチェックポイントテーブルは、前記静的関係にしたがって各々チェックポイントされた再命名データを格納し、
    前記再命名テーブルに格納された再命名データが、前記再命名デーブルからフラッシュされる場合に、
    必要であれば、前記リオーダーバッファから前記再命名テーブルにコピーされる再構成再命名データと、前記静的関係の観点から許容されるのであれば、前記2つ以上のチェックポイントテーブルの少なくともいずれかから前記再命名テーブルにコピーされる再命名データの前記チェックポイントされたバージョンの間に重複がないようにしつつ、前記コピーを行うことにより、再命名データを前記再命名テーブルに格納されることを特徴とするマイクロプロセッサ。
  9. 前記マイクロオペレーションを実行ユニットに発送する(dispatching)ディスパッチャーをさらに有し、
    前記チェックポイントテーブルは、前記ディスパッチャーから前記再命名データの前記チェックポイントされたバーションを受信することを特徴とする請求項5又は8記載のマイクロプロセッサ。
  10. 前記マイクロオペレーションの実行において、予測ミスを感知するためのブランチ実行ロジックをさらに含み、
    前記予測ミスが感知されたことに応答して、前記再命名データは、前記再命名テーブルからフラッシュされることを特徴とする請求項5又は8に記載のマイクロプロセッサ。
  11. クロックサイクルを定義するパルスを出力するクロックをさらに含み、
    前記再命名データの前記チェックポイントされたバーションが、前記クロックサイクル中の1つのサイクル内で前記チェックポイントテーブルから前記再命名テーブルにコピーされることを特徴とする請求項5又は8記載のマイクロプロセッサ。
  12. バス(Bus)と、
    前記バスに接続されたインターフェイスであって、通信ネットワークにデータを伝送し、前記通信ネットワークからデータを受信するように構成された前記インターフェイスと、
    前記バスに接続された入出力装置と、
    前記バスに接続され、前記入出力装置を通じてアクセス可能であるユーザーデータ又は命令語を格納するよう構成されたメモリと、
    前記バスに接続され、前記命令語を利用するよう構成されたコントローラとを有し、
    前記コントローラは、少なくとも1つのマイクロプロセッサを含み、
    前記マイクロプロセッサは、再命名データを格納する再命名テーブルと、
    ディスパッチャーと、
    チェックポイントテーブル(Check Point Table:CPT)と、
    リオーダーバッファ(Re−Order Buffer:ROB)エントリを含むリオーダーバッファとを含み、
    前記リオーダーバッファエントリのグループはリオーダーバッファチェックポイントウインドウ(checkpoint window)として定義され、
    前記リオーダーバッファチェックポイントウインドウと、前記チェックポイントテーブルの間のマッピングは、固定された静的関係に従うものであり、
    前記再命名テーブルがフラッシュされれば、前記再命名テーブルは、前記チェックポイントテーブルに格納された前記再命名データを利用して再構成され、
    前記再命名テーブルは、静的関係の側面で許諾される場合のみ、前記チェックポイントテーブルに格納された前記再命名データを利用して再構成されることを特徴とする電子機器。
  13. 前記インターフェイスは、無線であり、前記通信ネットワークも無線であることを特徴とする請求項12に記載の電子機器。
  14. 予測ミスを感知するためのブランチ実行ロジックをさらに有し、
    前記予測ミスが感知されたことに応答して前記再命名テーブルは、フラッシュされることを特徴とする請求項12に記載の電子機器。
  15. 再命名データを生成する再命名器をさらに有し、
    前記再命名テーブルは、前記再命名器から前記再命名データを受信することを特徴とする請求項12に記載の電子機器。
  16. クロックサイクルを定義するパルスを出力するクロックをさらに有し、
    前記再命名テーブルの再構成において、1つの前記チェックポイントテーブルから前記再命名テーブルへの再命名データのコピーは、前記クロックサイクルの中の1つのサイクル内で行われるものであることを特徴とする請求項12に記載の電子機器。
JP2014051308A 2013-03-14 2014-03-14 マイクロプロセッサ及びこれを使用した電子機器 Expired - Fee Related JP6533643B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/831,522 2013-03-14
US13/831,522 US9448800B2 (en) 2013-03-14 2013-03-14 Reorder-buffer-based static checkpointing for rename table rebuilding

Publications (2)

Publication Number Publication Date
JP2014179098A JP2014179098A (ja) 2014-09-25
JP6533643B2 true JP6533643B2 (ja) 2019-06-19

Family

ID=51419120

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014051308A Expired - Fee Related JP6533643B2 (ja) 2013-03-14 2014-03-14 マイクロプロセッサ及びこれを使用した電子機器

Country Status (5)

Country Link
US (2) US9448799B2 (ja)
JP (1) JP6533643B2 (ja)
KR (1) KR102021957B1 (ja)
CN (1) CN104050132B (ja)
DE (1) DE102014103283A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030032598A (ko) * 2001-10-16 2003-04-26 손규석 수유 보조기
US9448799B2 (en) * 2013-03-14 2016-09-20 Samsung Electronics Co., Ltd. Reorder-buffer-based dynamic checkpointing for rename table rebuilding
US10877768B1 (en) * 2019-09-06 2020-12-29 Microsoft Technology Licensing, Llc Minimizing traversal of a processor reorder buffer (ROB) for register rename map table (RMT) state recovery for interrupted instruction recovery in a processor
US11061677B1 (en) * 2020-05-29 2021-07-13 Microsoft Technology Licensing, Llc Recovering register mapping state of a flushed instruction employing a snapshot of another register mapping state and traversing reorder buffer (ROB) entries in a processor
US11113068B1 (en) * 2020-08-06 2021-09-07 Microsoft Technology Licensing, Llc Performing flush recovery using parallel walks of sliced reorder buffers (SROBs)

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694564A (en) * 1993-01-04 1997-12-02 Motorola, Inc. Data processing system a method for performing register renaming having back-up capability
US5630149A (en) * 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
DE69408769T2 (de) * 1993-10-18 1998-07-09 Cyrix Corp Fliessbandsteuerung und Registerübersetzung in Mikroprozessor
EP0815507B1 (en) * 1995-02-14 2013-06-12 Fujitsu Limited Structure and method for high-performance speculative execution processor providing special features
US5822574A (en) * 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same
US5809268A (en) * 1995-06-29 1998-09-15 International Business Machines Corporation Method and system for tracking resource allocation within a processor
DE69814415T2 (de) * 1997-01-29 2004-03-11 Advanced Micro Devices, Inc., Sunnyvale Zeilenorientierter wiedereinordnungsspeicher für superskalaren mikroprozessor
US6026477A (en) * 1997-12-31 2000-02-15 Intel Corporation Branch recovery mechanism to reduce processor front end stall time by providing path information for both correct and incorrect instructions mixed in the instruction pool
US6742112B1 (en) 1999-12-29 2004-05-25 Intel Corporation Lookahead register value tracking
US6629233B1 (en) * 2000-02-17 2003-09-30 International Business Machines Corporation Secondary reorder buffer microprocessor
US6349361B1 (en) 2000-03-31 2002-02-19 International Business Machines Corporation Methods and apparatus for reordering and renaming memory references in a multiprocessor computer system
US7969451B2 (en) * 2003-03-27 2011-06-28 International Business Machines Corporation Method and apparatus for dynamically sizing color tables
US7711932B2 (en) 2003-12-02 2010-05-04 Intel Corporation Scalable rename map table recovery
US20060149931A1 (en) 2004-12-28 2006-07-06 Akkary Haitham Runahead execution in a central processing unit
US7526583B2 (en) 2005-06-23 2009-04-28 International Business Machines Corporation Method and apparatus to launch write queue read data in a microprocessor recovery unit
US20070043934A1 (en) * 2005-08-22 2007-02-22 Intel Corporation Early misprediction recovery through periodic checkpoints
US7747841B2 (en) * 2005-09-26 2010-06-29 Cornell Research Foundation, Inc. Method and apparatus for early load retirement in a processor system
US7809926B2 (en) 2006-11-03 2010-10-05 Cornell Research Foundation, Inc. Systems and methods for reconfiguring on-chip multiprocessors
US7613908B2 (en) 2007-02-23 2009-11-03 Intel Corporation Selective hardware lock disabling
US20190065160A1 (en) * 2007-11-07 2019-02-28 Haitham Akkary Pre-post retire hybrid hardware lock elision (hle) scheme
US8320372B2 (en) 2008-06-23 2012-11-27 Alcatel Lucent Processing of packet fragments
US20090327661A1 (en) 2008-06-30 2009-12-31 Zeev Sperber Mechanisms to handle free physical register identifiers for smt out-of-order processors
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US8301849B2 (en) 2009-12-23 2012-10-30 Intel Corporation Transactional memory in out-of-order processors with XABORT having immediate argument
US9052890B2 (en) * 2010-09-25 2015-06-09 Intel Corporation Execute at commit state update instructions, apparatus, methods, and systems
US8549504B2 (en) 2010-09-25 2013-10-01 Intel Corporation Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
US20120079245A1 (en) 2010-09-25 2012-03-29 Cheng Wang Dynamic optimization for conditional commit
WO2013101128A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Using a single table to store speculative results and architectural results
US20130173885A1 (en) * 2011-12-30 2013-07-04 Advanced Micro Devices, Inc. Processor and Methods of Adjusting a Branch Misprediction Recovery Mode
US9672044B2 (en) * 2012-08-01 2017-06-06 Nxp Usa, Inc. Space efficient checkpoint facility and technique for processor with integrally indexed register mapping and free-list arrays
US9448799B2 (en) * 2013-03-14 2016-09-20 Samsung Electronics Co., Ltd. Reorder-buffer-based dynamic checkpointing for rename table rebuilding
KR102010317B1 (ko) * 2013-03-14 2019-08-13 삼성전자주식회사 재명명 테이블 재구성을 위한 리오더-버퍼를 기초로 하는 동적 체크포인팅

Also Published As

Publication number Publication date
US9448800B2 (en) 2016-09-20
KR102021957B1 (ko) 2019-09-17
CN104050132B (zh) 2018-10-19
JP2014179098A (ja) 2014-09-25
KR20140113306A (ko) 2014-09-24
DE102014103283A1 (de) 2014-09-18
US20140281414A1 (en) 2014-09-18
US9448799B2 (en) 2016-09-20
CN104050132A (zh) 2014-09-17
US20140281393A1 (en) 2014-09-18

Similar Documents

Publication Publication Date Title
JP6533643B2 (ja) マイクロプロセッサ及びこれを使用した電子機器
CN109358948B (zh) 用于支持推测的访客返回地址栈仿真的方法和装置
TWI416407B (zh) 執行複數快速條件分支指令的方法以及相關之微處理器以及電腦程式產品
US9298497B2 (en) Computer processor providing exception handling with reduced state storage
TWI470547B (zh) 非循序執行微處理器及其操作方法
JP5904993B2 (ja) マルチスレッド・コードをデバッグする方法、システム、及びコンピュータ・プログラム
CN108196884B (zh) 利用生成重命名的计算机信息处理器
CN105005463A (zh) 具有世代重命名的计算机处理器
US6971000B1 (en) Use of software hint for branch prediction in the absence of hint bit in the branch instruction
CN106406822A (zh) 具有改进的别名队列和存储冲突检测的处理器
US8037366B2 (en) Issuing instructions in-order in an out-of-order processor using false dependencies
KR20190038989A (ko) 나누기와 곱하기-빼기 연산들을 병합하기 위한 시스템 및 방법
US9594564B2 (en) Arithmetic processing device and control method of arithmetic processing device
JP7189935B2 (ja) 同時の分岐アドレスの予測およびレジスタの内容の更新
US20180253303A1 (en) String sequence operations with arbitrary terminators
US20150227371A1 (en) Processors with Support for Compact Branch Instructions & Methods
CN102163139B (zh) 微处理器融合载入算术/逻辑运算及跳跃宏指令
KR102010317B1 (ko) 재명명 테이블 재구성을 위한 리오더-버퍼를 기초로 하는 동적 체크포인팅
US5913050A (en) Method and apparatus for providing address-size backward compatibility in a processor using segmented memory
US20130019085A1 (en) Efficient Recombining for Dual Path Execution
Celio et al. Riscv-boom documentation
Mutlu 18-447: Computer Architecture, Lecture 13: Out-of-Order Execution
Revucky Optimizing Indirect Branch Prediction Accuracy in Virtual Machine Interpreters

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161227

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180313

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181205

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: 20190514

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190527

R150 Certificate of patent or registration of utility model

Ref document number: 6533643

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

LAPS Cancellation because of no payment of annual fees