JP5240270B2 - プロセッサ及びベクトルロード命令の実行方法 - Google Patents
プロセッサ及びベクトルロード命令の実行方法 Download PDFInfo
- Publication number
- JP5240270B2 JP5240270B2 JP2010229362A JP2010229362A JP5240270B2 JP 5240270 B2 JP5240270 B2 JP 5240270B2 JP 2010229362 A JP2010229362 A JP 2010229362A JP 2010229362 A JP2010229362 A JP 2010229362A JP 5240270 B2 JP5240270 B2 JP 5240270B2
- Authority
- JP
- Japan
- Prior art keywords
- vector
- branch
- instruction
- 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.)
- Expired - Fee Related
Links
- 239000013598 vector Substances 0.000 title claims abstract description 437
- 238000000034 method Methods 0.000 title claims description 32
- 239000000872 buffer Substances 0.000 claims description 126
- 238000007726 management method Methods 0.000 description 61
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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 or look ahead
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Description
図1は、本発明の実施の形態1にかかるプロセッサ10の構成を示すブロック図である。プロセッサ10は、パイプライン処理に基づき、主記憶装置7から各種命令を読み出し、当該命令を実行する。主記憶装置7は、例えば、RAM(Random Access Memory)等の記憶装置である。プロセッサ10は、少なくとも命令発行部11と、データ取得部12と、判定部13と、ベクトルロード管理部14と、ベクトルレジスタ15とを備える。
図3は、本発明の実施の形態2にかかるベクトル処理装置の構成を示すブロック図である。本発明の実施の形態2にかかるベクトル処理装置は、プロセッサ1と、主記憶装置7とを含む。
続いて、本発明の実施の形態3にかかるベクトル処理装置は、実施の形態2にかかるベクトルロード管理部65に変更を加えたものである。すなわち、本発明の実施の形態3にかかるベクトルロード管理部65aは、分岐予測が失敗したと判定された以後に、メモリアクセス処理部3による未発行のメモリアクセスリクエストの発行を停止するものである。これにより、投機的に実行されたベクトルロード命令について、主記憶装置7からベクトルデータを取得中に分岐予測の失敗となった場合に、以後のベクトルデータの取得を行わず、ライト部653は、ロードバッファ64への書込みも行わない。そのため、実施の形態2に比べてより投機的に実行されたベクトルロード命令の停止を行うことができる。よって、処理の効率化を図ることができる。そこで、以下では、実施の形態2との違いを中心に説明する。また、本発明の実施の形態3のその他の構成は、実施の形態2と同等であるため、同一の符号を付し、詳細な説明を省略する。
本発明によるベクトルロード命令の投機実行方法は、分岐予測結果を待たずにベクトルロード命令を投機的に実行する事により、分岐予測が成功した際のロード命令によるメモリアクセスのレイテンシを隠蔽する事で性能を向上させることができる。また、分岐予測が失敗した場合に、投機的に実行したベクトルロード命令によるロードデータをベクトルレジスタに格納せずに廃棄する事により、誤ったデータによりベクトル命令の実行を防止することができる。
2 命令制御部
21 命令解読部
22 スカラ処理部
3 メモリアクセス処理部
31 ロードバッファ管理部
4 プロセッサネットワーク部
5 ベクトル制御部
6 ベクトル処理部
61 ベクトルパイプライン演算器
62 ベクトルレジスタ
63 ベクトル演算器
64 ロードバッファ
65 ベクトルロード管理部
65a ベクトルロード管理部
651 レジスタ群
651−0 レジスタ
651−1 レジスタ
651−n レジスタ
651a レジスタ群
651a−0 レジスタ
651a−1 レジスタ
651a−n レジスタ
6511 ロードバッファ番号フィールド
6512 分岐レベルフィールド
6513 キャンセルフラグフィールド
6514 ベクトルレジスタ番号フィールド
6515 ライト要素数フィールド
6516 リード要素数フィールド
6517 使用可否フラグフィールド
6518 要素数フィールド
6519 要素数カウンタフィールド
652 レジスタ設定部
652a レジスタ設定部
653 ライト部
653a ライト部
654 リード部
66 クルスパスイッチ
7 主記憶装置
101 信号線
102 信号線
103 信号線
104 信号線
105 信号線
106 信号線
107 信号線
108 信号線
109 信号線
110 信号線
10 プロセッサ
11 命令発行部
12 データ取得部
13 判定部
14 ベクトルロード管理部
15 ベクトルレジスタ
Claims (6)
- 分岐命令における分岐先の分岐予測に基づき、主記憶装置から読み出されたベクトルロード命令を発行する命令発行部と、
前記発行されたベクトルロード命令に基づく複数のベクトルデータを前記主記憶装置から取得するための複数の取得要求の発行を開始するデータ取得部と、
前記ベクトルロード命令に基づくベクトル演算に用いられるベクトルデータを保持するベクトルレジスタと、
前記分岐命令による分岐先が確定した後に、前記分岐予測の成否を判定する判定部と、
前記判定部により、前記分岐予測が成功したと判定された場合、前記複数の取得要求に基づく全てのベクトルデータを取得し終えた後に、前記ベクトルレジスタに対して当該全てのベクトルデータを転送し、前記分岐予測が失敗したと判定された場合、前記データ取得部により発行された取得要求により取得されたベクトルデータを廃棄するベクトルロード管理部と、
を備え、
前記発行されたベクトルロード命令以前に複数の分岐命令が存在し、
前記ベクトルロード管理部は、前記分岐予測の成否の判定結果を記憶するための記憶部を備え、
前記判定結果は、分岐先が未確定である分岐命令数を示す分岐情報と、前記分岐予測が失敗したことを示す予測失敗情報とからなり、
前記命令発行部は、前記ベクトルロード命令を発行する際に、当該ベクトルロード命令以前の分岐命令数を前記ベクトルロード管理部へ通知し、
前記判定部は、前記複数の分岐命令のそれぞれに対応する分岐先が確定する度に、前記分岐予測の成否を判定し、
前記ベクトルロード管理部は、
前記命令発行部から通知された分岐命令数を前記分岐情報として前記記憶部へ格納し、
前記判定部により前記分岐予測の成否が判定される度に、前記記憶部に記憶された判定結果を更新し、
前記判定部により前記分岐予測が成功したと判定された場合、前記記憶部に格納された分岐情報を減算し、
前記判定部により前記分岐予測が失敗したと判定された場合、前記記憶部に格納された予測失敗情報を有効と更新し、
前記判定部により全ての分岐命令における前記分岐予測の判定が完了し、かつ、前記全てのベクトルデータを取得し終えた後に、前記記憶部に記憶された前記分岐情報が0であり、かつ、前記予測失敗情報が無効である場合に、前記全てのベクトルデータを転送し、
前記予測失敗情報が有効である場合に、前記データ取得部により発行された取得要求により取得されたベクトルデータを廃棄する、
プロセッサ。 - 前記ベクトルロード管理部は、
前記複数の取得要求により取得された複数のベクトルデータを保持するロードバッファをさらに備え、
前記取得要求によりベクトルデータが取得される度に、当該取得されたベクトルデータを前記ロードバッファへ格納し、
前記判定部により前記分岐予測が成功したと判定された場合、前記ロードバッファに格納された全てのベクトルデータを、前記ベクトルレジスタへ転送し、その後、当該ロードバッファを解放し、
前記判定部により前記分岐予測が失敗したと判定された場合、前記ロードバッファを解放する
ことを特徴とする請求項1に記載のプロセッサ。 - 前記ベクトルロード管理部は、
前記判定部により前記分岐予測が失敗したと判定された以後に、前記データ取得部による未発行の取得要求の発行を停止する
ことを特徴とする請求項2に記載のプロセッサ。 - プロセッサが、
分岐命令における分岐先の分岐予測に基づき、主記憶装置から読み出されたベクトルロード命令を発行し、
前記発行されたベクトルロード命令に基づく複数のベクトルデータを前記主記憶装置から取得するための複数の取得要求の発行を開始し、
前記分岐命令による分岐先が確定した後に、前記分岐予測の成否を判定し、
前記分岐予測が成功したと判定された場合、前記複数の取得要求に基づく全てのベクトルデータを取得し終えた後に、前記ベクトルロード命令に基づくベクトル演算に用いられるベクトルレジスタに対して当該全てのベクトルデータを転送し、
前記分岐予測が失敗したと判定された場合、前記発行された取得要求により取得されたベクトルデータを廃棄するベクトルロード命令の実行方法であって、
前記発行されたベクトルロード命令以前に複数の分岐命令が存在し、
前記プロセッサは、前記分岐予測の成否の判定結果を記憶するための記憶部を備え、
前記判定結果は、分岐先が未確定である分岐命令数を示す分岐情報と、前記分岐予測が失敗したことを示す予測失敗情報とからなり、
前記プロセッサが、
前記ベクトルロード命令を発行する際に、当該ベクトルロード命令以前の分岐命令数を通知し、
前記通知された分岐命令数を前記分岐情報として前記記憶部へ格納し、
前記複数の分岐命令のそれぞれに対応する分岐先が確定する度に、前記分岐予測の成否を判定し、
前記分岐予測の成否が判定される度に、前記記憶部に記憶された判定結果を更新し、
前記分岐予測が成功したと判定された場合、前記記憶部に格納された分岐情報を減算し、
前記分岐予測が失敗したと判定された場合、前記記憶部に格納された予測失敗情報を有効と更新し、
全ての分岐命令における前記分岐予測の判定が完了し、かつ、前記全てのベクトルデータを取得し終えた後に、前記記憶部に記憶された前記分岐情報が0であり、かつ、前記予測失敗情報が無効である場合に、前記全てのベクトルデータを転送し、
前記予測失敗情報が有効である場合に、前記取得要求により取得されたベクトルデータを廃棄する、
ベクトルロード命令の実行方法。 - 前記プロセッサが、
前記取得要求によりベクトルデータが取得される度に、前記複数の取得要求により取得された複数のベクトルデータを保持するロードバッファへ、当該取得されたベクトルデータを格納し、
前記分岐予測が成功したと判定された場合、前記ロードバッファに格納された全てのベクトルデータを、前記ベクトルレジスタへ転送し、その後、当該ロードバッファを解放し、
前記分岐予測が失敗したと判定された場合、前記ロードバッファを解放する
ことを特徴とする請求項4に記載のベクトルロード命令の実行方法。 - 前記プロセッサが、
前記分岐予測が失敗したと判定された以後に、未発行の前記取得要求の発行を停止する
ことを特徴とする請求項5に記載のベクトルロード命令の実行方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010229362A JP5240270B2 (ja) | 2010-10-12 | 2010-10-12 | プロセッサ及びベクトルロード命令の実行方法 |
US13/240,614 US8850167B2 (en) | 2010-10-12 | 2011-09-22 | Loading/discarding acquired data for vector load instruction upon determination of prediction success of multiple preceding branch instructions |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010229362A JP5240270B2 (ja) | 2010-10-12 | 2010-10-12 | プロセッサ及びベクトルロード命令の実行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012083937A JP2012083937A (ja) | 2012-04-26 |
JP5240270B2 true JP5240270B2 (ja) | 2013-07-17 |
Family
ID=45926040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010229362A Expired - Fee Related JP5240270B2 (ja) | 2010-10-12 | 2010-10-12 | プロセッサ及びベクトルロード命令の実行方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8850167B2 (ja) |
JP (1) | JP5240270B2 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013095608A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Apparatus and method for vectorization with speculation support |
JP5648645B2 (ja) * | 2012-03-02 | 2015-01-07 | 日本電気株式会社 | ベクトル処理装置、ベクトルロード命令実行方法、及びベクトルロード命令実行プログラム |
US11768689B2 (en) | 2013-08-08 | 2023-09-26 | Movidius Limited | Apparatus, systems, and methods for low power computational imaging |
US10001993B2 (en) | 2013-08-08 | 2018-06-19 | Linear Algebra Technologies Limited | Variable-length instruction buffer management |
WO2016016726A2 (en) * | 2014-07-30 | 2016-02-04 | Linear Algebra Technologies Limited | Vector processor |
CN105335130B (zh) | 2015-09-28 | 2018-06-26 | 深圳市中兴微电子技术有限公司 | 一种处理器及其处理任务的方法 |
US20170177351A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Even and Odd Vector Get Operations |
JP6849949B2 (ja) * | 2017-03-21 | 2021-03-31 | 日本電気株式会社 | メモリアクセス装置、命令制御方法、プログラム、情報処理装置 |
US10620961B2 (en) * | 2018-03-30 | 2020-04-14 | Intel Corporation | Apparatus and method for speculative conditional move operation |
GB2573119A (en) | 2018-04-24 | 2019-10-30 | Advanced Risc Mach Ltd | Maintaining state of speculation |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6119203A (en) * | 1998-08-03 | 2000-09-12 | Motorola, Inc. | Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system |
US6813701B1 (en) * | 1999-08-17 | 2004-11-02 | Nec Electronics America, Inc. | Method and apparatus for transferring vector data between memory and a register file |
JP3726092B2 (ja) * | 2003-07-04 | 2005-12-14 | エヌイーシーコンピュータテクノ株式会社 | ベクトル処理装置およびベクトルロード方法 |
US7334110B1 (en) * | 2003-08-18 | 2008-02-19 | Cray Inc. | Decoupled scalar/vector computer architecture system and method |
JP4687729B2 (ja) * | 2008-03-04 | 2011-05-25 | 日本電気株式会社 | キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法 |
JP4789269B2 (ja) * | 2008-04-10 | 2011-10-12 | エヌイーシーコンピュータテクノ株式会社 | ベクトル処理装置及びベクトル処理方法 |
JP4868255B2 (ja) * | 2008-09-24 | 2012-02-01 | 日本電気株式会社 | プロセッサ、プロセッサの制御方法及び情報処理装置 |
-
2010
- 2010-10-12 JP JP2010229362A patent/JP5240270B2/ja not_active Expired - Fee Related
-
2011
- 2011-09-22 US US13/240,614 patent/US8850167B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US8850167B2 (en) | 2014-09-30 |
US20120089824A1 (en) | 2012-04-12 |
JP2012083937A (ja) | 2012-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5240270B2 (ja) | プロセッサ及びベクトルロード命令の実行方法 | |
EP1224557B1 (en) | Store to load forwarding using a dependency link file | |
JP5548037B2 (ja) | 命令発行制御装置及び方法 | |
KR20190049743A (ko) | 메모리 위반 예측 | |
US10572179B2 (en) | Speculatively performing memory move requests with respect to a barrier | |
US20050198480A1 (en) | Apparatus and method of controlling instruction fetch | |
JP2007536626A (ja) | ロードオペレーションの投機的な結果をレジスタ値にリンクするメモリファイルを検証するためのシステムおよび方法 | |
WO1995016954A1 (fr) | Circuit de traitement d'instructions dans un systeme informatique | |
US20030182536A1 (en) | Instruction issuing device and instruction issuing method | |
US10606600B2 (en) | Fetched data in an ultra-short piped load store unit | |
JP2003029986A (ja) | プロセッサ間レジスタ継承方法及びその装置 | |
JPWO2008155834A1 (ja) | 処理装置 | |
US20180052605A1 (en) | Memory access in a data processing system utilizing copy and paste instructions | |
US8793435B1 (en) | Load miss result buffer with shared data lines | |
US8806135B1 (en) | Load store unit with load miss result buffer | |
US7725659B2 (en) | Alignment of cache fetch return data relative to a thread | |
WO2013101031A1 (en) | Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses | |
US10996954B2 (en) | Calculation processing apparatus and method for controlling calculation processing apparatus | |
JP2012128656A (ja) | ベクトル演算処理装置、ベクトル演算処理方法およびベクトル演算処理プログラム | |
JP5440083B2 (ja) | シミュレーション装置、方法およびプログラム | |
JP5093237B2 (ja) | 命令処理装置 | |
JP3726092B2 (ja) | ベクトル処理装置およびベクトルロード方法 | |
US20040128476A1 (en) | Scheme to simplify instruction buffer logic supporting multiple strands | |
US11550589B2 (en) | Inhibiting load instruction execution based on reserving a resource of a load and store queue but failing to reserve a resource of a store data queue | |
JP5648645B2 (ja) | ベクトル処理装置、ベクトルロード命令実行方法、及びベクトルロード命令実行プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120918 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121119 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121211 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130207 |
|
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: 20130305 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130318 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20160412 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 5240270 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |