JP5382503B2 - Branching program machine and parallel processor - Google Patents
Branching program machine and parallel processor Download PDFInfo
- 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
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
任意の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値変数の組は2k値の超変数となる。2k値の超変数で表現した決定グラフを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
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つの節点を表現するために必要なメモリ量は2kのオーダーで増加する。そのため、多くのベンチマーク関数に於いて、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.
以下、本発明を実施するための形態について、図面を参照しながら説明する。 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
変数入力バス2は、MPUなどの外部回路から複数の入力変数が入力されるバスである。入力セレクタ3は、変数入力バス2から入力される入力変数を選択するセレクタである。入力セレクタ3としては、シフタ、クロスバースイッチ、マルチプレクサ等が使用される。入力レジスタ4は、入力セレクタ3により選択される入力変数が一時的に設定されるレジスタである。
The
命令メモリ7は、プログラムにおいて実行する各命令が記憶されたメモリである。本実施例では、命令メモリ7は、語長が32ビットのBM命令を256個格納することができる。命令レジスタ8は、命令メモリ7から順次読み出される命令が一時的に設定されるレジスタである。命令デコーダ9は、命令メモリ7から命令レジスタ8へ読み出された命令を解釈し、実行を行うデコーダである。この命令デコーダ9は、入力レジスタ4へ設定される入力変数と、命令レジスタ8へ設定される命令とに基づいて当該命令を実行する。プログラムカウンタ10は、次に読み出す命令の命令メモリ7内のアドレス情報を記憶する。
The
ここで、命令メモリ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
尚、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
図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
図3のレジスタ・ファイル5は、「出力レジスタ」や「状態レジスタ」、及び「入力選択レジスタ」や「フラグレジスタ」と呼ばれるレジスタで構成される。出力レジスタ及び状態レジスタは、出力変数が設定されるレジスタである。出力レジスタ及び状態レジスタは、図4に示したようなダブルランク・フリップフロップにより構成されている。
The
図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
フラグレジスタは、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
(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
変数出力バス6は、レジスタ・ファイル5内の出力レジスタや状態レジスタに設定された出力変数及び状態変数が出力されるバスである。また、フラグ出力バス11は、レジスタ・ファイル5内のフラグレジスタに設定された各フラグが出力されるバスである。
The
BM1は、出力レジスタに設定された出力変数を入力レジスタ4にフィードバックして順序回路を実現することができる。入力レジスタ4には、これらのフィードバックされた値や外部入力や隣接するBM1から送られてくる出力変数が設定される。これらは、入力選択レジスタの値を用いて、入力セレクタ3が選択する。
The
以上のように構成された本実施例に係るBM1について、以下その動作を説明する。ここでは簡単な具体例として、図1に示したMTBDDを実行する場合と、図2に示したQDDを実行する場合とを採り上げてBM1の動作を説明することにする。
The operation of the
(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
まず、初期状態では、プログラムカウンタ10にはアドレス情報としてA0が設定される。
First, in the initial state, A0 is set in the
プログラムの実行が開始されると、まず、命令メモリ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
ここでは例として、x0=1であったとする。この場合、プログラムカウンタ10にはアドレスA7が設定される。
Here, as an example, it is assumed that x0 = 1. In this case, the address A7 is set in the
次に、命令メモリ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
ここでは例として、x1=0であったとする。この場合、プログラムカウンタ10にはアドレスA3が設定される。
Here, as an example, it is assumed that x1 = 0. In this case, the address A3 is set in the
次に、命令メモリ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
ここでは例として、x2=0であったとする。この場合、プログラムカウンタ10にはアドレスA4が設定される。
Here, as an example, it is assumed that x2 = 0. In this case, the address A4 is set in the
次に、命令メモリ7は、プログラムカウンタ10のアドレス情報A4を参照して、アドレスA4に格納された命令DATASET 10,0,A0を命令レジスタ8に出力し設定する。命令デコーダ9は、命令レジスタ8に設定された命令DATASET 10,0,A0を参照し、解読・実行する。この場合、データセット命令なので、まず、レジスタ・ファイル5内のアドレス0にある「出力レジスタ」に出力データ「10」を出力し設定する。そして、次に、命令デコーダ9は、アドレスA0をプログラムカウンタ10に設定した後、終端節点なのでプログラムの実行を終了する。
Next, the
(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
この命令セットのコードによって各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
プログラムの実行が開始されると、まず、命令メモリ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
ここでは例として、x0=11であったとする。この場合、プログラムカウンタ10にはアドレスA5が設定される。
Here, as an example, it is assumed that x0 = 11. In this case, the address A5 is set in the
次に、命令メモリ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
ここでは例として、x1=10であったとする。この場合、プログラムカウンタ10にはアドレスA6が設定される。
Here, as an example, it is assumed that x1 = 10. In this case, the address A6 is set in the
次に、命令メモリ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
次に、命令メモリ7は、プログラムカウンタ10のアドレス情報A3を参照して、アドレスA3に格納された命令DATASET 10,0,A0を命令レジスタ8に出力し設定する。命令デコーダ9は、命令レジスタ8に設定された命令DATASET 10,0,A0を参照し、解読・実行する。この場合、データセット命令(DATASET)なので、まず、レジスタ・ファイル5内のアドレス「0」にある「出力レジスタ」に出力データ「10」を出力し設定する。そして、次に、命令デコーダ9は、アドレスA0をプログラムカウンタ10に設定した後、終端節点なのでプログラムの実行を終了する。
Next, the
本実施例では、実施例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
本実施例の多段BM20は、8個のBM1(BM0〜BM7)がカスケード接続された構成からなる。
The
各BMnの変数出力バス6は、プログラマブル・ルーティング・ボックス22を介して後段のBMn+1の変数入力バス2又は後段のプログラマブル・ルーティング・ボックス22若しくは出力レジスタ24に接続されている。また、各BMnのフラグ出力バス11は、プログラマブル・ルーティング・ボックス21を介して後段のBMn+1の変数入力バス2又は後段のプログラマブル・ルーティング・ボックス21若しくはフラグレジスタ23に接続されている。また、出力レジスタ24の外部出力バスr_outは、外部回路に接続されると共に、分岐して最前段のBM1の入力バスにカスケード接続されたプログラマブル・ルーティング・ボックス22に接続されている。また、フラグレジスタ23の外部出力バスf_outは、外部回路に接続されると共に、分岐して最前段のBM1の入力バスにカスケード接続されたプログラマブル・ルーティング・ボックス21に接続されている。
The
各プログラマブル・ルーティング・ボックス21,22は、入力配線と出力配線との接続を再構成可能に組み替える接続回路である。各プログラマブル・ルーティング・ボックス21,22は、クロスバースイッチ、マルチプレクサ等によって構成される。
Each of the
また、各プログラマブル・ルーティング・ボックス21,22は、コンフィギュレーションを変えることで、前段のBM1の出力と現在のBMの出力のビットワイズANDやビットワイズOR演算ができる。また、定数出力もできる。ビットワイズAND演算を行う場合、末端(図8で斜線で示された部分)のプログラマブル・ルーティング・ボックス21,22で定数1を生成する。一方、ビットワイズOR演算を行う場合、末端(図8で斜線で示された部分)のプログラマブル・ルーティング・ボックス21,22で定数0を生成する。
Each
これにより、各BMnにおいて演算結果としてレジスタ・ファイル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
また、最前段のBM1の入力バスにカスケード接続されたプログラマブル・ルーティング・ボックス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
また、多段BM20の出力をフィードバックして各BM1で参照することもできる。従って、各BM1を独立に動作させることもできる。
Further, the output of the
この多段BM20では、各BM1間の通信時間は、レジスタ(フラグレジスタ23又は出力レジスタ24)を1つ経由するだけなので、レジスタに値を書き込んだ後、1クロック後に参照可能である。BM1は1命令の処理に2クロック使用しており、多段BM20内であれば命令レベルの通信時間の遅延は発生しない。
In this
本実施例では、実施例1で説明したBM1を128個用いた並列プロセッサ30について説明する。128個のBM1を、実施例2のようにカスケード状に多段接続し、相互に通信可能とした場合、接続回路(プログラマブル・ルーティング・ボックス21,22)は非常に大きくなり、現実的ではない。そこで、本実施例では階層的な接続回路を用いる。本実施例では、実施例2で説明したような、BM1を8台カスケード接続した多段BM20を1ユニットとし、この多段BM20を16個並べて階層構造を構成する。
In the present embodiment, a
順序回路を模擬する場合には、状態遷移を行うため他の多段BM20を参照する。この際、各多段BM20間の接続には、プログラマブル接続回路31を用いる。前述したように、各多段BM20内のBM1間の通信は1クロックで行うことができる。一方、異なる多段BM20間の通信は、4クロック必要となる。
When simulating a sequential circuit, another
図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
各多段BM20の出力レジスタ24の外部出力バスr_outは、プログラマブル接続回路31の入力側に接続されている。また、各多段BM20の最前段のプログラマブル・ルーティング・ボックス22の外部入力バスr_inは、プログラマブル接続回路31の出力側に接続されている。
The external output bus r_out of the
プログラマブル接続回路31は、入力側に接続されるバスの各配線と出力側に接続されるバスの各配線との接続順序を再構成可能に切り替える接続回路である。プログラマブル接続回路31は、複雑な信号選択を行うため、多段のマルチプレクサによって構成される。従って、単純な構成ではこのプログラマブル接続回路31がクリティカルパスとなり、並列プロセッサ30全体の動作周波数が極端に低下する。そこで、プログラマブル接続回路31内にはパイプライン・レジスタを挿入し、動作周波数を向上させるように構成する。但し、パイプライン・レジスタを挿入するため、プログラマブル接続回路31の出力を確定させるためには4クロック必要である。並列プロセッサ30では1命令につき2クロック使用しているため、プログラマブル接続回路31を通してデータを転送するには2命令待つ必要がある。
The
各多段BM20のフラグレジスタ23の外部出力バスf_outは、ビットワイズAND/OR回路32の入力側に接続されている。また、各多段BM20の最前段のプログラマブル・ルーティング・ボックス21の外部入力バスf_inは、ビットワイズAND/OR回路32の出力側に接続されている。
The external output bus f_out of the
ビットワイズAND/OR回路32は、入力側に接続されるバスの各配線と出力側に接続されるバスの各配線との接続順序を再構成可能に切り替えるとともに、コンフィギュレーションを変えることで、各多段BM20の出力するフラグ間のビットワイズANDやビットワイズOR演算ができるように構成した接続回路である。
The bitwise AND /
また、各多段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
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
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,第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.
複数の選択入力ノードと複数の選択出力ノードとを備え、前記各多段ブランチング・プログラム・マシンの前記各変数出力バスが前記各選択入力ノードに接続され、選択出力ノードの少なくとも一部が前記各多段ブランチング・プログラム・マシンの変数入力バスの一部に接続され、前記各選択入力ノードと前記各選択出力ノードとの接続を組み替え可能としたプログラマブル相互接続回路と、
を備えたことを特徴とする並列プロセッサ。 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:
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)
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 |
-
2009
- 2009-03-03 JP JP2009049981A patent/JP5382503B2/en not_active Expired - Fee Related
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 | |
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 | |
JP4444305B2 (en) | Semiconductor device | |
JP5370352B2 (en) | SIMD type processor array system and data transfer method thereof | |
US20060101240A1 (en) | Digital signal processing circuit and digital signal processing method | |
US5274775A (en) | Process control apparatus for executing program instructions | |
US20240053970A1 (en) | Processor and compiler | |
Furlan | Analysis of Hardware Sorting Units in Processor Design | |
US5027300A (en) | Two level multiplexer circuit shifter apparatus | |
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 | |
JP2012174105A (en) | Memory access control circuit |
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 |