JPH1021122A - プロセッサモニタ装置 - Google Patents
プロセッサモニタ装置Info
- Publication number
- JPH1021122A JPH1021122A JP8176417A JP17641796A JPH1021122A JP H1021122 A JPH1021122 A JP H1021122A JP 8176417 A JP8176417 A JP 8176417A JP 17641796 A JP17641796 A JP 17641796A JP H1021122 A JPH1021122 A JP H1021122A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- bit width
- data
- variable
- address
- 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
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】
【課題】 プログラムの実行に影響を与えないで、プロ
グラムの変数のビット幅の最大値と変数の更新回数とを
モニタするプロセッサモニタ装置を得る。 【解決手段】 この発明のプロセッサモニタ装置は、プ
ロセッサのデータメモリのロケーションと同一アドレス
でアクセスされる複数のロケーションを持つビット幅メ
モリを備え、各ロケーションには、同一アドレスでアク
セスされるデータメモリのロケーションに記憶される変
数が要求するビット幅の最大値を記憶する。更に、上記
ビット幅メモリと同様に構成された度数メモリを備え、
度数メモリの各ロケーションには、同一アドレスでアク
セスされるデータメモリ内の変数が更新された回数(更
新度数)を記憶する。更に収集したデータをビット幅対
更新度数のヒストグラムで表示する。
グラムの変数のビット幅の最大値と変数の更新回数とを
モニタするプロセッサモニタ装置を得る。 【解決手段】 この発明のプロセッサモニタ装置は、プ
ロセッサのデータメモリのロケーションと同一アドレス
でアクセスされる複数のロケーションを持つビット幅メ
モリを備え、各ロケーションには、同一アドレスでアク
セスされるデータメモリのロケーションに記憶される変
数が要求するビット幅の最大値を記憶する。更に、上記
ビット幅メモリと同様に構成された度数メモリを備え、
度数メモリの各ロケーションには、同一アドレスでアク
セスされるデータメモリ内の変数が更新された回数(更
新度数)を記憶する。更に収集したデータをビット幅対
更新度数のヒストグラムで表示する。
Description
【0001】
【発明の属する技術分野】この発明は、コンピュータの
分野に関するものである。特に、プログラム実行中にプ
ログラムの変数の値を保持するために必要とするCPU
ビット幅の最大値を求めるために、また、プログラムの
変数の値を保持するために必要とするCPUビット幅の
分布を確認するために、CPUのデータオペランドのモ
ニタを行うプロセッサモニタ装置に関するものである。
分野に関するものである。特に、プログラム実行中にプ
ログラムの変数の値を保持するために必要とするCPU
ビット幅の最大値を求めるために、また、プログラムの
変数の値を保持するために必要とするCPUビット幅の
分布を確認するために、CPUのデータオペランドのモ
ニタを行うプロセッサモニタ装置に関するものである。
【0002】
従来例1.データの最大値を検出するためのハードウェ
アに関する従来の技術として特開平3−103969号
公報に開示された「信号処理プロセッサ」がある。図1
2は、特開平3−103969号公報に開示された「信
号処理プロセッサ」の概略ブロック図である。図におい
て、901は、I/O(インプット/アウトプット)ポ
ート902を通過するデータを監視するデータ監視部で
あり、902はデータを入出力するI/Oポート、90
3はデータバス、904はデータを蓄えるデータメモ
リ、905はデータとデータを乗算する乗算器、906
は乗算結果とデータを加算する加算器、907はこの信
号処理プロセッサのプログラムが入るプログラムメモ
リ、908はこの信号処理プロセッサ全体を制御する制
御回路である。図13は、図12におけるデータ監視部
901とI/Oポート902の内部のブロック図であ
る。図において、901Aはデータを一つ蓄えておくデ
ータレジスタ、901Bはデータレジスタ901Aと比
較器901Cを制御する制御レジスタ、901Dは比較
器901Cの出力によって、I/Oポート902内のバ
ッファ902Aよりのデータとデータレジスタ901A
のデータを選択し出力するセレクタ、902B,902
Cはそれぞれ、データメモリ904,データバス903
に対するゲートである。ここで、バッファ902A及び
ゲート902B,902Cは、I/Oポートを構成し、
データレジスタ901A、制御レジスタ901B、比較
器901C、及びセレクタ901Dは、データ監視部9
01を構成している。次に、動作について説明する。プ
ログラムメモリ907のプログラムにより、まず、デー
タ監視部901内の制御レジスタ901Bに初期化命令
を送り、更に、最大値、絶対最大値等のどの値を検出す
るかを決定する信号を送り、データレジスタ901Aと
比較器901Cの初期化を行う。初期化後、I/Oポー
ト902から複数個のデータをデータメモリ904に受
け取る。この間、データ監視部は比較器901Cにおい
て、I/Oポート902を通過するデータとデータレジ
スタ901Aの内容とを比較し、一つのデータの比較が
終了する度に、その値の大きい方をデータレジスタ90
1Aに蓄える。すると、全てのデータの受け取りが終了
したとき、データレジスタ901Aには受け取った複数
のデータの最大値が蓄えられる。データの正規化を行う
際には、このデータ監視部901内のデータレジスタ9
01Aに蓄えられている最大値を読み出して用いる。
アに関する従来の技術として特開平3−103969号
公報に開示された「信号処理プロセッサ」がある。図1
2は、特開平3−103969号公報に開示された「信
号処理プロセッサ」の概略ブロック図である。図におい
て、901は、I/O(インプット/アウトプット)ポ
ート902を通過するデータを監視するデータ監視部で
あり、902はデータを入出力するI/Oポート、90
3はデータバス、904はデータを蓄えるデータメモ
リ、905はデータとデータを乗算する乗算器、906
は乗算結果とデータを加算する加算器、907はこの信
号処理プロセッサのプログラムが入るプログラムメモ
リ、908はこの信号処理プロセッサ全体を制御する制
御回路である。図13は、図12におけるデータ監視部
901とI/Oポート902の内部のブロック図であ
る。図において、901Aはデータを一つ蓄えておくデ
ータレジスタ、901Bはデータレジスタ901Aと比
較器901Cを制御する制御レジスタ、901Dは比較
器901Cの出力によって、I/Oポート902内のバ
ッファ902Aよりのデータとデータレジスタ901A
のデータを選択し出力するセレクタ、902B,902
Cはそれぞれ、データメモリ904,データバス903
に対するゲートである。ここで、バッファ902A及び
ゲート902B,902Cは、I/Oポートを構成し、
データレジスタ901A、制御レジスタ901B、比較
器901C、及びセレクタ901Dは、データ監視部9
01を構成している。次に、動作について説明する。プ
ログラムメモリ907のプログラムにより、まず、デー
タ監視部901内の制御レジスタ901Bに初期化命令
を送り、更に、最大値、絶対最大値等のどの値を検出す
るかを決定する信号を送り、データレジスタ901Aと
比較器901Cの初期化を行う。初期化後、I/Oポー
ト902から複数個のデータをデータメモリ904に受
け取る。この間、データ監視部は比較器901Cにおい
て、I/Oポート902を通過するデータとデータレジ
スタ901Aの内容とを比較し、一つのデータの比較が
終了する度に、その値の大きい方をデータレジスタ90
1Aに蓄える。すると、全てのデータの受け取りが終了
したとき、データレジスタ901Aには受け取った複数
のデータの最大値が蓄えられる。データの正規化を行う
際には、このデータ監視部901内のデータレジスタ9
01Aに蓄えられている最大値を読み出して用いる。
【0003】以上のように、この従来例においては、信
号処理プロセッサに、I/Oポート902を通過するデ
ータを監視し、通過した複数のデータの最大値あるいは
絶対最大値等を検出するデータ監視部901を設けたこ
とにより、限られた時間内での信号処理時間が短縮で
き、別の処理の追加、あるいはより多くのデータの処理
が可能となるなど、処理能力の向上を実現している。だ
が、この従来例においては、通過した複数のデータの最
大値あるいは絶対最大値等を検出する技術は開示されて
いるが、各変数毎にその最大値を求め、変数の更新度数
とのヒストグラムを表示する技術についてはなにも示唆
されていない。
号処理プロセッサに、I/Oポート902を通過するデ
ータを監視し、通過した複数のデータの最大値あるいは
絶対最大値等を検出するデータ監視部901を設けたこ
とにより、限られた時間内での信号処理時間が短縮で
き、別の処理の追加、あるいはより多くのデータの処理
が可能となるなど、処理能力の向上を実現している。だ
が、この従来例においては、通過した複数のデータの最
大値あるいは絶対最大値等を検出する技術は開示されて
いるが、各変数毎にその最大値を求め、変数の更新度数
とのヒストグラムを表示する技術についてはなにも示唆
されていない。
【0004】従来例2.次に、従来の、デジタル処理に
よる制御に用いられる特定用途向けLSI(ASIC:
Application Specific Inte
gratedCircuit)を実現するプロセッサ合
成システムについて述べる。実現されたASICは、制
御機器のコントローラ部、マルチメディア機器のシーケ
ンスコントローラ部、家電製品のコントローラ部等に用
いられる。従来のASICにおいては、汎用のマイクロ
プロセッサが中央演算処理ユニット(CPU:Cent
ral Processing Unit)として内蔵
されていた。汎用のマイクロプロセッサを用いる場合、
市販のマイクロプロセッサをそのまま利用できるという
簡便さはあるが、既存のハードウェアに依存するという
欠点もあった。具体的には、例えば、既存のハードウェ
アはCPUビット幅が、8ビット、16ビット、32ビ
ット...という2のn乗で設計されている。そのた
め、比較的規模の小さいコントローラ部で、制御論理も
加減演算やビット制御等を主体としたシンプルな論理で
ある場合、未使用の機能を持つという欠点があった。例
えば、制御論理を10ビットのCPUビット幅で十分実
現できる場合、汎用のマイクロプロセッサには10ビッ
トのマイクロプロセッサがないことから16ビットマイ
クロプロセッサを用いることになり、6ビットが未使用
となる。また、CPUビット幅は、直接チップ全体の大
きさに影響する。それゆえ、未使用の6ビットを持つC
PUを搭載したチップは冗長性の高いチップになるとい
う欠点がある。このため、実現しようとする機能に最適
なビット幅のCPUを合成できるシステムが望まれてい
た。
よる制御に用いられる特定用途向けLSI(ASIC:
Application Specific Inte
gratedCircuit)を実現するプロセッサ合
成システムについて述べる。実現されたASICは、制
御機器のコントローラ部、マルチメディア機器のシーケ
ンスコントローラ部、家電製品のコントローラ部等に用
いられる。従来のASICにおいては、汎用のマイクロ
プロセッサが中央演算処理ユニット(CPU:Cent
ral Processing Unit)として内蔵
されていた。汎用のマイクロプロセッサを用いる場合、
市販のマイクロプロセッサをそのまま利用できるという
簡便さはあるが、既存のハードウェアに依存するという
欠点もあった。具体的には、例えば、既存のハードウェ
アはCPUビット幅が、8ビット、16ビット、32ビ
ット...という2のn乗で設計されている。そのた
め、比較的規模の小さいコントローラ部で、制御論理も
加減演算やビット制御等を主体としたシンプルな論理で
ある場合、未使用の機能を持つという欠点があった。例
えば、制御論理を10ビットのCPUビット幅で十分実
現できる場合、汎用のマイクロプロセッサには10ビッ
トのマイクロプロセッサがないことから16ビットマイ
クロプロセッサを用いることになり、6ビットが未使用
となる。また、CPUビット幅は、直接チップ全体の大
きさに影響する。それゆえ、未使用の6ビットを持つC
PUを搭載したチップは冗長性の高いチップになるとい
う欠点がある。このため、実現しようとする機能に最適
なビット幅のCPUを合成できるシステムが望まれてい
た。
【0005】次に、従来の論理合成システムについて説
明する。図14及び図15は、従来の論理合成システム
である「つつじ」(株式会社図研製)の使用形態を示す
図である。図14において、「つつじ」850は、設計
者がCAD(ComputerAided Desig
n)システム等を用いて作成したブロックダイアグラム
810を入力し、論理合成を行い、ネットリスト860
を出力する。出力されたネットリストをもとに半導体チ
ップが製造される。図15は、入力がブロックダイアグ
ラムでなくハードウェア記述言語(HDL:Hardw
are Description Language)
が用いられる場合を示している。「つつじ」のHDL
は、LDF(Logic Description F
ormat)である。「つつじ」850は、LDF82
0を入力し、論理合成を行い、ネットリスト860を出
力する。この論理合成システム「つつじ」においては、
入力で使う機能部品がメーカに依存せず、出力のネット
リストが特定の半導体メーカのフォーマットで生成でき
るため、半導体テクノロジーに依存しないチップの設計
ができる。
明する。図14及び図15は、従来の論理合成システム
である「つつじ」(株式会社図研製)の使用形態を示す
図である。図14において、「つつじ」850は、設計
者がCAD(ComputerAided Desig
n)システム等を用いて作成したブロックダイアグラム
810を入力し、論理合成を行い、ネットリスト860
を出力する。出力されたネットリストをもとに半導体チ
ップが製造される。図15は、入力がブロックダイアグ
ラムでなくハードウェア記述言語(HDL:Hardw
are Description Language)
が用いられる場合を示している。「つつじ」のHDL
は、LDF(Logic Description F
ormat)である。「つつじ」850は、LDF82
0を入力し、論理合成を行い、ネットリスト860を出
力する。この論理合成システム「つつじ」においては、
入力で使う機能部品がメーカに依存せず、出力のネット
リストが特定の半導体メーカのフォーマットで生成でき
るため、半導体テクノロジーに依存しないチップの設計
ができる。
【0006】現在までの従来のコンピュータアーキテク
チャは、固定のCPUビット幅で実現されてきた。その
ため、ソフトウェア設計者及びハードウェア設計者は、
先験的に、CPUビット幅は、特定のCPUアーキテク
チャに従って固定であるものだと考えていた。それゆ
え、固定のCPUビット幅に合わせて、ソフトウェアと
ハードウェアの開発を設計していた。
チャは、固定のCPUビット幅で実現されてきた。その
ため、ソフトウェア設計者及びハードウェア設計者は、
先験的に、CPUビット幅は、特定のCPUアーキテク
チャに従って固定であるものだと考えていた。それゆ
え、固定のCPUビット幅に合わせて、ソフトウェアと
ハードウェアの開発を設計していた。
【0007】ところが、平成8年3月15日付けで本発
明と同一出願人により特許庁に出願された特願平08−
058749号「プロセッサ合成システム及びプロセッ
サ合成方法」(本発明出願日の時点では未公開)によれ
ば、CPUビット幅は、もはや固定のパラメータではな
くなった。システムの設計者は、プロセッサの構成を決
定する際に、そのプロセッサで実行されるプログラムに
合わせて、CPUビット幅を設定することが可能となっ
た。この「プロセッサ合成システム及びプロセッサ合成
方法」では、論理合成システムの一例として、前述した
「つつじ」を使用する場合について説明しているが、
「つつじ」の代りに他の論理合成システムを適用しても
構わない。また、アプリケーションソフトウェアを記述
する高級言語の一例として、C言語で記述する場合につ
いて説明しているが、他の言語でも構わない。この出願
の「プロセッサ合成システム及びプロセッサ合成方法」
により合成されるプロセッサをASAP(Applic
ation Specific Adaptable
Processor)という。また、この出願のプロセ
ッサ合成システムをASAP合成システムという。後述
する、この発明のプロセッサモニタ装置も、ASAP合
成システムの一部である。まず、ASAP合成システム
の概略について述べる。ASAP(Applicati
on Specific AdaptableProc
essor)合成システムは、「つつじ」論理合成シス
テムの高位論理合成の拡張である。ASAP合成システ
ムは、設計者により与えられる一次パラメータに従って
CPUを合成するためのシステムである。CPUを合成
するための一次パラメータは、CPUビット幅、レジス
タファイルのレジスタ数、データメモリサイズ及び命令
メモリサイズ(インストラクションメモリサイズ)であ
る。これらの一次パラメータはすべて、合成されるプロ
セッサのコストに直接影響する。ASAP合成システム
によるプロセッサは、ASICと同じテクノロジーを用
いて合成される。プロセッサ以外の他の部分もASIC
テクノロジーで作成される。このように、ASAP合成
システムの半導体チップは、プロセッサと他の部分(C
PU以外の周辺機器部分)とが同一のテクノロジーで合
成されるので、シミュレーションが容易である。また、
プロセッサがASICと同じテクノロジーを用いて合成
されるので、他のテクノロジーへのポータビリティの問
題が排除される。また、この出願によるプロセッサは、
CPUビット幅を、用途の要求に応じてカスタマイズす
るので、最大のコスト効率が得られる。例えば、所定の
アプリケーションに11ビットのプロセッサが必要とさ
れるとき、従来メガセルを用いていたときのように16
ビットや32ビットのプロセッサではなく、11ビット
のプロセッサが合成される。
明と同一出願人により特許庁に出願された特願平08−
058749号「プロセッサ合成システム及びプロセッ
サ合成方法」(本発明出願日の時点では未公開)によれ
ば、CPUビット幅は、もはや固定のパラメータではな
くなった。システムの設計者は、プロセッサの構成を決
定する際に、そのプロセッサで実行されるプログラムに
合わせて、CPUビット幅を設定することが可能となっ
た。この「プロセッサ合成システム及びプロセッサ合成
方法」では、論理合成システムの一例として、前述した
「つつじ」を使用する場合について説明しているが、
「つつじ」の代りに他の論理合成システムを適用しても
構わない。また、アプリケーションソフトウェアを記述
する高級言語の一例として、C言語で記述する場合につ
いて説明しているが、他の言語でも構わない。この出願
の「プロセッサ合成システム及びプロセッサ合成方法」
により合成されるプロセッサをASAP(Applic
ation Specific Adaptable
Processor)という。また、この出願のプロセ
ッサ合成システムをASAP合成システムという。後述
する、この発明のプロセッサモニタ装置も、ASAP合
成システムの一部である。まず、ASAP合成システム
の概略について述べる。ASAP(Applicati
on Specific AdaptableProc
essor)合成システムは、「つつじ」論理合成シス
テムの高位論理合成の拡張である。ASAP合成システ
ムは、設計者により与えられる一次パラメータに従って
CPUを合成するためのシステムである。CPUを合成
するための一次パラメータは、CPUビット幅、レジス
タファイルのレジスタ数、データメモリサイズ及び命令
メモリサイズ(インストラクションメモリサイズ)であ
る。これらの一次パラメータはすべて、合成されるプロ
セッサのコストに直接影響する。ASAP合成システム
によるプロセッサは、ASICと同じテクノロジーを用
いて合成される。プロセッサ以外の他の部分もASIC
テクノロジーで作成される。このように、ASAP合成
システムの半導体チップは、プロセッサと他の部分(C
PU以外の周辺機器部分)とが同一のテクノロジーで合
成されるので、シミュレーションが容易である。また、
プロセッサがASICと同じテクノロジーを用いて合成
されるので、他のテクノロジーへのポータビリティの問
題が排除される。また、この出願によるプロセッサは、
CPUビット幅を、用途の要求に応じてカスタマイズす
るので、最大のコスト効率が得られる。例えば、所定の
アプリケーションに11ビットのプロセッサが必要とさ
れるとき、従来メガセルを用いていたときのように16
ビットや32ビットのプロセッサではなく、11ビット
のプロセッサが合成される。
【0008】
【発明が解決しようとする課題】前述したように、CP
Uビット幅をパラメータとして与えることによりプロセ
ッサが合成される場合、実現しようとする機能に最適な
CPUビット幅を求める必要が出てくる。実現しようと
する機能に最適なCPUビット幅を求めるために、機能
を達成するために書かれたプログラムの全ての変数のビ
ット幅を統計的に調査するプログラムのモニタが必要で
ある。従来技術においては、このようなアプリケーショ
ンプログラムの統計的情報を得るためには、ソフトウェ
アで実現された言語インタープリータが使用された。こ
こでいう『言語』とは、C言語のような高級言語やマシ
ンレベルのアセンブリ言語といったコンピュータ用のプ
ログラミング言語である。図16は、プロセッサモニタ
機能を実現した言語インタープリータを説明する図であ
る。言語インタープリータ920は、アプリケーション
プログラム910のコンピュータ言語の記述に対応する
CPUの動作をエミュレートするプログラムである。言
語インタープリータのソフトウェア制御により、プログ
ラム言語の各文(912,914)は、CPUと同様
に、フェッチ(922)され、実行(924)される。
言語インタープリータにとって、アプリケーションプロ
グラムに関する統計情報を収集する機能を持つことは容
易である。アプリケーションプログラムに関する統計情
報とは、プログラムで使用されている変数の数、各変数
の絶対最大値(即ち、変数を表現するのに必要なビット
数)および変数の使用頻度である。収集された統計情報
は、ビット幅テーブルに記憶され、データ集計(94
0)によりビット幅と更新回数を示すヒストグラム95
0が表示される。
Uビット幅をパラメータとして与えることによりプロセ
ッサが合成される場合、実現しようとする機能に最適な
CPUビット幅を求める必要が出てくる。実現しようと
する機能に最適なCPUビット幅を求めるために、機能
を達成するために書かれたプログラムの全ての変数のビ
ット幅を統計的に調査するプログラムのモニタが必要で
ある。従来技術においては、このようなアプリケーショ
ンプログラムの統計的情報を得るためには、ソフトウェ
アで実現された言語インタープリータが使用された。こ
こでいう『言語』とは、C言語のような高級言語やマシ
ンレベルのアセンブリ言語といったコンピュータ用のプ
ログラミング言語である。図16は、プロセッサモニタ
機能を実現した言語インタープリータを説明する図であ
る。言語インタープリータ920は、アプリケーション
プログラム910のコンピュータ言語の記述に対応する
CPUの動作をエミュレートするプログラムである。言
語インタープリータのソフトウェア制御により、プログ
ラム言語の各文(912,914)は、CPUと同様
に、フェッチ(922)され、実行(924)される。
言語インタープリータにとって、アプリケーションプロ
グラムに関する統計情報を収集する機能を持つことは容
易である。アプリケーションプログラムに関する統計情
報とは、プログラムで使用されている変数の数、各変数
の絶対最大値(即ち、変数を表現するのに必要なビット
数)および変数の使用頻度である。収集された統計情報
は、ビット幅テーブルに記憶され、データ集計(94
0)によりビット幅と更新回数を示すヒストグラム95
0が表示される。
【0009】この方法の欠点の一つは、ソフトウェア
(言語インタープリータ)がCPUの実際のハードウェ
アとアプリケーションプログラムの間に入るので、処理
が遅くなるということである。変数の値がアプリケーシ
ョンプログラムの実行時間によって変化する場合、ソフ
トウェア(言語インタープリータ)が存在することによ
り、正しいモニタを行えなくなる。他の欠点としては、
CPUとともに使用される言語の種類毎に言語インター
プリータが記述されなければならないという点がある。
(言語インタープリータ)がCPUの実際のハードウェ
アとアプリケーションプログラムの間に入るので、処理
が遅くなるということである。変数の値がアプリケーシ
ョンプログラムの実行時間によって変化する場合、ソフ
トウェア(言語インタープリータ)が存在することによ
り、正しいモニタを行えなくなる。他の欠点としては、
CPUとともに使用される言語の種類毎に言語インター
プリータが記述されなければならないという点がある。
【0010】この発明は、上記のような問題点を解決す
るためになされたものであり、ハードウェア設計をする
上で、設計シミュレーションやエミュレーションのスピ
ードを遅くすることなくアプリケーションプログラムの
変数の統計データを収集するプロセッサモニタ装置を得
ることを目的としている。また、設計者に特別な言語イ
ンタープリータを記述する手間をかけずにCPUのモニ
タを可能にするプロセッサモニタ装置を得ることを目的
としている。
るためになされたものであり、ハードウェア設計をする
上で、設計シミュレーションやエミュレーションのスピ
ードを遅くすることなくアプリケーションプログラムの
変数の統計データを収集するプロセッサモニタ装置を得
ることを目的としている。また、設計者に特別な言語イ
ンタープリータを記述する手間をかけずにCPUのモニ
タを可能にするプロセッサモニタ装置を得ることを目的
としている。
【0011】
【課題を解決するための手段】この発明のプロセッサモ
ニタ装置は、上記プログラムの実行中に上記変数の値を
記憶するデータメモリと、上記データメモリに記憶され
る上記変数の値を表すために必要な上記変数のビット幅
を検出する有意ビット検出部と、上記有意ビット検出部
により検出された上記変数のビット幅を入力し、過去に
入力したビット幅と比較してその最大値を判定して出力
する最大値判定部と、上記最大値判定部により判定され
た上記変数のビット幅の最大値を記憶するビット幅メモ
リとを備えたことを特徴とする。
ニタ装置は、上記プログラムの実行中に上記変数の値を
記憶するデータメモリと、上記データメモリに記憶され
る上記変数の値を表すために必要な上記変数のビット幅
を検出する有意ビット検出部と、上記有意ビット検出部
により検出された上記変数のビット幅を入力し、過去に
入力したビット幅と比較してその最大値を判定して出力
する最大値判定部と、上記最大値判定部により判定され
た上記変数のビット幅の最大値を記憶するビット幅メモ
リとを備えたことを特徴とする。
【0012】上記最大値判定部は、上記有意ビット検出
部の出力に接続される第1の端子と、上記ビット幅メモ
リに記憶されたビット幅の最大値を入力する第2の端子
とを備えたことを特徴とする。
部の出力に接続される第1の端子と、上記ビット幅メモ
リに記憶されたビット幅の最大値を入力する第2の端子
とを備えたことを特徴とする。
【0013】上記データメモリとビット幅メモリとは、
同一のメモリアドレスで識別される複数の記憶位置をそ
れぞれ有し、上記データメモリが上記メモリアドレスで
識別された記憶位置に変数を記憶する毎に、上記ビット
幅メモリの同一のメモリアドレスで識別された記憶位置
に上記最大値判定部が判定したその変数のビット幅の最
大値を記憶することを特徴とする。
同一のメモリアドレスで識別される複数の記憶位置をそ
れぞれ有し、上記データメモリが上記メモリアドレスで
識別された記憶位置に変数を記憶する毎に、上記ビット
幅メモリの同一のメモリアドレスで識別された記憶位置
に上記最大値判定部が判定したその変数のビット幅の最
大値を記憶することを特徴とする。
【0014】上記プロセッサは、レジスタアドレスによ
り識別される1つ以上のレジスタからなるレジスタファ
イルを備え、上記レジスタファイルは上記データメモリ
から上記変数を転送して上記レジスタに記憶するととも
に、上記プロセッサモニタ装置は、上記変数を記憶する
レジスタを識別するレジスタアドレスを入力して上記デ
ータメモリ内で上記変数を記憶する記憶位置を識別する
データメモリアドレスに変換して出力するレジスタ関連
アドレステーブルと、上記レジスタに変数が記憶される
場合に、上記レジスタ関連アドレステーブルから出力さ
れるデータメモリアドレスを上記ビット幅メモリのメモ
リアドレスとするアドレスセレクタと、上記レジスタに
変数が記憶される場合に、レジスタに記憶される変数を
選択して上記有意ビット検出部に出力するデータセレク
タとを備えたことを特徴とする。
り識別される1つ以上のレジスタからなるレジスタファ
イルを備え、上記レジスタファイルは上記データメモリ
から上記変数を転送して上記レジスタに記憶するととも
に、上記プロセッサモニタ装置は、上記変数を記憶する
レジスタを識別するレジスタアドレスを入力して上記デ
ータメモリ内で上記変数を記憶する記憶位置を識別する
データメモリアドレスに変換して出力するレジスタ関連
アドレステーブルと、上記レジスタに変数が記憶される
場合に、上記レジスタ関連アドレステーブルから出力さ
れるデータメモリアドレスを上記ビット幅メモリのメモ
リアドレスとするアドレスセレクタと、上記レジスタに
変数が記憶される場合に、レジスタに記憶される変数を
選択して上記有意ビット検出部に出力するデータセレク
タとを備えたことを特徴とする。
【0015】上記プロセッサモニタ装置は、さらに、上
記プログラムの実行中に上記変数を更新した更新度数を
記憶する度数メモリと、上記度数メモリに記憶された上
記更新度数と上記ビット幅メモリに記憶された上記変数
のビット幅との度数分布図を生成して出力する度数分布
図出力部と、上記度数分布図出力部により出力された上
記度数分布図を表示する表示部を備えたことを特徴とす
る。
記プログラムの実行中に上記変数を更新した更新度数を
記憶する度数メモリと、上記度数メモリに記憶された上
記更新度数と上記ビット幅メモリに記憶された上記変数
のビット幅との度数分布図を生成して出力する度数分布
図出力部と、上記度数分布図出力部により出力された上
記度数分布図を表示する表示部を備えたことを特徴とす
る。
【0016】
実施の形態1.以下の実施の形態においては、プログラ
ム実行中のCPUビット幅をモニタし、CPUビット幅
の最大値を確定するプロセッサモニタ装置について述べ
る。まず、この発明のプロセッサモニタ装置を開発した
背景について述べる。
ム実行中のCPUビット幅をモニタし、CPUビット幅
の最大値を確定するプロセッサモニタ装置について述べ
る。まず、この発明のプロセッサモニタ装置を開発した
背景について述べる。
【0017】図1は、平成8年3月15日付けで本発明
と同一出願人により特許庁に出願された特願平08−0
58749号「プロセッサ合成システム及びプロセッサ
合成方法」(本発明出願日の時点では未公開)のブロッ
ク図である。パラメータ生成部100は、一次パラメー
タ10を入力して二次パラメータを生成して出力する。
入力する一次パラメータは、レジスタファイルのレジス
タ数12、CPUビット幅14、データメモリサイズ1
6、命令メモリサイズ18である。プロセッサ生成部1
30は、パラメータ生成部100により生成された二次
パラメータに従って、プロセッサ定義情報133を生成
し、出力する。出力されるプロセッサ定義情報133
は、ハードウェア定義言語(例えば、「つつじ」に入力
されるLDF:Logic Description
Language)で記述されている。出力されるプロ
セッサ定義情報133は、図1では省略されているが、
論理合成システム「つつじ」に入力され、ネットリスト
を出力するために使用される。プロセッサ生成部130
から出力されるプロセッサ定義情報133には、生成さ
れるCPUを定義する情報が含まれている。CPU17
0は、データメモリ172、複数のレジスタからなるレ
ジスタファイル174、ALU176及び命令メモリ1
78から構成されている。命令メモリを、以下、インス
トラクションメモリと呼ぶこともある。命令生成部15
0は、コンパイラ生成部155とアセンブラ生成部16
0を含む。コンパイラ生成部は、パラメータ生成部によ
り生成された二次パラメータに従って、プロセッサ生成
部により出力されるプロセッサ定義情報に対応するコン
パイラ157を生成する。また、アセンブラ生成部16
0は、パラメータ生成部により生成された二次パラメー
タに従って、プロセッサ生成部により出力されるプロセ
ッサ定義情報に対応するアセンブラ163を生成する。
生成されたコンパイラ157に、高級言語(C言語)で
記述されたアプリケーションソフトウェア153を入力
すると、コンパイル(翻訳)が行われ、中間言語である
コード159が出力される。出力されたコード159を
アセンブラ163に入力し、アセンブルすると、機械語
の命令コード165が出力される。このように生成され
た命令コード165は、プロセッサ定義情報に基づいて
生成されるCPUの命令メモリ178に保持され、実行
される。この出願の「プロセッサ合成システム」は、さ
らに、シミュレーション実行部167を備えており、生
成しようとするCPUを実際に製造する前に、生成され
た命令コードを用いて、シミュレーションを行うことが
できる。設計者は、シミュレーションの実行結果によ
り、一次パラメータを変更したり、アプリケーションソ
フトウェアを書き直したりして、生成するプロセッサを
最適化することができる。
と同一出願人により特許庁に出願された特願平08−0
58749号「プロセッサ合成システム及びプロセッサ
合成方法」(本発明出願日の時点では未公開)のブロッ
ク図である。パラメータ生成部100は、一次パラメー
タ10を入力して二次パラメータを生成して出力する。
入力する一次パラメータは、レジスタファイルのレジス
タ数12、CPUビット幅14、データメモリサイズ1
6、命令メモリサイズ18である。プロセッサ生成部1
30は、パラメータ生成部100により生成された二次
パラメータに従って、プロセッサ定義情報133を生成
し、出力する。出力されるプロセッサ定義情報133
は、ハードウェア定義言語(例えば、「つつじ」に入力
されるLDF:Logic Description
Language)で記述されている。出力されるプロ
セッサ定義情報133は、図1では省略されているが、
論理合成システム「つつじ」に入力され、ネットリスト
を出力するために使用される。プロセッサ生成部130
から出力されるプロセッサ定義情報133には、生成さ
れるCPUを定義する情報が含まれている。CPU17
0は、データメモリ172、複数のレジスタからなるレ
ジスタファイル174、ALU176及び命令メモリ1
78から構成されている。命令メモリを、以下、インス
トラクションメモリと呼ぶこともある。命令生成部15
0は、コンパイラ生成部155とアセンブラ生成部16
0を含む。コンパイラ生成部は、パラメータ生成部によ
り生成された二次パラメータに従って、プロセッサ生成
部により出力されるプロセッサ定義情報に対応するコン
パイラ157を生成する。また、アセンブラ生成部16
0は、パラメータ生成部により生成された二次パラメー
タに従って、プロセッサ生成部により出力されるプロセ
ッサ定義情報に対応するアセンブラ163を生成する。
生成されたコンパイラ157に、高級言語(C言語)で
記述されたアプリケーションソフトウェア153を入力
すると、コンパイル(翻訳)が行われ、中間言語である
コード159が出力される。出力されたコード159を
アセンブラ163に入力し、アセンブルすると、機械語
の命令コード165が出力される。このように生成され
た命令コード165は、プロセッサ定義情報に基づいて
生成されるCPUの命令メモリ178に保持され、実行
される。この出願の「プロセッサ合成システム」は、さ
らに、シミュレーション実行部167を備えており、生
成しようとするCPUを実際に製造する前に、生成され
た命令コードを用いて、シミュレーションを行うことが
できる。設計者は、シミュレーションの実行結果によ
り、一次パラメータを変更したり、アプリケーションソ
フトウェアを書き直したりして、生成するプロセッサを
最適化することができる。
【0018】図2は、「プロセッサ合成システム」が稼
働するハードウェア構成を示す図である。コンピュータ
システム6は、表示部6a、キーボード6b、マウス6
c、マウスパッド6d、システムユニット6eなどから
構成される。この実施の形態で説明するプロセッサモニ
タ装置も、図2に示すハードウェア構成を用いて動作す
る。
働するハードウェア構成を示す図である。コンピュータ
システム6は、表示部6a、キーボード6b、マウス6
c、マウスパッド6d、システムユニット6eなどから
構成される。この実施の形態で説明するプロセッサモニ
タ装置も、図2に示すハードウェア構成を用いて動作す
る。
【0019】また、前述したように、ASAP合成シス
テムは、高位設計とアルゴリズム記述の整合性をとるた
めに、C言語用のコンパイラ生成部を備えている。従来
のプロセッサは、1つの構成(命令フォーマット及びレ
ジスタ数等のハードウェア構成)しか持たなかったため
に、その構成(命令フォーマット及びレジスタ数等のハ
ードウェア構成)に対応する所定の言語のコンパイラを
1つ備えていれば十分であった。ASAPは、以下に述
べる同一の「基本アーキテクチャ」に基づく複数のCP
Uのバリエーションをとるので、合成されるCPUに適
合するコンパイラを提供するコンパイラ生成部(コンパ
イラジェネレータ)が必要である。コンパイラジェネレ
ータは、図1に示すプロセッサ生成部と同じパラメータ
を入力する。アプリケーションソフトウェアは、生成さ
れたC言語用のコンパイラでコンパイルされ、最終的に
機械語レベルの命令が、合成されるプロセッサの命令メ
モリ(インストラクションメモリ)にロードされる。
テムは、高位設計とアルゴリズム記述の整合性をとるた
めに、C言語用のコンパイラ生成部を備えている。従来
のプロセッサは、1つの構成(命令フォーマット及びレ
ジスタ数等のハードウェア構成)しか持たなかったため
に、その構成(命令フォーマット及びレジスタ数等のハ
ードウェア構成)に対応する所定の言語のコンパイラを
1つ備えていれば十分であった。ASAPは、以下に述
べる同一の「基本アーキテクチャ」に基づく複数のCP
Uのバリエーションをとるので、合成されるCPUに適
合するコンパイラを提供するコンパイラ生成部(コンパ
イラジェネレータ)が必要である。コンパイラジェネレ
ータは、図1に示すプロセッサ生成部と同じパラメータ
を入力する。アプリケーションソフトウェアは、生成さ
れたC言語用のコンパイラでコンパイルされ、最終的に
機械語レベルの命令が、合成されるプロセッサの命令メ
モリ(インストラクションメモリ)にロードされる。
【0020】この発明のプロセッサモニタ装置は、この
「プロセッサ合成システム及びプロセッサ合成方法」に
関連している。この発明のプロセッサモニタ装置も、A
SAPアーキテクチャの一部である。ASAPアーキテ
クチャは、プロセッサが高位合成プログラムにより生産
されるように設計されている。高位合成プログラムに与
えられるパラメータの一つは、CPUビット幅である。
プロセッサで実行される所定のプログラムに必要とされ
るCPUビット幅の最大値を確定するためには、上記所
定のプログラムの実行ロジックを忠実にシミュレーショ
ンし、モニタしなければならない。この発明は、所定の
プログラムで使用される全ての変数に関するCPUビッ
ト幅データと度数分布データを収集する。収集されたデ
ータは集計され、ヒストグラムで表示される。これらの
データを用いて、設計者は、所定のパフォーマンスを実
現する最もコストの安いCPU合成パラメータを決定で
きる。
「プロセッサ合成システム及びプロセッサ合成方法」に
関連している。この発明のプロセッサモニタ装置も、A
SAPアーキテクチャの一部である。ASAPアーキテ
クチャは、プロセッサが高位合成プログラムにより生産
されるように設計されている。高位合成プログラムに与
えられるパラメータの一つは、CPUビット幅である。
プロセッサで実行される所定のプログラムに必要とされ
るCPUビット幅の最大値を確定するためには、上記所
定のプログラムの実行ロジックを忠実にシミュレーショ
ンし、モニタしなければならない。この発明は、所定の
プログラムで使用される全ての変数に関するCPUビッ
ト幅データと度数分布データを収集する。収集されたデ
ータは集計され、ヒストグラムで表示される。これらの
データを用いて、設計者は、所定のパフォーマンスを実
現する最もコストの安いCPU合成パラメータを決定で
きる。
【0021】この発明は、可変の構成のCPUを設計す
るために、所定のアプリケーションプログラムの変数の
ダイナミックレンジを収集し、上記変数の更新の頻度の
データを収集する目的でCPUをモニタするプロセッサ
モニタ装置である。このプロセッサモニタ装置はCPU
のシミュレーションやエミュレーションのスピードを遅
くしないようハードウェアで設計されている。収集され
たデータは、二つの記憶部(メモリ)に記憶される。一
つは、ビット幅メモリである。ビット幅メモリには、C
PUのデータメモリのロケーション(記憶位置)と同一
アドレスでアクセスされる複数のロケーションがあり、
各ロケーションには、同一アドレスでアクセスされるデ
ータメモリのロケーションに記憶される変数が要求する
ビット幅の最大値を記憶する。二つ目は、度数メモリで
ある。度数メモリも上記ビット幅メモリと同様に構成さ
れ、CPUのデータメモリのロケーションと同一アドレ
スでアクセスされる複数のロケーションがある。度数メ
モリの各ロケーションには、同一アドレスでアクセスさ
れるCPUのデータメモリ内の変数が更新された回数
(更新度数)が記憶される。この2つの記憶部を用い
て、まず最初に、全ての変数のダイナミックレンジのデ
ータを収集する。ダイナミックレンジのデータとは、変
数が必要とするビット数の最大値である。
るために、所定のアプリケーションプログラムの変数の
ダイナミックレンジを収集し、上記変数の更新の頻度の
データを収集する目的でCPUをモニタするプロセッサ
モニタ装置である。このプロセッサモニタ装置はCPU
のシミュレーションやエミュレーションのスピードを遅
くしないようハードウェアで設計されている。収集され
たデータは、二つの記憶部(メモリ)に記憶される。一
つは、ビット幅メモリである。ビット幅メモリには、C
PUのデータメモリのロケーション(記憶位置)と同一
アドレスでアクセスされる複数のロケーションがあり、
各ロケーションには、同一アドレスでアクセスされるデ
ータメモリのロケーションに記憶される変数が要求する
ビット幅の最大値を記憶する。二つ目は、度数メモリで
ある。度数メモリも上記ビット幅メモリと同様に構成さ
れ、CPUのデータメモリのロケーションと同一アドレ
スでアクセスされる複数のロケーションがある。度数メ
モリの各ロケーションには、同一アドレスでアクセスさ
れるCPUのデータメモリ内の変数が更新された回数
(更新度数)が記憶される。この2つの記憶部を用い
て、まず最初に、全ての変数のダイナミックレンジのデ
ータを収集する。ダイナミックレンジのデータとは、変
数が必要とするビット数の最大値である。
【0022】ビット幅データが収集されると、前述した
「プロセッサ合成システム」を使用する設計者は、下記
の2つのオプションのいずれかによりCPUビット幅を
設定する。 (1)CPUビット幅をプログラム変数のプログラム実
行中の最大値に合わせて設定する。ビット幅の最大値を
無条件にCPUビット幅として設定すれば、最もパフォ
ーマンスの高いプロセッサを最小のコストで実現するデ
ザインとなる。 (2)CPUビット幅を、変数の最大値よりも小さく設
定する。この設定によれば、(1)よりも少ないコスト
のプロセッサを実現するが、パフォーマンスも縮小す
る。マルチプル精度演算を実現するためにいくつかのオ
ペレーションが必要となるからである。コンパイラは、
どのオペレーションがマルチプル精度演算かを決定する
ために各変数が要求する最大のビット幅を知らなければ
ならない。プロセッサのパフォーマンスを見積もるため
に、各変数のビット幅の集合の度数分布もまた必要であ
る。そのために、この発明のプロセッサモニタ装置は、
シミュレーション実行中のビット幅と更新度数との動的
なヒストグラムを作成する。
「プロセッサ合成システム」を使用する設計者は、下記
の2つのオプションのいずれかによりCPUビット幅を
設定する。 (1)CPUビット幅をプログラム変数のプログラム実
行中の最大値に合わせて設定する。ビット幅の最大値を
無条件にCPUビット幅として設定すれば、最もパフォ
ーマンスの高いプロセッサを最小のコストで実現するデ
ザインとなる。 (2)CPUビット幅を、変数の最大値よりも小さく設
定する。この設定によれば、(1)よりも少ないコスト
のプロセッサを実現するが、パフォーマンスも縮小す
る。マルチプル精度演算を実現するためにいくつかのオ
ペレーションが必要となるからである。コンパイラは、
どのオペレーションがマルチプル精度演算かを決定する
ために各変数が要求する最大のビット幅を知らなければ
ならない。プロセッサのパフォーマンスを見積もるため
に、各変数のビット幅の集合の度数分布もまた必要であ
る。そのために、この発明のプロセッサモニタ装置は、
シミュレーション実行中のビット幅と更新度数との動的
なヒストグラムを作成する。
【0023】図3に、この発明のハードウェアで実現さ
れたプロセッサモニタ装置の概略ブロック図を示す。プ
ログラムで使用される各変数は、データメモリ220の
各記憶位置に割り当てられている。データメモリ220
の各記憶位置は、メモリアドレスで識別される。また、
この発明のプロセッサモニタ装置は、データメモリ22
0に記憶される各変数のビット幅を記憶するビット幅メ
モリ250を備えている。変数がデータメモリ220に
書かれるとその変数のビット幅が、有意ビット検出部2
30により決定される。決定された変数のビット幅の値
は、ビット幅メモリ250に現在記憶されているビット
幅の値と比較される。比較は、最大値判定部240によ
り行われる。最大値判定部240により決定された上記
二つの値のうちの大きい方の値がビット幅メモリ250
に書き込まれる。その結果、ビット幅メモリ250に
は、常にその変数のビット幅の最大値が保持される。
れたプロセッサモニタ装置の概略ブロック図を示す。プ
ログラムで使用される各変数は、データメモリ220の
各記憶位置に割り当てられている。データメモリ220
の各記憶位置は、メモリアドレスで識別される。また、
この発明のプロセッサモニタ装置は、データメモリ22
0に記憶される各変数のビット幅を記憶するビット幅メ
モリ250を備えている。変数がデータメモリ220に
書かれるとその変数のビット幅が、有意ビット検出部2
30により決定される。決定された変数のビット幅の値
は、ビット幅メモリ250に現在記憶されているビット
幅の値と比較される。比較は、最大値判定部240によ
り行われる。最大値判定部240により決定された上記
二つの値のうちの大きい方の値がビット幅メモリ250
に書き込まれる。その結果、ビット幅メモリ250に
は、常にその変数のビット幅の最大値が保持される。
【0024】もし、ASAPのCPUにデータを記憶す
る機能がなく、プログラムで使用する変数がデータメモ
リ220だけに記憶されるのであれば、図3に示した概
略ブロック図のプロセッサモニタ装置で、変数のビット
幅の最大値を得ることができる。ところが、CPUは、
複数のレジスタからなるレジスタファイルを備えてお
り、レジスタファイルにも変数は記憶される。レジスタ
ファイル内に保持されたデータが、レジスタファイル内
に保持されている間にデータメモリに書き戻されたとき
よりも大きい値をとることはしばしば起こりうることで
ある。それゆえ、データメモリへのデータ転送だけをモ
ニタするのでは、必要なビット幅の最大値を見つけだす
のは不可能な場合がある。
る機能がなく、プログラムで使用する変数がデータメモ
リ220だけに記憶されるのであれば、図3に示した概
略ブロック図のプロセッサモニタ装置で、変数のビット
幅の最大値を得ることができる。ところが、CPUは、
複数のレジスタからなるレジスタファイルを備えてお
り、レジスタファイルにも変数は記憶される。レジスタ
ファイル内に保持されたデータが、レジスタファイル内
に保持されている間にデータメモリに書き戻されたとき
よりも大きい値をとることはしばしば起こりうることで
ある。それゆえ、データメモリへのデータ転送だけをモ
ニタするのでは、必要なビット幅の最大値を見つけだす
のは不可能な場合がある。
【0025】レジスタファイルを備えた場合を、具体的
に示す。以下に、図4〜図6を用いて、レジスタファイ
ル内の変数のモニタについて説明する。図4は、レジス
タ関連アドレステーブルを備えたプロセッサモニタ装置
のブロック図である。図において、245は度数メモ
リ、250はビット幅メモリ、260はレジスタ関連ア
ドレステーブル、262はレジスタファイル書き込みア
ドレス、264はデータメモリアドレス、270はアド
レスセレクタ、280はデータセレクタ、282はレジ
スタファイルデータ入力、284はデータメモリ入力で
ある。
に示す。以下に、図4〜図6を用いて、レジスタファイ
ル内の変数のモニタについて説明する。図4は、レジス
タ関連アドレステーブルを備えたプロセッサモニタ装置
のブロック図である。図において、245は度数メモ
リ、250はビット幅メモリ、260はレジスタ関連ア
ドレステーブル、262はレジスタファイル書き込みア
ドレス、264はデータメモリアドレス、270はアド
レスセレクタ、280はデータセレクタ、282はレジ
スタファイルデータ入力、284はデータメモリ入力で
ある。
【0026】図5は、データメモリ220、ビット幅メ
モリ250及び度数メモリ245の記憶位置の対応図で
ある。図において、221はデータメモリのメモリアド
レスであるデータメモリアドレス、246は度数メモリ
のメモリアドレスである度数メモリアドレス、251は
ビット幅メモリのメモリアドレスであるビット幅メモリ
アドレスである。この図においては、各メモリの記憶位
置が256個である場合を示している。各データメモリ
は、前述したように同一のメモリアドレスでアクセスさ
れる。例えば、メモリアドレス”0”が変数A用の記憶
位置、メモリアドレス”1”が変数B用、メモリアドレ
ス”2”が変数C用に用いられるとすれば、データメモ
リのデータメモリアドレス”0”の記憶位置には、変数
Aの値が記憶される。ビット幅メモリのビット幅メモリ
アドレス”0”の記憶位置には、変数Aのビット幅の最
大値が記憶され、度数メモリの度数メモリアドレス”
0”には、変数Aのプログラム実行中の更新回数が記憶
される。
モリ250及び度数メモリ245の記憶位置の対応図で
ある。図において、221はデータメモリのメモリアド
レスであるデータメモリアドレス、246は度数メモリ
のメモリアドレスである度数メモリアドレス、251は
ビット幅メモリのメモリアドレスであるビット幅メモリ
アドレスである。この図においては、各メモリの記憶位
置が256個である場合を示している。各データメモリ
は、前述したように同一のメモリアドレスでアクセスさ
れる。例えば、メモリアドレス”0”が変数A用の記憶
位置、メモリアドレス”1”が変数B用、メモリアドレ
ス”2”が変数C用に用いられるとすれば、データメモ
リのデータメモリアドレス”0”の記憶位置には、変数
Aの値が記憶される。ビット幅メモリのビット幅メモリ
アドレス”0”の記憶位置には、変数Aのビット幅の最
大値が記憶され、度数メモリの度数メモリアドレス”
0”には、変数Aのプログラム実行中の更新回数が記憶
される。
【0027】図6は、レジスタ関連アドレステーブルの
記憶位置および記憶内容の対応を示す図である。図にお
いて、226はレジスタファイル内のレジスタを識別す
るレジスタアドレス、261は、レジスタ関連アドレス
である。ここでは、レジスタファイル225とレジスタ
関連アドレステーブル260がn個の記憶位置を持って
いる場合を示している。レジスタファイル225とレジ
スタ関連アドレステーブル260の記憶位置は1対1で
対応している。
記憶位置および記憶内容の対応を示す図である。図にお
いて、226はレジスタファイル内のレジスタを識別す
るレジスタアドレス、261は、レジスタ関連アドレス
である。ここでは、レジスタファイル225とレジスタ
関連アドレステーブル260がn個の記憶位置を持って
いる場合を示している。レジスタファイル225とレジ
スタ関連アドレステーブル260の記憶位置は1対1で
対応している。
【0028】レジスタ関連アドレステーブルは、レジス
タファイル内の変数をモニタするために、レジスタファ
イル内の各変数が格納されるデータメモリアドレスを保
持するために用いられる。ロード命令(LD305)に
より変数がデータメモリの記憶位置からからレジスタフ
ァイル225のレジスタにがロード(LD)されると、
レジスタ関連アドレステーブル260にはロード命令L
Dとレジスタファイル書き込みアドレス262が入力さ
れる。ロード命令が『変数Aをデータメモリアドレス”
0”から読み出してレジスタファイルのレジスタアドレ
ス”2”に記憶せよ』と言う内容である場合について説
明する。この時のレジスタファイル書き込みアドレス2
62は、”2”であり、データメモリアドレス264
は、”0”となる。このロード命令をプロセッサが実行
すると、図6の500に示すようにレジスタファイル2
25のレジスタアドレス”2”のレジスタに変数Aの値
が記憶される。同時に、図6の501に示すように、レ
ジスタ関連アドレステーブル260のレジスタ関連アド
レス”2”の記憶位置に変数Aのデータメモリアドレ
ス”0”が書き込まれる。同様に、『変数Bをデータメ
モリアドレス”1”から読み出してレジスタファイルの
レジスタアドレス”4”に記憶せよ』と言うロード命令
の場合、図4のレジスタファイル書き込みアドレス26
2は、”4”であり、データメモリアドレス264
は、”1”となる。このロード命令をプロセッサが実行
すると、図6の503に示すようにレジスタファイル2
25のレジスタアドレス”4”のレジスタに変数Bの値
が記憶される。同時に、図6の504に示すように、レ
ジスタ関連アドレステーブル260のレジスタ関連アド
レス”4”の記憶位置に変数Bのデータメモリアドレ
ス”1”が書き込まれる。ロードされる変数のデータメ
モリアドレス264が、レジスタ関連アドレステーブル
260の対応するレジスタファイルのアドレスに書き込
まれる。
タファイル内の変数をモニタするために、レジスタファ
イル内の各変数が格納されるデータメモリアドレスを保
持するために用いられる。ロード命令(LD305)に
より変数がデータメモリの記憶位置からからレジスタフ
ァイル225のレジスタにがロード(LD)されると、
レジスタ関連アドレステーブル260にはロード命令L
Dとレジスタファイル書き込みアドレス262が入力さ
れる。ロード命令が『変数Aをデータメモリアドレス”
0”から読み出してレジスタファイルのレジスタアドレ
ス”2”に記憶せよ』と言う内容である場合について説
明する。この時のレジスタファイル書き込みアドレス2
62は、”2”であり、データメモリアドレス264
は、”0”となる。このロード命令をプロセッサが実行
すると、図6の500に示すようにレジスタファイル2
25のレジスタアドレス”2”のレジスタに変数Aの値
が記憶される。同時に、図6の501に示すように、レ
ジスタ関連アドレステーブル260のレジスタ関連アド
レス”2”の記憶位置に変数Aのデータメモリアドレ
ス”0”が書き込まれる。同様に、『変数Bをデータメ
モリアドレス”1”から読み出してレジスタファイルの
レジスタアドレス”4”に記憶せよ』と言うロード命令
の場合、図4のレジスタファイル書き込みアドレス26
2は、”4”であり、データメモリアドレス264
は、”1”となる。このロード命令をプロセッサが実行
すると、図6の503に示すようにレジスタファイル2
25のレジスタアドレス”4”のレジスタに変数Bの値
が記憶される。同時に、図6の504に示すように、レ
ジスタ関連アドレステーブル260のレジスタ関連アド
レス”4”の記憶位置に変数Bのデータメモリアドレ
ス”1”が書き込まれる。ロードされる変数のデータメ
モリアドレス264が、レジスタ関連アドレステーブル
260の対応するレジスタファイルのアドレスに書き込
まれる。
【0029】この状態で、レジスタファイルのレジスタ
を読み出す命令であるレジスタレジスタ命令やレジスタ
イミディエト命令のいずれか(RR/RI271)が実
行されると、アドレスセレクタ270が度数メモリ24
5とビット幅メモリ250のメモリアドレスをレジスタ
関連アドレステーブル260から選択する。また、デー
タメモリ220にアクセスするストア命令又はロード命
令のいずれか(STR/LD272)が実行されるとア
ドレスセレクタ270はデータメモリアドレス264を
選択する。前述したように、度数メモリには、対応する
変数が更新された更新回数を示す数値が保持される。各
変数は、メモリアドレスに対応しているので、そのメモ
リアドレスにアクセスが発生する毎に加算器248によ
り更新回数に1が加算される。それにより各変数の更新
回数が度数メモリの各記憶位置に保持される。
を読み出す命令であるレジスタレジスタ命令やレジスタ
イミディエト命令のいずれか(RR/RI271)が実
行されると、アドレスセレクタ270が度数メモリ24
5とビット幅メモリ250のメモリアドレスをレジスタ
関連アドレステーブル260から選択する。また、デー
タメモリ220にアクセスするストア命令又はロード命
令のいずれか(STR/LD272)が実行されるとア
ドレスセレクタ270はデータメモリアドレス264を
選択する。前述したように、度数メモリには、対応する
変数が更新された更新回数を示す数値が保持される。各
変数は、メモリアドレスに対応しているので、そのメモ
リアドレスにアクセスが発生する毎に加算器248によ
り更新回数に1が加算される。それにより各変数の更新
回数が度数メモリの各記憶位置に保持される。
【0030】データセレクタ280は、有意ビット検出
部230がビット幅を検出するためにサンプリングする
データをセレクトする。レジスタレジスタ命令、レジス
タイミディエト命令、ロード命令(RR/RI/LD2
81)の時には、レジスタファイル入力282がサンプ
リングのために選択される。ストア命令(STR28
3)の時には、データメモリデータ入力284がセレク
トされる。このように、レジスタ関連アドレステーブル
を用いて、レジスタファイルの記憶位置を識別するレジ
スタアドレスとデータメモリの記憶位置を識別するデー
タメモリアドレスを変換するので、プログラムで使用す
る変数がデータメモリ内でなくレジスタファイル内で書
き換えられることがあっても、その変数のビット幅の最
大値をモニタすることができる。
部230がビット幅を検出するためにサンプリングする
データをセレクトする。レジスタレジスタ命令、レジス
タイミディエト命令、ロード命令(RR/RI/LD2
81)の時には、レジスタファイル入力282がサンプ
リングのために選択される。ストア命令(STR28
3)の時には、データメモリデータ入力284がセレク
トされる。このように、レジスタ関連アドレステーブル
を用いて、レジスタファイルの記憶位置を識別するレジ
スタアドレスとデータメモリの記憶位置を識別するデー
タメモリアドレスを変換するので、プログラムで使用す
る変数がデータメモリ内でなくレジスタファイル内で書
き換えられることがあっても、その変数のビット幅の最
大値をモニタすることができる。
【0031】この発明のプロセッサモニタ装置は、プロ
グラムの変数が要求するCPUビット幅の分布データの
収集と収集したデータの表示との2つの主な機能を持
つ。この2つの機能について、以下に詳しく説明する。
データの収集については、プロセッサモニタ装置による
データ収集の項で説明する。また、収集したデータの加
工及び集計結果の表示については、後述するデータ集計
及びデータ表示の項で説明する。
グラムの変数が要求するCPUビット幅の分布データの
収集と収集したデータの表示との2つの主な機能を持
つ。この2つの機能について、以下に詳しく説明する。
データの収集については、プロセッサモニタ装置による
データ収集の項で説明する。また、収集したデータの加
工及び集計結果の表示については、後述するデータ集計
及びデータ表示の項で説明する。
【0032】プロセッサモニタ装置によるデータ収集.
この発明のプロセッサモニタ装置により、2種類のデー
タが収集される。 (1)変数が要求するビット幅の最大値、 (2)変数が書かれた回数。 ある変数の値を表すために必要なビット幅の値は、プロ
グラム実行中に変化する。変化する全てのビット幅の値
の中から最大値をとるということは、プロセッサが単精
度マシンとして働くときに必要なビット幅の最小値を示
すことになる。すなわち、すべての算術演算及び論理演
算が、1サイクルで実行可能になるということである。
プロセッサのCPUビット幅が、すべての変数のビット
幅の最大値を下回ると、プロセッサは、CPUのビット
幅をオーバーした変数を処理するためにさらに1サイク
ルを必要とする。すなわち、プロセッサはマルチ精度マ
シンとなる。このとき、度数メモリのデータがプロセッ
サのパフォーマンスを試算するのに使用される。プロセ
ッサのパフォーマンスの試算は、変数のビット幅の最大
値とその最大値を要求する変数の更新の回数を天秤に掛
けることで行われる。あるビット幅がモニタされたビッ
ト幅の最大値の中で最も大きい値であるとき、そのビッ
ト幅の更新回数が少なければ、そのビット幅をCPUビ
ット幅として使用する可能性は少ない。また、更新回数
が多いビット幅が、ある特定の値に集中していれば、そ
の集中しているビット幅の値が、CPUビット幅として
採用される有力な候補となる。
この発明のプロセッサモニタ装置により、2種類のデー
タが収集される。 (1)変数が要求するビット幅の最大値、 (2)変数が書かれた回数。 ある変数の値を表すために必要なビット幅の値は、プロ
グラム実行中に変化する。変化する全てのビット幅の値
の中から最大値をとるということは、プロセッサが単精
度マシンとして働くときに必要なビット幅の最小値を示
すことになる。すなわち、すべての算術演算及び論理演
算が、1サイクルで実行可能になるということである。
プロセッサのCPUビット幅が、すべての変数のビット
幅の最大値を下回ると、プロセッサは、CPUのビット
幅をオーバーした変数を処理するためにさらに1サイク
ルを必要とする。すなわち、プロセッサはマルチ精度マ
シンとなる。このとき、度数メモリのデータがプロセッ
サのパフォーマンスを試算するのに使用される。プロセ
ッサのパフォーマンスの試算は、変数のビット幅の最大
値とその最大値を要求する変数の更新の回数を天秤に掛
けることで行われる。あるビット幅がモニタされたビッ
ト幅の最大値の中で最も大きい値であるとき、そのビッ
ト幅の更新回数が少なければ、そのビット幅をCPUビ
ット幅として使用する可能性は少ない。また、更新回数
が多いビット幅が、ある特定の値に集中していれば、そ
の集中しているビット幅の値が、CPUビット幅として
採用される有力な候補となる。
【0033】図7は、この発明のプロセッサモニタ装置
のブロック図である。各ブロックの機能について、以下
に説明する。 レジスタ関連アドレステーブル260.変数がレジスタ
ファイルのレジスタにロードされると、ロードされた変
数は、データメモリに記憶されていたときのアドレス
(データメモリアドレス)では、アドレスされず、レジ
スタアドレスにより、どのレジスタに記憶されるかが識
別される。レジスタ関連アドレステーブルは、変数のデ
ータメモリアドレスとレジスタファイル用のアドレス
(レジスタアドレス)のリンクをとる。図6に示したよ
うに、レジスタファイルは、複数の記憶用のロケーショ
ンを持ち、レジスタ関連アドレステーブルも、レジスタ
ファイルのロケーションと同数のロケーションを持つ。
レジスタ関連アドレステーブルは、レジスタアドレスで
あるレジスタファイル書き込みアドレス262でアドレ
スされる。レジスタ関連アドレステーブル260に入力
されるデータはデータメモリアドレス入力である。ロー
ド命令(データメモリからレジスタファイルへのデータ
転送命令)が実行されると、レジスタ関連アドレステー
ブルには、変数のデータメモリアドレスが書き込まれ
る。
のブロック図である。各ブロックの機能について、以下
に説明する。 レジスタ関連アドレステーブル260.変数がレジスタ
ファイルのレジスタにロードされると、ロードされた変
数は、データメモリに記憶されていたときのアドレス
(データメモリアドレス)では、アドレスされず、レジ
スタアドレスにより、どのレジスタに記憶されるかが識
別される。レジスタ関連アドレステーブルは、変数のデ
ータメモリアドレスとレジスタファイル用のアドレス
(レジスタアドレス)のリンクをとる。図6に示したよ
うに、レジスタファイルは、複数の記憶用のロケーショ
ンを持ち、レジスタ関連アドレステーブルも、レジスタ
ファイルのロケーションと同数のロケーションを持つ。
レジスタ関連アドレステーブルは、レジスタアドレスで
あるレジスタファイル書き込みアドレス262でアドレ
スされる。レジスタ関連アドレステーブル260に入力
されるデータはデータメモリアドレス入力である。ロー
ド命令(データメモリからレジスタファイルへのデータ
転送命令)が実行されると、レジスタ関連アドレステー
ブルには、変数のデータメモリアドレスが書き込まれ
る。
【0034】アドレスセレクタ270.アドレスセレク
タ270は、ビット幅メモリ250と度数メモリ245
の両方にアドレス入力を供給する。アドレスセレクタ2
70は、レジスタ関連アドレステーブル260から供給
されたアドレスとデータメモリアドレス264のどちら
かを選択する。CPUが実行している命令がレジスタイ
ミディエト命令かレジスタレジスタ命令のいずれか(R
R+RI271)であるとき、レジスタ関連アドレステ
ーブル260から供給されたアドレスが選択される。C
PUが実行している命令がロード命令かストア命令のい
ずれか(LD+STR272)であるとき、データメモ
リアドレス264が選択される。命令の種類は、図示し
ないCPU命令デコーダからの複数の信号に接続された
複数のORゲートにより判定され、0か1かでアドレス
セレクタ270に入力される。
タ270は、ビット幅メモリ250と度数メモリ245
の両方にアドレス入力を供給する。アドレスセレクタ2
70は、レジスタ関連アドレステーブル260から供給
されたアドレスとデータメモリアドレス264のどちら
かを選択する。CPUが実行している命令がレジスタイ
ミディエト命令かレジスタレジスタ命令のいずれか(R
R+RI271)であるとき、レジスタ関連アドレステ
ーブル260から供給されたアドレスが選択される。C
PUが実行している命令がロード命令かストア命令のい
ずれか(LD+STR272)であるとき、データメモ
リアドレス264が選択される。命令の種類は、図示し
ないCPU命令デコーダからの複数の信号に接続された
複数のORゲートにより判定され、0か1かでアドレス
セレクタ270に入力される。
【0035】アドレス多重化部275.アドレス多重化
部275は、アドレスセレクタ270とビット幅メモリ
250の間に位置する。この位置にある目的は、ビット
幅メモリと度数メモリに対する書き込みが発生する命令
が実行されていないときに、後述するデータリダクショ
ンメモリ状態機械(drM状態機械)がビット幅メモリ
と度数メモリにアクセスすることを可能にすることであ
る。アドレス多重化部275は、ロード命令、ストア命
令、レジスタレジスタ命令、レジスタイミディエト命令
のいずれか(LD+STR+RR+RI287)を検出
するORゲートにより制御される。上記ORゲートがア
クティブの時(”1”が入力される時)、アドレスセレ
クタ270のアドレスが使用される。それ以外の場合に
は、drM状態機械のアドレスが使用される。
部275は、アドレスセレクタ270とビット幅メモリ
250の間に位置する。この位置にある目的は、ビット
幅メモリと度数メモリに対する書き込みが発生する命令
が実行されていないときに、後述するデータリダクショ
ンメモリ状態機械(drM状態機械)がビット幅メモリ
と度数メモリにアクセスすることを可能にすることであ
る。アドレス多重化部275は、ロード命令、ストア命
令、レジスタレジスタ命令、レジスタイミディエト命令
のいずれか(LD+STR+RR+RI287)を検出
するORゲートにより制御される。上記ORゲートがア
クティブの時(”1”が入力される時)、アドレスセレ
クタ270のアドレスが使用される。それ以外の場合に
は、drM状態機械のアドレスが使用される。
【0036】データセレクタ280.データセレクタ2
80は、ビット幅メモリ回路がサンプリングするデータ
の出所を選択する。CPUが処理する命令がロード命
令、レジスタレジスタ命令、レジスタイミディエト命令
のいずれか(RR+RI+LD281)である時(これ
はデータセレクタのG0入力に接続されたにORゲート
で検出される)、レジスタファイルデータ入力282が
選択される。CPUが処理する命令がストア命令(ST
R283)の時、データメモリデータ入力284が選択
される。
80は、ビット幅メモリ回路がサンプリングするデータ
の出所を選択する。CPUが処理する命令がロード命
令、レジスタレジスタ命令、レジスタイミディエト命令
のいずれか(RR+RI+LD281)である時(これ
はデータセレクタのG0入力に接続されたにORゲート
で検出される)、レジスタファイルデータ入力282が
選択される。CPUが処理する命令がストア命令(ST
R283)の時、データメモリデータ入力284が選択
される。
【0037】ビット幅メモリ回路.ビット幅メモリ回路
は、以下の要素からなる。 (1)有意ビット検出部230 有意ビット検出部230は、データセレクタ280から
供給される数値を表すのに必要なビット数を決定する。
この実施の形態においては、2の補数を用いて数値を表
す方式(a two■s complement numbering system )を
想定している。 (2)最大値検出部240 最大値検出部240は、2つの端子からそれぞれ入力さ
れた2つの数値のうち大きい数値を選択して出力する。 (3)ビット幅メモリ250 ビット幅メモリ250は、現時点(プログラムの実行時
点)までの各変数が必要とするビット幅の最大値を記憶
する。各変数のデータメモリアドレスは、ビット幅メモ
リと度数メモリのメモリアドレスと同一の値を取る。ビ
ット幅メモリ回路は、動作を開始する時点で、ビット幅
メモリのすべてのロケーションを0でクリアする。0で
クリアすることは、ソフトウェアによりシミュレーショ
ンの開始時に通常行われている。この発明のプロセッサ
モニタ装置は、ハードウェアエミュレータとともに使用
されるが、ビット幅メモリは、他の回路によりイニシャ
ライズされなければならない。ビット幅メモリのイニシ
ャライズのやり方については、デジタルデザインに携わ
る当業者が通常行っている手法を用いればよく、特にこ
の実施の形態で限定はしない。データセレクタから供給
された数値は、有意ビット検出部230で分析され、検
出されたビット数が最大値判定部の端子に入力される。
また、最大値判定部の他の端子には、ビット幅メモリの
ロケーションに現在記憶されている値が入力される。こ
の時、ビット幅メモリのロケーションは、アドレス多重
化部が出力するメモリアドレスで識別される。最大値判
定部240は入力された2つの値の内、より大きい値を
出力する。有意ビット検出部で検出されたビット数がビ
ット幅メモリのロケーションに現在記憶されている値よ
りも大きいとき、その値でビット幅メモリの該ロケーシ
ョンが書き換えられる。CPUが処理する命令がロード
命令、ストア命令、レジスタレジスタ命令、レジスタイ
ミディエト命令のいずれか(LD+STR+RR+RI
287)である時に限り、上記の書き換えは行われる。
他の命令の場合には、ビット幅メモリの現在の値は保持
される。
は、以下の要素からなる。 (1)有意ビット検出部230 有意ビット検出部230は、データセレクタ280から
供給される数値を表すのに必要なビット数を決定する。
この実施の形態においては、2の補数を用いて数値を表
す方式(a two■s complement numbering system )を
想定している。 (2)最大値検出部240 最大値検出部240は、2つの端子からそれぞれ入力さ
れた2つの数値のうち大きい数値を選択して出力する。 (3)ビット幅メモリ250 ビット幅メモリ250は、現時点(プログラムの実行時
点)までの各変数が必要とするビット幅の最大値を記憶
する。各変数のデータメモリアドレスは、ビット幅メモ
リと度数メモリのメモリアドレスと同一の値を取る。ビ
ット幅メモリ回路は、動作を開始する時点で、ビット幅
メモリのすべてのロケーションを0でクリアする。0で
クリアすることは、ソフトウェアによりシミュレーショ
ンの開始時に通常行われている。この発明のプロセッサ
モニタ装置は、ハードウェアエミュレータとともに使用
されるが、ビット幅メモリは、他の回路によりイニシャ
ライズされなければならない。ビット幅メモリのイニシ
ャライズのやり方については、デジタルデザインに携わ
る当業者が通常行っている手法を用いればよく、特にこ
の実施の形態で限定はしない。データセレクタから供給
された数値は、有意ビット検出部230で分析され、検
出されたビット数が最大値判定部の端子に入力される。
また、最大値判定部の他の端子には、ビット幅メモリの
ロケーションに現在記憶されている値が入力される。こ
の時、ビット幅メモリのロケーションは、アドレス多重
化部が出力するメモリアドレスで識別される。最大値判
定部240は入力された2つの値の内、より大きい値を
出力する。有意ビット検出部で検出されたビット数がビ
ット幅メモリのロケーションに現在記憶されている値よ
りも大きいとき、その値でビット幅メモリの該ロケーシ
ョンが書き換えられる。CPUが処理する命令がロード
命令、ストア命令、レジスタレジスタ命令、レジスタイ
ミディエト命令のいずれか(LD+STR+RR+RI
287)である時に限り、上記の書き換えは行われる。
他の命令の場合には、ビット幅メモリの現在の値は保持
される。
【0038】度数メモリ245.度数メモリ245は、
ビット幅メモリと同一のメモリアドレスおよび読み書き
制御を用いる。それゆえ、ビット幅メモリのあるロケー
ションに書き込みが行われるとき、度数メモリの同一ロ
ケーションのカウント値が加算器248により1加算さ
れる。このようにして、各変数が書かれる回数がカウン
トされる。
ビット幅メモリと同一のメモリアドレスおよび読み書き
制御を用いる。それゆえ、ビット幅メモリのあるロケー
ションに書き込みが行われるとき、度数メモリの同一ロ
ケーションのカウント値が加算器248により1加算さ
れる。このようにして、各変数が書かれる回数がカウン
トされる。
【0039】drM状態機械290.drM状態機械
(データリダクションメモリ状態機械)290は、ビッ
ト幅データおよび度数データをヒストグラムに変換す
る。(詳細については、データ集計およびデータ表示の
項で述べる)。ヒストグラムは、各ビット幅の総更新回
数を表示部に表示する。drM状態機械は、シミュレー
ション進行中にリアルタイムでヒストグラム表示を行
う。ビット幅メモリと度数メモリが更新されないサイク
ルの間に、ビット幅メモリと度数メモリの読み出しを行
うことによりこれを実現している。
(データリダクションメモリ状態機械)290は、ビッ
ト幅データおよび度数データをヒストグラムに変換す
る。(詳細については、データ集計およびデータ表示の
項で述べる)。ヒストグラムは、各ビット幅の総更新回
数を表示部に表示する。drM状態機械は、シミュレー
ション進行中にリアルタイムでヒストグラム表示を行
う。ビット幅メモリと度数メモリが更新されないサイク
ルの間に、ビット幅メモリと度数メモリの読み出しを行
うことによりこれを実現している。
【0040】Left Shift291.レフトシフ
トブロックは、状態機械の出力からヒストグラムのy軸
の値を求める。スケール量は、スケール入力により得ら
れる。
トブロックは、状態機械の出力からヒストグラムのy軸
の値を求める。スケール量は、スケール入力により得ら
れる。
【0041】入力. RR.CPUが、現在実行中の命令がレジスタレジスタ
命令であることを示す信号。レジスタレジスタ命令と
は、命令のオペランドがレジスタファイルからフェッチ
され、結果がレジスタファイルに書き戻される命令であ
る。 RI.CPUが、現在実行中の命令がレジスタイミディ
エト命令であることを示す信号。この命令を実行する
と、レジスタファイル内の変数が書き換えられる。 STR.ストア命令。データはレジスタファイルからデ
ータメモリに転送される。この命令を実行すると、デー
タメモリの変数が書き換えられる。 LD.ロード命令。データはデータメモリからレジスタ
ファイルに転送される。ロード命令が実行されると、ロ
ードの対象となった変数が記憶されていたデータメモリ
のアドレスが、レジスタ関連アドレステーブルに記憶さ
れる。その結果、変数が、レジスタファイル内で書き換
えられる場合でも、その書き換えがビット幅メモリと度
数メモリに反映される。 RFwrtAdrs.レジスタファイル書き込みアドレ
ス。このレジスタファイル書き込みアドレスは、変数が
レジスタファイルにロードされたとき、データメモリア
ドレスをレジスタ関連アドレステーブルに書き込む際の
アドレスとして用いられる。 dMadrs.データメモリアドレス。ビット幅メモリ
及び度数メモリのアドレスとしても用いられる。レジス
タ関連アドレステーブルに記憶されるデータである。 dMdataIn.データメモリデータ入力(バス)。
ストア命令が実行されると、このバスが検査され、変数
のビット幅が決定される。ビット幅が、その変数の過去
のビット幅と比較して最大の値であるとき、ビット幅メ
モリのdMadrsで識別される記憶位置に、その最大
値が書き込まれる。 RFdataIn.レジスタファイルデータ入力(バ
ス)。RR命令またはRI命令が実行されると、このバ
スが検査され、変数のビット幅が決定される。ビット幅
が、その変数の過去のビット幅と比較して最大の値であ
るとき、ビット幅メモリに、その最大値が書き込まれ
る。この時、ビット幅メモリの記憶位置を識別するアド
レスは、レジスタファイル書き込みアドレスによりアド
レスされるレジスタ関連アドレステーブルにより与えら
れる。 Update.データ集計サイクル及びデータ表示サイ
クルを開始するために送信される更新信号。 Scale.ビット幅対更新回数のヒストグラムを表示
するためのスケール情報。
命令であることを示す信号。レジスタレジスタ命令と
は、命令のオペランドがレジスタファイルからフェッチ
され、結果がレジスタファイルに書き戻される命令であ
る。 RI.CPUが、現在実行中の命令がレジスタイミディ
エト命令であることを示す信号。この命令を実行する
と、レジスタファイル内の変数が書き換えられる。 STR.ストア命令。データはレジスタファイルからデ
ータメモリに転送される。この命令を実行すると、デー
タメモリの変数が書き換えられる。 LD.ロード命令。データはデータメモリからレジスタ
ファイルに転送される。ロード命令が実行されると、ロ
ードの対象となった変数が記憶されていたデータメモリ
のアドレスが、レジスタ関連アドレステーブルに記憶さ
れる。その結果、変数が、レジスタファイル内で書き換
えられる場合でも、その書き換えがビット幅メモリと度
数メモリに反映される。 RFwrtAdrs.レジスタファイル書き込みアドレ
ス。このレジスタファイル書き込みアドレスは、変数が
レジスタファイルにロードされたとき、データメモリア
ドレスをレジスタ関連アドレステーブルに書き込む際の
アドレスとして用いられる。 dMadrs.データメモリアドレス。ビット幅メモリ
及び度数メモリのアドレスとしても用いられる。レジス
タ関連アドレステーブルに記憶されるデータである。 dMdataIn.データメモリデータ入力(バス)。
ストア命令が実行されると、このバスが検査され、変数
のビット幅が決定される。ビット幅が、その変数の過去
のビット幅と比較して最大の値であるとき、ビット幅メ
モリのdMadrsで識別される記憶位置に、その最大
値が書き込まれる。 RFdataIn.レジスタファイルデータ入力(バ
ス)。RR命令またはRI命令が実行されると、このバ
スが検査され、変数のビット幅が決定される。ビット幅
が、その変数の過去のビット幅と比較して最大の値であ
るとき、ビット幅メモリに、その最大値が書き込まれ
る。この時、ビット幅メモリの記憶位置を識別するアド
レスは、レジスタファイル書き込みアドレスによりアド
レスされるレジスタ関連アドレステーブルにより与えら
れる。 Update.データ集計サイクル及びデータ表示サイ
クルを開始するために送信される更新信号。 Scale.ビット幅対更新回数のヒストグラムを表示
するためのスケール情報。
【0042】出力. adrs.ビット幅メモリと度数メモリへのアクセスに
使用されるアドレス。 fM.度数メモリの出力。度数メモリの各記憶位置に
は、対応する変数がデータメモリに書き込まれた更新回
数が記憶される。 bwM.ビット幅メモリの出力。ビット幅メモリのアド
レスは、データメモリのアドレスと同一である。従っ
て、ビット幅メモリの記憶位置はデータメモリの変数の
記憶位置に対応している。ビット幅メモリの各記憶位置
には、データメモリ内の対応する各変数の現在までに検
査されたビット数の最大値がそれぞれ記憶されている。
ビット数の検出には、2の補数により数値を表す方式を
用いている。例えば、変数が最大で”7”という値を取
るとき、2進数で表すと”0111”となり4ビット必
要である。この時、ビット幅メモリには、”4”が記憶
される。同様に、変数が”−8”という値を取るとき、
2進数で表すと”1000”となり、やはり4ビット必
要である。この時、ビット幅メモリには、”4”が記憶
される。 X.カウンタの値の下位ビットであり、表示されるヒス
トグラムのx軸に使用される。 Y.データリダクションメモリのスケールされた出力で
ある。この出力は、表示されるヒストグラムのy軸に使
用される。
使用されるアドレス。 fM.度数メモリの出力。度数メモリの各記憶位置に
は、対応する変数がデータメモリに書き込まれた更新回
数が記憶される。 bwM.ビット幅メモリの出力。ビット幅メモリのアド
レスは、データメモリのアドレスと同一である。従っ
て、ビット幅メモリの記憶位置はデータメモリの変数の
記憶位置に対応している。ビット幅メモリの各記憶位置
には、データメモリ内の対応する各変数の現在までに検
査されたビット数の最大値がそれぞれ記憶されている。
ビット数の検出には、2の補数により数値を表す方式を
用いている。例えば、変数が最大で”7”という値を取
るとき、2進数で表すと”0111”となり4ビット必
要である。この時、ビット幅メモリには、”4”が記憶
される。同様に、変数が”−8”という値を取るとき、
2進数で表すと”1000”となり、やはり4ビット必
要である。この時、ビット幅メモリには、”4”が記憶
される。 X.カウンタの値の下位ビットであり、表示されるヒス
トグラムのx軸に使用される。 Y.データリダクションメモリのスケールされた出力で
ある。この出力は、表示されるヒストグラムのy軸に使
用される。
【0043】データ集計及びデータ表示.CPUのロジ
ックのシミュレーションの間、変数のビット幅の最大値
及び更新回数に関するデータは、ビット幅メモリ及び度
数メモリに収集される。前述したように各変数がそれぞ
れ何ビットのビット幅を必要とするかを知る事に加え、
あるビット幅を必要とする変数が複数ある時、それらの
変数の更新回数の合計を知る事も必要である。また、外
部からの入力とビット幅の度数分布の相関を発見するた
めに、ロジックシミュレーション環境の中でリアルタイ
ムの分布を知る事も必要である。
ックのシミュレーションの間、変数のビット幅の最大値
及び更新回数に関するデータは、ビット幅メモリ及び度
数メモリに収集される。前述したように各変数がそれぞ
れ何ビットのビット幅を必要とするかを知る事に加え、
あるビット幅を必要とする変数が複数ある時、それらの
変数の更新回数の合計を知る事も必要である。また、外
部からの入力とビット幅の度数分布の相関を発見するた
めに、ロジックシミュレーション環境の中でリアルタイ
ムの分布を知る事も必要である。
【0044】図8(a)は、drM状態機械の状態遷移
図であり、図8(b)は、状態機械の仮想コードであ
る。なお、データメモリサイズ,ビット幅メモリサイ
ズ,度数メモリサイズを256ワード、データリダクシ
ョンメモリサイズを32ワードとしている。図8に示す
ように、リアルタイムのビット幅データの集計とデータ
表示は、状態機械により制御される。この状態機械は、
下記の3つの状態を有する。 (1)データ集計ステート:データ集計ステート110
0では、ビット幅メモリ及び度数メモリからのデータ
を、同化し、ビット幅対度数のヒストグラムとして表示
するのに適切なフォーマットに変換する。ヒストグラム
においては、x軸は、プログラム中の変数を表すのに必
要なビット数の最大値を表す。このビット数の最大値が
同じになる変数が複数あれば、その複数の変数のグルー
プがそのビット数の最大値に対応する。また、y軸は、
各グループ毎の総更新回数を表す。 (2)データ表示ステート:データ表示ステート120
0では、ビット幅のヒストグラムを表示する。ヒストグ
ラムの表示は、更新信号Updateを受信するまで継
続的に行われる。 (3)drMリセットステート:drMリセットステー
ト1300では、データリダクションメモリをクリア
し、次のデータリダクションサイクルに備える。
図であり、図8(b)は、状態機械の仮想コードであ
る。なお、データメモリサイズ,ビット幅メモリサイ
ズ,度数メモリサイズを256ワード、データリダクシ
ョンメモリサイズを32ワードとしている。図8に示す
ように、リアルタイムのビット幅データの集計とデータ
表示は、状態機械により制御される。この状態機械は、
下記の3つの状態を有する。 (1)データ集計ステート:データ集計ステート110
0では、ビット幅メモリ及び度数メモリからのデータ
を、同化し、ビット幅対度数のヒストグラムとして表示
するのに適切なフォーマットに変換する。ヒストグラム
においては、x軸は、プログラム中の変数を表すのに必
要なビット数の最大値を表す。このビット数の最大値が
同じになる変数が複数あれば、その複数の変数のグルー
プがそのビット数の最大値に対応する。また、y軸は、
各グループ毎の総更新回数を表す。 (2)データ表示ステート:データ表示ステート120
0では、ビット幅のヒストグラムを表示する。ヒストグ
ラムの表示は、更新信号Updateを受信するまで継
続的に行われる。 (3)drMリセットステート:drMリセットステー
ト1300では、データリダクションメモリをクリア
し、次のデータリダクションサイクルに備える。
【0045】データ集計ステートの間、ビット幅メモリ
及び度数メモリは、ビット幅データ収集回路によりアク
セスされる。このアクセスは、ビット幅メモリ及び度数
メモリに対する書き込みが発生しない間に行われる。具
体的には、ブランチ命令、ジャンプ命令、nop命令等
のCPU制御命令が実行される間である。
及び度数メモリは、ビット幅データ収集回路によりアク
セスされる。このアクセスは、ビット幅メモリ及び度数
メモリに対する書き込みが発生しない間に行われる。具
体的には、ブランチ命令、ジャンプ命令、nop命令等
のCPU制御命令が実行される間である。
【0046】図9は、drM状態機械290のブロック
図である。図9のブロック図に示すように、前述した3
つの状態1100,1200,1300に対応するカウ
ンタ(図8(b)の仮想コード中cntと表記される)
をビット幅メモリ及び度数メモリのそれぞれにワード単
位で備えている。このカウンタは、ビット幅メモリ及び
度数メモリに書き込みが行われていない間(図8、11
05〜1111)に、ビット幅メモリ及び度数メモリか
らデータを読み出すメモリアドレスとして用いられる
(図8、1107)。カウンタの初期値は、0である
(図8、1101)。それにより、データメモリのメモ
リアドレス”0”で表されるロケーションに記憶されて
いる変数のビット幅の最大値および更新回数が得られ
る。カウンタの値が加算されると(図8、1109)、
データメモリの各変数に対応するビット幅メモリと度数
メモリが検査される。
図である。図9のブロック図に示すように、前述した3
つの状態1100,1200,1300に対応するカウ
ンタ(図8(b)の仮想コード中cntと表記される)
をビット幅メモリ及び度数メモリのそれぞれにワード単
位で備えている。このカウンタは、ビット幅メモリ及び
度数メモリに書き込みが行われていない間(図8、11
05〜1111)に、ビット幅メモリ及び度数メモリか
らデータを読み出すメモリアドレスとして用いられる
(図8、1107)。カウンタの初期値は、0である
(図8、1101)。それにより、データメモリのメモ
リアドレス”0”で表されるロケーションに記憶されて
いる変数のビット幅の最大値および更新回数が得られ
る。カウンタの値が加算されると(図8、1109)、
データメモリの各変数に対応するビット幅メモリと度数
メモリが検査される。
【0047】図8の1107に示す処理について説明す
る。必要な情報は、各ビット幅毎のすべての変数の更新
回数の合計(総更新回数)である。それゆえ、カウンタ
の値でアドレスされるビット幅メモリの出力が、データ
リダクションメモリのアドレスとして使用される。そし
て、データリダクションメモリのそのアドレスの現在の
値に、そのビット幅メモリと同一のカウンタの値でアド
レスされる度数メモリの出力が加算される。その後、そ
の加算された合計がデータリダクションメモリの同一ロ
ケーションに書き戻される。このようにして、データリ
ダクションメモリは、各ビット幅グループの総更新数を
累積する。その後、次のメモリアドレスのビット幅メモ
リ及び度数メモリのインアクティブサイクルに備えて、
カウンタは加算される(図8、1109)。
る。必要な情報は、各ビット幅毎のすべての変数の更新
回数の合計(総更新回数)である。それゆえ、カウンタ
の値でアドレスされるビット幅メモリの出力が、データ
リダクションメモリのアドレスとして使用される。そし
て、データリダクションメモリのそのアドレスの現在の
値に、そのビット幅メモリと同一のカウンタの値でアド
レスされる度数メモリの出力が加算される。その後、そ
の加算された合計がデータリダクションメモリの同一ロ
ケーションに書き戻される。このようにして、データリ
ダクションメモリは、各ビット幅グループの総更新数を
累積する。その後、次のメモリアドレスのビット幅メモ
リ及び度数メモリのインアクティブサイクルに備えて、
カウンタは加算される(図8、1109)。
【0048】このプロセスは、ビット幅メモリと度数メ
モリの全てのロケーションのデータが読み込まれるまで
継続する(図8、1103〜1112)。その後、状態
機械はデータ表示ステートに移行する(図8、111
5)。
モリの全てのロケーションのデータが読み込まれるまで
継続する(図8、1103〜1112)。その後、状態
機械はデータ表示ステートに移行する(図8、111
5)。
【0049】データ表示ステートでは、カウンタは連続
してインクリメントされる。データリダクションメモリ
にアドレスするのに十分なカウンタのロウアオーダビッ
ト群は、drMアドレス多重化部411に接続される。
この実施の形態においては、データリダクションメモリ
は32ワードであるので、カウンタの下位5ビットのみ
がデータリダクションメモリのアドレスに用いられる。
drMアドレス多重化部411は、データリダクション
メモリのアドレス入力として、カウンタ(下位5ビッ
ト)とビット幅メモリの出力のいずれかを選択する。前
述したようにデータリダクションメモリのアドレスはビ
ット幅の値であり、表示部に表示されるヒストグラムの
X軸に接続される(図8、1203)。データリダクシ
ョンメモリの出力は、ヒストグラムのY軸に接続される
(図8、1205)。その結果、所定のプログラムの全
ての変数のビット幅と総更新回数のヒストグラムが表示
される(図8、1207)。状態機械は、シミュレーシ
ョンをモニタしている設計者により、アップデータシグ
ナルUpdateが送信されるまでこのステートに留ま
り、ヒストグラムを表示し続ける(図8、1201〜1
211)。アップデートシグナルUpdateを受信す
ると、状態機械は、drMリセットステートに移行する
(図8、1215)。
してインクリメントされる。データリダクションメモリ
にアドレスするのに十分なカウンタのロウアオーダビッ
ト群は、drMアドレス多重化部411に接続される。
この実施の形態においては、データリダクションメモリ
は32ワードであるので、カウンタの下位5ビットのみ
がデータリダクションメモリのアドレスに用いられる。
drMアドレス多重化部411は、データリダクション
メモリのアドレス入力として、カウンタ(下位5ビッ
ト)とビット幅メモリの出力のいずれかを選択する。前
述したようにデータリダクションメモリのアドレスはビ
ット幅の値であり、表示部に表示されるヒストグラムの
X軸に接続される(図8、1203)。データリダクシ
ョンメモリの出力は、ヒストグラムのY軸に接続される
(図8、1205)。その結果、所定のプログラムの全
ての変数のビット幅と総更新回数のヒストグラムが表示
される(図8、1207)。状態機械は、シミュレーシ
ョンをモニタしている設計者により、アップデータシグ
ナルUpdateが送信されるまでこのステートに留ま
り、ヒストグラムを表示し続ける(図8、1201〜1
211)。アップデートシグナルUpdateを受信す
ると、状態機械は、drMリセットステートに移行する
(図8、1215)。
【0050】drMリセットステートでは、データリダ
クションメモリのアドレス0から31までの全てのロケ
ーションが0でクリアされる(図8、1301〜130
5)。これにより、次のビット幅データの累積の準備が
整う。データリダクションメモリの0クリアが完了する
と、状態機械は、データ集計ステートに移行する。
クションメモリのアドレス0から31までの全てのロケ
ーションが0でクリアされる(図8、1301〜130
5)。これにより、次のビット幅データの累積の準備が
整う。データリダクションメモリの0クリアが完了する
と、状態機械は、データ集計ステートに移行する。
【0051】図10は、この実施の形態のデータ集計及
びデータ表示のタイミングチャートである。図11は、
図10に示すタイミングチャートに対応するビット幅メ
モリ及び度数メモリの内容を示す図である。状態機械に
対して、アップデート信号が送られると、アップデート
Updateは、1となる。これにより、drMリセッ
トステートに移行しdrMリセットFFが1となる。カ
ウンタcntは、まず0になり、drMアドレス多重化
部も0になる。drM_G1は、1になる。drMデー
タ多重化部は、drMアドレス多重化部と連動している
ので、0である。次のサイクルでカウンタcntは1が
加算されて1となり、drMアドレス多重化部も1とな
る。drMデータ多重化部は、0である。この時、デー
タリダクションメモリのアドレス0の値が0になる。次
のサイクルでカウンタcntは1が加算されて2とな
り、drMアドレス多重化部も2となる。drMデータ
多重化部は、0である。この時、データリダクションメ
モリのアドレス1の値が0になる。この処理を、カウン
タcntが31になるまで繰り返す。カウンタcntが
31になると、drMアドレス多重化部も31となる。
drMデータ多重化部は、0である。この時、データリ
ダクションメモリのアドレス30の値が0になる。
びデータ表示のタイミングチャートである。図11は、
図10に示すタイミングチャートに対応するビット幅メ
モリ及び度数メモリの内容を示す図である。状態機械に
対して、アップデート信号が送られると、アップデート
Updateは、1となる。これにより、drMリセッ
トステートに移行しdrMリセットFFが1となる。カ
ウンタcntは、まず0になり、drMアドレス多重化
部も0になる。drM_G1は、1になる。drMデー
タ多重化部は、drMアドレス多重化部と連動している
ので、0である。次のサイクルでカウンタcntは1が
加算されて1となり、drMアドレス多重化部も1とな
る。drMデータ多重化部は、0である。この時、デー
タリダクションメモリのアドレス0の値が0になる。次
のサイクルでカウンタcntは1が加算されて2とな
り、drMアドレス多重化部も2となる。drMデータ
多重化部は、0である。この時、データリダクションメ
モリのアドレス1の値が0になる。この処理を、カウン
タcntが31になるまで繰り返す。カウンタcntが
31になると、drMアドレス多重化部も31となる。
drMデータ多重化部は、0である。この時、データリ
ダクションメモリのアドレス30の値が0になる。
【0052】カウンタcntが31になると、drMリ
セットステートの処理が終了するので、次のサイクル
で、データ集計ステートに移行し、データ集計FFが1
になり、drMリセットFFは0になる。カウンタcn
tは、再び0になる。ビット幅メモリ書き込みbwMw
rtが0なので、カウンタcntの値、0をアドレスと
してビット幅メモリ,度数メモリを参照すると、図11
の510,520に示すように、ビット幅は5、度数は
80であるので、図10のビット幅メモリbwMは5、
度数メモリfMは80となる。この時、drMアドレス
多重化部は、ビット幅メモリbwMの値をとり、5とな
る。また、加算部Adderは、度数メモリfMの値、
80とデータリダクションメモリのdrMアドレス多重
化部番目(5番目)の値、0が入力され、80が出力さ
れる。drMデータ多重化部は、加算部の値が入力さ
れ、80となる。次のサイクルで、ビット幅メモリ書き
込みbwMwrtが0なので、カウンタcntに1が加
算され、1となる。カウンタcntの値、1をアドレス
としてビット幅メモリ,度数メモリを参照すると、図1
1の511,521に示すように、ビット幅は9、度数
は70であるので、図10のビット幅メモリbwMは
9、度数メモリfMは70となる。この時、drMアド
レス多重化部は、ビット幅メモリbwMの値をとり、9
となる。また、加算部Adderは、度数メモリfMの
値70とデータリダクションメモリのdrMアドレス多
重化部の出力番目(9番目)の値、0が入力され、70
が出力される。drMデータ多重化部は、加算部の値が
入力され、70となる。次のサイクル及びその次のサイ
クルでは、ビット幅メモリ書き込みbwMwrtは1で
ある。このためデータ集計処理は、発生しない。次のサ
イクルで、ビット幅メモリ書き込みbwMwrtが0に
なり、カウンタcntに1が加算され、2となる。カウ
ンタcntの値、2をアドレスとしてビット幅メモリ,
度数メモリを参照すると、図11の512,522に示
すように、ビット幅は5、度数は15であるので、図1
0のビット幅メモリbwMは5、度数メモリfMは15
となる。この時、drMアドレス多重化部は、ビット幅
メモリbwMの値をとり、5となる。また、加算部Ad
derは、度数メモリfMの値、15とデータリダクシ
ョンメモリのdrMアドレス多重化部の出力番目(5番
目)の値、80が入力され、95が出力される。drM
データ多重化部は、加算部の値が入力され、95とな
る。この処理は、カウンタcntが255になるまで繰
り返される。
セットステートの処理が終了するので、次のサイクル
で、データ集計ステートに移行し、データ集計FFが1
になり、drMリセットFFは0になる。カウンタcn
tは、再び0になる。ビット幅メモリ書き込みbwMw
rtが0なので、カウンタcntの値、0をアドレスと
してビット幅メモリ,度数メモリを参照すると、図11
の510,520に示すように、ビット幅は5、度数は
80であるので、図10のビット幅メモリbwMは5、
度数メモリfMは80となる。この時、drMアドレス
多重化部は、ビット幅メモリbwMの値をとり、5とな
る。また、加算部Adderは、度数メモリfMの値、
80とデータリダクションメモリのdrMアドレス多重
化部番目(5番目)の値、0が入力され、80が出力さ
れる。drMデータ多重化部は、加算部の値が入力さ
れ、80となる。次のサイクルで、ビット幅メモリ書き
込みbwMwrtが0なので、カウンタcntに1が加
算され、1となる。カウンタcntの値、1をアドレス
としてビット幅メモリ,度数メモリを参照すると、図1
1の511,521に示すように、ビット幅は9、度数
は70であるので、図10のビット幅メモリbwMは
9、度数メモリfMは70となる。この時、drMアド
レス多重化部は、ビット幅メモリbwMの値をとり、9
となる。また、加算部Adderは、度数メモリfMの
値70とデータリダクションメモリのdrMアドレス多
重化部の出力番目(9番目)の値、0が入力され、70
が出力される。drMデータ多重化部は、加算部の値が
入力され、70となる。次のサイクル及びその次のサイ
クルでは、ビット幅メモリ書き込みbwMwrtは1で
ある。このためデータ集計処理は、発生しない。次のサ
イクルで、ビット幅メモリ書き込みbwMwrtが0に
なり、カウンタcntに1が加算され、2となる。カウ
ンタcntの値、2をアドレスとしてビット幅メモリ,
度数メモリを参照すると、図11の512,522に示
すように、ビット幅は5、度数は15であるので、図1
0のビット幅メモリbwMは5、度数メモリfMは15
となる。この時、drMアドレス多重化部は、ビット幅
メモリbwMの値をとり、5となる。また、加算部Ad
derは、度数メモリfMの値、15とデータリダクシ
ョンメモリのdrMアドレス多重化部の出力番目(5番
目)の値、80が入力され、95が出力される。drM
データ多重化部は、加算部の値が入力され、95とな
る。この処理は、カウンタcntが255になるまで繰
り返される。
【0053】カウンタcntが255になったので、次
のサイクルで、データ表示ステートに移行し、データ表
示FFが1になり、データ集計FFは0になる。カウン
タcntは、再び0になる。カウンタcntは1づつ加
算され、データ表示処理が行われる。この時、drMア
ドレス多重化部の値は、カウンタcntの値を基にする
が、下位5ビットが用いられるので、31の後、0に戻
り、0から31を繰り返す。このdrMアドレス多重化
部の出力をデータリダクションメモリのアドレスとし
て、ヒストグラムが表示部に表示される。
のサイクルで、データ表示ステートに移行し、データ表
示FFが1になり、データ集計FFは0になる。カウン
タcntは、再び0になる。カウンタcntは1づつ加
算され、データ表示処理が行われる。この時、drMア
ドレス多重化部の値は、カウンタcntの値を基にする
が、下位5ビットが用いられるので、31の後、0に戻
り、0から31を繰り返す。このdrMアドレス多重化
部の出力をデータリダクションメモリのアドレスとし
て、ヒストグラムが表示部に表示される。
【0054】以上のように、この実施の形態のプロセッ
サモニタ装置によれば、モニタのために処理時間を遅く
することなく、アプリケーションプログラムの変数の統
計データを収集することができる。また、収集したデー
タを、ビット幅と更新回数を対比させたヒストグラムの
形で表示する。設計者は、プログラムのモニタ中に表示
されるヒストグラムを見ながら、CPUビット幅を検討
することができる。
サモニタ装置によれば、モニタのために処理時間を遅く
することなく、アプリケーションプログラムの変数の統
計データを収集することができる。また、収集したデー
タを、ビット幅と更新回数を対比させたヒストグラムの
形で表示する。設計者は、プログラムのモニタ中に表示
されるヒストグラムを見ながら、CPUビット幅を検討
することができる。
【0055】
【発明の効果】この発明のプロセッサモニタ装置によれ
ば、プログラムの処理時間に影響を与えずに、データメ
モリに記憶される変数毎にその変数の値を保持するのに
必要なビット幅の最大値データを収集できる。
ば、プログラムの処理時間に影響を与えずに、データメ
モリに記憶される変数毎にその変数の値を保持するのに
必要なビット幅の最大値データを収集できる。
【0056】また、この発明によれば、データメモリに
記憶される変数が、プロセッサ内部のレジスタ内で書き
換えられる場合も継続してビット幅の最大値データの収
集ができる。
記憶される変数が、プロセッサ内部のレジスタ内で書き
換えられる場合も継続してビット幅の最大値データの収
集ができる。
【0057】また、この発明によれば、変数を更新した
度数を変数毎に記憶するので、ビット幅と更新した度数
のヒストグラムを作成し、ビット幅の分布をわかりやす
く表示できる。
度数を変数毎に記憶するので、ビット幅と更新した度数
のヒストグラムを作成し、ビット幅の分布をわかりやす
く表示できる。
【図1】 この発明の基礎となる「プロセッサ合成シス
テム」のブロック図である。
テム」のブロック図である。
【図2】 この発明のプロセッサモニタ装置を使用する
ハードウェア構成図である。
ハードウェア構成図である。
【図3】 この発明のプロセッサモニタ装置の概略図で
ある。
ある。
【図4】 この発明のレジスタ関連アドレステーブルを
備えたプロセッサモニタ装置のブロック図である。
備えたプロセッサモニタ装置のブロック図である。
【図5】 この発明の実施の形態のデータメモリ及び度
数メモリの記憶位置の対応図である。
数メモリの記憶位置の対応図である。
【図6】 この発明の実施の形態のレジスタ関連アドレ
ステーブルの記憶位置及び記憶内容の対応を示す図であ
る。
ステーブルの記憶位置及び記憶内容の対応を示す図であ
る。
【図7】 この発明のプロセッサモニタ装置のブロック
図である。
図である。
【図8】 この発明のプロセッサモニタ装置の状態遷移
を示す図である。
を示す図である。
【図9】 この発明のプロセッサモニタ装置のデータ集
計及びデータ表示のブロック図である。
計及びデータ表示のブロック図である。
【図10】 この発明のプロセッサモニタ装置のデータ
集計及びデータ表示のタイミングチャートを示す図であ
る。
集計及びデータ表示のタイミングチャートを示す図であ
る。
【図11】 この発明の図10のタイミングチャートの
ビット幅メモリと度数メモリの内容を示す図である。
ビット幅メモリと度数メモリの内容を示す図である。
【図12】 従来の「信号処理プロセッサ」の概略ブロ
ック図である。
ック図である。
【図13】 図12におけるデータ監視部901とI/
Oポート902の内部のブロック図である。
Oポート902の内部のブロック図である。
【図14】 従来の論理合成システム「つつじ」の使用
形態を示す図である。
形態を示す図である。
【図15】 従来の論理合成システム「つつじ」の使用
形態を示す図である。
形態を示す図である。
【図16】 従来のソフトウェアで実現したプロセッサ
モニタ機能を説明する図である。
モニタ機能を説明する図である。
6 コンピュータシステム、6a 表示部、6b キー
ボード、6c マウス、6d マウスパッド、6e シ
ステムユニット、10 一次パラメータ、12レジスタ
ファイルのレジスタ数、14 CPUビット幅、16
データメモリサイズ、18 命令メモリサイズ、100
一次パラメータ入力部、130 プロセッサ生成部、
133 プロセッサ定義情報、150 命令生成部、1
53アプリケーションソフトウェア、155 コンパイ
ラ生成部、157 コンパイラ、159 コード、16
0 アセンブラ生成部、163 アセンブラ、165命
令コード、170 CPU(Central Proc
essing Unit)、172 データメモリ(d
M)、174 レジスタファイル(RF)、176 A
LU(Arithmetic Logical Uni
t)、210プロセッサ、212 アドレスバス、21
4 データメモリ書き込み、216データバス、220
データメモリ、221 データメモリアドレス、22
6レジスタアドレス、230 有意ビット検出部、24
0 最大値判定部、245 度数メモリ、246 度数
メモリアドレス、250 ビット幅メモリ、251 ビ
ット幅メモリアドレス、260 レジスタ関連アドレス
テーブル、261レジスタアドレス、262 レジスタ
ファイル書き込みアドレス、264 データメモリアド
レス、270 アドレスセレクタ、275 アドレス多
重化部、280 データセレクタ、282 レジスタフ
ァイルデータ入力、284 データメモリデータ入力、
290 drM状態機械。
ボード、6c マウス、6d マウスパッド、6e シ
ステムユニット、10 一次パラメータ、12レジスタ
ファイルのレジスタ数、14 CPUビット幅、16
データメモリサイズ、18 命令メモリサイズ、100
一次パラメータ入力部、130 プロセッサ生成部、
133 プロセッサ定義情報、150 命令生成部、1
53アプリケーションソフトウェア、155 コンパイ
ラ生成部、157 コンパイラ、159 コード、16
0 アセンブラ生成部、163 アセンブラ、165命
令コード、170 CPU(Central Proc
essing Unit)、172 データメモリ(d
M)、174 レジスタファイル(RF)、176 A
LU(Arithmetic Logical Uni
t)、210プロセッサ、212 アドレスバス、21
4 データメモリ書き込み、216データバス、220
データメモリ、221 データメモリアドレス、22
6レジスタアドレス、230 有意ビット検出部、24
0 最大値判定部、245 度数メモリ、246 度数
メモリアドレス、250 ビット幅メモリ、251 ビ
ット幅メモリアドレス、260 レジスタ関連アドレス
テーブル、261レジスタアドレス、262 レジスタ
ファイル書き込みアドレス、264 データメモリアド
レス、270 アドレスセレクタ、275 アドレス多
重化部、280 データセレクタ、282 レジスタフ
ァイルデータ入力、284 データメモリデータ入力、
290 drM状態機械。
Claims (5)
- 【請求項1】 変数を用いたプログラムを実行するプロ
セッサをモニタするプロセッサモニタ装置において、 上記プログラムの実行中に上記変数の値を記憶するデー
タメモリと、 上記データメモリに記憶される上記変数の値を表すため
に必要な上記変数のビット幅を検出する有意ビット検出
部と、 上記有意ビット検出部により検出された上記変数のビッ
ト幅を入力し、過去に入力したビット幅と比較してその
最大値を判定して出力する最大値判定部と、 上記最大値判定部により判定された上記変数のビット幅
の最大値を記憶するビット幅メモリとを備えたことを特
徴とするプロセッサモニタ装置。 - 【請求項2】 上記最大値判定部は、上記有意ビット検
出部の出力に接続される第1の端子と、上記ビット幅メ
モリに記憶されたビット幅の最大値を入力する第2の端
子とを備えたことを特徴とする請求項1記載のプロセッ
サモニタ装置。 - 【請求項3】 上記データメモリとビット幅メモリと
は、同一のメモリアドレスで識別される複数の記憶位置
をそれぞれ有し、上記データメモリが上記メモリアドレ
スで識別された記憶位置に変数を記憶する毎に、上記ビ
ット幅メモリの同一のメモリアドレスで識別された記憶
位置に上記最大値判定部が判定したその変数のビット幅
の最大値を記憶することを特徴とする請求項1又は2に
記載のプロセッサモニタ装置。 - 【請求項4】 上記プロセッサは、レジスタアドレスに
より識別される1つ以上のレジスタからなるレジスタフ
ァイルを備え、 上記レジスタファイルは上記データメモリから上記変数
を転送して上記レジスタに記憶するとともに、 上記プロセッサモニタ装置は、上記変数を記憶するレジ
スタを識別するレジスタアドレスを入力して上記データ
メモリ内で上記変数を記憶する記憶位置を識別するデー
タメモリアドレスに変換して出力するレジスタ関連アド
レステーブルと、上記レジスタに変数が記憶される場合
に、上記レジスタ関連アドレステーブルから出力される
データメモリアドレスを上記ビット幅メモリのメモリア
ドレスとするアドレスセレクタと、上記レジスタに変数
が記憶される場合に、レジスタに記憶される変数を選択
して上記有意ビット検出部に出力するデータセレクタと
を備えたことを特徴とする請求項3に記載のプロセッサ
モニタ装置。 - 【請求項5】 上記プロセッサモニタ装置は、さらに、
上記プログラムの実行中に上記変数を更新した更新度数
を記憶する度数メモリと、 上記度数メモリに記憶された上記更新度数と上記ビット
幅メモリに記憶された上記変数のビット幅との度数分布
図を生成して出力する度数分布図出力部と、 上記度数分布図出力部により出力された上記度数分布図
を表示する表示部を備えたことを特徴とする請求項1記
載のプロセッサモニタ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8176417A JPH1021122A (ja) | 1996-07-05 | 1996-07-05 | プロセッサモニタ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8176417A JPH1021122A (ja) | 1996-07-05 | 1996-07-05 | プロセッサモニタ装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH1021122A true JPH1021122A (ja) | 1998-01-23 |
Family
ID=16013335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8176417A Pending JPH1021122A (ja) | 1996-07-05 | 1996-07-05 | プロセッサモニタ装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH1021122A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010204720A (ja) * | 2009-02-27 | 2010-09-16 | Nec Corp | 回路設計支援システム、回路設計支援方法及びプログラム |
JP2011008789A (ja) * | 2009-06-26 | 2011-01-13 | Intel Corp | グラフィック分析技術 |
US8624907B2 (en) | 2009-06-26 | 2014-01-07 | Intel Corporation | Graphics analysis techniques |
JP2015007820A (ja) * | 2013-06-24 | 2015-01-15 | キヤノン株式会社 | 情報処理装置、情報処理方法及びプログラム |
JP2015166967A (ja) * | 2014-03-04 | 2015-09-24 | 東芝情報システム株式会社 | 回路規模最適化装置及び回路規模最適化方法 |
-
1996
- 1996-07-05 JP JP8176417A patent/JPH1021122A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010204720A (ja) * | 2009-02-27 | 2010-09-16 | Nec Corp | 回路設計支援システム、回路設計支援方法及びプログラム |
JP2011008789A (ja) * | 2009-06-26 | 2011-01-13 | Intel Corp | グラフィック分析技術 |
US8581916B2 (en) | 2009-06-26 | 2013-11-12 | Intel Corporation | Graphics analysis techniques |
US8624907B2 (en) | 2009-06-26 | 2014-01-07 | Intel Corporation | Graphics analysis techniques |
JP2015007820A (ja) * | 2013-06-24 | 2015-01-15 | キヤノン株式会社 | 情報処理装置、情報処理方法及びプログラム |
JP2015166967A (ja) * | 2014-03-04 | 2015-09-24 | 東芝情報システム株式会社 | 回路規模最適化装置及び回路規模最適化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Van Praet et al. | Instruction set definition and instruction selection for ASIPs | |
US5819064A (en) | Hardware extraction technique for programmable reduced instruction set computers | |
Ross | Efficient hash probes on modern processors | |
US5696956A (en) | Dynamically programmable reduced instruction set computer with programmable processor loading on program number field and program number register contents | |
US6061783A (en) | Method and apparatus for manipulation of bit fields directly in a memory source | |
CA1119731A (en) | Multibus processor for increasing execution speed using a pipeline effect | |
US20080201564A1 (en) | Data processor | |
Coleman et al. | The European logarithmic microprocesor | |
Ghosh et al. | Analytical design space exploration of caches for embedded systems | |
CN112182999B (zh) | 一种基于mips32指令系统的三级流水线cpu设计方法 | |
JPH1021122A (ja) | プロセッサモニタ装置 | |
Reichenbach et al. | RISC-V3: A RISC-V compatible CPU with a data path based on redundant number systems | |
Neves et al. | Reconfigurable stream-based tensor unit with variable-precision posit arithmetic | |
Großschädl et al. | Architectural enhancements for Montgomery multiplication on embedded RISC processors | |
Citron et al. | Hardware memoization of mathematical and trigonometric functions | |
Campi et al. | A reconfigurable processor architecture and software development environment for embedded systems | |
Glokler et al. | Increasing the power efficiency of application specific instruction set processors using datapath optimization | |
Hayes et al. | The architecture of the SC32 Forth engine | |
Linhares et al. | A SystemC profiling framework to improve fixed-point hardware utilization | |
Kann | Implementing a one address cpu in logisim | |
JP4382076B2 (ja) | データ処理装置 | |
Mego et al. | Instruction mapping techniques for processors with very long instruction word architectures | |
Arnold | Software configurable processors | |
Casillo et al. | A methodology to adapt data path architectures to a MIPS-1 model | |
CA3225836A1 (en) | Apparatus and method for energy-efficient and accelerated processing of an arithmetic operation |