JP2009514070A - 局所キャッシュとしてシフトレジスタを使用する論理シミュレーション用のハードウェア加速システム - Google Patents
局所キャッシュとしてシフトレジスタを使用する論理シミュレーション用のハードウェア加速システム Download PDFInfo
- Publication number
- JP2009514070A JP2009514070A JP2008533384A JP2008533384A JP2009514070A JP 2009514070 A JP2009514070 A JP 2009514070A JP 2008533384 A JP2008533384 A JP 2008533384A JP 2008533384 A JP2008533384 A JP 2008533384A JP 2009514070 A JP2009514070 A JP 2009514070A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- multiplexer
- output
- shift register
- simulation
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
シミュレーションプロセッサは、複数のプロセッサユニット、およびプロセッサユニットを互いに通信可能に結合する相互接続システムを備える。各々のプロセッサユニットは、少なくとも1つの論理動作をシミュレートするように構成されるプロセッサ要素と、論理シミュレーション時に生成される中間値を記憶するためのシフトレジスタとを備える。各々のプロセッサユニットは、シフトレジスタのエントリの1つを、相互接続システムに結合される出力として選択するための1つまたは複数のマルチプレクサをさらに備える。各々のプロセッサユニットは、シフトレジスタをバイパスして、プロセッサ要素の出力を相互接続システムに直接供給するための経路を提供するために、プロセッサ要素の出力と相互接続システムとの間に結合される1つまたは複数のバイパスマルチプレクサを備えても良い。
Description
本発明は、一般に、VLIW(超長命令語)プロセッサに関し、たとえば、論理シミュレーション用のハードウェア加速システムに使用されるシミュレーションプロセッサを含む。詳細には、本発明は、シフトレジスタを局所キャッシュとしてこのようなプロセッサに使用することに関する。
論理設計のシミュレーションは、現代の半導体チップの論理設計に一般に見られる多数のゲートおよび動作、並びに高速動作により、高処理速度および多数の動作を要する。論理シミュレーションの1つの方法は、論理が、汎用ハードウェア上で実行されるコンピュータソフトウェアによってシミュレートされるソフトウェアベースの論理シミュレーション(つまり、ソフトウェアシミュレーション)である。残念ながら、ソフトウェアシミュレータは、一般に非常に低速である。論理シミュレーションのもう1つの方法は、半導体チップの論理が、エミュレータ内のハードウェア回路に専用的にマッピングされ、そして、ハードウェア回路がシミュレーションを実行するハードウェアベースの論理シミュレーション(つまり、ハードウェアエミュレータ)である。残念ながら、エミュレータは、一般に、エミュレータ内のハードウェア回路の数は、シミュレートされた論理設計のサイズに応じて増加するため、高額のコストを要する。
論理シミュレーションのためのさらにもう1つの方法は、ハードウェア加速シミュレーションである。ハードウェア加速シミュレーションは、一般に、論理設計をエミュレートあるいはシミュレートするように構成可能なプロセッサ要素を備える特殊なハードウェアシミュレーションシステムを使用する。コンパイラは、一般に、論理設計(たとえば、ネットリストまたはRTL(レジスタ転送言語)の形式を、論理設計をシミュレートするためにプロセッサ要素にロードされる命令を含むプログラムへと変換するように設けられる。
ハードウェア加速シミュレーションは、論理設計のサイズに対して比例的に倍率変更する必要はなく、なぜなら、論理設計を比較的小部分に分散させ、次に論理設計のこれらの部分をシミュレーションプロセッサにロードするために、様々な技術が利用されるからである。したがって、ハードウェア加速シミュレータは、一般に、ハードウェアエミュレータと比べて著しく安価である。さらに、ハードウェア加速シミュレータは、一般に、シミュレーションプロセッサによって生じるハードウェア加速により、ソフトウェアシミュレータより高速である。
しかし、ハードウェア加速シミュレータは、通常、命令をシミュレーションプロセッサ上にロードして実行する必要があり、これらの命令をロードするためのデータ経路は性能ボトルネックである。たとえば、シミュレーションプロセッサは、各々が、論理シミュレーション時に生成された中間値を記憶するための局所キャッシュとして、アドレス可能なレジスタを備える多数のプロセッサ要素を備えることが可能である。レジスタは、中間値が記憶される特定のメモリセルの位置を決定するための入力アドレス信号を必要とする。この入力アドレス信号は、一般に、プロセッサ要素に送信される命令の一部として含まれ、命令の長さを著しく増加させ、命令帯域ボトルネックを悪化させる可能性がある。
たとえば、2N メモリセルを有する局所キャッシュレジスタから1つのメモリセルから選択するために(つまり、レジスタの「深さ」が2N、たとえば、「深さ」は、N=8の場合は256)、少なくともNビットの入力アドレス信号が必要である。これらのビットが命令の一部として含まれている場合、命令の長さは、各々のプロセッサユニットに関して少なくともNビット増加する。このアーキテクチャが、プロセッサユニットごとに(非共用局所キャッシュ)入手可能であると仮定すると、シミュレーションプロセッサがn個のプロセッサ要素を含む場合、合計n×Nビットが命令語の全体のサイズに追加される(たとえば、n=128およびN=8の場合、これは、さらに1024ビットになる)。ハードウェア側では、レジスタがアドレス可能であることを可能にするため、追加の回路が必要になる。その結果、シミュレーションプロセッサのコスト、サイズ、および複雑さが増すことになる。
したがって、様々なタイプの局所キャッシュメモリを使用し、シミュレーションプロセッサによって使用される命令のビットが少なくて済むシミュレーションプロセッサに対する需要がある。また、追加の回路構成、たとえば、シミュレーションプロセッサのレジスタのアドレス可能性をサポートするための入力マルチプレクサなどの必要性をなくすか、あるいは少なくとも減少させるシミュレーションプロセッサに対する需要が存在する。
(発明の概要)
本発明は、論理動作の論理シミュレーションを実行するシミュレーションプロセッサを提供し、論理シミュレーション時に、このシミュレーションプロセッサによって生成された中間値がシフトレジスタ内に記憶される。このシミュレーションプロセッサは、複数のプロセッサユニット、およびプロセッサユニットを互いに通信可能に結合する相互接続システム(たとえば、クロスバー)を備える。アドレス可能なレジスタと対照的に、シフトレジスタを局所キャッシュとして使用すると、命令長を減少させ、シミュレーションプロセッサのハードウェアの設計を単純化する。
本発明は、論理動作の論理シミュレーションを実行するシミュレーションプロセッサを提供し、論理シミュレーション時に、このシミュレーションプロセッサによって生成された中間値がシフトレジスタ内に記憶される。このシミュレーションプロセッサは、複数のプロセッサユニット、およびプロセッサユニットを互いに通信可能に結合する相互接続システム(たとえば、クロスバー)を備える。アドレス可能なレジスタと対照的に、シフトレジスタを局所キャッシュとして使用すると、命令長を減少させ、シミュレーションプロセッサのハードウェアの設計を単純化する。
各々のプロセッサユニットは、少なくとも1つの論理動作をシミュレートするように構成可能なプロセッサ要素と、プロセッサ要素に関連付けられ、プロセッサ要素の作動時に中間値を記憶する複数のエントリを含むシフトレジスタとを備える。シフトレジスタは、プロセッサ要素の出力を受信するように結合される。
各々のプロセッサユニットは、選択信号に応じてシフトレジスタのエントリを選択する任意の数のマルチプレクサを任意に備えて良い。選択されたエントリは、次に、様々なロケーション、たとえば、相互接続システムを介して他のプロセッサユニットの入力に経路指定される。各々のプロセッサユニットは、シフトレジスタからのデータを記憶し、データをシフトレジスタにロードする、ある意味ではシフトレジスタに対するオーバフローメモリとして作用するように、シフトレジスタに関連する局所メモリを任意に備える。
本発明の様々な実施態様では、各々のプロセッサユニットは、以下の1つ以上をさらに備える:第1選択信号に応じて、プロセッサ要素の出力、またはシフトレジスタの最後のエントリをシフトレジスタに対する入力として選択する第1マルチプレクサ、第2選択信号に応じて、シフトレジスタのエントリの1つを選択する第2マルチプレクサ、第3選択信号に応じて、もう1つのシフトレジスタのエントリを選択する第3マルチプレクサ、第4選択信号に応じて、プロセッサ要素の出力、または局所メモリの出力を選択する第4マルチプレクサ、第5選択信号に応じて、第2マルチプレクサの出力、またはシフトレジスタの最後のエントリを選択する第5マルチプレクサ、出力選択信号を選択する第6マルチプレクサ。
本発明の第2実施態様では、各々のプロセッサユニットは、第1選択信号に応じて、シフトレジスタの中間エントリ、またはシフトレジスタの最後のエントリを選択する第1マルチプレクサと、第2選択信号に応じて、プロセッサ要素の出力、または第1マルチプレクサの出力をシフトレジスタに対する入力として選択する第2マルチプレクサとをさらに備える。プロセッサユニットは、プロセッサ要素からのデータを記憶し、データをプロセッサ要素にロードするためのシフトレジスタに関連する局所メモリと、第3選択信号に応じて、シフトレジスタのエントリの1つを選択する第3マルチプレクサと、第3選択信号より1つ多くのビットを有する第4選択信号に応じて、シフトレジスタのもう1つのエントリを選択する第4マルチプレクサと、第5選択信号に応じて、プロセッサ要素の出力、または局所メモリの出力を選択する第5マルチプレクサと、第1選択信号に応じて、第3マルチプレクサの出力、または第1マルチプレクサの出力を選択する第6マルチプレクサと、第1選択信号に応じて、第4マルチプレクサの出力、または第5マルチプレクサの出力を選択する第7マルチプレクサをさらに備える。
本発明のシミュレーションプロセッサの場合、シフトレジスタは入力アドレス信号を必要としないため、命令長を減少させるという利点を有する。また、入力マルチプレクサは、必ずしもシフトレジスタのセルを選択する必要はない。本発明のシミュレーションプロセスは、プロセッサ要素の記憶モードおよびロードモードが、評価モードに対して非ブロッキングであるように、シフトレジスタが局所メモリと相互接続されるという追加の利点を有する。つまり、記憶モードおよびロードモードは、評価モードと同時に実行される。
本発明の第3実施態様では、各々のプロセッサユニットは、プロセッサ要素の出力と相互接続システムとの間に結合された1つ以上の第1経路マルチプレクサであって、この第1経路マルチプレクサが、シフトレジスタをバイパスして、プロセッサ要素の出力を相互接続システムに直接提供する第1経路マルチプレクサと、シフトレジスタと相互接続システムとの間に結合された1つ以上の第2経路マルチプレクサであって、各々の第2経路マルチプレクサが、シフトレジスタのエントリの1つを選択し、さらに、シフトレジスタをバイパスし、相互接続システムに直接供給されるようにプロセッサ要素の出力を転送する第2経路マルチプレクサをさらに備える。これは、シミュレーションプロセッサが、1つ少ないサイクルでシミュレーションを実行することを可能にし、なぜなら、シフトレジスタを評価するための1つのサイクルは、シフトレジスタがバイパスされる時に排除することができるからである。
本発明のその他の態様としては、上記のデバイスに対応するシステム、これらのデバイスおよびシステムの用途、並びに上記のすべてに対応する方法が挙げられる。本発明のもう1つの態様は、論理シミュレーション以外の目的は別として、シフトレジスタを局所キャッシュとして使用するVLIWプロセッサを含む。
本発明の教示は、添付の図面に関連して以下の詳細な説明を考察することによって、容易に理解することができる。類似の参照符号は、添付の図面中で類似の要素に使用される。
これらの図は、単に説明するために本発明の実施態様を表す。当業者は、本明細書に記載されている本発明の原理から逸脱することなく、本明細書に図示する構造および方法の別の実施態様を使用することができることを、以下の説明から容易に認識するであろう。
図1は、本発明の一実施態様によるハードウェア加速論理シミュレーションシステムを示すブロック図である。論理シミュレーションシステムは、専用ハードウェア(HW)シミュレータ130、コンパイラ108、およびAPI(アプリケーションプログラミングインターフェース)116を備える。コンピュータ110は、CPU114およびメインメモリ112を備える。API116は、ホストコンピュータ110がシミュレーションプロセッサ100を制御するソフトウェアインターフェースである。専用HWシミュレータ130は、プログラムメモリ121、記憶メモリ122、およびシミュレーションプロセッサ100を含み、このシミュレーションプロセッサ100は、プロセッサ要素102、埋め込み局所メモリ104、ハードウェア(HW)メモリインターフェースA142、およびハードウェア(HW)メモリインターフェースB144を含む。
図1に示すシステムは、以下のとおり動作する。コンパイラ108は、ユーザチップまたは論理設計の記述106、たとえばRTL(レジスタ転送言語)記述、または論理設計のネットリスト記述を受信する。記述106は、一般に、論理設計を有向グラフとして表現し、グラフのノードは、設計図ではハードウェアブロックに対応する。コンパイラ108は、論理設計の記述106をプログラム109として編集し、論理設計106をプロセッサ要素102にマッピングし、論理設計106をシミュレートする。プログラム109は、チップの設計106自体を表現するほかに、論理設計106をシミュレートするテスト環境(テストベンチ)も備える。実例のコンパイラ108のその他の説明は、本願と図面が対応している2003年6月5日に発行された米国特許出願公開第2003/01 056 17号「Hardware acceleration system for logic simulation」を参照。プログラム109の命令は、メインメモリ112内に記憶される。
シミュレーションプロセッサ100は、論理設計106の論理ゲート、並びにプロセッサ要素102の命令およびデータを記憶するための局所メモリ104をシミュレートするための複数のプロセッサ要素102を備える。一実施態様では、HWシミュレータ130は、PCI(周辺構成要素相互接続)およびDMA(直接メモリアクセス)コントローラを含むFPGA(フィールドプログラマブルゲートアレイ)を使用して、一般的なPCIボード上に実装され、HWシミュレータ130は、必然的に汎用計算システム110に接続される。シミュレーションプロセッサ100は、HWシミュレータ130の一部分を形成する。したがって、シミュレーションプロセッサ100は、ホストコンピュータ110のメインメモリ112に対する直接アクセスを有し、その動作は、API116を介してホストコンピュータ110によって制御される。ホストコンピュータ110は、HWシミュレータ130上のメインメモリ112とメモリ121、122との間の直接DMA転送を指示することが可能だが、メインメモリ112とメモリ122との間のDMAは任意である。
ホストコンピュータ110は、ユーザが指定するシミュレーションベクトル(図示しない)、およびコンパイラ108が生成したプログラム109を入力として取り、シミュレーションプロセッサ100に対するボードレベルの命令118を生成する。シミュレーションベクトル(図示しない)は、シミュレートされるネットリスト106に対する入力の値を含む。ボードレベルの命令118は、メインメモリ112からDMAによって、HWシミュレータ130のメモリ121に転送される。メモリ121は、メインメモリ112に転送するシミュレーションの結果120も記憶する。メモリ122は、ユーザメモリデータを記憶し、あるいは(任意に)シミュレーションベクトル(図示しない)、または結果120を記憶する。メモリインターフェース142、144は、それぞれメモリ121、122にアクセスするためのインターフェースをプロセッサ要素102に提供する。
プロセッサ要素102は命令118を実行し、ある時点で、やはりDMAによってシミュレーションの結果120をコンピュータ110に返す。中間の結果は、ボード上に留まり、後続の命令によって使用される。すべての命令118の実行は、1つのシミュレーションベクトルに対する全体のネットリスト106をシミュレートする。図1に示すハードウェア加速シミュレーションの動作に関するさらに詳細な説明は、2003年6月5日に発行された米国特許出願公開第2003/0105617号に記載されており、この特許出願は、引用することにより本明細書に全体的に援用する。
図2は、本発明の一実施態様によるハードウェア加速論理シミュレーションシステム内のシミュレーションプロセッサ100を示すブロック図である。シミュレーションプロセッサ100は、相互接続システム101を介して互いに通信するn個のプロセッサユニット103(プロセッサユニット1、プロセッサユニット2、・・・、プロセッサユニットn)を含む。
この実施例では、相互接続システムは、非ブロッキングクロスバーである。たとえば、各々のプロセッサユニットは、クロスバーから2つの入力を取り上げることができ、n個のプロセッサユニットの場合、2n個の入力信号が利用可能であり、入力信号は、2n個の信号(スラッシュおよび記号「2n」を含む受信側矢印によって示される)から選択可能でなければならない。各々のプロセッサユニットは、クロスバーに対する2つの出力(スラッシュおよび記号「1」を含む送信側矢印により示される)も生成する必要がある。n個のプロセッサユニットの場合、これは、2n個の出力信号を生成する。したがって、クロスバーは、2n個(プロセッサユニットからの出力)×2n個(プロセッサユニットへの入力)のクロスバーであり、各々のプロセッサユニット103の各々の入力が、何れかのプロセッサユニット103の何れかの出力に結合することを可能にする。このようにして、1つのプロセッサユニットによって計算される中間値は、他の何れかのプロセッサユニットにより、計算の際に入力として利用することが可能である。各々が2個の入力を有するn個のプロセッサユニットから成るシミュレーションプロセッサの場合、非ブロッキングアーキテクチャのクロスバーにおいて、2n個の信号が選択可能でなければならない。各々の処理ユニットが同じである場合、これらの処理ユニットは、2つの変数をクロスバーに提供する。これは、2n個×2n個のクロスバーを生じる。ブロッキングアーキテクチャ、不均質なアーキテクチャ、最適化アーキテクチャ(特定の設計スタイルの場合)、または共用アーキテクチャ(プロセッサユニットはアドレスビットを共用するか、あるいはクロスバー内への入力もしくは出力ラインを共用する)などは、2n個×2n個のクロスバーに従う必要はないと思われる。したがって、クロスバーの多くのその他の組合せも可能である。これは、2n個×2n個のクロスバーを説明しているが、プロセスユニット内のプロセッサ要素(PE)は、3つ以上の入力(および出力)に拡大適用され、この場合、Mn個×Mn個のクロスバーが使用され、ここでMは、各々のPE上の入力(および出力)の数、並びにnはPEの数である。
図3および4を参照するとさらに詳細に分かるとおり、各々のプロセッサユニット103は、プロセッサ要素(PE)、シフトレジスタ、および局所メモリ104の対応部分をそのメモリとして備える。したがって、各々のプロセッサユニット103は、論理設計106の少なくとも1つの論理ゲートをシミュレートし、中間または最終シミュレーション値をシミュレーション時に記憶するように構成することができる。
図3は、本発明の第1実施態様によるハードウェア加速論理シミュレーションシステム内のシミュレーションプロセッサ100の1つのプロセッサユニット103を示す回路図である。各々のプロセッサユニット103は、304、306、310、312、314、316、320、324、およびフリップフロップ318、322を備える。プロセッサユニット103は、命令118によって制御される(図3の382に示す)。命令382は、この実施例ではフィールドP0、P1、Boolean Func、EN、XB0、XB1、およびXtra Memを有する。各々のフィールドXには、Xビットの長さを持たせる。次に、命令長は、この実施例ではP0、P1、Boolean Func、EN、XB0、XB1、およびXtra Memの和である。
クロスバー101は、プロセッサユニット103を相互接続する。クロスバー101は2n個のバスラインを有し、シミュレーションプロセッサ100内のPE302またはプロセッサユニット103の数がn個である場合、各々のプロセッサユニットは2つの入力、およびクロスバーに対する2つの出力を有する。2状態の実装の場合、nは、2進(0または1)のn個の信号を表す。4状態の実装の場合、nは、4状態コード化(0、1、XもしくはZ)または二重ビットコード化されているn個の信号(たとえば、00、01、10、11)を表す。この場合、実際には、接続されている2n個の電気(2進)信号が存在しているが、nはn個の信号も意味する。同様に、3ビット符号化(8状態)の場合は、3n個の電気信号が存在し、以下同様である。
PE302は、構成可能なALU(算術論理演算ユニット)であり、2つ以下の入力(たとえば、NOT、AND、NAND、OR、NOR、XOR、定数1、定数0など)を含む任意の論理ゲートをシミュレートするように構成することができる。PE302がシミュレートする論理ゲートのタイプは、特定タイプの論理ゲートをシミュレートするようにPE302をプログラムするBoolean Funcによって決まる。Boolean Func内のビット数は、部分的には、PE302がシミュレートする様々なタイプの一意の論理ゲートの数によって決まる。たとえば、各々の入力が2状態論理(つまり、0または1の単一ビット)であり、出力も2状態である場合、対応する真理値表は2×2真理値表(各々の入力に可能な値が2つ)であり、真理値表に2×2=4の可能なエントリが存在する。真理値表の各々のエントリは、2つの可能な値(各々の出力に2つの可能な値)の1つを取ることができる。したがって、合計2∧4=16の可能な真理値表が存在し、実装可能である。すべての真理値表が実装され、真理値表がすべて一意であり、Boolean Funcが直接的にコード化される場合、Boolean Funcは、どの真理値表(つまり論理関数)を実装するかを指定するために4ビットを要するであろう。同様に、数Boolean Funcは、この実施例では4ビットに相当するであろう。回路構成が変更された4状態論理に5ビットのみのBoolean Funcを有することも可能であることに注意する。
マルチプレクサ304は、P0ビットを有する選択信号P0、およびP1ビットを有するマルチプレクサの選択信号P1に応じて、クロスバー101の2n個のバスラインの1つから入力データを選択する。PE302は、マルチプレクサ304、306によって演算数として選択された入力データを受信し、Boolean Func信号によって指示された構成論理関数に従ってシミュレーションを実行する。2つの入力を有するE302の選択は1つの実装であり、PEが3つ以上の入力を有することも可能である。
図3の実施例では、すべてのプロセッサユニット103の各々のマルチプレクサ304、306は、2n個のバスラインの何れかを選択することができる。クロスバー101は完全に非ブロッキングであり、包括的に接続される。これは、すべての実装に必要なわけではない。たとえば、プロセッサユニット103のいくつかは、比較的限られた接続性を有するように設計され、いくつかのみで全部ではないプロセッサユニット103、あるいは他のプロセッサユニット103のいくつかのみで全部ではない出力ラインに対する接続が可能である。また、同じプロセッサユニットに対する様々な入力ラインは、様々な接続性を有する。たとえば、マルチプレクサ304は、2n個のどのバスラインに対しても完全な接続性を有するように設計されるが、マルチプレクサ306は、比較的限られた接続性を有するように設計される。
さらに、選択信号P0およびP1は、この場合は別個の信号として表されており、一方はマルチプレクサ304に対する入力を選択し、他方はマルチプレクサ306に対する入力を選択する。これも、必須ではない。入力を選択するための情報は、1つのフィールド(P01と呼ばれる)に結合されるか、または他のフィールドとも結合される。たとえば、これは、命令のより効率的なコード化を可能にし、その結果命令長を短縮することを可能にする。
シフトレジスタ308は、yの深さを有し(yメモリセルを有する)、シミュレーションプロセッサ100内のPE302が、論理設計106の多数のゲートを複数サイクルでシミュレートする際に生成された中間値を記憶する。一般的なレジスタ以外のシフトレジスタ308を使用すると、シフトレジスタ308の特定のメモリセルを選択するために、入力アドレス信号が不要であるという利点がある。図3は、深さyの1つのシフトレジスタ308を示しているが、別の実施態様は複数のシフトレジスタを使用することが可能である。1つの方法では、1つのシフトレジスタ308は、たとえば、出力側に比較的多くのメモリアクセスが可能であるように再生される。重複するシフトレジスタは、異なる深さを有する場合がある。たとえば、下半分(新鮮ではないデータを記憶する)よりも、上半分(比較的新鮮なデータを記憶する)における活動性が大きい場合、シフトレジスタの上半分のみが再生される。
図3に示されている実施態様の場合、マルチプレクサ310は、PE302の出力371〜373、またはシフトレジスタ308の最後のエントリ363〜364を信号ENのビットen0に応じて選択し、シフトレジスタ308の最初のエントリは、マルチプレクサ308の出力350を受信する。出力371の選択は、PE302の出力をシフトレジスタ308に転送することを可能にする。最後のエントリ363の選択は、シフトレジスタ308の最後のエントリ363が、シフトレジスタ308の終わりから落ちて失われるのではなく、シフトレジスタ308の上部に再循環することを可能にする。このようにして、シフトレジスタ308は、リフレッシュされる。
マルチプレクサ310は任意であり、シフトレジスタ308は、他の実施態様のPE302から直接入力データを受信することができる。さらに、図3では、シフトレジスタ308の最初のエントリは、マルチプレクサ310を通してPE302の出力371〜373を受信するように結合されているが、図3の回路は、シフトレジスタのエントリ308の1つが、PE302の出力371〜373を直接、またはマルチプレクサ310を通して受信できるように変更しても良い。シフトレジスタ308および/またはその他のシフトレジスタに対するエントリ点は、複数存在することも可能である。
シフトレジスタ308の出力側では、マルチプレクサ312は、XB0ビットをシフトレジスタ308の1つの出力352として選択信号XB0に応じて、シフトレジスタ308のyメモリセルの1つを選択する。同様に、マルチプレクサ314は、シフトレジスタ308のもう1つの出力358としてXB1ビットを有する選択信号XB1に応じて、シフトレジスタ308のyメモリセルの1つを選択する。マルチプレクサ316および320の状態に応じて、選択された出力はクロスバー101に経路指定して、プロセッサユニット103のデータ入力によって消費することが可能である。
この特定の実施例は、各々がシフトレジスタ内のどこかから選択することが可能な2つのシフトレジスタ出力352および358を示す。別の実施態様は、異なる数の出力、シフトレジスタに対する異なるアクセス(図4で説明する)、および異なる経路指定を使用することが可能である。たとえば、シフトレジスタ308からのすべての出力が、クロスバー101に経路指定可能である必要はない。出力によっては、プロセッサユニット103内において内部で限定的に経路指定される。もう1つの実施例では、図3の実施態様は1つのシフトレジスタ308を使用し、シフトレジスタ308の出力は、2つのマルチプレクサ312,314によってアクセスされるが、2つの別個のシフトレジスタを有し、2つの別個のマルチプレクサの各々が、2つの別個のマルチプレクサの一方の出力にアクセスすることも可能である。このような場合、2つのシフトレジスタ内に記憶されたデータの内容は、同じであるように複製されるであろう。また、2つの別個のマルチプレクサを制御する信号は、異なる長さを有する場合がある。
メモリ326は、データを記憶するための入力ポートDIおよび出力ポートDOを有し、シフトレジスタ308が、そのサイズが限られていることによって溢れることを可能にする。つまり、シフトレジスタ308内のデータは、メモリ326からロードされるか、および/またはメモリ326内に記憶される。記憶される中間信号値の数は、メモリ326の全体のサイズによって制限される。メモリ326は比較的安価で迅速であるため、このスキームは、論理シミュレーションに対する拡張可能、迅速かつ安価な解決方法を提供する。
メモリ326は、XB0、XB1およびXtra Memから成るアドレス信号377によってアドレス指定される。信号XB0およびXB1は、それぞれマルチプレクサ312および314に対する選択信号としても使用された。したがって、これらのビットは、命令の他の部分によって異なる意味を有する。これらのビットは、1つには全体の命令382の一部として、1つには380の一部として図3に2通り示されており、メモリ326をアドレス指定するために使用されることを示している。
入力ポートDIは、PE302の出力371〜372〜374を受信するように結合される。シフトレジスタ308に転送されるPE302によって計算される中間値は、yシフトの後、シフトレジスタ308の端部から脱落する(再循環されないと仮定した場合)。したがって、最終的に使用されるが、yシフトが生じる前には使用されない中間値の実行可能な代案は、PE302を直接メモリ326に転送し、シフトレジスタ308を全体的にバイパスすることである(しかし、この値は、経路371〜372〜376〜368〜362を介してクロスバー101に同時に利用可能である)。別個のデータ経路では、シフトレジスタ308に転送される値は、その後、値をシフトレジスタ308からクロスバー101に出力し(データ経路352〜354〜356または358〜360〜362を介して)、次に、PE302を介して、値をメモリ326に再転送することによってメモリ326に移動される。シフトレジスタ308の端部から脱落する値は、類似する経路363〜370〜356によってメモリ326に移動させることができる。
出力ポートDOは、マルチプレクサ324に結合される。マルチプレクサ324は、信号ENのビットen0の補数(〜en0)に応じて、PE302の出力371〜372〜376、またはメモリ326の出力366を出力368として選択する。この実施例では、信号ENは、2つのビット:en0およびen1を含む。マルチプレクサ320は、信号ENの別のビットen1に応じて、マルチプレクサ324の出力368、またはマルチプレクサ314の出力360を選択する。マルチプレクサ316は、信号ENのもう1つのビットen1に応じて、マルチプレクサ312の出力354、またはシフトレジスタ308の最後のエントリ363、370を選択する。フリップフロップ318、322は、クロスバー101に対する出力のために、それぞれマルチプレクサ316、320の出力356、362をバッファする。
図3に示す命令382を参照すると、このフィールドは、通常、以下のように分割することができる。P0およびP1は、PE302に対するクロスバーからの入力を判断する。ENは、主に、以下に詳細に説明されている2ビットオプコードである。Boolean Funcは、PE302によって実装される論理ゲートを決定する。XB0、XB1およびXtra Memは、クロスバー101に対するプロセッサユニットの出力を決定するか、またはメモリ326のメモリアドレス377を決定する。Xtra Memは必須のビットではなく、Xtra Mem=0も有効な条件である。
一実施態様では、4つの異なる動作モード(評価、非動作モード、記憶、およびロード)は、以下の表1に示すとおり、信号ENのビットen1およびen0に従って、プロセッサユニット103内でトリガすることができる:
図3Aは、シミュレーションプロセッサ100の評価モード(en1=0およびen0=0)を示す。このモードの主な機能は、PE302が論理ゲートをシミュレートすることである(つまり、2つの入力を受信し、2つの入力に関して特定の論理関数を実行して、出力を生成する)。図3Aに示すマルチプレクサの選択肢は、論理ゲートの評価と関連して使用されると思われるデータ経路を提供するために選択される。特に、(i)ビットen0=0で、マルチプレクサ310はPE302の出力371〜373を選択し、(ii)ビットen1=0で、マルチプレクサ316は、マルチプレクサ312の出力354を選択し、またマルチプレクサ320は、マルチプレクサ314の出力360を選択し、(iii)XB0およびXB1は、メモリ326にアドレス指定するのではなく、マルチプレクサ312および314に対する入力として使用される。
したがって、評価モード時、PE302は、マルチプレクサ304および306によって出力される入力演算数に基づいて論理ゲートをシミュレートし、他のプロセッサユニット103による使用のために最終的にクロスバー101に出力される中間値をシフトレジスタ308内に記憶する。同時に、マルチプレクサ312および314は、次のサイクルでプロセッサユニットに対する入力として使用されるエントリをシフトレジスタ308から選択できる。
図3Bは、シミュレーションプロセッサ100の非動作モード(en1=0およびen0=1)を示す。このモードでは、PE302は、非動作モードを実行する。このモードは、たとえば、その他のプロセッサユニットが、このシフトレジスタ308からのデータに基づく評価機能であるが、このPEがアイドリングである場合に役立つ。マルチプレクサの選択肢は、以下のように選択される:(i)ビットen0=1で、マルチプレクサ310は、シフトレジスタ308の最後のエントリ363〜364を選択し、(ii)ビットen1=0で、図3Aと同じ選択が行われ、(iii)XB0およびXB1は、メモリ326にアドレス指定されるのではなく、マルチプレクサ312および314に対する入力として使用される。
非動作モード時、PE302はどのゲートもシミュレートせず、シフトレジスタ308はリフレッシュされ、シフトレジスタ308の最後のエントリは、シフトレジスタ308の最初のエントリに再循環される。同時に、データは、経路352〜354〜356および358〜360〜362を介してシフトレジスタ308から読み取ることができる。
図3Cは、シミュレーションプロセッサ100のロードモード(en1=1およびen0=0)を示す。このモードの主な機能は、データを局所メモリ326からロードすることである。マルチプレクサの選択肢は、以下のように選択する:(i)ビットen1=1で、マルチプレクサ320は、マルチプレクサ324の出力368を選択し、ビット〜en0=1で、マルチプレクサ324はメモリ326の出力366を選択し、(ii)ビットen0=1で、マルチプレクサ310は、PE302の出力371〜373を選択し、(iii)ビットen1=1で、マルチプレクサ316は、シフトレジスタ308の最後のエントリ363〜370を選択する。また、局所メモリ326は、メモリアドレス信号377(フィールドXB0、XB1およびXtra Mem)によってアドレス指定され、特定のメモリセルをメモリ出力366として選択する。
このモード時、データは、メモリ326からクロスバー101にロードされてプロセッサユニットによって使用され、同時に、PE302は論理関数の評価を実行し、結果をシフトレジスタ308内に記憶することができる。多くの別の方法では、PEによる評価、およびメモリからのロードは、この場合のように同時に実行することはできない。この実施例では、局所メモリ326からのデータのロードは、PE302の動作を妨げない。
図3Dは、シミュレーションプロセッサ100の記憶モード(en1=1およびen0=1)を示す。このモードの主な機能は、データを局所メモリ326に記憶することである。このモードでは、局所メモリ326がメモリアドレス信号377によってアドレス指定され、記憶が行われる。したがって、記憶モード時、PE302の出力データ371〜372〜374は、局所メモリ326内に記憶することができる。マルチプレクサは、以下のように構成される:(i)ビットen1=1で、マルチプレクサ320は、マルチプレクサ324の出力368選択し、ビット〜en0=0で、マルチプレクサ324は、PE302の出力371〜372〜376を選択し、(ii)さらに、ビットen1=1で、マルチプレクサ316は、シフトレジスタ308の最後のエントリ363〜370を選択し、(iii)ビットen0=1で、マルチプレクサ310は、シフトレジスタ308の最後のエントリ363〜364を選択する。
記憶モードは、PE302の動作の非ブロッキングでもある。PE302は論理関数を評価することができ、結果として得られる値は、局所メモリ326内に直接記憶することができる。この値は、経路371〜372〜376〜368〜362を介してクロスバー101によって利用可能である。シフトレジスタ308内の最後のエントリも再循環可能であり、やはり、経路370〜356を介してクロスバーによって利用可能である。
図3に示すアーキテクチャの1つの利点は、ロードおよび記憶モードがPE302の動作を妨げないことである。つまり、ロードモードは、適切にはロードおよび評価モードと呼ぶことができ、記憶モードは、適切には記憶および評価モードと呼ぶことができる。これは、論理シミュレーションにとって重要である。論理シミュレーションは、一定のゲート数のシミュレーションを有する。したがって、より迅速に評価を実行することができ、より速く論理シミュレーションを完了することができる。1回のサイクルでロード/記憶および評価をサポートすることは、ロード/記憶が1つのサイクルを必要とし、評価が別個のサイクルを必要とする方法と比べて、迅速化が著しい。
図4は、本発明の第2実施態様によるハードウェア加速論理シミュレーションシステムにおけるシミュレーションプロセッサの1つのプロセッサユニット103を示す。各々のプロセッサユニット103は、プロセッサ要素(PE)302、シフトレジスタ308、メモリ326、マルチプレクサ304、306、310、312’、314’、316、320、324、386およびフリップフロップ318、322を備える。プロセッサユニット103は、フィールドP0、P1、Boolean Func、EN、XB0’、XB1’(XB1’=XB0’+1)、およびXtra Mem(任意)を有する命令383によって制御される。クロスバー101は、各々のプロセッサユニット103を相互接続する。クロスバー101は、2n個のバスラインを有し、シミュレーションプロセッサ100内のPE302またはプロセッサユニット103の数がn個である場合、各々のプロセッサユニットは2つの入力、およびクロスバーに対する2つの出力を有する。
図4に示すプロセッサユニットは、図3に示すものと同じだが、1つの著しい違いがある。図3では、マルチプレクサ312は、マルチプレクサ314と同様、シフトレジスタ308内の任意のyエントリを選択することが可能である。図4では、マルチプレクサ314’はシフトレジスタ308内のyエントリの何れかを選択することができ、マルチプレクサ312’は、シフトレジスタの上半分からしか選択することができない。マルチプレクサ312’は、y/2エントリのみをアドレス指定することができる。
より詳細には、マルチプレクサ386は、ビットen1に応じて、シフトレジスタ308の中間エントリ(y/2)388または最後のエントリ(y)390を選択するが、マルチプレクサ386は、その他の実施態様では、任意の2つのシフトレジスタのエントリ308を選択するように変更することができる。マルチプレクサ386の出力363は、図3の信号363に類似する役割を果たす。したがって、マルチプレクサ310は、ビットen0に応じて、PE302の出力371〜373、またはマルチプレクサ368の出力363〜364を選択し、シフトレジスタ308の最初のエントリは、マルチプレクサ310の出力350を受信する。さらに、マルチプレクサ312’は、選択信号XB0’に応じて、シフトレジスタ308のメモリセル(0〜y/2)の1つを選択し、マルチプレクサ314’は、選択信号XB1’に応じて、シフトレジスタ308のメモリセルのyメモリセルの1つを選択する。メモリ326は、ビットXB0’、XB1’を含むアドレス信号377によってアドレス指定される。
図4に示すこの方法は、グループ度XB0’、XB1’の利用の改善をもたらす。たとえば、先ず図3を参照して、yが2の冪であり、XB0=XB1=log(base2)yであると仮定する。さらに、Xtra Memが1ビットを有し、したがってXtra Mem=1であり、局所メモリに2∧(2XB0+1)の可能なアドレスが存在すると仮定する。次に、同じサイズの局所メモリだが、シフトレジスタが深さyではなく2yを有する図4の構造を考える。図4の量を指示する素数を使用する。次に、マルチプレクサ312’は、シフトレジスタの半分のみをアドレス指定するので、XB0’=XB0であり、全体のシフトレジスタをアドレス指定するには、図3と同じ数のビットが必要である。しかし、マルチプレクサ314’は、2倍多くのシフトレジスタのエントリをアドレス指定するため、XB1’=XB1+1である。したがって、Xtra Memフィールドは、図4では必要ない。図3のフィールドXB0、XB1、およびXtra Memを使用する代わりに、フィールドXB0’およびXB1’を図4で使用することができる。したがって、図4は、図3と同じ長さを有する命令を生じ(つまり、追加のビットが不要である)、シフトレジスタが2倍の局所メモリは同じサイズだが、シフトレジスタは2倍の深さを有する。これは、Xtra Memフィールドのビットを使用して、局所メモリのアドレス指定のほかに、シフトレジスタのアドレス指定を行うことによって達成される。図3では、これらのビットは、局所メモリのアドレス指定にのみ使用され、シフトレジスタのアドレス指定の際には無駄だった。
マルチプレクサ386は、中間エントリ388または最後のエントリ390を様々なモードで選択する。図4の実施例では、マルチプレクサ386は、シフトレジスタ308が、非動作モードで(en1=0およびen0=1)、経路388〜363〜364〜350を介して、中間エントリ388をシフトレジスタ308の上部に再循環させることによってリフレッシュされ、最後のエントリ390が、ロードモード時に(en1=1およびen0=0)、経路390〜363〜370〜356を介してクロスバー101に出力され、最後のエントリ390が、シフトレジスタ308の上部に再循環されて、記憶モード時に(en1=1およびen0=1)、クロスバー101に出力されるように構成される。
もう1つのビットが命令レジスタに追加されると、図4の実施態様を逆に図3の実施態様に拡張するために使用することができ、レジスタの深さは2yになる。その結果、提案されているアーキテクチャは、動作時にデータをインターリーブするため、シフトレジスタ308が、有用なより多くのデータを保持することを可能にする。
この同じビットを使用するもう1つの実施例は、このビットをプロセッサユニット内のステアリング制御に追加することであり、データのインターリーブによって、局所的なシフトレジスタ308の必要な深さを軽減することができる。命令レジスタ内の余分なプログラミングビットを使用して、図3の実施態様を図4の実施態様に拡張するのではなく、このビットは、図3の実施態様を拡張して図5の実施態様を得るようにステアリングするために使用することができる。図5の実施態様では、表1の4つのOpコードは、以下の表2に示されている8つのOpコードになる。
シフトレジスタのバイパスモードを可能にすることにより、データインターリーブ問題は軽減することができる。図5の実施態様では、直接ステアリング制御法は、表2に符号化されているように、en0、en1、およびen2のビット値を使用する。これは、単なる説明のためである。同じOpコードを使用して、ここに示す3つの制御ビット(en0、en1、およびen2)より多いビットを制御するさらに複雑な制御方法を設計することが可能である。
図5は、本発明の第3実施態様によるシミュレーションプロセッサの1つのプロセッサユニットを示す回路図である。図5に示すプロセッサユニットは、図3に示すものと同じだが、いくつかの著しい相違がある。図3のプロセッサユニットと比較して、図5のプロセッサユニットは、マルチプレクサ506、514、508をさらに備え、命令語530のEN出力信号は、動作モードを画定するための3ビット(en0、en1、en2)を有する。追加のイネーブル信号enAが含まれ、以下の公式を使用してen0およびen2から導かれる:enA=en0*en2+〜en0*〜en2。また、メモリ326は、図面で分かりやすくするために、Xtra Memビットがなく、XB0およびXB1からのみ成るアドレス532によってアドレス指定されていることに注意する。さらに図5、5A〜5Fでは、関連するマルチプレクサは、対応する制御ビット値が0の場合、一番上または一番左の入力が選択され、対応する制御ビット値が1である場合、一番下または一番右の入力が選択されるように示されている。
マルチプレクサ506は、ビットen0に応じて、PE302の出力371〜502、またはシフトレジスタ308の最初のエントリ504を選択する。マルチプレクサ514は、ビットenAに応じて、PE302の出力371〜502〜516、またはマルチプレクサ312の出力354を選択する。マルチプレクサ508は、ビット〜en1に応じて、マルチプレクサ506の出力512、またはマルチプレクサ514の出力518を選択する。マルチプレクサ508の出力520は、フリップフロップ510に入力される。マルチプレクサ324は、〜en0に応じて、PE302の出力371〜372〜376、またはメモリ326からの出力366を選択する。マルチプレクサ320は、en1に応じて、マルチプレクサ314の出力360、またはマルチプレクサ324の出力368を選択する。マルチプレクサ320の出力362は、フリップフロップ322に入力される。
マルチプレクサ506、514、508、324、320は、シフトレジスタ308をバイパスし、クロスバー101に直接供給されるように、PE302の出力371の経路を提供する。これは、図5のシミュレーションプロセッサが、図3のシミュレーションプロセッサと比べて1つ少ないサイクルで、シミュレーションを実行することを可能にし、なぜなら、シフトレジスタ308にアクセスするための1つのサイクルは、シフトレジスタ308がバイパスされた時になくすことができるからである。さらに、これは、インターリーブされたデータ処理ではなく、能率化されたデータ処理を可能にする。
図5A〜5Gは、表2に記載されている各々のモードを示す図5の変更回路図である。これらのダイアグラムでは、選択されないデータ経路は、このモード時のプロセッサユニットの動作をさらに明確に示すために削除されている。
図5Aは、図5のプロセッサユニットの変更回路図であり、プロセッサユニットの第1タイプの(評価−0)評価モード(en2=0、en1=0、およびen0=1)を示す。このモードでは、図5Aに示すマルチプレクサの選択肢は、おそらく論理動作の評価に関連して使用されると共に、さらに、PE302の出力371がシフトレジスタ308をバイパスするデータ経路を提供するように選択される。特に、(i)ビット〜en2=1で、マルチプレクサ310は、シフトレジスタの最後のエントリ364を選択し、(ii)ビットenA=0で、マルチプレクサ514は、PE302の出力371〜502〜516を選択し、(iii)ビット〜en1=1で、マルチプレクサ508は、マルチプレクサ514の出力518を選択し、(iv)ビットen1=0で、マルチプレクサ320は、マルチプレクサ314の出力360を選択し、(v)XB1は、メモリ326に対するアドレスではなく、マルチプレクサ314に対する入力として使用される。したがって、第1タイプ(評価−0)の評価モードでは、PE302は、マルチプレクサ304および306によって出力される入力演算数(input operand)に基づいて論理動作をシミュレートし、PE302によって出力される中間値371は、シフトレジスタ308をバイパスしてマルチプレクサ514内に供給され、最終的にクロスバー101に出力され、その他のプロセッサユニット103によって使用される。同時に、マルチプレクサ314は、次のサイクルでプロセッサユニットに対する入力として使用されるエントリをシフトレジスタ308から選択することができる。
図5Bは、図5のプロセッサユニットの変更回路図であり、プロセッサユニットの第2タイプ(評価−1)の評価モードである評価モード(en2=1、en1=0、およびen0=1)を示す。このモードでは、図5Bに示すマルチプレクサの選択肢は、おそらく論理ゲートの評価に関連して使用されると共に、さらに、シフトレジスタ308内に記憶されるPE302の出力371に使用されるデータ経路を提供するように選択される。特に、(i)ビット〜en2=0で、マルチプレクサ310は、PE302の出力371〜373を選択し、(ii)ビット〜enA=1で、マルチプレクサ514は、マルチプレクサ312の出力354を選択し、(iii)ビット〜en1=1で、マルチプレクサ508は、マルチプレクサ514の出力518を選択し、(iv)ビットen1=0で、マルチプレクサ320は、マルチプレクサ314の出力360を選択し、および(v)XB0、XB1は、メモリ326へのアドレス指定ではなくマルチプレクサ312、314に対する入力として使用される。したがって、第2タイプ(評価−1)の評価モード時に、PE302は、マルチプレクサ304および306によって出力された入力演算数に基づいて、論理動作をシミュレートし、PE302によって出力された中間値371はシフトレジスタ308内に記憶される。同時に、マルチプレクサ312、314は、次のサイクルでプロセッサユニットに対する入力として使用されるエントリをシフトレジスタ308から選択することができる。
図5Cは、図5のプロセッサユニットの変更回路図であり、プロセッサユニットの第1タイプ(記憶−0)の記憶モード(en2=0、en1=1およびen0=1)を示す。このモードの主な機能は、データを局所メモリ326に記憶し、その際、シフトレジスタ308の第1エントリをシフトレジスタ308の最後のエントリ364でリフレッシュすることである。このモードでは、局所メモリ326は、XB0およびXB1から成るメモリアドレス信号532によってアドレス指定され、PE302の出力データ371〜372〜374が記憶される特定のメモリセルを選択する。したがって、この記憶モード時、PE302の出力データ371〜372〜374は、メモリ326内に記憶することができる。マルチプレクサは、以下のように構成される:(i)ビット〜en2=1で、マルチプレクサ310は、シフトレジスタ308の最後のエントリ364を選択し、(ii)ビットen0=1で、マルチプレクサ506は、シフトレジスタ308の最初のエントリ504を選択し、(iii)ビット〜en1=0で、マルチプレクサ508は、マルチプレクサ506の出力512を選択し、(iv)ビット〜en0=0で、マルチプレクサ324は、PE302の出力371〜372〜376を選択し、および(v)ビットen1=1で、マルチプレクサ320は、マルチプレクサ324の出力368を選択する。
図5Dは、図5のプロセッサユニットの変更回路図であり、プロセッサユニットの第2タイプ(記憶−1)の記憶モード(en2=1、en1=1、およびen0=1)を示す。このモードの主な機能は、データを局所メモリ326に記憶することであり、その際、PE302により中間値の出力371〜373をシフトレジスタ308に記憶する。このモードでは、局所メモリ326は、XB0およびXB1から成るメモリアドレス信号532によってアドレス指定され、PE302の出力データ371〜372〜374が記憶される特定のメモリセルを選択する。したがって、この記憶モード時、PE302の出力データ371〜372〜374は、局所メモリ326内に記憶することができる。マルチプレクサは、以下のように構成される:(i)ビット〜en2=0で、マルチプレクサ310は、PE302の出力371〜373を選択し、(ii)ビットen0=1で、マルチプレクサ506は、シフトレジスタ308の最初のエントリ504を選択し、(iii)ビット〜en1=0で、マルチプレクサ508は、マルチプレクサ506の出力512を選択し、(iv)ビット〜en0=0で、マルチプレクサ324は、PE302の出力371〜372〜376を選択し、および(v)ビットen1=1で、マルチプレクサ320は、マルチプレクサ324の出力368を選択する。
図5Cおよび5Dの記憶モードは、PE302の動作の非ブロッキングである。つまり、PE302は論理関数を評価することができ、結果として得られる値は、直ちに局所メモリ326内に記憶することができる。この値は、経路371〜372〜376〜368〜362を介して、または371〜373〜504〜512〜520を介してクロスバー101によって利用可能である。データ374およびアドレス532は、同時に変化することが可能である。強化として、好ましい実施態様では、データ374を1つの命令に登録し、次の命令でアドレス532(XB0、XB1)をメモリ326に送信することを可能にすることを選択する。その結果、記憶に必要なデータ374は、記憶自体のアドレス532より1つの計算サイクルだけ早く生成されなければならない。この状況では、非ブロッキング動作は、2つの連続するステップに適用され、つまり、第1のサイクルでは、論理関数としてPE−出力、および第2のサイクルでは、アドレス532を選択するためにXB0およびXB1レジスタの使用に適用される。第2サイクルのPE−出力は、図5Cおよび5Dに示す両方のモードにおいてレジスタ322で利用可能である。図5C(EN=011)では、シフトレジスタ308はリフレッシュされ、図5D(EN=111)では、PE−出力は、シフトレジスタ308内に、その第1エントリとして記憶される。
図5Eは、図5のプロセッサユニットの変更回路図であり、プロセッサユニットの第1タイプ(ロード−0)のロードモード(en2=0、en1=1、en0=0)を示す。このモードの主な機能は、データを局所メモリ326からロードすることであり、その際、シフトレジスタ308の第1エントリをシフトレジスタ308の最後のエントリ364でリフレッシュする。マルチプレクサの選択は以下のとおりである:(i)ビット〜en2=1で、マルチプレクサ310は、シフトレジスタ308の最後のエントリ364を選択し、(ii)ビットen0=0で、マルチプレクサ506は、PE302の出力371〜502を選択し、(iii)ビット〜en1=0で、マルチプレクサ508は、マルチプレクサ506の出力512を選択し、(iv)ビット〜en0=1で、マルチプレクサ324は、メモリ326の出力366を選択し、および(v)en1=1で、マルチプレクサ320は、マルチプレクサ324の出力368を選択する。さらに、局所メモリ326は、メモリアドレス信号532(フィールドXB0、XB1)によってアドレス指定され、特定のメモリセルをメモリの出力366として選択する。
図5Fは、図5のプロセッサユニットの変更回路図であり、第2タイプ(ロード−1)のロードモード(en2=1、en1=1、en0=0)を示す。このモードの主な機能は、データを局所メモリ326からロードすることであり、その際、PE302による中間値の出力371〜373をシフトレジスタ308に記憶する。マルチプレクサの選択は、以下のとおりである:(i)ビット〜en2=0で、マルチプレクサ310は、PE302の出力371〜373を選択し、(ii)ビットen0=0で、マルチプレクサ506は、PE302の出力371〜502を選択し、(iii)ビット〜en1=0で、マルチプレクサ508は、マルチプレクサ506の出力512を選択し、(iv)ビット〜en0=1で、マルチプレクサ324は、メモリ326の出力366を選択し、および(v)en1=1で、マルチプレクサ320は、マルチプレクサ324の出力368を選択する。また、局所メモリ326は、メモリアドレス信号532(フィールドXB0、XB1)によってアドレス指定され、特定のメモリセルをメモリ出力366として選択する。
図5Eおよび5Fのロードモード時、データは、メモリ326からクロスバー101にロードされてプロセッサユニットに使用され、同時に、PE302は、ロードの評価を実行して、結果をシフトレジスタ308に記憶するか、またはシフトレジスタ308をバイパスすることが可能であることに注意する。したがって、局所メモリ326からのデータのロードは、PE302の動作を妨げない。
図5Gは、図5のプロセッサユニットの変更回路図であり、プロセッサユニットの第1タイプ(No−Op−0)の非動作モード(en2=0、en1=0、en0=0)を示す。このモードでは、PE302は非動作モードを実行する。このモードは、たとえば、その他のプロセッサユニットが、このシフトレジスタ308からのデータに基づく評価機能であるが、このPE302がアイドリングである場合に役立つ。マルチプレクサの選択肢は、以下のように選択する:(i)ビット〜en2=1で、マルチプレクサ310は、シフトレジスタ308の最後のエントリ364を選択し、(ii)ビットenA=1で、マルチプレクサ514は、マルチプレクサ312の出力354を選択し、(iii)ビット〜en1=1で、マルチプレクサ508は、マルチプレクサ514の出力518を選択し、および(iv)ビットen1=0で、マルチプレクサ320は、マルチプレクサ314の出力360を選択する。XB0およびXB1は、メモリ326にアドレス指定されるのではなく、マルチプレクサ312および314に対する入力として使用される。非動作モード時、PE302は、どのロードもシミュレートせず、シフトレジスタ308はリフレッシュされ、その結果、シフトレジスタ308の最後のエントリ364は、シフトレジスタ308の最初のエントリに再循環される。同時に、データは、経路352〜354〜518〜520および358〜360〜362を介して、シフトレジスタ308から読み取ることができる。第2非動作モード(en2=1、en1=0、en0=0)は定義されず、使用されない。
図6Aは、本発明の第4実施態様によるシミュレーションプロセッサの1つのプロセッサユニットを示し、プロセッサ要素は、第1タイプ(NOOP−AOI3−0)の非動作モード(en2=0、en1=0、en0=0、およびBoolean Func=11000(BF4、BF3、BF2、BF1、BF0))でAOI3機能を実行する。図6Aに示すプロセッサユニットは、図5のプロセッサユニットと同じだが、PE302は、マルチプレクサ312の出力354をPE302の入力として受信し、PE302は、AOI3機能をシミュレートするように構成される。さらに、マルチプレクサ508を制御する信号〜en1は、信号enBに置き換えられる。信号enBは、次の公式を使用して表現することができる:enB=BF4*en2*〜en1*〜en0+en1。ENコードは、No−Op−0(en2=0、en1=0、en0=0)またはNo−Op−1(en2=1、en1=0、en0=0)以外のコードであり、マルチプレクサ508は、前の図5A〜5Gと同様、en1信号によって効果的に制御される。EN信号は、No−Op−0(en2=0、en1=0、en0=0)、またはNo−Op−1(en2=1、en1=0、en0=0)であり、マルチプレクサ508は、信号BF4*en2によって制御される。我々は、クロスバー101、またはマルチプレクサ312の出力354(en2=1)が、PE−出力371〜502(en2=0)を利用可能かどうか選択する際にこの特徴を利用する。我々は、これをダイアグラムに示す。PE302は、動作を実行しないため、No−Op−1は図5の回路では無効な動作だった。PE302は、No−Op−1モードで動作を実行する図6では、これは、有効な動作になる。選択されないデータ経路は、このモード時のプロセッサユニットの動作をより明確に示すために削除されているが、これらは、図5に示されているように存在する。PE302が実行するように構成されるAOI3機能は、図6Bに関して以下でさらに詳細に説明する。マルチプレクサの選択は、以下のように行われる:(i)〜en2=1で、マルチプレクサ310は、シフトレジスタ308の最後のエントリ364を選択し、(ii)en0=0で、マルチプレクサ506は、PE(AOI3)302)の出力(O)371〜502を選択し、(iii)enB=0で、マルチプレクサ508は、マルチプレクサ506の出力512を選択し、および(iv)en1=0で、マルチプレクサ320は、マルチプレクサ314の出力360を選択する。マルチプレクサ312の出力354は、PE(AOI3)302内に入力(C)として供給される。PE(AOI3)302の出力371〜502が、シフトレジスタ308をバイパスすることに注意する。
図6Bは、プロセッサ要素のAOI3機能を詳細に示す回路図である。AOI3論理は、3つの入力A、B、Cおよび1つの出力Oを含む。出力Oは、O=A*B+Cとして表現することができる。AOI3論理は、インバータ602、614、622、618、マルチプレクサ604、605、624、620、ANDゲート608、628、およびORゲート612を備える。PE302は、ENコードがNo−Op−0またはNo−Op−1、およびBoolean Func(BF)=11xxx(BF4、BF3、BF2、BF1、BF0)である時に(つまり、BF4=1およびBF3=1)、AOI3機能を実行するように構成される。ビットBF2、BF1、およびBF0は、入力がそのまま受信されるか、あるいは逆数が受信されるかを制御するために使用される。インバータ602は入力Aを受信し、〜Aを出力する。インバータ614は入力Bを受信し、〜Bを出力する。インバータ622は入力Cを受信し、〜Cを出力する。インバータ618は、マルチプレクサ605の出力616を受信し、その逆数を出力する619。マルチプレクサ604は、BF0=1に応じてA、またはBF0=0に応じて〜Aを選択する。マルチプレクサ605は、BF1=0に応じてB、BF1=1に応じて〜Bを選択する。マルチプレクサ624は、BF2=0に応じてC、BF2=1に応じて〜Cを選択する。マルチプレクサ620は、BF3=0の時にインバータ618の出力619、BF3=1の時に「1」を選択する。この場合、BF3=1であり、マルチプレクサ620は、「1」を選択する。ANDゲート608は、マルチプレクサ604の出力606、およびマルチプレクサ605の出力616を受信し、ANDされた出力610を生成する。ANDゲート628は、マルチプレクサ620の出力621、およびマルチプレクサ624の出力626を受信し、ANDされた出力630を生成する。ORゲート612は、ANDゲート608の出力610、およびANDゲート628の出力630を受信し、ORされた出力0を生成する。BF3=1を選択することによって、AOI3機能O=A*B+Cが生成された。すべての入力変数(A、〜A、B、〜B、C、〜C)は、BF2、BF1、およびBF0の制御下で利用可能である。
AOI3機能を示す真理値表は、以下の表3に示す:
図7Aは、本発明の第5実施態様によるシミュレーションプロセッサの1つのプロセッサユニットを示す回路図であり、この場合、プロセッサ要素は、第1タイプ(NOOP−MUX−0)の非動作モード(en2=0、en1=0、en0=0)、およびBoolean Func=10000で、マルチプレクサ(MUX)機能を実行する。図7Aに示すプロセッサユニットは、図5のプロセッサユニットと同じだが、PE302は、マルチプレクサ312の出力354をPE302に対する入力として受信し、PE302は、MUX機能をシミュレートするように構成される点が異なる。選択されないデータ経路は、プロセッサユニットの動作をより明確に示すために削除されているが、これらは、図5に示すように存在する。PE302が実行するように構成されるMUX機能について、図7Bに関してさらに詳細に以下で説明する。このモードでは、マルチプレクサの選択は、以下のように行われる:(i)〜en2=1で、マルチプレクサ310は、シフトレジスタ308の最後のエントリ364を選択し、(ii)en0=0で、マルチプレクサ506は、PE(MUX)302の出力(O)371〜502を選択し、(iii)enB=0で、マルチプレクサ508は、マルチプレクサ506の出力512を選択し、および(iv)en1=0で、マルチプレクサ320は、マルチプレクサ314の出力360を選択する。また、マルチプレクサ312の出力354は、PE(MUX)302に入力(C)として供給される。PE(MUX)302の出力371〜502は、このモードでは、シフトレジスタ308をバイパスすることに注意する。
図7Bは、プロセッサ要素のMUX機能を詳細に示す回路図である。MUX論理は、3つの入力A、S、C、および1つの出力Oを含む。MUX論理は、インバータ702、714、730、720、マルチプレクサ704、716、732、724、ANDゲート708、726、およびORゲート712を備える。PE302は、Boolean Func(BF)=10xxx(BF4、BF3、BF2、BF1、BF0)、つまりBF4=1およびBF3=0の場合に、MUX機能を実行するように構成される。ビットBF2、BF1、およびBF0は、入力がそのまま受信されるか、あるいは逆数が受信されるかを制御するために使用される。
インバータ702は入力Aを受信し、〜Aを出力する。インバータ714は入力Sを受信し、〜Sを出力する。インバータ730は入力Cを受信し、出力〜Cを出力する。インバータ720はマルチプレクサ716の出力718を受信し、その逆数を出力する722。マルチプレクサ704は、BF0=0に応じてA、BF0=1に応じて〜Aを選択する。マルチプレクサ716は、BF1=0に応じてS、BF1=1に応じて〜Sを選択する。マルチプレクサ732は、BF2=0に応じてC、BF2=1に応じて〜Cを選択する。マルチプレクサ724は、BF3=0の時にインバータ720の出力722、BF3=1の時に「1」を選択する。この場合、BF3=0であり、マルチプレクサ724は、インバータ720の出力722を選択する。ANDゲート708は、マルチプレクサ704の出力706、およびマルチプレクサ716の出力718を受信し、ANDされた出力710を生成する。ANDゲート726は、マルチプレクサ724の出力725、およびマルチプレクサ732の出力734を受信し、ANDされた出力728を生成する。ORゲート712は、ANDゲート708の出力710、およびANDゲート726の出力728を受信し、ORされた出力0を生成する。BF3=0を選択することによって、MUX機能O=S*A+〜S*Bが生成された。すべての入力の変動(A、〜A、B、〜B、S、〜S)は、BF2、BF1、およびBF0の制御下で利用可能である。
MUX機能を示す真理値表を以下の表4に示す:
AOI3およびMUX機能の両方を使用すると、はるかに効率的な論理計算方法を生じる。第3の入力変数を逆にPEに供給することによって、MUXまたはAOI3の動作は、単一サイクルで実行することができる。この第3入力がない場合、MUXまたはAOI3動作は、3つのPE動作を完了する必要がある。MUXまたはAOI3動作を実行するPEは、グリッド内のn個のPEが動作するのに必要な2つの独立する出力変数を生成することはできないが、MUX機能のセレクタなどの第3の変数を、類似の関数をすべて計算するいくつかのPE間で共用できるようにすることは可能である(たとえば、MUX機能は1つのバスに適用され−各々のビットは異なるPEに存在する可能性があるが、信号の制御は、各々のMUX動作で同じである)。スケジューリングの際、マルチビット動作によって計算グラフにおける依存状態が増加することに注意を要する。
図8は、本発明の第6実施態様によるシミュレーションプロセッサの単一プロセッサユニットを示す回路図である。図8に示すプロセッサユニットは、図3に示すものと同じだが、いくつかの著しい違いある。このプロセッサユニットは、P0e、P1e、P0、P1、Boolean Func、EN、Select、およびXBから成る命令語840によって制御される。XBは、以下で説明するとおり、XB0、XB1、XB2、およびXB3の任意の組合せで良い。メモリ326は、アドレス信号880によってアドレス指定される。図3のプロセッサユニットと比べて、図8のプロセッサユニットは、シフトレジスタ308から出力を選択するために4つのマルチプレクサ802、804、806、808を備える。マルチプレクサ802、804は、それぞれXB0、XB1によって制御され、それぞれ図3のマルチプレクサ314、312と同様に構成される。マルチプレクサ802、804の出力818、820は、それぞれフリップフロップ830、832内に供給される。2つの追加のマルチプレクサ806、808は、それぞれXB2、XB3によって制御され、これらの出力822、824は、それぞれフリップフロップ834、836内に供給される。フリップフロップ830、832、834、836の出力XBA、XBB、XBC、XBDは、クロスバー101’、この実施態様では4n個のクロスバーに供給される。マルチプレクサ858は、P0eの値に応じて4n個のクロスバー101’から2n個のビットを選択し、マルチプレクサ860は、P1eの値に応じて、4n個のクロスバー101’から別の2n個のビットをさらに選択する。各々のマルチプレクサ858、860は、実際上、2ビット対1ビットのマルチプレクサの2n個のセットとして実装することができるが、図8には、単一マルチプレクサとして示されている。マルチプレクサ858の2n個のビットの出力は、P0値に応じて、PE302に対する入力として1ビットを選択するマルチプレクサ304に対する入力であり、マルチプレクサ860の他の2n個のビットの出力は、P1に応じて、PE302に対する別の入力として1ビットをさらに選択するマルチプレクサ306に対する入力である。このアーキテクチャでは、各々のPEは、4つのデータアウト信号を生成する。したがって、n個のPEの場合、合計4*n個のデータアウト信号が生成される。各々のPEは、XBA、XBB、XBCおよびXBD信号の各々に、1ビットの出力のみを生成する。n個のPEの総数は、XBA、XBB、XBCおよびXBD信号の各々にn個の信号である。P0eおよびP1eは、多くの効果的なマルチプレクサセレクタを使用することを可能にする。
シフトレジスタ308からの出力を選択するために、マルチプレクサ802、804、806、808のすべてを積極的に使用する必要はなく、XB信号のXB0、XB1、XB2、XB3フィールド内のビットの数は、様々な方法で配列できることに注意する。たとえば、シフトレジスタ308が、256(=28)の深さを有し、21ビットがXB信号に割り当てられる場合、XB0、XB1、XB2、XB3は、それぞれ5、5、6および5ビットを有することが可能であり、マルチプレクサ802、804、806、808の各々は、シフトレジスタ308の部分から選択することができる。もう1つの実施例の場合、シフトレジスタ308は、256(=28)の深さを有し、21ビットがXB信号に割り当てられる場合、XB0、XB1、XB2、XB3は、それぞれ8、7、5、および0ビットを有することができ、マルチプレクサ802は、シフトレジスタ308のすべてのエントリから選択することができ、マルチプレクサ804、806は、シフトレジスタ308の部分から選択することができ、マルチプレクサ808は使用されない。さらに別の実施例では、XB0、XB1、XB2、XB3は、それぞれ0、0、5、および0を有することが可能であり、マルチプレクサ806のみが、シフトレジスタ308の部分から選択することができ、XB0およびXB1およびXB3のビットを結合して、読取命令または書込命令のメモリアドレスを同時に形成することが可能である。
さらに、メモリポートDOの幅は、この場合、同じアドレスから読み取って4ビット出力まで増加させることができ、XB0〜XB3が、メモリからクロスバーまで1、2またはそれ以上のビットを持つことを可能にする。可能なマッピングを表5に示す。このテーブルでは、DO−0は、メモリDOポートから第1ビット、ビット0を表し、DO−1は、第2ビット、ビット1などを表す。また、マルチプレクサの幅も示されており、たとえば、XBAが5ビットを利用可能である場合、XBAは、シフトレジスタ308から25=32の位置を選択することができる。表5は、4つの可能なマッピングモードを有する4つのXBセレクタのマッピングを示す。これは、浅い(モード0)対深い(モード1)トレードオフの両方、およびマルチメモリビットモード(Mem−1およびMem−2)を示す。その他の変形が可能である。
図9Aは、PE、およびその関連命令語のより一般化された説明を示し、図3の実施態様を一般的に説明している。図9Aの実施態様は、図3の実施態様と実質的に同じであるが、さらに一般化されており、マルチプレクサ310は、この場合はenAによって制御され、マルチプレクサ316は、この場合はenBによって制御され、マルチプレクサ320は、この場合はenCによって制御されている。ビットen2、en1およびen0は、図5A〜5Gに示すように、直接ステアリングに必要ではないと上記で説明されている。むしろ、Opコード制御下で、多くの動作モードが存在することが暗示された。この場合、enA=f(en2、en1、en0)、またはenA=fA(EN)、並びに同様にenB=fB(EN)、およびenC=fC(EN)であり、f(x)は、xの関数を意味する。fA、fB、およびfCを定義することによって、シミュレーションプロセッサは、より多様に、あるいはカスタマイズされた方法で使用することができる。メモリ326のアドレスフィールドは、分かりやすくするために図9Aには示さないが、これらは、実際の回路には存在する。
図9Bは、PEおよびその関連する命令語をより一般化された説明を示し、図8の実施態様を一般的に説明している。図9Bでは、命令語920は、ΣPrとして表現されるビットP0〜Pq、Boolean Func、EN、ΣXBiとして表現されるすべてのビットXB0〜XBjの和、およびXtra Memを含む。マルチプレクサ902は、ΣPrによって制御されるq*2nビット〜qビットのマルチプレクサであり、マルチプレクサ904は、ΣXBiによって制御されるvビット〜jビットのマルチプレクサであり、マルチプレクサ906は、f(EN)によって制御される(j+2)ビット〜kビットのマルチプレクサである。これは、すべてのビットΣXBiを使用してマルチプレクサ904を制御することを仮定している。また、enA=fA(EN)である。クロスバー901は、k×nクロスバーである。この場合n、q、k、およびjは、少なくとも2の整数である。図9Aは、q=2、k=2、およびj=2を選択することにより、図9Bで表すことができる。その他の組合せは可能である。メモリ326のアドレスフィールドは、分かりやすくするために図9Bに示さないが、これらは、実際の回路に存在する。
図9Aおよび9Bに示されている一般化は、圧縮を使用して、広い入力を比較的少ない出力信号で多重化すると共に、狭い入力信号を比較的多くの出力信号で多重化することが可能であることを示す。したがって、動的命令レジスタの制御下でアクセス可能な比較的深いシフトレジスタが形成される。この方法は、シフトレジスタの深さを著しく増加し、プロセッサユニットの入力データの幅および出力データの幅の両方を増加することを可能にし、しかも著しい量のデータビットを命令レジスタに追加する必要がない。これは、より柔軟なアーキテクチャを形成することを可能にし、その結果、コンパイラアルゴリズムを利用して、プロセッサグリッド(図2に示す)の効果的な利用を増加することを可能にする。たとえば、図7および8を共に結合すると、局所プロセッサユニットは、3つの変数を消費し、それでもなおクロスバーの変数の別の集合を生成することを可能にする。適切に平衡した状態で、クロスバーで利用可能な十分な変数が存在するため、変数を共用する必要性を避けることができ、その結果、プロセッサグリッドの効果が強化される。
さらに、PiまたはXBiなどのフィールドは、隣接するPE間で共用することが可能であり、シフトレジスタ内へのさらに深いアドレス指定を可能にするが、隣接するPEの1つが信号を発行することのみを可能にする。これは、メモリアクセスに関しても行うことができる。これは、PEごとにより多くのデータアウト信号を可能にするアーキテクチャを可能にするが、すべてのデータアウト信号を独立して個々に使用できるというわけではないことを意味している。しかし、データアウト信号の数が増加することにより、より多くの変数が、すべてのPEによって共同で消費されるのではなく、クロスバー内に提示されるため、より効果的なアーキテクチャを作ることを可能にし、VLIWプロセッサに対する命令のより効果的なスケジューリングにつながり、容量および性能の両方を増加することになる。これらは、上記のアーキテクチャの単なる延長であるため、我々は、単なる基準としてこの点に言及する:これらは、リソースの共用および実装のトレードオフを可能にする。
本発明は、シフトレジスタが入力アドレス信号を必要としないため、シミュレーションプロセッサが、シミュレーションプロセッサに対する命令で使用するビットが比較的少ないという利点を有する。追加の入力マルチプレクサは、シフトレジスタをアドレス指定する際に必要ないため、シミュレーションプロセッサの回路構成内の構成要素の数を単純化して減少させる。また、図5の実施態様は、シフトレジスタをバイパスする回路構成を有し、必要な場合、処理時間の量を短縮することができる。本発明は、シフトレジスタ308が記憶モードおよびロードモードが非ブロッキングであるように局所メモリ326と相互接続され、つまり、記憶モードおよびロードモードは、シミュレーションプロセッサの評価モードと同時に実行されるという追加の利点を有する。
本発明は、いくつかの実施態様に関して上記で説明したが、本発明の範囲内で、様々な変更を加えることが可能である。たとえば、シフトレジスタ308は、多くの異なる構成でPE302と共に使用され、シフトレジスタ308およびPE302の周囲の回路構成の変更も、やはり本発明の範囲内である。図3、4、5、および8の実施態様は、1つのシフトレジスタ308を使用し、シフトレジスタ308の出力は、特定のマルチプレクサによってアクセスされるが、対応する数の複数の(たとえば2または4)個々のシフトレジスタを有し、複数のマルチプレクサの各々が、個々のマルチプレクサの対応する1つの出力にアクセスすることも可能である。この場合、複数のシフトレジスタ内に記憶されたデータの内容は、同じであるように複製される。
さらに、本発明は、同じPEに関連して説明するが、別の実施態様は、異なるタイプのPEおよび異なる数のPEを使用することができる。PEは、同じ接続性、またはシフトレジスタの同じサイズもしくは構成を有する必要もない。PEは、資源も共用する。たとえば、複数のPEは、同じシフトレジスタおよび/または局所メモリに書き込むことができる。たとえば、2つのPEは1つの局所メモリを共用する。その逆も真であり、1つのPEが複数のシフトレジスタおよび/または局所メモリに書き込むことができる。PEは、クロスバーからの2つを超える入力、および/またはクロスバーへの2つを超える出力も有する。「論理ゲート」という用語は、本明細書では、「AND」、「OR」、「NAND」、「NOR」などの特定のタイプの論理ゲートに限られない。むしろ、「論理ゲート」は、本明細書では、標準であるか、あるいはカスタマイズされているかに関わらず、任意のタイプのロードまたはブール演算を意味する。
もう1つの実施例では、図3、4、および5に示す命令は、P0、P1などに特有のフィールドを示し、命令の集合の全体的な演算は、4つの主な演算モードに関して説明した。この説明は、実例を分かりやすくするために行われた。様々な実施態様では、命令の集合のより複雑なコード化は、重複しているフィールド、または物理的な構造または演算モードと1対1で対応しないフィールドを有する命令が生じる。一実施例は、フィールドXB0、XB1およびXtra Memの使用で与えられる。これらのフィールドは、命令の残りの部分に応じて異なる意味を持つ。さらに、命令長を短縮するために、演算の対称性または二重性も使用される。
もう1つの態様では、本発明のシミュレーションプロセッサ100は、ASIC(アプリケーションに固有の集積回路)、FPGA(フィールドプログラマブルゲートアレイ)、またはその他のタイプの集積回路で実現することができる。これは、別個の回路基板上に実装するか、あるいはホストコンピュータ110内に差し込む必要はない。別個のホストコンピュータ110は存在しない。たとえば、図1を参照すると、CPU114およびシミュレーションプロセッサ100は、比較的密接に集積されるか、おそらく単一の集積計算デバイスとして実装される場合もある。
本発明について、半導体チップの論理シミュレーションに関連して説明するが、本明細書で提示するVLIWプロセッサのアーキテクチャは、その他の用途に使用することも可能である。たとえば、プロセッサのアーキテクチャは、単一ビットの2状態論理シミュレーションから2ビットの4状態論理シミュレーション、固定幅計算(たとえば、DSPプログラミング)、および小数点計算(たとえば、IEEE−754)に拡張することができる。固有の並列性を有するアプリケーションは、このプロセッサアーキテクチャの良い候補である。科学計算の領域では、実施例としては、気象モデル、地球物理学、石油およびガス掘削のための耐震解析、原子力シミュレーション、コンピュータによる流体力学、素粒子物理学、金融モデルおよび材料科学、有限要素モデル化、並びにコンピュータによる断層撮影法、たとえばMRIが挙げられる。生命科学およびバイオテクノロジー、計算化学、たんぱく質折り畳み、および生体系のシミュレーションでは、DNAシーケンス、薬理ゲノム学、およびコンピュータ内での創薬が挙げられる。ナノ技術用途としては、分子モデル化およびシミュレーション、密度関数理論、原子−原子ダイナミックス、および量子力学的解析が挙げられる。デジタルコンテンツの製作の実施例としては、アニメーション、合成写真およびレンダリング、並びに画像処理が挙げられる。したがって、本発明の開示事項は、以下の請求の範囲に記載する本発明の範囲を制限するのではなく、具体的に示すこと意図している。
Claims (61)
- 複数の論理ゲートを含む論理設計の論理シミュレーションを実行するためのシミュレーションプロセッサであって、該シミュレーションプロセッサは、
相互接続システムと、
該相互接続システムを介して互いに通信可能に結合された複数のプロセッサユニットと
を備えており、
少なくとも2つの該プロセッサユニットの各々は、
少なくとも1つの該論理ゲートをシミュレートするように構成可能なプロセッサ要素と、
該プロセッサ要素に関連付けられ、該プロセッサ要素の作動時に中間値を記憶する複数のエントリを含むシフトレジスタであって、該シフトレジスタは、該プロセッサ要素の出力を受信するように結合されている、シフトレジスタと
を含んでいる、シミュレーションプロセッサ。 - 少なくとも2つの前記プロセッサユニットの各々は、
前記シフトレジスタと前記相互接続システムとの間に結合された1つ以上のマルチプレクサであって、該マルチプレクサの各々は、選択信号に応じて、該シフトレジスタのエントリの1つを選択し、さらに該選択されたエントリを該相互接続システムに転送する、マルチプレクサ
をさらに含んでいる、請求項1に記載のシミュレーションプロセッサ。 - 前記1つ以上のマルチプレクサは、2つ以上のマルチプレクサを含む、請求項2に記載のシミュレーションプロセッサ。
- 少なくとも1つの前記マルチプレクサは、前記シフトレジスタの全体の深さをアドレス指定することができない、請求項3に記載のシミュレーションプロセッサ。
- 前記プロセッサ要素の出力は、ラッチが介在しないで前記シフトレジスタに結合され、該シフトレジスタは、ラッチが介在して前記相互接続システムに結合される、請求項2に記載のシミュレーションプロセッサ。
- 前記プロセッサ要素が前記少なくとも1つの論理ゲートをシミュレートする、該プロセッサ要素の評価モード時に、該プロセッサ要素の出力は、前記シフトレジスタに結合され、前記マルチプレクサは該シフトレジスタを前記相互接続システムに結合する、請求項2に記載のシミュレーションプロセッサ。
- 前記プロセッサ要素がどの論理ゲートもシミュレートしない、該プロセッサ要素の非動作モード時に、前記マルチプレクサは、該シフトレジスタを前記相互接続システムに結合する、請求項2に記載のシミュレーションプロセッサ。
- 前記非動作モード時に、前記シフトレジスタがリフレッシュされる、請求項2に記載のシミュレーションプロセッサ。
- 少なくとも2つの前記プロセッサユニットの各々は、
前記シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードするための、前記プロセッサ要素と関連付けられた局所メモリ
をさらに含んでいる、請求項1に記載のシミュレーションプロセッサ。 - 前記プロセッサ要素のロードモード時に、前記局所メモリは、前記シフトレジスタまたは該プロセッサ要素を通過せずに、前記相互接続システムに結合される、請求項9に記載のシミュレーションプロセッサ。
- 前記プロセッサ要素のロードモード時に、前記局所メモリは、前記相互接続システムに結合され、該プロセッサ要素は、前記少なくとも1つの論理ゲートをシミュレートする、請求項9に記載のシミュレーションプロセッサ。
- 前記ロードモード時に、前記プロセッサ要素の出力は、前記シフトレジスタに結合される、請求項11に記載のシミュレーションプロセッサ。
- 記憶モード時に、前記プロセッサ要素の出力は、前記シフトレジスタを通過せずに前記局所メモリに結合される、請求項9に記載のシミュレーションプロセッサ。
- 記憶モード時に、前記プロセッサ要素は、前記少なくとも1つの論理ゲートをシミュレートし、前記プロセッサ要素の出力は、前記局所メモリに結合される、請求項9に記載のシミュレーションプロセッサ。
- 前記記憶モード時に、前記プロセッサ要素の出力は、前記相互接続システムにも結合される、請求項14に記載のシミュレーションプロセッサ。
- 前記プロセッサ要素の前記モードに応じて、該プロセッサ要素の出力は、前記シフトレジスタおよび/または前記局所メモリに結合されるように構成可能である、請求項9に記載のシミュレーションプロセッサ。
- 前記プロセッサユニットは、
選択信号に応じて、前記プロセッサ要素の出力、または前記局所メモリの出力を選択するためのマルチプレクサ
をさらに含んでいる、請求項9に記載のシミュレーションプロセッサ。 - 前記少なくとも2つのプロセッサユニットの各々は、
前記シフトレジスタと前記相互接続システムとの間に結合された1つ以上のマルチプレクサであって、該マルチプレクサの各々は、選択信号に応じて、該シフトレジスタのエントリの1つを選択し、該選択されたエントリを該相互接続システムにさらに転送する、マルチプレクサと、
前記シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードするための、該プロセッサ要素に関連付けられた局所メモリであって、該マルチプレクサに対する選択信号のビットの少なくとも一部は、該局所メモリをアドレス指定するためにも使用される、局所メモリと
をさらに含んでいる、請求項1に記載のシミュレーションプロセッサ。 - 前記少なくとも2つのプロセッサユニットの各々は、選択信号に応じて、前記プロセッサ要素の出力を前記シフトレジスタに結合するか、または前記シフトレジスタをリフレッシュするためのマルチプレクサをさらに含む、請求項1に記載のシミュレーションプロセッサ。
- 前記少なくとも2つのプロセッサユニットの各々は、
前記プロセッサ要素に関連付けられた局所メモリであって、前記シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードするための局所メモリと、
第1選択信号に応じて、該プロセッサ要素の出力を前記シフトレジスタに対する入力として選択するか、または該シフトレジスタをリフレッシュする第1マルチプレクサと、
第2選択信号に応じて、該シフトレジスタのエントリのうちの1つを選択する第2マルチプレクサと、
第3選択信号に応じて、該シフトレジスタのエントリのうちの別の1つを選択する第3マルチプレクサと
をさらに含んでいる、請求項1に記載のシミュレーションプロセッサ。 - 前記少なくとも2つのプロセッサユニットの各々は、
第4選択信号に応じて、前記プロセッサ要素の出力、または前記局所メモリの出力を選択する第4マルチプレクサと、
第5選択信号に応じて、前記第2マルチプレクサの出力、または前記シフトレジスタの最後のエントリを選択する第5マルチプレクサと、
該第5選択信号に応じて、前記第3マルチプレクサの出力、または該第4マルチプレクサの出力を選択する第6マルチプレクサと
をさらに含んでいる、請求項20に記載のシミュレーションプロセッサ。 - 前記プロセッサ要素が前記少なくとも1つの論理ゲートをシミュレートする、該プロセッサ要素の評価モード時に、
前記第1選択信号は、前記第1マルチプレクサに、該プロセッサ要素の出力を選択させ、
前記第5選択信号は、前記第5マルチプレクサに、前記第2マルチプレクサの出力を選択させ、
該第5選択信号は、前記第6マルチプレクサに、前記第3マルチプレクサの出力を選択させる、
請求項21に記載のシミュレーションプロセッサ。 - 前記プロセッサ要素がシミュレーション動作を実行しない、該プロセッサ要素の非動作モード時に、
前記第1選択信号は、前記第1マルチプレクサに、前記シフトレジスタをリフレッシュさせ、
前記第5選択信号は、前記第5マルチプレクサに、前記第2マルチプレクサの出力を選択させ、
該第5選択信号は、前記第6マルチプレクサに、前記第3マルチプレクサの出力を選択させる、
請求項21に記載のシミュレーションプロセッサ。 - 前記局所メモリの出力からのデータが前記シミュレーションプロセッサ内にロードされる、前記プロセッサ要素のロードモード時に、
前記第1選択信号は、前記第1マルチプレクサに、該プロセッサ要素の出力を選択させ、
前記第4選択信号は、前記第4マルチプレクサに、該局所メモリの出力を選択させ、
前記第5選択信号は、前記第5マルチプレクサに、前記シフトレジスタの最後のエントリを選択させ、
該第5選択信号は、前記第6マルチプレクサに、該第4マルチプレクサの出力を選択させる、
請求項21に記載のシミュレーションプロセッサ。 - 前記プロセッサ要素の出力が前記局所メモリに入力される、該プロセッサ要素の記憶モード時に、
前記第1選択信号は、前記第1マルチプレクサに、前記シフトレジスタをリフレッシュさせ、
前記第4選択信号は、前記第4マルチプレクサに、前記プロセッサ要素の出力を選択させ、
前記第5選択信号は、前記第5マルチプレクサに、前記シフトレジスタの最後のエントリを選択させ、
該第5選択信号は、前記第6マルチプレクサに、前記第4マルチプレクサの出力を選択させる、
請求項21に記載のシミュレーションプロセッサ。 - n個のプロセッサユニットの大多数は、
少なくとも1つの前記論理ゲートをシミュレートするように構成可能なプロセッサ要素と、
該プロセッサ要素に関連付けられ、該プロセッサ要素の動作時に中間値を記憶する複数のエントリを含むシフトレジスタであって、該シフトレジスタは、該プロセッサ要素の出力を受信するように結合されている、シフトレジスタと
を含んでいる、請求項1に記載のシミュレーションプロセッサ。 - n個のプロセッサユニットのすべては、
少なくとも1つの前記論理ゲートをシミュレートするように構成可能であるプロセッサ要素と、
該プロセッサ要素に関連付けられ、該プロセッサ要素の動作時に中間値を記憶する複数のエントリを含むシフトレジスタであって、該シフトレジスタは、該プロセッサ要素の出力を受信するように結合されている、シフトレジスタと
を含んでいる、請求項26に記載のシミュレーションプロセッサ。 - 前記n個のプロセッサユニットの大多数が同じである、請求項1に記載のシミュレーションプロセッサ。
- 前記n個のプロセッサユニットのすべてが同じである、請求項28に記載のシミュレーションプロセッサ。
- 前記シミュレーションプロセッサは、ホストコンピュータ内に差し込み可能な基板上に実装される、請求項1に記載のシミュレーションプロセッサ。
- 前記シミュレーションプロセッサは、前記ホストコンピュータのメインメモリに対する直接アクセスを有する、請求項30に記載のシミュレーションプロセッサ。
- 前記相互接続システムがクロスバーを含む、請求項1に記載のシミュレーションプロセッサ。
- 論理計算を実行するためのVLIWプロセッサであって、
相互接続システムと、
該相互接続システムを介して互いに通信可能に結合される複数のプロセッサユニットと
を備えており、
少なくとも2つの該プロセッサユニットの各々は、
該論理計算の少なくとも一部分を実装するように構成可能なプロセッサ要素と、
該プロセッサ要素と関連付けられ、該プロセッサ要素の作動時に中間値を記憶する複数のエントリを含むシフトレジスタであって、該シフトレジスタは、該プロセッサ要素の出力を受信するように結合され、中間値を該相互接続システムに転送するようにさらに結合されている、シフトレジスタと
を含んでいる、VLIWプロセッサ。 - 複数の論理動作を含む論理設計の論理シミュレーションを実行するためのシミュレーションプロセッサであって、該シミュレーションプロセッサは、
相互接続システムと、
該相互接続システムを介して互いに通信可能に結合される複数のプロセッサユニットと
を備えており、
少なくとも2つの該プロセッサユニットの各々は、
該論理動作の少なくとも1つをシミュレートするように構成可能なプロセッサ要素と、
該プロセッサ要素に関連付けられ、該プロセッサ要素の作動時に中間値を記憶する複数のエントリを備えるシフトレジスタであって、該シフトレジスタは、該プロセッサ要素の出力を受信するように結合される、シフトレジスタと、
該プロセッサ要素の出力と該相互接続システムとの間に結合される1つ以上の第1経路マルチプレクサであって、該第1経路マルチプレクサは、該シフトレジスタをバイパスして、該プロセッサ要素の出力を該相互接続システムに提供する経路を提供する、第1経路マルチプレクサと、
該シフトレジスタと該相互接続システムとの間に結合される1つ以上の第2経路マルチプレクサであって、該第2経路マルチプレクサの各々は、該シフトレジスタのエントリの1つを選択し、さらに、該選択されたエントリを該相互接続システムに転送する、第2経路マルチプレクサと
を含んでいる、シミュレーションプロセッサ。 - 前記プロセッサ要素が前記少なくとも1つの論理動作をシミュレートする、該プロセッサ要素の評価モード時に、プロセッサ要素の出力は、前記第1経路マルチプレクサに結合され、該シフトレジスタをバイパスする相互接続システムに提供され、少なくとも1つの前記第2経路マルチプレクサは、前記シフトレジスタを該相互接続システムに結合する、請求項34に記載のシミュレーションプロセッサ。
- 前記プロセッサ要素が前記少なくとも1つの論理動作をシミュレートする、該プロセッサ要素の評価モード時に、該プロセッサ要素の出力は、前記第1経路マルチプレクサを介して前記相互接続システムに提供されず、少なくとも2つの前記第2経路マルチプレクサは、前記シフトレジスタを該相互接続システムに結合する、請求項34に記載のシミュレーションプロセッサ。
- 前記少なくとも2つのプロセッサユニットの各々はさらに、前記プロセッサ要素に関連付けられたメモリを含んでおり、該メモリは、前記シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードし、記憶モード時に、該プロセッサ要素の出力は、該シフトレジスタを通過せずに、該メモリに結合され、該第1経路マルチプレクサの少なくとも1つは、該シフトレジスタのエントリの1つを受信して、該相互接続システムに提供するように結合される、請求項34に記載のシミュレーションプロセッサ。
- 前記少なくとも2つのプロセッサユニットの各々はさらに、前記プロセッサ要素に関連付けられたメモリを含んでおり、該メモリは、前記シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードし、記憶モード時に、該プロセッサ要素の出力は、該メモリおよび前記シフトレジスタに結合され、少なくとも1つの前記第1経路マルチプレクサは、該シフトレジスタのエントリの1つを受信して該相互接続システムに提供する、請求項34に記載のシミュレーションプロセッサ。
- 前記少なくとも2つのプロセッサユニットの各々はさらに、前記プロセッサに関連付けられたメモリを含んでおり、該メモリは、前記シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードし、該プロセッサ要素のロードモード時に、前記メモリの出力は、前記シフトレジスタまたは前記プロセッサ要素を通過せずに、前記相互接続システムに結合され、前記プロセッサ要素の出力は、前記第1経路マルチプレクサに結合され、前記シフトレジスタをバイパスする前記相互接続システムに提供される、請求項34に記載のシミュレーションプロセッサ。
- 前記少なくとも2つのプロセッサユニットの各々はさらに、前記プロセッサに関連付けられたメモリを含んでおり、該メモリは、前記シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードし、該プロセッサ要素のロードモード時に、前記メモリの出力は、前記シフトレジスタまたは前記プロセッサ要素を通過せずに、前記相互接続システムに結合され、前記プロセッサ要素の出力は、前記第1経路マルチプレクサに結合されて、相互接続システムに提供され、さらにシフトレジスタに結合される、請求項34に記載のシミュレーションプロセッサ。
- 前記プロセッサ要素がどの論理動作もシミュレートしない、該プロセッサ要素の非動作モード時に、該プロセッサ要素の出力は、前記第1経路マルチプレクサを介して前記シフトレジスタまたは前記相互接続システムに提供されず、少なくとも2つの前記第2経路マルチプレクサは、前記シフトレジスタを前記相互接続システムに結合する、請求項34に記載のシミュレーションプロセッサ。
- 前記第2経路マルチプレクサは、第1マルチプレクサおよび第2マルチプレクサを含んでおり、該第1および第2マルチプレクサの各々は、前記シフトレジスタのエントリの1つを受信するように結合され、
該第1経路マルチプレクサは、第3マルチプレクサ、第4マルチプレクサ、および第5マルチプレクサを備え、該第3マルチプレクサは、該第2マルチプレクサの出力または前記プロセッサ要素の出力を選択するように結合され、該第4マルチプレクサは、前記プロセッサ要素の出力、または前記シフトレジスタの最初のエントリを選択するように結合され、前記第5マルチプレクサは、該第3マルチプレクサの出力、または該第5マルチプレクサの出力を選択するように結合される、請求項34に記載のシミュレーションプロセッサ。 - 第6マルチプレクサであって、前記プロセッサ要素の出力、または該プロセッサ要素と関連するメモリの出力を選択するように結合され、前記シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードする第6マルチプレクサと、
第7マルチプレクサであって、前記第1マルチプレクサの出力、または該第6マルチプレクサの出力を選択するように結合される第7マルチプレクサと、
第8マルチプレクサであって、前記プロセッサ要素の出力、または前記シフトレジスタの最後のエントリを選択するように結合される第8マルチプレクサと
をさらに備える、請求項42に記載のシミュレーションプロセッサ。 - 前記プロセッサ要素が、前記少なくとも1つの論理動作をシミュレートする、前記プロセッサ要素の評価モード時に、
前記第3マルチプレクサは、該プロセッサ要素の出力を選択し、
前記第5マルチプレクサは、該第3マルチプレクサの出力を選択し、
前記第7マルチプレクサは、前記第1マルチプレクサの出力を選択し、
前記第8マルチプレクサは、前記シフトレジスタの最後のエントリを選択する、
請求項43に記載のシミュレーションプロセッサ。 - 前記プロセッサ要素が、前記少なくとも1つの論理動作をシミュレートする、前記プロセッサ要素の評価モード時に、
前記第3マルチプレクサは、前記第2マルチプレクサの出力を選択し、
前記第5マルチプレクサは、該第3マルチプレクサの出力を選択し、
前記第7マルチプレクサは、前記第1マルチプレクサの出力を選択し、
前記第8マルチプレクサは、該プロセッサ要素の出力を選択する、
請求項43に記載のシミュレーションプロセッサ。 - 前記プロセッサ要素の記憶モード時に、
前記第4マルチプレクサは、前記シフトレジスタの最初のエントリを選択し、
前記第5マルチプレクサは、該第4マルチプレクサの出力を選択し、
前記第6マルチプレクサは、該プロセッサ要素の出力を選択し、
前記第7マルチプレクサは、該第6マルチプレクサの出力を選択し、
前記第8マルチプレクサは、該シフトレジスタの最後のエントリを選択する、
請求項43に記載のシミュレーションプロセッサ。 - 前記プロセッサ要素の記憶モード時に、
前記第4マルチプレクサは、前記シフトレジスタの最初のエントリを選択し、
前記第5マルチプレクサは、該第4マルチプレクサの出力を選択し、
前記第6マルチプレクサは、該プロセッサ要素の出力を選択し、
前記第7マルチプレクサは、該第6マルチプレクサの出力を選択し、
前記第8マルチプレクサは、該プロセッサ要素の出力を選択する、
請求項43に記載のシミュレーションプロセッサ。 - 前記プロセッサ要素のロードモード時に、
前記第4マルチプレクサは、該プロセッサ要素の出力を選択し、
前記第5マルチプレクサは、該第4マルチプレクサの出力を選択し、
前記第6マルチプレクサは、前記メモリの出力を選択し、
前記第7マルチプレクサは、該第6マルチプレクサの出力を選択し、
前記第8マルチプレクサは、前記シフトレジスタの最後のエントリを選択する、
請求項43に記載のシミュレーションプロセッサ。 - 前記プロセッサ要素のロードモード時に、
前記第4マルチプレクサは、該プロセッサ要素の出力を選択し、
前記第5マルチプレクサは、該第4マルチプレクサの出力を選択し、
前記第6マルチプレクサは、前記メモリの出力を選択し、
前記第7マルチプレクサは、該第6マルチプレクサの出力を選択し、
前記第8マルチプレクサは、該プロセッサ要素の出力を選択する、
請求項43に記載のシミュレーションプロセッサ。 - 前記プロセッサ要素がどの論理動作もシミュレートしない、該プロセッサ要素の非動作モード時に、
前記第3マルチプレクサは、前記第2マルチプレクサの出力を選択し、
前記第5マルチプレクサは、該第3マルチプレクサの出力を選択し、
前記第7マルチプレクサは、前記第1マルチプレクサの出力を選択し、
前記第8マルチプレクサは、前記シフトレジスタの最後のエントリを選択する、
請求項43に記載のシミュレーションプロセッサ。 - 前記少なくとも2つのプロセッサユニットの各々は、前記プロセッサ要素の出力を前記シフトレジスタに結合するか、または該シフトレジスタをリフレッシュするマルチプレクサをさらに含んでいる、請求項34に記載のシミュレーションプロセッサ。
- 前記シミュレーションプロセッサは、ホストコンピュータ内に差し込み可能な基板上に実装される、請求項34に記載のシミュレーションプロセッサ。
- 前記シミュレーションプロセッサは、前記ホストコンピュータのメインメモリに対する直接アクセスを有する、請求項52に記載のシミュレーションプロセッサ。
- 前記相互接続システムがクロスバーを含む、請求項34に記載のシミュレーションプロセッサ。
- 論理動作を実行するためのVLIWプロセッサであって、
相互接続システムと、
該相互接続システムを介して互いに通信可能に結合される複数のプロセッサユニットと
を備えており、
少なくとも2つの該プロセッサユニットの各々は、
該論理動作の少なくとも一部分を実装するように構成可能なプロセッサ要素と、
該プロセッサ要素と関連し、該プロセッサ要素の作動時に中間値を記憶する複数のエントリを備えるシフトレジスタであって、該シフトレジスタが、該プロセッサ要素の出力を受信するように結合されるシフトレジスタと、
プロセッサ要素の出力と該相互接続システムとの間に結合された1つ以上の第1経路マルチプレクサであって、該第1経路マルチプレクサが、該シフトレジスタをバイパスして、該プロセッサ要素の出力を該相互接続システムに提供するための経路を提供する第1経路マルチプレクサと、
該シフトレジスタと該相互接続システムとの間に結合された1つ以上の第2経路マルチプレクサであって、該第2経路マルチプレクサの各々が、該シフトレジスタのエントリの1つを選択し、該選択されたエントリを該相互接続システムにさらに転送する第2経路マルチプレクサと
を含んでいる、VLIWプロセッサ。 - 複数の論理動作を含む論理設計の論理シミュレーションを実行するためのシミュレーションプロセッサであって、該シミュレーションプロセッサは、
相互接続システムと、
該相互接続システムを介して互いに通信可能に結合された複数のプロセッサユニットと
を備えており、
少なくとも2つの該プロセッサユニットの各々は、
少なくとも1つの該論理動作をシミュレートするように構成可能なプロセッサ要素と、
該プロセッサ要素と関連し、該プロセッサ要素の作動時に中間値を記憶する複数のエントリを備えるシフトレジスタであって、該シフトレジスタが、該プロセッサ要素の出力を受信するように結合されるシフトレジスタと、
該シフトレジスタと該相互接続システムとの間に結合された複数のマルチプレクサであって、該マルチプレクサの各々が、該シフトレジスタのエントリの1つを選択し、該選択されたエントリを該相互接続システムにさらに転送し、該マルチプレクサの各々が、複数の選択信号の対応する1つに応じて、該シフトレジスタのエントリの該1つを選択するように構成され、少なくとも1つの選択信号が、該選択信号の他の信号に比べて異なる数のビットを有するマルチプレクサと
を含んでいる、シミュレーションプロセッサ。 - 前記複数のマルチプレクサは、それぞれ第1選択信号、第2選択信号、第3選択信号、および第4選択信号に応じて、前記シフトレジスタのエントリの1つを選択するように構成された第1マルチプレクサと、第2マルチプレクサと、第3マルチプレクサと、第4マルチプレクサとを備える、請求項56に記載のシミュレーションプロセッサ。
- 前記第4選択信号がゼロビットを有し、前記第4マルチプレクサがアクティブではない、請求項57に記載のシミュレーションプロセッサ。
- 前記第3選択信号は、前記第1、第2、および第4選択信号と比べて異なる数のビットを有し、第3マルチプレクサが、前記第1、第2、および第4マルチプレクサと比べて、前記シフトレジスタの異なる数のエントリにアクセスするように構成される、請求項57に記載のシミュレーションプロセッサ。
- 複数の論理動作を含む論理設計の論理シミュレーションを実行するためのシミュレーションプロセッサであって、該シミュレーションプロセッサは、
相互接続システムと、
該相互接続システムを介して互いに通信可能に結合される複数のプロセッサユニットと
を備えており、
少なくとも2つの該プロセッサユニットの各々は、
少なくとも1つの該論理動作をシミュレートするように構成可能なプロセッサ要素と、
該プロセッサ要素と関連し、該プロセッサ要素の作動時に中間値を記憶する複数のエントリを備えるシフトレジスタであって、該シフトレジスタが、該プロセッサ要素の出力を受信するように結合されるシフトレジスタと、
該シフトレジスタと該相互接続システムとの間に結合された複数のマルチプレクサであって、該マルチプレクサの各々が、該シフトレジスタのエントリの1つを選択し、該選択されたエントリを該相互接続システムにさらに転送し、該マルチプレクサの各々が、該プロセッサ要素のモードを示す動作コードの関数である制御信号によって制御されるマルチプレクサと
を含んでいる、シミュレーションプロセッサ。 - 複数の論理動作を含む論理設計の論理シミュレーションを実行するためのシミュレーションプロセッサであって、該シミュレーションプロセッサは、
相互接続システムと、
該相互接続システムを介して互いに通信可能に結合されたn個のプロセッサユニットであって、nは、少なくとも2である整数である、プロセッサユニットと
を備えており、
少なくとも2つの該プロセッサユニットは、
少なくとも1つの該論理動作をシミュレートするように構成可能なプロセッサ要素と、
該プロセッサ要素と関連し、該プロセッサ要素の作動時に複数のエントリを備えるシフトレジスタであって、該シフトレジスタが、該プロセッサ要素の出力を受信するように結合され、vの深さを有するシフトレジスタと、
q×2nビット〜qビットの入力マルチプレクサであって、該相互接続システムからqビットの入力データを選択し、qが少なくとも2の整数である入力マルチプレクサと、
v×jビット〜jビットの出力マルチプレクサであって、該シフトレジスタからjビットの出力データを選択し、jが少なくとも2の整数である出力マルチプレクサと、
(j+2)ビット〜kビットのマルチプレクサであって、該シフトレジスタからのjビット出力データ、該プロセッサ要素の出力データ、および該プロセッサ要素と関連するメモリからの出力データからkビットの出力データを選択し、該プロセッサ要素のモードを示す動作コードの関数である制御信号に応じて、該シミュレーションプロセッサからのデータを記憶し、データを該シミュレーションプロセッサにロードし、kが、少なくとも2の整数であり、(j+2)ビット〜kビットのマルチプレクサがさらに、該kビットの出力データを該相互接続システムにさらに転送するマルチプレクサと
を含んでいる、シミュレーションプロセッサ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/238,505 US7444276B2 (en) | 2005-09-28 | 2005-09-28 | Hardware acceleration system for logic simulation using shift register as local cache |
US11/291,164 US20070073999A1 (en) | 2005-09-28 | 2005-11-30 | Hardware acceleration system for logic simulation using shift register as local cache with path for bypassing shift register |
PCT/US2006/034865 WO2007037935A2 (en) | 2005-09-28 | 2006-09-07 | Hardware acceleration system for logic simulation using shift register as local cache |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009514070A true JP2009514070A (ja) | 2009-04-02 |
Family
ID=37895256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008533384A Withdrawn JP2009514070A (ja) | 2005-09-28 | 2006-09-07 | 局所キャッシュとしてシフトレジスタを使用する論理シミュレーション用のハードウェア加速システム |
Country Status (2)
Country | Link |
---|---|
US (1) | US7444276B2 (ja) |
JP (1) | JP2009514070A (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070073999A1 (en) * | 2005-09-28 | 2007-03-29 | Verheyen Henry T | Hardware acceleration system for logic simulation using shift register as local cache with path for bypassing shift register |
US20070219771A1 (en) * | 2005-12-01 | 2007-09-20 | Verheyen Henry T | Branching and Behavioral Partitioning for a VLIW Processor |
US8813052B2 (en) * | 2005-12-07 | 2014-08-19 | Microsoft Corporation | Cache metadata for implementing bounded transactional memory |
US7877249B2 (en) * | 2006-01-12 | 2011-01-25 | International Business Machines Corporation | Concealment of external array accesses in a hardware simulation accelerator |
US8898652B2 (en) * | 2006-03-23 | 2014-11-25 | Microsoft Corporation | Cache metadata for accelerating software transactional memory |
US7904288B1 (en) * | 2006-11-06 | 2011-03-08 | Cadence Design Systems, Inc. | Hardware emulator having a variable input emulation group |
US9043553B2 (en) * | 2007-06-27 | 2015-05-26 | Microsoft Technology Licensing, Llc | Leveraging transactional memory hardware to accelerate virtualization and emulation |
US8266387B2 (en) * | 2007-06-27 | 2012-09-11 | Microsoft Corporation | Leveraging transactional memory hardware to accelerate virtualization emulation |
US8176253B2 (en) * | 2007-06-27 | 2012-05-08 | Microsoft Corporation | Leveraging transactional memory hardware to accelerate virtualization and emulation |
WO2009118731A2 (en) | 2008-03-27 | 2009-10-01 | Rocketick Technologies Ltd | Design simulation using parallel processors |
US9032377B2 (en) | 2008-07-10 | 2015-05-12 | Rocketick Technologies Ltd. | Efficient parallel computation of dependency problems |
CN102089752B (zh) * | 2008-07-10 | 2014-05-07 | 洛克泰克科技有限公司 | 依赖性问题的有效率的并行计算 |
US9128748B2 (en) | 2011-04-12 | 2015-09-08 | Rocketick Technologies Ltd. | Parallel simulation using multiple co-simulators |
US9081925B1 (en) * | 2012-02-16 | 2015-07-14 | Xilinx, Inc. | Estimating system performance using an integrated circuit |
US9529946B1 (en) | 2012-11-13 | 2016-12-27 | Xilinx, Inc. | Performance estimation using configurable hardware emulation |
JP6354194B2 (ja) * | 2014-02-18 | 2018-07-11 | 富士通株式会社 | マルチプレクサ回路、マルチプレクサ回路の設計プログラムおよびマルチプレクサ回路の設計装置 |
US9846587B1 (en) | 2014-05-15 | 2017-12-19 | Xilinx, Inc. | Performance analysis using configurable hardware emulation within an integrated circuit |
US9608871B1 (en) | 2014-05-16 | 2017-03-28 | Xilinx, Inc. | Intellectual property cores with traffic scenario data |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4736663A (en) | 1984-10-19 | 1988-04-12 | California Institute Of Technology | Electronic system for synthesizing and combining voices of musical instruments |
JP2638613B2 (ja) | 1987-06-25 | 1997-08-06 | エイ・ティ・アンド・ティ・コーポレーション | プログラマブル アクセラレータ及びその方法 |
US5093920A (en) | 1987-06-25 | 1992-03-03 | At&T Bell Laboratories | Programmable processing elements interconnected by a communication network including field operation unit for performing field operations |
US5452231A (en) | 1988-10-05 | 1995-09-19 | Quickturn Design Systems, Inc. | Hierarchically connected reconfigurable logic assembly |
JP2746502B2 (ja) | 1992-08-20 | 1998-05-06 | 三菱電機株式会社 | 半導体集積回路装置の製造装置及び製造方法並びに電子回路装置 |
US5572710A (en) | 1992-09-11 | 1996-11-05 | Kabushiki Kaisha Toshiba | High speed logic simulation system using time division emulation suitable for large scale logic circuits |
US5663900A (en) | 1993-09-10 | 1997-09-02 | Vasona Systems, Inc. | Electronic simulation and emulation system |
CA2180855A1 (en) | 1994-01-10 | 1995-07-13 | Stephen G. Churchill | A massively miltiplexed superscalar harvard architecture computer |
US5737631A (en) | 1995-04-05 | 1998-04-07 | Xilinx Inc | Reprogrammable instruction set accelerator |
US5956518A (en) | 1996-04-11 | 1999-09-21 | Massachusetts Institute Of Technology | Intermediate-grain reconfigurable processing device |
US5958048A (en) | 1996-08-07 | 1999-09-28 | Elbrus International Ltd. | Architectural support for software pipelining of nested loops |
US5841967A (en) | 1996-10-17 | 1998-11-24 | Quickturn Design Systems, Inc. | Method and apparatus for design verification using emulation and simulation |
US6009256A (en) | 1997-05-02 | 1999-12-28 | Axis Systems, Inc. | Simulation/emulation system and method |
US5960191A (en) | 1997-05-30 | 1999-09-28 | Quickturn Design Systems, Inc. | Emulation system with time-multiplexed interconnect |
US6530014B2 (en) | 1997-09-08 | 2003-03-04 | Agere Systems Inc. | Near-orthogonal dual-MAC instruction set architecture with minimal encoding bits |
US5915123A (en) | 1997-10-31 | 1999-06-22 | Silicon Spice | Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements |
DE69927075T2 (de) | 1998-02-04 | 2006-06-14 | Texas Instruments Inc | Rekonfigurierbarer Koprozessor mit mehreren Multiplizier-Akkumulier-Einheiten |
US6097886A (en) | 1998-02-17 | 2000-08-01 | Lucent Technologies Inc. | Cluster-based hardware-software co-synthesis of heterogeneous distributed embedded systems |
US6523055B1 (en) | 1999-01-20 | 2003-02-18 | Lsi Logic Corporation | Circuit and method for multiplying and accumulating the sum of two products in a single cycle |
US6745317B1 (en) | 1999-07-30 | 2004-06-01 | Broadcom Corporation | Three level direct communication connections between neighboring multiple context processing elements |
US6385757B1 (en) | 1999-08-20 | 2002-05-07 | Hewlett-Packard Company | Auto design of VLIW processors |
US6604065B1 (en) | 1999-09-24 | 2003-08-05 | Intrinsity, Inc. | Multiple-state simulation for non-binary logic |
US6678645B1 (en) | 1999-10-28 | 2004-01-13 | Advantest Corp. | Method and apparatus for SoC design validation |
US6678646B1 (en) | 1999-12-14 | 2004-01-13 | Atmel Corporation | Method for implementing a physical design for a dynamically reconfigurable logic circuit |
JP2001222564A (ja) | 2000-02-09 | 2001-08-17 | Hitachi Ltd | 論理エミュレーションシステム |
JP2001249824A (ja) | 2000-03-02 | 2001-09-14 | Hitachi Ltd | 論理エミュレーションプロセッサおよびそのモジュールユニット |
US6766445B2 (en) * | 2001-03-23 | 2004-07-20 | Hewlett-Packard Development Company, L.P. | Storage system for use in custom loop accelerators and the like |
US7080365B2 (en) | 2001-08-17 | 2006-07-18 | Sun Microsystems, Inc. | Method and apparatus for simulation system compiler |
US20030105617A1 (en) | 2001-12-05 | 2003-06-05 | Nec Usa, Inc. | Hardware acceleration system for logic simulation |
CN1320451C (zh) * | 2002-04-18 | 2007-06-06 | 皇家飞利浦电子股份有限公司 | 具有数据溢出装置的vliw处理器 |
US7953588B2 (en) | 2002-09-17 | 2011-05-31 | International Business Machines Corporation | Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host |
US7480611B2 (en) | 2004-05-13 | 2009-01-20 | International Business Machines Corporation | Method and apparatus to increase the usable memory capacity of a logic simulation hardware emulator/accelerator |
US20060089829A1 (en) | 2004-10-21 | 2006-04-27 | International Business Machines Corporation | Method and apparatus to efficiently access modeled memory in a logic simulation hardware emulator |
-
2005
- 2005-09-28 US US11/238,505 patent/US7444276B2/en not_active Expired - Fee Related
-
2006
- 2006-09-07 JP JP2008533384A patent/JP2009514070A/ja not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US20070073528A1 (en) | 2007-03-29 |
US7444276B2 (en) | 2008-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009514070A (ja) | 局所キャッシュとしてシフトレジスタを使用する論理シミュレーション用のハードウェア加速システム | |
US20070073999A1 (en) | Hardware acceleration system for logic simulation using shift register as local cache with path for bypassing shift register | |
US20070129926A1 (en) | Hardware acceleration system for simulation of logic and memory | |
KR100912437B1 (ko) | 집적회로장치 | |
Compton et al. | Configuration relocation and defragmentation for run-time reconfigurable computing | |
JP7266602B2 (ja) | ニューラルネットワークプロセッサに対する統合メモリ構造 | |
US20070074000A1 (en) | VLIW Acceleration System Using Multi-state Logic | |
KR20220054357A (ko) | 직렬 할당 데이터에 대해 pim(processing-in-memory) 연산을 수행하기 위한 방법, 및 관련 메모리 디바이스 및 시스템 | |
US20070219771A1 (en) | Branching and Behavioral Partitioning for a VLIW Processor | |
JP4900717B2 (ja) | 再構成可能な装置 | |
Du Nguyen et al. | On the implementation of computation-in-memory parallel adder | |
US20040123258A1 (en) | Logic multiprocessor for FPGA implementation | |
Gu et al. | DLUX: A LUT-based near-bank accelerator for data center deep learning training workloads | |
JPH0212343A (ja) | シミユレーシヨン・エンジン | |
JP7264897B2 (ja) | メモリ装置及びそれを制御するための方法 | |
Denzler et al. | Casper: Accelerating stencil computations using near-cache processing | |
Garofalo et al. | A heterogeneous in-memory computing cluster for flexible end-to-end inference of real-world deep neural networks | |
WO2022040230A1 (en) | Reconfiguration of programmable integrated circuits | |
CN111752530A (zh) | 对块稀疏度的机器学习架构支持 | |
Paul et al. | MAHA: An energy-efficient malleable hardware accelerator for data-intensive applications | |
Santos et al. | Survey on near-data processing: Applications and architectures | |
Paul et al. | Energy-efficient hardware acceleration through computing in the memory | |
Abdelhamid et al. | MITRACA: A next-gen heterogeneous architecture | |
Fatica et al. | STREAMFLO: an Euler solver for streaming architectures | |
Gayles et al. | The design of the MGAP-2: A micro-grained massively parallel array |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20091110 |