JP5785357B2 - リコンフィグ演算装置を備えるコンピュータシステムおよびリコンフィグ演算装置 - Google Patents

リコンフィグ演算装置を備えるコンピュータシステムおよびリコンフィグ演算装置 Download PDF

Info

Publication number
JP5785357B2
JP5785357B2 JP2009151161A JP2009151161A JP5785357B2 JP 5785357 B2 JP5785357 B2 JP 5785357B2 JP 2009151161 A JP2009151161 A JP 2009151161A JP 2009151161 A JP2009151161 A JP 2009151161A JP 5785357 B2 JP5785357 B2 JP 5785357B2
Authority
JP
Japan
Prior art keywords
instruction
type
executed
reconfiguration
calculation
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.)
Active
Application number
JP2009151161A
Other languages
English (en)
Other versions
JP2011008519A (ja
Inventor
古川 浩
浩 古川
一郎 笠間
一郎 笠間
Original Assignee
スパンション エルエルシー
スパンション エルエルシー
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 スパンション エルエルシー, スパンション エルエルシー filed Critical スパンション エルエルシー
Priority to JP2009151161A priority Critical patent/JP5785357B2/ja
Priority to US12/795,462 priority patent/US9146896B2/en
Publication of JP2011008519A publication Critical patent/JP2011008519A/ja
Priority to US14/868,296 priority patent/US10824423B2/en
Application granted granted Critical
Publication of JP5785357B2 publication Critical patent/JP5785357B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement

Description

本発明は、リコンフィグ演算装置を備えるコンピュータシステムおよびリコンフィグ演算装置に関する。
従来の伝統的なプログラム可能なマイクロプロセッサは、メモリに記憶されている命令を順番に読み出して逐次的に処理する。実行可能な命令は簡単な命令であり、このようなマイクロプロセッサの処理能力には一定の限界がある。
近年、マイクロプロセッサは、高速の割り込み応答性などの従来通りの要求に加えて、さらに複雑な演算についても高速に実行することが要求されるようになってきた。
制御用マイクロコンピュータ(マイコン)は、高速に演算処理を実行することを目的に作られた汎用マイクロプロセッサ(CPU)と異なり、一般的に割り込みによる制御および高い応答性を目的として作られている。そのため、制御用マイコンで実行可能な命令は、単純な命令のみで、複雑な処理命令を備えていないという問題があった。また、複雑な命令を備えている場合でも、その処理時間が長いという問題があった。近年要望されている制御マイコンは、割り込み応答性は重要であるが、それに加えて、複雑な演算を含んだアプリケーションを高速に実行できることが要求されている。制御用マイコンを含めて、マイクロプロセッサには、次のような問題があった。
マイクロプロセッサで複雑な演算を実行可能にする場合、プロセッサ内部の演算ユニット(ALU)における演算レイテンシが長くなり、演算実行時における割り込み応答が遅くなるという問題を生じる。また、割り込み応答のために、実行していた演算を破棄した場合、再実行処理による演算ペナルティが大きくなり、演算時間が長くなるという問題を生じる。
そこで、プロセッサに、複雑な演算を実行する専用のコプロセッサを接続して、複雑な演算はコプロセッサで実行し、プロセッサは演算結果のみを受け取ることが行われている。しかし、汎用のバス(BUS)上にコプロセッサを接続した場合、アプリケーションの連続する処理で、直前の演算結果を使う演算や、直後に演算結果が必要な場合が生じる。このような場合に、例えば平方根演算を1演算だけコプロセッサで実行しても、BUSアクセスによるペナルティのために実際にはあまり演算性能が向上しないという問題がある。また、汎用BUS上にコプロセッサを接続する場合、割り込み応答などによる処理に悪影響を及ぼし、割り込み処理時間が長くなるという問題を生じる。
また、コプロセッサを専用インターフェース(I/F)で接続した場合、接続するコプロセッサに搭載される命令で演算可能な処理が決定されてしまい、使用できる演算が限定されるという問題がある。
コプロセッサの演算機能が限定されるという問題を解決するために、複数のプロセッサエレメントと、複数のプロセッサエレメント、入力端子および出力端子間を変更可能に接続するプロセッサ間ネットワークと、を備え、複数の演算機能を選択的に実行するように内部状態を変更可能な再構成可能な演算装置が知られている。以下、再構成可能な演算装置をリコンフィグ演算装置と称する。
リコンフィグ演算装置は、一般には複雑な演算を実行することを目的としているため、多数の変数データを設定可能で、繰り返し演算などを実行可能なように構成される。そのため、リコンフィグ演算装置での演算時間が長く、プロセッサによるリコンフィグ演算装置へのアクセスは高速であることはあまり必要でなかった。このような理由で、リコンフィグ演算装置は、汎用BUSに接続され、プロセッサ(CPU)が変数データを設定した後、割り込みにより起動されるのが一般的である。リコンフィグ演算装置を使用する場合、プロセッサはCPUと称されるので、以下プロセッサをCPUとして説明する。
リコンフィグ演算装置は、演算機能を変更可能であり、非常に複雑な演算も実行可能であるが、内部の構成を変更すれば、比較的簡単な演算も実行可能である。このような比較的簡単な演算も、CPUで実行する場合処理時間が長くなる。リコンフィグ演算装置の実際の使用においては、非常に複雑な演算を行う頻度はあまり高くなく、比較的簡単な演算に使用されることが多い。
特開2006−302132号公報 特開2007−094847号公報 特開2007−133456号公報
前記のリコンフィグ演算装置では、汎用BUSに接続されるため、上記のBUSアクセスによるペナルティのために実際にはあまり演算性能が向上しないという問題や、割り込み処理時間が長くなるという問題がある。そのため、比較的簡単な演算をリコンフィグ演算装置で実行するようにしても、処理時間はあまり短縮できないという問題が生じている。
実施形態の第1の態様のコンピュータシステムは、CPUと、RAMインターフェースと、RAMインターフェースのアドレス空間に配置されるRAMと、コンフィグレーションデータに基づいて演算機能を動的に変更可能なリコンフィグ演算装置と、を備えるコンピュータシステムである。このコンピュータシステムにおいて、リコンフィグ演算装置は、入力端子と、出力端子と、クロックに同期してそれぞれの演算処理を行う複数のプロセッサエレメントと、入力端子と出力端子と複数のプロセッサエレメントの入力ポートおよび出力ポートとの間を接続し、接続状態が変更可能なプロセッサ間ネットワークと、RAMインターフェースのアドレス空間に配置され、CPUが、リコンフィグ演算装置で実行する演算に関係するデータを書き込み、リコンフィグ演算装置で実行した演算結果が書き込まれるリコンフィグ内蔵RAMと、CPUがリコンフィグ内蔵RAMの所定アドレスに演算に関係するデータを書き込むと、複数のプロセッサエレメントおよびプロセッサ間ネットワークを対応した演算処理を行う状態に設定して演算を開始するように制御する制御部と、を備える。演算は、第1の種類の命令と、第2の種類の命令と、を備える。第1の種類の命令を実行する場合、CPUは、第1の種類の命令をリコンフィグ内蔵RAMの第1の所定アドレスに、第1の種類の命令の変数データをリコンフィグ内蔵RAMの第2の所定アドレスに書き込み、制御部は、第1の所定アドレスに書き込みが行われると、書き込まれた第1の種類の命令を解読して、複数のプロセッサエレメントおよびプロセッサ間ネットワークを演算命令に対応した演算処理を行う状態に設定する。第2の種類の命令を実行する場合、CPUは、第2の種類の命令の変数データを、リコンフィグ内蔵RAMの第1および第2の所定アドレス以外の固定入力アドレスに書き込み、制御部は、固定入力アドレスに書き込みが行われると、複数のプロセッサエレメントおよびプロセッサ間ネットワークを第2の種類の命令に対応した演算処理を行う状態に設定する。
実施形態の第1の態様によれば、CPUは、RAMインターフェースを介してリコンフィグ内蔵RAMの所定のアドレスに演算に関係するデータを書き込むだけで、リコンフィグ演算装置に演算を実行させることができる。また、演算結果がリコンフィグ内蔵RAMに出力されるので、CPUはリコンフィグ内蔵RAMにアクセスするだけで演算結果を得ることができる。
特に、比較的簡単な演算処理である第2の種類の命令を実行する場合、CPUが、第2の種類の命令の変数データを、リコンフィグ内蔵RAMの固定入力アドレスに書き込むだけでよい。この書き込みに応じて、命令の解読を行わずに複数のプロセッサエレメントおよびプロセッサ間ネットワークは、第2の種類の命令に対応した演算処理を行う状態に設定される。従って。応答時間が短くなり、比較的簡単な演算処理である第2の種類の命令を短時間で実行できる。
特に、制御用マイコンは、一般的に割り込みによる制御および高い応答性を目的として作られているため、リコンフィグ回路を追加するだけで、特別な回路や機構を増やすことなく、複雑な演算を含む処理を高速に実行できるようになる。さらに、上記の実施例の構成によれば、リコンフィグ回路は、汎用のバスを使用しないため、制御用マイコンの割り込みの応答性が低下することもない。
図1は、第1実施形態のコンピュータシステムの概略構成を示す図である。 図2は、第1実施形態のリコンフィグ回路の構成を示す図である。 図3は、第1実施形態のリコンフィグ回路における演算実行のための構成例を示す図である。 図4は、第1実施形態のリコンフィグ回路に設けた、内部に複数の演算器およびネットワークを備えるPEの例を示す図である。 図5は、第1実施形態におけるリコンフィグ内蔵SRAMのアドレス構成を示す図である。 図6は、第1実施形態におけるリコンフィグ回路を利用した演算動作を示すシーケンス図である。 図7は、第1実施形態において、アクセラレータ演算を実行する場合の動作を示すフローチャートである。 図8は、第1実施形態において、特定演算を実行する場合の動作を示すフローチャートである。 図9は、第1実施形態において、アクセラレータ演算と特定演算を並列に実効する場合の演算ユニット&ネットワークにおける使用状態を説明する図である。 図10は、第1実施形態における特定演算の起動動作を示すタイムチャートである。 図11は、第1実施形態における特定演算の終了動作を示すタイムチャートである。 図12は、第1実施形態で、特定演算を実行する場合にCPUからのアクセスに対してアクノレッジの返送を演算終了まで待つ変形例の動作を示すフローチャートである。 図13は、第2実施形態のコンピュータシステムの構成を示す図である。 図14は、第3実施形態のコンピュータシステムの構成を示す図である。 図15は、第2および第3実施形態のコンピュータシステムにおいて、演算エレメントに割り当てる演算機能の例を示す図である。 図16は、第2および第3実施形態のコンピュータシステムにおいて、演算エレメントに割り当てる演算機能の別の例を示す図である。
図1は、第1実施形態のコンピュータシステムの構成を示す図である。
図1に示すように、第1実施形態のコンピュータシステムは、CPU1と、RAMインターフェース(I/F)2と、SRAM3と、リコンフィグ回路4と、周辺I/F5と、外部RAM6と、周辺機器7A〜7Nと、を備える。CPU1は、RAMI/F2を介してSRAM3およびリコンフィグ回路4にアクセスする。また、CPU1は、RAMI/F2および周辺I/F5を介して外部RAM6および周辺機器7A〜7Nにアクセスする。RAMI/F2の方が周辺I/F5より拘束のアクセスが可能であるので、CPU1からSRAM3およびリコンフィグ回路4に対するアクセス速度の方が、CPU1から外部RAM6および周辺機器7A〜7Nに対するアクセス速度より高速である。
CPU1、SRAM3、リコンフィグ回路4、RAMI/F2および周辺I/F5のすべてまたは一部は、1チップの半導体集積回路として実現できる。しかし、CPU1、SRAM3、リコンフィグ回路4および周辺I/F5を個別の集積回路チップとし、プリントボード上に形成されたRAMI/F2の配線に接続するように搭載する形で実現することも可能である。
図1に示すように、リコンフィグ回路4は、演算エレメント11と、制御ブロック12と、リコンフィグシーケンサ13と、リコンフィグ内蔵SRAM14と、備える。さらに、演算エレメント11は、演算ユニット&ネットワーク21と、コンフィグデータメモリ22と、を備える。CPU1は、RAMI/F2を介してリコンフィグ内蔵SRAM14にアクセスする。
図2は、リコンフィグ回路4のより詳細な構成を示す図である。
図2に示すように、演算ユニット&ネットワーク21は、入力ポート31と、出力ポート32と、複数のプロセッサエレメント(PE)33と、入力ポート31、出力ポート32および複数のPE33の入力部および出力レジスタの間の接続を変更するネットワーク34と、を備える。コンフィグデータメモリ22は、実行する各演算に対応して、ネットワーク34の接続および使用するPE33内の接続などのデータを記憶している。コンフィグデータメモリ22は、指示された演算に対応するデータを演算ユニット&ネットワーク21に出力し、入力ポート31から入力される変数データに指示された演算を施して結果を出力ポート32に出力する。
リコンフィグ内蔵SRAM14は、CPUから演算用変数データおよび演算命令を書き込まれると、リコンフィグ起動指示フラグを立てる。リコンフィグ起動指示フラグが立てられると、そのことが制御ブロック12に通知される。演算命令は、制御ブロック12またはコンフィグデータメモリ22に通知され、演算用変数データは入力ポート31に転送される。出力ポート32から出力される演算結果は、リコンフィグ内蔵SRAM14に書き込まれる。制御ブロック12は、演算が終了すると、リコンフィグ内蔵SRAM14に演算終了フラグを書き込む。リコンフィグシーケンサ13は、制御ブロック12からの指示に応じて演算エレメント11をシーケンス制御し、演算シーケンスが終了すると、制御ブロック12に終了を通知する。
図3は、複数のPE33を組み合わせて所定の演算処理を実行する演算ユニット&ネットワーク21の例を説明する図である。図3の例は、乗算加算(Multiplier Accumulate)プロセッサエレメントMAC-PEと、遅延プロセッサエレメントDEL-PEと、加算プロセッサエレメントALU-PEと、を図示のように接続して、a×b+cを演算する。図3で、Shift/Maskは、入力データのビットをシフトするシフト回路とその一部のビットをマスクするマスク回路からなる入力部である。Regは、クロックCLKに同期して保持動作を行うレジスタである。MULは乗算器である。ACCは加算器である。ALUは加算、減算、論理演算を行うように切り替え可能な演算器である。
演算ユニット&ネットワーク21は、入力部と出力レジスタと1個の演算器のみからなる基本演算用PEのみを備え、これらのPEをネットワーク34で接続して所望の演算を行えるようにすることが可能である。また、PE内に複数の演算器およびレジスタなどを設け、使用頻度の高い演算を、1個のPEで行うようにすることも可能である。
また、図4に示すように、1個のPE内に複数のPEおよび接続変更可能なネットワークを設けて、1個のPEで複雑な演算を行えるようにする場合もある。
上記のようなPEを多数備え、繰り返し演算も可能な演算ユニット&ネットワーク21は、非常に複雑な演算も実行可能であるが、その分演算時間も長くなる。
リコンフィグ回路4については、広く知られているので、これ以上の説明は省略する。
第1実施形態におけるリコンフィグ回路4は、除算器、平方根演算器、三角関数演算器、浮動小数点演算器などの頻繁に使用される演算を実行するPEを備えている。言い換えれば、リコンフィグ回路4は、除算用PE、平方根演算用PE、三角関数演算用PE、浮動小数点演算用PEなどを備える。ここでは、このような演算を特定演算と称し、このような演算を行うPE33を特定演算エレメントと称する。さらに、リコンフィグ回路4で特定演算を実行するように指示する命令を第2の種類の命令と称する。特定演算は、あらかじめ決定されている。
これに対して、リコンフィグ回路4内で複数のPE33をネットワークで接続して行う演算をアクセラレータ演算と称し、リコンフィグ回路4でアクセラレータ演算を実行するように指示する命令を第1の種類の命令と称する。
図5は、リコンフィグ内蔵RAM14のアドレス領域の割り当てを説明する図である。図5に示すように、リコンフィグ内蔵RAM14のアドレス領域は、アクセラレータ演算領域と、特定演算A領域と、特定演算領域Bと、フラグ領域と、を備える。特定演算領域は、登録されている特定演算の個数分存在する。
アクセラレータ演算領域は、アクセラレータ演算命令(第1の種類の命令)、すなわちコマンドコードを書き込むアドレス領域と、アクセラレータ演算の変数データを書き込むアドレス領域と、アクセラレータ演算の演算結果を書き込むアドレス領域と、を備える。変数データおよび演算結果の個数(データ量)は、アクセラレータ演算命令により異なる。そのため、アクセラレータ演算の変数データを書き込むアドレス領域およびアクセラレータ演算の演算結果を書き込むアドレス領域は、最大データ量が書き込める領域を有する。
特定演算A領域は、特定演算Aの変数データを書き込むアドレス領域と、特定演算Aの演算結果を書き込むアドレス領域と、を備える。同様に、特定演算B領域は、特定演算Bの変数データを書き込むアドレス領域と、特定演算Bの演算結果を書き込むアドレス領域と、を備える。他の特定演算領域も、同様のアドレス領域を備える。特定演算の種類により、変数データおよび演算結果の個数(データ量)は決まっているので、各特定演算領域の幅は固定である。
上記のように、アクセラレータ演算領域にアクセラレータ演算命令が書き込まれると、リコンフィグ起動指示フラグが立ち、これに応じて制御ブロック12がアクセラレータ演算命令を解読し、コンフィグデータメモリ22内に記憶された対応するコンフィグデータがサーチされる。リコンフィグシーケンサ13は、サーチされた対応するコンフィグデータに基づいて、演算ユニット&ネットワーク21のネットワーク34および使用するPE33を、指示された演算を実行する状態に設定する。
アクセラレータ演算領域に書き込まれた変数データは、リコンフィグシーケンサ13の指示により、入力ポート31に入力され、ネットワーク34を介して、変数データが入力されるPE33に供給される。
アクセラレータ演算が終了すると、アクセラレータ演算の演算結果が出力ポート32に出力され、リコンフィグシーケンサ13の指示により、リコンフィグ内蔵RAM14のアクセラレータ演算の演算結果を書き込むアドレス領域に書き込まれる。
以上のように、アクセラレータ演算は、制御ブロック12およびリコンフィグシーケンサ13により、演算ユニット&ネットワーク21のネットワーク34および使用するPE33の設定が制御される。
特定演算は、特定演算の変数データが所定のアドレス領域に書き込まれると、制御ブロック12によりその特定演算を実行するPEが使用可能であるか判定され、使用可能であれば、変数データが対応するPEに入力され、対応するPEが特権モードで起動する。この場合の変数データの転送は、ネットワーク34を使用して行うことができる。しかし、特定演算を実行するPE33の入力部を、リコンフィグ内蔵SRAM14の特定演算の変数データが書き込まれるアドレス領域と直接接続し、変数データが直接対応するPE33に入力できるようにしてもよい。これは、演算結果についても同様で、対応するPE33の出力を、直接リコンフィグ内臓SRAM14の特定演算の演算結果のアドレス領域に出力するようにしてもよい。
いずれにしろ、特定演算は、実行するPEがあらかじめ決められており、リコンフィグ内臓SRAM14から対応するPEへの変数データの転送および演算結果のリコンフィグ内臓SRAM14のための経路を設定するだけなので、短時間に起動して実行可能である。
図6は、第1実施形態において、CPU1が、リコンフィグ回路4に演算を指示し、演算結果を取得するまでの基本的な動作シーケンスを示す。
まず、CPU1が、リコンフィグ内蔵SRAM14の所定のアドレスに演算の変数データを書き込む。上記のように、特定演算であれば、決められたアドレスに変数データを書き込むだけで演算の指示が終了するが、アクセラレータ演算の場合には、さらにアクセラレータ演算命令を書き込むことにより演算指示が終了する。
次に、リコンフィグ回路4の制御ブロック12は、指示された演算を開始する起動条件が成立したかが判定され、成立するまで待機し、成立すれば演算ユニット&ネットワーク21を指示された演算を実行するように変更するように指示(Launch)する。これに応じてリコンフィグシーケンサ13が、入力された変数データを演算ユニット&ネットワーク21を取り込むように制御する。この後、演算ユニット&ネットワーク21は、リコンフィグシーケンサ13の制御で演算を実行する。
演算が終了すると、リコンフィグシーケンサ13は、演算が正常に終了したかを判定し、正常に終了していれば、演算結果をリコンフィグ内蔵SRAM14の所定のアドレスに出力するように指示し、正常終了割り込みを発生する。これに応じて制御ブロック12は、リコンフィグ内蔵SRAM14に正常終了フラグを書き込む。リコンフィグシーケンサ13は、正常に終了していなければ、エラーによる終了割り込みを発生する。これに応じて制御ブロック12は、リコンフィグ内蔵SRAM14にエラー終了フラグを書き込む。これらのフラグは、例えば、終了フラグと正常終了またはエラー終了を示すフラグを組み合わせて実現される。
正常終了の場合には、CPU1は、リコンフィグ内蔵SRAM14から演算結果を読み出し、演算データの取得が完了する。エラー終了の場合は、CPU1は、再度演算指示を行うなどの処理を実行する。
図7は、第1実施形態において、CPU1が、リコンフィグ回路4にアクセラレータ演算を指示し、演算結果を取得するまでの動作を示すフローチャートである。
ステップ101では、CPU1が、リコンフィグ内蔵SRAM14の所定のアドレス(アクセラレータ演算の変数データ領域)に演算の変数データを書き込む。
ステップ102では、CPU1が、リコンフィグ内蔵SRAM14の所定のアドレス(アクセラレータ演算命令領域)にアクセラレータ演算命令を書き込む。これにより、リコンフィグ演算の起動が指示される。
ステップ103では、CPU1が、リコンフィグ内蔵SRAM14にリコンフィグ起動指示フラグを立てる。
ステップ104では、リコンフィグ内蔵SRAM14にリコンフィグ起動指示フラグを立てることにより、制御ブロック12に、アクセラレータ演算の起動指示が発行される。
ステップ105では、制御ブロック12が、演算ユニット&ネットワーク21で特定演算を実行中であるかを判定し、実行中でなければ、ステップ108に進み、実行中であればステップ106に進む。
ステップ106では、制御ブロック12が、指示されたアクセラレータ演算で、実行中の特定演算で使用しているPEを使用するかを判定し、使用していなければステップ108に進み、使用していればステップ107に進む。
ステップ107では、制御ブロック12が、特定演算の終了を判定し、特定演算が終了するまで待機し、終了すればステップ108に進む。なお、待機中に他の特定演算の実行が指示された場合には、新たに指示された特定演算の実行を優先し、実行中の特定演算の終了後、新たに指示された特定演算を実行し、その後ステップ107に進む。
ステップ108では、制御ブロック12が、リコンフィグシーケンサ13に対してリコンフィグ起動指示を行う。
ステップ109では、リコンフィグシーケンサ13が、指示されたアクセラレータ演算に対応する構成データをコンフィグデータメモリ22から読み出し、演算ユニット&ネットワーク21のPEおよびネットワークを構成データにしたがって変更する。これにより、演算ユニット&ネットワーク21では、指示されたアクセラレータ演算が実行可能なデータフローが構築される。
ステップ110では、リコンフィグシーケンサ13が、リコンフィグ内蔵SRAM14の所定のアドレス(アクセラレータ演算の変数データ領域)の変数データを入力ポート31に転送し、リコンフィグ回路4でのアクセラレータ演算の実行を制御する。
ステップ111では、演算が終了すると、リコンフィグシーケンサ13が、出力ポート32に出力された演算結果を、リコンフィグ内蔵SRAM14の所定のアドレス(アクセラレータ演算の演算結果領域)に書き込むように制御する。
ステップ112では、リコンフィグシーケンサ13が、制御ブロック12に演算の終了を通知する。
ステップ113では、制御ブロック12が、リコンフィグ内蔵SRAM14に終了フラグを立てる。
ステップ114では、CPU1が、リコンフィグ内蔵SRAM14の終了フラグにより演算の終了を検知して、終了する。
図8は、第1実施形態において、CPU1が、リコンフィグ回路4に特定演算を指示し、演算結果を取得するまでの動作を示すフローチャートである。
ステップ201では、CPU1が、リコンフィグ内蔵SRAM14の所定のアドレス(特定演算の変数データ領域)に演算の変数データを書き込む。
ステップ202では、CPU1が、リコンフィグ内蔵SRAM14にリコンフィグ起動指示フラグを立てる。
ステップ203では、変数データの書き込みに応じて、制御ブロック12に、アクセラレータ演算の起動指示が発行される。
ステップ204では、制御ブロック12が、演算ユニット&ネットワーク21でリコンフィグ演算を実行中であるか、すなわち他の特定演算またはアクセラレータ演算実行中であるか判定し、実行中でなければ、ステップ207に進み、実行中であればステップ205に進む。
ステップ205では、制御ブロック12が、指示された特定演算で、実行中のリコンフィグ演算で使用しているPEを使用するかを判定し、使用していなければステップ207に進み、使用していればステップ206に進む。
ステップ206では、制御ブロック12が、リコンフィグ演算の終了を判定し、リコンフィグ演算が終了するまで待機し、終了すればステップ207に進む。なお、実行中のリコンフィグ演算のほかに、別のアクセラレータ演算が先に指示されている場合でも、特定演算を優先する。
ステップ207では、制御ブロック12が、演算ユニット&ネットワーク21に対して、指示された特定演算が実行可能なデータフローを構築するように指示する。もし、指示された特定演算が1個のPEで実行可能であれば、そのPEの内部状態を設定する。これにより、そのPEは、指示された特定演算を実行する状態になり、リコンフィグ内蔵SRAM14の所定のアドレス(特定演算の変数データ領域および演算結果領域)と関係付けられる。
ステップ208では、リコンフィグ内蔵SRAM14の所定のアドレス(特定演算の変数データ領域)の変数データを、特定演算を実行するPEの入力部に転送して特定演算を実行する。
ステップ209では、演算が終了すると、そのPEでの演算結果を、リコンフィグ内蔵SRAM14の所定のアドレス(アクセラレータ演算の演算結果領域)に書き込む。
ステップ210では、制御ブロック12が、特定演算の終了に応じて、リコンフィグ内蔵SRAM14に終了フラグを立てる。
ステップ211では、CPU1が、リコンフィグ内蔵SRAM14の終了フラグにより演算の終了を検知して、終了する。
図9は、演算ユニット&ネットワーク21において、一部はアクセラレータ演算を、一部は特定演算を実行している状態を模式的に示す図である。
斜線部35で示される11個のPE33およびネットワーク34の部分は、指示されたアクセラレータ演算を実行する部分で、入力ポート31Aから入力された変数データに対して指定されたアクセラレータ演算を行い、演算結果を出力ポート32Aに出力する。斜線部36で示される1個のPE33およびネットワーク34の部分は、指示された特定演算を実行する部分で、入力ポート31Bから入力された変数データに対して指定された特定演算を行い、演算結果を出力ポート32Bに出力する。斜線部35および36以外の部分のPE33およびネットワーク34は、この時には使用されていない。もし、この部分のPEが他の特定演算を実行可能であれば、さらにそれを実行することも可能である。
図10は、リコンフィグ装置4で、特定演算を実行する場合の起動動作を示すタイミングチャートである。この場合の起動動作は、複数の変数データのうち最初の1個がリコンフィグ内蔵SRAM14に書き込まれると、ただちに演算処理の開始を指示する命令(Launch)を発生する第1の場合と、演算に使用するすべての変数データ(図10では3個)がすべて書き込まれた時に、Launchを発生する第2の場合と、がある。第1の場合には、Launchを発生した後、リコンフィグ内蔵SRAM14に他の変数データが書き込まれるとすぐにPEに転送し、すべての変数データがPEに入力されると実際の演算処理が行われる。
図11は、リコンフィグ装置4で、特定演算を実行する場合の起動動作を示すタイミングチャートである。ここでは、出力データがa,b,cの3つであり、演算が行われて3つの出力データa,b,cが順次生成されると、リコンフィグ内蔵SRAM(レジスタ)14に順次書き込まれる。3番目の出力データcが生成されると、演算終了条件が成立し、3番目の出力データcがリコンフィグ内蔵SRAM(レジスタ)14に書き込まれると、CPU1に対して割り込みが発生して、特定演算の終了を通知する。
図8に示すように、第1実施形態では、CPU1が特定演算命令を指示するために変数データをリコンフィグ内蔵SRAM14の所定のアドレス(特定演算の変数データ領域)に書き込むと、リコンフィグ内蔵SRAM14に特定演算起動指示フラグを立てた。そして、制御ブロック12により終了フラグが立てられると、CPU1はこれにより特定演算の終了を検知した。このシーケンスでは、CPU1は、特定演算命令を指示した後、終了フラグが立てられるまで他の処理を行うことができる。しかし、CPU1の処理性能はレイテンシに直結する場合があり、アプリケーションによっては、演算結果をCPU1すぐに使用したい場合がある。図12は、このような場合に適したシーケンスを示すフローチャートである。
ステップ301では、制御ブロック12が、CPU1によりリコンフィグ内蔵SRAM14のどのアドレスに変数データが書き込まれたかを検出することにより、指示された特定演算を読み取る。
ステップ302では、指示された特定演算があらかじめ決定されている緊急演算であるかを判定し、緊急演算であればステップ303に進み、緊急演算でなければステップ305に進む。例えば、特定演算をすべて緊急演算とすることも、特定演算の中でももっとも簡単な演算のみを緊急演算とすることもできる。
ステップ303では、CPU1の変数データの書き込みに対するアクノレッジ(ACK.)を返送せず、演算の終了を待ち、演算が終了するとステップ304に進む。
ステップ304では、アクノレッジを返送する。これに応じてCPU1は、リコンフィグ内蔵SRAM14の所定のアドレス(特定演算の演算結果領域)にアクセスして、演算結果を得る。このように、演算終了までCPU1からのアクセスに対するアクノレッジを返送しないので、CPU1からみた演算性能(レイテンシ)は最短になる。
緊急演算でない場合には、ステップ305で、CPU1の変数データの書き込みに対するアクノレッジ(ACK.)を返送し、ステップ306に進む。
ステップ306では、演算の終了を待ち、演算が終了するとステップ307に進む。
ステップ307では、制御ブロック12が終了フラグを立てる。CPU1は、これにより演算の終了を検知し、適当なタイミングでリコンフィグ内蔵SRAM14の所定のアドレス(特定演算の演算結果領域)にアクセスして、演算結果を得る。
以上説明した第1実施形態では、CPU1から容易にアクセス可能な形でリコンフィグ回路を搭載しているため、CPUの負担を少なくして、簡単な演算から複雑な演算までの各種の演算を選択的に行うことができる。特に、あらかじめ決められた簡単な特定演算については、CPU1は、RAMインターフェースのアドレスに変数データを書き込むだけで、リコンフィグ回路4における演算が短時間に起動され、短時間に演算結果を得ることができる。さらに、図12で説明したように、CPUからのアクセスに対して演算終了までアクノレッジを返送しない場合、CPU1は最短時間で演算結果を取得できる。
さらに、CPU1から指示されたアクセラレータ演算と特定演算が、演算ユニットPEの使用において競合しない限り、並列に演算を行うことが可能である。また、競合した場合には、短時間での処理の要求が高い特定演算を優先して実行するため、CPU1の演算処理の速度(レイテンシ)が実質的に向上する。
第1実施形態のリコンフィグ回路を備えるコンピュータシステムの利点は、以下の通りである。
・各種の演算をCPUの負荷を低減して実行できる。これにより、処理能力の小さい旧世代のプロセッサ(マイクロコンピュータ)を使用して、高速な演算処理が可能になる。
・プロセッサ、特にマイクロコンピュータにおいて重要である割り込み応答性を良好に維持したまま、演算処理を高速に実行できる。
・また、リコンフィグ回路で非常に複雑な演算処理も実行でき、その演算の種類を変更可能であり、各種の処理に柔軟に対応できる。
・リコンフィグ内蔵SRAMは、RAMインターフェースのアドレス空間に配置されるので、コプロセッサに比べて接続が容易である。これにより、CPUの開発環境にあまり影響を与えずにリコンフィグ回路の開発環境を組み込む環境が容易に構築できる。
・CPUは、リコンフィグ内蔵SRAMにアクセスするだけで演算処理を指示できる。また、CPUからリコンフィグ回路へのアクセス動作は共通化されているため、コンフィグ回路を変更するだけで、処理の負荷や演算速度を容易に変更することができる。例えばパイプライン処理を行うリコンフィグ回路を使用すれば、非常に高速な演算処理が行える。
図13は、第2実施形態のコンピュータシステムの構成を示す図であり、CPU1、RAMインターフェース2およびリコンフィグ回路4の部分のみを示す。リコンフィグ回路4は、複数の演算エレメント11−1、…、11−nと、複数の制御ブロック12−1、…、12−nと、複数のコンフィグ内蔵SRAM14−1、…、14−nと、1個のリコンフィグシーケンサ13と、を備える。対応する演算エレメント、制御ブロックおよびコンフィグ内蔵SRAMは組をなす。言い換えれば、第2実施形態のリコンフィグ回路4は、第1実施形態のリコンフィグ回路を複数個備え、リコンフィグシーケンサ13を共通化したものである。
第2実施形態では、CPU1は、共通のRAMインターフェース2および個別のコンフィグ内蔵SRAMを介して、各演算エレメントの演算を独立して指示することができる。これにより、CPU1は、複数の演算処理を複数の演算エレメントで同時に実行させることができ、処理をより高速化できる。
図14は、第3実施形態のコンピュータシステムの構成を示す図であり、CPU1、RAMインターフェース2およびリコンフィグ回路4の部分のみを示す。リコンフィグ回路4は、複数の演算エレメント11−1、…、11−nと、制御ブロック12と、リコンフィグシーケンサ13と、コンフィグ内蔵SRAM14と、を備える。言い換えれば、第3実施形態のリコンフィグ回路4は、第1実施形態のリコンフィグ回路を複数個備え、制御ブロック12、リコンフィグシーケンサ13およびコンフィグ内蔵SRAM14を共通化したものである。
第2実施形態でも、複数の演算処理が複数の演算エレメントで同時に実行できる。CPU1が、共通のRAMインターフェース2および共通のコンフィグ内蔵SRAM14を介して、順番に複数の演算処理の実行を指示し、共通の制御ブロック12が、指示された演算処理を各演算エレメントに割り振る。そして、共通のリコンフィグシーケンサ13が各演算エレメントの処理動作を制御する。制御ブロック12およびリコンフィグシーケンサ13による制御および変数データと演算結果の転送は順に行うため、処理速度は第2実施形態に比べて遅くなる。第3実施形態は、バスのコンフリクト(競合)が発生せず、各演算エレメントでパイプライン処理を行う場合や、比較的長い演算時間を要する演算を1つの演算エレメントで行う場合などに適している。
第2および第3実施形態で、各演算エレメントをどのように構成し、各演算エレメントでどのような演算を行うかについては各種の例があり得る。例えば、すべての演算エレメントを同じように構成し、各演算エレメントの動作状態に応じて指示された演算を適宜各演算エレメントに割り当てて実行してもよいが、演算エレメントごとに機能および構成を異ならせることも可能である。
図15は、演算エレメントごとに機能および構成を異ならせた例を示す。図15では、m個をアクセラレータ演算が可能なアクセラレータ演算エレメント11−1、…、11−mとし、1個を除算演算エレメント11−Aとし、1個を平方根演算エレメント11−Bとし、1個を三角関数演算エレメント11−Cとし、1個を浮動小数点演算エレメント11−Dとする。アクセラレータ演算を実行する場合には、アクセラレータ演算エレメント11−1、…、11−mのいずれかを選択して演算を実行する。除算を行う場合には、演算エレメント11−Aがその演算実行する。平方根演算を行う場合には、平方根演算エレメント11−Bが実行する。三角関数演算を行う場合には、三角関数演算エレメント11−Cがその演算を実行する。浮動小数点演算を行う場合には、浮動小数点演算エレメント11−Dがその演算を実行する。なお、三角関数演算には、sin,cos,tanなど各種の演算があるので、実行する三角関数演算に応じて、三角関数演算エレメント11−Cの構成を変更するようにしてもよい。もちろん、別の特定演算を登録し、それをアクセラレータ演算エレメント11−1、…、11−mに含まれるPEを利用して実行するようにしてもよい。
図16は、演算エレメントごとに機能および構成を異ならせた別の例を示す。図16では、m個をアクセラレータ演算が可能なアクセラレータ演算エレメント11−1、…、11−mとし、1個を特定演算エレメント11−Pし、1個を浮動小数点演算エレメント11−Dとする。特定演算エレメント11−Pは、演算ユニット&ネットワークを変更することにより、除算、平方根、三角関数の演算を実行可能である。
どのような演算を特定演算とし、特定演算をどのような演算エレメントで行うかは、特定演算の使用頻度、要求される演算時間およびPEの構成の複雑さなどを考慮して決定すべきである。
ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
以下、実施形態に関し、更に以下の付記を開示する。
(付記1)
CPUと、RAMインターフェースと、前記RAMインターフェースのアドレス空間に配置されるRAMと、コンフィグレーションデータに基づいて演算機能を動的に変更可能なリコンフィグ演算装置と、を備えるコンピュータシステムであって、
前記リコンフィグ演算装置は、
入力端子と、
出力端子と、
クロックに同期してそれぞれの演算処理を行う複数のプロセッサエレメントと、
前記入力端子と前記出力端子と前記複数のプロセッサエレメントの入力ポートおよび出力ポートとの間を接続し、接続状態が変更可能なプロセッサ間ネットワークと、
前記RAMインターフェースのアドレス空間に配置され、前記CPUが、前記リコンフィグ演算装置で実行する演算に関係するデータを書き込み、前記リコンフィグ演算装置で実行した演算結果が書き込まれるリコンフィグ内蔵RAMと、
前記CPUが前記リコンフィグ内蔵RAMの所定アドレスに前記演算に関係するデータを書き込むと、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを対応した演算処理を行う状態に設定して前記演算を開始するように制御する制御部と、を備え、
前記演算は、第1の種類の命令と、第2の種類の命令と、を備え、
前記CPUは、前記第1の種類の命令を前記リコンフィグ内蔵RAMの第1の所定アドレスに、前記第1の種類の命令の変数データを前記リコンフィグ内蔵RAMの第2の所定アドレスに書き込み、
前記制御部は、前記第1の所定アドレスに書き込みが行われると、書き込まれた前記第1の種類の命令を解読して、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記演算命令に対応した演算処理を行う状態に設定し、
前記CPUは、前記第2の種類の命令の変数データを、前記リコンフィグ内蔵RAMの前記第1および第2の所定アドレス以外の固定入力アドレスに書き込み、
前記制御部は、前記固定入力アドレスに書き込みが行われると、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第2の種類の命令に対応した演算処理を行う状態に設定することを特徴とするコンピュータシステム。
(付記2)
前記第2の種類の命令は、複数の特定演算命令を備え、
前記リコンフィグ内蔵RAMの前記固定入力アドレスは、前記複数の特定演算命令に対応して複数の特定入力固定アドレスを備え、
前記CPUは、前記複数の特定演算命令を、対応する前記リコンフィグ内蔵RAMの前記複数の特定固定入力アドレスに書き込む付記1に記載のコンピュータシステム。
(付記3)
前記制御部は、前記第2の種類の命令の変数データの前記固定入力アドレスへの書き込みが行われると、前記リコンフィグ演算装置が前記第1の種類の命令を実行中であるか判定し、実行中でなければ前記第2の種類の命令をただちに実行し、実行中であれば、前記リコンフィグ演算装置で前記第2の種類の命令が並行して実行可能であるか判定し、並行して実行可能であれば前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第2の種類の命令を並行して行う状態に設定し、並行して実行可能でなければ実行中の前記第1の種類の命令の終了後前記第2の種類の命令をただちに実行する付記1または2に記載のコンピュータシステム。
(付記4)
前記リコンフィグ演算装置は、
前記第1の種類の命令の演算結果を、前記リコンフィグ内蔵RAMの第3の所定アドレスに書き込み、
前記第2の種類の命令の演算結果を、前記リコンフィグ内蔵RAMの固定出力アドレスに書き込む付記1から3のいずれかに記載のコンピュータシステム。
(付記5)
前記リコンフィグ演算装置は、前記CPUによる前記第2の種類の命令の変数データの前記固定入力アドレスへの書き込みに対する受取を、前記第2の種類の命令の演算結果を前記リコンフィグ内蔵RAMの固定出力アドレスに書き込んだ後出力する付記4に記載のコンピュータシステム。
(付記6)
前記複数のプロセッサエレメントは、前記特定演算命令の演算を単独で実行可能であるプロセッサエレメントを含む付記2に記載のコンピュータシステム。
(付記7)
前記複数のプロセッサエレメントは、異なる前記特定演算命令の演算を単独で実行するように変更可能であるプロセッサエレメントを含む付記2に記載のコンピュータシステム。
(付記8)
入力端子と、
出力端子と、
クロックに同期してそれぞれの演算処理を行う複数のプロセッサエレメントと、
前記入力端子と前記出力端子と前記複数のプロセッサエレメントの入力ポートおよび出力ポートとの間を接続し、接続状態が変更可能なプロセッサ間ネットワークと、
複数の演算をそれぞれ実行するように、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを変更するためのコンフィグレーションデータを記憶するメモリと、
実行する演算に関係するデータが書き込まれ、実行した演算結果が書き込まれるリコンフィグ内蔵RAMと、
前記リコンフィグ内蔵RAMの所定アドレスに前記演算に関係するデータが書き込まれると、前記コンフィグレーションデータに基づいて前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを対応した演算処理を行う状態に設定して前記演算を開始するように制御する制御部と、を備え、
前記演算は、第1の種類の命令と、第2の種類の命令と、を備え、
前記第1の種類の命令は前記リコンフィグ内蔵RAMの第1の所定アドレスに、前記第1の種類の命令の変数データは前記リコンフィグ内蔵RAMの第2の所定アドレスに書き込まれ、
前記制御部は、前記第1の所定アドレスに書き込みが行われると、書き込まれた前記第1の種類の命令を解読して、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記演算命令に対応した演算処理を行う状態に設定し、
前記第2の種類の命令の変数データは、前記リコンフィグ内蔵RAMの前記第1および第2の所定アドレス以外の固定入力アドレスに書き込まれ、
前記制御部は、前記固定入力アドレスに書き込みが行われると、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第2の種類の命令に対応した演算処理を行う状態に設定する、演算機能を動的に変更可能なリコンフィグ演算装置。
(付記9)
前記第2の種類の命令は、複数の特定演算命令を備え、
前記リコンフィグ内蔵RAMの前記固定入力アドレスは、前記複数の特定演算命令に対応して複数の特定入力固定アドレスを備え、
前記複数の特定演算命令は、対応する前記リコンフィグ内蔵RAMの前記複数の特定固定入力アドレスに書き込まれる付記8に記載のリコンフィグ演算装置。
(付記10)
前記制御部は、前記第2の種類の命令の変数データの前記固定入力アドレスへの書き込みが行われると、前記第1の種類の命令を実行中であるか判定し、実行中でなければ前記第2の種類の命令をただちに実行し、実行中であれば、前記第2の種類の命令が並行して実行可能であるか判定し、並行して実行可能であれば前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第2の種類の命令を並行して行う状態に設定し、並行して実行可能でなければ実行中の前記第1の種類の命令の終了後前記第2の種類の命令をただちに実行する付記8または9に記載のリコンフィグ演算装置。
(付記11)
前記第1の種類の命令の演算結果は、前記リコンフィグ内蔵RAMの第3の所定アドレスに書き込まれ、
前記第2の種類の命令の演算結果は、前記リコンフィグ内蔵RAMの固定出力アドレスに書き込まれる付記8から10のいずれかに記載のリコンフィグ演算装置。
(付記12)
前記第2の種類の命令の変数データの前記固定入力アドレスへの書き込みに対する受取を、前記第2の種類の命令の演算結果を前記リコンフィグ内蔵RAMの固定出力アドレスに書き込んだ後出力する付記11に記載のリコンフィグ演算装置。
(付記13)
前記複数のプロセッサエレメントは、前記特定演算命令の演算を単独で実行可能であるプロセッサエレメントを含む付記9に記載のリコンフィグ演算装置。
(付記14)
前記複数のプロセッサエレメントは、異なる前記特定演算命令の演算を単独で実行するように変更可能であるプロセッサエレメントを含む付記9に記載のリコンフィグ演算装置。
1 CPU
2 RAMインターフェース(I/F)
3 SRAM
4 リコンフィグ回路(装置)
5 周辺インターフェース(I/F)
6 外部RAM
7A−7N 周辺機器
11 演算エレメント
12 制御ブロック
13 リコンフィグシーケンサ
14 リコンフィグ内蔵SRAM
21 演算ユニット&ネットワーク21
22 コンフィグデータメモリ
31 入力ポート31
32 出力ポート32
33 プロセッサエレメント(PE)
34 ネットワーク34

Claims (10)

  1. CPUと、RAMインターフェースと、コンフィグレーションデータに基づいて演算機能を動的に変更可能なリコンフィグ演算装置と、を備えるコンピュータシステムであって、
    前記リコンフィグ演算装置は、
    入力端子と、
    出力端子と、
    クロックに同期してそれぞれの演算処理を行う複数のプロセッサエレメントと、
    前記入力端子と前記出力端子と前記複数のプロセッサエレメントの入力ポートおよび出力ポートとの間を接続し、接続状態が変更可能なプロセッサ間ネットワークと、
    前記リコンフィグ演算装置に内蔵されるRAMであって、当該RAMのアドレスが前記リコンフィグ演算装置外部のRAMインターフェースのアドレス空間に配置され、前記CPUが、前記リコンフィグ演算装置で実行する演算に関係するデータを書き込み、演算結果が書き込まれる、RAMと、
    前記CPUが前記RAMの所定アドレスに前記演算処理に関係するデータを書き込むと、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを対応した演算処理を行う状態に設定して前記演算処理を開始するように制御する制御部と、を備え、
    前記演算処理は、第1の種類の命令と、第2の種類の命令と、を備え、
    前記第2の種類の命令は、複数の特定演算命令を備え、
    前記CPUは、前記第1の種類の命令を前記RAMの第1の所定アドレスに、前記第1の種類の命令の変数データを前記RAMの第2の所定アドレスに書き込み、
    前記制御部は、前記第1の所定アドレスに書き込みが行われると、書き込まれた前記第1の種類の命令を解読して、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記演算命令に対応した演算処理を行う状態に設定し、
    前記CPUは、前記第2の種類の命令の変数データを、前記RAMの前記第1および第2の所定アドレス以外の固定入力アドレスに書き込み、
    前記制御部は、前記固定入力アドレスに書き込みが行われると、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第2の種類の命令に対応した演算処理を行う状態に設定し、
    前記制御部は、前記第2の種類の命令の変数データの前記固定入力アドレスへの書き込みが行われると、前記リコンフィグ演算装置が前記第1の種類の命令を実行中であり、かつ、前記リコンフィグ演算装置で前記第2の種類の命令が並行して実行可能である場合、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第2の種類の命令を並行して行う状態に設定する、
    ことを特徴とするコンピュータシステム。
  2. 記固定入力アドレスは、前記複数の特定演算命令に対応して複数の特定固定入力アドレスを備え、
    前記CPUは、前記複数の特定演算命令を、対応する前記RAMの前記複数の特定固定入力アドレスに書き込むことを特徴とする請求項1に記載のコンピュータシステム。
  3. 前記制御部は、前記第2の種類の命令の変数データの前記固定入力アドレスへの書き込みが行われると、前記リコンフィグ演算装置が前記第1の種類の命令を実行中であるか判定し、実行中でなければ前記第2の種類の命令をただちに実行し、実行中であれば、前記第2の種類の命令が並行して実行可能であるか判定し、並行して実行可能であれば前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第2の種類の命令を並行して行う状態に設定し、並行して実行可能でなければ実行中の前記第1の種類の命令の終了後前記第2の種類の命令をただちに実行することを特徴とする請求項1又は2に記載のコンピュータシステム。
  4. 前記リコンフィグ演算装置は、
    前記第1の種類の命令の演算結果を、前記RAMの第3の所定アドレスに書き込み、
    前記第2の種類の命令の演算結果を、前記RAMの固定出力アドレスに書き込むことを特徴とする請求項1から3のいずれか1項に記載のコンピュータシステム。
  5. 前記リコンフィグ演算装置は、前記CPUによる前記第2の種類の命令の変数データの前記固定入力アドレスへの書き込みに対する受取を、前記第2の種類の命令の演算結果を前記RAMの固定出力アドレスに書き込んだ後出力することを特徴とする請求項4に記載のコンピュータシステム。
  6. 前記複数のプロセッサエレメントは、前記特定演算命令の演算を単独で実行可能であるプロセッサエレメントを含むことを特徴とする請求項2に記載のコンピュータシステム。
  7. 前記複数のプロセッサエレメントは、異なる前記特定演算命令の演算を単独で実行するように変更可能であるプロセッサエレメントを含むことを特徴とする請求項2に記載のコンピュータシステム。
  8. 演算機能を動的に変更可能なリコンフィグ演算装置であって、
    入力端子と、
    出力端子と、
    クロックに同期してそれぞれの演算処理を行う複数のプロセッサエレメントと、
    前記入力端子と前記出力端子と前記複数のプロセッサエレメントの入力ポートおよび出力ポートとの間を接続し、接続状態が変更可能なプロセッサ間ネットワークと、
    複数の演算をそれぞれ実行するように、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを変更するためのコンフィグレーションデータを記憶するメモリと、
    前記リコンフィグ演算装置に内蔵されるRAMであって、当該RAMのアドレスが外部のRAMインターフェースのアドレス空間に配置され、実行する演算に関係するデータが書き込まれ、演算結果が書き込まれる、RAMと、
    記RAMの所定アドレスに前記演算に関係するデータが書き込まれると、前記コンフィグレーションデータに基づいて前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを対応した演算処理を行う状態に設定して前記演算処理を開始するように制御する制御部と、を備え、
    前記演算は、第1の種類の命令と、第2の種類の命令と、を備え、
    前記第2の種類の命令は、複数の特定演算命令を備え、
    前記第1の種類の命令は前記RAMの第1の所定アドレスに、前記第1の種類の命令の変数データは前記RAMの第2の所定アドレスに書き込まれ、
    前記制御部は、前記第1の所定アドレスに書き込みが行われると、書き込まれた前記第1の種類の命令を解読して、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記演算命令に対応した演算処理を行う状態に設定し、
    前記第2の種類の命令の変数データは、前記RAMの前記第1および第2の所定アドレス以外の固定入力アドレスに書き込まれ、
    前記制御部は、前記固定入力アドレスに書き込みが行われると、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第2の種類の命令に対応した演算処理を行う状態に設定し、
    前記制御部は、前記第2の種類の命令の変数データの前記固定入力アドレスへの書き込みが行われると、前記リコンフィグ演算装置が前記第1の種類の命令を実行中であり、かつ、前記リコンフィグ演算装置で前記第2の種類の命令が並行して実行可能である場合、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第2の種類の命令を並行して行う状態に設定する、
    ことを特徴とする演算機能を動的に変更可能なリコンフィグ演算装置。
  9. 記固定入力アドレスは、前記複数の特定演算命令に対応して複数の特定固定入力アドレスを備え、
    前記複数の特定演算命令は、対応する前記RAMの前記複数の特定固定入力アドレスに書き込まれることを特徴とする請求項8に記載のリコンフィグ演算装置。
  10. 前記制御部は、前記第2の種類の命令の変数データの前記固定入力アドレスへの書き込みが行われると、前記第1の種類の命令を実行中であるか判定し、実行中でなければ前記第2の種類の命令をただちに実行し、実行中であれば、前記第2の種類の命令が並行して実行可能であるか判定し、並行して実行可能であれば前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第2の種類の命令を並行して行う状態に設定し、並行して実行可能でなければ実行中の前記第1の種類の命令の終了後前記第2の種類の命令をただちに実行することを特徴とする請求項8または9に記載のリコンフィグ演算装置。
JP2009151161A 2009-06-25 2009-06-25 リコンフィグ演算装置を備えるコンピュータシステムおよびリコンフィグ演算装置 Active JP5785357B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009151161A JP5785357B2 (ja) 2009-06-25 2009-06-25 リコンフィグ演算装置を備えるコンピュータシステムおよびリコンフィグ演算装置
US12/795,462 US9146896B2 (en) 2009-06-25 2010-06-07 Computer system including reconfigurable arithmetic device with network of processor elements
US14/868,296 US10824423B2 (en) 2009-06-25 2015-09-28 Computer system including reconfigurable arithmetic device with network of processor elements

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009151161A JP5785357B2 (ja) 2009-06-25 2009-06-25 リコンフィグ演算装置を備えるコンピュータシステムおよびリコンフィグ演算装置

Publications (2)

Publication Number Publication Date
JP2011008519A JP2011008519A (ja) 2011-01-13
JP5785357B2 true JP5785357B2 (ja) 2015-09-30

Family

ID=43382044

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009151161A Active JP5785357B2 (ja) 2009-06-25 2009-06-25 リコンフィグ演算装置を備えるコンピュータシステムおよびリコンフィグ演算装置

Country Status (2)

Country Link
US (2) US9146896B2 (ja)
JP (1) JP5785357B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104137063A (zh) * 2012-02-28 2014-11-05 株式会社安川电机 控制装置以及控制装置的控制方法
JPWO2013128578A1 (ja) * 2012-02-28 2015-07-30 株式会社安川電機 制御装置および制御装置の制御方法
US10298455B2 (en) * 2015-09-14 2019-05-21 Ricoh Company, Ltd. Data processing system, data processing control apparatus, and data processing control method
US10191881B2 (en) * 2016-06-06 2019-01-29 Hewlett Packard Enterprise Development Lp Modifications to a stream processing topology during processing of a data stream
JP6713410B2 (ja) * 2016-11-21 2020-06-24 日立オートモティブシステムズ株式会社 電子制御装置
CN106933510B (zh) * 2017-02-27 2020-01-21 华中科技大学 一种存储控制器
JP6553694B2 (ja) 2017-09-25 2019-07-31 Necスペーステクノロジー株式会社 プロセッサエレメント、プログラマブルデバイス及びプロセッサエレメントの制御方法
JP7038608B2 (ja) * 2018-06-15 2022-03-18 ルネサスエレクトロニクス株式会社 半導体装置
JP2022040721A (ja) * 2020-08-31 2022-03-11 富士フイルムビジネスイノベーション株式会社 情報処理装置、及びプログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6349363B2 (en) * 1998-12-08 2002-02-19 Intel Corporation Multi-section cache with different attributes for each section
JP4594666B2 (ja) * 2004-07-12 2010-12-08 富士通株式会社 再構成可能な演算装置
JP2006302132A (ja) 2005-04-22 2006-11-02 Yaskawa Electric Corp 信号処理装置及び再構成可能論理回路装置及び再構成可能順序回路
US8966223B2 (en) * 2005-05-05 2015-02-24 Icera, Inc. Apparatus and method for configurable processing
JP4619252B2 (ja) * 2005-09-29 2011-01-26 富士通セミコンダクター株式会社 リコンフィグ可能な集積回路装置
JP2007133456A (ja) 2005-11-08 2007-05-31 Hitachi Ltd 半導体装置
US20100174884A1 (en) 2005-12-27 2010-07-08 Matsushita Electric Industrial Co., Ltd. Processor having reconfigurable arithmetic element
US9564902B2 (en) * 2007-04-17 2017-02-07 Cypress Semiconductor Corporation Dynamically configurable and re-configurable data path
WO2008142767A1 (ja) * 2007-05-21 2008-11-27 Renesas Technology Corp. 半導体装置
US8122229B2 (en) * 2007-09-12 2012-02-21 Convey Computer Dispatch mechanism for dispatching instructions from a host processor to a co-processor
JP4962305B2 (ja) * 2007-12-26 2012-06-27 富士通セミコンダクター株式会社 リコンフィギュラブル回路
US8205066B2 (en) * 2008-10-31 2012-06-19 Convey Computer Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor

Also Published As

Publication number Publication date
JP2011008519A (ja) 2011-01-13
US20160092213A1 (en) 2016-03-31
US9146896B2 (en) 2015-09-29
US20100332795A1 (en) 2010-12-30
US10824423B2 (en) 2020-11-03

Similar Documents

Publication Publication Date Title
JP5785357B2 (ja) リコンフィグ演算装置を備えるコンピュータシステムおよびリコンフィグ演算装置
US8880855B2 (en) Dual register data path architecture with registers in a data file divided into groups and sub-groups
TWI541658B (zh) 資料處理裝置及半導體積體電路裝置
JP4226085B2 (ja) マイクロプロセッサ及びマルチプロセッサシステム
JPH10254696A (ja) プロセッサ及び情報処理装置
EP3685275B1 (en) Configurable hardware accelerators
JP2001092662A (ja) プロセッサコア及びこれを用いたプロセッサ
JPH05100948A (ja) 2乗演算を実行する速度改良型データ処理システム及びその方法
KR100272622B1 (ko) 데이타 처리장치
US6986028B2 (en) Repeat block with zero cycle overhead nesting
JP4073721B2 (ja) データ処理装置
JP2010003151A (ja) データ処理装置
KR19980018071A (ko) 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리
WO2014202825A1 (en) Microprocessor apparatus
TW202119215A (zh) 共用代碼之系統與代碼共用方法
JP2006018411A (ja) プロセッサ
JP3839068B2 (ja) 半導体集積回路装置
JP4758538B2 (ja) データ処理装置および制御方法
JP2636821B2 (ja) 並列処理装置
Wang ARMv8 Architecture and Programming
JP4322284B2 (ja) シングルチップマイクロコンピュータ
KR100599539B1 (ko) 태스크 엔진 기반의 재구성가능 디지털 신호 프로세서
JP4382076B2 (ja) データ処理装置
JPH11283362A (ja) FiFoメモリ制御回路及びこの制御回路を使用したマイクロプロセッサ制御回路
JP2014063510A (ja) データ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120305

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130716

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130730

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20130822

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130927

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131002

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131022

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131025

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131128

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131213

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140409

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140808

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140815

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20141010

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150724

R150 Certificate of patent or registration of utility model

Ref document number: 5785357

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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