JP2000330786A - データ処理方法及びデータ処理装置並びにデータ処理プログラムを記録した記録媒体 - Google Patents

データ処理方法及びデータ処理装置並びにデータ処理プログラムを記録した記録媒体

Info

Publication number
JP2000330786A
JP2000330786A JP14077199A JP14077199A JP2000330786A JP 2000330786 A JP2000330786 A JP 2000330786A JP 14077199 A JP14077199 A JP 14077199A JP 14077199 A JP14077199 A JP 14077199A JP 2000330786 A JP2000330786 A JP 2000330786A
Authority
JP
Japan
Prior art keywords
bdd
node
variable
data processing
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP14077199A
Other languages
English (en)
Inventor
Noritake Yonezawa
典剛 米沢
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP14077199A priority Critical patent/JP2000330786A/ja
Publication of JP2000330786A publication Critical patent/JP2000330786A/ja
Pending legal-status Critical Current

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/30Computing systems specially adapted for manufacturing

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 論理関数をBDD(二分決定グラフ)で表現
して代入演算を行う際に、変数の値をチェックして0枝
または1枝の選択先の番地をたどるという複数の処理を
繰り返し行うことを不要とし、代入演算処理の処理時間
を短縮する。 【解決手段】論理関数を表すBDDをあらかじめ実行可
能な機械語形式で記憶装置200a内のBDDデータ格
納メモリ220aに格納し、記憶装置200aのBDD
処理プログラム格納メモリ210aとBDDデータ格納
メモリ220aとにそれぞれ格納されているBDD処理
プログラムおよびBDDデータを、基本処理装置100
aによって直接読み出して、解読および実行することに
よって、BDDの表す論理関数の変数に0または1を代
入して論理関数値を得る代入演算を高速に行うことがで
きる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、論理関数を表すB
DD(二分決定グラフ)に0又は1を代入して演算を行
うのに用いて好適なデータ処理方法及びデータ処理装置
並びにデータ処理プログラムを記録した記録媒体に関す
る。
【0002】
【従来の技術】二分決定グラフ(BDD;binary decis
ion diagram)は,計算機上における論理関数の表現法
の1つであり、論理関数をループのない有向グラフの形
で表すものである。BDDをある論理式に基づいた論理
回設計や、設計した論理回路の検証などに利用すると、
取り扱うことができる回路規模を大きくできる等の利点
があり、論理回設計のためのCAD(computer aided d
esign)への応用等が盛んに行われている。
【0003】論理回路シミュレーションを行う際には、
入力信号に対して出力信号がどうなるか、実際に値(0
や1)を代入して結果(0か1か)を検証したい場合が
ある。その際、BDDで表現された論理関数に具体的な
値(0または1)を代入して関数値を計算する演算を行
うことになる。このような演算では、BDDの変数節点
の変数値が0か1か判断して、0枝か1枝かのいずれか
に進み、定数節点に到達するまでその条件分岐が繰り返
し行われることになる。
【0004】
【発明が解決しようとする課題】ここで、図面を参照し
て、本願発明の背景技術となったBDDの代入演算処理
方法について説明する。図8はBDDの一例を示す図で
あり、この図に示すBDDは、2つの変数x1,x2を用
いた、x2とx1の否定との論理積、x2とx1の排他的論
理和、x1の否定、およびx2とx1の否定との論理和の
4つの論理関数を表現している。節点N1〜N5は、変
数の値(0または1)によって分岐先の枝(0枝または
1枝)が決定される変数節点であって、節点N1〜N3
が変数x2の値によって分岐条件が決定されるものであ
り、節点N4およびN5が変数x1の値によって分岐条
件が決定されるものである。節点N6とN7は定数節点
であり、節点N6が定数0を、節点N7が定数1を表す
ものである。
【0005】図8のBDDを用いて、例えば、x2とx1
の排他的論理和を求める場合、まず節点N2で変数x2
の値に応じた0枝または1枝の選択を行う。一方、変数
2が0の場合は0枝を選択して節点N4へ進み、他
方、変数x2が1の場合は1枝を選択して節点N5へ進
む。次に節点N4またはN5では変数x1の値に応じて
0枝または1枝の選択を行う。節点N4で変数x1が0
の場合は0枝を選択して定数節点N6へ進み、x2とx1
の排他的論理和の演算結果が0に決定される。一方、節
点N4で変数x1が1の場合は1枝を選択して定数節点
N7へ進み、演算結果は1となる。他方、節点N2から
節点N5へ進んだ場合、節点N5では、変数x1が1の
場合は1枝を選択して定数節点N6へ進み、演算結果の
0が求められる。そして、節点N5で変数x1が0の場
合は0枝を選択して定数節点N7へ進み、演算結果が1
となる。
【0006】x2とx1の否定との論理積に対しては節点
N1が演算開始の節点であり、x1の否定に対しては節
点N5が演算開始の節点であり、また、x2とx1の否定
との論理和に対しては節点N3が演算開始の節点であ
る。そして、x2とx1の排他的論理和の演算の場合と同
様にして、各開始節点を起点として、変数節点では各変
数に0または1の値を代入して0枝または1枝の選択を
行って次の節点に進み、これを定数節点に至るまで繰り
返し行うことで、演算結果0または1を求めることがで
きる。なお、図8のBDDにおいては、節点N1では、
変数x2の値が0の場合は0枝を選択して定数節点N6
へ進み、他方、変数x2が1の場合は1枝を選択して節
点N5へ進む。節点N3では、変数x2の値が0の場合
は0枝を選択して定数節点N5へ進み、他方、変数x2
が1の場合は1枝を選択して定数節点N7へ進む。
【0007】次に、図8に示すBDDの代入演算を、コ
ンピュータを用いて行う場合の具体例を図9〜図13を
参照して説明する。図9は、BDDの演算処理を行うコ
ンピュータの基本構成を示すブロック図である。基本処
理装置100は、プログラム・カウンタ、アキュムレー
タ、演算回路、各種レジスタ、割り込み制御回路等から
構成され、記憶装置200に格納されているプログラム
を形成する命令の読み出し、解読、および実行を行う。
記憶装置200は、ROM(read-only memory)および
RAM(random-access Memory)から構成され、基本処
理装置100の主記憶として機能する。記憶装置200
には、少なくともBDDの演算処理を行うBDD処理プ
ログラムを格納するためのBDD処理プログラム格納メ
モリ210、BDDの各節点を定義するデータを格納す
るためのBDDデータ格納メモリ220、および図8に
示すx1,x2等の変数データを格納するための変数デー
タ格納メモリ230の3つの領域を有している。基本処
理装置100は、BDD処理プログラム格納メモリ21
0に格納されているBDD処理プログラムを読み込み、
解読および実行しながら、BDDデータ格納メモリ22
0に格納されているBDDデータと、変数データ格納メ
モリ230に格納されている変数データと順次読み取り
ながら、BDDの演算処理を行う。
【0008】図10は、BDD処理プログラム格納メモ
リ210に格納されるBDD処理プログラムの一例を示
すフローチャートであり、図11は、図10に示すBD
D処理プログラムをアセンブラでコーディングしたもの
である。ただし、図10のフローチャートと図11のプ
ログラムは、同一の演算結果を得るものであるが、詳細
な分岐判断の位置等は必ずしも一対一には対応していな
い。
【0009】また、図12は、BDDデータ格納メモリ
220に格納されているBDDデータの一例を示すもの
であって、BDDデータはテーブル形式で格納され、そ
のテーブル(以下、BDDデータテーブル)には図8に
示すBDDを構成する各節点のデータが各節点ごとに設
定されている。BDDの各節点は,変数の番号,0枝,
1枝の3つの属性をもち、0枝,1枝はそれぞれの行き
先の節点の番地として示され、また、定数節点は特別な
変数の番号をもつ節点のデータとしてメモリ上に格納さ
れる。各属性データは、1番地毎にメモリ上(基本処理
装置100の主記憶(記憶装置200a)上)に格納さ
れる。
【0010】図12に示すテーブル中の番地は相対番地
を示すものであり、節点N1〜N3のデータがそれぞれ
番地313〜番地315、番地316〜番地318、お
よび番地319〜番地321に格納され、節点N4〜N
5のデータがそれぞれ番地307〜番地309、番地3
10〜番地312に格納され、そして、節点N6〜N7
のデータがそれぞれ番地301〜番地303、番地30
4〜番地306に格納されている。各節点データの先頭
番地301,304,307,310,313,31
6,319は、それぞれ、ラベルCNS0,CNS1,
ADR2,ADR3,ADR4,ADR5,ADR6と
定義されていて、各節点データの0枝および1枝の値は
ラベルを用いて表されている。
【0011】節点N1〜N3のデータの変数の番号は、
変数x2の添え字2であり、0枝および1枝の値は、そ
れぞれ、節点N1(先頭番地:ADR4)でCNS0
(0枝:定数節点N6)とADR3(1枝:節点N
5)、節点N2(先頭番地:ADR5)でADR2(節
点N4)とADR3(節点N5)、節点N3(先頭番
地:ADR6)でADR3(節点N5)とCNS1(定
数節点N7)である。節点N4〜N5のデータの変数の
番号は、変数x1の添え字1であり、0枝および1枝の
値は、それぞれ、節点N4(先頭番地:ADR2)でC
NS0(定数節点N6)とCNS1(定数節点N7)、
節点N5(先頭番地:ADR3)でCNS1(定数節点
N7)と CNS0(定数節点N6)である。そして、
定数節点N6〜N7は、それぞれ、変数の番号を0と−
1(1を負の符号としたのは変数x1の変数番号と区別
するため)とし、0枝および1枝の値は設定されていな
い。
【0012】図13は、図9の変数データ格納メモリ2
30内の変数データの格納方法を示した図であり、この
場合、変数x1,x2,…,xi+1(iは自然数)は、そ
れぞれ番地TADR,TADR+1,…,TADR+i
に格納されるようになっている(以下、図13のテーブ
ルを変数データテーブルという)。
【0013】図14は、この例における図9の基本処理
装置100内の各レジスタの用途を示す図であり、レジ
スタR0には常に0が格納され、レジスタR1にはBD
Dデータテーブル中の所定の節点のデータの先頭番地が
格納され、以下、レジスタR26,R27,R28,R
29,R30,およびR31には、それぞれ、変数
1,x2等の変数値(R26)、変数番号が0節点か1
節点かを判断するための比較値発生用の値である比較値
(R27)、変数x1,x2等の添え字1,2等の変数番
号(R28)、論理関数を求める際に代入演算を開始す
る節点をBDDデータテーブル内の節点データの先頭番
地で表した根の番地(R29)、BDDによる演算の結
果である返却する論理関数値(R30)、および次の処
理ルーチンの先頭命令番地である戻り番地(R31)が
格納される。
【0014】図10に示すフローチャートを参照して、
BDD処理プログラムによる演算の基本的な手順につい
て説明する。まず、求める根を指定するとともに、演算
に必要な変数の値を変数データテーブル(図13)に設
定した所定のメインルーチンから、図10のBDD処理
プログラムが呼び出されたとすると、レジスタR1に、
代入演算対象の論理関数を表すBDDの根の節点データ
の先頭番地(ADR3〜ADR6のいずれか)が代入さ
れる(ステップS11)。次に、レジスタR1に設定さ
れている番地の節点データ中の変数の番号が基本処理装
置100内に読み込まれる(ステップS12)。変数の
番号が定数節点を表す値(0または−1)であるときに
は(ステップS13)、定数節点の定数値(0または
1)を論理演算結果としてレジスタR30に設定し(図
14参照)、レジスタR31に設定された番地の命令に
処理を渡して図10のBDD処理プログラムが終了する
(ステップ18)
【0015】一方、ステップS13で、変数の番号が定
数節点を表す値でないと判断された場合は、変数データ
テーブルから変数番号が示す変数データが読み込まれる
(ステップS14)。読み込んだ変数データが0のとき
には、レジスタR1に設定されている番地を先頭番地と
する節点データの0枝に設定されている番地でレジスタ
R1を更新し(ステップS17)、変数データが0でな
いときには、レジスタR1に設定されている番地を先頭
番地とする節点データの1枝に設定されている番地でレ
ジスタR1を更新して(ステップS16)、ステップS
12へ戻り、上述した処理が繰り返し行われる。
【0016】次に、図11を参照して、BDD処理プロ
グラムによる演算処理手順をより詳細に説明する。図1
1に示すアセンブラプログラムでは、各節点について、
以下の〜の各手順を繰り返すループを含む処理を行
うことによって、BDDの演算を実行している。
【0017】節点の情報が格納されているテーブルの
先頭番地を取り込むステップ(LOOP: MOV R
29,R1)…レジスタR29(=根の番地)をレジス
タR1に代入。
【0018】節点の種類(変数節点か定数節点か)の
情報を取り込むステップ(LW R28,0(R1))
…レジスタR1の示す番地の内容をレジスタR28に代
入。
【0019】定数節点ならばBDD演算ルーチンを終
了し、次の処理ルーチンに移るステップ(定数0の場
合:BEQZ R28,CNS_0⇒CNS_0:MO
V R0,R30⇒JMP R31/定数1の場合:A
DDI R27,R28,1⇒BEQZ R27,CN
S_1⇒CNS_1:MOV R0,R30⇒ADDI
R30,R30,1⇒JMP R31)…0の場合:レ
ジスタR28が0ならばCNS_0にジャンプ⇒レジス
タR30←レジスタR0(=0)⇒呼び出し元に復帰/
1の場合:レジスタR27←レジスタR28+1⇒レジ
スタR27が0,つまりレジスタR28が−1ならばC
NS_1にジャンプ⇒レジスタR30←レジスタR0
(=0)⇒レジスタR30←レジスタR30+1⇒呼び
出し元に復帰。
【0020】変数節点ならばその変数値を取り込むス
テップ(LW R26,TADR(R28))…レジス
タR28が変数番号なので、その値をレジスタR26に
代入。
【0021】変数値が0か1か比較判断するステップ
(変数値=0の場合:BEQZ R26,ZERO/変
数値≠0の場合:BR ONE)…0の場合:レジスタ
R26(=変数の値)が0ならばZEROにジャンプ/
1の場合:無条件にONEにジャンプ。
【0022】行き先番地の設定ステップ(0枝:LW
R29,1(R1)/1枝:LWR29,2(R
1))…0枝:レジスタR1の示す次の番地の内容をレ
ジスタR29に代入/1枝:レジスタR1の示す次の次
の番地の内容をレジスタR29に代入。
【0023】に戻るステップ(BR LOOP)…
無条件にLOOPにジャンプ。
【0024】上記のように、BDDが表す関数の変数に
0または1を代入して関数値を求める代入演算を実行す
るときは,関数を表すBDDの根の番地から出発し、変
数の値により0枝または1枝を選択しながら順次選択先
の番地をたどり、定数節点に到達するまで繰り返す処理
を行っていた。
【0025】例えば、求める根をx2とx1の排他的論理
和とし、各変数値をx1=0,x2=1とすると、図11
の左端部分の矢印で示されるように、ラベルLOOPを
先頭とする処理を3回繰り返す処理が行われることにな
る。すなわち、(1)メインルーチンにおいて、ADR
5を根の番地としてレジスタR29に設定して図11の
プログラムを呼び出し、次に、(2)レジスタR29を
レジスタR1に設定し…MOV R29,R1、そし
て、(3)節点変数番号(図12の番地316)をR2
8に設定する…LW R28,0(R1)。次に、
(4)変数番号=0(定数節点0)かどうかを判断し…
BEQZ R28,CNS_0、(5)(4)が否なの
で変数番号=−l(定数節点1)かどうかを判断し…A
DDI R27,R28,1、BEQZ R28,CN
S_1、(6)(5)も否なので変数値をレジスタR2
6に設定する…LW R26,TADR(R28)。そ
して、(7)変数値=0ならば0枝ルーチンZEROに
ジャンプするが…BEQZ R26,ZERO、(8)
(7)が否なので1枝ルーチンONEにジャンプする…
BR ONE。
【0026】次に、(9)次節点(1枝)の番地(番地
318)の内容(ADR3:番地310)をレジスタR
29に設定し、LOOPルーチン(2)に戻る…LW
R29,2(R1)、BR LOOP。次に、(10)
レジスタR29(番地)をレジスタR1に設定し…MO
V R29,R1、(11)節点変数番号(番地31
0)をレジスタR28に設定する…LW R28,0
(R1)。(12)変数番号=0(定数節点0)かどう
かを判断し…BEQZ R28,CNS_1、(13)
(12)が否なので変数番号=−1(定数節点1)かど
うかを判断し…ADDI R27,R28,1、BEQ
Z R28,CNS_0、(14)(13)も否なので
変数値をレジスタR26に設定する…LW R26,T
ADR(R28)。ここで、(15)変数値=0なので
0枝ルーチンZEROにジャンプし…BEQZ R2
6,ZERO、(16)次節点(0枝)の番地(番地3
11の内容(CNS1))をレジスタR29に設定し、
LOOPルーチンに戻る…LWR29,1(R1)、B
R LOOP。
【0027】次に、(17)レジスタR29をレジスタ
R1に設定し…MOV R29,R1、(18)節点変
数番号(番地304)をレジスタR28に設定する…L
WR28,0(R1)。ここで、(19)変数番号=0
(定数節点0)かどうかを判断し…BEQZ R28,
CNS_0、(20)(19)が否なので変数番号=−
1(定数節点1)かどうかを判断し…ADDI R2
7,R2B,1、BEQZ R28,CNS_0、(2
1)(20)が正なのでBDDの分岐処理が終了して、
CNS_0ルーチンを実行し、レジスタR30に結果を
格納して、メインルーチンに復帰する…MOV R0,
R30、JMP R31。
【0028】以上のように、本願発明が背景とした技術
においては、変数の値をチェックして0枝または1枝の
選択先の番地をたどるという複数の処理を繰り返し行う
プログラムが必要であり、代入演算結果を得るのに処理
時間がかかっているという課題があった。また、この原
因の一因は、BDDを純粋なデータとしてメモリ上に格
納して処理していたことであると考えられた。
【0029】そこで、本発明は、論理関数をBDDで表
現して代入演算を行う際に、変数の値をチェックして0
枝または1枝の選択先の番地をたどるという複数の処理
を繰り返し行う手順を不要とし、代入演算結果を得るた
めに要する処理時間を短縮することができるデータ処理
方法及びデータ処理装置並びにデータ処理プログラムを
記録した記録媒体を提供することを目的とする。
【0030】
【課題を解決するための手段】上記課題を解決するた
め、請求項1記載の発明は、BDD(二分決定グラフ)
の演算開始から演算終了までを、演算すべきBDDを定
義したテーブルのみを使用して演算を行うことを特徴と
している。
【0031】また、請求項2記載の発明は、前記テーブ
ルが、少なくともBDDの変数節点の番地及び条件ジャ
ンプ命令とを格納していることを特徴としている。ま
た、請求項3記載の発明は、前記テーブルが、根又は節
点の内容によってジャンプ先が決まる条件ジャンプ命令
と、ジャンプ先の節点の番地とを1組の情報として格納
していることを特徴としている。また、請求項4記載の
発明は、前記テーブルが、根又は節点の内容が1か0か
によってジャンプ先が各々決まる2つの条件ジャンプ命
令と、各ジャンプ先の節点の番地をそれぞれ備える2つ
の命令列を1組の情報として格納していることを特徴と
している。
【0032】また、請求項5記載の発明は、前記テーブ
ルの格納領域が、データメモリ領域に設けられているこ
とを特徴としている。また、請求項6記載の発明は、前
記テーブルが、RAMに設けられていることを特徴とし
ている。また、請求項7記載の発明は、前記条件ジャン
プ命令とジャンプ先の節点の番地とを同時に取り込み、
実行することによって、演算を行うことを特徴としてい
る。
【0033】また、請求項8記載の発明は、根又は節点
が取りうる2つの定数値について各々決められた行き先
番地と、前記定数値の値を判断して前記行き先番地の何
れかを選択する条件判断命令コードとを1組の情報とし
て有するテーブルを用い、前記条件判断命令コードと行
き先番地とを前記テーブルから同時に読み出し、BDD
(二分決定グラフ)の演算処理を行うことを特徴として
いる。
【0034】また、請求項9記載の発明は、論理関数を
表すBDD(二分決定グラフ)をあらかじめ実行可能な
機械語形式で記憶手段に格納し、前記記憶手段に格納さ
れている機械語プログラムを直接実行することによっ
て、BDDの表す論理関数の変数に0または1を代入し
て、論理関数値を得る代入演算を行うことを特徴として
いる。
【0035】また、請求項10記載の発明は、演算すべ
きBDD(二分決定グラフ)を定義したテーブルと、B
DDの演算開始から演算終了までを、前記テーブルのみ
を使用して演算を行う演算手段とを備えることを特徴と
している。
【0036】また、請求項11記載の発明は、論理関数
を表すBDD(二分決定グラフ)をあらかじめ実行可能
な機械語形式で格納した記憶手段と、前記記憶手段に格
納されている機械語プログラムを直接実行することによ
って、BDDの表す論理関数の変数に0または1を代入
して、論理関数値を得る代入演算を行う演算手段とを備
えることを特徴としている。
【0037】また、請求項12記載の発明は、請求項1
0又は11に記載のデータ処理装置によって実行される
BDDの演算を行うためのプログラムを記録した計算機
読み取り可能な記録媒体である。
【0038】
【発明の実施の形態】以下、図面を参照して本発明によ
るデータ処理装置の実施の形態について説明する。図1
は、本発明によってBDDの演算処理を行うコンピュー
タの基本構成を示すブロック図である。基本処理装置1
00aは、プログラム・カウンタ、アキュムレータ、演
算回路、各種レジスタ、割り込み制御回路等から構成さ
れ、記憶装置200aに格納されているプログラムを構
成する機械語命令の読み出し、解読、および実行を行
う。なお、図1の基本処理装置100aは、上述した図
9に示す基本処理装置100に対して、図1に図示して
いない内部レジスタの使用方法が異なっている。
【0039】記憶装置200aは、ROMおよびRAM
から構成され、基本処理装置100aの主記憶として機
能する。記憶装置200aには、少なくともBDDの演
算処理を行うためのBDD処理プログラムを格納するた
めのBDD処理プログラム格納メモリ210a、図8に
示すようなBDDの各節点を定義するデータを格納する
ためのBDDデータ格納メモリ220a、および図8に
示すものと同じ変数データ格納メモリ230の3つのデ
ータメモリ領域を有している。なお、BDD処理プログ
ラムとBDDデータは、あらかじめROMに格納してお
いてもよいし、あるいはハードディスク等の外部記憶装
置に記憶しておいて、プログラムを実行する際に、全部
一度にRAMに読み込んで、あるいは部分的に逐次RA
Mに読み込みながら、基本処理装置100aがアクセス
できるようにしておく。ただし、RAMに、一旦BDD
処理プログラムおよびBDDデータの全部を読み込んで
からプログラムを実行するようにした方が、ROMから
読み込む場合に比べて読み込み速度を高速化できるの
で、記憶容量に余裕がある場合には、BDD処理プログ
ラムとBDDデータをすべてRAMに読み込んでからプ
ログラムを開始するようにすることが望ましい。
【0040】なお、本実施の形態のBDD処理プログラ
ムおよびBDDデータの両者あるいはいずれか一方は、
コンピュータ読み取り可能な記録媒体に記録して頒布す
ることが可能である。
【0041】図1に示す本発明のデータ処理装置では、
論理関数を表すBDDにおいて、定数節点を、定数値
(0または1)を特定レジスタに格納して戻る機械語命
令列としてBDDデータ格納メモリ220aに格納する
とともに、定数節点以外の節点を、論理変数に対応させ
たレジスタの値により条件分岐を行う機械語命令列とし
てBDDデータ格納メモリ220a上に格納するように
している。そして、BDDの表す関数において変数に0
または1を代入して関数値を求める代入演算を実行する
ときは、関数を表すBDDの根の番地から、BDDデー
タ格納メモリ220aに格納されている機械語プログラ
ムを実行すること、すなわち、求めようとするBDDの
根の番地を基本処理装置100aのプログラムカウンタ
に設定してプログラムを実行することによって、演算結
果を得るものである。したがって、基本処理装置100
aは、BDD処理プログラム格納メモリ210aに格納
されているBDD処理プログラムを読み込み、解読およ
び実行するとともに、 変数データ格納メモリ230に
格納されている変数データを順次読み取りながら、BD
Dデータ格納メモリ220aに格納されているBDDデ
ータ、すなわち機械語データを読み込み、解読および実
行することによって、BDDの演算処理を行う。
【0042】図2は、BDD処理プログラム格納メモリ
210aに格納されているBDD処理プログラムの一例
を示すフローチャート、図3は、BDDデータ格納メモ
リ220aに格納されているBDDデータの一例を示す
図、そして、図4は、本実施の形態における基本処理装
置100a内の各レジスタの用途を示す図である。ただ
し、変数データ格納メモリ230は、上述した図13に
示すものと同一である。
【0043】まず、図4を参照して、基本処理装置10
0a内の各レジスタの用途について説明する。本実施の
形態では、レジスタR0〜R1とレジスタR29〜R3
1の5つのレジスタを用いている。レジスタR0には常
に0が格納され、レジスタR1には変数の値が代入され
る。レジスタR29には常に1が格納され、レジスタR
30およびR31には、BDDによる演算の結果である
返却する論理関数値および次の処理ルーチンの先頭命令
番地である戻り番地が格納される。なお、レジスタR2
は後述する本実施の形態の変形例において用いられる。
【0044】次に、図3に示すBDDデータ格納メモリ
220a内のBDDデータについて詳細に説明する。図
3に示すように、BDDデータはテーブル形式で格納さ
れる。図3は、BDDデータテーブルに、一例として、
図8に示すBDDを構成する各節点のデータを節点ごと
に設定したものである。BDDの各節点は、上述したよ
うに、定数節点(節点N6およびN7)が、定数値(0
(レジスタR0の値)または1(レジスタR29の
値))を、特定のレジスタR30に格納して戻る実行可
能な機械語命令列で、また、定数節点以外の節点(節点
N1〜N5)が、論理変数x1またはx2の値が代入され
たレジスタR1の値により条件分岐を行う実行可能な機
械語命令列で表されている。ただし、図3では、BDD
データテーブルのデータとして、機械語命令(2進、1
6進数等の数字列)を直接記載するのではなく、対応す
るアセンブラのニーモニックを記述している。また、各
節点のデータは、番地順に実行される。
【0045】図3に示すBDDデータテーブル中の番地
は相対番地を示すものであり、節点N1〜N3のデータ
がそれぞれ番地111〜番地113、番地114〜番地
116、および番地117〜番地119に格納され、節
点N4〜N5のデータがそれぞれ番地105〜番地10
7、番地108〜番地110に格納され、そして、節点
N6〜N7のデータがそれぞれ番地101〜番地10
2、番地103〜番地104に格納されている。各節点
データの先頭番地101,103,105,108,1
11,114,117には、それぞれ、ラベルCNS
0,CNS1,ADR2,ADR3,ADR4,ADR
5,ADR6が定義されている。
【0046】節点N1〜N3のデータは、変数x2を番
地TADR+1(図13参照)からレジスタR1に読み
込む命令(LW R1,TADR+1(R0(=
0)))と、レジスタR1の値に応じた0枝および1枝
の2つの条件分岐命令の各3ステップの命令から形成さ
れている。ここで、BEQZ R1,CNS0は、レジ
スタR1=0のとき、番地CNS0へ分岐する命令であ
り、BNEZ R1,ADR3は、レジスタR1≠0の
とき、番地ADR3へ分岐する命令である。また、BE
QZ R1,ADR2は、レジスタR1=0のとき、番
地ADR2へ分岐する命令であり、BEQZ R1,A
DR3は、レジスタR1=0のとき、番地ADR3へ分
岐する命令であり、そして、BNEZ R1,CNS1
は、レジスタR1≠0のとき、番地CNS1へ分岐する
命令である。
【0047】節点N4〜N5のデータは、変数x1を番
地TADR(図13参照)からレジスタR1に読み込む
命令(LW R1,TADR(R0))と、レジスタR
1の値に応じた0枝および1枝の2つの条件分岐命令の
各3ステップの命令から形成されている。ここで、BE
QZ R1,CNS1は、レジスタR1=0のとき、番
地CNS1へ分岐する命令であり、BNEZ R1,C
NS0は、レジスタR1≠0のとき、番地CNS0へ分
岐する命令である。
【0048】節点N6〜N7のデータは、定数(0(R
0の格納値)または1(R1の格納値))を、返却する
論理関数値を格納するレジスタR30に代入する命令
(MOV R0,R30またはMOV R1,R30)
と、メインルーチンへ復帰する命令(JMP R31)
とから構成されている。
【0049】なお、図3のBDDデータテーブルは、連
続するメモリ領域に作っても良いし、節点毎(2行また
は3行ずつ)に離散させてつくってもよい。必須の要件
は、節点毎にBEQZ命令が実行されなかった場合、次
の命令が自動的に取り込まれ、実行されるように並べて
おくことである。格納するメモリ領域の番地を例示した
が、これは自由に決めることができる。また、BNEZ
命令はBR命令(無条件分岐命令)に変えても良い(B
EQZ命令の行き先でなければ、自動的に行き先にいく
ため、条件判断の必要はないからである)。
【0050】次に、図1のBDD処理プログラム格納メ
モリ210aに格納されるBDD処理プログラム(メイ
ンルーチン)の処理の流れについて説明する。まず、論
理関数の代入演算に必要な各変数xi値を図13に示す
変数データテーブルの番地TADR+i−1に格納する
(ステップS101)。次に、レジスタR31に代入演
算処理後の戻り番地を設定する(ステップS102)。
すなわち、レジスタR31に、ステップS103の代入
演算処理を終了した後、次に実行する処理ルーチンの先
頭命令の番地を設定する。次に、代入演算対象の論理関
数を表すBDD(ここでは図8のBDDとする)の根の
番地(図3のラベルADR3〜ADR6のいずれか)を
プログラム・カウンタに設定し、図3のBDDデータテ
ーブルに設定されている機械語プログラムを実行する。
そして、BDDデータテーブル内の機械語プログラムが
順次、実行されて、定数節点N6またはN7の命令JM
PR31が実行されたところで、レジスタR31に設定
されている番地を先頭命令とする処理ルーチンの実行が
開始されるが、この時、レジスタR30に代入演算結果
が得られている(ステップS104)。
【0051】次に、図5を参照して、図8のBDDを用
い、具体例として、変数x1=0,変数x2=1とした場
合に、x2とx1の排他的論理和を求める手順について説
明する。なお、図5は、図3に示したBDDデータテー
ブルと同様のBDDデータテーブルを記憶装置200a
上に展開したBDDデータ格納メモリ220bを示すも
のであるが、この場合、図3と異なり、各節点のデータ
間を離散させて配置している。また、求めようとする論
理関数に対する演算処理の流れを示す矢印を他の論理関
数を求める処理の流れのものよりも太い線で示してい
る。
【0052】まず、メインルーチンで、x2とx1の排他
的論理和の根の番地ADR5に対応する番地がプログラ
ム・カウンタに設定され、番地ADR5の命令LW R
1,TADR+1(R0)が実行される。この場合、T
ADR+1(R0)すなわち変数x2は1なので、命令
BEQZ R1,ADR2では分岐せず、命令BNEZ
R1,ADR3によって、番地ADR3への分岐が行
われる。
【0053】番地ADR3では、命令LW R1,TA
DR(R0)が実行される。TADR(R0)すなわち
変数x1は0なので、命令BEQZ R1,ADR2で
分岐処理がなされ、番地CNS1へ分岐する。番地CN
S1では、命令MOV R29,R30が実行されて、
レジスタR30に1が格納され、次いで、命令JMPR
31が実行されて、メインルーチンへ復帰し、演算結果
1がレジスタR31に得られる。
【0054】以上のように、本実施の形態によれば、図
5の左側の部分に下向きの3つの太矢印で示したよう
に、BDD内の選択、分岐処理が、図11に示した同条
件の代入演算処理におけるLOOP内の処理のような、
繰り返し処理を行わずに実行される。
【0055】次に、図6を参照して、図3に示すBDD
データテーブルの変形例について説明する。図6に示す
BDDデータテーブルは、図3に示すBDDデータテー
ブルと同様、図8のBDDを示すものであるが、構成の
簡略化を図ったものである。ただし、図6に示すBDD
データテーブルを用いて代入演算を行う場合には、あら
かじめ、レジスタR1に変数x1の値を、レジスタR2
に変数x2の値を格納しておいて、その後にBDDデー
タテーブル内の求めようとする節点に対応する番地に処
理を移す必要がある。
【0056】図6に示す図1のBDDデータ格納メモリ
220aに対応するBDDデータ格納メモリ220cに
格納されるBDDデータテーブルにおいて、定数節点N
6およびN7に対するデータは、図3のものと同一であ
る。これに対し、変数接点N1〜N5に対するデータで
は、第1に、図3のテーブルにおいて分岐判断(命令B
EQZあるいは命令BNEZ)の前に設けていたレジス
タR1への変数の値の代入処理(LW命令)を省略する
とともに、変数に応じて、分岐判断の基準となるデータ
をレジスタR1(変数x1の場合)とレジスタR2(変
数x2の場合)のどちらか一方を直接指定するようにし
た点が異なっている。また、第2に、各節点における2
番目の分岐命令を、無条件分岐命令(命令BR)とし
て、レジスタの参照を省略している。これらの変形によ
って、BDDデータテーブルのデータ量を減少させてい
る。
【0057】なお、図6のBDDデータテーブルにおい
て、節点N1,N2,N3,N4,N5を示すデータ
は、それぞれテーブル内の相対番地209〜210,2
11〜212,213〜214,205〜206,20
7〜208に、節点N6,N7を示すデータは、番地2
01〜202,203〜204に設定されている。
【0058】図7は、図6のBDDデータテーブルの各
節点のデータを離散させて、BDDデータ格納メモリ2
20d(図1のBDDデータ格納メモリ220aに対
応)に格納した場合の各節点に設定された機械語の実行
手順について示す図である。図7に示す場合、図5に示
したものより、処理ステップの削減がはかられている。
【0059】上述したように、本発明の各実施の形態に
よれば、各節点の条件選択のための繰り返し処理が不要
となるので、BDDのグラフの大きさに比例する時間で
代入演算が実行でき、しかも機械語命令を直接実行する
ため高速に代入演算を実行できる。また、BDDの構造
はそのまま保っているため、BDDの対する他の種類の
演算、たとえばapply演算なども従来の方式そのままで
実行できる。これらは、BDDのメモリ上のデータ表現
の中に実行可能な機械語命令列を埋め込んでいることな
どによるものである。
【0060】なお、上記の実施の形態では、BDDデー
タテーブルに直接機械語を記述することとしているが、
図3や図6に示したとおりにBDDデータテーブルをア
センブラのニーモニックで記述して、一旦、外部の記憶
装置等に格納し、必要時にそれをアセンブルして実行可
能な機械語形式に変換して記憶装置200aに格納して
使用するようにすることもできる。この場合、操作者に
よるデータの管理が用意になる。また、BDDデータテ
ーブルに設定するニーモニックの条件分岐命令のオペラ
ンド部を、BDDのグラフにおける各節点の番地に対応
して定義したラベルとしているので、メインルーチン
と、BDDデータテーブルのアセンブルを同時に行うよ
うにしたときには、メインルーチンとBDDデータテー
ブル内の各節点に対応したルーチンとの間の呼び出し
や、復帰にかかる命令を効率的にコーディングすること
が容易に可能となる。
【0061】
【発明の効果】以上説明したように、本発明によれば、
BDDデータの変数による選択処理を繰り返し行う必要
がなくなるので、高速に代入演算を実行できるという効
果が得られる。
【図面の簡単な説明】
【図1】 本発明によるデータ処理装置を構成するコン
ピュータの基本構成を示すブロック図。
【図2】 図1のコンピュータで実行するBDD処理プ
ログラムのフローチャート。
【図3】 図1のBDDデータ格納メモリ220aに格
納されるBDDデータの一例を示す図。
【図4】 図1の基本処理装置100aの内部レジスタ
を示す図。
【図5】 図3のBDDデータを用いたBDDの代入演
算処理手順を示す図。
【図6】 図3のBDDデータの変形例を示す図。
【図7】 図7のBDDデータを用いたBDDの代入演
算処理手順を示す図。
【図8】 BDDの一例を示す図。
【図9】 本発明の背景技術となったデータ処理装置を
構成するコンピュータの基本構成を示すブロック図。
【図10】 図9のコンピュータで実行するBDD処理
プログラムのフローチャート。
【図11】 図9のコンピュータで実行するBDD処理
プログラムをアセンブラで記述した図。
【図12】 図9のBDDデータ格納メモリ220に格
納されるBDDデータの一例を示す図。
【図13】 図1および図9の変数データ格納メモリ2
30に格納される変数データテーブルの一例を示す図。
【図14】 図9の基本処理装置100の内部レジスタ
を示す図。
【符号の説明】
100a 基本処理装置 200a 記憶装置 210a BDD処理プログラム格納メモリ 220a,220b,220c,220d BDDデー
タ格納メモリ 230 変数データ格納メモリ

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】 BDD(二分決定グラフ)の演算開始か
    ら演算終了までを、演算すべきBDDを定義したテーブ
    ルのみを使用して演算を行うことを特徴とするデータ処
    理方法。
  2. 【請求項2】 前記テーブルが、少なくともBDDの変
    数節点の番地及び条件ジャンプ命令とを格納しているこ
    とを特徴とする請求項1記載のデータ処理方法。
  3. 【請求項3】 前記テーブルが、根又は節点の内容によ
    ってジャンプ先が決まる条件ジャンプ命令と、ジャンプ
    先の節点の番地とを1組の情報として格納していること
    を特徴とする請求項1又は2に記載のデータ処理方法。
  4. 【請求項4】 前記テーブルが、根又は節点の内容が1
    か0かによってジャンプ先が各々決まる2つの条件ジャ
    ンプ命令と、各ジャンプ先の節点の番地をそれぞれ備え
    る2つの命令列を1組の情報として格納していることを
    特徴とする請求項3に記載のデータ処理方法。
  5. 【請求項5】 前記テーブルの格納領域が、データメモ
    リ領域に設けられていることを特徴とする請求項1〜4
    の何れか1項に記載のデータ処理方法。
  6. 【請求項6】 前記テーブルが、RAMに設けられてい
    ることを特徴とする請求項1〜5の何れか1項に記載の
    データ処理方法。
  7. 【請求項7】 前記条件ジャンプ命令とジャンプ先の節
    点の番地とを同時に取り込み、実行することによって、
    演算を行うことを特徴とする請求項3又は4に記載のデ
    ータ処理方法。
  8. 【請求項8】 根又は節点が取りうる2つの定数値につ
    いて各々決められた行き先番地と、前記定数値の値を判
    断して前記行き先番地の何れかを選択する条件判断命令
    コードとを1組の情報として有するテーブルを用い、 前記条件判断命令コードと行き先番地とを前記テーブル
    から同時に読み出し、BDD(二分決定グラフ)の演算
    処理を行うことを特徴とするデータ処理方法。
  9. 【請求項9】 論理関数を表すBDD(二分決定グラ
    フ)をあらかじめ実行可能な機械語形式で記憶手段に格
    納し、 前記記憶手段に格納されている機械語プログラムを直接
    実行することによって、BDDの表す論理関数の変数に
    0または1を代入して、論理関数値を得る代入演算を行
    うことを特徴とするデータ処理方法。
  10. 【請求項10】 演算すべきBDD(二分決定グラフ)
    を定義したテーブルと、BDDの演算開始から演算終了
    までを、前記テーブルのみを使用して演算を行う演算手
    段とを備えることを特徴とするデータ処理装置。
  11. 【請求項11】 論理関数を表すBDD(二分決定グラ
    フ)をあらかじめ実行可能な機械語形式で格納した記憶
    手段と、 前記記憶手段に格納されている機械語プログラムを直接
    実行することによって、BDDの表す論理関数の変数に
    0または1を代入して、論理関数値を得る代入演算を行
    う演算手段とを備えることを特徴とするデータ処理装
    置。
  12. 【請求項12】 請求項10又は11に記載のデータ処
    理装置によって実行されるBDDの演算を行うためのプ
    ログラムを記録した計算機読み取り可能な記録媒体。
JP14077199A 1999-05-20 1999-05-20 データ処理方法及びデータ処理装置並びにデータ処理プログラムを記録した記録媒体 Pending JP2000330786A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP14077199A JP2000330786A (ja) 1999-05-20 1999-05-20 データ処理方法及びデータ処理装置並びにデータ処理プログラムを記録した記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP14077199A JP2000330786A (ja) 1999-05-20 1999-05-20 データ処理方法及びデータ処理装置並びにデータ処理プログラムを記録した記録媒体

Publications (1)

Publication Number Publication Date
JP2000330786A true JP2000330786A (ja) 2000-11-30

Family

ID=15276377

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14077199A Pending JP2000330786A (ja) 1999-05-20 1999-05-20 データ処理方法及びデータ処理装置並びにデータ処理プログラムを記録した記録媒体

Country Status (1)

Country Link
JP (1) JP2000330786A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010204969A (ja) * 2009-03-03 2010-09-16 Kyushu Institute Of Technology ブランチング・プログラム・マシン及び並列プロセッサ
US8655921B2 (en) 2008-08-11 2014-02-18 Fujitsu Limited True/false decision method for deciding whether search query containing logical expression is true or false

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8655921B2 (en) 2008-08-11 2014-02-18 Fujitsu Limited True/false decision method for deciding whether search query containing logical expression is true or false
JP2010204969A (ja) * 2009-03-03 2010-09-16 Kyushu Institute Of Technology ブランチング・プログラム・マシン及び並列プロセッサ

Similar Documents

Publication Publication Date Title
US9383999B2 (en) Conditional compare instruction
JP5573134B2 (ja) ベクトル型計算機及びベクトル型計算機の命令制御方法
JP2006350686A (ja) 命令セット・シミュレータ生成装置及びシミュレータ生成方法
JPH0810428B2 (ja) データ処理装置
JPS5975347A (ja) 論理回路のシミユレ−シヨン装置
SNOW III AUTOMATION OF MODULE SET INDEPENDENT REGISTER-TRANSFER LEVEL DESIGN.
JP2008176453A (ja) シミュレーション装置
US11068463B2 (en) System and method for managing log data
JP2004030638A (ja) マイクロプロセッサキャッシュ設計初期化
JP2000330786A (ja) データ処理方法及びデータ処理装置並びにデータ処理プログラムを記録した記録媒体
US20070011440A1 (en) Processor and processing method
JP2000268074A (ja) 検証プログラム自動生成装置および方法並びにプロパティ自動生成装置および方法
JP4159586B2 (ja) 情報処理装置および情報処理の高速化方法
US7181595B1 (en) Method for decoding composite VLIW packets utilizing a tree structure
JP2004118518A (ja) シミュレータ、そのシミュレータをコンピュータ読み取り可能に記録した記録媒体
Froehlich et al. Lim-hdl: Hdl-based synthesis for in-memory computing
JP3594106B2 (ja) 自動プログラミング装置、自動プログラミング方法および記録媒体
Fürtler et al. SPOT—development tool for software pipeline optimization for VLIW-DSPs used in real-time image processing
JPH1165622A (ja) プログラマブルコントローラ
JPH11242598A (ja) コンパイル方法およびコンパイル装置ならびにオブジェクトプログラム実行方法およびオブジェクトプログラム実行装置ならびにプログラム記憶媒体
JP2005149297A (ja) プロセッサおよびそのアセンブラ
JPS6336337A (ja) スカラ/ベクトル命令の融合スケジユ−リング処理方式
JP2743947B2 (ja) マイクロプログラム制御方式
JPH05250156A (ja) Riscプロセッサ
JP2835179B2 (ja) 並列処理計算機

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20031104