JP4996654B2 - プロセッサ - Google Patents
プロセッサ Download PDFInfo
- Publication number
- JP4996654B2 JP4996654B2 JP2009189249A JP2009189249A JP4996654B2 JP 4996654 B2 JP4996654 B2 JP 4996654B2 JP 2009189249 A JP2009189249 A JP 2009189249A JP 2009189249 A JP2009189249 A JP 2009189249A JP 4996654 B2 JP4996654 B2 JP 4996654B2
- Authority
- JP
- Japan
- Prior art keywords
- slot
- data
- register
- calculator
- instruction
- 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
- 238000004364 calculation method Methods 0.000 claims description 39
- 230000014509 gene expression Effects 0.000 description 12
- 238000000034 method Methods 0.000 description 8
- 101000911772 Homo sapiens Hsc70-interacting protein Proteins 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 101001139126 Homo sapiens Krueppel-like factor 6 Proteins 0.000 description 5
- 101000585359 Homo sapiens Suppressor of tumorigenicity 20 protein Proteins 0.000 description 4
- 102100029860 Suppressor of tumorigenicity 20 protein Human genes 0.000 description 4
- 238000013500 data storage Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000006870 function 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
Description
一方、SIMD演算命令のみが実行可能なマイクロプロセッサもある。そのようなプロセッサの場合、スカラー演算の実行は、SIMD演算命令により行われるが、SIMD演算命令によりスカラー演算を実行させるときに、不要な回路要素も動作するため、不必要な電力を消費してしまうという問題があった。
(構成)
まず図1に基づき、本実施の形態に係わるプロセッサの構成を説明する。図1は、本実施の形態に係わるプロセッサの構成を説明するためのブロック図である。
図2に示すように、演算器21は、実行命令により指定されたレジスタファイル22の1又は2以上のレジスタ(すなわちソースレジスタ)31のデータを入力して、所定の数のステージ(ここでは3つのステージ)を経て、実行命令に基づく所定の演算を実行し、その演算結果を、実行命令により指定されたレジスタファイル22の1又は2以上のレジスタ(すなわちデスティネーションレジスタ)32に書き込む。演算対象データと演算結果データが、レジスタファイル22に記憶される。
ステージ3のスロット演算器ST30の演算結果は、実行命令により指定されたデスティネーションレジスタ32に第1スロットのデータとして書き込まれる。ステージ3のスロット演算器ST31からST33の演算結果は、それぞれ、セレクタSL1からSL3を介して、レジスタファイル22のデスティネーションレジスタ32の第2から第4スロットに書き込まれる。
イネーブル生成部41は、ディスエーブルするスロット演算器のディスエーブル端子に、ディスエーブル信号として比較データを供給する。
また、イネーブル生成部41からの比較データは、各ステージの第2,第3及び第4スロット演算器にも供給される。
そして、上述したように、レジスタファイル22は、演算対象データ及び演算結果データを記憶する複数のレジスタに対応する比較データを記憶する比較データレジスタ33を複数有するレジスタ群である。
イネーブル生成部(enable gen.)41は、演算器21において演算を行うときに、例えばソースレジスタとして2つのレジスタ番号が指定され、それらのレジスタからデータを読み出す場合に、第2から第4のスロット演算器を有効(enable)あるいは無効(disable)にする。イネーブル生成部41は、スロット演算器制御部を構成し、ディスエーブルするスロット演算器へディスエーブル信号を供給可能となっている。
レジスタ番号0と1の2つのソースレジスタrs0,rs1のデータを読み出して、演算を実行する場合、第1から第4の各スロット演算器は、イネーブルあるいはディスエーブルされる。そのイネーブルにするかディスエーブルするかは、次の式で表される。下記の式において、inst_validはそのサイクルで有効な命令が供給されたことを示す。s0_valid, s1_validは、それぞれその有効な命令をデコードした結果、ソースレジスタとしてレジスタrs0, rs1をそれぞれ使用する命令であることを示す。
slot1: enable[1] := inst_valid AND((s0_valid AND !sl0eqsl1[rs0]) OR (s1_valid AND !sl0eqsl1[rs1]) ); ・・・式(2)
slot2: enable[2] := inst_valid AND((s0_valid AND !sl0eqsl2[rs0]) OR (s1_valid AND !sl0eqsl2[rs1]) ); ・・・式(3)
slot3: enable[3] := inst_valid AND((s0_valid AND !sl0eqsl3[rs0]) OR (s1_valid AND !sl0eqsl3[rs1]) ); ・・・式(4)
すなわち、式(1)は、第1のスロット演算器(すなわちプリファードスロットの演算器)ST10,ST20,ST30は、命令が有効な命令であれば、イネーブルとなり、命令が無効なときは、ディスエーブルとなることを示している。
また、演算に使用されるソースレジスタは、実行命令において指定されるので、上記の式において、レジスタ番号の部分は、命令に応じて変化する。
比較データ記憶部としてのイコール生成部42は、SIMD演算の演算結果データを、レジスタファイル22のデスティネーションレジスタ32に書き込む時、対応する比較データレジスタ33に比較データも書き込んで記憶させる。すなわち、比較データレジスタ33には、各スロットのデータの比較結果が記録される。
下記の式(5)に示すように、デスティネーションレジスタ32のレジスタ番号をrdとし、第1から第4スロットのデータをslot0からslot3とし、デスティネーションレジスタrdの比較データEB1からEB3を、それぞれsl0eqsl1[rd]、sl0eqsl2[rd]、sl0eqsl3[rd]とする。デスティネーションレジスタrdの比較データEB1からEB3は、それぞれ次の式(6)から式(8)で示すものとして、記録される。enable[1], enable[2], enable[3]は、それぞれ、イネーブル生成部41の出力が、命令の演算と共にパイプライン処理部の各ステージを通って供給される信号であり、そのスロット演算器がイネーブル(有効)であることを示し、!enable[1], !enable[2], !enable[3]は、それぞれ、そのスロット演算器がディスエーブル(動作停止)であることを示す。
sl0eqsl1[rd] := ( (slot0 == slot1) AND enable[1] ) OR !enable[1]; ・・・式(6)
sl0eqsl2[rd] := ( (slot0 == slot2) AND enable[2] ) OR !enable[2]; ・・・式(7)
sl0eqsl3[rd] := ( (slot0 == slot3) AND enable[3] ) OR !enable[3]; ・・・式(8)
ここで、式(6)は、第2スロット演算器が有効なときに第1スロット(プリファードスロット)のデータと第2スロットのデータが等しい場合( (slot0 == slot1) AND enable[1] )、あるいは第2スロット演算器がディスエーブル(無効)の場合(!enable[1])は、sl0eqsl1[rd](すなわちデスティネーションレジスタrdの比較データEB1)は、「1」とすることを意味する。それ以外の場合は、比較データEB1は、「0」となる。式(7)と式(8)も同様の意味である。
register_file[rd].slot1 := enable[1] ? slot1 : slot0; ・・・式(10)
register_file[rd].slot2 := enable[2] ? slot2 : slot0; ・・・式(11)
register_file[rd].slot3 := enable[3] ? slot3 : slot0; ・・・式(12)
この処理は、比較データレジスタ33の各値を、対応するセレクタの選択信号として利用することによって、実行される。図2に示すように、例えば、比較データEB1が「1」である(すなわち第2のスロット演算器がディスエーブルである)とき、プリファードスロットSL0の値を選択して出力する。また、比較データEB1が「0」である(すなわち第2のスロット演算器がイネーブルである)ときは、第2のスロット演算器の出力を選択して、書き戻す。
すなわち、ディスエーブルされた1又は2以上のスロット演算器の出力として、プリファードスロットの値が利用される。
上述した例では、演算結果をレジスタファイル22に書き戻すときに、第1スロットと同じデータのスロットには、第1スロットのデータを選択して出力して、レジスタファイル22に書き戻していた。
変形例に係るプロセッサは、読み出したソースレジスタ31の比較データの各ビットに応じて、第2から第4スロット演算器ST11,ST12,ST13がプリファードスロットのデータあるいは対応するスロットデータを選択するように動作する。
さらに、比較対象スロットは、1つのスロットだけでなくでもよく、例えば、全てのスロット同士の比較を行うようにしてもよい。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
Claims (4)
- SIMD演算のための複数のスロットを含む1以上の演算対象データの各スロットに対応して設けられた複数のスロット演算器と、
前記1以上の演算対象データのそれぞれにおいて、所定のスロットの値と前記所定のスロット以外のスロットの値とを比較し、前記所定のスロットの値と等しい値が入力される1以上のスロット演算器をディスエーブルにするスロット演算器制御部と、
を有し、ディスエーブルされた前記1以上のスロット演算器の値として、前記所定のスロットの値が出力されることを特徴とするプロセッサ。 - 前記比較の結果である比較データは、前記1以上の演算対象データと演算結果データを記憶するレジスタファイルの一部のレジスタに記憶されることを特徴とする請求項1に記載のプロセッサ。
- 前記所定のスロットの値は、前記複数のスロット演算器による前記演算結果データが前記レジスタファイルへ出力される時に、ディスエーブルされた前記1以上のスロット演算器の出力データとして、出力されることを特徴とする請求項2に記載のプロセッサ。
- 前記1以上のスロット演算器のディスエーブルは、ディスエーブルするスロット演算器へのクロックの供給を停止することによって行われることを特徴とする請求項1から請求項3のいずれか1つに記載のプロセッサ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009189249A JP4996654B2 (ja) | 2009-08-18 | 2009-08-18 | プロセッサ |
US12/723,031 US8429380B2 (en) | 2009-08-18 | 2010-03-12 | Disabling redundant subfunctional units receiving same input value and outputting same output value for the disabled units in SIMD processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009189249A JP4996654B2 (ja) | 2009-08-18 | 2009-08-18 | プロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011039982A JP2011039982A (ja) | 2011-02-24 |
JP4996654B2 true JP4996654B2 (ja) | 2012-08-08 |
Family
ID=43606216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009189249A Expired - Fee Related JP4996654B2 (ja) | 2009-08-18 | 2009-08-18 | プロセッサ |
Country Status (2)
Country | Link |
---|---|
US (1) | US8429380B2 (ja) |
JP (1) | JP4996654B2 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10175981B2 (en) | 2013-07-09 | 2019-01-08 | Texas Instruments Incorporated | Method to control the number of active vector lanes for power efficiency |
US10732689B2 (en) | 2013-07-09 | 2020-08-04 | Texas Instruments Incorporated | Controlling the number of powered vector lanes via a register field |
US11055097B2 (en) * | 2013-10-08 | 2021-07-06 | Nvidia Corporation | Dynamically detecting uniformity and eliminating redundant computations to reduce power consumption |
US9323525B2 (en) * | 2014-02-26 | 2016-04-26 | Intel Corporation | Monitoring vector lane duty cycle for dynamic optimization |
US9817466B2 (en) | 2014-04-17 | 2017-11-14 | Arm Limited | Power saving by reusing results of identical micro-operations |
US9933841B2 (en) | 2014-04-17 | 2018-04-03 | Arm Limited | Reuse of results of back-to-back micro-operations |
GB2525262B (en) * | 2014-04-17 | 2021-06-02 | Advanced Risc Mach Ltd | Sharing processing results between different processing lanes of a data processing apparatus |
US10514928B2 (en) * | 2014-04-17 | 2019-12-24 | Arm Limited | Preventing duplicate execution by sharing a result between different processing lanes assigned micro-operations that generate the same result |
US10360177B2 (en) * | 2016-06-22 | 2019-07-23 | Ati Technologies Ulc | Method and processing apparatus for gating redundant threads |
US11675591B2 (en) * | 2018-10-31 | 2023-06-13 | Advanced Micro Devices, Inc. | Selectively enabled result lookaside buffer based on a hit rate |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4843540A (en) * | 1986-09-02 | 1989-06-27 | The Trustees Of Columbia University In The City Of New York | Parallel processing method |
JP2000293357A (ja) * | 1999-04-06 | 2000-10-20 | Hitachi Ltd | マイクロプロセッサ |
US6839828B2 (en) * | 2001-08-14 | 2005-01-04 | International Business Machines Corporation | SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode |
US7644255B2 (en) * | 2005-01-13 | 2010-01-05 | Sony Computer Entertainment Inc. | Method and apparatus for enable/disable control of SIMD processor slices |
US20060190700A1 (en) * | 2005-02-22 | 2006-08-24 | International Business Machines Corporation | Handling permanent and transient errors using a SIMD unit |
US7694114B2 (en) * | 2005-06-09 | 2010-04-06 | Qualcomm Incorporated | Software selectable adjustment of SIMD parallelism |
US7836284B2 (en) * | 2005-06-09 | 2010-11-16 | Qualcomm Incorporated | Microprocessor with automatic selection of processing parallelism mode based on width data of instructions |
-
2009
- 2009-08-18 JP JP2009189249A patent/JP4996654B2/ja not_active Expired - Fee Related
-
2010
- 2010-03-12 US US12/723,031 patent/US8429380B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2011039982A (ja) | 2011-02-24 |
US20110047349A1 (en) | 2011-02-24 |
US8429380B2 (en) | 2013-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4996654B2 (ja) | プロセッサ | |
US10216693B2 (en) | Computer with hybrid Von-Neumann/dataflow execution architecture | |
US8918627B2 (en) | Multithreaded processor with multiple concurrent pipelines per thread | |
KR101183651B1 (ko) | 실행 유닛 내의 데이터 전달을 위한 시스템 및 방법 | |
JP2011118743A (ja) | ベクトル型計算機及びベクトル型計算機の命令制御方法 | |
JP3449186B2 (ja) | パイプラインバイパス機能を有するデータ処理装置 | |
JPH02226420A (ja) | 浮動小数点演算実行装置 | |
US7805590B2 (en) | Coprocessor receiving target address to process a function and to send data transfer instructions to main processor for execution to preserve cache coherence | |
JP4985452B2 (ja) | ベクトル処理装置 | |
TW201823972A (zh) | 向量產生指令 | |
US20070300042A1 (en) | Method and apparatus for interfacing a processor and coprocessor | |
JP4800582B2 (ja) | 演算処理装置 | |
KR100636596B1 (ko) | 고에너지 효율 병렬 처리 데이터 패스 구조 | |
JP2008242947A (ja) | 半導体装置 | |
US6772318B1 (en) | Bypass control circuit | |
JP3461887B2 (ja) | 可変長パイプライン制御装置 | |
JP4228639B2 (ja) | ウエイト制御方法、マイクロコンピュータ、バスコントローラ | |
JP3759742B2 (ja) | データ処理装置 | |
JP4208149B2 (ja) | プロセッサの効率的な制御をするための方法及び装置 | |
JP3524240B2 (ja) | 並列命令処理装置 | |
JP2004303058A (ja) | ベクトルプロセッサおよびそのデータ処理方法 | |
JPH06139071A (ja) | 並列計算機 | |
JP2000305782A (ja) | 演算装置 | |
JPH08263290A (ja) | データ処理装置 | |
JP2006139644A (ja) | プロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110804 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111213 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120210 |
|
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: 20120417 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120511 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150518 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150518 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |