[go: up one dir, main page]

JP2009517783A - ロジックおよびメモリのシミュレーション用ハードウェア加速システム - Google Patents

ロジックおよびメモリのシミュレーション用ハードウェア加速システム Download PDF

Info

Publication number
JP2009517783A
JP2009517783A JP2008543424A JP2008543424A JP2009517783A JP 2009517783 A JP2009517783 A JP 2009517783A JP 2008543424 A JP2008543424 A JP 2008543424A JP 2008543424 A JP2008543424 A JP 2008543424A JP 2009517783 A JP2009517783 A JP 2009517783A
Authority
JP
Japan
Prior art keywords
memory
user
storage memory
simulation
processor
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
Application number
JP2008543424A
Other languages
English (en)
Inventor
ヘンリー ティー. バーヘイエン,
ウィリアム ワット,
Original Assignee
リーガ システムズ, インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by リーガ システムズ, インコーポレイテッド filed Critical リーガ システムズ, インコーポレイテッド
Publication of JP2009517783A publication Critical patent/JP2009517783A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

ハードウェア加速型シミュレータは、シミュレーションプロセッサにより別々にアクセス可能であるストレージメモリとプログラムメモリとを含む。プログラムメモリは、チップをシミュレーションするために実行される命令を格納する。ストレージメモリはユーザメモリをシミュレーションするために使用される。プログラムメモリとストレージメモリは、シミュレーションプロセッサによって別々にアクセス可能であるため、ユーザメモリへの読み書きのシミュレーションは、プログラムメモリとシミュレーションプロセッサとの間のメモリ送信を妨害せず、シミュレーションを加速し、したがって、ある態様においては、ユーザメモリアドレスは、ユーザメモリアドレスに対して固定の設定済みオフセットを追加することによって、メモリアドレスを格納するようにマッピングされる。したがって、実行時にはアドレス変換が要求されない。

Description

(発明の分野)
本発明は、概して、半導体チップとも呼ばれる、半導体集積回路の設計のシミュレーションのためにハードウェア加速システムにおいて使用することができるシミュレーションプロセッサなど、VLIW(超長命令語)プロセッサに関する。ある態様において、本発明は、半導体チップのロジックとメモリとの両方をシミュレーションするようなシステムの使用に関する。
(関連技術の記述)
典型的に、半導体チップの設計のシミュレーションは、設計の大量のロジック、大量のオンチップメモリと外部メモリ、および、最新の半導体チップの設計には典型的な高速の操作によって、高速の処理速度と多数の実行ステップとを必要とする。シミュレーションに対する典型的な手法は、ソフトウェアベースのシミュレーション(つまり、ソフトウェアシミュレータ)である。この手法では、チップのロジックとメモリ(以下、ユーザロジックとユーザメモリと呼ぶ)は、汎用ハードウェア上で実行するコンピュータソフトウェアによってシミュレーションされる。ユーザロジックは、ロジック機能を模倣するソフトウェアの命令の実行によってシミュレーションされる。ユーザメモリは、汎用ハードウェアのメインメモリを割り当てることによってシミュレーションされて、シミュレーションの必要に応じて、これらのメモリ場所とデータを相互に送信する。残念ながら、ソフトウェアシミュレータは、典型的に、非常に速度が遅い。チップ上で大量のロジックをシミュレーションするには、大量の演算や結果、これに対応して実行するためにメインメモリから汎用プロセッサに送信される大量のソフトウェアの命令が必要である。チップ上の大量のメモリをシミュレーションするには、チップ記述に使用されるアドレスと汎用ハードウェアのメインメモリで使用される対応のアドレスとの間で大量のデータ送信とアドレス変換が必要である。
チップシミュレーションの別の手法は、ハードウェアベースのシミュレーション(つまり、ハードウェアシミュレータ)である。この手法では、ユーザロジックとユーザメモリは、エミュレータのハードウェア回路に対して専用ベースでマップされて、ハードウェア回路がシミュレーションを実施する。ユーザロジックは、エミュレータの特定のハードウェアゲートにマップされ、ユーザメモリは、エミュレータの特定の物理的メモリにマップされる。残念ながら、エミュレータで必要なハードウェア回路の数は、シミュレーションされるチップ設計のサイズに応じて増加するため、ハードウェアエミュレータは、典型的に、コストが高い。例えば、オンチップロジックはエミュレータの物理的ロジックに専用ベースでマッピングされるため、ハードウェアエミュレータは、典型的に、チップ上に存在するロジックと同じ量が必要である。大量のユーザロジックが存在すると、エミュレータには同じ大量の物理的ロジックが存在しなければならない。さらに、ユーザメモリは、エミュレータにもマッッピングしなければならず、さらに、ユーザメモリからハードウェアエミュレータの物理的メモリへの専用マッピングも必要である。典型的に、エミュレータメモリは、ユーザメモリを模倣するようにインスタンス化されてパーティションされる。これは、各メモリが物理的アドレスとデータポートを使用するので、極めて非効率である。典型的に、マッピングすることが可能なユーザロジックとユーザメモリの量は、エミュレータの設計特徴に依存するが、ユーザロジックとユーザメモリの両方は、エミュレータに含まれる物理的リソースを要求し、設計サイズによって増大する。これは、エミュレータのコストを引き上げる。また、パフォーマンスを低下させて、エミュレータの設計を複雑化させる。エミュレータのメモリは、典型的に、高速であるが小型である。大型のユーザメモリは、多数のエミュレータメモリで分散しなければならない場合がある。この場合には、異なるエミュレータメモリ間での同期が必要となる。
ロジックシミュレーションのまた別の手法は、ハードウェア加速型シミュレーションである。ハードウェア加速型シミュレーションは、典型的に、ロジック設計をエミュレーションまたはシミュレーションするように構成可能なプロセッサ要素を含む特殊なハードウェアシミュレーションシステムを利用する。コンパイラは、典型的に、ロジック設計(例えば、ネットリストまたはRTL(レジスタ変換言語))を、プロセッサ要素にロードされる命令を含むプログラムに変換するために提供される。ロジック設計を細分化して、ロジック設計のこれらの部分をシミュレーションプロセッサにロードする多様な技術を利用することができるので、ハードウェア加速型シミュレーションは、ロジック設計のサイズに伴い増大しなくてもよい。結果として、ハードウェア加速型シミュレータは、典型的に、ハードウェアエミュレータに比較するとコストがかなり低い。さらに、ハードウェア加速型シミュレータは、シミュレーションプロセッサによって生まれるハードウェア加速によって、典型的に、ソフトウェアシミュレータよりも高速である。ハードウェア加速型シミュレーションの一例は、特許文献1に記述されており、参照により援用される。
しかしながら、ハードウェア加速型シミュレータは、ユーザメモリのシミュレーションが困難な場合がある。それらは典型的に、ユーザメモリのモデリング問題を、上記のように、エミュレータと同様に、ユーザメモリをモデル化するために、インスタンス化ベースで物理的メモリを使用することによって、解決する。
ハードウェア加速型シミュレータの別の手法は、ユーザロジックのハードウェア加速型シミュレーションとユーザメモリのソフトウェアシミュレーションを組み合わせることである。この手法では、ユーザロジックは、特定のプロセッサ要素上で命令を実行することによってシミュレーションされるが、ユーザメモリは、汎用ハードウェアのメインメモリを使用することによってシミュレーションされる。しかしながら、この手法は、ユーザメモリのシミュレーションに必要な大量のデータ送信とアドレス変換のために速度が遅い。この種の変換は、汎用ハードウェアとの間の待ち時間によってパフォーマンスを低下させるので、高速化を無効にすることがよくある。さらに、データは、ユーザロジックとユーザメモリとの間で送信されることがよくある。例えば、ロジックゲートの出力は、ユーザメモリに格納される場合があり、または、ロジックゲートへの入力は、ユーザメモリによってもたらされる場合がある。合成手法では、これらの形の送信は、特殊なハードウェアシミュレーションシステムと、汎用ハードウェアのメインメモリとの間の送信が必要である。これは、複雑であるとともに速度が遅い可能性がある。
米国特許出願公開第2003/0105617号明細書
したがって、ユーザロジックおよびユーザメモリの両方をシミュレーションし、上記の欠点の一部またはすべてを克服する手法に対する必要性が存在する。
ある態様において、本発明は、シミュレーションプロセッサによって別々にアクセス可能なストレージメモリとプログラムメモリを含むハードウェア加速型シミュレータを提供することによって、先行技術の限界を克服する。プログラムメモリは、チップをシミュレーションするために実行される命令を格納する。ストレージメモリはユーザメモリをシミュレーションするために使用される。つまり、ユーザメモリへのアクセスは、ストレージメモリの対応部分へのアクセスによってシミュレーションされる。プログラムメモリとストレージメモリは、シミュレーションプロセッサによって別々にアクセス可能であるため、ユーザメモリからの読み出しや書き込みのシミュレーションは、プログラムメモリとシミュレーションプロセッサとの間の命令の送信を妨害しないので、シミュレーションの速度が上昇する。
本発明のある態様において、ユーザメモリアドレスのストレージメモリアドレスへのマッピングは、実行時のアドレス変換をほとんどあるいはまったく必要としない方式において実施されることが好ましい。ある手法では、ユーザメモリの各インスタンスは、実行時前、典型的にはシミュレーションプログラムのコンパイル中に、固定のオフセットに割り当てられる。対応するストレージメモリアドレスは、ユーザメモリアドレスから選択されたビットで付加された固定オフセットとして決定される。例えば、ユーザメモリアドレスが[AB]で与えられ、AとBはそれぞれ言語アドレスとビットアドレスのビットであるが、対応するストレージメモリアドレスは[CAB]の場合があり、Cはユーザメモリの特定のインスタンスに対して割り当てられた固定オフセットである。固定オフセットは、実行時前に決定されて、シミュレーション中固定される。シミュレーション中、ユーザメモリアドレス[AB]は、シミュレーションの一部として決定することができる。対応するストレージメモリアドレスは、オフセットCを演算したアドレス[AB]に追加することによって容易かつ迅速に決定される。アドレス変換オーバーヘッドの削減によって、シミュレーションの速度が上昇する。
本発明の別の態様では、シミュレーションプロセッサはローカルメモリを含み、ストレージメモリへのアクセスはローカルメモリから行われる。つまり、ストレージメモリに書き込まれるデータは、ローカルメモリからストレージメモリに書き込まれる。同様に、ストレージメモリから読み出されるデータは、ストレージメモリからローカルメモリに読み出される。ある特定の手法では、シミュレーションプロセッサは、n個のプロセッサ要素を含み、データは、プロセッサ要素に対応するローカルメモリの間でインターリーブする。例えば、nビットがローカルメモリからストレージメモリに読み出される場合、プロセッサ要素0のローカルメモリからのnビットすべてを読み出す代わりに、n個のプロセッサ要素のそれぞれのローカルメモリから1ビットを読み出す可能性がある。同様の手法は、ストレージメモリからローカルメモリにデータを書き込むために使用することが可能である。代わりの手法では、データはインターリーブされない。代わりに、ローカルメモリから読み出される、またはローカルメモリに書き込まれるデータは、ある特定のプロセッサ要素に関連付けられたローカルメモリと相互に送信される。別の変形では、両方の手法がサポートされるので、インターリーブとインターリーブ以外のフォーマットとの間でデータを転換することができる。
別の態様では、ローカルメモリは、命令を間接的に使用することが可能である。ストレージメモリへの書き込みまたはストレージメモリからの読み出し(つまり、ストレージメモリの命令)が望まれる場合、シミュレーションプロセッサによって受信された命令のストレージメモリ命令全体を含む代わりに、シミュレーションプロセッサにより受信された命令は、ローカルメモリのアドレスをポイントする。ストレージメモリ命令全体は、このローカルメモリアドレスに含まれる。この間接命令によって、シミュレーションプロセッサに対して示される命令を短くすることができるので、シミュレーションプロセッサの全体的な処理能力が向上する。
ある特定の実装では、シミュレーションプロセッサは、ホストコンピュータに差し込み可能な基板上に実装されて、シミュレーションプロセッサは、プログラムメモリとして機能している、ホストコンピュータのメインメモリに直接アクセスする。このように、命令は、DMAアクセスを使用してかなり迅速にシミュレーションプロセッサに送信することが可能である。シミュレーションプロセッサは、別のインターフェースによってストレージメモリにアクセスする。ある設計では、このインターフェースは、シミュレーションプロセッサからの読み出しと書き込みを制御するインターフェースと、ストレージメモリからの読み出しと書き込みを制御するインターフェースとの2つの部分に分けられる。2つの部分は、中間インターフェースから相互に通信する。この手法は、モジュール式設計になる。各部分は、シミュレーションプロセッサまたはストレージメモリそれぞれ特定の追加の機能を含むように設計される。
本発明のその他の態様は、上記の手法に対応する機器やシステム、これらの機器やシステムのアプリケーション、および、前述のすべてに対応する方法を含む。本発明の別の態様は、半導体シップのシミュレーション以外を目的とする同様のアーキテクチャを備えるVLIWプロセッサを含む。
本発明は、以下の添付図面を参照すると、以下の詳細説明および添付の請求項から容易に示されるその他の利点や特徴を有する。
図は、図説のみを目的として、本発明の実施形態を表す。当業者は、以下の検討から、説明される発明の原則から逸脱せずに、ここで図説される代わりの実施形態の構造や方法を採用することができることを容易に理解する。
図1は、本発明のある実施形態によるハードウェア加速型ロジックシミュレーションシステムを図説する模式図である。ロジックシミュレーションシステムは、専用ハードウェア(HW)シミュレータ130、コンパイラ108、およびAPI(アプリケーションプログラムインターフェイス)116を含む。ホストコンピュータ110は、CPU114とメインメモリ112を含む。API116は、ソフトウェアインターフェースで、これによって、ホストコンピュータ110がハードウェアシミュレータ130を制御する。専用HWシミュレータ130は、プログラムメモリ121、ストレージメモリ122およびシミュレーションプロセッサ100を含む。シミュレーションプロセッサ100は、プロセッサ要素102、内蔵型ローカルメモリ104、ハードウェア(HW)メモリインターフェースA142およびハードウェア(HW)メモリインターフェースB144を含む。
図1に示されたシステムは、次のように機能する。コンパイラ108は、設計のRTL(レジスタ変換言語)記述またはネットリスト記述などのユーザチップまたは設計の記述106を受信する。記述106は、チップ内(つまりユーザロジック)およびオンチップメモリ上(つまりユーザメモリ)の両方のロジック機能の記述を含む。記述106は、典型的に、グラフのノードが設計のハードウェアブロックに対応している有向グラフとしてユーザロジック設計を表し、典型的に、動作または機能的(つまり合成不可能な)記述によって(合成可能な記述も処理可能ではあるが)ユーザメモリを表す。コンパイラ108は、設計の記述106をプログラム109にコンパイルする。プログラムは、ユーザロジックをシミュレーションする命令とユーザメモリをシミュレーションする命令を含む。命令は、典型的に、ユーザロジックの機能をシミュレーションするために、設計106内のユーザロジックをシミュレーションプロセッサ100内のプロセッサ要素102に対してマッピングする。コンパイラ108によって受信される記述106は、典型的に、チップまたは設計以上を表す。シミュレーションの目的で設計を刺激するために使用されるテスト環境を表すこともよくある(つまり、テストベンチ)。システムは、チップ設計とテストベンチ(テストベンチがユーザメモリのブロックを必要とする場合を含む)の両方をシミュレーションするために設計することが可能である。
命令は、典型的に、設計106内のユーザメモリを、ストレージメモリ122内の場所に対してマッピングする。ストレージメモリ122からのデータは、プロセッサ要素102の必要に応じて、ローカルメモリ104との間で相互に送信される。シミュレーションの目的においては、ユーザメモリにアクセスする機能は、ストレージメモリの対応する場所にアクセスする命令によってシミュレーションされる。例えば、一定のユーザメモリアドレスでユーザメモリに書き込む機能は、対応するストレージメモリアドレスでストレージメモリに書き込む命令によってシミュレーションされる。同様に、一定のユーザメモリアドレスでユーザメモリから読み出す機能は、対応するストレージメモリアドレスでストレージメモリから読み出す命令によってシミュレーションされる。
典型的なコンパイラ108の詳細説明は、2003年6月5日に発行された米国特許出願公開第2003/0105617(A1)号、「Hardware Acceleration System for Simulation」にあり、参照によって援用される。特に、191−252段落と対応する図面を参照する。プログラム109の命令はメモリ112に格納される。
シミュレーションプロセッサ100は、ユーザロジックのロジックゲートをシミュレーションするための複数のプロセッサ要素102、および、プロセッサ要素102のために命令とデータを格納するためのローカルメモリ104を含む。ある実施形態では、HWシミュレータ130は、PCI(Peripheral Component Interconnect)とDMA(ダイレクトメモリアクセス)コントローラと共にFPGA(Field−Programmable Gate Array)を使用する汎用PCI基板上に実装されるので、HWシミュレータ130は、当然、ホストコンピュータ110である任意の汎用コンピュータシステムに差し込まれる。シミュレーションプロセッサ100は、HWシミュレータ130の一部を形成する。シミュレーションプロセッサ100は、API116からホストコンピュータ110によって制御されている操作によってホストコンピュータ110のメインメモリ112への直接アクセスを有する。ホストコンピュータ110は、メインメモリ112とHWシミュレータ130上のメモリ121、122の間でDMA送信を命令することが可能であるが、メインメモリ112とメモリ122との間のDMAはオプションにすることができる。
ホストコンピュータ110は、ユーザおよびコンパイラ108によって入力として生成されるプログラム109によって指定されたシミュレーションベクトル(非表示)を受け取って、シミュレーションプロセッサ100のために基板レベルの命令118を生成する。シミュレーションベクトル(非表示)は、シミュレーションされるネットリスト106に対する入力の値を含む。基板レベルの命令118は、DMAによって、メインメモリ112からHWシミュレータ130のプログラムメモリ121に送信される。メモリ121は、メインメモリ112に送信するためのシミュレーションの結果120も格納する。ストレージメモリ122はユーザメモリデータを格納するとともに、あるいは(オプションで)シミュレーションベクトル(非表示)または結果120を格納する。メモリインターフェース142、144は、それぞれ、メモリ121、122にアクセスするように、プロセッサ要素102のためにインターフェースを提供する。プロセッサ要素102は、命令118を実行して、ある時点で、シミュレーション結果120をDMAによってホストコンピュータ110に返す。中間結果は、その後の命令によって使用するために基板上に残すことができる。すべての命令118を実行すると、1つのシミュレーションベクトルのためのネットリスト106全体をシミュレーションする。図1に示したようなハードウェア加速型シミュレーションシステムの操作の詳細検討は、2003年6月5日に発行された米国特許出願公開第2003/0105617(A1)号にあり、全体が参照により援用される。
図2は、本発明のある実施形態によるハードウェア加速型シミュレーションシステムのシミュレーションプロセッサ100を図説する模式図である。シミュレーションプロセッサ100は、相互接続システム101によって互いに通信するプロセッサユニット103(プロセッサユニット1、プロセッサユニット2、・・・プロセッサユニットn)を含む。この例では、相互接続システムは、非妨害クロスバーである。各プロセッサユニットは、クロスバーから2つまでの入力を受け取ることができるので、n個のプロセッサユニットでは、2nの入力信号が使用可能であり、入力信号が2n個の信号から選択することが可能である(スラッシュと「2n」の注釈のある内向き矢印によって示されている)。各プロセッサユニットは、クロスバーのために最高2つまでの出力を生成することが可能である(外向き矢印によって示されている)。n個のプロセッサユニットの場合、これは、2n個の出力信号を作成する。このように、クロスバーは、2n(プロセッサユニットからの出力)×2n(プロセッサユニットへの入力)クロスバーであり、各プロセッサユニット103の各入力が任意のプロセッサユニット103の任意の出力に連結できるようにする。この方式では、あるプロセッサユニットによって演算される中間値は、その他任意のプロセッサユニットによる演算のための入力として利用させることが可能である。
n個のプロセッサユニットを含むシミュレーションプロセッサ100の場合、それぞれは2つの出力を有するので、非妨害アーキテクチャのクロスバーにおいては、2n個の信号が選択可能であることが必要である。各プロセッサユニットが同一である場合、それぞれは、2つの変数をクロスバーに入力することが好ましい。これにより、2n×2nの非妨害クロスバーが生まれる。しかしながら、このアーキテクチャは不要である。妨害アーキテクチャ、非同種アーキテクチャ、最適化アーキテクチャ(特定の設計スタイルに対して)、共有アーキテクチャ(プロセッサユニットは、アドレスビットを共有するか、クロスバーへの入力または出力ラインを共有する)は、非妨害2n×2nクロスバー以外の相互接続システム101が好まれる場合の一部の例である。
プロセッサユニット103のそれぞれは、プロセッサ要素(PE)、ローカルキャッシュ、および、そのメモリとしてローカルメモリ104の対応部分を含む。したがって、各プロセッサユニット103は、ユーザロジックの少なくとも1つのロジックゲートをシミュレーションするとともに、シミュレーション中に中間または最終値を格納するように構成可能である。
図3は、本発明による、ユーザメモリアドレスのストレージメモリアドレスへの一つのマッピングを図説する。半導体チップは、大量のメモリインスタンスを有する可能性があり、それぞれのインスタンスは、異なるサイズである。かなり小型(例えば、内部FIFO)から非常に大型(例えば内部DRAMまたは外部メモリ)までさまざまである。メモリインスタンスは、典型的に、一定の数の語を含み、それぞれの語は一定の数のビットを有するとして説明される。例えば、ユーザメモリの1つのインスタンスは、reg[length]m[#words]という命名によって説明することができるが、ここで、「length」は各語の長さを定義し、「#words」はメモリインスタンスの中の語の数を定義する。
典型的に、長さのフィールドはビットパックフィールドで、各語の長さをビット数で表す。例えば、[3:0]は、長さが4ビットであることを定義し、[9:3]は長さが7ビットであることを定義する(ビット3から9を使用する)。#wordsフィールドはアンパックで、メモリの有効な範囲をリストするだけである。例えば、[0:31]は、#wordsが32(語)であることを定義し、[1024:1028]は、1024の値から開始して、#wordsが5(語)であることを定義する。
例えば、reg[6:2]m[0:5]は、図3に示されているように、合計で6語(範囲0:5によって定義される)を有するユーザメモリのインスタンスで、それぞれの長さは5ビット(範囲6:2により定義される)である。図の中で、各行は、1つの語を表し、0から5の数字(またはバイナリでは000から101)は語のアドレスを表す。各語には、2から6の数字(または010から110)によって表されるように、5つのビットがある。便宜を図るために、語のアドレスはビットa0、a1、a2などによって表すことができるが、a0は最下位ビットである。同様に、ビットアドレスは、ビットb0、b1、b2などによって表すことができる。図3の例では、語のアドレスは、a2、a1、a0の3つのビットを含み、ビットアドレスも3つのビットb2、b1、b0を含む。メモリインスタンスのアドレスが語ベースである場合、ビットアドレスはゼロになるので(つまり、b2=0、b1=0、およびb0=0)、語のアドレスだけを指定することが必要である。特定のビットのアドレスが指定されている場合、語アドレスとビットアドレスの両方が使用される。この例では、個別のビットのアドレスが指定されている場合、相対的ユーザメモリアドレスは、[a2 a1 a0 b2 b1 b0]になる。アドレス全体の長さは、語のアドレスの長さ(この例では3ビット)とビットアドレスの長さ(この例ではこれも3ビット)の和である。
この説明は、2−状態のロジックシミュレーションにも適用される。この場合には、回路のビット(例えば、ゲートの入力ビットまたは出力ビット)は、シミュレーション中の可能性のある2−状態(例えば、0または1)のいずれかをとることができる。したがって、ビットの状態は、シミュレーション中は単独のビットによって表すことが可能である。対照的に、4−状態のロジックシミュレーションでは、回路のビットは、可能性のある4−状態(例えば、0、1、XまたはZ)のうちの1つをとる可能性があるため、シミュレーション中は2ビットによって表される。4−状態のシミュレーションのためのアドレスは、2−状態のアドレスに1ビットを追加することによって実現可能である。例えば、[a2,a1,a0,b2,b1,b0]が特定のビットの2−状態のアドレスである場合(あるいは、さらに正確には特定ビットの状態)、ビットの4−状態のアドレスとしては、[a2,a1,a0,b2,b1,b0,4st]が使用できる。ここで、「4st」は、4−状態のシミュレーションに追加される追加ビットであり、4st=1は、2ビット状態のmsbであり、4st=0は1sbである。4−状態のコード化を、logic0=00、logic1=01、logicX=10およびlogicZ=11と想定する。ビット[a2,a1,a0,b2,b1,b0]の状態がXであれば、[a2,a1,a0,b2,b1,b0,1]でのビットは、1(Xコード化のmsb)で、[a2,a1,a0,b2,b1,b0,0]でのビットは0になる(Xコード化の1sb)。同様の手法は、その他の複数状態のシミュレーションに拡張するために使用することが可能である。明確化のために、この説明の大部分は、2−状態のシミュレーションに関して行われるが、原則は、4−状態やその他の数の状態に同様に適用可能である。
1つの半導体チップは、典型的に、多数のメモリインスタンスを有し、それぞれは図3に説明されているように定義されて、アドレスが決められる。これらのユーザメモリは、シミュレーションの目的でストレージメモリ122にマッピングされる。ユーザメモリのあるインスタンスは、ストレージメモリ122のある領域にマッピングされ、ユーザメモリの別のインスタンスは、ストレージメモリ122の異なる領域にマッピングされる、ということになる。
図3は、このマッピングのある実装を図説する。ストレージメモリ122は、典型的に、ユーザメモリのどの単独のインスタンスよりもはるかに大きい。したがって、ストレージメモリアドレスは、ユーザメモリアドレスよりも長い。例えば、ストレージメモリが1GBであれば、ストレージメモリアドレスは、ビット単位のアドレスが望まれる場合には33ビットを含む。対照的に、図3に示されるユーザメモリは、6ビットだけのアドレスを有する。6ビットユーザメモリアドレスは、ユーザメモリアドレスに27ビットのオフセットを追加することによって、33ビットのストレージメモリアドレスに転換される。このオフセットは、ビットc0、c1、c2などによって示される。10ビットのメモリアドレスは、23ビットのオフセットを追加することによって、33ビットのストレージメモリアドレスに転換される。オフセットは、ユーザメモリの異なるインスタンスがストレージメモリの異なる領域にマッピングされるように選択される。つまり、ユーザメモリの2つの異なるインスタンスが、ストレージメモリの同じ場所に格納されてはならない。
さらに、オフセットは、ストレージメモリのパッキングの効率性を向上するように選択されることが好ましい。この点を図説する簡単な例として、以下に示すように、さまざまな長さのアドレスを有するユーザメモリのインスタンスを5つ有する半導体チップを想定する。
Figure 2009517783
また、ストレージメモリアドレスは13ビットと想定する。上記のユーザメモリインスタンスは、以下のように、ストレージメモリにマッピングされている可能性がある。
Figure 2009517783
しかしながら、さらに効率的なマッピングは以下のようになる。
Figure 2009517783
Figure 2009517783
このマッピングによって、パックが緊密になり、ストレージメモリの無駄なスペースが少なくなる。その他のパック手法も使用することが可能である。
上記の手法の1つの利点は、シミュレーション中、ユーザメモリアドレスからストレージメモリアドレスへの変換の必要がないことである。シミュレーション中、関数への演算子は、シミュレーション中にすでに演算されているユーザメモリアドレスに存在することができる。上記の手法では、オフセットは、コンパイラによって前もって割り当てられ、シミュレーション中一定である。したがって、シミュレーション中演算子のユーザメモリアドレスがいったん決定されると、対応するストレージメモリアドレスは、決定されたオフセットを演算したユーザメモリアドレスに付加することによって迅速に決定することが可能である。対照的に、ユーザメモリアドレスとストレージメモリアドレスとの転換に変換が必要な場合、この変換が実行される間に待ち時間が発生する。
この手法のもう1つの利点は、さまざまなサイズのユーザメモリなど、多数のユーザメモリが共通のストレージメモリにマッピングされる。結果として、ユーザメモリの増加は、ストレージメモリを追加することだけによって実現することが可能である。
上記の手法だけが考えられるマッピングではない。例えば、ユーザメモリアドレスを直接使用する代わりに、対応するストレージメモリアドレスは、ユーザメモリアドレスに適用される簡単なロジック関数に基づくことが可能である。例えば、ストレージメモリアドレスは、対応するユーザメモリアドレスに対して、設定済みの「オフセット値」の加算に基づく可能性がある。ユーザメモリの各インスタンスのオフセット値はコンパイラによって決定され、待ち時間を少なくするように加算はハードウェアに実装されることが好ましい。オフセット値は、拡張される場合には、メモリヘッダ情報から検索される可能性がある。あるいは、参照テーブルを使用して検索される可能性がある。ユーザメモリの各インスタンスにはメモリIDが割り当てられて、参照テーブルはメモリIDを対応するオフセット値にマッピングする。メモリIDとオフセット値は実行時前にコンパイラによって演算されるので、参照テーブルは入力済みの可能性がある。
ロジック関数は「単純」であることが好ましい。つまり、実行時に迅速に評価することが可能で、単独のクロックサイクルまたは多くても数クロック周期以下であることが好ましい。さらに、ロジック関数の評価は、クロック周期に待ち時間を追加しないことが好ましい。この手法の1つの利点は、完全なソフトウェアシミュレータに比較すると、ソフトウェアシミュレータは、典型的に、ユーザメモリをシミュレーションするために多数の操作が必要なことである。ソフトウェアシミュレータでは、メインメモリ112の一部は、ユーザメモリをシミュレーションするために割り当てられる。正しいメモリアドレスを演算してから、メインメモリ112のそのアドレスにアクセスすると、典型的に、大幅な待ち時間が発生する。ハードウェアエミュレータに比較すると、上記の手法は、単純で拡張性が高い。ハードウェアエミュレータでは、ユーザメモリは、さまざまなハードウェア「ブロック」の間でパーティションされ、それぞれが、独自の物理的場所とアクセス方法を有することができる。パーティション自体は複雑になる可能性があり、ユーザからの手動支援が必要な可能性がある。さらに、シミュレーション中のユーザメモリへのアクセスは、正しいハードウェアブロックをまず特定することが必要で、その特定のハードウェアブロックに対するアクセス方法を使用することが必要であるため、さらに複雑になる可能性がある。
上記の例は、根本原則を図説するために、簡単なユーザメモリ宣言を基本とした。さらに複雑な変形が明らかである。例えば、SystemVerilogやSystemCなどさまざまな言語では、reg[ ]m[ ]宣言の拡張がサポートされる。reg[4:0][12:9][5:0]m[0:5][10:12]は、多次元宣言(SystemVerilogのパックとアンパック)の例である。この宣言は、18語([0:5]の6に、[10:12]の3を乗じる)のユーザメモリを定義し、それぞれの語の長さは120ビット([4:0]の5に、[12:9]の4、[5:0]の6を乗じる)である。ユーザメモリ全体では、18×120=2160ビットを含む。この場合、2^12=4096であるため、12ビットずつアドレスを決定することが可能であるが、典型的には、定義されたユーザメモリアドレスと対応する12ビットとの間でさらに複雑な変換が必要になる。
代わりに、簡単なメモリ宣言に関する上記のように、ストレージメモリアドレスを取得するために、ユーザメモリにオフセットを加えることが可能である。このように、対応するストレージメモリアドレスは、[C a22 a21 a20 a11 a10 b22 b21 b20 b11 b10 b02 b01 b00]のように定義することが可能で、Cは定数のオフセットで、axxビットは語のアドレスに対応して、bxxビットはビットアドレスに対応する。この例では、[a22 a21 a20]は、m[0:5][ ]に対応する3ビットで、[a11 a10]はm[ ][10:12]に対応する2ビットである。ビット[b22 b21 b20]は、reg[4:0][ ][ ]に対応して、[b11 b10]はreg[ ][12:9][ ]に対応し、[b02 b01 b00]はreg[ ][ ][5:0]に対応する。このマッピングには、最低の12ビットではなく、13ビット必要である。
上記の例では、アドレス[0:5]は、バイナリでは000から101で、操作を行わずに、3ビット[a22 a21 a20]として直接使用することが可能である。しかしながら、アドレス[10:12]は、バイナリでは1010から1100で、2ビットではなく4ビットであるため、2ビット[a11 a10]として直接使用することはできない。代わりに、2ビット[a11 a10]にマッピングされるが、これは、多数の異なる方式において実現することが可能である。ある手法では、[a11 a10]は、1アドレスから10を引いて計算される。すると、アドレス10は[0 0]にマッピングされて、アドレス11は、[0 1]にマッピングされ、アドレス12は[1 0]にマッピングされる。
別の手法では、[a11 a10]は、アドレス[10:12]の最下位ビットを基本とする。例えば、アドレス範囲[1024:1027]は、アドレス[10000000000,10000000001,10000000010,10000000011]を含む。最初の9ビットは、範囲のすべてのアドレスで同じである。したがって、11ビットすべてを使用する代わりに、最後の2ビットだけを使用することが可能で、最初の9ビットは破棄される。アドレス1024は、ストレージメモリアドレスの[0 0]にマッピングされ、1025は[0 1]にマッピングされ、1026は[1 0]にマッピングされて、1027は[1 1]にマッピングされる。
ここで、アドレス範囲[1023:1026]を考えると、アドレスでは[01111111111,10000000000,10000000001,10000000010]である。この例では、すべての11ビットが異なる。しかしながら、最後の2つのビットは、それでも範囲の各アドレスを固有に特定する。アドレス1023は、[1 1]にマッピングされ、1024は[0 0]にマッピングされ、1025は[0 1]にマッピングされ、1026は[1 0]にマッピングされる。このように、ストレージメモリアドレスは、これらの2ビットが付加された固定オフセットを基本にすることが可能である。一般的に、アドレス範囲にN個のアドレスがあれば、ceil(log2(N))個の最下位ビットが範囲の各アドレスを固有に特定する。
ストレージメモリアドレスのユーザメモリアドレスを全く操作せずに直接使用することが望ましい場合は、さらに多くのビットが必要となる可能性がある。この例では、m[0:5][ ]は3ビットを使用し、m[ ][10:12]は4ビットを使用する(上記の例の2ビットではなく)。同様に、reg[4:0][ ][ ]、reg[ ][12:9][ ]、reg[ ][ ][5:0]に対して、それぞれ、3、4、3ビットを使用する。この場合、全体では、最低の12ではなく、3+4+3+4+3=17ビットとなる。マッピングはさらに少なくなる。しかしながら、介在する未使用ストレージメモリアドレスは、典型的には、その他のユーザメモリアドレスによって使用することが可能である。例えば、[4:0][12:9][5:0]m[0:5][10:12]とreg[4:0][7:2][5:0]m[0:5][10:12]は、ストレージメモリで衝突することなく、同様のオフセットCにマッピングすることが可能である。
図4−8は、ストレージメモリ122、ローカルメモリ104とプロセッサ要素102の相互作用の例を図説する。図4は、本発明の第1の実施形態によるハードウェア加速型ロジックシミュレーションシステムのシミュレーションプロセッサ103の単独のプロセッサユニット103を図説する回路図である。各プロセッサユニット103は、プロセッサ要素(PE)302、ローカルキャッシュ308(この例ではシフトレジスタとして実装されている)、オプションの専用メモリ326、マルチプレクサ304、305、306、310、312、314、316、320、324およびフリップフロップ318、322を含む。プロセッサユニット103は、命令118によって制御され、その関連部分は図4の382として示されている。命令382は、この例では、P0、P1、Boolean Func、EN、XB1、XB2、およびXtra Mem(エキストラメモリ)のフィールドがある。各フィールドXには、Xビットの長さを持たせる。命令の長さは、この例では、P0、P1、Boolean Func(ブーリアン関数)、EN、XB1、XB2、およびXtra Memの和となる。クロスバー101は、プロセッサユニット103に相互接続する。クロスバー101には、シミュレーションプロセッサ100のPE302またはプロセッサユニット103の数がnで、各プロセッサユニットにクロスバーに対して2つの入力と2つの出力がある場合、2n本のバスラインがある。
2−状態の実装では、nは、バイナリ(0または1)であるn個の信号を表す。4−状態の実装では、nは、4−状態のコード(0、1、XまたはZ)または二重ビットコード(例えば、00、01、10、11)であるn個の信号を表す。この場合、接続されているのは、実際には2n個の電子(バイナリ)信号であるが、nをn個の信号とも呼ぶ。同様に、3ビットコード化(8つの状態)では、3n個の電子信号、などとなる。
PE302は、2以下の入力(たとえば、NOT、AND、NAND、OR、NOR、XOR、定数1、定数0など)で任意のロジックゲートをシミュレートするように構成可能な構成可能ALU(演算ロジックユニット)である。PE302がシミュレーションするロジックゲートの種類は、PE302がロジックゲートの特定の種類をシミュレーションするようにプログラムする、Boolean Funcに依存する。これは、3つ以上の入力でPEを使用することによって、3つ以上の入力のブーリアン操作に拡張することが可能である。
マルチプレクサ304は、P0ビットを有する選択信号P0に応答して、クロスバー101の2nバスラインのうちの1つから入力データを選択する。そして、マルチプレクサ306は、P1ビットを有する選択信号P1に応答して、クロスバー101の2nバスラインのうち1つから入力データを選択する。データがストレージメモリ122から読み取られていない場合、PE302は、演算子としてマルチプレクサ304、306によって選択された入力データを受信して(つまり、マルチプレクサ305はマルチプレクサ304の出力を選択する)、Boolen Func信号によって示された構成ロジック関数にしたがって、シミュレーションを実施する。図4の例では、各プロセッサユニット103に対するマルチプレクサ304、306のそれぞれは、2nバスラインのうちのいずれかを選択することが可能である。クロスバー101は、必要ではないが、完全に非妨害で、完全に接続する。
データがストレージメモリ122から読み出されている間、マルチプレクサ305は、マルチプレクサ304の出力ではなく、ストレージメモリ122から出ている(直接的または間接的に)入力ラインを選択する。この方式では、ストレージメモリ122からのデータは、以下に詳細を説明するように、プロセッサユニットに入力することが可能である。
シフトレジスタ308の深さはy(y個のメモリセルを有する)で、シミュレータプロセッサ100のPE302内が複数サイクルのロジック設計106の大量のゲートをシミュレーションする間に生成される中間値を格納する。
図4に示された実施形態では、マルチプレクサ310は、PE302の出力371−373、または、信号ENのビットen0に応答してシフトレジスタ308の最後のエントリ363−364のいずれかを選択して、シフトレジスタ308の第1のエントリは、マルチプレクサ308の出力350を受信する。出力371を選択すると、PE302の出力がシフトレジスタ308に送信される。最後のエントリ363を選択すると、シフトレジスタ308の最後のエントリ363は、シフトレジスタ308の最後から外れて失われることなく、シフトレジスタ308の先頭に再循環される。この方式では、シフトレジスタ308は更新される。その他の実施形態では、マルチプレクサ310はオプションで、シフトレジスタ308は、PE302から直接入力データを受信することが可能である。
シフトレジスタ308の外側では、マルチプレクサ312は、シフトレジスタ308の1つの出力352としてXB1ビットを有する選択信号XB1に応答して、シフトレジスタ308のy個のメモリセルのうちから1つを選択する。同様に、マルチプレクサ314は、シフトレジスタ308の出力358としてXB2ビットを有する選択信号XB2に応答して、シフトレジスタ308のy個のメモリセルのうちから1つを選択する。マルチプレクサ316と320の状態に応じて、選択した出力は、プロセッサユニット103のデータ入力によって使用されるために、クロスバー101に送られる。
専用のローカルメモリ326はオプションである。シフトレジスタ308が処理できるよりもはるかに大型の設計を処理することができる。ローカルメモリ326は、入力ポートDIと出力ポートDOがあり、サイズが制限されているためにシフトレジスタ308がスピルオーバーできるように、データを格納する。つまり、シフトレジスタ308のデータは、メモリ326からロードおよび/または格納することができる。格納することができる中間信号値の数は、メモリ326の全体のサイズによって制限される。メモリ326は、比較的コストが低く高速であるため、この方式は、ロジックシミュレーションのための拡張可能、高速でコストが低い解決策を提供する。メモリ326は、XB1、XB2およびXtra Memから構成されるアドレス信号377によってアドレスが決定される。XB1とXB2の信号は、それぞれ、マルチプレクサ312と314からの選択信号としても使用されたことに注意する。このように、これらのビットは、命令の残りの部分に応じて、異なる意味を有する。これらのビットは、図4では2度示されている。1度は全体的な命令382の一部として、もう一度は、ローカルメモリ326のアドレスを示すために使用されている380である。
入力ポートDIは、PE302の出力371−372−374を受信するように連結される。PE302によって演算される中間値は、シフトレジスタ308に送信されるが、y位相後にシフトレジスタ308の最後から外れる(再循環されないと想定する)。このように、最終的には使用されるが、位相が発生する前には使用されない中間値の実行可能な代案としては、値をPE302から専用ローカルメモリ326に直接送信して、シフトレジスタ308を完全に迂回する(値は、経路371−372−376−368−362からクロスバー101に同時に使用可能にする可能性があるが)。別のデータ経路では、シフトレジスタ308に送信される値は、その後、シフトレジスタ308からクロスバー101に出力することによって、メモリ326に移動して(データ経路352−354−356または358−360−362から)から、PE302からメモリ326に再入力する。シフトレジスタ308の最後で外れている値は、同様の経路363−370−356によってメモリ326に移動することが可能である。
出力ポートDOは、マルチプレクサ324に連結される。マルチプレクサ324は、信号ENのビットen0の補足(〜en0)に応答して、出力368として、PE302の出力371−372−376またはメモリ326の出力366のいずれかを選択する。この例では、信号ENは2ビット、en0とen1を含む。マルチプレクサ320は、信号ENの別のビットen1に応答して、マルチプレクサ324の出力368またはマルチプレクサ314の出力360のいずれかを選択する。マルチプレクサ316は、信号ENの別のビットen1に応答して、マルチプレクサ312の出力354またはシフトレジスタの最終エントリ363、370のいずれかを選択する。フリップフロップ318、322は、クロスバー101への出力のために、それぞれ、マルチプレクサ316、320の出力356、362をバッファする。
専用のローカルメモリ326は、第2の出力ポート327もあり、ストレージメモリ122に最終的につながる。この特定の例では、出力ポート327は、ローカルメモリのデータ出力を1度に1語ずつ読み出すために使用することが可能である。
図4に示された命令382を参照すると、フィールドは、一般的に、次のように分けることが可能である。P0とP1は、クロスバーからPE302への入力を決定する。ENは、主に2ビットのopcodeである。Boolean Funcは、PE302によって実装されるロジックゲートを決定する。XB1、XB2およびXtra Memのいずれかは、クロスバー101へのプロセッサユニットの出力を決定するか、または、ローカルメモリ326のメモリアドレス377を決定する。
ある実施形態において、4つの異なる操作モード(評価、操作なし、格納、およびロード)は、以下の表4に示されているように、信号ENのビットen1とen0に従って、プロセッサユニット103でトリガすることが可能である。
Figure 2009517783
Figure 2009517783
一般的に、評価モードの主な機能は、PE302がロジックゲートをシミュレーションすることである(つまり、2つの入力を受け取って、2つの入力上で特定のロジック関数を実施して出力を生成する)。操作無しモードでは、PE302は操作を実施しない。このモードは、例えば、その他のプロセッサユニットが、このシフトレジスタ308からのデータに基づいた評価機能であるが、PEが空回転している場合などに有用である。ロードと格納モードでは、データは、ローカルメモリ326からロードまたは格納される。PE302は、評価も実施している場合がある。WattとVerhyeyenによって2005年9月28日に提出された米国特許出願第11/238、505号、「Hardware Acceleration System for Logic Simulation Using Shift Register as Local Cache」には、これらのモードがさらに説明されており、参照により組み入れる。
この例では、ストレージメモリ122からの読み出しと書き込み(ローカルメモリ326からのロードや格納とは異なる)は、PE0上の特定のP0/P1フィールドオーバーロードによってトリガされる。ある実施形態では、PE0がEN=01(つまり、操作無しモード)とP0=P1=0000の命令を受信すると、図5に示されているように、メモリトランザクションがトリガされる。メモリトランザクションをトリガするには、その他の命令も使用することが可能である。図5は、n個のプロセッサ要素102A−102Nとして表されているシミュレーションプロセッサ100とローカルメモリ104を示す。図5では、ローカルメモリ104は、特定のプロセッサ要素専用のn個の個別のメモリ(図4のように)としてではなく、単独の構造として示されている。これは、単に図説を目的として行われた。図5に示された単独のローカルメモリ104は、図4に示されたn個のローカルメモリ326の連結である。図5は、書き込みレジスタ510と読み出しレジスタ520、およびデコーダ525も示す。書き込みレジスタ510は、ストレージメモリ122から読み出されたデータを、シミュレーションプロセッサ要素102に書き込むためのインターフェースを提供する。読み出しレジスタ520は、ストレージメモリ122に書き込まれるデータを、シミュレーションプロセッサ要素102から読み出すためのインターフェースを提供する。デコーダ525と制御回路535は、ストレージメモリのトランザクションの制御を助ける。
メモリトランザクショントリガ命令を受信すると、PE0命令のXB1、XB2およびXtra Memのフィールドは、ローカルメモリ104へのアドレスとして解釈される。この特定の例では、アドレスは、語アドレスとビットアドレスを含む。例えば、フィールドXB1、XB2およびXtra Memの一定数のビットは、語アドレスを表すことができ、残りのビットハビットアドレスを表す。図5では、アドレスは、ビット文字列01010101(例に過ぎない)によって表される。制御回路535は、このメモリアドレスの語アドレス部分を、n個すべてのプロセッサ要素に対応するローカルメモリ104の出力部分327に適用して、このローカルメモリアドレスに格納されたn個の語を読み出す。図5では、これらの語は、シンボル540Aから540Nによって表される。語540Aは、専用のローカルメモリ326A(PE102Aに対応)のアドレス10101010の語アドレス部分に存在する語である。語540Bは,専用のローカルメモリ326B(PE102Bに対応)の同じアドレスに存在する語である。この特定の例では、ローカルメモリがその他の理由のために設計されているので、540Aから540Nの語全体が読み出される。
しかしながら、ストレージメモリのトランザクションの場合、すべてのビットは必要ではない場合がある。この特定の例では、各語の影を付けた欄で示されるように、540Aから540Nの各語の第1のビットだけが使用される。ビットアドレスは、第1のビットを選択するように、マルチプレクサ(図5には非表示)に対する出力として使用される。その他の実装では、その他あるいは追加のビットを使用することができる。これらの第1のビットは、読み出しレジスタ520に送信されて、n個のPEのそれぞれから1ビットずつ存在するので、長さがnの命令を共に形成する。別の実装では、これらの同じn個のビットは、語540A、540B、540Cなど、使用可能なn個のビットの全体の長さ、またはその一部を使用して、取得することが可能である。この命令がストレージメモリトランザクションを決定する。ストレージメモリトランザクションは、PE0だけへの命令によってトリガされたことに注意する。一方で、残りのPEは、その他の命令を受信して実行することができるので、シミュレーションプロセッサ全体の効率を向上させる。
図6は、nビットストレージメモリ命令640の書式を示し、ストレージメモリアドレス、R/W(読み出し/書き込み)、EN(有効)、CS(チップ選択)、BM(ビットマスク有効)、XP(X/Z状態あり)、MV(メモリ有効)、#全行および最後のデータ長のフィールドを含む。
フィールドストレージメモリアドレスによって、影響があるストレージメモリの場所の完全なアドレスが与えられる。アドレスには、2段階の間接アドレスがあることに注意する。PEに対する最初の命令は、アドレスXB1,XB2、Xtra Memを含んでいたが、これらは、ローカルメモリ104の場所をポイントする。ローカルメモリ104のその場所には、ストレージメモリアドレスのフィールドが含まれていて、このフィールドは、ストレージメモリ122の場所をポイントする。この間接性によって、PEに送信される命令はかなり短縮されるが、完全なストレージメモリアドレスは、典型的に、フィールドXB1、XB2、Xtra Memよりかなり長い。これは、任意のある時点ですべてのユーザメモリをシミュレーションすることが必要ではないからでもある。例えば、チップは、典型的に、一度に1つのクロックドメインがシミュレーションされる。結果として、ローカルメモリは、典型的に、現在シミュレーションされているクロックドメインにはないユーザメモリのストレージメモリアドレスを含む必要がない。
フィールドR/Wは、メモリトランザクションの種類、読み出しか書き込みかを決定する。R/WがW(書き込み)に設定されていると、書き込み操作が指定されて、ストレージメモリアドレスフィールドによって指定される場所で、データがストレージメモリ122に書き込まれる。R/WがR(読み出し)に設定されていると、読み出し操作が指定されて、ストレージメモリアドレスフィールドによって指定される場所で、ストレージメモリ122からデータが読み出される。
データ量は、フィールドBM、#Full−Rows(全行数)、Last Data−Length(最後のデータ長)によって決定される。全行数のフィールドは、送信されるデータを含む641Aから641Iのすべての行の数を決定する。最後のデータ長のフィールドは、データ送信に関与する最後の行の641Jの長さを決定する。各行641Aから641Iは、nビットの長さと考えられるが、最後の行641Jは、最後のデータ長によって決定される。これにより、nの倍数ではない件数のデータが送信される。このように、任意のサイズデータの幅がサポートされる。データが2−状態としてモデル化される場合、送信されるデータの全体量は、ユーザが指定したデータ幅のサイズに等しい。4−状態では、2ビットが各単独ビットの状態を表すために使用されるので、全体量はこの2倍になり、その他の数の状態ではその数の倍になる。
BMが設定されていない場合、ビットマスキングが無効であり、この場合、641Aから641Jの各行はデータとして解釈される。BMが設定されている場合、ビットマスキングが有効で、この場合、1行おきの641A、C、Eなどがビットマスクと解釈されて、データの次の行641B、D、Fなどに適用される。ビットは1ビットずつマスクされることがよくあるため、ビットマスクは、典型的に、データと同じ幅を有する。従って、ビットマスキングは、設定されると、データの全体量を2倍にする。これは、例えば、ユーザはビットマスキングを現在の状態を表すビット未満に適用することができるので、複数の状態のシミュレーションの場合には真とは言えない。例えば、4−状態では、各ビットの状態は2ビットで表されるので、ビットマスキングは2ビットの1つだけに適用することができる。
ENとCSとは、メモリ操作を実際に実施するかどうかを決定するために、実行時に専用ハードウェア130によって使用されるフィールドである。ENとCSとは、典型的に、コンパイラによって演算されていない。しかし、シミュレーション中早い段階で演算される。ENとCSの両方は、特定のメモリ操作が発生するためには、有効であることが必要である。書き込み時、ENまたはCSが無効になっていると、メモリ操作(必要な可能性があるため以前にコンパイラによって予定された)は発生しない。ENビットの意味はR/Wビットに依存する。R/Wビットが読み出し操作を指定していると、ENは、「出力有効」ビットとして操作する。R/Wビットが書き込み操作を指定していると、ENは、「書き込み有効」ビットとして操作する。
フィールドXPとMVはオプションである。4−状態のシミュレーション中に使用される。4−状態のシミュレーションでは、変数は、0(ロジック低)または1(ロジック高)に加えて、値X(未初期化または不一致)またはZ(非駆動)の値をとることが可能である。例えば、シミュレーション中、ENビットは、0または1の代わりにXまたはZにすることができる。同様に、ストレージメモリアドレスのビットは、0または1の代わりにXまたはZにすることができる。これは、一般的に、実行時に動的に生成されるすべての値について真である。しかしながら、これらの変数のすべての4−状態の値を表すには、2倍のビットが必要となる。4−状態のEN信号には1ビットではなく2ビット、4−状態のCS信号のためには1ビットではなく2ビット、さらに、ストレージメモリアドレスのビットのa0のそれぞれにも2倍のビットとなるので、4−状態のストレージメモリアドレスのサイズの2倍となる。完全な4−状態の表現は、ストレージメモリ命令640の長さを大幅に増加させる。
代わりに、この例では、ストレージメモリ命令640は、ローカルメモリ104の4−状態の表現に格納される。しかしながら、読み出しレジスタ520は、2−状態の表現だけを受信する。これは必要ではないが、最適化する。これらの変数のすべての4−状態の表現を変換させる代わりに、2−状態の表現だけを変換して、フィールドXPまたはMVは、動的に生成される変数のいずれかがXまたはZであれば無効に設定する。4−状態のコード化は、ロジック低では00、ロジック高では01、Xでは10、Zでは11と想定する。1sbは、ロジックレベルが有効である(つまり、XまたはZではない)と想定して、ロジックレベル(0または1)として解釈することが可能で、msbは、ロジックレベルが有効であるかどうかを示すとして解釈することが可能である。状態はXまたはZであるため、msb=1は、無効なロジックレベルを示し、msb=0は有効なロジックレベルを示す。2−状態の表現は、4−状態コード化のlsbだけを送信し、各変数の各msbを送信する代わりに、2つの変数XPとMVが無効な変数を示すために使用される。
XPまたはMVのいずれかを無効に設定すると、ストレージメモリアドレス、EN、CSなどのいずれかのビットが無効であるため、メモリの書き込み操作は実施されない。メモリの読み出し操作は、エラーを示すために、データ値にXを返す。エラー処理のケースを促進するために、この実装では、2つの別々のビットXPとMVが使用された。無効なXPは、ハードウェアメモリインターフェースB144に、無効なアドレスまたは制御が存在することを示す。無効なMVは、ハードウェアメモリインターフェースB144に、メモリが現在無効な状態にあることを示す。両方のフィールドは、操作の間持続し、動的(例えば、ユーザロジック制御により)または静的(例えば、コンパイラによるスケジュール)にリセットすることが可能である。例えば、メモリが無効な状態にある場合、エラー処理は、メモリ全体が無効に見えることを(メモリがXアウトする)要求することができる。このためにMVビットを使用することが可能である。MVビットは、エラーが発生すると、無効に設定される。これにより、メモリが有効ではないことと、そのように処理されなければならないことを示す。MVビットは、例えば、直接メモリをリセット、または次の有効な書き込みリクエストが発生した場合に有効にリセットすることが可能である。メモリリセット操作はハードウェア、ソフトウェアまたはドライバレベルで実装することが可能である。メモリは、書き込みリクエストの実行前にX(エラー状況を示す)で入力されて、その後のユーザのロジックが有効なドレスで書き込まれたデータを正しく読み出すが、その他任意のアドレス場所での読み出し時にはXを読み出すように影響する。これは、MVとXPフィールドの使用の一例である。追加の動作を必要に応じて実装することができる。MVフィールドは、動的制御信号として使用することが可能で、一定のユーザロジックまたはコンパイラが原因のエラーのサポートを可能にする。
XPに関しては、4−状態のコード化のmsbは、ビットが有効であるか無効であるかどうかを示すことがすでに示された。有効な場合、実際のビット値は、4−状態のコード化のlsbによって与えられる。従って、ユーザアドレスビットの4−状態のコード化のlsb(つまり、2−状態の表現)は、ストレージメモリアドレスフィールドにコピーされる。さらに、4−状態のコード化のmsbの値は、XまたはZを検出するようにチェックされる。このように、4−状態のモードでは、レジスタ540Aから540Nは、4−状態の表現を格納していて、つまり、msbとlsbがある。lsbビットは、読み出しレジスタ520にコピーされるが、msbビットはコピーされない。しかし、XPは、すべてのmsbビット(MVのmsbを除く)の論理ORとしてハードウェア内で演算される。この演算は同じクロック周期で実施されるので、待ち時間を発生させない。XP値がすでにロジック1に設定されていた場合、あるいは、ロジックXまたはロジックZがmsbビットのいずれかで検出されて不一致が発生した場合、メモリ命令640のXPビットは、ロジック1(つまり無効)に設定される。ロジック1値は、単独ビット(2−状態)として読み出しレジスタ520にコピーされるが、2−ビット(4−状態)値としてローカルメモリ104(非表示の別の操作によって)に再び書き込まれる。これによって、追加の動的ロジックエラー操作もトリガされる(例えば、$display()関数)。
ストレージメモリトランザクションが、ストレージメモリへの書き込みである場合、書き込み操作に使用されるデータ(およびビットマスク)(図6の行641Aから641Jに含まれている)は、ローカルメモリ104内の連続したメモリ場所に含まれている。つまり、メモリ命令は、アドレスXB1、XB2、Xtra Memに存在する。このデータ命令が書き込み命令で、J行が指定されると、データは、XB1、XB2、Xtra Memの後のJメモリ場所に存在する。データは、ローカルメモリ104に、インターリーブまたはその他の方式で格納することができるので、「後の」は、必ずしも直後(つまり、1度にビット1つだけを増加)を意味しないことに注意する。ストレージメモリ122に書き込まれるデータは、ローカルメモリ104から読み出しレジスタ520に送信され、図5に示された同じ経路をたどってストレージメモリ122へ向かう。
ストレージメモリのトランザクションがストレージメモリからの読み出しであれば、行641Aから641Jは不要である(有効になっている場合のビットマスキングを除く)。ストレージメモリアドレスは、ストレージメモリに渡されて、データはストレージメモリからシミュレーションプロセッサに戻される。データ量は、BM、全行数および最後のデータ長によって決定される。ストレージメモリから呼び出されたデータは、シミュレーションプロセッサに書き込むことが可能になるまで、書き込みレジスタ510に格納される。
図6は例である。その他の書式が明らかである。例えば、フィールドXPとMVは、2−状態の操作がシミュレーションされている場合には、不要である。別の例として、フィールドENとCSは、2つの別々のビットではなく、単独のENビットとして実装される可能性がある。最後の例として、BMは、ビットマスキング機能がサポートされていない場合、排除される可能性がある。
図7を参照すると、データが準備できると、データを受信するPEは、EN=11(つまり格納モード)とP0=P1=FFFFで命令を受信する。メモリトランザクションがトリガに関して、この特定の命令は例であり、データをロードするその他の命令を使用できる。これらのPEもすべて同じXB1、XB2、Xtra Memフィールドを受信する。図4を参照すると、格納モードでは、データは専用のローカルメモリ326に格納される。P0=P1=FFFFを設定すると、マルチプレクサ305をトリガして、書き込みレジスタ510から入力ラインを選択して、ストレージメモリから受信したデータを、XB1、XB2、Xtra Memによって決定されたアドレス(図7では01010101)でローカルメモリ104に書き込む。図7の例では、すべてのPEは、データを受信するようにスケジュールされるが、これは不要である。データは、PEのサブセットのみによって受信される。典型的に、ストレージメモリからの読み出しがまずリクエストされたときと、呼び出したデータが書き込みレジスタ510で使用可能になるときとの間には待ち時間が存在する。しかしながら、この待ち時間は決定論的である。コンパイラ108は、この待ち時間を演算することが可能で、これらの2つの命令の間に十分な時間の待ち時間を確保する。
送信されるデータのタイプはコンテキストに依存する。典型的に、ユーザメモリに格納されるデータは、シミュレーションを実行するために、ストレージメモリとシミュレーションプロセッサの間を相互に送信される。しかしながら、その他の種類のデータも送信される可能性がある。例えば、メインメモリ112、ストレージメモリ122からのDMAには、データを「予めロード」することが可能である。このデータは、ユーザメモリのROMタイプと同様に、読み出し専用にすることができる。また、ユーザメモリに全く格納されないデータである可能性もある。この能力は、刺激データそのものは大型データである可能性があるため、刺激生成として有用である。
図8は、シミュレーションプロセッサ100とストレージメモリ122の間のインターフェースの例を図説する模式図である。この特定の例は、810と820の2つの部分に分けられ、それぞれ、独自の読み出しFIFO、書き込みFIFOおよび制御がある。810と820の2つの部分は、中間インターフェース850から相互に通信する。この区分は必要ないが、この手法の1つの利点は設計がモジュール化されることである。例えば、ストレージメモリ側820の追加の回路は、例えば、異なる種類のユーザメモリの特徴をシミュレーションするためなど、さらに多くの機能性を導入するために付加することが可能である。さまざまな種類のユーザメモリの例には、ビットマスキング(メモリ語の選択されたビットだけが格納される)やコンテンツアドレスメモリ(読み出し操作は、ハードコードされたアドレスではなくデータを検索する)を含む。同じことは、シミュレーションプロセッサ側810でも実行できる。
図8のインターフェースは、次のように機能する。ストレージメモリのトランザクションがストレージメモリへの書き込みである場合、ストレージメモリアドレスは、読み出しレジスタ520から書き込みFIFO812、インターフェース850、読み出しFIFO824、メモリ制御装置828へと流れる。データは同じ経路に沿って流れ、最終的に、ストレージメモリ122に書き込まれる。ストレージメモリトランザクションがストレージメモリからの読み出しである場合、ストレージメモリアドレスは、以前と同じ経路に沿って流れる。しかし、ストレージメモリ122からのデータは、メモリ制御装置828を通って、書き込みFIFO822からインターフェース850、読み出しFIFO814、書き込みレジスタ510、シミュレーションプロセッサ100に流れる。
ストレージメモリ122からの読み出しと書き込みは、プログラムメモリ121からシミュレーションプロセッサ100への命令の送信と干渉せず、シミュレーションプロセッサ100による命令の実行とも干渉しない。シミュレーションプロセッサ100がストレージメモリ命令からの読み出しに出会うと、次の命令を実行する前に、その命令の完了を待機する必要はない。事実、シミュレーションプロセッサ100は、ストレージメモリへの読み出しや書き込みがインターフェース回路の残りの部分でパイプラインされて実行されている間(データの依存性がないことを想定)、続けてその他の命令を実行することができる。これは、処理性能のかなりの利点となる。
また、シミュレーションプロセッサ100上で命令の実行するための操作頻度と、ストレージメモリ122にアクセスするためのデータ送信頻度(帯域幅)は、一般的に異なることにも注意する。実際には、命令はプログラムメモリ121から呼び出されるので、命令実行の操作頻度は、典型的には、プログラムメモリ121への帯域幅によって限定される。ストレージメモリ121へ/からのデータ送信頻度は、典型的に、ストレージメモリ121への帯域帯(例えば、制御装置828とストレージメモリ121の間)、シミュレーションプロセッサ100へのアクセス(読み出しレジスタ510と書き込みレジスタ520から)、または、帯域帯全体のインターフェース850のいずれかにより制限される。
図9−14は、図5−8に示されたアーキテクチャのある変形を示す。図9は、図5に示されているメモリアーキテクチャの代わりのアーキテクチャを示す。図9のアーキテクチャは図5のアーキテクチャに類似する。両方のアーキテクチャは、書き込みレジスタ510、読み出しレジスタ520およびシミュレーションプロセッサ100を含む。さらに、シミュレーションプロセッサ100は、102Aから102NのPEとローカルメモリ104を含む。
しかし、図9のアーキテクチャは以下の点で異なる。まず、ローカルメモリ104は、二重ポートメモリである。データ語540Aから540Nは、ポート327A―327Nからローカルメモリ104から読み出されるとともに、ポート327A−372Nからローカルメモリ104に再び書き込まれる。これは、直接書き込みと呼ぶことができる。実際の実装においては、各ポート327は、2つの別々のポートとして実現することができるが、図9では、便宜上単独の双方向ポートとして示されている。また、ローカルメモリ104は、単独構造として示されているが、この例では、特定のプロセッサ要素専用のn個の個別のメモリ326として実装されている(図4のように)ことも思い出されたい。
この例では、各データ語は、mビットの長さで、読み出しレジスタ520と書き込みレジスタ510によって処理される語はnビットの長さである。さらに、mとnの間には任意の関係がサポートされるが、m>nであることを想定する。540Aから540Nの各データ語の最初のnビットは、読み出しレジスタ520の場合には、1対1で、nビットにマッピングされる。データ語540の残りのビットは、アーキテクチャに応じて、任意の方式で、n個の読み出しレジスタビットにマッピングすることが可能である。さらに、540Aから540Nの各データ語の最初のビットも、読み出しレジスタ520の対応するビットにマッピングすることができる。つまり、データ語540Aの最初のビットは、ビットb0にマッピングすることができ、データ語540Bの最初のビットはビットb1、データ語540Cの最初のビットはビットb2に、とマッピングすることが可能である。この代わりのマッピングは、図9において、各最初のビットから伸びる2つの線によって表されている。データ語540Bの場合、最初の直線は最初のビットから伸びて、ビットb0に接続し、3つのセグメントのある2番目の線は最初のビットから伸びてビットb1に接続する。物理的に、この機能性は、マルチプレクサとデマルチプレクサによって実装することが可能である。図10−14に示されるように、このアーキテクチャでは、ビットレベルまたは語レベルでデータ処理に柔軟性が生まれる。
別の違いは、図9のアーキテクチャで、ストレージメモリ122を迂回するループバック経路910を含む。ループバック経路910を有効にすることによって、データは、ストレージメモリ122を通過せずに、読み出しレジスタ520から、書き込みレジスタ510に直接送信することが可能である。アナログ式では、ループ転送経路920によって、データは、PEファブリック102を通過せずに、相互接続システム101から、メモリポート327に直接送信することができる。ある変形においては、データがローカルメモリ104からシミュレーションプロセッサ100の入力にループバックされると、ループバック経路910は、読み出しレジスタ520または書き込みレジスタ510を迂回できるので、ループバックデータ送信の待ち時間が少なくなる。
図10−14は、図9のアーキテクチャによって実装可能な別の読み出しと書き込み操作を図説する。図10は、図5と同じ操作を示す。PE102の1つは、「スカラーからストレージメモリへ」のトランザクションをトリガする命令を受信する。「スカラーからストレージメモリへ」というラベルは、ローカルメモリ104のデータがスカラー方式(327Aから327Nの各ポートで1ビット)で処理されるために使用されて、(例えば、書き込みレジスタ510ではなく)データはローカルメモリ104とストレージメモリ122との間で送信される。図5のように、命令のXB1、XB2とXtra Memのフィールドは、ローカルメモリ104へのアドレスとして解釈される。制御回路535は、このメモリアドレスの語アドレス部分を、すべてのn個のプロセッサ要素に対応するローカルメモリ104の出力ポート327に適用して、このローカルメモリアドレスで格納されているn個のデータ語540を読み出す。ハードウェアは、図10の太線によって示されているように、対応する読み出しレジスタのビットbnに対して、各データ語540の最初のビットを接続するようにトリガされる。デコーダ525は、図6に関する上記のように、メモリの命令を解釈する。
図11は、「ベクトルからストレージメモリへ」のトランザクションを示す。操作は、図10に類似するが、命令は、540Aから540Nの各データ語からの1ビットではなく、単独のデータ語540J内の多数のビットからであることを指定している点が違う。従って、これは、「ベクトル」メモリ操作と呼ばれる。
ローカルメモリ104とストレージメモリ122の間でデータを送信するのではなく、その他の操作がデータを書き込みレジスタ510に送信する可能性がある。「スカラーから書き込みレジスタへ」のトランザクションは、図10に類似しているが、マルチプレクサがデータを読み出しレジスタ520から、デコーダ525へではなく、書き込みレジスタ510へ送る点が異なる。同様に、「ベクトルから書き込みレジスタへ」のトランザクションは図11に類似しているが、データは、デコーダ525へではなく、書き込みレジスタ510に送られる点が異なる。これらの「書き込みレジスタ」トランザクションでは、ストレージメモリが関与しないので、データはストレージメモリ命令(図6に表示されているように)ではない可能性が高い。しかし、これらの操作は、PE102が使用するために、ローカルメモリ104からデータを送信するためだけに使用することができる。
図12と13は、ローカルメモリ104にデータを書き込む2つの例を示す。どちらの例でも、データは、書き込みレジスタ510からローカルメモリ104に書き込まれる。図12では、操作は、書き込みレジスタ510からのデータが540Aから540Nの各データ語に1ビットずつ書き込まれて、専用ローカルメモリ326A−326Nのそれぞれに1ビットとして格納されているので(ポート327A−327Nから)、「スカラーへの書き込みレジスタ」トランザクションである。図13では、書き込みレジスタ510からのデータは、すべて、単独のデータ語540Jと対応する専用ローカルメモリ326Jに書き込まれているので(ポート327Jから)、操作は、「書き込みレジスタからベクトルへ」のトランザクションである。図14は、図7と同様である「書き込みレジスタからPEへ」のトランザクションを示す。
これらの操作は組み合わせて、高速ベクトルからスカラー、スカラーからベクトルへの変換を実装することができる。データが、専用ローカルメモリ326Jの「ベクトル」フォーマットに格納されている場合、「ベクトルから書き込みレジスタへ」のトランザクションと「書き込みレジスタからスカラーへ」のトランザクションを組み合わせることによって、スカラー書式に変換することができる。同様に、スカラーからベクトルへの変換は、「スカラーから書き込みレジスタへ」のトランザクションと「書き込みレジスタからベクトルへ」のトランザクションを組み合わせることによって、実装できる。これは、ベクトルとスカラーのモード操作をスイッチする場合には利点である。
図9−14の例は、図5、図15Aおよび15Bに比較するとデータ処理が複雑になり、さらに複雑な関数をサポートする例外処理機能を使用するアーキテクチャの回路図である。図15Aでは、例外処理機能1510が、ループバック経路910の代用経路として挿入される。直接のループバックの場合、データは読み出しレジスタ520から書き込みレジスタ510に直接送信される。代用経路では、データは、読み出しレジスタ520から例外処理機能1510、書き込みレジスタ510に送信される。例外処理機能は、多数のさまざまな関数を処理することができて、例えば、その他の回路、プロセッサまたはデータソース/シンクに接続するその他のポートを有する場合がある。図15Bは、代わりのアーキテクチャを示し、読み出しレジスタ520と書き込みレジスタ510の相互作用は、例外処理機能1510によって処理される。読み出しレジスタ520から書き込みレジスタ510への直接ループバック経路、ストレージメモリ122との相互作用などは、すべて、例外処理機能1510によって処理される。
例外処理機能1510は、典型的に、マルチビットイン、マルチビットアウト機器である。ある設計においては、例外処理機能1510は、PowerPCコア(あるいはその他のマイクロプロセッサまたはマイクロ制御装置コア)を使用して実装される。その他の設計では、例外処理機能1510は、(汎用)演算ユニットとして実装できる。設計に応じて、例外処理機能1510は、さまざまな場所に実装できる。例えば、例外処理機能1510がVLIWシミュレーションプロセッサ100の一部として実装されると、その操作は、VLIW命令118によって制御することができる。図4を参照すると、ある実装においては、一部のプロセッサユニット103は、PE302が、マルチプレクサ305、306から、単独のビット入力ではなく、マルチビット入力を受信するように、修正される。PE302は、その後、受信したベクトルデータ上で演算関数を実行できる。データは、例えば、図10−13に図説した技法を使用して、ベクトル形式とスカラー形式との間を変換できる。
代わりの手法においては、例外処理機能1510は、VLIWシミュレーションプロセッサ100外部の回路(および/またはソフトウェア)によって実装することができる。例えば、図8を参照すると、例外処理機能1510は、810上ではあるが、シミュレーションプロセッサ100の外部の回路上に実装することができる。この手法の1つの利点は、例外処理機能1510はVLIW命令118によって機能しないので、シミュレーションプロセッサ100の残りの部分によってロックステップにおいて操作される必要がないことである。さらに、例外処理機能1510は、シミュレーションプロセッサのアーキテクチャによる制限を直接受けないので、大量のデータ操作を処理するように容易に設計できる。
別の変形では、上記のメモリトランザクションは、ビットレベルではなく、語レベルで実装される。例えば、図5では、各語540Aから540Nの1ビットがメモリトランザクションに関与した。この変形では、語全体(あるいはさらに一般的には、ビットの任意のサブセット)が関与する。この変形では、PEは、同じ幅のデータ上で操作するように構成されることが好ましい。例えば、PEは、2ビットで表現されるそれぞれ4−状態の演算を備えて、4−状態変数上で操作するように構成することができる。この場合、メモリトランザクションは、540A−540Nの語から2ビットを検索することができる。4−状態とその他の複数状態の操作に関する詳細は、2005年10月31日に提出された米国仮特許出願第60/723,078号、「VLIW Acceleration System Using Multi−State Logic」に説明されており、参照して組み入れる。
本発明は、いくつかの実施形態に関して上記に説明したが、本発明の範囲内でさまざまな変更を行うことができる。例えば、本発明は、同じPEのコンテキストで説明されたが、代わりの実施形態は、異なる種類のPEと異なる数のPEを使用することができる。また、PEは、同じ接続性を有する必要はない。また、PEはリソースを共有することもできる。例えば、2つ以上のPEは、同じシフトレジスタおよび/またはローカルメモリに書き込むことができる。この逆も真であり、単独のPEは、2つ以上のシフトレジスタおよび/またはローカルメモリに書き込むことができる。
別の例として、図4に示された命令382は、P0、P1などの個別のフィールドを示す。また、命令セットの操作全体が、4つの主要な操作モードのコンテキストで説明された。これは、図説の明確化のために行われた。さまざまな実施形態では、命令セットのさらに高度なコード化によって、フィールドが重なり合う命令、または、物理的な構造または操作モードと1対1の対応を持たないフィールドの命令にすることができる。フィールドXB1、XB2およびXtra Memの使用において、一例が示された。これらのフィールドは、命令の残りの部分に応じて、異なる意味になる。ローカルメモリアドレスは、XB1、XB2およびXtra Mem以外のフィールドによって決定される場合がある。さらに、操作の対称性または双対性は、命令を短くするために使用することもできる。
別の態様では、本発明のシミュレーションプロセッサ100は、ASIC(Application−Specific Integrated Circuit)またはFPGA(Field−Programmable Gate Array)またはその他の種類の集積回路で実現することができる。また、別の回路基板上で実装したり、ホストコンピュータ110に差し込む必要もない。別のホストコンピュータ110はない場合がある。例えば、図1を参照すると、CPU114とシミュレーションプロセッサ100はさらに密接に集積させることができ、または、おそらく、単独の集積演算デバイスとして実装することさえできる。
別の例として、ストレージメモリ122は、中間結果意外の情報を格納するために使用することができる。例えば、ストレージメモリ122は、刺激生成のために使用することができる。シミュレーションされている設計の刺激データは、ホストコンピュータ110からのDMAアクセスを使用して、ストレージメモリ122に格納することができる。実行時に、このデータは、上記のメモリアクセス方法によってストレージメモリ122から受信される。この例では、刺激はROM(読み出し専用メモリ)としてモデル化される。逆数も利用することができる。例えば、一定のデータ(例えば、関数シミュレーションの履歴)をキャプチャして、ホストコンピュータ110からのDMAを使用して検索するためにストレージメモリ122に格納することができる。この場合、メモリは、WOM(書き込み専用メモリ)としてモデル化される。代わりの手法では、ホストコンピュータ110は、刺激データを、シミュレーションプロセッサ100に対してROMとしてモデル化されたストレージメモリ122に送信して、シミュレーションプロセッサ100に対してWOMとしてモデル化されたストレージメモリ122からの応答データを取得することができる。
ロジックシミュレーションのために設計されたある実装では、プログラムメモリ121とストレージメモリ122は、異なる帯域幅とアクセス方法を有する。図8を参照すると、810と820の2つの部分は、インターフェース850によって接続されたメインプロセッサ810とコプロセッサ820としてモデル化できる。プログラムメモリ121は、メインプロセッサ810に直接接続して、1秒あたり2000億ビットを超える帯域帯で実現されている。ストレージメモリ122は、コプロセッサ820に接続して、1秒あたり200億ビットを超える帯域帯で実現されている。ストレージメモリ122は、メインプロセッサ810に直接接続されているので、待ち時間(インターフェース850を含む)は1つの因子である。ある特殊な設計では、プログラムメモリ121は、reg[2,560]mem[8M]として物理的に実現され、ストレージメモリ122は、reg[256]mem[125M]として物理的に実現されているが、ハードウェアとソフトウェアロジックにより、reg[64]mem[500M]にさらに分割される。相対的には、プログラムメモリ121は、広く(語あたり2,560ビット)て浅い(800万語)が、ストレージメモリ122は、狭く(語あたり64ビット)て深い(5億語)。これは、データ送信の量や頻度に対してどのDMA送信(プログラムメモリ121とストレージメモリ122のいずれか)を使用するかを決定する場合に考慮しなければならない。このために、VLIWプロセッサは、共同シミュレーションモードまたは刺激モードで操作することができる。
共同シミュレーションモードでは、ソフトウェアシミュレータは、内部変数のためにメインメモリ112を使用して、ホストのCPU114上で実行されている。ハードウェアのマッピングされた部分のシミュレーションが必要な場合、ソフトウェアシミュレータは、現在の入力データに基づいて(その時のステップで)ハードウェアのマッピングされた部分からの応答データに対してリクエストを気道する。このモードでは、ソフトウェアドライバ(ソフトウェアプログラムでソフトウェアシミュレータに直接通信して、ハードウェアシミュレータ130へのDMAインターフェースに対するアクセスを有する)が、プログラムメモリ121へのDMAを使用して、ソフトウェアシミュレータから、ハードウェアシミュレータ130に現在の入力データ(単独の刺激ベクトル)を送信する。この入力データセットの実行を完了すると、リクエストした応答データ(単独の応答ベクトル)もプログラムメモリ121に格納される。そして、ソフトウェアドライバは、DMAを使用して、応答データをプログラムメモリ121から検索して、ソフトウェアシミュレータに再度通信する。
刺激モードでは、ソフトウェアシミュレータをホストCPU114上で実行する必要がない。ソフトウェアドライバだけが使用される。このモードでは、ハードウェア加速装置130は、刺激データを準備し(ホストコンピュータ110からハードウェアシミュレータ130へのDMA)、実行し(起動コマンドを発行)、さらに、刺激応答を取得する(ハードウェアシミュレータ130からホストコンピュータ110へのDMA)データ駆動型マシンとして考えることができる。
2つの利用モードは異なる特徴を有する。ソフトウェアシミュレータとの共同シミュレーションでは、ソフトウェアシミュレータ自体の実行時や通信時間に、かなりのオーバーヘッドが見られる。ソフトウェアシミュレータは、CPU114の実行に基づいて、かなり大量の刺激データを生成または読み出している。どの時点でも、ハードウェアシミュレータ130に送信されるデータセットは、ハードウェアシミュレータ130にマッピングされたロジック部分へのI/Oを反映する。典型的に、多数のDMAリクエストがハードウェアシミュレータ130に出入りするが、データセットは典型的に小さい。従って、プログラムメモリ121は広くて浅いので、プログラムメモリ121の使用は、このデータ通信にはストレージメモリ122の使用より好ましい。科学的演算の例には、天候のモデル化、石油やガス爆発の地球物理学および地震分析、核シミュレーション、計算流体力学、粒子物理学、金融のモデル化や物質化学、有限要素モデル化、および、MRIなどのコンピュータ断層撮影がある。生命科学や生物技術では、計算化学や生物学、生物系のタンパク質フォールディングやシミュレーション、DNA塩基配列決定法、薬理ゲノム学、コンピュータ内での薬物発見などの例がある。ナノ技術アプリケーションは、分子モデル化やシミュレーション、密度関数理論、原子と原子の動力学、および量子力学的解析を含むことができる。デジタルコンテンツの例は、アニメーション、合成や描画、ビデオ処理や編集、および画像処理を含む。従って、本発明の開示は、本発明の範囲の図説を意図するものであって、制限するものではなく、以下の請求項に記載される。
図1は、本発明のある実施形態によるハードウェア加速型シミュレーションシステムを図説する模式図である。 図2は、本発明のある実施形態によるシミュレーションプロセッサを図説する模式図である。 図3は、本発明による、ユーザメモリアドレスのストレージメモリアドレスへのあるマッピングを図説する図である。 図4は、本発明の第1の実施形態によるシミュレーションプロセッサの単独プロセッサユニットを図説する回路図である。 図5は、ストレージメモリトランザクションと、ローカルメモリからストレージメモリへのデータの書き込みのトリガを図説する回路図である。 図6は、ストレージメモリトランザクションの命令の書式を図説するビットマップである。 図7は、ストレージメモリからローカルメモリへのデータの読み出しを図説する回路図である。 図8は、シミュレーションプロセッサとストレージメモリとの間のインターフェースのある実施形態を図説する模式図である。 図9は、代わりのメモリアーキテクチャの回路図である。 図10−14は、図9に示されたアーキテクチャのさまざまな読み出しと書き込み操作を図説する回路図である。 図10−14は、図9に示されたアーキテクチャのさまざまな読み出しと書き込み操作を図説する回路図である。 図10−14は、図9に示されたアーキテクチャのさまざまな読み出しと書き込み操作を図説する回路図である。 図10−14は、図9に示されたアーキテクチャのさまざまな読み出しと書き込み操作を図説する回路図である。 図10−14は、図9に示されたアーキテクチャのさまざまな読み出しと書き込み操作を図説する回路図である。 図15Aと15Bは、更なるメモリアーキテクチャの回路図である。 図15Aと15Bは、更なるメモリアーキテクチャの回路図である。

Claims (58)

  1. ユーザチップ設計の機能シミュレーションのための方法であって、該ユーザチップ設計は、ユーザロジックとユーザメモリとを含み、該方法は、
    該ユーザチップ設計の記述をプログラムにコンパイルすることであって、該プログラムはユーザロジックをシミュレーションする命令を含み、かつ該ユーザメモリへのアクセスをシミュレーションする命令を含む、ことと、
    該命令をシミュレーションプロセッサ上で実行することと
    を含む、方法。
  2. 前記ユーザチップ設計の記述をプログラムにコンパイルするステップは、
    ユーザメモリアドレスを、前記シミュレーションプロセッサに連結されたストレージメモリのためのストレージメモリアドレスにマッピングすることと、
    特定のユーザメモリアドレスにおけるユーザメモリへのアクセスを、該対応するストレージメモリアドレスにおけるストレージメモリにアクセスする命令にコンパイルすることと
    を含む、請求項1に記載の方法。
  3. ユーザメモリの少なくとも1つのインスタンスに対して、前記対応するストレージメモリアドレスは、前記ユーザメモリアドレスから選択されたビットを含み、該対応するストレージメモリアドレスへの該ユーザメモリアドレスの変換は前記命令の実行時には実施されない、請求項2に記載の方法。
  4. ユーザメモリの少なくとも1つのインスタンスに対して、前記対応するストレージメモリアドレスは、前記ユーザメモリアドレスから選択されたビットと連結された固定オフセットを含む、請求項2に記載の方法。
  5. ユーザメモリの少なくとも1つのインスタンスに対して、前記対応するストレージメモリのアドレスは、前記ユーザメモリアドレスの最下位ビットを固定数だけ含む、請求項2に記載の方法。
  6. ユーザメモリの少なくとも1つのインスタンスに対して、前記対応するストレージメモリアドレスは、該ユーザメモリアドレスの最下位ビットをceil(log2(N))個含み、Nは該ユーザメモリのインスタンスにおけるユーザメモリアドレスの個数である、請求項2に記載の方法。
  7. ユーザメモリの少なくとも1つのインスタンスに対して、前記対応するストレージメモリアドレスは、該ユーザメモリアドレスのすべてのビットを含む、請求項2に記載の方法。
  8. 前記ユーザチップ設計の記述をプログラムにコンパイルするステップは、ユーザメモリアドレスを、該ユーザメモリアドレスに適用された単純なロジック機能に基づいたストレージメモリアドレスにマッピングすることを含む、請求項2に記載の方法。
  9. シミュレーションプロセッサ上で前記命令を実行するステップは、前記シミュレーションプロセッサと、前記ストレージメモリから分離されたプログラムメモリとの間の命令の送信を妨害せずに、該ストレージメモリにアクセスすることを含む、請求項2に記載の方法。
  10. シミュレーションプロセッサ上で前記命令を実行するステップは、前記シミュレーションプロセッサによってその他の命令の実行を妨害せずに、前記ストレージメモリにアクセスすることを含む、請求項2に記載の方法。
  11. シミュレーションプロセッサ上で前記命令を実行するステップは、
    ストレージメモリのトランザクションをトリガする命令を実行することを含み、該命令は、該ストレージメモリのトランザクションをさらに指定するストレージメモリ命令を含む該シミュレーションプロセッサのローカルメモリ内の場所を指示する、請求項2に記載の方法。
  12. 前記ストレージメモリの命令は、該命令によってシミュレーションされている前記ユーザメモリアドレスに対応するストレージメモリアドレスを含む、請求項11に記載の方法。
  13. 前記ストレージメモリのアドレスは、前記対応するユーザメモリアドレスから選択されたビットが連結される該対応するユーザメモリに対する固定オフセットを含む、請求項12に記載の方法。
  14. 前記ストレージメモリの命令は、前記ストレージメモリのトランザクションが読み出し操作であるか書き込み操作であるかを示すフィールドを含む、請求項11に記載の方法。
  15. 前記ストレージメモリの命令は、前記ストレージメモリのトランザクションが有効になっているか否かを示すフィールドを含む、請求項11に記載の方法。
  16. 前記ストレージメモリの命令は、ビットマスキングが有効になっているか否かを示すフィールドを含む、請求項11に記載の方法。
  17. 前記ストレージメモリの命令は、該ストレージメモリにおいて任意の動的に生成されるフィールドが無効であるか否かを示すフィールドを含む、請求項11に記載の方法。
  18. 前記ユーザロジックおよび前記ユーザメモリのシミュレーションは4−状態のシミュレーションであって、前記ストレージメモリの命令は、該ストレージメモリ命令において任意の動的に生成されるフィールドがXまたはZを含むか否かを示すフィールドを含む、請求項11に記載の方法。
  19. 前記ユーザロジックおよび前記ユーザメモリのシミュレーションは4−状態のシミュレーションであって、前記ストレージメモリの命令はメモリ有効フィールドを含む、請求項11に記載の方法。
  20. 前記ユーザチップ設計におけるユーザメモリの記述は、該ユーザメモリの動作モデルを含む、請求項1に記載の方法。
  21. 前記ユーザチップ設計におけるユーザロジックの記述は、該ユーザロジックのゲートレベルのネットリストを含む、請求項20に記載の方法。
  22. 前記プログラムは、読み出し専用ベースのシミュレーションプロセッサに連結されたストレージメモリからデータを読み出す命令をさらに含む、請求項1に記載の方法。
  23. 前記ストレージメモリから読み出された前記データは、前記ユーザチップ設計の前記機能シミュレーションのための刺激データである、請求項22に記載の方法。
  24. ホストコンピュータは、前記シミュレーションプロセッサの操作を一時停止することなく、前記刺激データを前記ストレージメモリに書き込む、請求項23に記載の方法。
  25. 前記プログラムは、書き込み専用ベースのシミュレーションプロセッサに連結されたストレージメモリにデータを書き込む命令をさらに含む、請求項1に記載の方法。
  26. 前記ストレージメモリに書き込まれる前記データは、前記ユーザチップ設計の前記機能シミュレーションのための履歴データを含む、請求項25に記載の方法。
  27. ホストコンピュータは、前記シミュレーションプロセッサの操作を一時停止することなく、前記ストレージメモリから前記履歴データを読み出す、請求項26に記載の方法。
  28. ユーザチップ設計の機能をシミュレーションするハードウェア加速型シミュレーションシステムであって、該ユーザチップ設計はユーザロジックとユーザメモリとを含み、該シミュレーションされる機能は、ユーザメモリへの書き込みとユーザメモリからの読み出しとを含んでおり、該ハードウェア加速型シミュレーションシステムは、
    該ユーザロジックをシミュレーションするように構成可能なプロセッサ要素を含むプロセッサユニットをn個含んでいるシミュレーションプロセッサと、
    該ユーザメモリをシミュレーションする該シミュレーションプロセッサによってアクセス可能なストレージメモリと、
    該ユーザロジックと該ユーザメモリへのアクセスとの両方をシミュレーションする命令を含むプログラムを格納するために、該シミュレーションプロセッサによって別々にアクセス可能なプログラムメモリであって、該命令は該シミュレーションプロセッサによって実行可能である、プログラムメモリと
    を備える、ハードウェア加速型シミュレーションシステム。
  29. ユーザメモリへの書き込みとユーザメモリからの読み出しとは、それぞれ、ストレージメモリへ書き込む命令とストレージメモリから読み出す命令によってシミュレーションされ、さらに、該ストレージメモリからの読み出しと該ストレージメモリへの書き込みとは、前記プログラムメモリと前記シミュレーションプロセッサとの間の命令の送信を妨害しない、請求項28に記載のハードウェア加速型シミュレーションシステム。
  30. ユーザメモリへの書き込みとユーザメモリからの読み出しは、それぞれ、ストレージメモリへ書き込む命令とストレージメモリから読み出す命令とによってシミュレーションされ、さらに、該ストレージメモリからの読み出しと該ストレージメモリへの書き込みとは、ユーザロジックをシミュレーションする命令の実行を妨害しない、請求項28に記載のハードウェア加速型シミュレーションシステム。
  31. 前記シミュレーションプロセッサは、ローカルメモリをさらに備え、
    特定のユーザメモリアドレスにおいてユーザメモリへの書き込みまたはユーザメモリからの読み出しをシミュレーションする前記命令は、ローカルメモリアドレスを含み、該ローカルメモリアドレスの該ローカルメモリは、該ユーザメモリアドレスに対応するストレージメモリアドレスにおいて該ストレージメモリにアクセスするストレージメモリ命令を含む、請求項28に記載のハードウェア加速型シミュレーションシステム。
  32. 前記ストレージメモリアドレスは、前記ユーザメモリアドレスから選択されたビットを含む、請求項31に記載のハードウェア加速型シミュレーションシステム。
  33. 前記ストレージメモリのアドレスは、前記対応するユーザメモリアドレスから選択されたビットと連結された前記ユーザメモリのための所定の固定オフセットを含む、請求項32に記載のシステム。
  34. 前記ローカルメモリアドレスを含む前記命令は、1つだけのプロセッサユニットによって実行されるが、前記ローカルメモリに含まれる前記ストレージメモリ命令は、2つ以上のプロセッサユニットの前記ローカルメモリに影響を与える、請求項31に記載のハードウェア加速型シミュレーションシステム。
  35. ユーザメモリへの書き込みをシミュレーションする命令は、前記ローカルメモリから前記ストレージメモリにデータを書き込むことを含む、請求項28に記載のハードウェア加速型シミュレーションシステム。
  36. 前記プロセッサユニットは、専用ローカルメモリを含み、ユーザメモリへの書き込みをシミュレーションする命令は、2つ以上の専用ローカルメモリから前記ストレージメモリに書き込むことを含む、請求項35に記載のハードウェア加速型シミュレーションシステム。
  37. 前記プロセッサユニットは、専用ローカルメモリを含み、ユーザメモリへの書き込みをシミュレーションする命令は、それぞれの専用ローカルメモリから正確に1ビットだけを前記ストレージメモリに書き込むことを含む、請求項35に記載のハードウェア加速型シミュレーションシステム。
  38. 前記プロセッサユニットは、専用ローカルメモリを含み、ユーザメモリへの書き込みをシミュレーションする命令は、1つだけの専用ローカルメモリから正確に1語だけを前記ストレージメモリに書き込むことを含む、請求項35に記載のハードウェア加速型シミュレーションシステム。
  39. 前記プロセッサユニットは、専用ローカルメモリを含み、ユーザメモリへの書き込みをシミュレーションする命令は、少なくとも1つの専用ローカルメモリから少なくとも1ビットを前記ストレージメモリに書き込むことを含む、請求項35に記載のハードウェア加速型シミュレーションシステム。
  40. ユーザメモリへの書き込みをシミュレーションする少なくとも1つの命令は、ローカルメモリから前記ストレージメモリへの単独のデータ送信を含む、請求項35に記載のハードウェア加速型シミュレーションシステム。
  41. ユーザメモリへの書き込みをシミュレーションする少なくとも1つの命令は、ローカルメモリから前記ストレージメモリへの2つ以上のデータ送信を含む、請求項35に記載のハードウェア加速型シミュレーションシステム。
  42. ユーザメモリからの読み出しをシミュレーションする前記命令は、前記ストレージメモリから前記ローカルメモリにデータを読み出すことを含む、請求項28に記載のハードウェア加速型シミュレーションシステム。
  43. ユーザメモリからの読み出しをシミュレーションする前記命令は、前記ストレージメモリから2つ以上の専用ローカルメモリにデータを読み出すことを含む、請求項42に記載のハードウェア加速型シミュレーションシステム。
  44. 前記シミュレーションプロセッサの一部であるローカルメモリに連結された読み出しレジスタであって、データが前記ストレージメモリにさらに送信されるために、該ローカルメモリから該読み出しレジスタへのデータ送信が可能である、読み出しレジスタと、
    前記プロセッサユニットと該ローカルメモリとに連結された書き出しレジスタであって、データが該プロセッサユニットまたは該ローカルメモリにさらに送信されるために、該ストレージメモリからのデータ送信が可能である、書き込みレジスタと、
    をさらに備える、請求項28に記載のハードウェア加速型シミュレーションシステム。
  45. 前記ローカルメモリは、各プロセッサユニットに対する専用ローカルメモリを備え、データは、前記ストレージメモリにさらに送信されるために、該専用ローカルメモリから前記読み出しレジスタに送信可能であるとともに、データは、該プロセッサユニットまたは該専用ローカルメモリにさらに送信されるために、該ストレージメモリから前記書き込みレジスタに送信可能である、請求項44に記載のハードウェア加速型シミュレーションシステム。
  46. 前記書き込みレジスタから前記読み出しレジスタへの経路へのループ転送経路をさらに備え、プロセッサユニットを迂回する、請求項44に記載のハードウェア加速型シミュレーションシステム。
  47. 前記シミュレーションプロセッサの一部であるローカルメモリに連結された読み出しレジスタであって、データが前記ストレージメモリにさらに送信されるために、該ローカルメモリから前記読み出しレジスタへのデータ送信が可能である、読み出しレジスタと、
    前記プロセッサユニットに連結された書き込みレジスタであって、データが前記プロセッサユニットにさらに送信されるために、該ストレージメモリからのデータ送信が可能である、書き込みレジスタと
    をさらに備える、請求項28に記載のハードウェア加速型シミュレーションシステム。
  48. 前記読み出しレジスタを迂回するマルチプレクサをさらに備える、請求項47に記載のハードウェア加速型シミュレーションシステム。
  49. 前記書き込みレジスタを迂回するマルチプレクサをさらに備える、請求項47に記載のハードウェア加速型シミュレーションシステム。
  50. 前記読み出しレジスタから前記書き込みレジスタへのループバック経路をさらに備え、前記ストレージメモリを迂回する、請求項47に記載のハードウェア加速型シミュレーションシステム。
  51. 前記読み出しレジスタと前記書き込みレジスタとの間に連結された例外処理機能をさらに備える、請求項47に記載のハードウェア加速型シミュレーションシステム。
  52. 前記例外処理機能は、プロセッサコアを備える、請求項51に記載のハードウェア加速型シミュレーションシステム。
  53. 前記例外処理機能は、演算ユニットを備える、請求項51に記載のハードウェア加速型シミュレーションシステム。
  54. 前記シミュレーションプロセッサは、例外処理機能を含む、請求項51に記載のハードウェア加速型シミュレーションシステム。
  55. 前記例外処理機能は、前記シミュレーションプロセッサに対する外部回路として実装される、請求項51に記載のハードウェア加速型シミュレーションシステム。
  56. 前記シミュレーションプロセッサと前記ストレージメモリとの間のインターフェースをさらに備え、
    該シミュレーションプロセッサへの読み出しと書き込みとを制御するために、該シミュレーションプロセッサに連結されたシミュレーションプロセッサ部分と、
    該ストレージメモリへの読み出しと書き込みとを制御するために、該ストレージメモリに連結されたストレージメモリ部分と、
    該ストレージメモリ部分と該シミュレーションプロセッサ部分とを連結する中間インターフェースと
    を備える、請求項28に記載のハードウェア加速型シミュレーションシステム。
  57. 前記シミュレーションプロセッサは、ホストコンピュータに差し込み可能な基板上に実装される、請求項28に記載のハードウェア加速型シミュレーションシステム。
  58. 前記シミュレーションプロセッサは、前記ホストコンピュータのメインメモリへの直接アクセスを有する、請求項57に記載のハードウェア加速型シミュレーションシステム。
JP2008543424A 2005-12-01 2006-11-29 ロジックおよびメモリのシミュレーション用ハードウェア加速システム Withdrawn JP2009517783A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/292,712 US20070129926A1 (en) 2005-12-01 2005-12-01 Hardware acceleration system for simulation of logic and memory
PCT/US2006/045706 WO2007064716A2 (en) 2005-12-01 2006-11-29 Hardware acceleration system for simulation of logic and memory

Publications (1)

Publication Number Publication Date
JP2009517783A true JP2009517783A (ja) 2009-04-30

Family

ID=38092762

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008543424A Withdrawn JP2009517783A (ja) 2005-12-01 2006-11-29 ロジックおよびメモリのシミュレーション用ハードウェア加速システム

Country Status (5)

Country Link
US (1) US20070129926A1 (ja)
EP (1) EP1958105A4 (ja)
JP (1) JP2009517783A (ja)
TW (1) TW200802011A (ja)
WO (1) WO2007064716A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014523569A (ja) * 2011-06-14 2014-09-11 モンタナ・システムズ・インコーポレーテッド 拡張可能な並列プロセッサのためのシステム、方法、および、装置

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070219771A1 (en) * 2005-12-01 2007-09-20 Verheyen Henry T Branching and Behavioral Partitioning for a VLIW Processor
US8275972B2 (en) * 2006-08-23 2012-09-25 Ati Technologies, Inc. Write data mask method and system
WO2009118731A2 (en) 2008-03-27 2009-10-01 Rocketick Technologies Ltd Design simulation using parallel processors
US8019950B1 (en) * 2008-03-27 2011-09-13 Xilinx, Inc. Memory controller interface for an embedded processor block core in an integrated circuit
JP5733860B2 (ja) * 2008-07-10 2015-06-10 ロケティック テクノロジーズ リミテッド 依存問題の効率的並列計算
US9032377B2 (en) 2008-07-10 2015-05-12 Rocketick Technologies Ltd. Efficient parallel computation of dependency problems
US9128748B2 (en) * 2011-04-12 2015-09-08 Rocketick Technologies Ltd. Parallel simulation using multiple co-simulators
US8737233B2 (en) 2011-09-19 2014-05-27 International Business Machines Corporation Increasing throughput of multiplexed electrical bus in pipe-lined architecture
US20130185477A1 (en) * 2012-01-18 2013-07-18 International Business Machines Corporation Variable latency memory delay implementation
US9230046B2 (en) 2012-03-30 2016-01-05 International Business Machines Corporation Generating clock signals for a cycle accurate, cycle reproducible FPGA based hardware accelerator
US9286423B2 (en) 2012-03-30 2016-03-15 International Business Machines Corporation Cycle accurate and cycle reproducible memory for an FPGA based hardware accelerator
US9221679B2 (en) * 2013-03-12 2015-12-29 Freescale Semiconductor, Inc. Compensation and calibration for MEMS devices
US9961174B2 (en) 2014-01-15 2018-05-01 Qualcomm Incorporated Analog behavior modeling for 3-phase signaling
US10013212B2 (en) * 2015-11-30 2018-07-03 Samsung Electronics Co., Ltd. System architecture with memory channel DRAM FPGA module
CN107220408B (zh) * 2017-04-27 2020-11-27 北京广利核系统工程有限公司 一种核电站全范围模拟机控制算法加速计算方法
US10783297B2 (en) * 2017-10-13 2020-09-22 Bank Of America Corporation Computer architecture for emulating a unary correlithm object logic gate
JP6959624B2 (ja) * 2018-03-14 2021-11-02 日本電気株式会社 セキュリティアセスメントシステム
WO2019176022A1 (en) * 2018-03-14 2019-09-19 Nec Corporation Security assessment system
TWI758720B (zh) 2020-04-30 2022-03-21 創意電子股份有限公司 電路信號偏移的調整裝置以及調整方法
CN112286863B (zh) 2020-11-18 2023-08-18 合肥沛睿微电子股份有限公司 处理暨存储电路
TWI786476B (zh) * 2020-11-25 2022-12-11 大陸商合肥沛睿微電子股份有限公司 處理暨儲存電路
CN113268269B (zh) * 2021-06-07 2022-10-14 中科计算技术西部研究院 一种针对动态规划算法的加速方法、系统及装置

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US553479A (en) * 1896-01-21 Automatic register for photograph-printing frames
US4736663A (en) * 1984-10-19 1988-04-12 California Institute Of Technology Electronic system for synthesizing and combining voices of musical instruments
JPH0731669B2 (ja) * 1986-04-04 1995-04-10 株式会社日立製作所 ベクトル・プロセツサ
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
JP2500447B2 (ja) * 1993-05-19 1996-05-29 日本電気株式会社 メモリコピ―方式
US5663900A (en) * 1993-09-10 1997-09-02 Vasona Systems, Inc. Electronic simulation and emulation system
SG44642A1 (en) * 1994-01-10 1997-12-19 Dow Chemical Co A massively multiplexed superscalar harvard architecture computer
US5560013A (en) * 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
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
US5768567A (en) * 1996-05-14 1998-06-16 Mentor Graphics Corporation Optimizing hardware and software co-simulator
US5841967A (en) * 1996-10-17 1998-11-24 Quickturn Design Systems, Inc. Method and apparatus for design verification using emulation and simulation
US5872963A (en) * 1997-02-18 1999-02-16 Silicon Graphics, Inc. Resumption of preempted non-privileged threads with no kernel intervention
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
US6879341B1 (en) * 1997-07-15 2005-04-12 Silverbrook Research Pty Ltd Digital camera system containing a VLIW vector processor
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
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
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
US20060007318A1 (en) * 2004-07-09 2006-01-12 Omron Corporation Monitoring system center apparatus, monitoring-system-center program, and recording medium having recorded monitoring-system-center program

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014523569A (ja) * 2011-06-14 2014-09-11 モンタナ・システムズ・インコーポレーテッド 拡張可能な並列プロセッサのためのシステム、方法、および、装置

Also Published As

Publication number Publication date
WO2007064716A2 (en) 2007-06-07
EP1958105A4 (en) 2010-02-24
US20070129926A1 (en) 2007-06-07
WO2007064716A3 (en) 2008-10-02
EP1958105A2 (en) 2008-08-20
TW200802011A (en) 2008-01-01

Similar Documents

Publication Publication Date Title
JP2009517783A (ja) ロジックおよびメモリのシミュレーション用ハードウェア加速システム
US6954845B2 (en) Reconfigurable instruction set computing
US20070219771A1 (en) Branching and Behavioral Partitioning for a VLIW Processor
US6477697B1 (en) Adding complex instruction extensions defined in a standardized language to a microprocessor design to produce a configurable definition of a target instruction set, and hdl description of circuitry necessary to implement the instruction set, and development and verification tools for the instruction set
US7904850B2 (en) System and method for converting software to a register transfer (RTL) design
US7865346B2 (en) Instruction encoding in a hardware simulation accelerator
US20110047360A1 (en) Processor
US7444276B2 (en) Hardware acceleration system for logic simulation using shift register as local cache
Lanzagorta et al. Introduction to reconfigurable supercomputing
KR20030066641A (ko) 효율적인 데이터 로딩 및 언로딩을 위하여 합성된 패킷기반 프로토콜 논리를 이용한 하드웨어 보조 설계 검증시스템
US10331830B1 (en) Heterogeneous logic gate simulation using SIMD instructions
JP2014523569A (ja) 拡張可能な並列プロセッサのためのシステム、方法、および、装置
US20070129924A1 (en) Partitioning of tasks for execution by a VLIW hardware acceleration system
US20070074000A1 (en) VLIW Acceleration System Using Multi-state Logic
US20070073999A1 (en) Hardware acceleration system for logic simulation using shift register as local cache with path for bypassing shift register
CN100444107C (zh) 优化的处理器和指令对准
Yenimol Hardware/software co-design of domain-specific risc-v processor for graph applications
Kamalakkannan et al. High throughput multidimensional tridiagonal system solvers on FPGAs
JP2006268873A (ja) 機能シミュレーションのためのハードウェア・アクセラレーション・システム
Singh Implementation Of 32 Bit SPARC Processor On 180nm CMOS Process
WO2007037935A2 (en) Hardware acceleration system for logic simulation using shift register as local cache
Krutådal Weighted pattern matching with pwms on fpgas
Clinton et al. xStream Processor

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20100202