JPH07244589A - 述語、及びブール式を解くためのコンピュータ・システム、及び方法 - Google Patents

述語、及びブール式を解くためのコンピュータ・システム、及び方法

Info

Publication number
JPH07244589A
JPH07244589A JP6308736A JP30873694A JPH07244589A JP H07244589 A JPH07244589 A JP H07244589A JP 6308736 A JP6308736 A JP 6308736A JP 30873694 A JP30873694 A JP 30873694A JP H07244589 A JPH07244589 A JP H07244589A
Authority
JP
Japan
Prior art keywords
value
reduction
boolean
register
operations
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.)
Granted
Application number
JP6308736A
Other languages
English (en)
Other versions
JP3573506B2 (ja
Inventor
Michael Schlansker
マイケル・シュランスカー
Ramakrishna B Rau
ビー・ラマクリシュナ・ラウ
Vinod Kathail
ヴィノッド・カサイル
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH07244589A publication Critical patent/JPH07244589A/ja
Application granted granted Critical
Publication of JP3573506B2 publication Critical patent/JP3573506B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 (修正有) 【目的】コンヒ゜ュータ・システムは複数の入力から指定されたレシ゛ス
タ内の値を決定するための1組の演算を用いて述語、及
びフ゛ール式を高速に解くことを提供する。 【構成】各演算の実行は演算の入力、即ち結果値を生成
する結果関数、及び結果値が指定されたレシ゛スタに書き込
まれるかどうかを決定するイネーフ゛ル関数の2つの関数によ
って定義される。この演算でフ゛ール式を解くには、レシ゛スタ
がフ゛ール値で初期設定されている必要がある(例えばAN
D還元には1、OR還元には0)。次にその演算は各演
算のイネーフ゛ル関数が真ならば、フ゛ール値をレシ゛スタに書き込む
(例えばAND還元には0、OR還元には1)。レシ゛スタ
はそこで式の正しい値を記憶する。式の値は述語として
用いられ、フ゜ロク゛ラム内の演算を条件付きで実行する。好
適には、前記演算は複数の機能ユニットによって並列に実行
され、レシ゛スタは同時に書き込まれる複数の値が同じであ
る限り、その値を受け取ることが可能である。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般的には、式を解く
こと、及びコンピュータ・システムにおいてプログラム
の実行を制御することに関し、より詳しくは、コンピュ
ータ・システムでのブール還元(Boolean Reduction)を
高速に解くこと、及び述語化実行のための構造的な機
構、及び方法に関する。
【0002】
【従来の技術】プログラムは通常、多数のブール値を持
った式を含む。この様な式によって生成される値は、デ
ータ値や分岐条件としての使用法や、コンピュータによ
っては、条件付き演算実行の述語としての使用を含む多
数の使用法がある。
【0003】ブール値を持った式の一般的な応用例は、
ブール還元を実行すること、即ち、ブール関数、例えば
AND、及びORを使用して複数の値を単一の値に還元
することである。ブール還元を実行するためのその様な
式の一例は r=u∧¬v∧w∧x(1) である。
【0004】上式は、AND関数(∧で表される)を使
用してu、vの補数(¬vで表される)、w、及びxの
ブール値を単一のブール値rに還元する。一般に、どん
なブール式でも、多数のAND還元とそれに続くOR還
元から成る、積和形で表すことができる。
【0005】通常、プログラムで使用されるブール値
は、より小さい(<)やより大きい(>)等の比較演算
や関係演算の結果として得られる。従って、以下のブー
ル式は、コンピュータ・プログラムに用いられるAND
還元式として極めて典型的なものである。 r=(a<b)∧¬(c>d)∧(a<c)∧(b>
d)(2)。
【0006】この種の還元式を解く速度は、プログラム
を効率的に実行するために極めて重要である。このこと
は特に、超大型命令語(VLIW)やスーパースカラ・アーキ
テクチャ等の命令レベル並列処理を使用するコンピュー
タ・システム・アーキテクチャに当てはまる。ブール式
は通常、分岐条件を計算する際に使用される。従って、
ブール式を解くことは、プログラムのクリティカル・パ
スにあることが多い。又、並列処理(即ち、同時に実行
できる演算群)を実施するための幾つかのプログラム変
換がブール還元を導入している。その様な変換の効果
は、これらの式をどれだけ速く解くことができるかに依
存している。その様な変換の幾つかの例は、非ロール・
ループから終了する複数の分岐を単一の分岐にまとめる
ことと、非ロールwhileループにおける制御依存性の高
さ還元(height-reduction)が含まれる。
【0007】演算を並列に実行する機能がないコンピュ
ータでは、ブール式は一般に、順次解く処理がなされ
る。即ち、還元式中の各演算は、一度に1つずつ実行さ
れる。一般に、n個の比較演算を含む還元式を純粋に順
次解いていくには、(2n−1)α回のマシン・サイク
ルが必要である。ここで、αは、コンピュータ・システ
ム上での1比較演算、又はAND演算当たりのサイクル
数である。例えば、上記還元式(2)は7α回のサイク
ルを必要とする。
【0008】命令レベル並列処理を伴うアーキテクチャ
においては、コンパイル時間高さ還元技法を使用してブ
ール式を解くことを速くさせることが多い。速く解くた
めの簡単な技法は、比較演算を並列に実行し、次いでA
ND演算の2分木を使用して還元を実行することであ
る。例えば、上記式(2)を検討する。コンピュータ・
システム内のプロセッサが少なくとも4つの機能ユニッ
トを有すると仮定すると、以下の表に示す様に式を解く
ことができる。
【0009】
【表1】
【0010】表1の例では、式(2)は簡単な高さ還元
技法によって3α回のサイクルだけで解くことができ
る。一般に、この高さ還元技法では、n個の比較演算を
含む還元式は,コンピュータ・システムがn個の演算を
並列に実行できるとすれば、(1+(log2n))α回のサイ
クルで解くことができる。しかし、更に並列処理を提供
する資源が利用可能な時でも、この技法は少なくとも
(1+(log2n))α回のサイクルを必要とする。
【0011】
【発明が解決しようとする課題】本発明は、コンピュー
タ・システムが十分な並列処理機能を有する場合、効果
的にα回のサイクルだけでどんな還元式も解く機構、及
び技法を提供する。この方法、及び技法による性能は、
演算を並列に実行できる機能ユニット(資源)の数によ
ってのみ制限され、式中の個々の演算間のどんな従属関
係にも制限されない。更に、本発明によれば、演算を同
時に実行することも、又どの様な所望の順序でも実行す
ることができる。従って、例えば、コンパイラは自由
に、比較演算とプログラム内の他の演算を並列に実行さ
せることができる。これは、限られた資源をもつコンピ
ュータ・システムにとって重要である。
【0012】
【課題を解決するための手段】本発明は、2つの主な態
様を有する。本発明の第1の態様によれば、コンピュー
タ・システム内の1つ、又は複数のレジスタが、複数の
演算によって書き込まれる全ての値が同じであれば、そ
れらの演算が同時にそのレジスタに値を書き込むことを
可能にする。その場合、そのレジスタに記憶される結果
は、明確に定義されたものであり、レジスタに書き込ま
れるどの値とも等しい。しかし、複数の演算が同時に異
なる値を1つのレジスタに書き込む場合、その結果記憶
される値は未定義となる。書き込まれる値はブール値、
整数値、浮動小数点値、その他の値でもよい。レジスタ
は、1ビット・レジスタでも、条件レジスタ、又は状況
レジスタ内のビット位置でもよい。レジスタは又、汎用
レジスタでも浮動小数点レジスタでもよい。コンピュー
タ・システム内の全レジスタが複数の同時書込みのため
のこの機能を提供する必要があるわけではない。
【0013】本発明の第2の態様によれば、コンピュー
タ・システムは1組の還元演算を提供する。各還元演算
の実行は一般に、演算の入力値の2つの関数、結果関
数、及び許可関数によって定義される。結果関数は、値
がある場合、どんな値が演算によって記憶されるかを決
定する。許可関数は、その値が目標位置、又はレジスタ
に書き込まれ、あるいは記憶されるかどうかを決定す
る。従って、還元演算の結果routは rout=Fout(rin 1,rin 2,...,rin n) if Fen(rin 1,rin 2,...,rin n)(3) で表すことができる。式中、Foutは結果関数であり、
enは許可関数である。結果関数と許可関数は、少なく
とも、整数入力値、又は浮動小数点入力値の比較関数、
及びAND、OR、逆関数、一致関数等のブール入力値
の関数といったブール値関数を含むことができる。指定
される目標レジスタは、複数の同時書込みを扱うタイプ
のものであることが好ましい。
【0014】本発明のこれら2つの態様によるコンピュ
ータ・システムでは、どんな還元式も効果的にα回のサ
イクルだけで解くことができる。更に、積和形で表され
たどんな一般ブール式も、効果的に2α回のサイクルで
解くことができる。例えば、上記の還元式(2)は、以
下の表に示した様に事前に1にセットされたレジスタ
に、比較の結果に従い条件付きでブール値の0を書き込
む4つの演算を同時に実行することによって解くことが
できる。
【0015】
【表2】
【0016】上記表では、レジスタrは事前に1にセッ
トされている。ANDで示された演算は、指定された比
較演算(<、又は>)の結果が0である場合にレジスタ
rにブール値の0を書き込む。ANDCで示された演算
は、指定された比較演算の結果の補数が0である場合に
レジスタrにブール値の0を書き込む。従って、その演
算の2つ以上が同時にレジスタに書き込むことができる
が、書き込むことができる値は0だけである。
【0017】同時に実行される4つの演算は、効果的に
α回のサイクルで還元式(2)を解く。(ここでは、例
えば、機能ユニットの1つが別の状態、即ちアイドル状
態となっている時のサイクルの間等で、レジスタを事前
にセットする演算が、前の演算と並列処理されうると仮
定している。従って、事前セットをする演算は効果的
で、全く追加実行時間を必要としない)。AND演算に
よって実行された比較結果の何れか、又はANDC演算
によって実行された比較結果の補数の何れかが0である
場合、レジスタは0にセットされる。レジスタrが本発
明の第1の態様に従う時、複数の演算が同時にレジスタ
を0にセットすると、レジスタは定義値0にセットされ
る。そうでない場合、レジスタは1のままである。
【0018】加えて、積和形で表されるどんな一般ブー
ル式も、2α回のサイクルで解くことができる。(この
場合も、如何なる追加サイクルをも必要としない様に、
事前設定の演算が前の演算と並列処理されると仮定して
いる)。最初のα回のサイクルでは、式の各AND項が
別々のAND還元として実行される。次のα回のサイク
ルでは、AND還元の結果に対してOR還元が実行され
て式の値が得られる。
【0019】ブール式の値は特に述語化実行に有用であ
る。命令の述語化実行とは、通常はブール値である入力
値で条件付けされた実行を指す。例えば、述語化実行を
サポートするマシン上では、第3の述語入力がある値を
有するかどうかで、2つの入力値を加算する命令を条件
付けることができる。2つの入力値の加算、又は少なく
とも加算関数の結果の書込みは、述語入力が特定の値を
有する時のみ実行される。従って、本発明の更なる特
徴、及び利点によれば、本発明によって解かれた還元式
で命令を述語化することができる。
【0020】本発明の他の特徴、及び利点は、添付の図
面に関して進める以下の好適実施例の詳細な説明から明
らかになろう。
【0021】
【実施例】図1を参照すると、本発明の好適実施例によ
るコンピュータ・システム20は一般に、多重信号システ
ム・バス30によってメモリ24、及び周辺装置26に接続さ
れた中央演算処理装置(CPU)22を備えている。メモ
リ24は、動的ランダム・アクセス・メモリ・チップで構
成されていることが好ましいが、読取り専用メモリ、又
はその他の電子メモリ装置で構成されていてもよい。メ
モリ24は、コンピュータ・システム20上で所望のタス
ク、又は計算を実施する1つ、又は複数のプログラム用
のデータ、及び命令を記憶する。
【0022】図2を参照すると、コンピュータ・システ
ム20内のCPU22は好適には命令レベル並列処理を提供
する。(本発明の代替実施例では、コンピュータ・シス
テムはパイプライン命令を提供するタイプのCPUを有
することができる。)より明確には、プロセッサ22は、
命令ユニット34と、所望のタスク、又は計算を実行する
ためにプログラムの命令に応じて同時に演算を実行する
複数の機能ユニット36ないし39を備えている。メモ
リ24(図1)に記憶された命令は、命令ユニット34に読
み込まれる。バス・インタフェース回路42は、システム
・バス30上のメモリ24からデータ、及び命令を読み取
り、かつメモリ24にデータを書き込むために必要な信号
を生成する。命令ユニット34は、命令を復号して、その
命令に従って演算を実行する様に1組の機能ユニット36
ないし39に命令する制御信号を生成する。
【0023】命令ユニット34は、所定の1組の命令
(「命令セット」)に応答し、機能ユニット36ないし39
を用いて対応する演算を実行するのに必要な制御信号を
形成する様に構成されている。命令セットは一般に、論
理演算命令、算術演算命令、及び浮動小数点演算命令を
備えている。命令セットは又、メモリと1組のレジスタ
46の間、及びレジスタ同士の間でデータを転送するため
のデータ転送命令も備えている。本発明によれば、命令
ユニット34が機能ユニットに実行する様命令できる演算
の幾つかは、以下で更に詳細に説明する述語化プログラ
ムの実行とブール還元を解くための演算である。
【0024】機能ユニット36ないし39は、命令ユニット
34によって指示された通りに命令を実施するための演算
を実行する。機能ユニット36ないし39は一般に、演算で
使用される1つ、又は2つのオペランドを、レジスタ46
の中から選択されたレジスタより読み取る。又、機能ユ
ニット36ないし39は、1つ、又は複数の演算結果を、レ
ジスタ46の中から選択されたレジスタに書き込む。
【0025】好適実施例の命令ユニット34、及び機能ユ
ニット36ないし39は、従来の論理回路設計技法を使用し
た従来の論理ゲートによって実施される論理回路であ
り、以下で説明する演算を提供する。
【0026】次に、図3を参照すると、少なくともレジ
スタ46(図2)の1つはブール値オペランドを記憶し、
複数の同時書込みを扱うことができる。その様なレジス
タ54は、記憶装置、又は回路(記憶装置)58、及び多数
のポート60ないし63を備えることが好ましい(他のレジ
スタ46は、整数値、又は浮動小数点値だけを記憶する
等、他の目的専用にすることができる)。
【0027】一般に、記憶装置58は、1つ、又は複数の
ラッチ回路、フリップ・フロップ回路、あるいは等価静
的メモリ回路、又は等価動的メモリ回路を備えている。
記憶装置58は、単一ビットのみ記憶することもできる
が、整数値や浮動小数点値等、複数ビット値を記憶する
こともできる。複数ビットを記憶する場合、任意のビッ
トの組合せを各ブール状態に割り当てることによってブ
ール値オペランドを表すことができる(例えば、全て0
の場合はブール値の0を表し、他のあらゆるビットの組
合せがブール値の1を表す)。複数ビット記憶を用い
て、プログラム実行の必要性に応じて、ブール値オペラ
ンド、及び複数ビット整数値、又は複数ビット浮動小数
点値を柔軟的に記憶することができる。記憶装置58は
又、複数の単一ビットを備える複数ビット述語ベクト
ル、又は個別にあるいは集合的に書き込まれるブール述
語値を記憶する様に実施することもできる。
【0028】ポート60ないし63は、機構ユニット36ない
し39からレジスタ54に書き込まれる値を受け取る。ポー
ト60ないし63は一般に、データ・バス66ないし69と書込
み可能線70ないし73の両方がそれぞれ機能ユニット36な
いし39に1対1の関係で接続されている。機能ユニット
36ないし39は、演算の結果等の値をレジスタ54に書き込
むために、機能ユニット自身のデータ・バス66ないし69
に書き込まれている値を利用し、機能ユニット自身の書
込み可能線70ないし73上に書込み可能信号を設定する。
ポート60ないし63は、書込み可能信号に応答して、ポー
ト自身のそれぞれのデータ・バス66ないし69上の値を記
憶装置58にゲートする。例えば、機能ユニット37がポー
ト61の書込み可能信号を設定すると、そのポート用のデ
ータ・バス67上の値が記憶装置58に書き込まれる。ポー
ト61用の書込み可能信号が設定されない場合、値は記憶
装置58に書き込まれない。(述語ベクトルの記憶を実施
する場合、ベクトル内の各述語の値に対して別々の可能
線、及び可能信号が使用されうる)。
【0029】機能ユニット36ないし39のうち2つ以上
が、演算が同時に実行されている間に、機能ユニット自
身の書込み可能信号を設定すると、複数の値が同時にレ
ジスタ54に書き込まれる。従来型のレジスタでは、その
様な複数の同時書込みは可能でなく、かつその様な書込
みによって記憶装置58内に記憶された値が不定になるこ
とがある。しかし、レジスタ54はそれ自身に同時に書き
込まれる全ての値が同じである場合、定義された値を記
憶装置58に記憶する様に動作する。その場合、その記憶
される値は、書き込まれる値と同じであることが好まし
い。
【0030】複数の値が同時に書き込まれた時に記憶さ
れるべき値は、レジスタ54内でポート60ないし63と記憶
装置58の間に接続された選択回路76によって導出され
る。選択回路76は、記憶される値を多数の方法で導出す
ることができる。例えば、選択回路は、書き込まれた複
数の値のAND関数、又はOR関数を実行でき、あるい
は複数の値のうち1つを任意に選択して、記憶される値
を導出することができる。同時に書き込まれた複数の値
が異なるものである場合、結果は不定となる。従って、
異なる値が同時に書き込まれた場合、選択回路76によっ
て記憶される値は重要なものではない。
【0031】再び図2を参照すると、機構ユニット36な
いし39は、命令ユニット34の制御下で、プログラムの命
令に対応する一定の演算を実行する様に動作する。命令
ユニットの制御下で機能ユニット36ないし39が実行する
演算には、述語化プログラムの実行、及びブール還元式
を解くのに有用な1組の還元演算が含まれる。還元演算
はそれぞれ以下の形をとる: rout=operation(rin 1,rin 2,...,rin n)(4) 言い換えると、各還元演算は、1つ、又は複数の入力
(rin 1,rin 2,...,rin n)に作用し、指定されたレ
ジスタ内に記憶される結果の新しい値(rout)を決定
する。より明確には、各演算の実行は、結果関数(F
out)と許可関数(Fen)の2つの関数によって厳密に
定義される。ここで、結果(rout)は以下の通りであ
る: rout=Fout(rin 1,rin 2,...,rin n) if Fen(rin 1,rin 2,...,rin n)(5) 結果関数(Fout)は、結果が記憶される場合、指定さ
れたレジスタ内に記憶される結果の新しい値を決定す
る。許可関数(Fen)は、指定された出力レジスタ内に
結果を記憶するかどうかを決定するブール値を算出す
る。
【0032】一実施例では、結果関数はブール値を有す
る。ブール値結果関数、及びブール値許可関数は各還元
演算に固有のものである。各還元演算は、機能ユニット
内で(1)1組の入力に対して演算の特定の結果関数を
実行して結果のブール値を生成し、(2)指定された目
標レジスタにブール値を書き込むかどうかを決定する演
算の許可関数を実行することによって実行される。結果
関数、又は許可関数に固有なブール値関数のタイプの例
には、一般に、整数入力値に対する比較関数(例えば、
より大きい、より小さい、等しい、それらの補数等)、
浮動小数点入力値に対する比較関数、及びブール入力値
の関数(例えば、AND、OR、XOR、一致、それら
の補数等)が含まれる。
【0033】命令ユニット34が機能ユニット36ないし39
のうちの1つに実行する様命令する各還元演算ごとに、
命令ユニット34は、演算の特定のブール値結果関数用の
入力値(又は入力値が取られてくるレジスタ)と、演算
によって書き込まれるあらゆる値を記憶するための目標
レジスタを指定する。指定された入力値は、演算の特定
の結果関数に適当なものでなければならない。指定され
た目標レジスタは、ブール値を記憶できなければなら
ず、好適実施例では、図3に示しかつ上記で説明した、
複数の同時書込みを扱うタイプのもの(レジスタ54)で
ある。
【0034】許可関数は、結果関数によって生成される
結果値を目標レジスタに書き込むかどうかを決定する。
従って、各還元演算は、結果関数、及び許可関数の結果
の組合せに応じて3つの動作をとりうる。これらの動作
には、ブール値1を目標レジスタに書き込むこと、ブー
ル値0を目標レジスタに書き込むこと、及び目標レジス
タに書き込まないことが含まれる。
【0035】以下の表3は、本発明の好適実施例におけ
る還元演算の4つのクラスについての真理値表を示す。
【0036】
【表3】
【0037】表3では、最も左の列は、ブール値比較関
数の結果として生成される「条件」値の状態を表す。他
の列は、条件の各状態ごとに還元演算の4つのクラス、
OR、AND、ORC、及びANDCによって実行される
動作を表す。ここで、「1」はブール値1を目標レジス
タに書き込むことを、「0」はブール値0を目標レジス
タに書き込むことを、「--」は目標レジスタ内の値を変
更しないことを表す。
【0038】図3を参照すると、機能ユニット36ないし
39は、以下の表4の値の列に示した値を機能ユニット自
身の各データ・バス66ないし69上に置き、書込み可能信
号の列に示した様に機能ユニット自身の各書込み可能線
を設定することによって、上述のAND還元演算、及び
OR還元演算を実行する。
【0039】
【表4】
【0040】上記の表4は、表3の演算の4つのクラス
のそれぞれの結果関数、及び許可関数によって生成され
る値を示す。これらの演算に関する結果関数は定数であ
る。「値」の列に示した様に、AND演算クラス、及び
ANDC演算クラスに関する結果関数は常に結果として
0を生成し、OR演算クラス、及びORC演算クラスに
関する結果関数は常に結果として1を生成する。「書込
み可能信号」の列は、これらの演算クラスに関する許可
関数が、条件値、又はその補数を生成する比較関数であ
ることを示す。より明確には、OR還元演算クラス、及
びANDC還元演算クラスに関する許可関数は、指定さ
れたブール値比較関数(条件を生成する比較関数)であ
る。ORC還元演算クラス、及びAND還元演算クラス
の許可関数は、指定されたブール値比較関数の補数であ
る。
【0041】前記の表3は、本発明の好適実施例で提供
される還元演算の4つのクラス、明確にはAND、AN
C、OR、及びORCの還元演算クラスである。AN
D、及びANDCクラスでの還元演算は、AND還元式
を解くうえで有用である。OR、及びORCクラスでの
還元演算は、OR還元式を解くうえで有用である。例え
ば、以下に再び示すAND還元式(2): r=(a<b)∧¬(c>d)∧(a<c)∧(b>
d)(2) は、以下の4つのAND、及びANDCクラスの還元演
算によって解くことができる: r=AND−<(a,b)(6); r=ANDC−>(c,d)(7); r=AND−<(a,c)(8); r=AND−>(b,d)(9)。
【0042】上記の還元演算(6ないし9)はそれぞ
れ、(括弧内の)指定された2つの入力値に対する演算
固有の比較関数(<、又は>)と、指定されたレジスタ
(r)を目標とする演算固有の還元関数(AND、又は
ANDC)から成る。各還元演算の比較関数はブール値
条件を生成する。次に、上記表3、及び4に示した様
に、各還元演算の許可関数は、条件に基づき、ブール値
0が目標レジスタに書き込まれるかどうかを決定する。
還元演算(6)、及び(8)は同じ還元演算であるが、
異なる入力値を指定することに留意されたい。
【0043】還元演算(6ないし9)によってAND還
元式(2)を解くために、まず事前にレジスタ(r)を
ブール値1にセットする。次いで、還元演算(6ないし
9)がそれぞれ実行される。必ずしも必要ではないが、
機能ユニット36ないし39によって還元演算を並列に実行
することが好ましい。どれかのAND還元演算の比較関
数が0を生成する場合、目標レジスタに0が書き込まれ
る。又ANDCの比較演算部分が1を生成する(比較の
補数が0である)場合にも、目標レジスタに0が書き込
まれる。従って、全ての還元演算(6)ないし(9)が
実行された後、(効果的に式(2)を解いて)目標レジ
スタは、AND還元式(2)の全ての項が真である場合
は1となり、そうでない場合は0となる。上記の表2に
示した様に、還元演算(6ないし9)を並列に実行する
と、式(2)は、効果的にコンピュータ・システム20の
α回のサイクルだけで解かれる。
【0044】本発明の代替実施例では、還元演算は、ブ
ール値述語入力に基づいて目標レジスタに書き込まれる
値を決定すると共に、比較関数によって生成される条件
値も決定する。この代替実施例では、命令ユニット34
は、各還元演算ごとに述語値(又は述語値を含むレジス
タ)を、演算の入力値、及び目標レジスタと共に指定す
る。以下の表5は、この代替実施例におけるいくつかの
典型的な還元演算のクラスを示している。
【0045】
【表5】
【0046】表5は、条件なし(U)、条件付き
(C)、OR、及びAND、ならびにそれらの補数(U
C、CC、ORC、ANDC)の還元演算の8つのクラスを
示す。条件なしクラス(U、UC)は、述語入力とその
条件(又はその条件の補数)のブールAND関数を目標
レジスタに書き込む。条件付きクラスは、述語入力に応
じて目標レジスタに条件を書き込む。最後に、OR、及
びANDクラスが、表3に示した様に述語入力に応じて
処理を行う。この場合も、表3に示した還元演算と同様
に、これらの還元演算のそれぞれの実行は、結果値を生
成する結果関数と、指定された目標レジスタに結果値が
書き込まれるかどうかを決定する許可関数によって厳密
に定義される。
【0047】表5に示したタイプの還元演算では、還元
式を解く1組の還元演算の性能を、指定されたレジスタ
に含まれる述語入力の値で条件付けることができる。例
えば、目標レジスタと、2つ以上のANDクラス演算を
事前にセットするための条件付きクラス演算を含む1組
の還元演算は、指定された述語入力が1である場合にA
ND還元式(例えば、式(2))を解く様に準備され、
述語入力が0である場合は何もしない。
【0048】1組の還元演算の実行から結果的に得られ
るブール値は、演算が実行された後に演算の目標レジス
タに記憶され、プログラム内の演算の述語化実行に特に
有用である。本発明の好適実施例では、演算は、ブール
述語値が記憶されるレジスタを指定することができる。
その場合、演算の実行は述語値で条件付けられる。好適
実施例では、その演算が実行されるのは、それらの演算
の指定された述語値が1の時だけである。
【0049】他の代替実施例では、同じ演算において所
与の1組の入力値からそれぞれ複数の結果を生成する1
組の還元演算が提供される。そのため、複数の結果を伴
う還元演算は以下の形をとる: rout,1,rout,2,...,rout,m=op(rin,1,
in,2,...,rin,n)(10) ここで、1組の入力値(rin,1,rin,2,...,rin,n)に
対して演算を実行することによって複数の結果値(r
out,1,rout,2,...,rout,m)が生成される。これらの
還元演算の実行は、複数の結果値のそれぞれごとに2つ
の関数(Fout,i,Fen ,i)によって厳密に定義される。
より明確には、各iごとに、結果(rout,i)は以下の
値をとる: rout,i=Fout,i(rin,1,rin,2,...,rin,n) if Fen,i(rin,1,rin,2,...,rin,n)(11)。
【0050】複数の結果を生成するタイプの還元演算
は、同じ1組の条件を使用する複数の還元式を解く状況
で特に有用である。例えば、状況によっては、4つ1組
の比較のAND還元式と、同じ1組の比較のOR還元式
を解くことが必要になることがある。この様な他の代替
実施例では、4つの機能ユニットだけで両方の還元式を
同時に解くことができる。その4つの機能ユニットは、
それぞれ、2つの別の目標レジスタに書き込むためにA
ND還元関数とOR還元関数を有する、4つの還元演算
をそれぞれ実行する。この技法は、演算を述語化実行す
るために使用される2つの結果述語を条件分岐の真、及
び偽の側から算出するうえで特に有用である。
【0051】好適実施例に関して本発明の原理を説明し
図示してきたが、本発明は、そうした原理から逸脱する
ことなく構成、及び細部を修正できることが認識されよ
う。例えば、図示された実施例は命令レベル並列コンピ
ュータ・システムであるが、本発明は多重処理コンピュ
ータ・システム(1つのプロセッサ内に別の機能ユニッ
トを有するのではなく、演算を実行するための別の複数
プロセッサを有する)に適用することもできる。その様
な多重処理コンピュータ・システムの実施例において
は、還元式は、隣接する同期点の間に1組の還元演算を
それぞれ別々のプロセッサ上で実行することによって解
かれる。還元演算は、複数の同時書込みを扱う記憶レジ
スタ内に式の値を形成する。
【0052】他の例として、還元式に関連するブール値
比較関数を、式を解く還元演算とは別に実行することが
できる。より明確には、演算の第1の組でブール値比較
関数を実行して、所望の還元式に関する1組の条件を形
成することができる。次に、還元演算の第2の組を実行
して、条件を式の最終値に還元する。還元関数が2つの
入力を持つAND演算の2分木としてでなく、同時に実
行されるので、この例でも従来の高さ還元技法を越える
利点を提供することに留意されたい。
【0053】更に他の例として、本発明による還元演算
は、それぞれが、複数のブール値を備えるベクトルに作
用することができる。その様なベクトルは、入力値、述
語値、及び/又は還元演算の関数の結果として機能する
ことができる。
【0054】本発明の原理を適用可能な多数の実施例に
関して言うと、ここで詳述された実施例は説明のみを目
的としたものであり、本発明の範囲を制限するものでは
ないということを認識されたい。むしろ、特許請求の範
囲、及び意図に含まれる全ての実施例、及びその同等物
は、本発明の範囲内であると言うことができる。
【0055】以下に本発明の実施態様を列挙する。
【0056】1. コンピュータ・システムにおいてブ
ール式、及び述語を解く方法であって、命令セットの命
令に対応する演算が、潜在的にパイプライン化された1
つ、又は複数の機能ユニットによって実行されるコンピ
ュータ・システムを提供するステップと、機能ユニット
内で演算を実行するステップを含み、前記演算が1組の
1つ、又は複数の入力値から、指定されたレジスタに記
憶される値を決定する形の1つ、又は複数の還元演算を
含み、前記機能ユニット内の還元演算の実行が、機能ユ
ニット内で1つ、又は複数の演算入力値の結果関数を実
行し、結果値を生成するステップと、機能ユニット内で
1つ、又は複数の演算入力値の許可関数を実行し、ブー
ル許可値を生成するステップと、ブール許可値が真であ
る場合に、指定されたレジスタ位置に結果値を書き込む
ステップを含むことを特徴とする方法。
【0057】2. 前記方法が更に、1組の還元演算を
実行してブール式を解くステップを含み、1組の還元演
算を実行する前記ステップが、第1の還元演算を実行し
て、指定されたレジスタ位置に第1のブール値を書き込
むステップと、演算の許可関数によって生成されるブー
ル許可値が真である場合に、1組の2つ以上の還元演算
を実行し、そのそれぞれが指定されたレジスタ位置に第
2のブール値をそれぞれ書き込み、それによって、指定
されたレジスタ位置に記憶される値をブール式の値とす
るステップを含むことを特徴とする、項番1に記載の方
法。
【0058】3. 指定されたレジスタに記憶される値
で条件付けられた演算を続けて実行するステップを更に
含むことを特徴とする項番2に記載の方法。
【0059】4. 機能ユニット内の還元演算の少なく
とも1つが、機能ユニット内で2つ以上の入力値の許可
関数を実行し、入力値の少なくとも1つの組合せに関し
て偽である許可関数を実行することによって生成される
ブール許可値を生成するステップを含むことを特徴とす
る項番1に記載の方法。
【0060】5. 1組の還元演算を実行してブール式
を解くステップを更に含み、1組の還元演算を実行する
前記ステップが、第1の還元演算を実行して、指定され
たレジスタ位置に第1のブール値を書き込むステップ
と、演算の許可関数によって生成されるブール許可値が
真である場合に、1組の2つ以上の還元演算を実行し、
そのそれぞれが指定されたレジスタ位置に第2のブール
値をそれぞれ書き込み、それによって、指定されたレジ
スタ位置に記憶された値をブール式の値とするステップ
を含むことを特徴とする、項番4に記載の方法。
【0061】6. 指定されたレジスタに記憶された値
で条件付けられた演算を続けて実行するステップを更に
含むことを特徴とする項番5に記載の方法。
【0062】7. 還元演算の少なくとも1つを機能ユ
ニットで実行するステップが、機能ユニット内で少なく
とも1つの入力値を共通に有する結果関数と許可関数を
実行し、かつ入力値の少なくとも1つの組合せに関して
偽である許可関数を実行することによって生成されるブ
ール許可値を生成するステップを含むことを特徴とする
項番1に記載の方法。
【0063】8. 1組の還元演算を実行してブール式
を解くことを更に含み、1組の還元演算を実行する前記
ステップが、第1の還元演算を実行して、指定されたレ
ジスタ位置に第1のブール値を書き込むステップと、演
算の許可関数によって生成されるブール許可値が真であ
る場合に、1組の2つ以上の還元演算を実行し、そのそ
れぞれが指定されたレジスタ位置に第2のブール値を書
き込み、それによって、指定されたレジスタ位置に記憶
される値をブール式の値とするステップを含むことを特
徴とする、項番7に記載の方法。
【0064】9. 指定されたレジスタに記憶された値
で条件付けられた演算を続けて実行するステップを更に
含むことを特徴とする項番8に記載の方法。
【0065】10. 複数出力の還元演算を機能ユニット
内で実行するステップを更に含み、それぞれの複数出力
の還元演算は1つ、又は複数の入力値の組から、1つ、
又は複数の指定されたレジスタ内の複数の値を決定する
形を有し、機能ユニット内のそれぞれの複数出力の還元
演算の実行が、演算によって決定される複数の値のそれ
ぞれごとに、機能ユニット内で演算の1つ、又は複数の
入力値の結果関数を実行して、結果値を生成するステッ
プと、機能ユニット内で演算の1つ、又は複数の入力値
の許可関数を実行して、ブール許可値を生成するステッ
プと、ブール許可値が真である場合に、指定されたレジ
スタ位置に結果値を書き込むステップを含むことを特徴
とする項番1に記載の方法。
【0066】11. 1組の還元演算を実行してブール式
を解くステップを更に含み、前記組中の少なくとも1つ
の還元演算が複数出力の還元演算であり、その組の還元
演算の実行が、第1の還元演算を実行して、指定された
レジスタ位置に第1のブール値を書き込むことと、演算
の許可関数によって生成されるブール許可値が真である
場合に、1組の2つ以上の還元演算を実行し、そのそれ
ぞれが指定されたレジスタ位置に第2のブール許可値を
書き込み、それによって、指定されたレジスタ位置に記
憶される値をブール式の値とするステップを含むことを
特徴とする、項番10に記載の方法。
【0067】12. 指定されたレジスタに記憶される値
で条件付けられた演算を続けて実行するステップを更に
含むことを特徴とする項番11に記載の方法。
【0068】13. 複数還元演算のうち少なくとも1つ
を機能ユニット内で実行するステップが、演算によって
決定される少なくとも1つの値について、機能ユニット
内で2つ以上の入力値の許可関数を実行し、入力値の少
なくとも1つの組合せに関して偽である許可関数を実行
することによって生成されるブール許可値を生成するス
テップを含むことを特徴とする項番10に記載の方法。
【0069】14. 1組の還元演算を実行してブール式
を解くステップを更に含み、前記組中の少なくとも1つ
の還元演算が複数出力の還元演算であり、その組の還元
演算を実行するステップが、第1の還元演算を実行し
て、指定されたレジスタ位置に第1のブール値を書き込
むステップと、演算の許可関数によって生成されるブー
ル許可値が真である場合に、1組の2つ以上の還元演算
を実行し、そのそれぞれが指定されたレジスタ位置に第
2のブール値を書き込み、それによって、指定されたレ
ジスタ位置に記憶される値をブール式の値とするステッ
プと、指定されたレジスタに記憶された値で条件付けら
れた演算を続けて実行するステップを含むことを特徴と
する、項番13に記載の方法。
【0070】15. 複数出力の還元演算の少なくとも1
つを機能ユニットで実行するステップが、演算によって
生成される少なくとも1つの値について、機能ユニット
内で少なくとも1つの入力値を共通に有する結果関数と
許可関数を実行し、かつ入力値の少なくとも1つの組合
せに関して偽である許可関数を実行することによって生
成されるブール許可値を生成するステップを含むことを
特徴とする項番10に記載の方法。
【0071】16. 1組の還元演算を実行してブール式
を解くステップを更に含み、前記組中の少なくとも1つ
の還元演算が複数出力の還元演算であり、その組の還元
演算を実行するステップが、第1の還元演算を実行し
て、指定されたレジスタ位置に第1のブール値を書き込
むステップと、演算の許可関数によって生成されるブー
ル許可値が真である場合に、1組の2つ以上の還元演算
を実行し、そのそれぞれが指定されたレジスタ位置に第
2のブール値を書き込み、それによって、指定されたレ
ジスタ位置に記憶される値をブール式の値とするステッ
プと、指定されたレジスタに記憶された値で条件付けら
れた演算を続けて実行するステップを含むことを特徴と
する、項番15に記載の方法。
【0072】17. コンピュータ・システムにおいて、
値を記憶するための複数のレジスタと、レジスタに結合
された1つ、又は複数の機能ユニットであって、各前記
機能ユニットがコンピュータ・システム用の命令セット
の命令に対応した複数の演算を実行し、前記演算がレジ
スタ内の指定された記憶位置に記憶された値を、1つ、
又は複数の入力値から決定するための還元演算から成る
機能ユニットと、演算の1つ、又は複数の入力値の結果
関数を実行することにより、結果値を生成し、演算の1
つ、又は複数の入力値の許可関数を実行してブール許可
値を生成し、ブール許可値が真である場合に、指定され
たレジスタ位置に結果値を書き込むことによって還元演
算を実行する機能ユニットを備えることを特徴とするコ
ンピュータ・システム。
【0073】18. 複数のレジスタが、レジスタに書き
込まれた各ブール値が同じものである時、レジスタに同
時に書き込まれた1つ、又は複数のブール値に基づいて
値を記憶する様に動作する、同時に書き込まれた複数の
値を受け入れるためのレジスタを備えることを特徴とす
る、項番17に記載のコンピュータ・システム。
【0074】19. 複数の入力ポートを有する、同時に
書き込まれる値を受け入れるためのレジスタであって、
前記入力ポートが値と書込み可能信号を機能ユニットか
ら受け取るために機能ユニットに1対1の関係で接続さ
れており、機能ユニットの書込み可能信号が設定された
時に、機能ユニットから受け取った前記値が書き込まれ
るレジスタと、レジスタ内のレジスタ位置を指定する還
元演算を実行する時に、許可関数を実行することによっ
て生成されたブール許可値が真である場合に、演算の結
果関数を実行することによって生成された結果値をレジ
スタに送り、書込み可能信号を設定する機能ユニット
と、機能ユニットによって複数の同じ値が同時にレジス
タに書き込まれた時に、レジスタに記憶する値を導出す
るための手段を更に備えることを特徴とする項番18に記
載のコンピュータ・システム。
【0075】20. 機能ユニットが、演算によって決定
された複数の値のそれぞれについて、演算の1つ、又は
複数の入力値の結果関数を実行して結果値を生成し、演
算の1つ、又は複数の入力値の許可関数を実行してブー
ル許可値を生成し、ブール許可値が真である場合に、指
定されたレジスタ位置に結果値を書き込むことによっ
て、レジスタに記憶される複数の値を1つ、又は複数の
入力値から決定するための還元演算を実行する様動作す
ることを特徴とする項番18に記載のコンピュータ・シス
テム。
【0076】
【発明の効果】本発明に従う上述の2つの態様のコンピ
ュータ・システムによって、どんな還元式も効果的にα
回のサイクルだけで解くことができ、更に、積和形で表
されたどんな一般ブール式も、効果的に2α回のサイク
ルで解くことが可能となる。
【図面の簡単な説明】
【図1】本発明の好適実施例によるコンピュータ・シス
テムの概略ブロック図である。
【図2】命令レベル並列処理のための複数の機能ユニッ
トを有する図1のコンピュータ・システム内の中央演算
処理装置の概略ブロック図である。
【図3】図2の中央演算処理装置内のレジスタの概略ブ
ロック図である。
【符号の説明】
20 コンピュータ・システム 22 CPU 24 メモリ 30 システム・バス 34 命令ユニット 36−39 機能ユニット 46、54 レジスタ 60−63 ポート 66−69 データ・バス 70−73 書込み可能線 76 選択回路
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ヴィノッド・カサイル アメリカ合衆国カリフォルニア州95014ク パーティノ,ナンバー・シー5,ノース・ フォーシル・ブールヴァード・10270

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】コンピュータ・システムにおいてブール
    式、及び述語を解くための方法であって、 命令セットの命令に対応する演算が、潜在的にパイプラ
    イン化された1つ、又は複数の機能ユニットによって実
    行されるコンピュータ・システムを提供するステップ
    と、 機能ユニット内で演算を実行するステップを含み、 前記演算が1組の1つ、又は複数の入力値から、指定さ
    れたレジスタに記憶される値を決定する形の1つ、又は
    複数の還元演算を含み、前記機能ユニット内の還元演算
    の実行が、 機能ユニット内で、1つ、又は複数の演算入力値の結果
    関数を実行し、結果値を生成するステップと、 機能ユニット内で、1つ、又は複数の演算入力値の許可
    関数を実行し、ブール許可値を生成するステップと、 ブール許可値が真である場合に、指定されたレジスタ位
    置に結果値を書き込むステップを含むことを特徴とする
    方法。
JP30873694A 1993-12-13 1994-12-13 述語、及びブール式を解くためのコンピュータ・システム、及び方法 Expired - Lifetime JP3573506B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16658293A 1993-12-13 1993-12-13
US166582 1993-12-13

Publications (2)

Publication Number Publication Date
JPH07244589A true JPH07244589A (ja) 1995-09-19
JP3573506B2 JP3573506B2 (ja) 2004-10-06

Family

ID=22603916

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30873694A Expired - Lifetime JP3573506B2 (ja) 1993-12-13 1994-12-13 述語、及びブール式を解くためのコンピュータ・システム、及び方法

Country Status (4)

Country Link
US (1) US6023751A (ja)
JP (1) JP3573506B2 (ja)
DE (1) DE4430195B4 (ja)
GB (1) GB2284690B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021507348A (ja) * 2017-12-13 2021-02-22 エイアールエム リミテッド ベクトル・キャリー付き加算命令

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0652509B1 (en) * 1993-11-05 2000-05-10 Intergraph Corporation Instruction cache associative cross-bar switch
US5999738A (en) * 1996-11-27 1999-12-07 Hewlett-Packard Company Flexible scheduling of non-speculative instructions
GB2402510A (en) * 2003-06-05 2004-12-08 Advanced Risc Mach Ltd Predication instruction within a data processing system
US7143270B1 (en) * 2004-01-30 2006-11-28 Hewlett-Packard Development Company, L.P. System and method for adding an instruction to an instruction set architecture
US8200947B1 (en) * 2008-03-24 2012-06-12 Nvidia Corporation Systems and methods for voting among parallel threads
US8564616B1 (en) 2009-07-17 2013-10-22 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US8542247B1 (en) 2009-07-17 2013-09-24 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US8447954B2 (en) * 2009-09-04 2013-05-21 International Business Machines Corporation Parallel pipelined vector reduction in a data processing system
US8976195B1 (en) 2009-10-14 2015-03-10 Nvidia Corporation Generating clip state for a batch of vertices
US8384736B1 (en) 2009-10-14 2013-02-26 Nvidia Corporation Generating clip state for a batch of vertices
US9141386B2 (en) * 2010-09-24 2015-09-22 Intel Corporation Vector logical reduction operation implemented using swizzling on a semiconductor chip
US10705841B2 (en) 2015-06-24 2020-07-07 International Business Machines Corporation Instruction to perform a logical operation on conditions and to quantize the Boolean result of that operation
US10698688B2 (en) 2015-06-24 2020-06-30 International Business Machines Corporation Efficient quantization of compare results
US10620952B2 (en) 2015-06-24 2020-04-14 International Business Machines Corporation Conversion of boolean conditions

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4212076A (en) * 1976-09-24 1980-07-08 Giddings & Lewis, Inc. Digital computer structure providing arithmetic and boolean logic operations, the latter controlling the former
US4251861A (en) * 1978-10-27 1981-02-17 Mago Gyula A Cellular network of processors
US4831521A (en) * 1983-11-10 1989-05-16 General Signal Corporation Vital processor implemented with non-vital hardware
US4774421A (en) * 1984-05-03 1988-09-27 Altera Corporation Programmable logic array device using EPROM technology
US4644464A (en) * 1984-06-05 1987-02-17 Burroughs Corporation Graph manager for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes
US4615003A (en) * 1984-06-05 1986-09-30 Burroughs Corporation Condition concentrator and control store for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes
US4742252A (en) * 1985-03-29 1988-05-03 Advanced Micro Devices, Inc. Multiple array customizable logic device
US4722071A (en) * 1985-04-19 1988-01-26 Pertron Controls, Corporation Compiler for evaluating Boolean expressions
US4747046A (en) * 1985-06-28 1988-05-24 Hewlett-Packard Company Mechanism for comparing two registers and storing the result in a general purpose register without requiring a branch
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US5051947A (en) * 1985-12-10 1991-09-24 Trw Inc. High-speed single-pass textual search processor for locating exact and inexact matches of a search pattern in a textual stream
US5349670A (en) * 1986-07-23 1994-09-20 Advanced Micro Devices, Inc. Integrated circuit programmable sequencing element apparatus
JP2520882B2 (ja) * 1986-08-27 1996-07-31 株式会社日立製作所 デ−タ処理装置およびデ−タ処理方法
US4831573A (en) * 1987-03-06 1989-05-16 Altera Corporation Programmable integrated circuit micro-sequencer device
US5239663A (en) * 1987-06-15 1993-08-24 Centre National De La Recherche Scientifique Self-adapting and multifunctional process and structure for the automated evaluation of logical or arithmetic expressions, particularly for extended database consultation
US5046035A (en) * 1987-08-26 1991-09-03 Ict International Cmos Tech., Inc. High-performance user programmable logic device (PLD)
US4918641A (en) * 1987-08-26 1990-04-17 Ict International Cmos Technology, Inc. High-performance programmable logic device
US5168179A (en) * 1988-11-04 1992-12-01 Silicon Systems, Inc. Balanced modulator for auto zero networks
US5121502A (en) * 1989-12-20 1992-06-09 Hewlett-Packard Company System for selectively communicating instructions from memory locations simultaneously or from the same memory locations sequentially to plurality of processing
IT1244938B (it) * 1991-03-06 1994-09-13 Ezio Lefons Sistema di interrogazione dei dati nelle basi e banche di dati.
WO1992021083A1 (en) * 1991-05-17 1992-11-26 Theseus Research Inc. Null convention speed independent logic
US5287017A (en) * 1992-05-15 1994-02-15 Micron Technology, Inc. Programmable logic device macrocell with two OR array inputs
US5300830A (en) * 1992-05-15 1994-04-05 Micron Semiconductor, Inc. Programmable logic device macrocell with an exclusive feedback and exclusive external input lines for registered and combinatorial modes using a dedicated product term for control
US5309046A (en) * 1992-09-30 1994-05-03 Intel Corporation Apparatus and method for product term allocation in programmable logic
US5450608A (en) * 1993-04-15 1995-09-12 Intel Corporation Programmable logic having selectable output states for initialization and resets asynchronously using control bit associated with each product term

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021507348A (ja) * 2017-12-13 2021-02-22 エイアールエム リミテッド ベクトル・キャリー付き加算命令

Also Published As

Publication number Publication date
GB2284690B (en) 1998-07-01
DE4430195A1 (de) 1995-06-14
GB2284690A (en) 1995-06-14
GB9424221D0 (en) 1995-01-18
DE4430195B4 (de) 2004-09-23
JP3573506B2 (ja) 2004-10-06
US6023751A (en) 2000-02-08

Similar Documents

Publication Publication Date Title
EP2480979B1 (en) Unanimous branch instructions in a parallel thread processor
KR102413832B1 (ko) 벡터 곱셈 덧셈 명령
JP5035277B2 (ja) 共有メモリに対するアトミックな更新を可能にするロックメカニズム
US7042466B1 (en) Efficient clip-testing in graphics acceleration
US7627723B1 (en) Atomic memory operators in a parallel processor
US5872987A (en) Massively parallel computer including auxiliary vector processor
US5418736A (en) Optimized binary adders and comparators for inputs having different widths
US5394351A (en) Optimized binary adder and comparator having an implicit constant for an input
US20080184211A1 (en) Virtual architecture and instruction set for parallel thread computing
US20120066668A1 (en) C/c++ language extensions for general-purpose graphics processing unit
JP2006012182A (ja) データ処理システムとその方法
JP3573506B2 (ja) 述語、及びブール式を解くためのコンピュータ・システム、及び方法
JPH0766329B2 (ja) 情報処理装置
US8572355B2 (en) Support for non-local returns in parallel thread SIMD engine
CN104937541A (zh) 用于调用多线程加速器的装置和方法
Anido et al. Improving the operation autonomy of SIMD processing elements by using guarded instructions and pseudo branches
JP2874351B2 (ja) 並列パイプライン命令処理装置
US7587582B1 (en) Method and apparatus for parallel arithmetic operations
US6988121B1 (en) Efficient implementation of multiprecision arithmetic
JP2003167726A (ja) コプロセッサ装置およびデータ転送を容易にするための方法
WO2002015000A2 (en) General purpose processor with graphics/media support
CN112579168B (zh) 指令执行单元、处理器以及信号处理方法
JP7490766B2 (ja) 演算論理回路レジスタの順序付け
JP2004021890A (ja) データ処理装置
US11275712B2 (en) SIMD controller and SIMD predication scheme

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040531

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040629

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080709

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090709

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090709

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100709

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110709

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110709

Year of fee payment: 7

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20110709

Year of fee payment: 7

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20120709

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 9

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term