JP6911102B2 - アドレス生成時のロード及びストアキューの割り当てのためのシステム及び方法 - Google Patents
アドレス生成時のロード及びストアキューの割り当てのためのシステム及び方法 Download PDFInfo
- Publication number
- JP6911102B2 JP6911102B2 JP2019508265A JP2019508265A JP6911102B2 JP 6911102 B2 JP6911102 B2 JP 6911102B2 JP 2019508265 A JP2019508265 A JP 2019508265A JP 2019508265 A JP2019508265 A JP 2019508265A JP 6911102 B2 JP6911102 B2 JP 6911102B2
- Authority
- JP
- Japan
- Prior art keywords
- micro
- queue
- store
- load
- dispatch
- 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
Links
- 238000000034 method Methods 0.000 title claims description 40
- 238000012545 processing Methods 0.000 claims description 16
- 238000010586 diagram Methods 0.000 description 15
- 230000011218 segmentation Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000012369 In process control Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 210000004544 dc2 Anatomy 0.000 description 1
- 238000004190 ion pair chromatography Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Description
本願は、2016年8月15日に出願された米国特許出願第15/236,882号の利益を主張し、その内容は、完全に記載されているかのように、参照により本明細書に組み込まれる。
Claims (20)
- マイクロ動作を処理するための方法であって、
第1マイクロ動作を含む複数のマイクロ動作をフェッチすることと、
ロード/ストアキュー内のキューエントリが前記第1マイクロ動作に利用できないことに応じて、前記第1マイクロ動作を、前記ロード/ストアキューにディスパッチすることなくエイジオーダースケジューラキューにディスパッチすることであって、前記エイジオーダースケジューラキューは、前記第1マイクロ動作に関連するディスパッチペイロードを保持する、ことと、
前記第1マイクロ動作によって識別される前記ロード/ストアキュー内のキューエントリが利用可能になり、前記第1マイクロ動作に必要なソース情報が準備されたことに応じて、
前記第1マイクロ動作のためのアドレス生成を実行することと、
前記第1マイクロ動作を含むディスパッチペイロードを読み出すことと、
前記第1マイクロ動作によって指定されるようにストアされるデータを含むディスパッチペイロードを、前記第1マイクロ動作によって識別される前記ロード/ストアキュー内の利用可能なキューエントリに送信することと、を含む、
方法。 - ディスパッチ時に、プログラム順で各マイクロ動作を前記ロード/ストアキュー内のキューエントリに関連付けて、エイジオーダーを維持することをさらに含む、
請求項1の方法。 - 前記ロード/ストアキューからの入力に基づいて、前記エイジオーダースケジューラキュー内のコミットされていない最古のストアマイクロ動作ストアキューエントリ番号を更新することをさらに含む、
請求項1の方法。 - 前記エイジオーダースケジューラキューにおいて、前記エイジオーダースケジューラキュー内の前記コミットされていない最古のマイクロ動作キューエントリのエントリ番号を各マイクロ動作のキューエントリと比較して、前記マイクロ動作のキューエントリが利用可能かどうかを判別することをさらに含む、
請求項3の方法 - 前記マイクロ動作は、ストアマイクロ動作である、
請求項3の方法。 - ディスパッチウィンドウサイズは、前記ロード/ストアキューの深さ及び前記エイジオーダースケジューラキューの深さをあわせたサイズである、
請求項1の方法。 - 前記ロード/ストアキューの深さを超えるディスパッチを可能にするために、前記エイジオーダースケジューラキュー内のエントリのラップビットが追跡され、ラップビットは、前記ロード/ストアキューのサイクルを表す、
請求項1の方法。 - マイクロ動作を処理するためのプロセッサであって、
ロード/ストアキューと、
エイジオーダースケジューラキューと、
アドレス生成スケジューラと、
デコーダと、を備え、
前記デコーダは、第1マイクロ動作を含む複数のマイクロ動作をフェッチするように構成されており、
前記デコーダは、前記ロード/ストアキュー内のキューエントリが前記第1マイクロ動作に利用できないことに応じて、前記第1マイクロ動作を、前記ロード/ストアキューにディスパッチすることなく前記エイジオーダースケジューラキューにディスパッチするように構成されており、
前記エイジオーダースケジューラキューは、前記第1マイクロ動作に関連するディスパッチペイロードを保持するように構成されており、
前記アドレス生成スケジューラは、前記第1マイクロ動作が利用可能になることによって識別される前記ロード/ストアキュー内のキューエントリと、前記第1マイクロ動作が準備されることによって必要となるソース情報と、を決定するように構成されており、
前記アドレス生成スケジューラは、前記第1マイクロ動作が利用可能になることによって識別される前記ロード/ストアキュー内のキューエントリと、前記第1マイクロ動作が準備されることによって必要となるソース情報と、を決定したことに応じて、
前記第1マイクロ動作のためのアドレス生成を実行することと、
前記第1マイクロ動作の前記ディスパッチペイロードを読み出すことと、
前記第1マイクロ動作によって指定されるようにストアされるデータを含む前記ディスパッチペイロードを、前記第1マイクロ動作によって識別される前記ロード/ストアキュー内の利用可能なキューエントリに送信することと、
を行うように構成されている、
プロセッサ。 - 前記デコーダは、プログラム順で各マイクロ動作を前記ロード/ストアキュー内のキューエントリに関連付けて、前記マイクロ動作のエイジオーダーを維持するように構成されている、
請求項8のプロセッサ。 - 前記ロード/ストアキューは、前記関連するキューエントリが利用可能であることを前記エイジオーダースケジューラキューに通知するように構成されている、
請求項9のプロセッサ。 - 前記アドレス生成スケジューラは、
前記ロード/ストアキューからの入力に基づいて、前記エイジオーダースケジューラキュー内のコミットされていない最古のストアマイクロ動作ストアキューエントリ番号を更新し、
コミットされていない最古のマイクロ動作キューエントリを各前記マイクロ動作のキューエントリと比較して、前記マイクロ動作のキューエントリが利用可能かどうかを判別するように構成されている、
請求項8のプロセッサ。 - 前記マイクロ動作は、ストアマイクロ動作である、
請求項8のプロセッサ。 - ディスパッチウィンドウサイズは、前記ロード/ストアキューの深さ及び前記エイジオーダースケジューラキューの深さをあわせたサイズである、
請求項8のプロセッサ。 - 前記ロード/ストアキューの深さを超えるディスパッチを可能にするために、前記エイジオーダースケジューラキュー内のエントリのラップビットが追跡され、ラップビットは、前記ロード/ストアキューのサイクルを表す、
請求項8のプロセッサ。 - マイクロ動作を処理するための方法であって、
ロード/ストアキュー内のキューエントリが第1マイクロ動作に利用できないことに応じて、前記第1マイクロ動作を含む複数のマイクロ動作に関連するディスパッチペイロードを保持するために、前記第1マイクロ動作を、前記ロード/ストアキューにディスパッチすることなくスケジューラキューにディスパッチすることと、
前記ディスパッチペイロードを前記スケジューラキューにストアすることと、
第1マイクロ動作によって識別される前記ロード/ストアキュー内のキューエントリが利用可能であるかどうか、及び、前記第1マイクロ動作によって必要とされるソース情報が準備されているかどうかを判別することと、
前記ロード/ストアキュー内の前記キューエントリが利用可能になり、前記第1マイクロ動作によって必要とされるソース情報が準備されたことに応じて、
前記第1マイクロ動作のためのアドレス生成を実行することと、
前記第1マイクロ動作を含む前記ディスパッチペイロードを読み出すことと、
前記第1マイクロ動作によって指定されるようにストアされるデータを含むディスパッチペイロードを、前記第1マイクロ動作によって識別される前記ロード/ストアキュー内の利用可能なキューエントリに送信することと、を含む、
方法。 - エイジオーダーを維持するために、プログラム順でキューエントリを各マイクロ動作に割り当てることをさらに含む、
請求項15の方法。 - 前記ロード/ストアキューからの入力に基づいて、コミットされていない最古のマイクロ動作キューエントリ番号を更新することをさらに含む、
請求項15の方法。 - 前記コミットされていない最古のマイクロ動作キューエントリを各マイクロ動作の1つ以上の関連するロード/ストアキューエントリと比較して、前記マイクロ動作のキューエントリが利用可能かどうかを判別することをさらに含む、
請求項17の方法。 - ディスパッチウィンドウサイズは、前記ロード/ストアキューの深さ及び前記スケジューラキューの深さをあわせたサイズである、
請求項15の方法。 - 前記ロード/ストアキューの深さを超えるディスパッチを可能にするために、前記ロード/ストアキューの異なるエポックが追跡され、各エポックは、前記ロード/ストアキューのサイクルを表す、
請求項15の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/236,882 US11086628B2 (en) | 2016-08-15 | 2016-08-15 | System and method for load and store queue allocations at address generation time |
US15/236,882 | 2016-08-15 | ||
PCT/US2016/052494 WO2018034678A1 (en) | 2016-08-15 | 2016-09-19 | System and method for load and store queue allocations at address generation time |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019525351A JP2019525351A (ja) | 2019-09-05 |
JP6911102B2 true JP6911102B2 (ja) | 2021-07-28 |
Family
ID=61159026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019508265A Active JP6911102B2 (ja) | 2016-08-15 | 2016-09-19 | アドレス生成時のロード及びストアキューの割り当てのためのシステム及び方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11086628B2 (ja) |
EP (1) | EP3497558B1 (ja) |
JP (1) | JP6911102B2 (ja) |
KR (1) | KR20190031498A (ja) |
CN (1) | CN109564510B (ja) |
WO (1) | WO2018034678A1 (ja) |
Families Citing this family (2)
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 |
US11513802B2 (en) * | 2020-09-27 | 2022-11-29 | Advanced Micro Devices, Inc. | Compressing micro-operations in scheduler entries in a processor |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5519864A (en) * | 1993-12-27 | 1996-05-21 | Intel Corporation | Method and apparatus for scheduling the dispatch of instructions from a reservation station |
US5684971A (en) * | 1993-12-27 | 1997-11-04 | Intel Corporation | Reservation station with a pseudo-FIFO circuit for scheduling dispatch of instructions |
US5584037A (en) * | 1994-03-01 | 1996-12-10 | Intel Corporation | Entry allocation in a circular buffer |
US5745726A (en) * | 1995-03-03 | 1998-04-28 | Fujitsu, Ltd | Method and apparatus for selecting the oldest queued instructions without data dependencies |
US6481251B1 (en) | 1999-10-25 | 2002-11-19 | Advanced Micro Devices, Inc. | Store queue number assignment and tracking |
US6785802B1 (en) * | 2000-06-01 | 2004-08-31 | Stmicroelectronics, Inc. | Method and apparatus for priority tracking in an out-of-order instruction shelf of a high performance superscalar microprocessor |
US20030182537A1 (en) | 2002-03-21 | 2003-09-25 | International Business Machines Corporation | Mechanism to assign more logical load/store tags than available physical registers in a microprocessor system |
US7782885B1 (en) * | 2002-12-10 | 2010-08-24 | Cisco Technology, Inc. | System and method for queue management using queue sets |
US8239638B2 (en) | 2007-06-05 | 2012-08-07 | Apple Inc. | Store handling in a processor |
US20080320274A1 (en) * | 2007-06-19 | 2008-12-25 | Raza Microelectronics, Inc. | Age matrix for queue dispatch order |
US8656401B2 (en) | 2011-05-13 | 2014-02-18 | Advanced Micro Devices, Inc. | Method and apparatus for prioritizing processor scheduler queue operations |
CN107748673B (zh) | 2012-06-15 | 2022-03-25 | 英特尔公司 | 包括虚拟加载存储队列的处理器和系统 |
EP2862084A4 (en) * | 2012-06-15 | 2016-11-30 | Soft Machines Inc | METHOD AND SYSTEM FOR IMPLEMENTING RECOVERY FROM A SPECULATIVE TRANSMISSION OF FAULT FORECASTS / ERRORS DUE TO THE CHANGE AND OPTIMIZATION OF MEMORY LOADS |
CN104620223B (zh) * | 2012-06-15 | 2018-11-16 | 英特尔公司 | 对于基于存储资历实现从不同线程进行转发的线程不可知的加载存储缓冲器 |
US20140129806A1 (en) * | 2012-11-08 | 2014-05-08 | Advanced Micro Devices, Inc. | Load/store picker |
US9817667B2 (en) * | 2013-05-23 | 2017-11-14 | Advanced Micro Devices, Inc. | Techniques for scheduling operations at an instruction pipeline |
GB2510655B (en) * | 2013-07-31 | 2015-02-25 | Imagination Tech Ltd | Prioritizing instructions based on type |
US10133576B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries |
US9367322B1 (en) | 2015-07-27 | 2016-06-14 | International Business Machines Corporation | Age based fast instruction issue |
-
2016
- 2016-08-15 US US15/236,882 patent/US11086628B2/en active Active
- 2016-09-19 CN CN201680088368.5A patent/CN109564510B/zh active Active
- 2016-09-19 KR KR1020197003899A patent/KR20190031498A/ko not_active Application Discontinuation
- 2016-09-19 EP EP16913623.1A patent/EP3497558B1/en active Active
- 2016-09-19 WO PCT/US2016/052494 patent/WO2018034678A1/en unknown
- 2016-09-19 JP JP2019508265A patent/JP6911102B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
US11086628B2 (en) | 2021-08-10 |
CN109564510B (zh) | 2023-11-14 |
WO2018034678A1 (en) | 2018-02-22 |
CN109564510A (zh) | 2019-04-02 |
EP3497558A4 (en) | 2020-07-08 |
US20180046463A1 (en) | 2018-02-15 |
EP3497558B1 (en) | 2022-11-23 |
EP3497558A1 (en) | 2019-06-19 |
JP2019525351A (ja) | 2019-09-05 |
KR20190031498A (ko) | 2019-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11853763B2 (en) | Backward compatibility by restriction of hardware resources | |
JP7284199B2 (ja) | アルゴリズム整合、機能無効化、または性能制限による後方互換性 | |
US7133969B2 (en) | System and method for handling exceptional instructions in a trace cache based processor | |
JP7084379B2 (ja) | ロードストアユニットをバイパスすることによるストア及びロードの追跡 | |
US9256433B2 (en) | Systems and methods for move elimination with bypass multiple instantiation table | |
US20160378500A1 (en) | Split-level history buffer in a computer processing unit | |
JP6911102B2 (ja) | アドレス生成時のロード及びストアキューの割り当てのためのシステム及び方法 | |
JP2022546034A (ja) | マイクロプロセッサ内におけるレジスタ結果の累積のための命令ハンドリング | |
US11175916B2 (en) | System and method for a lightweight fencing operation | |
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 | |
TW201732565A (zh) | 用於迴圈不變性指令偵測及去除的方法和裝置 | |
US7555633B1 (en) | Instruction cache prefetch based on trace cache eviction | |
US20200019405A1 (en) | Multiple Level History Buffer for Transaction Memory Support | |
JP2023503877A (ja) | レジスタ書き込み抑制 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190918 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20201014 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20201117 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210217 |
|
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: 20210525 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20210623 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210707 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6911102 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |