JP4228241B2 - 演算処理装置 - Google Patents

演算処理装置 Download PDF

Info

Publication number
JP4228241B2
JP4228241B2 JP2006335583A JP2006335583A JP4228241B2 JP 4228241 B2 JP4228241 B2 JP 4228241B2 JP 2006335583 A JP2006335583 A JP 2006335583A JP 2006335583 A JP2006335583 A JP 2006335583A JP 4228241 B2 JP4228241 B2 JP 4228241B2
Authority
JP
Japan
Prior art keywords
register
condition code
condition
value
code set
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
JP2006335583A
Other languages
English (en)
Other versions
JP2008146544A (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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2006335583A priority Critical patent/JP4228241B2/ja
Priority to US11/987,700 priority patent/US8635434B2/en
Priority to CN2007101994391A priority patent/CN101201736B/zh
Publication of JP2008146544A publication Critical patent/JP2008146544A/ja
Application granted granted Critical
Publication of JP4228241B2 publication Critical patent/JP4228241B2/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/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
    • 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/3001Arithmetic instructions
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

本発明は、演算処理装置に関し、特に複数の演算器が同期してそれぞれの演算を行う演算処理装置、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
近年のプロセッサアーキテクチャにおいては、マシンサイクルを短縮するとともに、1マシンサイクル当たりに実行される命令の数を増やすことにより、実効性能の向上を図るものが多く提案されている。このようなプロセッサアーキテクチャの一つとしてVLIW(Very Long Instruction Word)方式が知られている。このVLIW方式では、1つの命令の中で複数の演算等が指定され、それらが同時に実行される。
一般に、プロセッサにおいて演算が行われる際にはその演算結果とともに、その演算の状態が条件コードとして出力される。これにより、例えば、数値の一致や大小関係などを検出することができる。
従来のVLIW方式によるプロセッサアーキテクチャでは、複数の命令処理部のいずれかで生成された条件コードが選択されて、その選択された条件コードに基づいて条件分岐命令やその他の条件付き命令が実行されている(例えば、特許文献1参照。)。
特開平9−91141号公報(図1)
従来のVLIW方式によるプロセッサアーキテクチャによれば、同時に実行された演算の条件コードのうち、いずれか1つを分岐条件として条件分岐命令などを実行することができる。
しかしながら、判定条件が複雑な場合、各演算の条件コードを保存しておいて、それらを組み合わせる演算を別途行った上で後続の命令のオペランドを生成する必要が生じる。また、これら条件コードに応じて分岐先アドレスが異なる場合があり、その場合には各演算の条件コードに基づいて分岐命令のオペランドを生成して、その分岐先アドレスを決定する必要が生じる。このような追加的な演算を前提とした場合には、複数の演算を同時に実行して高速化を図るというVLIWの利点を損なうおそれがある。
そこで、本発明は、複数の演算による条件コードに基づいて行われるオペランドの供給を高速化することを目的とする。
本発明は、上記課題を解決するためになされたものであり、その第1の側面は、それぞれ異なる演算を行ってその演算による演算結果および条件コードを生成する複数の演算器と、上記複数の演算器によって同時に生成された条件コードを条件コードセットとして保持する条件コードセットレジスタと、上記条件コードセットに対して所定の変換を施して変換条件コードセットとして出力する条件コード変換手段と、上記変換条件コードセットに基づいて上記複数の演算器における上記演算のためのオペランドを供給するオペランド供給手段とを具備することを特徴とする演算処理装置である。これにより、複数の演算によって同時に生成された条件コードを条件コードセットとして所定の変換を施して、これに基づいてオペランドを供給させるという作用をもたらす。
また、この第1の側面において、上記条件コード変換手段は、上記所定の変換として上記条件コードセットに基づく値の少なくとも一部に対してマスク演算を施し、反転処理を施し、もしくは、所定の値と一致するか否かの比較結果を出力するようにしてもよい。このように変換を施された変換条件コードセットは、そのまま上記演算のためのオペランドとして供給されてもよく、また、上記条件コードセットに基づく値のそれぞれに対応して上記変換条件コードセットを保持する変換テーブルをさらに具備して、上記条件コードセットに基づく値に対応する上記変換条件コードセットがオペランドとして供給されてもよい。さらに、複数の語からなるデータレジスタをさらに具備して、上記変換条件コードセットに従って上記データレジスタから読み出された語を上記演算のためのオペランドとして供給してもよい。
また、本発明の第2の側面は、それぞれ異なる演算を行ってその演算による演算結果および条件コードを生成する複数の演算器と、上記複数の演算器によって生成された条件コードを条件コードセットとして保持する条件コードセットレジスタと、上記条件コードセットレジスタに保持された上記条件コードセットの一部と上記複数の演算器によって同時に生成された上記条件コードの一部とを新たな条件コードセットとして上記条件コードセットレジスタに保持させる条件コード書込み手段と、上記条件コードセットに対して所定の変換を施して変換条件コードセットとして出力する条件コード変換手段と、上記変換条件コードセットに基づいて上記複数の演算器における上記演算のためのオペランドを供給するオペランド供給手段とを具備することを特徴とする演算処理装置である。これにより、複数の演算における条件コードを条件コードセットとして所定の変換を施して、これに基づいてオペランドを供給させるという作用をもたらす。
また、本発明の第3の側面は、それぞれ異なる演算を行ってその演算による演算結果および条件コードを生成する複数の演算器と、上記条件コードの各々についてマスク演算を行うか否かを示すマスクビットを保持するマスクレジスタと、上記条件コードの各々について上記マスクレジスタに従ってマスク演算を行うマスク演算器と、上記マスク演算器により処理された上記条件コードの各々について反転処理を行うか否かを示す反転ビットを保持する反転レジスタと、上記マスク演算器により処理された上記条件コードの各々について上記反転レジスタに従って反転処理を行う反転処理器と、上記反転処理器により処理された上記条件コードの各々について比較対象となるパターンを保持する比較パターンレジスタと、上記反転処理器により処理された上記条件コードと上記比較パターンレジスタに保持されたパターンを比較する比較器と、上記反転処理器により処理された上記条件コードの組合せに対応した変換条件コードセットを保持する変換テーブルと、上記比較器の比較結果、上記反転処理器により処理された上記条件コード、または、上記反転処理器により処理された上記条件コードの組合せに対応して上記変換テーブルから読み出された上記変換条件コードセットの何れか1つを選択する選択器と、上記選択器の出力に基づいて上記複数の演算器における上記演算のためのオペランドを供給するオペランド供給手段とを具備することを特徴とする演算処理装置である。これにより、複数の演算における条件コードを条件コードセットとしてマスク演算、反転処理、一致処理、テーブル変換処理を施して、これらのうちの何れかの値に基づいてオペランドを供給させるという作用をもたらす。
また、本発明の第4の側面は、複数の命令からなるプログラムを保持する命令メモリと、上記命令メモリから命令を取り出してデコードする命令フェッチ/デコーダと、上記デコード結果に基づきそれぞれ異なる演算を行ってその演算による演算結果および条件コードを生成する複数の演算器と、上記デコード結果に基づき上記命令フェッチ/デコーダにおいて取り出すべき命令を決定する分岐処理手段と、データメモリと、上記データメモリから必要なデータをロードしもしくは上記データメモリに必要なデータをストアするためのアクセスを行うロードストア処理手段と、上記複数の演算器によって同時に生成された条件コードを条件コードセットとして保持する条件コードセットレジスタと、上記条件コードセットに対して所定の変換を施して変換条件コードセットとして出力する条件コード変換手段と、上記変換条件コードセットに基づいて上記複数の演算器における上記演算、上記分岐処理手段における上記決定、または、上記ロードストア処理手段における上記アクセスのためのオペランドを供給するオペランド供給手段とを具備することを特徴とする演算処理装置である。これにより、命令メモリから読み出された複数の命令による演算によって同時に生成された条件コードを条件コードセットとして所定の変換を施して、これに基づいてオペランドを供給させるという作用をもたらす。
本発明によれば、複数の演算による条件コードに基づいて行われるオペランドの供給を高速化することができるという優れた効果を奏し得る。
次に本発明の実施の形態について図面を参照して詳細に説明する。
図1は、本発明の実施の形態における演算処理装置の一構成例を示す図である。この演算処理装置は、命令メモリ100と、命令フェッチ/デコーダ200と、レジスタユニット300と、オペランドセレクタ400と、実行ユニット群500と、データメモリ600とを備えている。
命令メモリ100は、複数の命令からなるプログラムを保持するものである。この命令メモリ100は、主記憶の一部の領域であってもよく、また、主記憶の一部を保持する命令バッファであってもよい。
命令フェッチ/デコーダ200は、命令メモリ100から必要な命令をフェッチして、そのフェッチした命令をデコードするものである。この命令フェッチ/デコーダ200のデコード結果により、実行ユニット群500における処理内容が決定する。本発明の実施の形態では、VLIW方式によるプロセッサアーキテクチャを前提としており、32ビット幅の命令が6つ同時にフェッチされ、デコードされるものと想定する。
レジスタユニット300は、実行ユニット群500における処理に必要なデータを保持するものである。このレジスタユニット300には、複数語のデータレジスタおよび条件コードセットレジスタが含まれており、命令フェッチ/デコーダ200のデコード結果に従って読出しや書込みが行われる。
オペランドセレクタ400は、実行ユニット群500に対して必要なオペランドを供給するものである。本発明の実施の形態では、実行ユニット群500の6つのユニットに対してそれぞれ第1および第2のオペランドが供給されることを想定している。
実行ユニット群500は、演算処理装置における実体的な処理を行うものであり、本発明の実施の形態では、演算ユニット#A(501)、演算ユニット#B(511)、演算ユニット#C(521)、演算ユニット#D(531)、ロード/ストアユニット541、および、分岐ユニット551の6つのユニットを備える。これら6つのユニットは同時に実行される。
演算ユニット#A乃至#D(501、511、521および531)は、オペランドセレクタ400から供給された第1および第2のオペランドに対して四則演算や論理演算などを実行して、それぞれ信号線509、519、529および539に演算結果(rd0[31:0]、rd1[31:0]、rd2[31:0]およびrd3[31:0])を出力するものである。この例において、rd0[31:0]は、演算ユニット#A(501)の出力として、MSBを第31ビット、LSBを第0ビットとする、32ビットの演算結果を表す。他のrd1[31:0]、rd2[31:0]およびrd3[31:0]についても同様であり、それぞれ演算ユニット#B(511)、演算ユニット#C(521)および演算ユニット#D(531)の32ビットの演算結果を表す。
また、この演算ユニット#A乃至#D(501、511、521および531)は、演算の際の状態を条件コード(rf0、rf1、rf2およびrf3)としてそれぞれの演算結果とともに出力する。この例において、rf0は、演算ユニット#A(501)の1ビットの条件コードであり、論理演算の結果が真であれば「1」、偽であれば「0」を示すものとする。他のrf1、rf2およびrf3についても同様であり、それぞれ演算ユニット#B(511)、演算ユニット#C(521)および演算ユニット#D(531)の条件コードを表す。
これら演算結果(rd0[31:0]、rd1[31:0]、rd2[31:0]およびrd3[31:0])および条件コード(rf0、rf1、rf2およびrf3)は、レジスタユニット300に供給される。
ロード/ストアユニット541は、オペランドセレクタ400から供給された第1および第2のオペランドに基づいてデータメモリ600にアクセスするものである。命令フェッチ/デコーダ200によってデコードされた命令がロード命令である場合には、ロード/ストアユニット541はデータメモリ600からデータを読み出して信号線549を介してロードデータ(rd4[31:0])をレジスタユニット300に供給する。この例において、rd4[31:0]は32ビットのロードデータを表す。命令フェッチ/デコーダ200によってデコードされた命令がストア命令である場合には、ロード/ストアユニット541はデータメモリ600に対してストアデータを書き込む。
分岐ユニット551は、オペランドセレクタ400から供給された第1および第2のオペランドに基づき、命令列において分岐するべきか否かを判定し、分岐する場合にはその分岐先アドレスを決定するものである。この分岐ユニット551による判定結果は、命令フェッチ/デコーダ200に供給され、次の命令のフェッチおよびデコードに利用される。
データメモリ600は、プログラムの動作に必要なデータを保持するものである。このデータメモリ600は、主記憶であってもよく、また、主記憶の一部を保持するデータキャッシュであってもよい。
図2は、本発明の実施の形態におけるレジスタユニット300の一構成例を示す図である。このレジスタユニット300は、レジスタファイル310と、設定レジスタ320と、フラグ書込み部330と、フラグ変換部340とを備えている。
レジスタファイル310は、複数の語からなるレジスタ群である。このレジスタファイル310の内容は、データレジスタと条件コードセットレジスタとに分かれている。データレジスタは、実行ユニット群500のためのオペランドデータを保持するものであり、本発明の実施の形態では1語当たり32ビットのレジスタを16語(r0からr15)備えることを想定している。条件コードセットレジスタは、条件コードセットを保持するレジスタである。条件コードセットは、演算ユニットの数に対応する条件コードをまとめたものであり、本発明の実施の形態では1語当たり1ビットのフラグを保持するレジスタを4語(rF[0]からrF[3])備えることを想定している。
設定レジスタ320は、レジスタユニット300における動作を制御するための情報を設定するレジスタである。本発明の実施の形態では、書込みモードレジスタ(Reg_WRMODE)、マスクレジスタ(Reg_MASK[3:0])、反転レジスタ(Reg_XOR[3:0])、比較パターンレジスタ(Reg_MATCH[3:0])および機能レジスタ(Reg_FUNC[1:0])を備える。書込みモードレジスタの値はフラグ書込み部330に供給され、それ以外の4つのレジスタの値はフラグ変換部340に供給される。それぞれの内容については後述する。
フラグ書込み部330は、設定レジスタ320の書込みモードレジスタ(Reg_WRMODE)の値に従って、レジスタファイル310の条件コードセットレジスタの各フラグに対する書込みを行うものである。
フラグ変換部340は、レジスタファイル310の条件コードセットレジスタの各フラグに対して変換を施して、変換条件コードセット(rF_out[3:0])を生成するものである。このフラグ変換部340には、設定レジスタ320のマスクレジスタ(Reg_MASK[3:0])、反転レジスタ(Reg_XOR[3:0])、比較パターンレジスタ(Reg_MATCH[3:0])および機能レジスタ(Reg_FUNC[1:0])の値が供給される。
なお、本発明の実施の形態において、データレジスタに対する書込みについては通常の演算処理装置と同様であるため、説明を省略する。
図3は、本発明の実施の形態におけるフラグ書込み部330の動作モード例を示す図である。上述のように、フラグ書込み部330は、設定レジスタ320の書込みモードレジスタ(Reg_WRMODE)の値に従って、レジスタファイル310の条件コードセットレジスタの各フラグに対する書込みを行う。書込みモードレジスタ(Reg_WRMODE)が「0」を示す場合、図3(a)のように、演算ユニット#A(501)の出力した条件コードrf0が条件コードセットレジスタのrF[0]に保持され、演算ユニット#B(511)の出力した条件コードrf1が条件コードセットレジスタのrF[1]に保持され、演算ユニット#C(521)の出力した条件コードrf2が条件コードセットレジスタのrF[2]に保持され、演算ユニット#D(531)の出力した条件コードrf3が条件コードセットレジスタのrF[3]に保持される。この書込みモードレジスタ(Reg_WRMODE)が「0」を示す状態をスルーモードと呼ぶ。
一方、書込みモードレジスタ(Reg_WRMODE)が「1」を示す場合、図3(b)のように、条件コードセットレジスタがMSB方向に左シフトする。すなわち、条件コードセットレジスタのrF[2]の値が新たにrF[3]に保持され、rF[1]の値が新たにrF[2]に保持され、rF[0]の値が新たにrF[1]に保持される。そして、rF[0]には演算ユニット#A乃至#D(501、511、521および531)の何れかの出力した条件コードが保持される。ここでは、演算ユニット#A(501)の出力した条件コードrf0が条件コードセットレジスタのrF[0]に保持される例を示しているが、命令フォーマットの何れかのフィールドにおいて、対象となる演算ユニットを指定するようにしてもよい。この書込みモードレジスタ(Reg_WRMODE)が「1」を示す状態を履歴モードと呼ぶ。
図4は、本発明の実施の形態における設定レジスタ320およびフラグ変換部340の一構成例を示す図である。
設定レジスタ320は、書込みモードレジスタ(Reg_WRMODE)321、マスクレジスタ(Reg_MASK[3:0])322、反転レジスタ(Reg_XOR[3:0])323、比較パターンレジスタ(Reg_MATCH[3:0])324および機能レジスタ(Reg_FUNC[1:0])325を備える。
書込みモードレジスタ321は、フラグ書込み部330における条件コードセットレジスタに対する書込みの動作モードを指定するものである。本発明の実施の形態では、書込みモードレジスタ321が「0」を示す場合にはスルーモード、「1」を示す場合には履歴モードとして動作する。
マスクレジスタ322は、条件コードセットレジスタの各フラグをマスクするか否かを保持するレジスタである。
反転レジスタ323は、マスク演算後の条件コードセットレジスタの各フラグを反転するか否かを保持するレジスタである。
比較パターンレジスタ324は、反転処理後の条件コードセットレジスタの各フラグとの間で一致を検出するビットパターンを保持するレジスタである。
機能レジスタ325は、フラグ変換部340の機能を示すコードを保持するレジスタである。
フラグ変換部340は、論理積演算器342と、排他的論理和演算器343と、比較器344と、フラグ変換テーブル345と、選択器346とを備える。
論理積演算器342は、条件コードセットレジスタの各フラグとマスクレジスタ322の対応するビットとの間の論理積演算を行うものである。すなわち、マスクレジスタ322の対応するビットが「0」であれば論理積演算器342の対応する出力は「0」にマスクされ、マスクレジスタ322の対応するビットが「1」であれば条件コードセットレジスタの対応する値がそのまま論理積演算器342から出力される。
排他的論理和演算器343は、論理積演算器342の出力の各ビットと反転レジスタ323の対応するビットとの間の排他的論理和演算を行うものである。すなわち、反転レジスタ323の対応するビットが「1」であれば論理積演算器342の出力の対応する値が反転されて排他的論理和演算器343から出力され、反転レジスタ323の対応するビットが「0」であれば論理積演算器342の出力の対応する値がそのまま排他的論理和演算器343から出力される。この排他的論理和演算器343の出力は、信号rF_xor[3:0]として出力される。
比較器344は、排他的論理和演算器343の出力と比較パターンレジスタ324のビットパターンとを比較して、両者が一致しているか否かを出力するものである。すなわち、両者が一致する場合には、信号rF_m[3:0]が「0001」(2進数)になり、信号rF_nm[3:0]が「0000」(2進数)になる。一方、両者が一致しない場合には、信号rF_m[3:0]が「0000」(2進数)になり、信号rF_nm[3:0]が「0001」(2進数)になる。
フラグ変換テーブル345は、複数エントリからなるテーブルであり、排他的論理和演算器343の出力(信号rF_xor[3:0])に対応した値を信号rF_tbl[3:0]として出力するものである。このフラグ変換テーブル345には、予め所望の値が設定される。本発明の実施の形態では、1エントリ当り4ビットの値を16エントリ保持することを想定している。
選択器346は、機能レジスタ325に保持されるコードに応じた値を選択するものである。すなわち、機能レジスタ325に保持されるコードが「0」(10進数)であれば信号rF_m[3:0]が選択され、「1」(10進数)であれば信号rF_nm[3:0]が選択され、「2」(10進数)であれば信号rF_xor[3:0]が選択され、「3」(10進数)であれば信号rF_tbl[3:0]が選択されて、変換条件コードセット(rF_out[3:0])として出力される。
これにより、条件コードセットレジスタの値rF[3:0]がビット毎にマスクまたは反転された信号rF_xor[3:0]が生成され、その信号rF_xor[3:0]と他のビットパターンとの間の一致または不一致、信号rF_xor[3:0]そのもの、または、信号rF_xor[3:0]に対応したフラグ変換テーブル345における値の何れかがフラグ変換部340から出力される。
図5は、本発明の実施の形態における命令フォーマットの一例を示す図である。本発明の実施の形態では、32ビット長の命令が6つ同時に命令メモリ100から命令フェッチ/デコーダ200によって読み出されて、デコードされることを想定する。同図にはそのうちの1つの命令が示されている。
この命令フォーマットでは、MSB側から、命令コード701、フラグ選択#0(702)、フラグ選択#1(703)、オペランド#0(704)、オペランド#1(705)およびデスティネーション706の各フィールドが設けられている。
命令コード701は、この命令の種類を示すコードを保持するフィールドであり、本発明の実施の形態では15ビット幅を有する。
フラグ選択#0(702)は、第1のオペランドとしてオペランド#0(704)を選択するか否かを保持するフィールドである。また、フラグ選択#1(703)は、第2のオペランドとしてオペランド#1(705)を選択するか否かを保持するフィールドである。オペランド#0(704)またはオペランド#1(705)が選択されない場合には、フラグ変換部340の出力(変換条件コードセットrF_out[3:0])が使用される。フラグ選択#0(702)および#1(70)は、本発明の実施の形態ではともに1ビットである。
オペランド#0(704)は、この命令の第1のオペランドを保持するフィールドである。また、オペランド#1(705)は、この命令の第2のオペランドを保持するフィールドである。オペランド#0(704)およびオペランド#1(705)は、本発明の実施の形態ではともに5ビット幅を有する。
デスティネーション706は、この命令の出力先を保持するフィールドであり、本発明の実施の形態では5ビット幅を有する。
図6は、本発明の実施の形態におけるオペランドセレクタ400の第1のオペランドセレクタ#0(410)の一構成例を示す図である。このオペランドセレクタ#0(410)は、実行ユニット群500における何れかのユニットの第1のオペランドを供給するものである。このオペランドセレクタ#0(410)は、選択器411および412を備えている。
選択器411は、フラグ選択#0(702)に応じて、オペランド#0(704)またはフラグ変換部340の出力(変換条件コードセットrF_out[3:0])の何れか一方を選択するものである。本発明の実施の形態では、フラグ選択#0(702)が「0」であればオペランド#0(704)の値が選択され、「1」であればフラグ変換部340の出力が選択される。この選択器411の出力は選択器412の選択信号として供給される。
選択器412は、選択器411の出力に応じて、レジスタファイル310のデータレジスタ(r0乃至r15)の値またはフラグ変換部340の出力(変換条件コードセットrF_out[3:0])の何れかを選択するものである。本発明の実施の形態では、選択器411の出力が「0」から「15」(10進数)であればその値に対応するデータレジスタの値が選択され、「16」(10進数)であればフラグ変換部340の出力が選択される。
したがって、フラグ選択#0(702)が「0」であれば、オペランド#0(704)により示される値に対応するデータレジスタ(r0乃至r15)の値またはフラグ変換部340の出力がオペランドとして供給される。また、フラグ選択#0(702)が「1」であれば、データレジスタ(r0乃至r15)のうちフラグ変換部340の出力により示されるものの値がオペランドとして供給される。
図7は、本発明の実施の形態におけるオペランドセレクタ400の第2のオペランドセレクタ#1(420)の一構成例を示す図である。このオペランドセレクタ#0(420)は、実行ユニット群500における何れかのユニットの第2のオペランドを供給するものである。このオペランドセレクタ#1(420)の構成は図6により説明したオペランドセレクタ#0(410)の構成と同様であり、選択器421の選択信号としてフラグ選択#1(703)が供給され、フラグ選択#1(703)が「0」の場合に選択されるオペランドとしてオペランド#1(705)が供給される点が異なる。
このように、本発明の実施の形態によれば、演算ユニット#A乃至#D(501、511、521および531)の出力した条件コードが条件コードセットとして条件コードセットレジスタに保持され、その条件コードセットレジスタに保持された条件コードセットがフラグ変換部340によって変換されてオペランドセレクタ400に供給される。これにより、複数の演算による条件コードに基づいて行われるオペランドの供給を高速化することができる。
次に、本発明の実施の形態における演算処理装置の動作について具体例を挙げて説明する。
図8は、本発明の実施の形態における演算処理装置の動作を説明するための第1のプログラム例を示す図である。この第1のプログラム例は、4つの条件を同時に判定し、分岐するか否かを決定するプログラムの例を示している。
図8(a)は、処理対象となるプログラムを高級言語風に表したものである。このプログラムは、データレジスタr0の値とデータレジスタr1の値とが一致し、データレジスタr3の値よりデータレジスタr2の値方が大きく、データレジスタr4の値とデータレジスタr5の値とが一致せず、かつ、データレジスタr6の値がデータレジスタr7以下である場合に、関数func1に分岐することを意味している。
図8(b)は、処理対象となるプログラムをアセンブリ言語風に表したものであり、横方向に並んだ6つの命令は同時に実行されることを意味している。[EQ r0,r1]は演算ユニット#A(501)によって実行され、[GT r2,r3]は演算ユニット#B(511)によって実行され、[EQ r4,r5]は演算ユニット#C(521)によって実行され、[GT r6,r7]は演算ユニット#D(531)によって実行される。また、[BRf func1]は分岐ユニット551によって実行される。
ここで、[EQ rs,rt]は条件判定命令であり、データレジスタrsの値とデータレジスタrtの値とが一致していれば(equal)条件コードとして「1」を、それ以外であれば条件コードとして「0」を出力する。また、[GT rs,rt]は他の条件判定命令であり、データレジスタrsの値がデータレジスタrtの値よりも大きければ(greater than)条件コードとして「1」を、それ以外であれば条件コードとして「0」を出力する。また、[BRf func1]は条件分岐命令であり、rF_out[0]が「1」であれば関数func1に分岐する(branch)命令である。rF_out[0]はフラグ変換部340のLSBの値であり、func1は関数の先頭アドレスを示すラベルである。また、[nop]は何も実行を行わない(no-operation)命令である。
図9は、図8の第1のプログラム例を実行するための設定レジスタ320の設定例を示す図である。この例では予め、書込みモードレジスタ(Reg_WRMODE)321には「0」が設定され、マスクレジスタ(Reg_MASK[3:0])322には「1111」(2進数)が設定され、反転レジスタ(Reg_XOR[3:0])323には「1100」(2進数)が設定され、比較パターンレジスタ(Reg_MATCH[3:0])324には「1111」(2進数)が設定され、機能レジスタ(Reg_FUNC[1:0])325には「00」(2進数)が設定される。これらの設定は、ソフトウェア命令により行うことができる。また、命令フォーマットに埋め込むようにしてもよい。
この例では、書込みモードレジスタ321が「0」(スルーモード)であることから、演算ユニット#A乃至#D(501、511、521および531)による各演算の条件コードは、それぞれ条件コードセットレジスタのrF[0乃至3]に保持される。
そして、条件コードセットレジスタの各フラグの値とマスクレジスタ322の対応するビットとの間で論理積演算器342によって論理積演算が行われるが、この例ではマスクレジスタ322が「1111」であることから、何れのビットもマスクされない。
続いて、論理積演算器342の出力の各ビットと反転レジスタ323の対応するビットとの間で排他的論理和演算器343によって排他的論理和演算が行われ、この例では反転レジスタ323が「1100」であることから上位2ビットが反転される。
また、排他的論理和演算器343の出力と比較パターンレジスタ324のビットパターンとが比較器344によって比較される。この例では、比較パターンレジスタ324のビットパターンが「1111」であることから、「データレジスタr0の値とデータレジスタr1の値とが一致し、データレジスタr3の値よりデータレジスタr2の値方が大きく、データレジスタr4の値とデータレジスタr5の値とが一致せず、かつ、データレジスタr6の値がデータレジスタr7以下」が成立する場合にはrF_m[3:0]が「0001」となり、成立しない場合にはrF_m[3:0]は「0000」となる。この例では、機能レジスタ325が「00」であるため、rF_m[3:0]の値が選択器346において選択されて、rF_out[3:0]として出力される。
[BRf func1]では、フラグ選択#0(702)が「0」、オペランド#0(704)が「16」を示すことから、分岐ユニット551には、rF_out[3:0]の値が供給される。分岐ユニット551は、このrF_out[3:0]が「0001」であれば関数func1に分岐し、「0000」であれば分岐しない。
このように、図8の第1のプログラム例は、本発明の実施の形態において2マシンサイクルで実行される。なお、この2マシンサイクルには設定レジスタ320の設定のための時間は含まれないが、実際のプログラムでは設定レジスタ320が1回設定された後に主要な演算が繰り返し実行されることが多いため、その場合には設定に要する時間は無視することができる。
図10は、本発明の実施の形態における演算処理装置の動作を説明するための第2のプログラム例を示す図である。この第2のプログラム例は、4つの条件を同時に判定し、分岐先を決定するプログラムの例を示している。
図10(a)は、処理対象となるプログラムを高級言語風に表したものである。このプログラムは、データレジスタr10の値がデータレジスタr11の値よりも大きければ関数func1に分岐し、そうでなければデータレジスタr10の値がデータレジスタr12の値よりも大きければ関数func2に分岐し、そうでなければデータレジスタr10の値がデータレジスタr13の値よりも大きければ関数func3に分岐し、そうでなければデータレジスタr10の値がデータレジスタr14の値よりも大きければ関数func4に分岐することを意味している。
図10(b)は、処理対象となるプログラムをアセンブリ言語風に表したものであり、横方向に並んだ6つの命令は同時に実行されることを意味している。[GT r10,r11]は演算ユニット#A(501)によって実行され、[GT r10,r12]は演算ユニット#B(511)によって実行され、[GT r10,r13]は演算ユニット#C(521)によって実行され、[GT r10,r14]は演算ユニット#D(531)によって実行される。また、[JMPf]は分岐ユニット551によって実行される。
ここで、[JMPf]は、rF_out[3:0]が指すデータレジスタに格納されたアドレスにジャンプ(jump)するレジスタジャンプ命令である。他の命令は図8の例において説明したとおりである。
図11は、図10の第2のプログラム例を実行するための設定レジスタ320の設定例を示す図である。この例では予め、書込みモードレジスタ321には「0」が設定され、マスクレジスタ322には「1111」(2進数)が設定され、反転レジスタ323には「0000」(2進数)が設定され、機能レジスタ325には「11」(2進数)が設定される。
この例では、書込みモードレジスタ321が「0」(スルーモード)であることから、演算ユニット#A乃至#D(501、511、521および531)による各演算の条件コードは、それぞれ条件コードセットレジスタのrF[0乃至3]に保持される。
そして、条件コードセットレジスタの各フラグの値とマスクレジスタ322の対応するビットとの間で論理積演算器342によって論理積演算が行われるが、この例ではマスクレジスタ322が「1111」であることから、何れのビットもマスクされない。
続いて、論理積演算器342の出力の各ビットと反転レジスタ323の対応するビットとの間で排他的論理和演算器343によって排他的論理和演算が行われるが、この例では反転レジスタ323が「0000」であることから、何れのビットも反転されない。
この例では、機能レジスタ325が「11」であるため、フラグ変換テーブル345の出力rF_tbl[3:0]の値が選択器346において選択されて、rF_out[3:0]として出力される。
図12は、図10の第2のプログラム例を実行するためのフラグ変換テーブル345の設定例を示す図である。この例では予め、フラグ変換テーブル345の番地「0001」には値「3」(10進数)が、番地「0010」および「0011」には値「2」(10進数)が、番地「0100」乃至「0111」には値「1」(10進数)が、番地「1000」乃至「1111」には値「0」(10進数)がそれぞれ格納される。これらはジャンプ先のアドレスを格納したデータレジスタの番号を意味する。
また、これに伴い、データレジスタr0には関数func1の先頭アドレスが設定され、データレジスタr1には関数func2の先頭アドレスが設定され、データレジスタr2には関数func3の先頭アドレスが設定され、データレジスタr3には関数func4の先頭アドレスが設定されていることを前提とする。
フラグ変換テーブル345は、排他的論理和演算器343の出力rF_xor[0乃至3]を読出しアドレスとして読み出され、rF_tbl[3:0]を選択器346に出力する。したがって、データレジスタr10の値がデータレジスタr11の値よりも大きければrF_xor[0]が「1」になり、値「0」(10進数)がrF_tbl[3:0]として出力される。そうでなければ、データレジスタr10の値がデータレジスタr12の値よりも大きければrF_xor[1]が「1」になり、値「1」(10進数)がrF_tbl[3:0]として出力される。そうでなければ、データレジスタr10の値がデータレジスタr13の値よりも大きければrF_xor[2]が「1」になり、値「2」(10進数)がrF_tbl[3:0]として出力される。そうでなければ、データレジスタr10の値がデータレジスタr14の値よりも大きければrF_xor[3]が「1」になり、値「3」(10進数)がrF_tbl[3:0]として出力される。
[JMPf]では、フラグ選択#0(702)が「1」を示すことから、選択器422の選択信号としてrF_out[3:0]が用いられ、rF_out[3:0]の指すデータレジスタに格納されたアドレスがオペランドとして供給される。これにより、何れかの条件が成立する場合には、予めデータレジスタに格納されたアドレスの何れかが分岐ユニット551を通じて命令フェッチ/デコーダ200に供給され、対応する関数へのジャンプが行われる。
このように、図10の第2のプログラム例は、本発明の実施の形態において2マシンサイクルで実行される。
図13は、本発明の実施の形態における演算処理装置の動作を説明するための第3のプログラム例を示す図である。この第3のプログラム例は、3つの条件を1つずつ順番に判定し、レジスタへ代入する値を選択するプログラムの例を示している。
図13(a)は、処理対象となるプログラムを高級言語風に表したものである。このプログラムは、データレジスタr10の値がデータレジスタr11の値よりも大きければデータレジスタr5にデータレジスタr0の値を代入し、そうでなければデータレジスタr10の値がデータレジスタr12の値よりも大きければデータレジスタr5にデータレジスタr1の値を代入し、そうでなければデータレジスタr10の値がデータレジスタr13の値よりも大きければデータレジスタr5にデータレジスタr2の値を代入することを意味している。
図13(b)は、処理対象となるプログラムをアセンブリ言語風に表したものであり、横方向に並んだ6つの命令は同時に実行されることを意味しているが、この例では実体的な命令は全て演算ユニット#A(501)において実行され、他のユニットはnop命令を実行する。
ここで、[MVf r5]は、転送命令であり、rF_out[3:0]に指し示されるデータレジスタの値をデータレジスタr5に転送(move)する命令である。他の命令は図8の例において説明したとおりである。
図14は、図13の第3のプログラム例を実行するための設定レジスタ320の設定例を示す図である。この例では予め、書込みモードレジスタ321には「1」が設定され、マスクレジスタ322には「0111」(2進数)が設定され、反転レジスタ323には「0000」(2進数)が設定され、機能レジスタ325には「11」(2進数)が設定される。
この例では、書込みモードレジスタ321が「1」(履歴モード)であることから、演算ユニット#A(501)による演算の条件コードは、条件コードセットレジスタのrF[0]に保持され、その後、条件コードセットレジスタのrF[1]、rF[2]、rF[3]へと順次シフトされていく。したがって、この例では、rF[2]には「データレジスタr10の値がデータレジスタr11の値よりも大きいか否か」の条件コード、rF[1]には「データレジスタr10の値がデータレジスタr12の値よりも大きいか否か」の条件コード、rF[0]には「データレジスタr10の値がデータレジスタr13の値よりも大きいか否か」の条件コードがそれぞれ保持される。
そして、条件コードセットレジスタの各フラグの値とマスクレジスタ322の対応するビットとの間で論理積演算器342によって論理積演算が行われ、この例ではマスクレジスタ322が「0111」であることから、rF[3]のみが「0」にマスクされる。
続いて、論理積演算器342の出力の各ビットと反転レジスタ323の対応するビットとの間で排他的論理和演算器343によって排他的論理和演算が行われるが、この例では反転レジスタ323が「0000」であることから、何れのビットも反転されない。
この例では、機能レジスタ325が「11」であるため、フラグ変換テーブル345の出力rF_tbl[3:0]の値が選択器346において選択されて、rF_out[3:0]として出力される。
図15は、図13の第3のプログラム例を実行するためのフラグ変換テーブル345の設定例を示す図である。この例では予め、フラグ変換テーブル345の番地「0001」には値「2」(10進数)が、番地「0010」および「0011」には値「1」(10進数)が、番地「0100」乃至「0111」には値「0」(10進数)がそれぞれ格納される。これらはジャンプ先のアドレスを格納したデータレジスタの番号を意味する。
フラグ変換テーブル345は、排他的論理和演算器343の出力rF_xor[0乃至3]を読出しアドレスとして読み出され、rF_tbl[3:0]を選択器346に出力する。したがって、データレジスタr10の値がデータレジスタr11の値よりも大きければrF_xor[]が「1」になり、値「0」(10進数)がrF_tbl[3:0]として出力される。そうでなければ、データレジスタr10の値がデータレジスタr12の値よりも大きければrF_xor[]が「1」になり、値「1」(10進数)がrF_tbl[3:0]として出力される。そうでなければ、データレジスタr10の値がデータレジスタr13の値よりも大きければrF_xor[]が「1」になり、値「2」(10進数)がrF_tbl[3:0]として出力される。
[MVf r5]では、フラグ選択#0(702)が「1」を示すことから、選択器422の選択信号としてrF_out[3:0]が用いられ、rF_out[3:0]の指すデータレジスタの値がオペランドとして供給される。これにより、何れかの条件が成立する場合には、rF_out[3:0]の指すデータレジスタの値がデータレジスタr5に転送される。
このように、図13の第3のプログラム例は、本発明の実施の形態において4マシンサイクルで実行される。
図16は、本発明の実施の形態における演算処理装置の動作を説明するための第4のプログラム例を示す図である。この第4のプログラム例は、3つの条件を同時に判定し、その結果に従ってメモリロードを行うプログラムの例を示している。
図16(a)は、処理対象となるプログラムを高級言語風に表したものである。このプログラムは、データレジスタr10の値がデータレジスタr11の値よりも大きければデータレジスタr5にメモリの「ベースアドレス+8」番地からデータをロードし、そうでなければデータレジスタr10の値がデータレジスタr12の値よりも大きければデータレジスタr5にメモリの「ベースアドレス+4」番地からデータをロードし、そうでなければデータレジスタr10の値がデータレジスタr13の値よりも大きければデータレジスタr5にメモリの「ベースアドレス+0」番地からデータをロードすることを意味している。
図16(b)は、処理対象となるプログラムをアセンブリ言語風に表したものであり、横方向に並んだ6つの命令は同時に実行されることを意味している。[GT r10,r11]は演算ユニット#A(501)によって実行され、[GT r10,r12]は演算ユニット#B(511)によって実行され、[GT r10,r13]は演算ユニット#C(521)によって実行される。また、[LWf r,r0]はロード/ストアユニット541によって実行される。
ここで、[LWf r,r0]はメモリロード命令であり、rF_out[3:0]が指すデータレジスタに格納された値をアドレスオフセットとして、データレジスタr0に格納されたベースアドレスに加えることにより得られるアドレスに基づいてメモリからデータをロード(load)して、データレジスタrに格納する命令である。他の命令は図8の例において説明したとおりである。
図17は、図16の第4のプログラム例を実行するための設定レジスタ320の設定例を示す図である。この例では予め、書込みモードレジスタ321には「0」が設定され、マスクレジスタ322には「0111」(2進数)が設定され、反転レジスタ323には「0000」(2進数)が設定され、機能レジスタ325には「11」(2進数)が設定される。
この例では、書込みモードレジスタ321が「0」(スルーモード)であることから、演算ユニット#A乃至#C(501、511および521)による各演算の条件コードは、それぞれ条件コードセットレジスタのrF[0乃至2]に保持される。
そして、条件コードセットレジスタの各フラグの値とマスクレジスタ322の対応するビットとの間で論理積演算器342によって論理積演算が行われ、この例ではマスクレジスタ322が「0111」であることから、rF[3]のみが「0」にマスクされる。
続いて、論理積演算器342の出力の各ビットと反転レジスタ323の対応するビットとの間で排他的論理和演算器343によって排他的論理和演算が行われるが、この例では反転レジスタ323が「0000」であることから、何れのビットも反転されない。
この例では、機能レジスタ325が「11」であるため、フラグ変換テーブル345の出力rF_tbl[3:0]の値が選択器346において選択されて、rF_out[3:0]として出力される。
図18は、図16の第4のプログラム例を実行するためのフラグ変換テーブル345の設定例を示す図である。この例では予め、フラグ変換テーブル345の番地「0001」には値「0」(10進数)が、番地「0010」および「0011」には値「4」(10進数)が、番地「0100」乃至「0111」には値「8」(10進数)がそれぞれ格納される。これらはアドレスオフセットの値を意味する。
フラグ変換テーブル345は、排他的論理和演算器343の出力rF_xor[0乃至3]を読出しアドレスとして読み出され、rF_tbl[3:0]を選択器346に出力する。したがって、データレジスタr10の値がデータレジスタr11の値よりも大きければrF_xor[]が「1」になり、値「8」(10進数)がrF_tbl[3:0]として出力される。そうでなければ、データレジスタr10の値がデータレジスタr12の値よりも大きければrF_xor[]が「1」になり、値「4」(10進数)がrF_tbl[3:0]として出力される。そうでなければ、データレジスタr10の値がデータレジスタr13の値よりも大きければrF_xor[]が「1」になり、値「0」(10進数)がrF_tbl[3:0]として出力される。
[LWf r,r0]では、フラグ選択#0(702)が「1」を示すことから、選択器422の選択信号としてrF_out[3:0]が用いられ、rF_out[3:0]の指すデータレジスタの値がオペランドとして供給される。これにより、何れかの条件が成立する場合には、rF_out[3:0]の指すデータレジスタの値がオフセットアドレスとしてロード/ストアユニット541に供給される。
また、[LWf r,r0]では、フラグ選択#1(703)が「0」、オペランド#1(705)が「0」を示すことから、データレジスタr0の値がベースアドレスとしてロード/ストアユニット541に供給される。
これにより、ロード/ストアユニット541では、オフセットアドレスをベースアドレスに加えて、そのアドレスに基づいてメモリからデータをロードする。そして、そのロードされたデータをデータレジスタrに格納する。
このように、図16の第4のプログラム例は、本発明の実施の形態において2マシンサイクルで実行される。
すなわち、本発明の実施の形態によれば、演算ユニット#A乃至#D(501、511、521および531)による条件コードを条件コードセットとして適宜組み合わせてフラグ変換部340によって変換して、これに基づいて他の命令のオペランドとして供給することにより、複数の演算による条件コードに基づいて行われるオペランドの供給を高速化することができる。
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、以下に示すように特許請求の範囲における発明特定事項とそれぞれ対応関係を有するが、これに限定されるものではなく本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
すなわち、請求項において、演算器は例えば演算ユニット#A乃至#D(501、511、521および531)に対応する。また、条件コードセットレジスタは例えばレジスタファイル310における条件コードセットレジスタ(rF[0乃至3])に対応する。また、条件コード書込み手段は例えばフラグ書込み部330に対応する。また、条件コード変換手段は例えばフラグ変換部340に対応する。また、オペランド供給手段は例えばオペランドセレクタ400に対応する。
また、請求項において、演算器は例えば演算ユニット#A乃至#D(501、511、521および531)に対応する。また、マスクレジスタは例えばマスクレジスタ322に対応する。また、マスク演算器は例えば論理積演算器342に対応する。また、反転レジスタは例えば反転レジスタ323に対応する。また、反転処理器は例えば排他的論理和演算器343に対応する。また、比較パターンレジスタは例えば比較パターンレジスタ324に対応する。また、比較器は例えば比較器344に対応する。また、変換テーブルは例えばフラグ変換テーブル345に対応する。また、選択器は例えば選択器346に対応する。また、オペランド供給手段は例えばオペランドセレクタ400に対応する。
なお、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。
本発明の実施の形態における演算処理装置の一構成例を示す図である。 本発明の実施の形態におけるレジスタユニット300の一構成例を示す図である。 本発明の実施の形態におけるフラグ書込み部330の動作モード例を示す図である。 本発明の実施の形態における設定レジスタ320およびフラグ変換部340の一構成例を示す図である。 本発明の実施の形態における命令フォーマットの一例を示す図である。 本発明の実施の形態におけるオペランドセレクタ400の第1のオペランドセレクタ#0(410)の一構成例を示す図である。 本発明の実施の形態におけるオペランドセレクタ400の第2のオペランドセレクタ#1(420)の一構成例を示す図である。 本発明の実施の形態における演算処理装置の動作を説明するための第1のプログラム例を示す図である。 図8の第1のプログラム例を実行するための設定レジスタ320の設定例を示す図である。 本発明の実施の形態における演算処理装置の動作を説明するための第2のプログラム例を示す図である。 図10の第2のプログラム例を実行するための設定レジスタ320の設定例を示す図である。 図10の第2のプログラム例を実行するためのフラグ変換テーブル345の設定例を示す図である。 本発明の実施の形態における演算処理装置の動作を説明するための第3のプログラム例を示す図である。 図13の第3のプログラム例を実行するための設定レジスタ320の設定例を示す図である。 図13の第3のプログラム例を実行するためのフラグ変換テーブル345の設定例を示す図である。 本発明の実施の形態における演算処理装置の動作を説明するための第4のプログラム例を示す図である。 図16の第4のプログラム例を実行するための設定レジスタ320の設定例を示す図である。 図16の第4のプログラム例を実行するためのフラグ変換テーブル345の設定例を示す図である。
符号の説明
100 命令メモリ
200 命令フェッチ/デコーダ
300 レジスタユニット
310 レジスタファイル
320 設定レジスタ
321 書込みモードレジスタ(Reg_WRMODE)
322 マスクレジスタ(Reg_MASK[3:0])
323 反転レジスタ(Reg_XOR[3:0])
324 比較パターンレジスタ(Reg_MATCH[3:0])
325 機能レジスタ(Reg_FUNC[1:0])
330 フラグ書込み部
340 フラグ変換部
342 論理積演算器
343 排他的論理和演算器
344 比較器
345 フラグ変換テーブル
346 選択器
400 オペランドセレクタ
411、412、421、422 選択器
500 実行ユニット群
501、511、521、531 演算ユニット
541 ロード/ストアユニット
551 分岐ユニット
600 データメモリ

Claims (2)

  1. それぞれ異なる演算を行ってその演算による演算結果および条件コードを生成する複数の演算器と、
    前記複数の演算器によって生成された条件コードを条件コードセットとして保持する条件コードセットレジスタと、
    前記条件コードセットレジスタに保持された前記条件コードセットの一部と前記複数の演算器によって同時に生成された前記条件コードの一部とを新たな条件コードセットとして前記条件コードセットレジスタに保持させる条件コード書込み手段と、
    前記条件コードセットに対して所定の変換を施して変換条件コードセットとして出力する条件コード変換手段と、
    前記変換条件コードセットに基づいて前記複数の演算器における前記演算のためのオペランドを供給するオペランド供給手段と
    を具備する演算処理装置。
  2. それぞれ異なる演算を行ってその演算による演算結果および条件コードを生成する複数の演算器と、
    前記条件コードの各々についてマスク演算を行うか否かを示すマスクビットを保持するマスクレジスタと、
    前記条件コードの各々について前記マスクレジスタに従ってマスク演算を行うマスク演算器と、
    前記マスク演算器により処理された前記条件コードの各々について反転処理を行うか否かを示す反転ビットを保持する反転レジスタと、
    前記マスク演算器により処理された前記条件コードの各々について前記反転レジスタに従って反転処理を行う反転処理器と、
    前記反転処理器により処理された前記条件コードの各々について比較対象となるパターンを保持する比較パターンレジスタと、
    前記反転処理器により処理された前記条件コードと前記比較パターンレジスタに保持されたパターンを比較する比較器と、
    前記反転処理器により処理された前記条件コードの組合せに対応した変換条件コードセットを保持する変換テーブルと、
    前記比較器の比較結果、前記反転処理器により処理された前記条件コード、または、前記反転処理器により処理された前記条件コードの組合せに対応して前記変換テーブルから読み出された前記変換条件コードセットの何れか1つを選択する選択器と、
    前記選択器の出力に基づいて前記複数の演算器における前記演算のためのオペランドを供給するオペランド供給手段と
    を具備する演算処理装置。
JP2006335583A 2006-12-13 2006-12-13 演算処理装置 Expired - Fee Related JP4228241B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006335583A JP4228241B2 (ja) 2006-12-13 2006-12-13 演算処理装置
US11/987,700 US8635434B2 (en) 2006-12-13 2007-12-04 Mathematical operation processing apparatus for performing high speed mathematical operations
CN2007101994391A CN101201736B (zh) 2006-12-13 2007-12-13 数学运算处理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006335583A JP4228241B2 (ja) 2006-12-13 2006-12-13 演算処理装置

Publications (2)

Publication Number Publication Date
JP2008146544A JP2008146544A (ja) 2008-06-26
JP4228241B2 true JP4228241B2 (ja) 2009-02-25

Family

ID=39516911

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006335583A Expired - Fee Related JP4228241B2 (ja) 2006-12-13 2006-12-13 演算処理装置

Country Status (3)

Country Link
US (1) US8635434B2 (ja)
JP (1) JP4228241B2 (ja)
CN (1) CN101201736B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8850166B2 (en) 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
JP5813484B2 (ja) 2011-11-30 2015-11-17 ルネサスエレクトロニクス株式会社 Vliwプロセッサと命令構造と命令実行方法
US9645820B2 (en) 2013-06-27 2017-05-09 Intel Corporation Apparatus and method to reserve and permute bits in a mask register
CN104966026A (zh) * 2015-06-03 2015-10-07 西安科技大学 数学运算系统
US20160378480A1 (en) * 2015-06-27 2016-12-29 Pavel G. Matveyev Systems, Methods, and Apparatuses for Improving Performance of Status Dependent Computations
JP6616608B2 (ja) * 2015-07-16 2019-12-04 ルネサスエレクトロニクス株式会社 半導体装置
CN107229722A (zh) * 2017-06-05 2017-10-03 商丘医学高等专科学校 一种智能数学运算处理系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USH1970H1 (en) * 1971-07-19 2001-06-05 Texas Instruments Incorporated Variable function programmed system
JPS6043751A (ja) 1983-08-18 1985-03-08 Hitachi Ltd 情報処理装置
GB2228597A (en) * 1989-02-27 1990-08-29 Ibm Data processor with conditional instructions
JP2793357B2 (ja) 1990-11-20 1998-09-03 株式会社東芝 並列演算装置
JP2928680B2 (ja) 1992-03-30 1999-08-03 株式会社東芝 複合条件処理方式
JPH0991141A (ja) 1995-09-26 1997-04-04 Toshiba Corp Vliw方式プロセッサ及び並列処理方法
TW325552B (en) * 1996-09-23 1998-01-21 Advanced Risc Mach Ltd Data processing condition code flags
CN1206145A (zh) * 1997-06-30 1999-01-27 索尼公司 带有流水线处理电路的信号处理器及其方法
JPH1153189A (ja) 1997-07-31 1999-02-26 Toshiba Corp 演算装置、演算方法及びコンピュータ読み取り可能な記録媒体
JP3830683B2 (ja) * 1998-12-28 2006-10-04 富士通株式会社 Vliwプロセッサ
US6697276B1 (en) * 2002-02-01 2004-02-24 Netlogic Microsystems, Inc. Content addressable memory device
KR100628573B1 (ko) * 2004-09-08 2006-09-26 삼성전자주식회사 조건부실행명령어의 비순차적 수행이 가능한 하드웨어장치 및 그 수행방법
EP1870803A4 (en) * 2005-03-31 2008-04-30 Matsushita Electric Ind Co Ltd PROCESSOR
JP3899114B2 (ja) 2006-04-28 2007-03-28 松下電器産業株式会社 プロセッサ

Also Published As

Publication number Publication date
CN101201736B (zh) 2011-08-10
JP2008146544A (ja) 2008-06-26
US8635434B2 (en) 2014-01-21
US20080148012A1 (en) 2008-06-19
CN101201736A (zh) 2008-06-18

Similar Documents

Publication Publication Date Title
US5233694A (en) Pipelined data processor capable of performing instruction fetch stages of a plurality of instructions simultaneously
KR101581177B1 (ko) 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공
JP6849274B2 (ja) 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック
JP4228241B2 (ja) 演算処理装置
JP2816248B2 (ja) データプロセッサ
JPH04109336A (ja) データ処理装置
KR20100125331A (ko) X86 가상머신을 지원하는 risc 프로세서 장치 및 방법
JP2834292B2 (ja) データ・プロセッサ
JP3449186B2 (ja) パイプラインバイパス機能を有するデータ処理装置
JP2011138308A (ja) プロセッサ、コプロセッサ、情報処理システムおよびそれらにおける制御方法
US6687808B2 (en) Data processor using indirect register addressing
JP6073392B2 (ja) 命令としてデータ値を評価するシステムおよび方法
JP5326314B2 (ja) プロセサおよび情報処理装置
JP2008165589A (ja) 情報処理装置
JP3983482B2 (ja) 高速ディスプレースメント付きpc相対分岐方式
KR100974401B1 (ko) 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치
WO2010067522A1 (ja) 演算ユニット、プロセッサ及び並列演算方法
JP2556182B2 (ja) デ−タ処理装置
JP2020502669A (ja) ベクトル生成命令
JP2504312B2 (ja) プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置
JP2002024008A (ja) データ処理装置およびプログラム変換装置
JP4533432B2 (ja) Tlb相関型分岐予測器及びその使用方法
JP3019818B2 (ja) データ処理方法
JP3147884B2 (ja) 記憶装置及び情報処理装置
JP3102399B2 (ja) データ処理装置及び方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080314

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080902

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081014

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: 20081105

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: 20081118

R151 Written notification of patent or utility model registration

Ref document number: 4228241

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111212

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121212

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131212

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees