JPH0784754A - 電子計算機 - Google Patents

電子計算機

Info

Publication number
JPH0784754A
JPH0784754A JP5228625A JP22862593A JPH0784754A JP H0784754 A JPH0784754 A JP H0784754A JP 5228625 A JP5228625 A JP 5228625A JP 22862593 A JP22862593 A JP 22862593A JP H0784754 A JPH0784754 A JP H0784754A
Authority
JP
Japan
Prior art keywords
logic
logic circuit
program
connection information
circuit connection
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.)
Pending
Application number
JP5228625A
Other languages
English (en)
Inventor
Takeshi Aikawa
健 相川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP5228625A priority Critical patent/JPH0784754A/ja
Publication of JPH0784754A publication Critical patent/JPH0784754A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 少数の論理プログラマブル素子を用いること
で、演算速度を高速化することの可能な電子計算機を提
供すること。 【構成】 本発明は、プロセッサおよび複数の電気的書
換可能な論理プログラマブル素子を有し、前記プロセッ
サが、プログラムにて記述された処理を実行するととも
に、前記プログラムの少なくとも一部を前記論理プログ
ラマブル素子に実行させる電子計算機において、前記プ
ログラムの少なくとも一部を論理回路接続情報にコンパ
イルするコンパイル手段と、前記論理回路接続情報を複
数の部分論理回路接続情報に分割する分割手段と、前記
プログラムの実行中に評価する必要の生じた論理回路を
含む前記部分論理回路接続情報を、該評価する必要の生
じた後に選択したいずれかの前記論理プログラマブル素
子へ動的にロードするロード手段とを備えることを特徴
とする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、電子計算機に係わり、
特に、論理プログラマブル素子を用いて計算速度を向上
するものに関する。
【0002】
【従来の技術】近年、計算機の性能は目覚ましく向上し
てきている。ただし、計算機の基本方式はここ20年間
ほとんど変わっておらず、この性能向上はほとんど半導
体技術の進歩によってなされたものであった。具体的に
は、クロック周波数を向上したこと、高集積化により1
命令で処理するデータ幅を向上したこと、あるいは1ク
ロック内に処理できる機械語命令の数が増大したことな
どによる。
【0003】一方、このような状況の中で、計算機の基
本方式自体を変える試みとして、書換可能な論理プログ
ラマブル素子(FPGA)を使って計算機の性能を向上
させる方法が提案されている。これは、計算機のバスに
FPGAを1個または複数個接続し、プログラム中の1
部のルーチンを論理回路接続情報(ネットリストなど)
に変換して上記FPGA(群)にロードし、これを専用
演算機として用いるという方法である。
【0004】ここに、従来、専用演算機として用いられ
てきたものに浮動小数点演算機といったものはあった
が、これは1部のルーチンにとっては有効であるが、そ
の他の演算については使用頻度が少ないので、専用のL
SIを開発するにはコスト増を招き実現が難しかった。
【0005】しかしながら、FPGAを用いれば、専用
のLSIを起こすことなしに専用演算機が実現できるた
め、上記のような試みが行われるようになった訳であ
る。例えば、Peter M.Athanas らは論文「Processor Re
configuration Through Instruction-Set Metamorphosi
s ; IEEE Computer March 1993 pp11-18」で、プログラ
ムの1部をコンパイルしFPGAに割付け、プログラム
全体の実行速度を高速化する方法について述べている。
本論文には、ECC(エラーコレクティングコードの発
生)ニューロネットワーク計算など、いくつかのC言語
で書かれたプログラムにおいて、前記方法によりCPU
単位で実行する場合に比べて、数十倍の高速化が達成で
きることが報告されている。
【0006】しかし、本論文には、FPGA4個に固定
的にプログラムを割り付ける小規模の適用例しか示され
ておらず、実際の問題に適用することは困難であった。
例えば、Peter らは4入力のニューラルネットワークの
プログラムをコンパイルし、Xlinx XC30901 内部の58
%のロジックを使った例を示しているが、ニューラルネ
ットワークを例えば文字認識等に適用するためには、少
なくとも100入力程度は必要となる。これを固定的に
FPGAに割り付けると、FPGAの数が膨大になると
いう不具合がある。
【0007】また、最近、論理回路を使用したデジタル
システムの設計においては、システムの開発期間の短縮
のために大規模論理回路を実現するゲートアレイ、フル
カスタムLSIを使用する場合、LSI開発に先だっ
て、シミュレーションによる検証を行うことが重要とな
ってきている。特に、近年、大規模化かつ複雑化しつつ
ある計算機システム設計の際には、シミュレーションで
オペレーティングシステム、アプリケーションプログラ
ムまでの動作の確認を行うことが強く望まれている。な
お、シミュレーションという語句は、シミュレーション
対象全体を模擬する意味で用い、これに対しエミュレー
ションという語句は、シミュレーション対象の一部をF
PGAアレイで模擬する意味で用いるものとする。
【0008】従来、論理シミュレーションは、電子計算
機のソフトウェアで設計対象の計算機システムの論理を
模擬することで行われてきたが速度が遅かった。例え
ば、数百キロゲートの規模からなる計算機システムを数
十MIPSの電子計算機でシミュレーションする場合に
は、シミュレーション対象の計算機1クロック分をシミ
ュレーションするのに数秒の時間がかかってしまいオペ
レーティングシステム、アプリケーションプログラム等
数千万クロック以上のシミュレーションを行おうとする
と1年以上の時間がかかり、実現できなかった。
【0009】これを解決するものとして、シミュレーシ
ョン専用のハードウェアも開発されており、数百倍から
千倍の高速化を行うものが商品化されているが、高価で
ありかつ性能も充分なものではない。
【0010】また、多数のFPGAアレイからなる論理
エミュレータで、例えば、数十Kゲートから数百Kゲー
トの回路を数百KHz〜数MHzでエミュレート可能な
ものも市販されているが、大規模なハードウェアとなり
非常に高価であった。
【0011】
【発明が解決しようとする課題】上記のように、従来の
電子計算機では、FPGA群を用いて大規模な専用演算
機を実現しようとするとハードウェアが大きくなり実現
が困難であった。また、従来のソフトウェアによる論理
シミュレータは速度が遅く、また専用ハードウェアや論
理エミュレータは非常に高価であった。
【0012】本発明は、上記事情を考慮してなされたも
ので、少数の論理プログラマブル素子を用いることで、
演算速度を高速化することの可能な電子計算機を提供す
ることを目的とする。
【0013】
【課題を解決するための手段】
1)上記課題を解決するために、本発明では、プロセッ
サおよび複数の電気的書換可能な論理プログラマブル素
子を有し、前記プロセッサが、プログラムにて記述され
た処理を実行するとともに、前記プログラムの少なくと
も一部を前記論理プログラマブル素子に実行させる電子
計算機において、前記プログラムの少なくとも一部を論
理回路接続情報にコンパイルするコンパイル手段と、前
記論理回路接続情報を複数の部分論理回路接続情報に分
割する分割手段と、前記プログラムの実行中に評価する
必要の生じた論理回路を含む前記部分論理回路接続情報
を、該評価する必要の生じた後に選択したいずれかの前
記論理プログラマブル素子へ動的にロードするロード手
段とを備えることを特徴とする。
【0014】2)また、上記電子計算機には、前記部分
論理回路接続情報に含まれる入出力ポートをプロセッサ
の論理アドレス空間に割り付ける割付手段をさらに設け
ても良い。
【0015】3)上記(2)において、前記入出力ポー
トへの信号線値の書き込み時のトラップに応答して前記
プロセッサによって行われる例外処理手続きを用いて、
前記論理プログラマブル素子の入出力ポートの論理アド
レスを動的に変更する変更手段をさらに設けても良い。
【0016】4)上記(3)において、前記ロード手段
は、前記入出力ポートへの信号線値の書き込み時のトラ
ップに応答して前記プロセッサによって行われる例外処
理手続きを用いて、前記ロードを実行するようにしても
良い。
【0017】5)上記(1)〜(4)において、前記プ
ログラムは、少なくともハードウェアの動作を記述した
部分を含んでも良い。 6)上記(1)〜(5)において、前記論理プログラマ
ブル素子群は、少なくとも入出力ポートおよび内部プロ
グラムポートを通して、前記プロセッサからアクセス可
能であるようにしても良い。
【0018】7)上記(6)において、前記論理プログ
ラマブル素子群は、さらに、内部状態をセーブおよびリ
ストアするためのポートを通して、前記プロセッサから
アクセス可能であるようにしても良い。
【0019】
【作用】本発明では、プログラムの一部または全体を論
理回路にコンパイルして得られた専用演算機の論理回路
接続情報(ネットリストなど)を複数個の部分論理回路
接続情報(論理パート)に分割する。
【0020】そして、前記プログラムの実行過程で評価
する必要の生じた論理回路を含む前記部分論理回路接続
情報を、複数の論理プログラマブル素子(FPGA)の
いずれかに動的に論理回路接続情報をロードする。すな
わち、従来のように部分論理回路接続情報とこれをロー
ドする論理プログラマブル素子との対応が予め固定的に
決定されているわけではなく、プログラムの実行過程に
おいて、論理プログラマブル素子に割り付けられていな
い状態にある部分論理回路接続情報のうち評価の必要の
あるものが生じた場合、該評価する必要の生じた後に割
り付ける論理プログラマブル素子を選択し、その論理プ
ログラマブル素子に前記情報を(ダイナミックに)にロ
ードする。また、評価の必要のある部分論理回路接続情
報が論理プログラマブル素子の数を越えている場合は、
先に評価する部分論理回路接続情報を、適宜選択する。
【0021】このようにして、専用演算機として用いる
論理プログラマブル素子がプログラムの規模に比較して
ごく少数であるにもかかわらず、演算速度を高速化した
電子計算機を提供することができる。
【0022】また、本発明の適用例として例えば論理シ
ミュレーション装置の場合には、シミュレーション対象
自体を専用演算機と考える。つまり、論理プログラマブ
ル素子を従来の論理エミュレータのようにシミュレート
対象全体に相当する量を持つのではなく数分の1のゲー
ト数に相当する量を持つ。さらに、評価の必要な論理回
路の部分に相当するプログラム情報、内部状態をソフト
ウェアで制御してシミュレーション時に、該評価の必要
が生じた時点で動的にロードし、論理プログラマブル素
子アレイでエミュレーションを行い論理回路全体のシミ
ュレーションを行う。
【0023】これによって、ハードウェアでシミュレー
ションを行うので演算速度を高速化できるとともに、シ
ミュレーション対象の論理回路量に相当する論理プログ
ラム素子を持つ必要がないためハードウェア量が少なく
てすむ。また、論理回路の性質上常にシステム全体の全
ての論理回路が動作しているわけではないので論理プロ
グラム素子のプログラム入れ替え、状態入れ替えのオー
バヘッドはハードウェア量削減の効果に比べて小さい。
【0024】
【実施例】以下、図面を参照しながら実施例を説明す
る。本発明に係る電子計算機の一実施例として、本発明
を適用した論理シミュレーション装置の要部概略構成を
図1に示す。図に示されるように、この論理シミュレー
ション装置は、プロセッサ(以下、CPUと略記する)
1、主記憶装置2、補助記憶装置3、論理プログラマブ
ル素子アレイ(以下、FPGAアレイと略記する)4、
メモリ管理装置(以下、MMUと略記する)5を備え
る。CPU1は、信号線11を通してMMU5に接続さ
れ、MMU5は信号線12を通してバス10に接続され
ている。また、主記憶装置2、補助記憶装置3はそれぞ
れ信号線13,14を通してバス10に接続されてい
る。
【0025】CPU1は、所定の論理シミュレーション
・ソフトウェアに基づいて、当該論理シミュレーション
における制御、処理を司るものであり、後述するような
シミュレーション対象全体の論理回路を予め論理回路接
続情報(ネットリストなど)にコンパイルする機能(コ
ンパイル手段)、この論理回路接続情報をFPGAアレ
イ4の物理エミュレーションパートでのエミュレートが
可能な大きさのパートに分割する機能(分割手段)、本
発明の特徴である、当該論理シミュレーションの実行過
程で評価する必要の生じた論理回路を含む前記部分論理
回路接続情報を、該評価する必要の生じた後に選択した
前記FPGAアレイ5内のいずれかのFPGAに動的に
ロードする機能(ロード手段)などを提供する。
【0026】FPGAアレイ4は、3つのポート15,
16,17でバス10に接続されている。第1のポート
15は、FPGAアレイ4で評価すべき論理回路データ
の読み書きのために使われる。第2のポート16は、F
PGAアレイ4のプログラムデータのロード用に使われ
る。また、第3のポート17は、FPGAアレイ4の状
態(各FPGAに割り付けた論理回路中の記憶素子の状
態)のセーブ/リストアのために使われる。
【0027】あるシミュレーション時刻では、複数のパ
ーティションに分割されたシミュレーション対象の論理
回路の1つのパーティションと等価な論理回路に、FP
GAアレイ4の1つの物理パートがプログラムされ、パ
ーティション1つのエミュレーションが行われる。本実
施例では、物理パーティションが2つの例で説明を行っ
ているので、FPGAアレイ4のプログラムおよび内部
状態の入れ替えなしに、2つの物理パーティションに相
当する論理回路のエミュレーションが可能である。
【0028】図2は、図1のFPGAアレイ4の構造を
詳細に示したものである。図のように、このFPGAア
レイ4は、4つの論理プログラマブル素子(以下、FP
GAと略記する)を有し、FPGA0およびFPGA1
は、物理パート0を構成し、FPGA2およびFPGA
3は物理パート1を構成している。同一物理パートに属
するFPGAは、相互に複数の信号線(例えば100
本)S0,S1で接続されている。なお、図2における
10,15,16,17は、図1の同番号の構成要素に
対応している。
【0029】各FPGA20は、電気的にプログラミン
グ可能な論理プリミティブ、および電気的にプログラミ
ング可能なプリミティブ間配線により構成される。プロ
グラムは内部の記憶素子、例えばSRAMに記憶され
る。上記論理プリミティブは、組み合わせ回路(例え
ば、4入力1出力のメモリルックアップテーブル型組み
合わせ回路)フリップフロップからなっている。ここ
に、内蔵される論理プリミティブの個数は、例えば0.
6ミクロンCMOS技術を使うと1024個程度が実現
可能で、この場合にFPGAのピン数は例えば400ピ
ンくらいが妥当である。また、本実施例においては、該
論理プリミティブのフリップフロップの状態を読み書き
する専用のポート(例えば32本)を持つものを用いて
いるが、専用のポートを設けずに内部のプログラマブル
な配線を用いて読み書きするようにプログラムしても良
い。
【0030】本実施例で用いるFPGA20には、前記
の内部フリップフロップ読み書きポートP1、プログラ
ム書き込みポートP2(例えば32本のデータ線および
ライト制御線よりなるもの)、およびエミュレーション
のための論理データ入出力ポートP3(例えば256
本)が存在する。
【0031】内部フリップフロップ読み書きポートP1
(例えば32本)は、バスドライバ23を通してバス1
0に接続されており、CPU1からFPGA20内部の
フリップフロップ状態をセーブ/リストアすることが可
能である。FPGA20のプログラム書き込みポートP
2は、バスレシーバ22を通してバス10に接続されて
おり、CPU1から各FPGA20のプログラムを実行
時に入れ替えすることが可能である。データ入出力ポー
トP3は、ラッチ21を通してバス10に接続されてお
り、ある論理パーティションをエミュレーションするた
めの入力信号値をCPU1からMMU5を介して与え、
あるいは評価結果を読み取ることができる。前記3つの
ポートを通してのFPGAアレイ4へのアクセスは、物
理パート0、物理パート1それぞれ独立に行うことが可
能である。
【0032】例えば、FPGA20の論理データ入出力
ポート256本の内128本は、1つの物理パートを構
成する2つのFPGA相互配線として接続されており、
残りの128本のポート(FPGA2つで256本)が
ラッチ21に接続されている。バス10を8ビット単位
に異なったアドレスでアクセスするバスとするならば、
論理データ入出力ポートは実際には32の異なった物理
アドレスでバス10を開始プロセッサからアクセスされ
る。例えば、ここでは、16進数で0xf000から0
xf01f番地が物理パート0の物理アドレスであり、
0xf800から0xf81f番地が物理パート1の入
出力ポートの物理アドレスであるとする。
【0033】FPGAアレイ4のバス10上でのアドレ
ス割り振りは、図3の物理アドレス空間に示す通りであ
る。物理アドレス空間で、内部状態R/W領域は、図2
の信号線17を通して、プログラムロード領域は、図2
の信号線16を通して、エミュレーション領域は、図2
の信号線15を通してアクセスされる。
【0034】以下、本実施例の論理シミュレーション装
置の動作について説明を行う。まず、シミュレーション
対象の論理回路について説明する。図4において、30
がシミュレーション対象全体の論理回路である。31は
該シミュレーション対象全体の論理回路の入力信号であ
り、32は該シミュレーション対象全体の論理回路の出
力信号である。シミュレーションは、入力信号31に対
して予め定められた時系列のテストベクタを与え、出力
信号32より出力される信号値と期待値とを、あるいは
テストベクタを与えた後の内部状態の期待値とを比較す
ることによって実行される。
【0035】上記シミュレーション対象全体の論理回路
30は予め、論理回路接続情報(ネットリストなど)に
コンパイルされた上で、図4に示すように、FPGAア
レイ4の物理エミュレーションパートでエミュレート可
能な大きさのパートに分割される。なお、シミュレーシ
ョンをより高速に実行するためには、各パートを入出力
数がなるべく少なくなるように分割して構成すると効果
的である。
【0036】ここで、論理シミュレーションを実行する
にあたって、すなわちVHDL,Verilogといっ
たハードウェア記述言語でプログラムとして記述された
ハードウェアの動作を仮想的に実行するにあたって、上
記のようなハードウェア記述言語で書かれたプログラム
を論理回路接続情報に変換する方法としては、既知もの
を用いれば良い。例えば、シノプシス社により提供され
ている変換ツールを用ることによって実施できる。な
お、この方法については、当業者にとっては明白なもの
であるので、ここでの詳細な説明は省略する。
【0037】次に、メモリ空間の割当に関して説明す
る。各パートに対応する論理パートi(i=0〜n)の
領域は、図3に示すように論理アドレス空間に確保され
る。論理パートは、フラグ、内部状態退避領域、プログ
ラム領域、信号値バッファ領域、ファンアウト領域、論
理エミュレーション空間からなる。
【0038】フラグは、対応する論理パートの入力信号
値バッファが書き換えられその論理パートの評価が必要
となった時セットされる(すなわち、アクティブにされ
る)領域である。
【0039】各パートの論理回路は、等価なFPGAの
プログラムに変換され各論理パートのプログラム領域に
格納される。信号値バッファは、各パートの入出力信号
線の値を格納する。出力信号については、ファンアウト
領域に伝搬先のバッファのアドレスを記憶しておく。出
力信号値バッファおよびファンアウト領域は、図5
(a)に示すようなテーブルとして設けても良い。その
他にも種々の構成が考えられ、例えば(b)のようにフ
ァンアウト領域をリスト構造にしても良いし、(c)の
ようにさらに出力信号値バッファも含んでリスト構造に
しても良い。
【0040】内部状態退避領域は、各論理パートが含む
フリップフロップの状態(内部状態)をセーブするのに
用いられる。エミュレーション空間は、MMU5により
ダイナミックに物理パートのエミュレーション領域にマ
ッピングされる部分で、入力信号を書き込むと各パート
の出力値がFPGAアレイ4で評価され、出力からその
結果を読み出すことができる。
【0041】論理アドレス空間は、MMU5で物理アド
レスにマッピングされるマップト領域と物理メモリ、物
理FPGAアレイ4が直接アクセス可能なアンマップト
領域よりなる。
【0042】次に、シミュレーション制御について説明
する。本実施例では、各論理パートの評価は、イベント
ドリブン法で行われる。すなわち、図6および図7に示
す制御プログラムフローに示すように、まずテストベク
タを読み込み、各論理パートの入力信号値バッファに書
き込むことによりフラグをアクティブにする(図6のス
テップ3)。
【0043】次に、アクティブとなった論理パートの評
価を行う。アクティブとなった論理パートの評価は、入
力信号値バッファ領域エミュレーション空間の入力領域
へコピーし(ステップ4)、後に出力領域を読みだす
(ステップ5)。
【0044】そして、評価により出力信号が変化すると
伝搬先の入力信号値バッファを書き換えると共に、その
論理パートをアクティブにする(図7のステップ7)。
このようにして、論理パートの評価、信号の伝搬先のア
クティブ化の繰り返しを、信号値が変化しなくなるまで
繰り返し、さらに次の時刻のテストベクトルの読みだし
セットを行うという手順を繰り返すことによって、シミ
ュレーションを進めていく。
【0045】ここに、論理パートは通常数十個以上存在
する一方、物理パートは本実施例では2つしかないた
め、本シミュレーション装置では、MMU5を用いて、
上記制御中にダイナミックに、論理パートのエミュレー
ション空間を物理パートのエミュレーション領域に割り
付ける。
【0046】以下、このダイナミックな割り付けついて
説明する。本実施例では、前述のシミュレーション制御
中に、未だ割り付けられていない論理パートのエミュレ
ーション空間へのコピーを行うと(図6のステップ
4)、MMU5がページフォールトのトラップ処理をC
PU1に通知し、図8に示すようなオペレーティングシ
ステム(OS)の中にあるトラップ制御ルーチンが走り
出す。
【0047】例えば、論理パート100への書き込みが
ページフォールトを発生する場合を考える。論理パート
100のエミュレーション空間は、論理アドレス0x4
000から0x4020に割り振られているものとす
る。しかしながら、ページフォールトを発生したという
ことは、0x4000から0x4020に論理パートが
割り振られていないことを意味する。物理パートが割り
振られているか否かはMMUが判定し、割り振られてい
る場合にはMMUが0x4000から0x4020の論
理アドレスを物理アドレス0xf000から0xf01
fまたは0xf800から0xf81fに変換する。そ
うでない場合にはトラップを発生する。
【0048】トラップ制御ルーチンでは、まず、2つの
物理パートの1つを選択し、アンマップト領域を通して
物理パートの内部状態を読み出し、対応する論理パート
の内部状態退避領域へセーブする(図8のステップ2
1)。その後、ページフォールトを発生した論理パート
のプログラム/内部状態をアンマップト領域を通して物
理パートにロード/リストアし、物理エミュレーション
領域を論理エミュレーション空間に割り付けるよう、M
MU5をセットする(ステップ23)。
【0049】例えば、物理パートの0の入出力ポートの
物理アドレス0xf000から0xf01fに論理アド
レス0x4000から0x401fを変換するようにM
MU5をセットする。
【0050】すなわち、本発明では、従来のように論理
パートとこれをロードするFPGAとの対応が予め固定
的に決定されているわけではなく、シミュレーション実
行時に、FPGAに割り付けられていない状態にある論
理パートのうち、評価の必要のあるものが生じた場合、
該評価する必要の生じた後に、割り付けるFPGAを選
択し、そのFPGAアレイに前記論理パートの情報を
(ダイナミックに)にロードする。なお、評価の必要の
ある論理パートがFPGAの数を越えている場合は、先
に評価する論理パートも、適宜選択している。
【0051】以上、本発明の一実施例について説明して
きたが、本実施例では、上述したようにハードウェアに
よってシミュレーションを行うので演算速度を高速化で
きるとともに、シミュレーション対象の論理回路量に相
当する論理プログラム素子を持つ必要がないためハード
ウェア量が少なくてすむわけである。また、論理回路の
性質上常にシステム全体の全ての論理回路が動作してい
るわけではないので論理プログラム素子のプログラム入
れ替え、状態入れ替えのオーバヘッドはハードウェア量
削減の効果に比べて小さいという利点もある。
【0052】ここで、本実施例では、フラグを内部状態
退避領域に持たせたが、論理アドレスと物理アドレスの
対応付けを記憶しているページテーブルの中のページの
属性データとして持たせても良い。また、ページテーブ
ル中にページ属性としての書き込みビット(ページに書
き込みがあったことを示すフラグ)をそのまま使っても
良い。つまり、論理パートの信号値バッファの入力領域
に1ページを割り振れば、そのページに書き込むこと
が、評価の必要性を示すことになるからである。
【0053】パートの評価の順番によっては、無駄な評
価が増えてしまう場合があるので、フラグを2ビット
(例えば、F1,F2)用意し、あるフェーズではF1
からアクティブなパートを探し評価を行い、そこでアク
ティブを担ったパートはF2側に登録、次のフェーズで
はF1とF2の役割を入れ換えるという手順で行っても
良い。
【0054】また、本実施例では、説明を簡単にするた
めに物理パート数を2、各物理パートは2個のFPGA
で実現した例に沿って説明を行ったが、物理パート数、
FPGA個数を増やすことにより、論理パートと物理パ
ートのマッピングの回数が減りシミュレーションが高速
になる。
【0055】論理パートの評価の制御には、単純なイベ
ントドリブン法を用いたが、レベルソート法を取り入
れ、できる限りパート間の評価順序をスタティックに決
定することにより、評価の回数を減らすことも可能であ
る。また、論理回路のシミュレーション以外の応用で
は、プログラム中の関数呼び出しをトリガとして評価の
必要性を判断しても良い。
【0056】また、本実施例では論理パートに内部状態
退避領域、プログラム領域を設けたが、これを設けずオ
ペレーティングシステムにより内部状態を補助記憶装置
(例えばDISK装置)へ直接セーブ、リストアし、プ
ログラムをロードするようにしても良い。また、オペレ
ーティングシステム中のDISKバッファメモリ等を介
して行っても良い。
【0057】本実施例では、論理回路のフリップフロッ
プもFPGA内の論理プリミティブへ割り付けたが、フ
リップフロップはメモリ上に設け、組み合わせ回路のみ
FPGAアレイに割り付けることも可能である。この場
合には内部状態のセーブ/リストアは必要なくなる。但
し、シミュレーション対象によっては、論理回路の分割
の際のパートの入出力信号線数が増大し、FPGAのピ
ン数がネックとなり易く、FPGA内部の論理プリミテ
ィブが充分利用できなくなる可能性がある。
【0058】なお、本実施例では、パートの評価を全て
FPGAによるエミュレーションで実現する例で説明を
行ったが、いくつかのパートはソフトウェアによるシミ
ュレータで評価を行っても良い。例えば、論理回路中に
頻繁に出現するメモリ、アダー、フローティング演算機
等はソフトウェアでCPU中のリソースを用いて評価を
行った方が効率が良い。また、領域間の高速なコピーの
ためには、CPUの中にDMAを持つことが有効であ
る。
【0059】ここに、本実施例では、論理シミュレーシ
ョンの高速実行についてのみ述べたが、一般のプログラ
ムの中で頻繁に使われ処理時間のかかるルーチンを論理
回路にコンパイルしてしまい本発明の論理シミュレーシ
ョン装置で実行することも絶大な効果がある。ここで、
プログラムの1部あるいは全部を論理回路接続情報に変
換する方法については、既知もの、例えば先に掲げたPe
ter M.Athanas らによる論文に開示されている方法を用
いれば良い。なお、この方法については、当業者にとっ
ては明白なものであるので、ここでの詳細な説明は省略
する。また、本発明は上述した各実施例に限定されるも
のではなく、その要旨を逸脱しない範囲で、種々変形し
て実施することができる。
【0060】
【発明の効果】本発明によれば、プログラムの一部また
は全体を論理回路にコンパイルして得られた専用演算機
の論理回路接続情報(ネットリストなど)を複数個の部
分論理回路接続情報(論理パート)に分割し、前記プロ
グラムの実行過程で評価する必要の生じた論理回路を含
む前記部分論理回路接続情報を、複数の論理プログラマ
ブル素子(FPGA)のいずれかに動的にロードするよ
うにした。
【0061】これによって、専用演算機として用いる論
理プログラマブル素子がプログラムの規模に比較してご
く少数であるにもかかわらず、演算速度を高速化した電
子計算機を提供することができる。
【図面の簡単な説明】
【図1】本発明を適用した論理シミュレーション装置の
要部の概略構成図
【図2】図1のFPGAアレイの詳細な構成図
【図3】メモリ空間の割当例を示す図
【図4】シミュレーション対象の論理回路を複数のパー
トに分割した様子を説明するための図
【図5】出力信号値バッファおよびファンアウト領域の
データ構造を示す図
【図6】イベントドリブン方を用いたシミュレーション
制御プログラムの一例を示すフローチャート
【図7】図6のフローチャートの続きの部分を示すフロ
ーチャート
【図8】ページフォールト制御ルーチンの一例を示すフ
ローチャート
【符号の説明】
1…プロセッサ(CPU) 2…主記憶装置 3…補助記憶装置 4…論理プログラマブル素子アレイ(FPGAアレイ) 5…メモリ管理装置(MMU) 11〜17…バス 21…ラッチ 22…バスレシーバ 23…バスドライバ

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】プロセッサおよび複数の電気的書換可能な
    論理プログラマブル素子を有し、前記プロセッサが、プ
    ログラムにて記述された処理を実行するとともに、前記
    プログラムの少なくとも一部を前記論理プログラマブル
    素子に実行させる電子計算機において、 前記プログラムの少なくとも一部を論理回路接続情報に
    コンパイルするコンパイル手段と、 前記論理回路接続情報を複数の部分論理回路接続情報に
    分割する分割手段と、 前記プログラムの実行中に評価する必要の生じた論理回
    路を含む前記部分論理回路接続情報を、該評価する必要
    の生じた後に選択したいずれかの前記論理プログラマブ
    ル素子へ動的にロードするロード手段とを備えることを
    特徴とする電子計算機。
  2. 【請求項2】前記部分論理回路接続情報に含まれる入出
    力ポートを前記プロセッサの論理アドレス空間に割り付
    ける割付手段をさらに備えることを特徴とする請求項1
    に記載の電子計算機。
  3. 【請求項3】前記入出力ポートへの信号線値の書き込み
    時のトラップに応答して前記プロセッサによって行われ
    る例外処理手続きを用いて、前記論理プログラマブル素
    子の入出力ポートの論理アドレスを動的に変更する変更
    手段をさらに備えることを特徴とする請求項2に記載の
    電子計算機。
JP5228625A 1993-09-14 1993-09-14 電子計算機 Pending JPH0784754A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5228625A JPH0784754A (ja) 1993-09-14 1993-09-14 電子計算機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5228625A JPH0784754A (ja) 1993-09-14 1993-09-14 電子計算機

Publications (1)

Publication Number Publication Date
JPH0784754A true JPH0784754A (ja) 1995-03-31

Family

ID=16879278

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5228625A Pending JPH0784754A (ja) 1993-09-14 1993-09-14 電子計算機

Country Status (1)

Country Link
JP (1) JPH0784754A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012252712A (ja) * 1998-11-20 2012-12-20 Altera Corp 再構成可能なプログラマブルロジックデバイスコンピュータシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012252712A (ja) * 1998-11-20 2012-12-20 Altera Corp 再構成可能なプログラマブルロジックデバイスコンピュータシステム

Similar Documents

Publication Publication Date Title
US6615167B1 (en) Processor-independent system-on-chip verification for embedded processor systems
US7769577B2 (en) Hardware accelerator with a single partition for latches and combinational logic
EP1349092A2 (en) A hardware acceleration system for logic simulation
Kumar et al. A framework for hardware/software codesign
US8365111B2 (en) Data driven logic simulation
JPH07334384A (ja) 多重プロセッサ・エミュレーション・システム
US20070129924A1 (en) Partitioning of tasks for execution by a VLIW hardware acceleration system
EP1284459A2 (en) Method and apparatus for simulation processor
US11934825B2 (en) Event-driven design simulation
US10331830B1 (en) Heterogeneous logic gate simulation using SIMD instructions
CN102054088A (zh) 用于原型制作片上系统设计的虚拟平台
US11275582B2 (en) Event-driven design simulation
Wilcox Digital logic simulation at the gate and functional level.
Biancolin et al. Accessible, FPGA resource-optimized simulation of multiclock systems in firesim
JP2006268873A (ja) 機能シミュレーションのためのハードウェア・アクセラレーション・システム
Banerjee et al. Design aware scheduling of dynamic testbench controlled design element accesses in FPGA-based HW/SW co-simulation systems for fast functional verification
US10409624B1 (en) Data array compaction in an emulation system
JPH0784754A (ja) 電子計算機
JP3212709B2 (ja) ロジックシミュレーション装置
JP2000057203A (ja) ネットリスト変換の使用によるレベル化コンパイル済みコ―ドのシミュレ―ション方法
Bellows High-visibility debug-by-design for FPGA platforms
Banerjee et al. Optimized simulation acceleration with partial testbench evaluation
CN116302767A (zh) 基于numa架构的nmp模拟器及其操作方法
Hsieh et al. Parallel event-driven MOS timing simulator on distributed memory multiprocessors
KR20050061268A (ko) 대용량메모리와 컴파일 회피를 이용한 하드웨어기반검증의 성능 향상 장치 및 이를 이용한 설계 검증 방법