[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP4484756B2 - Reconfigurable circuit and processing device - Google Patents

Reconfigurable circuit and processing device Download PDF

Info

Publication number
JP4484756B2
JP4484756B2 JP2005130462A JP2005130462A JP4484756B2 JP 4484756 B2 JP4484756 B2 JP 4484756B2 JP 2005130462 A JP2005130462 A JP 2005130462A JP 2005130462 A JP2005130462 A JP 2005130462A JP 4484756 B2 JP4484756 B2 JP 4484756B2
Authority
JP
Japan
Prior art keywords
thread
ram
circuit
area
unit
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
JP2005130462A
Other languages
Japanese (ja)
Other versions
JP2006040254A (en
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.)
Sanyo Electric Co Ltd
Original Assignee
Sanyo Electric Co Ltd
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 Sanyo Electric Co Ltd filed Critical Sanyo Electric Co Ltd
Priority to JP2005130462A priority Critical patent/JP4484756B2/en
Publication of JP2006040254A publication Critical patent/JP2006040254A/en
Application granted granted Critical
Publication of JP4484756B2 publication Critical patent/JP4484756B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)
  • Logic Circuits (AREA)

Description

この発明は、機能の変更が可能なリコンフィギュラブル回路、およびリコンフィギュラブル回路を備えた処理装置に関する。   The present invention relates to a reconfigurable circuit whose function can be changed, and a processing apparatus including the reconfigurable circuit.

近年、アプリケーションに応じてハードウエアの動作を変更可能なリコンフィギュラブルプロセッサの開発が進められている。リコンフィギュラブルプロセッサを実現するためのアーキテクチャとしては、DSP(Digital Signal Processor)や、FPGA(Field Programmable Gate Array)を用いる方法が存在する。   In recent years, development of reconfigurable processors capable of changing hardware operations in accordance with applications has been underway. As an architecture for realizing a reconfigurable processor, there are methods using a DSP (Digital Signal Processor) and an FPGA (Field Programmable Gate Array).

FPGA(Field Programmable Gate Array)はLSI製造後に回路データを書き込んで比較的自由に回路構成を設計することが可能であり、専用ハードウエアの設計に利用されている。FPGAは、論理回路の真理値表を格納するためのルックアップテーブル(LUT)と出力用のフリップフロップからなる基本セルと、その基本セル間を結ぶプログラマブルな配線リソースとを含む。FPGAでは、LUTに格納するデータと配線データを書き込むことで目的とする論理演算を実現できる。   An FPGA (Field Programmable Gate Array) can design circuit configuration relatively freely by writing circuit data after the LSI is manufactured, and is used for designing dedicated hardware. The FPGA includes a lookup table (LUT) for storing a truth table of a logic circuit, a basic cell composed of an output flip-flop, and a programmable wiring resource that connects the basic cells. In the FPGA, a target logical operation can be realized by writing data stored in the LUT and wiring data.

しかし、FPGAでLSIを設計した場合、ASIC(Application Specific IC)による設計と比べると、実装面積が非常に大きくなり、コスト高になる。そこで、FPGAを動的に再構成することで、回路構成の再利用を図る方法が提案されている(例えば、特許文献1参照。)。
特開平10−256383号公報
However, when an LSI is designed using an FPGA, the mounting area is very large and the cost is high as compared with an ASIC (Application Specific IC) design. Thus, a method has been proposed in which the circuit configuration is reused by dynamically reconfiguring the FPGA (see, for example, Patent Document 1).
Japanese Patent Laid-Open No. 10-256383

例えば衛星放送では、季節などにより、放送モードを切り替えて画質の調整などを行うこともある。受信機では、放送モード毎に複数の回路を予めハードウエア上に作り込んでおき、放送モードに合わせて選択器で回路を切り替えて受信している。   For example, in satellite broadcasting, image quality may be adjusted by switching broadcast modes depending on the season. In the receiver, a plurality of circuits are built in hardware for each broadcast mode in advance, and the circuit is switched by a selector according to the broadcast mode for reception.

したがって、受信機の他の放送モード用の回路はその間、遊んでいることになる。モード切り替えのように、複数の専用回路を切り替えて使用し、その切り替え間隔が比較的長い場合、複数の専用回路を作り込む代わりに、切り替え時にLSIを瞬時に再構成することにすれば、回路構造をシンプルにして汎用性を高め、同時に実装コストを抑えることができる。   Therefore, the other broadcast mode circuits of the receiver are idle during that time. When switching and using multiple dedicated circuits, such as mode switching, and the switching interval is relatively long, instead of creating multiple dedicated circuits, the LSI can be reconfigured instantaneously at the time of switching. The structure can be simplified to improve versatility, and at the same time the mounting cost can be reduced.

このようなニーズに応えるべく、動的に再構成可能なLSIに製造業界の関心が集まっている。特に、携帯電話やPDA(Personal Data Assistance)などのモバイル端末に搭載されるLSIは小型化が必須であり、LSIを動的に再構成し、用途に合わせて適宜機能を切り替えることができれば、LSIの実装面積を抑えることができる。   In order to meet such needs, the manufacturing industry has attracted attention to dynamically reconfigurable LSIs. In particular, LSIs mounted on mobile terminals such as mobile phones and PDAs (Personal Data Assistance) must be downsized, and if LSIs can be dynamically reconfigured and functions can be switched appropriately according to the application, Mounting area can be reduced.

FPGAは回路構成の設計自由度が高く、汎用的である反面、全ての基本セル間の接続を可能とするため、多数のスイッチとスイッチのON/OFFを制御するための制御回路を含む必要があり、必然的に制御回路の実装面積が大きくなる。また、基本セル間の接続に複雑な配線パターンをとるため、配線が長くなる傾向があり、さらに1本の配線に多くのスイッチが接続される構造のため、遅延が大きくなる。   The FPGA has a high degree of design freedom in circuit configuration and is general-purpose. On the other hand, to enable connection between all the basic cells, it is necessary to include a control circuit for controlling ON / OFF of the switches. This inevitably increases the mounting area of the control circuit. Further, since a complicated wiring pattern is used for the connection between the basic cells, the wiring tends to be long, and the delay increases because of the structure in which many switches are connected to one wiring.

そのため、FPGAによるLSIは、試作や実験のために利用されるにとどまることが多く、実装効率、性能、コストなどを考えると、量産には適していない。さらに、FPGAでは、多数のLUT方式の基本セルに構成情報を送る必要があるため、回路のコンフィグレーションにはかなりの時間がかかる。そのため、瞬時に回路構成の切り替えが必要な用途にはFPGAは適していない。   For this reason, FPGA based LSIs are often used only for trial manufacture and experiments, and are not suitable for mass production in view of mounting efficiency, performance, cost, and the like. Furthermore, in the FPGA, it is necessary to send configuration information to a large number of basic cells of the LUT method, so that it takes a considerable time to configure the circuit. For this reason, the FPGA is not suitable for applications that require instantaneous switching of the circuit configuration.

それらの課題を解決するため、近年、ALU(Arithmetic Logic Unit)と呼ばれる基本演算機能を複数持つ多機能素子を多段に並べたALUアレイの検討が行われるようになった。ALUアレイでは、処理が上段から下段の一方向に流れるので、水平方向のALUを結ぶ配線は基本的には不要である。そのため、FPGAと比較して回路規模を小さくすることが可能となる。   In order to solve these problems, in recent years, an ALU array called ALU (Arithmetic Logic Unit) in which multi-functional elements having a plurality of basic arithmetic functions are arranged in multiple stages has been studied. In the ALU array, processing flows in one direction from the upper stage to the lower stage, so that wiring that connects the ALUs in the horizontal direction is basically unnecessary. Therefore, the circuit scale can be reduced as compared with the FPGA.

ALUアレイでは、ALUの出力をALUの入力にフィードバックすることにより、回路のコンフィギュレーションを実行する。回路のコンフィギュレーションを高速に実行することによって、ALUアレイの処理速度を高めることが可能となる。特に、実行するべきスレッドが複数存在する場合、複数のスレッドを効率的に処理することが好ましい。   In the ALU array, circuit configuration is executed by feeding back the output of the ALU to the input of the ALU. By executing the circuit configuration at high speed, the processing speed of the ALU array can be increased. In particular, when there are a plurality of threads to be executed, it is preferable to efficiently process the plurality of threads.

本発明はこうした状況に鑑みてなされたもので、その目的は、複数のスレッドを効率的に実行する技術を提供することにある。   The present invention has been made in view of such circumstances, and an object thereof is to provide a technique for efficiently executing a plurality of threads.

上記課題を解決するために、本発明のある態様は、複数の演算機能を選択的に実行可能な論理回路を複数有し、複数のスレッドを同時に実行することができるリコンフィギュラブル回路に関する。   In order to solve the above problem, an embodiment of the present invention relates to a reconfigurable circuit that includes a plurality of logic circuits that can selectively execute a plurality of arithmetic functions and that can execute a plurality of threads simultaneously.

この態様のリコンフィギュラブル回路において、前段の論理回路と後段の論理回路との間に記憶部が設けられ、複数のスレッドの実行中に、記憶部は、第1のタイミングにおいて前段の論理回路から出力されるデータを格納し、第1のタイミングに続く第2のタイミングにおいて、第1のタイミングにおいて前段の論理回路が実行していたスレッドと同一のスレッドを実行する後段の論理回路に、格納した前段の論理回路から出力されたデータを供給する。   In the reconfigurable circuit according to this aspect, a storage unit is provided between the preceding-stage logic circuit and the subsequent-stage logic circuit. During execution of a plurality of threads, the storage unit is connected to the preceding-stage logic circuit at the first timing. The output data is stored and stored in the subsequent logic circuit that executes the same thread as the thread executed by the preceding logic circuit at the first timing at the second timing following the first timing. Data output from the preceding logic circuit is supplied.

なお、記憶部は、データフリップフロップ回路などにより構成されてもよく、リコンフィギュラブル回路のコンフィギュレーションの切替が1クロックで行われる場合には、第2のタイミングは、第1のタイミングから1クロックだけ遅れたタイミングであってよい。   Note that the storage unit may be configured by a data flip-flop circuit or the like. When the configuration of the reconfigurable circuit is switched in one clock, the second timing is one clock from the first timing. The timing may be delayed only.

なお、前段および後段という用語は、処理の方向を意味するものである。前段の論理回路の出力が、後段の論理回路の入力として処理されればよく、物理的な位置関係としての前段および後段を意味するものではない。   The terms “front stage” and “back stage” mean the direction of processing. The output of the preceding stage logic circuit only needs to be processed as the input of the succeeding stage logic circuit, and does not mean the preceding stage and the succeeding stage as a physical positional relationship.

なお、リコンフィギュラブル回路が論理回路の多段接続構造を有して構成されてもよく、その場合であっても、前段と後段という用語は、処理の方向を意味する。前段と後段の論理回路の間に記憶部を設けることで、同時期に前段と後段の論理回路で異なるスレッドを処理することが可能となり、複数のスレッドを実行可能なリコンフィギュラブル回路を構成することができる。   Note that the reconfigurable circuit may be configured to have a multi-stage connection structure of logic circuits. Even in this case, the terms “front stage” and “rear stage” mean the direction of processing. By providing a storage unit between the preceding and succeeding logic circuits, different threads can be processed in the preceding and succeeding logic circuits at the same time, and a reconfigurable circuit that can execute multiple threads is configured. be able to.

なお、第1記憶部は、複数の記憶手段を備え、記憶手段には、記憶手段に対応する2つのスレッドのうちの一方のスレッドが割り当てられており、一方のスレッドの割り当ては、所定サイクル毎に他方のスレッドへ割り当てを切り替えられてもよい。   The first storage unit includes a plurality of storage units, and one of the two threads corresponding to the storage unit is allocated to the storage unit, and the allocation of one thread is performed every predetermined cycle. The assignment to the other thread may be switched.

なお、第1記憶部は、少なくとも一対の記憶手段を備え、一対の記憶手段には、異なるスレッドがそれぞれに割り当てられており、一対の記憶手段のそれぞれに対応するスレッドの割り当ては、所定サイクル毎に互いに切り替えられてもよい。   The first storage unit includes at least a pair of storage units, and a different thread is allocated to each of the pair of storage units, and the allocation of threads corresponding to each of the pair of storage units is performed every predetermined cycle. May be switched to each other.

なお、第1記憶部は、複数の記憶手段を有する情報記憶ユニットを備え、情報記憶ユニットに備えられた記憶手段のいずれかは、リコンフィギュラブル回路からの所定スレッドの出力を記憶してもよい。   The first storage unit may include an information storage unit having a plurality of storage units, and any one of the storage units included in the information storage unit may store an output of a predetermined thread from the reconfigurable circuit. .

なお、情報記憶ユニットに備えられた記憶手段のいずれかは、特定のスレッドのみが固定的に割り当てられてもよい。   Note that only one specific thread may be fixedly assigned to any of the storage means provided in the information storage unit.

なお、情報記憶ユニットに備えられた記憶手段の少なくとも2以上は、同一のアドレス空間に割振られてもよい。   Note that at least two or more of the storage means provided in the information storage unit may be allocated to the same address space.

なお、情報記憶ユニットに備えられた記憶手段のいずれかは、リコンフィギュラブル回路からの所定スレッドの出力を記憶するか否かを、特定のアドレス範囲により決定されてもよい。   Note that any one of the storage units provided in the information storage unit may determine whether or not to store the output of a predetermined thread from the reconfigurable circuit, based on a specific address range.

本発明の別の態様は、複数の演算機能を選択的に実行可能な論理回路を複数有し、複数のスレッドを同時に実行することができるリコンフィギュラブル回路と、リコンフィギュラブル回路からの出力を記憶する第1記憶部とを備えた処理装置に関する。   Another embodiment of the present invention includes a reconfigurable circuit that includes a plurality of logic circuits that can selectively execute a plurality of arithmetic functions, and that can execute a plurality of threads simultaneously, and outputs from the reconfigurable circuit. The present invention relates to a processing apparatus including a first storage unit for storing.

この態様の処理装置において、第1記憶部は、リコンフィギュラブル回路上で実行されるスレッドに割り当てられる。第1記憶部は、RAMなどの記憶手段により構成されてもよい。第1記憶部は、複数のRAMなどの記憶手段を有してもよく、また1つのRAMなどの記憶手段が複数の記憶領域に分割されたものであってもよい。後者の場合、複数の記憶領域は、同時アクセス可能であることが好ましい。スレッド間でデータの受け渡しを行う場合には、所定のタイミングで、第1記憶部に対するスレッドの割当てを変更することが好ましい。スレッドの割当てを変更することで、スレッド間の効率的なデータの受け渡しを実現できる。   In the processing apparatus of this aspect, the first storage unit is assigned to a thread that is executed on the reconfigurable circuit. The first storage unit may be configured by storage means such as a RAM. The first storage unit may include storage means such as a plurality of RAMs, or a storage means such as one RAM may be divided into a plurality of storage areas. In the latter case, it is preferable that a plurality of storage areas can be accessed simultaneously. When data is exchanged between threads, it is preferable to change the allocation of threads to the first storage unit at a predetermined timing. By changing the thread assignment, it is possible to achieve efficient data transfer between threads.

なお、論理回路は、複数種類の多ビット演算を選択的に実行可能な算術論理回路であってよい。   Note that the logic circuit may be an arithmetic logic circuit capable of selectively executing a plurality of types of multi-bit operations.

なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラムとして表現したものもまた、本発明の態様として有効である。   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.

本発明によれば、複数のスレッドを効率的に実行する技術を提供することができる。   According to the present invention, it is possible to provide a technique for efficiently executing a plurality of threads.

図1は、本発明の実施例に係る処理装置10の構成図である。処理装置10は、集積回路装置26、コンパイル部30、設定データ生成部32、および記憶部34を備える。集積回路装置26は、回路構成を再構成可能とする機能を有する。   FIG. 1 is a configuration diagram of a processing apparatus 10 according to an embodiment of the present invention. The processing device 10 includes an integrated circuit device 26, a compiling unit 30, a setting data generating unit 32, and a storage unit 34. The integrated circuit device 26 has a function that makes it possible to reconfigure the circuit configuration.

集積回路装置26は1チップとして構成され、リコンフィギュラブル回路12、設定部14、制御部18、内部状態保持回路20、出力回路22、第1切替回路23、第2切替回路25、メモリ部27、第3切替回路28および経路部24、29を備える。   The integrated circuit device 26 is configured as one chip, and includes a reconfigurable circuit 12, a setting unit 14, a control unit 18, an internal state holding circuit 20, an output circuit 22, a first switching circuit 23, a second switching circuit 25, and a memory unit 27. The third switching circuit 28 and the path portions 24 and 29 are provided.

リコンフィギュラブル回路12は、パイプライン構成を有し、論理回路の設定を変更することにより、機能の変更を可能とする。本実施例に係るリコンフィギュラブル回路12は、複数のスレッドを同時に実行することができる。スレッドは、リコンフィギュラブル回路12に実行させる処理であり、各スレッドの処理は、それ自体で完結する。複数のスレッドは、互いに独立して実行され、スレッド同士の間でデータの受け渡しがあるものであってもよい。処理装置10は、複数種類の回路のコンフィギュレーションをリコンフィギュラブル回路12上で同時に実現できる。   The reconfigurable circuit 12 has a pipeline configuration, and the function can be changed by changing the setting of the logic circuit. The reconfigurable circuit 12 according to the present embodiment can simultaneously execute a plurality of threads. A thread is a process that is executed by the reconfigurable circuit 12, and the process of each thread is completed by itself. The plurality of threads may be executed independently of each other, and there may be data passing between the threads. The processing apparatus 10 can simultaneously implement a plurality of types of circuit configurations on the reconfigurable circuit 12.

設定部14は、第1回路設定部14a、第2回路設定部14b、第3回路設定部14c、および回路処理制御部16を有し、リコンフィギュラブル回路12に所期の回路を構成するための設定データ40を供給する。具体的には、第1回路設定部14a、第2回路設定部14b、第3回路設定部14cは、それぞれ異なるスレッドを実行するための設定データ40を回路処理制御部16に供給する。回路処理制御部16は、第1回路設定部14a、第2回路設定部14b、第3回路設定部14cから送られてきた設定データ40を、リコンフィギュラブル回路12のパイプラインの各段に相当するリコンフィギュラブルユニットに所定の順序で供給する。これにより、リコンフィギュラブル回路12の各段には、複数種類の回路の一部がそれぞれ構成されることになり、マルチスレッド処理機能が実現される。   The setting unit 14 includes a first circuit setting unit 14 a, a second circuit setting unit 14 b, a third circuit setting unit 14 c, and a circuit processing control unit 16, and configures an intended circuit in the reconfigurable circuit 12. The setting data 40 is supplied. Specifically, the first circuit setting unit 14a, the second circuit setting unit 14b, and the third circuit setting unit 14c supply the circuit processing control unit 16 with setting data 40 for executing different threads. The circuit processing control unit 16 corresponds to each stage of the pipeline of the reconfigurable circuit 12 with the setting data 40 sent from the first circuit setting unit 14a, the second circuit setting unit 14b, and the third circuit setting unit 14c. The reconfigurable unit is supplied in a predetermined order. Thereby, a part of a plurality of types of circuits is configured in each stage of the reconfigurable circuit 12, and a multithread processing function is realized.

経路部24、29は、フィードバックパスとして機能し、リコンフィギュラブル回路12の出力を、第3切替回路28に出力する。設定部14は、プログラムカウンタのカウント値に基づいて記憶したデータを出力するコマンドメモリとして構成されてもよい。この場合、制御部18がプログラムカウンタの出力を制御する。この意味において、設定データ40はコマンドデータと呼ばれてもよい。   The path units 24 and 29 function as a feedback path and output the output of the reconfigurable circuit 12 to the third switching circuit 28. The setting unit 14 may be configured as a command memory that outputs stored data based on the count value of the program counter. In this case, the control unit 18 controls the output of the program counter. In this sense, the setting data 40 may be called command data.

メモリ部27は、制御部18からの指示に基づきリコンフィギュラブル回路12から出力されるデータ信号を格納するための記憶領域を有する。メモリ部27はリコンフィギュラブル回路12内に設けられてもよく、またリコンフィギュラブル回路12の外部に設けられていてもよい。   The memory unit 27 has a storage area for storing a data signal output from the reconfigurable circuit 12 based on an instruction from the control unit 18. The memory unit 27 may be provided in the reconfigurable circuit 12 or may be provided outside the reconfigurable circuit 12.

メモリ部27は複数のRAMなどから構成される。複数のスレッドの実行中、それぞれのRAMは、リコンフィギュラブル回路12上で実行されるスレッドに割り当てられる。例えばスレッドA、スレッドB、スレッドCの3つのスレッドが同時に実行される場合、1番目のRAMはスレッドAに、2番目のRAMはスレッドBに、3番目のRAMはスレッドCに割り当てられる。RAMに対するスレッドの割当ては、制御部18により制御される。   The memory unit 27 includes a plurality of RAMs. During execution of a plurality of threads, each RAM is allocated to a thread executed on the reconfigurable circuit 12. For example, when three threads of thread A, thread B, and thread C are executed simultaneously, the first RAM is assigned to thread A, the second RAM is assigned to thread B, and the third RAM is assigned to thread C. The assignment of threads to the RAM is controlled by the control unit 18.

特に、スレッド間にデータの受け渡しがある場合には、制御部18は、所定のタイミングでRAMに対するスレッドの割当てを変更することが好ましい。例えば、スレッドAの処理結果をスレッドBが使用する場合、スレッドAの処理が終了して、その処理結果が格納された1番目のRAMは、続くタイミングで、制御部18によりスレッドBを割り当てられる。これにより、スレッドBは、スレッドAの処理結果を1番目のRAMから2番目のRAMにコピーする必要もなく、1番目のRAMに格納されたスレッドAの処理結果を効率的に利用できる。メモリ部27の前段には第1切替回路23が設けられ、後段には第2切替回路25が設けられる。   In particular, when there is data exchange between threads, the control unit 18 preferably changes the allocation of threads to the RAM at a predetermined timing. For example, when the processing result of the thread A is used by the thread B, the processing of the thread A is finished, and the first RAM storing the processing result is assigned the thread B by the control unit 18 at a subsequent timing. . Thereby, the thread B can efficiently use the processing result of the thread A stored in the first RAM without copying the processing result of the thread A from the first RAM to the second RAM. A first switching circuit 23 is provided in the previous stage of the memory unit 27, and a second switching circuit 25 is provided in the subsequent stage.

第1切替回路23は、リコンフィギュラブル回路12からの出力をスレッドに応じて選択して、メモリ部27のRAMに供給する。これにより、RAMに対するスレッドの割当てが設定されることになる。したがって、第1切替回路23におけるスイッチ設定に変更がなければ、あるRAMには、同じスレッドからのデータが格納されることになる。第2切替回路25は、複数のRAMからの出力の1つをスレッドに応じて選択して、リコンフィギュラブル回路12の入力にフィードバックさせる。   The first switching circuit 23 selects the output from the reconfigurable circuit 12 according to the thread and supplies it to the RAM of the memory unit 27. As a result, thread allocation to the RAM is set. Accordingly, if the switch setting in the first switching circuit 23 is not changed, data from the same thread is stored in a certain RAM. The second switching circuit 25 selects one of the outputs from the plurality of RAMs according to the thread and feeds it back to the input of the reconfigurable circuit 12.

第2切替回路25は複数の第2切替部を有して構成され、それぞれの第2切替部は、1つのスレッドについてのデータを選択するように設定される。メモリ部27に格納されたデータ信号は、第2切替回路25におけるスイッチ設定に基づいて、経路部29を通じてリコンフィギュラブル回路12への入力として伝達される。第1切替回路23、第2切替回路25、メモリ部27の動作は、制御部18により制御される。   The second switching circuit 25 includes a plurality of second switching units, and each second switching unit is set to select data for one thread. The data signal stored in the memory unit 27 is transmitted as an input to the reconfigurable circuit 12 through the path unit 29 based on the switch setting in the second switching circuit 25. The operations of the first switching circuit 23, the second switching circuit 25, and the memory unit 27 are controlled by the control unit 18.

リコンフィギュラブル回路12への入力は、経路部24、経路部29の2系統存在するが、経路部24は、メモリ部27を介さないために高速なフィードバック処理を可能とする。特にメモリ部27が低速で動作処理する場合には、経路部24は経路部29よりもさらに高速なフィードバック処理を可能とする。   There are two inputs to the reconfigurable circuit 12, that is, the route unit 24 and the route unit 29, but the route unit 24 does not go through the memory unit 27, so that high-speed feedback processing is possible. In particular, when the memory unit 27 performs an operation process at a low speed, the path unit 24 enables feedback processing at a higher speed than the path unit 29.

第3切替回路28は、回路処理制御部16からの指示信号に応答して、外部からの入力信号および経路部24、29からの入力信号を選択的にリコンフィギュラブル回路12に出力する。具体的には、設定データ40に基づいて決定される所定のタイミングで、回路処理制御部16から切替指示がなされる。   In response to the instruction signal from the circuit processing control unit 16, the third switching circuit 28 selectively outputs an external input signal and an input signal from the path units 24 and 29 to the reconfigurable circuit 12. Specifically, a switching instruction is issued from the circuit processing control unit 16 at a predetermined timing determined based on the setting data 40.

内部状態保持回路20および出力回路22は、リコンフィギュラブル回路12の出力を受けて、たとえばデータフリップフロップ(D−FF)などの順序回路として構成される。内部状態保持回路20は経路部24に接続されている。メモリ部27は、経路部29と接続されている。リコンフィギュラブル回路12は、組合せ回路と、フリップフロップ回路で構成され、パイプライン動作を実現する。   The internal state holding circuit 20 and the output circuit 22 are configured as sequential circuits such as a data flip-flop (D-FF), for example, receiving the output of the reconfigurable circuit 12. The internal state holding circuit 20 is connected to the path unit 24. The memory unit 27 is connected to the path unit 29. The reconfigurable circuit 12 includes a combinational circuit and a flip-flop circuit, and realizes a pipeline operation.

リコンフィギュラブル回路12は、機能の変更が可能な論理回路を有して構成される。具体的にリコンフィギュラブル回路12は、複数の演算機能を選択的に実行可能な論理回路を複数段に配列させた構成を備え、さらに前段の論理回路列の出力と後段の論理回路列の入力との接続関係を設定可能な接続部を備える。   The reconfigurable circuit 12 includes a logic circuit whose function can be changed. Specifically, the reconfigurable circuit 12 includes a configuration in which logic circuits capable of selectively executing a plurality of arithmetic functions are arranged in a plurality of stages, and further includes an output of a preceding logic circuit string and an input of a subsequent logic circuit string. The connection part which can set the connection relationship with is provided.

この接続部は、前段の論理回路列の出力すなわち内部状態を保持する状態保持回路(以下、FF回路とも呼ぶ)の機能も備える。複数の論理回路は、マトリックス状に配置される。各論理回路の機能と、論理回路間の接続関係は、設定部14により供給される設定データ40に基づいて設定される。設定データ40は、以下の手順で生成される。   This connection unit also has a function of a state holding circuit (hereinafter also referred to as FF circuit) that holds the output of the preceding logic circuit row, that is, the internal state. The plurality of logic circuits are arranged in a matrix. The function of each logic circuit and the connection relationship between the logic circuits are set based on setting data 40 supplied by the setting unit 14. The setting data 40 is generated by the following procedure.

集積回路装置26により実現されるべきプログラム36が、記憶部34に保持されている。プログラム36は、回路における処理の動作を記述した動作記述を示し、信号処理回路または信号処理アルゴリズムなどをC言語などの高級言語で記述したものである。   A program 36 to be realized by the integrated circuit device 26 is held in the storage unit 34. The program 36 shows an operation description describing the operation of processing in the circuit, and describes a signal processing circuit or a signal processing algorithm in a high-level language such as C language.

コンパイル部30は、記憶部34に格納されたプログラム36をコンパイルし、データフローグラフ(DFG)38に変換して記憶部34に格納する。データフローグラフ38は、回路における演算間の実行順序の依存関係を表現し、入力変数および定数の演算の流れをグラフ構造で示したものである。一般に、データフローグラフ38は、上から下に向かって演算が進むように作成される。   The compiling unit 30 compiles the program 36 stored in the storage unit 34, converts it into a data flow graph (DFG) 38, and stores it in the storage unit 34. The data flow graph 38 expresses the dependency of execution order between operations in a circuit, and shows the flow of operations of input variables and constants in a graph structure. In general, the data flow graph 38 is created so that the calculation proceeds from top to bottom.

設定データ生成部32は、データフローグラフ38から設定データ40を生成する。設定データ40は、データフローグラフ38をリコンフィギュラブル回路12にマッピングするためのデータであり、リコンフィギュラブル回路12における論理回路の機能や論理回路間の接続関係を定める。設定データ生成部32は、1つの生成すべきターゲット回路を分割してできる複数の分割回路の設定データ40を生成する。   The setting data generation unit 32 generates setting data 40 from the data flow graph 38. The setting data 40 is data for mapping the data flow graph 38 to the reconfigurable circuit 12 and determines the function of the logic circuit in the reconfigurable circuit 12 and the connection relationship between the logic circuits. The setting data generation unit 32 generates setting data 40 for a plurality of divided circuits that are obtained by dividing one target circuit to be generated.

設定データ生成部32は、リコンフィギュラブル回路12における論理回路の配列構造とデータフローグラフ38によって、ターゲット回路の分割方法を定める。なお、リコンフィギュラブル回路12でパイプライン処理を行うことが予め分かっている場合には、リコンフィギュラブル回路12におけるリコンフィギュラブルユニットの配列構造に基づいて、ターゲット回路の分割方法を定めてもよい。リコンフィギュラブル回路12の配列構造は、制御部18から設定データ生成部32に伝えられてもよく、また予め記憶部34に記録されていてもよい。また、制御部18が、ターゲット回路の分割方法を設定データ生成部32に指示してもよい。   The setting data generation unit 32 determines the division method of the target circuit based on the logic circuit arrangement structure and the data flow graph 38 in the reconfigurable circuit 12. If it is known in advance that pipeline processing is performed in the reconfigurable circuit 12, a method for dividing the target circuit may be determined based on the arrangement structure of the reconfigurable units in the reconfigurable circuit 12. . The arrangement structure of the reconfigurable circuit 12 may be transmitted from the control unit 18 to the setting data generation unit 32 or may be recorded in the storage unit 34 in advance. In addition, the control unit 18 may instruct the setting data generation unit 32 about the division method of the target circuit.

以上の手順を実行することにより、記憶部34は、リコンフィギュラブル回路12を所期の回路として構成するための複数の設定データ40を記憶する。複数の設定データ40は、ターゲット回路を分割した複数の分割回路をそれぞれ表現したものである。このように、リコンフィギュラブル回路12の回路規模に応じて、生成すべきターゲット回路の設定データ40を生成することにより、汎用性の高い処理装置10を実現することが可能となる。別の視点からみると、実施例の処理装置10によれば、回路規模の小さいリコンフィギュラブル回路12を用いて、所望の回路を再構成することが可能となる。   By executing the above procedure, the storage unit 34 stores a plurality of setting data 40 for configuring the reconfigurable circuit 12 as a desired circuit. The plurality of setting data 40 represents a plurality of divided circuits obtained by dividing the target circuit. As described above, by generating the setting data 40 of the target circuit to be generated according to the circuit scale of the reconfigurable circuit 12, it is possible to realize the processing apparatus 10 with high versatility. From another point of view, according to the processing apparatus 10 of the embodiment, it is possible to reconfigure a desired circuit using the reconfigurable circuit 12 having a small circuit scale.

図2は、リコンフィギュラブル回路12の構成を示す。リコンフィギュラブル回路12は、複数の演算機能を選択的に実行可能な論理回路50より構成される論理回路列を複数備える。具体的に、リコンフィギュラブル回路12は、論理回路列の多段配列と、各段に設けられた接続部52を備えて構成される。   FIG. 2 shows the configuration of the reconfigurable circuit 12. The reconfigurable circuit 12 includes a plurality of logic circuit strings each including a logic circuit 50 that can selectively execute a plurality of arithmetic functions. Specifically, the reconfigurable circuit 12 is configured to include a multi-stage arrangement of logic circuit arrays and a connection unit 52 provided in each stage.

接続部52は、前段の論理回路の出力と後段の論理回路の入力の任意の接続関係あるいは予め定められた接続関係の組合せの中から選択された接続関係を設定することができる。また接続部52は、前段の論理回路の出力信号を保持することができる。リコンフィギュラブル回路12では、論理回路の多段配列構造により、上段から下段に向かって演算が進められる。   The connection unit 52 can set an arbitrary connection relationship between the output of the preceding logic circuit and the input of the subsequent logic circuit, or a connection relationship selected from a predetermined combination of connection relationships. The connection unit 52 can hold the output signal of the preceding logic circuit. In the reconfigurable circuit 12, the operation proceeds from the upper stage to the lower stage due to the multistage arrangement structure of the logic circuits.

リコンフィギュラブル回路12は、論理回路50としてALU(Arithmetic Logic Unit)を有している。ALUは、複数種類の多ビット演算を選択的に実行可能な算術論理回路であって、論理和、論理積、ビットシフトなどの複数種類の多ビット演算を設定により選択的に実行できる。各ALUは、複数の演算機能を設定するためのセレクタを有して構成されている。図示の例では、ALUが、2つの入力端子と2つの出力端子を有して構成される。   The reconfigurable circuit 12 has an ALU (Arithmetic Logic Unit) as the logic circuit 50. The ALU is an arithmetic logic circuit capable of selectively executing a plurality of types of multi-bit operations, and can selectively execute a plurality of types of multi-bit operations such as logical sum, logical product, and bit shift by setting. Each ALU has a selector for setting a plurality of arithmetic functions. In the illustrated example, the ALU has two input terminals and two output terminals.

図示のように、リコンフィギュラブル回路12は、縦方向にX個、横方向にY個のALUが配置されたX段Y列のALUアレイとして構成される。第1段のALU11、ALU12、・・・、ALU1Yには、入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第1段の接続部52に設定された接続にしたがって、第2段のALU21、ALU22、・・・、ALU2Yに入力される。   As illustrated, the reconfigurable circuit 12 is configured as an X-stage Y-column ALU array in which X ALUs in the vertical direction and Y ALUs in the horizontal direction are arranged. Input variables and constants are input to the first-stage ALU11, ALU12,..., ALU1Y, and a set predetermined calculation is performed. The output of the calculation result is input to the second-stage ALU 21, ALU 22,..., ALU 2Y according to the connection set in the first-stage connection unit 52.

第1段の接続部52においては、第1段のALU列の出力と第2段のALU列の入力の間で任意の接続関係、あるいは予め定められた接続関係の組合せの中から選択された接続関係を実現できるように結線が構成されており、設定により所期の結線が有効となる。以下、最終段である第X段の接続部52まで同様の構成である。接続部52はFF回路としての機能も有しており、最終段の接続部52は、図1に示す内部状態保持回路20として機能してもよい。   In the first stage connection section 52, an arbitrary connection relationship between the output of the first ALU column and the input of the second ALU column or a combination of predetermined connection relationships is selected. The connection is configured so that the connection relationship can be realized, and the intended connection is enabled by setting. Hereinafter, the configuration is the same up to the connection part 52 of the Xth stage which is the final stage. The connection unit 52 also has a function as an FF circuit, and the final-stage connection unit 52 may function as the internal state holding circuit 20 illustrated in FIG.

なお、図2のリコンフィギュラブル回路12においては、接続部52が、ALU列と交互に1段ずつ設けられた構成を示している。この接続部52を各ALU列の下段に配置することにより、リコンフィギュラブル回路12は、1段ずつのALU列から構成されるX段のリコンフィギュラブルユニットに分割されることになる。   Note that the reconfigurable circuit 12 of FIG. 2 shows a configuration in which the connection units 52 are provided one by one alternately with the ALU column. By disposing the connection unit 52 at the lower stage of each ALU column, the reconfigurable circuit 12 is divided into X-stage reconfigurable units each including one ALU column.

具体的に、1段のリコンフィギュラブルユニットは、1段のALU列と1段の接続部52で構成される。この分割は、接続部52に含まれるFF回路にしたがうものであり、例えば2段のALU列毎に接続部52を設け、2段のALU列の間を、FF回路を有しない接続部で接続する場合には、2段ずつのALU列で構成されるX/2段のリコンフィギュラブルユニットに分割されることになる。それ以外にも、FF回路を所定段のALU列毎に設けることにより、所望段のリコンフィギュラブルユニットを構成することができる。   Specifically, the one-stage reconfigurable unit includes one-stage ALU row and one-stage connection unit 52. This division is in accordance with the FF circuit included in the connection unit 52. For example, a connection unit 52 is provided for each two-stage ALU column, and a connection unit having no FF circuit is connected between two ALU columns. In this case, it is divided into X / 2-stage reconfigurable units each composed of two ALU rows. In addition, by providing an FF circuit for each ALU column of a predetermined stage, a reconfigurable unit of a desired stage can be configured.

回路のコンフィギュレーションは1クロックで行われる。具体的に、回路処理制御部16が1クロック毎に設定データをリコンフィギュラブル回路12にマッピングする。各ALU列の出力は、後段の接続部52に保持される。複数スレッドの実行中、接続部52のFF回路は、前段の論理回路から出力されるデータを格納し、次のクロックで、前段の論理回路が実行していたスレッドと同一のスレッドを実行する後段の論理回路に、格納したデータを供給する。   Circuit configuration is performed in one clock. Specifically, the circuit processing control unit 16 maps the setting data to the reconfigurable circuit 12 every clock. The output of each ALU column is held in the connection unit 52 at the subsequent stage. During the execution of a plurality of threads, the FF circuit of the connection unit 52 stores the data output from the preceding logic circuit, and executes the same thread as the thread executed by the preceding logic circuit at the next clock. The stored data is supplied to the logic circuit.

このように、1つのスレッドの処理は、クロック毎に1つ下段のALU列において実行されることになる。最終段で処理されると、また最上段のALU列からクロック毎に1段ずつ下がっていく。これにより、マルチスレッド処理を実行でき、効率的な回路コンフィギュレーションを実現できる。   In this way, the processing of one thread is executed in the ALU row at the lower stage for each clock. When processing is performed at the final stage, it is lowered one stage at a time from the uppermost ALU column. Thereby, multi-thread processing can be executed, and an efficient circuit configuration can be realized.

図3は、リコンフィギュラブル回路の構成の別の例を示す。図3に示すリコンフィギュラブル回路12aは、図2に示すリコンフィギュラブル回路12の機能をさらに拡張している。図3に示すリコンフィギュラブル回路12aにおいて、接続部52aは、図2の接続部52の機能に加えて、外部から入力される変数や定数を、所期のALUに供給する機能を有している。   FIG. 3 shows another example of the configuration of the reconfigurable circuit. The reconfigurable circuit 12a shown in FIG. 3 further expands the function of the reconfigurable circuit 12 shown in FIG. In the reconfigurable circuit 12a shown in FIG. 3, in addition to the function of the connection unit 52 of FIG. 2, the connection unit 52a has a function of supplying variables and constants input from the outside to the intended ALU. Yes.

また、接続部52aは、前段のALUの演算結果を外部に直接出力することもできる。この構成により、図2に示されるリコンフィギュラブル回路12の構成よりも多様な組合せ回路を構成することが可能となり、設計の自由度が向上する。   The connection unit 52a can also directly output the calculation result of the previous ALU to the outside. With this configuration, it is possible to configure various combinational circuits as compared with the configuration of the reconfigurable circuit 12 shown in FIG. 2, and the degree of freedom in design is improved.

図4は、データフローグラフ38の例を示す図である。データフローグラフ38においては、入力される変数や定数の演算の流れが段階的にグラフ構造で表現されている。図中、演算子は丸印で示されている。設定データ生成部32は、このデータフローグラフ38をリコンフィギュラブル回路12にマッピングするための設定データ40を生成する。   FIG. 4 is a diagram illustrating an example of the data flow graph 38. In the data flow graph 38, the flow of operations of input variables and constants is expressed step by step in a graph structure. In the figure, operators are indicated by circles. The setting data generation unit 32 generates setting data 40 for mapping the data flow graph 38 to the reconfigurable circuit 12.

特にデータフローグラフ38をリコンフィギュラブル回路12にマッピングしきれない場合に、データフローグラフ38を複数の領域に分割し、分割回路の設定データ40を生成する。実施例では、リコンフィギュラブル回路12上で複数のスレッドが実行されるが、各スレッドは、リコンフィギュラブル回路12におけるリコンフィギュラブルユニットにてそれぞれ実行されることになる。   In particular, when the data flow graph 38 cannot be mapped to the reconfigurable circuit 12, the data flow graph 38 is divided into a plurality of regions, and setting data 40 for the divided circuit is generated. In the embodiment, a plurality of threads are executed on the reconfigurable circuit 12, but each thread is executed by a reconfigurable unit in the reconfigurable circuit 12.

したがって、設定データ生成部32は、リコンフィギュラブルユニットの回路規模に応じて、データフローグラフ38を複数の領域に分割し、分割回路の設定データ40を生成する。データフローグラフ38による演算の流れを回路上で実現するべく、設定データ40は、演算機能を割り当てる論理回路を特定し、また論理回路間の接続関係を定め、さらに入力変数や入力定数などを定義したデータとなる。したがって、設定データ40は、各論理回路50の機能を選択するセレクタに供給する選択情報、接続部52の結線を設定する接続情報、必要な変数データや定数データなどを含んで構成される。   Therefore, the setting data generation unit 32 divides the data flow graph 38 into a plurality of regions according to the circuit scale of the reconfigurable unit, and generates setting data 40 for the divided circuit. In order to realize the flow of calculation by the data flow graph 38 on the circuit, the setting data 40 specifies the logic circuit to which the calculation function is assigned, defines the connection relationship between the logic circuits, and further defines input variables, input constants, and the like. Data. Therefore, the setting data 40 includes selection information supplied to a selector that selects the function of each logic circuit 50, connection information for setting the connection of the connection unit 52, necessary variable data, constant data, and the like.

図5は、1つの生成すべきターゲット回路42を分割してできる複数の回路の設定データ40について説明するための図である。このターゲット回路42には、独立した動作を実行する3つのターゲット回路A、ターゲット回路B、ターゲット回路Cが含まれている。ターゲット回路A、ターゲット回路B、ターゲット回路Cは、それぞれ独立したスレッドを構成し、リコンフィギュラブルユニットの回路規模に合わせて分割される。   FIG. 5 is a diagram for explaining setting data 40 of a plurality of circuits obtained by dividing one target circuit 42 to be generated. The target circuit 42 includes three target circuits A, B, and C that execute independent operations. The target circuit A, the target circuit B, and the target circuit C constitute independent threads, and are divided according to the circuit scale of the reconfigurable unit.

この例では、それぞれのターゲット回路が、3つの分割回路に分割されている。すなわち、ターゲット回路Aは、分割回路A_0、分割回路A_1、分割回路A_2に分割され、ターゲット回路Bは、分割回路B_0、分割回路B_1、分割回路B_2に分割され、ターゲット回路Cは、分割回路C_0、分割回路C_1、分割回路C_2に分割される。設定データ生成部32は、各分割回路に対して設定データ40を生成する。   In this example, each target circuit is divided into three divided circuits. That is, the target circuit A is divided into a divided circuit A_0, a divided circuit A_1, and a divided circuit A_2, the target circuit B is divided into a divided circuit B_0, a divided circuit B_1, and a divided circuit B_2, and the target circuit C is divided into a divided circuit C_0. And divided circuit C_1 and divided circuit C_2. The setting data generation unit 32 generates setting data 40 for each divided circuit.

各ターゲット回路は、データフローグラフ38における演算の流れにしたがって分割される。データフローグラフ38において、上から下に向かう方向に演算の流れが表現される場合、そのデータフローグラフ38を上から所定の間隔で切り取り、その切り取った部分を分割回路として設定する。流れにしたがって切り取る間隔は、リコンフィギュラブル回路12におけるリコンフィギュラブルユニットの段数以下に定められる。ターゲット回路42は、データフローグラフ38の横方向で分割されてもよい。横方向に分割する幅は、リコンフィギュラブル回路12における論理回路の1段当たりの個数以下に定められる。   Each target circuit is divided according to the flow of calculation in the data flow graph 38. In the data flow graph 38, when the calculation flow is expressed in a direction from the top to the bottom, the data flow graph 38 is cut from the top at a predetermined interval, and the cut portion is set as a dividing circuit. The interval to be cut according to the flow is determined to be equal to or less than the number of stages of the reconfigurable unit in the reconfigurable circuit 12. The target circuit 42 may be divided in the horizontal direction of the data flow graph 38. The width to be divided in the horizontal direction is determined to be equal to or less than the number of logic circuits in the reconfigurable circuit 12 per stage.

例えば、リコンフィギュラブル回路12が3段のALU列で構成され、各段に接続部52が設けられている場合、リコンフィギュラブルユニットには、1段のALU列が含まれることになる。このとき、各ターゲット回路の分割回路は、1段のデータフローグラフ分を表現することになる。   For example, when the reconfigurable circuit 12 is configured by three stages of ALU columns and the connection unit 52 is provided at each stage, the reconfigurable unit includes one stage of ALU columns. At this time, the division circuit of each target circuit represents one stage of data flow graph.

したがって、図5の例では、各ターゲット回路が3段のデータフローグラフ38により表現されていることになる。実際のターゲット回路の回路規模は、数十以上の段数のデータフローグラフ38で表現されることが多いが、本明細書では説明の簡便のため、図5に示す分割回路が設定された場合について説明する。   Therefore, in the example of FIG. 5, each target circuit is represented by a three-stage data flow graph 38. The actual circuit scale of the target circuit is often represented by a data flow graph 38 having several tens or more stages. However, in the present specification, for convenience of explanation, a case where the divided circuit shown in FIG. explain.

図6は、リコンフィギュラブル回路上に構成するターゲット回路Aの処理の流れを示す図である。リコンフィギュラブル回路12では、1回のマッピング処理を1クロックで実行することができる。ここでは、3段のALU列(リコンフィギュラブルユニット)で構成されるリコンフィギュラブル回路12を想定する。   FIG. 6 is a diagram illustrating a processing flow of the target circuit A configured on the reconfigurable circuit. In the reconfigurable circuit 12, one mapping process can be executed in one clock. Here, a reconfigurable circuit 12 composed of three stages of ALU rows (reconfigurable units) is assumed.

1クロック目に、1段目のALU列に分割回路A_0が生成され、1段目の接続部52におけるFF回路が、分割回路A_0から出力されるデータを格納する。2クロック目に、2段目のALU列に分割回路A_1が生成され、1段目の接続部52におけるFF回路が、1クロック目に格納したデータを、生成された分割回路A_1に供給する。   At the first clock, the dividing circuit A_0 is generated in the first-stage ALU column, and the FF circuit in the first-stage connection unit 52 stores the data output from the dividing circuit A_0. At the second clock, the dividing circuit A_1 is generated in the second-stage ALU column, and the FF circuit in the first-stage connection unit 52 supplies the data stored at the first clock to the generated dividing circuit A_1.

3クロック目に、3段目のALU列に分割回路A_2が生成され、2段目の接続部52におけるFF回路が、2クロック目に格納したデータを、生成された分割回路A_2に供給する。実施例では、ターゲット回路Aが3つの分割回路により構成されているため、分割回路A_2がデータを出力することで、ターゲット回路Aの処理というスレッドが完了する。なお、ターゲット回路Aが4つ以上の分割回路により構成されている場合には、分割回路A_2の出力がフィードバックされて、1段目のALU列に供給されることになる。   At the third clock, the dividing circuit A_2 is generated in the third-stage ALU column, and the FF circuit in the second-stage connection unit 52 supplies the data stored at the second clock to the generated dividing circuit A_2. In the embodiment, since the target circuit A is composed of three divided circuits, the divided circuit A_2 outputs data, and the thread of processing of the target circuit A is completed. When the target circuit A is composed of four or more divided circuits, the output of the divided circuit A_2 is fed back and supplied to the first ALU column.

このように、1つのスレッドは、リコンフィギュラブル回路12の各段に構成されたリコンフィギュラブルユニット毎に処理される。図6からも明らかなように、リコンフィギュラブル回路12を1つのスレッドの処理のみに用いると、動作しないALU列が生じる。そこで、本実施例では、リコンフィギュラブル回路12を有効に活用するために、空いたALU列で別のスレッドを実行させるようにする。これにより、マルチスレッド処理を実現できる。   Thus, one thread is processed for each reconfigurable unit configured in each stage of the reconfigurable circuit 12. As apparent from FIG. 6, when the reconfigurable circuit 12 is used only for processing of one thread, an ALU sequence that does not operate is generated. Therefore, in this embodiment, in order to use the reconfigurable circuit 12 effectively, another thread is executed in an empty ALU string. Thereby, multi-thread processing can be realized.

図7は、リコンフィギュラブル回路上で実現するマルチスレッド動作の流れを示す図である。各スレッドは、互いに独立して実行される。リコンフィギュラブル回路12におけるリコンフィギュラブルユニット間のデータの受け渡しについては、図6に関して説明したとおりである。   FIG. 7 is a diagram illustrating a flow of a multi-thread operation realized on the reconfigurable circuit. Each thread is executed independently of each other. The data transfer between the reconfigurable units in the reconfigurable circuit 12 is as described with reference to FIG.

1クロック目に、リコンフィギュラブル回路12の1段目のALU列に分割回路A_0が生成される。2クロック目に、1段目のALU列に分割回路B_0が生成され、2段目のALU列に分割回路A_1が生成される。3クロック目に、1段目のALU列に分割回路C_0が生成され、2段目のALU列に分割回路B_1が生成され、3段目のALU列に分割回路A_2が生成される。   At the first clock, the dividing circuit A_0 is generated in the first ALU column of the reconfigurable circuit 12. At the second clock, the dividing circuit B_0 is generated in the first ALU column, and the dividing circuit A_1 is generated in the second ALU column. At the third clock, the dividing circuit C_0 is generated in the first ALU column, the dividing circuit B_1 is generated in the second ALU column, and the dividing circuit A_2 is generated in the third ALU column.

3クロック目で、ターゲット回路Aの処理、すなわちスレッドAの実行は完了する。4クロック目に、1段目のALU列に分割回路A_0が生成され、2段目のALU列に分割回路C_1が生成され、3段目のALU列に分割回路B_2が生成される。4クロック目で、ターゲット回路Bの処理、すなわちスレッドBの実行は完了し、新たなスレッドAが実行される。   At the third clock, the processing of the target circuit A, that is, the execution of the thread A is completed. At the fourth clock, the dividing circuit A_0 is generated in the first ALU column, the dividing circuit C_1 is generated in the second ALU column, and the dividing circuit B_2 is generated in the third ALU column. At the fourth clock, the processing of the target circuit B, that is, the execution of the thread B is completed, and a new thread A is executed.

5クロック目に、1段目のALU列に分割回路B_0が生成され、2段目のALU列に分割回路A_1が生成され、3段目のALU列に分割回路C_2が生成される。5クロック目で、ターゲット回路Cの処理、すなわちスレッドCの実行は完了し、新たなスレッドBが実行される。6クロック目に、1段目のALU列に分割回路C_0が生成され、2段目のALU列に分割回路B_1が生成され、3段目のALU列に分割回路A_2が生成される。6クロック目で、スレッドAの実行は完了し、新たなスレッドCが実行される。以後、同様に各スレッドがクロック毎に処理される。   At the fifth clock, the dividing circuit B_0 is generated in the first ALU column, the dividing circuit A_1 is generated in the second ALU column, and the dividing circuit C_2 is generated in the third ALU column. At the fifth clock, the processing of the target circuit C, that is, the execution of the thread C is completed, and a new thread B is executed. At the sixth clock, the dividing circuit C_0 is generated in the first ALU column, the dividing circuit B_1 is generated in the second ALU column, and the dividing circuit A_2 is generated in the third ALU column. At the sixth clock, the execution of the thread A is completed, and a new thread C is executed. Thereafter, each thread is similarly processed for each clock.

このように、リコンフィギュラブル回路12が複数のスレッドを同時に実行することで、リコンフィギュラブル回路12のハード資源を有効に活用することができるとともに、もとのターゲット回路42全体の処理速度を高速化できる。   As described above, the reconfigurable circuit 12 executes a plurality of threads at the same time, so that the hardware resources of the reconfigurable circuit 12 can be effectively used and the processing speed of the original target circuit 42 as a whole can be increased. Can be

図8は、集積回路装置26の詳細な構成を示す。図8は、主としてマルチスレッド処理を実現するための構成、具体的にはリコンフィギュラブル回路12の入出力に関与する構成を示す。ここでは、図3に示すような各段の接続部52aからの途中出力およびメモリ部27からの途中入力が可能なリコンフィギュラブル回路12を示している。図8では、説明の便宜上、接続部の符号は、「52」を利用する。図1、図3および図4の構成と同一の符号を付した構成は、同一の構造および機能を有している。   FIG. 8 shows a detailed configuration of the integrated circuit device 26. FIG. 8 shows a configuration mainly for realizing multithread processing, specifically, a configuration related to input / output of the reconfigurable circuit 12. Here, the reconfigurable circuit 12 is shown in which halfway output from the connection parts 52a of each stage and halfway input from the memory part 27 as shown in FIG. In FIG. 8, for convenience of explanation, “52” is used as the reference numeral of the connection unit. The configurations denoted by the same reference numerals as those in FIGS. 1, 3 and 4 have the same structure and function.

メモリ部27は、複数のRAM27a、RAM27b、RAM27cを有する。各RAMは、リコンフィギュラブル回路12からの出力を記憶する。本実施例では、各RAMは、リコンフィギュラブル回路12上で実行されるスレッドに割り当てられる。   The memory unit 27 includes a plurality of RAMs 27a, 27b, and 27c. Each RAM stores an output from the reconfigurable circuit 12. In this embodiment, each RAM is assigned to a thread executed on the reconfigurable circuit 12.

すなわち、1つのRAMは、1つのスレッドからのデータを記憶し、またそのスレッドの実行に必要なデータをリコンフィギュラブル回路12上のALUに供給する。したがってRAMの個数は、少なくとも同時に実行するスレッドの数だけ存在していることが好ましい。   That is, one RAM stores data from one thread and supplies data necessary for execution of the thread to the ALU on the reconfigurable circuit 12. Therefore, it is preferable that there are as many RAMs as there are threads executed at the same time.

第1切替回路23は、第1切替部23a、第1切替部23b、第1切替部23cを有する。第1切替部23a、23b、23cのそれぞれは、それぞれRAM27a、27b、27cに対応して設けられる。第1切替部23a、23b、23cは、リコンフィギュラブル回路12からの出力をスレッドに応じて選択して、対応するRAM27a、27b、27cに供給する。それぞれの第1切替部は、全段の接続部52の出力線と接続されている。   The first switching circuit 23 includes a first switching unit 23a, a first switching unit 23b, and a first switching unit 23c. The first switching units 23a, 23b, and 23c are provided corresponding to the RAMs 27a, 27b, and 27c, respectively. The first switching units 23a, 23b, and 23c select the output from the reconfigurable circuit 12 according to the thread, and supply the selected RAM 27a, 27b, and 27c to the corresponding RAM 27a, 27b, and 27c. Each first switching unit is connected to an output line of the connection unit 52 in all stages.

同時実行されるスレッド数が3つの場合には、1つのスレッドは、いずれかのALU列において実行されることとなり、したがって、各第1切替部は、対応するRAMが割り当てられているスレッドからのデータを選択して、そのRAMに供給する。   When the number of threads to be executed simultaneously is three, one thread is executed in any ALU column, and therefore each first switching unit starts from the thread to which the corresponding RAM is allocated. Data is selected and supplied to the RAM.

第2切替回路25は、第2切替部25a、第2切替部25b、第2切替部25cを有する。第2切替部25a、25b、25cのそれぞれは、スレッドに対応して設けられる。第2切替部25a、25b、25cのそれぞれは、RAM27a、27b、27cからの出力の1つをスレッドに応じて選択して、リコンフィギュラブル回路12の入力に供給する。具体的に、第2切替部25aは、スレッドAの処理に必要なデータを選択して経路部29に出力する。   The second switching circuit 25 includes a second switching unit 25a, a second switching unit 25b, and a second switching unit 25c. Each of the second switching units 25a, 25b, and 25c is provided corresponding to a thread. Each of the second switching units 25a, 25b, and 25c selects one of the outputs from the RAMs 27a, 27b, and 27c according to the thread and supplies the selected one to the input of the reconfigurable circuit 12. Specifically, the second switching unit 25 a selects data necessary for the processing of the thread A and outputs the data to the route unit 29.

同様に、第2切替部25bは、スレッドBの処理に必要なデータを選択して経路部29に出力し、第2切替部25cは、スレッドCの処理に必要なデータを選択して経路部29に出力する。これにより、経路部29から供給されるデータとスレッドとを対応付けることができ、リコンフィギュラブル回路12の入力設定および機能設定を容易にすることができる。   Similarly, the second switching unit 25b selects data necessary for processing of the thread B and outputs the data to the path unit 29, and the second switching unit 25c selects data necessary for processing of the thread C to select the path unit. 29. As a result, the data supplied from the path unit 29 can be associated with the thread, and the input setting and function setting of the reconfigurable circuit 12 can be facilitated.

図9は、スレッド間のデータの受け渡しの一例を示す図である。スレッドAは例えば外部からの入力ないしは設定データによる入力を受けて実行される。スレッドBはスレッドAの処理結果を利用し、スレッドCはスレッドBの処理結果を利用して、自身の処理結果を出力する。各スレッドは独立した処理を行うため、図7に示すようにマルチスレッドで実行することができる。   FIG. 9 is a diagram illustrating an example of data exchange between threads. For example, the thread A is executed in response to input from the outside or input by setting data. The thread B uses the processing result of the thread A, and the thread C uses the processing result of the thread B and outputs its own processing result. Since each thread performs independent processing, it can be executed in multiple threads as shown in FIG.

スレッドに対するRAMの割当てについて考察する。RAMをスレッドに対して任意に割り当てる場合、各RAMに格納されているデータがどのスレッドのデータであるかを判断する必要がある。またデータを読み出すタイミングおよび書き込むタイミングも、適宜判断しなければならない。   Consider the allocation of RAM to threads. When the RAM is arbitrarily assigned to the thread, it is necessary to determine which thread the data stored in each RAM is. In addition, the timing for reading and writing data must be determined appropriately.

各スレッドA、B、Cは、他のスレッドと無関係に独立してリコンフィギュラブル回路12上にマッピングされて動作しているため、RAMをスレッドに対して任意に割り当てたのであれば、データの読出および書込の制御が非常に複雑となる。以上の各構成の動作は、コンパイル部30により実行されてDFGに変換されるものであるが、1つのRAMから複数のデータを同時に読み出すことができないなどの複雑な条件を全て考慮する必要があるため、コンパイルプログラムが複雑化することが確実である。   Since each thread A, B, and C is mapped and operated on the reconfigurable circuit 12 independently of the other threads, if the RAM is arbitrarily assigned to the thread, the data The control of reading and writing becomes very complicated. The operations of the above components are executed by the compiling unit 30 and converted into DFG. However, it is necessary to consider all complicated conditions such as that a plurality of data cannot be read simultaneously from one RAM. Therefore, it is certain that the compilation program becomes complicated.

一方、スレッドAをRAM27aに、スレッドBをRAM27bに、スレッドCをRAM27cに固定的に割り当てた場合を考える。スレッドBの処理でスレッドAの処理結果を利用するため、スレッドBは、スレッドAを割り当てられたRAM27aから処理結果を読み出すことになる。一方、RAM27aには、スレッドAからのデータが書き込まれる。RAM27aのアドレスXにスレッドAの処理結果が格納されている場合、スレッドBが読み出すタイミングが、スレッドAがアドレスXにデータを書き込むタイミングよりも早ければ問題は生じない。   On the other hand, let us consider a case in which the thread A is fixedly assigned to the RAM 27a, the thread B is assigned to the RAM 27b, and the thread C is fixedly assigned to the RAM 27c. Since the processing result of the thread A is used in the processing of the thread B, the thread B reads the processing result from the RAM 27a to which the thread A is assigned. On the other hand, data from the thread A is written in the RAM 27a. When the processing result of the thread A is stored at the address X of the RAM 27a, there is no problem if the timing at which the thread B reads is earlier than the timing at which the thread A writes data to the address X.

しかしながら、スレッドAがデータを書き込むタイミングの方が早ければ、スレッドBは、新たに書き込まれたデータを読み出すことになり、正しい処理結果を読み出すことができない。   However, if the timing at which the thread A writes data is earlier, the thread B will read the newly written data and cannot read the correct processing result.

この場合、スレッドAの処理結果がRAM27aに書き込まれると、一旦スレッドAの動作を中断して、スレッドBで使用するデータをスレッドB用のRAM27bにコピーすればよい。   In this case, when the processing result of the thread A is written in the RAM 27a, the operation of the thread A is temporarily interrupted, and the data used in the thread B may be copied to the RAM 27b for the thread B.

同様に、スレッドBの処理結果がRAM27bに書き込まれると、スレッドBの動作を中断して、スレッドCで使用するデータをスレッドC用のRAM27cにコピーする。これにより、必要なデータを上書きして消失する事態を回避できる。   Similarly, when the processing result of the thread B is written in the RAM 27b, the operation of the thread B is interrupted, and the data used in the thread C is copied to the RAM 27c for the thread C. Thereby, it is possible to avoid a situation where necessary data is overwritten and lost.

このとき、データのコピーは、経路部29を介してリコンフィギュラブル回路12の入力にフィードバックし、データを別のRAMに転送することで行われる。この間、ALUは、本来のスレッド処理とは異なる動作に使用されるため、非効率である。そこで、以下では、より効率的にマルチスレッド処理を実行する方法について説明する。具体的には、RAMに対するスレッドの割当てを、時分割的に変化させることで対応する。   At this time, copying of data is performed by feeding back to the input of the reconfigurable circuit 12 via the path unit 29 and transferring the data to another RAM. During this time, the ALU is inefficient because it is used for an operation different from the original thread processing. In the following, a method for executing multithread processing more efficiently will be described. Specifically, this is dealt with by changing the allocation of threads to the RAM in a time-sharing manner.

図10は、メモリ部27における複数のRAMへのスレッドの割当てと、RAMの記憶領域の状態を示す。図中、RAMに入る矢印は、リコンフィギュラブル回路12から書き込まれるデータの流れを示し、RAMから出る矢印は、リコンフィギュラブル回路12にフィードバックされるデータの流れを示す。   FIG. 10 shows the assignment of threads to a plurality of RAMs in the memory unit 27 and the state of the RAM storage area. In the figure, an arrow entering the RAM indicates a flow of data written from the reconfigurable circuit 12, and an arrow exiting the RAM indicates a flow of data fed back to the reconfigurable circuit 12.

また、例えばA→Bは、スレッドBに引き渡されるべきスレッドAの処理結果を格納する領域を示す。また例えば、A_areaは、スレッドA用に割り当てられるテンポラリな領域を示し、処理を実行するために必要な途中結果を格納する領域である。   Further, for example, A → B indicates an area for storing a processing result of the thread A to be delivered to the thread B. Further, for example, A_area indicates a temporary area allocated for the thread A, and is an area for storing intermediate results necessary for executing processing.

図10(a)〜図10(e)に示されるRAMの記憶領域の状態は、全てのスレッドが終了したときの状態をそれぞれ示している。上記した例では、3クロックで終了する単純なスレッドについて説明したが、実際には、数百クロック程度は必要となるスレッドが想定される。例えば、スレッドAが120クロック、スレッドBが150クロック、スレッドCが100クロック必要であるとすると、全てのスレッドが終了する時間は、少なくとも150クロックかかる。   The state of the storage area of the RAM shown in FIGS. 10A to 10E shows the state when all threads are finished. In the above example, a simple thread that ends in 3 clocks has been described. However, in reality, a thread that requires about several hundred clocks is assumed. For example, if thread A requires 120 clocks, thread B requires 150 clocks, and thread C requires 100 clocks, it takes at least 150 clocks for all threads to finish.

スレッド間でデータの受け渡しを行うため、各スレッドを確実に実行するためには、150クロックを単位時間として、各スレッドが実行されるようにしてもよい。本実施例では、この150クロックを単位時間に設定して、RAMに対するスレッドの割当ての変更を、150クロック毎に実行する。   Since data is exchanged between threads, in order to execute each thread reliably, each thread may be executed with 150 clocks as a unit time. In this embodiment, this 150 clock is set as a unit time, and a change in thread assignment to the RAM is executed every 150 clocks.

以下、この基準時間をサイクルとして表現する。なお、サイクルは、同時に実行するスレッドの処理時間のうち、最も時間のかかるスレッドの処理時間以上に設定される。したがって、同時に実行する複数のスレッドの処理は、1サイクルの間に終了されることになる。   Hereinafter, this reference time is expressed as a cycle. The cycle is set to be equal to or longer than the processing time of the thread that takes the longest time among the processing times of the threads that are executed simultaneously. Therefore, the processing of a plurality of threads that are executed at the same time is terminated during one cycle.

図10(a)は、1サイクル目の状態を示す。1サイクル目では、スレッドAがRAM27aに、スレッドBがRAM27bに、スレッドCがRAM27cに割り当てられる。1サイクル目では、RAM27aに、次回以降のサイクルでスレッドBに引き渡すべき処理結果を格納する領域(A→B)と、スレッドAの途中結果を格納する領域(A_area)が設定される。なお、A→Bの前に表記される(N)は、Nサイクル目に生成された処理結果であることを示す。   FIG. 10A shows the state of the first cycle. In the first cycle, thread A is assigned to RAM 27a, thread B is assigned to RAM 27b, and thread C is assigned to RAM 27c. In the first cycle, an area (A → B) for storing the processing result to be delivered to the thread B in the next and subsequent cycles and an area (A_area) for storing the intermediate result of the thread A are set in the RAM 27a. Note that (N) written before A → B indicates a processing result generated in the Nth cycle.

同様に、RAM27bに、次回以降のサイクルでスレッドCに引き渡すべき処理結果を格納する領域(B→C)と、スレッドBの途中結果を格納する領域(B_area)が設定される。また、RAM27cに、スレッドCの途中結果および処理結果を格納する領域(C_area)が設定される。   Similarly, an area (B → C) for storing the processing result to be delivered to the thread C in the next and subsequent cycles and an area (B_area) for storing the intermediate result of the thread B are set in the RAM 27b. In addition, an area (C_area) for storing the intermediate result and processing result of the thread C is set in the RAM 27c.

図10(b)は、2サイクル目の状態を示す。2サイクル目では、スレッドBがRAM27aに、スレッドCがRAM27bに、スレッドAがRAM27cに割り当てられる。RAMに対するスレッドの割当ては、制御部18により実行される。制御部18は、サイクル毎にスレッドの割当てを変更して、前回のサイクルとは異なるスレッドからのデータをRAMに記憶させるようにする。   FIG. 10B shows the state of the second cycle. In the second cycle, thread B is assigned to RAM 27a, thread C is assigned to RAM 27b, and thread A is assigned to RAM 27c. The assignment of threads to the RAM is executed by the control unit 18. The control unit 18 changes the thread assignment for each cycle so that data from a thread different from the previous cycle is stored in the RAM.

なお、スレッドの割当てを変更する順番は、図9に示すスレッド間のデータの引渡しの関係をもとに定められる。図9に示すように、スレッドAの処理結果がスレッドBに引き渡される場合には、前回のサイクルでスレッドAに割り当てられていたRAMを、今回のサイクルでスレッドBに割り当てるように定める。そのため、スレッドBは、今回のサイクルで自身に割り当てられたRAM中に格納されるスレッドAの処理結果を容易に利用することができる。   Note that the order in which the thread assignment is changed is determined based on the data delivery relationship between threads shown in FIG. As shown in FIG. 9, when the processing result of thread A is handed over to thread B, the RAM allocated to thread A in the previous cycle is determined to be allocated to thread B in the current cycle. Therefore, the thread B can easily use the processing result of the thread A stored in the RAM allocated to itself in the current cycle.

すなわち、RAM27aには、前回のサイクルでスレッドAから引き渡されるべき処理結果が格納されているため、スレッドBは、この処理結果を自身の処理に使用できる。同様に、前回のサイクルでスレッドBに割り当てられていたRAMは、今回のサイクルでスレッドCに割り当てられる。   That is, since the RAM 27a stores the processing result to be delivered from the thread A in the previous cycle, the thread B can use this processing result for its own processing. Similarly, the RAM allocated to the thread B in the previous cycle is allocated to the thread C in the current cycle.

図示されるように、制御部18は、スレッドの割当てを全てのRAMに対して同時に変更させる。このタイミングは、既述したように全てのスレッドの実行が終了した後のタイミングである。このとき、スレッドの割当てを循環的に変更させることで、コンパイル処理を容易にするとともに、図9に示すスレッド間の関係にしたがったデータの引渡しを効率的に行うことが可能となる。このようにRAMに対するスレッドの割当てを効率よく循環的に変更することで、処理装置10の高速化を実現できる。   As shown in the figure, the control unit 18 changes the allocation of threads to all the RAMs at the same time. This timing is a timing after the execution of all the threads is completed as described above. At this time, by cyclically changing the thread assignment, the compiling process can be facilitated, and the data delivery according to the relationship between threads shown in FIG. 9 can be efficiently performed. In this way, the processing apparatus 10 can be speeded up by efficiently and cyclically changing the allocation of threads to the RAM.

2サイクル目では、RAM27aに、前回のサイクルで生成されたスレッドAの処理結果を格納する領域(A→B)、次回以降のサイクルでスレッドCに引き渡すべき処理結果を格納する領域(B→C)と、スレッドBの途中結果を格納する領域(B_area)が設定される。スレッドAの処理結果およびスレッドBの途中結果は、スレッドBの実行のためにリコンフィギュラブル回路12の入力に読み出される。なお、スレッドAの処理結果が読み出されて、その後、スレッドBで使用しないことが分かっている場合には、スレッドAの処理結果を格納した領域(A→B)を開放して、データの書込みを許してもよい。   In the second cycle, the RAM 27a stores the processing result of the thread A generated in the previous cycle (A → B), and stores the processing result to be delivered to the thread C in the next and subsequent cycles (B → C). ) And an area (B_area) for storing an intermediate result of the thread B is set. The processing result of the thread A and the intermediate result of the thread B are read to the input of the reconfigurable circuit 12 for the execution of the thread B. If the processing result of the thread A is read and then it is known that the thread B will not use it, the area (A → B) storing the processing result of the thread A is released, and the data You may allow writing.

同様に、RAM27bに、前回のサイクルで生成されたスレッドBの処理結果を格納する領域(B→C)と、スレッドCの途中結果および処理結果を格納する領域(C_area)が設定される。スレッドBの処理結果およびスレッドCの途中結果は、スレッドCの実行のためにリコンフィギュラブル回路12の入力に読み出される。なお、スレッドBの処理結果が読み出されて、その後、スレッドCで使用しないことが分かっている場合には、スレッドBの処理結果を格納した領域(B→C)を開放して、データの書込みを許してもよい。   Similarly, an area for storing the processing result of the thread B generated in the previous cycle (B → C) and an area for storing the intermediate result of the thread C and the processing result (C_area) are set in the RAM 27b. The processing result of the thread B and the intermediate result of the thread C are read to the input of the reconfigurable circuit 12 for the execution of the thread C. If the processing result of the thread B is read and it is known that the thread C does not use it thereafter, the area (B → C) storing the processing result of the thread B is released, and the data You may allow writing.

また、RAM27cに、次回以降のサイクルでスレッドBに引き渡すべき処理結果を格納する領域(A→B)と、スレッドAの途中結果を格納する領域(A_area)が設定される。スレッドAの途中結果は、スレッドAの実行のためにリコンフィギュラブル回路12の入力に読み出される。   Further, an area (A → B) for storing the processing result to be delivered to the thread B in the next and subsequent cycles and an area (A_area) for storing the intermediate result of the thread A are set in the RAM 27c. The intermediate result of the thread A is read to the input of the reconfigurable circuit 12 for the execution of the thread A.

図10(c)は、3サイクル目の状態を示す。3サイクル目では、スレッドCがRAM27aに、スレッドAがRAM27bに、スレッドBがRAM27cに割り当てられる。3サイクル目では、RAM27aに、前回のサイクルで生成されたスレッドBの処理結果を格納する領域(B→C)と、スレッドCの途中結果および処理結果を格納する領域(C_area)が設定される。   FIG. 10C shows the state of the third cycle. In the third cycle, thread C is assigned to RAM 27a, thread A is assigned to RAM 27b, and thread B is assigned to RAM 27c. In the third cycle, an area for storing the processing result of the thread B generated in the previous cycle (B → C) and an area for storing the intermediate result of the thread C and the processing result (C_area) are set in the RAM 27a. .

なお、RAM27aにおいて、2サイクル目で設定されていた領域(A→B)は、2サイクル目でデータの読出しが終了しているため、この例ではC_areaとして利用されている。これにより、RAM27aを効率的に利用することができる。   Note that, in the RAM 27a, the area (A → B) set in the second cycle is used as C_area in this example because data reading is completed in the second cycle. Thereby, the RAM 27a can be used efficiently.

同様にRAM27bに、次回以降のサイクルでスレッドBに引き渡すべき処理結果を格納する領域(A→B)と、スレッドAの途中結果を格納する領域(A_area)が設定される。RAM27bにおいて、2サイクル目で設定されていた領域(B→C)は、2サイクル目でデータの読出しが終了しているため、この例ではA_areaとして利用されている。   Similarly, an area (A → B) for storing the processing result to be delivered to the thread B in the next and subsequent cycles and an area (A_area) for storing the intermediate result of the thread A are set in the RAM 27b. In the RAM 27b, the area (B → C) set in the second cycle is used as A_area in this example because the data reading is completed in the second cycle.

またRAM27cに、前回のサイクルで生成されたスレッドAの処理結果を格納する領域(A→B)と、次回以降のサイクルでスレッドCに引き渡すべき処理結果を格納する領域(B→C)と、スレッドBの途中結果を格納する領域(B_area)が設定される。   Further, the RAM 27c has an area for storing the processing result of the thread A generated in the previous cycle (A → B), an area for storing the processing result to be delivered to the thread C in the next and subsequent cycles (B → C), An area (B_area) for storing an intermediate result of thread B is set.

図10(d)は、4サイクル目の状態を示す。4サイクル目では、1サイクル目と同様に、スレッドAがRAM27aに、スレッドBがRAM27bに、スレッドCがRAM27cに割り当てられる。4サイクル目では、RAM27aに、次回以降のサイクルでスレッドBに引き渡すべき処理結果を格納する領域(A→B)と、スレッドAの途中結果を格納する領域(A_area)が設定される。   FIG. 10D shows the state of the fourth cycle. In the fourth cycle, as in the first cycle, thread A is allocated to the RAM 27a, thread B is allocated to the RAM 27b, and thread C is allocated to the RAM 27c. In the fourth cycle, an area (A → B) for storing the processing result to be delivered to the thread B in the next and subsequent cycles and an area (A_area) for storing the intermediate result of the thread A are set in the RAM 27a.

同様にRAM27bに、前回のサイクルで生成されたスレッドAの処理結果を格納する領域(A→B)と、次回以降のサイクルでスレッドCに引き渡すべき処理結果を格納する領域(B→C)と、スレッドBの途中結果を格納する領域(B_area)が設定される。またRAM27cに、前回のサイクルで生成されたスレッドBの処理結果を格納する領域(B→C)と、スレッドCの途中結果および処理結果を格納する領域(C_area)が設定される。   Similarly, an area (A → B) for storing the processing result of the thread A generated in the previous cycle and an area (B → C) for storing the processing result to be delivered to the thread C in the next and subsequent cycles are stored in the RAM 27b. An area (B_area) for storing the intermediate result of thread B is set. In addition, an area (B → C) for storing the processing result of the thread B generated in the previous cycle and an area (C_area) for storing the intermediate result of the thread C and the processing result are set in the RAM 27c.

図10(e)は、5サイクル目の状態を示す。5サイクル目では、2サイクル目と同様に、スレッドBがRAM27aに、スレッドCがRAM27bに、スレッドAがRAM27cに割り当てられる。なお、RAMの記憶領域の状態についても、図10(b)に示す2サイクル目の状態と同一である。以後、図10(b)、図10(c)、図10(d)に示す状態をサイクリックに繰り返して、図9に示す処理が継続されることになる。   FIG. 10E shows the state of the fifth cycle. In the fifth cycle, as in the second cycle, thread B is allocated to the RAM 27a, thread C is allocated to the RAM 27b, and thread A is allocated to the RAM 27c. Note that the state of the storage area of the RAM is also the same as the state of the second cycle shown in FIG. Thereafter, the state shown in FIGS. 10B, 10C, and 10D is cyclically repeated, and the process shown in FIG. 9 is continued.

図11は、スレッド間のデータの受け渡しの別の例を示す図である。スレッドAは例えば外部からの入力ないしは設定データによる入力を受けて実行される。スレッドBはスレッドAの処理結果を利用し、スレッドCはスレッドAの処理結果およびスレッドBの処理結果を利用して、自身の処理結果を出力する。各スレッドは独立した処理を行い、図7に示すようにマルチスレッドで実行することができる。図9および図10に関して示した処理と同様に、マルチスレッド処理では、RAMに対するスレッドの割当てを、時分割的に変化させる。   FIG. 11 is a diagram illustrating another example of data transfer between threads. For example, the thread A is executed in response to input from the outside or input by setting data. Thread B uses the processing result of thread A, and thread C outputs the processing result of itself using the processing result of thread A and the processing result of thread B. Each thread performs independent processing and can be executed in multiple threads as shown in FIG. Similar to the processing shown with reference to FIGS. 9 and 10, in multithread processing, thread allocation to the RAM is changed in a time-sharing manner.

図12および図13は、メモリ部27における複数のRAMへのスレッドの割当てと、RAMの記憶領域の状態を示す。図中、RAMに入る矢印は、リコンフィギュラブル回路12から書き込まれるデータの流れを示し、RAMから出る矢印は、リコンフィギュラブル回路12にフィードバックされるデータの流れを示す。   12 and 13 show the assignment of threads to a plurality of RAMs in the memory unit 27 and the state of the RAM storage area. In the figure, an arrow entering the RAM indicates a flow of data written from the reconfigurable circuit 12, and an arrow exiting the RAM indicates a flow of data fed back to the reconfigurable circuit 12.

また、例えばA→Bは、スレッドBに引き渡されるべきスレッドAの処理結果を格納する領域を示す。また例えば、A_areaは、スレッドA用に割り当てられるテンポラリな領域を示し、処理を実行するために必要な途中結果を格納する領域である。図12(a)〜図12(d)および図13(a)〜図13(d)に示されるRAMの記憶領域の状態は、全てのスレッドが終了したときの状態をそれぞれ示している。図12および図13におけるスレッドの割当ての変更は、制御部18により実行される。   Further, for example, A → B indicates an area for storing a processing result of the thread A to be delivered to the thread B. Further, for example, A_area indicates a temporary area allocated for the thread A, and is an area for storing intermediate results necessary for executing processing. The states of the RAM storage areas shown in FIGS. 12A to 12D and FIGS. 13A to 13D show the states when all the threads are finished. Changes in thread assignment in FIGS. 12 and 13 are executed by the control unit 18.

図12(a)は、1サイクル目の状態を示す。1サイクル目では、スレッドAがRAM27aに、スレッドBがRAM27bに、スレッドCがRAM27cに割り当てられる。1サイクル目では、RAM27aに、次回以降のサイクルでスレッドBに引き渡すべき処理結果を格納する領域(A→B)と、次回以降のサイクルでスレッドCに引き渡すべき処理結果を格納する領域(A→C)と、スレッドAの途中結果を格納する領域(A_area)が設定される。   FIG. 12A shows the state of the first cycle. In the first cycle, thread A is assigned to RAM 27a, thread B is assigned to RAM 27b, and thread C is assigned to RAM 27c. In the first cycle, an area for storing the processing result to be delivered to the thread B in the next and subsequent cycles (A → B) and an area for storing the processing result to be delivered to the thread C in the next and subsequent cycles (A → C) and an area (A_area) for storing an intermediate result of the thread A is set.

同様に、RAM27bに、次回以降のサイクルでスレッドCに引き渡すべき処理結果を格納する領域(B→C)と、スレッドBの途中結果を格納する領域(B_area)が設定される。また、RAM27cに、スレッドCの途中結果および処理結果を格納する領域(C_area)が設定される。   Similarly, an area (B → C) for storing the processing result to be delivered to the thread C in the next and subsequent cycles and an area (B_area) for storing the intermediate result of the thread B are set in the RAM 27b. In addition, an area (C_area) for storing the intermediate result and processing result of the thread C is set in the RAM 27c.

図12(b)は、2サイクル目の状態を示す。2サイクル目では、スレッドBがRAM27aに、スレッドCがRAM27bに、スレッドAがRAM27cに割り当てられる。2サイクル目では、RAM27aに、前回のサイクルで生成されたスレッドAの処理結果を格納する領域(A→B)、(A→C)、次回以降のサイクルでスレッドCに引き渡すべき処理結果を格納する領域(B→C)と、スレッドBの途中結果を格納する領域(B_area)が設定される。   FIG. 12B shows the state of the second cycle. In the second cycle, thread B is assigned to RAM 27a, thread C is assigned to RAM 27b, and thread A is assigned to RAM 27c. In the second cycle, the RAM 27a stores the processing result of the thread A generated in the previous cycle (A → B), (A → C), and the processing result to be delivered to the thread C in the next and subsequent cycles. To be stored (B → C) and an area (B_area) for storing the intermediate result of the thread B are set.

スレッドBに引き渡されるべきスレッドAの処理結果およびスレッドBの途中結果は、スレッドBの実行のためにリコンフィギュラブル回路12の入力に読み出される。領域(A→C)に格納されているスレッドAの処理結果は、次のサイクルで使用されるため、領域(A→C)への書き込みは禁止される。   The processing result of the thread A to be delivered to the thread B and the intermediate result of the thread B are read to the input of the reconfigurable circuit 12 for the execution of the thread B. Since the processing result of the thread A stored in the area (A → C) is used in the next cycle, writing to the area (A → C) is prohibited.

なお、領域(A→B)に格納されているスレッドAの処理結果が読み出されて、その後、スレッドBで使用しないことが分かっている場合には、領域(A→B)を開放して、データの書込みを許してもよい。   If the processing result of the thread A stored in the area (A → B) is read and then it is known that the thread B will not use it, the area (A → B) is released. Data writing may be allowed.

同様に、RAM27bに、前回のサイクルで生成されたスレッドBの処理結果を格納する領域(B→C)と、スレッドCの途中結果および処理結果を格納する領域(C_area)が設定される。スレッドBの処理結果およびスレッドCの途中結果は、スレッドCの実行のためにリコンフィギュラブル回路12の入力に読み出される。   Similarly, an area for storing the processing result of the thread B generated in the previous cycle (B → C) and an area for storing the intermediate result of the thread C and the processing result (C_area) are set in the RAM 27b. The processing result of the thread B and the intermediate result of the thread C are read to the input of the reconfigurable circuit 12 for the execution of the thread C.

なお、スレッドBの処理結果が読み出されて、その後、スレッドCで使用しないことが分かっている場合には、スレッドBの処理結果を格納した領域(B→C)を開放して、データの書込みを許してもよい。   If the processing result of the thread B is read and it is known that the thread C does not use it thereafter, the area (B → C) storing the processing result of the thread B is released, and the data You may allow writing.

また、RAM27cに、次回以降のサイクルでスレッドBに引き渡すべき処理結果を格納する領域(A→B)、次回以降のサイクルでスレッドCに引き渡すべき処理結果を格納する領域(A→C)と、スレッドAの途中結果を格納する領域(A_area)が設定される。スレッドAの途中結果は、スレッドAの実行のためにリコンフィギュラブル回路12の入力に読み出される。   In addition, an area for storing the processing result to be delivered to the thread B in the next and subsequent cycles (A → B), an area for storing the processing result to be delivered to the thread C in the subsequent and subsequent cycles (A → C), An area (A_area) for storing an intermediate result of the thread A is set. The intermediate result of the thread A is read to the input of the reconfigurable circuit 12 for the execution of the thread A.

図12(c)は、3サイクル目の状態を示す。3サイクル目では、スレッドCがRAM27aに、スレッドAがRAM27bに、スレッドBがRAM27cに割り当てられる。3サイクル目では、RAM27aに、前回のサイクルで生成されたスレッドBの処理結果を格納する領域(B→C)と、前々回のサイクルで生成されたスレッドAの処理結果を格納する領域(A→C)、スレッドCの途中結果および処理結果を格納する領域(C_area)が設定される。   FIG. 12C shows the state of the third cycle. In the third cycle, thread C is assigned to RAM 27a, thread A is assigned to RAM 27b, and thread B is assigned to RAM 27c. In the third cycle, an area for storing the processing result of the thread B generated in the previous cycle (B → C) and an area for storing the processing result of the thread A generated in the previous cycle (A →) are stored in the RAM 27a. C), an area (C_area) for storing the intermediate result of thread C and the processing result is set.

なお、RAM27aにおいて、2サイクル目で設定されていた領域(A→B)は、2サイクル目でデータの読出しが終了しているため、この例ではC_areaとして利用されている。これにより、RAM27aを効率的に利用することができる。   Note that, in the RAM 27a, the area (A → B) set in the second cycle is used as C_area in this example because data reading is completed in the second cycle. Thereby, the RAM 27a can be used efficiently.

同様にRAM27bに、次回以降のサイクルでスレッドBに引き渡すべき処理結果を格納する領域(A→B)、次回以降のサイクルでスレッドCに引き渡すべき処理結果を格納する領域(A→C)と、スレッドAの途中結果を格納する領域(A_area)が設定される。RAM27bにおいて、2サイクル目で設定されていた領域(B→C)は、2サイクル目でデータの読出しが終了しているため、この例ではA_areaとして利用されている。   Similarly, in the RAM 27b, an area for storing a processing result to be delivered to the thread B in the subsequent cycle (A → B), an area for storing the processing result to be delivered to the thread C in the subsequent cycle (A → C), An area (A_area) for storing an intermediate result of the thread A is set. In the RAM 27b, the area (B → C) set in the second cycle is used as A_area in this example because the data reading is completed in the second cycle.

またRAM27cに、前回のサイクルで生成されたスレッドAの処理結果を格納する領域(A→B)、(A→C)と、次回以降のサイクルでスレッドCに引き渡すべき処理結果を格納する領域(B→C)と、スレッドBの途中結果を格納する領域(B_area)が設定される。   In addition, the RAM 27c stores the processing result of the thread A generated in the previous cycle (A → B) and (A → C), and the processing storing the processing result to be delivered to the thread C in the next and subsequent cycles ( B → C) and an area (B_area) for storing the intermediate result of thread B is set.

図12(d)は、4サイクル目の状態を示す。4サイクル目では、1サイクル目と同様に、スレッドAがRAM27aに、スレッドBがRAM27bに、スレッドCがRAM27cに割り当てられる。4サイクル目では、RAM27aに、次回以降のサイクルでスレッドBに引き渡すべき処理結果を格納する領域(A→B)、次回以降のサイクルでスレッドCに引き渡すべき処理結果を格納する領域(A→C)と、スレッドAの途中結果を格納する領域(A_area)が設定される。   FIG. 12D shows the state of the fourth cycle. In the fourth cycle, as in the first cycle, thread A is allocated to the RAM 27a, thread B is allocated to the RAM 27b, and thread C is allocated to the RAM 27c. In the fourth cycle, the RAM 27a stores the processing result to be delivered to the thread B in the next and subsequent cycles (A → B), and stores the processing result to be delivered to the thread C in the next and subsequent cycles (A → C). ) And an area (A_area) for storing the intermediate result of the thread A is set.

同様にRAM27bに、前回のサイクルで生成されたスレッドAの処理結果を格納する領域(A→B)、(A→C)と、次回以降のサイクルでスレッドCに引き渡すべき処理結果を格納する領域(B→C)と、スレッドBの途中結果を格納する領域(B_area)が設定される。   Similarly, an area for storing the processing result of the thread A generated in the previous cycle (A → B) and (A → C) and an area for storing the processing result to be delivered to the thread C in the next and subsequent cycles are stored in the RAM 27b. (B → C) and an area (B_area) for storing an intermediate result of the thread B are set.

またRAM27cに、前回のサイクルで生成されたスレッドBの処理結果を格納する領域(B→C)と、前々回のサイクルで生成されたスレッドAの処理結果を格納する領域(A→C)と、スレッドCの途中結果および処理結果を格納する領域(C_area)が設定される。   Further, the RAM 27c stores an area (B → C) for storing the processing result of the thread B generated in the previous cycle, an area (A → C) for storing the processing result of the thread A generated in the previous cycle, An area (C_area) for storing the intermediate result of thread C and the processing result is set.

図13(a)は、5サイクル目の状態を示す。5サイクル目では、2サイクル目と同様に、スレッドBがRAM27aに、スレッドCがRAM27bに、スレッドAがRAM27cに割り当てられる。5サイクル目では、RAM27aに、前回のサイクルで生成されたスレッドAの処理結果を格納する領域(A→B)、(A→C)、次回以降のサイクルでスレッドCに引き渡すべき処理結果を格納する領域(B→C)と、スレッドBの途中結果を格納する領域(B_area)が設定される。   FIG. 13A shows the state of the fifth cycle. In the fifth cycle, as in the second cycle, thread B is allocated to the RAM 27a, thread C is allocated to the RAM 27b, and thread A is allocated to the RAM 27c. In the fifth cycle, the RAM 27a stores the processing result of the thread A generated in the previous cycle (A → B), (A → C), and the processing result to be delivered to the thread C in the next and subsequent cycles. To be stored (B → C) and an area (B_area) for storing the intermediate result of the thread B are set.

同様に、RAM27bに、前回のサイクルで生成されたスレッドBの処理結果を格納する領域(B→C)、前々回のサイクルで生成されたスレッドAの処理結果を格納する領域(A→C)と、スレッドCの途中結果および処理結果を格納する領域(C_area)が設定される。   Similarly, an area for storing the processing result of the thread B generated in the previous cycle (B → C) and an area for storing the processing result of the thread A generated in the previous cycle (A → C) are stored in the RAM 27b. An area (C_area) for storing the intermediate result of thread C and the processing result is set.

また、RAM27cに、次回以降のサイクルでスレッドBに引き渡すべき処理結果を格納する領域(A→B)、次回以降のサイクルでスレッドCに引き渡すべき処理結果を格納する領域(A→C)と、スレッドAの途中結果を格納する領域(A_area)が設定される。   In addition, an area for storing the processing result to be delivered to the thread B in the next and subsequent cycles (A → B), an area for storing the processing result to be delivered to the thread C in the subsequent and subsequent cycles (A → C), An area (A_area) for storing an intermediate result of the thread A is set.

図13(b)は、6サイクル目の状態を示す。6サイクル目では、3サイクル目と同様に、スレッドCがRAM27aに、スレッドAがRAM27bに、スレッドBがRAM27cに割り当てられる。なお、RAMの記憶領域の状態についても、図12(c)に示す3サイクル目の状態と同一である。   FIG. 13B shows the state of the sixth cycle. In the sixth cycle, as in the third cycle, the thread C is allocated to the RAM 27a, the thread A is allocated to the RAM 27b, and the thread B is allocated to the RAM 27c. Note that the state of the storage area of the RAM is also the same as the state of the third cycle shown in FIG.

図13(c)は、7サイクル目の状態を示す。7サイクル目では、4サイクル目と同様に、スレッドAがRAM27aに、スレッドBがRAM27bに、スレッドCがRAM27cに割り当てられる。なお、RAMの記憶領域の状態についても、図12(d)に示す4サイクル目の状態と同一である。   FIG. 13C shows the state of the seventh cycle. In the seventh cycle, as in the fourth cycle, thread A is allocated to the RAM 27a, thread B is allocated to the RAM 27b, and thread C is allocated to the RAM 27c. Note that the state of the storage area of the RAM is also the same as the state of the fourth cycle shown in FIG.

図13(d)は、8サイクル目の状態を示す。8サイクル目では、5サイクル目と同様に、スレッドBがRAM27aに、スレッドCがRAM27bに、スレッドAがRAM27cに割り当てられる。なお、RAMの記憶領域の状態についても、図13(a)に示す4サイクル目の状態と同一である。以後、図12(c)、図12(d)、図13(a)に示す状態をサイクリックに繰り返して、図11に示す処理が継続されることになる。   FIG. 13D shows the state of the eighth cycle. In the eighth cycle, as in the fifth cycle, the thread B is allocated to the RAM 27a, the thread C is allocated to the RAM 27b, and the thread A is allocated to the RAM 27c. Note that the state of the storage area of the RAM is also the same as the state of the fourth cycle shown in FIG. Thereafter, the state shown in FIG. 12C, FIG. 12D, and FIG. 13A is cyclically repeated, and the process shown in FIG. 11 is continued.

また、図9又は図11に示すスレッド間の関係は、他のスレッドからスレッドAへのフィードバックデータがない場合のものであった。図14(a)および図14(b)は、スレッドAへのフィードバックデータが存在する場合のスレッド間のデータの受け渡しの例を示す図である。   Further, the relationship between threads shown in FIG. 9 or FIG. 11 is the case where there is no feedback data from other threads to the thread A. FIGS. 14A and 14B are diagrams illustrating an example of data transfer between threads when feedback data to the thread A exists.

スレッドAへのフィードバックデータが存在する場合であっても、図9および図11に関連して説明したように、RAMに対するスレッドの割当てをサイクル毎に変更することによって、効率的なリコンフィギュラブル回路12のコンフィギュレーションを実現することが可能である。   Even when feedback data to the thread A exists, an efficient reconfigurable circuit can be obtained by changing the allocation of threads to the RAM for each cycle as described with reference to FIGS. Twelve configurations can be realized.

また、各スレッド間でデータの受け渡しの競合の無い構成を実現することで、データ受け渡しの調停回路を不要とできる。これにより、回路の小型化および低消費電力化が可能な技術を提供できる。   In addition, by realizing a configuration in which there is no data transfer contention among the threads, a data transfer arbitration circuit can be eliminated. As a result, it is possible to provide a technology capable of downsizing the circuit and reducing power consumption.

図15は、図8に示す構成の別の例を示す図である。上記図8では、スレッドAの処理結果がスレッドBに引き渡される場合には、前回のサイクルでスレッドAに割り当てられていたRAMは、今回のサイクルでスレッドBに割り当てられる。そして、スレッドBの処理結果がスレッドCに引き渡される場合には、前回のサイクルでスレッドBに割り当てられていたRAMは、今回のサイクルでスレッドCに割り当てられる。   FIG. 15 is a diagram illustrating another example of the configuration illustrated in FIG. In FIG. 8, when the processing result of the thread A is delivered to the thread B, the RAM allocated to the thread A in the previous cycle is allocated to the thread B in the current cycle. When the processing result of the thread B is delivered to the thread C, the RAM assigned to the thread B in the previous cycle is assigned to the thread C in the current cycle.

このように、第1切替部23がRAMに割り当てられるスレッドをサイクル毎に順次切替(スレッドA→スレッドB→スレッドCの順番で切替)を実行することにより、当該RAMにおいて一方のスレッドの処理結果が他方のスレッドに引き渡されている。このため、第1切替部23は、当該一方のスレッド(ここではスレッドA)から他方のスレッド(ここではスレッドC)にデータを引き渡すには、最大(スレッド数−1)回(ここでは2回)の切替をしなければならず、処理時間を増大させていた。この点を解消するために図15は以下に示す構成を備えている。以下詳細に説明する。   As described above, when the first switching unit 23 sequentially switches the threads assigned to the RAM for each cycle (switching in the order of thread A → thread B → thread C), the processing result of one thread in the RAM. Is handed over to the other thread. For this reason, the first switching unit 23 can transfer data from the one thread (here, thread A) to the other thread (here, thread C) at most (number of threads−1) times (here, twice). ) Must be switched, which increases the processing time. In order to eliminate this point, FIG. 15 has the following configuration. This will be described in detail below.

図15に示すように、集積回路装置26は、リコンフィギュラブル回路12と、第1切替部23と、第3切替部28と、スレッドAB用記憶ユニット60と、スレッドBC用記憶ユニット70と、スレッドCA用記憶ユニット80とを備えている。   As shown in FIG. 15, the integrated circuit device 26 includes a reconfigurable circuit 12, a first switching unit 23, a third switching unit 28, a thread AB storage unit 60, a thread BC storage unit 70, And a thread CA storage unit 80.

なお、図8に示す第1切替部23は、図15に示す第1切替回路23及び第4切替部(第4切替部61,71,81)に対応する。すなわち、図8に示す第1切替回路23は、リコンフィギュラブル回路12から出力される各スレッドの選択、及びRAM27のそれぞれに対応するスレッドの選択を実行しているが、図15に示す第1切替回路23はリコンフィギュラブル回路12から出力される各スレッドの選択を実行し、図15に示す第4切替部(第4切替部61,71,81)はそれぞれのRAMに対応するスレッドの選択を実行している。   The first switching unit 23 illustrated in FIG. 8 corresponds to the first switching circuit 23 and the fourth switching unit (fourth switching units 61, 71, 81) illustrated in FIG. That is, the first switching circuit 23 shown in FIG. 8 executes selection of each thread output from the reconfigurable circuit 12 and selection of a thread corresponding to each of the RAM 27, but the first switching circuit 23 shown in FIG. The switching circuit 23 selects each thread output from the reconfigurable circuit 12, and the fourth switching unit (fourth switching units 61, 71, 81) shown in FIG. 15 selects a thread corresponding to each RAM. Is running.

例えば、第1切替部23aはスレッドAの出力を選択し、第1切替部23bはスレッドBの出力を選択し、第1切替部23cはスレッドCの出力を選択する。   For example, the first switching unit 23a selects the output of the thread A, the first switching unit 23b selects the output of the thread B, and the first switching unit 23c selects the output of the thread C.

また、第4切替部61はRAM64a,RAM64bのそれぞれに対応するスレッドA又はスレッドBの出力を供給する。また、第4切替部71はRAM74a,RAM74bのそれぞれに対応するスレッドB又はスレッドCの出力を供給する。さらに、第4切替部81はRAM84a,RAM84bのそれぞれに対応するスレッドC又はスレッドAの出力を供給する。   The fourth switching unit 61 supplies the output of the thread A or thread B corresponding to each of the RAM 64a and RAM 64b. The fourth switching unit 71 supplies the output of the thread B or thread C corresponding to each of the RAM 74a and RAM 74b. Further, the fourth switching unit 81 supplies the output of the thread C or thread A corresponding to each of the RAM 84a and RAM 84b.

また、図8に示す第2切替部25は、図15に示す第5切替部(第5切替部65,75,85)に対応する。なお、図8に示す構成と共通する説明については省略する。   Further, the second switching unit 25 shown in FIG. 8 corresponds to the fifth switching unit (fifth switching units 65, 75, 85) shown in FIG. The description common to the configuration shown in FIG. 8 is omitted.

記憶ユニット60は、第4切替部61と、RAM62と、RAM63と、RAM64a,RAM64b(一対の記憶手段)と、第5切替部65と、第6切替部66と、第6切替部67とを備えている。   The storage unit 60 includes a fourth switching unit 61, a RAM 62, a RAM 63, a RAM 64 a and a RAM 64 b (a pair of storage units), a fifth switching unit 65, a sixth switching unit 66, and a sixth switching unit 67. I have.

RAM62には、スレッドAのみが固定的に割り当てられている。同様にして、RAM63には、スレッドBのみが固定的に割り当てられている。ここで、本実施形態では、上記RAM62及びRAM64a,RAM64bのそれぞれは、リコンフィギュラブル回路12からの所定スレッド(ここではスレッドA)の出力を共通して記憶可能に構成されており、情報記憶ユニットを構成している。また、RAM63及びRAM64a,RAM64bのそれぞれは、リコンフィギュラブル回路12からの所定スレッド(ここではスレッドB)の出力を共通して記憶可能に構成されており、情報記憶ユニットを構成している。   Only the thread A is fixedly assigned to the RAM 62. Similarly, only the thread B is fixedly assigned to the RAM 63. Here, in the present embodiment, each of the RAM 62, the RAM 64a, and the RAM 64b is configured to be capable of commonly storing the output of a predetermined thread (here, thread A) from the reconfigurable circuit 12, and is configured as an information storage unit. Is configured. Each of the RAM 63, the RAM 64a, and the RAM 64b is configured to be capable of storing in common the output of a predetermined thread (here, thread B) from the reconfigurable circuit 12, and constitutes an information storage unit.

RAM64aには、2つのスレッドのうちの一方のスレッドが割り当てられており、一方のスレッドの割り当ては、所定サイクル毎に他方のスレッドへ割り当てを切り替えられる。同様にして、RAM64bには、2つのスレッドのうちの一方のスレッドが割り当てられており、一方のスレッドの割り当ては、所定サイクル毎に他方のスレッドへ割り当てを切り替えられる。なお、スレッドの割り当ての切り替えは、第4切替部61及び第5切替部65により実行される。すなわち、第4切替部61は、RAM64a,RAM64bの入力側でスレッドの割り当てを切り替え、第5切替部65は、RAM64a,RAM64bの出力側でスレッドの割り当てを切り替える。   One of the two threads is allocated to the RAM 64a, and the allocation of one thread can be switched to the other thread every predetermined cycle. Similarly, one of the two threads is allocated to the RAM 64b, and the allocation of one thread can be switched to the other thread every predetermined cycle. The switching of the thread assignment is executed by the fourth switching unit 61 and the fifth switching unit 65. That is, the fourth switching unit 61 switches thread assignment on the input side of the RAM 64a and RAM 64b, and the fifth switching unit 65 switches thread assignment on the output side of the RAM 64a and RAM 64b.

例えば、RAM64aにスレッドA及びスレッドBのうちの一方のスレッドAが割り当てられている場合には、所定サイクルが経過した後に該スレッドAの割り当ては他方のスレッドBへ割り当てを切り替えられる。さらに所定サイクルが経過した後は、スレッドBの割り当ては他方のスレッドAへ割り当てを切り替えられる。   For example, when one of the threads A and B is assigned to the RAM 64a, the assignment of the thread A can be switched to the other thread B after a predetermined cycle has elapsed. Further, after a predetermined cycle elapses, the assignment of the thread B can be switched to the other thread A.

また、RAM64a,RAM64bには、異なるスレッドがそれぞれに割り当てられている場合には、RAM64a,RAM64bのそれぞれに対応するスレッドの割り当ては、所定サイクル毎に互いに切り替えられてもよい。なお、スレッドの割り当ての切り替えは、第4切替部61及び第5切替部65により実行される。   When different threads are assigned to the RAM 64a and RAM 64b, the assignment of threads corresponding to the RAM 64a and RAM 64b may be switched to each other every predetermined cycle. The switching of the thread assignment is executed by the fourth switching unit 61 and the fifth switching unit 65.

例えば、RAM64aにスレッドAが割り当てられ、RAM64bにスレッドBが割り当てられている場合には、所定サイクルが経過した後に、RAM64aに対応するスレッドAの割り当てがスレッドBの割り当てに切り替えられるとともに、RAM64bに対応するスレッドBの割り当てがスレッドAの割り当てに切り替えられる。さらに所定サイクルが経過した後は、RAM64aに対応するスレッドBの割り当てがスレッドAの割り当てに切り替えられるとともに、RAM64bに対応するスレッドAの割り当てがスレッドBの割り当てに切り替えられる。   For example, when the thread A is assigned to the RAM 64a and the thread B is assigned to the RAM 64b, the thread A corresponding to the RAM 64a is switched to the thread B assignment after a predetermined cycle, and the RAM 64b The corresponding thread B assignment is switched to thread A assignment. Further, after a predetermined cycle elapses, the assignment of the thread B corresponding to the RAM 64a is switched to the assignment of the thread A, and the assignment of the thread A corresponding to the RAM 64b is changed to the assignment of the thread B.

したがって、第4切替部61は、第1切替部23aのスレッドAの出力と、第1切替部23bのスレッドBの出力とが入力されると、第1切替部23aのスレッドAの出力をRAM64aに出力し、第1切替部23bのスレッドBの出力をRAM64bに出力する。   Therefore, when the output of the thread A of the first switching unit 23a and the output of the thread B of the first switching unit 23b are input, the fourth switching unit 61 outputs the output of the thread A of the first switching unit 23a to the RAM 64a. And the output of the thread B of the first switching unit 23b is output to the RAM 64b.

また、所定のサイクルが経過した後は、RAM64aに対応するスレッドAの割り当てがスレッドBの割り当てに切り替えられ、RAM64bに対応するスレッドBの割り当てがスレッドAの割り当てに切り替えられる。そして、第4切替部61は、第1切替部23bのスレッドBの出力をRAM64aに出力し、第1切替部23aのスレッドAの出力をRAM64bに出力する。   Further, after a predetermined cycle elapses, the assignment of the thread A corresponding to the RAM 64a is switched to the assignment of the thread B, and the assignment of the thread B corresponding to the RAM 64b is changed to the assignment of the thread A. Then, the fourth switching unit 61 outputs the output of the thread B of the first switching unit 23b to the RAM 64a, and outputs the output of the thread A of the first switching unit 23a to the RAM 64b.

第5切替部65は、RAM64aにスレッドAが割り当てられ、RAM64bにスレッドBが割り当てられている場合には、RAM64aの出力を第6切替部66を通してリコンフィギュラブル回路12におけるスレッドAに対応する処理に出力し、RAM64bの出力を第6切替部67を通してリコンフィギュラブル回路12におけるスレッドBに対応する処理へ出力する。   When the thread A is assigned to the RAM 64a and the thread B is assigned to the RAM 64b, the fifth switching unit 65 processes the output of the RAM 64a through the sixth switching unit 66 and corresponds to the thread A in the reconfigurable circuit 12 The output of the RAM 64b is output to the process corresponding to the thread B in the reconfigurable circuit 12 through the sixth switching unit 67.

また、所定のサイクルが経過した後は、RAM64aに対応するスレッドAの割り当てがスレッドBの割り当てに切り替えられ、RAM64bに対応するスレッドBの割り当てがスレッドAの割り当てに切り替えられるため、第5切替部65は、RAM64aの出力を第6切替部67を通してリコンフィギュラブル回路12におけるスレッドBに対応する処理に出力し、RAM64bの出力を第6切替部66を通してリコンフィギュラブル回路12におけるスレッドAに対応する処理へ出力する。   Further, after the predetermined cycle has elapsed, the assignment of the thread A corresponding to the RAM 64a is switched to the assignment of the thread B, and the assignment of the thread B corresponding to the RAM 64b is switched to the assignment of the thread A. 65 outputs the output of the RAM 64a to the process corresponding to the thread B in the reconfigurable circuit 12 through the sixth switching unit 67, and the output of the RAM 64b corresponds to the thread A in the reconfigurable circuit 12 through the sixth switching unit 66. Output to processing.

第6切替部66は、RAM62及び第5切替部65のいずれかの出力を選択して出力する。第6切替部67は、RAM63及び第5切替部65のいずれかの出力を選択して出力する。   The sixth switching unit 66 selects and outputs one of the outputs of the RAM 62 and the fifth switching unit 65. The sixth switching unit 67 selects and outputs one of the outputs of the RAM 63 and the fifth switching unit 65.

ここで、スレッドA、スレッドB及びスレッドCのそれぞれは、複数のアドレス空間を有している。本実施形態では、スレッドAは、アドレス空間A−1とアドレス空間A−2とを有しているものとする。スレッドBは、アドレス空間B−1とアドレス空間B−2とを有しているものとする。スレッドCは、アドレス空間C−1とアドレス空間C−2とを有しているものとする。それぞれのアドレス空間には、001番から200番が割り振られている。以下では、スレッドとアドレス空間とRAMとの関係について詳細に説明する。   Here, each of the thread A, the thread B, and the thread C has a plurality of address spaces. In the present embodiment, it is assumed that the thread A has an address space A-1 and an address space A-2. It is assumed that the thread B has an address space B-1 and an address space B-2. It is assumed that the thread C has an address space C-1 and an address space C-2. Numbers 001 to 200 are allocated to each address space. Hereinafter, the relationship among the thread, the address space, and the RAM will be described in detail.

先ず、RAM62は、スレッドAのアドレス空間A−1のうち001番から100番に(固定的に)割り振られている。RAM64aがスレッドAに割り当てられた場合には、RAM64aはスレッドAのアドレス空間A−1のうち101番から200番に割り振られる。また、RAM64bがスレッドAに割り当てられた場合には、RAM64bはスレッドAのアドレス空間A−1のうち101番から200番に割り振られる。   First, the RAM 62 is allocated (fixedly) from 001 to 100 in the address space A-1 of the thread A. When the RAM 64a is allocated to the thread A, the RAM 64a is allocated from the 101st to the 200th in the address space A-1 of the thread A. When the RAM 64b is allocated to the thread A, the RAM 64b is allocated from the 101st to the 200th in the address space A-1 of the thread A.

すなわち、スレッドAのアドレス空間A−1に対して行われる処理はアドレス範囲により決定され、アドレス空間A−1の001番から100番に対する処理はRAM62に行われ、アドレス空間A−1の101番から200番に対する処理は、RAMに対応するスレッドの割り当てに応じてRAM64a又はRAM64bに対して行われる。   That is, the processing performed on the address space A-1 of the thread A is determined by the address range, the processing on the address space A-1 from 001 to 100 is performed on the RAM 62, and the processing on the address space A-1 is 101. To No. 200 are performed on the RAM 64a or the RAM 64b in accordance with the assignment of threads corresponding to the RAM.

RAM63は、スレッドBのアドレス空間B−2のうち001番から100番に(固定的に)割り振られている。RAM64aがスレッドBに割り当てられた場合には、RAM64aはスレッドBのアドレス空間B−2のうち101番から200番に割り振られる。また、RAM64bがスレッドBに割り当てられた場合には、RAM64bはスレッドBのアドレス空間B−2のうち101番から200番に割り振られる。   The RAM 63 is allocated (fixedly) from 001 to 100 in the address space B-2 of the thread B. When the RAM 64a is allocated to the thread B, the RAM 64a is allocated from the 101st to the 200th in the address space B-2 of the thread B. When the RAM 64b is allocated to the thread B, the RAM 64b is allocated from the 101st to the 200th in the address space B-2 of the thread B.

すなわち、スレッドBのアドレス空間B−2に対して行われる処理はアドレス範囲により決定され、アドレス空間B−2の001番から100番に対する処理はRAM63に行われ、アドレス空間B−2の101番から200番に対する処理は、RAMに対応するスレッドの割り当てに応じてRAM64a又はRAM64bに対して行われる。   That is, the processing performed on the address space B-2 of the thread B is determined by the address range, the processing on the address space B-2 from 001 to 100 is performed on the RAM 63, and the processing on the address space B-2 is 101. To No. 200 are performed on the RAM 64a or the RAM 64b in accordance with the assignment of threads corresponding to the RAM.

同様にして、スレッドBのアドレス空間B−1に対して行われる処理はアドレス範囲により決定され、アドレス空間B−1の001番から100番に対する処理はRAM72に行われ、アドレス空間B−1の101番から200番に対する処理は、RAMに対応するスレッドの割り当てに応じてRAM74a又はRAM74bに対して行われる。   Similarly, the processing performed on the address space B-1 of the thread B is determined by the address range, and the processing on the address space B-1 from 001 to 100 is performed on the RAM 72. The processing from No. 101 to No. 200 is performed on the RAM 74a or RAM 74b according to the assignment of threads corresponding to the RAM.

また、スレッドCのアドレス空間C−2に対して行われる処理はアドレス範囲により決定され、アドレス空間C−2の001番から100番に対する処理はRAM73に対して行われ、アドレス空間C−2の101番から200番に対する処理は、RAMに対応するスレッドの割り当てに応じてRAM74a又はRAM74bに対して行われる。   Further, the processing performed on the address space C-2 of the thread C is determined by the address range, the processing on the address space C-2 from 001 to 100 is performed on the RAM 73, and the processing of the address space C-2 The processing from No. 101 to No. 200 is performed on the RAM 74a or RAM 74b according to the assignment of threads corresponding to the RAM.

また、スレッドCがアドレス空間C−1に対して行われる処理はアドレス範囲により決定され、アドレス空間C−1の001番から100番に対する処理はRAM82に対して行われ、アドレス空間C−1の101番から200番に対する処理は、RAMに対応するスレッドの割り当てに応じてRAM84a又はRAM84bに対して行われる。   Further, the processing performed by the thread C on the address space C-1 is determined by the address range, and the processing on the address space C-1 from 001 to 100 is performed on the RAM 82. Processing from No. 101 to No. 200 is performed on the RAM 84a or the RAM 84b in accordance with the assignment of threads corresponding to the RAM.

さらに、スレッドAのアドレス空間A−2に対して行われる処理はアドレス範囲により決定され、アドレス空間A−2の001番から100番に対する処理はRAM83に対して行われ、アドレス空間A−2の101番から200番に対する処理は、RAMに対応するスレッドの割り当てに応じてRAM84a又はRAM84bに対して行われる。   Further, the processing performed on the address space A-2 of the thread A is determined by the address range, the processing on the address space A-2 from 001 to 100 is performed on the RAM 83, and the processing of the address space A-2 Processing from No. 101 to No. 200 is performed on the RAM 84a or the RAM 84b in accordance with the assignment of threads corresponding to the RAM.

上述したスレッドとアドレス空間とRAMとの関係により、スレッド間でデータがやり取りされる。例えば、RAM64aがスレッドAに割り当てられ、RAM64bがスレッドBに割り当てられた場合には、スレッドAのアドレス空間A−1に対する処理はRAM62又はRAM64aに対して行われ、スレッドBのアドレス空間B−2に対する処理はRAM63又はRAM64bに対して行われる。   Data is exchanged between threads due to the relationship between the thread, the address space, and the RAM. For example, when the RAM 64a is allocated to the thread A and the RAM 64b is allocated to the thread B, the processing for the address space A-1 of the thread A is performed on the RAM 62 or the RAM 64a, and the address space B-2 of the thread B is performed. The processing for is performed on the RAM 63 or the RAM 64b.

また、所定のサイクルが経過した後に、RAM64aがスレッドBに割り当てられ、RAM64bがスレッドAに割り当てられると、スレッドAのアドレス空間A−1に対する処理はRAM62又はRAM64bに対して行われ、スレッドBのアドレス空間B−2に対する処理はRAM63又はRAM64aに対して行われる。   Further, when the RAM 64a is assigned to the thread B and the RAM 64b is assigned to the thread A after a predetermined cycle has elapsed, the processing for the address space A-1 of the thread A is performed on the RAM 62 or the RAM 64b, and the thread B Processing for the address space B-2 is performed on the RAM 63 or the RAM 64a.

つまり、RAM64aとRAM64bとはスレッドAとスレッドBとの間のデータのやり取りに利用される領域であり、これらのRAMに割り当てられるスレッドが切り替わることにより、スレッドAとスレッドBとの間でデータが相互にやり取りされる。   That is, the RAM 64a and the RAM 64b are areas used for data exchange between the thread A and the thread B, and data is transferred between the thread A and the thread B by switching the threads allocated to these RAMs. Communicate with each other.

例えば、スレッドAとスレッドBとの間でデータがやり取りされる場合には、スレッドAがスレッドBに渡すデータをアドレス空間A−1の101番から200番に書き込み、スレッドBがスレッドAに渡すデータをアドレス空間B−2の101番から200番に書き込む。このときに、RAM64aがスレッドAに割り当てられ、RAM64bがスレッドBに割り当てられている場合には、スレッドAがスレッドBに渡すデータはRAM64aに書き込まれ、スレッドBがスレッドAに渡すデータはRAM64bに書き込まれることになる。   For example, when data is exchanged between the thread A and the thread B, the data that the thread A passes to the thread B is written from the 101st to the 200th in the address space A-1, and the thread B passes to the thread A. Data is written from address 101 to address 200 in address space B-2. At this time, when the RAM 64a is assigned to the thread A and the RAM 64b is assigned to the thread B, the data that the thread A passes to the thread B is written to the RAM 64a, and the data that the thread B passes to the thread A is written to the RAM 64b. Will be written.

そして、所定のサイクルが経過した後に、RAM64bがスレッドAに割り当てられ、RAM64aがスレッドBに割り当てられると、RAM64bに書き込まれたスレッドBのデータをスレッドAがアドレス空間A−1の101番〜200番の領域から読み込み、RAM64aに書き込まれたスレッドAのデータをスレッドBがアドレス空間B−2の101番〜200番の領域から読み込むこととなる。これにより、RAM64a及びRAM64bのそれぞれに対応するスレッドが相互に1回切り替えられるだけで、スレッドAとスレッドBとの間でデータをやり取りすることができる。   Then, after a predetermined cycle elapses, when the RAM 64b is assigned to the thread A and the RAM 64a is assigned to the thread B, the thread A writes the data of the thread B written in the RAM 64b and the addresses 101 to 200 in the address space A-1. The thread B reads the data of the thread A read from the number area and written to the RAM 64a from the areas 101 to 200 in the address space B-2. Thereby, data can be exchanged between the thread A and the thread B only by switching the threads corresponding to the RAM 64a and the RAM 64b once each other.

なお、本実施形態では、スレッド(例えば、スレッドA)は2つのアドレス空間(例えば、アドレス空間A−1、アドレス空間A−2)を有しており、1つのアドレス空間(例えば、アドレス空間A−1)は2つの領域(例えば、スレッドAに固定的に割り当てられる領域(001番から100番)と、スレッドBとのデータをやり取りするための領域(101番から200番))に分けられているが、これに限定されるものではない。   In this embodiment, a thread (for example, thread A) has two address spaces (for example, address space A-1 and address space A-2), and one address space (for example, address space A). -1) is divided into two areas (for example, an area fixedly assigned to the thread A (001 to 100) and an area for exchanging data with the thread B (101 to 200)). However, it is not limited to this.

例えば、スレッドAに固定的に割り当てられる領域(001番から100番)、スレッドBとのデータをやり取りするための領域(101番から200番)、スレッドCとのデータをやり取りするための領域(201番から300番)の3つに分けられて構成されるアドレス空間を有してもよい。   For example, an area fixedly assigned to thread A (001 to 100), an area for exchanging data with thread B (101 to 200), and an area for exchanging data with thread C (number 100) You may have the address space divided into three (201 to 300).

記憶ユニット70には、スレッドB及びスレッドCが割り当てられる。記憶ユニット70は、第4切替部71と、RAM72と、RAM73と、RAM74a,RAM74bと、第5切替部75と、第6切替部76と、第6切替部77とを備えている。記憶ユニット70は、上述した記憶ユニット60と同様の機能を有しているため、詳細な説明は省略する。   Thread B and thread C are assigned to the storage unit 70. The storage unit 70 includes a fourth switching unit 71, a RAM 72, a RAM 73, a RAM 74 a and a RAM 74 b, a fifth switching unit 75, a sixth switching unit 76, and a sixth switching unit 77. Since the storage unit 70 has the same function as the storage unit 60 described above, detailed description thereof is omitted.

記憶ユニット80には、スレッドC及びスレッドAが割り当てられる。記憶ユニット80は、第4切替部81と、RAM82と、RAM83と、RAM84a,RAM84bと、第5切替部85と、第6切替部86と、第6切替部87とを備えている。記憶ユニット80は、上述した記憶ユニット60と同様の機能を有しているため、詳細な説明は省略する。   A thread C and a thread A are allocated to the storage unit 80. The storage unit 80 includes a fourth switching unit 81, a RAM 82, a RAM 83, a RAM 84 a and a RAM 84 b, a fifth switching unit 85, a sixth switching unit 86, and a sixth switching unit 87. Since the storage unit 80 has the same function as the storage unit 60 described above, a detailed description thereof is omitted.

なお、図15は、3つのスレッドが存在する場合の構成であるが、これに限定されずに、4つ以上のスレッドが存在する場合の構成であってもよい。例えば、4つのスレッドが存在する場合には、スレッドA及びスレッドBに割り当てられる記憶ユニット(AB用)、スレッドA及びスレッドCに割り当てられる記憶ユニット(AC用)、スレッドA及びスレッドDに割り当てられる記憶ユニット(AD用)、スレッドB及びスレッドCに割り当てられる記憶ユニット(BC用)、スレッドB及びスレッドDに割り当てられる記憶ユニット(BD用)、スレッドC及びスレッドDに割り当てられる記憶ユニット(CD用)の6つが備えられることとなる。   Note that FIG. 15 shows a configuration in which three threads exist, but the configuration is not limited to this, and a configuration in which four or more threads exist may be used. For example, when there are four threads, the storage unit (for AB) assigned to thread A and thread B, the storage unit (for AC) assigned to thread A and thread C, the thread A and thread D are assigned. Storage unit (for AD), storage unit assigned to thread B and thread C (for BC), storage unit assigned to thread B and thread D (for BD), storage unit assigned to thread C and thread D (for CD) 6) will be provided.

なお、本発明は、図15に示す各RAMに限定されずに、図15に示す各RAM以外のRAMを備えてもよい。具体的には、図15に示す各RAMに加えて、スレッドが固定的に割り当てられるRAMが備えられてもよい。例えば、スレッドAは、上述したアドレス空間A−1、アドレス空間A−2に加えて、新たにアドレス空間A−3を有するものとする。そして、スレッドAが固定的に割り当てられるRAMが、アドレス空間A−3に割り振られる。   Note that the present invention is not limited to each RAM shown in FIG. 15, and may include RAMs other than the RAMs shown in FIG. Specifically, a RAM to which threads are fixedly assigned may be provided in addition to the RAMs shown in FIG. For example, it is assumed that the thread A newly has an address space A-3 in addition to the address space A-1 and the address space A-2 described above. The RAM to which the thread A is fixedly allocated is allocated to the address space A-3.

上記図15に示す構成によれば、第4切替部及び第5切替部は、記憶ユニット60,70,80内における各RAM(例えば、RAM64a,RAM64b)のそれぞれに対応するスレッドの割り当てを、所定サイクル毎に互いに切り替えることができる。これにより、第4切替部及び第5切替部は、記憶ユニット60,70,80内において一方のスレッド(例えば、スレッドA)の処理結果を1回の切り替えで他方のスレッド(例えば、スレッドB)に引き渡し、これと同時に他方のスレッド(例えば、スレッドB)の処理結果を1回の切り替えで一方のスレッド(例えば、スレッドA)に引き渡すことができる。   According to the configuration shown in FIG. 15, the fourth switching unit and the fifth switching unit allocate predetermined threads to the respective RAMs (for example, the RAM 64a and the RAM 64b) in the storage units 60, 70, and 80. Each cycle can be switched to each other. As a result, the fourth switching unit and the fifth switching unit switch the processing result of one thread (for example, thread A) in the storage units 60, 70, and 80 by one switching to the other thread (for example, thread B). At the same time, the processing result of the other thread (for example, thread B) can be handed over to one thread (for example, thread A) with one switching.

さらに、スレッドAとスレッドBとの間のみならずに、スレッドBとスレッドCとの間、スレッドCとスレッドAとの間でも同様に、一方のスレッドの処理結果を1回の切り替えで他方のスレッドに引渡し、これと同時に他方のスレッドの処理結果を1回の切り替えで一方のスレッドに引き渡すことができるため、任意のスレッド間で同時にデータを引き渡すことができる。よって、各スレッドの処理結果が利用されるまでの待ち時間を短くすることができ、図8に示す構成よりも処理時間を大幅に削減することができる。   Further, not only between the thread A and the thread B but also between the thread B and the thread C, and between the thread C and the thread A, the processing result of one thread can be switched by one switching. At the same time, the processing result of the other thread can be transferred to one thread by switching once, so that data can be simultaneously transferred between arbitrary threads. Therefore, the waiting time until the processing result of each thread is used can be shortened, and the processing time can be significantly reduced as compared with the configuration shown in FIG.

また、図8に示す構成では、1つのスレッドが有するアドレス空間のうちの1つは、スレッド間のデータの引き渡しに用いられる領域だけとなるため、これらアドレス空間には、次のサイクルで同一スレッドが利用するスレッドの処理結果を記憶することができない。これに対し、図15に示す構成では、それぞれのアドレス空間において、スレッド間のデータを引き渡すための領域だけではなく、さらにスレッドに固定的に割り当てられる領域をも有しているため、どのアドレス空間に対しても、次のサイクルで同一スレッドが利用するスレッドの処理結果を記憶することができる。   Further, in the configuration shown in FIG. 8, one of the address spaces of one thread is only an area used for data transfer between threads. The processing result of the thread used by can not be stored. On the other hand, in the configuration shown in FIG. 15, each address space has not only an area for passing data between threads but also an area that is fixedly assigned to the thread. However, the processing result of the thread used by the same thread in the next cycle can be stored.

例えば、図8に示す構成では、アドレス空間は、スレッド間のデータの引渡しをするために用いられ、次のサイクルで同一スレッドが利用するスレッドの処理結果を記憶することができない。このため、次のサイクルで同一スレッドが利用するスレッドの処理結果は、その他のアドレス空間に記憶されることになる。   For example, in the configuration shown in FIG. 8, the address space is used for transferring data between threads, and cannot store the processing results of threads used by the same thread in the next cycle. For this reason, the processing result of the thread used by the same thread in the next cycle is stored in another address space.

これに対し、図15に示す構成では、1つのスレッドの持つ2つのアドレス空間のいずれにも、次のサイクルで同一スレッドが利用するスレッドの処理結果を記憶する記憶部を有している。このため、次のサイクルで同一スレッドが利用するスレッドの処理結果が2つある場合でも、それら2つの演算結果を別々のアドレス空間に同時に記憶させることも可能となる。   On the other hand, the configuration shown in FIG. 15 has a storage unit for storing the processing result of the thread used by the same thread in the next cycle in both of the two address spaces of one thread. For this reason, even when there are two processing results of threads used by the same thread in the next cycle, it is possible to simultaneously store the two calculation results in different address spaces.

以上、本発明を実施例をもとに説明した。実施例は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。例えば、図8に示した集積回路装置26は、リコンフィギュラブル回路12への途中入力またはリコンフィギュラブル回路からの途中出力を可能とする構成であったが、本発明は、途中入力または途中出力のない構成に対しても適用できる。   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. For example, the integrated circuit device 26 shown in FIG. 8 has a configuration that enables intermediate input to the reconfigurable circuit 12 or intermediate output from the reconfigurable circuit. It can also be applied to configurations without this.

例えば、リコンフィギュラブル回路12におけるALUの配列は、縦方向にのみ接続を許した多段配列に限らず、横方向の接続も許した、メッシュ状の配列であってもよい。また、上記の説明では、段を飛ばして論理回路を接続する結線は設けられていないが、このような段を飛ばす接続結線を設ける構成としてもよい。   For example, the array of ALUs in the reconfigurable circuit 12 is not limited to a multistage array that allows connection only in the vertical direction, but may be a mesh-like array that allows connection in the horizontal direction. In the above description, the connection for connecting the logic circuits by skipping the stages is not provided, but the connection connection for skipping such stages may be provided.

また、図1では、処理装置10が1つのリコンフィギュラブル回路12を有する場合を示しているが、複数のリコンフィギュラブル回路12を有していてもよい。   Further, FIG. 1 shows a case where the processing apparatus 10 has one reconfigurable circuit 12, but it may have a plurality of reconfigurable circuits 12.

図8に示した構成では、集積回路装置26が、第1切替回路23および複数のRAMから構成されるメモリ部27を有していた。以下の変形例では、メモリ部27が、複数のRAMを有する代わりに、同時アクセス可能な複数の入出力ポートを備えた1つのRAMを有してもよい。この場合、RAMの記憶領域は複数に分割されており、分割されたそれぞれの記憶領域は、リコンフィギュラブル回路12上で実行されるスレッドに割り当てられる。複数の入出力ポートのそれぞれは、分割されたそれぞれの記憶領域に対応する。   In the configuration shown in FIG. 8, the integrated circuit device 26 includes the memory unit 27 including the first switching circuit 23 and a plurality of RAMs. In the following modified example, the memory unit 27 may have one RAM having a plurality of input / output ports that can be accessed simultaneously instead of having a plurality of RAMs. In this case, the storage area of the RAM is divided into a plurality of parts, and each of the divided storage areas is assigned to a thread executed on the reconfigurable circuit 12. Each of the plurality of input / output ports corresponds to each divided storage area.

RAMの分割は、例えばアドレスの所定位置のビット値を利用して行われる。例えば、第1の入出力ポートは、アドレスの最上位2ビットが”00”である記憶領域に対応付けられ、第2の入出力ポートは、アドレスの最上位2ビットが”01”である記憶領域に対応付けられ、第3の入出力ポートは、アドレスの最上位2ビットが”10”である記憶領域に対応付けられる。   The RAM is divided using, for example, a bit value at a predetermined position of the address. For example, the first input / output port is associated with a storage area in which the most significant 2 bits of the address is “00”, and the second input / output port is stored in which the most significant 2 bits of the address is “01”. The third input / output port is associated with a storage area in which the most significant 2 bits of the address are “10”.

複数のスレッドのそれぞれを各入出力ポートに対応付けることで、スレッドと分割した記憶領域とが対応付けられる。リコンフィギュラブル回路12および第2切替回路25、また制御部18などの他の構成は、上記した実施例と同様である。   By associating each of the plurality of threads with each input / output port, the thread is associated with the divided storage area. Other configurations such as the reconfigurable circuit 12, the second switching circuit 25, and the control unit 18 are the same as those in the above-described embodiment.

すなわち、実施例では複数のRAMが存在していたが、この変形例では、実施例における1つのRAMが、RAMにおいて分割された1つの記憶領域に対応する。なお、アドレス中の2ビットを用いる場合には、記憶領域を最大で4つに分割することが可能であるが、さらに記憶領域を分割する必要がある場合には、アドレス中の3ビット以上を用いる。   That is, although a plurality of RAMs exist in the embodiment, in this modification, one RAM in the embodiment corresponds to one storage area divided in the RAM. When using 2 bits in the address, it is possible to divide the storage area into four at the maximum. However, if it is necessary to further divide the storage area, 3 bits or more in the address are used. Use.

以上のように、図8に示す第1切替回路23およびメモリ部27を、複数の入出力ポートを有する1つのRAMに置き換えてもよい。このように、メモリ部27として、複数のデータの同時書込および/または読出を可能とするRAMを使用することで、実施例で説明した同様の効果を得ることができ、さらに第1切替回路23を集積回路装置26から省略できるため、回路規模を削減できる。   As described above, the first switching circuit 23 and the memory unit 27 shown in FIG. 8 may be replaced with one RAM having a plurality of input / output ports. As described above, by using the RAM that enables simultaneous writing and / or reading of a plurality of data as the memory unit 27, the same effect as described in the embodiment can be obtained, and the first switching circuit can be obtained. Since 23 can be omitted from the integrated circuit device 26, the circuit scale can be reduced.

なお、リコンフィギュラブル回路12については、本実施例で説明したものに限定されずに、CPU、DSP又はFPGA等のプログラム可能なデバイスも含まれる。また、スレッドの実行については、例えば図2に示すような一つの回路上で複数のスレッドが実行されるケースについてしか説明していないが、個別の回路が存在し、そのそれぞれ回路で別のスレッドが同時に実行される場合も含まれる。   Note that the reconfigurable circuit 12 is not limited to the one described in this embodiment, and includes a programmable device such as a CPU, DSP, or FPGA. For thread execution, for example, only a case where a plurality of threads are executed on one circuit as shown in FIG. 2 has been described. However, individual circuits exist, and each circuit has a different thread. Are executed at the same time.

今回開示された実施例はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。   It should be understood that the embodiments disclosed herein are illustrative and non-restrictive in every respect. The scope of the present invention is defined by the terms of the claims, rather than the description above, and is intended to include any modifications within the scope and meaning equivalent to the terms of the claims.

実施例に係る処理装置の構成図である。It is a block diagram of the processing apparatus which concerns on an Example. リコンフィギュラブル回路の構成図である。It is a block diagram of a reconfigurable circuit. リコンフィギュラブル回路の別の構成図である。It is another block diagram of a reconfigurable circuit. データフローグラフの例を示す図である。It is a figure which shows the example of a data flow graph. 生成すべきターゲット回路を分割してできる複数の回路の設定データについて説明するための図である。It is a figure for demonstrating the setting data of the some circuit which can divide | segment the target circuit which should be produced | generated. リコンフィギュラブル回路上に構成するターゲット回路の処理の流れを示す図である。It is a figure which shows the flow of a process of the target circuit comprised on a reconfigurable circuit. リコンフィギュラブル回路上で実現するマルチスレッド動作の流れを示す図である。It is a figure which shows the flow of the multithread operation | movement implement | achieved on a reconfigurable circuit. 集積回路装置の詳細な構成を示す図である。It is a figure which shows the detailed structure of an integrated circuit device. スレッド間のデータの受け渡しの一例を示す図である。It is a figure which shows an example of the delivery of the data between threads. メモリ部における複数のRAMへのスレッドの割当てと、RAMの記憶領域の状態を示す図である。It is a figure which shows the allocation of the thread | sled to several RAM in a memory part, and the state of the storage area of RAM. スレッド間のデータの受け渡しの別の例を示す図である。It is a figure which shows another example of the delivery of the data between threads. メモリ部における複数のRAMへのスレッドの割当てと、RAMの記憶領域の状態を示す図である。It is a figure which shows the allocation of the thread | sled to several RAM in a memory part, and the state of the storage area of RAM. メモリ部における複数のRAMへのスレッドの割当てと、RAMの記憶領域の状態を示す図である。It is a figure which shows the allocation of the thread | sled to several RAM in a memory part, and the state of the storage area of RAM. スレッドへのフィードバックデータが存在する場合のスレッド間のデータの受け渡しの例を示す図である。It is a figure which shows the example of the delivery of the data between threads when the feedback data to a thread exists. 集積回路装置の詳細な構成の他の例を示す図である。It is a figure which shows the other example of a detailed structure of an integrated circuit device.

符号の説明Explanation of symbols

10…処理装置、12…リコンフィギュラブル回路、14…設定部、16…回路処理制御部、18…制御部、20…内部状態保持回路、22…出力回路、23…第1切替回路、24…経路部、25…第2切替回路、26…集積回路装置、27…メモリ部、28…第3切替回路、29…経路部、30…コンパイル部、32…設定データ生成部、34…記憶部、36…プログラム、38…データフローグラフ、40…設定データ、50…論理回路、52…接続部   DESCRIPTION OF SYMBOLS 10 ... Processing apparatus, 12 ... Reconfigurable circuit, 14 ... Setting part, 16 ... Circuit processing control part, 18 ... Control part, 20 ... Internal state holding circuit, 22 ... Output circuit, 23 ... 1st switching circuit, 24 ... Path unit, 25 ... second switching circuit, 26 ... integrated circuit device, 27 ... memory unit, 28 ... third switching circuit, 29 ... path unit, 30 ... compilation unit, 32 ... setting data generation unit, 34 ... storage unit, 36 ... Program, 38 ... Data flow graph, 40 ... Setting data, 50 ... Logic circuit, 52 ... Connector

Claims (1)

複数の演算機能を選択的に実行可能な論理回路を複数有し、複数のスレッドを同時に実
行することができるリコンフィギュラブル回路と、
前記リコンフィギュラブル回路からの出力を記憶する記憶部とを備え、
記記憶部は、前記リコンフィギュラブル回路上で実行されるスレッドに割り当て
られ、
記記憶部に対するスレッドの割当てを制御する制御部をさらに備え、
前記制御部は、
全てのスレッドの実行が終了した後のタイミングで、前記記憶部とスレッドとの対応を変更し、
前記記憶部に対するスレッドの割り当てを、第1スレッド、第2スレッドの順で変更する場合において、
前記記憶部に前記第1スレッドを割り当てたときに、前記第2スレッドに引き渡すべき前記第1スレッドの処理結果を前記記憶部の所定領域に記憶させ、
前記記憶部に対する割当てを前記第1スレッドから前記第2スレッドに変更したときに、前記所定領域に記憶された前記処理結果を第2スレッドに供給させることを特徴とする処理装置。
A reconfigurable circuit having a plurality of logic circuits capable of selectively executing a plurality of arithmetic functions and capable of simultaneously executing a plurality of threads;
And a said silicon Symbol store the output from the reconfigurable circuit憶部,
Before Kiki憶部is allocated to the thread to be executed by the reconfigurable circuit on,
Further comprising a control unit for controlling the assignment of threads for pre-crisis憶部,
The controller is
At the timing after the execution of all of the thread has been completed, to change the correspondence between the pre-crisis憶部and thread,
In the case of changing the thread assignment to the storage unit in the order of the first thread and the second thread,
When the first thread is assigned to the storage unit, the processing result of the first thread to be delivered to the second thread is stored in a predetermined area of the storage unit,
The processing apparatus , wherein when the assignment to the storage unit is changed from the first thread to the second thread, the processing result stored in the predetermined area is supplied to the second thread .
JP2005130462A 2004-06-21 2005-04-27 Reconfigurable circuit and processing device Active JP4484756B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005130462A JP4484756B2 (en) 2004-06-21 2005-04-27 Reconfigurable circuit and processing device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004182517 2004-06-21
JP2005130462A JP4484756B2 (en) 2004-06-21 2005-04-27 Reconfigurable circuit and processing device

Publications (2)

Publication Number Publication Date
JP2006040254A JP2006040254A (en) 2006-02-09
JP4484756B2 true JP4484756B2 (en) 2010-06-16

Family

ID=35905127

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005130462A Active JP4484756B2 (en) 2004-06-21 2005-04-27 Reconfigurable circuit and processing device

Country Status (1)

Country Link
JP (1) JP4484756B2 (en)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0605349D0 (en) * 2006-03-17 2006-04-26 Imec Inter Uni Micro Electr Reconfigurable multi-processing coarse-grain array
JP4724031B2 (en) * 2006-03-28 2011-07-13 三菱プレシジョン株式会社 Computer and computer system using synchronized stack memory
US7840482B2 (en) * 2006-06-19 2010-11-23 Exegy Incorporated Method and system for high speed options pricing
JP4866194B2 (en) 2006-09-29 2012-02-01 富士通セミコンダクター株式会社 Integrated circuit and input data control method for reconfigurable circuit
JP4444305B2 (en) 2007-03-28 2010-03-31 株式会社東芝 Semiconductor device
JP4703735B2 (en) * 2009-01-26 2011-06-15 株式会社東芝 Compiler, code generation method, code generation program
JP2011039698A (en) * 2009-08-07 2011-02-24 Sanyo Electric Co Ltd Arithmetic processor
JP5718558B2 (en) 2009-09-16 2015-05-13 富士ゼロックス株式会社 Image data processing device
GB2526018B (en) 2013-10-31 2018-11-14 Silicon Tailor Ltd Multistage switch
US10776310B2 (en) * 2017-03-14 2020-09-15 Azurengine Technologies Zhuhai Inc. Reconfigurable parallel processor with a plurality of chained memory ports
JP7393519B2 (en) * 2020-03-11 2023-12-06 株式会社エヌエスアイテクス Arithmetic device and method
JP7494526B2 (en) 2020-03-30 2024-06-04 株式会社デンソー MEMORY ALLOCATION METHOD AND PROCESSING APPARATUS - Patent application

Also Published As

Publication number Publication date
JP2006040254A (en) 2006-02-09

Similar Documents

Publication Publication Date Title
JP4275013B2 (en) Data flow graph processing device, processing device, reconfigurable circuit.
US6108760A (en) Method and apparatus for position independent reconfiguration in a network of multiple context processing elements
US5915123A (en) Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US7266672B2 (en) Method and apparatus for retiming in a network of multiple context processing elements
JP4900717B2 (en) Reconfigurable device
US20050134308A1 (en) Reconfigurable circuit, processor having reconfigurable circuit, method of determining functions of logic circuits in reconfigurable circuit, method of generating circuit, and circuit
US20030061601A1 (en) Data processing apparatus and method, computer program, information storage medium, parallel operation apparatus, and data processing system
US7580963B2 (en) Semiconductor device having an arithmetic unit of a reconfigurable circuit configuration in accordance with stored configuration data and a memory storing fixed value data to be supplied to the arithmetic unit, requiring no data area for storing fixed value data to be set in a configuration memory
JP4484756B2 (en) Reconfigurable circuit and processing device
JP2008537268A (en) An array of data processing elements with variable precision interconnection
JP4423953B2 (en) Semiconductor integrated circuit
US7716458B2 (en) Reconfigurable integrated circuit, system development method and data processing method
JP4553615B2 (en) Processing equipment
JP2006099719A (en) Processing device
KR100960148B1 (en) Data processing circuit
JP4156010B2 (en) Processing equipment
JP4562679B2 (en) Data flow graph generator
JP4413052B2 (en) Data flow graph processing apparatus and processing apparatus
JP4330472B2 (en) Processing equipment
JP2005128709A (en) Processing device equipped with reconfigurable circuit
JP4357326B2 (en) Reconfigurable circuit and processing device
JP4553614B2 (en) Processing equipment
JP2007272394A (en) Date flow graph reconfiguration device, setting data generation device of reconfigurable circuit, processor, and reconfigurable circuit
JP4610236B2 (en) Setting data generator
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

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081202

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090811

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090928

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20091027

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100126

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100208

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

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

R151 Written notification of patent or utility model registration

Ref document number: 4484756

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20130402

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140402

Year of fee payment: 4