(57)【要約】シミュレーションプロセッサは、複数のプロセッサユニット、およびプロセッサユニットを互いに通信可能に結合する相互接続システムを備える。各々のプロセッサユニットは、少なくとも１つの論理動作をシミュレートするように構成されるプロセッサ要素と、論理シミュレーション時に生成される中間値を記憶するためのシフトレジスタとを備える。各々のプロセッサユニットは、シフトレジスタのエントリの１つを、相互接続システムに結合される出力として選択するための１つまたは複数のマルチプレクサをさらに備える。各々のプロセッサユニットは、シフトレジスタをバイパスして、プロセッサ要素の出力を相互接続システムに直接供給するための経路を提供するために、プロセッサ要素の出力と相互接続システムとの間に結合される１つまたは複数のバイパスマルチプレクサを備えても良い。
2009514070.tif 000002
【特許請求の範囲】
【請求項１】
複数の論理ゲートを含む論理設計の論理シミュレーションを実行するためのシミュレーションプロセッサであって、該シミュレーションプロセッサは、
相互接続システムと、
該相互接続システムを介して互いに通信可能に結合された複数のプロセッサユニットと
を備えており、
少なくとも２つの該プロセッサユニットの各々は、
少なくとも１つの該論理ゲートをシミュレートするように構成可能なプロセッサ要素と、
該プロセッサ要素に関連付けられ、該プロセッサ要素の作動時に中間値を記憶する複数のエントリを含むシフトレジスタであって、該シフトレジスタは、該プロセッサ要素の出力を受信するように結合されている、シフトレジスタと
を含んでいる、シミュレーションプロセッサ。
【請求項２】
少なくとも２つの前記プロセッサユニットの各々は、
前記シフトレジスタと前記相互接続システムとの間に結合された１つ以上のマルチプレクサであって、該マルチプレクサの各々は、選択信号に応じて、該シフトレジスタのエントリの１つを選択し、さらに該選択されたエントリを該相互接続システムに転送する、マルチプレクサ
をさらに含んでいる、請求項１に記載のシミュレーションプロセッサ。
【請求項３】
前記１つ以上のマルチプレクサは、２つ以上のマルチプレクサを含む、請求項２に記載のシミュレーションプロセッサ。
【請求項４】
少なくとも１つの前記マルチプレクサは、前記シフトレジスタの全体の深さをアドレス指定することができない、請求項３に記載のシミュレーションプロセッサ。
【請求項５】
前記プロセッサ要素の出力は、ラッチが介在しないで前記シフトレジスタに結合され、該シフトレジスタは、ラッチが介在して前記相互接続システムに結合される、請求項２に記載のシミュレーションプロセッサ。
【請求項６】
前記プロセッサ要素が前記少なくとも１つの論理ゲートをシミュレートする、該プロセッサ要素の評価モード時に、該プロセッサ要素の出力は、前記シフトレジスタに結合され、前記マルチプレクサは該シフトレジスタを前記相互接続システムに結合する、請求項２に記載のシミュレーションプロセッサ。
【請求項７】
前記プロセッサ要素がどの論理ゲートもシミュレートしない、該プロセッサ要素の非動作モード時に、前記マルチプレクサは、該シフトレジスタを前記相互接続システムに結合する、請求項２に記載のシミュレーションプロセッサ。
【請求項８】
前記非動作モード時に、前記シフトレジスタがリフレッシュされる、請求項２に記載のシミュレーションプロセッサ。
【請求項９】
少なくとも２つの前記プロセッサユニットの各々は、
前記シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードするための、前記プロセッサ要素と関連付けられた局所メモリ
をさらに含んでいる、請求項１に記載のシミュレーションプロセッサ。
【請求項１０】
前記プロセッサ要素のロードモード時に、前記局所メモリは、前記シフトレジスタまたは該プロセッサ要素を通過せずに、前記相互接続システムに結合される、請求項９に記載のシミュレーションプロセッサ。
【請求項１１】
前記プロセッサ要素のロードモード時に、前記局所メモリは、前記相互接続システムに結合され、該プロセッサ要素は、前記少なくとも１つの論理ゲートをシミュレートする、請求項９に記載のシミュレーションプロセッサ。
【請求項１２】
前記ロードモード時に、前記プロセッサ要素の出力は、前記シフトレジスタに結合される、請求項１１に記載のシミュレーションプロセッサ。
【請求項１３】
記憶モード時に、前記プロセッサ要素の出力は、前記シフトレジスタを通過せずに前記局所メモリに結合される、請求項９に記載のシミュレーションプロセッサ。
【請求項１４】
記憶モード時に、前記プロセッサ要素は、前記少なくとも１つの論理ゲートをシミュレートし、前記プロセッサ要素の出力は、前記局所メモリに結合される、請求項９に記載のシミュレーションプロセッサ。
【請求項１５】
前記記憶モード時に、前記プロセッサ要素の出力は、前記相互接続システムにも結合される、請求項１４に記載のシミュレーションプロセッサ。
【請求項１６】
前記プロセッサ要素の前記モードに応じて、該プロセッサ要素の出力は、前記シフトレジスタおよび／または前記局所メモリに結合されるように構成可能である、請求項９に記載のシミュレーションプロセッサ。
【請求項１７】
前記プロセッサユニットは、
選択信号に応じて、前記プロセッサ要素の出力、または前記局所メモリの出力を選択するためのマルチプレクサ
をさらに含んでいる、請求項９に記載のシミュレーションプロセッサ。
【請求項１８】
前記少なくとも２つのプロセッサユニットの各々は、
前記シフトレジスタと前記相互接続システムとの間に結合された１つ以上のマルチプレクサであって、該マルチプレクサの各々は、選択信号に応じて、該シフトレジスタのエントリの１つを選択し、該選択されたエントリを該相互接続システムにさらに転送する、マルチプレクサと、
前記シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードするための、該プロセッサ要素に関連付けられた局所メモリであって、該マルチプレクサに対する選択信号のビットの少なくとも一部は、該局所メモリをアドレス指定するためにも使用される、局所メモリと
をさらに含んでいる、請求項１に記載のシミュレーションプロセッサ。
【請求項１９】
前記少なくとも２つのプロセッサユニットの各々は、選択信号に応じて、前記プロセッサ要素の出力を前記シフトレジスタに結合するか、または前記シフトレジスタをリフレッシュするためのマルチプレクサをさらに含む、請求項１に記載のシミュレーションプロセッサ。
【請求項２０】
前記少なくとも２つのプロセッサユニットの各々は、
前記プロセッサ要素に関連付けられた局所メモリであって、前記シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードするための局所メモリと、
第１選択信号に応じて、該プロセッサ要素の出力を前記シフトレジスタに対する入力として選択するか、または該シフトレジスタをリフレッシュする第１マルチプレクサと、
第２選択信号に応じて、該シフトレジスタのエントリのうちの１つを選択する第２マルチプレクサと、
第３選択信号に応じて、該シフトレジスタのエントリのうちの別の１つを選択する第３マルチプレクサと
をさらに含んでいる、請求項１に記載のシミュレーションプロセッサ。
【請求項２１】
前記少なくとも２つのプロセッサユニットの各々は、
第４選択信号に応じて、前記プロセッサ要素の出力、または前記局所メモリの出力を選択する第４マルチプレクサと、
第５選択信号に応じて、前記第２マルチプレクサの出力、または前記シフトレジスタの最後のエントリを選択する第５マルチプレクサと、
該第５選択信号に応じて、前記第３マルチプレクサの出力、または該第４マルチプレクサの出力を選択する第６マルチプレクサと
をさらに含んでいる、請求項２０に記載のシミュレーションプロセッサ。
【請求項２２】
前記プロセッサ要素が前記少なくとも１つの論理ゲートをシミュレートする、該プロセッサ要素の評価モード時に、
前記第１選択信号は、前記第１マルチプレクサに、該プロセッサ要素の出力を選択させ、
前記第５選択信号は、前記第５マルチプレクサに、前記第２マルチプレクサの出力を選択させ、
該第５選択信号は、前記第６マルチプレクサに、前記第３マルチプレクサの出力を選択させる、
請求項２１に記載のシミュレーションプロセッサ。
【請求項２３】
前記プロセッサ要素がシミュレーション動作を実行しない、該プロセッサ要素の非動作モード時に、
前記第１選択信号は、前記第１マルチプレクサに、前記シフトレジスタをリフレッシュさせ、
前記第５選択信号は、前記第５マルチプレクサに、前記第２マルチプレクサの出力を選択させ、
該第５選択信号は、前記第６マルチプレクサに、前記第３マルチプレクサの出力を選択させる、
請求項２１に記載のシミュレーションプロセッサ。
【請求項２４】
前記局所メモリの出力からのデータが前記シミュレーションプロセッサ内にロードされる、前記プロセッサ要素のロードモード時に、
前記第１選択信号は、前記第１マルチプレクサに、該プロセッサ要素の出力を選択させ、
前記第４選択信号は、前記第４マルチプレクサに、該局所メモリの出力を選択させ、
前記第５選択信号は、前記第５マルチプレクサに、前記シフトレジスタの最後のエントリを選択させ、
該第５選択信号は、前記第６マルチプレクサに、該第４マルチプレクサの出力を選択させる、
請求項２１に記載のシミュレーションプロセッサ。
【請求項２５】
前記プロセッサ要素の出力が前記局所メモリに入力される、該プロセッサ要素の記憶モード時に、
前記第１選択信号は、前記第１マルチプレクサに、前記シフトレジスタをリフレッシュさせ、
前記第４選択信号は、前記第４マルチプレクサに、前記プロセッサ要素の出力を選択させ、
前記第５選択信号は、前記第５マルチプレクサに、前記シフトレジスタの最後のエントリを選択させ、
該第５選択信号は、前記第６マルチプレクサに、前記第４マルチプレクサの出力を選択させる、
請求項２１に記載のシミュレーションプロセッサ。
【請求項２６】
ｎ個のプロセッサユニットの大多数は、
少なくとも１つの前記論理ゲートをシミュレートするように構成可能なプロセッサ要素と、
該プロセッサ要素に関連付けられ、該プロセッサ要素の動作時に中間値を記憶する複数のエントリを含むシフトレジスタであって、該シフトレジスタは、該プロセッサ要素の出力を受信するように結合されている、シフトレジスタと
を含んでいる、請求項１に記載のシミュレーションプロセッサ。
【請求項２７】
ｎ個のプロセッサユニットのすべては、
少なくとも１つの前記論理ゲートをシミュレートするように構成可能であるプロセッサ要素と、
該プロセッサ要素に関連付けられ、該プロセッサ要素の動作時に中間値を記憶する複数のエントリを含むシフトレジスタであって、該シフトレジスタは、該プロセッサ要素の出力を受信するように結合されている、シフトレジスタと
を含んでいる、請求項２６に記載のシミュレーションプロセッサ。
【請求項２８】
前記ｎ個のプロセッサユニットの大多数が同じである、請求項１に記載のシミュレーションプロセッサ。
【請求項２９】
前記ｎ個のプロセッサユニットのすべてが同じである、請求項２８に記載のシミュレーションプロセッサ。
【請求項３０】
前記シミュレーションプロセッサは、ホストコンピュータ内に差し込み可能な基板上に実装される、請求項１に記載のシミュレーションプロセッサ。
【請求項３１】
前記シミュレーションプロセッサは、前記ホストコンピュータのメインメモリに対する直接アクセスを有する、請求項３０に記載のシミュレーションプロセッサ。
【請求項３２】
前記相互接続システムがクロスバーを含む、請求項１に記載のシミュレーションプロセッサ。
【請求項３３】
論理計算を実行するためのＶＬＩＷプロセッサであって、
相互接続システムと、
該相互接続システムを介して互いに通信可能に結合される複数のプロセッサユニットと
を備えており、
少なくとも２つの該プロセッサユニットの各々は、
該論理計算の少なくとも一部分を実装するように構成可能なプロセッサ要素と、
該プロセッサ要素と関連付けられ、該プロセッサ要素の作動時に中間値を記憶する複数のエントリを含むシフトレジスタであって、該シフトレジスタは、該プロセッサ要素の出力を受信するように結合され、中間値を該相互接続システムに転送するようにさらに結合されている、シフトレジスタと
を含んでいる、ＶＬＩＷプロセッサ。
【請求項３４】
複数の論理動作を含む論理設計の論理シミュレーションを実行するためのシミュレーションプロセッサであって、該シミュレーションプロセッサは、
相互接続システムと、
該相互接続システムを介して互いに通信可能に結合される複数のプロセッサユニットと
を備えており、
少なくとも２つの該プロセッサユニットの各々は、
該論理動作の少なくとも１つをシミュレートするように構成可能なプロセッサ要素と、
該プロセッサ要素に関連付けられ、該プロセッサ要素の作動時に中間値を記憶する複数のエントリを備えるシフトレジスタであって、該シフトレジスタは、該プロセッサ要素の出力を受信するように結合される、シフトレジスタと、
該プロセッサ要素の出力と該相互接続システムとの間に結合される１つ以上の第１経路マルチプレクサであって、該第１経路マルチプレクサは、該シフトレジスタをバイパスして、該プロセッサ要素の出力を該相互接続システムに提供する経路を提供する、第１経路マルチプレクサと、
該シフトレジスタと該相互接続システムとの間に結合される１つ以上の第２経路マルチプレクサであって、該第２経路マルチプレクサの各々は、該シフトレジスタのエントリの１つを選択し、さらに、該選択されたエントリを該相互接続システムに転送する、第２経路マルチプレクサと
を含んでいる、シミュレーションプロセッサ。
【請求項３５】
前記プロセッサ要素が前記少なくとも１つの論理動作をシミュレートする、該プロセッサ要素の評価モード時に、プロセッサ要素の出力は、前記第１経路マルチプレクサに結合され、該シフトレジスタをバイパスする相互接続システムに提供され、少なくとも１つの前記第２経路マルチプレクサは、前記シフトレジスタを該相互接続システムに結合する、請求項３４に記載のシミュレーションプロセッサ。
【請求項３６】
前記プロセッサ要素が前記少なくとも１つの論理動作をシミュレートする、該プロセッサ要素の評価モード時に、該プロセッサ要素の出力は、前記第１経路マルチプレクサを介して前記相互接続システムに提供されず、少なくとも２つの前記第２経路マルチプレクサは、前記シフトレジスタを該相互接続システムに結合する、請求項３４に記載のシミュレーションプロセッサ。
【請求項３７】
前記少なくとも２つのプロセッサユニットの各々はさらに、前記プロセッサ要素に関連付けられたメモリを含んでおり、該メモリは、前記シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードし、記憶モード時に、該プロセッサ要素の出力は、該シフトレジスタを通過せずに、該メモリに結合され、該第１経路マルチプレクサの少なくとも１つは、該シフトレジスタのエントリの１つを受信して、該相互接続システムに提供するように結合される、請求項３４に記載のシミュレーションプロセッサ。
【請求項３８】
前記少なくとも２つのプロセッサユニットの各々はさらに、前記プロセッサ要素に関連付けられたメモリを含んでおり、該メモリは、前記シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードし、記憶モード時に、該プロセッサ要素の出力は、該メモリおよび前記シフトレジスタに結合され、少なくとも１つの前記第１経路マルチプレクサは、該シフトレジスタのエントリの１つを受信して該相互接続システムに提供する、請求項３４に記載のシミュレーションプロセッサ。
【請求項３９】
前記少なくとも２つのプロセッサユニットの各々はさらに、前記プロセッサに関連付けられたメモリを含んでおり、該メモリは、前記シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードし、該プロセッサ要素のロードモード時に、前記メモリの出力は、前記シフトレジスタまたは前記プロセッサ要素を通過せずに、前記相互接続システムに結合され、前記プロセッサ要素の出力は、前記第１経路マルチプレクサに結合され、前記シフトレジスタをバイパスする前記相互接続システムに提供される、請求項３４に記載のシミュレーションプロセッサ。
【請求項４０】
前記少なくとも２つのプロセッサユニットの各々はさらに、前記プロセッサに関連付けられたメモリを含んでおり、該メモリは、前記シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードし、該プロセッサ要素のロードモード時に、前記メモリの出力は、前記シフトレジスタまたは前記プロセッサ要素を通過せずに、前記相互接続システムに結合され、前記プロセッサ要素の出力は、前記第１経路マルチプレクサに結合されて、相互接続システムに提供され、さらにシフトレジスタに結合される、請求項３４に記載のシミュレーションプロセッサ。
【請求項４１】
前記プロセッサ要素がどの論理動作もシミュレートしない、該プロセッサ要素の非動作モード時に、該プロセッサ要素の出力は、前記第１経路マルチプレクサを介して前記シフトレジスタまたは前記相互接続システムに提供されず、少なくとも２つの前記第２経路マルチプレクサは、前記シフトレジスタを前記相互接続システムに結合する、請求項３４に記載のシミュレーションプロセッサ。
【請求項４２】
前記第２経路マルチプレクサは、第１マルチプレクサおよび第２マルチプレクサを含んでおり、該第１および第２マルチプレクサの各々は、前記シフトレジスタのエントリの１つを受信するように結合され、
該第１経路マルチプレクサは、第３マルチプレクサ、第４マルチプレクサ、および第５マルチプレクサを備え、該第３マルチプレクサは、該第２マルチプレクサの出力または前記プロセッサ要素の出力を選択するように結合され、該第４マルチプレクサは、前記プロセッサ要素の出力、または前記シフトレジスタの最初のエントリを選択するように結合され、前記第５マルチプレクサは、該第３マルチプレクサの出力、または該第５マルチプレクサの出力を選択するように結合される、請求項３４に記載のシミュレーションプロセッサ。
【請求項４３】
第６マルチプレクサであって、前記プロセッサ要素の出力、または該プロセッサ要素と関連するメモリの出力を選択するように結合され、前記シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードする第６マルチプレクサと、
第７マルチプレクサであって、前記第１マルチプレクサの出力、または該第６マルチプレクサの出力を選択するように結合される第７マルチプレクサと、
第８マルチプレクサであって、前記プロセッサ要素の出力、または前記シフトレジスタの最後のエントリを選択するように結合される第８マルチプレクサと
をさらに備える、請求項４２に記載のシミュレーションプロセッサ。
【請求項４４】
前記プロセッサ要素が、前記少なくとも１つの論理動作をシミュレートする、前記プロセッサ要素の評価モード時に、
前記第３マルチプレクサは、該プロセッサ要素の出力を選択し、
前記第５マルチプレクサは、該第３マルチプレクサの出力を選択し、
前記第７マルチプレクサは、前記第１マルチプレクサの出力を選択し、
前記第８マルチプレクサは、前記シフトレジスタの最後のエントリを選択する、
請求項４３に記載のシミュレーションプロセッサ。
【請求項４５】
前記プロセッサ要素が、前記少なくとも１つの論理動作をシミュレートする、前記プロセッサ要素の評価モード時に、
前記第３マルチプレクサは、前記第２マルチプレクサの出力を選択し、
前記第５マルチプレクサは、該第３マルチプレクサの出力を選択し、
前記第７マルチプレクサは、前記第１マルチプレクサの出力を選択し、
前記第８マルチプレクサは、該プロセッサ要素の出力を選択する、
請求項４３に記載のシミュレーションプロセッサ。
【請求項４６】
前記プロセッサ要素の記憶モード時に、
前記第４マルチプレクサは、前記シフトレジスタの最初のエントリを選択し、
前記第５マルチプレクサは、該第４マルチプレクサの出力を選択し、
前記第６マルチプレクサは、該プロセッサ要素の出力を選択し、
前記第７マルチプレクサは、該第６マルチプレクサの出力を選択し、
前記第８マルチプレクサは、該シフトレジスタの最後のエントリを選択する、
請求項４３に記載のシミュレーションプロセッサ。
【請求項４７】
前記プロセッサ要素の記憶モード時に、
前記第４マルチプレクサは、前記シフトレジスタの最初のエントリを選択し、
前記第５マルチプレクサは、該第４マルチプレクサの出力を選択し、
前記第６マルチプレクサは、該プロセッサ要素の出力を選択し、
前記第７マルチプレクサは、該第６マルチプレクサの出力を選択し、
前記第８マルチプレクサは、該プロセッサ要素の出力を選択する、
請求項４３に記載のシミュレーションプロセッサ。
【請求項４８】
前記プロセッサ要素のロードモード時に、
前記第４マルチプレクサは、該プロセッサ要素の出力を選択し、
前記第５マルチプレクサは、該第４マルチプレクサの出力を選択し、
前記第６マルチプレクサは、前記メモリの出力を選択し、
前記第７マルチプレクサは、該第６マルチプレクサの出力を選択し、
前記第８マルチプレクサは、前記シフトレジスタの最後のエントリを選択する、
請求項４３に記載のシミュレーションプロセッサ。
【請求項４９】
前記プロセッサ要素のロードモード時に、
前記第４マルチプレクサは、該プロセッサ要素の出力を選択し、
前記第５マルチプレクサは、該第４マルチプレクサの出力を選択し、
前記第６マルチプレクサは、前記メモリの出力を選択し、
前記第７マルチプレクサは、該第６マルチプレクサの出力を選択し、
前記第８マルチプレクサは、該プロセッサ要素の出力を選択する、
請求項４３に記載のシミュレーションプロセッサ。
【請求項５０】
前記プロセッサ要素がどの論理動作もシミュレートしない、該プロセッサ要素の非動作モード時に、
前記第３マルチプレクサは、前記第２マルチプレクサの出力を選択し、
前記第５マルチプレクサは、該第３マルチプレクサの出力を選択し、
前記第７マルチプレクサは、前記第１マルチプレクサの出力を選択し、
前記第８マルチプレクサは、前記シフトレジスタの最後のエントリを選択する、
請求項４３に記載のシミュレーションプロセッサ。
【請求項５１】
前記少なくとも２つのプロセッサユニットの各々は、前記プロセッサ要素の出力を前記シフトレジスタに結合するか、または該シフトレジスタをリフレッシュするマルチプレクサをさらに含んでいる、請求項３４に記載のシミュレーションプロセッサ。
【請求項５２】
前記シミュレーションプロセッサは、ホストコンピュータ内に差し込み可能な基板上に実装される、請求項３４に記載のシミュレーションプロセッサ。
【請求項５３】
前記シミュレーションプロセッサは、前記ホストコンピュータのメインメモリに対する直接アクセスを有する、請求項５２に記載のシミュレーションプロセッサ。
【請求項５４】
前記相互接続システムがクロスバーを含む、請求項３４に記載のシミュレーションプロセッサ。
【請求項５５】
論理動作を実行するためのＶＬＩＷプロセッサであって、
相互接続システムと、
該相互接続システムを介して互いに通信可能に結合される複数のプロセッサユニットと
を備えており、
少なくとも２つの該プロセッサユニットの各々は、
該論理動作の少なくとも一部分を実装するように構成可能なプロセッサ要素と、
該プロセッサ要素と関連し、該プロセッサ要素の作動時に中間値を記憶する複数のエントリを備えるシフトレジスタであって、該シフトレジスタが、該プロセッサ要素の出力を受信するように結合されるシフトレジスタと、
プロセッサ要素の出力と該相互接続システムとの間に結合された１つ以上の第１経路マルチプレクサであって、該第１経路マルチプレクサが、該シフトレジスタをバイパスして、該プロセッサ要素の出力を該相互接続システムに提供するための経路を提供する第１経路マルチプレクサと、
該シフトレジスタと該相互接続システムとの間に結合された１つ以上の第２経路マルチプレクサであって、該第２経路マルチプレクサの各々が、該シフトレジスタのエントリの１つを選択し、該選択されたエントリを該相互接続システムにさらに転送する第２経路マルチプレクサと
を含んでいる、ＶＬＩＷプロセッサ。
【請求項５６】
複数の論理動作を含む論理設計の論理シミュレーションを実行するためのシミュレーションプロセッサであって、該シミュレーションプロセッサは、
相互接続システムと、
該相互接続システムを介して互いに通信可能に結合された複数のプロセッサユニットと
を備えており、
少なくとも２つの該プロセッサユニットの各々は、
少なくとも１つの該論理動作をシミュレートするように構成可能なプロセッサ要素と、
該プロセッサ要素と関連し、該プロセッサ要素の作動時に中間値を記憶する複数のエントリを備えるシフトレジスタであって、該シフトレジスタが、該プロセッサ要素の出力を受信するように結合されるシフトレジスタと、
該シフトレジスタと該相互接続システムとの間に結合された複数のマルチプレクサであって、該マルチプレクサの各々が、該シフトレジスタのエントリの１つを選択し、該選択されたエントリを該相互接続システムにさらに転送し、該マルチプレクサの各々が、複数の選択信号の対応する１つに応じて、該シフトレジスタのエントリの該１つを選択するように構成され、少なくとも１つの選択信号が、該選択信号の他の信号に比べて異なる数のビットを有するマルチプレクサと
を含んでいる、シミュレーションプロセッサ。
【請求項５７】
前記複数のマルチプレクサは、それぞれ第１選択信号、第２選択信号、第３選択信号、および第４選択信号に応じて、前記シフトレジスタのエントリの１つを選択するように構成された第１マルチプレクサと、第２マルチプレクサと、第３マルチプレクサと、第４マルチプレクサとを備える、請求項５６に記載のシミュレーションプロセッサ。
【請求項５８】
前記第４選択信号がゼロビットを有し、前記第４マルチプレクサがアクティブではない、請求項５７に記載のシミュレーションプロセッサ。
【請求項５９】
前記第３選択信号は、前記第１、第２、および第４選択信号と比べて異なる数のビットを有し、第３マルチプレクサが、前記第１、第２、および第４マルチプレクサと比べて、前記シフトレジスタの異なる数のエントリにアクセスするように構成される、請求項５７に記載のシミュレーションプロセッサ。
【請求項６０】
複数の論理動作を含む論理設計の論理シミュレーションを実行するためのシミュレーションプロセッサであって、該シミュレーションプロセッサは、
相互接続システムと、
該相互接続システムを介して互いに通信可能に結合される複数のプロセッサユニットと
を備えており、
少なくとも２つの該プロセッサユニットの各々は、
少なくとも１つの該論理動作をシミュレートするように構成可能なプロセッサ要素と、
該プロセッサ要素と関連し、該プロセッサ要素の作動時に中間値を記憶する複数のエントリを備えるシフトレジスタであって、該シフトレジスタが、該プロセッサ要素の出力を受信するように結合されるシフトレジスタと、
該シフトレジスタと該相互接続システムとの間に結合された複数のマルチプレクサであって、該マルチプレクサの各々が、該シフトレジスタのエントリの１つを選択し、該選択されたエントリを該相互接続システムにさらに転送し、該マルチプレクサの各々が、該プロセッサ要素のモードを示す動作コードの関数である制御信号によって制御されるマルチプレクサと
を含んでいる、シミュレーションプロセッサ。
【請求項６１】
複数の論理動作を含む論理設計の論理シミュレーションを実行するためのシミュレーションプロセッサであって、該シミュレーションプロセッサは、
相互接続システムと、
該相互接続システムを介して互いに通信可能に結合されたｎ個のプロセッサユニットであって、ｎは、少なくとも２である整数である、プロセッサユニットと
を備えており、
少なくとも２つの該プロセッサユニットは、
少なくとも１つの該論理動作をシミュレートするように構成可能なプロセッサ要素と、
該プロセッサ要素と関連し、該プロセッサ要素の作動時に複数のエントリを備えるシフトレジスタであって、該シフトレジスタが、該プロセッサ要素の出力を受信するように結合され、ｖの深さを有するシフトレジスタと、
ｑ×２ｎビット〜ｑビットの入力マルチプレクサであって、該相互接続システムからｑビットの入力データを選択し、ｑが少なくとも２の整数である入力マルチプレクサと、
ｖ×ｊビット〜ｊビットの出力マルチプレクサであって、該シフトレジスタからｊビットの出力データを選択し、ｊが少なくとも２の整数である出力マルチプレクサと、
（ｊ＋２）ビット〜ｋビットのマルチプレクサであって、該シフトレジスタからのｊビット出力データ、該プロセッサ要素の出力データ、および該プロセッサ要素と関連するメモリからの出力データからｋビットの出力データを選択し、該プロセッサ要素のモードを示す動作コードの関数である制御信号に応じて、該シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードし、ｋが、少なくとも２の整数であり、（ｊ＋２）ビット〜ｋビットのマルチプレクサがさらに、該ｋビットの出力データを該相互接続システムにさらに転送するマルチプレクサと
を含んでいる、シミュレーションプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ＶＬＩＷ（超長命令語）プロセッサに関し、たとえば、論理シミュレーション用のハードウェア加速システムに使用されるシミュレーションプロセッサを含む。詳細には、本発明は、シフトレジスタを局所キャッシュとしてこのようなプロセッサに使用することに関する。
【背景技術】
【０００２】
論理設計のシミュレーションは、現代の半導体チップの論理設計に一般に見られる多数のゲートおよび動作、並びに高速動作により、高処理速度および多数の動作を要する。論理シミュレーションの１つの方法は、論理が、汎用ハードウェア上で実行されるコンピュータソフトウェアによってシミュレートされるソフトウェアベースの論理シミュレーション（つまり、ソフトウェアシミュレーション）である。残念ながら、ソフトウェアシミュレータは、一般に非常に低速である。論理シミュレーションのもう１つの方法は、半導体チップの論理が、エミュレータ内のハードウェア回路に専用的にマッピングされ、そして、ハードウェア回路がシミュレーションを実行するハードウェアベースの論理シミュレーション（つまり、ハードウェアエミュレータ）である。残念ながら、エミュレータは、一般に、エミュレータ内のハードウェア回路の数は、シミュレートされた論理設計のサイズに応じて増加するため、高額のコストを要する。
【０００３】
論理シミュレーションのためのさらにもう１つの方法は、ハードウェア加速シミュレーションである。ハードウェア加速シミュレーションは、一般に、論理設計をエミュレートあるいはシミュレートするように構成可能なプロセッサ要素を備える特殊なハードウェアシミュレーションシステムを使用する。コンパイラは、一般に、論理設計（たとえば、ネットリストまたはＲＴＬ（レジスタ転送言語）の形式を、論理設計をシミュレートするためにプロセッサ要素にロードされる命令を含むプログラムへと変換するように設けられる。
【０００４】
ハードウェア加速シミュレーションは、論理設計のサイズに対して比例的に倍率変更する必要はなく、なぜなら、論理設計を比較的小部分に分散させ、次に論理設計のこれらの部分をシミュレーションプロセッサにロードするために、様々な技術が利用されるからである。したがって、ハードウェア加速シミュレータは、一般に、ハードウェアエミュレータと比べて著しく安価である。さらに、ハードウェア加速シミュレータは、一般に、シミュレーションプロセッサによって生じるハードウェア加速により、ソフトウェアシミュレータより高速である。
【０００５】
しかし、ハードウェア加速シミュレータは、通常、命令をシミュレーションプロセッサ上にロードして実行する必要があり、これらの命令をロードするためのデータ経路は性能ボトルネックである。たとえば、シミュレーションプロセッサは、各々が、論理シミュレーション時に生成された中間値を記憶するための局所キャッシュとして、アドレス可能なレジスタを備える多数のプロセッサ要素を備えることが可能である。レジスタは、中間値が記憶される特定のメモリセルの位置を決定するための入力アドレス信号を必要とする。この入力アドレス信号は、一般に、プロセッサ要素に送信される命令の一部として含まれ、命令の長さを著しく増加させ、命令帯域ボトルネックを悪化させる可能性がある。
【０００６】
たとえば、２Ｎ  メモリセルを有する局所キャッシュレジスタから１つのメモリセルから選択するために（つまり、レジスタの「深さ」が２Ｎ、たとえば、「深さ」は、Ｎ＝８の場合は２５６）、少なくともＮビットの入力アドレス信号が必要である。これらのビットが命令の一部として含まれている場合、命令の長さは、各々のプロセッサユニットに関して少なくともＮビット増加する。このアーキテクチャが、プロセッサユニットごとに（非共用局所キャッシュ）入手可能であると仮定すると、シミュレーションプロセッサがｎ個のプロセッサ要素を含む場合、合計ｎ×Ｎビットが命令語の全体のサイズに追加される（たとえば、ｎ＝１２８およびＮ＝８の場合、これは、さらに１０２４ビットになる）。ハードウェア側では、レジスタがアドレス可能であることを可能にするため、追加の回路が必要になる。その結果、シミュレーションプロセッサのコスト、サイズ、および複雑さが増すことになる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、様々なタイプの局所キャッシュメモリを使用し、シミュレーションプロセッサによって使用される命令のビットが少なくて済むシミュレーションプロセッサに対する需要がある。また、追加の回路構成、たとえば、シミュレーションプロセッサのレジスタのアドレス可能性をサポートするための入力マルチプレクサなどの必要性をなくすか、あるいは少なくとも減少させるシミュレーションプロセッサに対する需要が存在する。
【課題を解決するための手段】
【０００８】
（発明の概要）
本発明は、論理動作の論理シミュレーションを実行するシミュレーションプロセッサを提供し、論理シミュレーション時に、このシミュレーションプロセッサによって生成された中間値がシフトレジスタ内に記憶される。このシミュレーションプロセッサは、複数のプロセッサユニット、およびプロセッサユニットを互いに通信可能に結合する相互接続システム（たとえば、クロスバー）を備える。アドレス可能なレジスタと対照的に、シフトレジスタを局所キャッシュとして使用すると、命令長を減少させ、シミュレーションプロセッサのハードウェアの設計を単純化する。
【０００９】
各々のプロセッサユニットは、少なくとも１つの論理動作をシミュレートするように構成可能なプロセッサ要素と、プロセッサ要素に関連付けられ、プロセッサ要素の作動時に中間値を記憶する複数のエントリを含むシフトレジスタとを備える。シフトレジスタは、プロセッサ要素の出力を受信するように結合される。
【００１０】
各々のプロセッサユニットは、選択信号に応じてシフトレジスタのエントリを選択する任意の数のマルチプレクサを任意に備えて良い。選択されたエントリは、次に、様々なロケーション、たとえば、相互接続システムを介して他のプロセッサユニットの入力に経路指定される。各々のプロセッサユニットは、シフトレジスタからのデータを記憶し、データをシフトレジスタにロードする、ある意味ではシフトレジスタに対するオーバフローメモリとして作用するように、シフトレジスタに関連する局所メモリを任意に備える。
【００１１】
本発明の様々な実施態様では、各々のプロセッサユニットは、以下の１つ以上をさらに備える：第１選択信号に応じて、プロセッサ要素の出力、またはシフトレジスタの最後のエントリをシフトレジスタに対する入力として選択する第１マルチプレクサ、第２選択信号に応じて、シフトレジスタのエントリの１つを選択する第２マルチプレクサ、第３選択信号に応じて、もう１つのシフトレジスタのエントリを選択する第３マルチプレクサ、第４選択信号に応じて、プロセッサ要素の出力、または局所メモリの出力を選択する第４マルチプレクサ、第５選択信号に応じて、第２マルチプレクサの出力、またはシフトレジスタの最後のエントリを選択する第５マルチプレクサ、出力選択信号を選択する第６マルチプレクサ。
【００１２】
本発明の第２実施態様では、各々のプロセッサユニットは、第１選択信号に応じて、シフトレジスタの中間エントリ、またはシフトレジスタの最後のエントリを選択する第１マルチプレクサと、第２選択信号に応じて、プロセッサ要素の出力、または第１マルチプレクサの出力をシフトレジスタに対する入力として選択する第２マルチプレクサとをさらに備える。プロセッサユニットは、プロセッサ要素からのデータを記憶し、データをプロセッサ要素にロードするためのシフトレジスタに関連する局所メモリと、第３選択信号に応じて、シフトレジスタのエントリの１つを選択する第３マルチプレクサと、第３選択信号より１つ多くのビットを有する第４選択信号に応じて、シフトレジスタのもう１つのエントリを選択する第４マルチプレクサと、第５選択信号に応じて、プロセッサ要素の出力、または局所メモリの出力を選択する第５マルチプレクサと、第１選択信号に応じて、第３マルチプレクサの出力、または第１マルチプレクサの出力を選択する第６マルチプレクサと、第１選択信号に応じて、第４マルチプレクサの出力、または第５マルチプレクサの出力を選択する第７マルチプレクサをさらに備える。
【００１３】
本発明のシミュレーションプロセッサの場合、シフトレジスタは入力アドレス信号を必要としないため、命令長を減少させるという利点を有する。また、入力マルチプレクサは、必ずしもシフトレジスタのセルを選択する必要はない。本発明のシミュレーションプロセスは、プロセッサ要素の記憶モードおよびロードモードが、評価モードに対して非ブロッキングであるように、シフトレジスタが局所メモリと相互接続されるという追加の利点を有する。つまり、記憶モードおよびロードモードは、評価モードと同時に実行される。
【００１４】
本発明の第３実施態様では、各々のプロセッサユニットは、プロセッサ要素の出力と相互接続システムとの間に結合された１つ以上の第１経路マルチプレクサであって、この第１経路マルチプレクサが、シフトレジスタをバイパスして、プロセッサ要素の出力を相互接続システムに直接提供する第１経路マルチプレクサと、シフトレジスタと相互接続システムとの間に結合された１つ以上の第２経路マルチプレクサであって、各々の第２経路マルチプレクサが、シフトレジスタのエントリの１つを選択し、さらに、シフトレジスタをバイパスし、相互接続システムに直接供給されるようにプロセッサ要素の出力を転送する第２経路マルチプレクサをさらに備える。これは、シミュレーションプロセッサが、１つ少ないサイクルでシミュレーションを実行することを可能にし、なぜなら、シフトレジスタを評価するための１つのサイクルは、シフトレジスタがバイパスされる時に排除することができるからである。
【００１５】
本発明のその他の態様としては、上記のデバイスに対応するシステム、これらのデバイスおよびシステムの用途、並びに上記のすべてに対応する方法が挙げられる。本発明のもう１つの態様は、論理シミュレーション以外の目的は別として、シフトレジスタを局所キャッシュとして使用するＶＬＩＷプロセッサを含む。
【発明を実施するための最良の形態】
【００１６】
本発明の教示は、添付の図面に関連して以下の詳細な説明を考察することによって、容易に理解することができる。類似の参照符号は、添付の図面中で類似の要素に使用される。
【００１７】
これらの図は、単に説明するために本発明の実施態様を表す。当業者は、本明細書に記載されている本発明の原理から逸脱することなく、本明細書に図示する構造および方法の別の実施態様を使用することができることを、以下の説明から容易に認識するであろう。
【００１８】
図１は、本発明の一実施態様によるハードウェア加速論理シミュレーションシステムを示すブロック図である。論理シミュレーションシステムは、専用ハードウェア（ＨＷ）シミュレータ１３０、コンパイラ１０８、およびＡＰＩ（アプリケーションプログラミングインターフェース）１１６を備える。コンピュータ１１０は、ＣＰＵ１１４およびメインメモリ１１２を備える。ＡＰＩ１１６は、ホストコンピュータ１１０がシミュレーションプロセッサ１００を制御するソフトウェアインターフェースである。専用ＨＷシミュレータ１３０は、プログラムメモリ１２１、記憶メモリ１２２、およびシミュレーションプロセッサ１００を含み、このシミュレーションプロセッサ１００は、プロセッサ要素１０２、埋め込み局所メモリ１０４、ハードウェア（ＨＷ）メモリインターフェースＡ１４２、およびハードウェア（ＨＷ）メモリインターフェースＢ１４４を含む。
【００１９】
図１に示すシステムは、以下のとおり動作する。コンパイラ１０８は、ユーザチップまたは論理設計の記述１０６、たとえばＲＴＬ（レジスタ転送言語）記述、または論理設計のネットリスト記述を受信する。記述１０６は、一般に、論理設計を有向グラフとして表現し、グラフのノードは、設計図ではハードウェアブロックに対応する。コンパイラ１０８は、論理設計の記述１０６をプログラム１０９として編集し、論理設計１０６をプロセッサ要素１０２にマッピングし、論理設計１０６をシミュレートする。プログラム１０９は、チップの設計１０６自体を表現するほかに、論理設計１０６をシミュレートするテスト環境（テストベンチ）も備える。実例のコンパイラ１０８のその他の説明は、本願と図面が対応している２００３年６月５日に発行された米国特許出願公開第２００３／０１  ０５６  １７号「Ｈａｒｄｗａｒｅ  ａｃｃｅｌｅｒａｔｉｏｎ  ｓｙｓｔｅｍ  ｆｏｒ  ｌｏｇｉｃ  ｓｉｍｕｌａｔｉｏｎ」を参照。プログラム１０９の命令は、メインメモリ１１２内に記憶される。
【００２０】
シミュレーションプロセッサ１００は、論理設計１０６の論理ゲート、並びにプロセッサ要素１０２の命令およびデータを記憶するための局所メモリ１０４をシミュレートするための複数のプロセッサ要素１０２を備える。一実施態様では、ＨＷシミュレータ１３０は、ＰＣＩ（周辺構成要素相互接続）およびＤＭＡ（直接メモリアクセス）コントローラを含むＦＰＧＡ（フィールドプログラマブルゲートアレイ）を使用して、一般的なＰＣＩボード上に実装され、ＨＷシミュレータ１３０は、必然的に汎用計算システム１１０に接続される。シミュレーションプロセッサ１００は、ＨＷシミュレータ１３０の一部分を形成する。したがって、シミュレーションプロセッサ１００は、ホストコンピュータ１１０のメインメモリ１１２に対する直接アクセスを有し、その動作は、ＡＰＩ１１６を介してホストコンピュータ１１０によって制御される。ホストコンピュータ１１０は、ＨＷシミュレータ１３０上のメインメモリ１１２とメモリ１２１、１２２との間の直接ＤＭＡ転送を指示することが可能だが、メインメモリ１１２とメモリ１２２との間のＤＭＡは任意である。
【００２１】
ホストコンピュータ１１０は、ユーザが指定するシミュレーションベクトル（図示しない）、およびコンパイラ１０８が生成したプログラム１０９を入力として取り、シミュレーションプロセッサ１００に対するボードレベルの命令１１８を生成する。シミュレーションベクトル（図示しない）は、シミュレートされるネットリスト１０６に対する入力の値を含む。ボードレベルの命令１１８は、メインメモリ１１２からＤＭＡによって、ＨＷシミュレータ１３０のメモリ１２１に転送される。メモリ１２１は、メインメモリ１１２に転送するシミュレーションの結果１２０も記憶する。メモリ１２２は、ユーザメモリデータを記憶し、あるいは（任意に）シミュレーションベクトル（図示しない）、または結果１２０を記憶する。メモリインターフェース１４２、１４４は、それぞれメモリ１２１、１２２にアクセスするためのインターフェースをプロセッサ要素１０２に提供する。
【００２２】
プロセッサ要素１０２は命令１１８を実行し、ある時点で、やはりＤＭＡによってシミュレーションの結果１２０をコンピュータ１１０に返す。中間の結果は、ボード上に留まり、後続の命令によって使用される。すべての命令１１８の実行は、１つのシミュレーションベクトルに対する全体のネットリスト１０６をシミュレートする。図１に示すハードウェア加速シミュレーションの動作に関するさらに詳細な説明は、２００３年６月５日に発行された米国特許出願公開第２００３／０１０５６１７号に記載されており、この特許出願は、引用することにより本明細書に全体的に援用する。
【００２３】
図２は、本発明の一実施態様によるハードウェア加速論理シミュレーションシステム内のシミュレーションプロセッサ１００を示すブロック図である。シミュレーションプロセッサ１００は、相互接続システム１０１を介して互いに通信するｎ個のプロセッサユニット１０３（プロセッサユニット１、プロセッサユニット２、・・・、プロセッサユニットｎ）を含む。
【００２４】
この実施例では、相互接続システムは、非ブロッキングクロスバーである。たとえば、各々のプロセッサユニットは、クロスバーから２つの入力を取り上げることができ、ｎ個のプロセッサユニットの場合、２ｎ個の入力信号が利用可能であり、入力信号は、２ｎ個の信号（スラッシュおよび記号「２ｎ」を含む受信側矢印によって示される）から選択可能でなければならない。各々のプロセッサユニットは、クロスバーに対する２つの出力（スラッシュおよび記号「１」を含む送信側矢印により示される）も生成する必要がある。ｎ個のプロセッサユニットの場合、これは、２ｎ個の出力信号を生成する。したがって、クロスバーは、２ｎ個（プロセッサユニットからの出力）×２ｎ個（プロセッサユニットへの入力）のクロスバーであり、各々のプロセッサユニット１０３の各々の入力が、何れかのプロセッサユニット１０３の何れかの出力に結合することを可能にする。このようにして、１つのプロセッサユニットによって計算される中間値は、他の何れかのプロセッサユニットにより、計算の際に入力として利用することが可能である。各々が２個の入力を有するｎ個のプロセッサユニットから成るシミュレーションプロセッサの場合、非ブロッキングアーキテクチャのクロスバーにおいて、２ｎ個の信号が選択可能でなければならない。各々の処理ユニットが同じである場合、これらの処理ユニットは、２つの変数をクロスバーに提供する。これは、２ｎ個×２ｎ個のクロスバーを生じる。ブロッキングアーキテクチャ、不均質なアーキテクチャ、最適化アーキテクチャ（特定の設計スタイルの場合）、または共用アーキテクチャ（プロセッサユニットはアドレスビットを共用するか、あるいはクロスバー内への入力もしくは出力ラインを共用する）などは、２ｎ個×２ｎ個のクロスバーに従う必要はないと思われる。したがって、クロスバーの多くのその他の組合せも可能である。これは、２ｎ個×２ｎ個のクロスバーを説明しているが、プロセスユニット内のプロセッサ要素（ＰＥ）は、３つ以上の入力（および出力）に拡大適用され、この場合、Ｍｎ個×Ｍｎ個のクロスバーが使用され、ここでＭは、各々のＰＥ上の入力（および出力）の数、並びにｎはＰＥの数である。
【００２５】
図３および４を参照するとさらに詳細に分かるとおり、各々のプロセッサユニット１０３は、プロセッサ要素（ＰＥ）、シフトレジスタ、および局所メモリ１０４の対応部分をそのメモリとして備える。したがって、各々のプロセッサユニット１０３は、論理設計１０６の少なくとも１つの論理ゲートをシミュレートし、中間または最終シミュレーション値をシミュレーション時に記憶するように構成することができる。
【００２６】
図３は、本発明の第１実施態様によるハードウェア加速論理シミュレーションシステム内のシミュレーションプロセッサ１００の１つのプロセッサユニット１０３を示す回路図である。各々のプロセッサユニット１０３は、３０４、３０６、３１０、３１２、３１４、３１６、３２０、３２４、およびフリップフロップ３１８、３２２を備える。プロセッサユニット１０３は、命令１１８によって制御される（図３の３８２に示す）。命令３８２は、この実施例ではフィールドＰ０、Ｐ１、Ｂｏｏｌｅａｎ  Ｆｕｎｃ、ＥＮ、ＸＢ０、ＸＢ１、およびＸｔｒａ  Ｍｅｍを有する。各々のフィールドＸには、Ｘビットの長さを持たせる。次に、命令長は、この実施例ではＰ０、Ｐ１、Ｂｏｏｌｅａｎ  Ｆｕｎｃ、ＥＮ、ＸＢ０、ＸＢ１、およびＸｔｒａ  Ｍｅｍの和である。
【００２７】
クロスバー１０１は、プロセッサユニット１０３を相互接続する。クロスバー１０１は２ｎ個のバスラインを有し、シミュレーションプロセッサ１００内のＰＥ３０２またはプロセッサユニット１０３の数がｎ個である場合、各々のプロセッサユニットは２つの入力、およびクロスバーに対する２つの出力を有する。２状態の実装の場合、ｎは、２進（０または１）のｎ個の信号を表す。４状態の実装の場合、ｎは、４状態コード化（０、１、ＸもしくはＺ）または二重ビットコード化されているｎ個の信号（たとえば、００、０１、１０、１１）を表す。この場合、実際には、接続されている２ｎ個の電気（２進）信号が存在しているが、ｎはｎ個の信号も意味する。同様に、３ビット符号化（８状態）の場合は、３ｎ個の電気信号が存在し、以下同様である。
【００２８】
ＰＥ３０２は、構成可能なＡＬＵ（算術論理演算ユニット）であり、２つ以下の入力（たとえば、ＮＯＴ、ＡＮＤ、ＮＡＮＤ、ＯＲ、ＮＯＲ、ＸＯＲ、定数１、定数０など）を含む任意の論理ゲートをシミュレートするように構成することができる。ＰＥ３０２がシミュレートする論理ゲートのタイプは、特定タイプの論理ゲートをシミュレートするようにＰＥ３０２をプログラムするＢｏｏｌｅａｎ  Ｆｕｎｃによって決まる。Ｂｏｏｌｅａｎ  Ｆｕｎｃ内のビット数は、部分的には、ＰＥ３０２がシミュレートする様々なタイプの一意の論理ゲートの数によって決まる。たとえば、各々の入力が２状態論理（つまり、０または１の単一ビット）であり、出力も２状態である場合、対応する真理値表は２×２真理値表（各々の入力に可能な値が２つ）であり、真理値表に２×２＝４の可能なエントリが存在する。真理値表の各々のエントリは、２つの可能な値（各々の出力に２つの可能な値）の１つを取ることができる。したがって、合計２∧４＝１６の可能な真理値表が存在し、実装可能である。すべての真理値表が実装され、真理値表がすべて一意であり、Ｂｏｏｌｅａｎ  Ｆｕｎｃが直接的にコード化される場合、Ｂｏｏｌｅａｎ  Ｆｕｎｃは、どの真理値表（つまり論理関数）を実装するかを指定するために４ビットを要するであろう。同様に、数Ｂｏｏｌｅａｎ  Ｆｕｎｃは、この実施例では４ビットに相当するであろう。回路構成が変更された４状態論理に５ビットのみのＢｏｏｌｅａｎ  Ｆｕｎｃを有することも可能であることに注意する。
【００２９】
マルチプレクサ３０４は、Ｐ０ビットを有する選択信号Ｐ０、およびＰ１ビットを有するマルチプレクサの選択信号Ｐ１に応じて、クロスバー１０１の２ｎ個のバスラインの１つから入力データを選択する。ＰＥ３０２は、マルチプレクサ３０４、３０６によって演算数として選択された入力データを受信し、Ｂｏｏｌｅａｎ  Ｆｕｎｃ信号によって指示された構成論理関数に従ってシミュレーションを実行する。２つの入力を有するＥ３０２の選択は１つの実装であり、ＰＥが３つ以上の入力を有することも可能である。
【００３０】
図３の実施例では、すべてのプロセッサユニット１０３の各々のマルチプレクサ３０４、３０６は、２ｎ個のバスラインの何れかを選択することができる。クロスバー１０１は完全に非ブロッキングであり、包括的に接続される。これは、すべての実装に必要なわけではない。たとえば、プロセッサユニット１０３のいくつかは、比較的限られた接続性を有するように設計され、いくつかのみで全部ではないプロセッサユニット１０３、あるいは他のプロセッサユニット１０３のいくつかのみで全部ではない出力ラインに対する接続が可能である。また、同じプロセッサユニットに対する様々な入力ラインは、様々な接続性を有する。たとえば、マルチプレクサ３０４は、２ｎ個のどのバスラインに対しても完全な接続性を有するように設計されるが、マルチプレクサ３０６は、比較的限られた接続性を有するように設計される。
【００３１】
さらに、選択信号Ｐ０およびＰ１は、この場合は別個の信号として表されており、一方はマルチプレクサ３０４に対する入力を選択し、他方はマルチプレクサ３０６に対する入力を選択する。これも、必須ではない。入力を選択するための情報は、１つのフィールド（Ｐ０１と呼ばれる）に結合されるか、または他のフィールドとも結合される。たとえば、これは、命令のより効率的なコード化を可能にし、その結果命令長を短縮することを可能にする。
【００３２】
シフトレジスタ３０８は、ｙの深さを有し（ｙメモリセルを有する）、シミュレーションプロセッサ１００内のＰＥ３０２が、論理設計１０６の多数のゲートを複数サイクルでシミュレートする際に生成された中間値を記憶する。一般的なレジスタ以外のシフトレジスタ３０８を使用すると、シフトレジスタ３０８の特定のメモリセルを選択するために、入力アドレス信号が不要であるという利点がある。図３は、深さｙの１つのシフトレジスタ３０８を示しているが、別の実施態様は複数のシフトレジスタを使用することが可能である。１つの方法では、１つのシフトレジスタ３０８は、たとえば、出力側に比較的多くのメモリアクセスが可能であるように再生される。重複するシフトレジスタは、異なる深さを有する場合がある。たとえば、下半分（新鮮ではないデータを記憶する）よりも、上半分（比較的新鮮なデータを記憶する）における活動性が大きい場合、シフトレジスタの上半分のみが再生される。
【００３３】
図３に示されている実施態様の場合、マルチプレクサ３１０は、ＰＥ３０２の出力３７１〜３７３、またはシフトレジスタ３０８の最後のエントリ３６３〜３６４を信号ＥＮのビットｅｎ０に応じて選択し、シフトレジスタ３０８の最初のエントリは、マルチプレクサ３０８の出力３５０を受信する。出力３７１の選択は、ＰＥ３０２の出力をシフトレジスタ３０８に転送することを可能にする。最後のエントリ３６３の選択は、シフトレジスタ３０８の最後のエントリ３６３が、シフトレジスタ３０８の終わりから落ちて失われるのではなく、シフトレジスタ３０８の上部に再循環することを可能にする。このようにして、シフトレジスタ３０８は、リフレッシュされる。
【００３４】
マルチプレクサ３１０は任意であり、シフトレジスタ３０８は、他の実施態様のＰＥ３０２から直接入力データを受信することができる。さらに、図３では、シフトレジスタ３０８の最初のエントリは、マルチプレクサ３１０を通してＰＥ３０２の出力３７１〜３７３を受信するように結合されているが、図３の回路は、シフトレジスタのエントリ３０８の１つが、ＰＥ３０２の出力３７１〜３７３を直接、またはマルチプレクサ３１０を通して受信できるように変更しても良い。シフトレジスタ３０８および／またはその他のシフトレジスタに対するエントリ点は、複数存在することも可能である。
【００３５】
シフトレジスタ３０８の出力側では、マルチプレクサ３１２は、ＸＢ０ビットをシフトレジスタ３０８の１つの出力３５２として選択信号ＸＢ０に応じて、シフトレジスタ３０８のｙメモリセルの１つを選択する。同様に、マルチプレクサ３１４は、シフトレジスタ３０８のもう１つの出力３５８としてＸＢ１ビットを有する選択信号ＸＢ１に応じて、シフトレジスタ３０８のｙメモリセルの１つを選択する。マルチプレクサ３１６および３２０の状態に応じて、選択された出力はクロスバー１０１に経路指定して、プロセッサユニット１０３のデータ入力によって消費することが可能である。
【００３６】
この特定の実施例は、各々がシフトレジスタ内のどこかから選択することが可能な２つのシフトレジスタ出力３５２および３５８を示す。別の実施態様は、異なる数の出力、シフトレジスタに対する異なるアクセス（図４で説明する）、および異なる経路指定を使用することが可能である。たとえば、シフトレジスタ３０８からのすべての出力が、クロスバー１０１に経路指定可能である必要はない。出力によっては、プロセッサユニット１０３内において内部で限定的に経路指定される。もう１つの実施例では、図３の実施態様は１つのシフトレジスタ３０８を使用し、シフトレジスタ３０８の出力は、２つのマルチプレクサ３１２，３１４によってアクセスされるが、２つの別個のシフトレジスタを有し、２つの別個のマルチプレクサの各々が、２つの別個のマルチプレクサの一方の出力にアクセスすることも可能である。このような場合、２つのシフトレジスタ内に記憶されたデータの内容は、同じであるように複製されるであろう。また、２つの別個のマルチプレクサを制御する信号は、異なる長さを有する場合がある。
【００３７】
メモリ３２６は、データを記憶するための入力ポートＤＩおよび出力ポートＤＯを有し、シフトレジスタ３０８が、そのサイズが限られていることによって溢れることを可能にする。つまり、シフトレジスタ３０８内のデータは、メモリ３２６からロードされるか、および／またはメモリ３２６内に記憶される。記憶される中間信号値の数は、メモリ３２６の全体のサイズによって制限される。メモリ３２６は比較的安価で迅速であるため、このスキームは、論理シミュレーションに対する拡張可能、迅速かつ安価な解決方法を提供する。
【００３８】
メモリ３２６は、ＸＢ０、ＸＢ１およびＸｔｒａ  Ｍｅｍから成るアドレス信号３７７によってアドレス指定される。信号ＸＢ０およびＸＢ１は、それぞれマルチプレクサ３１２および３１４に対する選択信号としても使用された。したがって、これらのビットは、命令の他の部分によって異なる意味を有する。これらのビットは、１つには全体の命令３８２の一部として、１つには３８０の一部として図３に２通り示されており、メモリ３２６をアドレス指定するために使用されることを示している。
【００３９】
入力ポートＤＩは、ＰＥ３０２の出力３７１〜３７２〜３７４を受信するように結合される。シフトレジスタ３０８に転送されるＰＥ３０２によって計算される中間値は、ｙシフトの後、シフトレジスタ３０８の端部から脱落する（再循環されないと仮定した場合）。したがって、最終的に使用されるが、ｙシフトが生じる前には使用されない中間値の実行可能な代案は、ＰＥ３０２を直接メモリ３２６に転送し、シフトレジスタ３０８を全体的にバイパスすることである（しかし、この値は、経路３７１〜３７２〜３７６〜３６８〜３６２を介してクロスバー１０１に同時に利用可能である）。別個のデータ経路では、シフトレジスタ３０８に転送される値は、その後、値をシフトレジスタ３０８からクロスバー１０１に出力し（データ経路３５２〜３５４〜３５６または３５８〜３６０〜３６２を介して）、次に、ＰＥ３０２を介して、値をメモリ３２６に再転送することによってメモリ３２６に移動される。シフトレジスタ３０８の端部から脱落する値は、類似する経路３６３〜３７０〜３５６によってメモリ３２６に移動させることができる。
【００４０】
出力ポートＤＯは、マルチプレクサ３２４に結合される。マルチプレクサ３２４は、信号ＥＮのビットｅｎ０の補数（〜ｅｎ０）に応じて、ＰＥ３０２の出力３７１〜３７２〜３７６、またはメモリ３２６の出力３６６を出力３６８として選択する。この実施例では、信号ＥＮは、２つのビット：ｅｎ０およびｅｎ１を含む。マルチプレクサ３２０は、信号ＥＮの別のビットｅｎ１に応じて、マルチプレクサ３２４の出力３６８、またはマルチプレクサ３１４の出力３６０を選択する。マルチプレクサ３１６は、信号ＥＮのもう１つのビットｅｎ１に応じて、マルチプレクサ３１２の出力３５４、またはシフトレジスタ３０８の最後のエントリ３６３、３７０を選択する。フリップフロップ３１８、３２２は、クロスバー１０１に対する出力のために、それぞれマルチプレクサ３１６、３２０の出力３５６、３６２をバッファする。
【００４１】
図３に示す命令３８２を参照すると、このフィールドは、通常、以下のように分割することができる。Ｐ０およびＰ１は、ＰＥ３０２に対するクロスバーからの入力を判断する。ＥＮは、主に、以下に詳細に説明されている２ビットオプコードである。Ｂｏｏｌｅａｎ  Ｆｕｎｃは、ＰＥ３０２によって実装される論理ゲートを決定する。ＸＢ０、ＸＢ１およびＸｔｒａ  Ｍｅｍは、クロスバー１０１に対するプロセッサユニットの出力を決定するか、またはメモリ３２６のメモリアドレス３７７を決定する。Ｘｔｒａ  Ｍｅｍは必須のビットではなく、Ｘｔｒａ  Ｍｅｍ＝０も有効な条件である。
【００４２】
一実施態様では、４つの異なる動作モード（評価、非動作モード、記憶、およびロード）は、以下の表１に示すとおり、信号ＥＮのビットｅｎ１およびｅｎ０に従って、プロセッサユニット１０３内でトリガすることができる：
【００４３】
【表１】
2009514070.tif 000003
図３Ａ〜３Ｄは、これらのモードの各々を示す変更回路図である。これらのダイアグラムでは、選択されないデータ経路は、このモード時のプロセッサユニットの動作をより明確に示すために削除されている。
【００４４】
図３Ａは、シミュレーションプロセッサ１００の評価モード（ｅｎ１＝０およびｅｎ０＝０）を示す。このモードの主な機能は、ＰＥ３０２が論理ゲートをシミュレートすることである（つまり、２つの入力を受信し、２つの入力に関して特定の論理関数を実行して、出力を生成する）。図３Ａに示すマルチプレクサの選択肢は、論理ゲートの評価と関連して使用されると思われるデータ経路を提供するために選択される。特に、（ｉ）ビットｅｎ０＝０で、マルチプレクサ３１０はＰＥ３０２の出力３７１〜３７３を選択し、（ｉｉ）ビットｅｎ１＝０で、マルチプレクサ３１６は、マルチプレクサ３１２の出力３５４を選択し、またマルチプレクサ３２０は、マルチプレクサ３１４の出力３６０を選択し、（ｉｉｉ）ＸＢ０およびＸＢ１は、メモリ３２６にアドレス指定するのではなく、マルチプレクサ３１２および３１４に対する入力として使用される。
【００４５】
したがって、評価モード時、ＰＥ３０２は、マルチプレクサ３０４および３０６によって出力される入力演算数に基づいて論理ゲートをシミュレートし、他のプロセッサユニット１０３による使用のために最終的にクロスバー１０１に出力される中間値をシフトレジスタ３０８内に記憶する。同時に、マルチプレクサ３１２および３１４は、次のサイクルでプロセッサユニットに対する入力として使用されるエントリをシフトレジスタ３０８から選択できる。
【００４６】
図３Ｂは、シミュレーションプロセッサ１００の非動作モード（ｅｎ１＝０およびｅｎ０＝１）を示す。このモードでは、ＰＥ３０２は、非動作モードを実行する。このモードは、たとえば、その他のプロセッサユニットが、このシフトレジスタ３０８からのデータに基づく評価機能であるが、このＰＥがアイドリングである場合に役立つ。マルチプレクサの選択肢は、以下のように選択される：（ｉ）ビットｅｎ０＝１で、マルチプレクサ３１０は、シフトレジスタ３０８の最後のエントリ３６３〜３６４を選択し、（ｉｉ）ビットｅｎ１＝０で、図３Ａと同じ選択が行われ、（ｉｉｉ）ＸＢ０およびＸＢ１は、メモリ３２６にアドレス指定されるのではなく、マルチプレクサ３１２および３１４に対する入力として使用される。
【００４７】
非動作モード時、ＰＥ３０２はどのゲートもシミュレートせず、シフトレジスタ３０８はリフレッシュされ、シフトレジスタ３０８の最後のエントリは、シフトレジスタ３０８の最初のエントリに再循環される。同時に、データは、経路３５２〜３５４〜３５６および３５８〜３６０〜３６２を介してシフトレジスタ３０８から読み取ることができる。
【００４８】
図３Ｃは、シミュレーションプロセッサ１００のロードモード（ｅｎ１＝１およびｅｎ０＝０）を示す。このモードの主な機能は、データを局所メモリ３２６からロードすることである。マルチプレクサの選択肢は、以下のように選択する：（ｉ）ビットｅｎ１＝１で、マルチプレクサ３２０は、マルチプレクサ３２４の出力３６８を選択し、ビット〜ｅｎ０＝１で、マルチプレクサ３２４はメモリ３２６の出力３６６を選択し、（ｉｉ）ビットｅｎ０＝１で、マルチプレクサ３１０は、ＰＥ３０２の出力３７１〜３７３を選択し、（ｉｉｉ）ビットｅｎ１＝１で、マルチプレクサ３１６は、シフトレジスタ３０８の最後のエントリ３６３〜３７０を選択する。また、局所メモリ３２６は、メモリアドレス信号３７７（フィールドＸＢ０、ＸＢ１およびＸｔｒａ  Ｍｅｍ）によってアドレス指定され、特定のメモリセルをメモリ出力３６６として選択する。
【００４９】
このモード時、データは、メモリ３２６からクロスバー１０１にロードされてプロセッサユニットによって使用され、同時に、ＰＥ３０２は論理関数の評価を実行し、結果をシフトレジスタ３０８内に記憶することができる。多くの別の方法では、ＰＥによる評価、およびメモリからのロードは、この場合のように同時に実行することはできない。この実施例では、局所メモリ３２６からのデータのロードは、ＰＥ３０２の動作を妨げない。
【００５０】
図３Ｄは、シミュレーションプロセッサ１００の記憶モード（ｅｎ１＝１およびｅｎ０＝１）を示す。このモードの主な機能は、データを局所メモリ３２６に記憶することである。このモードでは、局所メモリ３２６がメモリアドレス信号３７７によってアドレス指定され、記憶が行われる。したがって、記憶モード時、ＰＥ３０２の出力データ３７１〜３７２〜３７４は、局所メモリ３２６内に記憶することができる。マルチプレクサは、以下のように構成される：（ｉ）ビットｅｎ１＝１で、マルチプレクサ３２０は、マルチプレクサ３２４の出力３６８選択し、ビット〜ｅｎ０＝０で、マルチプレクサ３２４は、ＰＥ３０２の出力３７１〜３７２〜３７６を選択し、（ｉｉ）さらに、ビットｅｎ１＝１で、マルチプレクサ３１６は、シフトレジスタ３０８の最後のエントリ３６３〜３７０を選択し、（ｉｉｉ）ビットｅｎ０＝１で、マルチプレクサ３１０は、シフトレジスタ３０８の最後のエントリ３６３〜３６４を選択する。
【００５１】
記憶モードは、ＰＥ３０２の動作の非ブロッキングでもある。ＰＥ３０２は論理関数を評価することができ、結果として得られる値は、局所メモリ３２６内に直接記憶することができる。この値は、経路３７１〜３７２〜３７６〜３６８〜３６２を介してクロスバー１０１によって利用可能である。シフトレジスタ３０８内の最後のエントリも再循環可能であり、やはり、経路３７０〜３５６を介してクロスバーによって利用可能である。
【００５２】
図３に示すアーキテクチャの１つの利点は、ロードおよび記憶モードがＰＥ３０２の動作を妨げないことである。つまり、ロードモードは、適切にはロードおよび評価モードと呼ぶことができ、記憶モードは、適切には記憶および評価モードと呼ぶことができる。これは、論理シミュレーションにとって重要である。論理シミュレーションは、一定のゲート数のシミュレーションを有する。したがって、より迅速に評価を実行することができ、より速く論理シミュレーションを完了することができる。１回のサイクルでロード／記憶および評価をサポートすることは、ロード／記憶が１つのサイクルを必要とし、評価が別個のサイクルを必要とする方法と比べて、迅速化が著しい。
【００５３】
図４は、本発明の第２実施態様によるハードウェア加速論理シミュレーションシステムにおけるシミュレーションプロセッサの１つのプロセッサユニット１０３を示す。各々のプロセッサユニット１０３は、プロセッサ要素（ＰＥ）３０２、シフトレジスタ３０８、メモリ３２６、マルチプレクサ３０４、３０６、３１０、３１２’、３１４’、３１６、３２０、３２４、３８６およびフリップフロップ３１８、３２２を備える。プロセッサユニット１０３は、フィールドＰ０、Ｐ１、Ｂｏｏｌｅａｎ  Ｆｕｎｃ、ＥＮ、ＸＢ０’、ＸＢ１’（ＸＢ１’＝ＸＢ０’＋１）、およびＸｔｒａ  Ｍｅｍ（任意）を有する命令３８３によって制御される。クロスバー１０１は、各々のプロセッサユニット１０３を相互接続する。クロスバー１０１は、２ｎ個のバスラインを有し、シミュレーションプロセッサ１００内のＰＥ３０２またはプロセッサユニット１０３の数がｎ個である場合、各々のプロセッサユニットは２つの入力、およびクロスバーに対する２つの出力を有する。
【００５４】
図４に示すプロセッサユニットは、図３に示すものと同じだが、１つの著しい違いがある。図３では、マルチプレクサ３１２は、マルチプレクサ３１４と同様、シフトレジスタ３０８内の任意のｙエントリを選択することが可能である。図４では、マルチプレクサ３１４’はシフトレジスタ３０８内のｙエントリの何れかを選択することができ、マルチプレクサ３１２’は、シフトレジスタの上半分からしか選択することができない。マルチプレクサ３１２’は、ｙ／２エントリのみをアドレス指定することができる。
【００５５】
より詳細には、マルチプレクサ３８６は、ビットｅｎ１に応じて、シフトレジスタ３０８の中間エントリ（ｙ／２）３８８または最後のエントリ（ｙ）３９０を選択するが、マルチプレクサ３８６は、その他の実施態様では、任意の２つのシフトレジスタのエントリ３０８を選択するように変更することができる。マルチプレクサ３８６の出力３６３は、図３の信号３６３に類似する役割を果たす。したがって、マルチプレクサ３１０は、ビットｅｎ０に応じて、ＰＥ３０２の出力３７１〜３７３、またはマルチプレクサ３６８の出力３６３〜３６４を選択し、シフトレジスタ３０８の最初のエントリは、マルチプレクサ３１０の出力３５０を受信する。さらに、マルチプレクサ３１２’は、選択信号ＸＢ０’に応じて、シフトレジスタ３０８のメモリセル（０〜ｙ／２）の１つを選択し、マルチプレクサ３１４’は、選択信号ＸＢ１’に応じて、シフトレジスタ３０８のメモリセルのｙメモリセルの１つを選択する。メモリ３２６は、ビットＸＢ０’、ＸＢ１’を含むアドレス信号３７７によってアドレス指定される。
【００５６】
図４に示すこの方法は、グループ度ＸＢ０’、ＸＢ１’の利用の改善をもたらす。たとえば、先ず図３を参照して、ｙが２の冪であり、ＸＢ０＝ＸＢ１＝ｌｏｇ（ｂａｓｅ２）ｙであると仮定する。さらに、Ｘｔｒａ  Ｍｅｍが１ビットを有し、したがってＸｔｒａ  Ｍｅｍ＝１であり、局所メモリに２∧（２ＸＢ０＋１）の可能なアドレスが存在すると仮定する。次に、同じサイズの局所メモリだが、シフトレジスタが深さｙではなく２ｙを有する図４の構造を考える。図４の量を指示する素数を使用する。次に、マルチプレクサ３１２’は、シフトレジスタの半分のみをアドレス指定するので、ＸＢ０’＝ＸＢ０であり、全体のシフトレジスタをアドレス指定するには、図３と同じ数のビットが必要である。しかし、マルチプレクサ３１４’は、２倍多くのシフトレジスタのエントリをアドレス指定するため、ＸＢ１’＝ＸＢ１＋１である。したがって、Ｘｔｒａ  Ｍｅｍフィールドは、図４では必要ない。図３のフィールドＸＢ０、ＸＢ１、およびＸｔｒａ  Ｍｅｍを使用する代わりに、フィールドＸＢ０’およびＸＢ１’を図４で使用することができる。したがって、図４は、図３と同じ長さを有する命令を生じ（つまり、追加のビットが不要である）、シフトレジスタが２倍の局所メモリは同じサイズだが、シフトレジスタは２倍の深さを有する。これは、Ｘｔｒａ  Ｍｅｍフィールドのビットを使用して、局所メモリのアドレス指定のほかに、シフトレジスタのアドレス指定を行うことによって達成される。図３では、これらのビットは、局所メモリのアドレス指定にのみ使用され、シフトレジスタのアドレス指定の際には無駄だった。
【００５７】
マルチプレクサ３８６は、中間エントリ３８８または最後のエントリ３９０を様々なモードで選択する。図４の実施例では、マルチプレクサ３８６は、シフトレジスタ３０８が、非動作モードで（ｅｎ１＝０およびｅｎ０＝１）、経路３８８〜３６３〜３６４〜３５０を介して、中間エントリ３８８をシフトレジスタ３０８の上部に再循環させることによってリフレッシュされ、最後のエントリ３９０が、ロードモード時に（ｅｎ１＝１およびｅｎ０＝０）、経路３９０〜３６３〜３７０〜３５６を介してクロスバー１０１に出力され、最後のエントリ３９０が、シフトレジスタ３０８の上部に再循環されて、記憶モード時に（ｅｎ１＝１およびｅｎ０＝１）、クロスバー１０１に出力されるように構成される。
【００５８】
もう１つのビットが命令レジスタに追加されると、図４の実施態様を逆に図３の実施態様に拡張するために使用することができ、レジスタの深さは２ｙになる。その結果、提案されているアーキテクチャは、動作時にデータをインターリーブするため、シフトレジスタ３０８が、有用なより多くのデータを保持することを可能にする。
【００５９】
この同じビットを使用するもう１つの実施例は、このビットをプロセッサユニット内のステアリング制御に追加することであり、データのインターリーブによって、局所的なシフトレジスタ３０８の必要な深さを軽減することができる。命令レジスタ内の余分なプログラミングビットを使用して、図３の実施態様を図４の実施態様に拡張するのではなく、このビットは、図３の実施態様を拡張して図５の実施態様を得るようにステアリングするために使用することができる。図５の実施態様では、表１の４つのＯｐコードは、以下の表２に示されている８つのＯｐコードになる。
【００６０】
【表２】
2009514070.tif 000004
ビットｅｎ２が追加され、さらに多様なデータステアリング方法を生み出すために使用される。上記の表２は、可能なマッピングを示す。次に、図３の実施態様は、ビットｅｎ２を使用して強化され、図５の実施態様が得られる。最初に、図３の実施態様に固有のデータインターリーブ問題について説明する。ＰＥの出力３７１は、シフトレジスタ３０８内に記憶されるので、次のサイクルまで処理に利用することはできない。シフトレジスタ３０８の出力３５２、３５８は、クロスバー１０１に接続するために使用されるため、１つのサイクルの待ち時間が生じ、つまり、ＰＥ−出力３７１は、Ｔ時点でシフトレジスタ３０８内に記憶され、Ｔ＋２時点までクロスバー１０１に返されない。したがって、Ｔ＋１時点では、その他の論理を計算しなければならない。これは、本明細書ではデータのインターリーブと呼ぶ。このデータのインターリーブは、シフトレジスタ３０８が比較的大きいことを必要とする。
【００６１】
シフトレジスタのバイパスモードを可能にすることにより、データインターリーブ問題は軽減することができる。図５の実施態様では、直接ステアリング制御法は、表２に符号化されているように、ｅｎ０、ｅｎ１、およびｅｎ２のビット値を使用する。これは、単なる説明のためである。同じＯｐコードを使用して、ここに示す３つの制御ビット（ｅｎ０、ｅｎ１、およびｅｎ２）より多いビットを制御するさらに複雑な制御方法を設計することが可能である。
【００６２】
図５は、本発明の第３実施態様によるシミュレーションプロセッサの１つのプロセッサユニットを示す回路図である。図５に示すプロセッサユニットは、図３に示すものと同じだが、いくつかの著しい相違がある。図３のプロセッサユニットと比較して、図５のプロセッサユニットは、マルチプレクサ５０６、５１４、５０８をさらに備え、命令語５３０のＥＮ出力信号は、動作モードを画定するための３ビット（ｅｎ０、ｅｎ１、ｅｎ２）を有する。追加のイネーブル信号ｅｎＡが含まれ、以下の公式を使用してｅｎ０およびｅｎ２から導かれる：ｅｎＡ＝ｅｎ０＊ｅｎ２＋〜ｅｎ０＊〜ｅｎ２。また、メモリ３２６は、図面で分かりやすくするために、Ｘｔｒａ  Ｍｅｍビットがなく、ＸＢ０およびＸＢ１からのみ成るアドレス５３２によってアドレス指定されていることに注意する。さらに図５、５Ａ〜５Ｆでは、関連するマルチプレクサは、対応する制御ビット値が０の場合、一番上または一番左の入力が選択され、対応する制御ビット値が１である場合、一番下または一番右の入力が選択されるように示されている。
【００６３】
マルチプレクサ５０６は、ビットｅｎ０に応じて、ＰＥ３０２の出力３７１〜５０２、またはシフトレジスタ３０８の最初のエントリ５０４を選択する。マルチプレクサ５１４は、ビットｅｎＡに応じて、ＰＥ３０２の出力３７１〜５０２〜５１６、またはマルチプレクサ３１２の出力３５４を選択する。マルチプレクサ５０８は、ビット〜ｅｎ１に応じて、マルチプレクサ５０６の出力５１２、またはマルチプレクサ５１４の出力５１８を選択する。マルチプレクサ５０８の出力５２０は、フリップフロップ５１０に入力される。マルチプレクサ３２４は、〜ｅｎ０に応じて、ＰＥ３０２の出力３７１〜３７２〜３７６、またはメモリ３２６からの出力３６６を選択する。マルチプレクサ３２０は、ｅｎ１に応じて、マルチプレクサ３１４の出力３６０、またはマルチプレクサ３２４の出力３６８を選択する。マルチプレクサ３２０の出力３６２は、フリップフロップ３２２に入力される。
【００６４】
マルチプレクサ５０６、５１４、５０８、３２４、３２０は、シフトレジスタ３０８をバイパスし、クロスバー１０１に直接供給されるように、ＰＥ３０２の出力３７１の経路を提供する。これは、図５のシミュレーションプロセッサが、図３のシミュレーションプロセッサと比べて１つ少ないサイクルで、シミュレーションを実行することを可能にし、なぜなら、シフトレジスタ３０８にアクセスするための１つのサイクルは、シフトレジスタ３０８がバイパスされた時になくすことができるからである。さらに、これは、インターリーブされたデータ処理ではなく、能率化されたデータ処理を可能にする。
【００６５】
図５Ａ〜５Ｇは、表２に記載されている各々のモードを示す図５の変更回路図である。これらのダイアグラムでは、選択されないデータ経路は、このモード時のプロセッサユニットの動作をさらに明確に示すために削除されている。
【００６６】
図５Ａは、図５のプロセッサユニットの変更回路図であり、プロセッサユニットの第１タイプの（評価−０）評価モード（ｅｎ２＝０、ｅｎ１＝０、およびｅｎ０＝１）を示す。このモードでは、図５Ａに示すマルチプレクサの選択肢は、おそらく論理動作の評価に関連して使用されると共に、さらに、ＰＥ３０２の出力３７１がシフトレジスタ３０８をバイパスするデータ経路を提供するように選択される。特に、（ｉ）ビット〜ｅｎ２＝１で、マルチプレクサ３１０は、シフトレジスタの最後のエントリ３６４を選択し、（ｉｉ）ビットｅｎＡ＝０で、マルチプレクサ５１４は、ＰＥ３０２の出力３７１〜５０２〜５１６を選択し、（ｉｉｉ）ビット〜ｅｎ１＝１で、マルチプレクサ５０８は、マルチプレクサ５１４の出力５１８を選択し、（ｉｖ）ビットｅｎ１＝０で、マルチプレクサ３２０は、マルチプレクサ３１４の出力３６０を選択し、（ｖ）ＸＢ１は、メモリ３２６に対するアドレスではなく、マルチプレクサ３１４に対する入力として使用される。したがって、第１タイプ（評価−０）の評価モードでは、ＰＥ３０２は、マルチプレクサ３０４および３０６によって出力される入力演算数（ｉｎｐｕｔ  ｏｐｅｒａｎｄ）に基づいて論理動作をシミュレートし、ＰＥ３０２によって出力される中間値３７１は、シフトレジスタ３０８をバイパスしてマルチプレクサ５１４内に供給され、最終的にクロスバー１０１に出力され、その他のプロセッサユニット１０３によって使用される。同時に、マルチプレクサ３１４は、次のサイクルでプロセッサユニットに対する入力として使用されるエントリをシフトレジスタ３０８から選択することができる。
【００６７】
図５Ｂは、図５のプロセッサユニットの変更回路図であり、プロセッサユニットの第２タイプ（評価−１）の評価モードである評価モード（ｅｎ２＝１、ｅｎ１＝０、およびｅｎ０＝１）を示す。このモードでは、図５Ｂに示すマルチプレクサの選択肢は、おそらく論理ゲートの評価に関連して使用されると共に、さらに、シフトレジスタ３０８内に記憶されるＰＥ３０２の出力３７１に使用されるデータ経路を提供するように選択される。特に、（ｉ）ビット〜ｅｎ２＝０で、マルチプレクサ３１０は、ＰＥ３０２の出力３７１〜３７３を選択し、（ｉｉ）ビット〜ｅｎＡ＝１で、マルチプレクサ５１４は、マルチプレクサ３１２の出力３５４を選択し、（ｉｉｉ）ビット〜ｅｎ１＝１で、マルチプレクサ５０８は、マルチプレクサ５１４の出力５１８を選択し、（ｉｖ）ビットｅｎ１＝０で、マルチプレクサ３２０は、マルチプレクサ３１４の出力３６０を選択し、および（ｖ）ＸＢ０、ＸＢ１は、メモリ３２６へのアドレス指定ではなくマルチプレクサ３１２、３１４に対する入力として使用される。したがって、第２タイプ（評価−１）の評価モード時に、ＰＥ３０２は、マルチプレクサ３０４および３０６によって出力された入力演算数に基づいて、論理動作をシミュレートし、ＰＥ３０２によって出力された中間値３７１はシフトレジスタ３０８内に記憶される。同時に、マルチプレクサ３１２、３１４は、次のサイクルでプロセッサユニットに対する入力として使用されるエントリをシフトレジスタ３０８から選択することができる。
【００６８】
図５Ｃは、図５のプロセッサユニットの変更回路図であり、プロセッサユニットの第１タイプ（記憶−０）の記憶モード（ｅｎ２＝０、ｅｎ１＝１およびｅｎ０＝１）を示す。このモードの主な機能は、データを局所メモリ３２６に記憶し、その際、シフトレジスタ３０８の第１エントリをシフトレジスタ３０８の最後のエントリ３６４でリフレッシュすることである。このモードでは、局所メモリ３２６は、ＸＢ０およびＸＢ１から成るメモリアドレス信号５３２によってアドレス指定され、ＰＥ３０２の出力データ３７１〜３７２〜３７４が記憶される特定のメモリセルを選択する。したがって、この記憶モード時、ＰＥ３０２の出力データ３７１〜３７２〜３７４は、メモリ３２６内に記憶することができる。マルチプレクサは、以下のように構成される：（ｉ）ビット〜ｅｎ２＝１で、マルチプレクサ３１０は、シフトレジスタ３０８の最後のエントリ３６４を選択し、（ｉｉ）ビットｅｎ０＝１で、マルチプレクサ５０６は、シフトレジスタ３０８の最初のエントリ５０４を選択し、（ｉｉｉ）ビット〜ｅｎ１＝０で、マルチプレクサ５０８は、マルチプレクサ５０６の出力５１２を選択し、（ｉｖ）ビット〜ｅｎ０＝０で、マルチプレクサ３２４は、ＰＥ３０２の出力３７１〜３７２〜３７６を選択し、および（ｖ）ビットｅｎ１＝１で、マルチプレクサ３２０は、マルチプレクサ３２４の出力３６８を選択する。
【００６９】
図５Ｄは、図５のプロセッサユニットの変更回路図であり、プロセッサユニットの第２タイプ（記憶−１）の記憶モード（ｅｎ２＝１、ｅｎ１＝１、およびｅｎ０＝１）を示す。このモードの主な機能は、データを局所メモリ３２６に記憶することであり、その際、ＰＥ３０２により中間値の出力３７１〜３７３をシフトレジスタ３０８に記憶する。このモードでは、局所メモリ３２６は、ＸＢ０およびＸＢ１から成るメモリアドレス信号５３２によってアドレス指定され、ＰＥ３０２の出力データ３７１〜３７２〜３７４が記憶される特定のメモリセルを選択する。したがって、この記憶モード時、ＰＥ３０２の出力データ３７１〜３７２〜３７４は、局所メモリ３２６内に記憶することができる。マルチプレクサは、以下のように構成される：（ｉ）ビット〜ｅｎ２＝０で、マルチプレクサ３１０は、ＰＥ３０２の出力３７１〜３７３を選択し、（ｉｉ）ビットｅｎ０＝１で、マルチプレクサ５０６は、シフトレジスタ３０８の最初のエントリ５０４を選択し、（ｉｉｉ）ビット〜ｅｎ１＝０で、マルチプレクサ５０８は、マルチプレクサ５０６の出力５１２を選択し、（ｉｖ）ビット〜ｅｎ０＝０で、マルチプレクサ３２４は、ＰＥ３０２の出力３７１〜３７２〜３７６を選択し、および（ｖ）ビットｅｎ１＝１で、マルチプレクサ３２０は、マルチプレクサ３２４の出力３６８を選択する。
【００７０】
図５Ｃおよび５Ｄの記憶モードは、ＰＥ３０２の動作の非ブロッキングである。つまり、ＰＥ３０２は論理関数を評価することができ、結果として得られる値は、直ちに局所メモリ３２６内に記憶することができる。この値は、経路３７１〜３７２〜３７６〜３６８〜３６２を介して、または３７１〜３７３〜５０４〜５１２〜５２０を介してクロスバー１０１によって利用可能である。データ３７４およびアドレス５３２は、同時に変化することが可能である。強化として、好ましい実施態様では、データ３７４を１つの命令に登録し、次の命令でアドレス５３２（ＸＢ０、ＸＢ１）をメモリ３２６に送信することを可能にすることを選択する。その結果、記憶に必要なデータ３７４は、記憶自体のアドレス５３２より１つの計算サイクルだけ早く生成されなければならない。この状況では、非ブロッキング動作は、２つの連続するステップに適用され、つまり、第１のサイクルでは、論理関数としてＰＥ−出力、および第２のサイクルでは、アドレス５３２を選択するためにＸＢ０およびＸＢ１レジスタの使用に適用される。第２サイクルのＰＥ−出力は、図５Ｃおよび５Ｄに示す両方のモードにおいてレジスタ３２２で利用可能である。図５Ｃ（ＥＮ＝０１１）では、シフトレジスタ３０８はリフレッシュされ、図５Ｄ（ＥＮ＝１１１）では、ＰＥ−出力は、シフトレジスタ３０８内に、その第１エントリとして記憶される。
【００７１】
図５Ｅは、図５のプロセッサユニットの変更回路図であり、プロセッサユニットの第１タイプ（ロード−０）のロードモード（ｅｎ２＝０、ｅｎ１＝１、ｅｎ０＝０）を示す。このモードの主な機能は、データを局所メモリ３２６からロードすることであり、その際、シフトレジスタ３０８の第１エントリをシフトレジスタ３０８の最後のエントリ３６４でリフレッシュする。マルチプレクサの選択は以下のとおりである：（ｉ）ビット〜ｅｎ２＝１で、マルチプレクサ３１０は、シフトレジスタ３０８の最後のエントリ３６４を選択し、（ｉｉ）ビットｅｎ０＝０で、マルチプレクサ５０６は、ＰＥ３０２の出力３７１〜５０２を選択し、（ｉｉｉ）ビット〜ｅｎ１＝０で、マルチプレクサ５０８は、マルチプレクサ５０６の出力５１２を選択し、（ｉｖ）ビット〜ｅｎ０＝１で、マルチプレクサ３２４は、メモリ３２６の出力３６６を選択し、および（ｖ）ｅｎ１＝１で、マルチプレクサ３２０は、マルチプレクサ３２４の出力３６８を選択する。さらに、局所メモリ３２６は、メモリアドレス信号５３２（フィールドＸＢ０、ＸＢ１）によってアドレス指定され、特定のメモリセルをメモリの出力３６６として選択する。
【００７２】
図５Ｆは、図５のプロセッサユニットの変更回路図であり、第２タイプ（ロード−１）のロードモード（ｅｎ２＝１、ｅｎ１＝１、ｅｎ０＝０）を示す。このモードの主な機能は、データを局所メモリ３２６からロードすることであり、その際、ＰＥ３０２による中間値の出力３７１〜３７３をシフトレジスタ３０８に記憶する。マルチプレクサの選択は、以下のとおりである：（ｉ）ビット〜ｅｎ２＝０で、マルチプレクサ３１０は、ＰＥ３０２の出力３７１〜３７３を選択し、（ｉｉ）ビットｅｎ０＝０で、マルチプレクサ５０６は、ＰＥ３０２の出力３７１〜５０２を選択し、（ｉｉｉ）ビット〜ｅｎ１＝０で、マルチプレクサ５０８は、マルチプレクサ５０６の出力５１２を選択し、（ｉｖ）ビット〜ｅｎ０＝１で、マルチプレクサ３２４は、メモリ３２６の出力３６６を選択し、および（ｖ）ｅｎ１＝１で、マルチプレクサ３２０は、マルチプレクサ３２４の出力３６８を選択する。また、局所メモリ３２６は、メモリアドレス信号５３２（フィールドＸＢ０、ＸＢ１）によってアドレス指定され、特定のメモリセルをメモリ出力３６６として選択する。
【００７３】
図５Ｅおよび５Ｆのロードモード時、データは、メモリ３２６からクロスバー１０１にロードされてプロセッサユニットに使用され、同時に、ＰＥ３０２は、ロードの評価を実行して、結果をシフトレジスタ３０８に記憶するか、またはシフトレジスタ３０８をバイパスすることが可能であることに注意する。したがって、局所メモリ３２６からのデータのロードは、ＰＥ３０２の動作を妨げない。
【００７４】
図５Ｇは、図５のプロセッサユニットの変更回路図であり、プロセッサユニットの第１タイプ（Ｎｏ−Ｏｐ−０）の非動作モード（ｅｎ２＝０、ｅｎ１＝０、ｅｎ０＝０）を示す。このモードでは、ＰＥ３０２は非動作モードを実行する。このモードは、たとえば、その他のプロセッサユニットが、このシフトレジスタ３０８からのデータに基づく評価機能であるが、このＰＥ３０２がアイドリングである場合に役立つ。マルチプレクサの選択肢は、以下のように選択する：（ｉ）ビット〜ｅｎ２＝１で、マルチプレクサ３１０は、シフトレジスタ３０８の最後のエントリ３６４を選択し、（ｉｉ）ビットｅｎＡ＝１で、マルチプレクサ５１４は、マルチプレクサ３１２の出力３５４を選択し、（ｉｉｉ）ビット〜ｅｎ１＝１で、マルチプレクサ５０８は、マルチプレクサ５１４の出力５１８を選択し、および（ｉｖ）ビットｅｎ１＝０で、マルチプレクサ３２０は、マルチプレクサ３１４の出力３６０を選択する。ＸＢ０およびＸＢ１は、メモリ３２６にアドレス指定されるのではなく、マルチプレクサ３１２および３１４に対する入力として使用される。非動作モード時、ＰＥ３０２は、どのロードもシミュレートせず、シフトレジスタ３０８はリフレッシュされ、その結果、シフトレジスタ３０８の最後のエントリ３６４は、シフトレジスタ３０８の最初のエントリに再循環される。同時に、データは、経路３５２〜３５４〜５１８〜５２０および３５８〜３６０〜３６２を介して、シフトレジスタ３０８から読み取ることができる。第２非動作モード（ｅｎ２＝１、ｅｎ１＝０、ｅｎ０＝０）は定義されず、使用されない。
【００７５】
図６Ａは、本発明の第４実施態様によるシミュレーションプロセッサの１つのプロセッサユニットを示し、プロセッサ要素は、第１タイプ（ＮＯＯＰ−ＡＯＩ３−０）の非動作モード（ｅｎ２＝０、ｅｎ１＝０、ｅｎ０＝０、およびＢｏｏｌｅａｎ  Ｆｕｎｃ＝１１０００（ＢＦ４、ＢＦ３、ＢＦ２、ＢＦ１、ＢＦ０））でＡＯＩ３機能を実行する。図６Ａに示すプロセッサユニットは、図５のプロセッサユニットと同じだが、ＰＥ３０２は、マルチプレクサ３１２の出力３５４をＰＥ３０２の入力として受信し、ＰＥ３０２は、ＡＯＩ３機能をシミュレートするように構成される。さらに、マルチプレクサ５０８を制御する信号〜ｅｎ１は、信号ｅｎＢに置き換えられる。信号ｅｎＢは、次の公式を使用して表現することができる：ｅｎＢ＝ＢＦ４＊ｅｎ２＊〜ｅｎ１＊〜ｅｎ０＋ｅｎ１。ＥＮコードは、Ｎｏ−Ｏｐ−０（ｅｎ２＝０、ｅｎ１＝０、ｅｎ０＝０）またはＮｏ−Ｏｐ−１（ｅｎ２＝１、ｅｎ１＝０、ｅｎ０＝０）以外のコードであり、マルチプレクサ５０８は、前の図５Ａ〜５Ｇと同様、ｅｎ１信号によって効果的に制御される。ＥＮ信号は、Ｎｏ−Ｏｐ−０（ｅｎ２＝０、ｅｎ１＝０、ｅｎ０＝０）、またはＮｏ−Ｏｐ−１（ｅｎ２＝１、ｅｎ１＝０、ｅｎ０＝０）であり、マルチプレクサ５０８は、信号ＢＦ４＊ｅｎ２によって制御される。我々は、クロスバー１０１、またはマルチプレクサ３１２の出力３５４（ｅｎ２＝１）が、ＰＥ−出力３７１〜５０２（ｅｎ２＝０）を利用可能かどうか選択する際にこの特徴を利用する。我々は、これをダイアグラムに示す。ＰＥ３０２は、動作を実行しないため、Ｎｏ−Ｏｐ−１は図５の回路では無効な動作だった。ＰＥ３０２は、Ｎｏ−Ｏｐ−１モードで動作を実行する図６では、これは、有効な動作になる。選択されないデータ経路は、このモード時のプロセッサユニットの動作をより明確に示すために削除されているが、これらは、図５に示されているように存在する。ＰＥ３０２が実行するように構成されるＡＯＩ３機能は、図６Ｂに関して以下でさらに詳細に説明する。マルチプレクサの選択は、以下のように行われる：（ｉ）〜ｅｎ２＝１で、マルチプレクサ３１０は、シフトレジスタ３０８の最後のエントリ３６４を選択し、（ｉｉ）ｅｎ０＝０で、マルチプレクサ５０６は、ＰＥ（ＡＯＩ３）３０２）の出力（Ｏ）３７１〜５０２を選択し、（ｉｉｉ）ｅｎＢ＝０で、マルチプレクサ５０８は、マルチプレクサ５０６の出力５１２を選択し、および（ｉｖ）ｅｎ１＝０で、マルチプレクサ３２０は、マルチプレクサ３１４の出力３６０を選択する。マルチプレクサ３１２の出力３５４は、ＰＥ（ＡＯＩ３）３０２内に入力（Ｃ）として供給される。ＰＥ（ＡＯＩ３）３０２の出力３７１〜５０２が、シフトレジスタ３０８をバイパスすることに注意する。
【００７６】
図６Ｂは、プロセッサ要素のＡＯＩ３機能を詳細に示す回路図である。ＡＯＩ３論理は、３つの入力Ａ、Ｂ、Ｃおよび１つの出力Ｏを含む。出力Ｏは、Ｏ＝Ａ＊Ｂ＋Ｃとして表現することができる。ＡＯＩ３論理は、インバータ６０２、６１４、６２２、６１８、マルチプレクサ６０４、６０５、６２４、６２０、ＡＮＤゲート６０８、６２８、およびＯＲゲート６１２を備える。ＰＥ３０２は、ＥＮコードがＮｏ−Ｏｐ−０またはＮｏ−Ｏｐ−１、およびＢｏｏｌｅａｎ  Ｆｕｎｃ（ＢＦ）＝１１ｘｘｘ（ＢＦ４、ＢＦ３、ＢＦ２、ＢＦ１、ＢＦ０）である時に（つまり、ＢＦ４＝１およびＢＦ３＝１）、ＡＯＩ３機能を実行するように構成される。ビットＢＦ２、ＢＦ１、およびＢＦ０は、入力がそのまま受信されるか、あるいは逆数が受信されるかを制御するために使用される。インバータ６０２は入力Ａを受信し、〜Ａを出力する。インバータ６１４は入力Ｂを受信し、〜Ｂを出力する。インバータ６２２は入力Ｃを受信し、〜Ｃを出力する。インバータ６１８は、マルチプレクサ６０５の出力６１６を受信し、その逆数を出力する６１９。マルチプレクサ６０４は、ＢＦ０＝１に応じてＡ、またはＢＦ０＝０に応じて〜Ａを選択する。マルチプレクサ６０５は、ＢＦ１＝０に応じてＢ、ＢＦ１＝１に応じて〜Ｂを選択する。マルチプレクサ６２４は、ＢＦ２＝０に応じてＣ、ＢＦ２＝１に応じて〜Ｃを選択する。マルチプレクサ６２０は、ＢＦ３＝０の時にインバータ６１８の出力６１９、ＢＦ３＝１の時に「１」を選択する。この場合、ＢＦ３＝１であり、マルチプレクサ６２０は、「１」を選択する。ＡＮＤゲート６０８は、マルチプレクサ６０４の出力６０６、およびマルチプレクサ６０５の出力６１６を受信し、ＡＮＤされた出力６１０を生成する。ＡＮＤゲート６２８は、マルチプレクサ６２０の出力６２１、およびマルチプレクサ６２４の出力６２６を受信し、ＡＮＤされた出力６３０を生成する。ＯＲゲート６１２は、ＡＮＤゲート６０８の出力６１０、およびＡＮＤゲート６２８の出力６３０を受信し、ＯＲされた出力０を生成する。ＢＦ３＝１を選択することによって、ＡＯＩ３機能Ｏ＝Ａ＊Ｂ＋Ｃが生成された。すべての入力変数（Ａ、〜Ａ、Ｂ、〜Ｂ、Ｃ、〜Ｃ）は、ＢＦ２、ＢＦ１、およびＢＦ０の制御下で利用可能である。
【００７７】
ＡＯＩ３機能を示す真理値表は、以下の表３に示す：
【００７８】
【表３】
2009514070.tif 000005
図６Ｃは、本発明の第４実施態様によるシミュレーションプロセッサの１つのプロセッサユニットを示す回路図であり、プロセッサ要素は、第２タイプ（ＮＯＯＰ−ＡＯＩ３−１）の非動作モード（ｅｎ２＝１、ｅｎ１＝０、ｅｎ０＝０、およびＢｏｏｌｅａｎ  Ｆｕｎｃ＝１１０００）でＡＯＩ３機能を実行する。図６Ｃに示すプロセッサユニットは、図５のプロセッサユニットと同じだが、ＰＥ３０２は、マルチプレクサ３１２の出力３５４をＰＥ３０２に対する入力として受信し、ＰＥ３０２は、ＡＯＩ３機能をシミュレートするように構成される点が異なる。選択されないデータ経路は、プロセッサユニットの動作をより明らかに示すために削除されているが、これらは、図５に示すように存在する。ＰＥ３０２を実行するように構成されるＡＯＩ３機能は、図６Ｂに関してより詳細に上記で説明されている。さらに、変数ｅｎＡは、同様にＢＦ４の制御下になる：公式ｅｎＡ＝ｅｎ０＊ｅｎ２＋〜ｅｎ０＊〜ｅｎ２は、ｅｎＡ＝〜ＢＦ４＊（ｅｎ０＊ｅｎ２＋〜ｅｎ０＊〜ｅｎ２）＋ＢＦ４＊ｅｎ２に変更される。マルチプレクサの選択は、以下のとおりである：（ｉ）〜ｅｎ２＝０で、マルチプレクサ３１０は、ＰＥ（ＡＯＩＥ３０２の出力３７１〜３７３を選択し、（ｉｉ）ｅｎＡ＝１で、マルチプレクサ５１４は、マルチプレクサ３１２の出力３５４を選択し、（ｉｉｉ）ｅｎＢ＝１で、マルチプレクサ５０８は、マルチプレクサ５１４の出力５１８を選択し、（ｉｖ）ｅｎ１＝０で、マルチプレクサ３２０は、マルチプレクサ３１４の出力３６０を選択する。マルチプレクサ３１２の出力３５４は、ＰＥ（ＡＯＩ３）３０２に入力（Ｃ）として供給される。ＰＥ（ＡＩＯ３）３０２の出力３７１〜３７３は、このモードでシフトレジスタ３０８をバイパスするが、シフトレジスタ３０８内に供給される。
【００７９】
図７Ａは、本発明の第５実施態様によるシミュレーションプロセッサの１つのプロセッサユニットを示す回路図であり、この場合、プロセッサ要素は、第１タイプ（ＮＯＯＰ−ＭＵＸ−０）の非動作モード（ｅｎ２＝０、ｅｎ１＝０、ｅｎ０＝０）、およびＢｏｏｌｅａｎ  Ｆｕｎｃ＝１００００で、マルチプレクサ（ＭＵＸ）機能を実行する。図７Ａに示すプロセッサユニットは、図５のプロセッサユニットと同じだが、ＰＥ３０２は、マルチプレクサ３１２の出力３５４をＰＥ３０２に対する入力として受信し、ＰＥ３０２は、ＭＵＸ機能をシミュレートするように構成される点が異なる。選択されないデータ経路は、プロセッサユニットの動作をより明確に示すために削除されているが、これらは、図５に示すように存在する。ＰＥ３０２が実行するように構成されるＭＵＸ機能について、図７Ｂに関してさらに詳細に以下で説明する。このモードでは、マルチプレクサの選択は、以下のように行われる：（ｉ）〜ｅｎ２＝１で、マルチプレクサ３１０は、シフトレジスタ３０８の最後のエントリ３６４を選択し、（ｉｉ）ｅｎ０＝０で、マルチプレクサ５０６は、ＰＥ（ＭＵＸ）３０２の出力（Ｏ）３７１〜５０２を選択し、（ｉｉｉ）ｅｎＢ＝０で、マルチプレクサ５０８は、マルチプレクサ５０６の出力５１２を選択し、および（ｉｖ）ｅｎ１＝０で、マルチプレクサ３２０は、マルチプレクサ３１４の出力３６０を選択する。また、マルチプレクサ３１２の出力３５４は、ＰＥ（ＭＵＸ）３０２に入力（Ｃ）として供給される。ＰＥ（ＭＵＸ）３０２の出力３７１〜５０２は、このモードでは、シフトレジスタ３０８をバイパスすることに注意する。
【００８０】
図７Ｂは、プロセッサ要素のＭＵＸ機能を詳細に示す回路図である。ＭＵＸ論理は、３つの入力Ａ、Ｓ、Ｃ、および１つの出力Ｏを含む。ＭＵＸ論理は、インバータ７０２、７１４、７３０、７２０、マルチプレクサ７０４、７１６、７３２、７２４、ＡＮＤゲート７０８、７２６、およびＯＲゲート７１２を備える。ＰＥ３０２は、Ｂｏｏｌｅａｎ  Ｆｕｎｃ（ＢＦ）＝１０ｘｘｘ（ＢＦ４、ＢＦ３、ＢＦ２、ＢＦ１、ＢＦ０）、つまりＢＦ４＝１およびＢＦ３＝０の場合に、ＭＵＸ機能を実行するように構成される。ビットＢＦ２、ＢＦ１、およびＢＦ０は、入力がそのまま受信されるか、あるいは逆数が受信されるかを制御するために使用される。
【００８１】
インバータ７０２は入力Ａを受信し、〜Ａを出力する。インバータ７１４は入力Ｓを受信し、〜Ｓを出力する。インバータ７３０は入力Ｃを受信し、出力〜Ｃを出力する。インバータ７２０はマルチプレクサ７１６の出力７１８を受信し、その逆数を出力する７２２。マルチプレクサ７０４は、ＢＦ０＝０に応じてＡ、ＢＦ０＝１に応じて〜Ａを選択する。マルチプレクサ７１６は、ＢＦ１＝０に応じてＳ、ＢＦ１＝１に応じて〜Ｓを選択する。マルチプレクサ７３２は、ＢＦ２＝０に応じてＣ、ＢＦ２＝１に応じて〜Ｃを選択する。マルチプレクサ７２４は、ＢＦ３＝０の時にインバータ７２０の出力７２２、ＢＦ３＝１の時に「１」を選択する。この場合、ＢＦ３＝０であり、マルチプレクサ７２４は、インバータ７２０の出力７２２を選択する。ＡＮＤゲート７０８は、マルチプレクサ７０４の出力７０６、およびマルチプレクサ７１６の出力７１８を受信し、ＡＮＤされた出力７１０を生成する。ＡＮＤゲート７２６は、マルチプレクサ７２４の出力７２５、およびマルチプレクサ７３２の出力７３４を受信し、ＡＮＤされた出力７２８を生成する。ＯＲゲート７１２は、ＡＮＤゲート７０８の出力７１０、およびＡＮＤゲート７２６の出力７２８を受信し、ＯＲされた出力０を生成する。ＢＦ３＝０を選択することによって、ＭＵＸ機能Ｏ＝Ｓ＊Ａ＋〜Ｓ＊Ｂが生成された。すべての入力の変動（Ａ、〜Ａ、Ｂ、〜Ｂ、Ｓ、〜Ｓ）は、ＢＦ２、ＢＦ１、およびＢＦ０の制御下で利用可能である。
【００８２】
ＭＵＸ機能を示す真理値表を以下の表４に示す：
【００８３】
【表４】
2009514070.tif 000006
図７Ｃは、本発明の第５実施態様による単一プロセッサユニットを示す回路図であり、プロセッサ要素は、第２タイプ（ＮＯＯＰ−ＭＵＸ−１）の非動作モード（ｅｎ２＝１、ｅｎ１＝０、ｅｎ０＝０、およびＢｏｏｌｅａｎ  Ｆｕｎｃ＝１００００）でＭＵＸ機能を実行する。図７Ｃに示すプロセッサユニットは、図５のプロセッサユニットと同じだが、ＰＥ３０２は、マルチプレクサ３１２の出力３５４をＰＥ３０２の入力として受信し、ＰＥ３０２は、ＭＵＸ機能をシミュレートするように構成される点が異なる。選択されないデータ経路は、このモード時のプロセッサユニットの動作をより明確に示すために削除されているが、これらは、図５に示すように存在する。ＰＥ３０２が実行するように構成されるＭＵＸ機能は、図７Ｂに関してさらに詳細に上記説明されている。さらに、変数ｅｎＡは、同様にＢＦ４の制御下になる：公式ｅｎＡ＝ｅｎ０＊ｅｎ２＋〜ｅｎ０＊〜ｅｎ２は、ｅｎＡ＝〜ＢＦ４＊（ｅｎ０＊ｅｎ２＋〜ｅｎ０＊〜ｅｎ２）＋ＢＦ４＊ｅｎ２に変更される。このモードでは、マルチプレクサの選択は、以下のように行われる：（ｉ）〜ｅｎ２＝０で、マルチプレクサ３１０は、ＰＥ（ＭＵＸ）３０２の出力３７１〜３７３を選択し、（ｉｉ）ｅｎＡ＝１で、マルチプレクサ５１４は、マルチプレクサ３１２の出力３５４を選択し、（ｉｉｉ）ｅｎＢ＝１で、マルチプレクサ５０８は、マルチプレクサ５１４の出力５１８を選択し、（ｉｖ）ｅｎ１＝０で、マルチプレクサ３２０は、マルチプレクサ３１４の出力３６０を選択する。マルチプレクサ３１２の出力３５４は、ＰＥ（ＭＵＸ）３０２に入力（Ｃ）として供給される。ＰＥ（ＭＵＸ）３０２の出力３７１〜３７３は、このモードではシフトレジスタ３０８をバイパスせず、シフトレジスタ３０８に供給される。
【００８４】
ＡＯＩ３およびＭＵＸ機能の両方を使用すると、はるかに効率的な論理計算方法を生じる。第３の入力変数を逆にＰＥに供給することによって、ＭＵＸまたはＡＯＩ３の動作は、単一サイクルで実行することができる。この第３入力がない場合、ＭＵＸまたはＡＯＩ３動作は、３つのＰＥ動作を完了する必要がある。ＭＵＸまたはＡＯＩ３動作を実行するＰＥは、グリッド内のｎ個のＰＥが動作するのに必要な２つの独立する出力変数を生成することはできないが、ＭＵＸ機能のセレクタなどの第３の変数を、類似の関数をすべて計算するいくつかのＰＥ間で共用できるようにすることは可能である（たとえば、ＭＵＸ機能は１つのバスに適用され−各々のビットは異なるＰＥに存在する可能性があるが、信号の制御は、各々のＭＵＸ動作で同じである）。スケジューリングの際、マルチビット動作によって計算グラフにおける依存状態が増加することに注意を要する。
【００８５】
図８は、本発明の第６実施態様によるシミュレーションプロセッサの単一プロセッサユニットを示す回路図である。図８に示すプロセッサユニットは、図３に示すものと同じだが、いくつかの著しい違いある。このプロセッサユニットは、Ｐ０ｅ、Ｐ１ｅ、Ｐ０、Ｐ１、Ｂｏｏｌｅａｎ  Ｆｕｎｃ、ＥＮ、Ｓｅｌｅｃｔ、およびＸＢから成る命令語８４０によって制御される。ＸＢは、以下で説明するとおり、ＸＢ０、ＸＢ１、ＸＢ２、およびＸＢ３の任意の組合せで良い。メモリ３２６は、アドレス信号８８０によってアドレス指定される。図３のプロセッサユニットと比べて、図８のプロセッサユニットは、シフトレジスタ３０８から出力を選択するために４つのマルチプレクサ８０２、８０４、８０６、８０８を備える。マルチプレクサ８０２、８０４は、それぞれＸＢ０、ＸＢ１によって制御され、それぞれ図３のマルチプレクサ３１４、３１２と同様に構成される。マルチプレクサ８０２、８０４の出力８１８、８２０は、それぞれフリップフロップ８３０、８３２内に供給される。２つの追加のマルチプレクサ８０６、８０８は、それぞれＸＢ２、ＸＢ３によって制御され、これらの出力８２２、８２４は、それぞれフリップフロップ８３４、８３６内に供給される。フリップフロップ８３０、８３２、８３４、８３６の出力ＸＢＡ、ＸＢＢ、ＸＢＣ、ＸＢＤは、クロスバー１０１’、この実施態様では４ｎ個のクロスバーに供給される。マルチプレクサ８５８は、Ｐ０ｅの値に応じて４ｎ個のクロスバー１０１’から２ｎ個のビットを選択し、マルチプレクサ８６０は、Ｐ１ｅの値に応じて、４ｎ個のクロスバー１０１’から別の２ｎ個のビットをさらに選択する。各々のマルチプレクサ８５８、８６０は、実際上、２ビット対１ビットのマルチプレクサの２ｎ個のセットとして実装することができるが、図８には、単一マルチプレクサとして示されている。マルチプレクサ８５８の２ｎ個のビットの出力は、Ｐ０値に応じて、ＰＥ３０２に対する入力として１ビットを選択するマルチプレクサ３０４に対する入力であり、マルチプレクサ８６０の他の２ｎ個のビットの出力は、Ｐ１に応じて、ＰＥ３０２に対する別の入力として１ビットをさらに選択するマルチプレクサ３０６に対する入力である。このアーキテクチャでは、各々のＰＥは、４つのデータアウト信号を生成する。したがって、ｎ個のＰＥの場合、合計４＊ｎ個のデータアウト信号が生成される。各々のＰＥは、ＸＢＡ、ＸＢＢ、ＸＢＣおよびＸＢＤ信号の各々に、１ビットの出力のみを生成する。ｎ個のＰＥの総数は、ＸＢＡ、ＸＢＢ、ＸＢＣおよびＸＢＤ信号の各々にｎ個の信号である。Ｐ０ｅおよびＰ１ｅは、多くの効果的なマルチプレクサセレクタを使用することを可能にする。
【００８６】
シフトレジスタ３０８からの出力を選択するために、マルチプレクサ８０２、８０４、８０６、８０８のすべてを積極的に使用する必要はなく、ＸＢ信号のＸＢ０、ＸＢ１、ＸＢ２、ＸＢ３フィールド内のビットの数は、様々な方法で配列できることに注意する。たとえば、シフトレジスタ３０８が、２５６（＝２８）の深さを有し、２１ビットがＸＢ信号に割り当てられる場合、ＸＢ０、ＸＢ１、ＸＢ２、ＸＢ３は、それぞれ５、５、６および５ビットを有することが可能であり、マルチプレクサ８０２、８０４、８０６、８０８の各々は、シフトレジスタ３０８の部分から選択することができる。もう１つの実施例の場合、シフトレジスタ３０８は、２５６（＝２８）の深さを有し、２１ビットがＸＢ信号に割り当てられる場合、ＸＢ０、ＸＢ１、ＸＢ２、ＸＢ３は、それぞれ８、７、５、および０ビットを有することができ、マルチプレクサ８０２は、シフトレジスタ３０８のすべてのエントリから選択することができ、マルチプレクサ８０４、８０６は、シフトレジスタ３０８の部分から選択することができ、マルチプレクサ８０８は使用されない。さらに別の実施例では、ＸＢ０、ＸＢ１、ＸＢ２、ＸＢ３は、それぞれ０、０、５、および０を有することが可能であり、マルチプレクサ８０６のみが、シフトレジスタ３０８の部分から選択することができ、ＸＢ０およびＸＢ１およびＸＢ３のビットを結合して、読取命令または書込命令のメモリアドレスを同時に形成することが可能である。
【００８７】
さらに、メモリポートＤＯの幅は、この場合、同じアドレスから読み取って４ビット出力まで増加させることができ、ＸＢ０〜ＸＢ３が、メモリからクロスバーまで１、２またはそれ以上のビットを持つことを可能にする。可能なマッピングを表５に示す。このテーブルでは、ＤＯ−０は、メモリＤＯポートから第１ビット、ビット０を表し、ＤＯ−１は、第２ビット、ビット１などを表す。また、マルチプレクサの幅も示されており、たとえば、ＸＢＡが５ビットを利用可能である場合、ＸＢＡは、シフトレジスタ３０８から２５＝３２の位置を選択することができる。表５は、４つの可能なマッピングモードを有する４つのＸＢセレクタのマッピングを示す。これは、浅い（モード０）対深い（モード１）トレードオフの両方、およびマルチメモリビットモード（Ｍｅｍ−１およびＭｅｍ−２）を示す。その他の変形が可能である。
【００８８】
【表５】
2009514070.tif 000007
図５のＰＥ−ｏｕｔ動作は、表５では想定されているが、図８には示されていない。
【００８９】
図９Ａは、ＰＥ、およびその関連命令語のより一般化された説明を示し、図３の実施態様を一般的に説明している。図９Ａの実施態様は、図３の実施態様と実質的に同じであるが、さらに一般化されており、マルチプレクサ３１０は、この場合はｅｎＡによって制御され、マルチプレクサ３１６は、この場合はｅｎＢによって制御され、マルチプレクサ３２０は、この場合はｅｎＣによって制御されている。ビットｅｎ２、ｅｎ１およびｅｎ０は、図５Ａ〜５Ｇに示すように、直接ステアリングに必要ではないと上記で説明されている。むしろ、Ｏｐコード制御下で、多くの動作モードが存在することが暗示された。この場合、ｅｎＡ＝ｆ（ｅｎ２、ｅｎ１、ｅｎ０）、またはｅｎＡ＝ｆＡ（ＥＮ）、並びに同様にｅｎＢ＝ｆＢ（ＥＮ）、およびｅｎＣ＝ｆＣ（ＥＮ）であり、ｆ（ｘ）は、ｘの関数を意味する。ｆＡ、ｆＢ、およびｆＣを定義することによって、シミュレーションプロセッサは、より多様に、あるいはカスタマイズされた方法で使用することができる。メモリ３２６のアドレスフィールドは、分かりやすくするために図９Ａには示さないが、これらは、実際の回路には存在する。
【００９０】
図９Ｂは、ＰＥおよびその関連する命令語をより一般化された説明を示し、図８の実施態様を一般的に説明している。図９Ｂでは、命令語９２０は、ΣＰｒとして表現されるビットＰ０〜Ｐｑ、Ｂｏｏｌｅａｎ  Ｆｕｎｃ、ＥＮ、ΣＸＢｉとして表現されるすべてのビットＸＢ０〜ＸＢｊの和、およびＸｔｒａ  Ｍｅｍを含む。マルチプレクサ９０２は、ΣＰｒによって制御されるｑ＊２ｎビット〜ｑビットのマルチプレクサであり、マルチプレクサ９０４は、ΣＸＢｉによって制御されるｖビット〜ｊビットのマルチプレクサであり、マルチプレクサ９０６は、ｆ（ＥＮ）によって制御される（ｊ＋２）ビット〜ｋビットのマルチプレクサである。これは、すべてのビットΣＸＢｉを使用してマルチプレクサ９０４を制御することを仮定している。また、ｅｎＡ＝ｆＡ（ＥＮ）である。クロスバー９０１は、ｋ×ｎクロスバーである。この場合ｎ、ｑ、ｋ、およびｊは、少なくとも２の整数である。図９Ａは、ｑ＝２、ｋ＝２、およびｊ＝２を選択することにより、図９Ｂで表すことができる。その他の組合せは可能である。メモリ３２６のアドレスフィールドは、分かりやすくするために図９Ｂに示さないが、これらは、実際の回路に存在する。
【００９１】
図９Ａおよび９Ｂに示されている一般化は、圧縮を使用して、広い入力を比較的少ない出力信号で多重化すると共に、狭い入力信号を比較的多くの出力信号で多重化することが可能であることを示す。したがって、動的命令レジスタの制御下でアクセス可能な比較的深いシフトレジスタが形成される。この方法は、シフトレジスタの深さを著しく増加し、プロセッサユニットの入力データの幅および出力データの幅の両方を増加することを可能にし、しかも著しい量のデータビットを命令レジスタに追加する必要がない。これは、より柔軟なアーキテクチャを形成することを可能にし、その結果、コンパイラアルゴリズムを利用して、プロセッサグリッド（図２に示す）の効果的な利用を増加することを可能にする。たとえば、図７および８を共に結合すると、局所プロセッサユニットは、３つの変数を消費し、それでもなおクロスバーの変数の別の集合を生成することを可能にする。適切に平衡した状態で、クロスバーで利用可能な十分な変数が存在するため、変数を共用する必要性を避けることができ、その結果、プロセッサグリッドの効果が強化される。
【００９２】
さらに、ＰｉまたはＸＢｉなどのフィールドは、隣接するＰＥ間で共用することが可能であり、シフトレジスタ内へのさらに深いアドレス指定を可能にするが、隣接するＰＥの１つが信号を発行することのみを可能にする。これは、メモリアクセスに関しても行うことができる。これは、ＰＥごとにより多くのデータアウト信号を可能にするアーキテクチャを可能にするが、すべてのデータアウト信号を独立して個々に使用できるというわけではないことを意味している。しかし、データアウト信号の数が増加することにより、より多くの変数が、すべてのＰＥによって共同で消費されるのではなく、クロスバー内に提示されるため、より効果的なアーキテクチャを作ることを可能にし、ＶＬＩＷプロセッサに対する命令のより効果的なスケジューリングにつながり、容量および性能の両方を増加することになる。これらは、上記のアーキテクチャの単なる延長であるため、我々は、単なる基準としてこの点に言及する：これらは、リソースの共用および実装のトレードオフを可能にする。
【００９３】
本発明は、シフトレジスタが入力アドレス信号を必要としないため、シミュレーションプロセッサが、シミュレーションプロセッサに対する命令で使用するビットが比較的少ないという利点を有する。追加の入力マルチプレクサは、シフトレジスタをアドレス指定する際に必要ないため、シミュレーションプロセッサの回路構成内の構成要素の数を単純化して減少させる。また、図５の実施態様は、シフトレジスタをバイパスする回路構成を有し、必要な場合、処理時間の量を短縮することができる。本発明は、シフトレジスタ３０８が記憶モードおよびロードモードが非ブロッキングであるように局所メモリ３２６と相互接続され、つまり、記憶モードおよびロードモードは、シミュレーションプロセッサの評価モードと同時に実行されるという追加の利点を有する。
【００９４】
本発明は、いくつかの実施態様に関して上記で説明したが、本発明の範囲内で、様々な変更を加えることが可能である。たとえば、シフトレジスタ３０８は、多くの異なる構成でＰＥ３０２と共に使用され、シフトレジスタ３０８およびＰＥ３０２の周囲の回路構成の変更も、やはり本発明の範囲内である。図３、４、５、および８の実施態様は、１つのシフトレジスタ３０８を使用し、シフトレジスタ３０８の出力は、特定のマルチプレクサによってアクセスされるが、対応する数の複数の（たとえば２または４）個々のシフトレジスタを有し、複数のマルチプレクサの各々が、個々のマルチプレクサの対応する１つの出力にアクセスすることも可能である。この場合、複数のシフトレジスタ内に記憶されたデータの内容は、同じであるように複製される。
【００９５】
さらに、本発明は、同じＰＥに関連して説明するが、別の実施態様は、異なるタイプのＰＥおよび異なる数のＰＥを使用することができる。ＰＥは、同じ接続性、またはシフトレジスタの同じサイズもしくは構成を有する必要もない。ＰＥは、資源も共用する。たとえば、複数のＰＥは、同じシフトレジスタおよび／または局所メモリに書き込むことができる。たとえば、２つのＰＥは１つの局所メモリを共用する。その逆も真であり、１つのＰＥが複数のシフトレジスタおよび／または局所メモリに書き込むことができる。ＰＥは、クロスバーからの２つを超える入力、および／またはクロスバーへの２つを超える出力も有する。「論理ゲート」という用語は、本明細書では、「ＡＮＤ」、「ＯＲ」、「ＮＡＮＤ」、「ＮＯＲ」などの特定のタイプの論理ゲートに限られない。むしろ、「論理ゲート」は、本明細書では、標準であるか、あるいはカスタマイズされているかに関わらず、任意のタイプのロードまたはブール演算を意味する。
【００９６】
もう１つの実施例では、図３、４、および５に示す命令は、Ｐ０、Ｐ１などに特有のフィールドを示し、命令の集合の全体的な演算は、４つの主な演算モードに関して説明した。この説明は、実例を分かりやすくするために行われた。様々な実施態様では、命令の集合のより複雑なコード化は、重複しているフィールド、または物理的な構造または演算モードと１対１で対応しないフィールドを有する命令が生じる。一実施例は、フィールドＸＢ０、ＸＢ１およびＸｔｒａ  Ｍｅｍの使用で与えられる。これらのフィールドは、命令の残りの部分に応じて異なる意味を持つ。さらに、命令長を短縮するために、演算の対称性または二重性も使用される。
【００９７】
もう１つの態様では、本発明のシミュレーションプロセッサ１００は、ＡＳＩＣ（アプリケーションに固有の集積回路）、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）、またはその他のタイプの集積回路で実現することができる。これは、別個の回路基板上に実装するか、あるいはホストコンピュータ１１０内に差し込む必要はない。別個のホストコンピュータ１１０は存在しない。たとえば、図１を参照すると、ＣＰＵ１１４およびシミュレーションプロセッサ１００は、比較的密接に集積されるか、おそらく単一の集積計算デバイスとして実装される場合もある。
【００９８】
本発明について、半導体チップの論理シミュレーションに関連して説明するが、本明細書で提示するＶＬＩＷプロセッサのアーキテクチャは、その他の用途に使用することも可能である。たとえば、プロセッサのアーキテクチャは、単一ビットの２状態論理シミュレーションから２ビットの４状態論理シミュレーション、固定幅計算（たとえば、ＤＳＰプログラミング）、および小数点計算（たとえば、ＩＥＥＥ−７５４）に拡張することができる。固有の並列性を有するアプリケーションは、このプロセッサアーキテクチャの良い候補である。科学計算の領域では、実施例としては、気象モデル、地球物理学、石油およびガス掘削のための耐震解析、原子力シミュレーション、コンピュータによる流体力学、素粒子物理学、金融モデルおよび材料科学、有限要素モデル化、並びにコンピュータによる断層撮影法、たとえばＭＲＩが挙げられる。生命科学およびバイオテクノロジー、計算化学、たんぱく質折り畳み、および生体系のシミュレーションでは、ＤＮＡシーケンス、薬理ゲノム学、およびコンピュータ内での創薬が挙げられる。ナノ技術用途としては、分子モデル化およびシミュレーション、密度関数理論、原子−原子ダイナミックス、および量子力学的解析が挙げられる。デジタルコンテンツの製作の実施例としては、アニメーション、合成写真およびレンダリング、並びに画像処理が挙げられる。したがって、本発明の開示事項は、以下の請求の範囲に記載する本発明の範囲を制限するのではなく、具体的に示すこと意図している。
【図面の簡単な説明】
【００９９】
【図１】図１は、本発明の一実施態様によるハードウェア加速論理シミュレーションを示すブロック図である。
【図２】図２は、本発明の一実施態様によるハードウェア加速論理シミュレーションシステム内のシミュレーションプロセッサを示すブロック図である。
【図３】図３は、本発明の第１実施態様によるシミュレーションプロセッサの単一プロセッサユニットを示す回路図である。
【図３Ａ】図３Ａは、プロセッサユニットの評価モードを示す図３のプロセッサユニットの変更回路図である。
【図３Ｂ】図３Ｂは、プロセッサユニットの非動作モードを示す図３のプロセッサユニットの変更回路図である。
【図３Ｃ】図３Ｃは、プロセッサユニットのロードモードを示す図３のプロセッサユニットの変更回路図である。
【図３Ｄ】図３Ｄは、プロセッサユニットの記憶モードを示す図３のプロセッサユニットの変更回路図である。
【図４】図４は、本発明の第２実施態様によるハードウェア加速論理シミュレーションシステムの単一プロセッサユニットを示す回路図である。本発明の第３実施態様によるシミュレーションプロセッサ。
【図５】図５は、本発明の第３実施態様によるシミュレーションプロセッサの１つのプロセッサユニットを示す回路図である。
【図５Ａ】図５Ａは、プロセッサユニットの第１タイプの評価モードを示す図５のプロセッサユニットの変更回路図である。
【図５Ｂ】図５Ｂは、プロセッサユニットの第２タイプの評価モードを示す図５のプロセッサユニットの変更回路図である。
【図５Ｃ】図５Ｃは、プロセッサユニットの第１タイプの記憶モードを示す図５のプロセッサユニットの変更回路図である。
【図５Ｄ】図５Ｄは、プロセッサユニットの第２タイプの記憶モードを示す図５のプロセッサユニットの変更回路図である。
【図５Ｅ】図５Ｅはプロセッサユニットの第１タイプのロードモードを示す図５のプロセッサユニットの変更回路図である。
【図５Ｆ】図５Ｆは、プロセッサユニットの第２タイプのロードモードを示す図５のプロセッサユニットの変更回路図である。
【図５Ｇ】図５Ｇは、プロセッサユニットの第１タイプの非動作モードを示す図５のプロセッサユニットの変更回路図である。
【図６Ａ】図６Ａは、本発明の第４実施態様によるシミュレーションプロセッサの単一プロセッサユニットを示す回路図であり、プロセッサ要素は、第１タイプの非動作モードでＡＯＩ３機能を実行する。
【図６Ｂ】図６Ｂは、プロセッサ要素のＡＯＩ３機能を詳細に示す回路図である。
【図６Ｃ】図６Ｃは、本発明の第４実施態様によるシミュレーションプロセッサの単一プロセッサユニットを示す回路図であり、プロセッサ要素は、第２タイプの非動作モードでＡＯＩ３機能を実行する。
【図７Ａ】図７Ａは、本発明の第５実施態様によるシミュレーションプロセッサの単一プロセッサユニットを示す回路図であり、プロセッサ要素は、第１タイプの非動作モードでマルチプレクサ（ＭＵＸ）機能を実行する。
【図７Ｂ】図７Ｂは、プロセス要素のＭＵＸ機能を詳細に示す回路図である。
【図７Ｃ】図７Ｃは、本発明の第５実施態様によるシミュレーションプロセッサの単一プロセッサユニットを示す回路図であり、モード。
【図８】図８は、本発明の第６実施態様によるシミュレーションプロセッサの単一プロセッサユニットを示す回路図である。
【図９Ａ】図９Ａは、図３の実施態様を生成する象徴的な図である。
【図９Ｂ】図９Ｂは、図８の実施態様を生成する象徴的な図である。
【図１】
2009514070.tif 000008
【図２】
2009514070.tif 000009
【図３】
2009514070.tif 000010
【図３Ａ】
2009514070.tif 000011
【図３Ｂ】
2009514070.tif 000012
【図３Ｃ】
2009514070.tif 000013
【図３Ｄ】
2009514070.tif 000014
【図４】
2009514070.tif 000015
【図５】
2009514070.tif 000016
【図５Ａ】
2009514070.tif 000017
【図５Ｂ】
2009514070.tif 000018
【図５Ｃ】
2009514070.tif 000019
【図５Ｄ】
2009514070.tif 000020
【図５Ｅ】
2009514070.tif 000021
【図５Ｆ】
2009514070.tif 000022
【図５Ｇ】
2009514070.tif 000023
【図６Ａ】
2009514070.tif 000024
【図６Ｂ】
2009514070.tif 000025
【図６Ｃ】
2009514070.tif 000026
【図７Ａ】
2009514070.tif 000027
【図７Ｂ】
2009514070.tif 000028
【図７Ｃ】
2009514070.tif 000029
【図８】
2009514070.tif 000030
【図９Ａ】
2009514070.tif 000031
【図９Ｂ】
2009514070.tif 000032