JP7092783B2 - ペンディング中のロード及びストアの個別トラッキング - Google Patents
ペンディング中のロード及びストアの個別トラッキング Download PDFInfo
- Publication number
- JP7092783B2 JP7092783B2 JP2019546133A JP2019546133A JP7092783B2 JP 7092783 B2 JP7092783 B2 JP 7092783B2 JP 2019546133 A JP2019546133 A JP 2019546133A JP 2019546133 A JP2019546133 A JP 2019546133A JP 7092783 B2 JP7092783 B2 JP 7092783B2
- Authority
- JP
- Japan
- Prior art keywords
- counter
- instruction
- response
- store
- memory subsystem
- 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
- 230000015654 memory Effects 0.000 claims description 67
- 238000000034 method Methods 0.000 claims description 28
- 230000004044 response Effects 0.000 claims description 24
- 238000001514 detection method Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 10
- 238000013459 approach Methods 0.000 description 8
- 239000004744 fabric Substances 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003068 static effect Effects 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/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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing 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
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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 or 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 or 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
-
- 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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
Claims (20)
- システムであって、
メモリサブシステムと、
1つ以上の実行ユニットであって、前記1つ以上の実行ユニットのうち第1実行ユニットは、第1カウンタと第2カウンタとを備える、1つ以上の実行ユニットと、を備え、
前記システムは、
第1スレッドのロード命令が実行されたことを検出したことに応じて、前記第1カウンタをインクリメントすることと、
前記ロード命令がターゲットとするデータが前記メモリサブシステムから読み出されたと判別したことに応じて、前記第1カウンタをデクリメントすることと、
前記第1スレッドのストア命令が実行されたことを検出したことに応じて、前記第2カウンタをインクリメントすることと、
前記ストア命令が完了したという肯定応答をメモリサブシステムから受信したことに応じて、前記第2カウンタをデクリメントすることと、
を行うように構成されており、
前記第1実行ユニットは、所定のカウンタが所定値に等しくなるまで待機する待機命令を実行するように構成されており、
前記所定値は、前記待機命令において指定される、
システム。 - 前記所定のカウンタは、前記第1カウンタである、
請求項1のシステム。 - 前記待機命令を実行することは、前記第1カウンタが、前記待機命令に含まれる第1の値に等しくなるまで、1つ以上の命令の実行を抑制する、
請求項2のシステム。 - 前記所定値は0である、
請求項2のシステム。 - 前記所定値は0以外の値である、
請求項2のシステム。 - 前記ストア命令のデータが前記メモリサブシステムに書き込まれた場合及び前記データが他のスレッドで見える場合に、前記ストア命令が完了している、
請求項1のシステム。 - 前記システムは、実行スレッド毎にカウンタのペアを含む、
請求項1のシステム。 - 第1スレッドのロード命令が実行されたことを検出したことに応じて、第1実行ユニットの第1カウンタをインクリメントすることと、
前記ロード命令がターゲットとするデータがメモリサブシステムから読み出されたと判別したことに応じて、前記第1カウンタをデクリメントすることと、
前記第1スレッドのストア命令が実行されたことを検出したことに応じて、前記第1実行ユニットの第2カウンタをインクリメントすることと、
前記ストア命令が完了したという肯定応答を前記メモリサブシステムから受信したことに応じて、前記第2カウンタをデクリメントすることと、
所定のカウンタが所定値に等しくなるまで待機する待機命令を実行することと、を含み、
前記所定値は、前記待機命令において指定される、
方法。 - 前記所定のカウンタは、前記第1カウンタである、
請求項8の方法。 - 前記待機命令を実行することは、前記第1カウンタが、前記待機命令に含まれる第1の値に等しくなるまで、1つ以上の命令の実行を抑制する、
請求項9の方法。 - 前記所定は0である、
請求項9の方法。 - 前記所定値は0以外の値である、
請求項9の方法。 - 前記ストア命令のデータが前記メモリサブシステムに書き込まれた場合及び前記データが他のスレッドで見える場合に、前記ストア命令が完了している、
請求項8の方法。 - 実行スレッド毎にカウンタのペアを維持することを含む、
請求項8の方法。 - メモリサブシステムと、
第1カウンタと第2カウンタとを備える実行ユニットと、を備え、
前記実行ユニットは、
第1スレッドのロード命令が実行されたことを検出したことに応じて、前記第1カウンタをインクリメントすることと、
前記ロード命令がターゲットとするデータがメモリサブシステムから読み出されたと判別したことに応じて、前記第1カウンタをデクリメントすることと、
前記第1スレッドのストア命令が実行されたことを検出したことに応じて、前記第2カウンタをインクリメントすることと、
前記ストア命令が完了したという肯定応答を前記メモリサブシステムから受信したことに応じて、前記第2カウンタをデクリメントすることと、
所定のカウンタが所定値に等しくなるまで待機する待機命令を実行することと、
を行うように構成されており、
前記所定値は、前記待機命令において指定される、
装置。 - 前記所定のカウンタは、前記第1カウンタである、
請求項15の装置。 - 前記待機命令を実行することは、前記第1カウンタが、前記待機命令に含まれる第1の値に等しくなるまで、1つ以上の命令の実行を抑制する、
請求項16の装置。 - 前記所定値は0である、
請求項16の装置。 - 前記所定値は0以外の値である、
請求項16の装置。 - 前記ストア命令のデータが前記メモリサブシステムに書き込まれた場合及び前記データが他のスレッドで見える場合に、前記ストア命令が完了している、
請求項15の装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/442,412 | 2017-02-24 | ||
US15/442,412 US11074075B2 (en) | 2017-02-24 | 2017-02-24 | Wait instruction for preventing execution of one or more instructions until a load counter or store counter reaches a specified value |
EP17159096.1A EP3367235B1 (en) | 2017-02-24 | 2017-03-03 | Separate tracking of pending loads and stores |
EP17159096.1 | 2017-03-03 | ||
PCT/US2018/019517 WO2018156951A1 (en) | 2017-02-24 | 2018-02-23 | Separate tracking of pending loads and stores |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020523652A JP2020523652A (ja) | 2020-08-06 |
JP7092783B2 true JP7092783B2 (ja) | 2022-06-28 |
Family
ID=58227989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019546133A Active JP7092783B2 (ja) | 2017-02-24 | 2018-02-23 | ペンディング中のロード及びストアの個別トラッキング |
Country Status (6)
Country | Link |
---|---|
US (1) | US11074075B2 (ja) |
EP (1) | EP3367235B1 (ja) |
JP (1) | JP7092783B2 (ja) |
KR (1) | KR102515106B1 (ja) |
CN (1) | CN110249308A (ja) |
WO (1) | WO2018156951A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11327759B2 (en) * | 2018-09-25 | 2022-05-10 | Marvell Asia Pte, Ltd. | Managing low-level instructions and core interactions in multi-core processors |
US20240184580A1 (en) * | 2022-12-02 | 2024-06-06 | SiFive, Inc. | Tracking of Data Readiness for Load and Store Operations |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010522920A (ja) | 2007-03-26 | 2010-07-08 | イマジネイション テクノロジーズ リミテッド | パイプラインプロセッサにおける長い待ち時間命令の処理 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
US6073159A (en) | 1996-12-31 | 2000-06-06 | Compaq Computer Corporation | Thread properties attribute vector based thread selection in multithreading processor |
US5961630A (en) * | 1997-12-30 | 1999-10-05 | Intel Corporation | Method and apparatus for handling dynamic structural hazards and exceptions by using post-ready latency |
US6473832B1 (en) | 1999-05-18 | 2002-10-29 | Advanced Micro Devices, Inc. | Load/store unit having pre-cache and post-cache queues for low latency load memory operations |
US6481251B1 (en) | 1999-10-25 | 2002-11-19 | Advanced Micro Devices, Inc. | Store queue number assignment and tracking |
US6978360B2 (en) * | 2001-05-11 | 2005-12-20 | International Business Machines Corporation | Scalable processor |
US7409500B2 (en) * | 2004-01-13 | 2008-08-05 | Hewlett-Packard Development Company, L.P. | Systems and methods for employing speculative fills |
US8291431B2 (en) | 2006-08-29 | 2012-10-16 | Qualcomm Incorporated | Dependent instruction thread scheduling |
US7877559B2 (en) | 2007-11-26 | 2011-01-25 | Globalfoundries Inc. | Mechanism to accelerate removal of store operations from a queue |
US7941584B2 (en) * | 2009-03-26 | 2011-05-10 | Arm Limited | Data processing apparatus and method for performing hazard detection |
US9280343B2 (en) * | 2009-08-10 | 2016-03-08 | Oracle America, Inc. | Store queue with token to facilitate efficient thread synchronization |
US8127057B2 (en) | 2009-08-13 | 2012-02-28 | Advanced Micro Devices, Inc. | Multi-level buffering of transactional data |
US8966457B2 (en) * | 2011-11-15 | 2015-02-24 | Global Supercomputing Corporation | Method and system for converting a single-threaded software program into an application-specific supercomputer |
US9229896B2 (en) * | 2012-12-21 | 2016-01-05 | Apple Inc. | Systems and methods for maintaining an order of read and write transactions in a computing system |
US9535695B2 (en) | 2013-01-25 | 2017-01-03 | Apple Inc. | Completing load and store instructions in a weakly-ordered memory model |
US9612836B2 (en) | 2014-02-03 | 2017-04-04 | Nvidia Corporation | System, method, and computer program product for implementing software-based scoreboarding |
US9569362B2 (en) * | 2014-11-13 | 2017-02-14 | Cavium, Inc. | Programmable ordering and prefetch |
-
2017
- 2017-02-24 US US15/442,412 patent/US11074075B2/en active Active
- 2017-03-03 EP EP17159096.1A patent/EP3367235B1/en active Active
-
2018
- 2018-02-23 CN CN201880009818.6A patent/CN110249308A/zh active Pending
- 2018-02-23 KR KR1020197020241A patent/KR102515106B1/ko active IP Right Grant
- 2018-02-23 JP JP2019546133A patent/JP7092783B2/ja active Active
- 2018-02-23 WO PCT/US2018/019517 patent/WO2018156951A1/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010522920A (ja) | 2007-03-26 | 2010-07-08 | イマジネイション テクノロジーズ リミテッド | パイプラインプロセッサにおける長い待ち時間命令の処理 |
Also Published As
Publication number | Publication date |
---|---|
EP3367235A1 (en) | 2018-08-29 |
JP2020523652A (ja) | 2020-08-06 |
US20180246724A1 (en) | 2018-08-30 |
CN110249308A (zh) | 2019-09-17 |
EP3367235B1 (en) | 2019-06-26 |
KR20190116260A (ko) | 2019-10-14 |
US11074075B2 (en) | 2021-07-27 |
WO2018156951A1 (en) | 2018-08-30 |
KR102515106B1 (ko) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5963282B2 (ja) | 割り込み分配スキーム | |
US11709742B2 (en) | Method for migrating CPU state from an inoperable core to a spare core | |
US8713262B2 (en) | Managing a spinlock indicative of exclusive access to a system resource | |
EP2645237B1 (en) | Deadlock/livelock resolution using service processor | |
KR102495792B1 (ko) | 가변 파면 크기 | |
US8572355B2 (en) | Support for non-local returns in parallel thread SIMD engine | |
KR20170001568A (ko) | 영구 커밋 프로세서들, 방법들, 시스템들 및 명령어들 | |
US10007590B2 (en) | Identifying and tracking frequently accessed registers in a processor | |
BR102014005665B1 (pt) | Aparelho, método implementado por computador e mídia legível por máquina para economia de energia em cargas de trabalho | |
US8095829B1 (en) | Soldier-on mode to control processor error handling behavior | |
US10345884B2 (en) | Mechanism to provide workload and configuration-aware deterministic performance for microprocessors | |
WO2023173642A1 (zh) | 指令调度的方法、处理电路和电子设备 | |
JP7092783B2 (ja) | ペンディング中のロード及びストアの個別トラッキング | |
US10289418B2 (en) | Cooperative thread array granularity context switch during trap handling | |
CN114218152B (zh) | 流处理方法、处理电路和电子设备 | |
US20070239972A1 (en) | Processing internal timestamp counter instructions in reference to external counter | |
US20190354371A1 (en) | Dentifying and tracking frequently accessed registers in a processor | |
KR102199342B1 (ko) | 스토어 리플레이 정책 | |
US11907724B2 (en) | In-memory trace with overlapping processing and logout |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210222 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20211222 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220111 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220407 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220510 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220525 |
|
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: 20220531 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220616 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7092783 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |