JP6744199B2 - 命令を処理するための複数の実行ユニットを備えるプロセッサ、プロセッサを使用して命令を処理するための方法、およびプロセッサの設計プロセスにおいて使用される設計構造 - Google Patents
命令を処理するための複数の実行ユニットを備えるプロセッサ、プロセッサを使用して命令を処理するための方法、およびプロセッサの設計プロセスにおいて使用される設計構造 Download PDFInfo
- Publication number
- JP6744199B2 JP6744199B2 JP2016226864A JP2016226864A JP6744199B2 JP 6744199 B2 JP6744199 B2 JP 6744199B2 JP 2016226864 A JP2016226864 A JP 2016226864A JP 2016226864 A JP2016226864 A JP 2016226864A JP 6744199 B2 JP6744199 B2 JP 6744199B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- processor
- execution
- dependency
- logic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3818—Decoding for concurrent execution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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)
- Advance Control (AREA)
Description
102 命令
104 命令
106 命令
108 命令
110 命令
112 命令
114 命令
116 命令
118 命令
120 命令
122 ユニット
124 ユニット
126 ユニット
300 依存関係キャッシュ
302 命令デコードおよび発行ユニット
306 スコアボード
308 ユニット
402 データ
404 依存関係終了ロジック
406 ユニット・マッピング・モジュール
410 第1のマッピング・ユニット
412 依存関係キャッシュ・テーブル
414 第2のマッピング・ユニット
416 依存関係発行制御ロジック
420 ユニット・マッピング・モジュール
422 データ
424 データ
426 データ
428 データ
430 データ
432 データ
502 依存関係キャッシュ・テーブル
504 データ
506 データ
508 データ
600 フローチャート
602 ステップ
604 ステップ
606 ステップ
608 ステップ
610 ステップ
702 ステップ
704 ステップ
706 ステップ
708 ステップ
710 ステップ
712 ステップ
Claims (17)
- 命令を処理するための複数の実行ユニットと、実行用の命令を前記実行ユニットのうちの1つに割り当てるための命令デコードおよび発行ロジックとを備えるプロセッサであって、前記プロセッサが、
後続の命令間のレジスタ・アクセス競合を解決するための制御ロジックと、
依存関係キャッシュと
を備え、前記依存関係キャッシュが、
前記命令が実行されることが予定されている実行ユニットを示す実行ユニット・インジケータを前記制御ロジックから受信するための受信ロジックと、
前記受信された実行ユニット・インジケータを格納するために前記受信ロジックに応答する格納ロジックと、
命令用の前記格納された実行ユニット・インジケータを提供するために前記命令デコードおよび発行ロジックからの要求に応答する取得ロジックと
を備え、
前記命令デコードおよび発行ロジックが、前記依存関係キャッシュに命令用の実行ユニット・インジケータを要求し、前記依存関係キャッシュから受信された前記実行ユニット・インジケータに応じて、前記命令を前記実行ユニットのうち対応する1つに割り当てるように構成される、プロセッサ。 - 前記制御ロジックがスコアボード制御ロジックである、請求項1に記載のプロセッサ。
- 前記依存関係キャッシュの前記格納ロジックも、前記予定された命令に応じて、命令用のインジケータを格納するように構成される、請求項1に記載のプロセッサ。
- 命令の実行完了時に、前記命令と依存関係のある命令が認識される、請求項1に記載のプロセッサ。
- 前記依存関係キャッシュが、前記認識された命令の依存関係を記録するように構成される、請求項4に記載のプロセッサ。
- 前記依存関係キャッシュが、プロセッサのプログラム実行時間または消費電力が減少するように、最適な実行ユニットまたはプロセッサ・コアまたはプロセッサ・スライスまたはプロセッサ・パイプラインを選択するためのユニット選択モジュールを備える、請求項1に記載のプロセッサ。
- 前記格納ロジックに書き込むために、前記依存関係キャッシュ内のエントリのアドレスが、第1のマッピング・ユニットによって決定される、請求項1に記載のプロセッサ。
- 前記格納ロジックから読み取るために、前記依存関係キャッシュ内のエントリのアドレスが、第2のマッピング・ユニットによって決定される、請求項1に記載のプロセッサ。
- プロセッサを使用して命令を処理するための方法であって、前記プロセッサが実行用の命令を前記実行ユニットのうちの1つに割り当てるための命令デコードおよび発行ロジックを備え、前記方法が、
制御ロジックによって、後続の命令間のレジスタ・アクセス競合を解決するステップと、
依存関係キャッシュを提供するステップと、
前記制御ロジックから、前記依存関係キャッシュで、前記命令が実行されることが予定されている前記実行ユニットを示す実行ユニット・インジケータを受信するステップと、
前記受信された実行ユニット・インジケータを前記依存関係キャッシュに格納するステップと、
前記命令デコードおよび発行ロジックによって、命令用の前記実行ユニット・インジケータを前記依存関係キャッシュに要求するステップと、
命令用の前記格納された実行ユニット・インジケータを前記依存関係キャッシュから取得するステップと、
前記命令を、前記依存関係キャッシュから受信された前記実行ユニット・インジケータに応じて前記実行ユニットのうち対応する1つに割り当てるステップとを含む、方法。 - 前記制御ロジックがスコアボード制御ロジックとして実装される、請求項9に記載の方法。
- 前記予定された命令に応じて、命令用のインジケータを格納することも含む、請求項9に記載の方法。
- 命令の実行完了時に、前記命令の依存関係のある命令を認識するステップをさらに含む、請求項9に記載の方法。
- 前記認識された命令の依存関係を記録するステップをさらに含む、請求項12に記載の方法。
- プログラム実行時間が減少するように、最適な実行ユニットまたはプロセッサ・コアまたはプロセッサ・スライスまたはプロセッサ・パイプラインを選択するステップをさらに含む、請求項9に記載の方法。
- 前記格納ロジックに書き込むために、前記依存関係キャッシュ内のエントリのアドレスを、第1のマッピング・ユニットによって決定するステップをさらに含む、請求項9に記載の方法。
- 前記格納ロジックから読み取るために、前記依存関係キャッシュ内のエントリのアドレスを、第2のマッピング・ユニットによって決定するステップをさらに含む、請求項9に記載の方法。
- 請求項9〜16のいずれかに記載の方法をプロセッサに実行させる、プログラム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/956,467 US10303481B2 (en) | 2015-12-02 | 2015-12-02 | Performance-aware instruction scheduling |
| US14/956467 | 2015-12-02 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2017102919A JP2017102919A (ja) | 2017-06-08 |
| JP6744199B2 true JP6744199B2 (ja) | 2020-08-19 |
Family
ID=58798352
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2016226864A Expired - Fee Related JP6744199B2 (ja) | 2015-12-02 | 2016-11-22 | 命令を処理するための複数の実行ユニットを備えるプロセッサ、プロセッサを使用して命令を処理するための方法、およびプロセッサの設計プロセスにおいて使用される設計構造 |
Country Status (2)
| Country | Link |
|---|---|
| US (2) | US10303481B2 (ja) |
| JP (1) | JP6744199B2 (ja) |
Families Citing this family (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10303481B2 (en) | 2015-12-02 | 2019-05-28 | International Business Machines Corporation | Performance-aware instruction scheduling |
| US10684861B2 (en) | 2017-09-25 | 2020-06-16 | International Business Machines Corporation | Enhanced performance-aware instruction scheduling |
| US11144497B2 (en) | 2018-08-16 | 2021-10-12 | Tachyum Ltd. | System and method of populating an instruction word |
| GB2578097B (en) * | 2018-10-15 | 2021-02-17 | Advanced Risc Mach Ltd | Cache control circuitry and methods |
| WO2021262054A1 (en) * | 2020-06-25 | 2021-12-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Method for controlling deployment of cached dependencies on one or more selected nodes in a distributed computing system |
| US11461103B2 (en) | 2020-10-23 | 2022-10-04 | Centaur Technology, Inc. | Dual branch execute and table update with single port |
| US11360774B2 (en) * | 2020-10-23 | 2022-06-14 | Centaur Technology, Inc. | Dual branch format |
| JP7568129B2 (ja) * | 2021-10-18 | 2024-10-16 | 日本電信電話株式会社 | 解析機能付与方法、解析機能付与装置及び解析機能付与プログラム |
Family Cites Families (32)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4891753A (en) * | 1986-11-26 | 1990-01-02 | Intel Corporation | Register scorboarding on a microprocessor chip |
| US5488729A (en) | 1991-05-15 | 1996-01-30 | Ross Technology, Inc. | Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution |
| US5835745A (en) | 1992-11-12 | 1998-11-10 | Sager; David J. | Hardware instruction scheduler for short execution unit latencies |
| US5699537A (en) | 1995-12-22 | 1997-12-16 | Intel Corporation | Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions |
| US5802386A (en) | 1996-11-19 | 1998-09-01 | International Business Machines Corporation | Latency-based scheduling of instructions in a superscalar processor |
| US6378063B2 (en) | 1998-12-23 | 2002-04-23 | Intel Corporation | Method and apparatus for efficiently routing dependent instructions to clustered execution units |
| US20020087833A1 (en) | 2000-12-28 | 2002-07-04 | Burns James S. | Method and apparatus for distributed processor dispersal logic |
| US7363467B2 (en) | 2002-01-03 | 2008-04-22 | Intel Corporation | Dependence-chain processing using trace descriptors having dependency descriptors |
| US8612957B2 (en) | 2006-01-26 | 2013-12-17 | Intel Corporation | Scheduling multithreaded programming instructions based on dependency graph |
| US7705647B2 (en) | 2006-06-14 | 2010-04-27 | Qualcomm Incorporated | Duty cycle correction circuit |
| US7839194B2 (en) | 2007-11-21 | 2010-11-23 | Rambus Inc. | Clock circuitry for generating multiple clocks with time-multiplexed duty cycle adjustment |
| US8018261B2 (en) | 2008-03-25 | 2011-09-13 | Micron Technology, Inc. | Clock generator and methods using closed loop duty cycle correction |
| US8255671B2 (en) | 2008-12-18 | 2012-08-28 | Apple Inc. | Processor employing split scheduler in which near, low latency operation dependencies are tracked separate from other operation dependencies |
| US8086826B2 (en) | 2009-03-24 | 2011-12-27 | International Business Machines Corporation | Dependency tracking for enabling successive processor instructions to issue |
| US9122487B2 (en) | 2009-06-23 | 2015-09-01 | Oracle America, Inc. | System and method for balancing instruction loads between multiple execution units using assignment history |
| US7999589B2 (en) | 2009-09-03 | 2011-08-16 | Micron Technology, Inc. | Circuits and methods for clock signal duty-cycle correction |
| US8513997B2 (en) | 2010-09-30 | 2013-08-20 | St-Ericsson Sa | RF duty cycle correction circuit |
| US20130063191A1 (en) | 2011-09-14 | 2013-03-14 | Rambus Inc. | Methods and Circuits for Duty-Cycle Correction |
| US8476947B2 (en) | 2011-11-14 | 2013-07-02 | Altera Corporation | Duty cycle distortion correction circuitry |
| JP2013165354A (ja) | 2012-02-09 | 2013-08-22 | Elpida Memory Inc | 半導体装置 |
| US20130297912A1 (en) | 2012-05-03 | 2013-11-07 | Freescale Semiconductor, Inc. | Apparatus and method for dynamic allocation of execution queues |
| GB2503438A (en) | 2012-06-26 | 2014-01-01 | Ibm | Method and system for pipelining out of order instructions by combining short latency instructions to match long latency instructions |
| US9018994B2 (en) | 2012-12-28 | 2015-04-28 | SK Hynix Inc. | Duty cycle correction circuit and operation method thereof |
| US9503066B2 (en) | 2013-07-08 | 2016-11-22 | Micron Technology, Inc. | Apparatuses and methods for phase interpolating clock signals and for providing duty cycle corrected clock signals |
| CN104467745B (zh) | 2013-09-19 | 2018-07-20 | 天工方案公司 | 动态误差向量幅度占空比校正 |
| US9417920B2 (en) | 2013-10-04 | 2016-08-16 | Freescale Semiconductor, Inc. | Method and apparatus for dynamic resource partition in simultaneous multi-thread microprocessor |
| US9344066B2 (en) | 2014-09-30 | 2016-05-17 | Texas Instruments Incorporated | Digital open loop duty cycle correction circuit |
| US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
| US9729131B2 (en) | 2015-09-25 | 2017-08-08 | Micron Technology, Inc. | System and method for duty cycle correction |
| US9413347B1 (en) | 2015-12-01 | 2016-08-09 | Elite Semiconductor Memory Technology Inc. | Duty cycle correction apparatus |
| US10303481B2 (en) | 2015-12-02 | 2019-05-28 | International Business Machines Corporation | Performance-aware instruction scheduling |
| US10684861B2 (en) | 2017-09-25 | 2020-06-16 | International Business Machines Corporation | Enhanced performance-aware instruction scheduling |
-
2015
- 2015-12-02 US US14/956,467 patent/US10303481B2/en active Active
-
2016
- 2016-03-10 US US15/065,913 patent/US10528354B2/en not_active Expired - Fee Related
- 2016-11-22 JP JP2016226864A patent/JP6744199B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| US10528354B2 (en) | 2020-01-07 |
| US20170161078A1 (en) | 2017-06-08 |
| US10303481B2 (en) | 2019-05-28 |
| JP2017102919A (ja) | 2017-06-08 |
| US20170161077A1 (en) | 2017-06-08 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP6744199B2 (ja) | 命令を処理するための複数の実行ユニットを備えるプロセッサ、プロセッサを使用して命令を処理するための方法、およびプロセッサの設計プロセスにおいて使用される設計構造 | |
| US11966785B2 (en) | Hardware resource configuration for processing system | |
| KR101754462B1 (ko) | 동적 비순차적 프로세서 파이프라인을 구현하기 위한 방법 및 장치 | |
| US9292291B2 (en) | Instruction merging optimization | |
| US7395414B2 (en) | Dynamic recalculation of resource vector at issue queue for steering of dependent instructions | |
| US20100287550A1 (en) | Runtime Dependence-Aware Scheduling Using Assist Thread | |
| KR20140029480A (ko) | 이종 코어를 위한 자동 커널 마이그레이션 | |
| US10073783B2 (en) | Dual mode local data store | |
| CN106610816B (zh) | 一种risc-cpu中指令集之间冲突的规避方法及系统 | |
| JPH1097424A (ja) | スーパースカラープロセッサの中央処理ユニット | |
| US10007590B2 (en) | Identifying and tracking frequently accessed registers in a processor | |
| US10067763B2 (en) | Handling unaligned load operations in a multi-slice computer processor | |
| US11321088B2 (en) | Tracking load and store instructions and addresses in an out-of-order processor | |
| Iliakis et al. | Repurposing GPU microarchitectures with light-weight out-of-order execution | |
| CN112639729A (zh) | 用于预测源操作数值并优化指令处理的设备和方法 | |
| US9430244B1 (en) | Run-time code parallelization using out-of-order renaming with pre-allocation of physical registers | |
| US10248555B2 (en) | Managing an effective address table in a multi-slice processor | |
| US20140258697A1 (en) | Apparatus and Method for Transitive Instruction Scheduling | |
| US20170344379A1 (en) | Generating a mask vector for determining a processor instruction address using an instruction tag in a multi-slice processor | |
| KR20260037164A (ko) | 바이어스된 간접 제어 전달 예측 | |
| US10949202B2 (en) | Identifying and tracking frequently accessed registers in a processor | |
| KR100837400B1 (ko) | 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치 | |
| KR102871203B1 (ko) | 섀도우-래치로 구성된 레지스터 파일을 사용한 비트 폭 재구성 | |
| US20170003971A1 (en) | Variable latency pipe for interleaving instruction tags in a microprocessor | |
| Huerta Gañán et al. | SIMIL: SIMple Issue Logic for GPUs |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190419 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200228 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200324 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200619 |
|
| 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: 20200728 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200730 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6744199 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| LAPS | Cancellation because of no payment of annual fees |