JP2021504788A - ストアフュージョンのためのシステム及び方法 - Google Patents

ストアフュージョンのためのシステム及び方法 Download PDF

Info

Publication number
JP2021504788A
JP2021504788A JP2020526347A JP2020526347A JP2021504788A JP 2021504788 A JP2021504788 A JP 2021504788A JP 2020526347 A JP2020526347 A JP 2020526347A JP 2020526347 A JP2020526347 A JP 2020526347A JP 2021504788 A JP2021504788 A JP 2021504788A
Authority
JP
Japan
Prior art keywords
store
microoperation
data
microoperations
contiguous
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.)
Granted
Application number
JP2020526347A
Other languages
English (en)
Other versions
JP7284752B2 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2021504788A publication Critical patent/JP2021504788A/ja
Application granted granted Critical
Publication of JP7284752B2 publication Critical patent/JP7284752B2/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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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
    • 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/3818Decoding for concurrent 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/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; 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/48Incremental compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本明細書では、小さなストアオペレーションをフュージョンして、より少なくより大きなストアオペレーションにするストアフュージョンのためのシステム及び方法について説明する。システムは、隣接する一対のオペレーションが連続するストアオペレーションであることを検出する。隣接するマイクロオペレーションは、隣接するディスパッチスロットを流れるマイクロオペレーションを指し、連続するストアマイクロオペレーションは、隣接するマイクロオペレーションの両方がストアマイクロオペレーションであることを指す。次に、連続するストアオペレーションが評価され、データサイズが同じであるかどうか、及び、ストアオペレーションアドレスが連続しているかどうかが判別される。次いで、2つのストアオペレーションがフュージョンされ、2倍のデータサイズを有する1つのストアオペレーションと、1つのストアデータHIオペレーションと、が形成される。【選択図】図2

Description

(関連出願の相互参照)
本願は、2017年11月27日に出願された米国特許出願第15/822,515号の利益を主張するものであり、この内容は、本明細書に完全に記載されるかのように、引用により本明細書に組み込まれる。
プロセッサは、一般に、フェッチステージと、デコード(又は、ディスパッチ)ステージと、実行ステージとを含む命令パイプラインに関連している。デコードステージは、フェッチキューから命令を取り出す。フェッチされた命令がストアオペレーションである場合、キューエントリは、演算論理ユニット(ALU)スケジューラキュー(ALSQ)、アドレス生成スケジューラキュー(AGSQ)及びストアキュー(STQ)に割り当てられる。従来のプロセッサは、サイクル当たり1つのストアオペレーションを実行する。サイクル当たりの命令数(IPC)を増やすために、いくつかのプロセッサは、2ストアコミットアーキテクチャを用いる。これは、ダイ領域上の追加の制御ロジック及び増加した電力使用量を犠牲にして行われる。
添付図面と併せて例として与えられる以下の説明から、より詳細な理解を得ることができる。
特定の実施形態による、プロセッサのコア処理ユニットのハイレベルブロック及びフロー図である。 特定の実施形態による、整数スケジューラ及び/又は実行ユニットのハイレベルブロック及びフロー図である。 特定の実施形態による、ロードストア/データキャッシュ(LSDC)ユニットのハイレベルブロック及びフロー図である。 特定の実施形態による、ストアフュージョンのための方法のフロー図である。 1つ以上の開示された実施形態が実施され得る例示的なデバイスのブロック図である。
プロセッサは、一般に、フェッチステージと、デコード(又は、ディスパッチ)ステージと、実行ステージと、を含む命令パイプラインに従って動作する。デコードステージ又はディスパッチステージは、フェッチキューから命令を取り出す。フェッチされた命令がストアマイクロオペレーションである場合、キューエントリは、演算論理ユニット(ALU)スケジューラキュー(ALSQ)、アドレス生成スケジューラキュー(AGSQ)及びストアキュー(STQ)に割り当てられる。各ストアマイクロオペレーションは独立に実行され、従来のプロセッサは、サイクル当たり1つのストアマイクロオペレーションを実行する。
本明細書では、小さいストアマイクロオペレーションをフュージョンして、より少数のより大きいストアマイクロオペレーションにするストアフュージョンのためのシステム及び方法について説明する。特に、システムは、隣接するマイクロオペレーションが連続するストアマイクロオペレーションであることを検出する。次に、連続するストアマイクロオペレーションが評価(reviewed)され、データサイズが同じかどうか、及び、ストアマイクロオペレーションのアドレスが連続しているかどうかが判別される。上記の条件が満たされる場合、連続するストアマイクロオペレーションは、2倍のデータサイズを有する1つのストアマイクロオペレーションと、2つのストア毎に1つの、2つのストアデータマイクロオペレーションと、を形成するようにフュージョンされる。これにより、STQ及びAGSQキューエントリを保存することによって性能が向上し、例えば、アドレス生成の回数を減らしたり、ストアパイプフロー(store pipe flows)及びキャッシュに書き込むストアコミット(store commits)の数を減らすことによって、電力を節約する。ストアフュージョンシステム及び方法は、例えば、更なる複雑さ、電力要求の増加、及び、より高い動作周波数を達成することの困難さの追加を含む、2ストアコミットの欠点を無くして、サイクルアーキテクチャ当たり2ストアのIPCゲインの多くを効果的に実現する。
図1は、特定の実施形態による、プロセッサ100のコア処理ユニット105のハイレベルブロック及びフロー図である。コア処理ユニット105は、マイクロオペレーション(図1においてマイクロopとして示されている)をスケジューラ及び実行ユニット(SCEX)115に提供するデコーダユニット110を含む。デコーダユニット110は、キャッシュ122及びマイクロopキャッシュ124に接続された分岐予測器120を含む。キャッシュ122は、デコーダ126に接続されている。デコーダ126及びマイクロopキャッシュ124は、マイクロopキュー128に接続されている。このマイクロopキューは、ディスパッチロジック129を介してオペレーションをディスパッチする。ストアフュージョン検出ロジック(SFDL)128は、ディスパッチロジック129に接続されている。
SCEX115は、整数SCEX130及び浮動小数点SCEX132を含む。これらの両方は、キャッシュ134に接続されている。キャッシュ134は、さらに、L2キャッシュ136、LDQ138及びSTQ140に接続されている。整数SCEX130は、スケジューラ151に接続された整数リネーマ(integer renamer)150を含む。このスケジューラは、演算論理ユニット(ALU)スケジューラキュー(ALSQ)152と、アドレス生成ユニット(AGU)スケジューラキュー(AGSQ)154と、を含む。スケジューラ151、特にALSQ152及びAGSQ154の各々は、ALU〜ALU 156及びAGU〜AGU 158に接続されている。一対のマルチプレクサM,M 157とストアデータインタフェース159とは、ALU及びALUをSTQ140に接続し、ALU及びALUをSTQ140に接続する。LDQ138及びSTQ140は、パス180を介してスケジューラ151に接続されており、割り当て解除信号を送信する。また、整数SCEX130は、整数物理ファイルレジスタ160を含む。浮動小数点SCEX132は、スケジューラ172に接続された浮動小数点リネーマ(floating point renamer)170を含む。スケジューラ172は、乗算器174及び加算器176に接続されている。浮動小数点SCEX132は、浮動小数点物理ファイルレジスタ178も含む。
パイプライン型プロセッサは、命令の安定したストリームがパイプラインに供給されるのを必要とする。分岐予測器120は、パイプライン型プロセッサにおいて何れのマイクロオペレーションのセットがフェッチされ、実行されるかを予測する。これらのマイクロオペレーションは、フェッチされ、キャッシュ122に記憶(ストア)され、デコーダ126によってデコードされる。マイクロopキャッシュ124は、デコーダ126がキャッシュ122からのマイクロオペレーションをデコードする場合に、分岐予測器120からマイクロオペレーションをキャッシュする。マイクロopキュー128は、ディスパッチロジック129を介して、実行されるマイクロオペレーションをディスパッチするために、デコーダ126及びマイクロopキャッシュ124からのマイクロオペレーションをストアし、キューアップ(queues up)する。
従来のパイプラインアーキテクチャでは、各マイクロオペレーションは、独立してディスパッチされ、処理される。このため、場合によっては、処理が非効率になることがある。例えば、ストアマイクロオペレーションは、3つのコンポーネント(すなわち、ストアキューに向けられるロード/ストアオペレーション、AGSQに向けられるアドレス生成オペレーション、及び、ALSQに向けられるストアデータオペレーション)を含む。したがって、各ストアマイクロオペレーションは、ストアマイクロオペレーションを完了するために、3つのキューエントリ及び関連する処理を使用する。
実施形態によれば、SFDL128は、隣接するマイクロオペレーションが連続するストアマイクロオペレーションであるかどうかを判別する。SFDL128は、連続するストアマイクロオペレーションが同じデータサイズを有し、連続するアドレスにアクセスしているかどうかを確認する。実施形態では、SFDL128は、ストアマイクロオペレーションの各々のアドレッシングモードを確認する。例えば、4バイトのストアマイクロオペレーションの場合、第1ストアマイクロオペレーションのアドレッシングモードは、+4の変位を有するベースレジスタRを使用することができ、第2ストアマイクロオペレーションのアドレッシングモードは、+8の変位を有するベースレジスタRを使用することができる。この場合、第1ストアマイクロオペレーションのアドレスと第2ストアマイクロオペレーションのアドレスとが連続している。すなわち、同じレジスタが、連続する定数又は変位のオフセットと共に用いられている。実施形態では、変位は、正又は負とすることができる。
ストアマイクロオペレーションが同じデータサイズを有し、連続するアドレスを使用する場合、SFDL128は、連続するストアマイクロオペレーションを、データサイズが2倍の1つのストアマイクロオペレーションにフュージョンする。特に、下位アドレスのストアマイクロオペレーションは、データサイズxのストアマイクロオペレーションからデータサイズ2xのストアマイクロオペレーションに変換され、上位アドレスのストアマイクロオペレーションは、データサイズxのストアマイクロオペレーションからストアデータHIマイクロオペレーションに変換される。ストアデータHIマイクロオペレーションは、ロード/ストアマイクロオペレーション及びアドレス生成マイクロオペレーションコンポーネントが抑えられている(suppressed)。すなわち、ストアデータHIマイクロオペレーションは、ALSQ152内のキューエントリのみを使用する。ストアフュージョンは、データサイズ2xのストアマイクロオペレーション内のより大きなデータサイズのストアマイクロオペレーションで利用可能な大きなSTQ帯域幅を活用(leverages)するので、STQ140及びAGSQ154内のキューエントリが必要ない。
エイジオーダー(age-ordered)のオペレーション又はインオーダーキュー(in-order queues)を維持するために、各ストアマイクロオペレーションは、特定のストアキューエントリ又はストアキュー識別子に関連付けられる。そのストアキューエントリは、ディスパッチ時にプログラム順序でストアマイクロオペレーションに割り当てられる(例えば、ストアマイクロオペレーションは、ストアキューエントリ0に割り当てられ、プログラム順序の次のストアマイクロオペレーションは、ストアキューエントリ1に割り当てられ、プログラム順序の次のストアマイクロオペレーションは、ストアキューエントリ2に割り当てられ、以下同様である)。SFDL128は、この情報を用いて、データサイズ2xのストアマイクロオペレーションとストアデータHIマイクロオペレーションとの両方に同じストアキューエントリ番号を設定する。また、SFDL128及びディスパッチロジック129は、マイクロオペレーションタイプをストアデータHIマイクロオペレーションに設定して、このデータが、データサイズ2xのストアマイクロオペレーションの上位部分であることを示す。ALU〜ALU 156は、マイクロオペレーションタイプを用いて、ストアデータHIマイクロオペレーション内のデータを用いて何を行う必要があるかを解釈する。
本明細書で説明するように、SFDL128が、連続するストアマイクロオペレーションをフュージョンすると、ディスパッチロジック129は、必要に応じて、データサイズ2xのストアマイクロオペレーション及びストアデータHIマイクロオペレーションを、ALSQ152及びAGSQ154にディスパッチする。ALSQ152及びAGSQ154は、必要に応じて、データサイズ2xのストアマイクロオペレーション及びストアデータHIマイクロオペレーションを、ALU〜ALU 156に発行する。ALU〜ALU 156は、ストアデータHIマイクロオペレーション内のデータがストアデータフィールドの上位又は上位部分に書き込まれることを示すために、制御ビットを、ストアフュージョン制御インタフェース159を介してSTQ140に送信する。すなわち、制御ビットは、ストアデータHIマイクロオペレーション内のデータがストアされる場合にシフトされる必要があることを示す。データサイズ2xのストアマイクロオペレーション内のデータは、ストアデータフィールドの下位部分に書き込まれる。STQ140は、必要な書き込みを実行する。実施形態では、データサイズ2xのストアマイクロオペレーションとストアデータHIマイクロオペレーションとの両方がデータを配信した後に、ストアロード転送オペレーションを実行することができる。
例として、以下の2つの命令について検討する。
MOV[RBX+8],R8(64bデータサイズ)
MOV[RBX+16],R9(64bデータサイズ)
従来のアーキテクチャでは、上記の2つの命令は、2つのストアマイクロオペレーションになる。
mov.q [rbx+8],r8
mov.q [rbx+16],r9
ストアフュージョン方法及びシステムによれば、2つのストアマイクロオペレーションは、以下となる。
mov.o [rbx+8],r8
stdatahi.q r9
ここで、第1マイクロオペレーションは、128ビットのストアマイクロオペレーションであり、第2マイクロオペレーションは、ストアデータオンリーマイクロオペレーションである。本明細書で説明するように、ALUからSTQに渡される制御ビットは、ストアデータオンリーマイクロオペレーションからのデータをSTQの上位64bに置くようにSTQに指示する。これは、正の変位の例である。
別の正のアドレス方向の例では、命令は、MOV dword[addr]命令の次にMOV dword[addr+4]命令を続けたものであってもよい。この場合、第1ストアマイクロオペレーションは、第2ストアマイクロオペレーションよりも下位のアドレスにストアし、2つの4バイトのストアマイクロオペレーションは、1つの8バイトのストアマイクロオペレーションにフュージョンされる。特に、第1ストアマイクロオペレーションは、AGSQ、STQキューエントリ又はトークンを使用し、64ビットのデータサイズを有するストアマイクロオペレーションに変換される。第2ストアマイクロオペレーションのストアデータマイクロオペレーションコンポーネントは、フュージョン済みLOストアデータであることを示すオペコード値(movと機能的に似ている)を有してもよい。第2ストアマイクロオペレーションは、AGSQ、STQキューエントリ又はトークンを使用せず、ストアデータオンリーマイクロオペレーションに変換される。ストアデータオンリーマイクロオペレーションは、フュージョン済みHIストアデータであることを示すオペコード値(即値が32の即値左シフト(shift-left-immediate)と機能的に似ている)を有してもよい。
別の例では、負のアドレス方向が用いられてもよい。例えば、PUSH32b命令の次に別のPUSH32b命令が続く場合、又は、MOV dword[addr]の次にMOV dword[addr−4]命令が続く場合である。この場合、第2ストアマイクロオペレーションは、第1ストアマイクロオペレーションよりも下位のアドレスにストアし、2つの4バイトのストアマイクロオペレーションは、1つの8バイトのストアマイクロオペレーションにフュージョンされる。特に、第1ストアマイクロオペレーションは、AGSQ、STQキューエントリ又はトークンを使用せず、ストアデータオンリーマイクロオペレーションに変換される。ストアデータオンリーマイクロオペレーションは、フュージョン済みHIストアデータであることを示すオペコード値(即値が32の即値左シフトと機能的に似ている)を有してもよい。第2ストアマイクロオペレーションは、AGSQ、STQキューエントリ又はトークンを使用し、64ビットのデータサイズを有するストアマイクロオペレーションに変換される。第2ストアマイクロオペレーションのストアデータマイクロオペレーションコンポーネントは、フュージョン済みLOストアデータであることを示すオペコード値(movと機能的に似ている)を有してもよい。別の例では、命令は、PUSH64b命令の次に別のPUSH64b命令を続けたもの、又は、MOV qword[addr]の次にMOV qword[addr−8]命令を続けたものであってもよい。これは、データサイズが64ビットから128ビットに倍増されることを除いて、同様に動作する。
ストアフュージョンに関するパイプライン処理には、さらなる考慮事項又は変更が存在する。図2のリタイアユニット208として示されているリタイアユニットは、ストアデータオンリーオペレーションにおいてストアリタイア指標を送らない。リタイアキュー208内のストアは、通常、サイクルにおいてリタイアされた(非投機的になる)ストアの数を示す「ストア」ビットであって、リタイヤハードウェアによって用いられる「ストア」ビットを有する。フュージョン済みストアにおけるストアデータオンリーオペレーションのためにこのストアリタイア指標を抑えることは、そのリタイアキューエントリにおいて単に「ストア」ビットを設定しないことによって実現可能である。
例外ハンドリングも、フュージョン済みストアのために変更される。1つのストアが、ページフォールト又はトラップ等のように、アーキテクチャ的又はマイクロアーキテクチャ的な例外を起こす可能性がある。しかしながら、フュージョン済みストアの場合には、例外ロジックは、単一のフュージョン済みストアでのみ例外を検出できるので、これらのストアを独立したオペレーションとして認識しない。例外ロジックは、何れのストアがアーキテクチャ的に例外を起こす可能性があったかを判別することができない。これは、フュージョン済みストアマイクロオペレーションが、リタイアキュー(例えば、リタイアキュー208)内のエクストラビットを有するアトミックグループとしてディスパッチされ、フュージョン済みストアオペレーションを示すことを要求することによって処理される。フュージョン済みストアオペレーションにおいてフォールト又はトラップが発生した場合、例外が再同期フォールトに変換され、命令が再実行される。この再実行では、ストアフュージョンメカニズムは、命令がフュージョンされることなくディスパッチされるように、1回のディスパッチサイクルの間、一時的に無効になる。例外が再発した場合、その例外は、従来の方法で処理される。
メモリリネームを伴うストアフュージョンを実施する場合、さらなる考慮事項が存在する。これらの考慮事項を考慮しない場合、メモリリネームの機会が失われる可能性がある。例えば、ストアフュージョンを使用しない場合、古いストア命令を同じアドレスに正確に一致させるロード命令は、古いストアに正常にメモリリネームすることができる。しかしながら、ストアフュージョンがある場合、古いストアが、フュージョン済みストアのHI部分としてフュージョンされる場合がある。ロードアドレスは、フュージョン済みストアのアドレスと正確に一致せず、通常のメモリリネームロジックが、メモリリネームに失敗するロードを引き起こし、その結果、メモリリネームされたロードが再同期フォールトを発生させ、パフォーマンスが低下する。これは、実施形態では、フュージョン済みストアマイクロオペレーションを、当該マイクロオペレーションがメモリリネーム目的の実際のストアであるかのように動作させることによって解決されるが、フュージョン済みストアのHI部分であることを示すストアデータHIマイクロオペレーションのメモリリネーム追跡構造(memfileとして知られる)内の追加のHIストアビットを用いて、そのマイクロオペレーションがフュージョン済みストアのHI部分であることを記憶していることによって解決される。ロードが、HIフュージョン済みストアにメモリリネームされると、memfileは、そのHIストアビットを、メモリリネームされたSTQ ID情報と共にロードに渡す。ロードは、memfile内の全てのストアのHIストアビットを用いて、リネームされたSTQ IDを、正しいストアを指すように調整する(HIストアがSTQエントリを占有していないため)。また、リネームが確認されると、ロードのHIストアビットが使用され、ロードのアドレスが、ストアのアドレス+ロードデータサイズと正確に一致するのではなく、等しいことがチェックされる。これは、ロードが、フュージョン済みストアの上位半分のアドレスと正確に一致したので、メモリリネームが正しく成功したことを意味する。
図2は、特定の実施形態による、ディスパッチロジック201、SFDL Op0/1〜SFDL Op4/5 202、及び、整数スケジューラ/実行ユニット200の間のインタフェースのハイレベルブロック図である。特に、マイクロオペレーションOp0〜Op5は、ディスパッチロジック201内の関連するディスパッチスロットを介して整数スケジューラ/実行ユニット200にディスパッチされ、SFDL Op0/1〜SFDL Op4/5 202は、ストアフュージョン候補を決定するためにディスパッチロジック201に接続されている。
整数スケジューラ/実行ユニット200は、整数リネーマ/マッパ203を含む。この整数リネーマ/マッパは、ALSQ〜ALSQ 204、AGSQ〜AGSQ 206及びリタイアキュー208に接続されている。ALSQ〜ALSQ 204及びAGSQ〜AGSQ 206は、転送マルチプレクサ210に接続されている。この転送マルチプレクサは、ALU〜ALU 212及びAGU〜AGU 214の各々に接続されている。ALU〜ALU 212は、一対のマルチプレクサM,M 213及びストアデータインタフェース232を介してSTQ218に接続されている。AGU〜AGU 214は、LDQ216、STQ218及びリタイアキュー208に接続されている。整数スケジューラ/実行ユニット200は、物理ファイルレジスタ220も含む。この物理ファイルレジスタ220は、ALU〜ALU 212、LDQ216及びSTQ218に接続されている。LDQ216及びSTQ218は、パス230を介してAGSQ〜AGSQ 206に接続されており、割り当て解除信号を送信する。
図1と同様に、マイクロオペレーションは、隣接するマイクロオペレーションが連続するストアマイクロオペレーションであるかどうかを判別するために、SFDL Op0/1〜SFDL Op4/5 202によって検査される。隣接するマイクロオペレーションとは、隣接するディスパッチスロットを流れるマイクロオペレーションを指し、連続するストアマイクロオペレーションとは、隣接するマイクロオペレーションの両方がストアマイクロオペレーションであることを指す。特に、SFDL Op0/1は、マイクロオペレーション0及び1からストアフュージョン候補を決定し、SFDL Op1/2は、マイクロオペレーション1及び2からストアフュージョン候補を決定し、SFDL Op2/3は、マイクロオペレーション2及び3からストアフュージョン候補を決定し、SFDL Op3/4は、マイクロオペレーション3及び4からストアフュージョン候補を決定し、SFDL Op4/5は、マイクロオペレーション4及び5からストアフュージョン候補を決定する。SFDL Op0/1〜SFDL Op4/5 202の各々は、本明細書で説明するように、連続するストアマイクロオペレーションが同じデータサイズを有しているかどうか、及び、連続するアドレスにアクセスしているかどうかを確認する。SFDLロジックは、殆ど並列に動作し、ストアフュージョンの適格性について、隣接するマイクロオペレーションの対を独立して確認する。しかしながら、優先順位は、最も古いマイクロオペレーションがより高い優先順位でフュージョンされるように適用される。さらに、マイクロオペレーションがフュージョン済みストアの一部になると、当該マイクロオペレーションは、次に古いSFDLブロックのためのストアフュージョンに関わるのに不適格である。例えば、Op0、Op1及びOp2でディスパッチされる3つのストアマイクロオペレーションの全てが連続するバイト(連続アドレス)にあると想定する。SFDL Op0/1とSFDL Op1/2とは、各々のオペレーションをフュージョンすることができると判別する。SFDL Op0/1が優先され、Op0及びOp1をフュージョン済みストアオペレーションにフュージョンする。Op1は、古いフュージョン済みストアの一部であったため、Op2とフュージョンするには不適格である。そのため、SFDL Op1/2は、Op1及びOp2をフュージョンして、フュージョン済みストアオペレーションにすることができない。
SFDL Op0/1〜SFDL Op4/5 202の各々は、適切なストアマイクロオペレーションを、2倍のデータサイズを有するストアマイクロオペレーションと、ストアデータHIマイクロオペレーションとにフュージョンする。ストアデータHIマイクロオペレーションは、ロード/ストアマイクロオペレーションコンポーネント及びアドレス生成マイクロオペレーションコンポーネントが抑えられ、ALSQ〜ALSQ 204内のキューエントリのみが必要とされる。本明細書で述べるように、各SFDL Op0/1 〜SFDL Op4/5 202は、データサイズ2xのストアマイクロオペレーションとストアデータHIマイクロオペレーションとの両方に同じSTQ218キューエントリ番号を設定し、マイクロオペレーションタイプをストアデータHIマイクロオペレーションに設定して、このデータが、データサイズ2xのストアマイクロオペレーションの上位部分であることを示す。
各SFDL Op0/1〜SFDL Op4/5 202が、必要に応じて、連続するストアマイクロオペレーションをフュージョンすると、ディスパッチロジック201は、必要に応じて、データサイズ2xのストアマイクロオペレーション及びストアデータHIマイクロオペレーションを、ALSQ〜ALSQ 204及びAGSQ〜AGSQ 206にディスパッチする。ALSQ〜ALSQ 204及びAGSQ〜AGSQ 206は、データサイズ2xのストアマイクロオペレーション及びストアデータHIマイクロオペレーションを、ALU〜ALU 212に発行する。ALU〜ALU 212は、ストアデータインタフェース232を介して制御ビットSTQ218に送信して、ストアデータHIマイクロオペレーション内のデータがストアデータフィールドの上位又は上位部分に書き込まれることを示す。STQ218は、必要な書き込みを実行する。
図3は、図1及び図2について本明細書で説明する特定の実施形態及び機能による、ロードストア/データキャッシュ(LSDC)ユニット300のハイレベルブロック及びフロー図である。LSDCユニット300は、LDQ302と、STQ304と、ロード0(L0)ピッカ(picker)306と、ロード1(L1)ピッカ308と、を含む。STQ304は、ストアデータHIマイクロオペレーション内のデータがストアされる場合にシフトされる必要があることを示すストアデータインタフェース305を介して、制御ビットと共に、ALU(図示省略)からデータを取得する。L0ピッカ306は、トランスレーションルックアサイドバッファ(TLB)、マイクロタグアクセスパイプライン0(TLB0)310、及び、データキャッシュアクセスパイプライン(データパイプ0)312に接続されている。L1ピッカ308は、トランスレーションルックアサイドバッファ(TLB)、マイクロタグアクセスパイプライン1(TLB1)314、及び、データキャッシュアクセスパイプライン(データパイプ1)316に接続されている。TLB0 310及びTLB1 314は、L1/L2 TLB318、ページウォーカ323及びマイクロタグアレイ319に接続されている。マイクロタグアレイは、ミスアドレスバッファ(MAB)320に接続されており、キャッシュ322からのデータの読み出しを支援する。データパイプ0 312及びデータパイプ1 316は、キャッシュ322に接続されている。STQ304は、プリフェッチャ324及びストアパイプピッカ326に接続されている。ストアパイプピッカは、ストアパイプライン(STP)328に接続されている。STP328は、L1/L2 TLB318及びマイクロタグアレイ319にも接続されている。STQ304は、ストアコミットパイプライン330に接続されている。ストアコミットパイプラインは、書き込み結合バッファ(WCB)332及びキャッシュ322に接続されている。
図4は、特定の実施形態による、ストアフュージョンのための方法のフロー図400である。マイクロオペレーションが、ディスパッチロジックを介してディスパッチされる(ステップ402)。ストアフュージョン検出ロジックは、隣接するマイクロオペレーションが連続するストアマイクロオペレーションであるかどうかを検出する(ステップ404)。隣接するマイクロオペレーションとは、隣接するディスパッチスロットを流れるマイクロオペレーションを指し、連続するストアマイクロオペレーションとは、隣接するマイクロオペレーションの両方がストアマイクロオペレーションであることを指す。隣接するマイクロオペレーションが連続するストアマイクロオペレーションでない場合には、ディスパッチされたマイクロオペレーションの次のセットが評価される(ステップ402)。隣接するマイクロオペレーションが連続するストアマイクロオペレーションである場合、ストアフュージョン検出ロジックは、連続するストアマイクロオペレーションが同じデータサイズを有するかどうかを判別する(ステップ406)。連続するストアマイクロオペレーションが同じサイズでない場合、ディスパッチされたマイクロオペレーションの次のセットが評価される(ステップ402)。連続するストアマイクロオペレーションが同じサイズである場合、ストアフュージョン検出ロジックは、連続するストアマイクロオペレーションが連続するアドレスにアクセスしているかどうかを判別する(ステップ408)。連続するストアマイクロオペレーションが連続するアドレスにアクセスしていない場合、ディスパッチされたマイクロオペレーションの次のセットが評価される(ステップ402)。連続するストアマイクロオペレーションが連続するアドレスにアクセスしている場合、ストアフュージョン検出ロジックは、検討中の2つのマイクロオペレーションのうち古いマイクロオペレーションが、古いフュージョン済みストアオペレーションの一部であるかどうかを判別する(ステップ410)。古いストアフュージョンの一部である場合、ストアフュージョンが行われず(ステップ412)、ディスパッチされたマイクロオペレーションの次のセットが評価される(ステップ402)。古いフュージョン済みストアオペレーションの一部でない場合、ストアフュージョン検出ロジックは、連続するストアマイクロオペレーションを、2倍のデータサイズを有するストアマイクロオペレーション及びストアデータHIマイクロオペレーションにフュージョンする(ステップ414)。
ストアフュージョン検出ロジックは、データサイズ2xのストアマイクロオペレーションとストアデータHIマイクロオペレーションとの両方に同じストアキューエントリ番号を設定する(ステップ416)。ストアフュージョン検出ロジック及びディスパッチロジックは、マイクロオペレーションタイプをストアデータHIマイクロオペレーションに設定して、このデータが、データサイズ2xのストアマイクロオペレーションの上位部分であることをALUに示す(ステップ418)。ALUは、ストアデータHIマイクロオペレーション内のデータがストアされる場合にシフトされるように、制御ビットをSTQに送信する(ステップ420)。データサイズ2xのストアマイクロオペレーション内のデータが、ストアデータフィールドの下位部分に書き込まれる(ステップ422)。動作の順序は例示に過ぎず、他の順序を使用することもできる。
図5は、1つ以上の開示された例の1つ以上の部分が実装される例示的なデバイス500のブロック図である。デバイス500は、例えば、ヘッドマウントデバイス、サーバ、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含む。デバイス500は、コンピュータノード又はプロセッサ502と、メモリ504と、ストレージ506と、1つ以上の入力デバイス508と、1つ以上の出力デバイス510と、を含む。デバイス500は、オプションで入力ドライバ512及び出力ドライバ514を含む。デバイス500は、図5に示されていない追加のコンポーネントを含むことを理解されたい。
コンピュータノード又はプロセッサ502は、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであってもよい。メモリ504は、コンピュータノード又はプロセッサ502と同じダイ上に配置されてもよいし、コンピュータノード又はプロセッサ502とは別に配置されてもよい。実施形態では、メモリ504は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM若しくはキャッシュ等)を含む。
ストレージ506は、固定又は取り外し可能なストレージ(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等)を含む。入力デバイス508は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロホン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信のための無線ローカルエリアネットワークカード)を含む。出力デバイス510は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信のための無線ローカルエリアネットワークカード)を含む。
入力ドライバ512は、コンピュータノード又はプロセッサ502及び入力デバイス508と通信し、コンピュータノード又はプロセッサ502が入力デバイス508から入力を受信するのを可能にする。出力ドライバ514は、コンピュータノード又はプロセッサ502及び出力デバイス510と通信し、プロセッサ502が出力デバイス510に出力を送信するのを可能にする。入力ドライバ512及び出力ドライバ514がオプションのコンポーネントであることと、入力ドライバ512及び出力ドライバ514が存在しない場合にデバイス500が同様に動作することと、に留意されたい。
概して、ストアマイクロオペレーションをフュージョンするための方法は、隣接するマイクロオペレーションが連続するストアマイクロオペレーションであるかどうかを判別することを含む。隣接するマイクロオペレーションとは、隣接するディスパッチスロットを流れるマイクロオペレーションを指し、連続するストアマイクロオペレーションとは、隣接するマイクロオペレーションの両方がストアマイクロオペレーションであることを指す。連続するストアマイクロオペレーションが同じデータサイズを有しているかどうか、及び、連続するアドレスにアクセスしているかどうかについて判別される。連続するストアマイクロオペレーションは、2倍のデータサイズを有するストアマイクロオペレーション及びストアデータオンリーマイクロオペレーションにフュージョンされる。実施形態では、2倍のデータサイズを有するストアマイクロオペレーション及びストアデータオンリーマイクロオペレーションに同じストアキューエントリ番号が設定される。実施形態では、ストアデータオンリーマイクロオペレーション内のデータが2倍のデータサイズを有するストアマイクロオペレーションに関して上位データ部分であることを示すために、マイクロオペレーションタイプがストアデータオンリーマイクロオペレーションに設定される。実施形態では、ストアされる場合にデータのシフトを容易にするために、少なくとも1つの制御ビットがストアキューに送信される。実施形態では、2倍のデータサイズを有するストアマイクロオペレーション内のデータがストアデータフィールドの下位部分にストアされ、ストアデータオンリーマイクロオペレーション内のデータがストアデータフィールドの上位部分にストアされる。実施形態では、ストアデータオンリーマイクロオペレーションは、ストアキューエントリ及びアドレス生成キューエントリの使用を抑制する。実施形態では、連続するマイクロオペレーションの各々のアドレッシングモードが評価される。実施形態では、下位アドレスを有する連続するストアマイクロオペレーションが、2倍のデータサイズを有するストアマイクロオペレーションに変換される。実施形態では、上位アドレスを有する連続するストアマイクロオペレーションが、ストアデータオンリーマイクロオペレーションに変換される。実施形態では、ストアリタイア指標は、ストアデータオンリーマイクロオペレーションに関して抑えられる。実施形態では、2倍のデータサイズを有するストアマイクロオペレーション及びストアデータオンリーマイクロオペレーションのうち少なくとも一方に関する例外が発生すると、フュージョンを行わずに隣接するマイクロオペレーションが再実行される。実施形態では、ストアデータオンリーマイクロオペレーションのために上位ストアビットがメモリリネーム追跡構造に設定され、上位ストアビットは、ストアキューエントリを決定するために用いられる。
概して、ストアマイクロオペレーションをフュージョンするプロセッサは、マイクロオペレーションをディスパッチするように構成されたディスパッチロジックと、ディスパッチロジックに接続されたストアフュージョン検出ロジックと、を含む。ストアフュージョン検出ロジックは、隣接するマイクロオペレーションが連続するストアマイクロオペレーションであるかどうかを判別することであって、隣接するマイクロオペレーションは、隣接するディスパッチスロットを流れるマイクロオペレーションを指し、連続するストアマイクロオペレーションは、隣接するマイクロオペレーションの両方がストアマイクロオペレーションであることを指す、ことと、連続するストアマイクロオペレーションが同じデータサイズを有するかどうかを判別することと、連続するストアマイクロオペレーションが連続するアドレスにアクセスしているかどうかを判別することと、連続するストアマイクロオペレーションを、2倍のデータサイズを有するストアマイクロオペレーション及びストアデータオンリーマイクロオペレーションにフュージョンすることと、を行うように構成されている。実施形態では、ディスパッチロジック及びストアフュージョン検出ロジックは、2倍のデータサイズを有するストアマイクロオペレーション及びストアデータオンリーマイクロオペレーションに同じストアキューエントリ番号を設定するように構成されている。実施形態では、ディスパッチロジック及びストアフュージョン検出ロジックは、ストアデータオンリーマイクロオペレーション内のデータが2倍のデータサイズを有するストアマイクロオペレーションに関して上位データ部分であることを示すために、マイクロオペレーションタイプをストアデータオンリーマイクロオペレーションに設定するように構成されている。実施形態では、プロセッサは、ストアキューと、ストアキューと通信する演算論理ユニットと、を含む。演算論理ユニットは、ストアされる場合にデータのシフトを容易にするために、少なくとも1つの制御ビットをストアキューに送信するように構成されている。実施形態では、2倍のデータサイズを有するストアマイクロオペレーション内のデータをストアデータフィールドの下位部分にストアし、ストアデータオンリーマイクロオペレーション内のデータをストアデータフィールドの上位部分にストアする。実施形態では、ストアデータオンリーマイクロオペレーションは、ストアキューエントリ及びアドレス生成キューエントリの使用を抑制する。実施形態では、下位アドレスを有する連続するストアマイクロオペレーションは、2倍のデータサイズを有するストアマイクロオペレーションに変換され、上位アドレスを有する連続するストアマイクロオペレーションは、ストアデータオンリーマイクロオペレーションに変換される。実施形態では、ストアリタイア指標は、ストアデータオンリーマイクロオペレーションに関して抑えられ、2倍のデータサイズを有するストアマイクロオペレーション及びストアデータオンリーマイクロオペレーションのうち少なくとも一方に関する例外が発生すると、フュージョンを行わずに隣接するマイクロオペレーションが再実行される。
本明細書の開示に基づいて多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を伴わずに単独で用いられてもよいし、他の特徴及び要素の有無に関わらず様々な組み合わせで用いられてもよい。
提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施されてもよい。適切なプロセッサは、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、及び/又は、ステートマシンを含む。このようなプロセッサは、処理されるハードウェア記述言語(HDL)命令の結果及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶可能なこのような命令)を用いて製造プロセスを構成することによって製造されてもよい。このような処理の結果は、実施形態の態様を実施するプロセッサを製造する半導体製造プロセスにおいて用いられるマスクワークであってもよい。
本明細書で提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために、非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施されてもよい。非一時的なコンピュータ可読記憶媒体の例としては、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、CD−ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体が挙げられる。

Claims (20)

  1. ストアマイクロオペレーションをフュージョンするための方法であって、
    隣接するマイクロオペレーションが連続するストアマイクロオペレーションであるかどうかを判別することであって、前記隣接するマイクロオペレーションは、隣接するディスパッチスロットを流れるマイクロオペレーションを指し、前記連続するストアマイクロオペレーションは、前記隣接するマイクロオペレーションの両方がストアマイクロオペレーションであることを指す、ことと、
    前記連続するストアマイクロオペレーションが同じデータサイズを有するかどうかを判別することと、
    前記連続するストアマイクロオペレーションが連続するアドレスにアクセスしているかどうかを判別することと、
    前記連続するストアマイクロオペレーションを、2倍の前記データサイズを有するストアマイクロオペレーション及びストアデータオンリーマイクロオペレーションにフュージョンすることと、を含む、
    方法。
  2. 前記2倍のデータサイズを有するストアマイクロオペレーション及び前記ストアデータオンリーマイクロオペレーションに同じストアキューエントリ番号を設定することをさらに含む、
    請求項1の方法。
  3. 前記ストアデータオンリーマイクロオペレーション内のデータが前記2倍のデータサイズを有するストアマイクロオペレーションに関して上位データ部分であることを示すために、マイクロオペレーションタイプを前記ストアデータオンリーマイクロオペレーションに設定することをさらに含む、
    請求項2の方法。
  4. ストアされる場合に前記データのシフトを容易にするために、少なくとも1つの制御ビットをストアキューに送信することをさらに含む、
    請求項3の方法。
  5. 前記2倍のデータサイズを有するストアマイクロオペレーション内のデータがストアデータフィールドの下位部分にストアされ、前記ストアデータオンリーマイクロオペレーション内のデータが前記ストアデータフィールドの上位部分にストアされる、
    請求項1の方法。
  6. 前記ストアデータオンリーマイクロオペレーションは、ストアキューエントリ及びアドレス生成キューエントリの使用を抑制する、
    請求項1の方法。
  7. 前記連続するマイクロオペレーションの各々のアドレッシングモードを評価することをさらに含む、
    請求項1の方法。
  8. 下位アドレスを有する前記連続するストアマイクロオペレーションは、前記2倍のデータサイズを有するストアマイクロオペレーションに変換される、
    請求項1の方法。
  9. 上位アドレスを有する前記連続するストアマイクロオペレーションは、前記ストアデータオンリーマイクロオペレーションに変換される、
    請求項8の方法。
  10. ストアリタイア指標は、前記ストアデータオンリーマイクロオペレーションに関して抑えられる、
    請求項1の方法。
  11. 前記2倍のデータサイズを有するストアマイクロオペレーション及び前記ストアデータオンリーマイクロオペレーションのうち少なくとも一方に関する例外が発生すると、フュージョンを行わずに前記隣接するマイクロオペレーションが再実行される、
    請求項1の方法。
  12. 前記ストアデータオンリーマイクロオペレーションのために上位ストアビットをメモリリネーム追跡構造に設定することと、
    前記上位ストアビットを用いて、ストアキューエントリを決定することと、をさらに含む、
    請求項1の方法。
  13. ストアマイクロオペレーションをフュージョンするプロセッサであって、
    マイクロオペレーションをディスパッチするように構成されたディスパッチロジックと、
    前記ディスパッチロジックに接続されたストアフュージョン検出ロジックと、を備え、
    前記ストアフュージョン検出ロジックは、
    隣接するマイクロオペレーションが連続するストアマイクロオペレーションであるかどうかを判別することであって、前記隣接するマイクロオペレーションは、隣接するディスパッチスロットを流れるマイクロオペレーションを指し、前記連続するストアマイクロオペレーションは、前記隣接するマイクロオペレーションの両方がストアマイクロオペレーションであることを指す、ことと、
    前記連続するストアマイクロオペレーションが同じデータサイズを有するかどうかを判別することと、
    前記連続するストアマイクロオペレーションが連続するアドレスにアクセスしているかどうかを判別することと、
    前記連続するストアマイクロオペレーションを、2倍の前記データサイズを有するストアマイクロオペレーション及びストアデータオンリーマイクロオペレーションにフュージョンすることと、
    を行うように構成されている、
    プロセッサ。
  14. 前記ディスパッチロジック及び前記ストアフュージョン検出ロジックは、前記2倍のデータサイズを有するストアマイクロオペレーション及び前記ストアデータオンリーマイクロオペレーションに同じストアキューエントリ番号を設定するように構成されている、
    請求項13のプロセッサ。
  15. 前記ディスパッチロジック及び前記ストアフュージョン検出ロジックは、前記ストアデータオンリーマイクロオペレーション内のデータが前記2倍のデータサイズを有するストアマイクロオペレーションに関して上位データ部分であることを示すために、マイクロオペレーションタイプを前記ストアデータオンリーマイクロオペレーションに設定するように構成されている、
    請求項14のプロセッサ。
  16. ストアキューと、
    前記ストアキューと通信する演算論理ユニットであって、ストアされる場合に前記データのシフトを容易にするために、少なくとも1つの制御ビットを前記ストアキューに送信するように構成された演算論理ユニットと、をさらに備える、
    請求項15のプロセッサ。
  17. 前記2倍のデータサイズを有するストアマイクロオペレーション内のデータがストアデータフィールドの下位部分にストアされ、前記ストアデータオンリーマイクロオペレーション内のデータが前記ストアデータフィールドの上位部分にストアされる、
    請求項13のプロセッサ。
  18. 前記ストアデータオンリーマイクロオペレーションは、ストアキューエントリ及びアドレス生成キューエントリの使用を抑制する、
    請求項13のプロセッサ。
  19. 下位アドレスを有する前記連続するストアマイクロオペレーションは、前記2倍のデータサイズを有するストアマイクロオペレーションに変換され、上位アドレスを有する前記連続するストアマイクロオペレーションは、前記ストアデータオンリーマイクロオペレーションに変換される、
    請求項13のプロセッサ。
  20. ストアリタイア指標は、前記ストアデータオンリーマイクロオペレーションに関して抑えられ、前記2倍のデータサイズを有するストアマイクロオペレーション及び前記ストアデータオンリーマイクロオペレーションのうち少なくとも一方に関する例外が発生すると、フュージョンを行わずに前記隣接するマイクロオペレーションが再実行される、
    請求項13のプロセッサ。
JP2020526347A 2017-11-27 2018-08-28 ストアフュージョンのためのシステム及び方法 Active JP7284752B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/822,515 US10459726B2 (en) 2017-11-27 2017-11-27 System and method for store fusion
US15/822,515 2017-11-27
PCT/US2018/048396 WO2019103776A1 (en) 2017-11-27 2018-08-28 System and method for store fusion

Publications (2)

Publication Number Publication Date
JP2021504788A true JP2021504788A (ja) 2021-02-15
JP7284752B2 JP7284752B2 (ja) 2023-05-31

Family

ID=66632104

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020526347A Active JP7284752B2 (ja) 2017-11-27 2018-08-28 ストアフュージョンのためのシステム及び方法

Country Status (6)

Country Link
US (1) US10459726B2 (ja)
EP (1) EP3718002A4 (ja)
JP (1) JP7284752B2 (ja)
KR (1) KR102334341B1 (ja)
CN (1) CN111344669B (ja)
WO (1) WO2019103776A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210191721A1 (en) * 2019-12-20 2021-06-24 Ampere Computing Llc Hardware micro-fused memory operations
US20220019436A1 (en) * 2020-07-20 2022-01-20 International Business Machines Corporation Fusion of microprocessor store instructions
US11567767B2 (en) * 2020-07-30 2023-01-31 Marvell Asia Pte, Ltd. Method and apparatus for front end gather/scatter memory coalescing
US11567771B2 (en) 2020-07-30 2023-01-31 Marvell Asia Pte, Ltd. Method and apparatus for back end gather/scatter memory coalescing
US20230097390A1 (en) * 2021-09-29 2023-03-30 International Business Machines Corporation Tightly-coupled slice target file data
US11900116B1 (en) 2021-09-29 2024-02-13 International Business Machines Corporation Loosely-coupled slice target file data

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08137688A (ja) * 1994-11-09 1996-05-31 Mitsubishi Electric Corp データ処理装置
US20050149702A1 (en) * 2003-12-29 2005-07-07 Intel Cororation Method and system for memory renaming
US20070260855A1 (en) * 2006-05-02 2007-11-08 Michael Gschwind Method and apparatus for the dynamic creation of instructions utilizing a wide datapath
US20100070741A1 (en) * 2008-09-18 2010-03-18 Via Technologies, Inc. Microprocessor with fused store address/store data microinstruction
US20170249144A1 (en) * 2016-02-26 2017-08-31 Qualcomm Incorporated Combining loads or stores in computer processing

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6757430B2 (en) * 1999-12-28 2004-06-29 Intel Corporation Image processing architecture
US7051190B2 (en) * 2002-06-25 2006-05-23 Intel Corporation Intra-instruction fusion
US6920546B2 (en) * 2002-08-13 2005-07-19 Intel Corporation Fusion of processor micro-operations
US20040199755A1 (en) * 2003-04-07 2004-10-07 Zeev Sperber Apparatus and methods for exception handling for fused micro-operations by re-issue in the unfused format
US8082430B2 (en) * 2005-08-09 2011-12-20 Intel Corporation Representing a plurality of instructions with a fewer number of micro-operations
US8850120B2 (en) * 2008-12-15 2014-09-30 Oracle America, Inc. Store queue with store-merging and forward-progress guarantees
JP5491071B2 (ja) 2009-05-20 2014-05-14 エヌイーシーコンピュータテクノ株式会社 命令融合演算装置および命令融合演算方法
JP4897029B2 (ja) 2009-11-09 2012-03-14 株式会社東芝 半導体装置
US8285937B2 (en) * 2010-02-24 2012-10-09 Apple Inc. Fused store exclusive/memory barrier operation
US20120144174A1 (en) 2010-12-01 2012-06-07 Advanced Micro Devices, Inc. Multiflow method and apparatus for operation fusion
US9477476B2 (en) * 2012-11-27 2016-10-25 Qualcomm Incorporated Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US20140258667A1 (en) 2013-03-07 2014-09-11 Mips Technologies, Inc. Apparatus and Method for Memory Operation Bonding
US20160188341A1 (en) * 2014-12-24 2016-06-30 Elmoustapha Ould-Ahmed-Vall Apparatus and method for fused add-add instructions
US10216516B2 (en) * 2016-09-30 2019-02-26 Intel Corporation Fused adjacent memory stores

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08137688A (ja) * 1994-11-09 1996-05-31 Mitsubishi Electric Corp データ処理装置
US20050149702A1 (en) * 2003-12-29 2005-07-07 Intel Cororation Method and system for memory renaming
US20070260855A1 (en) * 2006-05-02 2007-11-08 Michael Gschwind Method and apparatus for the dynamic creation of instructions utilizing a wide datapath
US20100070741A1 (en) * 2008-09-18 2010-03-18 Via Technologies, Inc. Microprocessor with fused store address/store data microinstruction
US20170249144A1 (en) * 2016-02-26 2017-08-31 Qualcomm Incorporated Combining loads or stores in computer processing

Also Published As

Publication number Publication date
KR20200083479A (ko) 2020-07-08
WO2019103776A1 (en) 2019-05-31
KR102334341B1 (ko) 2021-12-02
US10459726B2 (en) 2019-10-29
CN111344669A (zh) 2020-06-26
EP3718002A4 (en) 2021-08-18
EP3718002A1 (en) 2020-10-07
US20190163475A1 (en) 2019-05-30
JP7284752B2 (ja) 2023-05-31
CN111344669B (zh) 2022-07-26

Similar Documents

Publication Publication Date Title
JP7284752B2 (ja) ストアフュージョンのためのシステム及び方法
JP6227621B2 (ja) 複数の試験ソースに対するor試験及びand試験機能を提供するために命令をフュージングする方法及び装置
US10664275B2 (en) Speeding up younger store instruction execution after a sync instruction
KR101826770B1 (ko) 다수의 테스트 소스를 사용한 or-테스트 및 and-테스트 기능을 제공하는 융합가능 명령어 및 논리
CN106648843B (zh) 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置
JP6450705B2 (ja) 永続コミットプロセッサ、方法、システムおよび命令
US20180095761A1 (en) Fused adjacent memory stores
JP2019121351A (ja) 遠隔アトミックオペレーションの空間的・時間的マージ
JP6491655B2 (ja) 即値ハンドリング及びフラグハンドリングのためのプロセッサ及び方法
US20160092227A1 (en) Robust and High Performance Instructions for System Call
US11835988B2 (en) System and method for load fusion
CN113535236A (zh) 基于指令集体系结构的和自动的加载跟踪的方法和装置
US11175916B2 (en) System and method for a lightweight fencing operation
JP2017016640A (ja) ステータス依存演算の性能を向上させるシステム、方法、及び装置
US20150106600A1 (en) Execution of condition-based instructions
US9710389B2 (en) Method and apparatus for memory aliasing detection in an out-of-order instruction execution platform
EP1220088A2 (en) Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
US20140365751A1 (en) Operand generation in at least one processing pipeline
US11537402B1 (en) Execution elision of intermediate instruction by processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210817

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221004

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20221228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230221

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230519

R150 Certificate of patent or registration of utility model

Ref document number: 7284752

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150