JP2008250471A - 再構成可能なsimd型プロセッサ - Google Patents

再構成可能なsimd型プロセッサ Download PDF

Info

Publication number
JP2008250471A
JP2008250471A JP2007088656A JP2007088656A JP2008250471A JP 2008250471 A JP2008250471 A JP 2008250471A JP 2007088656 A JP2007088656 A JP 2007088656A JP 2007088656 A JP2007088656 A JP 2007088656A JP 2008250471 A JP2008250471 A JP 2008250471A
Authority
JP
Japan
Prior art keywords
selector
result
control circuit
control
group
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.)
Granted
Application number
JP2007088656A
Other languages
English (en)
Other versions
JP4232838B2 (ja
Inventor
Shohei Nomoto
祥平 野本
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2007088656A priority Critical patent/JP4232838B2/ja
Priority to PCT/JP2008/055885 priority patent/WO2008123361A1/ja
Priority to US12/593,498 priority patent/US20100174891A1/en
Priority to EP08739014.2A priority patent/EP2144158B1/en
Publication of JP2008250471A publication Critical patent/JP2008250471A/ja
Application granted granted Critical
Publication of JP4232838B2 publication Critical patent/JP4232838B2/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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • 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/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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Logic Circuits (AREA)

Abstract

【課題】従来構成に対して、僅かな回路規模の増加で、特性の異なる処理対象に柔軟に対応し、かつプロセッサ全体の性能が向上する再構成可能なSIMD型プロセッサ、および再構成可能なSIMD型プロセッサ方法を提供する。
【解決手段】PE−1の各汎用レジスタのGPR10を除算に要するサイクル数で、GPR11を1で、GPR20を被除数で、GPR21を除数で初期化し、加減算器Add/Sub−1により、GPR10からGPR11を減算し、除算に要するサイクル数をカウントし、カウント値が規定値に達するまで、加減算器Add/Sub−2により、GPR20からGPR21を減算し、減算結果が正であった場合には、減算結果を、減算結果が負であった場合には、GPR20を1bit左シフトした値でGPR20を更新し、GPR22からMSBを取り除き、LSBに減算結果のMSBを反転した値を加えたビット列でGPR22を更新する。
【選択図】図2

Description

本発明は、再構成可能なSIMD型プロセッサに関し、特に、マルチサイクル命令を効率的に実現できる再構成可能なSIMD型プロセッサに関する。
近時、安全・防犯意識の高まりと共に、様々な場所にカメラが設置され、カメラから得られた画像に対する多様な画像処理により、自動車事故の回避や、オフィスの入退場管理などが実現され始めている。これらの画像処理は、短時間で多くの計算を行う必要があるため、多数のデータを高速に処理可能な並列処理プロセッサが用いられている。
前述した並列処理プロセッサの1つとして、単一の演算命令に基づき、多数のプロセッシングエレメント(PE)を並列動作させるSIMD(Single Instruction Multiple Data)型プロセッサが開発されている。
SIMD型プロセッサは、多数のPEが並列動作することから高い性能を発揮できる。 また、多数のPEの制御が共通であることから、単一の制御情報のみを生成すればよく、制御回路が少なく済み回路規模を小さくすることができる。
一方で、SIMD型プロセッサは多数のPEから構成されるため、PE単体の高機能化・複雑化は、SIMD型プロセッサの回路規模を著しく大きくするため、PEの複雑度とPE数はトレードオフの関係にある。
実際に、非特許文献1では、2bitのALU(Arithmetic Logic Unit)を配した単純なPEを多数用いて、SAD(Sum of Absolute Difference)のような単純な処理を高速に実行している。また、特許文献1、特許文献2では、浮動小数点演算器を配した複雑なPEを少数用いて、3DCGのような複雑な処理を実現している。
また、SIMD型プロセッサではないが、特許文献3には、1サイクルで実行可能な単純な命令は複数のパイプラインを独立に使用して並列実行し、大量のデータ処理や複雑な処理を必要とする高機能命令は複数のパイプラインを同時に使用し高速化を図るCICS型プロセッサが開示されている。
M.Nakajima、etc著、"A 40GOPS 250mW Massively Parallel Processor Based on Matrix Architecture"、2006 IEEE International Solid−State Circuits Conference Digest of Technical Paperステップ2006年2月6日、pp1616〜1625 特開2000−148695号公報 特開2001−256199号公報 特開平6−51984号公報
前述したように、従来のSIMD型プロセッサでは、PE単体の性能とその個数が固定的であったため、特性の異なる処理対象に柔軟に対応できない、という課題があった。
このため、非特許文献1では、2bitの演算器から成る単純なPEを2048個用いることにより、単純な演算を多数で実行すると共に、2bit以上の精度が必要な演算には、隣接する複数PEの演算器を組み合わせることにより対処していた。
しかし、複数PEの演算器を組み合わせただけでは、SIMD型プロセッサ全体の処理性能は同じままである。
例として、2bit加算器からなるPEを16個用いるプロセッサにおいて16個の8bit加算を行う場合を考える。
4個のPEを接続して8bit加算をする場合には、1サイクルに4(=16/4)個処理できるため、16個の8bit加算を4サイクルで実現できる。
一方で、個々のPEで、2bit毎に桁上げ加算する場合には、1つの8bit加算に4サイクルを要するものの、同時に16個の8bit加算を行えるため、16個の8bit加算を4サイクルで実現できる。
このように、複数PEの同種類の演算器を組み合わせただけでは、SIMD型プロセッサ全体の性能向上は望めず、応用範囲も演算のビット幅を変更できるなど限定されており、特性の異なる処理対象に柔軟に対応できていなかった。
本発明の目的は、上記の課題の認識に基づき創案されたものであって、その目的は、同数のPEから構成されるSIMD型プロセッサ等に対して、僅かな資源の増加で、特性の異なる処理対象に柔軟に対応し、全体の性能向上を可能とする再構成可能な、並列演算プロセッサを提供することにある。
本願で開示される発明は前記課題を解決するため概略以下の構成を有する。
本発明に係る並列演算プロセッサは、1命令を実行する演算単位を1グループとし、1グループが複数のプロセッシングエレメント(PE)から構成される場合、該1グループの演算単位は、1つのPEが1グループを構成する場合に実行可能な命令単位よりも、複雑な命令を実行する単位であり、
複数のPEよりなる1グループとして演算可能な複数のPEを備え、
命令に応じて、前記グループを構成するPEの数を変える。
本発明においては、前記命令に応じて、前記グループを構成するPEの構成の情報を予め保持し、
前記命令に応じて、前記情報に基づき、PEの構成を変化させる。
本発明においては、前記命令が、前記PEの複数サイクルで実行されるマルチサイクル命令であるときに、前記情報に、パイプラインレジスタの構成が規定される。
本発明においては、前記1グループが1個のPEで構成される場合、
前記PEは、前記PEの演算結果を格納する汎用レジスタを備え、
前記1グループが、前記マルチサイクル命令を実行する複数PEで構成される場合、
前記汎用レジスタを、パイプラインレジスタとして利用する。
本発明においては、前記1グループがマルチサイクル命令を実行する複数PEで構成される場合、前記各PEが備える演算器、及び汎用レジスタは、それぞれ、
前記マルチサイクル命令を実現する演算器、及びパイプラインレジスタの少なくとも一部を構成する。
本発明においては、前記マルチサイクル命令がマルチサイクル整数除算命令であるときに、
前記1グループは複数PEで構成され、
前記1グループ内の第1のPEは、
前記マルチサイクル整数除算命令のサイクルをカウントするカウンタとして動作し、
前記1グループ内の第1とは異なる第2のPEは、
前記カウンタに応じて、前記サイクルの回数、前記マルチサイクル整数除算命令の被除数から除数を減算する。
本発明においては、前記第1のPEは、
加減算器と、
汎用レジスタと、
を備え、
前記マルチサイクル整数除算命令を実行する場合に、
前記第1のPEにおいて、
サイクルのカウンタ値を前記第1のPEの前記汎用レジスタに保存し、前記カウンタ値を、前記加減算器により更新する。
本発明においては、前記第2のPEは、
加減算器と、
汎用レジスタと、
を備え、
前記マルチサイクル整数除算命令を実行する場合に、
前記第2のPEにおいて、
前記汎用レジスタに、除数、被除数、除算途中結果を保存し、
前記加減算器により前記除数から前記被除数を減算し、減算結果を前記汎用レジスタに前記除算途中結果として保存する。
本発明においては、前記マルチサイクル命令がマルチサイクル浮動小数点加減算命令であるときに、
前記1グループは複数PEで構成され、
前記1グループ内の第1のPEは、
浮動小数点オペランドの加減算を行い、
前記1グループ内の第1とは異なる第2のPEは、
前記加減算結果の正規化処理を行う。
本発明においては、前記第1のPEは、
加減算器と、
差分器と、
バレルシフタと、
汎用レジスタと、
を備え、
前記マルチサイクル浮動小数点加減算命令を実行する場合に、
前記第1のPEにおいて、
前記差分器と前記バレルシフタにより、オペランドの小数点位置合わせを行い、
前記加減算器により、前記位置合わせ結果を加減算し、
前記汎用レジスタを、前記小数点位置合わせ結果と前記加減算結果の一次保存場所とする。
本発明においては、前記第2のPEは、
加減算器と、
差分器と、
バレルシフタと、
汎用レジスタと、
正規化制御器と、
を備え、
前記マルチサイクル浮動小数点加減算命令を実行する場合に、
前記第2のPEにおいて、
前記正規化制御器の制御に基づき、前記加減算器と前記差分器と前記バレルシフタにより、前記第1のPEの加減算結果を正規化し、
前記汎用レジスタを、正規化の途中結果の一次保存場所とする。
本発明においては、前記マルチサイクル命令がマルチサイクル浮動小数点乗算命令である場合に、
前記1グループは複数PEで構成され、
前記1グループ内の第1のPEは、
2つの浮動小数点オペランドの乗算と、前記乗算結果の正規化処理の一部を行い、
前記グループ内の第1とは異なる第2のPEは、
前記第1のPEと協調して、前記乗算結果の正規化を行う。
本発明においては、前記第1のPEは、
乗算器と、
バレルシフタと、
リーディングワン回路と、
汎用レジスタと、
を備え、
前記マルチサイクル浮動小数点乗算命令を実行する場合には、
前記第1のPEにおいて、
前記乗算器は、オペランドの仮数部の乗算を行い、
前記バレルシフタは、前記乗算結果の正規化の一部を行い、
前記汎用レジスタを、乗算結果と正規化の途中結果の一次保存場所とする。
本発明においては、前記第1のPEは、
加算器と、
バレルシフタと、
汎用レジスタと、
正規化制御器と、
を備え、
前記マルチサイクル浮動小数点乗算命令を実行する場合には、
前記第1のPEにおいて、
前記正規化制御器の制御に基づき、前記加減算器と、前記バレルシフタと、前記第1のPEのバレルシフタにより、前記乗算結果の正規化を行い、
前記汎用レジスタを、正規化の途中結果の一次保存場所とする。
本発明においては、前記マルチサイクル命令がマルチサイクル浮動小数点除算命令である場合に、
前記1グループは複数PEで構成され、
前記1グループ内の第1のPEは、
2つの浮動小数点オペランドの除算を行い、
前記1グループ内の第1とは異なる第2のPEは、
前記除算を実行するサイクルのカウントと、前記除算結果の正規化を行う。
本発明においては、前記第1のPEは、
加算器と、
汎用レジスタと、
を備え、
前記マルチサイクル浮動小数点除算命令を実行する場合には、
前記第1のPEにおいて、
前記汎用レジスタに、除数、非除数、除算途中結果を保存し、
前記加減算器により、前記除数から前記被除数を減算し、減算結果を、前記除算途中結果に保存する。
本発明においては、前記第2のPEは、
加算器と、
バレルシフタと、
汎用レジスタと、
正規化制御器と、
を備え、
前記マルチサイクル浮動小数点除算命令を実行する場合には、
前記第2のPEにおいて、
サイクルのカウンタ値を、前記汎用レジスタに保存し、
前記カウンタ値を前記加減算器により更新し、
前記正規化制御器の制御に基づき、前記加算器と前記バレルシフタにより、前記第1のPEの除算結果を正規化し、
前記汎用レジスタを、正規化の途中結果の一次保存場所とする。
本発明においては、前記第1のPEと第2のPEの演算器はPE演算器間接続50を介して接続されている。
本発明においては、前記第1のPEは、
制御回路と、
複数のレジスタを含む汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記汎用レジスタ群の出力は、前記制御回路によって制御された第1のセレクタ(mux1−0)で選択され、演算命令のオペランドとして、前記演算器群と前記データメモリに供給され、
前記演算器群は、
加減算器と、
乗算器と、
バレルシフタと、
を備え、それぞれ、前記制御回路の制御に基づき、前記第1のセレクタ(mux1−0)から供給されたオペランドに対する演算を行い、演算結果は、前記制御回路によって制御された第2のセレクタ(mux1−1)で選択されて第3のセレクタ(mux5)に供給され、
前記データメモリには、前記制御回路の制御に基づき、前記第1のセレクタ(mux1−0)の出力、及び、外部メモリに接続されるデータ転送網からのデータが書き込まれ、
前記データメモリから読み出されたデータは、前記第3のセレクタ(mux5)及び前記外部メモリに接続されるデータ転送網に供給され、
前記第3のセレクタ(mux5)は、前記制御回路の制御に基づき、前記第2のセレクタ(mux1−1)の選択結果、前記データメモリの読み出し結果、前記PE演算器間接続50を介して提供される第2のPEのレジスタのいずれか1つを選択し、選択結果を、前記汎用レジスタ群に供給して値を更新する。
本発明においては、前記第2のPEは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記演算器群は、
加減算器と、
乗算器と、
バレルシフタと、
を備え、
前記汎用レジスタ群の出力は、前記制御回路によって制御された第1のセレクタ(mux2−0)で選択され、演算命令のオペランドとして、前記演算器群と前記データメモリに供給され、
前記制御回路の制御に基づき、第6のセレクタ(mux4)の選択結果と、第5のセレクタ(mux3)の選択結果を選択して、前記レジスタ群の第1のレジスタに供給する第2のセレクタ(mux0)と、
前記制御回路の制御に基づき、前記第6のセレクタ(mux4)の選択結果と、前記レジスタ群の第2のレジスタから読み出したビット列からLSB(Least Significant Bit)を取り除き、MSB(Most Significant Bit)に0を加えた値を選択して、前記第2のレジスタに供給する第3のセレクタ(mux1)と、
前記制御回路の制御に基づき、前記第6のセレクタ(mux4)の選択結果と、前記レジスタ群の第3のレジスタから読み出したビット列からMSBを取り除き、LSBに前記加減算器の減算結果のMSBを加えた値を選択して、前記第3のレジスタに供給する第4のセレクタ(mux2)と、
を備え、
前記演算器群は、前記制御回路の制御に基づき、前記第1のセレクタ(mux2−0)から供給されたオペランドに対する演算を行い、演算結果は、前記制御回路によって制御された第7のセレクタ(mux2−1)で選択されて第6のセレクタ(mux4)に供給され、
前記データメモリには、前記制御回路の制御に基づき、前記第1のセレクタ(mux2−0)の出力、及び、外部メモリに接続されるデータ転送網からのデータが書き込まれ、
前記データメモリから読み出されたデータは、前記第6のセレクタ(mux4)及び前記外部メモリに接続されるデータ転送網に供給され、
前記第5のセレクタ(mux3)は、前記制御回路の制御に基づき、前記加減算器の演算結果と、前記第1のセレクタ(mux2−0)で選択された一方のオペランドを選択し、第2のセレクタ(mux0)に供給し、
前記第6のセレクタ(mux4)は、前記制御回路の制御に基づき、前記第7のセレクタ(mux2−1)の選択結果、前記データメモリの読み出し結果の一方を選択し、選択結果を汎用レジスタ群に供給し更新する構成としてもよい。
本発明によれば、複数のプロセッシングエレメント(PE)を1グループ(命令の実行単位であり、1つのPEが実行可能な命令よりも複雑な命令を実行する最小単位)として演算するPEから構成され、命令に応じて、グループを構成するPEの数を変える構成としたことで、資源の増加を抑制しながら、特性の異なる処理対象に柔軟に対応し、全体の性能向上を可能とする再構成可能なプロセッサを実現している。
本発明の実施の形態について図面を参照して以下に説明する。
<実施の形態1>
実施の形態1では、1グループが複数のPEで構成された際に、グループがマルチサイクル型整数除算命令を実行する再構成可能なSIMD型プロセッサについて説明する。
図1は、実施の形態1の構成を示すブロック図である。図1に示すように、再構成可能なSIMD型プロセッサは、演算要素であるPE−1〜PE−m(10−1〜10−m)と、PE−1〜PE−mを制御するコントロールプロセッサCP(20)と、PE−1〜PE−mとCPから読み書きされる外部メモリEMEM(30)を備えている。また、EMEM(30)と各PE−1〜PE−mは、EMEMデータ転送網40を介して接続され、各PE−1〜PE−mは、PE演算器間接続50で接続される。
PE−1〜PE−mは、各PEの演算を制御するコントローラPE Ctr−1〜PE Ctr−m(11−1〜11−m)と、演算を行う演算器群−1〜演算器群−m(13−1〜13−m)、演算器群−1〜演算器群−mへのオペランドを供給し、その演算結果を格納する汎用レジスタ群RegFiles−1〜RegFiles−m(12−1〜12−m)、RegFiles−1〜RegFiles−mおよびEMEMとの間でデータの読み書きを行う内蔵メモリRAM−1〜RAM−m(14−1〜14−m)を備えている。
CP(20)は、SIMD型プロセッサの命令流、およびPE Ctr−1〜PE Ctr−mを制御する制御情報生成回路PC Ctr(21)、プログラムを格納するプログラムメモリPRAM(24)、演算を行う演算器群−0(23)、演算器群−0へのオペランドを供給し、その演算結果を格納する汎用レジスタ群RegFiles−0(22)、RegFiles−0およびEMEM(30)との間でデータの読み書きを行うデータメモリDRAM(25)とを備えている。
また、CP(20)のPC Ctr(21)の制御情報は、PE制御情報パス60を介して、PE Ctr−1〜PE Ctr−mに送られる。
図2は、図1のPE−1とPE−2の内部の詳細な構成を示すブロック図である。本実施の形態では、1グループがマルチサイクル型整数除算命令を実行する際に、1つのグループが2個のPEから構成される場合について説明するが、本発明はかかる構成にのみ限定されるものでないことは勿論である。1グループは2個以上のPEから構成されればよい。
また、以下で述べるPE−1とPE−2の役割分担は、一例に過ぎず、本発明の範囲内において、自由な構成を取り得る。
図2に示すように、PE−1の汎用レジスタ群RegFiles−1は、複数のレジスタGPR10〜GPR1pから構成され、セレクタmux5の選択結果により更新される。
また、それらの出力は、PE Ctr−1に制御されたセレクタmux1−0で選択され、オペランド(opr0、opr1)として、演算器群−1、およびRAM−1に供給される。
PE−1の演算器群−1は、加減算器Add/Sub−1、乗算器Mul−1、バレルシフタBarrel Shifter−1から構成され、それぞれの演算器は、PE Ctr−1の制御に基づき、汎用レジスタ群RegFiles−1から供給されたオペランド(opr0、 opr1)に対する演算を行う。
演算結果は、PE Ctr−1に制御されたセレクタmux1−1で選択され、セレクタmux5に提供される。
図2に示したPE−1の演算器群−1の構成は一例に過ぎず、少なくとも演算種類の異なる複数の演算器から構成されればよい。
PE−1のRAM−1は複数の記憶素子から構成され、PE Ctr−1の制御に基づき、汎用レジスタ群RegFiles−1およびEMEMデータ転送網からのデータを記憶素子に書き込む。
また、RAM−1記憶素子から読み出したデータはセレクタmux5およびEMEMデータ転送網40に供給される。
セレクタmux5は、PE Ctr−1の制御に基づき、
セレクタmux1−1の選択結果、
RAM−1の読み出し結果、
PE演算器間接続50を介して提供されるPE−2のレジスタGPR22
のうちのいずれか1つを選択し、選択結果を、汎用レジスタ群RegFiles−1に供給する。
PE−2の汎用レジスタ群RegFiles−2は、複数のレジスタGPR20〜GPR2pから構成され、GPR20、GPR21、GPR22はそれぞれ、セレクタ(mux0、mux1、mux2)の選択結果により更新され、GPR23〜GPR2pは、セレクタmux4の選択結果により更新される。また、それらの出力は、PE Ctr−2に制御されたセレクタmux2−0で選択され、オペランド(opr0、opr1)として演算器群−2およびRAM−2に供給される。
セレクタmux0は、PE Ctr−2の制御に基づき、セレクタmux4の選択結果と、セレクタmux3の選択結果を選択して、GPR20に提供する。
セレクタmux1は、PE Ctr−2の制御に基づき、セレクタmux4の選択結果と、GPR21から読み出したビット列からLSB(Least Significant Bit)を取り除き、MSB(Most Significant Bit)に0を加えた値を選択して、GPR21に提供する。
セレクタmux2は、PE Ctr−2の制御に基づき、セレクタmux4の選択結果と、GPR22から読み出したビット列からMSB(Most Significant Bit)を取り除き、LSB(Least Significant Bit)に、Add/Sub−2の減算結果のMSBを加えた値を選択して、GPR22に提供する。なお、GPR22の出力はPE演算器間接続50を介してPE−1のセレクタmux5に供給される。
PE−2の演算器群−2は、加減算器Add/Sub−2、乗算器Mul−2、バレルシフタBarrel Shifter−2から構成され、それぞれの演算器は、PE Ctr−2の制御に基づき、汎用レジスタ群RegFiles−2から供給されたオペランド(opr0、opr1)に対する演算を行う。
演算結果は、PE Ctr−2に制御されたセレクタmux2−1で選択され、セレクタmux4に供給される。
なお、図2に示したPE−2の演算器群−2の構成は一例に過ぎず、少なくとも演算種類の異なる複数の演算器から構成されればよい。
PE−2のRAM−2は記憶素子から構成され、PE Ctr−2の制御に基づき、汎用レジスタ群RegFiles−2およびEMEMデータ転送網40からのデータを記憶素子に書き込む、または、記憶素子から読み出したデータをセレクタmux4およびEMEMデータ転送網40に提供する。
セレクタmux3は、PE Ctr−2の制御に基づき、加減算器Add/Sub−2の演算結果と、セレクタmux2−0で選択された一方のオペランドopr0を選択し、セレクタmux0に提供する。
セレクタmux4は、PE Ctr−2の制御に基づき、
セレクタmux2−1の選択結果、
RAM−2の読み出し結果
の一方を選択し、
選択結果を汎用レジスタ群RegFiles−2に提供する。
図3は、図1及び図2に示した再構成可能なSIMD型プロセッサにおいて、1グループが複数のPEで構成された際に、グループがマルチサイクル型整数除算命令を実行する再構成可能なSIMD型プロセッサの処理手順の一例を示すフローチャートである。図4は、図3の各ステップが実行されるタイミングチャートを示す図である。図2乃至図4を参照して、マルチサイクル型整数除算命令を実行する再構成可能なSIMD型プロセッサ方法について、詳細に説明する。
まず、PE−1では、GPR10を除算に要するサイクル数で、GPR11を1で初期化し、PE−2では、GPR20を被除数で、GPR21を除数で、GPR22を0で初期化する(ステップ1000)。
ステップ1000は、図4に示すように、最初のサイクルtで実行される。
ステップ1000では、GPR10、GPR11、GPR20、GPR21、GPR22を初期化対象のレジスタとするが、本発明は、かかる構成に限定されず、任意のレジスタを対象としてもよい。
次に、PE Ctr−1の制御に基づき、セレクタmux1−0により、GPR10とGPR11を演算のオペランド(opr0、opr1)として選択し、加減算器Add/Sub−1によって、opr0からopr1を減算する(ステップ1001)。
ここでは、opr1の値1をレジスタ値(GPR11)として提供するが、値1は必ずしもレジスタ値である必要は無く、即値などの他手段によって提供されても構わない。
演算結果が正の場合、ステップ1003を実行し、演算結果が負の場合、ステップ1005を実行する、また、演算結果の正負をPE Ctr−1に通知する(ステップ1002)。
ここでは、必要とするカウント値をGPR10に、GPR11に1を設定し、GPR10からGPR11を減算し、その正負により、マルチサイクル型整数除算命令を実行するサイクル数をカウントしている。
しかし、サイクル数のカウントの仕方は、かかる構成に限定されるものでなく、例えば、初期値0に対して1を加算し、必要とするサイクル数と比較するなどの手法を用いてもよいことは勿論である。
演算結果が正であった場合に、PE−2では、PE Ctr−2の制御に基づき、セレクタmux2−0により、GPR20とGPR21を演算のオペランド(opr0、opr1)として選択し、加減算器Add/Sub−2によって、前記opr0から前記opr1を減算する(ステップ1003)。
次に、PE−1では、PE Ctr−1の制御に基づき、セレクタmux1−1およびセレクタmux5により、前記加減算器Add/Sub−1の演算結果を選択し、その選択結果で、GPR10を更新する(ステップ1004)。
また、PE−2では、加減算器Add/Sub−2の演算結果の正負により、セレクタmux3を制御し、演算結果が正であった場合には、演算結果を選択し、演算結果が負であった場合には、opr0を選択する。
次に、PE Ctr−2の制御に基づき、セレクタmux0により、mux3の選択結果を選択し、選択結果により、GPR20を更新する(ステップ1004)。
また、PE Ctr−2の制御に基づき、セレクタmux1により、GPR21から読み出したビット列からLSB(Least Significant Bit)を取り除き、MSB(Most Significant Bit)に0を加えた値を選択して、GPR21を更新する(ステップ1004)。
また、PE Ctr−2の制御に基づき、セレクタmux2により、GPR22から読み出したビット列からMSBを取り除き、LSBにAdd/Sub−2の減算結果のMSBを反転した値を加えた値を選択して、GPR22を更新する(ステップ1004)。
一方、加減算器Add/Sub−1の演算結果が負であった場合に、PE−2では、整数除算の演算結果であるGPR22の値を、PE演算器間接続50を介して、PE−1に送り、PE−1では、除算サイクル数が規定値に達したことを通知されたPE Ctr−1の制御に基づき、セレクタmux5により、整数除算結果を選択し、汎用レジスタRegFiles−1内の任意のレジスタに書き込む(ステップ1005)。
図4に示すように、ステップ1001〜1004は同じサイクルで実行され、加減算器Add/Sub−1の演算結果が正である場合は、複数サイクルの間、繰り返し実行される。加減算器Add/Sub−1の演算結果が負である場合は、ステップ1001〜1005が実行され、マルチサイクル型整数除算命令の実行が終了する。
以上のように、本実施の形態によれば、複数セレクタ(mux0〜mux3)を追加し、セレクタmux5とPE Ctr−1、PE Ctr−2の制御回路を拡張することで、マルチサイクル型整数除算命令を実現することができる。
回路規模の大きな演算器やレジスタを新規に追加する必要がないため、僅かな回路増加で、マルチサイクル型整数除算命令を実現することができる。
また、1個のPEが既に実行可能な命令の組合せで、整数除算命令を実現する場合には、サイクルの制御、被除数から除数の減算、演算結果のビット操作を、既存命令でシーケンシャルに実現する必要があったため、除算結果一桁を計算するのに、10サイクル程度を必要としていた。
これに対して、本実施の形態によれば、同時に実行できる整数除算の命令数は半分になるものの、除算結果一桁を1サイクルで計算できるため、1個のPEで整数除算を実現した場合に比べ、SIMD型プロセッサ全体で、約5倍の性能向上を実現できる。
<実施の形態2>
本発明の第2の実施の形態では、1グループが複数のPEで構成された際に、前記グループがマルチサイクル型浮動小数点加減算命令を実行する再構成可能なSIMD型プロセッサについて、詳細に説明する。ここでは、浮動小数点数の表現形式として、IEEE754の単精度を用いる。
図5に、IEEE754の単精度のビット配列を示す。図5に示すように、IEEE754の単精度は32bitのビット列から形成され、それらが、符号部(S)、指数部(E)、仮数部(F)に分かれている。
図6に示したように、±[符号部]1.[仮数部]×2^[指数部]により、実数値を表現する。以下では、演算対象となるオペランド0、オペランド1の符号部をS0、S1、指数部をE0、E1、仮数部F0、F1として説明を行う。ここでは、浮動小数点数の表現形式としてIEEE754の単精度を用いているが、他の表現形式を用いてもよいことは勿論である。
本発明の第2の実施の形態のSIMD型プロセッサ全体の構成は、図1に示した第一の実施の形態と同様である。このため、図1を参照して第2の実施の形態を説明することは省略する。
図7、図8は、それぞれ、図1のPE−1とPE−2の内部の詳細な構成をそれぞれ示す図である。本実施の形態では、1グループがマルチサイクル型浮動小数点加減算命令を実行する際に、グループが2個のPEから構成される場合について説明する。なお、本発明において、1グループは2個以上のPEから構成されればよい。また、以下に説明されるPE−1とPE−2の役割分担は一例に過ぎず、本発明は、かかる構成にのみ限定されるものでないことは勿論である。
図7、図8に示すように、PE演算器間接続50を介して、PE−1はPE−2から、浮動小数点加減算命令のオペランドであるfopr0、fopr1を受け取り、PE−1からPE−2に、浮動小数点加減算命令の途中結果である仮数途中結果tmpfと、指数途中結果tmpeと、符号結果signを提供する。以下では、図7を参照してPE−1について説明する。
PE−1の汎用レジスタ群RegFiles−1は、複数のレジスタGPR10〜GPR1pから構成され、GPR10、GPR11、GPR12はそれぞれ、セレクタ(mux00、mux01、mux02)の選択結果により更新され、GPR13〜GPR1pは、セレクタmux07の選択結果により更新される。
また、それらの出力は、PE Ctr−1に制御されたセレクタmux1−0で選択され、オペランド(opr0、opr1)として演算器群−1およびRAM−1に供給される。
セレクタmux00は、PE Ctr−1の制御に基づき、PE演算器間接続50を介して、PE−2より提供されたfopr0と、セレクタmux07の選択結果を選択して、GPR10に提供する。
セレクタmux01は、PE Ctr−1の制御に基づき、PE演算器間接続50を介して、PE−2より提供されたfopr1と、セレクタmux07の選択結果の一方を選択して、GPR11に提供する。
セレクタmux02は、PE Ctr−1の制御に基づき、演算器群−1の差分器Abs−1の演算結果の下位半分を下位、GPR12の下位半分を上位とするビット列と、セレクタmux07の選択結果の一方を選択して、GPR12に提供する。
PE−1の演算器群−1は、
加減算器Add/Sub−1、
乗算器Mul−1、
差分器Abs−1、
バレルシフタBarrel Shifter−1
を備えている。
加減算器Add/Sub−1は、セレクタmux03の選択結果とopr1をオペラントとして、PE Ctr−1の制御に基づいた演算を行う。
乗算器Mul−1は、opr0とopr1をオペラントとして、PE Ctr−1の制御に基づいた演算を行う。
差分器Abs−1は、セレクタmux04およびセレクタmux05の選択結果をオペラントとして、PE Ctr−1の制御に基づいた演算を行う。
バレルシフタBarrel Shifter−1は、opr0とセレクタmux06の選択結果をオペラントとして、PE Ctr−1の制御に基づいた演算を行う。
演算結果は、PE Ctr−1に制御されたセレクタmux1−1で選択され、セレクタmux07に提供される。
セレクタmux03は、PE Ctr−1の制御に基づき、バレルシフタBarrel Shifter−1の演算結果と、opr0を選択して、加減算器Add/Sub−1に提供する。
セレクタmux04は、PE Ctr−1の制御に基づき、PE演算器間接続50を介して、PE−2より提供されたfopr0の指数部E0と、opr0を選択して、差分器Abs−1に提供する。
セレクタmux05は、PE Ctr−1の制御に基づき、PE演算器間接続50を介して、PE−2より提供されたfopr1の指数部E1と、opr1を選択して、差分器Abs−1に提供する。
セレクタmux06は、PE Ctr−1の制御に基づき、GPR12の下位半分とその上位半分に0を埋めたビット列と、opr1を選択して、バレルシフタBarrel Shifter−1に提供する。
PE−1のRAM−1は記憶素子から構成され、PE Ctr−1の制御に基づき、汎用レジスタ群RegFiles−1およびEMEMデータ転送網40からのデータを記憶素子に書き込む、または、記憶素子から読み出したデータをセレクタmux07およびEMEMデータ転送網40に提供する。
セレクタmux07は、PE Ctr−1の制御に基づき、セレクタmux1−1の選択結果、RAM−1の読み出し結果を選択し、選択結果を汎用レジスタ群RegFiles−1に提供する。
図8に示すように、PE演算器間接続50を介して、PE−2は、PE−1から、浮動小数点加減算命令の途中結果である仮数途中結果tmpfと、指数途中結果tmpeと、符号結果signを受け取り、PE−2からPE−1に、浮動小数点加減算命令のオペランドであるfopr0、fopr1を提供する。
図8を参照して、PE−2の詳細な構成について述べる。PE−2の汎用レジスタ群RegFiles−2は、複数のレジスタGPR20〜GPR2pから構成され、GPR20、GPR21はそれぞれ、セレクタ(mux08、mux09)の選択結果により更新され、GPR22〜GPR2pは、形式成型器formの選択結果により更新される。また、それらの出力は、PE Ctr−2に制御されたセレクタmux2−0で選択され、オペランド(opr0、opr1)として演算器群−2およびRAM−2に供給される。
セレクタmux08は、PE Ctr−2の制御に基づき、PE演算器間接続50を介して、PE−1より提供された指数途中結果tmpeを下位に、符号結果signをその上位としたビット列と、セレクタmux15の選択結果を選択して、GPR20に提供する。
セレクタmux09は、PE Ctr−2の制御に基づき、演算器群−2の差分器Abs−2の演算結果と、セレクタmux15の選択結果を選択して、GPR21に提供する。
PE−2の演算器群−2は、加減算器Add/Sub−2、乗算器Mul−2、差分器Abs−2、バレルシフタBarrel Shifter−2を備えている。
加減算器Add/Sub−2はセレクタmux10とセレクタmux11の選択結果をオペラントとして、PE Ctr−2の制御に基づいた演算を行う。
乗算器Mul−2はopr0とopr1をオペラントとして、PE Ctr−2の制御に基づいた演算を行う。
差分器Abs−2はセレクタmux12とセレクタmux13の選択結果をオペラントとして、PE Ctr−2の制御に基づいた演算を行う。
バレルシフタBarrel Shifter−2 はopr0とセレクタmux14の選択結果をオペラントとして、PE Ctr−2の制御に基づいた演算を行う。
演算結果は、PE Ctr−2に制御されたセレクタmux2−1で選択され、セレクタmux15に提供される。
セレクタmux10は、PE Ctr−2の制御に基づき、バレルシフタBarrel Shifter−2の演算結果と、opr0を選択して、加減算器Add/Sub−2に提供する。
セレクタmux11は、PE Ctr−2の制御に基づき、値1と、opr1を選択して、加減算器Add/Sub−2に提供する。
セレクタmux12は、PE Ctr−2の制御に基づき、PE演算器間接続50を介して、PE−1より提供された仮数途中結果tmpfと、opr0を選択して、差分器Abs−2に提供する。
セレクタmux13は、PE Ctr−2の制御に基づき、値0と、opr1を選択して、差分器Abs−2に提供する。
セレクタmux14は、PE Ctr−2の制御に基づき、リーディングワンLeadingOneの演算結果と、opr1を選択して、バレルシフタBarrel Shifter−2に提供する。
また、PE−2の演算器群−2は、
浮動小数点加減算命令の実行のみに使用するリーディングワンLeadingOne、加算器Add、丸め検出器Round、を備えている。
リーディングワンLeadingOneは、オペランドopr0のビット列をMSB側から検索し、MSBから最初に現れた1までの距離を計算し、加算器Addとセレクタmux14に提供する。
加算器Addは、opr1の部分ビット列と、リーディングワンLeadingOneの検索結果を加算し、形式成型器formに提供する。
丸め検出器Roundは、バレルシフタBarrel Shifter−2の演算結果が丸めを必要とするかを判定し、判定結果をセレクタmux2−1に提供する。
PE−2のRAM−2は、記憶素子から構成され、PE Ctr−2の制御に基づき、汎用レジスタ群RegFiles−2およびEMEMデータ転送網からのデータを記憶素子に書き込む、
または、記憶素子から読み出したデータをセレクタmux15およびEMEMデータ転送網40に提供する。
セレクタmux15は、PE Ctr−2の制御に基づき、セレクタmux2−1の選択結果、RAM−2の読み出し結果を選択し、選択結果を形式成型器formに提供する。
形式成型器formは、PE Ctr−2の制御に基づき、セレクタmux15の選択結果を仮数部、加算器Addの演算結果を指数部、符号結果signを符号部として選択し、IEEE754の単精度の形式に整え、その結果を汎用レジスタ群RegFiles−2に提供する。
図9は、図1、図7、図8に示した第2の実施の形態の再構成可能なSIMD型プロセッサにおいて、1グループが複数のPEで構成された際に、グループがマルチサイクル型浮動小数点加減算命令を実行する再構成可能なSIMD型プロセッサの動作を示すフローチャートである。図10は、図9の各ステップが実行されるタイミングチャートである。以下では、図9と図10を用いて、マルチサイクル型浮動小数点加減算命令を実行する再構成可能なSIMD型プロセッサ方法について、詳細に説明する。
まず、PE−2では、GPR20を浮動小数点のオペランド0(fopr0)で、GPR21を浮動小数点のオペランド1(fopr1)で初期化する(ステップ2000)。ステップ2000は、図10に示すように、最初のサイクルtで実行される。
ステップ2000では、GPR20、GPR21を初期化対象のレジスタとするが、本発明は、かかる構成に限定されるものでなく、任意のレジスタを対象とする。また、浮動小数の1つのオペランドは、即値による指定、2つ以上のレジスタの組合せによって表現されてもよい。
次に、GPR20とGPR21に格納された浮動小数点オペランド(fopr0、fopr1)を、PE演算器間接続50を介してPE−1に送り、PE−1では、PE Ctr−1の制御に基づき、セレクタmux04とセレクタmux05により、オペランド(fopr0、fopr1)の指数部(E0、E1)を選択し、差分器Abs−1により、指数部E0とE1の差分を計算する(ステップ2001)。
PE−1では、PE Ctr−1の制御に基づき、セレクタmux00は、fopr0の仮数部(F0)とF0のMSB側に1を加えたビット列を選択し、選択結果によりGPR10を更新する(ステップ2002)。
セレクタmux01は、fopr1の仮数部(F1)とF1のMSB側に1を加えたビット列を選択し、選択結果によりGPR11を更新する(ステップ2002)。
また、セレクタmux02は、差分器Abs−1の演算結果の下位8ビットを選択し、選択結果によりGPR12の下位8ビットを更新する(ステップ2002)。
さらに、ステップ2002では、指数部(E0、E1)の大小関係とfopr0とfopr1の符号部(S0、S1)をPEC tr−1内に新たに設けたレジスタ(不図示)に保存する。
図10に示すように、ステップ2001〜ステップ2002は、二番目のサイクルt+1で実行される。
PE Ctr−1内に保存された指数部(E0、E1)の大小関係が、
E0>E1
であった場合には、PE Ctr−1の制御に基づき、セレクタmux1−0により、
GPR10をopr0、
GPR11をopr1
として選択する(ステップ2003)。
E0<E1であった場合には、PE Ctr−1の制御に基づき、
セレクタmux1−0により、
GPR11をopr0、
GPR10をopr1
として選択して、その選択結果を演算器群−1に提供する(ステップ2003)。
図11に示すように、PE Ctr−1内に保存された符号部(S0、S1)と、加減算器Add/Sub−1が加算と減算のどちらを実行するかの情報に基づき、PE Ctr−1が加減算器Add/Sub−1を制御し、opr0とopr1に対して、加算または減算を行う(ステップ2004)。
PE Ctr−1の制御に基づき、セレクタmux02は、GPR12の下位8ビットに保存された指数部差分結果を選択し、その選択結果によりGPR12の上位8ビットを更新する(ステップ2005)。
また、ステップ2005では、図12に示すように、PE Ctr−1は、
加減算器Add/Sub−1の演算結果の正負と、
PE Ctr−1内に保存された符号部(S0、S1)と、
から、
浮動小数点加減算の演算結果の符合を決定し、その符号をPE Ctr−1内に新設したレジスタ(不図示)に保存する。
さらに、PE Ctr−1の制御に基づき、セレクタmux1−1により、加減算器Add/Sub−1の演算結果を選択し、その選択結果をセレクタmux07に提供し、
セレクタmux07は、PE Ctr−1の制御に基づき、セレクタmux1−1の選択結果を選択し、その選択結果により、GPR13を更新する(ステップ2005)。
図10に示すように、ステップ2003〜ステップ2005は、三番目のサイクルt+2で実行される。
PE−1では、
GPR12の上位8ビットに格納された指数部の差分tmpeと、
GPR13に格納された仮数部の加減算結果tmpfと、
演算結果の符合signとを、
PE演算器間接続50を介して、PE−2に提供し、
PE Ctr−2の制御に基づき、
セレクタmux12は、tmpfを選択し、
セレクタmux13は0を選択し、
差分器Abs−2は、選択結果の差分を計算する(ステップ2006)。
またPE−2では、PE Ctr−2の制御に基づき、
セレクタmux08は、PE−1より提供された指数途中結果tmpeの上位ビット側に、符号結果signを加えたビット列を選択し、
セレクタmux09は、差分器Abs−2の演算結果を選択し、
それぞれの選択結果をGPR20とGPR21に保存する(ステップ2007)。
図10に示すように、ステップ2006〜2007は、四番目のサイクルt+3で実行される。
PE Ctr−2の制御に基づき、セレクタmux2−0は、GPR21をopr0として選択し、GPR20をopr1として選択する(ステップ2008)。
次に、リーディングワンLeadingOneにより、opr0のビット列のMSB側からLSB側へビット列を走査し、MSBから最初に1であったビットまでのビット数を計算する(ステップ2009)。
PE Ctr−2の制御に基づき、
セレクタmux14は、リーディングワンLeadingOneの演算結果を選択し、
バレルシフタBarrel Shifter−2は、opr0を選択結果に基づきビットシフトする(ステップ2010)。
加算器Addにより、opr1の指数途中結果tmpeとリーディングワンLeadingOneの演算結果を加算する(ステップ2011)。
PE Ctr−2の制御に基づき、
セレクタmux10は、バレルシフタBarrel Shifter−2の演算結果を選択し、
セレクタmux11は1を選択し、
加減算器Add/Sub−2は、それらの選択結果を加算する(ステップ2012)。
丸め検出器Roundにより、バレルシフタBarrel Shifter−2 の演算結果を、単精度の仮数部のビット幅に収める際に、丸めが必要となるかを判断する(ステップ2013)。
丸め判定結果に基づき、
セレクタmux2−1は、
丸めが必要であった場合には、加減算器Add/Sub−2の演算結果を選択し、
丸めが不要であった場合には、バレルシフタBarrel Shifter−2の演算結果を選択する(ステップ2014)。
PE Ctr−2の制御に基づき、
セレクタmux15は、セレクタmux2−1の選択結果を選択し、
形式成型器formは、
opr1のsign部分を演算結果の符号部とし、
加算器Addの演算結果を演算結果の指数部とし、
セレクタmux15の選択結果の下位23bitを演算結果の仮数部
として選択し、IEEE754の単精度の形式に整え、その結果を汎用レジスタ群RegFiles−2の任意のレジスタに保存する(ステップ2015)。
図10に示すように、ステップ2008〜ステップ2015は五番目のサイクルt+4で実行され、マルチサイクル型浮動小数点加減算命令の実行が終了する。
ここでは、マルチサイクル型浮動小数点加減算命令をパイプライン分割し、レイテンシが4サイクル、スループットが1サイクルで実現するようにしたが、対象となるアプリによって、レイテンシ、スループットは最適な構成を選択し、それらに合わせて、1グループを構成するPE数、およびPE内の構成を自由に変更するようにしてもよい。
以上のように本実施の形態によれば、
複数セレクタ(mux00〜mux06、mux08〜mux14)と、
リーディングワンLeadingOneと、
加算器Addと、
丸め検出器Roundと、
を前記実施の形態に追加し、
PE Ctr−1、PE Ctr−2の制御回路を拡張することで、マルチサイクル型浮動小数点加減算命令を実現することができる。
回路規模の大きな加減算器やバレルシフタやレジスタを新規に追加する必要がないため、新規に浮動小数点加減算の回路を追加するのに比べ、僅かな回路増加ですむ。
また、1個のPEが既に実行可能な命令の組合せで、マルチサイクル型浮動小数点加減算命令を実現する場合には、整数形式で浮動小数点を表現するためのビット操作が多用されるため、2つの単精度オペランドを加減算するのに、4000サイクル程度を必要としていた。
しかし、本実施の形態によれば、同時に実行できる浮動小数点加減算命令の命令数は半分になるものの、命令を4サイクルで計算できるため、1個のPEで命令を実現した場合に比べ、約500倍の性能向上を実現できる。
<実施の形態3>
実施の形態3では、前記実施の形態の一例として、1グループが複数のPEで構成された際に、グループがマルチサイクル型浮動小数点乗算命令を実行する再構成可能なSIMD型プロセッサについて、詳細に説明する。なお本発明は、下記の実施の形態の構成に限定されるものでないことは勿論である。ここでは、実施の形態2と同様に、浮動小数点数の表現形式としてIEEE754の単精度を用いて、実施の形態3の説明を行う。ここでは、浮動小数点数の表現形式としてIEEE754の単精度を用いているが、他の表現形式を用いたとしても、本発明の実施には、なんら影響を与えない。
本実施の形態のSIMD型プロセッサ全体の構成は、図1に示した実施の形態1と同様である。なお、図1の説明は省略する。
図13と図14はそれぞれ、本実施の形態におけるPE−1〜PE−2の構成の一例を示す図である。本実施の形態では、1グループがマルチサイクル型浮動小数点乗算命令を実行する際に、グループが2個のPEから構成される場合について説明する。本発明はかかる構成にのみ限定されるものでなく、1グループは2個以上のPEから構成されればよい。また、以下で説明されるPE−1〜PE−2の役割分担は一例に過ぎず、本発明はかかる構成にのみ限定されるものでないことは勿論である。
図13、図14に示すように、PE演算器間接続50を介して、PE−1はPE−2から、シフト途中結果の下位データldataを受け取り、PE−1からPE−2に、仮数部途中結果tmpf、符号部結果sign、シフトビット幅sw、シフト途中結果の上位データhdata、指数部途中結果tmpe1を提供する。以下では、図13を参照して、PE−1について説明する。
PE−1の汎用レジスタ群RegFiles−1は、複数のレジスタGPR10〜GPR1pから構成され、GPR12はセレクタmux00の選択結果により更新され、GPR10〜GPR11およびGPR13〜GPR1pは、セレクタmux07の選択結果により更新される。
さらに、GPR1p−1とGPR1pは、乗算結果の上位と下位の半分をそれぞれ格納する特殊レジスタとして扱うため、GPR1p−1とGPR1pには別途専用のセレクタが用いられているが、本発明の主題と直接的に関わらないため、図13では、図示されない。また、それらの出力は、PE Ctr−1に制御されたセレクタmux1−0で選択され、オペランド(opr0、opr1)として演算器群−1およびRAM−1に供給される。
セレクタmux00は、PE Ctr−1の制御に基づき、加減算器Add/Sub−1の演算結果と、セレクタmux07の選択結果を選択して、選択結果をGPR12に提供する。
PE−1の演算器群−1は、加減算器Add/Sub−1、乗算器Mul−1、バレルシフタBarrel Shifter−1を備えている。
加減算器Add/Sub−1は、セレクタmux01の選択結果とセレクタmux02の選択結果をオペランドとして、PE Ctr−1の制御に基づいた演算を行う。
乗算器Mul−1は、セレクタmux03の選択結果とセレクタmux04の選択結果をオペランドとして、PE Ctr−1の制御に基づいた演算を行う。
バレルシフタBarrel Shifter−1はセレクタmux05の選択結果とセレクタmux06の選択結果をオペランドとして、PE Ctr−1の制御に基づいた演算を行う。
演算結果は、PE Ctr−1に制御されたセレクタmux1−1で選択され、セレクタmux07に提供される。
セレクタmux01は、PE Ctr−1の制御に基づき、opr0のうちIEEE754の単精度の指数部分[30:23]を下位ビットとし、その上位側に0を組み合わせたビット列と、opr0を選択して、選択結果を加減算器Add/Sub−1に提供する。
セレクタmux02は、PE Ctr−1の制御に基づき、opr1のうちIEEE754の単精度の指数部分[30:23]を下位ビットとし、その上位側に0を組み合わせたビット列と、opr1を選択して、選択結果を加減算器Add/Sub−1に提供する。
セレクタmux03は、PE Ctr−1の制御に基づき、opr0のうちIEEE754の単精度の仮数部分[22:0]を下位ビットとし、その上位ビットに1、その上位側に0を組み合わせたビット列と、opr0を選択して、選択結果を乗算器Mul−1に提供する。
セレクタmux04は、PE Ctr−1の制御に基づき、opr1のうちIEEE754の単精度の仮数部分[22:0]を下位ビットとし、その上位ビットに1、その上位側に0を組み合わせたビット列と、opr1を選択して、選択結果を乗算器Mul−1に提供する。
セレクタmux05は、PE Ctr−1の制御に基づき、GPR1p−1の下位16bitを上位、GPR1pの32bitを下位としたビット列tmpfの上位16bitと、その上位側に0を組み合わせたビット列と、opr0を選択して、選択結果をバレルシフタBarrel Shifter−1に提供する。
セレクタmux06は、リーディングワンLeadingOneの演算結果と、opr1を選択して、バレルシフタBarrel Shifter−1に提供する。
また、PE−1の演算器群−1は、浮動小数点加減算命令の実行のみに使用するリーディングワンLeadingOne、加算器Addを備えている。
リーディングワンLeadingOneは、tmpfのビット列をMSB側から検索し、MSBから最初に現れた1までの距離swを計算し、加算器Addとセレクタmux06とPE−2に提供する。
加算器Addは、GPR12に格納された仮数部の途中結果tmpe0と、リーディングワンLeadingOneの検索結果を加算し、PE−2に提供する。
PE−1のRAM−1は、記憶素子から構成され、PE Ctr−1の制御に基づき、汎用レジスタ群RegFiles−1およびEMEMデータ転送網からのデータを記憶素子に書き込む。PE−1のRAM−1の記憶素子から読み出したデータをセレクタmux07およびEMEMデータ転送網に提供する。
セレクタmux07は、PE Ctr−1の制御に基づき、セレクタmux1−1の選択結果、RAM−1の読み出し結果を選択し、選択結果を汎用レジスタ群RegFiles−1に提供する。
図14に示すように、PE演算器間接続50を介して、PE−2はPE−1から、浮動小数点乗算命令の途中結果である仮数途中結果tmpfと指数途中結果tmpe1とswと符号結果signとシフト途中結果の上位データhdataを受け取り、PE−2からPE−1に、シフト途中結果の下位データldataを提供する。図14を参照して、PE−2について説明する。
PE−2の汎用レジスタ群RegFiles−2は、複数のレジスタGPR20〜GPR2pから構成され、形式成型器formの選択結果により更新される。また、それらの出力は、PE Ctr−2に制御されたセレクタmux2−0で選択され、オペランド(opr0、opr1)として演算器群−2およびRAM−2に供給される。
PE−2の演算器群−2は、加減算器Add/Sub−2、乗算器Mul−2、バレルシフタBarrel Shifter−2を備えている。
加減算器Add/Sub−2は、セレクタmux08とセレクタmux09の選択結果をオペラントとして、PE Ctr−2の制御に基づいた演算を行う。
乗算器Mul−2は、opr0とopr1をオペラントとして、PE Ctr−2の制御に基づいた演算を行う。
バレルシフタBarrel Shifter−2は、セレクタmux10とセレクタmux11の選択結果をオペラントとして、PE Ctr−2の制御に基づいた演算を行う。
演算結果は、PE Ctr−2に制御されたセレクタmux2−1で選択され、セレクタmux12に提供される。
セレクタmux08は、PE Ctr−2の制御に基づき、バレルシフタBarrel Shifter−2の演算結果と、opr0を選択して、加減算器Add/Sub−2に提供する。
セレクタmux09は、PE Ctr−2の制御に基づき、値1と、opr1を選択して、加減算器Add/Sub−2に提供する。
セレクタmux10は、PE Ctr−2の制御に基づき、tmpfの下位側32bit[31:0]と、opr0を選択して、バレルシフタBarrel Shifter−2に提供する。
セレクタmux11は、PE Ctr−2の制御に基づき、PE演算器間接続50を介してPE−1より提供されたシフト幅swとopr1を選択して、バレルシフタBarrel Shifter−2に提供する。
また、PE−2の演算器群−2は、浮動小数点加減算命令の実行のみに使用する減算器Sub、丸め検出器Roundを構成要素として持つ。
減算器Subは、tmpe1から127を減算し、減算結果を形式成型器formに提供する。
丸め検出器Roundは、バレルシフタBarrel Shifter−2の演算結果が丸めを必要とするかを判定し、判定結果をセレクタmux2−1に提供する。
PE−2のRAM−2は記憶素子から構成され、PE Ctr−2の制御に基づき、汎用レジスタ群RegFiles−2およびEMEMデータ転送網からのデータを記憶素子に書き込む、または、記憶素子から読み出したデータをセレクタmux12およびEMEMデータ転送網に提供する。
セレクタmux12は、PE Ctr−2の制御に基づき、セレクタmux2−1の選択結果、RAM−2の読み出し結果を選択し、選択結果を形式成型器formに提供する。
形式成型器formは、PE Ctr−2の制御に基づき、セレクタmux12の選択結果と、減算器Subの演算結果と、PE−1より提供された符号結果signを選択し、選択結果を汎用レジスタ群RegFiles−2に提供する。
形式成型器formは、PE Ctr−2の制御に基づき、セレクタmux12の選択結果を仮数部とし、減算器Subの演算結果を指数部とし、PE−1より提供された符号結果signを符号として選択し、IEEE754の単精度の形式に整え、その結果を汎用レジスタ群RegFiles−2の任意のレジスタに提供する。
図15は、図1、図13、図14に示した第3の実施の形態の再構成可能なSIMD型プロセッサにおいて、1グループが複数のPEで構成された際に、グループがマルチサイクル型浮動小数点乗算命令を実行する再構成可能なSIMD型プロセッサ方法のフローチャートである。図16は、図15の各ステップが実行されるタイミングチャートを示す。以下では、図15と図16を用いて、マルチサイクル型浮動小数点乗算命令を実行する再構成可能なSIMD型プロセッサについて、詳細に説明する。
まず、PE−1では、GPR10を浮動小数点のオペランド0(fopr0)で、GPR11を浮動小数点のオペランド1(fopr1)で初期化する(ステップ3000)。ステップ3000は、図16に示すように、最初のサイクルtで実行される。
ステップ3000では、GPR10、GPR11を初期化対象のレジスタとするが、本発明は、かかる構成のみに限定されず、任意のレジスタを対象とする。
また、浮動小数の1つのオペランドは、即値による指定、2つ以上のレジスタの組合せによって表現されてもよい。
次に、PE Ctr−1の制御に基づき、
セレクタmux1−0により、GPR10とGPR11をopr0とopr1として選択し、
セレクタmux01とセレクタmux02により、opr0とopr1の指数部(E0、E1)を選択し、
加減算器Add/Sub−1により、指数部を加算する(ステップ3001)。
PE Ctr−1の制御に基づき、セレクタmux03とセレクタmux04により、opr0とopr1の仮数部(F0、F1)を選択し、乗算器Mul−1により、仮数部を乗算する(ステップ3002)。
図の簡略化のため、図13に図示しない新設のXOR素子により、opr0とopr1の符号部(S0、S1)の排他的論理和を計算する(ステップ3003)。
PE Ctr−1の制御に基づき、セレクタmux00は、指数加算結果とその上位に排他的論理和結果を配置したビット列を選択し、その選択結果をGPR12に保存し、セレクタmux1−1は、乗算器Mul−1の演算結果を選択し、演算結果の下位半分をGPR1pに、上位半分をGPR1p−1に保存する(ステップ3004)。図16に示すように、ステップ3001〜ステップ3004は、二番目のサイクルt+1で実行される。
次に、GPR1pに保存されたビット列の上位に、GPR1p−1に保存されたビット列の下半分を加えたビット列tmpfをリーディングワンLeadingOneに入力し、tmpfのビット列のMSB側からLSB側へビット列を走査し、MSBから最初に1であったビットまでのビット数を計算する(ステップ3005)。
PE Ctr−1の制御に基づき、
セレクタmux05はtmpfの上位16bitを選択し、
セレクタmux06はリーディングワンLeadingOneの演算結果を選択し、
PE Ctr−2の制御に基づき、
セレクタmux10はtmpfの下位32bitを選択し、
セレクタmux11はPE演算器間接続50を介して提供されたリーディングワンLeadingOneの演算結果swを選択する。そして、PE Ctr−1/2の制御に基づき、バレルシフタBarrel Shifter−1/2の間で、シフトデータをPE演算器間接続50を介して交換し、tmpfをsw分だけ、ビットシフトする。(ステップ3006)。
加算器Addにより、GPR12に保存された指数部の途中結果tmpe0とリーディングワンLeadingOneの演算結果swを加算する(ステップ3007)。
減算器Subにより、PE−1よりPE演算器間接続50を介して提供された指数部の途中結果tmpe1から127を減算する(ステップ3008)。
PE Ctr−2の制御に基づき、
セレクタmux08は、バレルシフタBarrel Shifter−2の演算結果を選択し、
セレクタmux09は1を選択し、加減算器Add/Sub−2は、それらの選択結果を加算する(ステップ3009)。
丸め検出器Roundにより、バレルシフタBarrel Shifter−2の演算結果を、単精度の仮数部のビット幅に収める際に、丸めが必要となるかを判断する(ステップ3010)。
丸め判定結果に基づき、セレクタmux2−1は、
丸めが必要であった場合には、加減算器Add/Sub−2の演算結果を選択し、
丸めが不要であった場合には、バレルシフタBarrel Shifter−2の演算結果を選択する(ステップ3011)。
PE Ctr−2の制御に基づき、
セレクタmux12は、セレクタmux2−1の選択結果を選択し、
形式成型器formは、PE演算器間接続50を介してPE−1より提供されたSignを演算結果の符号部として選択し、減算器Subの減算結果を演算結果の指数部として選択し、セレクタmux12の選択結果の下位23ビットを演算結果の仮数部として選択し、IEEE754の単精度の形式に整え、その結果を汎用レジスタ群RegFiles−2の任意のレジスタに保存する(ステップ3012)。
図16に示すように、ステップ3005〜ステップ3012は三番目のサイクルt+2で実行され、マルチサイクル型浮動小数点乗算命令の実行が終了する。
ここでは、マルチサイクル型浮動小数点乗算命令をパイプライン分割し、
レイテンシが2サイクル、
スループットが1サイクルで実現する例を示したが、対象となるアプリケーションによって、レイテンシ、スループットは最適な構成を選択し、それらに合わせて、1グループを構成するPE数、およびPE内の構成を自由に変更するなど、本発明の技術的範囲に属する限り様々な形態を取り得る。
以上のように本実施の形態によれば、複数セレクタ(mux00〜mux06、mux08〜mux11)とリーディングワンLeadingOneと加算器Addと減算器Subと丸め検出器Roundを追加し、PE Ctr−1、PE Ctr−2の制御回路を拡張することで、マルチサイクル型浮動小数点乗算命令を実現することができる。
また、回路規模の大きな加減算器や乗算器やバレルシフタやレジスタを新規に追加する必要がないため、新規に浮動小数点乗算の回路を追加するのに比べ、僅かな回路増加ですむ。
さらに、浮動小数点命令の後処理で用いるリーディングワンLeadingOneや加算器Addや丸め検出器Roundは、浮動小数点加減算命令と共通化できるため、複数種類の浮動小数点命令を実行する場合には、回路規模の増加をさらに抑えることができる。
また、1個のPEが既に実行可能な命令の組合せで、マルチサイクル型浮動小数点乗算命令を実現する場合には、整数形式で浮動小数点を表現するためにビット操作が多用されるため、2つの単精度オペランドを乗算するのに20000サイクル程度を必要としていた。しかし、本実施の形態によれば、同時に実行できる浮動小数点除算命令の命令数は半分になるものの、命令を2サイクルで計算できるため、1個のPEで命令を実現した場合に比べ、約5000倍の性能向上を実現することができる。
<実施の形態4>
実施の形態4では、本発明の実施の形態の一例として、1グループが複数のPEで構成された際に、グループがマルチサイクル型浮動小数点除算命令を実行する再構成可能なSIMD型プロセッサについて、詳細に説明する。なお、本発明は、下記実施の形態に限定されるものでない。本実施の形態では、前記実施の形態2、3と同様に、浮動小数点数の表現形式としてIEEE754の単精度を用いるが、本発明においおいては、浮動小数点数の他の表現形式を用いたとしてもよいことは勿論である。
図1は、本発明の第4の実施の形態の構成を示すブロック図である。SIMD型プロセッサ全体の構成は、図1に示した第1〜第3の実施の形態と同様である。以下では、図1の説明は省略する。
図17、図18はそれぞれ、図1のPE−1〜PE−2の内部の詳細な構成を示すブロック図である。
本実施の形態では、1グループがマルチサイクル型浮動小数点除算命令を実行する際に、グループが2個のPEから構成される場合について説明する。なお、本発明はかかる構成に限定されるものでなく、1グループが2個以上のPEから構成されればよい。また、以下で説明されるPE−1〜PE−2の役割分担は一例に過ぎず、本発明はかかる構成に限定されるものでない。
図17、図18に示すように、PE演算器間接続50を介して、PE−1はPE−2から、マルチサイクル型浮動小数点除算命令の終了信号ENDを受け取り、PE−1からPE−2に、演算結果の符号signと指数途中結果tmpe、除算結果一桁QUOを提供する。以下では、図17を参照してPE−1の詳細な構成について述べる。
PE−1の汎用レジスタ群RegFiles−1は、複数のレジスタGPR10〜GPR1pから構成されている。GPR10、GPR11、GPR12はそれぞれ、セレクタ(mux00、mux01、mux02)の選択結果により更新され、GPR13〜GPR1pは、セレクタmux04の選択結果により更新される。また、それらの出力は、PE Ctr−1に制御されたセレクタmux1−0で選択され、オペランド(opr0、opr1)として演算器群−1およびRAM−1に供給される。
セレクタmux00は、PE Ctr−1の制御に基づき、GPR10のうち単精度の仮数部分[22:0]の上位ビットを1とし、さらに上位ビット側を0としたビット列と、セレクタmux03の選択結果と、セレクタmux04の選択結果を選択して、選択結果をGPR10に提供する。
セレクタmux01は、PE Ctr−1の制御に基づき、GPR11のうち単精度の仮数部分[22:0]の上位ビットを1とし、さらに上位ビット側を0としたビット列と、セレクタmux04の選択結果を選択して、選択結果をGPR11に提供する。
セレクタmux02は、PE Ctr−1の制御に基づき、減算器Subの減算結果と、セレクタmux04の選択結果を選択して、選択結果をGPR11に提供する。
また、PE−1の汎用レジスタ群RegFiles−1は、浮動小数点除算命令の実行のみに使用する減算器Subを構成要素として持つ。減算器Subは、GPR10のうち単精度の指数部[30:24]から、GPR11のうち単精度の指数部[30:24]を減算し、減算結果をセレクタmux02に提供する。
簡略化のため、図17には図示されないXOR(排他的論理和)素子により、GPR10のうち、単精度の符号部[31]と、GPR11のうち、単精度の符号部[31]の排他的論理和を計算し、計算結果をセレクタmux02に提供する。
PE−1の演算器群−1は、加減算器Add/Sub−1、乗算器Mul−1、バレルシフタBarrel Shifter−1を備えている。それぞれの演算器は、PE Ctr−1の制御に基づき、セレクタmux1−0から供給されたオペランド(opr0とopr1)に対する演算を行う。演算結果は、PE Ctr−1に制御されたセレクタmux1−1で選択され、セレクタmux04に提供される。なお、PE−1の演算器群−1の構成は一例に過ぎず、本発明はかかる構成に限定されるものでないことは勿論である。
PE−1のRAM−1は記憶素子から構成され、PE Ctr−1の制御に基づき、汎用レジスタ群RegFiles−1およびEMEMデータ転送網からのデータを記憶素子に書き込む、または、記憶素子から読み出したデータをセレクタmux04およびEMEMデータ転送網に提供する。
セレクタmux04は、PE Ctr−1の制御に基づき、セレクタmux1−1の選択結果、RAM−1の読み出し結果を選択し、選択結果を汎用レジスタ群RegFiles−1に提供する。
図18に示すように、PE演算器間接続50を介して、PE−2はPE−1から、除算結果一桁QUOと、浮動小数点乗算命令の途中結果である指数途中結果tmpeと符号結果signを受け取り、PE−2からPE−1に、浮動小数除算の終了信号ENDを提供する。図18を参照して、PE−2の構成について説明する。
PE−2の汎用レジスタ群RegFiles−2は、複数のレジスタGPR20〜GPR2pから構成される。
GPR20は、セレクタmux05の選択結果により更新され、GPR21〜GPR2pは形式成型器formの選択結果により更新される。また、それらの出力は、PE Ctr−2に制御されたセレクタmux2−0で選択され、オペランド(opr0、opr1)として演算器群−2およびRAM−2に供給される。
セレクタmux05は、PE Ctr−2の制御に基づき、GPR20のビット列からMSBを取り除き、LSBにPE演算器間接続50を介してPE−1から提供された除算結果一桁QUOを加えたビット列と、形式成型器formの選択結果を選択し、選択結果をGPR20に提供する。
PE−2の演算器群−2は、加減算器Add/Sub−2、乗算器Mul−2、バレルシフタBarrel Shifter−2を備えている。
加減算器Add/Sub−2は、セレクタmux06の選択結果とopr1を、
乗算器Mul−2はopr0とopr1を、
バレルシフタBarrel Shifter−2は、opr0とセレクタmux07の選択結果を、
オペランドとして、PE Ctr−2の制御に基づいた演算を行う。
演算結果は、PE Ctr−2に制御されたセレクタmux2−1で選択され、セレクタmux08に提供される。
セレクタmux06は、PE Ctr−2の制御に基づき、バレルシフタBarrel Shifter−2の演算結果とopr0を選択し、選択結果を加減算器Add/Sub−2に提供する。
セレクタmux07は、PE Ctr−2の制御に基づき、リーディングワンLeadingOneの演算結果とopr1を選択し、選択結果をバレルシフタBarrel Shifter−2に提供する。
また、PE−2の演算器群−2は、浮動小数点除算命令の実行のみに使用するリーディングワンLeadingOne、加算器Add、丸め検出器Roundを備えている。
リーディングワンLeadingOneは、opr0のビット列をMSB側からLSB側へ検索し、MSBから最初に現れた1までの距離を計算し、加算器Addとセレクタmux07に提供する。
加算器Addは、PE演算器間接続50を介してPE−1から提供された指数途中結果tmpeと、リーディングワンLeadingOneの演算結果を加算し、加算結果を形式成型器formに提供する。
丸め検出器Roundは、バレルシフタBarrel Shifter−2の演算結果が丸めを必要とするかを判定し、判定結果をセレクタmux2−1に提供する。
PE−2のRAM−2は、記憶素子から構成され、PE Ctr−2の制御に基づき、汎用レジスタ群RegFiles−2およびEMEMデータ転送網からのデータを記憶素子に書き込むか、または、記憶素子から読み出したデータをセレクタmux08およびEMEMデータ転送網40に提供する。
セレクタmux08は、PE Ctr−2の制御に基づき、セレクタmux2−1の選択結果、RAM−2の読み出し結果を選択し、選択結果を形式成型器formに提供する。
形式成型器formは、PE Ctr−2の制御に基づき、セレクタmux08の選択結果と、加算器Addの加算結果と、PE−1より提供された符号結果signを選択し、選択結果を汎用レジスタ群RegFiles−2に提供する。
形式成型器formは、PE Ctr−2の制御に基づき、セレクタmux08の選択結果を仮数部とし、加算器Addの加算結果を指数部とし、PE−1より提供された符号結果signを符号部として選択し、IEEE754の単精度の形式に整え、その結果を汎用レジスタ群RegFiles−2の任意のレジスタに保存する。
図19は、図1、図17、図18に示した本実施の形態の再構成可能なSIMD型プロセッサにおいて、1グループが複数のPEで構成された際に、グループがマルチサイクル型浮動小数点除算命令を実行する再構成可能なSIMD型プロセッサの動作を説明するためのフローチャートである。図20は、図19の各ステップが実行されるタイミングチャートを示す図である。図19と図20を参照して、マルチサイクル型浮動小数点除算命令を実行する再構成可能なSIMD型プロセッサについて説明する。
まず、PE−1では、GPR10を浮動小数点のオペランド0(fopr0)で、GPR11を浮動小数点のオペランド1(fopr1)で初期化し、
PE−2では、GPR21を除算に要するサイクル数で、GPR22を1で初期化する(ステップ4000)。
ここでは、GPR10、GPR11、GPR21、GPR22を初期化対象のレジスタとするが、本発明は、かかる構成に限定されるものでなく、任意のレジスタを対象としてもよい。
ステップ4000では、図20に示すように、最初のサイクルtで実行される。
次に、減算器Subにより、GPR10の指数部(E0)から、GPR11の指数部(E1)を減算する(ステップ4001)。
簡略化のため、図17には、図示されていないXOR素子により、GPR10の符号部(S0)とGPR11の符号部(S1)の排他的論理和を計算する(ステップ4002)。
PE−1では、PE Ctr−1の制御に基づき、
セレクタmux00は、GPR10の仮数部(F0)とF0のMSB側に1を加え、その上位側を0としたビット列を選択し、GPR10を更新し、
セレクタmux01は、GPR11の仮数部(F1)とF1のMSB側に1を加え、その上位側を0としたビット列を選択し、GPR11を更新し、
セレクタmux02は、指数部の減算結果のMSB側に、符号部の排他的論理和結果を加えたビット列を選択し、GPR12を更新する(ステップ4003)。
図20に示すように、ステップ4001〜ステップ4003は、二番目のサイクルt+1で実行される。PE−2では、PE Ctr−2の制御に基づき、セレクタmux2−0により、GPR21とGPR22がオペランド(opr0、opr1)として選択され、加減算器Add/Sub−2により、opr0からopr1を減算する(ステップ4004)。ここでは、opr1の値1をレジスタ値(GPR22)として提供するが、値1は必ずしもレジスタ値である必要は無く、即値などの他手段によって提供されても構わない。
演算結果が正であった場合に(ステップ4005の正分岐)、PE−1では、PE Ctr−2の制御に基づき、セレクタmux1−0により、GPR10とGPR11を演算のオペランド(opr0、opr1)として選択し、加減算器Add/Sub−1によって、opr0からopr1を減算する(ステップ4006)。
セレクタmux03は、減算結果が正であった場合には、減算結果からMSBの1ビットを除きLSBに0を加えたビット列を選択する。減算結果が負であった場合には、opr0からMSBの1ビットを除きLSBに0を加えたビット列を選択する(ステップ4007)。
次に、PE−1では、PE Ctr−1の制御に基づき、
セレクタmux00は、セレクタmux03の選択結果を選択しGPR10を更新し、
セレクタmux01は、GPR11の値を選択しGPR11を更新し、
セレクタmux02は、GPR12の値を選択しGPR12を更新する(ステップ4008)。
また、PE−2では、PE Ctr−1の制御に基づき、
セレクタmux2−1は、加減算器Add/Sub−2の演算結果を選択し、
セレクタmux08は、セレクタmux2−1の選択結果を選択し、
形式成型器formは、選択結果を選択し、選択結果により、GPR21を更新し、
セレクタmux05は、GPR20の値からMSBを取り除き、PE演算器間接続50を介して、PE−1から提供された除算結果一桁QUOをLSBに加えたビット列を選択し、当該ビット列によりGPR20を更新する(ステップ4008)。
図20に示すように、ステップ4004〜ステップ4008は、同じサイクルで実行され、加減算器Add/Sub−2の演算結果が正である場合は、複数サイクルの間、繰り返し実行される。
演算結果が負であった場合に(ステップ4005負分岐先のC)、次サイクルにおいて、
PE−2では、PE Ctr−2の制御に基づき、セレクタmux2−0により、GPR20とGPR22をオペランド(opr0、opr1)として選択し、
opr0をリーディングワンLeadingOneに入力し、opr0のビット列のMSB側からLSB側へビット列を走査し、MSBから最初に1であったビットまでのビット数を計算する(ステップ4009)。
次に、PE Ctr−2の制御に基づき、
セレクタmux07は、リーディングワンLeadingOneの演算結果を選択し、
バレルシフタBarrel Shifter−2は、opr0を選択結果に基づきビットシフトする(ステップ4010)。
加算器Addにより、PE演算器間接続50を介してPE−1より提供された指数部途中結果tmpeに、リーディングワンLeadingOneの演算結果を加算する(ステップ4011)。
PE Ctr−2の制御に基づき、
セレクタmux06は、バレルシフタBarrel Shifter−2の演算結果を選択し、
加減算器Add/Sub−2は、セレクタmux06の選択結果とopr1を加算する(ステップ4012)。
丸め検出器Roundにより、バレルシフタBarrel Shifter−2の演算結果を、単精度の仮数部のビット幅に収める際に、丸めが必要となるかを判断する(ステップ4013)。
丸め判定結果に基づき、セレクタmux2−1は、丸めが必要であった場合には加減算器Add/Sub−2の演算結果を選択し、丸めが不要であった場合にはバレルシフタBarrel Shifter−2の演算結果を選択する(ステップ4014)。
PE Ctr−2の制御に基づき、
セレクタmux08は、セレクタmux2−1の選択結果を選択し、
形式成型器formは、PE演算器間接続50を介してPE−1より提供された符号結果signを演算結果の符号部とし、
加算器Addの演算結果を演算結果の指数部とし、
セレクタmux08の選択結果の下位23bitを演算結果の仮数部として選択し、
IEEE754の単精度の形式に整え、その結果を汎用レジスタ群RegFiles−2の任意のレジスタに保存する(ステップ4015)。
図20に示すように、ステップ4004、ステップ4005と、ステップ4009〜ステップ4015は、同じサイクルで実行され、
加減算器Add/Sub−1の演算結果が負である場合に、実行され、マルチサイクル型浮動小数点除算命令の実行が終了する。
ここでは、マルチサイクル型浮動小数点除算命令をパイプライン分割し、サイクル毎に除算結果一桁を算出しているためレイテンシは除算する桁数分かかるが、対象となるアプリによって、
サイクル後に算出する除算結果の桁数、
レイテンシは最適な構成を選択し、それらに合わせて、1グループを構成するPE数、およびPE内の構成を自由に変更するようにしてもよい。
以上のように本実施の形態によれば、
複数セレクタ(mux00〜mux03、mux05〜mux07)と、リーディングワンLeadingOneと、加算器Addと、減算器Subと、丸め検出器Roundを追加し、
PE Ctr−1、PE Ctr−2の制御回路を拡張することで、マルチサイクル型浮動小数点除算命令を実現することができる。
回路規模の大きな加減算器やバレルシフタやレジスタを追加する必要がないため、新規に浮動小数点除算の回路を追加するのに比べ、僅かな回路増加ですむ。
さらに、浮動小数点命令の後処理で用いるリーディングワンLeadingOneや加算器Addや丸め検出器Roundは、浮動小数点加減算命令や浮動小数点乗算命令と共通化できるため、複数種類の浮動小数点命令を実行する場合には、回路規模の増加をさらに抑えることができる。
また、1個のPEが既に実行可能な命令の組合せで、マルチサイクル型浮動小数点除算命令を実現する場合には、整数形式で浮動小数点を表現するためにビット操作が多用されるため、2つの単精度オペランドを除算するのに、例えば30000サイクル程度を必要としていた。
しかし、本実施の形態によれば、同時に実行できる浮動小数点除算命令の命令数は半分になるものの、命令を30サイクル程度で計算できるため、1個のPEで命令を実現した場合に比べ、約500倍の性能向上を実現できる。
本発明の実施の形態によれば、複数PEの演算器と汎用レジスタの組合せを再構成し、それぞれのPEに異なる役割を与えることにより、特性の異なる処理対象に柔軟に対応し、かつSIMD型プロセッサ全体の性能を向上することができる。また、個々のPEの持つ演算器と汎用レジスタを利用するため、必要となる追加資源を少なくできる。
本発明は、並列度や処理に最適な命令の異なる処理対象に、大幅な回路増加なく、柔軟に対応可能な動的再構成可能なSIMD型プロセッサに適用できる。
本発明の実施の形態の全体構成を示す図である。 本発明の第一の実施の形態におけるPEの詳細な構成を示す図である。 本発明の第一の実施の形態の動作を説明するためのフローチャートである。 本発明の第一の実施の形態の動作を示すタイミングチャートである。 IEEE754の単精度のビット配列を示す図である。 IEEE754の単精度による浮動小数点数の計算式を示す図である。 本発明の第二の実施の形態における第一のPEの詳細な構成を示す図である。 本発明の第二の実施の形態における第二のPEの詳細な構成を示す図である。 本発明の第二の実施の形態の動作を説明するためのフローチャートである。 本発明の第二の実施の形態の動作を示すタイミングチャートである。 本発明の第二の実施の形態における加減算器の制御情報生成ルール。 本発明の第二の実施の形態における演算結果の正負生成ルール。 本発明の第三の実施の形態における第一のPEの詳細な構成を示す図である。 本発明の第三の実施の形態における第二のPEの詳細な構成を示す図である。 本発明の第三の実施の形態の動作を説明するためのフローチャートである。 本発明の第三の実施の形態の動作を示すタイミングチャートである。 本発明の第四の実施の形態における第一のPEの詳細な構成を示す図である。 本発明の第四の実施の形態における第二のPEの詳細な構成を示す図である。 本発明の第四の実施の形態の動作を説明するためのフローチャートである。 本発明の第四の実施の形態の動作を示すタイミングチャートである。
符号の説明
10−1〜10−m PE−1〜PE−m(プロセッシングエレメント)
11−1〜11−m PE Ctr−1〜PE Ctr−m(プロセッシングエレメント制御回路)
12−1〜12−m RegFiles−1〜RegFiles−m(汎用レジスタファイル群)
13−1〜13−m 演算器群−1〜演算器群−m
14−1〜14−m RAM−1〜RAM−m(データメモリ)
20 CP(コントロールプロセッサ)
21 PC Ctr(制御情報生成回路)
22 REgFiles−0
23 演算器群−0
24 PRAM(プログラムメモリ)
25 DRAM(データメモリ)
30 EMEM(外部メモリ)
40 EMEMデータ転送網
50 PE演算器間接続
60 PE制御情報パス
GPR10〜GPR1p PE−1の各汎用レジスタ
mux1−0 PE−1の汎用レジスタファイル選択回路
mux1−1 PE−1の演算結果選択回路
Add/Sub−1 PE−1の加減算器
Mul−1 PE−1の乗算器
Barrel Shifter−1 PE−1のバレルシフタ
Abs−1 PE−1の差分器
GPR20〜GPR2p PE−2の各汎用レジスタ
mux2−0 PE−2の汎用レジスタファイル選択回路
mux2−1 PE−2の演算結果選択回路
Add/Sub−2 PE−2の加減算器
Mul−2 PE−2の乗算器
Barrel Shifter−2PE−2のバレルシフタ
Abs−2 PE−2の差分器
mux0〜mux15 セレクタ
LeadingOne リーディングワン回路
Add 加算器
Sub 減算器
Round 丸め検出器
form 形式成型器

Claims (29)

  1. 1命令を実行する演算単位を1グループとし、
    1グループが複数のプロセッシングエレメント(PE)から構成される場合、該1グループの演算単位は、1つのPEが1グループを構成する場合に実行可能な命令単位よりも、複雑な命令を実行する単位であり、
    複数のPEよりなる1グループとして演算可能な複数のPEを備え、
    命令に応じて、前記グループを構成するPEの数を変える、
    並列演算プロセッサ。
  2. 前記命令に応じて、前記グループを構成するPEの構成の情報を予め保持し、
    前記命令に応じて、前記情報に基づき、PEの構成を変化させる、
    請求項1の並列演算プロセッサ。
  3. 前記命令が、前記PEの複数サイクルで実行されるマルチサイクル命令であるときに、前記情報に、パイプラインレジスタの構成が記載される、
    請求項2の並列演算プロセッサ。
  4. 前記1グループが1個のPEで構成される場合、前記PEは、前記PEの演算結果を格納する汎用レジスタを備え、
    前記1グループが、前記マルチサイクル命令を実行する複数のPEで構成される場合、前記汎用レジスタをパイプラインレジスタとして利用する、
    請求項3の並列演算プロセッサ。
  5. 前記1グループがマルチサイクル命令を実行する複数のPEで構成される場合、
    前記各PEが備える演算器、及び汎用レジスタは、それぞれ、前記マルチサイクル命令を実現する演算器、及びパイプラインレジスタの少なくとも一部を構成する、
    請求項4の並列演算プロセッサ。
  6. 前記マルチサイクル命令がマルチサイクル整数除算命令であるときに、
    前記1グループは複数のPEで構成され、
    前記1グループ内の第1のPEは、前記マルチサイクル整数除算命令のサイクルをカウントするカウンタとして動作し、
    前記1グループ内の第1とは異なる第2のPEは、前記カウンタに応じて、前記サイクルの回数、前記マルチサイクル整数除算命令の被除数から除数を減算する、
    請求項5の並列演算プロセッサ。
  7. 前記第1のPEは、
    加減算器と、
    汎用レジスタと、
    を備え、
    前記マルチサイクル整数除算命令を実行する場合に、
    前記第1のPEにおいて、サイクルのカウンタ値を前記第1のPEの前記汎用レジスタに保存し、前記カウンタ値を、前記加減算器により更新する、
    請求項6の並列演算プロセッサ。
  8. 前記第2のPEは、
    加減算器と、
    汎用レジスタと、
    を備え、
    前記マルチサイクル整数除算命令を実行する場合に、
    前記第2のPEにおいて、前記汎用レジスタに、除数、被除数、除算途中結果を保存し、
    前記加減算器により前記除数から前記被除数を減算し、減算結果を前記汎用レジスタに前記除算途中結果として保存する、
    請求項6の並列演算プロセッサ。
  9. 前記マルチサイクル命令がマルチサイクル浮動小数点加減算命令である場合に、
    前記1グループは複数のPEで構成され、
    前記1グループ内の第1のPEは、
    浮動小数点オペランドの加減算を行い、
    前記1グループ内の第1とは異なる第2のPEは、
    前記加減算結果の正規化処理を行う、
    請求項5の並列演算プロセッサ。
  10. 前記第1のPEは、
    加減算器と、
    差分器と、
    バレルシフタと、
    汎用レジスタと、
    を備え、
    前記マルチサイクル浮動小数点加減算命令を実行する場合に、
    前記第1のPEにおいて、
    前記差分器と前記バレルシフタにより、オペランドの小数点位置合わせを行い、
    前記加減算器により、前記位置合わせ結果を加減算し、
    前記汎用レジスタを、前記小数点位置合わせ結果と前記加減算結果の一次保存場所とする、
    請求項9の並列演算プロセッサ。
  11. 前記第2のPEは、
    加減算器と、
    差分器と、
    バレルシフタと、
    汎用レジスタと、
    正規化制御器と、
    を備え、
    前記マルチサイクル浮動小数点加減算命令を実行する場合に、
    前記第2のPEにおいて、
    前記正規化制御器の制御に基づき、前記加減算器と前記差分器と前記バレルシフタにより、前記第1のPEの加減算結果を正規化し、
    前記汎用レジスタを、正規化の途中結果の一次保存場所とする、
    請求項9の並列演算プロセッサ。
  12. 前記マルチサイクル命令がマルチサイクル浮動小数点乗算命令である場合に、
    前記1グループは複数のPEで構成され、
    前記1グループ内の第1のPEは、
    2つの浮動小数点オペランドの乗算と、前記乗算結果の正規化処理の一部を行い、
    前記グループ内の第1とは異なる第2のPEは、
    前記第1のPEと協調して、前記乗算結果の正規化を行う、
    請求項5の並列演算プロセッサ。
  13. 前記第1のPEは、
    乗算器と、
    バレルシフタと、
    リーディングワン回路と、
    汎用レジスタと、
    を備え、
    前記マルチサイクル浮動小数点乗算命令を実行する場合には、
    前記第1のPEにおいて、
    前記乗算器は、オペランドの仮数部の乗算を行い、
    前記バレルシフタは、前記乗算結果の正規化の一部を行い、
    前記汎用レジスタを、乗算結果と正規化の途中結果の一次保存場所とする、
    請求項12の並列演算プロセッサ。
  14. 前記第1のPEは、
    加算器と、
    バレルシフタと、
    汎用レジスタと、
    正規化制御器と、
    を備え、
    前記マルチサイクル浮動小数点乗算命令を実行する場合には、
    前記第1のPEにおいて、
    前記正規化制御器の制御に基づき、前記加減算器と、前記バレルシフタと、前記第1のPEのバレルシフタにより、前記乗算結果の正規化を行い、
    前記汎用レジスタを、正規化の途中結果の一次保存場所とする、
    請求項12の並列演算プロセッサ。
  15. 前記マルチサイクル命令がマルチサイクル浮動小数点除算命令である場合に、
    前記1グループは複数のPEで構成され、
    前記1グループ内の第1のPEは、
    2つの浮動小数点オペランドの除算を行い、
    前記1グループ内の第1とは異なる第2のPEは、
    前記除算を実行するサイクルのカウントと、前記除算結果の正規化を行う、
    請求項5の並列演算プロセッサ。
  16. 前記第1のPEは、
    加算器と、
    汎用レジスタと、
    を備え、
    前記マルチサイクル浮動小数点除算命令を実行する場合には、
    前記第1のPEにおいて、
    前記汎用レジスタに、除数、非除数、除算途中結果を保存し、
    前記加減算器により、前記除数から前記被除数を減算し、減算結果を、前記除算途中結果に保存する、
    請求項15の並列演算プロセッサ。
  17. 前記第2のPEは、
    加算器と、
    バレルシフタと、
    汎用レジスタと、
    正規化制御器と、
    を備え、
    前記マルチサイクル浮動小数点除算命令を実行する場合には、
    前記第2のPEにおいて、
    サイクルのカウンタ値を、前記汎用レジスタに保存し、
    前記カウンタ値を前記加減算器により更新し、
    前記正規化制御器の制御に基づき、前記加算器と前記バレルシフタにより、前記第1のPEの除算結果を正規化し、
    前記汎用レジスタを、正規化の途中結果の一次保存場所とする、
    請求項15の並列演算プロセッサ。
  18. 前記1グループ内の第1のPEと第2のPEの演算器はPE演算器間接続を介して接続されている、請求項1の並列演算プロセッサ。
  19. 前記第1のPEは、
    制御回路と、
    汎用レジスタ群と、
    演算器群と、
    データメモリと、
    を備え、
    前記汎用レジスタ群の出力は、前記制御回路によって制御されたセレクタ(mux1−0)で選択され、演算命令のオペランド(opr0、opr1)として、前記演算器群と前記データメモリに供給され、
    前記演算器群は、加減算器と、乗算器と、バレルシフタと、を備え、それぞれの演算器は、前記制御回路の制御に基づき、前記セレクタ(mux1−0)から供給されたオペランド(opr0、opr1)に対する演算を行い、
    前記演算器群の演算結果は、前記制御回路によって制御されたセレクタ(mux1−1)で選択されてセレクタ(mux5)に供給され、
    前記データメモリは、前記制御回路の制御に基づき、前記セレクタ(mux1−0)の出力、及び、外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータを、前記セレクタ(mux5)及び前記外部メモリデータ転送網に提供し、
    前記セレクタ(mux5)は、前記制御回路の制御に基づき、
    前記セレクタ(mux1−1)の選択結果、
    前記データメモリの読み出し結果、
    前記PE演算器間接続を介して提供される前記第2のPEのレジスタの内容の
    うちのいずれか1つを選択し、選択結果を、前記汎用レジスタ群に供給する、
    請求項18の並列演算プロセッサ。
  20. 前記第2のPEは、
    制御回路と、
    汎用レジスタ群と、
    演算器群と、
    データメモリと、
    を備え、
    前記演算器群は、加減算器と、乗算器と、バレルシフタと、を備え、
    前記汎用レジスタ群の出力は、前記制御回路によって制御されたセレクタ(mux2−0)で選択され、演算命令のオペランド(opr0、opr1)として、前記演算器群と前記データメモリに供給され、
    前記制御回路の制御に基づき、セレクタ(mux4)の選択結果と、セレクタ(mux3)の選択結果を選択して、前記レジスタ群の第1のレジスタ(GPR20)に供給するセレクタ(mux0)と、
    前記制御回路の制御に基づき、前記セレクタ(mux4)の選択結果と、前記レジスタ群の第2のレジスタ(GPR21)から読み出したビット列からLSB(Least Significant Bit)を取り除き、MSB(Most Significant Bit)に0を加えた値を選択して前記第2のレジスタ(GPR21)に供給するセレクタ(mux1)と、
    前記制御回路の制御に基づき、前記セレクタ(mux4)の選択結果と、前記レジスタ群の第3のレジスタ(GPR22)から読み出したビット列からMSBを取り除き、LSBに前記加減算器の減算結果のMSBを加えた値を選択して、前記第3のレジスタ(GPR22)に供給するセレクタ(mux2)と、
    を備え、
    前記演算器群の演算器は、前記制御回路の制御に基づき、前記セレクタ(mux2−0)から供給されたオペランド(opr0、opr1)に対する演算を行い、演算結果は、前記制御回路によって制御されたセレクタ(mux2−1)で選択されてセレクタ(mux4)に供給され、
    前記データメモリは、前記制御回路の制御に基づき、前記セレクタ(mux2−0)の出力、及び、外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータを、前記セレクタ(mux4)及び前記外部メモリデータ転送網に提供し、
    前記セレクタ(mux3)は、前記制御回路の制御に基づき、前記加減算器の演算結果と、前記セレクタ(mux2−0)で選択された一方のオペランドを選択してセレクタ(mux0)に供給し、
    前記セレクタ(mux4)は、前記制御回路の制御に基づき、前記セレクタ(mux2−1)の選択結果と、前記データメモリの読み出し結果の一方を選択し、選択結果を前記汎用レジスタ群に供給する、
    請求項19の並列演算プロセッサ。
  21. 前記第1のPEは、
    制御回路と、
    汎用レジスタ群と、
    演算器群と、
    データメモリと、
    を備え、
    前記汎用レジスタ群の第1、第2、第3のレジスタ(GPR10、GPR11、GPR12)は、それぞれ対応するセレクタ(mux00、mux01、mux02)の選択結果により更新され、前記汎用レジスタ群の残りのレジスタは、セレクタ(mux07)の選択結果により更新され、
    前記汎用レジスタ群の出力は、前記制御回路に制御されたセレクタ(mux1−0)で選択され、オペランド(opr0、opr1)として、前記演算器群及び前記データメモリに供給され、
    前記セレクタ(mux00)は、前記制御回路の制御に基づき、前記PE演算器間接続を介して、前記第2のPEより提供された、浮動小数点加減算命令の第1のオペランド(fopr1)と、前記セレクタ(mux07)の選択結果を選択して、前記第1のレジスタ(GPR10)に提供し、
    前記セレクタ(mux01)は、前記制御回路の制御に基づき、前記PE演算器間接続を介して、前記第2のPEより提供された浮動小数点加減算命令の第2のオペランド(fopr1)と、前記セレクタ(mux07)の選択結果の一方を選択して、前記第2のレジスタ(GPR11)に提供し、
    前記セレクタ(mux02)は、前記制御回路の制御に基づき、前記演算器群の前記差分器の演算結果の下位半分を下位、レジスタ(GPR12)の下位半分を上位とするビット列と、前記セレクタ(mux07)の選択結果の一方を選択して、前記レジスタ(GPR12)に提供し、
    前記演算器群は、加減算器と、乗算器と、差分器と、バレルシフタと、を備え、
    前記加減算器は、セレクタ(mux03)の選択結果と前記opr1をオペランドとして、前記制御回路の制御に基づいた演算を行い、
    前記乗算器は、前記オペランド(opr0、opr1)に関して、前記制御回路の制御に基づいた演算を行い、
    前記差分器は、セレクタ(mux04)及びセレクタ(mux05)の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
    前記バレルシフタは、前記オペランド(opr0)と、セレクタ(mux06)の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
    前記演算器群の演算結果は、前記制御回路に制御されたセレクタ(mux1−1)で選択されて、前記セレクタ(mux07)に提供され、
    前記セレクタ(mux03)は、前記制御回路の制御に基づき、前記バレルシフタの演算結果と、オペランド(opr0)を選択して、前記加減算器に提供し、
    前記セレクタ(mux04)は、前記制御回路の制御に基づき、前記PE演算器間接続を介して、前記第2のPEより提供された、浮動小数点加減算命令のオペランド(fopr0)の指数部(E0)と、オペランド(opr0)を選択して、前記差分器に提供し、
    前記セレクタ(mux05)は、前記制御回路の制御に基づき、前記PE演算器間接続を介して、前記第2のPEより提供された浮動小数点加減算命令のオペランド(fopr1)の指数部と、オペランド(opr1)を選択して、前記差分器に提供し、
    前記セレクタ(mux06)は、前記制御回路の制御に基づき、前記レジスタ(GPR12)の下位半分とその上位半分に0を埋めたビット列と、オペランド(opr1)を選択して、前記バレルシフタに提供し、
    前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び前記外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータをセレクタ(mux07)及び前記外部メモリデータ転送網に提供し、
    前記セレクタ(mux07)は、前記制御回路の制御に基づき、前記セレクタ(mux1−1)の選択結果、前記データメモリの読み出し結果を選択し、選択結果を前記汎用レジスタ群に提供する、
    請求項18の並列演算プロセッサ。
  22. 前記第2のPEは、
    制御回路と、
    汎用レジスタ群と、
    演算器群と、
    データメモリと、
    を備え、
    前記汎用レジスタ群の第1、第2のレジスタ(GPR20、GPR21)はそれぞれ、セレクタ(mux08、mux09)の選択結果により更新され、第3のレジスタ(GPR22)と残りのレジスタは、形式成型器の選択結果により更新され、
    前記汎用レジスタ群の出力は、前記制御回路に制御されたセレクタ(mux2−0)で選択され、オペランド(opr0、opr1)として演算器群及び前記データメモリに供給され、
    前記セレクタ(mux08)は、前記制御回路の制御に基づき、前記PE演算器間接続を介して、前記第1のPEより提供された指数途中結果(tmpe)を下位に、符号結果(sign)を上位としたビット列と、セレクタ(mux15)の選択結果の一方を選択して、前記汎用レジスタ群の第1のレジスタ(GPR20)に提供し、
    前記セレクタ(mux09)は、前記制御回路の制御に基づき、演算器群の差分器の演算結果と、セレクタ(mux15)の選択結果を選択して、前記汎用レジスタ群のレジスタ(GPR21)に提供し、
    前記演算器群は、加減算器と、乗算器と、差分器と、バレルシフタと、を備え、
    前記加減算器は、セレクタ(mux10)とセレクタ(mux11)の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
    乗算器は、前記opr0とopr1をオペランドとして、前記制御回路の制御に基づいた演算を行い、
    前記差分器は、セレクタ(mux12)とセレクタ(mux13)の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
    バレルシフタは、オペランド(opr0)とセレクタ(mux14)の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
    前記演算器群の演算結果は、前記制御回路に制御されたセレクタ(mux2−1)で選択され、セレクタ(mux15)に提供され、
    前記セレクタ(mux10)は、前記制御回路の制御に基づき、前記バレルシフタの演算結果と、オペランド(opr0)を選択して、前記加減算器に提供し、
    セレクタ(mux11)は、前記制御回路の制御に基づき、値1と、オペランド(opr1)を選択して、前記加減算器に提供し、
    セレクタ(mux12)は、前記制御回路の制御に基づき、前記PE演算器間接続を介して、前記第1のPEより提供された仮数途中結果(tmpf)と、オペランド(opr0)を選択して、前記差分器に提供し、
    セレクタ(mux13)は、前記制御回路の制御に基づき、値0と、オペランド(opr1)を選択して、前記差分器に提供し、
    セレクタ(mux14)は、前記制御回路の制御に基づき、リーディングワンの演算結果と、オペランド(opr1)を選択して、前記バレルシフタに提供し、
    前記演算器群は、浮動小数点加減算命令の実行のみに使用する前記リーディングワンと、加算器と、丸め検出器と、を備え、
    前記リーディングワンは、オペランド(opr0)のビット列をMSB側から検索し、MSBから最初に現れた1までの距離を計算し、前記加算器と前記セレクタ(mux14)に提供し、
    前記加算器は、オペランド(opr1)の部分ビット列と、前記リーディングワンの検索結果を加算して前記形式成型器に提供し、
    前記丸め検出器は、前記バレルシフタの演算結果が丸めを必要とするかを判定し、判定結果を、セレクタ(mux2−1)に提供し、
    前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータをセレクタ(mux15)及び前記外部メモリデータ転送網に提供し、
    前記セレクタ(mux15)は、前記制御回路の制御に基づき、前記セレクタ(mux2−1)の選択結果、データメモリの読み出し結果を選択し、選択結果を前記形式成型器に提供し、
    前記形式成型器は、前記制御回路の制御に基づき、前記セレクタ(mux15)の選択結果を仮数部、前記加算器の演算結果を指数部、符号結果(sign)を符号部として選択して形式に整え、汎用レジスタ群に提供する、
    請求項21の並列演算プロセッサ。
  23. 前記第1のPEは、
    制御回路と、
    汎用レジスタ群と、
    演算器群と、
    データメモリと、
    を備え、
    前記汎用レジスタ群は、複数のレジスタ(GPR10〜GPR1p)を備え、レジスタ(GPR12)はセレクタ(mux00)の選択結果により更新され、残りのレジスタ(GPR10〜GPR11)及びレジスタ(GPR13〜GPR1p)は、セレクタ(mux07)の選択結果により更新され、
    前記汎用レジスタ群の出力は、前記制御回路に制御されたセレクタ(mux1−0)で選択され、オペランド(opr0、opr1)として前記演算器群及び前記データメモリに供給され、
    セレクタ(mux00)は、前記制御回路の制御に基づき、加減算器の演算結果と、セレクタ(mux07)の選択結果を選択して、選択結果を、前記レジスタ(GPR12)に提供し、
    前記演算器群は、加減算器と、乗算器と、バレルシフタと、を備え、
    前記加減算器は、セレクタ(mux01)の選択結果とセレクタ(mux02)の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
    前記乗算器は、セレクタ(mux03)の選択結果とセレクタ(mux04)の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
    前記バレルシフタは、セレクタ(mux05)の選択結果とセレクタ(mux06)の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
    前記演算結果は、前記制御回路に制御されたセレクタ(mux1−1)で選択されセレクタ(mux07)に提供され、
    セレクタ(mux01)は、前記制御回路の制御に基づき、オペランド(opr0)の指数部分を下位ビットとし、上位側に0を組み合わせたビット列と、オペランド(opr0)を選択して、選択結果を、前記加減算器に提供し、
    セレクタ(mux02)は、前記制御回路の制御に基づき、オペランド(opr1)のうちの指数部分を下位ビットとし、上位側に0を組み合わせたビット列と、オペランド(opr1)を選択して、選択結果を、前記加減算器に提供し、
    セレクタ(mux03)は、前記制御回路の制御に基づき、オペランド(opr0)のうち単精度の仮数部分を下位ビットとし、上位ビットに1、その上位側に0を組み合わせたビット列と、オペランド(opr0)を選択して、選択結果を、前記乗算器に提供し、
    セレクタ(mux04)は、前記制御回路の制御に基づき、オペランド(opr1)のうち単精度の仮数部分を下位ビットとし、上位ビットに1、その上位側に0を組み合わせたビット列と、opr1を選択して、選択結果を、前記乗算器に提供し、
    セレクタ(mux05)は、前記制御回路の制御に基づき、前記レジスタ(GPR1p−1)の下位ビットを上位、前記レジスタ(GPR1p)の所定ビットを下位としたビット列(tmpf)の上位ビットと、その上位側に0を組み合わせたビット列と、オペランド(opr0)を選択して、選択結果を前記バレルシフタに提供し、
    セレクタ(mux06)は、前記リーディングワンの演算結果と、オペランド(opr1)を選択して、前記バレルシフタに提供し、
    前記演算器群は、浮動小数点加減算命令の実行のみに使用するリーディングワンと、加算器を備え、
    前記リーディングワンは仮数途中結果(tmpf)のビット列をMSB側から検索し、MSBから最初に現れた1までの距離(sw)を計算し、前記加算器とセレクタ(mux06)と前記第2のPEに提供し、
    前記加算器は、前記レジスタ(GPR12)に格納された仮数部の途中結果(tmpe0)と、前記リーディングワンの検索結果を加算し、前記第2のPEに提供し、
    前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び外部メモリデータ転送網からのデータを記憶素子に書き込み、前記データから読み出したデータをセレクタ(mux07)及び前記外部メモリデータ転送網に提供し、
    前記セレクタ(mux07)は、前記制御回路の制御に基づき、前記セレクタ(mux1−1)の選択結果、前記データメモリの読み出し結果を選択し、選択結果を、前記汎用レジスタ群に提供する、
    請求項18の並列演算プロセッサ。
  24. 前記第2のPEは、前記PE演算器間接続を介して、前記第1のPEから、浮動小数点乗算命令の途中結果である仮数途中結果(tmpf)と指数途中結果(tmpe1)と符号結果(sign)とシフト途中結果の上位データ(hdata)を受け取り、前記第2のPEから前記第1のPEに、シフト途中結果の下位データ(ldata)を提供する。請求項18の並列演算プロセッサ。
  25. 前記第2のPEは、
    制御回路と、
    汎用レジスタ群と、
    演算器群と、
    データメモリと、
    を備え、
    前記汎用レジスタ群は、複数のレジスタ(GPR20〜GPR2p)を備え、形式成型器の選択結果により更新され、
    前記汎用レジスタ群の出力は、前記制御回路に制御されたセレクタ(mux2−0)で選択され、オペランド(opr0、opr1)として演算器群及びデータメモリに供給され、
    前記演算器群は、加減算器と、乗算器と、バレルシフタと、を備え、
    前記加減算器は、セレクタ(mux08)とセレクタ(mux09)の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
    前記乗算器は、それぞれ前記opr0とopr1をオペランドとして、前記制御回路の制御に基づいた演算を行い、
    前記バレルシフタは、セレクタ(mux10)とセレクタ(mux11)の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
    前記演算器群の演算結果は、前記制御回路に制御されたセレクタ(mux2−1)で選択され、セレクタ(mux12)に提供され、
    前記セレクタ(mux08)は、前記制御回路の制御に基づき、前記バレルシフタの演算結果と、オペランド(opr0)を選択して、前記加減算器に提供し、
    前記セレクタ(mux09)は、前記制御回路の制御に基づき、値1と、オペランド(opr1)を選択して、前記加減算器に提供し、
    前記セレクタ(mux10)は、前記制御回路の制御に基づき、浮動小数点乗算命令の途中結果である仮数途中結果(tmpf)の下位側所定ビットと、オペランド(opr0)を選択して、前記バレルシフタに提供し、
    セレクタ(mux11)は、前記制御回路の制御に基づき、前記PE演算器間接続を介して、前記第1のPEより提供されたシフト幅と前記オペランド(opr1)を選択して、前記バレルシフタに提供し、
    前記演算器群は、浮動小数点加減算命令の実行のみに使用する減算器と、丸め検出器と、をさらに備え
    前記減算器は、指数途中結果(tmpe1)から所定値を減算し、減算結果を前記形式成型器に提供し、
    前記丸め検出器は、前記バレルシフタの演算結果が丸めを必要とするかを判定し、判定結果をセレクタ(mux2−1)に提供し、
    前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータをセレクタ(mux12)及び外部メモリデータ転送網に提供し、
    前記セレクタ(mux12)は、前記制御回路の制御に基づき、セレクタ(mux2−1)の選択結果、前記データメモリの読み出し結果を選択し、選択結果を形式成型器に提供し、
    前記形式成型器は、前記制御回路の制御に基づき、前記セレクタ(mux12)の選択結果と、前記減算器の演算結果と、前記第1のPEより提供された符号結果(sign)を選択し、選択結果を、前記汎用レジスタ群に提供し、
    前記形式成型器は、前記制御回路の制御に基づき、前記セレクタ(mux12)の選択結果を仮数部とし、前記減算器の演算結果を指数部とし、前記第1のPEより提供された符号結果(sign)を符号として選択して形式に整え、前記汎用レジスタ群に提供する、
    請求項23の並列演算プロセッサ。
  26. 前記PE演算器間接続を介して、前記第1のPEは前記第2のPEから、マルチサイクル型浮動小数点命令の終了信号を受け取り、前記第1のPEから前記第2のPEに、演算結果の符号(sign)と指数途中結果(tmpe)、演算結果一桁(QUO)を提供する、請求項18の並列演算プロセッサ。
  27. 前記第1のPEは、
    制御回路と、
    汎用レジスタ群と、
    演算器群と、
    データメモリと、
    を備え、
    前記汎用レジスタ群は、複数のレジスタ(GPR10〜GPR1p)を備え、レジスタ(GPR10、GPR11、GPR12)はそれぞれ、対応するセレクタ(mux00、mux01、mux02)の選択結果により更新され、残りのレジスタ(GPR13〜GPR1p)は、セレクタ(mux04)の選択結果により更新され、
    前記汎用レジスタ群の出力は、前記制御回路に制御されたセレクタ(mux1−0)で選択され、オペランド(opr0、opr1)として、演算器群及びデータメモリに供給され、
    前記セレクタ(mux00)は、前記制御回路の制御に基づき、レジスタ(GPR10)のうち仮数部分の上位ビットを1とし、さらに上位ビット側を0としたビット列と、セレクタ(mux03)の選択結果と、セレクタ(mux04)の選択結果を選択して、選択結果をレジスタ(GPR10)に提供し、
    セレクタ(mux01)は、前記制御回路の制御に基づき、前記レジスタ(GPR11)のうち仮数部分の上位ビットを1とし、さらに上位ビット側を0としたビット列と、セレクタ(mux0)4の選択結果を選択して、選択結果を前記レジスタ(GPR11)に提供し、
    前記セレクタ(mux0)は、前記制御回路の制御に基づき、前記演算器群の減算器の減算結果と、セレクタ(mux04)の選択結果を選択して、選択結果を、前記レジスタ(GPR11)に提供し、
    前記汎用レジスタ群は、浮動小数点除算命令の実行のみに使用する減算器を備え、
    前記減算器は、前記レジスタ(GPR10)のうち指数部から、前記レジスタ(GPR11)のうち指数部を減算し、減算結果をセレクタ(mux02)に提供し、
    前記演算器群は、加減算器と、乗算器と、バレルシフタと、を備え、それぞれの演算器は、前記制御回路の制御に基づき、セレクタ(mux1−0)から供給されたオペランド(opr0とopr1)に対する演算を行い、
    前記演算器群の演算結果は、前記制御回路に制御されたセレクタ(mux1−1)で選択され、セレクタ(mux04)に提供され、
    前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータをセレクタ(mux04)及び前記外部データ転送網に提供し、
    セレクタ(mux04)は、前記制御回路の制御に基づき、前記セレクタ(mux1−1)の選択結果、前記データメモリの読み出し結果を選択し、選択結果を前記汎用レジスタ群に提供する、請求項18の並列演算プロセッサ。
  28. 前記PE演算器間接続を介して、前記第2のPEは、前記第1のPEから、演算の結果(QUO)と、浮動小数点命令の途中結果である指数途中結果(tmpe)と符号結果(sign)を受け取り、前記第2のPEから前記第1のPEに、浮動小数演算の終了信号(END)を提供する請求項18の並列演算プロセッサ。
  29. 前記第2のPEは、
    制御回路と、
    汎用レジスタ群と、
    演算器群と、
    データメモリと、
    を備え、
    前記汎用レジスタ群は、複数のレジスタ(GPR20〜GPR2p)を備え、
    前記レジスタ(GPR20)は、セレクタ(mux05)の選択結果により更新され、他のレジスタ(GPR21〜GPR2p)は形式成型器の選択結果により更新され、
    前記汎用レジスタ群の出力は、制御回路に制御されたセレクタ(mux2−0)で選択され、オペランド(opr0、opr1)として前記演算器群及びデータメモリに供給され、
    セレクタ(mux05)は、前記制御回路の制御に基づき、レジスタ(GPR20)のビット列からMSBを取り除き、LSBに前記PE演算器間接続を介して第1のPEから提供された浮動小数点命令の結果一桁(QUO)を加えたビット列と、前記形式成型器の選択結果を選択し、選択結果を前記レジスタ(GPR20)に提供し、
    前記演算器群は、
    加減算器と、
    乗算器と、
    バレルシフタと、
    を備え、
    前記加減算器は、セレクタ(mux06)の選択結果と前記オペランド(opr1)を、オペランドとして、制御回路の制御に基づいた演算を行い、
    前記乗算器は、前記オペランド(opr0とopr1)を、オペランドとして、制御回路の制御に基づいた演算を行い、
    前記バレルシフタは、オペランド(opr0)とセレクタmux07の選択結果を、オペランドとして、前記制御回路の制御に基づいた演算を行い、
    演算結果は、前記制御回路に制御されたセレクタ(mux2−1)で選択され、セレクタ(mux08)に提供され、
    セレクタ(mux06)は、前記制御回路の制御に基づき、前記バレルシフタの演算結果とオペランド(opr0)を選択し、選択結果を前記加減算器に提供し、
    セレクタ(mux07)は、前記制御回路の制御に基づき、リーディングワン演算結果とオペランド(opr1)を選択し、選択結果を前記バレルシフタに提供し、
    前記演算器群は、浮動小数点命令の実行のみに使用するリーディングワンと加算器と丸め検出器を備え、
    前記リーディングワンは、前記オペランド(opr0)のビット列をMSB側からLSB側へ検索し、MSBから最初に現れた1までの距離を計算し、前記加算器とセレクタ(mux07)に提供し、
    前記加算器は、前記PE演算器間接続を介して前記第1のPEから提供された指数途中結果(tmp)と、前記リーディングワンの演算結果を加算し、加算結果を、前記形式成型器に提供し、
    前記丸め検出器は、前記バレルシフタの演算結果が丸めを必要とするかを判定し、判定結果をセレクタ(mux2−1)に提供し、
    前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータをセレクタ(mux08)及び前記外部メモリデータ転送網に提供し、
    前記セレクタmux08は、前記制御回路の制御に基づき、前記セレクタ(mux2−1)の選択結果、前記データメモリの読み出し結果を選択し、選択結果を前記形式成型器に提供し、
    前記形式成型器は、前記制御回路の制御に基づき、前記セレクタ(mux08)の選択結果と、前記加算器の加算結果と、前記第1のPEより提供された符号結果(sign)を選択し、選択結果を前記汎用レジスタ群に提供し、
    前記形式成型器は、前記制御回路の制御に基づき、前記セレクタ(mux08)の選択結果を仮数部とし、前記加算器の加算結果を指数部とし、前記第1のPEより提供された符号結果(sign)を符号部として選択し、形式を整え、前記汎用レジスタ群に提供する請求項27の並列演算プロセッサ。
JP2007088656A 2007-03-29 2007-03-29 再構成可能なsimd型プロセッサ Expired - Fee Related JP4232838B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2007088656A JP4232838B2 (ja) 2007-03-29 2007-03-29 再構成可能なsimd型プロセッサ
PCT/JP2008/055885 WO2008123361A1 (ja) 2007-03-29 2008-03-27 再構成可能なsimd型プロセッサ及びその命令実行制御の方法
US12/593,498 US20100174891A1 (en) 2007-03-29 2008-03-27 Reconfigurable simd processor and method for controlling its instruction execution
EP08739014.2A EP2144158B1 (en) 2007-03-29 2008-03-27 Reconfigurable simd processor and its execution control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007088656A JP4232838B2 (ja) 2007-03-29 2007-03-29 再構成可能なsimd型プロセッサ

Publications (2)

Publication Number Publication Date
JP2008250471A true JP2008250471A (ja) 2008-10-16
JP4232838B2 JP4232838B2 (ja) 2009-03-04

Family

ID=39830850

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007088656A Expired - Fee Related JP4232838B2 (ja) 2007-03-29 2007-03-29 再構成可能なsimd型プロセッサ

Country Status (4)

Country Link
US (1) US20100174891A1 (ja)
EP (1) EP2144158B1 (ja)
JP (1) JP4232838B2 (ja)
WO (1) WO2008123361A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013140472A (ja) * 2012-01-04 2013-07-18 Fujitsu Ltd ベクトルプロセッサ

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101379481A (zh) * 2006-08-23 2009-03-04 日本电气株式会社 处理元件、混合模式并行处理器系统、处理元件方法、混合模式并行处理器方法、处理元件程序、以及混合模式并行处理器程序
KR101098758B1 (ko) * 2007-09-20 2011-12-26 서울대학교산학협력단 Fp-ra를 구성하는 pe 구조 및 그 fp-ra제어하는 fp-ra 제어 회로
GB0907559D0 (en) * 2009-05-01 2009-06-10 Optos Plc Improvements relating to processing unit instruction sets
JP5397061B2 (ja) * 2009-07-21 2014-01-22 富士通株式会社 演算処理装置、その制御方法および演算処理プログラム
US9274752B2 (en) 2012-12-28 2016-03-01 Intel Corporation Leading change anticipator logic
JP6308095B2 (ja) * 2014-10-08 2018-04-11 富士通株式会社 演算回路及び演算回路の制御方法
US9735953B2 (en) * 2015-03-06 2017-08-15 Qualcomm Incorporated Side channel analysis resistant architecture
FR3083351B1 (fr) * 2018-06-29 2021-01-01 Vsora Architecture de processeur asynchrone
FR3083350B1 (fr) * 2018-06-29 2021-01-01 Vsora Acces memoire de processeurs
CN109976705B (zh) * 2019-03-20 2020-06-02 上海燧原智能科技有限公司 浮点格式数据处理装置、数据处理设备及数据处理方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5218709A (en) * 1989-12-28 1993-06-08 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Special purpose parallel computer architecture for real-time control and simulation in robotic applications
JP2508912B2 (ja) * 1990-10-31 1996-06-19 日本電気株式会社 浮動小数点加算装置
US5809292A (en) * 1990-11-13 1998-09-15 International Business Machines Corporation Floating point for simid array machine
US5241490A (en) * 1992-01-06 1993-08-31 Intel Corporation Fully decoded multistage leading zero detector and normalization apparatus
JP2642039B2 (ja) * 1992-05-22 1997-08-20 インターナショナル・ビジネス・マシーンズ・コーポレイション アレイ・プロセッサ
JPH0651984A (ja) 1992-06-05 1994-02-25 Hitachi Ltd マイクロプロセッサ
JPH1091439A (ja) * 1996-05-23 1998-04-10 Matsushita Electric Ind Co Ltd プロセッサ
US6044448A (en) * 1997-12-16 2000-03-28 S3 Incorporated Processor having multiple datapath instances
US6175847B1 (en) * 1998-07-22 2001-01-16 Intrinsity, Inc. Shifting for parallel normalization and rounding technique for floating point arithmetic operations
JP3983394B2 (ja) 1998-11-09 2007-09-26 株式会社ルネサステクノロジ 幾何学処理プロセッサ
WO2000078120A2 (en) * 1999-06-21 2000-12-28 Bops Incorporated Methods and apparatus for initiating and resynchronizing multi-cycle simd instructions
JP3940542B2 (ja) 2000-03-13 2007-07-04 株式会社ルネサステクノロジ データプロセッサ及びデータ処理システム
JP2002229962A (ja) * 2001-02-06 2002-08-16 Ricoh Co Ltd 総和値とピーク値を検出するsimd型マイクロプロセッサ
JP4712247B2 (ja) * 2001-08-31 2011-06-29 富士通セミコンダクター株式会社 整数除算または整数剰余算を含むアプリケーションプログラム向けのマイクロプロセッサの開発システム
US20070067380A2 (en) * 2001-12-06 2007-03-22 The University Of Georgia Research Foundation Floating Point Intensive Reconfigurable Computing System for Iterative Applications
GB0224023D0 (en) * 2002-10-16 2002-11-27 Roysmith Graeme Reconfigurable integrated circuit
JP2007088656A (ja) 2005-09-21 2007-04-05 Sony Corp ラジオ受信機及びラジオ受信機の制御方法
DE212007000102U1 (de) * 2007-09-11 2010-03-18 Core Logic, Inc. Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen
KR101098758B1 (ko) * 2007-09-20 2011-12-26 서울대학교산학협력단 Fp-ra를 구성하는 pe 구조 및 그 fp-ra제어하는 fp-ra 제어 회로

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013140472A (ja) * 2012-01-04 2013-07-18 Fujitsu Ltd ベクトルプロセッサ

Also Published As

Publication number Publication date
EP2144158A4 (en) 2011-08-10
EP2144158B1 (en) 2015-01-07
EP2144158A1 (en) 2010-01-13
JP4232838B2 (ja) 2009-03-04
WO2008123361A1 (ja) 2008-10-16
US20100174891A1 (en) 2010-07-08

Similar Documents

Publication Publication Date Title
JP4232838B2 (ja) 再構成可能なsimd型プロセッサ
TWI784980B (zh) 用於執行算術運算以累加浮點數的裝置及方法
TWI625671B (zh) 微處理器與在微處理器中執行之方法
US6049865A (en) Method and apparatus for implementing floating point projection instructions
CN102262525B (zh) 基于矢量运算的矢量浮点运算装置及方法
WO2019005088A1 (en) HETEROGENEOUS MULTIPLIER
KR20240011204A (ko) 행렬 연산 가속기의 명령어들을 위한 장치들, 방법들, 및 시스템들
CN106528044A (zh) 处理器、指令执行方法和计算系统
JPH0863353A (ja) 掛け算累算命令を使用したデータ処理
CN105335127A (zh) Gpdsp中支持浮点除法的标量运算单元结构
US9703626B2 (en) Recycling error bits in floating point units
TWI724545B (zh) 用於影像處理之設備及方法
US11188305B2 (en) Computation device having a multiplexer and several multipliers and computation system
GB2423386A (en) Performing a reciprocal operation on an input value to produce a result value
US20220156567A1 (en) Neural network processing unit for hybrid and mixed precision computing
KR20140138053A (ko) 특히 함수 모델을 순수 하드웨어에 기초하여 연산하기 위한 함수 모델 유닛 내에서 사용하기 위한 fma 유닛
US9753690B2 (en) Splitable and scalable normalizer for vector data
Jeon et al. M3FPU: Multiformat Matrix Multiplication FPU Architectures for Neural Network Computations
JPH10207863A (ja) 演算処理装置
GB2537524A (en) Variable length execution pipeline having an odd number of stages

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080728

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080826

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081027

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

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

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

Free format text: PAYMENT UNTIL: 20111219

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20111219

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121219

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121219

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20131219

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees