JP2006099719A - Processing device - Google Patents
Processing device Download PDFInfo
- Publication number
- JP2006099719A JP2006099719A JP2005073607A JP2005073607A JP2006099719A JP 2006099719 A JP2006099719 A JP 2006099719A JP 2005073607 A JP2005073607 A JP 2005073607A JP 2005073607 A JP2005073607 A JP 2005073607A JP 2006099719 A JP2006099719 A JP 2006099719A
- Authority
- JP
- Japan
- Prior art keywords
- reconfigurable
- unit
- data
- units
- output
- 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.)
- Pending
Links
Images
Landscapes
- Microcomputers (AREA)
- Logic Circuits (AREA)
- Advance Control (AREA)
Abstract
Description
この発明は、機能の変更が可能なリコンフィギュラブル回路を複数備えた処理装置に関する。 The present invention relates to a processing apparatus including a plurality of reconfigurable circuits whose functions can be changed.
近年、ALU(Arithmetic Logic Unit)と呼ばれる基本演算機能を複数持つ多機能素子
を用いたリコンフィギュラブルプロセッサの開発が進められている(例えば、特許文献1参照)。リコンフィギュラブルプロセッサでは、コマンドデータをALU回路に順次設定することで、全体として所期の演算処理回路を実現することができる。コマンドデータは、C言語などの高級プログラム言語で記述されたソースプログラムをコンパイル処理することでDFG(データフローグラフ)と呼ばれるデータフローを作成し、そのDFGをALUアレイにマッピングするデータとして作成される。コマンドデータは、コマンドメモリに記憶される。
リアルタイムで演算処理を実行する場合、動作クロックの周波数が無限に速ければ、1つのALUアレイにより複雑な演算処理をリアルタイムで実行することができるが、現実には、無限に速いクロックは存在しない。そのため、リアルタイムでの処理が必要な場合、ALUアレイの処理能力の限界のために、1つのALUアレイではリアルタイム処理の要求を満たせないこともある。 When executing arithmetic processing in real time, if the frequency of the operation clock is infinitely fast, complex arithmetic processing can be executed in real time with one ALU array, but in reality there is no infinitely fast clock. For this reason, when real-time processing is required, a single ALU array may not be able to satisfy real-time processing requirements due to limitations in the processing capability of the ALU array.
本発明はこうした状況に鑑みてなされたもので、その目的は、複数のリコンフィギュラブル回路を利用することで、高速の演算処理を実行することのできる技術を提供することにある。 The present invention has been made in view of such circumstances, and an object thereof is to provide a technique capable of executing high-speed arithmetic processing by using a plurality of reconfigurable circuits.
上記課題を解決するために、本発明は、機能の変更が可能なリコンフィギュラブル回路を有する複数のリコンフィギュラブルユニットを備えた処理装置に関する。この処理装置において、各リコンフィギュラブルユニットは、他のリコンフィギュラブルユニットから出力されたデータを記憶する第1記憶部と、第1記憶部の動作制御を実行する制御部とを備える。第1記憶部は、制御部による指示に基づいて、他のリコンフィギュラブルユニットから出力されたデータの中から、自身のリコンフィギュラブル回路において必要な有効データの書込を実行する。 In order to solve the above problems, the present invention relates to a processing apparatus including a plurality of reconfigurable units having a reconfigurable circuit whose function can be changed. In this processing apparatus, each reconfigurable unit includes a first storage unit that stores data output from other reconfigurable units, and a control unit that performs operation control of the first storage unit. The first storage unit writes valid data necessary for its own reconfigurable circuit from among data output from other reconfigurable units based on an instruction from the control unit.
かかる本発明の特徴によれば、複数のリコンフィギュラブルユニットを利用することで、演算処理の高速性を実現できる。また、第1記憶部が、制御部による指示に基づいて有効データの書込を実行するため、第1記憶部に対して複数の有効データの書込動作が同時に発生することはなく、データの衝突を回避できる。 According to such a feature of the present invention, high-speed arithmetic processing can be realized by using a plurality of reconfigurable units. In addition, since the first storage unit executes writing of valid data based on an instruction from the control unit, a plurality of valid data writing operations do not occur at the same time in the first storage unit. Collisions can be avoided.
本発明の別の態様は、機能の変更が可能なリコンフィギュラブル回路を有する複数のリコンフィギュラブルユニットを備えた処理装置に関する。この処理装置において、各リコンフィギュラブルユニットは、自身のリコンフィギュラブル回路から出力されたデータを記憶する第1記憶部を備えている。処理装置は、それぞれのリコンフィギュラブルユニットにおける第1記憶部に記憶されたデータを選択する選択部と、選択部で選択されたデータを、複数のリコンフィギュラブルユニットの入力に供給する接続部とを備える。 Another aspect of the present invention relates to a processing apparatus including a plurality of reconfigurable units having a reconfigurable circuit capable of changing functions. In this processing apparatus, each reconfigurable unit includes a first storage unit that stores data output from its own reconfigurable circuit. The processing device includes: a selection unit that selects data stored in the first storage unit in each reconfigurable unit; and a connection unit that supplies the data selected by the selection unit to inputs of the plurality of reconfigurable units. Is provided.
かかる本発明の別の態様によれば、複数のリコンフィギュラブルユニットを利用することにより、演算処理の高速性を実現できる。また、それぞれのリコンフィギュラブルユニットにおいて出力されたデータを、接続部からリコンフィギュラブルユニットの入力に供給することにより、そのデータを必要とするリコンフィギュラブルユニットは、そのデータを受け取ることができ、リコンフィギュラブルユニット間のデータの受け渡しが容易になる。 According to another aspect of the present invention, high-speed arithmetic processing can be realized by using a plurality of reconfigurable units. In addition, by supplying the data output in each reconfigurable unit to the input of the reconfigurable unit from the connection unit, the reconfigurable unit that needs the data can receive the data, Data transfer between reconfigurable units is facilitated.
上記構成においては、リコンフィギュラブル回路は、複数種類の多ビット演算を選択的に実行可能な算術論理回路を有してもよい。 In the above configuration, the reconfigurable circuit may include an arithmetic logic circuit that can selectively execute a plurality of types of multi-bit operations.
本発明の別の態様は、機能の変更が可能なリコンフィギュラブル回路を有する複数のリコンフィギュラブルユニットを備えた処理装置に関する。この処理装置において、リコンフィギュラブルユニットは、複数のリコンフィギュラブルユニットから出力されたデータをそれぞれ記憶する複数の第1記憶部を備える。リコンフィギュラブル回路は、複数の第1記憶部に記憶されているデータをそれぞれ読み込む。 Another aspect of the present invention relates to a processing apparatus including a plurality of reconfigurable units having a reconfigurable circuit capable of changing functions. In this processing apparatus, the reconfigurable unit includes a plurality of first storage units that respectively store data output from the plurality of reconfigurable units. The reconfigurable circuit reads data stored in the plurality of first storage units, respectively.
上記発明においては、リコンフィギュラブルユニットは、リコンフィギュラブルユニットのリコンフィギュラブル回路から出力されたデータを記憶する第2記憶部を有しており、複数の第1記憶部は、複数のリコンフィギュラブルユニットの第2記憶部に記憶されたデータをそれぞれ記憶してもよい。 In the above invention, the reconfigurable unit has a second storage unit that stores data output from the reconfigurable circuit of the reconfigurable unit, and the plurality of first storage units includes a plurality of reconfigurable units. You may each memorize | store the data memorize | stored in the 2nd memory | storage part of the bull unit.
上記発明においては、複数の第1記憶部は、複数の第1記憶部が備えられたリコンフィギュラブルユニット以外の他の複数のリコンフィギュラブルユニットから出力されたデータをそれぞれ記憶してもよい。 In the above invention, the plurality of first storage units may store data output from a plurality of reconfigurable units other than the reconfigurable unit including the plurality of first storage units.
上記発明においては、第1記憶部及び第2記憶部のそれぞれは、少なくとも2つの記憶部を有しており、少なくとも2つの記憶部のうちの一方の記憶部と他方の記憶部とを、所定のタイミングで書込動作と読出動作とに切り替えてもよい。 In the above invention, each of the first storage unit and the second storage unit has at least two storage units, and one storage unit and the other storage unit of the at least two storage units are defined as predetermined. It is also possible to switch between the writing operation and the reading operation at this timing.
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラムとして表現したものもまた、本発明の態様として有効である。 It should be noted that any combination of the above components and the expression of the present invention expressed as a method, apparatus, system, and computer program are also effective as an aspect of the present invention.
本発明によれば、複数のリコンフィギュラブル回路を利用して、高速の演算処理を実行することのできる技術を提供することができる。 ADVANTAGE OF THE INVENTION According to this invention, the technique which can perform a high-speed arithmetic process can be provided using a some reconfigurable circuit.
本実施例は、複数のリコンフィギュラブル回路を備えた処理装置を提供する。以下では、処理装置についての説明を行う前に、処理装置を構成するリコンフィギュラブル回路を備えたリコンフィギュラブルユニットについて説明する。 The present embodiment provides a processing apparatus including a plurality of reconfigurable circuits. Below, before explaining a processing apparatus, the reconfigurable unit provided with the reconfigurable circuit which comprises a processing apparatus is demonstrated.
図1は、リコンフィギュラブル回路を備えたリコンフィギュラブルユニットの構成図である。リコンフィギュラブルユニット10は、リコンフィギュラブル回路12、制御部18、メモリ部27、および経路部24、29を備える。制御部18は、コマンドメモリ61およびプログラムカウンタ63を有し、リコンフィギュラブル回路12の動作を制御する。コマンドメモリ61は、プログラムカウンタ63のカウント値に基づいて、記憶したデータを出力するように構成される。リコンフィギュラブル回路12は、設定を変更することにより、機能の変更を可能とする。リコンフィギュラブルユニット10は集積回路として1チップで構成されてもよい。
FIG. 1 is a configuration diagram of a reconfigurable unit including a reconfigurable circuit. The
コマンドメモリ61は、リコンフィギュラブル回路12に所期の回路を構成するための設定データを供給する設定部として機能する。経路部24は、フィードバックパスとして機能し、リコンフィギュラブル回路12の出力を、リコンフィギュラブル回路12の入力に接続する。メモリ部27に記憶されたデータは、経路部29を介してリコンフィギュラブル回路12の入力に戻される。リコンフィギュラブル回路12は組合せ回路または順序回路等の論理回路として構成される。
The
メモリ部27はRAMとして構成され、リコンフィギュラブル回路12から出力されるデータ信号および/または外部から入力されるデータ信号を記憶するための記憶領域を有する。リコンフィギュラブル回路12は、メモリ部27にアクセスするための制御データを生成する。メモリ制御データには、書込アドレス、読出アドレスなどが含まれる。なお、メモリ部27に対する書込イネーブル信号、読出イネーブル信号は、コマンドメモリ61から所期のタイミングでメモリ部27に供給される。
The memory unit 27 is configured as a RAM and has a storage area for storing a data signal output from the
リコンフィギュラブル回路12は、機能の変更が可能な複数の論理回路を有して構成される。具体的にリコンフィギュラブル回路12は、複数の演算機能を選択的に実行可能な論理回路を複数段に配列させた構成を備え、さらに前段の論理回路列の出力と後段の論理回路列の入力との接続関係を設定可能な接続部を備える。各段に含まれる複数の論理回路は、論理回路の集合体を構成する。この接続部は、前段の論理回路列の出力すなわち内部状態を保持する状態保持回路の機能も備える。複数の論理回路は、マトリックス状に配置される。各論理回路の機能と、論理回路間の接続関係は、コマンドメモリ61により供給される設定データに基づいて設定される。設定データは、以下の手順で生成される。
The
リコンフィギュラブル回路12により実現されるべきプログラムが、記憶部(図示せず)に保持されている。プログラムは、回路における処理の動作を記述した動作記述を示し、信号処理回路または信号処理アルゴリズムなどをC言語などの高級言語で記述したものである。コンパイラが、プログラムをコンパイルし、データフローグラフ(DFG)に変換して記憶部に記憶する。データフローグラフは、回路における演算間の実行順序の依存関係を表現し、入力変数および定数の演算の流れをグラフ構造で示したものである。一般に、データフローグラフは、上から下に向かって演算が進むように形成される。
A program to be realized by the
データフローグラフは、設定データに変換される。設定データは、データフローグラフをリコンフィギュラブル回路12にマッピングするためのデータであり、リコンフィギュラブル回路12における論理回路の機能や論理回路間の接続関係、さらには論理回路に入力させる定数データなどを定める。設定データは、その実行順序にしたがってコマンドメモリ61に記憶される。
The data flow graph is converted into setting data. The setting data is data for mapping the data flow graph to the
プログラムカウンタ63が、コマンドメモリ61にプログラムカウンタ値を与え、コマンドメモリ61はそのカウンタ値に応じて、記憶した設定データを、コマンドデータとしてリコンフィギュラブル回路12に設定する。なお、コマンドメモリ61は、キャッシュメモリや他の種類のメモリを有して、リコンフィギュラブル回路12に設定データを供給する設定データ供給部として構成されてもよい。
The
コマンドメモリ61は、設定データをリコンフィギュラブル回路12に設定し、リコンフィギュラブル回路12の回路を逐次再構成させる。リコンフィギュラブル回路12は、基本セルとして高性能の演算能力のあるALUを用いており、またリコンフィギュラブル回路12およびコマンドメモリ61を1チップ上に構成することから、コンフィグレーションを高速に、例えば1クロックで実現することができる。
The
図2は、リコンフィギュラブル回路12の構成の一例を示す。リコンフィギュラブル回路12は、それぞれが複数の演算機能を選択的に実行可能な論理回路の多段配列と、前段の論理回路の出力と後段の論理回路の入力の接続関係を任意に設定可能な接続部52とを備える。リコンフィギュラブル回路12では、論理回路の多段配列構造により、上段から下段に向かって演算が進められる。なお、本明細書において「多段」とは、複数の段を意味する。なお、リコンフィギュラブル回路12の回路構成は、必ずしも多段配列を有する必要はないが、回路規模を削減するために全ての論理回路間の接続を可能とするのではなく、一部の論理回路同士の接続を実現させるのが好ましい。
FIG. 2 shows an example of the configuration of the
リコンフィギュラブル回路12は、論理回路としてALU(Arithmetic Logic Unit)を
有している。ALUは、複数種類の多ビット演算を選択的に実行可能な算術論理回路であって、論理和、論理積、ビットシフトなどの複数種類の多ビット演算を設定により選択的に実行できる。各ALUは、複数の演算機能を設定するためのセレクタを有して構成されている。図示の例では、ALUが、2つの入力端子と1つの出力端子を有して構成される。
The
リコンフィギュラブル回路12は、縦方向にX個、横方向にY個のALUが配置されたX段Y列のALUアレイとして構成される。ここでは、縦方向に3個、横方向に6個のALUが配置された3段6列のALUアレイを示している。リコンフィギュラブル回路12は、接続部52およびALU列53を備える。ALU列53は複数段に設けられ、接続部52は前後段のALU列53の間に設けられて、前段のALUの出力と後段のALUの入力の接続関係を設定する。
The
図2に示す例では、第1段のALU列53aと第2段のALU列53bの間に、第2段を構成する接続部52bが設けられ、第2段のALU列53bと第3段のALU列53cの間に、第3段を構成する接続部52cが設けられる。なお、第1段を構成する接続部52aは、第1段のALU列53aの上側に設けられる。
In the example shown in FIG. 2, a
第1段のALU11、ALU12、・・・、ALU16には、入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第2段の接続部52bに設定された接続にしたがって、第2段のALU21、ALU22、・・・、ALU26に入力される。第2段の接続部52bにおいては、第1段のALU列53aの出力と第2段のALU列53bの入力の間で任意の接続関係、あるいは予め定められた接続関係の組合せの中から選択された接続関係を実現できるように接続用結線が構成されており、設定により所期の結線が有効となる。さらに接続部52bは、第1段のALU列53aの出力のうちの一つを外部に出力する途中出力経路54bをさらに備える。したがって、接続部52bは、ALU列53aの出力をALU列53bの入力に供給するだけでなく、ALU列53aのうちの一つの出力をリコンフィギュラブル回路12の外部に出力することができる。
Input variables and constants are input to the first-stage ALU 11,
第2段のALU21、ALU22、・・・、ALU26には、ALU列53aの出力が入力され、設定された所定の演算がなされる。演算結果の出力は、第3段の接続部52cの接続用結線において設定された接続にしたがって、第3段のALU31、ALU32、・・・、ALU36に入力される。接続部52bと同様に、接続部52cも、第2段のALU列53bの出力のうちの一つを外部に出力する途中出力経路54cを備える。したがって、接続部52cは、ALU列53bの出力をALU列53cの入力に供給するだけでなく、ALU列53bのうちの一つの出力をリコンフィギュラブル回路12の外部に出力することができる。
The
最終段となる第3段のALU列53cからの出力データは、メモリ部27または経路部24に出力される。メモリ部27は、経路部29を介して、出力データを接続部52aに入力する。接続部52aは、接続用結線を設定し、第1段のALU11、ALU12、・・・、ALU16にデータを供給する。
The output data from the third-
本実施例では、機能の変更が可能なリコンフィギュラブル回路12を有する複数のリコンフィギュラブルユニット10を備えた処理装置を提供する。複数のリコンフィギュラブルユニット10を用いて演算処理を協働して実行することで、一つの演算処理を複数のリコンフィギュラブルユニット10で分割して実行することが可能となり、処理の高速性を実現することができる。
In the present embodiment, a processing apparatus including a plurality of
複数のリコンフィギュラブルユニット10で協働処理を実行するために、リコンフィギュラブルユニット間でデータを受け渡す処理が発生する。このとき、データの受け渡しが適切に実行されなければ並列処理の意味をなさなくなるため、データの受け渡しには慎重を期す必要がある。2以上のリコンフィギュラブルユニット10が、他のリコンフィギュラブルユニット10において必要となる有効データを同時に出力すると、データ同士が衝突して、有効データの受け渡しが不可能となる場合がある。予めデータの出力タイミングが把握できれば、そのタイミングを調整することも可能であるが、例えば、ループ制御文の条件分岐などの処理においては、データの出力タイミングが変化することもあるため、ユニット間における有効データの受け渡しが困難となる場合もある。特に、リコンフィギュラブルユニット10の数が多くなると、それぞれのリコンフィギュラブルユニット10において実行されている処理をリアルタイムで把握して調停制御を実行することは処理能力的に難しい。
In order to execute the cooperative process in the plurality of
図3(a)は、for文により出力タイミングが異なるプログラムの1例を示す。for文の条件式「i<a」の「a」が変数で、for文の実行に先んじて実行される処理により「a」の値が幾通りか取り得る場合、「a」の値によって出力zが出力されるタイミングが違ってくる。 FIG. 3A shows an example of a program whose output timing differs depending on the for statement. If “a” in the conditional expression “i <a” of the for statement is a variable and the value executed by the process executed prior to the execution of the for statement can take several values of “a”, the value is output as “a”. The timing at which z is output is different.
図3(b)は、出力タイミングを説明するための図である。図2に示したALUアレイの段数にあわせて、DFGの段数は最大3段に設定されている。例えば、「a==1」の場合、1回目のマッピングのALUアレイ1段目からzが出力される。一方、「a==4」の場
合、2回目のマッピングのALUアレイ1段目からzが出力される。このように、条件分岐の場合にはzの出力タイミングが固定されない場合があり、リコンフィギュラブルユニット10の数が多いほど、全てのリコンフィギュラブルユニット10における出力タイミングを把握して調停制御を実行することは困難なものとなる。本実施例の処理装置は、その点を考慮して、リコンフィギュラブルユニット10間におけるデータの受け渡しをスムーズに実行できるように構成される。
FIG. 3B is a diagram for explaining the output timing. In accordance with the number of stages of the ALU array shown in FIG. 2, the number of stages of DFG is set to a maximum of three. For example, when “a == 1”, z is output from the first stage of the ALU array of the first mapping. On the other hand, when “a == 4”, z is output from the first stage of the ALU array of the second mapping. As described above, in the case of conditional branching, the output timing of z may not be fixed. As the number of
図4は、複数のリコンフィギュラブルユニットを備えた処理装置の構成を示す。処理装置100は、3つのリコンフィギュラブルユニット10a、10b、10cを備える。なお、リコンフィギュラブルユニット10の数は例示であり、2つであってもよいし、また4つ以上であってもよい。リコンフィギュラブルユニット10は、図1に示したように、自身のもつリコンフィギュラブル回路12の出力をフィードバックする経路部24、29などの自己ループを有して構成されているが、図4ではそれらの構成は省略している。ここでは、リコンフィギュラブルユニット10が、他のリコンフィギュラブルユニット10からのデータを入力として受け取るための構成を示す。
FIG. 4 shows a configuration of a processing apparatus including a plurality of reconfigurable units. The
それぞれのリコンフィギュラブル回路12は、3段×6列のALUアレイとして構成され、各段から1つの出力が可能な構造を有している。すなわち、各段には6個のALUが存在しているが、そのうちの一つのALUからの出力が、他のリコンフィギュラブルユニット10への入力として利用される。図2を参照して、第1段のALU列53aからは、途中出力経路54bから一つのデータが出力され、第2段のALU列53bからは、途中出力経路54cから一つのデータが出力される。また、第3段のALU列53cからは、図示しない選択部から一つのデータが出力される。データを他のリコンフィギュラブルユニット10に出力するALUは、コマンドメモリ61から供給される設定データにより決定される。各リコンフィギュラブル回路12の各段からは、常にデータが出力されている。この出力が他のリコンフィギュラブルユニット10で必要とされ、他のリコンフィギュラブルユニット10に受け渡すべき有効データかどうかは、C記述から各リコンフィギュラブルユニット10のALUアレイ構造にマッピングするためのDFGを作成する時点で、コンパイラが把握している。
Each
処理装置100において、リコンフィギュラブルユニット10aへの他のリコンフィギュラブルユニット10b、10cからの入力は、リコンフィギュラブルユニット10bの各段からの3つの出力とリコンフィギュラブルユニット10cの各段からの3つの出力の合計6本の出力からなる。既述したように、リコンフィギュラブル回路12の各段からは常にデータが出力されているため、他のリコンフィギュラブルユニット10b、10cから供給されるデータは、自身のリコンフィギュラブルユニット10aにおいて必要な有効データであるとは限らず、必要でない無効データである場合もある。
In the
6つのデータをリコンフィギュラブル回路12aに入力するために、6本のバスを持つと、時間差なしに6つのデータをリコンフィギュラブルユニット10aに入力できる。しかしながら、現実には、リコンフィギュラブル回路12aにおいて、他のリコンフィギュラブル回路12b、12cにおいて生成された6つのデータが同時に必要となる可能性は低い。各リコンフィギュラブルユニット10a、10b、10cは、それぞれ独立した演算を並列して実行しており、ユニット間でデータの受け渡しが発生する頻度はそれほど高くないと考えられる。従って、本実施例の処理装置100においては、バスの本数を減らすために、各リコンフィギュラブルユニット10が、他のリコンフィギュラブルユニットから出力される複数のデータを記憶するRAM64を有し、さらに他のユニットから出力される複数のデータをRAM64に記憶できるように、RAM64の手前に一時記憶用の内部状態保持回路60を備える。内部状態保持回路60は複数のDFFとして構成されてもよい。内部状態保持回路60は、カウンタ70から供給されるカウント値に基づいて、他のリコンフィギュラブル回路から供給される複数のデータを、それぞれ異なるタイミングで且つ所定の周期で、それぞれのDFFに記憶する。このとき、内部状態保持回路60は、他のリコンフィギュラブルユニットから供給されるデータが自身のリコンフィギュラブル回路12において必要な有効データであるか否かにかかわらず、そのデータを記憶する。
In order to input six data to the
リコンフィギュラブルユニット10aに関して示すように、内部状態保持回路60aには、他のユニットにおけるリコンフィギュラブル回路12b、12cの各段からの出力が供給される。内部状態保持回路60aは、それぞれから出力されたデータを保持するための6つのDFFを有している。各DFFは、他のリコンフィギュラブル回路12および出力段に対応して設けられる。各DFFの出力はMUX62aに供給される。MUX62aは、データを選択して出力する選択部として機能する。内部状態保持回路60におけるDFF数が6であるため、MUX62aは、6:1のマルチプレクサとして構成され、カウンタ70から供給されるカウント値に基づいて、内部状態保持回路60の6個のDFFに記憶された複数のデータを、それぞれ異なるタイミングで且つ所定の周期で選択して、RAM64aに供給する。アドレスカウンタ66aは、RAM64aのアドレス値を設定する。
As shown with respect to the
図示を省略しているが、リコンフィギュラブルユニット10a以外の他のリコンフィギュラブルユニット10b、10cも、同様の構成を有している。リコンフィギュラブルユニット10bにおいて、内部状態保持回路60bには、リコンフィギュラブル回路12a、12cの各段からの出力が供給される。MUX62bは、内部状態保持回路60bからの6つのデータ入力のうちの1つを選択してRAM64bに出力する。同様に、リコンフィギュラブルユニット10cにおいて、内部状態保持回路60cには、リコンフィギュラブル回路12a、12bの各段からの出力が供給される。MUX62cは、内部状態保持回路60cからの6つのデータ入力のうちの1つを選択してRAM64cに出力する。
Although not shown, the
処理装置100では、各リコンフィギュラブルユニット10がRAM64を1つ備えた構造を有しており、したがってRAM64とリコンフィギュラブル回路12とを結ぶバス68は、1本のバスで実現できる。これにより、6本のバスを設ける場合と比較すると、回路規模を大幅に削減できる。
In the
実施例では、カウンタ70が6進カウンタとして構成され、カウント値を内部状態保持回路60a、60b、60c、MUX62a、62b、62cのそれぞれに供給する。これにより、6クロックに1回の周期で他のリコンフィギュラブルユニットの各段からの出力データを内部状態保持回路60に記憶させ、また6クロックに1回の周期でMUX62からRAM64に供給させることが可能となる。
In the embodiment, the
具体的には、カウンタ70により、リコンフィギュラブルユニットの各出力ポートからデータが出力されるタイミングにアクティブとなるように内部状態保持回路60におけるDFFのENを制御することで、各リコンフィギュラブルユニット10から出力されたデータがDFFに記憶される。次のタイミングで、MUX62が、DFFに記憶されたデータをRAM64に時分割に供給する。このとき、他のリコンフィギュラブルユニットの各出力ポートから出力されるデータが、自身のリコンフィギュラブル回路における演算に必要な有効データであるとは限らないので、必要のない無効データはRAM64に書き込まないように制御する。これは、図1に示す制御部18により制御される。
Specifically, the
制御部18は、コマンドメモリ61に記憶した書込イネーブル信号をRAM64に供給することにより、RAM64の動作制御を実行する。RAM64は、制御部18から供給される指示に基づいて、他のリコンフィギュラブルユニットから出力されたデータの中から、自身のリコンフィギュラブル回路12において必要な有効データの書込みを実行することができる。これにより、出力されたデータが有効データである場合は、内部状態保持回路60に記憶された順番にしたがって、RAM64に有効データが記憶されることになる。必要のない無効データである場合は、書込イネーブル信号がアクティブの値をとらず、RAM64は、無効データを書き込むことはできない。これにより、無用なデータをRAM64に書き込む事態を回避でき、RAM64の容量を小さく構成することが可能となる。なお、RAM64にデータを書き込まない場合は、アドレスカウンタ66の動作を停止させる。
The
図5は、リコンフィギュラブルユニットに設けられるRAM64の構成を示す。RAM64は、2個のRAM0、RAM1を有して構成される。切替部(SW)は、所定のサイクルごとにデータを書き込むRAMを切り替え、またマルチプレクサ(MUX)は、所定のサイクルごとにデータを読み出すRAMを切り替える。したがって、あるサイクルでは、RAM0がデータ書込用のRAM、RAM1がデータ読出用のRAMに設定され、次のサイクルでは、RAM0がデータ読出用のRAM、RAM1がデータ書込用のRAMに設定される。このように、RAM64においては、RAM0とRAM1とが、所定のタイミングで、書込動作と読出動作とを切り替えて使用される。これにより、データ書込とデータ読出とを独立して動作させることが可能となる。従って、リコンフィギュラブルユニット10は所望のタイミングでデータをRAM64から読み出すことができ、ユニット間で受け渡すデータ同士が衝突する問題を解決できる。また、この方式によると、ユニット出力の順番が変化する場合でも書込動作のみの調停を実行すればよく、制御が容易となる利点がある。
FIG. 5 shows a configuration of the
図6は、リコンフィギュラブルユニット10aにおける各構成の動作を示すタイミングチャートである。リコンフィギュラブルユニット10aの各構成は、カウンタ70の出力に合わせて動作する。ここでは、内部状態保持回路60aにおける6つのDFFを、DFF1、DFF2、DFF3、DFF4、DFF5、DFF6と呼ぶ。DFF1はリコンフィギュラブルユニット10b(リコンフィギュラブル回路12b)の1段目出力と接続し、DFF2はリコンフィギュラブルユニット10bの2段目出力と接続し、DFF3はリコンフィギュラブルユニット10bの3段目出力と接続する。DFF4はリコンフィギュラブルユニット10c(リコンフィギュラブル回路12c)の1段目出力と接続し、DFF5はリコンフィギュラブルユニット10cの2段目出力と接続し、DFF6はリコンフィギュラブルユニット10cの3段目出力と接続する。
FIG. 6 is a timing chart showing the operation of each component in the
カウンタ値が0のとき、リコンフィギュラブルユニット10bの1段目出力が、DFF1に記憶される。続いて、カウンタ値が1のとき、リコンフィギュラブルユニット10bの2段目出力がDFF2に記憶され、このとき同時に、DFF1に記憶されたデータがMUX62aから出力される。カウンタ値が2のとき、リコンフィギュラブルユニット10bの3段目出力がDFF3に記憶され、DFF2に記憶されたデータがMUX62aから出力される。
When the counter value is 0, the first-stage output of the
カウンタ値が3のとき、リコンフィギュラブルユニット10cの1段目出力がDFF4に記憶され、DFF3に記憶されたデータがMUX62aから出力される。カウンタ値が4のとき、リコンフィギュラブルユニット10cの2段目出力がDFF5に記憶され、DFF4に記憶されたデータがMUX62aから出力される。カウンタ値が5のとき、リコンフィギュラブルユニット10cの3段目出力がDFF5に記憶され、DFF4に記憶されたデータがMUX62aから出力される。供給されるデータが有効データであれば、制御部18により、書込イネーブル信号がRAM64aに供給され、RAM64aは、アドレスカウンタ66aにより指定されるアドレス値にデータを書き込む。
When the counter value is 3, the first stage output of the
なお、図6に示したタイミングチャートでは、すべての時間帯におけるデータが有効データである例である。そのため、リコンフィギュラブルユニット10の各段における接続部52は、有効データを出力するALUを選択して、そのALUの出力線を別のリコンフィギュラブルユニット10の内部状態保持回路60に接続させる。このALUの選択は、図2に関して説明したように、設定データによる接続用結線の設定により実行される。
Note that the timing chart shown in FIG. 6 is an example in which data in all time zones is valid data. Therefore, the connection unit 52 in each stage of the
なお、実際にDFGをマッピングする場合には、図6に示すほど、有効データが高頻度に発生することは稀であり、現実には、他のリコンフィギュラブルユニット10に供給する必要のない無効データであることが多くなる。無効データの場合、リコンフィギュラブルユニット10の各段における接続部は、適当なALUの出力を別のリコンフィギュラブルユニット10の内部状態保持回路60に供給する。この出力は何でもよい。無効データは、MUX62aからRAM64aに出力されるが、このときには、データの書込を許可する書込イネーブル信号が制御部18からRAM64aに供給されないため、この無効データは破棄されることになる。
When actually mapping the DFG, as shown in FIG. 6, it is rare that valid data is generated with high frequency, and in reality, invalidity that does not need to be supplied to other
具体的に、他のリコンフィギュラブルユニット10から供給されるデータが有効データであるか、無効データであるかは、既述のように、ALUがコマンドメモリ61から供給される設定データをマッピングされたときに定まるものであり、これは、設定データの生成時に、コンパイラにより把握されている。そのため、他のリコンフィギュラブルユニット10b、10cからMUX62aに供給されるデータが有効データであるとき、コマンドメモリ61からRAM64aに対して、データ書込を許可するW_EN信号が供給される。これにより、RAM64aは、有効データを書き込むことができる。一方、他のリコンフィギュラブルユニット10b、10cからMUX62aに供給されるデータが無効データであるとき、コマンドメモリ61からRAM64aに対して、データ書込を許可するW_EN信号が供給されない。そのため、RAM64aは無効データを書き込むことはせず、記憶領域を有効に活用できる。このように、他のリコンフィギュラブルユニット10b、10cから供給される無効データをRAM64の入口ではじくことにより、複雑な調停制御を必要とせず、他のリコンフィギュラブルユニット10b、10cとRAM64の間の構成を単純化することができ、回路規模を適切に保つことができる。
Specifically, whether the data supplied from the other
図7は、複数のリコンフィギュラブルユニットを備えた処理装置の構成の別の例を示す。図7に示す処理装置200は、3つのリコンフィギュラブルユニット10d、10e、10fを備える。なお、リコンフィギュラブルユニット10の数は例示であり、2つであってもよいし、また4つ以上であってもよい。リコンフィギュラブルユニット10は、図1に示したように、自身のもつリコンフィギュラブル回路12の出力をフィードバックする経路部24、29などの自己ループを有して構成されているが、図7ではそれらの構成は省略している。ここでは、リコンフィギュラブルユニット10が、他のリコンフィギュラブルユニット10からのデータを入力として受け取るための構成を示す。
FIG. 7 shows another example of the configuration of a processing apparatus including a plurality of reconfigurable units. The
それぞれのリコンフィギュラブル回路12は、3段×6列のALUアレイとして構成され、各段から1つの出力が可能な構造を有している。リコンフィギュラブル回路12の出力構成は、図4に関して説明した通りである。
Each
処理装置200において、各リコンフィギュラブルユニット10は、自身のリコンフィギュラブル回路12の各段から出力されたデータを記憶する3つのRAM64と、それぞれのRAM64からの出力を受けて選択的に出力するMUX62を有する。各RAM64は、図5に示したRAMの構成を有し、2つのRAM0、RAM1を備えて構成される。具体的に、リコンフィギュラブルユニット10dは、リコンフィギュラブル回路12dの各段の出力を記憶するRAM64d_1、RAM64d_2、RAM64d_3と、それぞれのRAMの出力を受けるMUX62dを備える。リコンフィギュラブルユニット10eは、リコンフィギュラブル回路12eの各段の出力を記憶するRAM64e_1、RAM64e_2、RAM64e_3と、それぞれのRAMの出力を受けるMUX62eを備える。リコンフィギュラブルユニット10fは、リコンフィギュラブル回路12fの各段の出力を記憶するRAM64f_1、RAM64f_2、RAM64f_3と、それぞれのRAMの出力を受けるMUX62fを備える。
In the
各RAM64に書き込まれるデータは、他のリコンフィギュラブルユニット10に渡すデータである。RAM64へのデータ書込は、他のリコンフィギュラブルユニット10の動作とは無関係に実行される。各リコンフィギュラブルユニット10が、どのタイミングで他のリコンフィギュラブルユニット10から有効データを必要とするかは、C記述からALUアレイにマッピングするためのDFGを作成するコンパイラが把握している。そのため、コンパイラは、他のリコンフィギュラブルユニットで有効データを必要とするタイミングを考慮して、RAM64の読出機能、MUX62またはMUX80のデータ選択機能を制御する制御信号を生成する。この制御信号は設定データとしてユニット間コマンドメモリ84に記憶され、プログラムカウンタ86のカウント値に基づいて出力される。
Data written to each
処理装置200においては、RAM64からの読出データは書込動作に関係なく、読み出したいタイミングに必要なデータを取り出すことができ、また、各リコンフィギュラブルユニット10は、接続部82を介して入力ポートにきているデータのうち必要なデータのみを使用すればよい。図7に示す接続構成で、複数のリコンフィギュラブルユニット10が別々のデータを同じタイミングで必要とする場合、コンパイラでタイミング調整することは容易であり、データ同士の衝突を回避するようにDFGを生成する。
In the
MUX62は、それぞれのリコンフィギュラブルユニット10における3つのRAMに記憶されたデータを選択する。MUX80は、MUX62においてそれぞれのリコンフィギュラブルユニット10におけるRAM64から選択され、供給されたデータを、リコンフィギュラブルユニット10間で選択して、接続部82に出力する。接続部82は、MUX80で選択されたデータを、複数のリコンフィギュラブルユニット10の入力に供給する。接続部82は複数のリコンフィギュラブルユニット10に対して共通のバスとして構成される。共通バスは1本で構成され、回路規模を削減することが好ましい。図1における制御部18は、接続部82から供給されるデータを、リコンフィギュラブルユニット10の入力ポートから受け取るか否かを定める制御信号をリコンフィギュラブルユニット10に供給する。これにより、リコンフィギュラブルユニット10は、必要なデータのみを受け取ることができ、ユニット間のデータの受け渡しを容易に実行することが可能となる。
The MUX 62 selects data stored in the three RAMs in each
以下、処理装置200におけるRAM64のメモリ容量について考察する。処理装置200に入力される外部データの1クロックに対して、処理装置200の内部クロックがその100倍の速度を有しているとする。この場合、外部データの1クロックを1サイクルとして設定すると、1サイクルは、処理装置200内の100クロックに相当する。
Hereinafter, the memory capacity of the
1サイクルのうち、あるリコンフィギュラブルユニットで処理されたデータを再び同じリコンフィギュラブルユニット内で使用する頻度に比べ、他のリコンフィギュラブルユニットで使用する頻度は少ない。したがって、RAM64の容量は小さくてすむ。1サイクル=100クロックで、リコンフィギュラブルユニット10をm個接続する場合、1個のリコンフィギュラブルユニット10に対するRAM64の深さは100/mとなるので、各段1個のRAM64の深さは(100/m)/3となる。図7の場合、m=3なので、RAM64の1個の深さ=11となる。この考察により、RAM64の容量が小さくてすむことがわかる。また、上記で述べたように、RAM64に記憶されたデータを時分割で読み出すことにより、1本の接続部82でリコンフィギュラブルユニット間でデータを受け渡すことが可能となる。図7では、1本のバスで各リコンフィギュラブルユニットへユニット間データを入力していたが、複数のバスでユニット間の接続を実行する構造でもよい。
In one cycle, the frequency used in another reconfigurable unit is less than the frequency in which data processed in one reconfigurable unit is used again in the same reconfigurable unit. Therefore, the capacity of the
処理装置100および処理装置200によると、複数のリコンフィギュラブルユニット10間で受け渡すデータ同士が衝突する問題を解決でき、並列処理が可能となるため、全体の処理能力が向上する。また、ユニット間、外部とのバスを削減できるので、回路規模の削減、及び、消費電力の削減を実現することができる。
According to the
なお、上記した2つの実施例では、各ユニットの各段からの出力を1つとしていたが、複数としてもよい。 In the above-described two embodiments, one output is provided from each stage of each unit, but a plurality of outputs may be provided.
図8は、複数のリコンフィギュラブルユニットを備えた処理装置の構成の別の例を示す。図8に示す処理装置300は、4つのリコンフィギュラブルユニット10g,10h,10i,10jを備える。なお、リコンフィギュラブルユニット10の数は例示であり、3つ以下であってもよいし、また5つ以上であってもよい。リコンフィギュラブルユニット10は、図1に示したように、該リコンフィギュラブルユニット10に備えられたリコンフィギュラブル回路12の出力をフィードバックする経路部24、29などの自己ループを有して構成されているが、図8ではそれらの構成は省略している。
FIG. 8 shows another example of the configuration of a processing apparatus including a plurality of reconfigurable units. The
リコンフィギュラブルユニット10gは、リコンフィギュラブル回路12gと、出力用RAM64g(第2記憶部)と、MUX67gと、入力用RAM69g_1,69g_2,69g_3(第1記憶部)とを有している。
The
リコンフィギュラブル回路12gは、3段×6列のALUアレイとして構成され、各段から1つの出力が可能な構造を有している。図8では、説明の便宜上、リコンフィギュラブル回路12gは、図2に示す1段目から1つの出力が可能な構造を有するものとして説明する。リコンフィギュラブル回路12gの基本的な構成は、図2及び図4等で説明した通りである。
The
出力用RAM64gは、リコンフィギュラブル回路12gの出力側の所定段目(ここでは1段目)から出力されたデータを記憶する。出力用RAM64gは、リコンフィギュラブル回路12gの1段目から出力されたデータが他のリコンフィギュラブル回路12h,12i,12jにおける演算に有効なデータであるとは限らないため、当該有効なデータでない無効データを記憶しないようにする。
The
具体的には、制御部94がユニット間コマンドメモリ95に記憶された書込イネーブル信号を出力用RAM64gに出力する。そして、リコンフィギュラブル回路12gの1段目から出力されたデータが他のリコンフィギュラブル回路12h,12i,12jにおける演算に必要な有効データである場合には、出力用RAM64gには、制御部94から書込イネーブル信号が入力される。出力用RAM64gは、制御部94から入力された書込イネーブル信号に基づいて、リコンフィギュラブル回路12gの1段目から出力されたデータを有効データであるとして記憶する。
Specifically, the
一方、リコンフィギュラブル回路12gの1段目から出力されたデータが有効データでない場合には、出力用RAM64gには、制御部94から書込イネーブル信号が入力されない。この場合には、出力用RAM64gは、制御部94から書込イネーブル信号が入力されないため、リコンフィギュラブル回路12gの1段目から出力されたデータを記憶しない。
On the other hand, when the data output from the first stage of the
また、各リコンフィギュラブルユニット10が、どのタイミングで他のリコンフィギュラブルユニット10の出力用RAM64から有効データを必要とするかは、C記述からALUアレイにマッピングするためのDFGを作成するコンパイラが把握している。
Also, the timing at which each
このため、コンパイラは、一方のリコンフィギュラブルユニット10(例えば、リコンフィギュラブルユニット10g)の出力用記憶部64に記憶された有効データを他方の複数のリコンフィギュラブルユニット10(例えば、リコンフィギュラブルユニット10h,10i,10j)で必要とするタイミングを考慮して、当該出力用記憶部64に有効データを書き込む機能を制御するための制御信号(書込イネーブル信号を含む)を生成する。
For this reason, the compiler converts the valid data stored in the
すなわち、上記他方の複数のリコンフィギュラブルユニット10(例えば、リコンフィギュラブルユニット10h,10i,10j)が上記一方のリコンフィギュラブルユニット10(例えば、リコンフィギュラブルユニット10g)に備えられている出力用RAM64の有効データを同時に読み込むなどのタイミングで、コンパイラは出力用記憶部64に有効データを書き込む機能を制御するための制御信号を生成する。この制御信号は、ユニット間コマンドメモリ95に記憶され、プログラムカウンタ96のカウント値に基づいて制御部94から出力される。
In other words, the other plurality of reconfigurable units 10 (for example,
なお、他方の複数のリコンフィギュラブルユニット10(例えば、リコンフィギュラブルユニット10h,10i,10j)のそれぞれの出力用RAM64が上記一方のリコンフィギュラブルユニット10(例えば、リコンフィギュラブルユニット10g)に備えられているMUX67に対して有効データを同時に出力しないタイミングで、コンパイラは出力用記憶部64に有効データを書き込む機能を制御するための制御信号を生成する。
Note that the
MUX67gは、他の複数のリコンフィギュラブルユニット10h,10i,10jから出力されたデータを選択して該当する入力用RAM69g_1,69g_2,69g_3に出力する。なお、MUX67gは、他の複数のリコンフィギュラブルユニット10h,10i,10jから出力されたデータを、カウンタ値に基づいて選択してもよいし、ユニット間コマンドメモリ95により出力された選択信号に基づいて選択してもよい。
The MUX 67g selects data output from the other plurality of
MUX67gには、経路部90a,90b,90cが接続されている。経路部90aは、MUX67gと他のリコンフィギュラブルユニット10hの出力用RAM64hとを接続する。経路部90bは、MUX67gと他のリコンフィギュラブルユニット10iの出力用RAM64iとを接続する。経路部90cは、MUX67gと他のリコンフィギュラブルユニット10jの出力用RAM64jとを接続する。
MUX67gは、MUX67gに接続される経路部の数が3つであるため、3:1のマルチプレクサとして構成され、カウンタ(図示せず)から供給されるカウンタ値に基づいて、各経路部のいずれかを所定タイミングで順次選択して、選択した経路部から出力されたデータを該当する入力用RAM69gに出力する。 Since the number of path units connected to the MUX 67g is three, the MUX 67g is configured as a 3: 1 multiplexer, and one of the path units is selected based on a counter value supplied from a counter (not shown). Are sequentially selected at a predetermined timing, and the data output from the selected path section is output to the corresponding input RAM 69g.
入力用RAM69g_1,69g_2,69g_3は、MUX67gから出力されたデータを記憶する。入力用RAM69g_1,69g_2,69g_3のそれぞれは、リコンフィギュラブル回路12gの入力側の各段に接続されている。具体的には、入力用RAM69g_1は接続部52aに接続されている。入力用RAM69g_2は接続部52bに接続されている。入力用RAM69g_3は接続部52cに接続されている。
The input RAMs 69g_1, 69g_2, and 69g_3 store data output from the MUX 67g. Each of the input RAMs 69g_1, 69g_2, and 69g_3 is connected to each stage on the input side of the
上記制御部94は、リコンフィギュラブル回路12gが入力用RAM69gに記憶されたデータを読み込むか否かを定める制御信号をリコンフィギュラブル回路12gに出力する。これにより、リコンフィギュラブル回路12gは、必要なデータのみを該当する入力用RAM69gから読み込むことができる。
The
上記入力用RAM69g_1,69g_2,69g_3、及び出力用RAM64gのそれぞれは、図5に示す2つのRAM0、RAM1を有している。入力用RAM69g_1,69g_2,69g_3、及び出力用RAM64gのそれぞれは、2つのRAM0、RAM1のうちの一方のRAMと他方のRAMとを所定のタイミング(ここでは1サイクル)で書込動作と読出動作とに切り替える。
Each of the input RAMs 69g_1, 69g_2, 69g_3, and the
リコンフィギュラブルユニット10hは、上述したリコンフィギュラブルユニット10gと同様に、リコンフィギュラブル回路12hと、リコンフィギュラブル回路12hの所定段目(ここでは1段目)から出力されたデータを記憶する出力用RAM64hと、他の複数のリコンフィギュラブルユニット10g,10i,10jから出力されたデータを選択して該当する入力用RAM69h_1,69h_2,69h_3に出力するMUX67hと、MUX67hにより選択されたデータを記憶する入力用RAM69h_1,69h_2,69h_3とを有している。
The
リコンフィギュラブルユニット10iは、リコンフィギュラブル回路12iと、リコンフィギュラブル回路12iの所定段目(ここでは1段目)から出力されたデータを記憶する出力用RAM64iと、他の複数のリコンフィギュラブルユニット10g,10h,10jから出力されたデータを選択して該当する入力用RAM69i_1,69i_2,69i_3に出力するMUX67iと、MUX67iにより選択されたデータを記憶する入力用RAM69i_1,69i_2,69i_3とを有している。
The reconfigurable unit 10i includes a
リコンフィギュラブルユニット10jは、リコンフィギュラブル回路12jと、リコンフィギュラブル回路12jの所定段目(ここでは1段目)から出力されたデータを記憶する出力用RAM64jと、他の複数のリコンフィギュラブルユニット10g,10h,10iから出力されたデータを選択して該当する入力用RAM69j_1,69j_2,69j_3に出力するMUX67jと、MUX67jにより選択されたデータを記憶する入力用RAM69j_1,69j_2,69j_3とを有している。
The
ここで、図7では、リコンフィギュラブル回路12における各段のALU列53がRAM64に記憶されているデータを同じタイミングで要求しないようにするために、コンパイラは、各段のALU列53のうちのいずれかのALU列53の要求を他のALU列53の要求よりも優先させることにより、各段のALU列53からの要求が重ならないようにしている。すなわち、コンパイラは、当該各段のALU列53のそれぞれの要求が重ならないように当該各要求を時間的に順次ずらしている。
Here, in FIG. 7, in order to prevent the ALU column 53 of each stage in the
ところが、リコンフィギュラブル回路12における各段のALU列53が多くなると、コンパイラは、各段のALU列53のそれぞれの要求が重ならないようにするために、当該各要求を時間的に順次ずらすためのDFG数を多く作成しなければならない。このため、DFG数が多く作成された分、リコンフィギュラブル回路12における回路規模が拡大することがあった。
However, when the number of ALU columns 53 in each stage in the
図8に示す接続構成では、リコンフィギュラブル回路12における各段のALU列53は、それぞれの各段に対応する入力用RAM69に接続されている。これにより、リコンフィギュラブル回路12における2以上のALU列53は、それぞれの各段に対応する入力用RAM69に記憶されているデータを、他段のALU列からの要求に関係なく同時に直接読み込むことができる。
In the connection configuration shown in FIG. 8, the ALU row 53 of each stage in the
このため、コンパイラは、各段のALU列53からの各要求を重複しないようにするためのDFGを多く作成する必要がなくなる。また、コンパイラによりDFGが多く作成されない分、リコンフィギュラブル回路12は、回路規模を縮小することができ、制御動作を簡素化することができる。
This eliminates the need for the compiler to create a large number of DFGs so as not to duplicate requests from the ALU columns 53 at each stage. Further, as much DFG is not created by the compiler, the
なお、本実施形態では、リコンフィギュラブル回路12における各段のALU列53に対応して入力用RAM69が複数備えられているが、この入力用RAM69が1つしか備えられていない場合には、上述した図7に示す構成と同様にリコンフィギュラブル回路12における回路規模が拡大することとなる。
In the present embodiment, a plurality of
具体的には、リコンフィギュラブル回路12における各段のALU列53は、それぞれ独立に動作している。このため、入力用RAM69が1つしか備えられていないと、各段のALU列53は、当該入力用RAM69に記憶されているデータを同時に読み込むことがある。この場合には、各段のALU列53からのデータの読み込みに対する要求が同時に実行されるため、リコンフィギュラブルユニット10の動作が停止する。
Specifically, the ALU columns 53 at each stage in the
従って、上述したようにコンパイラは、各段のALU列53からの要求が同時に実行されないようにするために、何も実行しない処理を示すNOPノードをDFGに加えて、各段のALU列53からの要求を時間的に順次ずらす必要がある。このため、当該NOPノードがDFGに加えられた分、回路規模が拡大することとなる。 Therefore, as described above, in order to prevent requests from the ALU column 53 at each stage from being executed at the same time, the compiler adds a NOP node indicating a process for performing nothing to the DFG, and from the ALU column 53 at each stage. It is necessary to sequentially shift the requests in time. For this reason, the circuit scale is increased by the amount of the NOP node added to the DFG.
よって、図8に示すように、入力用RAM69が1つではなく、各段のALU列53のそれぞれに対応して入力用RAM69が複数備えられることにより、2以上のALU列53は、それぞれの各段に対応する入力用RAM69に記憶されているデータを、他のALU列からの要求に関係なく同時に読み込むことができる。このため、コンパイラは、各段のALU列53からの各要求を重複しないようにするためのDFGを作成する必要がなくなる。また、リコンフィギュラブル回路12は、当該DFGが作成されない分、回路規模を縮小することができる。
Therefore, as shown in FIG. 8, the number of
なお、図8に示すリコンフィギュラブル回路12は、所定段(ここでは1段目)から1つの出力が可能な構造を有するものとして説明しているが、これに限定されずに、複数段(図2参照)のそれぞれから1つの出力が可能な構造を有してもよい。
The
なお、図8に示すリコンフィギュラブルユニット10は、他の複数のリコンフィギュラブルユニット10から出力されたデータを受け付けているが、これに限定されずに、自身の持つリコンフィギュラブルユニット10から出力されたデータを受け付けてもよい。
The
以上、本発明を実施例をもとに説明した。実施例は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。 In the above, this invention was demonstrated based on the Example. It is to be understood by those skilled in the art that the embodiments are exemplifications, and that various modifications are possible in the combination of each component and each processing process, and such modifications are within the scope of the present invention.
10…リコンフィギュラブルユニット、12…リコンフィギュラブル回路、18…制御部、27…メモリ部、54…途中出力経路、60…内部状態保持回路、61…コマンドメモリ、62…MUX、63…プログラムカウンタ、64…RAM、66…アドレスカウンタ、67…MUX、68…バス、69…RAM、70…カウンタ、80…MUX、82…接続部、84…ユニット間コマンドメモリ、86…プログラムカウンタ、94…制御部、95…ユニット間コマンドメモリ、96…プログラムカウンタ、100…処理装置、200…処理装置
DESCRIPTION OF
Claims (13)
前記複数のリコンフィギュラブルユニットは、
他のリコンフィギュラブルユニットから出力されたデータを記憶する第1記憶部と、
前記第1記憶部の動作制御を実行する制御部とを有しており、
前記第1記憶部は、前記制御部による指示に基づいて、前記他のリコンフィギュラブルユニットから出力されたデータの中から、自身のリコンフィギュラブル回路において必要な有効データの書込を実行することを特徴とする処理装置。 A processing apparatus comprising a plurality of reconfigurable units having a reconfigurable circuit capable of changing functions,
The plurality of reconfigurable units are:
A first storage unit for storing data output from other reconfigurable units;
A control unit that performs operation control of the first storage unit,
The first storage unit executes writing of valid data required in its own reconfigurable circuit from among data output from the other reconfigurable units based on an instruction from the control unit. A processing apparatus characterized by the above.
前記他のリコンフィギュラブルユニットから出力される複数のデータを、それぞれ異なるタイミングで且つ所定の周期で記憶する第2記憶部と、
前記第2記憶部に記憶したデータを選択して前記第1記憶部に供給する選択部とを有することを特徴とする請求項1又は請求項2のいずれかに記載の処理装置。 The plurality of reconfigurable units are:
A second storage unit that stores a plurality of data output from the other reconfigurable units at different timings and in a predetermined cycle;
The processing apparatus according to claim 1, further comprising a selection unit that selects data stored in the second storage unit and supplies the data to the first storage unit.
前記選択部は、前記第2記憶部に記憶された複数のデータを、それぞれ異なるタイミングで且つ所定の周期で前記第1記憶部に供給し、
前記第1記憶部は、前記制御部による指示に基づいて、有効データのみを記憶することを特徴とする請求項3に記載の処理装置。 The second storage unit stores data output from the other reconfigurable unit regardless of whether the data is valid data necessary in the reconfigurable circuit of the second storage unit;
The selection unit supplies the plurality of data stored in the second storage unit to the first storage unit at different timings and at a predetermined cycle,
The processing apparatus according to claim 3, wherein the first storage unit stores only valid data based on an instruction from the control unit.
前記複数のリコンフィギュラブルユニットは、自身のリコンフィギュラブル回路から出力されたデータを記憶する第1記憶部を有しており、
前記処理装置は、
それぞれのリコンフィギュラブルユニットにおける前記第1記憶部に記憶されたデータを選択する選択部と、
前記選択部で選択されたデータを、前記複数のリコンフィギュラブルユニットの入力に供給する接続部とを備えることを特徴とする処理装置。 A processing apparatus comprising a plurality of reconfigurable units having a reconfigurable circuit capable of changing functions,
The plurality of reconfigurable units includes a first storage unit that stores data output from its own reconfigurable circuit,
The processor is
A selection unit for selecting data stored in the first storage unit in each reconfigurable unit;
And a connection unit that supplies data selected by the selection unit to inputs of the plurality of reconfigurable units.
前記リコンフィギュラブルユニットは、前記複数のリコンフィギュラブルユニットから出力されたデータをそれぞれ記憶する複数の第1記憶部を有しており、
前記リコンフィギュラブル回路は、前記複数の第1記憶部に記憶されている前記データをそれぞれ読み込むことを特徴とする処理装置。 A processing apparatus comprising a plurality of reconfigurable units having a reconfigurable circuit capable of changing functions,
The reconfigurable unit has a plurality of first storage units that respectively store data output from the plurality of reconfigurable units,
The processing device, wherein the reconfigurable circuit reads the data stored in the plurality of first storage units.
前記複数の第1記憶部は、前記複数のリコンフィギュラブルユニットの前記第2記憶部に記憶された前記データをそれぞれ記憶することを特徴とする請求項10に記載の処理装置。 The reconfigurable unit has a second storage unit that stores the data output from the reconfigurable circuit of the reconfigurable unit,
The processing apparatus according to claim 10, wherein the plurality of first storage units respectively store the data stored in the second storage unit of the plurality of reconfigurable units.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005073607A JP2006099719A (en) | 2004-08-30 | 2005-03-15 | Processing device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004250668 | 2004-08-30 | ||
JP2005073607A JP2006099719A (en) | 2004-08-30 | 2005-03-15 | Processing device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006099719A true JP2006099719A (en) | 2006-04-13 |
Family
ID=36239421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005073607A Pending JP2006099719A (en) | 2004-08-30 | 2005-03-15 | Processing device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006099719A (en) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007257549A (en) * | 2006-03-24 | 2007-10-04 | Toshiba Corp | Semiconductor device |
JP2008116997A (en) * | 2006-10-31 | 2008-05-22 | Kyushu Univ | Reconfigurable data path processor |
WO2008155801A1 (en) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | Information processing unit and method for controlling register |
JP2009140514A (en) * | 2009-01-26 | 2009-06-25 | Toshiba Corp | Semiconductor device |
JP2011048735A (en) * | 2009-08-28 | 2011-03-10 | Ricoh Co Ltd | Simd microprocessor |
JP2013062649A (en) * | 2011-09-13 | 2013-04-04 | Nec Engineering Ltd | Logic circuit having reconfigurable integrated circuit unit, and method of correcting error in logic circuit |
US8631173B2 (en) | 2007-03-28 | 2014-01-14 | Kabushiki Kaisha Toshiba | Semiconductor device |
JP2015502660A (en) * | 2011-11-22 | 2015-01-22 | マーベル ワールド トレード リミテッド | Layout of memory circuit and logic circuit in system on chip |
JP2016143920A (en) * | 2015-01-29 | 2016-08-08 | キヤノン株式会社 | Information processor |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05265705A (en) * | 1992-03-23 | 1993-10-15 | Nippon Telegr & Teleph Corp <Ntt> | Digital processing circuit |
JPH0830577A (en) * | 1994-07-15 | 1996-02-02 | Mitsubishi Electric Corp | Simd processor |
WO2003009125A1 (en) * | 2001-07-19 | 2003-01-30 | Sony Corporation | Calculation apparatus and image processing apparatus |
WO2003092171A2 (en) * | 2002-04-25 | 2003-11-06 | Koninklijke Philips Electronics N.V. | Processing method and apparatus for implementing systolic arrays |
-
2005
- 2005-03-15 JP JP2005073607A patent/JP2006099719A/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05265705A (en) * | 1992-03-23 | 1993-10-15 | Nippon Telegr & Teleph Corp <Ntt> | Digital processing circuit |
JPH0830577A (en) * | 1994-07-15 | 1996-02-02 | Mitsubishi Electric Corp | Simd processor |
WO2003009125A1 (en) * | 2001-07-19 | 2003-01-30 | Sony Corporation | Calculation apparatus and image processing apparatus |
WO2003092171A2 (en) * | 2002-04-25 | 2003-11-06 | Koninklijke Philips Electronics N.V. | Processing method and apparatus for implementing systolic arrays |
JP2005524160A (en) * | 2002-04-25 | 2005-08-11 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | Processing method and apparatus for implementing a systolic array |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007257549A (en) * | 2006-03-24 | 2007-10-04 | Toshiba Corp | Semiconductor device |
JP2008116997A (en) * | 2006-10-31 | 2008-05-22 | Kyushu Univ | Reconfigurable data path processor |
US8631173B2 (en) | 2007-03-28 | 2014-01-14 | Kabushiki Kaisha Toshiba | Semiconductor device |
WO2008155801A1 (en) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | Information processing unit and method for controlling register |
US8019973B2 (en) | 2007-06-20 | 2011-09-13 | Fujitsu Limited | Information processing apparatus and method of controlling register |
JP2009140514A (en) * | 2009-01-26 | 2009-06-25 | Toshiba Corp | Semiconductor device |
JP4703735B2 (en) * | 2009-01-26 | 2011-06-15 | 株式会社東芝 | Compiler, code generation method, code generation program |
JP2011048735A (en) * | 2009-08-28 | 2011-03-10 | Ricoh Co Ltd | Simd microprocessor |
JP2013062649A (en) * | 2011-09-13 | 2013-04-04 | Nec Engineering Ltd | Logic circuit having reconfigurable integrated circuit unit, and method of correcting error in logic circuit |
JP2015502660A (en) * | 2011-11-22 | 2015-01-22 | マーベル ワールド トレード リミテッド | Layout of memory circuit and logic circuit in system on chip |
JP2016143920A (en) * | 2015-01-29 | 2016-08-08 | キヤノン株式会社 | Information processor |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2006099719A (en) | Processing device | |
US4553203A (en) | Easily schedulable horizontal computer | |
US7146486B1 (en) | SIMD processor with scalar arithmetic logic units | |
US7653805B2 (en) | Processing in pipelined computing units with data line and circuit configuration rule signal line | |
JP4484756B2 (en) | Reconfigurable circuit and processing device | |
CA2142407A1 (en) | Re-configurable application specific device | |
JP3987783B2 (en) | Array type processor | |
US20070136560A1 (en) | Method and apparatus for a shift register based interconnection for a massively parallel processor array | |
JP6003744B2 (en) | Arithmetic processing device and arithmetic processing method | |
JP3987784B2 (en) | Array type processor | |
EP2132645A1 (en) | A data transfer network and control apparatus for a system with an array of processing elements each either self- or common controlled | |
US7509479B2 (en) | Reconfigurable global cellular automaton with RAM blocks coupled to input and output feedback crossbar switches receiving clock counter value from sequence control unit | |
JP2003196246A (en) | Data processing system, array type processor, data processor, computer program and information storage medium | |
JP2010117806A (en) | Semiconductor device and data processing method by semiconductor device | |
US20040143613A1 (en) | Floating point bypass register to resolve data dependencies in pipelined instruction sequences | |
US20080229063A1 (en) | Processor Array with Separate Serial Module | |
JP2006065788A (en) | Processor with reconfigurable circuit | |
KR100960148B1 (en) | Data processing circuit | |
JP4728581B2 (en) | Array type processor | |
JP2002269067A (en) | Matrix arithmetic unit | |
JP3861898B2 (en) | Data processing system, array type processor, data processing apparatus, computer program, information storage medium | |
US9507541B2 (en) | Computation device, computation method, and medium | |
JP2008198003A (en) | Array type processor | |
JP2514473B2 (en) | Parallel processor | |
JP2006065786A (en) | Processing apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070530 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20080118 |
|
RD13 | Notification of appointment of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7433 Effective date: 20080201 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081216 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090212 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100105 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100308 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20101116 |