JPS6314378B2 - - Google Patents

Info

Publication number
JPS6314378B2
JPS6314378B2 JP57112614A JP11261482A JPS6314378B2 JP S6314378 B2 JPS6314378 B2 JP S6314378B2 JP 57112614 A JP57112614 A JP 57112614A JP 11261482 A JP11261482 A JP 11261482A JP S6314378 B2 JPS6314378 B2 JP S6314378B2
Authority
JP
Japan
Prior art keywords
variable
cell
boolean expression
value
stored
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
Application number
JP57112614A
Other languages
English (en)
Other versions
JPS5848153A (ja
Inventor
Baasuteisu Bikutaasu
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPS5848153A publication Critical patent/JPS5848153A/ja
Publication of JPS6314378B2 publication Critical patent/JPS6314378B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Complex Calculations (AREA)

Description

【発明の詳細な説明】
A 産業上の利用分野 本発明は計算機システム内でブール式を評価
(evaluate)するための装置に係る。 B 従来技術およびその問題点 ブール式の評価は、その真又は偽の結果を求め
るために当該ブール式中の変数の値を使用して当
該ブール式によつて指示された論理演算を遂行す
ることからなる。ブール式の通常の形式は、刊行
物であるF.J.Hill et al:“Introduction to
Swithing Theory and Logical Design”、John
wiley and Sons、1968のうち特に第6章で説明
されている。すべてのブール式は、通常の形式で
ある“積(積項)の和”又は“和の積”の形式で
表わすことができる。“積の和”形式において、
“和”という用語は論理和(1)演算を表わし、“積”
という用語は論理積(&)演算を表わす。 ブール式を評価するためには、米国特許第
401789号に記述されているような専用計算機を使
用したり、又は論理命令でプログラムされた汎用
計算機を使用することができる。しかしながら、
前者はその能力が限られており、後者は低速で主
記憶の使用効率が低いという欠点を有する。本発
明の手段は汎用計算機を使用して遂行され、先行
技術に比較して融通性が大きい。というのは、本
発明によれば、ラン時点に形成されるブール式を
評価することができるだけでなく、以前に形成さ
れたプール式又は計算機によつて遂行されるプロ
セスの間に修正されたブール式をも評価すること
ができるからである。 より具体的には、 汎用計算器システムを使用してブール式を評価
するための通常の手段は、ブール式を解析して複
数の命令へコンパイルした後これらの命令を実行
するか、又はブール式を解析することによつて解
析木を解釈しながら実行する手段からなる。 しかしながら、これらの手段は低速であるとい
う問題点を有する。 本発明はこのような問題点に鑑みなされたもの
で、評価対象のブール式を細かく解析して複数の
命令へコンパイルすることなしに、高速で評価を
行う新規な手段を提供することを目的とする。 C 問題点を解決するための手段 本発明は、以下の手段(a)ないし(e)を具備する、
積項の和の形式で表わされたブール式の評価装置
である。 (a) 評価対象のブール式を解釈し、記憶装置の中
に、0から2m(mはブール式の中で登場する変
数の」のべ総数。以下同様)までの連続した位
置番号を付されたセルからなる第1の記憶領域
を設定し、各セルに次のような数値を格納する
手段。 (a1) 位置番号2n(nは1≦n≦mである整数、
以下同様)のセルには、評価対象のブール式
の先頭から数えて第n番目に登場する、変数
に代入される数値TまたはFを格納する。 ここで、数値Tは真の論理値を表わし、数
値Fは、偽の論理値を表わす。ただし、どち
らも同一桁数の2進数字で表現される数値で
あり、最下位の2進数字が異なるだけであつ
て、その他の桁の2進数字は同一であるとす
る。 (a2) 位置番号0および位置番号(2n−1)のセ
ルには、0を格納する。 ただし、上記10進数0、1、2、……、
2mは、手段(a)ないし(e)によつて、上記Tお
よびFと同一桁数の2進数字によつて表現さ
れる数値として処理される。 (b) 評価対象のブール式を解釈し、上記記憶装置
の中に、0から2mまでの連続した位置番号を
付されたセルからなる、第1の記憶領域とは異
なる第2の記憶領域を設定し、各セルに次のよ
うな数値を格納する手段。 (b1) 位置番号0のセルには0を格納する。 (b2) 位置番号2nのセルには、次の条件に従つ
て、(2n−2)XOR Tまたは(2n−2)
XOR Fの何れかを格納する。ただし、以下
では、XORは排他的論理和演算を表わす。 (i) 上記ブール式中の第n番目の変数がある
積項の中の第1番目の変数であつて、かつ
この変数に否定演算が施されていない場合
は、(2n−2)XOR Fを格納する。 (ii) 上記ブール式中の第n番目の変数がある
積項の中の第1番目の変数であつて、かつ
この変数に否定演算が施されている場合
は、(2n−2)XOR Tを格納する。 (iii) 上記ブール式中の第n番目の変数がある
積項の中の第2番目以後の変数であつて、
かつこの変数に否定演算が施されていない
場合は、(2n−2)XOR Tを格納する。 (iv) 上記ブール式中の第n番目の変数がある
積項の中の第2番目以後の変数であつて、
かつこの変数に否定演算が施されている場
合は、(2n−2)XOR Fを格納する。 (b3) 位置番号(2n−1)のセルには、次の条件
にしたがつて数値を格納する。 (i) 上記ブール式中の第n番目の変数がある
積項の第1番目の変数である場合は、1を
格納する。 (ii) 上記ブール式中の第n番目の変数が上記
ブール式の先頭から数えて第1番目の積項
の中の第2番目以後の変数である場合は、
0を格納する。 (iii) 上記ブール式中の第n番目の変数が上記
ブール式の先頭から数えて第l(lはl≧
2である整数)番目の積項の中の第2番目
以後の変数である場合は、第(l−1)番
目の積項の中の最後の変数に代入されるT
またはFが格納される上記第1の記憶領域
のセルの位置番号を格納する。 (c) 上記記憶装置の中に0から2mまでの連続し
た位置番号を付されたセルからなる第3の記憶
領域を設定し、上記1と2の記憶領域のそれぞ
れ位置番号p(pは1≦p≦mである整数のセ
ルに格納された数値同士の排他的論理和を計算
し、その結果の数値を上記第3の記憶領域の位
置番号Pのセルに格納する手段。 (d) 上記第3の領域の位置番号q(qは1≦q≦
mである整数)のセルに格納された数値r(r
は整数で、r≦qとなる)を位置番号とする同
領域の位置番号fのセルに格納された数値を、
位置番号qのセルに、数値rに代えて格納する
ことを、位置番号の小さいセルから順に行う手
段。 (e) 上記第3の記憶領域の位置番号2mのセルに
格納された数値を参照し、該数値が1なら上記
ブール式の論理値は真であり、該数値が0なら
上記ブール式の論理値は偽であると評価する手
段。 D 実施例 図面に参照するに、本発明の実施例は、具体的
には翻訳命令を有するか又はこのような命令をシ
ミユレート若しくはシミユレートすることができ
るような所与の計算機システムで実現可能な手段
として示されている。たとえば、本発明の手段を
実現するために、米国特許第3400371号に記述さ
れたIBM(登録商標)システム/360を使用する
ことができる。 一般に、“積項の和”形式は下式のEで表わす
ことができる。 E=P1|P2|P3……Pn 但し、Eは任意の数の積項Piの和であり、各積
項Pは任意の数のリテラルLiの積として次のよう
に表わされる。 P=L1&L2&L3&……&Lm各リテラルLiは
ブール変数Ii又はその反転値から成る。 第1図を参照するに、ベクトルX及びYを形成
するための第1ステツプは次のとおりである。 ステツプ0:(a) X=空白ストリング (b) Y=空白ストリング 次いで、各ブール式ごとに次のステツプが遂行
される。 ステツプ1:(a) X=X||00(但し、||は連
結を意味する) (b) Y=Y||00 (c) K=Xの長さ−1 (d) もしKが奇数であれば、このステツプ全
体を反復する。 ステツプ2:もしブール式Eが“Ij”又は“”
で開始するならば、 (a) この項をEの先頭項として削除し、 (b) L=Kとし、 (c) X=X||00||jとする。 (d) もしIが反転されていなければ、 Y= Y||01||(F0 XOR K)とす
る。 (e) もしIが反転されているならば、 Y=Y||01||(F1 XOR K)とし、 (f) K=K+2とする。 但し、前記の表現中、F0及びF1はそれぞれ偽
および真の論理値を8桁の2進数字、つまり、1
バイトの16進数として表わした数値である。換言
すると、上記発明の構成で示したF及びTの具体
例として、それぞれF0およびF1が選択されてい
る。XORは排他的論理和関数を表わす。 ステツプ3:もしブール式Eが“&Ij”又は
“&”で開始するならば、 (a) この項をEの先頭項として削除し、 (b) X=X||00||jとする。 (c) もしIが反転されていなければ、 Y=Y||L||(F1 XOR K)とする。 (d) もしIが反転されているならば、 Y=Y||L||(F0 XOR K)とし、 (e) K=K+2とする。 ステツプ4:もしブール式Eが“)”又は“|”
で開始するならば、この項をEの先頭項とし
て削除される。 ステツプ5:ブール式Eの全体が処理されるま
でステツプ2ないし4を反復する。 ステツプ6:値Kを保存する。この値は評価ス
テツプの間に使用され、ブール式Eの値(01
真又は00偽)を表わすように結果ストリング
の位置を指定する。 但し、前述の説明のうち00、01、F0、F1、j
及びKの各々は1バイトの16進値である。 このようにして、評価対象のブール式に基づい
てXベクトルおよびYベクトルを構成する16進数
が逐次生成される。Xベクトルを構成する各16進
数には、生成された順に、記憶装置の中のある一
連のセルに割り振られた00から始まる連続した位
置番号のうちの最も小さい番号を割り当てるとと
もに、該16進数を、割り当てられた位置番号を持
つセルに格納する。 Yベクトルを構成する各16進数にもその生成さ
れた順に、記憶装置の中にある一連のセルに割り
振られた00から始まる連続した位置番号のうちの
最も小さい番号を割り当てるとともに、該16進数
を、割り当てられた位置番号を持つセルに格納す
る。ただし、Xベクトルを格納する第1の記憶領
域とYベクトルを格納する第2の記憶領域が重複
しないようにする。 第2図を参照するに、ブール式の評価はブール
変数I1、I2、等を翻訳テーブルとして使用して制
御ベクトルXを翻訳することによつて行われる。
この翻訳は、前掲の米国特許第3400371号に記述
されているような翻訳命令を、使用して行うこと
ができる。ここで、翻訳とは、次のような操作を
いう。いま、それぞれが一連の同様の位置番号を
付されたセルによつて構成される記憶領域I、
、があるとする。そして、記憶領域Iの位置
番号Uのセルに格納されている数値Vが記憶領域
のあるセルの位置番号であり、かつ記憶領域
の位置番号Vのセルには数値Wが格納されている
とする。このとき、記憶領域の位置番号Uのセ
ルに数値Wを格納する操作を、翻訳という。そし
て、記憶領域を翻訳テーブルという。なお、記
憶領域として記憶領域Iを使つても、つまり翻
訳結果を元の記憶領域Iに戻しても差し支えな
い。 本発明の方法を実現するために使用される翻訳
命令は、以下の例を参照すれば十分に理解するこ
とができる。 例 ここで、 E=(I1&I3)|(I5&2&I6)|(I4)……(式1
) とする。すなわち、上記C.の欄の記載に即して言
えば、m=6の場合である。 まず前述のステツプを使用してXを次のように
発生する。 X=00 00 01 00 03 0005 00 02 00 06 00 04 上述した通り、これらの数値を、記憶装置の中
の第1の記憶領域を構成する00から0Cまでの連
続した位置番号を付されたセルに格納する。つま
り、数値00、……、04を、それぞれ位置番号00、
……0Cのセルに格納する。第2図の1番目のブ
ロツクの中のWK=Xはこのような格納操作を簡
単に記したものである。なお、WKは作業領域
(Work Area)を略記したものである。 翻訳テーブルは次のとおりである。 00||I1||I2||I3||I4||I5||I6||
I7等 これらの数値も、記憶装置の中の上記第1の記
憶領域とは異なる記憶領域を構成する、00から始
まる連続した位置番号を付されたセルに格納す
る。つまり位置00、01、……のセルに数値00、I1
(F0またはF1)、……を格納する。 翻訳を行うと、Xは次のとおりになる。 X=00 00 I1 00 I3 00 I5 00 I2 00 I6 00 I4 第2図の2番目のブロツクにWK=WK
XLATE(X′00′||I1||I2……)と示されるよ
うに、翻訳結果を上記第1の記憶領域に戻すこと
によつて、位置番号00、及び01から0Bまでの1
つおきの位置番号のセルには数値00を格納する一
方、02から0C(10進数で表示すると、2×6=
12)までの1つおきの位置番号のセルには、I1、
I3、……I6に代入されるF0またはF1を格納する。
つまり、上記C.の欄で記載した(a1)、(a2)の
通りに数値を格納する。なお、第2図の2番目、
4番目のブロツクの中のXLATEは、翻訳
(translate)を略記したものである。 ベクトルXの翻訳がこのようにして完了される
と、評価プロセスの次のステツプは、翻訳された
ベクトルX及びベクトルYをオペランドとして使
用して排他OR(XOR)演算を行うことである。
このステツプはこの例の表現を使用する次の例に
よつて示される。 例 前述のステツプを使用してYを次のように発生
する。 Y=00 01 F0 00 F3 01 F4 04 F6 04 F9 01 FA 上述した通り、上記数値00、……、FAを、第
2の記憶領域を構成する位置番号00、……、0C
のセルにそれぞれ格納する。 すなわち、上記C.の欄の記載に即して説明する
と、 位置番号00のセルには、上記(b1)の通りに
00を格納し、 位置番号02、06、0Cのセルには、上記(b2)
(i)の通りにそれぞれ00 XOR F0、04 XOR F0、
OA XOR F0を格納し、 位置番号04、0Aのセルには、上記(b2)(iii)の
通りに、それぞれ02 XOR F1、08 XOR F1を
格納し、 位置番号08のセルには、上記(b2)(iv)の通り
に、06 XOR F0を格納する。 また、位置番号01、05、0Bのセルには、上記
(b3)(i)の通りに、それぞれ01を格納し、 位置番号03のセルには、上記(b3)(ii)の通り
に00を格納し、 位置番号07、09のセルには、上記(b3)(iii)の
通りにそれぞれ04を格納する。 翻訳されたX=00 00 I1 00 I3 00 I5 00 I2
00 I6 00 I4であるから、翻訳されたX XOR
Y=00 01 I1 00 I3 01 I5 04 I2 04 I6 01 I4と
なる。 上記第1と第2の記憶領域のそれぞれ位置番号
pのセルに格納された数値同士の排他的論理和を
計算して得た数値は、記憶装置の中の第3の記憶
領域の位置番号pのセルに格納される。この一連
の操作は、好ましくはベクトル・プロセツサを用
いると、きわめて短時間で完了する。なお、本実
施例では、第2図の3番目のブロツクにWK=
WK XOR Yと示されるように、第3の記憶領
域として上記第1の記憶領域を再び使用してい
る。もつとも、記憶装置の中に、00から0Cまで
の連続した位置番号が付されたセルから構成され
る、第1および第2の記憶領域の何れとも異なる
記憶領域を設定し、これを第3の記憶領域として
使用しても差し支えないことは言うまでもない。 排他OR演算の前には、ブール式中の各変数I
はその値としてF1(真)又はF0(偽)を有してい
た。排他OR演算の後は、第3の記憶領域02、
04、06、08、0Aおよび0Cには次の第1表のよう
な値が格納される。 第1表 位置番号02:I1=F0(偽)のとき、 F0 XOR F0=00 F1(真)のとき、 F1 XOR F0=01 位置番号04:I3=F0(偽)のとき、 F0 XOR F3=03 F1(真)のとき、 F1 XOR F3=02 位置番号06:I5=F0(偽)のとき、 F0 XOR F4=04 F1(真)のとき、 F1 XOR F4=05 位置番号08:I2=F0(偽)のとき、 F0 XOR F6=06 F1(真)のとき、 F1 XOR F6=07 位置番号0A:I6=F0(偽)のとき、 F0 XOR F9=09 F1(真)のとき、 F1 XOR F9=08 位置番号0C:I4=F0(偽)のとき、 F0 XOR FA=0A F1(真)のとき、 F1 XOR FA=0B 従つて、排他0R演算の結果は、下記第2表に
示されるように、第3の記憶領域の各セルへ格納
される。
【表】 なお、位置番号02、04、06、08、0Aおよび0C
のセルについては、対応する変数が真である場合
に格納される数値が左に示され、偽である場合に
格納する数値が右に示されている。 次に実行される手段は、第2図4番目のブロツ
クにWK=WK XLATE WKとして示されるよ
うに、排他OR演算の結果それ自体を翻訳テーブ
ルとして使用して該結果を翻訳する手段である。
つまり、第3の記憶領域の位置番号qに格納され
た数値r(第2表に示されるように、r≦qとな
る)を位置番号とする同領域の位置番号rのセル
に格納された数値を、位置番号qのセルに、数値
rに代えて格納する手段である。 このプロセスを明らかにするため、以下ではこ
の結果における各位置の翻訳を説明する。 位置00の値00は00へ翻訳される。 位置01の値01は01へ翻訳される。 位置02の値はそれが00であれば00へ翻訳され、
01であれば01へ翻訳される。即ち、前者の値00は
値00を有するような位置00を指定し、後者の値01
は値01を有するような位置01を指定する。 位置03の値00は00へ翻訳される。というのは、
この値00は値00を有するような位置00を指定する
からである。 位置04の値はそれが03であれば00へ翻訳され、
02であれば位置01の値へ翻訳される。値03は値00
を有するような位置03を指定する。値02は位置02
を指定する。前述のように、位置02は値00又は01
を有することができる。かくて、位置04の値はI1
又はI3がF0(偽)であれば00であり、I1及びI3が
ともにF1(真)である場合にのみ01である。位置
04の翻訳を完了した時点では、I1とI3の論理積演
算が行なわれていることが理解されよう。位置04
は項(I1&I3)の論理値を保持する。なお、以上
の記述から理解されるように、01は論理演算の結
果が真であることに対応し、00は該結果が偽であ
るとに対応している。 位置05の値01は値01を有するような位置01を指
定する。位置06の値はそれが04であれば位置04の
値へ翻訳され、05であれば位置05の値01へ翻訳さ
れる。従つて、位置06は項(I1&I3)|I5の値を
保持する。 位置07の値04は位置04を指定する。かくて、位
置04にある項(I1&I3)の値が位置07へコピーさ
れる。位置08の値が06であれば位置06の値が位置
08へコピーされ、07であれば位置07の値が位置08
へコピーされる。翻訳後には、位置08は論理演算
(I1&I3)|(I5&12)の結果を表わすような値を
有する。 位置09の値04は位置04におけるセル値を位置09
へコピーさせる。 位置0Aの値が09であれば位置09の値が位置0A
へコピーされ、08であれば位置08における値が位
置0Aへコピーされる。このことは以下に示す項
の値を位置0Aへ置くという効果を有する。 (I1&I3)|(I5&2&16) 位置0Bの値01は値01を有するような位置01を
指定する。従つて、位置0Bにおけるこの値は値
01へ翻訳される。 位置0Cの値は0Aであれば位置0Aの値へ翻訳さ
れ、0Bであれば01へ翻訳される。位置0Cはブー
ル式(I1&I3)|(I5&2&16)|I4の値を有し、従
つてEの値を有する。 前述の説明から明らかなように、本発明の実施
例はブール式から2つのベクトルX及びYを形成
した後、1つの翻訳命令(WK=WK XLATE
(X′00||I1||I2……))、及び他の翻訳命令
(WK=WK XOR WK)を伴なう1つの排他OR
命令(WK=WK XOR Y)を使用するだけでこ
のブール式の評価を行うことができる。 翻訳されたX XOR Yの結果的ストリングを
翻訳する際に行われる基本的な論理関数は、 位置: N N+1 N+2 値: X Y 1 但し、Iは排他ORされた入力変数の1つであ
り、X及びYは定数(00若しくは01)、即ち排他
ORされた或る入力変数Iの値であるか、又は以
前に計算された或る項の値である。 Iの真/偽の値は、前記した値X及びYの位置
番号に対応する。かくて、もしIが位置Nの値に
帰着すれば、位置Nの値(X)は位置N+2へコ
ピーされる。さもなければ、Iは位置N+1の値
に帰着しなければならず、かくて値(Y)が位置
N+2へコピーされる。これは次のように表わす
ことができる。 N+2=(&X)|(I&Y) Iの意味は、定数のBとの排他OR又はX及び
Yの相互交換によつて逆にすることができる。 Iの真/偽の値は1ビツト(ユニツト位置)だ
けが異なる。このことはNが常に偶数でなければ
ならないことを意味する。以下の表は、X及びY
について適当な値を選択することによつて、位置
N+2で種々の結果が得られることを示す。P及
びQは、ストリング中の前方位置P及びQにおけ
る他の項の結果を表わす。
【表】 これら関数によれば、任意のブール式を計算す
ることができる。ベクトル・ストリングX及びY
の形成を簡単にするため、ブール式は(前述の例
のように)“和の積”又は“積の和”の形式で書
かれるか又はこのような形式に変換される。スト
リングの先頭は00 01を保持すべきである。こよ
うにすると、これら2つの値は翻訳中に変更され
ることがないからである。 以上の事項をさらに具体的な例に基づいて説明
する。今上述した式1、つまりE=(I1&I3)|
(I5&2&16)|(I4)において、I1=I2=I3=I4=
I5=I6=F1(真)であるとする。このとき、上述
C.の欄で述べた手段(C)の実行後における、第3の
記憶領域の各セルに格納されている数値は下記第
4表のようになる。
【表】 したがつて、上記C.の欄で述べた手段(d)によつ
て、位置番号01のセルには数値01が格納され、該
数値01が位置番号0Bのセルへ、そしてさらに位
置番号0Cのセルへ格納される。よつて、上記C.
の欄で述べた手段(e)によつて、上記評価対象の式
1の論理値は真であると評価される。 つまり、上記式1において、最後の積項(I4)
=T(真)ならば、他の変数の論理値が何であつ
ても式1の論理値はTとなるはずであるが、上記
評価結果はまさにその通りの論理値を示す。なぜ
なら、上記(C)の手段の実行により、I4がTのと
き、位置番号0Cのセルの数値は位置番号0Bのセ
ルを指し、そして位置番号0Bのセルの数値は中
間のセルをとばして位置番号01のセルを指すから
であり、かつ上記(d)の手段の実行により、セル01
には評価が真であることに対応する数値01が格納
されるからである。 もう一つ、上記式1において、I1=I5=I6=
T、かつI2=I3=I4=Fである場合を例として取
り上げる。この例において上記(C)の手段を実行し
た後の、第3の記憶領域の各セルに格納されてい
る数値は下記第5表のようになる。
【表】 このように、位置番号0Cのセルの数値は位置
番号0Aのセルを、位置番号0Aのセルの数値は位
置番号06のセルを、位置番号06のセルは位置番号
05のセルを、そして位置番号05のセルは位置番号
01のセルを、それぞれ指す。よつて、上記手段(d)
の実行により位置番号0Cのセルには数値01が格
納されるので、上記手段(e)の実行により上記式1
の論理値は真であると評価される。 本発明の方法により2つの以上のブール式を位
置度に評価するには、2進値の変数に代わつて多
値の変数を使用するとともに、最小数のキヤラク
タを翻訳するように翻訳プロセスを最適化すれば
よい。たとえば、前述の例では最初の4キヤラク
タは翻訳を必要としない。もしブール式が複雑で
あるために最大256バイトのオペランドを取扱う
ことができる1つの翻訳命令によつて処理するこ
とができなければ、最初の翻訳プロセスの結果値
を次の翻訳プロセスの入力として与えることによ
り、かかるブール式の評価を継続することができ
る。このようにすれば、評価可能なブール式のサ
イズは記憶スペースの利用可能性によつて制限さ
れるにすぎない。 なお、上記実施例では、ブール式の変数に代入
する真の論理値を表わす数値TとしてF1を、そ
して偽の論理値を表わす数値FとしてF0を用い
た。しかしながら、数値TとFは、どちらも同一
桁数の2進数字で表現される数値であり、かつ最
下位の2進数字が異なるだけであつてその他の桁
の2進数字が同一であるならば、どのような数値
の組を用いてもよい。例えばT=C1、F=C0で
ある場合をT=F1、F=F0である場合と比較す
ると、第2の記憶領域のセルに格納される数値は
前者の場合と後者の場合で異なるが、第3の記憶
領域のセルに格納される数値はどちらの場合であ
つても同じ数値になる。なぜなら、どちらの場合
においても、T XOR T=00、T XOR F=
01、F XOR F=00となるからである。 E 発明の効果 本発明によれば、評価対象のブール式に基づい
て、それぞれ連続した位置番号を付されたセルか
らなる第1、および第2の記憶領域を記憶装置の
中に設定して各セルに数値を格納し、かつこれら
の記憶領域に基づいて、連続した位置番号を付さ
れたセルからなる第3の記憶領域を記憶装置の中
にさらに形成し、この第3の記憶領域の中の位置
番号が最も大きなセルに格納された数値を参照す
ることによつてブール式の評価を行うようにした
ので、従来のように評価対象のブール式を細かく
解析して複数の命令をコンパイルする必要がな
く、したがつてブール式の評価を高速で行うこと
ができるという優れた効果が得られる。 また、上記(C)の手段は、ベクトル・プロセツサ
を用いて実現するのに適している。
【図面の簡単な説明】
第1図はベクトルX,Yを形成するための諸ス
テツプを示す流れ図、第2図はこれらのベクトル
X,Yが格納された記憶領域を使用してブール式
を評価するための諸ステツプを示す流れ図であ
る。

Claims (1)

  1. 【特許請求の範囲】 1 以下の手段(a)ないし(e)を具備する、積項の和
    の形式で表わされたブール式の評価装置。 (a) 評価対象のブール式を解釈し、記憶装置の中
    に、0から2m(mはブール式の中で登場する変
    数の、のべ総数。以下同様)までの連続した位
    置番号を付されたセルからなる第1の記憶領域
    を設定し、各セルに次のような数値を格納する
    手段。 (a1) 位置番号2n(nは1≦n≦mである整数、
    以下同様)のセルには、評価対象のブール式
    の先頭から数えて第n番目に登場する変数に
    代入される数値TまたはFを格納する。 ここで、数値Tは真の論理値を表わし、数
    値Fは偽の論理値を表わす。ただし、どちら
    も同一桁数の2進数字で表現される数値であ
    り、最下位の2進数字が異なるだけであつ
    て、その他の桁の2進数字は同一であるとす
    る。 (a2) 位置番号0および位置番号(2n−1)のセ
    ルには、0を格納する。 ただし、上記10進数0、1、2、……、
    2mは、手段(a)ないし(e)によつて、上記Tお
    よびFと同一桁数の2進数字によつて表現さ
    れる数値として処理される。 (b) 評価対象のブール式を解釈し、上記記憶装置
    の中に、0から2mまでの連続した位置番号を
    付されたセルからなる、第1の記憶領域とは異
    なる第2の記憶領域を設定し、各セルに次のよ
    うな数値を格納する手段。 (b1) 位置番号0のセルには0を格納する。 (b2) 位置番号2nのセルには、次の条件に従つ
    て、(2n−2)XOR Tまたは(2n−2)
    XOR Fの何れかを格納する。ただし、以下
    では、XORは排他的論理和演算を表わす。 (i) 上記ブール式の第n番目の変数がある積
    項の中の第1番目の変数であつて、かつこ
    の変数に否定演算が施されていない場合
    は、(2n−2)XOR Fを格納する。 (ii) 上記ブール式中の第n番目の変数がある
    積項の中の第1番目の変数であつて、かつ
    この変数に否定演算が施されている場合
    は、(2n−2)XOR Tを格納する。 (iii) 上記ブール式中の第n番目の変数がある
    積項の中の第2番目以後の変数であつて、
    かつこの変数に否定演算が施されていない
    場合は、(2n−2)XOR Tを格納する。 (iv) 上記ブール式中の第n番目の変数がある
    積項の中の第2番目以後の変数であつて、
    かつこの変数に否定演算が施されている場
    合は、(2n−2)XOR Fを格納する。 (b3) 位置番号(2n−1)のセルには、次の条件
    にしたがつて数値を格納する。 (i) 上記ブール式中の第n番目の変数がある
    積項の第1番目の変数である場合は、1を
    格納する。 (ii) 上記ブール式中の第n番目の変数が上記
    ブール式の先頭から数えて第1番目の積項
    の中の第2番目以後の変数である場合は、
    0を格納する。 (iii) 上記ブール式中の第n番目の変数が上記
    ブール式の先頭から数えて第l(lはl≧
    2である整数)番目の積項の中の第2番目
    以後の変数である場合は、第(l−1)番
    目の積項の中の最後の変数に代入されるT
    またはFが格納される上記第1の記憶領域
    のセルの位置番号を格納する。 (c) 上記記憶装置の中に0から2mまでの連続し
    た位置番号を付されたセルからなる第3の記憶
    領域を設定し、上記1と第2の記憶領域のそれ
    ぞれ位置番号p(pは1≦p≦mである整数)
    のセルに格納された数値同士の排他的論理和を
    計算し、その結果の数値を上記第3の記憶領域
    の位置番号pのセルに格納する手段。 (d) 上記第3の記憶領域の位置番号q(qは1≦
    q≦mである整数)のセルに格納された数値r
    (rは整数で、r≦qとなる)を位置番号とす
    る同領域の位置番号rのセルに格納された数値
    を、位置番号qのセルに、数値rに代えて格納
    することを、位置番号の小さいセルから順に行
    う手段。 (e) 上記第3の記憶領域の位置番号2mのセルに
    格納された数値を参照し、該数値が1なら上記
    ブール式の論理値は真であり、該数値が0なら
    上記ブール式の論理値は偽であると評価する手
    段。 2 上記第3の記憶領域として上記第1の記憶領
    域を使用することを特徴とする特許請求の範囲第
    1項記載のブール式評価手段。
JP57112614A 1981-09-08 1982-07-01 ブ−ル式の評価装置 Granted JPS5848153A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US300133 1981-09-08
US06/300,133 US4417305A (en) 1981-09-08 1981-09-08 Method for evaluating boolean expressions

Publications (2)

Publication Number Publication Date
JPS5848153A JPS5848153A (ja) 1983-03-22
JPS6314378B2 true JPS6314378B2 (ja) 1988-03-30

Family

ID=23157850

Family Applications (1)

Application Number Title Priority Date Filing Date
JP57112614A Granted JPS5848153A (ja) 1981-09-08 1982-07-01 ブ−ル式の評価装置

Country Status (3)

Country Link
US (1) US4417305A (ja)
EP (1) EP0073901A3 (ja)
JP (1) JPS5848153A (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4831521A (en) * 1983-11-10 1989-05-16 General Signal Corporation Vital processor implemented with non-vital hardware
US4722071A (en) * 1985-04-19 1988-01-26 Pertron Controls, Corporation Compiler for evaluating Boolean expressions
GB8929158D0 (en) * 1989-12-23 1990-02-28 Int Computers Ltd Database system
US7296163B2 (en) * 2000-02-08 2007-11-13 The Trustees Of Dartmouth College System and methods for encrypted execution of computer programs
US7735080B2 (en) * 2001-08-30 2010-06-08 International Business Machines Corporation Integrated system and method for the management of a complete end-to-end software delivery process
US6959314B1 (en) 2002-05-13 2005-10-25 Eurica Califorrniaa Method of translating Boolean algebra into basic algebra
US7406592B1 (en) * 2004-09-23 2008-07-29 American Megatrends, Inc. Method, system, and apparatus for efficient evaluation of boolean expressions
US7720807B1 (en) * 2007-01-17 2010-05-18 Square Zero, Inc. Representing finite node-labeled trees using a one bit encoding
US8655824B1 (en) 2011-03-07 2014-02-18 The Boeing Company Global policy framework analyzer
US10706047B2 (en) * 2012-10-22 2020-07-07 Sap Se Boolean content search
US10333696B2 (en) 2015-01-12 2019-06-25 X-Prime, Inc. Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4001789A (en) * 1975-05-23 1977-01-04 Itt Industries, Inc. Microprocessor boolean processor
US4120043A (en) * 1976-04-30 1978-10-10 Burroughs Corporation Method and apparatus for multi-function, stored logic Boolean function generation
US4165534A (en) * 1977-04-25 1979-08-21 Allen-Bradley Company Digital control system with Boolean processor

Also Published As

Publication number Publication date
JPS5848153A (ja) 1983-03-22
EP0073901A3 (en) 1985-05-02
US4417305A (en) 1983-11-22
EP0073901A2 (en) 1983-03-16

Similar Documents

Publication Publication Date Title
Bernstein Multiplication by integer constants
Tanenbaum et al. Using peephole optimization on intermediate code
Immerman Expressibility and parallel complexity
EP0273130B1 (en) Reassociation process for code optimization
US3200379A (en) Digital computer
JPS6314378B2 (ja)
Forrest et al. Vector processing in simplex and interior methods for linear programming
Busam et al. Optimization of expressions in Fortran
Bischof et al. ADIFOR: Automatic differentiation in a source translator environment
US5237685A (en) Linear recurrence dispersal structure and method for parallel processors
Funasaka et al. Fully parallelized LZW decompression for CUDA-enabled GPUs
Gear High speed compilation of efficient object code
JP2000047998A (ja) Simd方式の演算器及び演算処理装置
Anagnostopoulos et al. Computer architecture and instruction set design
EP0180077B1 (en) A data processing machine for compiling computer programs
US7136891B2 (en) Arithmetic and relational operations
Bloom Conceptual design of a direct high-level language processor
JP2002041496A (ja) コンピュータ実施される方法、計算装置およびコンピュータ・プログラム製品
Berkling Computer architecture for correct programming
Wiedmann Efficiency in the APL environment—a full arsenal for attacking CPU hogs
JP3727039B2 (ja) コンパイラにおける乗算実施方法
Galler et al. Compiling matrix operations
GB1593136A (en) Data processing
Tsanakas et al. An FP-based design methodology for problem-oriented architectures
JP4327533B2 (ja) 演算処理プログラム、演算処理方法、および演算処理装置