JP7205174B2 - 演算処理装置および演算処理装置の制御方法 - Google Patents
演算処理装置および演算処理装置の制御方法 Download PDFInfo
- Publication number
- JP7205174B2 JP7205174B2 JP2018211577A JP2018211577A JP7205174B2 JP 7205174 B2 JP7205174 B2 JP 7205174B2 JP 2018211577 A JP2018211577 A JP 2018211577A JP 2018211577 A JP2018211577 A JP 2018211577A JP 7205174 B2 JP7205174 B2 JP 7205174B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- unit
- instructions
- target
- loop
- 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
- 238000012545 processing Methods 0.000 title claims description 232
- 238000000034 method Methods 0.000 title claims description 16
- 239000000872 buffer Substances 0.000 claims description 104
- 238000000605 extraction Methods 0.000 claims description 21
- 230000004927 fusion Effects 0.000 claims description 16
- 239000000284 extract Substances 0.000 claims description 8
- 239000013589 supplement Substances 0.000 claims description 2
- 230000015654 memory Effects 0.000 description 13
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 230000010365 information processing Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000002542 deteriorative effect Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000000047 product Substances 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 or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- 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/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
2 命令抽出部
3 命令保持部
4 命令処理部
5 ループバッファ部
5a エントリ
6 命令選択部
7 命令実行部
10 命令フェッチアドレス生成部
12 分岐予測部
14 1次命令キャッシュ
16 2次キャッシュ
18 命令バッファ部
20 命令デコード部
22 共有命令デコード部
22a 共有命令リスト
24 共有処理部
24a 命令保持部
26 ループキャッシュ部
28 セレクタ部
30 レジスタリネーミング部
321、322、323、324 リザベーションステーション
34 コミット制御部
36 プログラムカウンタ
38 オペランドアドレス生成部
40 1次データキャッシュ
42、44 演算器
46、48 更新バッファ
50、52 レジスタファイル
100、102 演算処理装置
Claims (10)
- 命令をデコードする命令デコード部と、
前記命令デコード部がデコードした命令を実行する命令実行部と、
前記命令デコード部がデコードした命令の中から、繰り返し実行されるループ処理の対象命令を抽出する命令抽出部と、
前記命令抽出部が抽出した対象命令の各々が格納される複数のエントリを有するループバッファ部と、
命令の実行に使用する情報を保持するレジスタを含むレジスタファイルと、
前記対象命令を前記ループバッファ部の前記複数のエントリの1つに格納するとともに、前記対象命令である複数の連続する命令を1つの対象命令として融合可能な場合であって、前記複数の連続する命令で使用する前記レジスタが競合しない場合、または前記複数の連続する命令で重複して使用する前記レジスタのビット位置が競合しない場合、前記複数の連続する命令を融合して前記1つの対象命令とし、前記ループバッファ部の前記複数のエントリの1つに格納する命令処理部と、
前記命令デコード部が出力する命令または前記ループバッファ部が出力する対象命令のいずれかを選択し、選択した命令を前記命令実行部に出力する命令選択部と、を有することを特徴とする演算処理装置。 - 命令の実行中に前記レジスタの代わりに使用するエントリを含むバッファ部と、
前記命令デコード部が出力する命令毎または前記ループバッファ部が出力する対象命令毎に前記バッファ部の割り当てを制御する割り当て制御部と、を有することを特徴とする請求項1に記載の演算処理装置。 - 前記命令デコード部が出力する命令または前記ループバッファ部が出力する対象命令を保持する複数のエントリを含み、アウトオブオーダで実行が完了された命令の完了処理をインオーダで実行する完了制御部を有することを特徴とする請求項1または請求項2に記載の演算処理装置。
- 前記命令抽出部および前記命令処理部の動作は、前記ループバッファ部に格納される前の対象命令の前記命令実行部による動作と並列に実行されることを特徴とする請求項1ないし請求項3のいずれか1項に記載の演算処理装置。
- 前記演算処理装置は、さらに、対象命令と他の対象命令とを1つの命令として実行可能かを示す融合情報が、前記命令デコード部が出力する対象命令とともに格納される命令保持部を有し、
前記命令抽出部は、抽出した対象命令を前記命令保持部に格納し、1つの命令として実行可能な複数の対象命令に対応して融合情報を前記命令保持部に格納し、
前記命令処理部は、前記命令保持部が保持する融合情報に基づいて、複数の対象命令を1つの対象命令に融合し、融合した対象命令を前記ループバッファ部に格納することを特徴とする請求項1ないし請求項4のいずれか1項に記載の演算処理装置。 - 前記演算処理装置は、さらに、1つの命令として実行可能な複数の対象命令を示す情報が格納されるリスト部を有し、
前記命令抽出部は、前記リスト部を参照することで、対象命令を融合情報とともに前記命令保持部に格納するかを決定することを特徴とする請求項5に記載の演算処理装置。 - 前記ループバッファ部の各エントリは、複数の対象命令を融合した命令の一部である基準命令を保持する領域と、基準命令を補う付随情報を保持する領域と、を有し、
前記命令処理部は、1つの命令として実行可能な複数の対象命令を表す基準命令と付随情報とを前記ループバッファ部に格納することを特徴とする請求項1ないし請求項6のいずれか1項に記載の演算処理装置。 - 命令をフェッチするアドレスを生成するアドレス生成部と、
前記アドレス生成部が生成したアドレスに基づいて分岐命令の分岐先のアドレスを予測することで、ループ処理を予測する分岐予測部と、を有し、
前記命令抽出部は、前記分岐予測部がループ処理を予測したことに基づいて、ループ処理の対象命令を抽出することを特徴とする請求項1ないし請求項7のいずれか1項に記載の演算処理装置。 - 前記命令抽出部が、比較結果に応じてコンディションコードを設定する比較命令と、前記比較命令に続く条件分岐命令とを対象命令として抽出した場合、前記命令処理部は、前記比較命令と前記条件分岐命令とを1つの対象命令として融合することを特徴とする請求項1ないし請求項8のいずれか1項に記載の演算処理装置。
- 演算処理装置が有する命令デコード部が、命令をデコードし、
前記演算処理装置が有する命令実行部が、前記命令デコード部がデコードした命令を実行し、
前記演算処理装置が有する命令抽出部が、前記命令デコード部がデコードした命令の中から、繰り返し実行されるループ処理の対象命令を抽出し、
前記演算処理装置が有する命令処理部が、前記対象命令を前記演算処理装置が有するループバッファ部の複数のエントリの1つに格納するとともに、前記対象命令である複数の連続する命令を1つの対象命令として融合可能な場合であって、前記複数の連続する命令で使用する、レジスタファイルに含まれる命令の実行に使用する情報を保持するレジスタが競合しない場合、または前記複数の連続する命令で重複して使用する前記レジスタのビット位置が競合しない場合、前記複数の連続する命令を融合して1つの対象命令とし、前記ループバッファ部の前記複数のエントリの1つに格納し、
前記演算処理装置が有する命令選択部が、前記命令デコード部が出力する命令または前記ループバッファ部が出力する対象命令のいずれかを選択し、選択した命令を前記命令実行部に出力することを特徴とする演算処理装置の制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018211577A JP7205174B2 (ja) | 2018-11-09 | 2018-11-09 | 演算処理装置および演算処理装置の制御方法 |
US16/665,449 US11080063B2 (en) | 2018-11-09 | 2019-10-28 | Processing device and method of controlling processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018211577A JP7205174B2 (ja) | 2018-11-09 | 2018-11-09 | 演算処理装置および演算処理装置の制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020077333A JP2020077333A (ja) | 2020-05-21 |
JP7205174B2 true JP7205174B2 (ja) | 2023-01-17 |
Family
ID=70550034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018211577A Active JP7205174B2 (ja) | 2018-11-09 | 2018-11-09 | 演算処理装置および演算処理装置の制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11080063B2 (ja) |
JP (1) | JP7205174B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230205535A1 (en) * | 2021-12-23 | 2023-06-29 | Microsoft Technology Licensing, Llc | Optimization of captured loops in a processor for optimizing loop replay performance |
US20230315454A1 (en) * | 2022-03-30 | 2023-10-05 | Advanced Micro Devices, Inc. | Fusing no-op (nop) instructions |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130262822A1 (en) | 2012-03-28 | 2013-10-03 | International Business Machines Corporation | Caching optimized internal instructions in loop buffer |
JP2018005488A (ja) | 2016-06-30 | 2018-01-11 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4338661A (en) * | 1979-05-21 | 1982-07-06 | Motorola, Inc. | Conditional branch unit for microprogrammed data processor |
US5617549A (en) * | 1992-10-06 | 1997-04-01 | Hewlett-Packard Co | System and method for selecting and buffering even and odd instructions for simultaneous execution in a computer |
JPH10105399A (ja) * | 1996-09-27 | 1998-04-24 | Nec Corp | データ処理装置 |
US6330657B1 (en) * | 1999-05-18 | 2001-12-11 | Ip-First, L.L.C. | Pairing of micro instructions in the instruction queue |
JP2006309337A (ja) | 2005-04-26 | 2006-11-09 | Toshiba Corp | プロセッサ及びプロセッサの命令バッファ動作方法 |
US7945767B2 (en) * | 2008-09-30 | 2011-05-17 | Faraday Technology Corp. | Recovery apparatus for solving branch mis-prediction and method and central processing unit thereof |
JP2015219823A (ja) | 2014-05-20 | 2015-12-07 | 富士通株式会社 | プロセッサ |
CN104298488B (zh) * | 2014-09-29 | 2018-02-23 | 上海兆芯集成电路有限公司 | 循环预测器指导的循环缓冲器 |
-
2018
- 2018-11-09 JP JP2018211577A patent/JP7205174B2/ja active Active
-
2019
- 2019-10-28 US US16/665,449 patent/US11080063B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130262822A1 (en) | 2012-03-28 | 2013-10-03 | International Business Machines Corporation | Caching optimized internal instructions in loop buffer |
JP2018005488A (ja) | 2016-06-30 | 2018-01-11 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
Non-Patent Citations (1)
Title |
---|
後藤 弘茂,2006年のCPU 第71回 インテルはCISCのアプローチをアーキテクチャに持ち込む,ASCII 2006年5月号,株式会社アスキー,2006年05月01日,第30巻 第5号,第114頁-第119頁 |
Also Published As
Publication number | Publication date |
---|---|
US11080063B2 (en) | 2021-08-03 |
US20200150965A1 (en) | 2020-05-14 |
JP2020077333A (ja) | 2020-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11379229B2 (en) | Apparatus and method for adaptable and efficient lane-wise tensor processing | |
US6161173A (en) | Integration of multi-stage execution units with a scheduler for single-stage execution units | |
TWI654562B (zh) | 藉由演算法匹配、停用特徵或限制效能之回溯相容性 | |
JP3547482B2 (ja) | 情報処理装置 | |
KR100299691B1 (ko) | 확장가능알아이에스씨마이크로프로세서구조 | |
JP3599409B2 (ja) | 分岐予測装置 | |
US9569214B2 (en) | Execution pipeline data forwarding | |
US20010021970A1 (en) | Data processor | |
JP2021108102A (ja) | 行列演算アクセラレータの命令のための装置、方法、およびシステム | |
JP5154119B2 (ja) | プロセッサ | |
JP2015191660A (ja) | 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置 | |
US20180095752A1 (en) | Instruction predecoding | |
JP3678443B2 (ja) | スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ | |
US7991980B2 (en) | Concurrent execution of instructions in a processing system | |
US10915328B2 (en) | Apparatus and method for a high throughput parallel co-processor and interconnect with low offload latency | |
US10831505B2 (en) | Architecture and method for data parallel single program multiple data (SPMD) execution | |
US10846092B2 (en) | Execution of micro-operations | |
US11900120B2 (en) | Issuing instructions based on resource conflict constraints in microprocessor | |
JP7205174B2 (ja) | 演算処理装置および演算処理装置の制御方法 | |
US20210389979A1 (en) | Microprocessor with functional unit having an execution queue with priority scheduling | |
EP1220091B1 (en) | Circuit and method for instruction compression and dispersal in VLIW processors | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
EP1220089B1 (en) | Method for executing conditional branch instructions in a data processor and corresponding data processor | |
JP5193624B2 (ja) | データプロセッサ | |
US20100100709A1 (en) | Instruction control apparatus and instruction control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210810 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20220518 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220621 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220803 |
|
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: 20221129 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20221212 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7205174 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |