JP4996654B2 - プロセッサ - Google Patents

プロセッサ Download PDF

Info

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
Application number
JP2009189249A
Other languages
English (en)
Other versions
JP2011039982A (ja
Inventor
宏雄 林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2009189249A priority Critical patent/JP4996654B2/ja
Priority to US12/723,031 priority patent/US8429380B2/en
Publication of JP2011039982A publication Critical patent/JP2011039982A/ja
Application granted granted Critical
Publication of JP4996654B2 publication Critical patent/JP4996654B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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演算命令が追加され、SIMD演算を実行可能としている。
一方、SIMD演算命令のみが実行可能なマイクロプロセッサもある。そのようなプロセッサの場合、スカラー演算の実行は、SIMD演算命令により行われるが、SIMD演算命令によりスカラー演算を実行させるときに、不要な回路要素も動作するため、不必要な電力を消費してしまうという問題があった。
そこで、SIMD演算命令のみが実行可能なマイクロプロセッサに、スカラー演算命令を追加する技術が提案されている(例えば、特許文献1参照)。
あるいは、演算モードを切り換えるモード切替機能をマイクロプロセッサに設ける技術が提案されている(例えば、特許文献2,3,4参照)。
しかし、マイクロプロセッサにスカラー演算命令を追加する場合、限られた命令コード体系の中でスカラー演算命令を定義して使用するために、命令コードを消費してしまうという問題と、既に作成されたソフトウエアプログラムには容易に対応できないという問題がある。
また、スカラー演算とSIMD演算の2つのモードを切り換えるために、モード切替命令あるいはモード設定レジスタを用意あるいは設けなければならず、さらにコンテキスト切り換え時にモード情報の保存も必要となるため、オペレーティングシステム(OS)の変更も必要となるという問題があった。
米国特許第6839828号明細書 米国特許出願公開第2006/0155964号明細書 米国特許出願公開第2006/0282646号明細書 米国特許出願公開第2006/0282826号明細書
そこで、本発明は、命令コード体系に命令の追加をすることなく、モード切り換え等もする必要なく、低消費電力でスカラー演算も容易に実行可能なSIMD演算を実行可能なマイクロプロセッサを提供することを目的とする。
本発明の一態様によれば、SIMD演算のための複数のスロットを含む1以上の演算対象データの各スロットに対応して設けられた複数のスロット演算器と、前記1以上の演算対象データのそれぞれにおいて、所定のスロットの値と前記所定のスロット以外のスロットの値とを比較し、前記所定のスロットの値と等しい値が入力される1以上のスロット演算器をディスエーブルにするスロット演算器制御部とを有し、ディスエーブルされた前記1以上のスロット演算器の値として、前記所定のスロットの値が出力されるプロセッサを提供することができる。
本発明によれば、命令コード体系に命令の追加をすることなく、モード切り換え等もする必要なく、低消費電力でスカラー演算も容易に実行可能なSIMD演算を実行可能なマイクロプロセッサを実現することができる。
本発明の実施の形態に係わるプロセッサの構成を説明するためのブロック図である。 本発明の実施の形態に係わる演算器21の構成例を説明するためのブロック図である。 本発明の実施の形態に係わるレジスタファイル22の構成を説明するための図である。 本発明の実施の形態の変形例に係る回路を説明するための図である。
以下、図面を参照して本発明の実施の形態を説明する。
(構成)
まず図1に基づき、本実施の形態に係わるプロセッサの構成を説明する。図1は、本実施の形態に係わるプロセッサの構成を説明するためのブロック図である。
図1に示すように、本実施の形態に係るプロセッサ1は、バス2に接続され、演算部11と、記憶部としてのローカルメモリ12とを含み、後述するようにSIMD演算用の複数のスロット演算器を有するプロセッサである。演算部11は、演算器21と、汎用レジスタ群であるレジスタファイル22とを含む。プロセッサ1は、図示しないROM,RAM等とはバス2を介して接続され、バス2を介して、命令及びデータを読み出し、ローカルメモリ42を用いて、命令により指定されたデータを用いて所定の演算を実行する。
なお、本実施の形態では、プロセッサ1は、半導体チップ上に1つだけが設けられ、ローカルメモリ42を有する例を説明するが、半導体チップ上に、プロセッサ1が複数設けられ、互いにバス2を介して接続されていてもよいし、また、プロセッサ1がローカルメモリ12を有していなくてもよい。
図2は、演算器21の構成例を説明するためのブロック図である。演算器21は、演算対象データの各スロットに対応して設けられた複数のスロット演算器ST10からST33を含む。
図2に示すように、演算器21は、実行命令により指定されたレジスタファイル22の1又は2以上のレジスタ(すなわちソースレジスタ)31のデータを入力して、所定の数のステージ(ここでは3つのステージ)を経て、実行命令に基づく所定の演算を実行し、その演算結果を、実行命令により指定されたレジスタファイル22の1又は2以上のレジスタ(すなわちデスティネーションレジスタ)32に書き込む。演算対象データと演算結果データが、レジスタファイル22に記憶される。
実行命令に基づいて、後述するように、各ステージの各スロット演算器を有効にするか否かが指定され、ソースレジスタ31の各スロットに対する演算が実行される。
本実施の形態では、SIMD演算の演算対象データは、128ビットであり、演算対象データは、それぞれが32ビットデータの4つのスロットを含む例で説明するが、演算器21は、例えば128ビット幅のレジスタファイルの場合、32ビット×4だけでなく、64ビット×2等のSIMD演算器であってもよく、さらに、32ビット×8等の、ビット幅の異なる演算器でもよい。
演算器21には、実行命令において指定されたレジスタファイル22中のレジスタ番号のレジスタ(すなわちソースレジスタ)のデータが入力される。各ステージの4つのスロット演算器は、各スロットに対応して設けられ、各スロット演算器には、対応するスロットからのデータが入力される。また、各スロット演算器は、ディスエーブル可能な演算器、すなわち演算実行の停止可能な演算器である。
128ビット中の4つのスロットのデータが、ステージ1のそれぞれ4つのスロット演算器ST10〜ST13に入力される。128ビット中の第1スロット(以下、プリファードスロットともいう)のデータは、スロット演算器ST10に入力され、第2スロット、第3スロット及び第4スロットのデータは、それぞれスロット演算器ST11、スロット演算器ST12及びスロット演算器ST13に入力される。
ステージ1の4つのスロット演算器ST10〜ST13の演算結果は、それぞれ次のステージ2の4つのスロット演算器ST20〜ST23に入力される。同様に、ステージ2の4つのスロット演算器ST20〜ST23の演算結果は、それぞれ次のステージ3の4つのスロット演算器ST30〜ST33に入力される
ステージ3のスロット演算器ST30の演算結果は、実行命令により指定されたデスティネーションレジスタ32に第1スロットのデータとして書き込まれる。ステージ3のスロット演算器ST31からST33の演算結果は、それぞれ、セレクタSL1からSL3を介して、レジスタファイル22のデスティネーションレジスタ32の第2から第4スロットに書き込まれる。
また、後述する比較データレジスタ33のデータも演算器21に入力される。比較データレジスタ33は、ここでは、3つの比較データとして、3ビットデータを保持するレジスタであり、レジスタファイル22の一部である。
なお、本実施の形態では、比較データレジスタ33は、レジスタファイル22の一部として、各レジスタに対応して設けられているが、比較データレジスタ33は、レジスタファイル22とは別に設けられていてもよい。
ソースレジスタ31に対応する比較データレジスタ33の各データは、イネーブル生成部(enable gen.)41に供給される。
イネーブル生成部41は、ディスエーブルするスロット演算器のディスエーブル端子に、ディスエーブル信号として比較データを供給する。
イネーブル生成部41からの第1の比較データEB1は、ステージ1のスロット演算器ST11のディスエーブル端子に供給され、第2の比較データEB2は、ステージ1のスロット演算器ST12のディスエーブル端子に供給され、第3の比較データEB3は、イネーブル生成部41に供給される。
また、イネーブル生成部41からの比較データは、各ステージの第2,第3及び第4スロット演算器にも供給される。
さらに、命令が有効であることを示す命令有効ビットIVが、各ステージのスロット演算器ST10,ST20,ST30のディスエーブル端子に供給される。命令有効ビットIV (inst_valid)は、そのサイクルで有効な命令が供給されたことを示すビットである。従って、命令有効ビットIVが有効を示すときに、各ステージの演算が実行される。
ステージ3の第2から第4のスロット演算器ST31,ST32,ST33の出力は、それぞれセレクタSL1からSL3の一方の入力端子に供給される。また、プリファードスロットSL0の出力は、デスティネーションアドレス32の第1スロットと共に、セレクタSL1からSL3の他方の入力端子に供給される。
さらに、イネーブル生成部41の出力する第1の比較データEB1は、セレクト信号として、セレクタSL1に供給され、セレクタSL1は、第1の比較データEB1の値に応じて、2つの入力データのいずれか一方を選択して出力する。イネーブル生成部41の出力する第2と第3の比較データEB2,EB3も、それぞれ、セレクト信号として、セレクタSL2,SL3に供給され、セレクタSL2,SL3は、それぞれ第2と第3の比較データEB2,EB3の値に応じて、2つの入力データのいずれか一方を選択して出力する。
各セレクタは、入力された比較データの値が、「1」の場合は、プリファードスロットの出力を選択して、デスティネーションアドレス32の対応するスロットへ出力する。また、各セレクタは、入力された比較データの値が、「0」の場合は、入力されたスロット演算器の出力を選択して、デスティネーションアドレス32の対応するスロットへ出力する。
比較データ記憶部としてのイコール生成部(equal gen.)42には、比較データレジスタ33のデータと、ステージ3の第1から第4のスロット演算器ST30,ST31,ST32,ST33のデータとが入力される。
イコール生成部42は、ステージ3の第1スロット(すなわちプリファードスロット)のデータと、第2から第4のスロットのデータを比較する。イコール生成部42は、第1スロットと他のスロットのデータが同じであれば、デスティネーションアドレス32の比較データレジスタ33の対応する比較データを、ここでは「1」にする。イコール生成部42の生成する第1から第3の比較データEB1からEB3は、それぞれ、第2から第4のスロット演算器の出力がプリファードスロットの値と等しいか否かを示す比較データである。イコール生成部42は、演算器21の演算結果データに対応付けて、比較データをレジスタファイル22に記憶する。
例えば、プリファードスロットと第2スロットが同じデータであるとき、第1の比較データEB1を「1」にし、プリファードスロットと第2スロットが同じデータでないとき、第1の比較データEB1を「0」にする。同様に、第3と第4スロットのそれぞれについても、プロファードスロットと同じであるときには、比較データを「1」にし、同じでないときは、「0」にする。よって、プリファードスロットと第3スロットが同じデータであるとき、第2の比較データEB2を「1」にし、プリファードスロットと第3スロットが同じデータでないとき、第2の比較データEB2を「0」にする。そして、プリファードスロットと第4スロットが同じデータであるとき、第3の比較データEB3を「1」にし、プリファードスロットと第4スロットが同じデータでないとき、第3の比較データEB3を「0」にする。これらの比較データが、レジスタファイル22の一部のレジスタに記憶される。
図3は、レジスタファイル22の構成を説明するための図である。図3に示すように、レジスタファイル22は、それぞれが128ビットデータを格納可能な128個のレジスタ(レジスタ番号0から127)を含む。さらに、レジスタファイル22は、各レジスタに対応する比較データを格納可能な比較データレジスタ群33Aを有している。
レジスタファイル22は、例えば、所定のSIMD演算が、レジスタファイル22のレジスタ番号1と5のレジスタのデータを入力として、実行され、SIMD演算の演算結果データが、レジスタ番号10のレジスタに格納される、というように用いられる。あるいは、レジスタファイル22は、所定のSIMD演算が、レジスタ番号1のデータを入力として、実行され、SIMD演算の演算結果が、レジスタ番号10に格納される、というように用いられる。このように、レジスタファイル22の各レジスタは、SIMD演算の演算対象データを格納し、かつ演算結果データを格納するレジスタである。どの1つあるいは2以上のレジスタを入力データレジスタとし、どの1つあるいは2以上のレジスタを出力データレジスタとするかは、実行命令によって指定される。
そして、上述したように、レジスタファイル22は、演算対象データ及び演算結果データを記憶する複数のレジスタに対応する比較データを記憶する比較データレジスタ33を複数有するレジスタ群である。
(レジスタファイル22からのデータの読み出し時のイネーブル生成部の動作)
イネーブル生成部(enable gen.)41は、演算器21において演算を行うときに、例えばソースレジスタとして2つのレジスタ番号が指定され、それらのレジスタからデータを読み出す場合に、第2から第4のスロット演算器を有効(enable)あるいは無効(disable)にする。イネーブル生成部41は、スロット演算器制御部を構成し、ディスエーブルするスロット演算器へディスエーブル信号を供給可能となっている。
ここでは、イネーブル生成部41が、例えば、レジスタファイル22の2つのソースレジスタrs0,rs1のデータを読み出して、演算器21で所定の演算をする場合を例に挙げて説明する。
この例の場合、イネーブル生成部41は、次の式の内容を実行する論理回路により構成される。
レジスタ番号0と1の2つのソースレジスタrs0,rs1のデータを読み出して、演算を実行する場合、第1から第4の各スロット演算器は、イネーブルあるいはディスエーブルされる。そのイネーブルにするかディスエーブルするかは、次の式で表される。下記の式において、inst_validはそのサイクルで有効な命令が供給されたことを示す。s0_valid, s1_validは、それぞれその有効な命令をデコードした結果、ソースレジスタとしてレジスタrs0, rs1をそれぞれ使用する命令であることを示す。
slot0: enable[0] := inst_valid; ・・・式(1)
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は、命令が有効な命令であれば、イネーブルとなり、命令が無効なときは、ディスエーブルとなることを示している。
式(2)は、命令が有効であって(inst_valid)、さらにソースレジスタrs0が使用され、かつ第1スロットと第2スロットのデータが一致していない場合(s0_valid AND !sl0eqsl1[rs0])、あるいはソースレジスタrs1が使用され、かつ第1スロットと第2スロットのデータが一致していない場合(s1_valid AND !sl0eqsl1[rs1])には、第2のスロット演算器ST11はイネーブルとなり、それ以外の場合は、ディスエーブルとなることを示している。
式(3)は、第3のスロット演算器ST12がイネーブルとディスエーブルとなる場合を示し、式(4)は、第4のスロット演算器ST13がイネーブルとディスエーブルとなる場合を示している。
因みに、式(3)は、命令が有効であって(inst_valid)、さらにソースレジスタrs0が使用され、かつ第1スロットと第3スロットのデータが一致していない場合(s0_valid AND !sl0eqsl2[rs0])、あるいはソースレジスタrs1が使用され、かつ第1スロットと第3スロットのデータが一致していない場合(s1_valid AND !sl0eqsl2[rs1])には、第3のスロット演算器ST12はイネーブルとなり、それ以外の場合は、ディスエーブルとなることを示している。
式(4)は、命令が有効であって(inst_valid)、さらにソースレジスタrs0が使用され、かつ第1スロットと第4スロットのデータが一致していない場合(s0_valid AND !sl0eqsl3[rs0])、あるいはソースレジスタrs1が使用され、かつ第1スロットと第4スロットのデータが一致していない場合(s1_valid AND !sl0eqsl3[rs1])には、第3のスロット演算器ST13はイネーブルとなり、それ以外の場合は、ディスエーブルとなることを示している。
以上は、命令が、対象データが2つである命令(2 operand命令)を例としているが、命令は、対象データが1つである命令でもよく、さらに、対象データが3つである命令(3 operand命令)の場合は、式(2)から式(4)において、 ”OR (s2_valid AND !sl0eqslx[rs2])”(ここで、xは、1,2,3のいずれか) という条件の項が追加される。
また、演算に使用されるソースレジスタは、実行命令において指定されるので、上記の式において、レジスタ番号の部分は、命令に応じて変化する。
ステージ1における4つのスロット演算器ST10,ST11,S12,ST13への、イネーブル信号(enable[0:3])は、命令の演算と共にパイプライン処理部の各ステージを通って供給されてゆく。各スロット演算器をディスエーブルにする方法としては、クロックゲーティング技術等の公知の技術手法を用いて行われ、結果として、消費電力が削減される。
例えば、スロット演算器をディスエーブルにする方法としては、ディスエーブルするスロット演算器へのクロックの供給を停止、あるいは、各スロット演算器への入力されるデータを固定する、等の方法がある。
(データの比較結果の記録時のイコール生成部の動作)
比較データ記憶部としてのイコール生成部42は、SIMD演算の演算結果データを、レジスタファイル22のデスティネーションレジスタ32に書き込む時、対応する比較データレジスタ33に比較データも書き込んで記憶させる。すなわち、比較データレジスタ33には、各スロットのデータの比較結果が記録される。
上述したように、比較データレジスタ33の比較データEB1,EB2,EB3は、レジスタファイル22の対応するレジスタの第2から第4スロットSL1からSL3のデータが、プリファードスロットSL0のデータと一致するか否かを示すデータである。
イコール生成部42は、次の式の内容を実行する論理回路により構成される。
下記の式(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]は、それぞれ、そのスロット演算器がディスエーブル(動作停止)であることを示す。
register_file[rd] := { slot0, slot1, slot2, slot3 }; ・・・式(5)
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)も同様の意味である。
すなわち、イコール生成部42は、SIMD演算の演算器21の演算結果データをレジスタファイル22に格納するときに、各スロットのデータと共に、各スロットの値がプリファードスロットSL0の値と一致したときには「1」で、一致しないときに「0」の比較データを記録する。
なお、各スロットのデータ比較は、レジスタファイル22からのデータの読み出し時に行うことも可能であるが、回路遅延による性能劣化が発生するため、ここでは、各スロットのデータ比較は、回路遅延に比較的余裕がある、レジスタファイル22への演算結果データの書き込み時に行っている。
以上のように、イコール生成部42は、プリファードスロットに対応するスロット演算器の出力と、プリファードスロット以外のスロットに対応するスロット演算器の出力とを比較し、プリファードスロット以外のスロットの値がプリファードスロットの値と同じ(あるいは異なる)ことを示す比較データを、演算結果データに対応付けて記憶する。
さらに、イコール生成部42は、ディスエーブルされたスロット演算器に対応するスロットの値はプリファードスロットの値と同じであるとして、比較データを、演算結果データに対応付けて記憶する。すなわち、スロット演算器がディスエーブル(動作停止)の場合(!enable[1],[2],[3])も、そのスロット演算器に対応する比較データは、「1」とされる。
演算結果データをレジスタファイル22に書き戻すときすなわち出力するときに、ディスエーブルされたスロット演算器のデータは、第1スロット(プリファードスロット)のデータと等しいので、ディスエーブルされたスロット演算器の出力データとして、第1スロットのデータが書き込まれる。すなわち、デスティネーションアドレス32のデータは、次の式の通りとなる。
register_file[rd].slot0 := slot0; ・・・式(9)
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以上のスロット演算器の出力として、プリファードスロットの値が利用される。
以上のように、上述したプロセッサ1によれば、複数の要素データの演算を並列に行うSIMD演算を実行するとき、ある要素の入力データが、他の要素の入力データと同じ場合に、その要素についてスロット演算器をディスエーブルにし(すなわちスロット演算器による演算を行わず)、代わりに入力データが同じ要素の結果を使用することにより、プロセッサ1の低消費電力化が実現される。
また、上述したプロセッサ1は、スカラー演算時には、プリファードスロットのみが使用されて演算が行われるが、スカラー演算命令のときには、第2から第4のスロットに、プリファードスロットSL0のデータと同じデータを書き込むようにすれば、上述したプロセッサ1においてスカラー演算を実行するときも、低消費電力で実行可能となる。従来から、命令の中には、同じデータを他のレジスタに書き込む命令が存在するので、そのような命令を利用することにより、上述したプロセッサ1においてスカラー演算も容易に実行可能である。
(変形例)
上述した例では、演算結果をレジスタファイル22に書き戻すときに、第1スロットと同じデータのスロットには、第1スロットのデータを選択して出力して、レジスタファイル22に書き戻していた。
この変形例では、その同じデータの場合に、レジスタファイルに書き戻すときに第1スロットのデータを選択して書く代わりに、レジスタファイル22からデータを読み出すときに、比較データに基づいて、第1スロットのデータはスロット演算器に書き込まれる。
図4は、その変形例に係る回路を説明するための図である。演算器21のデータ入力部に、3つのセレクタSL11,SL12,SL13が設けられている。ソースレジスタ31の4つのスロットデータ中、第1スロットのデータは、スロット演算器ST10にそのまま供給される。第2、第3及び第4スロットのデータは、それぞれ、セレクタSL11,SL12,SL13の一方の入力端子に供給される。セレクタSL11,SL12,SL13のそれぞれの他方の入力端子には、第1スロットのデータが供給されている。比較データレジスタ33の比較データEB1,EB2,EB3は、それぞれセレクタSL11,SL12,SL13に供給される。
なお、このセレクタSL11,SL12,SL13からなるセレクタ群は、命令によって指定され得るソースレジスタの数だけ設けられる。
変形例に係るプロセッサは、読み出したソースレジスタ31の比較データの各ビットに応じて、第2から第4スロット演算器ST11,ST12,ST13がプリファードスロットのデータあるいは対応するスロットデータを選択するように動作する。
比較データEB1が「1」のときは、プリファードスロットと第2スロットのデータが一致しているので、セレクタSL11は、プリファードスロットのデータを選択してスロット演算器ST11へ供給する。比較データEB1が「0」のときには、プリファードスロットと第2スロットのデータが一致していないので、セレクタSL11は、第2スロットのデータを選択してスロット演算器ST11へ供給する。
以上のように、本変形例では、データをレジスタファイル22に書き戻すときに、プリファードスロットと同じデータの書き込みは行わず、レジスタファイル22からデータを読み出すときに、プリファードスロットのデータを選択してスロット演算器に供給する。
以上のように、上述した実施の形態及び変形例に係るプロセッサによれば、命令コード体系に命令の追加をすることなく、モード切り換え等もする必要なく、低消費電力でスカラー演算も実行可能なSIMD演算を実行することができる。
なお、上述した例では、プリファードスロットと他のスロットとの比較を例にして説明したが、比較対象スロットとしての所定のスロットは、プロファードスロット以外のスロットでもよい。
さらに、比較対象スロットは、1つのスロットだけでなくでもよく、例えば、全てのスロット同士の比較を行うようにしてもよい。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
1 プロセッサ、2 バス、11 演算部、12 ローカルメモリ、21 演算器、22 レジスタファイル、31 ソースレジスタ、32 デスティネーションレジスタ、33 比較データレジスタ、33A 比較データレジスタ群、41 イネーブル生成部、42 イコール生成部

Claims (4)

  1. SIMD演算のための複数のスロットを含む1以上の演算対象データの各スロットに対応して設けられた複数のスロット演算器と、
    前記1以上の演算対象データのそれぞれにおいて、所定のスロットの値と前記所定のスロット以外のスロットの値とを比較し、前記所定のスロットの値と等しい値が入力される1以上のスロット演算器をディスエーブルにするスロット演算器制御部と、
    を有し、ディスエーブルされた前記1以上のスロット演算器の値として、前記所定のスロットの値が出力されることを特徴とするプロセッサ。
  2. 前記比較の結果である比較データは、前記1以上の演算対象データと演算結果データを記憶するレジスタファイルの一部のレジスタに記憶されることを特徴とする請求項1に記載のプロセッサ。
  3. 前記所定のスロットの値は、前記複数のスロット演算器による前記演算結果データが前記レジスタファイルへ出力される時に、ディスエーブルされた前記1以上のスロット演算器の出力データとして、出力されることを特徴とする請求項2に記載のプロセッサ。
  4. 前記1以上のスロット演算器のディスエーブルは、ディスエーブルするスロット演算器へのクロックの供給を停止することによって行われることを特徴とする請求項1から請求項のいずれか1つに記載のプロセッサ。
JP2009189249A 2009-08-18 2009-08-18 プロセッサ Expired - Fee Related JP4996654B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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