JP7084379B2 - ロードストアユニットをバイパスすることによるストア及びロードの追跡 - Google Patents

ロードストアユニットをバイパスすることによるストア及びロードの追跡 Download PDF

Info

Publication number
JP7084379B2
JP7084379B2 JP2019510366A JP2019510366A JP7084379B2 JP 7084379 B2 JP7084379 B2 JP 7084379B2 JP 2019510366 A JP2019510366 A JP 2019510366A JP 2019510366 A JP2019510366 A JP 2019510366A JP 7084379 B2 JP7084379 B2 JP 7084379B2
Authority
JP
Japan
Prior art keywords
memory
scheduler
store
unit
load
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
JP2019510366A
Other languages
English (en)
Other versions
JP2019525355A (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 JP2019525355A publication Critical patent/JP2019525355A/ja
Application granted granted Critical
Publication of JP7084379B2 publication Critical patent/JP7084379B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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, 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, 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/304In main memory subsystem
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/463File
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation

Description

(関連出願の相互参照)
本願は、2016年8月19日に出願された米国仮特許出願第62/377,301号及び2016年12月15日に出願された米国特許出願第15/380,778号の利益を主張し、その内容は、完全に記載されているかのように、参照により本明細書に組み込まれる。
現在のコンピュータシステムは、ロードキュー及びストアキューを使用してメモリアクセス用のロード及びストアを提供する。一般に、これらのシステムは、ストアツーロード(store-to-load)転送を使用して動作する。しかしながら、ストアツーロード転送は、ロード及びストアが同一のアドレスを対象とする状況では、レイテンシが最小のソリューションを提供することができない。
添付の図面と共に例として与えられる以下の説明から、より詳細な理解が得られるであろう。
特定の実施形態による、プロセッサのコア処理ユニットを示す図である。 図1のコア処理ユニット内のデータアクセスを処理するロードストア(LS)ユニットを示す図である。 図1のコア処理ユニット内のLSユニットと関連するメモリリネーミングのハードウェアフローを示す図である。 図1のコア処理ユニット内のLSユニットと関連するメモリリネーミング方法を示す図である。 1つ以上の開示された実施例の1つ以上の部分を実装することができる例示的なデバイスを示す図である。
メモリリネーミングは、同じアドレスへのストア及びロードを追跡し、ロードが関連するストアに続く場合に、ロードストアユニットをバイパスする方法である。このシナリオは、頻繁に起こる可能性がある。一例として、メモリリネーミングは、プログラムがストアキューを介してデータを記憶し、他の処理を実行し、次にロードキューを介して同じデータをロードする場合に必要とされる。このロードは、関連するストアに続く。プログラムは、最近記憶されたデータをロードしようとすることが多い。
ロードストアユニットをバイパスすることによってストア及びロードを追跡するシステム及び方法が開示される。このシステム及び方法は、1つ以上のメモリ依存アーキテクチャレジスタ番号(MdArn)にデータを記憶することを含む。1つ以上のMdArnがインメモリファイルキャッシュ(MEMFILE)に割り当てられている。割り当てられた1つ以上のMdArnはマップファイルに書き込まれ、マップファイルは、MEMFILE内のエントリへの後続のアクセスを可能にするMdArnマップを含む。ロード要求を受信すると、マップファイルを介してベース、インデックス、ディスプレイスメント及びマッチ/ヒットをチェックして、MEMFILE内のエントリ及び関連するストアを識別する。ヒット時に、1つ以上のMdArnからのロード要求に応じてエントリを提供する。
図1は、特定の実施形態による、プロセッサ100のコア処理ユニット105のハイレベルブロック図及びフロー図である。コア処理ユニット105は、マイクロ動作(マイクロオペレーション)をスケジューラ及び/又は実行ユニット115に提供するデコーダユニット110を含むが、これに限定されない。デコーダユニット110は、キャッシュ122及びマイクロ動作キャッシュ124の各々に接続された分岐予測器120を含むが、これに限定されない。また、キャッシュ122は、デコーダ126に接続されている。デコーダ126及びマイクロ動作キャッシュ124の各々は、マイクロ動作キュー128に接続されている。
スケジューラ及び/又は実行ユニット115は、整数スケジューラ及び/又は実行ユニット130と、浮動小数点スケジューラ及び/又は実行ユニット132と、を含むが、これらに限定されず、これらの両方は、キャッシュ134に接続されている。また、キャッシュ134は、L2キャッシュ136と、ロードキュー138と、ストアキュー140と、に接続されている。ロードキュー138、ストアキュー140及びキャッシュ134は、まとめてロードストア(LS)ユニット139と呼ばれる。
整数スケジューラ及び/又は実行ユニット130は、算術論理ユニット(ALU)スケジューラキュー(ALSQ)152と、アドレス生成ユニット(AGU)スケジューラキュー(AGSQ)154と、を含むスケジューラ151に接続された整数リネーマ(integer renamer)150を含むが、これに限定されない。また、スケジューラ151(特に、ALSQ152及びAGSQ154)は、ALU156及びAGU158の各々に接続されている。整数スケジューラ及び/又は実行ユニット130は、整数物理レジスタファイル160を含む。
浮動小数点スケジューラ及び/又は実行ユニット132は、スケジューラ172に接続された浮動小数点リネーマ(floating point renamer)170を含むが、これに限定されない。また、スケジューラ172は、乗算器174及び加算器176の各々に接続されている。さらに、浮動小数点スケジューラ及び/又は実行ユニット132は、浮動小数点物理レジスタファイル178を含む。
パイプラインプロセッサは、命令のストリームをパイプラインに安定に供給する必要がある。分岐予測器120は、何れの命令セットをパイプラインプロセッサでフェッチして実行するかを予測する。これらの命令は、フェッチされ、キャッシュ122に記憶され、キャッシュ122から読み出されるときにデコーダ126によって動作にデコードされる。マイクロ動作キャッシュ124は、デコーダ126がマイクロ動作を生成する場合にマイクロ動作をキャッシュする。マイクロ動作キュー128は、マイクロ動作を実行のためにディスパッチする目的で、デコーダ126及びマイクロ動作キャッシュ124からのマイクロ動作を記憶してキューに入れる。
従来のパイプライン処理では、マイクロ動作キューは、特定の動作(例えば、ロード又はストア動作)を、ペイロード(例えば、動作からデコードされた制御情報等)と、マイクロ動作に関連するメモリアドレスと、を保持するロードキュー及び/又はストアキューに直接ディスパッチする。例示すると、ストアキューは、マイクロ動作キューから複数の動作を受け入れ、ディスパッチ時にペイロードをストアキューに書き込むことができる。次に、アドレス生成時に、ストアキューは、スケジューラからキューインデックスを受信し、何れのストアエントリが処理されているかを特定する。スケジューラは、ディスパッチペイロードを読み出し、セグメンテーションチェックのためにセグメンテーションロジックに送信し、マイクロ動作パイプライン上での可能なピックのためにロードキューに送信する。すなわち、従来のパイプライン処理は、ストアキュー及びロードキューに対する2パス書き込み処理であり、ペイロードのディスパッチ時に1回書き込みし、メモリ内のアドレス生成時に再度の書き込みを行う。
一実施形態によれば、マイクロ動作は、従来のパイプライン処理のようにロードキュー138及びストアキュー140に直接書き込むのではなく、整数スケジューラ及び/又は実行ユニット130及び浮動小数点スケジューラ及び/又は実行ユニット132のみにディスパッチされる。特に、マイクロ動作は、(1)整数リネーマ150を介してスケジューラ151に送られ、(2)浮動小数点リネーマ170を介してスケジューラ172に送られる。スケジューラ151は、AGSQ154において、マイクロ動作のディスパッチペイロード(例えば、ストアマイクロ動作のディスパッチペイロード)の全てを保持する。すなわち、AGSQ154は、適切なロードキュー138又はストアキュー140内のキューエントリが利用可能になるまで、マイクロ動作(例えば、ロード及びストアマイクロ動作)を保持する。キューエントリが利用可能になり、物理レジスタファイル160についてのソースが準備されると、AGSQ154は、アドレスを生成し、ディスパッチペイロードを読み出し、ディスパッチペイロードをロードキュー138及び/又はストアキュー140に送信する。
エイジオーダー(age-order)の動作又は順番通り(in-order)のキューを維持するために、全てのストアマイクロ動作は、特定のキューエントリ又はキュー識別子と関連付けられる。特に、スケジューラ151は、AGSQ154がアドレス生成をいつ実行することができるか、及び、スケジューラ151が記憶されたデータ(すなわち、ディスパッチペイロード)をストアキュー140にいつ送信することができるかを知る必要がある。したがって、特定のキューは、当該特定のキューが利用可能であるときにストアキュー140によってAGSQ154に通信される。この通信チェーンは図1に具体的に示されていないが、この通信は、一般的な事項として提供される。
ロードキュー138及びストアキュー140は、コミット-割り当て解除信号をスケジューラ151(AGSQ154及びALSQ152)に送信して、スケジューラ151(AGSQ154及びALSQ152)が、古いストアマイクロ動作が各々のストアキューエントリを割り当て解除して解放するときに、アドレス生成又は若いストアマイクロ動作のストアデータの送信を可能にするように、最古のストアマイクロ動作のストアキューエントリインデックスを更新することができる。これは、例えば、ロードキュー138及びストアキュー140からの出力(図示省略)を、スケジューラ151(AGSQ154及びALSQ152)の入力に追加することによって実施することができる。
全てのディスパッチ情報をAGSQ154に保持し、アドレス生成時までストアキューの割り当てを遅らせる(例えば、ストアキューエントリが前のストアマイクロ動作によってまだ使用中であるストアマイクロ動作のデータを記憶する)ことによって、ストアキュー140のサイズよりも多くのストアマイクロ動作をディスパッチすることができる。ディスパッチストールの原因を排除することによって、さらなるマイクロ動作をウィンドウ内に導入し、これらの作業を開始するのを可能にすることができる。何れのストアマイクロ動作も、そのストアキューエントリ内の前のストアの割り当てが解除されるまで開始することができないが、他のマイクロ動作を続行することができる。これは、キャッシュミスを開始するために、キャッシュミスである可能性があるロードが、アドレス生成をディスパッチ及び/又は実行するのを可能にする。
ストアキューエントリよりも多くの数のストアをウィンドウ内で処理するためのサポートには、マイクロ動作のエイジ(age)を比較するための方法が必要である。エイジを比較するための方法は、マイクロ動作に関連するストアキューエントリ番号と、ストアキューエントリ番号に付随する「ラップ」ビットと、を使用することによって提供される。ラップビットは、関連するストアマイクロ動作が、ストアキューエントリの何れの「エポック」を使用するかを決定する。単一のラップビットは、フルストアキュー(XC_STQDEPTH)のディスパッチが可能になる、ストアキューの2つの異なる「ラップ」又は「エポック」を追跡する方法を提供する。ストアキューエントリよりも多くのストアマイクロ動作のディスパッチが可能な場合、ウィンドウ内に同じストアキューエントリを有するマイクロ動作が存在する場合だけでなく、ストアキューの複数の異なる「ラップ」又は「エポック」からのマイクロ動作が存在する場合がある。合計で2つのラップビットに対して1つの追加のラップビットは、ストアキューの4つの異なる「ラップ」又は「エポック」を追跡するための方法を提供し、ストアキューの深さの3倍までのディスパッチを可能にする。
図示した例では、実装されたアーキテクチャが44のストアキューの深さを有し、(アドレス生成時には、最大28の追加のマイクロ動作ストアに対して)2つの14エントリのAGSQがある場合、ウィンドウ内にディスパッチすることが可能なストアの合計は72になる。したがって、プロセッサは、ストアキューの深さの2倍を超えてディスパッチしない。2つのラップビットは、マシン内の72のストアマイクロ動作の全てのエイジを追跡し比較するのに十分であり、ディスパッチストールは必要とされない。ラップビットは、ディスパッチ時に計算され、AGSQペイロードに保持される。AGSQスケジューラの深さがストアキューの深さの3倍を超えるストアのディスパッチを可能にする場合には、追加のラップビットを加えて、任意の数のストアのディスパッチを可能にすることができる。
ロードマイクロ動作は、必ずしもエイジオーダーではなく、当業者に知られている他の技術を使用して、命令の実行順序を制御することが可能である。一実施形態では、ロードマイクロ動作は、ストアマイクロ動作と同様に動作することが可能である。
アーキテクチャの観点からは、本明細書に記載の実施形態は、上記で概説した問題を解決する。第1に、ストアキュー内のディスパッチペイロード書き込みポートの数が低減される。例えば、ディスパッチペイロード書き込みポートの数を、4つ(ディスパッチ時に1サイクル当たり4ストア)から2つ(1サイクル当たり2ストアアドレス生成)に低減することができる。第2に、困難なタイミングパスが排除される。例えば、キューインデックスをストアキューに送信することと、ペイロードを読み出すことと、ペイロードをセグメンテーションロジック及びロードキューに送信することと、を含むタイミングパスが排除される。
AGSQ154によってアドレス生成が実行され、データ/ディスパッチペイロードが必要に応じてロードキュー138及びストアキュー140に記憶されると、コア処理ユニット105は、マイクロ動作を実行する。ロードキュー138及びストアキュー140の各々は、ロードマイクロ動作のデータを返し、ストアマイクロ動作の書き込みを実行する。他のタイプの動作について、スケジューラ151及びスケジューラ172は、各々のソースの準備が整うと、マイクロ動作を、整数スケジューラ及び/又は実行ユニット130と、浮動小数点スケジューラ及び/又は実行ユニット132と、に発行する。
本明細書において以下により詳細に説明するように、デコーダ126、物理レジスタファイル160及びLSユニット139は、通信可能に接続されている。
図2は、プロセッサ100内でデータアクセスを処理するためのロードストア(LS)ユニット139を示す図である。LSユニット139は、データキャッシュ220に動作可能に接続されたロードキュー210及びストアキュー215を含む。LSユニット139は、独立したパイプライン(集合的に)225,230に構成されている。一実施形態では、LSユニット139は、3つのパイプライン(集合的に)225,230を含み、1サイクルあたり2つのロードメモリ動作225A,225Bと、1つのストアメモリ動作230の実行を可能にする。
LSユニット139のロードキュー210は、複数のエントリを含む。一実施形態では、ロードキュー210は、44個のエントリを含む。ロードキュー210は、ディスパッチ時にロード動作を受信し、ロードは、完了して、整数スケジューラ及び/又は実行ユニット130か浮動小数点スケジューラ及び/又は実行ユニット132にデータを配信する場合に、ロードキュー210を出る。
ストアキュー215は、複数のエントリを含む。一実施形態では、ストアキュー215は、44個のエントリを含む。この例は、上記の例のロードキュー210のエントリ数と等しいが、ロードキュー210及びストアキュー215に等しい数のエントリは必要ではない。ストアキュー215は、ストアデータがデータキャッシュ220に書き込まれるまでディスパッチからストアを保持する。
データキャッシュ220は、L2 235へのストレージが実行されるまでデータをキャッシュする。データキャッシュ220は、データを記憶するハードウェア又はソフトウェアコンポーネントであるため、そのデータに対する将来の要求をより迅速に提供することが可能である。データキャッシュ220に記憶されたデータは、以前の計算の結果、他の場所に記憶されたデータの複製、又は、ストアキュー215からのストアデータとすることができる。L2 235は、データキャッシュ220のより遅い及び/又はより大きいバージョンとすることができる。
LSユニット139は、動作を動的に再順序付けして、ロードキュー210を用いて古いロードをバイパスするロード動作と、ストアキュー215を用いて古い非競合ストアをバイパスするストア動作と、の両方をサポートする。LSユニット139は、プロセッサがロードキュー210及びストアキュー215を介してプロセッサ100のシステムアーキテクチャによって定義されたアーキテクチャ上のロード/ストア順序付け規則に確実に準拠するようにする。
LSユニット139は、全てのロードのバイトを含む古いストアがある場合にストアツーロード転送(STLF)をサポートし、ストアのデータは、生成され、ストアキュー215内で利用可能である。STLFからのロードは、ストア内に完全に含まれる限り、ストアに関する特定のアライメントを必要としない。
プロセッサ100を含むコンピューティングシステムでは、STLF適格性を判別するために特定のアドレスビットが割り当てられる。重要なことに、コンピュータシステムは、同じアドレスビットを有する複数のストアが、同時に処理中の異なるアドレスに向けられることを回避する。これは、ロードがSTLFを必要とする可能性がある場合である。一般に、ストアに続く同様のアドレスビットへのロードは、同じレジスタを使用し、アクセスが密接にグループ化される。このグループ化は、可能な場合にストア及びロードによって使用されるレジスタへの変更又は書き込みに介在するのを回避する。これにより、LSユニット139は、「インフライト」ロード/ストアを追跡することができる。例えば、LSユニット139は、「インフライト」キャッシュミスを追跡することができる。
LSユニット139及び関連するパイプライン225A,225B,230は、単純なアドレス生成モード用に最適化されている。ベース+ディスプレイスメント、ベース+インデックス及びディスプレイスメントのみのアドレッシングモード(ディスプレイスメントサイズにかかわらず)は、単純なアドレッシングモードとみなされ、4サイクルのロードツーユース(load-to-use)整数ロードレイテンシと、7サイクルのロードツーユース浮動小数点(FP)ロードレイテンシと、を実現する。インデックス及びディスプレイスメントの両方が存在するアドレッシングモード(例えば、ベース+インデックス+ディスプレイスメントを有する、一般的に使用される3ソースアドレッシングモード等)と、スケールドインデックス(例えば、×2、×4、×8等)を利用するアドレッシングモードとは、複雑なアドレッシングモードとみなされ、このアドレスを計算するために追加のレイテンシサイクルが必要である。複雑なアドレッシングモードは、5サイクル(整数)/8サイクル浮動小数点ロードツーユースレイテンシを実現する。概して、これらのシステムは、複雑さ(例えば、レイテンシセンシティブコードにおけるスケールドインデックス又はインデックス+ディスプレイスメントアドレッシングモード等)を回避することによって動作する。
図3は、図1のコア処理ユニット105内のLSユニット139と関連するメモリリネーミングのハードウェアフロー300を示す図である。図3は、LSユニット139をバイパスすることによってストア及びロードを追跡するハードウェアフロー300を示している。特に、メモリリネーミングは、ロードが関連するストアに続く場合に、LSユニット139をバイパスしながら同じアドレスへのストア及びロードを追跡する方法である。メモリリネーミングを使用して、ストアからロードへのデータの転送を最適化する。メモリリネーミングの使用は、概して、LSユニット139のリソースを含まずに動作する。実質的に、メモリリネーミングは、整数スケジューラ及び/又は実行ユニット130と、浮動小数点スケジューラ及び/又は実行ユニット132と、にデータを「記憶」することが可能になる。
概して、「記憶」することを可能にするために、メモリ依存アーキテクチャレジスタ番号(MdArn)であるマイクロアーキテクチャレジスタを利用する。MdArnは、後続のロードで使用するために記憶されたデータを「記憶」するための場所として機能する。データが従来のメモリストアに記憶されている場合であっても、MdArnが利用される。従来のメモリストアは、LSユニット139を介して発生する。MdArnは、図1に示す整数リネーマ150及び/又は浮動小数点リネーマ170の一部であり、これらにアクセス可能なアーキテクチャレジスタ番号である。これにより、整数リネーマ150及び/又は浮動小数点リネーマ170は、LSユニットからのデータを要求する必要なしに、MdArnからデータをロードする(「記憶」する)ことができる。
一実施形態では、MdArnに関する情報は、マップ320に記憶される。マップ320は、MdArnマップを含むファイルであり、MdArnマップは、特定のMdArnに記憶されているものへのマップを提供する。MdArnは、構造的に可視ではなく、メモリ依存リネーミングのために内部的にのみ使用される。具体的に、マップ320内の各エントリは、LSユニット139へ送信されることに加えて、所定のストアデータが書き込まれる物理レジスタファイル(PRF)160,178のインデックスである物理レジスタ番号(PRN)を含む。マップ320は、関連するストアのMdArnを用いたリネーミングを介して、ストアデータがロード及びロード依存に転送されるのを可能にする。N個のMdArnが存在する。
ハードウェアフロー300は、N個の命令305のディスパッチを示している。N個の命令305は、図1及び図2に関して上述したように記憶されている。これらの図に詳述されている記憶プロセスに加えて、ストア315は、複数の個々のMdArn337.1,337.2,…,337.nを含むMdArnを使用する。図3は、マップ320内でN個のMdArnをディスパッチすることを示しているが、グループ間の依存関係の数は、例えば6ワイドアーキテクチャにおける6つの動作等のように、同時にディスパッチされる動作の数によって制約される。現在のディスパッチグループ内の何れかのストア315のアドレス情報は、デコーダユニット110内のMEMFILE310に書き込まれ(308)、MdArn、及び、フリーPRNにマッピングするためにリネーマ150,170が割り当てられ、マッピングされたARNで行われるのと同じように、それをマップ320に記憶する。ディスパッチグループ内の同じアドレスに複数のストアが存在する場合に、最古のストアのみがMEMFILE310に記憶され、MdArnにリネームされる。MEMFILE310は、インメモリファイルキャッシュである。
古いストアはプログラム順で定義される。共通のディスパッチグループ内では、動作がプログラム順序になっている。グループ間の依存関係が、正しいソースを確実にするためにチェックされる。最古の動作は、若い動作の何れにも依存しない。例えば、2番目に古い動作を最古の動作に依存させることができ、最も若い動作をその古い動作に依存させることができる。
ストア315は、MEMFILE310に割り当てられるとともに書き込まれ(308)、マップ320内で識別される。ストア315がMEMFILE310を対象とし、マップ320内で識別される場合に、これらのストアは、337(337.1,337.2,…,337.n)に示すように、アドレス一致に関して、ディスパッチロード325と比較される。また、ディスパッチロード325は、347(347.1,347.2,…,347.n)に示すように、MEMFILE310に以前に書き込まれたストアとのアドレス一致についてチェックされる。比較ロジック337,347内のストアとアドレスが一致するロード325は、所定のストアと関連付けられ、グループ間の依存関係のチェック(350,360,370)を受け、次に、ストアMdArnによって示されるPRNにマッピングされる。
一実施形態では、スケジューラ及び/又は実行ユニット115は、デコーダ126内のMEMFILE310内の各ストア315を順に監視する。要するに、一実施形態では、MEMFILE310は、ディスパッチされる各ストア315に割り当てられた、エイジオーダーで回転するFIFO(first-in, first-out)である。ディスパッチは、命令がデコードされ、(例えば、マイクロ動作キュー128とリネーマ150との間(整数リネーマの場合)等のように)リネーマ及びスケジューリングキュー(363,368)に送信されるときである。MEMFILE310内の各エントリは、ストア315に関する情報(例えば、物理レジスタファイル160内のベースレジスタ及びインデックスレジスタ等)を含み、ディスプレイスメントの一部を含む。このストア315には、N個のMdArnが回転するように割り当てられる。
スケジューラ及び/又は実行ユニット115において、ストア315は、図1及び図2に関して本明細書で上述したように動作する。ストア315は、アドレス生成コンポーネントと、LSユニット139にデータ移動するストア315と、に分割される。メモリリネーミングのために、ストア315は、ストアデータをMdArnに移動させることを含む。LSユニット139へのストアデータの移動中に、物理レジスタファイル160は、マップ320内のMdArnに割り当てられたPRNについて書き込まれる。
メモリリネーミングは、レジスタ間の移動へ変更することによって、STLFのレイテンシを減少させる。動作のサブセットは、マッピングのみで実現されるように移動排除とさらに組み合わされて、STLFを0サイクルレイテンシに減少させることができる。
ロード325がロード動作又は純粋なロードである場合、メモリ(例えば、キャッシュ134、L2 136又は他のメモリ等)から通常来るオペランドは、代わりにMdArnによって提供される。ロード325は、アドレス生成を実行し、LSユニット139は、メモリリネーミングフロー300の正当性を検証する。LSユニット139は、データを返すことを控える。また、LSユニット139は、リネームされたストア-ロードの関連付けを壊す所定のアドレスへの中間ストアがなかったことをチェックする。検証が失敗した場合、LSユニット139は、ロード325を再実行することによって、ロード325を再同期させる。ロード325の再同期は、実行された全ての作業を再実行することと、パイプラインをフラッシュすることと、ロードによって開始するスクラッチから実行を始めることと、を含む。
図4は、図1のコア処理ユニット105内のLSユニット139と関連するメモリリネーミング方法400を示す図である。方法400は、ステップ410において、命令を、従来のストレージパスと共にMdArnに記憶することを含む。ステップ420において、方法400は、MdArnストレージに基づいてMEMFILE310の割り当て及び書き込みを行う。ステップ430において、フリーデスティネーションPRNが使用されるように割り当てられ、マップが書き込まれる。システムは、ステップ440において、ロード要求を監視する。ステップ450において、ロード要求時に、MEMFILE310内の、ベース、インデックス、ディスプレイスメント及び一致/ヒットは、マイクロ動作キュー128とマップ320との間(考察されるようなリネーマ150内)など、MEMFILE310が存在するディスパッチロジック内(例えば、マイクロ動作キュー128とマップ320との間(上述したようにリネーマ150内))でチェックされる。ステップ460において、ヒットの場合に、LSユニット139は、データを返すことを抑制され、MEMFILEから識別されたMdArnからのロードのエントリを提供する。ステップ470において、LSユニット139は、ストア-ロードペアが正しく関連付けられていることを検証する。そうでなければ、ロードがフラッシュされ、再実行される。
図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は、オプションのコンポーネントであり、デバイス500は、入力ドライバ512及び出力ドライバ514が存在しない場合であっても同様に動作することに留意されたい。
本明細書で説明する実施形態を概して及び限定することなく、非一時的なコンピュータ可読記憶媒体は、処理システム内で実行されると、アドレス生成時にロード及びストア割り当て方法を処理システムに実行させる命令を含む。
本明細書における開示に基づいて多くの変形が可能であることを理解されたい。上記では、特徴及び要素が特定の組み合わせで説明されているが、各特徴又は要素は、他の特徴及び要素無しに単独で使用されてもよいし、他の特徴及び要素を伴って又は伴わずに様々な組み合わせで使用されてもよい。
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他のタイプの集積回路(IC)、及び/又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令(このような命令は、コンピュータ可読媒体に記憶することが可能である)の結果及びネットリストを含む他の中間データを用いて製造プロセスを構成することによって製造され得る。このようなプロセスの結果は、実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
本明細書で提供された方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、例えば読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク、リムーバブルディスク等の磁気媒体、光磁気記憶媒体、例えばCD-ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体が含まれる。

Claims (20)

  1. 実行ユニット内のロードストア(LS)ユニットをバイパスすることによって、同じメモリアドレスからストア及びロードする場合のロードレイテンシを減少させるために、ストア及びロードを追跡する方法であって、
    データを、1つ以上のメモリ依存アーキテクチャレジスタ番号(MdArn)に関連付けられたメモリに記憶することと、
    前記1つ以上のMdArnを、インメモリファイルキャッシュに割り当てることと、
    割り当てられた前記1つ以上のMdArnをファイルへ書き込むことであって、前記ファイルは、前記1つ以上のMdArnに関連付けられたメモリ内のデータに対応する前記インメモリファイルキャッシュ内のエントリへの後続のアクセスを可能にするためのMdArnマップを含む、ことと、
    ロード要求を受信すると、前記MdArnマップを介してベース、インデックス、ディスプレイスメント及びヒットをチェックして、インメモリファイルキャッシュ内のエントリと、関連するストアと、を前記1つ以上のMdArnを介して識別することと、
    ヒットの場合に、前記LSユニットをバイパスすることによって、前記1つ以上のMdArnに関連付けられたメモリからの前記ロード要求に応じて前記エントリをロードすることと、を含む、
    方法。
  2. フリーデスティネーションを物理レジスタファイル(PRF)に割り当てることをさらに含む、
    請求項1の方法。
  3. ヒットの場合に、前記LSユニットがロード要求に応じてデータを返すことを抑制することをさらに含む、
    請求項1の方法。
  4. 前記抑制することは、スケジューラによって実行される、
    請求項3の方法。
  5. 前記スケジューラは、算術論理ユニット(ALU)スケジューラ(ALSQ)を含む、
    請求項4の方法。
  6. 前記スケジューラは、アドレス生成ユニット(AGU)スケジューラ(AGSQ)を含む、
    請求項4の方法。
  7. 実行ユニット内のロードストア(LS)ユニットをバイパスすることによって、同じメモリアドレスからストア及びロードする場合のロードレイテンシを減少させるために、ストア及びロードを追跡するシステムであって、
    データを記憶するための複数のメモリ依存アーキテクチャレジスタ番号(MdArn)に関連付けられたメモリと、
    前記複数のMdArnのうち少なくとも1つを割り当てるためのインメモリファイルキャッシュと、
    前記1つ以上のMdArnに関連付けられたメモリ内のデータに対応する前記インメモリファイルキャッシュ内のエントリへの後続のアクセスを可能にするためのMdArnマップを書き込むためのファイルと、を備え、
    ロード要求を受信すると、前記MdArnマップを介してベース、インデックス、ディスプレイスメント及びヒットをチェックして、前記インメモリファイルキャッシュ内のエントリと、関連するストアと、を前記複数のMdArnを介して識別することと、
    ヒットの場合に、前記LSユニットをバイパスすることによって、前記複数のMdArnのうち少なくとも1つに関連付けられたメモリからの前記ロード要求に応じて前記エントリをロードすることと、
    を行うように構成されている、
    システム。
  8. フリーデスティネーションを割り当てるための物理レジスタファイル(PRF)をさらに備える、
    請求項7のシステム。
  9. ヒットの場合に、前記LSユニットがロード要求に応じてデータを返すことを抑制することをさらに行うように構成されている、
    請求項7のシステム。
  10. 前記抑制することは、スケジューラによって実行される、
    請求項9のシステム。
  11. 前記スケジューラは、算術論理ユニット(ALU)スケジューラ(ALSQ)を含む、
    請求項10のシステム。
  12. 前記スケジューラは、アドレス生成ユニット(AGU)スケジューラ(AGSQ)を含む、
    請求項10のシステム。
  13. 前記チェックすることは、スケジューラ及び/又は実行ユニットによって実行される、
    請求項7のシステム。
  14. 実行ユニット内のロードストア(LS)ユニットをバイパスすることによって、同じメモリアドレスからストア及びロードする場合のロードレイテンシを減少させるために、ストア及びロードを追跡する方法をコンピュータに実行させるプログラム命令を含むコンピュータ可読記憶媒体であって、
    前記方法は、
    データを、1つ以上のメモリ依存アーキテクチャレジスタ番号(MdArn)に関連付けられたメモリに記憶することと、
    前記1つ以上のMdArnを、インメモリファイルキャッシュに割り当てることと、
    割り当てられた前記1つ以上のMdArnをファイルへ書き込むことであって、前記ファイルは、前記1つ以上のMdArnに関連付けられたメモリ内のデータに対応する前記インメモリファイルキャッシュ内のエントリへの後続のアクセスを可能にするためのMdArnマップを含む、ことと、
    ロード要求を受信すると、前記MdArnマップを介してベース、インデックス、ディスプレイスメント及びヒットをチェックして、前記インメモリファイルキャッシュ内のエントリと、関連するストアと、を前記1つ以上のMdArnを介して識別することと、
    ヒットの場合に、前記LSユニットをバイパスすることによって、前記1つ以上のMdArnに関連付けられたメモリからの前記ロード要求に応じて前記エントリをロードすることと、を含む、
    コンピュータ可読記憶媒体。
  15. 前記方法は、フリーデスティネーションを物理レジスタファイル(PRF)にフリーデスティネーションを割り当てることをさらに含む、
    請求項14のコンピュータ可読記憶媒体。
  16. 前記方法は、ヒットの場合に、前記LSユニットがロード要求に応じてデータを返すことを抑制することをさらに含む、
    請求項14のコンピュータ可読記憶媒体。
  17. 前記抑制することは、スケジューラによって実行される、
    請求項16のコンピュータ可読記憶媒体。
  18. 前記スケジューラは、算術論理ユニット(ALU)スケジューラ(ALSQ)を含む、
    請求項17のコンピュータ可読記憶媒体。
  19. 前記スケジューラは、アドレス生成ユニット(AGU)スケジューラ(AGSQ)を含む、
    請求項17のコンピュータ可読記憶媒体。
  20. 前記チェックすることは、スケジューラ及び/又は実行ユニットによって実行される、
    請求項14のコンピュータ可読記憶媒体。
JP2019510366A 2016-08-19 2017-08-04 ロードストアユニットをバイパスすることによるストア及びロードの追跡 Active JP7084379B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662377301P 2016-08-19 2016-08-19
US62/377,301 2016-08-19
US15/380,778 2016-12-15
US15/380,778 US10331357B2 (en) 2016-08-19 2016-12-15 Tracking stores and loads by bypassing load store units
PCT/US2017/045640 WO2018034876A1 (en) 2016-08-19 2017-08-04 Tracking stores and loads by bypassing load store units

Publications (2)

Publication Number Publication Date
JP2019525355A JP2019525355A (ja) 2019-09-05
JP7084379B2 true JP7084379B2 (ja) 2022-06-14

Family

ID=61191635

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019510366A Active JP7084379B2 (ja) 2016-08-19 2017-08-04 ロードストアユニットをバイパスすることによるストア及びロードの追跡

Country Status (6)

Country Link
US (1) US10331357B2 (ja)
EP (1) EP3500936A4 (ja)
JP (1) JP7084379B2 (ja)
KR (1) KR102524565B1 (ja)
CN (1) CN109564546B (ja)
WO (1) WO2018034876A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10846095B2 (en) * 2017-11-28 2020-11-24 Advanced Micro Devices, Inc. System and method for processing a load micro-operation by allocating an address generation scheduler queue entry without allocating a load queue entry
US11099846B2 (en) 2018-06-20 2021-08-24 Advanced Micro Devices, Inc. Apparatus and method for resynchronization prediction with variable upgrade and downgrade capability
US11281466B2 (en) 2019-10-22 2022-03-22 Advanced Micro Devices, Inc. Register renaming after a non-pickable scheduler queue
US11573891B2 (en) 2019-11-25 2023-02-07 SK Hynix Inc. Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device
KR102456176B1 (ko) * 2020-05-21 2022-10-19 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11301351B2 (en) 2020-03-27 2022-04-12 International Business Machines Corporation Machine learning based data monitoring
US20230195466A1 (en) * 2021-12-17 2023-06-22 Arm Limited Move elimination

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007536626A (ja) 2004-05-05 2007-12-13 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ロードオペレーションの投機的な結果をレジスタ値にリンクするメモリファイルを検証するためのシステムおよび方法
US20140380023A1 (en) 2013-06-25 2014-12-25 Advaned Micro Devices, Inc. Dependence-based replay suppression

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100248903B1 (ko) * 1992-09-29 2000-03-15 야스카와 히데아키 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템
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
US6035394A (en) * 1998-02-17 2000-03-07 International Business Machines Corporation System for providing high performance speculative processing of complex load/store instructions by generating primitive instructions in the load/store unit and sequencer in parallel
US6651161B1 (en) * 2000-01-03 2003-11-18 Advanced Micro Devices, Inc. Store load forward predictor untraining
US7174428B2 (en) 2003-12-29 2007-02-06 Intel Corporation Method and system for transforming memory location references in instructions
US7937569B1 (en) * 2004-05-05 2011-05-03 Advanced Micro Devices, Inc. System and method for scheduling operations using speculative data operands
US7302527B2 (en) 2004-11-12 2007-11-27 International Business Machines Corporation Systems and methods for executing load instructions that avoid order violations
US7987343B2 (en) * 2008-03-19 2011-07-26 International Business Machines Corporation Processor and method for synchronous load multiple fetching sequence and pipeline stage result tracking to facilitate early address generation interlock bypass
US8521982B2 (en) * 2009-04-15 2013-08-27 International Business Machines Corporation Load request scheduling in a cache hierarchy
US9164900B1 (en) 2012-05-23 2015-10-20 Marvell International Ltd. Methods and systems for expanding preload capabilities of a memory to encompass a register file
US9116817B2 (en) 2013-05-09 2015-08-25 Apple Inc. Pointer chasing prediction
US9378021B2 (en) * 2014-02-14 2016-06-28 Intel Corporation Instruction and logic for run-time evaluation of multiple prefetchers
US9710268B2 (en) * 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
US10108548B2 (en) * 2014-08-19 2018-10-23 MIPS Tech, LLC Processors and methods for cache sparing stores

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007536626A (ja) 2004-05-05 2007-12-13 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ロードオペレーションの投機的な結果をレジスタ値にリンクするメモリファイルを検証するためのシステムおよび方法
US20140380023A1 (en) 2013-06-25 2014-12-25 Advaned Micro Devices, Inc. Dependence-based replay suppression

Also Published As

Publication number Publication date
US10331357B2 (en) 2019-06-25
US20180052613A1 (en) 2018-02-22
CN109564546B (zh) 2023-02-17
KR20190033084A (ko) 2019-03-28
JP2019525355A (ja) 2019-09-05
CN109564546A (zh) 2019-04-02
WO2018034876A1 (en) 2018-02-22
EP3500936A4 (en) 2020-04-22
EP3500936A1 (en) 2019-06-26
KR102524565B1 (ko) 2023-04-21

Similar Documents

Publication Publication Date Title
JP7084379B2 (ja) ロードストアユニットをバイパスすることによるストア及びロードの追跡
US11853763B2 (en) Backward compatibility by restriction of hardware resources
US11048506B2 (en) Tracking stores and loads by bypassing load store units
US10235219B2 (en) Backward compatibility by algorithm matching, disabling features, or throttling performance
US9830158B2 (en) Speculative execution and rollback
US9069609B2 (en) Scheduling and execution of compute tasks
JP2007536626A (ja) ロードオペレーションの投機的な結果をレジスタ値にリンクするメモリファイルを検証するためのシステムおよび方法
US11068271B2 (en) Zero cycle move using free list counts
US7321964B2 (en) Store-to-load forwarding buffer using indexed lookup
JP6911102B2 (ja) アドレス生成時のロード及びストアキューの割り当てのためのシステム及び方法
US7266673B2 (en) Speculation pointers to identify data-speculative operations in microprocessor
US10846095B2 (en) System and method for processing a load micro-operation by allocating an address generation scheduler queue entry without allocating a load queue entry
US11281466B2 (en) Register renaming after a non-pickable scheduler queue
US20130046961A1 (en) Speculative memory write in a pipelined processor
JP2023503877A (ja) レジスタ書き込み抑制

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200803

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210830

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210914

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20211214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220114

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220502

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220602

R150 Certificate of patent or registration of utility model

Ref document number: 7084379

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150