JP2003216678A - データ処理システムおよび設計システム - Google Patents
データ処理システムおよび設計システムInfo
- Publication number
- JP2003216678A JP2003216678A JP2002103219A JP2002103219A JP2003216678A JP 2003216678 A JP2003216678 A JP 2003216678A JP 2002103219 A JP2002103219 A JP 2002103219A JP 2002103219 A JP2002103219 A JP 2002103219A JP 2003216678 A JP2003216678 A JP 2003216678A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- dedicated
- instruction set
- cycle
- library
- 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.)
- Granted
Links
Landscapes
- Advance Control (AREA)
Abstract
ミュレーションが行えるシミュレータを提供する。 【解決手段】 命令セットをサイクルに分解したモデル
でシミュレートすることができるISS本体61を備え
たシミュレータ60を提供する。このシミュレータ60
は、C言語などの高級言語で記述された高速実行可能な
シミュレータとなり、従来のRTLベースのシミュレー
タと同等のサイクル単位での精度を維持しつつ、シミュ
レーション速度を数百倍高速にできるシミュレータある
いはシミュレータとしての機能を有するデータ処理シス
テムを提供できる。
Description
る動作をシミュレーションするシステムに関するもので
ある。
して、1990年代にレジスタベースの記述言語RTL
が普及した。VerilogやVHDLが代表的な言語
である。これらのRTLは、レジスタをハードウェアの
ベースとしたレジスタ間の信号伝達や信号処理を、プラ
スやマイナスや乗算や除算といった算術演算、ANDや
ORといった論理演算、「IF THEN ELSE」
といった条件文や代入文により論理的に記述することに
より設計することができる。したがって、RTLによ
り、その当時としては論理回路の設計の抽象度を向上す
ることができ、プロセッサなどの設計効率を高めること
ができた。
ルと称される、一層抽象度を高めた設計言語が使用され
るようになってきた。これらの言語はVerilogや
VHDLといったレジスタベースの言語の発展系とも考
えられ、実際、VerilogやVHDLには動作レベ
ルの記述形式が包含されている。
という概念は無く、算術演算、論理演算、条件文、代入
文といった記述に集約される。したがって、一般のソフ
トウェア記述言語もその範疇であり、1990年代後半
からはC言語によるハードウェア設計が模索され始め
た。C言語であれば、より一般的でありソフトウェア資
源が多いことに加え、レジスタベースの言語は、たとえ
それを動作記述に絞ったとしても、シミュレーション速
度が遅い。たとえば、C言語で記述された仕様と、RT
Lで記述された仕様では、シミュレーション速度は、C
言語の方が数1000倍から10万倍程度速く、速度の
差が非常に大きい。このシミュレーション速度の違い
は、RTLはハードウェアを設計するための言語であ
り、C言語はソフトウェアを設計するための言語である
所に起因する。
記述するC言語でプロセッサにより実行するアプリケー
ションの仕様を初期設計し、最終的にはハードウェアを
記述するRTLに変換してプロセッサの設計を検証する
方式が生まれてきている。さらに、C言語により与えら
れた仕様を実現するプロセッサを開発および設計する際
に、その仕様を直にハードウェアに変換するのではな
く、仕様の一部を専用プロセッサを介してハードウェア
化する方式が提案されている。本願の出願人は、たとえ
ば、特開2000−207202号にカスタマイズ可能
な専用命令を装着できるデータ処理装置を開示してい
る。このようなプロセッサの設計方式では、命令セット
(インストラクションセット)ベースの記述、あるいは
アセンブラベースの記述とも言える記述がC言語とRT
Lとの間に存在することになる。命令セットによる記述
は、単に論理ベースの記述でしかないC言語による仕様
に比べるとより正確にプロセッサにおける実行状況をシ
ミュレートできる。したがって、命令形式での記述(命
令レベル)のシミュレータが近年開発されており、イン
ストラクションセットシミュレータ(ISS)と称され
ている。
とえば、アセンブラ命令の実行をシミュレーションする
ものであり、ハードウェアそのものをシミュレーション
するものではなかった。したがって、入出力(IO)信
号のリード・ライトや割り込み等のリアルタイムの処理
に関しては、それらの機能が実行されるか否かという点
では正しいシミュレーションができても、必ずしもハー
ドウェア的に正しいシミュレーションが行われているわ
けではない。たとえば、クロックサイクルのレベルでは
プロセッサの実動作から多少外れるシミュレーションが
行われることになる。本来、ISSは、命令列のシミュ
レーションであるのでそれでも構わないのであるが、シ
ミュレーションの対象となっているアプリケーションプ
ログラムがプロセッサ上で動作する際のハードウェアを
シミュレーションしようとする観点からすればそれでは
不十分である。したがって、現状のISSは、シミュレ
ータ自体はC言語で記述することができるので命令セッ
トベースの実行状況を高速でシミュレートできるのであ
るが、ハードウェアシミュレーションのツールとしては
不十分である。
ンを行うためには、やはりRTLベースのシミュレータ
が必要となる。しかしながら、上述したように、RTL
によるシミュレーションは速度が非常に遅く、ハードウ
ェアレベルでのシミュレーションがプロセッサを設計す
る期間を短縮しようとしたときの大きなボトルネックと
なっている。
て、「CtoRTL」と称されている動作合成ツールが
利用可能になっており、設計の自動化はRTLからCへ
と進みつつある現状では、シミュレーション検証の問題
を解決することが重要となっている。
したC言語を入力として、クロック周波数をパラメータ
として与えることにより、レジスタで構成されたRTL
を出力するツールである。入力となるC言語には、上述
したように、クロックもしくはサイクルという概念は無
い。そのため、そこに与えられたクロック周波数に応じ
て、レジスタを割り当てて仕様を満足させる解を得るよ
うになっている。その際、仕様に記述されている算術演
算や論理演算を実行する演算器を割り当てる必要があ
り、いかに少ない演算器で、C言語で与えられた仕様通
りの動作を実現するかというリソースシェアリングと、
仕様にて記述された実行順序をいかに少ないクロック数
で実現するかのスケジューリングがこの合成ツールの決
め手であると言える。したがって、CtoRTLツール
のパフォーマンスを評価あるいは検証することも重要と
なっている。また、C言語からRTLを自動合成するの
で、C言語の仕様がそのままRTL化されてしまい、C
言語では冗長なビットがそのまま自動合成に反映されて
しまうという問題もある。
を用いたアプリケーションプログラムにおいては、専用
プロセッサのデータパス系を用いて特定の処理を行う専
用命令を汎用命令と共に装着することになる。しかしな
がら、従来のISSでは機能的にはシミュレートできて
もハードウェア的にはシミュレートできない。すなわ
ち、データパス系の命令を実行する際に消費するクロッ
ク数と汎用命令との関係が不明であり、従来のISSで
はデータパス系の命令(専用命令)の機能を確認できる
だけである。
ウェアシミュレーションを行うことができる新しいシミ
ュレータを提供することを目的としている。さらに、デ
ータパス系の専用命令と、汎用プロセッサを動作させる
汎用命令との実行状況をハードウェアレベルで高速にシ
ミュレーションできるシミュレータを提供することを目
的としている。
によるシミュレータはハードウェアを記述するためにク
ロックサイクルという概念があるが、これに対し、C言
語によるシミュレータはクロックという概念がなく動作
を記述できる点が利点になっている。これに対し、本発
明においては、ISSでシミュレートされる命令セット
をサイクルベースに分割することにより、ハードウェア
をシミュレーションするツールとしてISSを利用でき
るようにしている。このサイクルレベルのISSは、C
言語そのもののシミュレーションよりは速度が低下する
とは言うものの、シミュレーション速度をRTLベース
のシミュレータの数百倍から数千倍程度まで高速化で
き、さらに、RTLでシミュレーションするのと同等の
結果が得られる。このため、プロセッサの設計効率を大
幅に改善することが可能となる。
のパイプラインステージにより実行される複数の命令セ
ットを備えたアプリケーションプログラムのプロセッサ
の設計方法あるいは設計手法は、アプリケーションプロ
グラムの動作をパイプラインステージのサイクルでシミ
ュレートするサイクルレベル・シミュレーション工程を
有する。この設計方法は、命令セットの命令サイクルが
複数のパイプラインステージにより実行される命令セッ
トを複数備えたアプリケーションプログラムのプロセッ
サにおける動作をシミュレート可能なデータ処理システ
ムであって、アプリケーションプログラムの動作をパイ
プラインステージのサイクルでシミュレートする手段
(サイクルレベル・シミュレーション手段であり、サイ
クルレベル・シミュレータ本体あるいはISS本体とし
て説明している)を有するデータ処理システムで実行す
ることができる。このデータ処理システムは、本明細書
の実施の形態ではシミュレータあるいはシミュレーショ
ンシステムとして説明されているものである。このデー
タ処理システムを採用することにより、LSIを自動設
計するための一連の自動設計システムを提供することが
可能となる。また、本発明のシミュレータは、命令サイ
クルが複数のパイプラインステージにより実行される複
数の命令セットを備えたアプリケーションプログラムの
プロセッサにおける動作をシミュレートするプログラム
であって、アプリケーションプログラムの動作をパイプ
ラインステージのサイクルでシミュレートするサイクル
レベル・シミュレーション処理を実行するための命令を
有するプログラムとして提供することが可能であり、C
D−ROMなどの適当な記録媒体に記録したり、コンピ
ュータネットワークなどの媒体を通じて供給することが
できる。
ュレーションモデルが記述かつ管理されていた。これに
対し、本発明では、命令セットをパイプラインのサイク
ル単位に分解し、命令セットをサイクル単位にモデル化
して管理する。命令セットをサイクル単位にモデル化す
るのは、サイクルレベル・シミュレーション工程あるい
は手段で行っても良いし、あるいは、事前にコンパイラ
ーなどで命令セットをサイクル単位に分解したシミュレ
ーションモデルを形成しておき、それを実行しても良
い。本発明では、サイクル単位で命令セットの実行と、
それに起因する、あるいはしないその他の処理、たとえ
ば、割り込み動作とが正しくモデル化して管理できる。
したがって、RTLでなくても、C言語あるいはその他
の高級言語によるシミュレータにより、ハードウェアの
シミュレーションをサイクルベースで正しく行うことが
可能となる。このため、高速でハードウェアをシミュレ
ーションできる。
クル、すなわち、フェッチ、デコード、実行およびライ
トバックを、それに対応した各々のパイプラインステー
ジ毎(パイプラインステージのサイクル毎)の処理に分
けてシミュレートする。各命令の各パイプラインステー
ジにおける処理を個別にモデル化しても良い。しかしな
がら、これらの各命令、あるいは各パイプラインステー
ジの処理で共通なものは共通に管理できるようにモデル
化した方がハードウェア資源を節約でき、シミュレータ
用のプログラムを短期間に低コストで開発することがで
きる。
記述部分に別けることができる。ひとつは、その命令セ
ットの固有の記述であり、例えば、AND命令の1つの
パイプラインステージである実行(EXECUTIO
N)サイクルの機能(機構および/またはタイミングな
ど)を記述する部分である。もうひとつは、各命令セッ
トの各パイプラインステージを実行する際の共通な記述
であり、例えば、割り込み信号に対する処置に関する記
述である。そこで、本発明においては、サイクル単位で
シミュレートする前に、命令セットの各パイプラインス
テージをサイクルレベルでシミュレートする手段(IS
S本体)あるいはそこにおける処理で管理可能な第1の
情報に変換するライブラリを設ける。これにより、命令
セットあるいはその命令セットのパイプラインステージ
が与えられれば、ISS本体における処理あるいはIS
S本体で管理されるモデルはライブラリで与えられる。
また、ISS本体あるいはその処理では、各パイプライ
ンステージに共通する処理あるいはモデルを記述してお
き、その共通の処理に関わる第2の情報に基づき第1の
情報によりシミュレートするようにすると、第1の情報
は個々のパイプラインステージの処理のうち、固有の処
理に対応する情報に限定できる。
ンする際に、命令セットをサイクル単位に分解され、サ
イクルレベル・シミュレーション手段であるISS本体
にはサイクル単位に時間管理する機能を設けられる。各
サイクルにおいて命令固有な部分は、命令セットのサイ
クル毎の処理記述あるいはモデルとしてライブラリに記
述される。また、各サイクルにおいて割り込み等の外部
信号に対する共通の処理記述あるいはモデルはISS本
体に記述される。したがって、簡易な構成のハードウェ
アで、シミュレートできるシステムあるいは環境を提供
できる。そして、アプリケーションプログラムが供給さ
れると、それをシミュレーションの対象となるプロセッ
サで実行されたときのように、個々の命令セットを個々
のパイプラインステージに分割し、サイクル単位でシミ
ュレートすることができる。また、命令サイクルが複数
のパイプラインステージにより実行される複数の命令セ
ットを備えたアプリケーションプログラムを、命令セッ
トが、パイプラインステージに分割された記述で表され
たシミュレーションモデルに変換する処理を実行可能な
命令を有するプログラムにより、アプリケーションプロ
グラムを本発明のISS本体に適したシミュレーション
モデルに変換してシミュレーションの時間をさらに短縮
するようにしても良い。
ラムとは、ソースプログラム、オブジェクトプログラム
(オブジェクトコード)あるいは中間段階のプログラム
などの、プロセッサに対して動作あるいは処理を指示す
る命令セットを含むすべてのレベルのプログラムを意味
し、シミュレーションの対象となるすべてのプログラム
を含むものである。
が専用のデータパスを備えている場合は、そのデータパ
スを用いた処理と、汎用プロセッサにおけるパイプライ
ンステージの処理とでは、サイクルの管理が異なる。し
たがって、プロセッサが、汎用処理を実行可能な汎用処
理部および特定のデータ処理に特化した専用処理部を備
えている場合は、アプリケーションプログラムに含まれ
る命令セットのうち、汎用処理部における処理を規定す
る汎用命令セットが、命令サイクルが複数のパイプライ
ンステージにより実行される命令セットであり、汎用命
令セットの各パイプラインステージをシミュレートする
手段で管理可能な情報に変換する汎用命令ライブラリ
と、アプリケーションプログラムに含まれる命令セット
のうち、専用処理部における処理を規定する専用命令セ
ットをシミュレートする手段で管理可能な情報に変換す
る専用命令ライブラリとを設けることが望ましい。汎用
命令セットと専用命令セットとを、異なる変換処理(第
1の変換処理および第2の変換処理)でそれぞれ異なる
ライブラリを用いて変換し、サイクルレベルでシミュレ
ーションを行う手段(ISS本体)に提供することによ
り、汎用処理ユニットと専用処理ユニットとを有するプ
ロセッサの動作を、パイプライン処理をベースにモデル
化できる。これらの変換を行うライブラリプログラムは
1つのプログラムとして提供しても良いが、異なるライ
ブラリプログラムとして提供することにより、汎用命令
セットについてはシミュレータ提供者が供給し、専用命
令セットについては専用処理部を設計したユーザが供給
するといった体制を取ることができる。
の処理を適切にモデル化することができる。専用命令ラ
イブラリから専用命令セットにより消費されるサイクル
の情報を何らかの信号あるいは情報としてシミュレート
する手段であるISS本体あるいはその処理に返すこと
により、専用処理部の実行状態をISS本体におけるシ
ミュレーションに反映できる。また、専用命令ライブラ
リは専用処理部の状態をサイクルの単位でISS本体あ
るいはその処理に返すことによっても専用処理部の状態
をシミュレーションに反映できる。
高速にハードウェアをシミュレーションできるツールを
提供することができる。したがって、C言語で記述され
た仕様を実現し、高速で処理可能な複数の専用回路を用
いた分散処理タイプのシステムLSIをさらに短期間
に、経済的に設計し供給することができる。そして、プ
ロセッサの設計・開発において、C言語からRTLに移
行する中間の段階で、サイクルあるいはクロックの概念
を持たせながらシミュレーションすることができる。こ
の新たな設計インフラストラクチャ・レイヤの導入はシ
ミュレーション速度を速めて設計の効率化を図るだけで
なく、他にも様々なメリットがある。
ットと専用命令セットで駆動されるプロセッサにおい
て、専用命令セットで駆動される専用処理部(専用目的
処理部あるいは専用回路部)の動作をRTLではなく、
C言語レベルに近い状態でシミュレーションすることが
できることである。加えて、サイクルベースのISS本
体で管理できる情報に変換されていれば良いので、C言
語そのものである必要はなく、専用処理部の動作を記述
するのにさらに適した言語があれば、C言語の仕様をそ
の新たな言語に変換してからコンパイルして専用命令ラ
イブラリを作成することができる。
ポピュラーなANSI−Cが使用されているが、記述で
きる変数のデータ長が限定されており、16ビット、3
2ビットおよび64ビットに限定される。これに対し、
ユーザ命令として実装される仕様では、これらのデータ
長が常に採用されることは少なく、24ビットあればよ
いなどの仕様はごく普通である。ANSI−Cでは、こ
のような仕様を忠実に再現することはできず、結局、こ
のような仕様を盛り込んだRTLのシミュレーションと
は異なった結果をもたらす可能性があり、最終的にはR
TLのシミュレーションを繰り返す必要がでてきてしま
う。しかしながら、他の言語、たとえばC++であれ
ば、クラスライブラリを使用して変数の型宣言を行うこ
とによりデータ長はバリアブルになる。したがって、C
言語の仕様をC++に変換してコンパイルし、専用命令
ライブラリを作成すれば、冗長なビットを削除すること
が可能となり、RTLと同レベルのシミュレーションを
サイクルベースのISS本体およびそれを備えたシミュ
レーションシステムで高速に実行することが可能とな
る。
の評価のために、あるいは他の目的で、プロセッサで実
行されない疑似命令セット(擬似命令セット)をアプリ
ケーションプログラムに追加し、サイクルベースのIS
Sシミュレーションのシミュレーション対象にすること
ができることである。プロセッサで実行されない疑似命
令セットは、たとえば、ISS本体でサイクル数をカウ
ントしないで処理を行うことを命令するものであり、疑
似命令セットをシミュレータが管理可能な情報に変換す
る疑似命令ライブラリを、上記の専用命令ライブラリと
同じレベルで用意すればサイクルベースのISS本体あ
るいはそれを用いたシミュレーションシステムに組み込
むことができる。動作を評価(テストあるいはデバッ
ク)する疑似命令セットとしては、データファイルの入
出力をモニタする処理を実行させる命令がある。
段を利用したシミュレーションでは専用処理部を備えた
プロセッサをシミュレーションする作業を、幾つかの段
階に分けることができる。第1のシミュレーション段階
は、C言語などで与えられた仕様から専用命令で実行す
る部分を除かないで、ISS、できればサイクルベース
のISS本体でシミュレートすることである。この段階
で、疑似命令セットを導入しておけば、それ以降の評価
の基準となる入力データや出力期待値などを得ることが
できる。次の第2のシミュレーション段階は、仕様から
専用処理部で実行する部分を抽出して専用命令セットに
置き換え、一方、その抽出した部分から専用命令ライブ
ラリを作成しておいて、本発明のサイクルベースのIS
S本体でシミュレートすることである。本発明のサイク
ルベースのISS本体であれば、専用処理部も含めてサ
イクルベースでシミュレートできるので、この段階でプ
ロセッサの開発の大部分を行うことができる。また、疑
似命令セットを利用し、この段階で得られるデータを、
先に求めた入力データや出力期待値と照らし合わせるこ
とにより、大きな設計上の間違えを犯すことなくスムー
ズに短時間でプロセッサを開発することができる。
て、専用命令ライブラリをRTL化した後に、サイクル
ベースのISS本体でシミュレートする段階を設けるこ
とも可能である。実際にRTLに変換したときの機能を
確認することが可能であり、汎用処理部の側もサイクル
ベースのISS本体で稼動させられるので、RTLとマ
ッチングさせて高精度のシミュレーションを行うことが
できる。
についてさらに説明する。図1に、特定のデータ処理に
特化したデータパス部20を備えた専用処理ユニット
(専用命令実行ユニットあるいは専用目的処理ユニッ
ト、以降ではVU)1と、汎用的な構成の汎用処理ユニ
ット(汎用命令実行ユニット、汎用目的処理ユニットあ
るいはプロセスユニット、以降ではPU)2とを備えた
データ処理装置10の概要を示してある。このデータ処
理装置10は、専用回路を備えたプログラマブルなプロ
セッサであり、実行形式の制御プログラム(オブジェク
トプログラム、オブジェクトコード、マイクロプログラ
ムコード)4aを内蔵したコードRAM4から命令をフ
ェッチし、専用データ処理ユニット1および汎用データ
処理ユニット2にデコードされた制御信号を提供するフ
ェッチユニット5を備えている。このフェッチユニット
5は、前の命令あるいはステートレジスタ6の状態、割
り込み信号φiなどによって決まる所定のコードRAM
4の所定のアドレスから命令をフェッチするフェッチ部
7と、フェッチされた専用命令あるいは汎用命令(一般
命令)をデコードするデコード部8とを備えている。デ
コード部8は、専用命令をデコードした制御信号(デコ
ーデド・コントロール・シグナル;Decoded Control Si
gnal)φvおよび汎用命令をデコードした制御信号φp
を、専用データ処理ユニットVU1および汎用データ処
理ユニットPU2にそれぞれ供給する。さらに、PU2
からは実行状態を示すステータス信号φsが返えされ、
PU2およびVU1の状態がステートレジスタ6に反映
される。
ジスタおよび演算ユニット(ALU)などから構成され
る汎用性の高い実行ユニット11を備えており、実行し
た結果をデータRAM15などに出力しながら汎用処理
を次々と実行できる構成となっている。すなわち、本例
のPU2においては、1つの汎用命令セットは、フェッ
チおよびデコードするステージ、実行するステージ、結
果をメモリに書き込むステージなどの複数のパイプライ
ンステージに分かれて実行される。また、これらのフェ
ッチユニットFU5、汎用データ処理ユニットPU2、
コードRAM4、データRAM15を有する構成は、個
々の機能は異なるが一般的なプロセッサユニットと類似
なものである。したがって、FU5、PU2、コードR
AM4およびデータRAM15を有する構成をプロセッ
サユニット3と称することも可能であり、プロセッサユ
ニット(PUX)3からVU1を制御するような概念で
本例のデータ処理装置10を構成あるいは設計すること
ができる。
データ処理ユニットVU1は、FU5が供給する命令が
VU命令φvであるかなどをデコードするユニット22
と、予め特定のデータ処理を行うように制御信号をハー
ドウェア的に出力するシーケンサ(FSM(Finite Sta
te Machine)、ファイナイトステートマシン)21と、
このシーケンサ21からの制御信号に従って特定のデー
タ処理を行うようにデザインされたデータパス部20を
備えている。また、VU1は、PU2からアクセス可能
なレジスタ23を備えており、データパス部20の処理
に必要なデータをインターフェイスレジスタ23を介し
てPU2で制御したり、VU1の内部状態をレジスタ2
3を介してPU2で参照できるようになっている。ま
た、データパス部20で処理された結果はPU2に供給
され、PU2ではその結果を利用した処理が行われる。
4に、汎用命令(PU命令)および専用命令(VU命
令)を含んだプログラムが記憶されており、それがフェ
ッチユニット5でフェッチされ、デコードされた制御信
号φpまたはφvとしてVU1およびPU2に供給され
る。VU1は、制御信号φpおよびφvのうち、自己を
起動する専用命令の制御信号φvが供給されると稼動す
る。一方、PU2には、汎用命令がデコードされた制御
信号φpだけが供給されるようになっており、VU命令
をデコードした制御信号φvはPU2には発行されず、
その代わりに、実行を伴わないnop命令を示す制御信
号が発行され、PU2の処理はスキップされる。VU1
は、アプリケーションなどによって変更されるものであ
り、VU1に指示を出す専用命令もアプリケーションに
よって変わることが多い。VU1は、アプリケーション
に特化したデータパスあるいは専用回路であり、VU命
令をデコードした制御信号を解釈するように設計するこ
とは容易である。一方、PU2は、nop命令が出力さ
れることにより、VU1用に特化した命令に対処する必
要がなく、基本命令あるいは汎用命令を解釈して実行で
きる機能があればよく、汎用性を犠牲にすることなく様
々なアプリケーションに対応したVU1と共存し、これ
らを制御したり、その演算結果を用いて処理を行うこと
ができる。
10は、リアルタイム応答などの特殊な演算が要求され
る処理を実現できる専用回路を備えたVU1と、汎用性
があるPU2とを有するものであり、以降においてはV
UPUと称することにする。このVUPU10は、リア
ルタイム応答性を犠牲にすることなく、設計および開発
期間を短縮でき、さらに、その後の変更や修正にも柔軟
に対処できるものである。また、VU1は、1つに限定
されることはなく、アプリケーションで要求される専用
処理を処理できるように複数のVU1を用意し、それぞ
れのVU1を稼動する複数の専用命令をプログラムコー
ドに含めることが可能である。さらに、本例のVU1
は、特殊な演算処理だけでなく、プログラム中の特定の
プログラムファンクションを専用回路化してプログラム
を効率良く可動させることができる。したがって、VU
PU10を複数備えたデータ処理システムは適応可能な
範囲が非常に広いアーキテクチャである。
を開発する流れを示してある。C言語で記述された仕様
あるいはプログラム31を実行するために、プログラム
中の特定のプロセスあるいはプログラムファンクション
Csを専用回路化してプログラムを効率良く可動させ
る。すなわち、仕様31は、C言語によるアプリケーシ
ョンプログラム32と、専用回路化するファンクション
33とに分けられ、アプリケーションプログラム32は
汎用処理を行う命令(PU命令)からなる部分Cg34
と、専用回路を起動する命令(VU命令)とを含むもの
となる。そして、このアプリケーションプログラム32
はC−コンパイラ35により、プロセッサで実行可能な
アセンブラの命令セットに変換され、実行用のプログラ
ムコード4aが生成される。一方、抽出されたプログラ
ムファンクション33は、そのファンクションの処理に
必要な動作が解析され(動作合成36)、専用のデータ
パスが設計あるいは開発される。このようにして、基本
プロセッサであるPUX3と専用回路VU1を備えたV
UPU10と、このVUPU10で実行されるプログラ
ムコード4aが生成される。
ける実行用のプログラムコード(以降ではこの状態もア
プリケーションプログラムに含められる)4aの動作を
シミュレーションするためには、PUX3の機能をモデ
ル化したRTLと、VU1の機能をモデル化したRTL
とを生成し、これらをプラットフォームとしてプログラ
ム4aをシミュレーションすることができる。本明細書
においては、アプリケーションプログラムとは、プロセ
ッサを動作させる命令セットを含んだすべての段階のプ
ログラムを意味し、コンパイル前、コンパイル後および
その過程の中間のプログラムも含む。すなわち、アプリ
ケーションプログラムとはシミュレーションの対象にな
るすべてのプログラムを意味するしかしながら、上述し
たように、RTLをベースとしたシミュレーションは非
常に時間がかかるので実際的でない。一方、アセンブラ
のレベル、すなわち、命令セットのレベルでシミュレー
ションすると、プログラム4aの機能は確認できるが、
実際にVUPU10でサイクルあるいはクロック毎にど
のように状態が変化しているかも含めてはシミュレート
できない。これが第1の問題である。
れた処理を実行するためのデータパス命令(VU命令)
は、例えば、画像処理やネットワーク処理において信号
列の中から「ある特定のビットパターンを検出する」と
いった命令である。したがって、このような命令の場合
には、専用回路で使用または消費されるサイクル数はデ
ータ依存であり、あらかじめ知ることができない。この
ため、RTLをプラットフォームとしたシミュレータで
もシミュレートは難しい。
図3に示すように、基本プロセッサであるPUX3で
は、ADDなどの1つの命令セットの命令サイクルは複
数のパイプラインステージに分割して処理される。図3
(a)は、3段のパイプライン型RISCの命令サイク
ルを示してあり、1つの命令セットは、フェッチとデコ
ードするサイクル(F&DサイクルまたはF&Dステー
ジ)51、実行するサイクル(実行サイクルまたは実行
ステージ)52、メモリなどにライトバックするサイク
ル(WBサイクルまたはWBステージ)53に分割して
処理される。また、図3(b)に示すように、4段のパ
イプライン型RISCであれば、フェッチとデコードサ
イクル51がさらにフェッチサイクル51aとデコード
サイクル51bに分けて実行される。以降では、簡単の
ために3段のパイプライン型RISCを基本プロセッサ
PUX3として採用した例を説明する。この場合、PU
X3では、n番目の命令I(n)のF&Dサイクル51
と共に、n−1番目の命令I(n−1)の実行サイクル
52と、n−2番目の命令I(n−2)のWBサイクル
53が進行する。
セットシミュレータ(ISS)の命令モデルを示してお
り、1番目の命令セットI(1)からI(6)までが順
番に並んで処理されるモデルである。命令セットが、そ
の機能どおりに実行されることをシミュレーションする
のであれば問題はない。しかしながら、PUX3に対し
外部あるいはVU1からのI/O59が発生したときの
処理を評価しようとすると、とたんに状態が不確かのも
のになる。すなわち、図4(b)に示すように各命令セ
ットは3つのパイプラインステージに分割され、部分的
にオーバーラップしながらサイクル単位(クロック単
位)で処理されている。そして、クロック単位で記述さ
れるI/O59が入ると、命令毎にI/O59が発生す
るとしたときに図4(a)のモデルでは6つのタイミン
グしか記述できないのに対し、現実のプロセッサでは図
4(b)のモデルに示すように、8つのタイミングがあ
り得る。そして、それぞれのタイミングでその後の処理
が変わる可能性がある。
理を開始した2サイクル目でI/Oからの入力信号59
が生じた場合の動作を示す。図5(a)では、1番目の
命令I(1)の実行サイクル52でI/O信号59が入
力され、2番目の命令I(2)で処理して、3番目の命
令I(3)のWBサイクル53で結果をI/O信号59
で出力する。これに対し、図5(b)は、命令セットの
単位のモデルであり、命令の先頭をF&Dサイクル51
に合わせている。このケース1では、2番目の命令I
(2)はI/O信号を捕らえることができないので、上
記のような処理が実現されない。図5(c)は、命令の
先頭を実行サイクル52に合わせたケース(ケース2)
であり、1番目の命令を実行中にI/O信号59を受け
て、その結果として2番目および3番目の命令を通じて
I/O信号59を出力することができるが、3番目の命
令で出力する信号のタイミングが異なる。図5(d)
は、命令の先頭をWBサイクル53に合わせたケース
(ケース3)であるが、2番目の命令I(2)はIO信
号59の入力そのものを感知することができない。
すべてクロック同期またはクロックサイクルベース、す
なわちパイプラインのサイクルベースで起動されるの
で、これらの信号を正しく取り扱うには、そのサイクル
ベースで命令が分解されてモデル化されている必要があ
る。そこで、本発明においては、図6に示すように、サ
イクル単位で管理することができるISS本体61を備
えたシミュレータ60を提供することにより、パイプラ
インのサイクルベース分解された命令モデルに基づくシ
ミュレーションを行えるようにしている。すなわち、図
7に示すように、従来のISSでは命令単位でその機能
がC言語によりモデル化されていた。これに対し、本発
明のシミュレータ60では、命令セットIをサイクル単
位、すなわち、F&D部51と、実行部52と、WB部
53とに分けてそれぞれのパイプラインステージをC言
語によりモデル化する。そして、ISS本体61で各命
令セットIの各サイクルを評価しながらシミュレーショ
ンする。したがって、3段パイプラインRISCを対象
としたシミュレーションでは、1つのサイクルで常に3
つの命令セットを評価することになる。このため、従来
のISSよりもシミュレーション速度は低下する原因と
はなるが、C言語のシミュレータによるアセンブラコー
ドのシミュレーションではなく、そのアセンブラコード
で記述されたアプリケーションプログラム4aがハード
ウェア上で実際に動作する様子をシミュレーションする
ことができる。
ルを管理する場合、図8に示すように、各命令セットの
各パイプラインステージ毎に、その各命令セットの各ス
テージ毎に固有のC言語によるモデル(第1の情報)5
7と、各命令セットの各ステージに共通のC言語による
モデル(第2の情報)58とを記述しても良い。たとえ
ば、共通のモデルとしてI/O信号に関するモデルを各
サイクル毎に記述することにより、I/O信号による動
作をサイクルバウンダリーに対し正しくシミュレーショ
ンすることができる。しかしながら、この方法では、共
通部分である第2の情報の記述量が増えることになる。
そこで、本例のシミュレータ60においては、ISS本
体61に、サイクル単位にシミュレーションを行うため
のサイクル単位で時間を管理する機構61aと、I/O
信号などに対する処理などのサイクルあるいはパイプラ
インステージに共通な第2の情報を記述した部分61b
と、その第2の情報に基づいて応答する機構61cとを
設けている。
令セットIの各パイプラインステージ毎の固有のモデル
(第1の情報)も決まる。したがって、本例のシミュレ
ータ60では、各命令セット毎に各パイプラインステー
ジ毎のモデルを提供するPU命令ライブラリ62を設
け、各命令の各パイプラインステージをISS本体61
で管理可能なモデル、すなわち第1の情報に変換してい
る。このため、シミュレータ60に提供されるアプリケ
ーションプログラムは命令セットの状態であるいが、シ
ミュレーションはサイクル単位で分割して行うことがで
きる。また、シミュレーションの対象となるモデルがサ
イクル単位で分割して記述されている場合でも、PU命
令ライブラリ62により、そのシミュレーションモデル
自身が記述すべき量を削減できる。
タ60であれば、アセンブラコードで記述されたアプリ
ケーションプログラム4aに基づき、サイクル単位のシ
ミュレータモデルをPU命令ライブラリ62を参照しな
がらISS本体61で構築し、サイクル単位で管理しな
がらシミュレーションを行うことができる。ISS本体
61の負荷を低減して実行速度を速くするためには、命
令セットであるアセンブラコードをパイプラインステー
ジに分割された記述で表されたシミュレーションモデル
66に変換できるコンパイラあるいはコンパイラプログ
ラム65を用い、命令セットがサイクル単位で記述され
たシミュレーションモデル66を事前に用意しておくこ
とが望ましい。
命令により起動するVU1における処理をISS本体6
1においてサイクル単位で管理可能な情報として提供す
るVU命令ライブラリ63を備えている。したがって、
VU命令ライブラリ63でVU命令で消費されるサイク
ル数を定義することにより、上述したもう1つの問題、
すなわち、画像処理やネットワーク処理において信号列
の中から「ある特定のビットパターンを検出する」とい
ったVU命令が実行されたときに、その命令で使用ある
いは消費されるサイクル数をあらかじめ知ることができ
ないという問題を簡単に解決することができる。このた
め、本例のシミュレータ60においては、PU命令はP
U命令ライブラリ62から供給されるパイプラインステ
ージ毎のモデルをサイクル単位で管理することによりサ
イクル単位でシミュレートでき、VU命令はVU命令ラ
イブラリ63でVU1において消費されるサイクル数が
シミュレートできる。
り、VUPU10の内部におけるVU1とPU2とのI
/Oあるいは割込み処理、さらには、外部とI/Oある
いは割込み処理などをサイクルあるいはクロック単位で
C言語によりモデルで完全にシミュレートすることが可
能となる。このため、高速でハードウェアの動作をシミ
ュレートできるシミュレータを提供することが可能とな
る。
命令ライブラリ62と、VU命令ライブラリ63とを別
に設けている。PU命令ライブラリ62は、VUPU1
0を実現するときの埋め込みプロセッサとなる基本プロ
セッサPUX3における処理をサイクル単位で記述する
ためのライブラリであり、ほぼフィックスされたものと
なる。
VUPU10で実現しようとするユーザの仕様によって
可変なVU1における処理が反映されるものであり、そ
の都度、異なる可能性が高い。したがって、VU命令ラ
イブラリ63をユーザ単位で、あるいはユーザ自身が設
計できるように分離することにより、シミュレータ60
に殆ど影響を与えずにユーザの仕様を組み込むことがで
きる。このため、本例の構成により、VUPU10をシ
ミュレートできるシミュレータ60を短期間に経済的に
開発することができる。
C言語で記述されている仕様あるいはプログラムファン
クションCsの部分をC++言語に変換されたもの、あ
るいはそれがコンパイルされたものである。したがっ
て、変数の型宣言を行うことにより、取り扱えるデータ
長はバリアブルとなり、C言語で記述された際の冗長な
ビット長を削除することができる。このため、VU命令
ライブラリ63は、機能的にVU1として実現するRT
Lと置換可能なものとなる。したがって、より精度良
く、実機に近い条件で、さらにRTLシミュレータより
も高速でVUPU10をシミュレートすることができ
る。VU命令ライブラリ63は、PU命令ライブラリ6
2も同様であるが、ISS本体61がCコンパイラある
いはC++コンパイラを内蔵していれば、C言語あるい
はC++言語で記載されたライブラリでよく、ISS本
体61がコンパイラを内蔵していないのであれば、事前
にコンパイルしておく必要がある。
セッサでは実行されない疑似(擬似)命令用のライブラ
リ64を備えている。この疑似命令は主に評価用に利用
され、取扱い上はVU命令と同じであるので疑似VU命
令(擬似VU命令)と称することにする。疑似VU命令
は、シミュレーションの過程あるいは結果を評価するた
めにISS本体61にデータを入力したり、期待値を出
力させたりする処理を規定するものであり、この間、V
UPUのシミュレーションをホールドする。すなわち、
ISS本体61は、サイクル数のカウントを停止し、ゼ
ロサイクルで疑似VU命令を実行する。この疑似命令ラ
イブラリ64は、PU命令のシミュレーションに対して
ゼロサイクルの専用命令として捉えることも可能である
ので、シミュレータ60の内部ではVU命令ライブラリ
63と同等に取り扱われる。したがって、このシミュレ
ータ60はVUに加えて、デバック用の疑似VUの機能
が装着されているということができる。疑似VU命令
は、実際のプロセッサ10においても疑似VU命令とし
て取り扱われるので、この疑似命令(E命令)をフェッ
チしたときはPU2に対してはNOP命令が出力される
だけである。また、VU1は自己宛てのVU命令ではな
いので、処理を行わない。したがって、シミュレーショ
ンが終了した後にあえて取り除かなくても良い命令とな
っている。
計手法の概要を示してある。ここでも、C言語による全
体記述31の第3層(レイヤ3)と、サイクルベースの
ISSによるシミュレータ60の第2層(レイヤ2)
と、VUPU10の第1層(レイヤ1)とに分けて考え
ることができ、C言語(レイヤ3)とRTLによるVU
PU10(レイヤ1)との間に、サイクルベースのIS
S61によるシミュレーション(レイヤ2)を導入でき
ることによる効果を示している。本例では、C言語(A
NSI−Cを想定)による全体記述31には、テスト記
述、即ちデータファイルの入力とか出力値と期待値との
一致比較といった記述も含まれる。目視によるデバッグ
が有効であるのならば、グラフィック出力ルーチンとい
った機能も、このテスト機能あるいはデバッグ機能を定
義するテスト記述に含められる。
の実装形態であるVUPU10にはマッピングされない
部分であり、ISSでのみ実行される疑似VUとして装
着される部分である。疑似VU命令でカバーする範囲
は、VU命令でカバーする範囲と同様に、C記述31か
ら抽出され、Cコンパイラ100を介してコンパイルさ
れて疑似VU命令ライブラリ64あるいはオブジェクト
としてISS本体61が走行するシミュレータ60に組
み込まれる。したがって、疑似VU命令ライブラリ64
は、ISS61が走行する計算機環境上のCコンパイラ
100の出力である。そして、PU命令でカバーされる
範囲CgとのインターフェイスIFeが疑似VU命令と
なる。
どで説明したように、基本プロセッサPU2で走行する
部分のC言語による記述であり、PU用のCコンパイラ
101によりコンパイルされてISS61で実行される
シミュレーションレベルのプログラム4aとなる。この
プログラム4aがバイナリーに変換したものが、基本プ
ロセッサPUがRTLの形式にて提供された時に使用さ
れることになる。すなわち、VUPU10のオブジェク
トプログラムとなる。
全体記述31から抽出された後に、これがビット冗長を
持つときには、C記述をC++記述に変換して変数の型
宣言により(Class Libraryを使用して)ビット冗長を
取り除き、最適なビット記述のライブラリ102とす
る。その後、C++コンパイラ103でコンパイルして
シミュレータ60に組み込まれるVU命令ライブラリ6
3を生成する。PU命令でカバーされる範囲Cgとのイ
ンターフェイスIFsは、VU命令であり、これはVU
PU10においても同様である。
のライブラリ102はCtoRTL動作合成ツール10
4の入力スタイルの規定にあったC言語に変換されて動
作合成の入力となる。CtoRTLツール104は、通
常、変換されたRTLを出力し、そのRTLのサイクル
数も出力するので、VU命令ライブラリ63はレポート
されたサイクル数も取り込み、ビット冗長を取り除いた
C++記述による機能にサイクル数を加えた情報を、I
SS本体61に提供し、VU1を含めたサイクルベース
のシミュレーションを可能とする。
生成されたVU1のRTLをISS61とリンクさせて
シミュレーションすることも可能である。設計の最終段
階における検証フェーズとして有効である。
1を分解してサイクルベースのISSシミュレーション
を実行する過程を示してある。この図では、全体記述3
1の一部が2つの疑似VU命令と、1つのVU命令に置
き換えられている。疑似VU命令に置き換えられたテス
ト記述37の内容は、例えば、最初が入力ファイルをオ
ープンしてテストデータを読み込む記述であり、次が、
出力された結果と期待値との一致比較照合を取る記述で
ある。また、VU命令に置き換えられた部分33は、例
えば、専用のハードウエアで処理することにより高速化
を図りたい信号処理のC記述部分である。その他のPU
命令として実行される部分34は、一般的なソフト処理
対象となる記述であり、PU命令と、VU命令と、疑似
VU命令とを含んだプログラム32として生成される。
したがって、PU用のコンパイラ101でコンパイルさ
れて、その際、VU命令も疑似VU命令もアセンブラコ
ールされているから、コンパイルされた結果はPU命令
とVU命令(疑似含む)の混在リスト4aとなり、IS
S本体61に順次読み込まれて実行されることになる。
れる疑似VUとして装備されることが望ましい。これら
テスト記述は、シミュレーションおよびデバッグ上必要
であるが、通常は、ハードウェア化する対象外だからで
ある。従って、サイクル数はゼロを設定し、テスト機能
のみをゼロサイクルで実行できる形態が望ましい。テス
ト記述37は、ISS61が開発され、走行する計算機
環境により決定されるコンパイラ100でコンパイルさ
れる。例えば、あるOS上でISS61が走行している
のであれば、テスト記述は、そのOSにて走行するCコ
ンパイラ(例えばサン社のOSであればフリーウェアの
gccがある)でコンパイルされ、ISS61に疑似V
Uライブラリ64として装着される。装着された疑似V
Uライブラリ64は、PU側からはVU命令と同様に処
理される疑似VU命令でコールされ、リターンされる。
命令のC記述33は、VUPUプロセッサを開発する場
でユーザが定義する命令であるが、上述した方法でライ
ブラリ63の形式で装着される。このようにして、疑似
VU命令ライブラリ64と、VU命令ライブラリ63が
用意されると、ISS本体61は、アセンブラ化された
コード4aの命令セットを順番に読み込んで、PU命令
であれば、予めサイクルモデルとして用意されているP
Uライブラリ62を読み、VU命令であれば、VUライ
ブラリ63を読み込んで、実行する。同様に疑似VU命
令であれば、疑似VUライブラリ64を読み込んで実行
する。
めのプログラムにおける主な処理をフローチャートによ
り示してある。ISS本体61を実現するためのプログ
ラムがスタートすると、ステップ71でシミュレートす
る対象のアプリケーションプログラム4aのn番目の命
令セットを取得する。ステップ79で、その命令セット
Iが疑似VU命令であれば、ステップ79aで疑似VU
をスタートする処理を行う。疑似VUはISS本体61
だけで稼動するVUであるが、上述したように疑似VU
命令ライブラリ64を参照することによりデバック処理
用の入出力あるいはその他の処理が行われる。
ントしないので、疑似VUが終了すると、他のVUPU
の状態をシミュレートする処理は行われず、ステップ7
1に戻って次の命令をフェッチする。したがって、VU
1あるいはPU2の状態に影響を与えずに、それらの状
態を評価することができる。そして、疑似VU命令をV
U命令およびPU命令と同じレベルでプログラムコード
4aに挿入することができるので、シミュレーション上
で評価する状態をプログラムレベルで規定することが可
能である。このため、シミュレーションの評価を効率良
く、容易に行うことができる。
命令であれば、ステップ73でVU1をスタートする処
理を行う。図11に示すように、VU命令ライブラリ6
3としての機能を提供するプログラムがVU1における
サイクルをカウントするだけのプログラムであれば、ス
テップ73においては、そのカウンタ数Cをクリアして
カウントを開始する。
カウンタ数Cを初期化するステップ91と、カウント数
Cをサイクルのタイミングでカウントアップするステッ
プ92と、カウント数CがVU1における処理が完了す
るC0に達したことを判断するステップ93を備えてお
り、カウント中であればVU1が稼動中であること示す
情報をISS本体61に返すステップ94と、カウント
が終了していればVU1が停止中である情報をISS本
体61に返すステップ95を備えている。したがって、
ISS本体61のプログラムでは、ステップ72に続い
て、ステップ74においてVU命令ライブラリ63に問
い合わせることにより、そのサイクルにおけるVU1の
状況を管理することができる。
で取得した命令セットIがPU命令であれば、ステップ
76でそのn番目のPU命令のF&Dサイクルのモデル
(第1の情報)をPU命令ライブラリ62に用意されて
いるCモデル81から取得し、そのステージ固有のモデ
ルを実行する。それと共に、それに関わる外部入出力や
VUからの入出力などに対するステージに共通のモデル
(第2の情報)を実行する。次に、ステップ77で、n
−1番目のPU命令の実行サイクルのモデルをPU命令
ライブラリ62のCモデル81から取得し、そのステー
ジ固有のモデルと、共通のモデルを実行する。さらに、
ステップ78で、n−2番目のPU命令のWBサイクル
のモデルをPU命令ライブラリ62のCモデル81から
取得し、そのステージ固有のモデルと、共通のモデルを
実行する。これらステップ76、77および78の処理
の前後は問わない。またこれらの処理は並列に行われて
も良い。
いては、ISS本体61において、n番目、n−1番目
およびn−2番目の命令セットの各パイプラインステー
ジにおけるモデルを実行することにより、1つのサイク
ルのシミュレーションを行う。したがって、シミュレー
タ60では、サイクル分解されたシミュレーションモデ
ルをISS本体61においてサイクルベースでシミュレ
ーションすることになり、従来のRTLをベースとした
シミュレータと同等のサイクル単位での精度を維持しつ
つ、実行速度の速いC言語による高速シミュレーション
が可能となる。このため、数百倍高速でハードウェアを
シミュレーションできるシミュレータを提供することが
可能となる。
ミュレーションプログラムに対し、命令セットの各パイ
プラインステージ毎に、そのパイプラインステージをシ
ミュレートプログラムで管理可能な情報、すなわちモデ
ルに変換する処理を提供するPU命令ライブラリ62の
プログラムを設けてある。ライブラリプログラムを用い
て、パイプラインステージをシミュレートする前に、そ
のパイプラインステージを管理するためのモデルを取得
することができる。また、ライブラリプログラムを用意
することにより、アプリケーションプログラムに記述す
る量を大幅に削減することが可能である。各パイプライ
ンステージのモデルを取得する処理は、本例のように、
各パイプラインステージのモデルを実行する直前に取得
しても良いし、シミュレートする命令毎、あるいはシミ
ュレートするサイクル毎に一括してモデルを取得するこ
とも可能である。あるいは、ライブラリから各パイプラ
インステージ毎のモデルをアプリケーションプログラム
単位で取得してすべてのパイプラインの情報を含むシミ
ュレーションモデルを事前に生成することも可能であ
る。
SS本体61で各パイプラインステージに共通する処理
に関するモデルを用意し、各パイプラインステージのモ
デルと共にサイクル単位で実行している。この方法によ
りステージ単位のモデルの記述を削減することができる
が、共通の処理を含んだモデルをPU命令ライブラリ6
2として提供することも可能である。
イブラリ62に加えて、VU命令ライブラリ63を備え
ている。したがって、VUPU10のようなデータパス
に特化した専用処理部VU1を備えたプロセッサにおい
て、VU1でVU命令が消費するサイクル数がデータ依
存であるような場合においても、VU命令で消費される
サイクル数をVU命令ライブラリ63でカウントしてI
SS本体61に通知することが可能である。したがっ
て、VU1の状態もISS本体61においてサイクル単
位で管理することができる情報に変換することができ
る。VU命令ライブラリ63がシミュレートするVU1
の状態をISS本体61が知る方法は幾つかあり、IS
S本体61がサイクル事象をVU命令ライブラリ63に
通知することによりVU命令ライブラリ63の側でサイ
クル数のカウントを返したり、またはVU1における処
理が終了したことをVU命令ライブラリ63からISS
本体61に通知するだけでも結果としてVU1における
サイクル数の管理を行うことができる。
0においては、VU命令ライブラリ63が各サイクル毎
のVU1の状態をISS本体61に返すルーチン63a
を備えている。したがって、ISS本体61の側でVU
1の状態をサイクル単位で監視し、終了までのサイクル
数をカウントするなど方法でVU1をサイクル単位で管
理できる。このため、VU1の処理の終了情報だけをV
U命令ライブラリ63からISS本体61に通知させ、
サイクル数のカウントはISS本体61またはデータパ
ス命令側であるVU命令ライブラリ63のどちらでもで
きることとなる。もちろん、VU命令ライブラリ63か
らISS本体61に供給されるVU1の状態は終了情報
に限られる必要はなく、PU命令の処理に影響を及ぼす
VU1の処理の途中経過をISS本体61に通知してさ
らに精度の高いシミュレーションを行うことも可能であ
る。また、図12に示したシミュレータ60では、疑似
VU命令ライブラリを用意していないが、疑似VU命令
ライブラリがない場合でも、サイクルベースのISS6
1によりRTLモデルを用いなくても、それと等価のシ
ミュレーションを数桁高速で行うことができることは変
わりない。
示す。これらの手順を実行可能な手段あるいは処理を備
えたシステムあるいはプログラムは、適当な計算機環境
で動作する自動設計システムあるいは自動設計プログラ
ムとして提供することが可能である。このため、本発明
により、システムLSIにおける、C言語あるいはJA
VA(登録商標)言語などの高級言語から自動設計シス
テムの構築が可能となる。
様を記載したC記述31の出力期待値を作成しておき、
後段の設計作業におけるテスト機能の元とする。この段
階におけるコンパイラは、汎用のCコンパイラ(gc
c)である。
である。C記述31をPU2(PUX3)のCコンパイ
ラであるpcc101でコンパイルする。この際、ステ
ップ121で出力期待値との比較照合のようなテスト記
述を、疑似VU命令としてpcc101でコンパイルさ
れるプログラムに装着させることが可能である。疑似V
U命令は他の命令と共にpcc101でコンパイルされ
るが、疑似VU命令で実行させる機能(疑似VU)、す
なわちテスト記述された機能は、汎用のコンパイラ(g
cc)100でコンパイルし、疑似VUライブラリを生
成する。
ト回路(疑似VU)を内蔵させたプログラム(C記述)
を、ISS61を用いてステップ122で検証する。疑
似VU命令によりテスト機能が移植されているので、正
しくpcc101でコンパイルされるプログラムに移植
が行われたか否かは直ちに判明する。この設計ステージ
112では、ISS61がISSプロファイラとしてレ
ポートする各Cソースコード上でのクロック消費数情報
(ISSプロファイラ)から、どの部分をVU化(即ち
ハードウェア化)して高速化を図るかを検討し判断す
る。
た部分の抽出とVU化、すなわち、VU命令ライブラリ
の作成である。このため、ステップ123でVU化する
部分を抽出し、ステップ124でその部分をVU命令に
置き換え、VU命令、PU命令および疑似VU命令から
なる、pcc101でコンパイル可能なプログラムとす
る。一方、抽出した部分をステップ125でライブラリ
化する。C言語のままでもISS61にて走行可能なV
U命令ライブラリは生成可能であるので、この段階でシ
ミュレーションのステップ126を挿入しているが、必
要がなければスキップして次の段階でのみシミュレーシ
ョンするだけでも良い。なお、ステップ126でVU命
令ライブラリを利用するために使用するコンパイラは、
汎用のCコンパイラ、例えばgccである。この段階で
も、疑似VU命令はテスト記述としてそのまま利用され
る。
でC++言語を用いて冗長ビットを削除し、削除した結
果のC++のVU命令ライブラリ63をステップ128
でシミュレータ60に装着してISS61を走行させて
消費サイクル数を確認する。その為には、VU1のサイ
クル数を知る必要があり、次の設計ステージ115を実
行させてサイクル数を知り、VU命令ライブラリ63に
フィードバックをかける。この段階でも、疑似VU命令
はテスト記述としてそのまま利用される。
長が、例えば32ビットに取られ、32ビット長の範囲
内で仕様となるアルゴリズムの開発と検証が行われる。
しかしながら、実際に稼動させるハードウエアシステム
では32ビットは必要ない、といった場合が極めて多
い。この場合には冗長を削除しないと、無駄なハードウ
ェアを持った実行回路を生成してしまうことになる。し
たがって、この設計ステージ114で、C言語と異なる
言語、ここではC++言語にて冗長を取り除く事は極め
て重要である。
イブラリ63で検証を行うことが重要である。冗長を取
り除きすぎていないかどうかは、シミュレーションによ
って確認する必要があり、このステージ114でサイク
ルベースのISS61を用いて確認できる意義は極めて
大きい。というのも、もし、サイクルベースのISS6
1がなければ、この確認はRTLベースのシミュレーシ
ョンにて行うしかなく、それはサイクルベースのISS
61によるシミュレーションに比べ約1、000倍時間
がかかるシミュレーションだからである。
て記述し、冗長を加味しない形式で最初から設計すれば
よい、との考え方もある。それもひとつの考え方である
が、次のようなデメリットがある。まず、オブジェクト
指向の言語であるC++言語と通常の手続き型言語であ
るC言語とでは、生成されるオブジェクトのサイズに違
いがでる。つまり、オブジェクト指向言語のオブジェク
トサイズは通常に比べ30〜50%くらい大きくなって
しまう欠点がある。これは、PU化するプログラム、す
なわち、PUコンパイラ101でコンパイルする部分の
オブジェクトサイズが非常に大きくなってしまうことに
なる。
セッサにとっては、シリコン上のメモリサイズをいかに
小さくするかが、コストと消費電力上極めて重要な要因
となり、この点、C言語で初期設計する設計方法のメリ
ットは大きい。これに対し、VU化される記述は、ハー
ドウェアとなるので、たとえC++言語を経由したとし
ても前に述べたようなオブジェクトサイズの増大には繋
がらない。むしろ、型変換を通じて冗長なビット長が削
除できた状態でシミュレーションできるメリットが大き
い。
ツールによる動作合成である。ISSシミュレーション
により検討されたC++言語のライブラリ63を、ステ
ップ129で動作合成可能なC記述に変換し、ステップ
130で合成をかける。結果としてRTLとサイクル数
がレポートされるので、サイクル数は、上述したように
上流のISSシミュレーション(ステップ128または
126)へフィードバックする。このステージ115で
レポートされるサイクル数まで埋め込んだVUライブラ
リ63はCtoRTL動作合成ツールにて生成されたR
TLと置換可能なものになる。
VU1のRTLと、PU命令、VU命令および疑似VU
命令が含まれるプログラムとを、ステップ131でIS
S61を使用して混合あるいは協調シミュレーション
し、できあがったVU1のRTLの最終的な検証を行
う。通常、このシミュレーションにおいては、親はRT
Lとなる。即ち、親となるRTLを起し、子となるIS
Sと、子となるVU部のRTLを親のレベルで接続させ
てシミュレーションを行うことも可能である。この段階
のシミュレーションは、RTLが含まれるのでシミュレ
ーション速度は低下する。しかしながら、最終確認を行
う意味で一回検証する意味はある。加えて、ISS61
ではプログラムに組み込まれている疑似VU命令がその
まま動作するので、テスト環境は同一のものが使用でき
るメリットがある。
は、ステップ132で論理合成され、ステップ133で
ネットリストとして出力されシリコン化(回路化)され
る。
ISS61を用いて何段階かのシミュレーション(ステ
ップ122、126、128および131)を繰り返し
ているが、最初のステージ111のステップ121で導
入された疑似VU命令によるテスト記述、特に期待値照
合といった機能がシミュレートされるプログラムに装着
されたまま、RTLの最終検証のフェーズであるステー
ジ116まで活かされる。したがって、この複数のシミ
ュレーション段階を備えた設計方法において、同一のテ
スト記述が設計段階の最初から最後まで利用できること
は、各ステージですこしづつ変化していく実装の形態を
検証する上で極めて有効であり、大きく回路を間違えて
設計を押しすすめる心配がないという大きなメリットが
ある。
ョン方法をシミュレーションプログラムで実現可能なシ
ミュレータ60に基づき説明しているが、ハードワイヤ
ードロジックなどの他の実現手段で本発明のシミュレー
ション方法を実行することも可能である。しかしなが
ら、本発明のシミュレーション方法は、C言語あるいは
JAVA(登録商標)などの他の高級言語で記述された
高速実行可能なシミュレーションプログラムとして提供
できることが重要であり、CD−ROMなどの適当な記
録媒体に記録されたり、インターネットなどのコンピュ
ータネットワークを介して提供される本発明に係るシミ
ュレーションプログラムをパーソナルコンピュータやワ
ークステーションなどの適当なハードウェア資源にイン
ストールすることによりVUPU10の機能を高速でシ
ミュレートすることができる。
るPUと、専用回路化したVUとを備えており、全ての
仕様を専用回路化する従来のカスタムLSIと比較する
と、短期間に低コストで従来と同等以上の性能のカスタ
ムLSIを提供できるものであり、本発明のシミュレー
タを採用することにより、さらに開発期間を短縮するこ
とができる。また、本発明のシミュレータは、VUPU
に限らず、汎用的なプロセッサの設計開発、あるいはプ
ロセッサで実行する全てのプログラム(本明細書ではア
プリケーションプログラムと称している)の設計開発に
も適用可能なものであり、シミュレーションの精度を向
上し、シミュレーションの期間を短縮することができ
る。
は、命令セットをパイプラインサイクルに分解したモデ
ルでシミュレートすることができるサイクルベースのI
SS本体を備えたシミュレータを提供しており、C言語
などの高級言語で記述された高速実行可能なシミュレー
タによりサイクルベースでハードウェアのシミュレーシ
ョンを行うことができる。したがって、本発明のシミュ
レーション方法により、精度は従来のRTLベースのシ
ミュレータと同等に、サイクル単位を維持しつつ、シミ
ュレーション速度を数百倍から数千倍高速にできるシミ
ュレータあるいはシミュレータとしての機能を有するデ
ータ処理システムを提供できる。したがって、本発明に
よりプロセッサの設計期間を大幅に短縮でき、設計品質
も向上する。したがって、設計物のコスト競争力に極め
て多大な効果を発揮する。
は、VUPUのようなデータパスに特化した専用処理部
を備えたプロセッサにおいても、専用処理部で専用命令
が消費するサイクル数をライブラリという形でサイクル
単位でカウントして管理することが可能であり、サイク
ルベースでのハードウェアシミュレーションが可能とな
る。
VU命令、特にゼロサイクルの疑似VU命令を導入する
ことにより、評価および検証に有効なテスト回路を疑似
VU命令として初期設計段階から最終のRTL生成段階
まで利用できる。また、VU命令による処理をライブラ
リ化することにより、そのライブラリを他の言語、上記
ではC++で変換して冗長ビットの削減を極めて簡単に
行うことが可能となる。そして、本発明のシミュレータ
は、サイクルベースのISSであるので、最終段階で生
成されたRTLとも接続させてシミュレーションするこ
とが可能であり、最終検証までをフォローすることがで
きる。
PU)の概要を示す図である。
を開発する様子を示す図である。
行する様子を示す図である。
プラインステージに分けてサイクル単位で評価する場合
を示す図である。
のケースを、サイクル単位で評価する場合と比較して示
す図である。
パイプラインステージ単位のモデルにした場合とを比較
して示す図である。
個別のモデルと、共通のモデルとに分けて示した図であ
る。
図である。
れた仕様に基づきVUPUを開発する様子を示す図であ
る。
びライブラリとしての機能を示すフローチャートであ
る。
ある。
る。
Claims (46)
- 【請求項1】 命令サイクルが複数のパイプラインステ
ージにより実行される複数の命令セットを備えたアプリ
ケーションプログラムのプロセッサにおける動作をシミ
ュレート可能なデータ処理システムであって、前記アプ
リケーションプログラムの動作を前記パイプラインステ
ージのサイクルでシミュレートする手段を有するデータ
処理システム。 - 【請求項2】 請求項1において、前記命令セットの各
パイプラインステージを、前記シミュレートする手段で
管理可能な第1の情報に変換するライブラリを有するデ
ータ処理システム。 - 【請求項3】 請求項2において、前記シミュレートす
る手段は、前記第1の情報を、前記パイプラインステー
ジに共通する処理に関する第2の情報に基づきシミュレ
ートするデータ処理システム。 - 【請求項4】 請求項1において、前記プロセッサは汎
用処理を実行可能な汎用処理部および特定のデータ処理
に特化した専用処理部を備えており、 前記アプリケーションプログラムに含まれる、前記汎用
処理部における処理を規定する汎用命令セットの各パイ
プラインステージを、前記シミュレートする手段で管理
可能な情報に変換する汎用命令ライブラリと、 前記アプリケーションプログラムに含まれる、前記専用
処理部における処理を規定する専用命令セットを前記シ
ミュレートする手段で管理可能な情報に変換する専用命
令ライブラリとを有するデータ処理システム。 - 【請求項5】 請求項4において、前記専用命令ライブ
ラリは前記専用命令セットにより消費される前記サイク
ルの情報を前記シミュレートする手段に返すデータ処理
システム。 - 【請求項6】 請求項4において、前記専用命令ライブ
ラリは前記専用処理部の状態を前記サイクルの単位で前
記シミュレートする手段に返すデータ処理システム。 - 【請求項7】 請求項4において、前記専用命令ライブ
ラリは、前記プロセッサの動作を規定する仕様のうち、
前記専用命令セットにより実行される範囲の前記仕様
が、その仕様を記述したオリジナルの言語と異なる言語
に変換された後にコンパイルして生成されているデータ
処理システム。 - 【請求項8】 請求項1において、前記アプリケーショ
ンプログラムは前記プロセッサでは実行されない疑似命
令セットを備えており、その疑似命令セットを前記シミ
ュレートする手段で管理可能な情報に変換する疑似命令
ライブラリを有するデータ処理システム。 - 【請求項9】 請求項8において、前記疑似命令セット
は、前記サイクルをカウントしない処理を規定するデー
タ処理システム。 - 【請求項10】 請求項4において、前記アプリケーシ
ョンプログラムは前記プロセッサでは実行されない疑似
命令セットを備えており、その疑似命令セットを前記シ
ミュレートする手段で管理可能な情報に変換する疑似命
令ライブラリを有し、前記疑似命令セットは、前記汎用
処理部および/または専用処理部の処理をシミュレート
した結果を前記サイクルをカウントしないで評価する処
理を規定するデータ処理システム。 - 【請求項11】 請求項4において、前記汎用命令セッ
トはアセンブラ命令であるデータ処理システム。 - 【請求項12】 命令サイクルが複数のパイプラインス
テージにより実行される複数の命令セットを備えたアプ
リケーションプログラムのプロセッサの設計方法であっ
て、前記アプリケーションプログラムによる前記プロセ
ッサの動作を前記パイプラインステージのサイクルでシ
ミュレートするサイクルレベル・シミュレーション工程
を有する設計方法。 - 【請求項13】 請求項12において、前記サイクルレ
ベル・シミュレーション工程の前に、前記命令セットの
各パイプラインステージを、前記サイクルレベル・シミ
ュレーション工程で管理可能な第1の情報に変換する工
程を有する設計方法。 - 【請求項14】 請求項13において、前記サイクルレ
ベル・シミュレーション工程では、前記第1の情報を、
前記パイプラインステージに共通する処理に関する第2
の情報に基づきシミュレートする設計方法。 - 【請求項15】 請求項12において、前記サイクルレ
ベル・シミュレーション工程では、汎用処理を実行可能
な汎用処理部および特定のデータ処理に特化した専用処
理部を備えた前記プロセッサのシミュレーションを行
い、 前記アプリケーションプログラムに含まれる、前記汎用
処理部における処理を規定する汎用命令セットの各パイ
プラインステージを、前記サイクルレベル・シミュレー
ション工程で管理可能な情報に変換する第1の変換工程
と、 前記アプリケーションプログラムに含まれる、前記専用
処理部における処理を規定する専用命令セットを前記サ
イクルレベル・シミュレーション工程で管理可能な情報
に変換する第2の変換工程とを有する設計方法。 - 【請求項16】 請求項15において、前記サイクルレ
ベル・シミュレーション工程の前に、前記プロセッサの
動作を規定する仕様から前記専用命令セットにより実行
される範囲を抽出し、その範囲を前記専用命令セットに
置き換えると共に、前記第2の変換工程で使用される専
用命令ライブラリを作成する工程を有する設計方法。 - 【請求項17】 請求項16において、前記専用命令ラ
イブラリを作成する工程では、前記専用命令セットによ
り実行される範囲の仕様をオリジナルの言語と異なる言
語に変換された後にコンパイルして前記専用命令ライブ
ラリを作成する設計方法。 - 【請求項18】 請求項15において、前記第2の変換
工程では、前記専用命令セットにより消費される前記サ
イクルの情報を前記サイクルレベル・シミュレーション
工程に返す設計方法。 - 【請求項19】 請求項15において、前記第2の変換
工程では、前記専用処理部の状態を前記サイクルの単位
で前記サイクルレベル・シミュレーション工程に返す設
計方法。 - 【請求項20】 請求項12において、前記アプリケー
ションプログラムは前記プロセッサでは実行されない疑
似命令セットを備えており、その疑似命令セットを前記
サイクルレベル・シミュレーション工程で管理可能な情
報に変換する第3の変換工程を有する設計方法。 - 【請求項21】 請求項20において、前記疑似命令セ
ットは、前記サイクルをカウントしない処理を規定する
設計方法。 - 【請求項22】 請求項15において、前記アプリケー
ションプログラムは前記プロセッサでは実行されない疑
似命令セットを備えており、その疑似命令セットを前記
サイクルレベル・シミュレーション工程で管理可能な情
報に変換する第3の変換工程を有し、前記疑似命令セッ
トは、前記汎用処理部および/または専用処理部の処理
をシミュレートした結果を前記サイクルをカウントしな
いで評価する処理を規定する設計方法。 - 【請求項23】 請求項12において、汎用処理を実行
可能な汎用処理部および特定のデータ処理に特化した専
用処理部を備えた前記プロセッサを対象とする第1およ
び第2のシミュレート段階を有し、 前記第1のシミュレート段階では、前記プロセッサの動
作を規定する仕様に基づく命令に、前記パイプラインス
テージのサイクルをカウントしない疑似命令セットであ
って、シミュレート状況を評価する疑似命令セットを加
えた状態でシミュレートし、 前記第2のシミュレート段階は、前記サイクルレベル・
シミュレーション工程を備えており、前記命令のうちの
前記汎用処理部における処理を規定する汎用命令セット
の各パイプラインステージを、当該サイクルレベル・シ
ミュレーション工程で管理可能な情報に変換し、前記命
令のうちの前記専用処理部における処理を規定する専用
命令セットを専用命令ライブラリに基づき当該サイクル
レベル・シミュレーション工程で管理可能な情報に変換
し、前記疑似命令セットを疑似命令ライブラリに基づき
当該サイクルレベル・シミュレーション工程で管理可能
な情報に変換してシミュレートし、 さらに、前記第2のシミュレート段階の前に、前記プロ
セッサの動作を規定する仕様から前記専用命令セットに
より実行される範囲を抽出し、その範囲を前記専用命令
セットに置き換えると共に、前記専用命令ライブラリを
作成する段階を有する設計方法。 - 【請求項24】 請求項23において、前記専用命令ラ
イブラリを作成する段階では、前記専用命令セットによ
り実行される範囲の仕様をオリジナルの言語と異なる言
語に変換された後にコンパイルして前記専用命令ライブ
ラリを作成する設計方法。 - 【請求項25】 請求項23において、前記第1のシミ
ュレート段階の前に、前記疑似命令ライブラリを作成す
る段階を有する設計方法。 - 【請求項26】 請求項23において、さらに、前記専
用命令ライブラリをRTLに変換する工程と、第3のシ
ミュレーション段階とを有し、 前記第3のシミュレーション段階は前記サイクルレベル
・シミュレーション工程を備えており、前記汎用命令セ
ットの各パイプラインステージを、当該サイクルレベル
・シミュレーション工程で管理可能な情報に変換し、前
記専用命令セットをRTLに変換された前記専用命令ラ
イブラリに基づき当該サイクルレベル・シミュレーショ
ン工程で管理可能な情報に変換し、前記疑似命令セット
を前記疑似命令ライブラリに基づき変換してシミュレー
トする、設計方法。 - 【請求項27】 命令サイクルが複数のパイプラインス
テージにより実行される複数の命令セットを備えたアプ
リケーションプログラムのプロセッサにおける動作をシ
ミュレートするプログラムであって、前記アプリケーシ
ョンプログラムの動作を前記パイプラインステージのサ
イクルでシミュレートするサイクルレベル・シミュレー
ション処理を実行するための命令を有するプログラム。 - 【請求項28】 請求項27において、前記サイクルレ
ベル・シミュレーション処理の前に、前記命令セットの
各パイプラインステージを、前記サイクルレベル・シミ
ュレーション処理で管理可能な第1の情報に変換する処
理を実行するための命令をさらに有するプログラム。 - 【請求項29】 請求項28において、前記サイクルレ
ベル・シミュレーション処理では、前記第1の情報を、
パイプラインステージに共通する処理に関する第2の情
報に基づきシミュレートするプログラム。 - 【請求項30】 請求項27において、汎用処理を実行
可能な汎用処理部および特定のデータ処理に特化した専
用処理部を備えた前記プロセッサのシミュレーションを
行う前記プログラムであって、 前記アプリケーションプログラムに含まれる、前記汎用
処理部における処理を規定する汎用命令セットの各パイ
プラインステージを、前記サイクルレベル・シミュレー
ション処理で管理可能な情報に変換する第1の変換処理
と、 前記アプリケーションプログラムに含まれる、前記専用
処理部における処理を規定する専用命令セットを前記サ
イクルレベル・シミュレーション処理で管理可能な情報
に変換する第2の変換処理とを実行するための命令をさ
らに有するプログラム。 - 【請求項31】 請求項27において、前記命令セット
は前記プロセッサでは実行されない疑似命令セットを備
えており、その疑似命令セットを前記サイクルレベル・
シミュレーション処理で管理可能な情報に変換する第3
の変換処理を実行するための命令をさらに有するプログ
ラム。 - 【請求項32】 請求項31において、前記疑似命令セ
ットにより、前記サイクルをカウントしない処理が実行
されるプログラム。 - 【請求項33】 請求項30において、前記アプリケー
ションプログラムは前記プロセッサでは実行されない疑
似命令セットを備えており、その疑似命令セットを前記
サイクルレベル・シミュレーション処理で管理可能な情
報に変換する第3の変換処理を実行可能であり、前記疑
似命令セットにより、前記汎用処理部および/または専
用処理部の処理をシミュレートした結果を前記サイクル
をカウントしないで評価する処理を実行するための命令
をさらに有するプログラム。 - 【請求項34】 命令サイクルが複数のパイプラインス
テージにより実行される複数の命令セットを備えたアプ
リケーションプログラムのプロセッサにおける動作をシ
ミュレートするシミュレーションプログラムに対し、前
記命令セットの各パイプラインステージを、前記シミュ
レーションプログラムで管理可能な情報に変換して提供
する処理を実行可能なライブラリプログラム。 - 【請求項35】 請求項34において、前記シミュレー
ションプログラムは、汎用処理を実行可能な汎用処理部
および特定のデータ処理に特化した専用処理部を備えた
前記プロセッサのシミュレーションを行い、 前記アプリケーションプログラムに含まれる、前記汎用
処理部における処理を規定する汎用命令セットの各パイ
プラインステージを、前記シミュレーションプログラム
で管理可能な情報に変換する第1の変換処理と、 前記アプリケーションプログラムに含まれる、前記専用
処理部における処理を規定する専用命令セットを前記シ
ミュレーションプログラムで管理可能な情報に変換する
第2の変換処理とを実行可能なライブラリプログラム。 - 【請求項36】 請求項34において、前記シミュレー
ションプログラムは、汎用処理を実行可能な汎用処理部
および特定のデータ処理に特化した専用処理部を備えた
前記プロセッサのシミュレーションを行い、 前記アプリケーションプログラムの、前記専用処理部に
おける処理を規定する専用命令セットを前記シミュレー
ションプログラムで管理可能な情報に変換する変換処理
を実行可能なライブラリプログラム。 - 【請求項37】 請求項36において、前記変換処理で
は、前記パイプラインステージのサイクルに対応する情
報であって、前記専用命令セットにより消費されるサイ
クルの情報を前記シミュレーションプログラムに提供す
るライブラリプログラム。 - 【請求項38】 請求項36において、前記変換処理で
は、前記専用処理部の状態を、前記パイプラインステー
ジのサイクルの単位で前記シミュレーションプログラム
に提供するライブラリプログラム。 - 【請求項39】 請求項36において、前記変換処理で
変換される情報は、前記プロセッサの動作を規定する仕
様のうち、前記専用命令セットにより実行される範囲の
前記仕様が、その仕様を記述したオリジナルの言語と異
なる言語に変換された後にコンパイルされたモジュール
により提供されるライブラリプログラム。 - 【請求項40】 請求項34において、前記アプリケー
ションプログラムは前記プロセッサでは実行されない疑
似命令セットを備えており、その疑似命令セットを前記
シミュレートプログラムで管理可能な情報に変換する第
3の変換処理をさらに実行可能なライブラリプログラ
ム。 - 【請求項41】 請求項40において、前記疑似命令セ
ットは、前記パイプラインステージのサイクルをカウン
トしない処理を規定するライブラリプログラム。 - 【請求項42】 命令サイクルが複数のパイプラインス
テージにより実行される複数の命令セットを備えたアプ
リケーションプログラムを、前記命令セットが、前記パ
イプラインステージに分割された記述で表されたシミュ
レーションモデルに変換する処理を実行可能な命令を有
するプログラム。 - 【請求項43】 命令サイクルが複数のパイプラインス
テージにより実行される複数の命令セットを備えたアプ
リケーションプログラムのプロセッサの設計システムで
あって、前記アプリケーションプログラムの動作を前記
パイプラインステージのサイクルでシミュレートするサ
イクルレベル・シミュレーション手段を有する設計シス
テム。 - 【請求項44】 請求項43において、汎用処理を実行
可能な汎用処理部および特定のデータ処理に特化した専
用処理部を備えた前記プロセッサを対象とする設計シス
テムであって、 前記アプリケーションプログラムの、前記汎用処理部に
おける処理を規定する汎用命令セットの各パイプライン
ステージを、前記サイクルレベル・シミュレーション手
段で管理可能な情報に変換し、前記アプリケーションプ
ログラムの、前記専用処理部における処理を規定する専
用命令セットを専用命令ライブラリに基づき前記サイク
ルレベル・シミュレーション手段で管理可能な情報に変
換して前記サイクルレベル・シミュレーション手段によ
りシミュレートする手段と、 さらに、前記プロセッサの動作を規定する仕様から前記
専用命令セットにより実行される範囲を抽出し、その範
囲を前記専用命令セットに置き換えると共に、前記専用
命令ライブラリを作成する手段を有する設計システム。 - 【請求項45】 請求項44において、さらに、前記専
用命令ライブラリをRTLに変換する手段と、 前記汎用命令セットを、その汎用命令セットの各パイプ
ラインステージを前記サイクルレベル・シミュレーショ
ン手段で管理可能な情報に変換し、前記専用命令セット
をRTLに変換された前記専用命令ライブラリに基づき
前記サイクルレベル・シミュレーション手段で管理可能
な情報に変換して前記サイクルレベル・シミュレーショ
ン手段によりシミュレートする手段を有する設計システ
ム。 - 【請求項46】 請求項43において、汎用処理を実行
可能な汎用処理部および特定のデータ処理に特化した専
用処理部を備えた前記プロセッサを対象とする設計シス
テムであって、 前記プロセッサの動作を規定する仕様に基づく命令に、
前記パイプラインステージのサイクルをカウントしない
疑似命令セットであって、シミュレート状況を評価する
疑似命令セットを加えた状態で前記サイクルレベル・シ
ミュレーション手段によりシミュレートする第1の手段
と、 前記命令のうちの前記汎用処理部における処理を規定す
る汎用命令セットの各パイプラインステージを、前記サ
イクルレベル・シミュレーション手段で管理可能な情報
に変換し、前記命令のうちの前記専用処理部における処
理を規定する専用命令セットを専用命令ライブラリに基
づき前記サイクルレベル・シミュレーション手段で管理
可能な情報に変換し、前記疑似命令セットを疑似命令ラ
イブラリに基づき前記サイクルレベル・シミュレーショ
ン手段で管理可能な情報に変換して前記サイクルレベル
・シミュレーション手段によりシミュレートする第2の
手段と、 さらに、前記プロセッサの動作を規定する仕様から前記
専用命令セットにより実行される範囲を抽出し、その範
囲を前記専用命令セットに置き換えると共に、前記専用
命令ライブラリを作成する手段を有する設計システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002103219A JP4152659B2 (ja) | 2001-04-06 | 2002-04-05 | データ処理システムおよび設計システム |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001107957 | 2001-04-06 | ||
JP2001-107957 | 2001-04-06 | ||
JP2001353042 | 2001-11-19 | ||
JP2001-353042 | 2001-11-19 | ||
JP2002103219A JP4152659B2 (ja) | 2001-04-06 | 2002-04-05 | データ処理システムおよび設計システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003216678A true JP2003216678A (ja) | 2003-07-31 |
JP4152659B2 JP4152659B2 (ja) | 2008-09-17 |
Family
ID=27670169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002103219A Expired - Fee Related JP4152659B2 (ja) | 2001-04-06 | 2002-04-05 | データ処理システムおよび設計システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4152659B2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006022204A1 (ja) * | 2004-08-23 | 2006-03-02 | Pacific Design Inc. | ソースプログラムの分析装置および方法 |
JP2007048020A (ja) * | 2005-08-10 | 2007-02-22 | Sony Computer Entertainment Inc | エミュレーション方法、エミュレータ、コンピュータ組込型デバイスおよびエミュレータ用プログラム |
JP2007048019A (ja) * | 2005-08-10 | 2007-02-22 | Sony Computer Entertainment Inc | エミュレーション方法、エミュレータ、コンピュータ組込型デバイスおよびエミュレータ用プログラム |
JP2007286671A (ja) * | 2006-04-12 | 2007-11-01 | Fujitsu Ltd | ソフトウェア/ハードウェア分割プログラム、および分割方法。 |
US9147016B2 (en) | 2010-08-20 | 2015-09-29 | International Business Machines Corporation | Multi-ECU simulation by using 2-layer peripherals with look-ahead time |
-
2002
- 2002-04-05 JP JP2002103219A patent/JP4152659B2/ja not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006022204A1 (ja) * | 2004-08-23 | 2006-03-02 | Pacific Design Inc. | ソースプログラムの分析装置および方法 |
JPWO2006022204A1 (ja) * | 2004-08-23 | 2008-05-08 | パシフィック・デザイン株式会社 | ソースプログラムの分析装置および方法 |
JP4866241B2 (ja) * | 2004-08-23 | 2012-02-01 | 株式会社ガイア・システム・ソリューション | ソースプログラムの分析装置 |
JP2007048020A (ja) * | 2005-08-10 | 2007-02-22 | Sony Computer Entertainment Inc | エミュレーション方法、エミュレータ、コンピュータ組込型デバイスおよびエミュレータ用プログラム |
JP2007048019A (ja) * | 2005-08-10 | 2007-02-22 | Sony Computer Entertainment Inc | エミュレーション方法、エミュレータ、コンピュータ組込型デバイスおよびエミュレータ用プログラム |
JP2007286671A (ja) * | 2006-04-12 | 2007-11-01 | Fujitsu Ltd | ソフトウェア/ハードウェア分割プログラム、および分割方法。 |
US7908592B2 (en) | 2006-04-12 | 2011-03-15 | Fujitsu Semiconductor Limited | Software/hardware partitioning program and method |
US9147016B2 (en) | 2010-08-20 | 2015-09-29 | International Business Machines Corporation | Multi-ECU simulation by using 2-layer peripherals with look-ahead time |
Also Published As
Publication number | Publication date |
---|---|
JP4152659B2 (ja) | 2008-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Hoffmann et al. | A novel methodology for the design of application-specific instruction-set processors (ASIPs) using a machine description language | |
JP3835754B2 (ja) | 集積回路の設計方法及びそれによって設計された集積回路 | |
Gupta | Co-synthesis of hardware and software for digital embedded systems | |
US20020152061A1 (en) | Data processing system and design system | |
US7565631B1 (en) | Method and system for translating software binaries and assembly code onto hardware | |
EP0853792B1 (en) | Method of producing a digital signal processor | |
Leupers et al. | Generation of interpretive and compiled instruction set simulators | |
US20070277130A1 (en) | System and method for architecture verification | |
EP1229461A2 (en) | System LSI development apparatus and the method thereof for developing a system optimal to an application | |
US20060190860A1 (en) | Method and system for debugging using replicated logic and trigger logic | |
US7702499B1 (en) | Systems and methods for performing software performance estimations | |
US7523029B2 (en) | Logic verification and logic cone extraction technique | |
Chattopadhyay et al. | LISA: A uniform ADL for embedded processor modeling, implementation, and software toolsuite generation | |
US7086047B1 (en) | Determining hardware generated by high level language compilation through loop optimizations | |
Fauth | Beyond tool-specific machine descriptions | |
US7373638B1 (en) | Automatic generation of structure and control path using hardware description language | |
Garavel et al. | Verification of an industrial SystemC/TLM model using LOTOS and CADP | |
US20030237078A1 (en) | Incorporating simulation analysis instrumentation into HDL models | |
Mizuno et al. | Design methodology and system for a configurable media embedded processor extensible to VLIW architecture | |
JP4152659B2 (ja) | データ処理システムおよび設計システム | |
US7111274B1 (en) | Scheduling hardware generated by high level language compilation to preserve functionality of source code design implementations | |
Halambi et al. | Automatic software toolkit generation for embedded systems-on-chip | |
JP2006190085A (ja) | デジタル回路のモデリング方法及び設計方法 | |
Reshadi et al. | Interrupt and low-level programming support for expanding the application domain of statically-scheduled horizontal-microcoded architectures in embedded systems | |
Wirthlin et al. | Synthesizing RTL hardware from Java byte codes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050117 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071128 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080128 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20080228 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080305 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080520 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080612 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080702 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110711 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140711 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S802 | Written request for registration of partial abandonment of right |
Free format text: JAPANESE INTERMEDIATE CODE: R311802 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |