JP5382503B2 - Branching program machine and parallel processor - Google Patents

Branching program machine and parallel processor Download PDF

Info

Publication number
JP5382503B2
JP5382503B2 JP2009049981A JP2009049981A JP5382503B2 JP 5382503 B2 JP5382503 B2 JP 5382503B2 JP 2009049981 A JP2009049981 A JP 2009049981A JP 2009049981 A JP2009049981 A JP 2009049981A JP 5382503 B2 JP5382503 B2 JP 5382503B2
Authority
JP
Japan
Prior art keywords
instruction
input
register
variable
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009049981A
Other languages
Japanese (ja)
Other versions
JP2010204969A (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.)
Kyushu Institute of Technology NUC
Renesas Electronics Corp
Original Assignee
Kyushu Institute of Technology NUC
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kyushu Institute of Technology NUC, Renesas Electronics Corp filed Critical Kyushu Institute of Technology NUC
Priority to JP2009049981A priority Critical patent/JP5382503B2/en
Publication of JP2010204969A publication Critical patent/JP2010204969A/en
Application granted granted Critical
Publication of JP5382503B2 publication Critical patent/JP5382503B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Description

本発明は、多値論理決定グラフ(MDD:Multiple-valued Decision Diagram)を模擬する演算が可能なブランチング・プログラム・マシン(BM:Branching Program Machine)及びブランチング・プログラム・マシンを並列に接続した多段ブランチング・プログラム・マシン(多段ブランチング・プログラム・マシン)、並びに多段ブランチング・プログラム・マシンを並列に接続した並列プロセッサに関する。   In the present invention, a branching program machine (BM) and a branching program machine capable of performing operations that simulate a multiple-valued decision diagram (MDD) are connected in parallel. The present invention relates to a multistage branching program machine (multistage branching program machine) and a parallel processor in which multistage branching program machines are connected in parallel.

二分決定グラフ(以下「BDD(Binary Decision Diagram)」という。)を模擬するブランチング・プログラム・マシンは、分岐命令と出力命令の2種類の命令を有するプロセッサである(非特許文献1,2参照)。従って、ブランチング・プログラム・マシンは、汎用プロセッサに比べてアーキテクチャが単純である。また、制御回路などに於いて多く用いられる条件分岐を、専用命令で実行するため、特定のアプリケーションに於いては汎用プロセッサよりも高速の処理が可能となる。ブランチング・プログラム・マシンのアプリケーションは、制御回路、回路シミュレータ、ネットワーク機器の経路表やパケット分類、及びパターンマッチングなどが挙げられる。従来のブランチング・プログラム・マシンとしては、2値の入力変数に対するBDDを模擬するものが知られている(非特許文献1,2参照)。   A branching program machine that simulates a binary decision graph (hereinafter referred to as “BDD (Binary Decision Diagram)”) is a processor having two types of instructions, a branch instruction and an output instruction (see Non-Patent Documents 1 and 2). ). Thus, the branching program machine has a simpler architecture than a general purpose processor. In addition, conditional branches that are often used in control circuits and the like are executed by dedicated instructions, so that a specific application can perform processing at a higher speed than a general-purpose processor. Examples of branching program machine applications include control circuits, circuit simulators, network device routing tables, packet classification, and pattern matching. As a conventional branching program machine, one that simulates BDD for a binary input variable is known (see Non-Patent Documents 1 and 2).

P. C. Baracos, R. D. Hudson, L. J. Vroomen, and P. J. A. Zsombor-Murray, "Advances in binary decision based programmable controllers," IEEE Transactions on Industrial Electornics, Vol. 35, No. 3, pp. 417-425, Aug., 1988.P. C. Baracos, R. D. Hudson, L. J. Vroomen, and P. J. A. Zsombor-Murray, "Advances in binary decision based programmable controllers," IEEE Transactions on Industrial Electornics, Vol. 35, No. 3, pp. 417-425, Aug., 1988. R. T. Boute, "The binary-decision machine as programmable controller," Euromicro Newsletter, Vol. 1, No. 2, pp. 16-22, 1976.R. T. Boute, "The binary-decision machine as programmable controller," Euromicro Newsletter, Vol. 1, No. 2, pp. 16-22, 1976. R. E. Bryant, "Graph-based algorithms for boolean function manipulation," IEEE Trans. Comput., Vol. C-35, No. 8, pp. 677-691, Aug. 1986.R. E. Bryant, "Graph-based algorithms for boolean function manipulation," IEEE Trans. Comput., Vol. C-35, No. 8, pp. 677-691, Aug. 1986. Y. Iguchi, T. Sasao, and M. Matsuura, "Evaluation of multiple-output logic functions," Asia and South Pacific Design Automation Conference'2003, Kitakyushu, Japan, pp. 312-315, Jan. 21-24, 2003.Y. Iguchi, T. Sasao, and M. Matsuura, "Evaluation of multiple-output logic functions," Asia and South Pacific Design Automation Conference'2003, Kitakyushu, Japan, pp. 312-315, Jan. 21-24, 2003 . T. Kam, T. Villa, R. K. Brayton, and A. L. Sagiovanni-Vincentelli, "Multi-valued decision diagrams: Theory and Applications," Multiple-Valued Logic, Vol. 4, No. 1-2, pp. 9-62, 1998.T. Kam, T. Villa, RK Brayton, and AL Sagiovanni-Vincentelli, "Multi-valued decision diagrams: Theory and Applications," Multiple-Valued Logic, Vol. 4, No. 1-2, pp. 9-62, 1998. Y. Iguchi, T. Sasao, and M. Matsuura, "Implementation of multiple-output functions using PROMDDs," 30th International Symposium on Mulitple-Valued Logic, Portland, Oreon, U.S.A, pp. 199-205, May 23-25 2000.Y. Iguchi, T. Sasao, and M. Matsuura, "Implementation of multiple-output functions using PROMDDs," 30th International Symposium on Mulitple-Valued Logic, Portland, Oreon, USA, pp. 199-205, May 23-25 2000 . S. Nagayama, T. Sasao, Y. Iguchi, and M. Matsuura, "Area-time complexities of multi-valued decision diagrams," IEICE Transactions on Fundamentals of Electronics, Vol. E87-A, No. 5, pp. 1020-1028, May 2004.S. Nagayama, T. Sasao, Y. Iguchi, and M. Matsuura, "Area-time complexities of multi-valued decision diagrams," IEICE Transactions on Fundamentals of Electronics, Vol. E87-A, No. 5, pp. 1020 -1028, May 2004. S. Nagayama, and T. Sasao, "On the optimization of heterogeneous MDDs," IEEE Transactions on CAD, Vol. 24, No. 11, pp. 1645-1659, Nov. 2005.S. Nagayama, and T. Sasao, "On the optimization of heterogeneous MDDs," IEEE Transactions on CAD, Vol. 24, No. 11, pp. 1645-1659, Nov. 2005.

任意のn入力論理関数はBDDにより表現することができる(非特許文献3)。多出力論理関数を表現するBDDはMTBDD(multi-terminal binary decision diagram)と呼ばれ、高々n回のテーブル参照で多出力を同時に評価することができる(非特許文献4)。図1にMTBDDの例を示す。テーブル参照の回数の平均値を平均パス長という。BDDの評価時間は平均パス長に比例する。   An arbitrary n-input logical function can be expressed by BDD (Non-patent Document 3). A BDD representing a multi-output logic function is called an MTBDD (multi-terminal binary decision diagram), and multiple outputs can be evaluated simultaneously with at most n table references (Non-patent Document 4). FIG. 1 shows an example of MTBDD. The average value of the number of table references is called the average path length. The BDD evaluation time is proportional to the average path length.

ところで、BDDの評価時間を更に削減する方法として、多値論理決定グラフ(以下「MDD(Multiple-valued Decision Diagram)」という。)を用いる方法が知られている(非特許文献5参照)。MDDでは、入力変数はk個の2値変数の組に分割される。k個の2値変数の組は2値の超変数となる。2値の超変数で表現した決定グラフをMDD(k)と記す。BDDはMDD(1)と等価である。 By the way, as a method for further reducing the BDD evaluation time, a method using a multi-valued logic decision graph (hereinafter referred to as “MDD (Multiple-valued Decision Diagram)”) is known (see Non-Patent Document 5). In MDD, an input variable is divided into a set of k binary variables. A set of k binary variables becomes a super variable of 2 k values. The decision diagram representing a super variable 2 k values referred to MDD (k). BDD is equivalent to MDD (1).

MDD(2)は各節点が4分岐を持つので、本稿に於いてはMDD(2)をQDD(Quaternary Decision Diagram)という。入力変数を組み分けした際の各組の2値変数の個数がすべて等しいMDDを「ホモジニアスMDD」という。一方、各組の2値変数の個数がすべて等しくはないMDDを「ヘテロジニアスMDD」という。   Since MDD (2) has four branches at each node, MDD (2) is referred to as QDD (Quaternary Decision Diagram) in this paper. An MDD in which the number of binary variables in each group when the input variables are grouped is the same as a “homogeneous MDD”. On the other hand, an MDD in which the number of binary variables in each group is not all equal is referred to as “heterogeneous MDD”.

ヘテロジニアスMDDは、変数の組み分け(グルーピング)を工夫することによって、ホモジニアスMDDよりもテーブル参照回数と節点数を削減することができる(非特許文献8参照)。以下、本稿ではヘテロジニアスMTQDD(multi-terminal Quaternary Decision Diagram)を単にQDDと呼ぶ。図2に、図1のMTBDDを変換して得られたQDDを示す。図2のQDDは、最上位の節点のみが2分岐であり、他の節点は4分岐となっている。   Heterogeneous MDD can reduce the number of table references and the number of nodes compared to homogeneous MDD by devising variable grouping (grouping) (see Non-Patent Document 8). Hereinafter, in this paper, heterogeneous MTQDD (multi-terminal quaternary decision diagram) is simply referred to as QDD. FIG. 2 shows a QDD obtained by converting the MTBDD of FIG. In the QDD of FIG. 2, only the highest node has two branches, and the other nodes have four branches.

論理関数をMDD(k)で表現すると、BDDで表現した場合に比べてメモリの参照回数をしばしば1/kまで削減することができる(非特許文献6)。従って、kを増加させると、論理関数の評価時間を短縮することができる。しかしながら、1つの節点を表現するために必要なメモリ量は2のオーダーで増加する。そのため、多くのベンチマーク関数に於いて、k=2のときのMDD(k)の総メモリー量が最小となる(非特許文献7参照)。従って、論理関数の評価に於いては、BDDよりもQDDの方がより適しているといえる。 When a logical function is expressed in MDD (k), the number of memory references can often be reduced to 1 / k compared to when expressed in BDD (Non-patent Document 6). Therefore, when k is increased, the logical function evaluation time can be shortened. However, the amount of memory required to represent one node increases in the order of 2 k. Therefore, in many benchmark functions, the total memory amount of MDD (k) when k = 2 is minimized (see Non-Patent Document 7). Therefore, it can be said that QDD is more suitable than BDD in evaluating logical functions.

そこで、本発明の目的は、かかるQDDを模擬する演算を実行することが可能なブランチング・プログラム・マシンを提供することにある。また、本発明の目的は、さらなる高速化のため、ブランチング・プログラム・マシンを並列に接続した多段ブランチング・プログラム・マシン、並びに多段ブランチング・プログラム・マシンを並列に接続した並列プロセッサを提供することにある。   Therefore, an object of the present invention is to provide a branching program machine capable of executing an operation that simulates such QDD. Another object of the present invention is to provide a multistage branching program machine in which branching program machines are connected in parallel and a parallel processor in which multistage branching program machines are connected in parallel for further speeding up. There is to do.

本発明に係るブランチング・プログラム・マシンは、複数の入力変数が入力される変数入力バスと、
前記変数入力バスから入力変数を選択する入力セレクタと、
前記入力セレクタにより選択される入力変数が一時的に設定される入力レジスタと、
出力変数が設定される出力レジスタと、
前記出力レジスタに設定された出力変数が出力される変数出力バスと、
プログラムにおいて実行する各命令が記憶された命令メモリと、
命令メモリから順次読み出される命令が一時的に設定される命令レジスタと、
入力レジスタから読み出される入力変数と、命令レジスタから読み出される命令とに基づいて当該命令を実行する命令デコーダと、
次に読み出す命令の命令メモリ内のアドレス情報を記憶するプログラムカウンタと、
を備えたブランチング・プログラム・マシンであって、
前記命令メモリには、(1)参照する入力変数のインデックス、入力変数が0のときにジャンプする先の命令メモリのアドレス情報、及び入力変数が1のときにジャンプする先の命令メモリのアドレス情報を含む2アドレス2分岐命令、(2)参照する入力変数のインデックス、入力変数が第1の値のときにジャンプする先の命令メモリのアドレス情報、入力変数が第2の値のときにジャンプする先の命令メモリのアドレス情報、及び入力変数が第3の値のときにジャンプする先の命令メモリのアドレス情報を含む3アドレス4分岐命令、並びに、(3)出力先の出力レジスタのアドレス情報、及び出力データを含む出力命令の3種の命令を少なくとも含む命令系列が記憶され、前記プログラムカウンタに設定されたアドレス情報に従って該アドレス情報で指令されるアドレスに格納された命令を前記命令レジスタに出力するものであり、
前記命令デコーダは、(a)前記命令レジスタに設定された命令が前記2アドレス2分岐命令又は前記3アドレス4分岐命令の場合、当該命令で指定される入力変数のインデックスに基づき前記入力セレクタにより入力変数を選択して前記入力レジスタに設定し該入力レジスタに設定される入力変数の値に基づいて、当該命令で指定されるジャンプする先の命令メモリのアドレス情報を選択して前記プログラムカウンタに設定する処理を実行し、(b)前記命令レジスタに設定された命令が前記出力命令の場合、当該命令で指定される出力レジスタのアドレス情報に従って該アドレス情報で指令される前記出力レジスタのアドレスに、当該命令で指定される出力データを設定する処理を実行することを特徴とする。
A branching program machine according to the present invention includes a variable input bus to which a plurality of input variables are input,
An input selector for selecting an input variable from the variable input bus;
An input register in which an input variable selected by the input selector is temporarily set;
An output register in which the output variable is set;
A variable output bus to which an output variable set in the output register is output;
An instruction memory in which each instruction to be executed in the program is stored;
An instruction register in which instructions sequentially read from the instruction memory are temporarily set;
An instruction decoder that executes the instruction based on an input variable read from the input register and an instruction read from the instruction register;
A program counter for storing address information in an instruction memory of an instruction to be read next;
A branching program machine with
The instruction memory includes (1) an index of an input variable to be referred to, address information of an instruction memory to be jumped when the input variable is 0, and address information of an instruction memory to be jumped to when the input variable is 1. (2) The index of the input variable to be referenced, the address information of the instruction memory to jump to when the input variable is the first value, and the jump when the input variable is the second value The address information of the previous instruction memory, the 3-address 4-branch instruction including the address information of the previous instruction memory to jump when the input variable is the third value, and (3) the address information of the output register of the output destination, And an instruction series including at least three types of output instructions including output data are stored, and according to the address information set in the program counter, And outputs a command stored in the address commanded dress information in the instruction register,
When the instruction set in the instruction register is the 2-address 2-branch instruction or the 3-address 4-branch instruction, the instruction decoder is input by the input selector based on an index of an input variable designated by the instruction. Select a variable and set it in the input register. Based on the value of the input variable set in the input register, select the address information of the instruction memory to jump specified by the instruction and set it in the program counter. (B) When the instruction set in the instruction register is the output instruction, the address of the output register instructed by the address information according to the address information of the output register specified by the instruction is A process for setting output data specified by the instruction is executed.

この構成により、QDDを模擬する演算を実行することが可能となる。   With this configuration, it is possible to execute an operation that simulates QDD.

また、本発明に於いては、前記命令メモリに記憶された3アドレス4分岐命令は、参照する入力変数のインデックス、入力変数の値に対する分岐先アドレスの組み合わせを指定する機能選択フラグ、入力変数が第1の値のときにジャンプする先の命令メモリのアドレス情報ADDR0、入力変数が第2の値のときにジャンプする先の命令メモリのアドレス情報ADDR1、及び入力変数が第3の値のときにジャンプする先の命令メモリのアドレス情報ADDR2を含み、前記命令デコーダは、前記命令レジスタに設定された命令が前記3アドレス4分岐命令の場合には、当該命令で指定される入力変数のインデックスに基づき前記入力セレクタにより入力変数を選択して前記入力レジスタに設定し、該入力レジスタに設定される入力変数の値が前記第1,第2,第3の値の場合、それぞれ、当該命令で指定されるジャンプする先の命令メモリの前記アドレス情報ADDR0,ADDR1,ADDR2を選択し、該入力レジスタに設定される入力変数の値が前記第1,第2,又は第3の値以外の場合、現在の命令のアドレスPの次のアドレス(P+1)のアドレス情報を選択して前記プログラムカウンタに設定する処理を実行するようにすることもできる。   In the present invention, the 3-address 4-branch instruction stored in the instruction memory includes an index of an input variable to be referred to, a function selection flag for designating a combination of a branch destination address with respect to the value of the input variable, and an input variable. The address information ADDR0 of the instruction memory to jump to when the value is the first value, the address information ADDR1 of the instruction memory to jump to when the input variable is the second value, and the address information ADDR1 to the jump value when the input variable is the third value Including the address information ADDR2 of the instruction memory to jump to, and when the instruction set in the instruction register is the 3-address 4-branch instruction, the instruction decoder is based on the index of the input variable specified by the instruction. An input variable is selected by the input selector and set in the input register, and the value of the input variable set in the input register is the first, second, second In the case of the value of, the address information ADDR0, ADDR1, ADDR2 of the instruction memory to be jumped designated by the instruction is selected, and the values of the input variables set in the input register are the first and second values, respectively. If the value is other than the third value, the address information of the address (P + 1) next to the address P of the current instruction can be selected and set in the program counter.

本発明に係る多段ブランチング・プログラム・マシンは、前記のブランチング・プログラム・マシンが直列に接続され、後段の前記ブランチング・プログラム・マシンの変数入力バスの少なくとも一部には、前段の前記ブランチング・プログラム・マシンの前記変数出力バスが接続され、残りの変数入力バスには入力変数が入力されることを特徴とする。   In the multistage branching program machine according to the present invention, the branching program machine is connected in series, and at least part of the variable input bus of the branching program machine at the subsequent stage includes the preceding stage at the preceding stage. The variable output bus of the branching program machine is connected, and input variables are input to the remaining variable input buses.

このようにブランチング・プログラム・マシンを多段に直列に接続することで、より大きな論理関数の演算を行うことができる。   By thus connecting the branching program machines in multiple stages in series, a larger logical function can be calculated.

また、本発明に於いて、前記各ブランチング・プログラム・マシンの前記変数出力バスは、プログラマブル・ルーティング・ボックスを介して後段のブランチング・プログラム・マシンの前記変数入力バスに接続された構成とすることができる。   In the present invention, the variable output bus of each branching program machine is connected to the variable input bus of a subsequent branching program machine via a programmable routing box. can do.

これにより、各段のブランチング・プログラム・マシンの出力変数の順序を自由に組み替えて後段のブランチング・プログラム・マシンの入力変数として入力することができる。従って、順序回路を実現するための各段のブランチング・プログラム・マシンの命令のコーディングが容易となる。   As a result, the order of the output variables of the branching program machine at each stage can be freely rearranged and input as input variables of the subsequent branching program machine. Therefore, it is easy to code the instructions of the branching program machine at each stage for realizing the sequential circuit.

本発明に係る並列プロセッサは、複数個並列に接続された上述の多段ブランチング・プログラム・マシンと、
複数の選択入力ノードと複数の選択出力ノードとを備え、前記各多段ブランチング・プログラム・マシンの前記各変数出力バスが前記各選択入力ノードに接続され、選択出力ノードの少なくとも一部が前記各多段ブランチング・プログラム・マシンの変数入力バスの一部に接続され、前記各選択入力ノードと前記各選択出力ノードとの接続を組み替え可能としたプログラマブル相互接続回路と、を備えたことを特徴とする。
A parallel processor according to the present invention includes a plurality of branching program machines described above connected in parallel,
A plurality of selection input nodes and a plurality of selection output nodes, each variable output bus of each multi-stage branching program machine is connected to each selection input node, and at least a part of the selection output nodes A programmable interconnection circuit connected to a part of a variable input bus of a multistage branching program machine and capable of recombining the connection between each selected input node and each selected output node, To do.

これにより、並列演算が可能となり、論理関数の演算速度を更に速めることができる。   Thereby, parallel calculation becomes possible, and the calculation speed of the logical function can be further increased.

以上のように、本発明のブランチング・プログラム・マシンによれば、QDDを模擬する演算を実行することが可能となる。また、本発明の多段ブランチング・プログラム・マシンによれば、多段化することでより大きな論理関数の演算を行うことが可能となる。また、本発明に係る並列プロセッサによれば、並列演算により論理関数の演算速度を更に速めることができる。   As described above, according to the branching program machine of the present invention, it is possible to execute an operation that simulates QDD. In addition, according to the multistage branching program machine of the present invention, it is possible to perform a larger logical function operation by multistage. Further, according to the parallel processor of the present invention, the operation speed of the logical function can be further increased by parallel operation.

MTBDDの例である。It is an example of MTBDD. 図1のMTBDDを変換して得られたQDDである。It is QDD obtained by converting MTBDD of FIG. 本発明の実施例1に係るブランチング・プログラム・マシンの構成を表すブロック図である。It is a block diagram showing the structure of the branching program machine which concerns on Example 1 of this invention. 図3の出力レジスタを構成するダブルランク・フリップフロップを示す図である。It is a figure which shows the double rank flip-flop which comprises the output register of FIG. 各命令のニーモニックとメモリ内部表現を示す図である。It is a figure which shows the mnemonic of each instruction, and memory internal representation. 4種の3アドレス4分岐命令における分岐先アドレスの組み合わせを示す図である。It is a figure which shows the combination of the branch destination address in four types of 3 address 4 branch instructions. 図5の命令セットのコードによって各3アドレス4分岐命令(Q_BRANCH)のアドレスを割り当てた結果である。This is the result of assigning the addresses of each 3-address 4-branch instruction (Q_BRANCH) by the code of the instruction set in FIG. 実施例2に係る多段ブランチング・プログラム・マシンの構成を表すブロック図である。FIG. 6 is a block diagram illustrating a configuration of a multistage branching program machine according to a second embodiment. 実施例3に係る並列プロセッサ30の構成を表すブロック図である。FIG. 10 is a block diagram illustrating a configuration of a parallel processor 30 according to a third embodiment.

以下、本発明を実施するための形態について、図面を参照しながら説明する。   Hereinafter, embodiments for carrying out the present invention will be described with reference to the drawings.

図3は、本発明の実施例1に係るブランチング・プログラム・マシン(以下、略して「BM」という。)の構成を表す図である。   FIG. 3 is a diagram illustrating a configuration of a branching program machine (hereinafter, referred to as “BM” for short) according to the first embodiment of the present invention.

BM1は、変数入力バス2、入力セレクタ3、入力レジスタ4、レジスタ・ファイル5、変数出力バス6、命令メモリ7、命令レジスタ8、命令デコーダ9、プログラムカウンタ10、及びフラグ出力バス11を備えている。   The BM 1 includes a variable input bus 2, an input selector 3, an input register 4, a register file 5, a variable output bus 6, an instruction memory 7, an instruction register 8, an instruction decoder 9, a program counter 10, and a flag output bus 11. Yes.

変数入力バス2は、MPUなどの外部回路から複数の入力変数が入力されるバスである。入力セレクタ3は、変数入力バス2から入力される入力変数を選択するセレクタである。入力セレクタ3としては、シフタ、クロスバースイッチ、マルチプレクサ等が使用される。入力レジスタ4は、入力セレクタ3により選択される入力変数が一時的に設定されるレジスタである。   The variable input bus 2 is a bus to which a plurality of input variables are input from an external circuit such as an MPU. The input selector 3 is a selector that selects an input variable input from the variable input bus 2. As the input selector 3, a shifter, a crossbar switch, a multiplexer or the like is used. The input register 4 is a register in which an input variable selected by the input selector 3 is temporarily set.

命令メモリ7は、プログラムにおいて実行する各命令が記憶されたメモリである。本実施例では、命令メモリ7は、語長が32ビットのBM命令を256個格納することができる。命令レジスタ8は、命令メモリ7から順次読み出される命令が一時的に設定されるレジスタである。命令デコーダ9は、命令メモリ7から命令レジスタ8へ読み出された命令を解釈し、実行を行うデコーダである。この命令デコーダ9は、入力レジスタ4へ設定される入力変数と、命令レジスタ8へ設定される命令とに基づいて当該命令を実行する。プログラムカウンタ10は、次に読み出す命令の命令メモリ7内のアドレス情報を記憶する。   The instruction memory 7 is a memory in which each instruction to be executed in the program is stored. In this embodiment, the instruction memory 7 can store 256 BM instructions having a word length of 32 bits. The instruction register 8 is a register in which instructions sequentially read from the instruction memory 7 are temporarily set. The instruction decoder 9 is a decoder that interprets and executes an instruction read from the instruction memory 7 to the instruction register 8. The instruction decoder 9 executes the instruction based on the input variable set in the input register 4 and the instruction set in the instruction register 8. The program counter 10 stores address information in the instruction memory 7 of an instruction to be read next.

ここで、命令メモリ7には、2アドレス2分岐命令(B_BRANCH)、3アドレス4分岐命令(Q_BRANCH)、データセット命令(出力命令)(DATASET)、及び無条件ジャンプ命令の4種類の命令セットからなる命令系列が記憶されている。2アドレス2分岐命令(B_BRANCH)、3アドレス4分岐命令(Q_BRANCH)、及び無条件ジャンプ命令は、MTBDD又はQDDの非終端節点を評価する命令であり、データセット命令(DATASET)はQDDの終端節点を評価する命令である。図5に各命令のニーモニックとメモリ内部表現を示す。   Here, the instruction memory 7 includes four types of instruction sets: a 2-address 2-branch instruction (B_BRANCH), a 3-address 4-branch instruction (Q_BRANCH), a data set instruction (output instruction) (DATASET), and an unconditional jump instruction. An instruction sequence is stored. The 2-address 2-branch instruction (B_BRANCH), 3-address 4-branch instruction (Q_BRANCH), and unconditional jump instruction are instructions for evaluating the non-terminal node of MTBDD or QDD, and the data set instruction (DATASET) is the terminal node of QDD. An instruction to evaluate. FIG. 5 shows the mnemonics of each instruction and the internal representation of the memory.

尚、1命令の長さを削減するために、2アドレス2分岐命令(B_BRANCH)に代わる1アドレス2分岐命令も提案されているが(例えば、非特許文献2参照)、1アドレス方式を用いると実行時間がしばしば増加する。そこで、本発明に於いては2アドレス方式の2分岐命令を採用している。   In order to reduce the length of one instruction, a one-address two-branch instruction that replaces a two-address two-branch instruction (B_BRANCH) has also been proposed (see, for example, Non-Patent Document 2). Execution time often increases. Therefore, in the present invention, a 2-branch instruction using the 2-address method is employed.

また、QDDにおいて、2変数を2個同時に評価する命令は、4アドレス4分岐命令によって実現できる。4アドレス4分岐命令は2分岐命令に比べて評価時間を半分に削減することができる。しかしながら、4アドレス4分岐命令は長い命令語を必要とし、現在の組み込みプロセッサの標準的な語長(32ビット)には適していない。そこで、本発明では4アドレス4分岐命令の代わりに3アドレス4分岐命令(Q_BRANCH)を採用している。   In QDD, an instruction that simultaneously evaluates two variables can be realized by a 4-address 4-branch instruction. The 4-address 4-branch instruction can reduce the evaluation time in half compared to the 2-branch instruction. However, the 4-address 4-branch instruction requires a long instruction word and is not suitable for the standard word length (32 bits) of the current embedded processor. Therefore, in the present invention, a 3-address 4-branch instruction (Q_BRANCH) is employed instead of the 4-address 4-branch instruction.

図5(a)は2アドレス2分岐命令(B_BRANCH)である。2アドレス2分岐命令(B_BRANCH)は、2つの分岐先アドレスのうち、1つのアドレスにジャンプする命令である。2アドレス2分岐命令は、参照する入力変数のインデックス(INDEX)、入力変数が0のときにジャンプする先の命令メモリのアドレス情報(ADDR0)、及び入力変数が1のときにジャンプする先の命令メモリのアドレス情報(ADDR1)を含む。インデックス(INDEX)で指定された変数の値が0であればアドレス情報(ADDR0)に指定されたアドレスにジャンプし、そうでなければアドレス情報(ADDR1)に指定されたアドレスにジャンプする。本実施例では、図5(a)に示すように、アドレス情報(ADDR0),(ADDR1)は8ビット、入力変数のインデックス(INDEX)は6ビットで表現する。また、2アドレス2分岐命令(B_BRANCH)のメモリ内部表現における29−31ビットに格納されたコード「111」は、この命令が2アドレス2分岐命令(B_BRANCH)であることを表す命令識別コードである。   FIG. 5A shows a 2-address 2-branch instruction (B_BRANCH). The 2-address 2-branch instruction (B_BRANCH) is an instruction that jumps to one of the two branch destination addresses. The 2-address 2-branch instruction is the index of the input variable to be referenced (INDEX), the address information of the instruction memory to jump to when the input variable is 0 (ADDR0), and the instruction to jump to when the input variable is 1 Contains memory address information (ADDR1). If the value of the variable designated by the index (INDEX) is 0, the program jumps to the address designated by the address information (ADDR0), otherwise jumps to the address designated by the address information (ADDR1). In this embodiment, as shown in FIG. 5A, the address information (ADDR0) and (ADDR1) are expressed by 8 bits, and the input variable index (INDEX) is expressed by 6 bits. The code “111” stored in bits 29-31 in the memory internal representation of the 2-address 2-branch instruction (B_BRANCH) is an instruction identification code indicating that this instruction is a 2-address 2-branch instruction (B_BRANCH). .

図5(b)はデータセット命令(DATASET)である。データセット命令(DATASET)は指定されたデータを指定された出力レジスタに出力する命令である。データセット命令(DATASET)は、出力先の出力レジスタのアドレス情報(REG)、出力データ(DATA)、及び命令実行後にジャンプする先の命令メモリのアドレス情報(ADDR)を含む。本実施例では、図5(b)に示すように、出力データ(DATA)は16ビット、アドレス情報(ADDR)は8ビット、出力レジスタのアドレス情報(REG)は6ビットで表現する。また、データセット命令(DATASET)のメモリ内部表現における30−31ビットに格納されたコード「10」は、この命令がデータセット命令(DATASET)であることを表す命令識別コードである。   FIG. 5B shows a data set instruction (DATASET). The data set instruction (DATASET) is an instruction for outputting specified data to a specified output register. The data set instruction (DATASET) includes output destination address register address information (REG), output data (DATA), and destination instruction memory address information (ADDR) to be jumped to after execution of the instruction. In this embodiment, as shown in FIG. 5B, the output data (DATA) is expressed by 16 bits, the address information (ADDR) is expressed by 8 bits, and the address information (REG) of the output register is expressed by 6 bits. The code “10” stored in bits 30 to 31 in the internal representation of the data set instruction (DATASET) is an instruction identification code indicating that this instruction is a data set instruction (DATASET).

図5(c)は3アドレス4分岐命令(Q_BRANCH)である。3アドレス4分岐命令(Q_BRANCH)は、4つの分岐先アドレスのうち、1つのアドレスにジャンプする命令である。3アドレス4分岐命令(Q_BRANCH)は、参照する入力変数のインデックス(INDEX)、入力変数の値に対する分岐先アドレスの組み合わせを指定する機能選択フラグ(SEL)、入力変数が第1の値のときにジャンプする先の命令メモリのアドレス情報(ADDR0)、入力変数が第2の値のときにジャンプする先の命令メモリのアドレス情報(ADDR1)、及び入力変数が第3の値のときにジャンプする先の命令メモリのアドレス情報(ADDR2)を含む。本実施例では、図5(c)に示すように、アドレス情報(ADDR0),(ADDR1),(ADDR2)は8ビット、入力変数のインデックス(INDEX)は5ビット、機能選択フラグ(SEL)は2ビットの合計31ビットで表現する。また、3アドレス4分岐命令(Q_BRANCH)のメモリ内部表現における31ビットに格納されたコード「0」は、この命令が3アドレス4分岐命令(Q_BRANCH)であることを表す命令識別コードである。   FIG. 5C shows a 3-address 4-branch instruction (Q_BRANCH). The 3-address 4-branch instruction (Q_BRANCH) is an instruction that jumps to one of the four branch destination addresses. The 3-address 4-branch instruction (Q_BRANCH) is the index of the input variable to be referenced (INDEX), the function selection flag (SEL) that specifies the combination of the branch destination address for the value of the input variable, and when the input variable is the first value Address information (ADDR0) of the instruction memory to jump to, address information (ADDR1) of the instruction memory to jump to when the input variable is the second value, and destination to jump when the input variable is the third value Instruction memory address information (ADDR2). In this embodiment, as shown in FIG. 5C, the address information (ADDR0), (ADDR1), (ADDR2) is 8 bits, the input variable index (INDEX) is 5 bits, and the function selection flag (SEL) is It is expressed by a total of 31 bits of 2 bits. The code “0” stored in 31 bits in the internal memory representation of the 3-address 4-branch instruction (Q_BRANCH) is an instruction identification code indicating that this instruction is a 3-address 4-branch instruction (Q_BRANCH).

3アドレス4分岐命令(Q_BRANCH)において、4つの分岐先アドレスのうちの3つのアドレスは、アドレス情報(ADDR0, ADDR1, ADDR2)により指定される。残り1つの分岐先アドレスは、現在の命令のアドレス(PC)の次のアドレス(PC+1)とする。   In the 3-address 4-branch instruction (Q_BRANCH), three of the four branch destination addresses are specified by address information (ADDR0, ADDR1, ADDR2). The remaining one branch destination address is the address (PC + 1) next to the address (PC) of the current instruction.

本発明に於いては、評価時間とステップ数の削減のため、図6に示すような4種の3アドレス4分岐命令を用いる。3アドレス4分岐命令(Q_BRANCH)内の機能選択フラグ(SEL)は、4種の3アドレス4分岐命令のうちの1つを指定するフラグである。入力変数のインデックス(INDEX)で指定された変数をiとすると、SEL=iのときに次のアドレス(PC+1)にジャンプする。アドレスの割り付けを工夫することによって、ステップ数や実行時間を最適化することができる。   In the present invention, four types of 3-address 4-branch instructions as shown in FIG. 6 are used to reduce the evaluation time and the number of steps. The function selection flag (SEL) in the 3-address 4-branch instruction (Q_BRANCH) is a flag for designating one of four types of 3-address 4-branch instructions. Assuming that the variable designated by the index (INDEX) of the input variable is i, jump to the next address (PC + 1) when SEL = i. By devising the address assignment, the number of steps and the execution time can be optimized.

尚、3アドレス4分岐命令(Q_BRANCH)を使用する場合、現在の命令アドレス(PC)の次のアドレス(PC+1)が、他の3アドレス4分岐命令(Q_BRANCH)のPC+1と競合する場合が生じる。従って、かかる競合を避けるため、無条件ジャンプ命令が必要となる。無条件ジャンプ命令は、強制的に指定されたアドレスにジャンプする命令である。この無条件ジャンプ命令は、上述の2アドレス2分岐命令(B_BRANCH)を用いて実現される。無条件ジャンプ命令の場合、インデックス(INDEX)には無効値(例えば「0」)が設定され、アドレス情報(ADDR0)及びアドレス情報(ADDR1)には同じジャンプ先のアドレスが設定される。これにより、無条件ジャンプ命令が実行されると、入力変数の値を評価することなく、無条件にアドレス情報(ADDR0),(ADDR1)に設定されたアドレスにジャンプする。   When using a 3-address 4-branch instruction (Q_BRANCH), the address (PC + 1) next to the current instruction address (PC) conflicts with PC + 1 of another 3-address 4-branch instruction (Q_BRANCH). Cases arise. Therefore, an unconditional jump instruction is required to avoid such contention. The unconditional jump instruction is an instruction for forcibly jumping to a designated address. This unconditional jump instruction is realized by using the above-described 2-address 2-branch instruction (B_BRANCH). In the case of an unconditional jump instruction, an invalid value (for example, “0”) is set in the index (INDEX), and the same jump destination address is set in the address information (ADDR0) and address information (ADDR1). As a result, when the unconditional jump instruction is executed, it jumps unconditionally to the address set in the address information (ADDR0) and (ADDR1) without evaluating the value of the input variable.

図3の命令デコーダ9は、命令レジスタ8に設定された命令が2アドレス2分岐命令(B_BRANCH)又は3アドレス4分岐命令(Q_BRANCH)の場合、当該命令で指定される入力変数のインデックス(INDEX)に基づき入力セレクタ3により入力変数を選択して入力レジスタ4に設定し、入力レジスタ4に設定される入力変数の値({0,1}又は{00,01,10,11})に基づいて、当該命令で指定されるジャンプする先の命令メモリのアドレス情報((ADDR0),(ADDR1),(ADDR2))を選択してプログラムカウンタ10に設定する処理を実行する。また、命令レジスタ8に設定された命令がデータセット命令(DATASET)の場合、当該命令で指定される出力レジスタのアドレス情報(REG)で指令されるレジスタ・ファイル5内の出力レジスタに、当該命令で指定される出力データ(DATA)を設定する処理を実行し、当該命令で指定されるジャンプする先の命令メモリのアドレス情報(ADDR)を選択してプログラムカウンタ10に設定する処理を実行する。   When the instruction set in the instruction register 8 is a 2-address 2-branch instruction (B_BRANCH) or a 3-address 4-branch instruction (Q_BRANCH), the instruction decoder 9 in FIG. Based on the input variable is selected and set in the input register 4 based on the value of the input variable ({0, 1} or {00, 01, 10, 11}) set in the input register 4 The address information ((ADDR0), (ADDR1), (ADDR2)) of the jump destination instruction memory specified by the instruction is selected and set in the program counter 10. When the instruction set in the instruction register 8 is a data set instruction (DATASET), the instruction is stored in the output register in the register file 5 instructed by the address information (REG) of the output register specified by the instruction. A process for setting the output data (DATA) designated by the instruction is executed, the address information (ADDR) of the instruction memory to be jumped designated by the instruction is selected, and a process for setting the program counter 10 is executed.

図3のレジスタ・ファイル5は、「出力レジスタ」や「状態レジスタ」、及び「入力選択レジスタ」や「フラグレジスタ」と呼ばれるレジスタで構成される。出力レジスタ及び状態レジスタは、出力変数が設定されるレジスタである。出力レジスタ及び状態レジスタは、図4に示したようなダブルランク・フリップフロップにより構成されている。   The register file 5 in FIG. 3 includes registers called “output registers” and “status registers”, and “input selection registers” and “flag registers”. The output register and the status register are registers in which output variables are set. The output register and the status register are constituted by double rank flip-flops as shown in FIG.

図4において、L1,L2はDラッチである。出力レジスタや状態レジスタはデータセット命令によって更新されるが、このデータセット命令は16ビット毎にしか値を更新することができない。そのため、16ビットよりもビット数の大きな出力や状態変数を持つ回路を評価する場合、前後の状態の値が混ざってしまうという問題が生じる。そこで、このダブルランク・フリップフロップを用いて、状態遷移信号(S_Clock)がHighのときに一度に値を更新する。   In FIG. 4, L1 and L2 are D latches. The output register and status register are updated by a data set instruction, but the value of this data set instruction can be updated only every 16 bits. Therefore, when evaluating a circuit having an output or state variable having a larger number of bits than 16 bits, there is a problem that the values of the previous and subsequent states are mixed. Therefore, this double rank flip-flop is used to update the value at a time when the state transition signal (S_Clock) is High.

入力選択レジスタには、入力セレクタ3が入力レジスタ4に設定する変数を選択するための入力選択信号(ISR)が設定される。   An input selection signal (ISR) for selecting a variable set in the input register 4 by the input selector 3 is set in the input selection register.

フラグレジスタは、BM1の動作を指定する特殊なレジスタである。フラグレジスタは、「RUNビット」、「IRQビット」、「RCOPYビット」、「ACTビット」、及び「FETCHビット」を有し、各ビットはそれぞれ以下のような固有の役割を持つ。
(1)「RUNビット」は、1のときのみBM1のプログラムカウンタ10の更新が行われる。
(2)「IRQビット」は、1のとき割り込み信号が外部に送られる。
(3)「RCOPYビット」は、1のときダブルランク・フリップフロップのデータ転送が行われる。
(4)「ACTビット」は、1のとき後述するBM1を接続する回路を起動する。
(5)「FETCHビット」は1のとき入力レジスタ4に値が取り込まれる。
The flag register is a special register that specifies the operation of BM1. The flag register has “RUN bit”, “IRQ bit”, “RCOPY bit”, “ACT bit”, and “FETCH bit”, and each bit has a specific role as follows.
(1) Only when the “RUN bit” is 1, the program counter 10 of the BM 1 is updated.
(2) When the “IRQ bit” is 1, an interrupt signal is sent to the outside.
(3) When the “RCOPY bit” is 1, data transfer of the double rank flip-flop is performed.
(4) When the “ACT bit” is 1, it activates a circuit for connecting BM1 described later.
(5) When the “FETCH bit” is 1, the value is taken into the input register 4.

変数出力バス6は、レジスタ・ファイル5内の出力レジスタや状態レジスタに設定された出力変数及び状態変数が出力されるバスである。また、フラグ出力バス11は、レジスタ・ファイル5内のフラグレジスタに設定された各フラグが出力されるバスである。   The variable output bus 6 is a bus through which output variables and state variables set in the output registers and state registers in the register file 5 are output. The flag output bus 11 is a bus to which each flag set in the flag register in the register file 5 is output.

BM1は、出力レジスタに設定された出力変数を入力レジスタ4にフィードバックして順序回路を実現することができる。入力レジスタ4には、これらのフィードバックされた値や外部入力や隣接するBM1から送られてくる出力変数が設定される。これらは、入力選択レジスタの値を用いて、入力セレクタ3が選択する。   The BM 1 can realize a sequential circuit by feeding back the output variable set in the output register to the input register 4. In the input register 4, these fed back values, external inputs, and output variables sent from the adjacent BM 1 are set. These are selected by the input selector 3 using the value of the input selection register.

以上のように構成された本実施例に係るBM1について、以下その動作を説明する。ここでは簡単な具体例として、図1に示したMTBDDを実行する場合と、図2に示したQDDを実行する場合とを採り上げてBM1の動作を説明することにする。   The operation of the BM 1 according to this embodiment configured as described above will be described below. Here, as a simple specific example, the case of executing MTBDD shown in FIG. 1 and the case of executing QDD shown in FIG. 2 will be described and the operation of BM1 will be described.

(1)図1に示したMTBDDを実行する場合
図1に示したMTBDDを実行する場合に命令メモリ7に格納される命令セットのコードは次表の通りである。
(1) When the MTBDD shown in FIG. 1 is executed When the MTBDD shown in FIG. 1 is executed, the code of the instruction set stored in the instruction memory 7 is as shown in the following table.

Figure 0005382503
Figure 0005382503

まず、初期状態では、プログラムカウンタ10にはアドレス情報としてA0が設定される。   First, in the initial state, A0 is set in the program counter 10 as address information.

プログラムの実行が開始されると、まず、命令メモリ7は、プログラムカウンタ10のアドレス情報A0を参照して、アドレスA0に格納された命令B_BRANCH (A1,A7),x0を命令レジスタ8に出力し設定する。命令デコーダ9は、命令レジスタ8に設定された命令B_BRANCH (A1,A7),x0を参照し、解読・実行する。この場合、2アドレス2分岐命令なので、まず、入力変数のインデックス(INDEX)をレジスタ・ファイル5内の「入力選択レジスタ」に設定し、レジスタ・ファイル5内の「フラグレジスタ」の「FETCHビット」を一定期間1に設定する。入力セレクタ3は、「FETCHビット」を1に設定されると、「入力選択レジスタ」に設定された入力変数x0のインデックス(INDEX)に従って、変数入力バス2のラインの1つを選択し、選択されたラインから入力される入力変数x0を入力レジスタ4に設定する。次に、命令デコーダ9は、入力レジスタ4に設定された入力変数x0の値を参照し、x0が0の場合にはアドレスA1をプログラムカウンタ10に設定し、x0が1の場合にはアドレスA7をプログラムカウンタ10に設定する。   When the execution of the program is started, first, the instruction memory 7 refers to the address information A0 of the program counter 10 and outputs the instruction B_BRANCH (A1, A7), x0 stored at the address A0 to the instruction register 8. Set. The instruction decoder 9 refers to the instruction B_BRANCH (A1, A7), x0 set in the instruction register 8, and decodes and executes it. In this case, since it is a 2-address 2-branch instruction, first, the index (INDEX) of the input variable is set to the “input selection register” in the register file 5 and the “FETCH bit” of the “flag register” in the register file 5 Is set to 1 for a certain period. When the “FETCH bit” is set to 1, the input selector 3 selects and selects one of the lines of the variable input bus 2 according to the index (INDEX) of the input variable x0 set in the “input selection register”. The input variable x0 input from the line thus set is set in the input register 4. Next, the instruction decoder 9 refers to the value of the input variable x0 set in the input register 4. When x0 is 0, the address A1 is set in the program counter 10, and when x0 is 1, the address A7 is set. Is set in the program counter 10.

ここでは例として、x0=1であったとする。この場合、プログラムカウンタ10にはアドレスA7が設定される。   Here, as an example, it is assumed that x0 = 1. In this case, the address A7 is set in the program counter 10.

次に、命令メモリ7は、プログラムカウンタ10のアドレス情報A7を参照して、アドレスA7に格納された命令B_BRANCH (A3,A8),x1を命令レジスタ8に出力し設定する。命令デコーダ9は、命令レジスタ8に設定された命令B_BRANCH (A3,A8),x1を参照し、解読・実行する。この場合、2アドレス2分岐命令なので、まず、入力変数x1のインデックス(INDEX)をレジスタ・ファイル5内の「入力選択レジスタ」に設定し、レジスタ・ファイル5内の「フラグレジスタ」の「FETCHビット」を一定期間1に設定する。入力セレクタ3は、「FETCHビット」を1に設定されると、「入力選択レジスタ」に設定された入力変数x1のインデックス(INDEX)に従って、変数入力バス2のラインの1つを選択し、選択されたラインから入力される入力変数x1を入力レジスタ4に設定する。次に、命令デコーダ9は、入力レジスタ4に設定された入力変数x1の値を参照し、x1が0の場合にはアドレスA3を、x1が1の場合にはアドレスA8をプログラムカウンタ10に設定する。   Next, the instruction memory 7 refers to the address information A7 of the program counter 10, and outputs and sets the instruction B_BRANCH (A3, A8), x1 stored in the address A7 to the instruction register 8. The instruction decoder 9 reads and decodes and executes the instruction B_BRANCH (A3, A8), x1 set in the instruction register 8. In this case, since it is a 2-address 2-branch instruction, first, the index (INDEX) of the input variable x1 is set in the “input selection register” in the register file 5 and the “FETCH bit” in the “flag register” in the register file 5 is set. Is set to 1 for a certain period. When the “FETCH bit” is set to 1, the input selector 3 selects and selects one of the lines of the variable input bus 2 according to the index (INDEX) of the input variable x1 set in the “input selection register”. The input variable x1 input from the line thus set is set in the input register 4. Next, the instruction decoder 9 refers to the value of the input variable x1 set in the input register 4. When x1 is 0, the address A3 is set in the program counter 10, and when x1 is 1, the address A8 is set in the program counter 10. To do.

ここでは例として、x1=0であったとする。この場合、プログラムカウンタ10にはアドレスA3が設定される。   Here, as an example, it is assumed that x1 = 0. In this case, the address A3 is set in the program counter 10.

次に、命令メモリ7は、プログラムカウンタ10のアドレス情報A3を参照して、アドレスA3に格納された命令B_BRANCH (A4,A5),x2を命令レジスタ8に出力し設定する。命令デコーダ9は、命令レジスタ8に設定された命令B_BRANCH (A4,A5),x2を参照し、解読・実行する。この場合、2アドレス2分岐命令なので、まず、入力変数x2のインデックス(INDEX)をレジスタ・ファイル5内の「入力選択レジスタ」に設定し、レジスタ・ファイル5内の「フラグレジスタ」の「FETCHビット」を一定期間1に設定する。入力セレクタ3は、「FETCHビット」を1に設定されると、「入力選択レジスタ」に設定された入力変数x2のインデックス(INDEX)に従って、変数入力バス2のラインの1つを選択し、選択されたラインから入力される入力変数x2を入力レジスタ4に設定する。次に、命令デコーダ9は、入力レジスタ4に設定された入力変数x2の値を参照し、x2が0の場合にはアドレスA4を、x2が1の場合にはアドレスA5をプログラムカウンタ10に設定する。   Next, the instruction memory 7 refers to the address information A3 of the program counter 10 and outputs and sets the instruction B_BRANCH (A4, A5), x2 stored at the address A3 to the instruction register 8. The instruction decoder 9 refers to the instruction B_BRANCH (A4, A5), x2 set in the instruction register 8, and decodes and executes it. In this case, since it is a 2-address 2-branch instruction, first, the index (INDEX) of the input variable x2 is set in the “input selection register” in the register file 5 and the “FETCH bit” in the “flag register” in the register file 5 is set. Is set to 1 for a certain period. When the “FETCH bit” is set to 1, the input selector 3 selects and selects one of the lines of the variable input bus 2 according to the index (INDEX) of the input variable x2 set in the “input selection register”. The input variable x2 input from the line thus set is set in the input register 4. Next, the instruction decoder 9 refers to the value of the input variable x2 set in the input register 4. When x2 is 0, the address A4 is set in the program counter 10, and when x2 is 1, the address A5 is set in the program counter 10. To do.

ここでは例として、x2=0であったとする。この場合、プログラムカウンタ10にはアドレスA4が設定される。   Here, as an example, it is assumed that x2 = 0. In this case, the address A4 is set in the program counter 10.

次に、命令メモリ7は、プログラムカウンタ10のアドレス情報A4を参照して、アドレスA4に格納された命令DATASET 10,0,A0を命令レジスタ8に出力し設定する。命令デコーダ9は、命令レジスタ8に設定された命令DATASET 10,0,A0を参照し、解読・実行する。この場合、データセット命令なので、まず、レジスタ・ファイル5内のアドレス0にある「出力レジスタ」に出力データ「10」を出力し設定する。そして、次に、命令デコーダ9は、アドレスA0をプログラムカウンタ10に設定した後、終端節点なのでプログラムの実行を終了する。   Next, the instruction memory 7 refers to the address information A4 of the program counter 10 and outputs and sets the instructions DATASET 10, 0, A0 stored in the address A4 to the instruction register 8. The instruction decoder 9 refers to the instruction DATASET 10, 0, A0 set in the instruction register 8 and decodes and executes it. In this case, since it is a data set instruction, first, output data “10” is set to “output register” at address 0 in register file 5. Then, the instruction decoder 9 sets the address A0 in the program counter 10 and then terminates the program execution because it is a terminal node.

(2)図2に示したQDDを実行する場合
図2に示したQDDを実行する場合に命令メモリ7に格納される命令セットのコードは次表の通りである。
(2) When the QDD shown in FIG. 2 is executed The code of the instruction set stored in the instruction memory 7 when the QDD shown in FIG. 2 is executed is as shown in the following table.

Figure 0005382503
Figure 0005382503

この命令セットのコードによって各3アドレス4分岐命令(Q_BRANCH)のアドレスを割り当てた結果を図7に示す。   FIG. 7 shows the result of assigning the addresses of each 3-address 4-branch instruction (Q_BRANCH) by this instruction set code.

まず、初期状態では、プログラムカウンタ10にはアドレス情報としてA0が設定される。   First, in the initial state, A0 is set in the program counter 10 as address information.

プログラムの実行が開始されると、まず、命令メモリ7は、プログラムカウンタ10のアドレス情報A0を参照して、アドレスA0に格納された命令Q_BRANCH (A2,A2,A5),X0,00を命令レジスタ8に出力し設定する。命令デコーダ9は、命令レジスタ8に設定された命令Q_BRANCH (A2,A2,A5),X0,00を参照し、解読・実行する。この場合、3アドレス4分岐命令(Q_BRANCH)なので、まず、入力変数x0のインデックス(INDEX)をレジスタ・ファイル5内の「入力選択レジスタ」に設定し、レジスタ・ファイル5内の「フラグレジスタ」の「FETCHビット」を一定期間1に設定する。入力セレクタ3は、「FETCHビット」を1に設定されると、「入力選択レジスタ」に設定された入力変数x0のインデックス(INDEX)に従って、変数入力バス2のラインの1つを選択し、選択されたラインから入力される入力変数x0を入力レジスタ4に設定する。次に、命令デコーダ9は、入力レジスタ4に設定された入力変数x0の値を参照し、機能選択フラグ(SEL)が「00」なので、x0が「00」の場合には現在のアドレスA0の次のアドレスA1を、x0が「01」の場合にはアドレスA2を、x0が「10」の場合にはアドレスA2を、x0が「11」の場合にはアドレスA5をプログラムカウンタ10に設定する。   When execution of the program is started, first, the instruction memory 7 refers to the address information A0 of the program counter 10 and stores the instruction Q_BRANCH (A2, A2, A5), X0,00 stored at the address A0 in the instruction register. Output to 8 and set. The instruction decoder 9 refers to the instruction Q_BRANCH (A2, A2, A5), X0,00 set in the instruction register 8, and decodes and executes it. In this case, since it is a 3-address 4-branch instruction (Q_BRANCH), first, the index (INDEX) of the input variable x0 is set to the “input selection register” in the register file 5, and the “flag register” in the register file 5 is set. The “FETCH bit” is set to 1 for a certain period. When the “FETCH bit” is set to 1, the input selector 3 selects and selects one of the lines of the variable input bus 2 according to the index (INDEX) of the input variable x0 set in the “input selection register”. The input variable x0 input from the line thus set is set in the input register 4. Next, the instruction decoder 9 refers to the value of the input variable x0 set in the input register 4, and since the function selection flag (SEL) is “00”, when x0 is “00”, the instruction decoder 9 has the current address A0. The next address A1 is set in the program counter 10 when x0 is “01”, the address A2 is set when x0 is “10”, and the address A5 is set when x0 is “11”. .

ここでは例として、x0=11であったとする。この場合、プログラムカウンタ10にはアドレスA5が設定される。   Here, as an example, it is assumed that x0 = 11. In this case, the address A5 is set in the program counter 10.

次に、命令メモリ7は、プログラムカウンタ10のアドレス情報A5を参照して、アドレスA5に格納された命令Q_BRANCH (A4,A4,A4),X1,10を命令レジスタ8に出力し設定する。命令デコーダ9は、命令レジスタ8に設定された命令Q_BRANCH (A4,A4,A4),X1,10を参照し、解読・実行する。この場合、3アドレス4分岐命令(Q_BRANCH)なので、まず、入力変数x1のインデックス(INDEX)をレジスタ・ファイル5内の「入力選択レジスタ」に設定し、レジスタ・ファイル5内の「フラグレジスタ」の「FETCHビット」を一定期間1に設定する。入力セレクタ3は、「FETCHビット」を1に設定されると、「入力選択レジスタ」に設定された入力変数x1のインデックス(INDEX)に従って、変数入力バス2のラインの1つを選択し、選択されたラインから入力される入力変数x1を入力レジスタ4に設定する。次に、命令デコーダ9は、入力レジスタ4に設定された入力変数x1の値を参照し、機能選択フラグ(SEL)が「10」なので、x1が「00」の場合にはアドレスA4を、x0が「01」の場合にはアドレスA4を、x1が「10」の場合には現在のアドレスA5の次のアドレスA6を、x0が「11」の場合にはアドレスA4をプログラムカウンタ10に設定する。   Next, the instruction memory 7 refers to the address information A5 of the program counter 10 and outputs and sets the instructions Q_BRANCH (A4, A4, A4), X1, 10 stored in the address A5 to the instruction register 8. The instruction decoder 9 refers to the instructions Q_BRANCH (A4, A4, A4), X1, 10 set in the instruction register 8, and decodes and executes them. In this case, since it is a 3-address 4-branch instruction (Q_BRANCH), first, the index (INDEX) of the input variable x1 is set to the “input selection register” in the register file 5, and the “flag register” in the register file 5 is set. The “FETCH bit” is set to 1 for a certain period. When the “FETCH bit” is set to 1, the input selector 3 selects and selects one of the lines of the variable input bus 2 according to the index (INDEX) of the input variable x1 set in the “input selection register”. The input variable x1 input from the line thus set is set in the input register 4. Next, the instruction decoder 9 refers to the value of the input variable x1 set in the input register 4, and since the function selection flag (SEL) is “10”, the address A4 is set to x0 when x1 is “00”. When the address is “01”, the address A4 is set in the program counter 10 when x1 is “10”, the address A6 next to the current address A5 is set, and when the address x4 is “11”, the address A4 is set. .

ここでは例として、x1=10であったとする。この場合、プログラムカウンタ10にはアドレスA6が設定される。   Here, as an example, it is assumed that x1 = 10. In this case, the address A6 is set in the program counter 10.

次に、命令メモリ7は、プログラムカウンタ10のアドレス情報A6を参照して、アドレスA6に格納された命令B_BRANCH (A3,A3),--を命令レジスタ8に出力し設定する。命令デコーダ9は、命令レジスタ8に設定された命令B_BRANCH (A3,A3),--を参照し、解読・実行する。この場合、命令コードの種類は2アドレス2分岐命令(B_BRANCH)であるが、指定された2つのジャンプ先のアドレスが等しいので、入力変数の値には依存せず、無条件ジャンプ命令となる。従って、命令デコーダ9は、指定されたアドレスA3をプログラムカウンタ10に設定する。   Next, the instruction memory 7 refers to the address information A6 of the program counter 10, and outputs and sets the instruction B_BRANCH (A3, A3),-stored in the address A6 to the instruction register 8. The instruction decoder 9 refers to the instruction B_BRANCH (A3, A3),-set in the instruction register 8, and decodes and executes it. In this case, the type of instruction code is a two-address two-branch instruction (B_BRANCH), but since the two specified jump destination addresses are equal, it does not depend on the value of the input variable and becomes an unconditional jump instruction. Therefore, the instruction decoder 9 sets the designated address A3 in the program counter 10.

次に、命令メモリ7は、プログラムカウンタ10のアドレス情報A3を参照して、アドレスA3に格納された命令DATASET 10,0,A0を命令レジスタ8に出力し設定する。命令デコーダ9は、命令レジスタ8に設定された命令DATASET 10,0,A0を参照し、解読・実行する。この場合、データセット命令(DATASET)なので、まず、レジスタ・ファイル5内のアドレス「0」にある「出力レジスタ」に出力データ「10」を出力し設定する。そして、次に、命令デコーダ9は、アドレスA0をプログラムカウンタ10に設定した後、終端節点なのでプログラムの実行を終了する。   Next, the instruction memory 7 refers to the address information A3 of the program counter 10 and outputs and sets the instructions DATASET 10, 0, A0 stored in the address A3 to the instruction register 8. The instruction decoder 9 refers to the instruction DATASET 10, 0, A0 set in the instruction register 8 and decodes and executes it. In this case, since it is a data set instruction (DATASET), first, output data “10” is set to “output register” at address “0” in register file 5. Then, the instruction decoder 9 sets the address A0 in the program counter 10 and then terminates the program execution because it is a terminal node.

本実施例では、実施例1で説明したBM1を8個直列に接続した多段ブランチング・プログラム・マシン(以下「多段BM」という。)について説明する。   In the present embodiment, a multistage branching program machine (hereinafter referred to as “multistage BM”) in which eight BM1 described in the first embodiment are connected in series will be described.

図8に、実施例2に係る多段BMの構成を表すブロック図である。図8において、BM1、並びに変数入力バス2、入力セレクタ3、入力レジスタ4、レジスタ・ファイル5、変数出力バス6、命令メモリ7、命令レジスタ8、命令デコーダ9、及びプログラムカウンタ10は図3と同様のものである。   FIG. 8 is a block diagram illustrating a configuration of a multistage BM according to the second embodiment. 8, the BM 1, the variable input bus 2, the input selector 3, the input register 4, the register file 5, the variable output bus 6, the instruction memory 7, the instruction register 8, the instruction decoder 9, and the program counter 10 are the same as those shown in FIG. It is the same thing.

本実施例の多段BM20は、8個のBM1(BM〜BM)がカスケード接続された構成からなる。 The multi-stage BM 20 of the present embodiment has a configuration in which eight BM1 (BM 0 to BM 7 ) are cascade-connected.

各BMの変数出力バス6は、プログラマブル・ルーティング・ボックス22を介して後段のBMn+1の変数入力バス2又は後段のプログラマブル・ルーティング・ボックス22若しくは出力レジスタ24に接続されている。また、各BMのフラグ出力バス11は、プログラマブル・ルーティング・ボックス21を介して後段のBMn+1の変数入力バス2又は後段のプログラマブル・ルーティング・ボックス21若しくはフラグレジスタ23に接続されている。また、出力レジスタ24の外部出力バスr_outは、外部回路に接続されると共に、分岐して最前段のBMの入力バスにカスケード接続されたプログラマブル・ルーティング・ボックス22に接続されている。また、フラグレジスタ23の外部出力バスf_outは、外部回路に接続されると共に、分岐して最前段のBMの入力バスにカスケード接続されたプログラマブル・ルーティング・ボックス21に接続されている。 The variable output bus 6 of each BM n is connected via the programmable routing box 22 to the variable input bus 2 of the subsequent BM n + 1 or the programmable routing box 22 or the output register 24 of the subsequent stage. The flag output bus 11 of each BM n is connected to the variable input bus 2 of the subsequent BM n + 1 , the programmable routing box 21 of the subsequent stage, or the flag register 23 via the programmable routing box 21. The external output bus r_out of the output register 24 is connected to an external circuit, and is connected to a programmable routing box 22 that is branched and cascade-connected to the input bus of the BM 1 at the foremost stage. The external output bus f_out of the flag register 23 is connected to an external circuit and connected to a programmable routing box 21 that is branched and cascade-connected to the input bus of the BM 1 at the foremost stage.

各プログラマブル・ルーティング・ボックス21,22は、入力配線と出力配線との接続を再構成可能に組み替える接続回路である。各プログラマブル・ルーティング・ボックス21,22は、クロスバースイッチ、マルチプレクサ等によって構成される。   Each of the programmable routing boxes 21 and 22 is a connection circuit that rearranges the connection between the input wiring and the output wiring so as to be reconfigurable. Each of the programmable routing boxes 21 and 22 includes a crossbar switch, a multiplexer, and the like.

また、各プログラマブル・ルーティング・ボックス21,22は、コンフィギュレーションを変えることで、前段のBM1の出力と現在のBMの出力のビットワイズANDやビットワイズOR演算ができる。また、定数出力もできる。ビットワイズAND演算を行う場合、末端(図8で斜線で示された部分)のプログラマブル・ルーティング・ボックス21,22で定数1を生成する。一方、ビットワイズOR演算を行う場合、末端(図8で斜線で示された部分)のプログラマブル・ルーティング・ボックス21,22で定数0を生成する。   Each programmable routing box 21 and 22 can perform bitwise AND or bitwise OR operation of the output of the previous BM1 and the output of the current BM by changing the configuration. Constant output is also possible. When performing a bitwise AND operation, a constant 1 is generated in the programmable routing boxes 21 and 22 at the ends (portions indicated by hatching in FIG. 8). On the other hand, when a bitwise OR operation is performed, a constant 0 is generated in the programmable routing boxes 21 and 22 at the ends (portions indicated by hatching in FIG. 8).

これにより、各BMにおいて演算結果としてレジスタ・ファイル5内の各出力レジスタ及び各状態レジスタに設定された出力変数、並びにフラグレジスタに設定された各フラグは、カスケード接続されたプログラマブル・ルーティング・ボックス22,21を経由して、一旦、出力レジスタ24及びフラグレジスタ23に格納される。出力レジスタ24及びフラグレジスタ23に格納された値は、フードバックされて再び各BMの入力変数バス2に送られる。 As a result, the output variable set in each output register and each status register in the register file 5 as the operation result in each BM n and each flag set in the flag register are cascaded in the programmable routing box. The data is temporarily stored in the output register 24 and the flag register 23 via 22 and 21. The values stored in the output register 24 and the flag register 23 are hooded back and sent to the input variable bus 2 of each BM again.

また、最前段のBMの入力バスにカスケード接続されたプログラマブル・ルーティング・ボックス21,22には、外部回路からの外部入力バスf_in,r_inも接続されている。従って、これらの外部入力バスf_in,r_inを介して入力される外部入力も、各プログラマブル・ルーティング・ボックス21,22を経由して各BM1にブロードキャストされる。 In addition, external input buses f_in and r_in from an external circuit are also connected to the programmable routing boxes 21 and 22 cascade-connected to the input bus of the BM 1 at the front stage. Accordingly, external inputs input via these external input buses f_in and r_in are also broadcast to each BM 1 via each programmable routing box 21 and 22.

また、多段BM20の出力をフィードバックして各BM1で参照することもできる。従って、各BM1を独立に動作させることもできる。   Further, the output of the multistage BM 20 can be fed back and referred to by each BM 1. Therefore, each BM1 can be operated independently.

この多段BM20では、各BM1間の通信時間は、レジスタ(フラグレジスタ23又は出力レジスタ24)を1つ経由するだけなので、レジスタに値を書き込んだ後、1クロック後に参照可能である。BM1は1命令の処理に2クロック使用しており、多段BM20内であれば命令レベルの通信時間の遅延は発生しない。   In this multi-stage BM 20, the communication time between the BMs 1 passes through one register (flag register 23 or output register 24), and can be referred to after one clock after writing a value in the register. BM1 uses two clocks for processing one instruction, and there is no instruction level communication time delay within the multistage BM20.

本実施例では、実施例1で説明したBM1を128個用いた並列プロセッサ30について説明する。128個のBM1を、実施例2のようにカスケード状に多段接続し、相互に通信可能とした場合、接続回路(プログラマブル・ルーティング・ボックス21,22)は非常に大きくなり、現実的ではない。そこで、本実施例では階層的な接続回路を用いる。本実施例では、実施例2で説明したような、BM1を8台カスケード接続した多段BM20を1ユニットとし、この多段BM20を16個並べて階層構造を構成する。   In the present embodiment, a parallel processor 30 using 128 BM1 described in the first embodiment will be described. When 128 BM1s are connected in multiple stages in cascade as in the second embodiment and can communicate with each other, the connection circuits (programmable routing boxes 21 and 22) become very large, which is not realistic. Therefore, a hierarchical connection circuit is used in this embodiment. In the present embodiment, as described in the second embodiment, a multi-stage BM 20 in which eight BMs 1 are cascade-connected is set as one unit, and 16 multi-stage BMs 20 are arranged to form a hierarchical structure.

順序回路を模擬する場合には、状態遷移を行うため他の多段BM20を参照する。この際、各多段BM20間の接続には、プログラマブル接続回路31を用いる。前述したように、各多段BM20内のBM1間の通信は1クロックで行うことができる。一方、異なる多段BM20間の通信は、4クロック必要となる。   When simulating a sequential circuit, another multi-stage BM 20 is referred to in order to make a state transition. At this time, the programmable connection circuit 31 is used for the connection between the multistage BMs 20. As described above, communication between the BMs 1 in each multistage BM 20 can be performed in one clock. On the other hand, communication between different multistage BMs 20 requires 4 clocks.

図9は、実施例3に係る並列プロセッサ30の構成を表すブロック図である。並列プロセッサ30は、16個の多段BM20(8−BM_0〜8−BM_15)、プログラマブル接続回路31、ビットワイズAND/OR回路32、及びACT積演算回路33を備えている。   FIG. 9 is a block diagram illustrating the configuration of the parallel processor 30 according to the third embodiment. The parallel processor 30 includes 16 multi-stage BMs 20 (8-BM_0 to 8-BM_15), a programmable connection circuit 31, a bitwise AND / OR circuit 32, and an ACT product operation circuit 33.

各多段BM20の出力レジスタ24の外部出力バスr_outは、プログラマブル接続回路31の入力側に接続されている。また、各多段BM20の最前段のプログラマブル・ルーティング・ボックス22の外部入力バスr_inは、プログラマブル接続回路31の出力側に接続されている。   The external output bus r_out of the output register 24 of each multistage BM 20 is connected to the input side of the programmable connection circuit 31. The external input bus r_in of the programmable routing box 22 at the forefront of each multi-stage BM 20 is connected to the output side of the programmable connection circuit 31.

プログラマブル接続回路31は、入力側に接続されるバスの各配線と出力側に接続されるバスの各配線との接続順序を再構成可能に切り替える接続回路である。プログラマブル接続回路31は、複雑な信号選択を行うため、多段のマルチプレクサによって構成される。従って、単純な構成ではこのプログラマブル接続回路31がクリティカルパスとなり、並列プロセッサ30全体の動作周波数が極端に低下する。そこで、プログラマブル接続回路31内にはパイプライン・レジスタを挿入し、動作周波数を向上させるように構成する。但し、パイプライン・レジスタを挿入するため、プログラマブル接続回路31の出力を確定させるためには4クロック必要である。並列プロセッサ30では1命令につき2クロック使用しているため、プログラマブル接続回路31を通してデータを転送するには2命令待つ必要がある。   The programmable connection circuit 31 is a connection circuit that switches the connection order of each wiring of the bus connected to the input side and each wiring of the bus connected to the output side so as to be reconfigurable. The programmable connection circuit 31 includes a multi-stage multiplexer in order to perform complicated signal selection. Therefore, in a simple configuration, the programmable connection circuit 31 becomes a critical path, and the operating frequency of the entire parallel processor 30 is extremely reduced. Therefore, a pipeline register is inserted in the programmable connection circuit 31 so as to improve the operating frequency. However, since a pipeline register is inserted, four clocks are required to determine the output of the programmable connection circuit 31. Since the parallel processor 30 uses two clocks per instruction, it is necessary to wait for two instructions to transfer data through the programmable connection circuit 31.

各多段BM20のフラグレジスタ23の外部出力バスf_outは、ビットワイズAND/OR回路32の入力側に接続されている。また、各多段BM20の最前段のプログラマブル・ルーティング・ボックス21の外部入力バスf_inは、ビットワイズAND/OR回路32の出力側に接続されている。   The external output bus f_out of the flag register 23 of each multistage BM 20 is connected to the input side of the bitwise AND / OR circuit 32. The external input bus f_in of the programmable routing box 21 at the forefront of each multi-stage BM 20 is connected to the output side of the bitwise AND / OR circuit 32.

ビットワイズAND/OR回路32は、入力側に接続されるバスの各配線と出力側に接続されるバスの各配線との接続順序を再構成可能に切り替えるとともに、コンフィギュレーションを変えることで、各多段BM20の出力するフラグ間のビットワイズANDやビットワイズOR演算ができるように構成した接続回路である。   The bitwise AND / OR circuit 32 switches the connection order between each wiring of the bus connected to the input side and each wiring of the bus connected to the output side in a reconfigurable manner, and by changing the configuration, This is a connection circuit configured to perform bitwise AND and bitwise OR operations between flags output from the multistage BM20.

また、各多段BM20のフラグレジスタ23の外部出力バスf_outの中の出力線f_out[12]は、プログラマブル接続回路31を活性化するACTフラグとして使用されている。各多段BM20の出力線f_out[12]は、ACT積演算回路33に接続されている。ACT積演算回路33はこれらのACTフラグのAND演算を行い、ACT信号を生成する。このACT信号はプログラマブル接続回路31のACT入力端子に入力される。プログラマブル接続回路31はACT信号が1のときに活性化され、前回の活性時に確定した値を保持する。   The output line f_out [12] in the external output bus f_out of the flag register 23 of each multi-stage BM 20 is used as an ACT flag that activates the programmable connection circuit 31. The output line f_out [12] of each multi-stage BM 20 is connected to the ACT product operation circuit 33. The ACT product operation circuit 33 performs an AND operation of these ACT flags to generate an ACT signal. This ACT signal is input to the ACT input terminal of the programmable connection circuit 31. The programmable connection circuit 31 is activated when the ACT signal is 1, and holds the value determined at the previous activation.

1 ブランチング・プログラム・マシン
2 変数入力バス
3 入力セレクタ
4 入力レジスタ
5 レジスタ・ファイル
6 変数出力バス
7 命令メモリ
8 命令レジスタ
9 命令デコーダ
10 プログラムカウンタ
11 フラグ出力バス
20 多段ブランチング・プログラム・マシン
21 プログラマブル・ルーティング・ボックス
22 プログラマブル・ルーティング・ボックス
23 フラグレジスタ
24 出力レジスタ
30 並列プロセッサ
31 プログラマブル接続回路
32 ビットワイズAND/OR回路
33 ACT積演算回路
DESCRIPTION OF SYMBOLS 1 Branching program machine 2 Variable input bus 3 Input selector 4 Input register 5 Register file 6 Variable output bus 7 Instruction memory 8 Instruction register 9 Instruction decoder 10 Program counter 11 Flag output bus 20 Multistage branching program machine 21 Programmable routing box 22 Programmable routing box 23 Flag register 24 Output register 30 Parallel processor 31 Programmable connection circuit 32 Bitwise AND / OR circuit 33 ACT product operation circuit

Claims (5)

複数の入力変数が入力される変数入力バスと、
入力選択レジスタと、
前記入力選択レジスタの設定値に従い前記変数入力バスから入力変数を選択する入力セレクタと、
前記入力セレクタにより選択される入力変数が一時的に設定される入力レジスタと、
出力変数が設定される出力レジスタと、
前記出力レジスタに設定された出力変数が出力される変数出力バスと、
プログラムにおいて実行する各命令が記憶された命令メモリと、
命令メモリから順次読み出される命令が一時的に設定される命令レジスタと、
入力レジスタから読み出される入力変数と、命令レジスタから読み出される命令とに基づいて当該命令を実行する命令デコーダと、
次に読み出す命令の命令メモリ内のアドレス情報を記憶するプログラムカウンタと、
備え、
前記命令メモリには、(1)参照する入力変数のインデックス、入力変数が0のときにジャンプする先の命令メモリのアドレス情報、及び入力変数が1のときにジャンプする先の命令メモリのアドレス情報を含む2アドレス2分岐命令、(2)参照する入力変数のインデックス、入力変数が第1の値のときにジャンプする先の命令メモリのアドレス情報、入力変数が第2の値のときにジャンプする先の命令メモリのアドレス情報、及び入力変数が第3の値のときにジャンプする先の命令メモリのアドレス情報を含む3アドレス4分岐命令、並びに、(3)出力先の出力レジスタのアドレス情報、及び出力データを含む出力命令の3種の命令を少なくとも含む命令系列が記憶され、前記プログラムカウンタに設定されたアドレス情報に従って該アドレス情報で指令されるアドレスに格納された命令を前記命令レジスタに出力するものであり、
前記命令デコーダは、(a)前記命令レジスタに設定された命令が前記2アドレス2分岐命令又は前記3アドレス4分岐命令の場合、当該命令で指定される入力変数のインデックスに基づき前記入力選択レジスタに値を設定し、前記入力セレクタにより入力変数を選択して前記入力レジスタに設定し、当該入力レジスタに設定される入力変数の値に基づいて、当該命令で指定されるジャンプする先の命令メモリのアドレス情報を選択して前記プログラムカウンタに設定する処理を実行し、(b)前記命令レジスタに設定された命令が前記出力命令の場合、当該命令で指定される出力レジスタのアドレス情報に従って該アドレス情報で指令される前記出力レジスタのアドレスに、当該命令で指定される出力データを設定する処理を実行することを特徴とするブランチング・プログラム・マシン。


A variable input bus to which multiple input variables are input;
An input selection register;
An input selector for selecting an input variable from the variable input bus according to a set value of the input selection register ;
An input register in which an input variable selected by the input selector is temporarily set;
An output register in which the output variable is set;
A variable output bus to which an output variable set in the output register is output;
An instruction memory in which each instruction to be executed in the program is stored;
An instruction register in which instructions sequentially read from the instruction memory are temporarily set;
An instruction decoder that executes the instruction based on an input variable read from the input register and an instruction read from the instruction register;
A program counter for storing address information in an instruction memory of an instruction to be read next;
Equipped with a,
The instruction memory includes (1) an index of an input variable to be referred to, address information of an instruction memory to be jumped when the input variable is 0, and address information of an instruction memory to be jumped to when the input variable is 1. (2) The index of the input variable to be referenced, the address information of the instruction memory to jump to when the input variable is the first value, and the jump when the input variable is the second value The address information of the previous instruction memory, the 3-address 4-branch instruction including the address information of the previous instruction memory to jump when the input variable is the third value, and (3) the address information of the output register of the output destination, And an instruction series including at least three types of output instructions including output data are stored, and according to the address information set in the program counter, And outputs a command stored in the address commanded dress information in the instruction register,
When the instruction set in the instruction register is the 2-address 2-branch instruction or the 3-address 4-branch instruction, the instruction decoder stores in the input selection register based on an index of an input variable designated by the instruction. A value is set, an input variable is selected by the input selector and set in the input register, and based on the value of the input variable set in the input register, the jump destination instruction memory specified by the instruction is stored. (B) When the instruction set in the instruction register is the output instruction, the address information is selected according to the address information of the output register specified by the instruction. Execute the process of setting the output data specified by the instruction to the address of the output register commanded by Branching program machines that feature.


前記命令メモリに記憶された3アドレス4分岐命令は、参照する入力変数のインデックス、入力変数の値に対する分岐先アドレスの組み合わせを指定する機能選択フラグ、入力変数が第1の値のときにジャンプする先の命令メモリのアドレス情報ADDR0、入力変数が第2の値のときにジャンプする先の命令メモリのアドレス情報ADDR1、及び入力変数が第3の値のときにジャンプする先の命令メモリのアドレス情報ADDR2を含み、
前記命令デコーダは、前記命令レジスタに設定された命令が前記3アドレス4分岐命令の場合には、当該命令で指定される入力変数のインデックスに基づき前記入力セレクタにより入力変数を選択して前記入力レジスタに設定し、該入力レジスタに設定される入力変数の値が前記第1,第2,第3の値の場合、それぞれ、当該命令で指定されるジャンプする先の命令メモリの前記アドレス情報ADDR0,ADDR1,ADDR2を選択し、該入力レジスタに設定される入力変数の値が前記第1,第2,又は第3の値以外の場合、現在の命令のアドレスPの次のアドレス(P+1)のアドレス情報を選択して前記プログラムカウンタに設定する処理を実行すること
を特徴とする請求項1記載のブランチング・プログラム・マシン。
The 3-address 4-branch instruction stored in the instruction memory jumps when the index of the input variable to be referred to, a function selection flag that specifies a combination of the branch destination address with respect to the value of the input variable, and the input variable is the first value. Address information ADDR0 of the previous instruction memory, address information ADDR1 of the destination instruction memory that jumps when the input variable is the second value, and address information of the destination instruction memory that jumps when the input variable is the third value Including ADDR2,
When the instruction set in the instruction register is the 3-address 4-branch instruction, the instruction decoder selects an input variable by the input selector based on an index of the input variable specified by the instruction, and the input register When the value of the input variable set in the input register is the first, second, and third values, the address information ADDR0, When ADDR1 or ADDR2 is selected and the value of the input variable set in the input register is other than the first, second, or third value, the address (P + 1) next to the address P of the current instruction The branching program machine according to claim 1, wherein the address information is selected and set in the program counter.
複数個の請求項1又は2に記載のブランチング・プログラム・マシンがカスケード接続され、後段の前記ブランチング・プログラム・マシンの変数入力バスの少なくとも一部には、前段の前記ブランチング・プログラム・マシンの前記変数出力バスが接続され、残りの変数入力バスには入力変数が入力されることを特徴とする多段ブランチング・プログラム・マシン。   A plurality of branching program machines according to claim 1 or 2 are cascade-connected, and at least a part of a variable input bus of the subsequent branching program machine includes the branching program machine in the previous stage. A multi-stage branching program machine, wherein the variable output bus of the machine is connected, and input variables are input to the remaining variable input buses. 前記各ブランチング・プログラム・マシンの前記変数出力バスは、プログラマブル・ルーティング・ボックスを介して後段のブランチング・プログラム・マシンの前記変数入力バスに接続されていることを特徴とする請求項3記載の多段ブランチング・プログラム・マシン。   4. The variable output bus of each branching program machine is connected to the variable input bus of a subsequent branching program machine via a programmable routing box. Multi-stage branching program machine. 複数個並列に接続された請求項3又は4記載の多段ブランチング・プログラム・マシンと、
複数の選択入力ノードと複数の選択出力ノードとを備え、前記各多段ブランチング・プログラム・マシンの前記各変数出力バスが前記各選択入力ノードに接続され、選択出力ノードの少なくとも一部が前記各多段ブランチング・プログラム・マシンの変数入力バスの一部に接続され、前記各選択入力ノードと前記各選択出力ノードとの接続を組み替え可能としたプログラマブル相互接続回路と、
を備えたことを特徴とする並列プロセッサ。
A multi-stage branching program machine according to claim 3 or 4 connected in parallel.
A plurality of selection input nodes and a plurality of selection output nodes, each variable output bus of each multi-stage branching program machine is connected to each selection input node, and at least a part of the selection output nodes A programmable interconnection circuit connected to a part of a variable input bus of a multi-stage branching program machine and capable of recombining the connection between each selected input node and each selected output node;
A parallel processor characterized by comprising:
JP2009049981A 2009-03-03 2009-03-03 Branching program machine and parallel processor Expired - Fee Related JP5382503B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009049981A JP5382503B2 (en) 2009-03-03 2009-03-03 Branching program machine and parallel processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009049981A JP5382503B2 (en) 2009-03-03 2009-03-03 Branching program machine and parallel processor

Publications (2)

Publication Number Publication Date
JP2010204969A JP2010204969A (en) 2010-09-16
JP5382503B2 true JP5382503B2 (en) 2014-01-08

Family

ID=42966385

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009049981A Expired - Fee Related JP5382503B2 (en) 2009-03-03 2009-03-03 Branching program machine and parallel processor

Country Status (1)

Country Link
JP (1) JP5382503B2 (en)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09148998A (en) * 1995-10-27 1997-06-06 Loral Aerospace Corp Programmable pcm /tdm demultiplexer
JP2000330786A (en) * 1999-05-20 2000-11-30 Nec Corp Method and device for data processing and storage medium recorded with data processing program
JP4011015B2 (en) * 2003-12-01 2007-11-21 財団法人北九州産業学術推進機構 LUT encoding method, LUT encoding apparatus, and LUT cascade logic circuit

Also Published As

Publication number Publication date
JP2010204969A (en) 2010-09-16

Similar Documents

Publication Publication Date Title
EP2569694B1 (en) Conditional compare instruction
US7171535B2 (en) Serial operation pipeline, arithmetic device, arithmetic-logic circuit and operation method using the serial operation pipeline
CN101661384B (en) Microprocessor and microprocessor method
KR102647266B1 (en) Multi-lane for addressing vector elements using vector index registers
US11907158B2 (en) Vector processor with vector first and multiple lane configuration
US20070245127A1 (en) Reconfigurable control structure for cpus and method of operating same
JP2010009247A (en) Semiconductor device and data processing method by semiconductor device
CN110058886A (en) System and method for calculating the scalar product of the nibble in two blocks operation numbers
EP3973385A1 (en) True/false vector index registers
US7509479B2 (en) Reconfigurable global cellular automaton with RAM blocks coupled to input and output feedback crossbar switches receiving clock counter value from sequence control unit
JP5382503B2 (en) Branching program machine and parallel processor
JP2006011825A (en) Reconfigurable arithmetic unit and semiconductor device
US4101967A (en) Single bit logic microprocessor
JP5370352B2 (en) SIMD type processor array system and data transfer method thereof
US20060101240A1 (en) Digital signal processing circuit and digital signal processing method
JP2008242947A (en) Semiconductor device
US5274775A (en) Process control apparatus for executing program instructions
US20240053970A1 (en) Processor and compiler
Furlan Analysis of Hardware Sorting Units in Processor Design
Hashem ALU and Dependency Manager Using FPGA
JP2010218178A (en) Sort processing apparatus and sort processing method
CN118295961A (en) Boolean function reconstruction solving method, device, computer equipment and storage medium
JP5701930B2 (en) Semiconductor device
JPH06149563A (en) Data processor
CN116911219A (en) Method, electronic device and storage medium for simulation of logic system design

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20100804

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100804

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120305

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120306

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130527

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130612

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130729

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130919

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees