JP5089776B2 - 浮動小数点演算のための再構成アレイプロセッサ - Google Patents

浮動小数点演算のための再構成アレイプロセッサ Download PDF

Info

Publication number
JP5089776B2
JP5089776B2 JP2010524767A JP2010524767A JP5089776B2 JP 5089776 B2 JP5089776 B2 JP 5089776B2 JP 2010524767 A JP2010524767 A JP 2010524767A JP 2010524767 A JP2010524767 A JP 2010524767A JP 5089776 B2 JP5089776 B2 JP 5089776B2
Authority
JP
Japan
Prior art keywords
array
processing elements
processing element
processor
processing
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
JP2010524767A
Other languages
English (en)
Other versions
JP2010539582A (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.)
Core Logic Inc
Original Assignee
Core Logic Inc
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 Core Logic Inc filed Critical Core Logic Inc
Publication of JP2010539582A publication Critical patent/JP2010539582A/ja
Application granted granted Critical
Publication of JP5089776B2 publication Critical patent/JP5089776B2/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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3824Accepting both fixed-point and floating-point numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Nonlinear Science (AREA)
  • Advance Control (AREA)

Description

本発明はマルチメディア・プラットホーム(multimedia platforms)を含む、多様なア
プリケーションに適合するデジタル情報プロセッシング及び装置に関する。
複雑なデータプロセッシングを行うためのデジタル情報プロセッシング及び装置が、マルチメディア・プラットホームを含む多様なアプリケーションのために具現されうる。高品質のマルチメディア・サービスに対する要求が高まるにつれ、携帯電話(cellular telephones)、スマートホン(smart phones)、PDAs(personal digital assistances)のようなモバイルシステムで、オーディオデータ及び/またはビデオデータを効率的にプロセッシングするためのアプリケーション・プログラムが開発されうる。このようなアプリケーション・プログラムは、データ集中計算(data intensive computation)を行うことができ、当該プロセッサで作動するソフトウェア実装(SI:software implementation)を利用して具現されたり、またはASIC(application specific integrated circuit)タイプのハードウェア実装(HI:hardware implementation)を利用して具現されたりしうる。
従って、本発明が解決しようとする課題は、既存の整数演算用PEを利用している従来の再構成アレイプロセッサとほぼ類似したハードウェアのサイズを有しつつも、浮動小数点演算(floating point operation)を比較的速く行うことができ、低電力であり、かつ性能対価格の高特性を有する再構成アレイ(reconfigurable array)プロセッサ、及びそのプロセッサを含んだマルチメディア・プラットホームを提供するところにある。
浮動小数点演算を行うためのデジタル情報プロセッシング及び装置が記述される。本発明は、浮動小数点演算を行うことができるように構成されたプロセッシング要素アレイ(array of processing elements)を含み、前記各プロセッシング要素は、2つの入力値を受け、前記入力値に対する整数演算を行う演算装置(arithmetic logic unit)を含むことを特徴とするプロセッサを提供する。前記アレイ内の前記プロセッシング要素は、浮動小数点演算のために、2つ以上の前記プロセッシング要素からなるグループに共に連結される。
本発明の一実施形態は、下記の特徴のうち、一つ以上を選択的に含むことができる。前記演算装置は、16ビット演算装置を含むことができる。前記アレイの前記プロセッシング要素(PEs:processing elements)は、連結されたプロセッシング要素間で、デー
タ交換のために、メッシュ(mesh)構造に互いに連結されうる。また、前記アレイは、それぞれのプロセッシング要素を利用した整数演算遂行、及び互いに連結された2つ以上のプロセッシング要素のグループを利用した浮動小数点演算遂行のうち、少なくとも一つを行うように選択的に構成されうる。前記アレイの1行または1列内の少なくとも2個のプロセッシング要素が、浮動小数点演算のための2つ以上のグループを形成するために、共に連結されうる。前記アレイは、前記整数演算時には、8×5配列構造で動作し、前記浮動小数点演算時には、前記アレイの各行内の2個のプロセッシング要素が連結され、4×5配列構造で動作するように選択的に構成されうる。さらに、前記アレイの行または列内のプロセッシング要素によって行われる整数演算及び浮動小数点演算のうちの少なくとも1つの演算を制御するコンテクスト(context)を保存するための構成キャッシュが、前記アレイに連結されうる。前記構成キャッシュはまた、前記プロセッシング要素間のデータ交換を制御できる。前記プロセッシング要素は、前記コンテクストに基づいて、行または列単位で構成されてパイプライン(pipeline)を形成し、前記コンテクストが指示する方向に、前記パイプライン動作の結果をフォワーディングすることができる。
本発明の一実施形態は、下記の特徴のうち、一つ以上を選択的に含むことができる。2つ以上のプロセッシング要素からなるグループの前記2つ以上の各グループは、時間的マッピング(temporal mapping)を介して、前記整数演算または浮動小数点演算を行うように構成されうる。また、2つ以上のプロセッシング要素からなるグループの前記2つ以上の各グループは、整数演算遂行または浮動小数点演算遂行の最終値が獲得された後、次のコンテクストを受けるように構成されうる。さらに、2つ以上のプロセッシング要素から
なるグループの前記2つ以上の各グループは、マルチサイクル演算を行うための制御信号をコンテクストから受け付けるように構成されうる。2つ以上のプロセッシング要素の前記2つ以上のグループは、浮動小数点に係わる四則演算及び超越関数演算を行うことができるように構成されうる。さらに、前記2つ以上のプロセッシング要素からなるグループの前記2つ以上の各グループは、前記四則演算遂行のために連結された2個のプロセッシング要素を含むことができる。各グループ内の2個の連結されたプロセッシング要素は、2個のオペランド(operand)の符号及び仮数(mantissa)が入力される仮数部プロセッシング要素、及び前記2個のオペランドの指数が入力される指数部プロセッシング要素を含むことができる。前記仮数部プロセッシング要素は、2つのオペランドの仮数を乗じたり割ったりするように、乗算器及び除算器のうち、少なくとも一つに連結される。前記指数部プロセッシング要素は、2つのオペランドの指数を加えたり差し引いたりするように構成されうる。さらに、前記各プロセッシング要素は、前記演算装置に連結され、前記演算装置に少なくとも2個の入力値を提供する2個のマルチプレクサ(multiplexer)を含むことができる。前記各プロセッシング要素はまた、前記演算装置に連結され、前記演算装置から受けた結果値にシフト演算を行うシフタ(shifter)を含むことができる。また、臨時レジスタが前記演算装置の中間結果値及びシフタの中間結果値を保存するために、前記演算装置及びシフタに連結されうる。さらに、出力レジスタが前記演算装置の最終結果値及びシフタの最終結果値を保存するために、前記演算装置及びシフタに連結されうる。前記各マルチプレクサは、データバス、他のプロセッシング要素及び自らのレジスタファイルから受けたデータの中から、データを選択できるように構成できる。選択されたデータは、前記演算装置の入力値として提供される。前記出力レジスタに保存された最終結果値は、データバスを介して、他のプロセッシング要素に入力されうる。代案として、最終値は、データバスを介して出力値として提供されうる。
他の観点で、本発明は、一つ以上の浮動小数点演算を行うように構成されたプロセッシング要素アレイを含む再構成アレイプロセッサ(reconfigurable array processor)を提供する。前記アレイ内のプロセッシング要素は、2つ以上のプロセッシング要素からなるグループに共に連結される。前記再構成アレイプロセッサはまた、コンテクストを保存するために、前記アレイに連結された構成キャッシュを含む。保存されたコンテクストは、前記アレイの行または列内で前記プロセッシング要素によって行われる一つ以上の演算遂行を制御し、前記プロセッシング要素間のデータ交換を可能にするように構成されうる。さらに、フレームバッファが前記アレイに連結され、前記アレイによって行われた一つ以上の演算遂行の臨時結果値を保存するために、キャッシュメモリー(cache memory)として動作されうる。
本発明の一実施形態は、下記の特徴のうち、一つ以上を選択的に含むことができる。前記各プロセッシング要素は、2つの入力値を受けて前記入力値を処理する演算装置を含むことができる。前記アレイの前記プロセッシング要素は、前記プロセッシング要素間で、データ交換のために、メッシュ構造に互いに連結されうる。前記アレイは、前記各プロセッシング要素を利用して整数演算遂行をアレイは、前記各プロセッシング要素を利用して整数演算を行うことができるように、選択的に構成されうる。または代案として、前記アレイは、共に連結された2つ以上のプロセッシング要素の2つ以上の各グループを利用し、一つ以上の浮動小数点演算を行うように、選択的に構成されうる。2つ以上のプロセッシング要素からなるグループの前記2つ以上の各グループは、前記一つ以上の浮動小数点演算を行うように連結された、前記アレイの列または行内の少なくとも2個のプロセッシング要素を含むことができる。前記アレイは、前記アレイは、整数演算時には、8×5配列構造で遂行されるように選択的に構成されうる。または代案として、前記アレイは、浮動小数点演算時には、各行内の2個のプロセッシング要素が結合され、4×5配列構造で遂行されるように選択的に構成されうる。前記コンテクストに基づいて、前記プロセッシング要素は、パイプラインを形成するために、行または列単位で構成され、前記パイプライン動作の結果は、前記コンテクストによって指示する方向にフォワーディングされるように構成されうる。
本発明の一実施形態は、下記の特徴のうち、一つ以上を選択的に含むことができる。2つ以上のプロセッシング要素からなるグループの前記2つ以上の各グループは、時間的マッピング(temporal mapping)を介して、前記整数演算遂行または前記一つ以上の浮動小数点演算を行うようにデザインされうる。また、各グループは、整数演算または浮動小数点演算の最終値が獲得された後、次のコンテクストを受けることができるように構成されうる。さらに、前記各グループは、マルチサイクル演算を行うための制御信号のコンテクストを受けることができるように構成されうる。2つ以上のプロセッシング要素の前記2つ以上のグループは、浮動小数点に係わる四則演算及び超越関数計算を行うことができるように構成されうる。2つ以上のプロセッシング要素からなるグループの前記2つ以上の各グループは、前記四則演算遂行のために連結された2個のプロセッシング要素を含むことができる。各グループ内の2個の連結されたプロセッシング要素は、2個のオペランドの符号及び仮数を入力される仮数部プロセッシング要素、及び前記2個のオペランドの指数を入力される指数部プロセッシング要素を含むことができる。前記仮数部プロセッシング要素は、2つのオペランドの仮数を乗じたり割ったりするように、乗算器及び除算器のうち、少なくとも一つに連結されうる。また、前記指数部プロセッシング要素は、2つのオペランドの指数を加えたり差し引いたりするように構成されうる。
本発明の一実施形態は、下記の特徴のうち、一つ以上を選択的に含むことができる。前記フレームバッファは、24ビット浮動小数点フォーマットを含むように構成されうる。前記24ビット浮動小数点フォーマットは、1ビットの符号ビット、8ビットの指数ビット及び15ビットの仮数ビットを含む。前記仮数部プロセッシング要素は、入力された2つのオペランドの符号及び仮数を、前記フレームバッファの1符号ビット及び15仮数ビットに変換するように構成される。さらに、変換された前記1符号ビット及び15仮数ビットは、前記フレームバッファに保存されうる。前記指数部プロセッシング要素は、入力された2つのオペランドの指数をフレームバッファの8指数ビットに変換し、変換された前記8指数ビットを、前記フレームビットに保存するように構成されうる。前記各プロセッシング要素は、前記演算装置に連結され、前記演算装置に少なくとも2個の入力値を提供する2個のマルチプレクサを含むことができる。シフタが、前記演算装置から受けた結果値にシフト演算を行うために、前記演算装置に連結されうる。さらに、臨時レジスタが、前記演算装置の中間結果値及びシフタの中間結果値を保存するために、前記演算装置及びシフタに連結されうる。さらに、出力レジスタが前記演算装置の最終結果値及びシフタの最終結果値を保存するために、前記演算装置及びシフタに連結されうる。前記各マルチプレクサは、データバス、他のプロセッシング要素及び自体のレジスタファイルから受けたデータからデータを選択するようにデザインされうる。また、前記各マルチプレクサは、前記演算装置に選択された前記データを入力し、前記出力レジスタに保存された最終結果値を他のプロセッシング要素に入力したり、またはデータバスを介して最終結果値を出力できる。前記アレイは、粗粒度再構成アレイ(coarse-grained reconfigurable array)を含むことができる。さらに、前記再構成アレイ制御部が、前記アレイ、構成キャッシュ及びフレームバッファの動作を制御するために、前記アレイに連結されうる。
他の観点で、本発明のデジタル情報プロセッシング装置は、複数の一つ以上の浮動小数点演算を行うように構成されたプロセッシング要素アレイを具備した多様な構成要素を含む再構成アレイプロセッサを含む。前記アレイ内のプロセッシング要素は、2つ以上のプロセッシング要素のグループに共に連結されうる。また、構成キャッシュが前記アレイの行または列内でプロセッシング要素によって行われる一つ以上の演算遂行を制御するために、前記アレイに連結される。前記コンテクストはまた、前記プロセッシング要素間にデータ交換を制御するために構成されうる。さらに、フレームバッファが、前記アレイに連結され、前記アレイによって行われた一つ以上の演算遂行の臨時結果値を保存するキャッシュメモリとして動作できる。さらに、制御及びメモリ部が前記再構成アレイプロセッサを制御してデータを保存するために、前記システムバスを介して、前記再構成アレイプロセッサに連結される。
本発明の一実施形態は、下記の特徴のうち、一つ以上を選択的に含むことができる。前記制御及びメモリ部は、データ処理及び制御を行う組み込みコア(embedded core)、データ保存を行う外部メモリ、及びデータ移動を行うディレクト・メモリアクセス(direct memory access)コントローラを含むことができる。前記組み込みコアは、縮小命令セットコンピュータ(reduced instruction set computer)プロセッサ、または縮小命令セットコンピュータ・プロセッサ及び複雑命令セットコンピュータ(complex instruction set computer)プロセッサの特徴が混合された形態のプロセッサを含むことができる。また、前記デジタル情報プロセッシング装置は、前記再構成アレイプロセッサの各構成要素が1つの前記システムバスを介して、前記制御及びメモリ部の各構成要素に連結されるようにSoC(system on chip)構造で具現されうる。前記各プロセッシング要素は、2つの入力値を受け、前記入力値を処理する演算装置を含むことができる。前記アレイの前記プロセッシング要素は、前記プロセッシング要素間のデータ交換のためのメッシュ構造に互いに連結されうる。前記アレイは、前記各プロセッシング要素を利用して整数演算を行うように選択的に構成されうる。または代案として、共に連結された2つ以上のプロセッシング要素からなるグループの2つ以上の各グループを利用し、一つ以上の浮動小数点演算を行うように、選択的に構成されうる。前記プロセッシング要素は、パイプラインを形成するために、前記コンテクストに基づいて、行または列単位で構成されうる。前記パイプライン動作の結果は、前記コンテクストによって指示する方向にフォワーディングされる。2つ以上のプロセッシング要素からなるグループの前記2つ以上の各グループは、時間的マッピングを介して、前記整数演算遂行または前記一つ以上の浮動小数点演算を行うように構成されうる。前記2つ以上の各グループは、整数演算または浮動小数点演算の最終値が獲得された後、次のコンテクストを受ける。さらに、前記2つ以上のグループは、マルチサイクル演算を行うための制御信号のコンテクストを受けることができるように構成されうる。
本発明の一実施形態は、下記の特徴のうち、一つ以上を選択的に含むことができる。2つ以上のプロセッシング要素からなるグループの前記2つ以上のグループは、浮動小数点に係わる四則演算及び超越関数計算を行うことができるように構成されうる。2つ以上のプロセッシング要素の前記2つ以上の各グループは、前記四則演算遂行のために連結された2個のプロセッシング要素を含むことができる。各グループ内の2個の連結されたプロセッシング要素は、2個のオペランドの符号及び仮数を入力される仮数部プロセッシング要素、及び2個のオペランドの指数を入力される指数部プロセッシング要素を含むことができる。前記仮数部プロセッシング要素は、2つのオペランドの仮数を乗じたり割ったりするように、乗算器及び除算器のうち、少なくとも一つに連結されうる。また、前記指数部プロセッシング要素は、2つのオペランドの指数を加えたり差し引いたりするように構成されうる。さらに、前記フレームバッファは、1符号ビット、8指数ビット及び15仮数ビットを含んだ24ビット浮動小数点フォーマットを有するように構成されうる。前記各プロセッシング要素は、前記演算装置に連結され、前記演算装置に少なくとも2個の入力値を提供する2個のマルチプレクサを含むことができる。また、シフタが前記演算装置から受けた結果値にシフト演算を行うために、前記演算装置に連結されうる。臨時レジスタが前記演算装置の中間結果値及びシフタの中間結果値を保存するために、前記演算装置及びシフタに連結されうる。出力レジスタが前記演算装置の最終結果値及びシフタの最終結果値を保存するために、前記演算装置及びシフタに連結されうる。前記各マルチプレクサは、データバス、他のプロセッシング要素及び自体のレジスタファイルから受けたデータからデータを選択するようにデザインされうる。また、前記各マルチプレクサは、前記演算装置に選択された前記データを入力し、前記出力レジスタに保存された最終結果値を他のプロセッシング要素に入力したり、またはデータバスを介して最終結果を出力できる。前記再構成アレイプロセッサは、粗粒度再構成アレイを含むことができる。また、前記再構成アレイプロセッサは、前記再構成アレイプロセッサに連結され、前記再構成アレイプロセッサの構成要素を制御する再構成アレイ制御部を含むことができる。従って、高ハードウェア及び高プロセッサ効率を有する演算プロセッサが具現されうる。
本発明に基づいた再構成アレイプロセッサを含んだマルチメディア・プラットホームは、前述のような高性能の演算プロセッサを含んでSoC構造で具現できる。それによって、マルチメディア・プラットホームは、低い電力消耗及び価格対比の高性能を要求する現在のモバイルマルチメディアに効率的に適用されうる。
本詳細な説明に基づいた技術は、下記の一つ以上の利点を提供できる。再構成アレイプロセッサが浮動小数点演算を相対的に速く行うことができるように具現されうる。再構成アレイプロセッサが整数演算を行う既存のプロセッシング要素を利用した既存の再構成アレイプロセッサより小さいか、あるいは類似したハードウェアのサイズを有し、低い電力消耗及び価格対比の高性能を有するように具現できる。さらに、再構成アレイプロセッサは、高ハードウェア再使用(high hardware reusability)を維持しつつ、SIMD(single instruction stream multiple date stream)動作を行うことができる。従って、再構成アレイプロセッサは、ハードワイヤード(hard-wired)ロジックに比べての小さいハードウェア、及びソフトウェアに比べての低速クロックを有しつつも、高演算遂行能を有することができる。このような特性は、チップコストを低くして電力消耗を減らすために、ハードウェア資源の制約が激しいモバイルマルチメディア・プラットホームに特に有利である。
ハードウェア具現方式(HI)の場合、電力及び遂行効率の両側面で最適化されうるが、特定応用プログラムに限定されるという短所がある。さらに詳細に説明すれば、既存のハードワイヤード回路で具現されたASIC IPは、速い速度は保証する。しかし、ハードウェア再使用可能性が大きく落ちるので、チップサイズ及び電力消耗が大きく、新しい機能を追加しようとするたびに、再び回路を設計しなければならないので、開発所要期間が長い。しかも、現チップ製造技術は、SoCの発達とデジタル・コンバージェンス(digital convergence)の影響とによって、さらに複雑であって多様な機能が1つのチップに集積化されて行く趨勢であるから、このような問題点がさらに浮き彫りにされている実情である。
本発明による再構成アレイプロセッサは、既存の整数演算のための16ビットプロセッシング要素からなる粗粒度再構成アレイをそのまま利用し、簡単なハードウェアを追加して備えることで具現できる。追加されたハードウェアは、浮動小数点演算を行うために、それぞれにプロセッシング要素対を有するFPU(floating point unit)−プロセッシング要素を形成させる。従って、本詳細な説明の再構成アレイプロセッサは、既存の再構成アレイプロセッサのサイズと類似したハードウェアのサイズを維持しつつ、効率的なハードウェア構造を提供する。さらに、本明細書に基づいた再構成アレイプロセッサは、整数演算遂行のために、既存の整数演算ロジックをそのまま利用できる利点を有することによって、高演算性能を有することができる。
他の実施形態で、前記再構成アレイを含んだマルチメディア・プラットホームは、SoC構造として具現され、従って、低電力消費及び価格対比の高性能を要求するモバイル・マルチメディア・プロセッサに効果的に適用されうる。
さらに、本詳細な説明に基づいた技術及びシステムは、グラフィック分野のうち、幾何演算(geometry operation)に適用可能であるが、予想応用分野は、1)ゲームエンジンのうち、物理エンジン(physical engine)ハードウェア加速、2)Bezier曲線など曲面/曲線処理のための評価器(evaluator)、及びテセレーション(tessellation)、補間などのグラフィックジオメトリ(geometry)前処理ハードウェア加速、3)3Dグラフィック・パイプラインのうち、ジオメトリユニット(matrix transformation & lighting effects)、4)3D vertex shaderなどを挙げることができる。
本発明の一実施形態による再構成アレイプロセッサを含んだ全体マルチメデ ィア・プラットホームに係わるブロック構造図である。 プロセッシング要素アレイ構造をさらに詳細に示すブロック構造図である。 浮動小数点演算のために、2個ずつ対をなしてFPU−プロセッシング要素 を形成したプロセッシング要素アレイ構造を示すブロック構造図である。 FPU−プロセッシング要素構造で、浮動小数点演算のためのオペランド入 力構造を示すブロック構造図である。 FPU−プロセッシング要素構造で、時間的マッピングを介したデータ演算 過程を示すブロック構造図である。 FPU−プロセッシング要素構造で、プロセッシング要素の連結を利用した データ移動方式を示すブロック構造図である。 プロセッシング要素の位置調整の長所を説明するために、FPU−プロセ ッシング要素構造で、プロセッシング要素の連結を示すブロック構造図である。 プロセッシング要素の位置調整の長所を説明するために、FPU−プロセ ッシング要素構造で、プロセッシング要素の連結を示すブロック構造図である。 プロセッシング要素の位置調整の長所を説明するために、FPU−プロセ ッシング要素構造で、プロセッシング要素の連結を示すブロック構造図である。 プロセッシング要素の構造をさらに詳細に示すブロック構造図である。 フレームバッファの浮動小数点フォーマットを示す構造図である。 FPU−プロセッシング要素のデータがフレームバッファ内のデータに変 換される様子を示す構造図である。 浮動小数点演算を支援する再構成アレイプロセッサを生成する過程を示す フローチャートである。 浮動小数点の演算過程を示すフローチャートである。
以下、添付された図面を参照しつつ、本発明の望ましい実施形態について詳細に説明する。以下の説明で、ある構成要素が他の構成要素に連結されると記述されるとき、それは、他の構成要素と直ちに連結されうるが、その間に第三の構成要素が介在されることもある。また図面で、各構成要素の構造やサイズは、説明の便宜及び明確性のために誇張され、説明と関係ない部分は、省略されている。図面上で、同一符号は同じ要素を指す。一方、使われる用語は、単に本発明を説明するための目的で使われたものであり、意味限定や特許請求の範囲に記載された本発明の範囲を制限するために使われたものではない。
多様なテクニック、システム及びコンピュータプログラム製品がマルチメディア・プラットホームで、データ集中演算を効果的に行うために記述される。特に、詳細な説明に基づいたテクニック及びシステムは、浮動小数点演算を行うことができる再構成アレイ(RA)プロセッサを提供するために具現されうる。
簡単に述べれば、計算(computing)における浮動小数点の表現は、実数を表現するために、数字の連なり(またはビット)を使用する数学的表現システムとして定義されうる。バイナリ浮動小数点演算のためのIEEE(Institute of Electrical and Electronics Engineers)標準(IEEE 754)は、多くのCPU及びFPU具現で、浮動小数点計算のために広く使われる標準を提供する。浮動小数点の表現で、基数点(ラディックス(radix)ポイント)(小数点またはバイナリポイント)は、数字の連なりにおいて相対的にどこにでも位置することができる。
浮動小数点表現は、固定小数点表現に比べて多様な利点を提供する。特に、浮動小数点
表現は、固定小数点表現より多くの広い範囲の値を支援できる。例えば、8個の十進数字
及び2桁小数点の位置を有する固定小数点の表現は、123456.78、1234.5
6、123.45のような数が代表されうる。これに比べて、8個の十進数字を有する浮
動小数点表現は、前述の固定小数点によって表現された数だけではなく、固定小数点によ
って表現されえない数にも表現できる。このような8個の十進数字を有する浮動小数点表
現の例は、1.2345678、1234567.8、0.000012345678、
12345678000000などである。浮動小数点表現はコンピューティング業界の
科学的記数法として見なされることができる。
対象とする実数の浮動小数点表現は、仮数と呼ばれる数字の連なりを含む。仮数の表現
は、基数(base or radix)を選択し、選択された基数内に保存された数字の個数によっ
て定義されうる。浮動小数点表現はまた、指数と呼ばれる値を含む。指数は、対象とする実数に数字のウインドウの位置またはオフセットを記録/確認するために使われる。指数はまた、指標またはスケールとして言及されもする。数字のウインドウは、実数でほとんどは仮数の数字を保存するために使われ、その仮数の数字は、十進数では、最初は0でない数字、またはバイナリでは、0でないビットである。仮数は、ベースのパワーとして代表される指数によって乗算される。
浮動小数点を加えるために、オペランド(operand)は、まず同一指数を有するように表現される。例として、2つのオペランド、12.335と123.45とを加算するとき、そのオペランドは、0.12345x102及び1.2345x102(同一指数は102)として表現されうる。0.12345x102と1.2345x102との和は、(0.12345+1.2345)x102=1.35795x102として計算されうる。結果としてその数は、エンジニアリング表記(engineering notation)(指数=5(e=5);仮数=1.35795(m=1.3795))に変換されうる。最終値は、必要によって、丸め処理(rounded)または標準化(normalized)されうる。
浮動小数点の数字を乗算するためには、指数が加えられ、一方、仮数は乗算される。例えば、丸め処理や標準化する前に(e=2;m=1.111xe=2;m=2.222)=(e=4;m=2.468642)になる。
再構成アレイ(RA)プロセッサは、細粒度(fine-grained)RA、すなわちFGRAプロセッサと、粗粒度(coarse-grained)RA、すなわちCGRAプロセッサとに大別される。FGRAは、ブーリアン(Boolean)演算やビット単位の演算を行う真理表(truth table)論理回路として具現するプロセッシング要素(PE:processing element)を有する。一方、CGRAは、プロセッシング要素(PE)が、基本的にALU(arithmetic and logic unit)の形態に具現され、ワード単位の算術/論理演算を行うプロセッシング要素を有する。
FGRAは、任意の演算が具現可能なので、最も柔軟な構造を有する。しかし、FGRAは、制御及びデータパス(data path)が複雑なので、高速を要求しない小さい回路具現や、速度よりも機能検証が重要な回路構造に使われる。CGRAは、RTL(resistor transistor logic)レベルではないアルゴリズムレベルでは、十分に柔軟である。また、CGRAは、並列化が容易であるために、マルチメディア分野のプラットホームを具現するのに多く応用される。すなわち、CGRAは、前述のソフトウェア具現方式(SI)より高性能を提供し、ハードウェア具現方式(HI)より幅広い柔軟性を有する長所がある。
特に、CGRAは、プログラム可能な(programmable)プロセッシング要素及びプログラムを含むことができる。従って、プロセッシング要素は、プロセッシング要素の連結(connectivity)及び動作を指定するコンテクスト(context)の内容によってプログラム化し再構成され、新しいハードウェアの追加なしに、コンテクストの内容を変更するだけでも、多様な機能を行うことができる。代表的なCGRAとしては、Morphosys、ADRES(Architecture for Dynamically Reconfigurable Embedded System)、PACT−XPP(extreme processing platform)などがある。しかし、既存のRAは、整数演算だけを支援することによって、応用範囲が主にオーディオ/ビデオコーデック(CODEC)に限定されている。
3Dグラフィックス/2Dベクトルグラフィックス/GPS装置は、浮動小数点ベクトル演算を基本とするために、既存の整数を基本とするCGRAで処理するには適さない。グラフィックを支援するために、プロセッシング要素自体は、浮動小数点演算に基づいて設計できる。しかし、この設計は、プロセッシング要素のハードウェアのサイズが過度に大きくなるという問題がある。また、現在マルチメディアの主要な分野であるCODECは、整数演算だけで構成されるため、整数演算だけを行う場合、プロセッシング要素を構成するハードウェアにおいて、浮動小数点と関連したブロックは非効率的なハードウェアの利用を促進する傾向がある。
RAプロセッサは、高いハードウェアの再利用性を維持しつつ、シムド演算(SIMD(single instruction stream multiple data stream))することができる。従って、本詳細な説明のRAプロセッサは、ハードワイヤード(hard-wired)ロジックよりも小さなハードウェアを有し、かつ、ソフトウェアに使用されるクロック信号よりも低速なクロック信号を有していても、比較的高い性能を具現できる。このような特性は、チップコストを低くし、かつ電力消耗を減らすことができ、ハードウェア資源の制約が激しいモバイルマルチメディア・プラットホームに、特に有利である。
図1は、本発明の一実施形態による再構成アレイプロセッサを含んだマルチメディア・プラットホームのような例示演算プラットホームに係わるブロック構造図である。
図1を参照すれば、本発明のマルチメディア・プラットホームは、浮動小数点(floating-point)演算が可能な再構成アレイ(RA)プロセッサ(reconfigurable array processor)1000、再構成アレイプロセッサ1000の各構成要素と連結されるシステムバス(system bus)2000、及び前記システムバス2000を介して、前記再構成アレイプロセッサ1000の各構成要素と連結され、前記再構成アレイプロセッサ1000を制御してデータを保存する制御及びメモリ部3000を含む。
再構成アレイプロセッサ1000は、プロセッシング要素(PE:processing element)アレイまたは再構成アレイ100、構成キャッシュ(configuration cache)200、フレームバッファ(frame buffer)300、及び再構成アレイ(RA)制御部400を含んで構成される。
プロセッシング要素アレイ100は、プロセッシング要素(PE)という名称のALU(arithmetic logic unit)セルによって構成された長方形のアレイ(rectangular array)であって、行(row)及び/または列(column)別に、パイプライン(pipelined)SIMD(single instruction stream multiple data stream)演算を行う。本実施形態のプロセッシング要素アレイ100は、浮動小数点演算を支援できる特徴を有する。プロセッシング要素アレイ100に係わるさらに詳細な説明は、図2を参照して行う。
構成キャッシュ200は、プロセッシング要素アレイ100内のデータ演算及びデータ移動をプログラムするコンテクスト(context)を保存する。ここでコンテクストは、プロセッシング要素アレイ100内のプロセッシング要素間の連結関係、各プロセッシング要素の演算及び演算のためのデータ移動などを指示する命令語またはプログラムを指すものであり、正確には、構成キャッシュ200のコンテクスト・レイヤ(layer)という部分に保存される。
フレームバッファ300は、プロセッシング要素アレイ100で遂行した演算の中間データを臨時に保存するキャッシュメモリの一種である。本発明と関連したフレームバッファ300に係る内容は、図9A及び図9Bを参照してさらに詳細に説明する。
一方、再構成アレイ制御部400は、再構成アレイプロセッサの各構成要素を全般的に制御する。例えば、構成キャッシュ200のコンテクストの入出力、フレームバッファ300のデータの入出力、またはプロセッシング要素アレイ100へのデータ移動を制御する。
本実施形態で、再構成アレイプロセッサ1000は、ハードウェアの変更なしに、コンテクストのみを修正することによって、多様な演算遂行が可能である。また、再構成アレイプロセッサ1000は、パイプラインSIMD構造のアレイを介して、並列に演算を行う。そのために、演算が順次に行われる一般的なプロセッサに比べて、速度がはるかに速い。従って、本実施形態での再構成アレイプロセッサ1000は、ソフトウェアの長所である再使用性(reusability)と、ハードウェアの長所である高性能(high performance)との特性を同時に充たす構造を有する。
再構成アレイプロセッサ1000の各構成要素(例えば、プロセッシング要素アレイ100、構成キャッシュ200、フレームバッファ300、RA制御部400など)は、システムバス2000を介して、制御及びメモリ部3000の各構成要素(例えば、組み込みコア(embedded core)3200、外部メモリ3400、DMA(direct memory access)3600など)と連結される。たとえば、本発明のマルチメディア・プラットホームは、1つのシステムバス2000を介して、全体システムのあらゆる構成要素が一つに連結されるSoC(system on chip)構造を有する。
ここで、制御及びメモリ部3000は、データ処理及び制御のための組み込みコア3200、データ保存のための外部メモリ3400、及びデータ移動のためのディレクト・メモリアクセス(DMA)3600コントローラを含む。組み込みコア3200は、縮小命令セットコンピュータ(RISC:reduced instruction set computer)プロセッサ、または縮小命令セットコンピュータ・プロセッサ及び複雑命令セットコンピュータ(CISC:complex instruction set computer)プロセッサの特徴が混合した形態のプロセッサでありうる。
本発明によるマルチメディア・プラットホームは、整数演算用プロセッシング要素アレイ構造を利用し、浮動小数点演算を含んだ多様な演算を行うことができる。それによって、ハードウェアのサイズを従来と同様のレベルに維持でき、プロセッサ観点でも、効率的なプロセッサの具現が可能である。また、本発明によるマルチメディア・プラットホームは、SoC構造を有することによって、すなわち、再構成アレイプロセッサ1000の各構成要素が1つのシステムバス2000を介して、制御及びメモリ部3000の各構成要素に連結される構造を有することによって、現在の小型の低電力及び高性能を要求するモバイルマルチメディアに効果的に利用されうる。以下、浮動小数点演算を行うことができる再構成アレイプロセッサ、特に、プロセッシング要素構造についてさらに詳細に説明する。
図2は、図1のプロセッシング要素(PE)アレイ構造をさらに詳細に示すブロック構造図である。
図2を参照すれば、プロセッシング要素アレイ100は、プログラム可能な多数のプロセッシング要素120が行及び列をなすアレイ構造を有する。このようなプロセッシング要素アレイ100は、乗算及び除算を演算するために、データバスを介して乗算器(MUL)140及び除算器(DIV)160に連結されている。整数演算の場合、1つのプロセッシング要素120が乗算または除算を演算するので、あらゆるプロセッシング要素120が乗算器140や除算器160に連結される。しかし、浮動小数点演算時のアレイ構造では、一部のプロセッシング要素120のみ、乗算器140や除算器160に連結されてもよい。
アレイ100内のそれぞれのプロセッシング要素120は、2個の入力を受けて処理する16ビット加算器(図示せず)を含み、16ビット整数演算を行うことができる。整数演算時に、構成キャッシュ200(図1参照)のコンテクスト・レイヤは、整数演算のための命令語が保存されるが、このような整数演算のためのコンテクストによって、プロセッシング要素120での演算及びデータフローが制御される。
一方、プロセッシング要素アレイ100は、プロセッシング要素120が相互間のデータ交換のためのメッシュ構造に互いに連結される。プロセッシング要素間の連結や、プロセッシング要素間のデータ交換は、構成キャッシュ200(図1参照)のコンテクストによってなされる。すなわち、それぞれのプロセッシング要素は、構成キャッシュ200(図1参照)を介して入力されたコンテクストによって、行(水平)または列(垂直)単位で設定されてパイプライン(pipeline)を形成し、パイプライン動作時に処理した結果を、コンテクストが指示する方向(水平または垂直)に転送する。
本実施形態のプロセッシング要素アレイ100は、8×5配列構造を有する。8×5配列構造は、浮動小数点計算時に、4×5配列に転換されることによって、たとえば3Dグラフィックなどで非常に有用な4×1ベクトル演算遂行を容易に支援できる。このような8×5配列構造は、プロセッシング要素アレイ100の一例示的な構造に過ぎない。従って、プロセッシング要素アレイ100は、8×5配列構造に限定されることなしに、多様な構造の配列構造を有することができることは、いうまでもない。プロセッシング要素の具体的な構造については、図8に係わる説明部分でさらに詳細に説明する。
図3は、図2のプロセッシング要素アレイが、浮動小数点演算のために2個ずつ対をなしてプロセッシング要素アレイ100のFPU−プロセッシング要素(PE)120が再構成される際のプロセッシング要素アレイ100の構造を示すブロック構造図である。
図3を参照すれば、本発明によるプロセッシング要素アレイ100のプロセッシング要素120は、浮動小数点演算のために2個のプロセッシング要素120が対を結合し、FPU(floating point unit)−PE 150を形成する。このようなFPU−PE 150は、1行または1列内の2個のプロセッシング要素120が結合して形成されるが、このような結合関係は、コンテクスト命令語によってなされる。一方、プロセッシング要素120は、FPU−PE 150形成のために、簡単なハードウェア的作業が必要である。すなわち、相互間の物理的な連結関係が形成されておらねばならず、また浮動小数点演算時に、FPU−PE 150が浮動小数点演算をするための簡単なソフトウェア的制御構造が必要でありうる。
図3は、8×5配列構造(図2参照)のプロセッシング要素アレイ100のプロセッシング要素120が結局、4×5配列構造の配列構造に転換できることを例示的に示す。プロセッシング要素120は浮動小数点演算のためにFPU−PE150を形成し組み合わされる。このような4×5配列構造は、3Dグラフィックなどで、非常に有用な4×1ベクトル演算遂行を支援できる。図3において、X,Y,Z,Wは、4×1ベクトルのそれぞれのコンポーネントを示す。プロセッシング要素アレイ100内にFPU−PE150を形成する方法は、本実施形態に限定されるものではなく、さまざまな方法で遂行できることは、いうまでもない。また、本実施形態では、2個のプロセッシング要素が結合されてFPU−PEを形成したが、超越関数、自乗根などのさらに複雑な浮動小数点を支援するために、3個以上のプロセッシング要素120が結合されてFPU−PE150を形成できることは、いうまでもない。
一方、プロセッシング要素アレイ100内のFPU−PE150は、時間的(temporal)マッピングを介して演算を行うことになる。さらにFPU−PE150は、最終的な値を求めるまでは、次の計算のためのコンテクストを入力されない。このような時間的マッピング方式を介した演算過程は、図5に係わる説明部分で説明する。
図4は、図3のFPU−PE150で、浮動小数点演算のためのオペランド入力構造を示すブロック構造図である。
図4を参照すれば、FPU−PE150をそれぞれ形成するプロセッシング要素120aおよび120bは、基本的に16ビット整数演算用プロセッシング要素である。それぞれのプロセッシング要素120aおよび120bは、既存の整数演算のプロセッシング要素のように、2個の入力を受けて計算した後、1つの出力値を出力する構造を有する。
浮動小数点演算のためのFPU−PE150の構成例は、仮数(mantissa)部と指数(exponent)部とを含む。特に、本実施形態の浮動小数点演算のためのFPU−PE150は、2個のオペランドの符号(sign)及び仮数が入力される仮数部プロセッシング要素120aを含む。さらに、FPU−PE150は、2個のオペランドの指数が入力される指数部プロセッシング要素120bを含む。図4を参照すれば、FPU−PE150によって受け取られる2個のオペランド「A」、「B」が示される。例えば、オペランドAとBとがそれぞれ11.111及び222.222であるならば、符号は、二つとも「+」であり、仮数は、それぞれ0.11111及び2.22222である。入力された2つのオペランドA並びにBの符号(すなわち、+)及び仮数(すなわち、MA=0.11111及びMB=2.22222)は、仮数部プロセッシング要素120aに、入力値「MA」及び「MB」として提供される。入力された符号及び仮数「MA」及び「MB」に基づいて、仮数部プロセッシング要素120aは、出力仮数「MC」を計算する。入力されたオペランドA並びにBの指数は、入力値「EA」及び「EB」として指数部プロセッシング要素120bに提供される。前述の例で、指数EA及びEBは、EA=2及びEB=2である。入力されたオペランドA並びにBの指数EA及びEBに基づいて、指数部プロセッシング要素120bが出力指数「EC」を計算する。
仮数部プロセッシング要素120a及び指数部プロセッシング要素120bは、ラウンディング(rounding)、正規化など、浮動小数点処理に必要な演算回路(図示せず)及び双方間でデータをやり取りするためのパスが必要である。このような付加的なハードウェア(すなわち、電気回路)は、少ないコストだけで既存プロセッシング要素アレイに容易に追加できる。
このようなFPU−PE150は、浮動小数点基盤の超越関数演算、ロジック演算及び四則演算のような多様な演算を行うことができる。浮動小数点基盤のプロセッシング要素の場合、浮動小数点でも整数演算でも、いずれも同時遂行可能な演算の数が同一であるが、本発明のFPU−PE150は、整数演算を行う場合、1個のFPU−PE150が2個の整数型プロセッシング要素に分離されて行われるので、同時遂行可能な整数演算の数が、同時に行われる1つの浮動小数点基盤のプロセッシング要素に比べて2倍になり、従って、ハードウェア使用がはるかに効率的である。
図2で記述されたプロセッシング要素アレイ100と同様に、仮数部プロセッシング要素120aは、乗算及び除算を演算するために、乗算器及び/または除算器(図示せず)に連結されうる。また、各FPU−PE150の仮数部プロセッシング要素120aと指数部プロセッシング要素120bは、生成されたキャリー(carry)値を交換するために、互い連結される。浮動小数点演算で、FPU−PE150を利用して乗算または除算の演算を行う場合、指数部プロセッシング要素120bでは、オペランドの入力された指数の加算または減算を介して出力指数ECを計算し、符号及び仮数が入力された仮数部プロセッシング要素120aでは、2つのオペランドA並びにBの入力された符号及び仮数の乗算または除算を介して、出力仮数MCを計算する。
このような計算後、それぞれの結果値EC及びMCが最終値ではない場合(例えば、他のFPU−PEを有し、追加的な計算のために中間値は残す)、仮数部プロセッシング要素120aの出力仮数値MC及びと指数部プロセッシング要素120bの出力指数値ECは、アレイ100(同一列または行)で、次の演算のために、次のFPU−PE150に入力される。計算された出力値EC,MCが最終値である場合には(例えば、中間値ではなく、それ以上FPU−PE150に残らない)、計算された出力値EC,MCは、フレームバッファ300に保存される。
図5は、FPU−PE150で、時間的マッピングを介したデータ演算過程を示すブロック構造図である。
再構成アレイプロセッサでのマッピング(mapping)は、空間的(spatial)マッピングおよび/または時間的(temporal)マッピングと区分される。本実施形態でのFPU−PEは、浮動小数点演算のために、時間的マッピングだけを使用する。既存の時間的マッピング過程について簡単に説明すれば、次の通りである。
まず、構成キャッシュのいずれか1つのコンテクスト・レイヤに対応し、プロセッシング要素アレイのうち、いずれか1つの列が選択され、同じコンテクスト・レイヤに保存された演算コンテクストが、選択されたプロセッシング要素列に供給される。そして、プロセッシング要素列は、さまざまなサイクルの間、順次に1つの演算を行う。一方、選択されたプロセッシング要素列の演算が完了していなくとも、次のコンテクスト・レイヤに対応して他のプロセッシング要素列が選択され、そこの他のプロセッシング要素列で、演算が遂行されうる。従って、全体的に列単位で、パイプライン動作がなされるようになる。
図5を参照すると本実施形態の時間的マッピングを介した演算過程について簡単に説明すれば、構成キャッシュ200内の各レイヤおよびレジスタに保存されたコンテクストは、プロセッシング要素アレイ100の各FPU−PE列に、順次に時間的マッピングされ、パイプライン演算を行う。レジスタを介した時間的マッピングは、各レジスタに1サイクルほど遅延される。一方、本実施形態でのFPU−PE列(例えば、列0,1,2,3及び4)は、コンテクスト・レイヤで発生する制御信号列を受け、マルチサイクル演算を行うが、このようなFPU−PE列は、最終的な結果値を求めるまでは、次の計算のためのコンテクストを入力されない。
たとえば図5に示されるマルチサイクル演算過程で、1つのFPU−PEをなす2個のプロセッシング要素(指数部プロセッシング要素及び仮数部プロセッシング要素)は、必要によって、中間結果値を互いに送受信する。例えば、乗算または除算の場合、FPU−PEをなす2個のプロセッシング要素のうちの一つ(例えば、指数部プロセッシング要素)は、加算または減算を介して指数を計算し、他の一つ(例えば、仮数部プロセッシング要素)は、乗算または除算を介して仮数を計算する。仮数計算で発生したcarry値が、指数計算に利用されるために伝えられうる。
図6は、FPU−PE150で、プロセッシング要素120間の連結を利用したデータ移動方式を示すブロック構造図である。図6を参照すると、「f」で表示されたプロセッシング要素120aは、符号並びに仮数が入力される仮数部プロセッシング要素120aであり、「e」で表示されたプロセッシング要素120bは、指数が入力される指数部プロセッシング要素120bである。一方、浮動小数点データの移動が円滑になるように、仮数部プロセッシング要素120a及び指数部プロセッシング要素120bの位置である「f」および「e」が調整されている。
図6を参照すれば、本実施形態のFPU−PE構造では1,4,5,8番目のプロセッシング要素120aが仮数演算を行い、2,3,6,7番目のプロセッシング要素120bが指数演算を行うようにすることによって、1列内で4個のプロセッシング要素対間のメッシュ連結構造を容易に具現できる。例えば、(1)第1及プロセッシング要素及び第4プロセッシング要素(仮数部プロセッシング要素120a);(2)第5プロセッシング要素及び第8プロセッシング要素(指数部プロセッシング要素120b);(3)第2プロセッシング要素及び第7プロセッシング要素(指数部プロセッシング要素120b);(4)第3プロセッシング要素及び第6プロセッシング要素(指数部プロセッシング要素120b);(5)第1プロセッシング要素及び第8プロセッシング要素(仮数部プロセッシング要素120a);(6)第1プロセッシング要素及び第3プロセッシング要素(仮数部プロセッシング要素120a及び指数部プロセッシング要素120b);(7)第2プロセッシング要素及び第4プロセッシング要素(指数部プロセッシング要素120b及び仮数部プロセッシング要素120a);(8)第5プロセッシング要素及び第7プロセッシング要素(仮数部プロセッシング要素120a及び指数部プロセッシング要素120b);(9)第6プロセッシング要素及び第8プロセッシング要素(指数部プロセッシング要素120b及び仮数部プロセッシング要素120a)間で連結関係が提供されうる。
もし指数部と仮数部とのプロセッシング要素が図6のように配されずに、1,3,5,7番目のプロセッシング要素が仮数演算を行い、2,4,6,8番目のプロセッシング要素で指数演算を行うように構成されるならば、8個の連結関係が形成されうる(図7C参照)。4個の浮動小数点演算プロセッシング要素対間のメッシュ連結構造を設けるためには、例えば、1番目と7番目とのプロセッシング要素、2番目と8番目とのプロセッシング要素、3番目と5番目とのプロセッシング要素、4番目と6番目とのプロセッシング要素間の双方向連結関係が追加されねばならない。
このように、本発明の再構成アレイプロセッサ内のプロセッシング要素アレイ100は、既存の連結関係を変えなくとも、浮動小数点計算及びデータの移動を円滑に行うことができる。また、プロセッシング要素アレイ100が8×5配列構造を有する場合、整数演算時には、8×5配列構造をそのまま利用し、浮動小数点演算時には、FPU−PEを形成し、4×5配列構造に転換することによって、4×1の浮動小数点ベクトル演算を円滑に行うことができる。
図7Aないし図7Cは、FPU−PEでのプロセッシング要素の位置調整の長所について、さらに詳細な説明を行うためのブロック構造図である。図7Aは、整数演算のためのプロセッシング要素間の連結関係を示すブロック構造図である。図7Bは、プロセッシング要素の機能的位置が、浮動小数点演算のために調整されたプロセッシング要素間の連結関係を示すブロック構造図である。図7Cは、プロセッシング要素の機能的位置が交互に配されるプロセッシング要素間の連結関係(例えば、仮数部120a後に、指数部プロセッシング要素120bが続き、再び他の仮数部プロセッシング要素120bが続くように連結される)のブロック構造図である。
図7Aが示す連結構造は、整数演算を行うための典型的なプロセッシング要素連結構造を代表している。図7Aの連結構造で、整数演算のためのプロセッシング要素の連結関係であるから、仮数部プロセッシング要素120aと指数部プロセッシング要素120bとの区別は無意味である。例えば、指数部及び/または仮数部のプロセッシング要素のいかなる組み合わせも具現されうる。
浮動小数点演算のために、プロセッシング要素の機能的位置が図7Bのように配されるようになれば、図6の部分で記述したように、図7Aの連結関係を選択的に利用することによって、メッシュ構造が獲得されうる。プロセッシング要素は、FPU−PE150を形成するために、対で結合されうる。しかし、仮数部プロセッシング要素120a及び指数部プロセッシング要素120bの機能的位置が、異なった順序(図6に例示されているところと異なって)で配される場合に、メッシュ構造を獲得するために、異なる連結関係が必要でありうる。例えば、図7Cに例示されているように、プロセッシング要素の機能的位置が交互に(仮数部120a後に指数部プロセッシング要素120bが後続し、さらに他の仮数部プロセッシング要素120bが後続するように)配されうる。そのように交互に配される構造の場合には、メッシュ構造を達成するためには、図7Cでのように、点線で表示された部分の連結関係(例えば、第1プロセッシング要素及び第7プロセッシング要素(仮数部プロセッシング要素120a))が新しく形成されねばならない。
図8は、プロセッシング要素(図2のプロセッシング要素120のようなプロセッシング要素)の構造をさらに詳細に示すブロック構造図である。本実施形態の技術及びシステムに基づいたプロセッシング要素120の構造は、既存の整数演算のためのプロセッシング要素構造に、浮動小数点演算のための回路及びデータ送受信のためのパスが含まれる。
図8を参照すれば、プロセッシング要素120は、一般的に16ビット加算器(ALU)122、加算器122に2個のデータを入力するための1つ以上のマルチプレクサ(MUX)124a,124b、加算器122の計算結果を保存する臨時レジスタ125と出力レジスタ127、及びシフト演算のためのシフタ(shifter)126によって構成される。
マルチプレクサ124a,124bは、他のプロセッシング要素、データバス(DataA,DataB)、フレームバッファ(FB)及び臨時レジスタ125から複数の信号を受信し加算器122に信号を送信する。受信した複数の信号のうち2つの信号が入力データ信号として選択される。加算器122は、このような2個の入力値を演算する。加算器122で計算された結果値は、臨時レジスタ125や出力レジスタ127に保存される。臨時レジスタ125に保存された値は、加算器122での計算に再び活用される。一方、シフタ126は、乗算または除算のような演算のために、シフト演算を行う。出力レジスタ127に保存された最終結果値は、データバスを介して、他のプロセッシング要素120に入力されたり、またはデータバスを介して、フレームバッファに保存されたり出力装置に出力される。
一方、本実施形態のプロセッシング要素構造で、浮動小数点演算のために追加された回
路またはパスが、(1)、(2)及び(3)で表示されている。
まず、(1)は、浮動小数点演算時符号信号(sign signal)処理のためのレジスタ及びデータパスを意味する。すなわち、2個のオペランドの符号を入力されて保存した後、2つの符号値をXOR演算した値を保存する。仮数部プロセッシング要素でのみ有効であり、乗算/減算時に、結果値の符号を決定する。
(2)は、シフト演算が必要ない出力信号(no-shift output signal)処理のためのレジスタ及びデータパスを意味する。既存プロセッシング要素のALUは、1つの結果のみを出力したが、本発明のプロセッシング要素120のALU122は、浮動小数点演算処理のために、同時に2個の出力値を送出せねばならないために、データパスが一つさらに追加される。各パスが同時にシフト演算を行う場合はないために、シフタ126は、1つのパスにだけ連結される。従って、フラッグベクトル(flag vector)などのシフタ126を通過しなくてもよい値は、新らに追加されたデータパス((2))を介して、直ちに出力レジスタ127に出力される。
(3)は、ラウンド信号(round signal)のためのデータパスである。浮動小数点演算遂行時に、指数をシフトした後、ラウンド演算を遂行しなければならないが、このために、シフタ126に下位2ビットが追加され、拡張されたデータを処理するためのデータパス((3))が新しく追加される。
図9Aは、本発明の浮動小数点演算を行うために使用するフレームバッファの浮動小数点フォーマットを示している。一般的に、IEEE(Institute of Electrical and Electronics Engineers)754標準を基とした浮動小数点は、1ビット符号、8ビット指数、23ビット仮数を含んだ32ビット・フォーマットを有する。しかし、このようなIEEE 754浮動小数点フォーマットは、携帯用機器の3Dグラフィックに適用するには、過度な精度を有するために、メモリに浪費を招く。従って、本発明の技術及びシステムに基づいたRAプロセッサで採用したフレームバッファは、1ビット符号、8ビット指数及び15ビット仮数を有する24ビット浮動小数点フォーマットを有する。本発明の24ビット浮動小数点フォーマットは、浮動小数点演算を支援するためにデザインされ、過度なメモリ浪費を減らし最小化させることができる。
図9Bは、FPU−PEの浮動小数点データが、フレームバッファに変換される様子を示している。一般的に、整数演算構造でのフレームバッファは、整数入力だけ受けることができるように設計される。しかし、本発明の再構成アレイプロセッサ100では、簡単な回路を追加し、マルチプレクサで、整数データ形式と浮動小数点データ形式とのうち、いずれか一つを選択して入力できるように構成される。それによって、フレームバッファに保存されるデータは、形式的には、IEEE−754の32ビット浮動小数点フォーマットを有するが、内部的には、図9Aで図示されているように、24ビット浮動小数点フォーマットを使用する。24ビットの浮動小数点フォーマットとして、32ビット浮動小数点フォーマットを使うために、選択的に現在の仕様に基づくRAプロセッサで使われるフレームバッファは、仮数を切り捨てる。すなわち、本発明の再構成アレイプロセッサで使われるフレームバッファは、従来の32ビットフレームバッファの小数の下位8ビットは使用しない。
図10は、浮動小数点演算遂行のためのRAプロセッサを生成するプロセス1000に係わるプロセスフローチャートである。
図10を参照すれば、プロセッシング要素アレイ内の複数のプロセッシング要素が、多様なFPU−PEを形成するために、共にグループ化される(1002;例えば、2つ以上のプロセッシング要素のグループ)。例えば、同一列の2つのプロセッシング要素がFPU−PEを形成するために、対で結合されたり、あるいは同一行の2つのプロセッシング要素がFPU−PEを形成したりするために、対で結合されうる。一方、ある実施形態では、FPU−PEを形成するために、3個以上のプロセッシング要素が、列または行で結合されることもある。
構成キャッシュのレジストリに保存されたコンテクストは、パイプライン処理遂行のために、それぞれのFPU−PE列に、順次に時間的マッピングされる(1004)。また、メッシュ構造達成するために、列および/または行で連結されるFPU−PEの連結構がアレイに適用される(1006)。
図11は、浮動小数点演算遂行のためのプロセス(1100)に係わるプロセスフローチャートである。
図11を参照すれば、浮動小数点演算のための2オペランドを入力される(1102)。入力されたオペランドの指数が指数部プロセッシング要素に入力され、受けたオペランドの指数が加算または減算を介して計算され、出力指数が生成される(1104)。受けたオペランドの符号及び仮数は、仮数部プロセッシング要素に入力され、受けたオペランドの符号及び仮数が、乗算及び除算を介して計算され、出力仮数が生成される(1106)。結果の指数及び仮数が最終値であるか、または次のFPU−PEの演算のための中間値であるかを判断する(1108)。結果の仮数及び指数が、次のFPU−PEの演算のための中間値である場合、その中間値は、次のFPU−PEに伝えられる(1110)。結果の仮数及び指数が最終値である場合、その最終値は、フレームバッファに保存される(1112)。
本発明による再構成アレイプロセッサ1000は、前述のように、既存の整数演算のための16ビットプロセッシング要素からなるCGRAをそのまま利用するが、簡単なハードウェアを追加し、2個のプロセッシング要素対からなるFPU−PEを形成することによって、具現されうる。追加されたハードウェアは、浮動小数点演算を行うために、それぞれプロセッシング要素対を有するFPU−PEを形成する。従って、本発明のRAプロセッサ1000は、従来とほぼ同じサイズのハードウェアを有するために、効率的なハードウェア構造を提供する。また、本発明のRAプロセッサは、整数演算時に、既存の整数演算ロジックをそのまま利用することによって、高速動作効率を有することができる。
ある実施形態で、かようなRAプロセッサを含んだマルチメディア・プラットホームは、SoC構造として具現され、それによって、低電力及び価格対比の高性能比を要求するモバイル・マルチメディア・プロセッサに効果的に適用されうる。
さらに本発明は、グラフィック分野のうち、幾何演算(geometry operation)に適用可能であるが、予想応用分野は、1)ゲームエンジンのうちの物理エンジン(physical engine)ハードウェア加速、2)Bezier曲線など曲面/曲線処理のための評価器、並びにテセレーション(tessellation)、補間のようなグラフィックジオメトリ前処理部のハードウェア加速、3)3Dグラフィック・パイプラインのうちのジオメトリユニット(matrix transformation & lighting effects)、4)3D vertex shaderなどを挙げることができる。
本明細書、及びそれらと構造的に同等、またはそれらの1以上の組み合わせで記述された構造を含むことによって、本明細書で記述された技術要旨と機能的演算機能の実施形態は、デジタル電子部分回路図で、またはコンピュータソフトウェア、ファームウェアまたはハードウェアで具現されうる。本明細書で記述された技術要旨の実施形態は、1以上のコンピュータプログラム製品、例えば、データプロセッシング装置による実行、またはデータプロセッシング装置の作動を制御するために、実体プログラムキャリアに暗号化されたコンピュータプログラム命令語の1以上のモジュールとして具現されうる。実体プログラムキャリアは、伝播された信号またはコンピュータ判読性媒体でありうる。伝播された信号は、人為的に生成された信号、例えば、機械によって発生した電気的、光学的または電磁気的信号であり、それらは、コンピュータによる実行のための適切な受信機装置への伝送のために、情報を暗号化するように生成される。コンピュータ判読性媒体は、コンピュータであり、機械判読型保存装置、機械判読型保存基板、メモリ装置、機械で判読されうる伝播された信号に影響を及ぼす物質の複合物またはそれらの1以上の組み合わせでありうる。
用語「データプロセッシングユニット」は、例えば、プログラマブルプロセッサ、コンピュータ、または多重プロセッサまたはコンピュータを含み、データを処理するためのあらゆる装置、素子及び機械を含む。装置は、ハードウェアに付加し、当該コンピュータプログラムのための実行環境を生成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム(DBMS(database managements system))、運用体系、またはそれらの一つ以上の組み合わせを構成するコードを含むことができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェア応用、スクリプトまたはコードとして知られている)は、コンパイルされ、または解釈型言語、または宣言型または手順型言語を含み、プログラミング言語のいかなる形態にも使われ、独自のプログラム、コンピュータ環境で、モジュール、成分、サブルーチンまたは適切な他の装置として含まれ、いかなる形態にも配されうる。コンピュータプログラムは、必ずしもファイルシステムにあるファイルに該当するものではない。プログラムは、他のプログラムまたはデータ(例えば、マークアップ言語文書で保存された1以上のスクリプト)をホールディングするためのファイルの一部分に、当該プログラムに転用されたシングルファイルに、または多数の統合ファイル(例えば、1以上のモジュール、サブプログラム、またはコードの部分を保存するファイル)に保存されうる。コンピュータプログラムは、1台のコンピュータで、または1つのサイトに位置したり、あるいは多重サイトを横切って分配され、コミュニケーション・ネットワークによって、互い連結される多重コンピュータらで実行されたりしうるように配されうる。
本明細書で記述されたプロセスと論理フローは、入力データに作用して出力を生成することによって、機能を行うための1以上のコンピュータプログラムを実行する1以上のプログラマブルプロセッサによって遂行されうる。また、プロセスと論理フローは、特別な目的の論理回路、例えば、FPGA(field programmable gate array)またはASIC(application specific integrated circuit)によって行われうる。
コンピュータプログラムの実行のための適切なプロセッサは、例えば、一般または特別な目的のマイクロプロセッサ、及びデジタルコンピュータの任意の一つ以上のプロセッサを含む。一般的にプロセッサは、読み取り専用メモリ、またはランダムアクセスメモリ、または双方から命令語とデータとを受けることができる。コンピュータの必須要素は、命令語を遂行するためのプロセッサと、命令語及びデータを保存するための1以上のメモリ装置とである。一般的に、コンピュータは、データを保存するための一つ以上の大容量保存装置、例えば、磁気,磁気光学ディスク、または光学ディスクを含んだり、またはこのような保存装置からデータを受けたり伝達したり、あるいはどちらとものために効果的にカップリングされる。しかし、コンピュータは、このような装置を有する必要はない。さらに、コンピュータは、他の装置に組み込みされうる。
コンピュータプログラム命令語及びデータを保存するために、適したコンピュータ判読媒体は、例えば、EPROM、EEPROM及びフラッシュメモリ・デバイス;内部ハードディスク、または移動ディスク;磁気光学ディスク;CDROM及びDVD−ROMディスクを含み、不揮発性メモリ、媒体及びメモリ装置のあらゆる形態を含むことができる。プロセッサとメモリは、特別目的の論理回路素子によって補充されたり具体化されたりしうる。
本明細書が多くの細部特性を含む一方、これは、任意の発明の範囲に対する制限として、またはクレームされるものとして解釈されるものではなく、むしろ特別な発明の特別な実施形態に特定した特徴に係わる記述として解釈されねばならない。各実施形態と関連して、本明細書で記述される一定の特徴は、単一の実施形態での組み合わせとして具現されうる。一方、単一の実施形態と関連して記述される多様な特徴は、個別的に多重実施形態
として、または任意の適切な補助組み合わせとして具現されうる。さらに、特徴が一定の組み合わせに作用するものとして前記で記述され、さらにそのように初期に請求されうるが、ある場合には、請求された組み合わせから、1以上の特徴がその組み合わせから削除されることがあり、請求された組み合わせが一部の組み合わせ、または一部の組み合わせの変形になることもある。
同様に、動作が特別な順序で図面に図示されていても、それらが示された特別な順序または順次的順序で、このような動作が行われ、またはそのあらゆる記述された動作が望ましい結果を達成するために行われねばならないことを要求するものと解釈されることがあってはならない。ある環境で、マルチタスキングと並列処理は、有利であるかもしれない。さらに、前記に記述された実施形態にある多様なシステム構成要素の分離は、あらゆる実施形態で、それと同じ分離を要求するものであると理解されてはならず、記述されたプログラムコンポーネントとシステムとが一般的に単一ソフトウェア製品に共に統合されたり、多重ソフトウェア商品内にパッキングされたりしうるということが理解されねばならない。
単にごく少数の実施形態と例示とが記述されており、他の実施形態、改善及び変形が本
明細書で記述されて例示されたところに基づいて作られうる。
本明細書は、マルチメディア・プラットホームを含み、多様なアプリケーションに適したデジタル情報処理と装置とに関連するものであり。本明細書に基づいたRAプロセッサ1000は、整数演算オペレーションを行うための16ビットプロセッシング要素を含む既存のCGRAに、単純ハードウェアを追加することによって、具現されうる。付加されたハードウェアは、それぞれプロセッシング要素対を有するFPU−PEを形成させ、実数演算を行うことができるようにする。従って、本明細書のRAプロセッサ1000は、従来のRAプロセッサのそれと同様のハードウェアのサイズを維持することによって、効率的ハードウェア構造を提供する。その上、本明細書に基づいたRAプロセッサは、既存の整数演算論理が整数演算動作を行うための既存の整数演算論理を利用することによって
、高い動作効率を可能にする。

Claims (30)

  1. 浮動小数点演算を行うことができるように構成されたプロセッシング要素アレイを含み

    前記各プロセッシング要素は、2つの入力値を受け、前記入力値に対する整数演算を行う演算装置を含み、前記アレイ内の前記プロセッシング要素は、浮動小数点演算のために、2つ以上の前記プロセッシング要素からなるグループに共に連結されるとともに、連結されたプロセッシング要素間で、データ交換のために、メッシュ構造に互いに連結されており、
    前記アレイの行または列内のプロセッシング要素によって行われる整数演算及び浮動小数点演算のうちの少なくとも1つの演算と、プロセッシング要素間のデータ通信と、を制御するコンテクストを保存するための、前記アレイに連結された構成キャッシュをさらに含み、
    前記プロセッシング要素は、前記コンテクストに基づいて、行または列単位で構成されてパイプラインを形成し、前記コンテクストが指示する方向に、前記パイプライン動作の結果をフォワーディングするように構成され、
    時間的マッピングを介して前記2つ以上のプロセッシング要素からなるグループの2つ以上の各グループは、前記整数演算または浮動小数点演算を行うように構成され、マルチサイクル演算を行うための制御信号のコンテクストを受け、サイクルごとに最終的な値が得られた後、前記コンテクストの制御信号を受けるように構成された、
    ことを特徴とするプロセッサ。
  2. 前記演算装置は、16ビット演算装置を含むことを特徴とする請求項1に記載のプロセッサ。
  3. 前記アレイの1行または1列内の少なくとも2個のプロセッシング要素が、浮動小数点演算のための2つ以上のグループを形成するために共に連結されることを特徴とする請求項1に記載のプロセッサ。
  4. 前記アレイは、前記整数演算時には、8×5配列構造で動作し、前記浮動小数点演算時には、前記アレイの各行内の2個のプロセッシング要素が連結され、4×5配列構造で動作するように選択的に構成されることを特徴とする請求項1に記載のプロセッサ。
  5. 前記2つ以上のプロセッシング要素からなるグループの前記2つ以上のグループは、浮動小数点に係わる四則演算及び超越関数計算を行うことができるように構成されることを特徴とする請求項1に記載のプロセッサ。
  6. 前記2つ以上のプロセッシング要素からなるグループの前記2つ以上の各グループは、前記四則演算遂行のために連結された2個のプロセッシング要素を含み、
    各グループ内の2個の連結されたプロセッシング要素は、2個のオペランドの符号及び仮数が入力される仮数部プロセッシング要素、及び前記2個のオペランドの指数が入力される指数部プロセッシング要素を含むことを特徴とする請求項5に記載のプロセッサ。
  7. 前記仮数部プロセッシング要素は、前記2つのオペランドの仮数を乗じたり割ったりするために、乗算器及び除算器のうち、少なくとも一つに連結されており、
    前記指数部プロセッシング要素は、前記2つのオペランドの指数を加えたり差し引いたりするために構成されたことを特徴とする請求項6に記載のプロセッサ。
  8. 前記各プロセッシング要素は、
    前記演算装置に連結され、前記演算装置に少なくとも2個の入力値を提供する2個のマルチプレクサと、
    前記演算装置に連結され、前記演算装置から受けた結果値にシフト演算を行うシフタと、
    前記演算装置及びシフタに連結され、前記演算装置の中間結果値及びシフタの中間結果値を保存する臨時レジスタと、
    前記演算装置及びシフタに連結され、前記演算装置の最終結果値及びシフタの最終結果値を保存する出力レジスタと、
    を含み、
    前記各マルチプレクサは、データバス、他のプロセッシング要素及び自らのレジスタファイルから受けたデータの中からデータを選択し、前記演算装置に、選択した前記データを入力し、前記出力レジスタに保存された最終結果値は、データバスを介して、他のプロセッシング要素または出力値に入力することを特徴とする請求項1に記載のプロセッサ。
  9. 一つ以上の浮動小数点演算を行うように構成されたプロセッシング要素アレイであって、前記各プロセッシング要素は、2つの入力値を受け、前記入力値を処理する演算装置を含み、前記アレイ内のプロセッシング要素は、2つ以上のプロセッシング要素からなるグループに共に連結されるとともに、前記プロセッシング要素間で、データ交換のために、メッシュ構造に互いに連結され、前記アレイは、前記各プロセッシング要素を利用して整数演算を遂行し、または、共に連結された2つ以上のプロセッシング要素からなるグループの2つ以上の各グループを利用し、一つ以上の浮動小数点演算を行うように、選択的に構成された、プロセッシング要素アレイと、
    前記アレイに連結され、前記アレイの行または列内でプロセッシング要素によって行われる一つ以上の演算遂行を制御し、前記プロセッシング要素間のデータ交換を可能にするように構成されたコンテクストを保存する構成キャッシュと、
    前記アレイに連結され、前記アレイによって行われた一つ以上の演算遂行の臨時結果値を保存するフレームバッファと、
    を含み、
    前記プロセッシング要素は、パイプラインを形成するために、前記コンテクストに基づいて、行または列単位で構成され、前記パイプライン動作の結果は、前記コンテクストによって指示する方向にフォワーディングされるように構成され、
    2つ以上のプロセッシング要素からなるグループの前記2つ以上の各グループは、時間的マッピングを介して、前記整数演算遂行または前記一つ以上の浮動小数点演算を行うように構成され、マルチサイクル演算を行うための制御信号のコンテクストを受け、サイクルごとに最終値が得られた後、前記コンテクストの制御信号を受けるように構成された、
    ことを特徴とする再構成アレイプロセッサ。
  10. 2つ以上のプロセッシング要素からなるグループの前記2つ以上の各グループは、前記一つ以上の浮動小数点演算を行うように連結された前記アレイの列または行内の少なくとも2個のプロセッシング要素を含むことを特徴とする請求項9に記載の再構成アレイプロセッサ。
  11. 前記アレイは、前記整数演算時には、8×5配列構造で遂行され、前記浮動小数点演算時には、各行内の2個のプロセッシング要素が連結され、4×5配列構造で遂行されるように選択的に構成されることを特徴とする請求項10に記載の再構成アレイプロセッサ。
  12. 2つ以上のプロセッシング要素からなるグループの前記2つ以上のグループは、浮動小数点に係わる四則演算及び超越関数計算を行うことができるように構成されたことを特徴とする請求項9に記載の再構成アレイプロセッサ。
  13. 2つ以上のプロセッシング要素からなるグループの前記2つ以上の各グループは、前記四則演算遂行のために連結された2個のプロセッシング要素を含み、
    前記各グループ内の2個の連結されたプロセッシング要素は、2個のオペランドの符号及び仮数が入力される仮数部プロセッシング要素、及び前記2個のオペランドの指数が入力される指数部プロセッシング要素を含むことを特徴とする請求項12に記載の再構成アレイプロセッサ。
  14. 前記仮数部プロセッシング要素は、前記2つのオペランドの仮数を乗じたり割ったりするために、乗算器及び除算器のうち、少なくとも一つに連結されており、
    前記指数部プロセッシング要素は、前記2つのオペランドの指数を加えたり差し引いたりするために構成されたことを特徴とする請求項13に記載の再構成アレイプロセッサ。
  15. 前記フレームバッファは、24ビット浮動小数点フォーマットを有することを特徴とする請求項14に記載の再構成アレイプロセッサ。
  16. 前記24ビット浮動小数点フォーマットは、1ビットの符号ビット、8ビットの指数ビット及び15ビットの仮数ビットを含むことを特徴とする請求項15に記載の再構成アレ
    イプロセッサ。
  17. 前記仮数部プロセッシング要素は、入力された2つのオペランドの符号及び仮数を、前記フレームバッファの1符号ビット及び15仮数ビットに変換し、変換された前記1符号ビット及び15仮数ビットを、前記フレームバッファに保存し、
    前記指数部プロセッシング要素は、入力された2つのオペランドの指数をフレームバッファの8指数ビットに変換し、変換された前記8指数ビットを、前記フレームビットに保存するように構成されたことを特徴とする請求項16に記載の再構成アレイプロセッサ。
  18. 前記各プロセッシング要素、
    前記演算装置に連結され、前記演算装置に少なくとも2個の入力値を提供する2個のマルチプレクサと、
    前記演算装置に連結され、前記演算装置から受けた結果値にシフト演算を行うシフタと、
    前記演算装置及びシフタに連結され、前記演算装置の中間結果値及びシフタの中間結果値を保存する臨時レジスタと、
    前記演算装置及びシフタに連結され、前記演算装置の最終結果値及びシフタの最終結果値を保存する出力レジスタと、
    を含み、
    前記各マルチプレクサ、データバス、他のプロセッシング要素及び自らのレジスタファイルから受けたデータの中からデータを選択し、前記演算装置に選択された前記データを入力し、前記出力レジスタに保存された最終結果値は、データバスを介して、他のプロセッシング要素または出力値に入力されるようにすることを特徴とする請求項9に記載の再構成アレイプロセッサ。
  19. 前記アレイは、粗粒度再構成アレイ(CGRA)を含むことを特徴とする請求項9に記載の再構成アレイプロセッサ。
  20. 前記アレイに連結され、前記アレイ、構成キャッシュ及びフレームバッファの動作を制御する再構成アレイ制御部を含むことを特徴とする請求項19に記載の再構成アレイプロセッサ。
  21. 複数の構成要素を含み、前記各プロセッシング要素を利用した整数演算の遂行、または、共に連結された2つ以上のプロセッシング要素からなるグループの2つ以上の各グループを利用した一つ以上の浮動小数点演算の遂行、を行うように構成されたプロセッシング要素アレイであって、前記各プロセッシング要素は、2つの入力値を受け、前記入力値を処理する演算装置を含み、前記アレイの前記プロセッシング要素は、前記プロセッシング要素間で、データ交換のために、メッシュ構造に互いに連結されているプロセッシング要素アレイと、
    前記アレイに連結され、前記アレイの行または列内でプロセッシング要素によって行わ
    れる一つ以上の演算遂行を制御し、前記プロセッシング要素間のデータ交換を可能にする
    ように構成されたコンテクストを保存する構成キャッシュと、
    前記アレイに連結され、前記アレイによって行われた一つ以上の演算遂行の臨時結果値を保存するフレームバッファと、を含み、
    前記プロセッシング要素は、パイプラインを形成するために、前記コンテクストに基づいて、行または列単位で構成され、前記パイプライン動作の結果は、前記コンテクストによって指示する方向にフォワーディングされるように構成された、再構成アレイプロセッ
    サと、
    前記再構成アレイプロセッサに連結されたシステムバスと、
    前記システムバスを介して、前記再構成アレイプロセッサに連結され、前記再構成アレイプロセッサを制御してデータを保存する制御及びメモリ部と、
    を含み、
    前記2つ以上のプロセッシング要素からなるグループの各グループは、時間的マッピングを介して、前記整数演算遂行または前記一つ以上の浮動小数点演算を行うように構成され、
    マルチサイクル演算を行うための制御信号のコンテクストを受け、サイクルごとに最終値が得られた後、前記コンテクストの制御信号を受けるように構成された、
    ことを特徴とするデジタル情報プロセッシング装置。
  22. 前記制御及びメモリ部は、
    データの処理及び制御を行う組み込みコアと、データ保存を行う外部メモリと、データ
    移動を行うディレクト・メモリアクセス(DMA)コントローラと、を含むことを特徴とする請求項21に記載のデジタル情報プロセッシング装置。
  23. 前記組み込みコアは、縮小命令セットコンピュータ(RISC)プロセッサ、または、前記縮小命令セットコンピュータ・プロセッサ及び複雑命令セットコンピュータ(CISC)プロセッサの特徴が混合された形態のプロセッサ、を含むことを特徴とする請求項22に記載のデジタル情報プロセッシング装置。
  24. 前記マルチメディア・プラットホームは、
    前記再構成アレイプロセッサの各構成要素が1つの前記システムバスを介して、前記制御及びメモリ部の各構成要素に連結されるようにSoC構造で具現されたことを特徴とする請求項23に記載のデジタル情報プロセッシング装置。
  25. 前記2つ以上のプロセッシング要素からなるグループの前記2つ以上のグループは、浮動小数点に係わる四則演算及び超越関数計算を行うことができるように構成されることを特徴とする請求項23に記載のデジタル情報プロセッシング装置。
  26. 前記2つ以上のプロセッシング要素からなるグループの前記2つ以上の各グループは、前記四則演算遂行のために連結された2個のプロセッシング要素を含み、
    各グループ内の2個の連結されたプロセッシング要素は、2個のオペランドの符号及び仮数が入力される仮数部プロセッシング要素、及び前記2個のオペランドの指数が入力される指数部プロセッシング要素を含むことを特徴とする請求項25に記載のデジタル情報プロセッシング装置。
  27. 前記仮数部プロセッシング要素は、前記2つのオペランドの仮数を乗じたり割ったりするために、乗算器及び除算器のうち、少なくとも一つに連結されており、
    前記指数部プロセッシング要素は、前記2つのオペランドの指数を加えたり差し引いたりするために構成されたことを特徴とする請求項26に記載のデジタル情報プロセッシング装置。
  28. 前記フレームバッファは、1符号ビット、8指数ビット及び15仮数ビットを含んだ24ビット浮動小数点フォーマットを有することを特徴とする請求項25に記載のデジタル情報プロセッシング装置。
  29. 前記各プロセッシング要素は、
    前記演算装置に連結され、前記演算装置に少なくとも2個の入力値を提供する2個のマルチプレクサと、
    前記演算装置に連結され、前記演算装置から受けた結果値にシフト演算を行うシフタと、
    前記演算装置及びシフタに連結され、前記演算装置の中間結果値及びシフタの中間結果値を保存する臨時レジスタと、
    前記演算装置及びシフタに連結され、前記演算装置の最終結果値及びシフタの最終結果値を保存する出力レジスタと、
    を含み、
    前記各マルチプレクサは、データバス、他のプロセッシング要素及び自らのレジスタファイルから受けたデータの中からデータを選択し、前記演算装置に選択された前記データを入力し、前記出力レジスタに保存された最終結果値は、データバスを介して、他のプロセッシング要素または出力値に入力することを特徴とする請求項21に記載のデジタル情報プロセッシング装置。
  30. 前記再構成アレイプロセッサは、粗粒度再構成アレイ(CGRA)を含み、
    前記再構成アレイプロセッサは、前記再構成アレイプロセッサの構成要素を制御するための、前記アレイに連結された再構成アレイ制御部を含むことを特徴とする請求項21に記載のデジタル情報プロセッシング装置。
JP2010524767A 2007-09-11 2007-11-26 浮動小数点演算のための再構成アレイプロセッサ Expired - Fee Related JP5089776B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2007-0092139 2007-09-11
KR20070092139 2007-09-11
PCT/KR2007/006005 WO2009035185A1 (en) 2007-09-11 2007-11-26 Reconfigurable array processor for floating-point operations

Publications (2)

Publication Number Publication Date
JP2010539582A JP2010539582A (ja) 2010-12-16
JP5089776B2 true JP5089776B2 (ja) 2012-12-05

Family

ID=40452170

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010524767A Expired - Fee Related JP5089776B2 (ja) 2007-09-11 2007-11-26 浮動小数点演算のための再構成アレイプロセッサ

Country Status (5)

Country Link
US (1) US8078835B2 (ja)
JP (1) JP5089776B2 (ja)
KR (1) KR100948512B1 (ja)
DE (1) DE212007000102U1 (ja)
WO (1) WO2009035185A1 (ja)

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7474488B2 (en) * 2005-08-30 2009-01-06 International Business Machines Corporation Magnetic head, tape drive system, and method
JP4232838B2 (ja) * 2007-03-29 2009-03-04 日本電気株式会社 再構成可能なsimd型プロセッサ
US8327126B2 (en) * 2008-08-25 2012-12-04 International Business Machines Corporation Multicore processor and method of use that adapts core functions based on workload execution
CN101782893B (zh) * 2009-01-21 2014-12-24 上海芯豪微电子有限公司 可重构数据处理平台
KR101699910B1 (ko) * 2010-03-04 2017-01-26 삼성전자주식회사 재구성 가능 프로세서 및 그 제어 방법
KR101687995B1 (ko) 2010-09-27 2016-12-20 삼성전자주식회사 프로세서 및 그 동작 방법
US9450585B2 (en) 2011-04-20 2016-09-20 Microchip Technology Incorporated Selecting four signals from sixteen inputs
US20120271968A1 (en) * 2011-04-21 2012-10-25 Microchip Technology Incorporated Logic device for combining various interrupt sources into a single interrupt source and various signal sources to control drive strength
KR101869749B1 (ko) * 2011-10-05 2018-06-22 삼성전자 주식회사 정적 라우터 기반의 코어스 그레인 재구성가능 어레이
US9721319B2 (en) 2011-10-14 2017-08-01 Mastercard International Incorporated Tap and wireless payment methods and devices
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
JP2014016894A (ja) 2012-07-10 2014-01-30 Renesas Electronics Corp 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム
WO2014209252A1 (en) * 2013-06-24 2014-12-31 Intel Corporation Page management approach to fully utilize hardware caches for tiled rendering
DE102013212840B4 (de) 2013-07-02 2022-07-07 Robert Bosch Gmbh Modellberechnungseinheit und Steuergerät zur Berechnung eines datenbasierten Funktionsmodells mit Daten in verschiedenen Zahlenformaten
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US9727460B2 (en) 2013-11-01 2017-08-08 Samsung Electronics Co., Ltd. Selecting a memory mapping scheme by determining a number of functional units activated in each cycle of a loop based on analyzing parallelism of a loop
CN103761075B (zh) * 2014-02-10 2017-01-25 东南大学 一种粗粒度动态可重构数据规整控制单元结构
JP6786955B2 (ja) * 2016-08-25 2020-11-18 富士ゼロックス株式会社 再構成可能論理回路
US10528321B2 (en) * 2016-12-07 2020-01-07 Microsoft Technology Licensing, Llc Block floating point for neural network implementations
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10114795B2 (en) 2016-12-30 2018-10-30 Western Digital Technologies, Inc. Processor in non-volatile storage memory
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10885985B2 (en) 2016-12-30 2021-01-05 Western Digital Technologies, Inc. Processor in non-volatile storage memory
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US20190303297A1 (en) * 2018-04-02 2019-10-03 Intel Corporation Apparatus, methods, and systems for remote memory access in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US11188497B2 (en) 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
CN109523019B (zh) * 2018-12-29 2024-05-21 百度在线网络技术(北京)有限公司 加速器、基于fpga的加速系统及控制方法、cnn网络系统
US10698853B1 (en) 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor
US10768899B2 (en) 2019-01-29 2020-09-08 SambaNova Systems, Inc. Matrix normal/transpose read and a reconfigurable data processor including same
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US11386038B2 (en) 2019-05-09 2022-07-12 SambaNova Systems, Inc. Control flow barrier and reconfigurable data processor
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11055141B2 (en) 2019-07-08 2021-07-06 SambaNova Systems, Inc. Quiesce reconfigurable data processor
KR20210030653A (ko) * 2019-09-10 2021-03-18 주식회사 모빌린트 복수 개의 코어를 갖는 연산 장치
US11269635B1 (en) * 2019-10-21 2022-03-08 Accenture Global Solutions Limited Hardware efficient statistical moment computation
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US11308027B1 (en) * 2020-06-29 2022-04-19 Amazon Technologies, Inc. Multiple accumulate busses in a systolic array
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
US12086080B2 (en) 2020-09-26 2024-09-10 Intel Corporation Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits
US11893392B2 (en) * 2020-12-01 2024-02-06 Electronics And Telecommunications Research Institute Multi-processor system and method for processing floating point operation thereof
KR102639136B1 (ko) * 2020-12-01 2024-02-21 한국전자통신연구원 멀티 프로세서 시스템 및 그의 부동 소수점 연산 처리 방법
CN112286864B (zh) * 2020-12-24 2021-06-04 北京清微智能科技有限公司 加速可重构处理器运行的稀疏化数据处理方法及系统
US11556494B1 (en) 2021-07-16 2023-01-17 SambaNova Systems, Inc. Defect repair for a reconfigurable data processor for homogeneous subarrays
US11409540B1 (en) 2021-07-16 2022-08-09 SambaNova Systems, Inc. Routing circuits for defect repair for a reconfigurable data processor
US11327771B1 (en) 2021-07-16 2022-05-10 SambaNova Systems, Inc. Defect repair circuits for a reconfigurable data processor
CN113504893B (zh) * 2021-07-23 2022-08-26 河南亿秒电子科技有限公司 一种智能芯片架构和高效处理数据的方法
US11487694B1 (en) 2021-12-17 2022-11-01 SambaNova Systems, Inc. Hot-plug events in a pool of reconfigurable data flow resources

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966528A (en) * 1990-11-13 1999-10-12 International Business Machines Corporation SIMD/MIMD array processor with vector processing
US5915123A (en) * 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US8065504B2 (en) * 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US6912626B1 (en) * 2000-08-31 2005-06-28 Micron Technology, Inc. Method and apparatus for connecting a massively parallel processor array to a memory array in a bit serial manner
US20070067380A2 (en) * 2001-12-06 2007-03-22 The University Of Georgia Research Foundation Floating Point Intensive Reconfigurable Computing System for Iterative Applications
JP3719509B2 (ja) * 2002-04-01 2005-11-24 株式会社ソニー・コンピュータエンタテインメント シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法
US7082451B2 (en) * 2002-09-09 2006-07-25 Freescale Semiconductor, Inc. Reconfigurable vector-FFT/IFFT, vector-multiplier/divider
GB0224023D0 (en) * 2002-10-16 2002-11-27 Roysmith Graeme Reconfigurable integrated circuit
US6971083B1 (en) * 2002-11-13 2005-11-29 Altera Corporation Method for programming programmable logic device with blocks that perform multiplication and other arithmetic functions
US7242216B1 (en) * 2004-11-08 2007-07-10 Herman Schmit Embedding memory between tile arrangement of a configurable IC
KR100834412B1 (ko) 2007-05-23 2008-06-04 한국전자통신연구원 모바일 멀티미디어 연산의 효율적인 처리를 위한 병렬 프로세서

Also Published As

Publication number Publication date
US20090113169A1 (en) 2009-04-30
DE212007000102U1 (de) 2010-03-18
JP2010539582A (ja) 2010-12-16
WO2009035185A1 (en) 2009-03-19
KR100948512B1 (ko) 2010-03-25
US8078835B2 (en) 2011-12-13
KR20090027184A (ko) 2009-03-16

Similar Documents

Publication Publication Date Title
JP5089776B2 (ja) 浮動小数点演算のための再構成アレイプロセッサ
US10817587B2 (en) Reconfigurable matrix multiplier system and method
EP3779669B1 (en) Block floating point for neural network implementations
KR101098758B1 (ko) Fp-ra를 구성하는 pe 구조 및 그 fp-ra제어하는 fp-ra 제어 회로
US9104510B1 (en) Multi-function floating point unit
US5631859A (en) Floating point arithmetic unit having logic for quad precision arithmetic
US8341204B2 (en) Vector SIMD processor
US6711602B1 (en) Data processor with flexible multiply unit
US20210326111A1 (en) FPGA Processing Block for Machine Learning or Digital Signal Processing Operations
KR100919236B1 (ko) 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법
CN108139886B (zh) 用于图像处理器的多功能执行通道
US7769981B2 (en) Row of floating point accumulators coupled to respective PEs in uppermost row of PE array for performing addition operation
Kuang et al. Energy-efficient multiple-precision floating-point multiplier for embedded applications
Anido et al. Interactive ray tracing using a SIMD reconfigurable architecture
Savadi et al. A survey on design of digital signal processor
Hsiao et al. Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system
Moon et al. An area-efficient standard-cell floating-point unit design for a processing-in-memory system
Hanuman et al. Implementation of High-Performance Floating Point Divider Using Pipeline Architecture on FPGA
Damaj et al. Performance analysis of linear algebraic functions using reconfigurable computing
Sunitha et al. Design and Comparison of Risc Processors Using Different Alu Architectures
Liu et al. Design of a dynamic reconfigurable coprocessor for flexible precision matrix algorithms in media processing and industrial control applications
Mhaidat Prototyping a scalable Montgomery multiplier using field programmable gate arrays (FPGAs)

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20101126

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20101207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120622

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120718

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

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

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

Free format text: PAYMENT UNTIL: 20150921

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5089776

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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