説明

複数のバイナリ値の最小値/最大値を判定する方法及び装置

複数のバイナリ値の最小値/最大値を判定するため、複数のバイナリ値において全ての後続ビット値が同じになるビット位置を判定する。複数のバイナリ値から、先行ステップで判定したビット位置と、後続位置がある場合は全後続位置のビット値が、所定値を有するバイナリ値を選択する。その後、1つのバイナリ値が残るまで先行ステップを繰り返し、これを最小値または最大値として供給する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のバイナリ値の最小値/最大値を判定する方法及び装置に関し、より詳細には、中央処理装置から離れた別の場所に記憶された複数のバイナリ値から最小値/最大値を判定する方法及び装置に関する。
【背景技術】
【0002】
メモリ素子と集積回路(IC)は正常作動を確認するためにテストすることが必要であり、特にIC又はメモリ製造の開発過程ではテストが必要である。テスト中には、テスト対象デバイス(DUT)を様々な刺激信号に晒し、デバイスからの応答を測定し、処理し、通常は予期応答に比較する。かかるテストは、デバイス固有のテストプログラムに従って、それらのタスクを通常実行する自動テスト装置(ATE)によって行われる。
【0003】
Verigy V93000シリーズやVerigy V5000シリーズがそのような自動テスト装置の例として挙げられるが、前者はシステム・オン・チップと、システム・オン・パッケージと、高速メモリデバイスをテストするプラットフォームである。後者のシリーズは、ウェハソートと最終テストでフラッシュメモリやマルチチップパッケージを含むメモリデバイスをテストするためのものである。
【0004】
かかる自動テスト装置又はテスタでは、複数のテスト結果を得て中央処理領域から離れた様々な場所に記憶することがある。例えば、複数の処理デバイス又はプロセッサから供給される様々な刺激信号に基づいて結果を得るが、この処理デバイス又はプロセッサは刺激信号を発生するばかりでなく、1つの、又は複数のテスト対象デバイスから応答信号を受信する。通常、テストの実施に際しては、全てのチャネルで並行してテストルーチンを実行する。実行するテストルーチンやテストルーチンで使用するデータはチャネルによって異なることがある。ただし、高速テスト実行にとっては一斉送信と共同読み取りを可能な限り利用するのが望ましく、その場合は、異なるチャネルの関係テストデータが各チャネルの同じメモリアドレスに記憶される。複数のチャネルにわたって一定サイズのメモリ領域を割り当てる作業はテスタメモリ管理機能によって処理される。複雑なテストアプリケーションでは、場合によっては異なるチャネルの関係データを同じアドレスに揃えるという制約があるため、テスタメモリには未使用の間隙が生じる。テストプロセッサに内蔵されたプロセッサの計算能力向上にともない、それぞれのプロセッサが自身のメモリを独自に管理し、中央処理装置とテストプロセッサとの通信に際してはメモリ領域の記号アドレスのみを使用することがある。これにより、異なるチャネルの関係データを同じアドレスに揃えるという制約は回避できる。ただしこの場合は、テストプロセッサに記憶された値の最小値又は最大値を中央処理装置で把握する必要があり、例えば、全てのチャネルにわたって割り当てることができるメモリはいくら残っているかという疑問、すなわちそれぞれのチャネルで最も大きい連続空きメモリブロックの最小サイズはどの位かという疑問が生じる。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の目的は、様々な場所に記憶された複数のバイナリ値から最小値又は最大値を処理と時間の両面で効率的に判定する改良された方法を提供することにある。
【課題を解決するための手段】
【0006】
かかる目的は、請求項1に記載の方法と、請求項8に記載のコンピュータ記憶媒体と、請求項9に記載のコンピュータプログラムプロダクトと、請求項10に記載のコンピュータプログラムと、請求項11に記載のシステムと、請求項14に記載の装置とによって解決される。本発明は複数のバイナリ値の最小値/最大値を判定する方法を提供するものであり、該方法は、(a)複数のバイナリ値において全ての後続ビット値が同じであるビット位置を判定すること、(b)複数のバイナリ値から(a)で判定した前記ビット位置と、後続ビット位置がある場合は全後続ビット位置のビット値が、所定値を有するバイナリ値を選択すること、(c)1つの選択バイナリ値か複数の一致バイナリ値が残るまで、ステップ(b)で選択した前記バイナリ値に基づきステップ(a)を繰り返す、ステップ(a)及び(b)を繰り返すこと、及び(d)前記残りのバイナリ値を前記最小値/最大値として供給すること、を有する。
【図面の簡単な説明】
【0007】
【図1】従来型テスタの概略図である。
【図2】本発明の一実施形態に係るテスタの概略図である。
【図3】複数のバイナリ値の最小値/最大値を判定する一実施形態を示すフロー図である。
【発明を実施するための形態】
【0008】
本発明の実施形態は、複数のバイナリ値の最小値/最大値を判定する装置を提供し、該装置は、本発明の実施形態の方法に従って作動するように構成されたプロセッサを備える。
【0009】
本発明のさらなる実施形態は、複数のバイナリ値の最小値/最大値を判定するシステムを提供し、同システムは中央処理装置と、中央処理装置へ結合され、複数の入力値のビット単位ORの組み合わせとビット単位ANDの組み合わせとを中央処理装置へ出力するように構成されたロジックと、各プロセッサと連携し、前記ロジックへ各々結合され、複数のバイナリ値のいずれか1つを各々保持するよう結合された複数のメモリと、を備え、中央処理装置は、本発明の実施形態の方法に従って作動するように構成される。
【0010】
本発明の実施形態を、添付の図面を参照して以下に説明する。
【0011】
図1はテスタ100の概略図であって、テスタ100は中央処理装置102と複数の単独プロセッサP乃至Pとを備え、単独プロセッサP乃至Pを中央処理装置102に接続する図1の矢印に示すとおり、複数の単独プロセッサP乃至Pは中央処理装置102へ結合する。テスタ100は104で示す1つのテスト対象デバイスへ、又は複数のテスト対象デバイスへ、接続もしくは結合できる。さらにテスタ100は出力信号を供給する出力106を備え、この出力信号は、例えばDUT104のテスト結果を伝達するものである。DUT104へ刺激信号を供給し、DUTから応答信号を受信するため、複数のプロセッサP乃至Pを設けることができる。図1に示すとおり、それぞれのプロセッサP乃至Pは、応答信号や、各プロセッサによってDUT104に適用されたテストの結果を伝える信号をバイナリ形式で表す1つ以上の値を保持できる。
【0012】
図1に示す実施形態において、単独プロセッサPは値45をバイナリ形式(101101)で記憶し、単独プロセッサPは値57をバイナリ形式(111001)で記憶し、単独プロセッサPは値13をバイナリ形式(001101)で記憶し、単独プロセッサPは値44をバイナリ形式(101100)で記憶し、単独プロセッサPは値29をバイナリ形式(011101)で記憶し、単独プロセッサPは値45をバイナリ形式(101101)で記憶している。
【0013】
上記の実施形態では、テスタ100は整数値をそれぞれ保持するフロントエンドプロセッサP乃至Pを備えている。この場合、中央処理装置102はそれらの値の最小値か最大値を可能な限り速やかに認識する必要がある。図1に示す従来型テスタで全ての値から最小値か最大値を判定する従来の方法では、中央処理装置102がプロセッサP乃至Pから値を順次1つずつ読み取るが、そのためにはn回の読み取り動作が必要になる。
【0014】
中央処理装置102は一般的に単純な処理ステップや計算をかなり高速に処理できるが、通常、中央処理装置102と単独プロセッサP乃至Pとの通信は前述の計算に比べて遅いため、全ての値から最小値又は最大値を速やかに得ることはできない。つまり、中央処理装置で単純な処理ステップや計算を行う場合の合計所要時間は所要通信ステップ数に左右される。
【0015】
したがって、様々な場所に記憶された複数のバイナリ値から最小値又は最大値を処理と時間の両面で効率的に判定する改良された方法を提供する必要がある。1つ以上の最小値/最大値の高速発見をテストシステムに役立てることができ、より具体的には、かかるテストシステムで分散プロセッサのメモリ管理に役立てることができる。かかるテストシステムの一例では複数のチャネル(DUTの1ピンに対応する測定単位)を使用し、各チャネルは独自のテストプロセッサと関連メモリとを具備する。図2は、本発明の一実施形態に係るテスタの概略図である。図2において、図1との関係で既に述べた要素には同じ参照符号を付してある。図2から分かるように、図1との関係で説明したテスタに加え、テスタ100は単独プロセッサP乃至Pと中央処理装置102との間に結合されたロジック108を備えている。ロジック108は単独の要素として図示されているが、別の実施形態では、それらの2要素を囲む破線で示すように、中央処理装置102の一部としてロジック108を実装することもできる。図面に示すように、ロジック108はビット単位の「AND」かビット単位の「OR」を使ってプロセッサP乃至Pから読み取られた値を組み合わせるように構成される。ロジック108の2つの出力は「ビット単位OR」出力か「ビット単位AND」出力のいずれかであり、中央処理装置102に入力される。図2に示す実施形態では、単独プロセッサP乃至Pが図1との関係で説明した値と同じ値を保持すると仮定し、さらに、表示された値を保持するメモリ素子M乃至Mが図示されている。メモリM乃至Mは、例えばプロセッサレジスタとしてプロセッサP乃至Pの一部を形成することもあれば、それぞれのプロセッサに結合されることもある。図2のテスタは、プロセッサから読み取った値をビット単位「AND」かビット単位「OR」を使って組み合わせながら全てのプロセッサP乃至Pから中央処理装置102にかけて1つのステップで値を読み取る働きをする。かかる共同読み取り動作を全てのプロセッサで使用すれば、ある1つのプロセッサから1つの値を読み取るのと同程度に速くなる。同様に、中央処理装置から他の全てのプロセッサへ、あるいは1つの単独プロセッサへ、データを1つのステップで一斉送信できる。
【0016】
以下では図3を参照し、共同読み取り機能を使って分散プロセッサP乃至Pに記憶された値から最小値/最大値を速やかに判定する例をさらに説明する。
【0017】
図3は、複数のプロセッサP乃至Pに対応する1つ以上の最小値/最大値を判定する一実施形態のフロー図を示す。当初の値はそれぞれのプロセッサに記憶されるが、別の場所に記憶していずれか1つのプロセッサに対応付けることもできる。バイナリ値はいくつかのビットからなり、このビット数はkで設定し、バイナリ表現のビットは0から始まって右(最下位ビット)から左(最上位ビット)に数える。つまりビット(k−1)...0で数を表す。iは、左(最上位ビット)から見て最小値のビットが既に判明している先頭のビット位置である。図3との関係で説明する例ではk=8であり、最初はi=kである。
【0018】
ステップS100では以下の変数を初期化する:
k=8(=8ビット);
n=9(=9個のプロセッサ);
R=最小値/最大値の判定に際して、現時点までに既知の結果ビットを記憶する変数であって、未知のビットは0に設定される;
j=ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウントする);
ANDn=ビット単位ANDの実値;
ORn=ビット単位ORの実値;
=プロセッサnに記憶される/プロセッサnに対応付けられる値
【0019】
ステップS100での初期化の後には、プロセッサP乃至Pから供給されるバイナリ表現による値のビット(k−1)...(j+1)が等しくなる、iより小さいjの値を判定する。この場合、最小値/最大値のビット(k−1)...(j+1)は必ず同じになり、最小値のビットjは必ず「0」になり、最大値のビットjは必ず「1」になる。位置jを判定するため、プロセッサ102はバイナリ表現によるプロセッサの数値を読み取る2回の共同読み取り動作からビット単位「AND」とビット単位「OR」を取る(ステップS102参照)。2通りのビットパターンが等しくなるビット位置では、プロセッサから供給される値は全て等しくなる。2通りのビットパターンが相違するビット位置では、少なくとも1つのプロセッサが0ビットを供給し、少なくとも1つのプロセッサは1ビットを供給したことになる。つまりjは、ビット単位ANDとビット単位ORが相違する最上位ビット位置であり、これは中央処理装置で個々のビットを調べるだけで計算できる。このステップの後にビット(k−1)...jは既知であり、iはjに設定できる(ステップS104参照)。
【0020】
ステップS106においてRで現時点までに既知のビット(k−1)乃至0を判定するには、Rのビットk−1乃至j+1をビット単位AND動作とビット単位OR動作の結果で一致するビットに設定し、Rのビットj(ある場合)を、最小値検索の場合には0に設定し、最大値検索の場合には1に設定し、Rの残りのビットj−1乃至0(ある場合)を0に設定する。
【0021】
ステップS108では、jが0以下か否かを判定する。0以下であればステップS110でプロセスが終了する。
【0022】
もしくはプロセスはステップS112へ進み、ここでビット(k−1)...iが最も小さい最大値の既知ビットに等しくなる結果に検索の対象を絞る。中央処理装置102はこのステップの準備として、最小値/最大値の現時点までの既知ビットを全プロセッサP乃至Pに伝達するほか、全ての値を対象とする前回の反復におけるビット単位「AND」結果とビット単位「OR」結果(1回目の反復の場合はプロセッサに記憶された全ての当初値を対象とするビット単位「AND」結果とビット単位「OR」結果)を伝達する。中央処理装置102はさらに、次のステップで以下の値を供給することを全プロセッサP乃至Pに命じる(ステップS112乃至S118):
−各プロセッサの当初値Pのjまでのビット(k−1)が最小値/最大値の既知ビットに等しい場合は、当初値Pが供給され(ステップ114及び116参照)、及び
−他の全プロセッサで当初バイナリ値が供給されない場合は、ロジック108に修正値を供給するようプロセッサに命じる(ステップS114及びS118参照)。
【0023】
より具体的には、ステップS118では、「AND」動作による共同読み取りが実行されるか、それとも「OR」動作による共同読み取りが実行されるかに応じて修正値が決まる。「「AND」による共同読み取り」動作の場合は、ビット(k−1)...iで最小値の現時点までの既知ビットを返すよう各プロセッサに命じる。加えて、蓄積値の先行「OR」のビットも供給される。同様に、「「OR」による共同読み取り」動作の場合はプロセッサにそれぞれの修正値を返すよう命じる。この場合もビット(k−1)...で最小値の現時点までの既知ビットが返され、残りのビットは先行ビットの「AND」のそれになる。上記の修正値は、限られた検索空間のプロセッサ値に対するビット単位「AND」やビット単位「OR」に影響しない。
【0024】
上記のプロセスは、j≦0となるまで当初/修正値に基づき繰り返される(ステップS108及びS110参照)。
【0025】
最小値/最大値を判定する上記の方法を示す例を以下に説明する。
【0026】
実施例1
9個のプロセッサP乃至Pに記憶された値から最小値を判定する。
当初の値:
=112 → 01110000
=114 → 01110010
=111 → 01101111
=99 → 01100011
=101 → 01100101
=115 → 01110011
=115 → 01110011
=111 → 01101111
=114 → 01110010
【0027】
反復#1
現時点までに既知の結果ビット数:0
現時点までに既知のビットのビットマスク:00000000
結果ビット:00000000
【0028】
現段階の反復で各プロセッサから中央処理装置に供給される値:
ANDの場合:(PからP ORの場合:(PからP
01110000 当初 01110000 当初
01110010 当初 01110010 当初
01101111 当初 01101111 当初
01101111 当初 01101111 当初
01100101 当初 01100101 当初
01110011 当初 01110011 当初
01110011 当初 01110011 当初
01101111 当初 01101111 当初
01110010 当初 01110010 当初
0110000(ビット単位AND) 0111111(ビット単位OR)
【0029】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):4(j=4)
=>現在、4つの最上位結果ビットが既知。
【0030】
反復#2
現時点までに既知の結果ビット数:4
現時点までに既知のビットのビットマスク:11110000
結果ビット:0110000
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至5)=反復#1におけるビット単位ANDとビット単位ORの一致ビット−この例では011。
−最小値検索のためビットj(ビット4)をに設定。
−残りのビットj−1乃至0(ビット3乃至0)は0を保つ。
ANDの場合:(PからP
(01101111) 修正
(01101111) 修正
01101111 当初
01100011 当初
01100101 当初
(01101111) 修正
(01101111) 修正
01101111 当初
(01101111) 修正
ビット単位AND:0110001
【0031】
当初:現時点までに既知の結果ビット、すなわち011と、対応する当初値のビットとが一致するため、当初値は維持される。
修正:現時点までに既知の結果ビット、すなわち011と、対応する当初値のビットとが一致しないため、当初値は修正される。当初値で一致しないビットは、現時点までに既知の結果ビットに、すなわち011に置き換えられ、当初値の残りのビットは、反復#1におけるビット単位ORの結果から対応するビットに、すなわち1111に置き換えられる。
ORの場合:(PからP
(01100000) 修正
(01100000) 修正
01101111 当初
01100011 当初
01100101 当初
(01100000) 修正
(01100000) 修正
01101111 当初
(01100000) 修正
ビット単位OR:0110111
【0032】
当初:現時点までに既知の結果ビット、すなわち011と、対応する当初値のビットとが一致するため、当初値は維持される。
修正:現時点までに既知の結果ビット、すなわち011と、対応する当初値のビットとが一致しないため、当初値は修正される。当初値で一致しないビットは、現時点までに既知の結果ビットに、すなわち011に置き換えられ、当初値の残りのビットは、反復#1におけるビット単位ANDの結果から対応するビットに、すなわち0000に置き換えられる。
【0033】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):3(j=3)
=>現在、5つの最上位結果ビットが既知。
【0034】
反復#3
現時点までに既知の結果ビット数:5
現時点までに既知のビットのビットマスク:11111000
結果ビット:0110000
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至4)=反復#2におけるビット単位ANDとビット単位ORの一致ビット−この例では0110。
−最小値検索のためビットj(ビット3)をに設定。
−残りのビットj−1乃至0(ビット2乃至0)は0を保つ。
ANDの場合:(PからP
(01100111) 修正
(01100111) 修正
(01100111) 修正
01100011 当初
01100101 当初
(01100111) 修正
(01100111) 修正
(01100111) 修正
(01100111) 修正
ビット単位AND:0110001
【0035】
当初:現時点までに既知の結果ビット、すなわち0110と、対応する当初値のビットとが一致するため、当初値は維持される。
修正:現時点までに既知の結果ビット、すなわち0110と、対応する当初値のビットとが一致しないため、当初値は修正される。当初値で一致しないビットは、現時点までに既知の結果ビットに、すなわち0110に置き換えられ、当初値の残りのビットは、反復#2におけるビット単位ORの結果から対応するビットに、すなわち111に置き換えられる。
ORの場合:(PからP
(01100000) 修正
(01100000) 修正
(01100000) 修正
01100011 当初
01100101 当初
(01100000) 修正
(01100000) 修正
(01100000) 修正
(01100000) 修正
ビット単位OR:0110011
【0036】
当初:現時点までに既知の結果ビット、すなわち0110と、対応する当初値のビットとが一致するため、当初値は維持される。
修正:現時点までに既知の結果ビット、すなわち0110と、対応する当初値のビットとが一致しないため、当初値は修正される。当初値で一致しないビットは、現時点までに既知の結果ビットに、すなわち0110に置き換えられ、当初値の残りのビットは、反復#2におけるビット単位ANDの結果から対応するビットに、すなわち000に置き換えられる。
【0037】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):2(j=2)
=>現在、6つの最上位結果ビットが既知。
【0038】
反復#4
現時点までに既知の結果ビット数:6
現時点までに既知のビットのビットマスク:11111100
結果ビット:011000
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至3)=反復#3におけるビット単位ANDとビット単位ORの一致ビット−この例では01100。
−最小値検索のためビットj(ビット2)をに設定。
−残りのビットj−1乃至0(ビット1乃至0)は0を保つ。
ANDの場合:(PからP
(01100011) 修正
(01100011) 修正
(01100011) 修正
01100011 当初
(01100011) 修正
(01100011) 修正
(01100011) 修正
(01100011) 修正
(01100011) 修正
ビット単位AND:01100011
【0039】
当初:現時点までに既知の結果ビット、すなわち01100と、対応する当初値のビットとが一致するため、当初値は維持される。
修正:現時点までに既知の結果ビット、すなわち01100と、対応する当初値のビットとが一致しないため、当初値は修正される。当初値で一致しないビットは、現時点までに既知の結果ビットに、すなわち01100に置き換えられ当初値の残りのビットは、反復#3におけるビット単位ORの結果から対応するビットに、すなわち11に置き換えられる。
ORの場合:(PからP
(01100000) 修正
(01100000) 修正
(01100000) 修正
01100011 当初
(01100000) 修正
(01100000) 修正
(01100000) 修正
(01100000) 修正
(01100000) 修正
ビット単位OR:01100011
【0040】
当初:現時点までに既知の結果ビット、すなわち01100と、対応する当初値のビットとが一致するため、当初値は維持される。
修正:現時点までに既知の結果ビット、すなわち01100と、対応する当初値のビットとが一致しないため、当初値は修正される。当初値で一致しないビットは、現時点までに既知の結果ビットに、すなわち01100に置き換えられ、当初値の残りのビットは、反復#3におけるビット単位ANDの結果から対応するビットに、すなわち00に置き換えられる。
【0041】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):−1(j=−1)
=>現在、8つの最上位結果ビットが既知。
現時点までに既知のビットのビットマスク:11111111
結果ビット:01100011
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至1)=反復#4におけるビット単位ANDとビット単位ORの一致ビット−この例では01100011。
−ビットjは存在しない。
−残りのビットj−1乃至0はない。
=>現在、全ての結果ビットが既知であり、つまり結果は01100011=99である。したがって、プロセッサPが最小値を保持する。
【0042】
実施例2
9個のプロセッサP乃至Pに記憶された値から最大値を判定する。
当初の値:
=112 → 01110000
=114 → 01110010
=111 → 01101111
=99 → 01100011
=101 → 01100101
=115 → 01110011
=115 → 01110011
=111 → 01101111
=114 → 01110010
【0043】
反復#1
現時点までに既知の結果ビット数:0
現時点までに既知のビットのビットマスク:00000000
結果ビット:00000000
【0044】
現段階の反復で各プロセッサから中央処理装置に供給される値:
ANDの場合:(PからP ORの場合:(PからP
01110000 当初 01110000 当初
01110010 当初 01110010 当初
01101111 当初 01101111 当初
01100011 当初 01100011 当初
01100101 当初 01100101 当初
01110011 当初 01110011 当初
01110011 当初 01110011 当初
01101111 当初 01101111 当初
01110010 当初 01110010 当初
0110000(ビット単位AND) 0111111(ビット単位OR)
【0045】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):4(j=4)
=>現在、4つの最上位結果ビットが既知。
【0046】
反復#2
現時点までに既知の結果ビット数:4
現時点までに既知のビットのビットマスク:11110000
結果ビット:0110000
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至5)=反復#1におけるビット単位ANDとビット単位ORの一致ビット−この例では011。
−最大値検索のためビットj(ビット4)をに設定。
−残りのビットj−1乃至0(ビット3乃至0)は0を保つ。
ANDの場合:(PからP
01110000 当初
01110010 当初
(01111111) 修正
(01111111) 修正
(01111111) 修正
01110011 当初
01110011 当初
(01111111) 修正
01110010 当初
ビット単位AND:011100
【0047】
当初:現時点までに既知の結果ビット、すなわち011と、対応する当初値のビットとが一致するため、当初値は維持される。
修正:現時点までに既知の結果ビット、すなわち011と、対応する当初値のビットとが一致しないため、当初値は修正される。当初値で一致しないビットは、現時点までに既知の結果ビットに、すなわち011に置き換えられ、当初値の残りのビットは、反復#1におけるビット単位ORの結果から対応するビットに、すなわち1111に置き換えられる。
ORの場合:(PからP
01110000 当初
01110010 当初
(01110000) 修正
(01110000) 修正
(01110000) 修正
01110011 当初
01110011 当初
(01110000) 修正
01110010 当初
ビット単位OR:011100
【0048】
当初:現時点までに既知の結果ビット、すなわち011と、対応する当初値のビットとが一致するため、当初値は維持される。
修正:現時点までに既知の結果ビット、すなわち011と、対応する当初値のビットとが一致しないため、当初値は修正される。当初値で一致しないビットは、現時点までに既知の結果ビットに、すなわち011に置き換えられ、当初値の残りのビットは、反復#1におけるビット単位ANDの結果から対応するビットに、すなわち0000に置き換えられる。
【0049】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):1(j=1)
=>現在、7つの最上位結果ビットが既知。
【0050】
反復#3
現時点までに既知の結果ビット数:7
現時点までに既知のビットのビットマスク:11111110
結果ビット:011100
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至2)=反復#2におけるビット単位ANDとビット単位ORの一致ビット−この例では011100。
−最大値検索のためビットj(ビット1)をに設定。
−残りのビットj−1乃至0(ビット0乃至0)は0を保つ。
ANDの場合:(PからP
(01110011) 修正
01110010 当初
(01110011) 修正
(01110011) 修正
(01110011) 修正
01110011 当初
01110011 当初
(01110011) 修正
01110010 当初
ビット単位AND:0111001
【0051】
当初:現時点までに既知の結果ビット、すなわち011100と、対応する当初値のビットとが一致するため、当初値は維持される。
修正:現時点までに既知の結果ビット、すなわち011100と、対応する当初値のビットとが一致しないため、当初値は修正される。当初値で一致しないビットは、現時点までに既知の結果ビットに、すなわち011100に置き換えられ、当初値の残りのビットは、反復#2におけるビット単位ORの結果から対応するビットに、すなわち111に置き換えられる。
ORの場合:(PからP
(01110010) 修正
01110010 当初
(01110010) 修正
(01110010) 修正
(01110010) 修正
01110011 当初
01110011 当初
(01110010) 修正
01110010 当初
ビット単位OR:0111001
【0052】
当初:現時点までに既知の結果ビット、すなわち011100と、対応する当初値のビットとが一致するため、当初値は維持される。
修正:現時点までに既知の結果ビット、すなわち011100と、対応する当初値のビットとが一致しないため、当初値は修正される。当初値で一致しないビットは、現時点までに既知の結果ビットに、すなわち011100に置き換えられ、当初値の残りのビットは、反復#2におけるビット単位ANDの結果から対応するビットに、すなわち0に置き換えられる。
【0053】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):0(j=0)
=>現在、8つの最上位結果ビットが既知。
現時点までに既知のビットのビットマスク:11111111
結果ビット:01100011
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至1)=反復#4におけるビット単位ANDとビット単位ORの一致ビット−この例では011100
−最大値検索のためビットj(ビット0)をに設定。
−残りのビットj−1乃至0はない。
=>現在、全ての結果ビットが既知であり、つまり結果は01110011=115である。したがって、プロセッサPが最小値を保持する。
【0054】
実施例3
11個のプロセッサP乃至P11に記憶された値から最小値を判定する(ビット単位ANDとビット単位ORの値判定については上記の実施例1及び2を参照)。
当初の値:
=70 → 01000110
=97 → 01100001
=115 → 01110011
=116 → 01110100
=77 → 01001101
=105 → 01101001
=110 → 01101110
=68 → 01000100
=101 → 01100101
10=109 → 01101101
11=111 → 01101111
【0055】
反復#1
現時点までに既知の結果ビット数:0
現時点までに既知のビットのビットマスク:00000000
結果ビット:00000000
現段階の反復で各プロセッサから中央処理装置に供給される値:
ANDの場合:(PからP11 ORの場合:(PからP11
01000110 当初 01000110 当初
01100001 当初 01100001 当初
01110011 当初 01110011 当初
01110100 当初 01110100 当初
01001101 当初 01001101 当初
01101001 当初 01101001 当初
01101110 当初 01101110 当初
01000100 当初 01000100 当初
01100101 当初 01100101 当初
01101101 当初 01101101 当初
01101111 当初 01101111 当初
0100000(ビット単位AND) 0111111(ビット単位OR)
【0056】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):5(j=5)
=>現在、3つの最上位結果ビットが既知。
【0057】
反復#2
現時点までに既知の結果ビット数:3
現時点までに既知のビットのビットマスク:11100000
結果ビット:0100000
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至6)=反復#1におけるビット単位ANDとビット単位ORの一致ビット−この例では01。
−最小値検索のためビットj(ビット5)をに設定。
−残りのビットj−1乃至0(ビット4乃至0)は0を保つ。
ANDの場合:(PからP11 ORの場合:(PからP11
01000110 当初 01000110 当初
(01011111) 修正 (01000000) 修正
(01011111) 修正 (01000000) 修正
(01011111) 修正 (01000000) 修正
01001101 当初 01001101 当初
(01011111) 修正 (01000000) 修正
(01011111) 修正 (01000000) 修正
01000100 当初 01000100 当初
(01011111) 修正 (01000000) 修正
(01011111) 修正 (01000000) 修正
(01011111) 修正 (01000000) 修正
0100100(ビット単位AND) 0100111(ビット単位OR)
【0058】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):3(j=3)
=>現在、5つの最上位結果ビットが既知。
【0059】
反復#3
現時点までに既知の結果ビット数:5
現時点までに既知のビットのビットマスク:1111000
結果ビット:0100000
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至4)=反復#2におけるビット単位ANDとビット単位ORの一致ビット−この例では0100。
−最小値検索のためビットj(ビット3)をに設定。
−残りのビットj−1乃至0(ビット2乃至0)は0を保つ。
ANDの場合:(PからP11 ORの場合:(PからP11
01000110 当初 01000110 当初
(01000111) 修正 (01000000) 修正
(01000111) 修正 (01000000) 修正
(01000111) 修正 (01000000) 修正
(01000111) 修正 (01000000) 修正
(01000111) 修正 (01000000) 修正
(01000111) 修正 (01000000) 修正
01000100 当初 01000100 当初
(01000111) 修正 (01000000) 修正
(01000111) 修正 (01000000) 修正
(01000111) 修正 (01000000) 修正
0100010(ビット単位AND) 0100010(ビット単位OR)
【0060】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):1(j=1)
=>現在、7つの最上位結果ビットが既知。
【0061】
反復#4
現時点までに既知の結果ビット数:7
現時点までに既知のビットのビットマスク:11111110
結果ビット:010001
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至2)=反復#3におけるビット単位ANDとビット単位ORの一致ビット−この例では01100。
−最小値検索のためビットj(ビット1)をに設定。
−残りのビットj−1乃至0(ビット0乃至0)は0を保つ。
ANDの場合:(PからP11 ORの場合:(PからP11
(01000101) 修正 (01000100) 修正
(01000101) 修正 (01000100) 修正
(01000101) 修正 (01000100) 修正
(01000101) 修正 (01000100) 修正
(01000101) 修正 (01000100) 修正
(01000101) 修正 (01000100) 修正
(01000101) 修正 (01000100) 修正
01000100 当初 01000100 当初
(01000101) 修正 (01000100) 修正
(01000101) 修正 (01000100) 修正
(01000101) 修正 (01000100) 修正
01000100(ビット単位AND) 01000100(ビット単位OR)
【0062】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):−1(j=−1)
(つまり全ビットが一致)
現時点までに既知の結果ビット数:8
現時点までに既知のビットのビットマスク:11111111
結果ビット:01000100
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至0)=反復#4におけるビット単位ANDとビット単位ORの一致ビット−この例では01000100。
−ビットj(ビット−1)は存在しない。
−残りのビットj−1乃至0はない。
=>現在、全ての結果ビットが既知であり、つまり結果は01000100=68である。したがって、プロセッサPが最小値を保持する。
【0063】
実施例4
11個のプロセッサP乃至P11に記憶された値から最大値を判定する(ビット単位ANDとビット単位ORの値判定については上記の実施例1及び2を参照)。
当初の値:
=70 → 01000110
=97 → 01100001
=115 → 01110011
=116 → 01110100
=77 → 01001101
=105 → 01101001
=110 → 01101110
=68 → 01000100
=101 → 01100101
10=109 → 01101101
11=111 → 01101111
【0064】
反復#1
現時点までに既知の結果ビット数:0
現時点までに既知のビットのビットマスク:00000000
結果ビット:00000000
現段階の反復で各プロセッサから中央処理装置に供給される値:
ANDの場合:(PからP11 ORの場合:(PからP11
01000110 当初 01000110 当初
01100001 当初 01100001 当初
01110011 当初 01110011 当初
01110100 当初 01110100 当初
01001101 当初 01001101 当初
01101001 当初 01101001 当初
01101110 当初 01101110 当初
01000100 当初 01000100 当初
01100101 当初 01100101 当初
01101101 当初 01101101 当初
01101111 当初 01101111 当初
0100000(ビット単位AND) 0111111(ビット単位OR)
【0065】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):5(j=5)
=>現在、3つの最上位結果ビットが既知。
【0066】
反復#2
現時点までに既知の結果ビット数:3
現時点までに既知のビットのビットマスク:11100000
結果ビット:0100000
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至6)=反復#1におけるビット単位ANDとビット単位ORの一致ビット−この例では01。
−最大値検索のためビットj(ビット5)をに設定。
−残りのビットj−1乃至0(ビット4乃至0)は0を保つ。
ANDの場合:(PからP11 ORの場合:(PからP11
(01111111) 修正 (01100000) 修正
01100001 当初 01100001 当初
01110011 当初 01110011 当初
01110100 当初 01110100 当初
(01111111) 修正 (01100000) 修正
01101001 当初 01101001 当初
01101110 当初 01101110 当初
(01111111) 修正 (01100000) 修正
01100101 当初 01100101 当初
01101101 当初 01101101 当初
01101111 当初 01101111 当初
0110000(ビット単位AND) 0111111(ビット単位OR)
【0067】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):4(j=4)
=>現在、4つの最上位結果ビットが既知。
【0068】
反復#3
現時点までに既知の結果ビット数:4
現時点までに既知のビットのビットマスク:11110000
結果ビット:0110000
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至5)=反復#2におけるビット単位ANDとビット単位ORの一致ビット−この例では011。
−最大値検索のためビットj(ビット4)をに設定。
−残りのビットj−1乃至0(ビット3乃至0)は0を保つ。
ANDの場合:(PからP11 ORの場合:(PからP11
(01111111) 修正 (01110000) 修正
(01111111) 修正 (01110000) 修正
01110011 当初 01110011 当初
01110100 当初 01110100 当初
(01111111) 修正 (01110000) 修正
(01111111) 修正 (01110000) 修正
(01111111) 修正 (01110000) 修正
(01111111) 修正 (01110000) 当初
(01111111) 修正 (01110000) 修正
(01111111) 修正 (01110000) 修正
(01111111) 修正 (01110000) 修正
ビット単位AND:0111000 0111011(ビット単位OR)
【0069】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):2(j=2)
=>現在、6つの最上位結果ビットが既知。
【0070】
反復#4
現時点までに既知の結果ビット数:6
現時点までに既知のビットのビットマスク:11111100
結果ビット:0111000
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至3)=反復#3におけるビット単位ANDとビット単位ORの一致ビット−この例では01110。
−最大値検索のためビットj(ビット2)をに設定。
−残りのビットj−1乃至0(ビット1乃至0)は0を保つ。
ANDの場合:(PからP11 ORの場合:(PからP11
(01110111) 修正 (01110100) 修正
(01110111) 修正 (01110100) 修正
(01110111) 修正 (01110100) 修正
01110100 当初 01110100 当初
(01110111) 修正 (01110100) 修正
(01110111) 修正 (01110100) 修正
(01110111) 修正 (01110100) 修正
(01110111) 修正 (01110100) 修正
(01110111) 修正 (01110100) 修正
(01110111) 修正 (01110100) 修正
(01110111) 修正 (01110100) 修正
01110100(ビット単位AND) 01110100(ビット単位OR)
【0071】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):−1(j=−1)
(つまり全ビットが一致)
現時点までに既知の結果ビット数:8
現時点までに既知のビットのビットマスク:11111111
結果ビット:01110100
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至0)=反復#4におけるビット単位ANDとビット単位ORの一致ビット−この例では01110100。
−ビットj(ビット−1)は存在しない。
−残りのビットj−1乃至0はない。
=>現在、全ての結果ビットが既知であり、つまり結果は01110100=116である。したがって、プロセッサPが最小値を保持する。
【0072】
実施例5
18個のプロセッサP乃至P18に記憶された値から最小値を判定する(ビット単位ANDとビット単位ORの値判定については上記の実施例1及び2を参照)。
当初の値:
=114 → 01110010
=104 → 01101000
=97 → 01100001
=98 → 01100010
=97 → 01100001
=114 → 01110010
=98 → 01100010
=101 → 01100101
=114 → 01110010
10=114 → 01110010
11=104 → 01101000
12=97 → 01100001
13=98 → 01100010
14=97 → 01100001
15=114 → 01110010
16=98 → 01100010
17=101 → 01100101
18=114 → 01110010
【0073】
反復#1
現時点までに既知の結果ビット数:0
現時点までに既知のビットのビットマスク:00000000
結果ビット:00000000
【0074】
現段階の反復で各プロセッサから中央処理装置に供給される値:
ANDの場合:(PからP18 ORの場合:(PからP18
01110010 当初 01110010 当初
01101000 当初 01101000 当初
01100001 当初 01100001 当初
01100010 当初 01100010 当初
01100001 当初 01100001 当初
01110010 当初 01110010 当初
01100010 当初 01100010 当初
01100101 当初 01100101 当初
01110010 当初 01110010 当初
01110010 当初 01110010 当初
01101000 当初 01101000 当初
01100001 当初 01100001 当初
01100010 当初 01100010 当初
01100001 当初 01100001 当初
01110010 当初 01110010 当初
01100010 当初 01100010 当初
01100101 当初 01100101 当初
01110010 当初 01110010 当初
0110000(ビット単位AND) 0111111(ビット単位OR)
【0075】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):4(j=4)
=>現在、4つの最上位結果ビットが既知。
【0076】
反復#2
現時点までに既知の結果ビット数:4
現時点までに既知のビットのビットマスク:11110000
結果ビット:0110000
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至5)=反復#1におけるビット単位ANDとビット単位ORの一致ビット−この例では011。
−最小値検索のためビットj(ビット4)をに設定。
−残りのビットj−1乃至0(ビット3乃至0)は0を保つ。
ANDの場合:(PからP18 ORの場合:(PからP18
(01101111) 修正 (01100000) 修正
01101000 当初 01101000 当初
01100001 当初 01100001 当初
01100010 当初 01100010 当初
01100001 当初 01100001 当初
(01101111) 修正 (01100000) 修正
01100010 当初 01100010 当初
01100101 当初 01100101 当初
(01101111) 修正 (01100000) 修正
(01101111) 修正 (01100000) 修正
01101000 当初 01101000 当初
01100001 当初 01100001 当初
01100010 当初 01100010 当初
01100001 当初 01100001 当初
(01101111) 修正 (01100000) 修正
01100010 当初 01100010 当初
01100101 当初 01100101 当初
(01101111) 修正 (01100000) 修正
0110000(ビット単位AND) 0110111(ビット単位OR)
【0077】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):3(j=3)
=>現在、5つの最上位結果ビットが既知。
【0078】
反復#3
現時点までに既知の結果ビット数:5
現時点までに既知のビットのビットマスク:11111000
結果ビット:0110000
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至4)=反復#2におけるビット単位ANDとビット単位ORの一致ビット−この例では0110。
−最小値検索のためビットj(ビット3)をに設定。
−残りのビットj−1乃至0(ビット2乃至0)は0を保つ。
ANDの場合:(PからP18 ORの場合:(PからP18
(01100111) 修正 (01100000) 当初
(01100111) 修正 (01100000) 修正
01100001 当初 01100001 修正
01100010 当初 01100010 修正
01100001 当初 01100001 修正
(01100111) 修正 (01100000) 修正
01100010 当初 01100010 修正
01100101 当初 01100101 当初
(01100111) 修正 (01100000) 修正
(01100111) 修正 (01100000) 修正
(01100111) 修正 (01100000) 修正
01100001 当初 01100001 修正
01100010 当初 01100010 修正
01100001 当初 01100001 修正
(01100111) 修正 (01100000) 当初
01100010 当初 01100010 修正
01100101 当初 01100101 修正
(01100111) 修正 (01100000) 修正
0110000(ビット単位AND) 0110011(ビット単位OR)
【0079】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):2(j=2)
=>現在、6つの最上位結果ビットが既知。
【0080】
反復#4
現時点までに既知の結果ビット数:6
現時点までに既知のビットのビットマスク:11111100
結果ビット:0110000
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至3)=反復#3におけるビット単位ANDとビット単位ORの一致ビット−この例では01100。
−最小値検索のためビットj(ビット2)をに設定。
−残りのビットj−1乃至0(ビット1乃至0)は0を保つ。
ANDの場合:(PからP18 ORの場合:(PからP18
(01100011) 修正 (01100000) 修正
(01100011) 修正 (01100000) 修正
01100001 当初 01100001 当初
01100010 当初 01100010 当初
01100001 当初 01100001 当初
(01100011) 修正 (01100000) 修正
01100010 当初 01100010 当初
(01100011) 修正 (01100000) 修正
(01100011) 修正 (01100000) 修正
(01100011) 修正 (01100000) 修正
(01100011) 修正 (01100000) 修正
01100001 当初 01100001 当初
01100010 当初 01100010 当初
01100001 当初 01100001 当初
(01100011) 修正 (01100000) 修正
01100010 当初 01100010 当初
(01100011) 修正 (01100000) 修正
(01100011) 修正 (01100000) 修正
0110000(ビット単位AND) 0110001(ビット単位OR)
【0081】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):1(j=1)
=>現在、7つの最上位結果ビットが既知。
【0082】
反復#5
現時点までに既知の結果ビット数:7
現時点までに既知のビットのビットマスク:11111110
結果ビット:011000
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至2)=反復#4におけるビット単位ANDとビット単位ORの一致ビット−この例では011000。
−最小値検索のためビットj(ビット1)をに設定。
−残りのビットj−1乃至0(ビット0乃至0)は0を保つ。
ANDの場合:(PからP18 ORの場合:(PからP18
(01100001) 修正 (01100000) 修正
(01100001) 修正 (01100000) 修正
01100001 当初 01100001 当初
(01100001) 修正 (01100000) 修正
01100001 当初 01100001 当初
(01100001) 修正 (01100000) 修正
(01100001) 修正 (01100000) 修正
(01100001) 修正 (01100000) 修正
(01100001) 修正 (01100000) 修正
(01100001) 修正 (01100000) 修正
(01100001) 修正 (01100000) 修正
01100001 当初 01100001 当初
(01100001) 修正 (01100000) 修正
01100001 当初 01100001 当初
(01100001) 修正 (01100000) 当初
(01100001) 修正 (01100000) 修正
(01100001) 修正 (01100000) 修正
(01100001) 修正 (01100000) 修正
01100001(ビット単位AND) 01100001(ビット単位OR)
【0083】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):−1(j=−1)
(つまり全ビットが一致)
現時点までに既知の結果ビット数:8
現時点までに既知のビットのビットマスク:11111111
結果ビット:01100001
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至0)=反復#4におけるビット単位ANDとビット単位ORの一致ビット−この例では01100001。
−ビットj(ビット−1)は存在しない。
−残りのビットj−1乃至0はない。
=>現在、全ての結果ビットが既知であり、つまり結果は01100001=97である。したがって、プロセッサP、P、P12が最小値を保持する。
【0084】
実施例6
18個のプロセッサP乃至P18に記憶された値から最大値を判定する(ビット単位ANDとビット単位ORの値判定については上記の実施例1及び2を参照)。
当初の値:
=114 → 01110010
=104 → 01101000
=97 → 01100001
=98 → 01100010
=97 → 01100001
=114 → 01110010
=98 → 01100010
=101 → 01100101
=114 → 01110010
10=114 → 01110010
11=104 → 01101000
12=97 → 01100001
13=98 → 01100010
14=97 → 01100001
15=114 → 01110010
16=98 → 01100010
17=101 → 01100101
18=114 → 01110010
【0085】
反復#1
現時点までに既知の結果ビット数:0
現時点までに既知のビットのビットマスク:00000000
結果ビット:00000000
現段階の反復で各プロセッサから中央処理装置に供給される値:
ANDの場合:(PからP18 ORの場合:(PからP18
01110010 当初 01110010 当初
01101000 当初 01101000 当初
01100001 当初 01100001 当初
01100010 当初 01100010 当初
01100001 当初 01100001 当初
01110010 当初 01110010 当初
01100010 当初 01100010 当初
01100101 当初 01100101 当初
01110010 当初 01110010 当初
01110010 当初 01110010 当初
01101000 当初 01101000 当初
01100001 当初 01100001 当初
01100010 当初 01100010 当初
01100001 当初 01100001 当初
01110010 当初 01110010 当初
01100010 当初 01100010 当初
01100101 当初 01100101 当初
01110010 当初 01110010 当初
ビット単位AND:0110000 ビット単位OR:0111111
【0086】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):4(j=4)
=>現在、4つの最上位結果ビットが既知。
【0087】
反復#2
現時点までに既知の結果ビット数:4
現時点までに既知のビットのビットマスク:11110000
結果ビット:0110000
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至5)=反復#1におけるビット単位ANDとビット単位ORの一致ビット−この例では011。
−最小値検索のためビットj(ビット4)をに設定。
−残りのビットj−1乃至0(ビット3乃至0)は0を保つ。
ANDの場合:(PからP18 ORの場合:(PからP18
01110010 当初 01110010 当初
(01111111) 修正 (01110000) 修正
(01111111) 修正 (01110000) 修正
(01111111) 修正 (01110000) 修正
(01111111) 修正 (01110000) 修正
01110010 当初 01110010 当初
(01111111) 修正 (01110000) 修正
(01111111) 修正 (01110000) 修正
01110010 当初 01110010 当初
01110010 当初 01110010 当初
(01111111) 修正 (01110000) 修正
(01111111) 修正 (01110000) 修正
(01111111) 修正 (01110000) 修正
(01111111) 修正 (01110000) 修正
01110010 当初 01110010 当初
(01111111) 修正 (01110000) 修正
(01111111) 修正 (01110000) 修正
01110010 当初 01110010 当初
01110010(ビット単位AND) 01110010(ビット単位OR)
【0088】
ビット単位ANDとビット単位ORとが相違する最高ビット位置(最下位ビットを0とカウント):−1(j=−1)
現時点までに既知の結果ビット数:8
現時点までに既知のビットのビットマスク:11111111
結果ビット:01110010
現時点までに既知の結果ビットの生成:
−ビットk−1乃至j+1(ビット7乃至0)=反復#4におけるビット単位ANDとビット単位ORの一致ビット−この例では01110010。
−ビットj(ビット−1)は存在しない。
−残りのビットj−1乃至0はない。
=>現在、全ての結果ビットが既知であり、つまり結果は01110010=114である。したがって、プロセッサP、P、P10、P15、P18が最小値を保持する。
【0089】
上述した実施形態によれば、この方法で最小値を判定するに際して必要な反復回数は、バイナリ表現による当初値のいずれか2つが相違するビットの数に過ぎない。各回の反復は、「AND」による1回の共同読み取りと「OR」による1回の共同読み取りと、1回の一斉送信ですむ。
【0090】
数を表すビット数は通常は32であり、64の場合もあるが、1組の値が相違するビットの数はこれよりも少ない。プロセッサの数nが1組の値が相違するビットの数を大幅に上回るとすれば、例えば数千の差で上回る場合「高速最小値発見」は上述したn回の読み取り動作を要する上記の一般的な方法より大幅に速くなる。
【0091】
バイナリ値をそれぞれ供給する複数のプロセッサP乃至Pを使って本発明の実施形態を説明した。上記とは別の実施形態で中央処理装置により最大/最小値を判定するに際し、対応するメモリ素子のレジスタにバイナリ値を保持するプロセッサの数は減らしてもよく、または、1つのプロセッサのみでもよい。
【0092】
上記の方法は、ハードウェアまたはソフトウェアで実装可能である。加えて、かかる実装は、プログラム可能なコンピュータシステムと協働でき、本発明の実施形態に係る方法を実行するための電子的に読み取り可能な制御信号を有するディスクやCD等のデジタル記憶媒体において成されてもよい。概して本発明は、機械で読み取り可能な担体に記憶され、コンピュータ上での稼動時に実行される、本発明の実施形態に係る方法を実行するためのプログラムコードを有する、コンピュータプログラムプロダクトでもある。換言すると、本発明は、コンピュータ上での稼動時に実行される該方法を実行するためのプログラムコードを有するコンピュータプログラムでもある。
【符号の説明】
【0093】
100 テスタ
102 プロセッサ(中央処理装置)
104 DUT
106 出力
108 ビット単位

【特許請求の範囲】
【請求項1】
複数のバイナリ値の最小値/最大値を判定する方法であって、前記方法は、
(a)複数のバイナリ値において全ての後続ビット値が同じであるビット位置を判定すること、
(b)複数のバイナリ値から(a)で判定した前記ビット位置と、後続ビット位置がある場合は全後続ビット位置のビット値が、所定値を有するバイナリ値を選択すること、
(c)1つの選択バイナリ値か複数の一致バイナリ値が残るまで、ステップ(b)で選択した前記バイナリ値に基づきステップ(a)を繰り返す、ステップ(a)及び(b)を繰り返すこと、及び
(d)前記残りのバイナリ値を前記最小値/最大値として供給することを有すること、
を特徴とする方法。
【請求項2】
前記所定値は最大値を判定する場合に「1」であって、前記所定値は最小値を判定する場合に「0」であること、を特徴とする請求項1に記載の方法。
【請求項3】
前記複数のバイナリ値は複数のメモリ(M−M)によって保持され、ステップ(a)は最初に、
(a.1)全てのメモリ(M−M)から全てのバイナリ値を共同で読み取り、前記共同で読み取ったバイナリ値のビット単位ORの組み合わせとビット単位ANDの組み合わせとを生成すること、及び
(a.2)前記共同で読み取ったバイナリ値の前記ビット単位ORの組み合わせと前記ビット単位ANDの組み合わせとに基づき、前記複数のバイナリ値において全ての後続ビット値が同じになる前記ビット位置を判定すること、を有すること、
を特徴とする請求項1又は2に記載の方法。
【請求項4】
次のビット単位ORの組み合わせと次のビット単位ANDの組み合わせとを生成するため、ステップ(b)は、
ステップ(a)で判定する前記ビット位置の当初のバイナリ値の前記ビット値が前記所定値と一致する場合に、前記当初のバイナリ値を選択すること、及び
もしくは修正値を選択すること、を有し、
ステップ(a)を繰り返すことは、前記次のビット単位ORの組み合わせと前記次のビット単位ANDの組み合わせとに基づくこと、
を特徴とする請求項3に記載の方法。
【請求項5】
前記次のビット単位ORの組み合わせの場合、前記修正値は、前記最小値/最大値の現時点までの既知ビットと、前記既存のビット単位ANDの組み合わせの前記残りのビットとによって形成され、
前記次のビット単位ANDの組み合わせの場合、前記修正値は、前記最小値/最大値の現時点までの既知ビットと、前記既存のビット単位ORの組み合わせの前記残りのビットとによって形成されること、
を特徴とする請求項4に記載の方法。
【請求項6】
ステップ(a)は、
前記ビット単位ORの組み合わせと前記ビット単位ANDの組み合わせとを前記メモリ(M−M)へ伝達することを有し、
ステップ(b)は、
前記最小値/最大値の前記現時点までの既知ビットを前記メモリ(M−M)へ伝達すること、及び
前記次のビット単位ORの組み合わせの場合、各前記メモリ(M−M)に対し、
ステップ(a)で判定した前記ビット位置と、後続ビット位置がある場合は全後続ビット位置の前記ビット値が、前記最小値/最大値の前記現時点までの既知ビット値と一致する場合は、前記当初の値を返すこと、
もしくは、前記最小値/最大値の前記現時点までの既知ビット値と、前記既存のビット単位ANDの組み合わせの前記残りのビット位置の前記ビット値とを返すこと、を命令すること、及び
前記次のビット単位ANDの組み合わせの場合に、各メモリ(M−M)に対し、
ステップ(a)で判定した前記ビット位置と、後続ビット位置がある場合は全後続ビット位置の前記ビット値が、前記最小値/最大値の前記現時点までの既知ビット値と一致する場合は、前記当初の値を返すこと、
もしくは、前記最小値/最大値の前記現時点までの既知ビット値と、前記既存のビット単位ORの組み合わせの前記残りのビット位置の前記ビット値とを返すことを命令すること、を有すること、
を特徴とする請求項5に記載の方法。
【請求項7】
前記メモリ(M−M)はプロセッサメモリである、または各プロセッサ(P−P)と連携するメモリであること、を特徴とする請求項3から6の一項に記載の方法。
【請求項8】
プロセッサ(102)による実行時に、請求項1から6の一項に記載の方法を実行するためのコンピュータで読み取り可能なプログラムコードを備えること、を特徴とするコンピュータ記憶媒体。
【請求項9】
プロセッサ(102)による実行時に、請求項1から6の一項に記載の方法を実行するためのコンピュータで読み取り可能なプログラムコードを備えること、を特徴とするコンピュータプログラムプロダクト。
【請求項10】
プロセッサ(102)による実行時に、請求項1から6の一項に記載の方法を実行するためのプログラムコードを備えること、を特徴とするコンピュータプログラム。
【請求項11】
複数のバイナリ値の最小値/最大値を判定するシステムであって、前記システムは、
中央処理装置(102)と、
前記中央処理装置(102)へ結合され、複数の入力値のビット単位ORの組み合わせとビット単位ANDの組み合わせとを前記中央処理装置(102)へ出力するように構成されたロジック(108)と、
各プロセッサ(P−P)と連携し、前記ロジック(108)へ各々結合され、前記複数のバイナリ値のいずれか1つを各々保持するように構成された複数のメモリ(M−M)と、を備え、
前記中央処理装置(102)は請求項1から6の一項に記載の方法に従って作動するように構成されること、
を特徴とするシステム。
【請求項12】
前記ロジック(108)は前記中央処理装置(102)に実装されること、を特徴とする請求項11に記載のシステム。
【請求項13】
電子デバイス(104)をテストするテスタ(100)であって、前記バイナリ値はテスト結果を表すこと、を特徴とする請求項11または12に記載のシステム。
【請求項14】
複数のバイナリ値の最小値/最大値を判定する装置であって、前記装置は請求項1から6の一項に記載の方法に従って作動するように構成されたプロセッサ(102)を備えること、を特徴とする装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公表番号】特表2010−532065(P2010−532065A)
【公表日】平成22年9月30日(2010.9.30)
【国際特許分類】
【出願番号】特願2010−523293(P2010−523293)
【出願日】平成20年8月5日(2008.8.5)
【国際出願番号】PCT/EP2008/006437
【国際公開番号】WO2010/015263
【国際公開日】平成22年2月11日(2010.2.11)
【出願人】(506347045)ヴェリジー(シンガポール) プライベート リミテッド (64)
【氏名又は名称原語表記】Verigy(Singapore)Pte.Ltd.
【住所又は居所原語表記】No.1 Yishun Ave. 7, Lot 1937C, 1935X, 1975P, Singapore 768923