JP2005234617A - マルチプロセッサデバッガおよびデバッグ方法 - Google Patents
マルチプロセッサデバッガおよびデバッグ方法 Download PDFInfo
- Publication number
- JP2005234617A JP2005234617A JP2004039233A JP2004039233A JP2005234617A JP 2005234617 A JP2005234617 A JP 2005234617A JP 2004039233 A JP2004039233 A JP 2004039233A JP 2004039233 A JP2004039233 A JP 2004039233A JP 2005234617 A JP2005234617 A JP 2005234617A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- sub
- program
- main processor
- execution
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Abstract
【課題】マルチプロセッサシステムにおいて、全てのプロセッサの状態と外部の事象とを事実に基づいて特定し、プログラムの誤りの発見と除去とを確実かつ迅速に行えるようにする。
【解決手段】プログラム実行中にプログラムの実行に関する情報を逆方向実行手段32により取得し、これをリソースバッファ管理手段35を通じてリソースバッファ36に蓄積する。メインプロセッサから停止指示が到来した場合に、サブプロセッサにおける停止時刻を示す現在時刻を取得し、遅延時間計測手段により元時刻と現在時刻とから遅延時間を算出する。この遅延時間分、逆方向実行手段により、過去の時点に処理を戻し、メインプロセッサとサブプロセッサの停止タイミングを一致させる。
【選択図】図3
【解決手段】プログラム実行中にプログラムの実行に関する情報を逆方向実行手段32により取得し、これをリソースバッファ管理手段35を通じてリソースバッファ36に蓄積する。メインプロセッサから停止指示が到来した場合に、サブプロセッサにおける停止時刻を示す現在時刻を取得し、遅延時間計測手段により元時刻と現在時刻とから遅延時間を算出する。この遅延時間分、逆方向実行手段により、過去の時点に処理を戻し、メインプロセッサとサブプロセッサの停止タイミングを一致させる。
【選択図】図3
Description
この発明は、マルチプロセッサ環境で用いられるデバッガおよびデバッグ方法に関する。
プログラムの誤り(バグ)を発見して、プログラムの修正作業を支援するための種々のデバッガが提供されている。デバッガの基本的な機能は、プログラムの実行を指定された行で停止させ、そのときのメモリや変数の内容を参照したり、変更したりできるようにするものである。近年においては、後に記す特許文献1に開示されているように、プログラムを停止させた時点からそのプログラムによる処理を逆方向に実行できるようにしたデバッガも提案されている。
この特許文献1に開示されたデバッガのように、プログラムの逆方向の実行が可能な場合、(1)デバッグ時において、行過ぎた命令実行を逆方向に復元することにより、プログラムの最初から実行しなおす場合に比べて、効率よくデバッグを実施できる。また、(2)プロセッサがどのような経路で現状に達したかを知るためのトレース情報を得ることができる。また、(3)実機を用いずに、システム状態をシミュレーションすることができるなどの利点がある。
特開平8−320813号公報
ところで、上述したプログラムの逆方向の実行が可能なデバッガの場合、複数のプロセッサを有するいわゆるマルチプロセッサシステムにおいては、マルチプロセッサの協調動作における、実機特有の問題を特定できないという問題があり、特にプログラムによって非可逆に破壊される部位を再現することはできない。
すなわち、マルチプロセッサシステムは、プロセッサ(CPU)を複数搭載し、各プロセッサに処理を分散させることによって、処理能力を向上させるようにしたものである。このため、基点となるメインプロセッサにおいてプログラムの実行を指示位置で停止させても、メインプロセッサからの指示に応じて動作することになるサブプロセッサにおいては、メインプロセッサに遅れてプログラムの実行を停止させることになる。
このため、マルチプロセッサにおけるデバッグにおいては、メインプロセッサとサブプロセッサとではプログラムの停止のタイミングが一致せず、同一時点におけるメモリや変数の内容が取得できずに、非可逆に破壊されてしまった部位を再現することはできない。したがって、協調動作する各プロセッサで実行されるプログラムの誤り(バグ)が発見し難く、プログラムの誤りの修正に時間がかかってしまうという問題がある。
以上のことにかんがみ、この発明は、上記問題点を一掃し、マルチプロセッサシステムにおいて、全てのプロセッサの状態と外部の事象とを事実に基づいて特定し、プログラムの誤りの発見と除去とを確実かつ迅速に行えるようにすることを目的とする。
上記課題を解決するため、請求項1に記載の発明のマルチプロセッサデバッガは、
メインプロセッサと、前記メインプロセッサによって動作が管理される1つ以上のサブプロセッサとを備えたマルチプロセッサに用いるデバッガであって、
前記メインプロセッサ側に、
ユーザによって指示された位置でプログラムの実行を停止させた時点の現在時刻を取得し、これを元時刻として前記サブプロセッサのそれぞれに提供する元時刻提供手段と、
プログラムの実行の停止に伴って、動作の停止指示を前記サブプロセッサのそれぞれに提供する指示手段と
を設け、
1つ以上の前記サブプロセッサ側のそれぞれに、
プログラムの実行に関する情報をプログラム実行中に取得して、これを記憶手段に記録する取得手段と、
前記メインプロセッサからの前記停止指示を受け付けた時点の現在時刻を取得する現在時刻取得手段と、
前記メインプロセッサからの前記元時刻と前記現在時刻取得手段からの前記現在時刻とから遅延時間を算出する遅延時間計測手段と、
前記メインプロセッサからの前記停止指示に応じて動作を停止した時点から遡って、前記遅延時間算出手段において算出された前記遅延時間分の前記プログラムの実行に関する情報を前記記憶手段に保持するようにする情報管理手段と、
前記記憶手段に記憶された前記プログラムの実行に関する情報に基づいて、前記プログラムによる処理を、逆方向に実行するよにして、ユーザによって指示された前記位置に対応する時点における前記サブプロセッサの状態を復元する逆方向実行手段と
を設けることを特徴とする。
メインプロセッサと、前記メインプロセッサによって動作が管理される1つ以上のサブプロセッサとを備えたマルチプロセッサに用いるデバッガであって、
前記メインプロセッサ側に、
ユーザによって指示された位置でプログラムの実行を停止させた時点の現在時刻を取得し、これを元時刻として前記サブプロセッサのそれぞれに提供する元時刻提供手段と、
プログラムの実行の停止に伴って、動作の停止指示を前記サブプロセッサのそれぞれに提供する指示手段と
を設け、
1つ以上の前記サブプロセッサ側のそれぞれに、
プログラムの実行に関する情報をプログラム実行中に取得して、これを記憶手段に記録する取得手段と、
前記メインプロセッサからの前記停止指示を受け付けた時点の現在時刻を取得する現在時刻取得手段と、
前記メインプロセッサからの前記元時刻と前記現在時刻取得手段からの前記現在時刻とから遅延時間を算出する遅延時間計測手段と、
前記メインプロセッサからの前記停止指示に応じて動作を停止した時点から遡って、前記遅延時間算出手段において算出された前記遅延時間分の前記プログラムの実行に関する情報を前記記憶手段に保持するようにする情報管理手段と、
前記記憶手段に記憶された前記プログラムの実行に関する情報に基づいて、前記プログラムによる処理を、逆方向に実行するよにして、ユーザによって指示された前記位置に対応する時点における前記サブプロセッサの状態を復元する逆方向実行手段と
を設けることを特徴とする。
また、請求項1に記載の発明のマルチプロセッサデバッガによれば、取得手段により、プログラム実行中にプログラムの実行に関する情報が取得され、これが記憶手段に記録されて順次に蓄積するようにされる。そして、元時刻提供手段により、メインプロセッサのプログラムの実行が停止された時点の現在時刻が取得され、これが各サブプロセッサに提供される。また、指示手段により、各サブプロセッサに停止指示が提供され、これに応じてサブプロセッサにおいてのプログラムの実行が停止するようにされる。
この場合、現在時刻取得手段により、各サブプロセッサにおいて、停止指示を受け付けた時点の現在時刻が取得され、遅延時間計測手段により、元時刻と現在時刻とから遅延時間が算出される。そして、各サブプロセッサのそれぞれにおいて、情報管理手段により、メインプロセッサからの停止指示に応じて動作を停止させた時点から、過去に遡って遅延時間分のプログラムの実行に関する情報が記憶手段において有効となるように管理するようにされる。
そして、逆方向実行手段により、情報管理手段により記憶手段において管理されている情報に基づいて、遅延時間分、逆方向へプログラムが実行するようにされ、各サブプロセッサにおいて、メインプロセッサの停止時点と同じ時点におけるプログラムの実行に関する情報が取得できるようにされる。これにより、マルチプロセッサ環境において実行されるプログラムの誤りを的確かつ迅速に発見し、修正することができるようにされる。
また、請求項2に記載の発明のマルチプロセッサデバッガは、請求項1に記載のマルチプロセッサデバッガであって、
デバッグ処理時に、前記メインプロセッサと1つ以上の前記サブプロセッサとの一方あるいは両方から、本来、ハードウェア各部に供給されるべきハードウェア制御信号の供給を受けて、ハードウェア各部の状態を再現するようにするシミュレータ手段を備えることを特徴とする。
デバッグ処理時に、前記メインプロセッサと1つ以上の前記サブプロセッサとの一方あるいは両方から、本来、ハードウェア各部に供給されるべきハードウェア制御信号の供給を受けて、ハードウェア各部の状態を再現するようにするシミュレータ手段を備えることを特徴とする。
この請求項2に記載の発明のマルチプロセッサデバッガによれば、本来、ハードウェア各部に供給されるべき、メインプロセッサや1つ以上のサブプロセッサからのハードウェア制御信号の供給を受けて、各ハードウェア部の状態を再現することができるシミュレータ手段が設けられる。
これにより、プロセッサ外部のハードウェア状態を、シミュレータ環境によらない実機上の状態として再現することができ、実機を用いなくても、実機を用いた場合と同様に把握して、プログラムの誤りを発見し、修正することができるようにされる。
この発明によれば、マルチプロセッサ環境において、従来不可能だったプロセッサ間の命令実行を同期させた状態を観測でき、マルチプロセッサ環境特有の問題同定に寄与することができる。
また、プロセッサの実行状態を保存しておく記憶手段(リソースバッファ)の容量を、プロセッサごとに適切に決定することができ、特に組み込みシステムにおけるメモリ節約に寄与することができる。
また、ハードウェアシミュレータと組み合わせることにより、特にプロセッサ外部のハードウェア状態を、前記プロセッサ間の命令実行に同期させることができ、特にソフトウェアシミュレーション環境によらない実機上の動作を再現でき、ハードウェア状態に依存した問題の同定に寄与することができる。
また、ハードウェアシミュレータと組み合わせることにより、特にプロセッサ外部のハードウェア状態を、前記プロセッサ間の命令実行に同期させることができ、特にソフトウェアシミュレーション環境によらない実機上の動作を再現でき、ハードウェア状態に依存した問題の同定に寄与することができる。
以下、図を参照しながら、この発明の一実施の形態が適用されたマルチプロセッサデバッガについて説明する。
[マルチプロセッサデバッガの概要]
図1は、この実施の形態のマルチプロセッサデバッガの構成例を説明するためのブロック図である。図1に示すように、この実施の形態のマルチプロセッサデバッガは、デバッガ1と、メインプロセッサ2と、サブプロセッサ3と、ハードウェアシミュレータ4とを備えたものである。
図1は、この実施の形態のマルチプロセッサデバッガの構成例を説明するためのブロック図である。図1に示すように、この実施の形態のマルチプロセッサデバッガは、デバッガ1と、メインプロセッサ2と、サブプロセッサ3と、ハードウェアシミュレータ4とを備えたものである。
この実施の形態において、デバッガ1は、ユーザインターフェース(以下、ユーザI/Fと略称する。)としての機能を有するものである。メインプロセッサ2は、この実施の形態のマルチプロセッサデバッガ全体を制御するものであり、サブプロセッサ3におけるプログラムの実行やデータ処理のスケジュール管理と全般管理などを行うものである。
サブプロセッサ3は、メインプロセッサ2によってその動作が管理されるが、メインプロセッサ2とは独立にプログラムの実行やデータ処理を行うことができるものである。また、ハードウェアシミュレータ4は、メインプロセッサ2やサブプロセッサ3からハードウェア各部に供給されるハードウェア制御信号の供給を受けて、ハードウェア各部の状態を再現し、これをデバッガ情報として通知することができるものである。
そして、図1に示すように、デバッガ1は、メインプロセッサ2に対して動作指示D1を発行する。また、デバッガ1は、メインプロセッサ2との間でデバッグ情報D1をやり取りし、サブプロセッサ3との間でデバッグ情報D2をやり取りし、ハードウェアシミュレータ4との間でデバッグ情報D3をやり取りする。
また、メインプロセッサ2は、サブプロセッサ3に対して動作指示M2、元時刻(時刻情報)Xtを発行し、ハードウェアシミュレータ4に対して、動作指示M3を発行し、また、ハードウェアシミュレータ4との間でハードウェア制御信号C1をやり取りする。また、サブプロセッサ3は、ハードウェアプロセッサ4との間でハードウェア制御信号C2をやり取りする。
ここで、動作指示M1、M2、M3のそれぞれは、相手先であるメインプロセッサ2、サブプロセッサ3、ハードウェアシミュレータ4に対して、目的とする対象動作についての開始、停止、変更を指示したり、あるいは、情報取得や情報設定等の動作を指示したりするものであり、各部における対象の挙動を制御するためのものである。
また、ハードウェア制御信号C1、C2は、本来、これがやり取りされる機器を制御する信号である。また、デバッグ情報D1、D2、D3は、メインプロセッサ2、サブプロセッサ3、ハードウェアシミュレータ4の内部状態等、マルチプロセッサシステムの問題を同定するに十分な情報を含んだものである。また、元時刻Xtは、メインプロセッサ2から発せられる現在時刻を示す情報である。
例えば、動作指示の一例として、「メモリ内容の取得」が、デバッガ1から発行された場合には、メインプロセッサ2が動作して、あるいは、メインプロセッサ2とサブプロセッサ3とが動作して、あるいは、メインプロセッサ2とハードウェアシミュレータ4とが動作して、目的とするメモリからメモリ情報が読み出され、その内容をユーザに知らせることができるようにされる。
この場合、デバッガ1は、動作指示D1を発行すると共に、読み出されたメモリ情報をデバッグ情報D1、あるいは、デバッグ情報D2、あるいは、デバッグ情報D3として提供を受け、これをユーザが見やすいように加工するなどして、ユーザに提示することにより、対象のメモリ情報(メモリ内容)をユーザに知らせることができる。
なお、ハードウェア制御信号は、図1に示したように、メインプロセッサ2やサブプロセッサ3と、外部の機器(回路部等)との間でやり取りされるだけでなく、後述もするが、メインプロセッサ2やサブプロセッサ3の内部において、メインプロセッサ2やサブプロセッサ3を構成する各部を制御する場合においても用いられるものである。
また、デバッガ1は、図示しないキー操作部を通じて受け付けたユーザからの操作入力を解釈して、動作指示M1を発行する共に、提供されたデバッグ情報を可視化して、図示しないLCD(Liquid Crystal Display)などの表示部を通じてユーザに提供することができるものであり、上述もしたように、マルチプロセッサデバッガにおけるユーザI/Fとして機能することになる。
そして、一般に、マルチプロセッサシステムにおいては、メインプロセッサとサブプロセッサとが協調動作するが、メインプロセッサとサブプロセッサとは、それぞれ独立にプログラムを実行したり、データ処理を行ったりする。このため、メインプロセッサとサブプロセッサとのそれぞれにおいて実行されるプログラムを、同期をとって停止させることは難しく、適正にデバッグ処理を行うことは難しい。
この実施の形態のマルチプロセッサデバッガにおいても、サブプロセッサ3は、メインプロセッサ2により管理されるが、メインプロセッサ2からは独立して動作するものである。しかし、この実施の形態のマルチプロセッサデバッガにおいては、デバッグを行う場合に、メインプロセッサ2とサブプロセッサ3とにおけるプログラムの停止時点の同期を取れるようにすることによって、メインプロセッサ2だけでなくサブプロセッサ3の状態を示す情報についても正確に取得して、これをユーザに提供することができるようにしている。
以下、この実施の形態のマルチプロセッサデバッガのメインプロセッサ2とサブプロセッサ3の構成と動作について説明する。
[メインプロセッサ2について]
まず、メインプロセッサ2について説明する。図2は、図1に示したマルチプロセッサデバッガのメインプロセッサ2を説明するためのブロック図である。図2に示すように、この実施の形態のメインプロセッサ2は、対象プロセッサ21と、逆方向実行手段22と、メモリ23と、計時手段24と、リソースバッファ管理手段25と、リソースバッファ26とを備えたものである。
まず、メインプロセッサ2について説明する。図2は、図1に示したマルチプロセッサデバッガのメインプロセッサ2を説明するためのブロック図である。図2に示すように、この実施の形態のメインプロセッサ2は、対象プロセッサ21と、逆方向実行手段22と、メモリ23と、計時手段24と、リソースバッファ管理手段25と、リソースバッファ26とを備えたものである。
図2において、対象プロセッサ21は、いわゆるCPU(Central Processing Unit)であり、リソースとしてレジスタ情報を持ち、プログラムの処理を行う(プログラムを実行する)主体である。
逆方向実行手段22は、対象プロセッサ21からのレジスタ情報をもとに、対象プロセッサ21が可逆的に破壊する(書き換える)メモリ23のメモリ情報の同定を行い、メモリ23からメモリ情報を取得したり、また、メモリ23のメモリ情報を復元したりすることができるものである。
すなわち、逆方向実行手段22は、後述もするように、プログラムの実行に関する情報であるリソースを取得し、これをリソースバッファ管理手段25を通じてリソースバッファ25に記録すると共に、デバッグ時においては、リソースバッファ26からリソースバッファ管理手段25を通じて供給を受けるリソースに基づいて、逆方向にプログラムを実行するようにし、メモリ23の破壊されたデータを復元することができるものである。
換言すれば、逆方向実行手段22は、リソースを取得して記憶手段であるリソースバッファ26に記録するようにする取得手段としての機能と、記憶手段であるリソースバッファ26から読み出されたリソースに基づいてプログラムを逆方向に実行し、メモリ23のデータを復元する逆方向実行手段としての機能を有するものである。
計時手段24は、現在時刻を提供するいわゆる時計回路であり、対象プロセッサ21からのハードウェア制御信号によって、システム全体の基準時刻に同期することができるようにしている。また、リソースバッファ管理手段25は、リソースバッファ26を管理する主体であり、リソースバッファ26をリングバッファ状に管理することができるものである。
そして、図2に示したように、メインプロセッサ2において、計時手段24は、ハードウェア制御信号の供給を受け、リソースバッファ管理手段25に対して現在時刻Rtを供給すると共に、サブプロセッサ3に対して元時刻Xtを供給する。ここで、現在時刻Rtは、現在の時刻を表し、マルチプロセッサシステムの問題同定に十分な分解能を持った確度と精度で提供される。また、元時刻Xtは、現在時刻と同じ時刻を提供する。
すなわち、現在時刻Rt、元時刻Xtは、同じ時刻の情報を提供するものであるが、メインプロセッサ2の内部で用いられるものを現在時刻Rtとし、外部に出力される現在の時刻を元時刻Xtとしている。このように、計時手段24は、メインプロセッサ2における現在時刻Rtを取得し、これを元時刻Xtとしてサブプロセッサ3に供給する元時刻提供手段としての機能を有するものである。
そして、対象プロセッサ21は、ハードウェアシミュレータ4との間でハードウェア制御信号C1を送受すると共に、デバッガ1からの動作指示M1の供給を受け、これらに基づいて指示された処理を行って、逆方向実行手段22との間でレジスタ情報Irを送受する。ここで、レジスタ情報Irは、対象プロセッサ21に内蔵される、複数のレジスタの全ての値の集合であり、プログラムの現在の命令実行に十分な情報を含んでいる。
また、対象プロセッサ21は、サブプロセッサ3に対して動作指示M2を供給することができると共に、ハードウェアシミュレータ4に対して動作指示M3を供給することができるものである。すなわち、対象プロセッサ21は、動作の停止指示などの動作指示をサブプロセッサ3などに対して提供する指示手段としての機能を有するものである。
逆方向実行手段22は、デバッガ1との間でデバッグ情報D1をやり取りすると共に、メモリ23との間でメモリ情報Imをやり取りする。また、逆方向実行手段22は、リソースバッファ管理手段25に対して保存リソースSRを提供し、リソースバッファ管理手段25から復元リソースRRの供給を受ける。
すなわち、逆方向実行手段22は、順方向実行時(通常の処理の実行時)においては、メモリ情報Irやメモリ情報Imなどからなる保存リソースSRを、リソースバッファ管理手段25に供給する。一方、逆方向実行時(デバッグ処理時)においては、リソースバッファ管理手段25から復元リソースRR(リソースバッファ26に記録されていた保存リソース)の提供を受けて、これに基づき逆方向に処理を実行し、メモリ情報を復元するようにして、この時に得られる情報をデバッグ情報D1としてデバッガ1に提供することができるものである。なお、デバッグ情報D1は、逆方向実行手段22が扱う全てのデータを扱うことができるものである。
リソースバッファ管理手段25は、逆方向実行手段22から保存リソースSRの提供を受け、これをリソースバッファ26に格納することができると共に、リソースバッファ26から復元リソースRRを読み出して、これを逆方向実行手段22に供給することができるものである。
すなわち、リソースバッファ管理手段25が、「生成」指示をリソースバッファ26に供給すると、これに応じてリソースバッファ26は、保存リソースSRを保持しておくに十分なリソースバッファ領域を確保する。また、リソースバッファ管理手段25が、「保存」指示をリソースバッファ26に供給すると、これに応じてリソースバッファ26は、上述のように確保した領域に、リソースバッファ管理手段25からの保存リソースSRを追加記録(格納)する。このようにして、リソースバッファ管理手段25は、最新の規定リソース数分の保存リソースSRを常に保持するようにリングバッファとして用いるリソースバッファ26を管理する。
また、リソースバッファ管理手段25は、「復元」指示を与えることにより、リソースバッファ26に格納された、最新のリソースを、復元リソースRRとして取り出し、これを逆方向実行手段22に供給する。すなわち、「復元」時においては、リソースバッファ管理手段25は、リソースバッファ26をLIFO(Last In First Out)メモリとして用いて、「保存」時とは逆の順序で復元リソースRRを取り出して、これを利用できるようにする。
このように、この実施の形態のメインプロセッサ2においては、逆方向実行手段22を備えることにより、メインプロセッサ2において行った処理を逆方向に実行するようにして、目的とする時点の状態をデバッグ情報D1としてデバッガ1に提供することができるようにしている。
[サブプロセッサ3について]
次に、サブプロセッサ3について説明する。図3は、図1に示したマルチプロセッサデバッガのサブプロセッサ3を説明するためのブロック図である。図3に示すように、この実施の形態のサブプロセッサ3は、対象プロセッサ31と、逆方向実行手段32と、メモリ33と、計時手段34と、リソースバッファ管理手段35と、リソースバッファ36と、遅延時間計測手段37とを備えたものである。
次に、サブプロセッサ3について説明する。図3は、図1に示したマルチプロセッサデバッガのサブプロセッサ3を説明するためのブロック図である。図3に示すように、この実施の形態のサブプロセッサ3は、対象プロセッサ31と、逆方向実行手段32と、メモリ33と、計時手段34と、リソースバッファ管理手段35と、リソースバッファ36と、遅延時間計測手段37とを備えたものである。
すなわち、サブプロセッサ3は、遅延時間計測手段37を除けば、図2に示したメインプロセッサ2とほぼ同様の構成を有するものである。なお、図3において、括弧内の数字は、図2に示したメインプロセッサ2の対応する構成部分を示しており、サブプロセッサ3を構成する各部も、図2に示したメインプロセッサ2の対応する各部と同様の機能を有し同様に動作するものである。
そして、図3に示すサププロセッサ3において、計時手段34は、対象プロセッサ31からのハードウェア制御信号の供給を受け、遅延時間計測手段37に対して現在時刻Rtを供給する。遅延時間計測手段37には、メインプロセッサ2からの元時刻Xtも供給される。元時刻Xtは、上述もしたように、メインプロセッサ2が発した時刻であり、サブプロセッサ3における現在時刻Rtとは異なる時刻である。
遅延時間計測手段37は、サブプロセッサの計時手段34からの現在時刻Rtとメインプロセッサ2の計時手段24からの元時間Xtとから、遅延時間Dtを計算する。この遅延時間Dtは、メインプロセッサ2からの「動作指示」が、サブプロセッサ3に到達するまでの時間遅延を表し、メインプロセッサ2の時刻分解能とは異なってもよく、サブプロセッサ3の問題同定に十分な分解能を持った確度と精度を有するものである。
そして、遅延時間計算手段37において得られた遅延時間Dtは、リソースバッファ管理手段35に供給される。そして、リソースバッファ管理手段35は、遅延時間計測手段37からの遅延時間Dtに基づいて、保存リソースを保存するために必要なリソースバッファ36の容量を計算し、保存リソースを格納するために十分な容量の領域を確保することができるようにしている。
そして、この図3に示したサブプロセッサ3においても、対象プロセッサ31は、ハードウェアシミュレータ4との間でハードウェア制御信号C2を送受すると共に、メインプロセッサ2からの動作指示M2の供給を受け、これらに基づいて指示された処理を行って、逆方向実行手段32との間でレジスタ情報Irを送受する。ここで、レジスタ情報Irは、対象プロセッサ31に内蔵される、複数のレジスタの全ての値の集合であり、プログラムの現在の命令実行に十分な情報を含んでいる。
逆方向実行手段32は、デバッガ1との間でデバッグ情報D2をやり取りすると共に、メモリ33との間でメモリ情報Imをやり取りする。また、逆方向実行手段32は、リソースバッファ管理手段35に対して保存リソースSRを提供し、リソースバッファ管理手段35から復元リソースRRの供給を受ける。
すなわち、逆方向実行手段32は、順方向実行時(通常の処理の実行時)においては、メモリ情報Irやメモリ情報Imなどから得られる保存リソースSRを、リソースバッファ管理手段35に供給する。一方、逆方向実行時(デバッグ処理時)においては、リソースバッファ管理手段35から復元リソースRRの提供を受けて、これに基づき逆方向に処理を実行し、メモリ情報を復元するようにして、この時に得られる情報をデバッガ1にデバッグ情報D2としてデバッガ1に提供することができるものである。なお、デバッグ情報D2は、逆方向実行手段32が扱う全てのデータを扱うことができるものである。
リソースバッファ管理手段35は、逆方向実行手段32から保存リソースSRの提供を受け、これをリソースバッファ36に格納することができると共に、リソースバッファ36から復元リソースRRを読み出して、これを逆方向実行手段32に供給することができるものである。
すなわち、リソースバッファ管理手段35は、上述もしたように、遅延時間Dtに基づいて、保存リソースを保存するために必要なリソースバッファ36の容量を計算し、「生成」指示において、リソースバッファ36に保存リソースSRを保持しておくに十分なリソースバッファ領域を確保する。これによって、遅延時間分のリソースのみをリソースバッファ36に保持することができるようにしている。
また、リソースバッファ管理手段35が、「保存」指示をリソースバッファ36に供給すると、これに応じてリソースバッファ36は、上述のように確保した領域に、リソースバッファ管理手段35からの保存リソースSRを追加記録(格納)する。このようにして、リソースバッファ管理手段35は、メインプロセッサ2からの指示の指示の遅延時間Dtをも考慮して、必要な保存リソースSRを常に保持するようにリングバッファとして用いるリソースバッファ36を管理する。
また、リソースバッファ管理手段35は、「復元」指示を与えることにより、リソースバッファ36に格納された、最新のリソースを、復元リソースRRとして取り出し、これを逆方向実行手段32に供給する。すなわち、「復元」時においては、リソースバッファ管理手段35は、リソースバッファ36をLIFO(Last In First Out)メモリとして用いて、「保存」時とは逆の順序で復元リソースRRを取り出して、これを利用できるようにする。
このように、この実施の形態のサブプロセッサ3においては、メインプロセッサ2とサブプロセッサ3との間に生じる指示伝達の遅延時間をも考慮して、必要な分の保存リソースの全部を確実に保存し、これを利用できるようにし、サブプロセッサ3において行った処理を逆方向に実行するようにして、目的とする時点の状態をデバッグ情報D2としてデバッガ1に提供することができるようにしている。
なお、上述もしたように、サブプロセッサ2の逆方向実行手段32が、プログラム実行時においてリソースを取得し、これをリソースバッファ管理手段35を通じて記憶手段であるリソースバッファ36に記録する取得手段としての機能と、デバッグ時においては、リソースバッファ管理手段35を通じて記憶手段であるリソースバッファ36に記憶されているリソースを読み出して、これに基づいてプログラムの逆方向の実行を行って、メモリ32のデータを復元する逆方向実行手段としての機能を併せ持つものである。
また、計時手段34が現在時刻取得手段としての機能を実現し、遅延時間計測手段37が、メインプロセッサ2からの元時刻Xtと、計時手段34からの現在時刻とから遅延時間を算出する遅延時間計測手段としての機能を実現している。また、リソースバッファ管理手段35が、遅延時間分のリソースをリソースバッファ36に保持するようにする情報管理手段としての機能を実現するようにしている。
[逆方向実行手段の動作について]
図4は、図2、図3を用いて説明したメインプロセッサ2、サブプロセッサ3の逆方向実行手段22、32の基本的な動作について説明するための図である。ここでは、説明を簡単にするため、メインプロセッサ2の逆方向実行手段22の動作として説明する。しかし、サブプロセッサ3の逆方向実行手段32においても同様の処理が行われることになる。
図4は、図2、図3を用いて説明したメインプロセッサ2、サブプロセッサ3の逆方向実行手段22、32の基本的な動作について説明するための図である。ここでは、説明を簡単にするため、メインプロセッサ2の逆方向実行手段22の動作として説明する。しかし、サブプロセッサ3の逆方向実行手段32においても同様の処理が行われることになる。
図4において、対象プロセッサ21は、図2を用いて上述したように、プログラムを実行する主体である。対象プロセッサ21には処理フローがあり、プログラムにしたがって、命令を実行して行くことになる。
そして、図4において、「実行時リソース」は、対象プロセッサ21がひとつの命令を実行するときに必要な、レジスタやメモリの情報であり、プロセッサ21が命令を実行するごとに更新され、更新に先立って図4に示すように「スナップショット」として保存される。「スナップショット」は、過去の時点におけるプロセッサ21の実行環境を表す情報である。
したがって、実行時リソースは、図2を用いて説明した保存リソースSRと等しく、「スナップショット配列」は、リソースバッファ26と等しく、「スナップショット」は「スナップショット配列(リソースバッファ26)」に蓄えられる、実行時リソース(保存リソース)のひとつの処理単位を意味する。
そして、通常の順方向実行時において、逆方向実行手段22は、対応プロセッサ21が命令を実行する毎に、対応プロセッサ21のレジスタやメモリ23から実行時リソースを取得し、これを保存リソースSRとして、リソースバッファ管理手段25を通じて、リソースバッファ26に格納する。
そして、逆方向実行手段22は、逆方向に処理を実行する場合には、上述もしたように、リソースバッファ管理手段25を通じて、リソースバッファ26に格納されているスナップショットを復元リソースとして読み出し、この復元リソースに基づいて、正確に処理を逆方向に実行して、メインプロセッサの状態を正確に再現することができるようにしている。
この逆方向に命令を実行する処理を、図4に示したステップ番号S1〜S6に対応させて説明すると、以下のようになる。まず、ユーザからの指示に応じて、デバッガ1は、メインプロセッサ2の対象プロセッサ21の処理フロー中にブレークポイントを設定する(ステップS1)。
そして、対象プロセッサ21は、指示されたプログラムを実行し(ステップS2)、命令実行のたびに、実行時リソース(保存リソース)をスナップショットとして、スナップショット配列(リソースバッファ26)に格納する(ステップS3)。スナップショット配列は、リソースバッファ管理手段25によって、リソースバッファ26がリングバッファ状に使用されて、これに格納される。
プログラムの実行がブレークポイントに達すると、対応プロセッサ21は命令実行を停止する(ステップS4)。このとき、スナップショット配列(リソースバッファ26)には、対応プロセッサ21がブレークポイントにいたるまでに経た命令のスナップショット(保存リソース)が保存されている。
ユーザがデバッガ1に対して逆実行を指示すると、デバッガ1は、メインプロセッサ2に逆実行の動作指示を出すので、これに応じて、対象プロセッサ21は、逆方向実行手段2を用いて、逆実行を行うようにする(ステップS5)。この場合、逆方向実行手段22は、リソースバッファ管理手段25を通じて、スナップショット配列(リソースバッファ26)から、ひとつずつ、スナップショットを読み出すようにし、これが復元リソースとして復元される(ステップS6)。すなわち、ひとつ前の命令実行時の対応プロセッサの状態が、忠実に再現できる。
そして、目的の命令位置(ブレーク設定位置)まで、ステップS5、ステップS6を繰り返すことにより、目的の命令位置のプロセッサの状態が正確に復元できる。このような、逆方向処理を行うことによって、デバックを短時間にかつ正確に行うことができるようにされる。
[メインプロセッサ2とサブプロセッサ3の協調動作について]
次に、図4を用いて説明したように動作する逆方向実行手段22を備え、図2に示した構成を有するメインプロセッサ2と、メインプロセッサ2の逆方向実行手段22と同様に動作することが可能な逆方向実行手段32を備え、図3に示した構成を有するサブプロセッサ3とを備え、図1に示したように構成されるこの実施の形態のマルチプロセッサデバッガにおけるデバッグ処理時の動作について説明する。
次に、図4を用いて説明したように動作する逆方向実行手段22を備え、図2に示した構成を有するメインプロセッサ2と、メインプロセッサ2の逆方向実行手段22と同様に動作することが可能な逆方向実行手段32を備え、図3に示した構成を有するサブプロセッサ3とを備え、図1に示したように構成されるこの実施の形態のマルチプロセッサデバッガにおけるデバッグ処理時の動作について説明する。
図5は、この実施の形態のマルチプロセッサデバッガにおいて、メインプロセッサ2の停止位置まで、サブプロセッサ3の実行状態を復元する処理(デバッグ処理)を説明するための図である。ここでは、マルチプロセッサデバッガにおけるメインプロセッサ2とサブプロセッサ3との動作を、図5に示したステップ番号S11〜S18に対応させて説明する。
まず、ユーザからの指示に応じて、デバッガ1は、メインプロセッサ2の対象プロセッサ21の処理フロー中にブレークポイントを設定する(ステップS11)。そして、メインプロセッサ2はデバッガ1からの動作指示M1に応じて、また、サブプロセッサ3はメインプロセッサ2からの動作指示に応じて、同時に目的とするプログラムを実行する(ステップS12)。この場合、プログラムの実行タイミングは、それぞれの動作指示M1、M2に応じて、例えばある時刻になったら実行を開始するなどの方法により、メインプロセッサ2とサブプロセッサ3とにおいて、同時にプログラムの実行を開始することができる。
そして、メインプロセッサ2と、サブプロセッサ3とにおいては、図4を用いて上述したように、対象プロセッサであるCPUが命令を1つ実行するたびに、実行リソース(保存リソースSR)が形成され、これがスナップショット配列(リソースバッファ26、36)に保存される。すなわち、サブプロセッサ3においては、図5にも示すように、対象プロセッサ31であるCPUが命令を1つ実行するたびに、実行リソース(保存リソースSR)が形成され、これがスナップショット配列(リソースバッファ36)に保存される(ステップS13)。
メインプロセッサ2におけるプログラムの実行が、ステップS11において設定されたブレークポイントに達すると、メインプロセッサ2においては当該プログラムの実行を停止する(ステップS14)。このとき、サブプロセッサ3においては、図5において、サブプロセッサ3側に点線矢印で示したように、メインプロセッサ2におけるプログラムが停止した後においても動作を継続している。
そして、メインプロセッサ2において、動作を停止させた後、メインプロセッサ2は、サブプロセッサ3に対して、動作指示M2により、プログラムの停止を指示する(ステップS15)。このメインプロセッサ2からサブプロセッサ3に対する停止指示は、メインプロセッサ2からサブプロセッサ3までの経路に応じて遅延する。
メインプロセッサ2からの停止指示に応じて、サブプロセッサ3は、メインプロセッサ2の動作の停止に遅れて動作を停止する(ステップS16)。このとき、計時手段34は、対象プロセッサ31からのハードウェア制御信号に応じて現在時刻を取得し、これを遅延時間計測手段37に供給する。
これによって、遅延時間計測手段37において遅延時間が算出され、遅延時間Dtとしてリソースバッファ管理手段25に供給されて、当該サブプロセッサ3における動作停止時から遡る方向に遅延時間分の保存リソースSRがリソースバッファ36に保持するようにされる。したがって、図5において、サブプロセッサ3のリソースバッファ36において斜線で示したように、遅延時間Dtよりも過去のリソースは破棄するようにされる。
そして、サブプロセッサ3は、動作停止後、逆方向実行手段32により、当該プログラム(当該処理)の逆方向に順次に実行する(ステップS17)。これにより、スナップショット配列(リソースバッファ36)から実行時リソース(保存リソース)が復元される(ステップS18)。この復元された実行時リソースが、図3を用いて説明したように、リソースバッファ管理手段35を通じて、逆方向実行手段32に戻される復元リソースRRに相当する。
そして、目的の命令位置(設定されたブレーク位置)まで実行時リソースが復元されると(保持しているリソース分の逆実行を終了すると)、逆実行を停止する(ステップS19)。この状態で、メインプロセッサとサブプロセッサの実行命令位置は、マルチプロセッサシステムの問題同定に十分な精度で、時刻的に一致している。
すなわち、図5において、基点CPUであるメインプロセッサ2の対象プロセッサ21の停止時の実行時リソース(保存リソース)MSRと、サブプロセッサ3の対象プロセッサ31の逆方向の実行の停止時の実行時リソースの実行命令位置は一致し、同期した実行時リソースを得て、メインプロセッサ2とサブプロセッサ3との状態を参照することができる。
これにより、メインプロセッサデバッガのデバッガ1は、メインプロセッサ2とサブプロセッサ3との、同時刻の状態を参照でき、以降は従来のデバッガと同様の手段により、マルチプロセッサシステムの問題を同定するための情報を得ることができる。
なお、図3等を用いて上述もしたように、スナップショット配列の容量、すなわち、リソースバッファ36に確保すべきスナップショット(保存リソースSR)の格納領域の容量は、遅延時間計測手段37により算出される遅延時間に基づいて決定されている。
このため、図5において、スナップショット配列の容量は、停止位置から目的の命令位置までのスナップショット(保存リソースSR)を保持するに十分なだけの容量が確保され、目的の命令位置以前のスナップショットは、たとえばリングバッファ状の制御によって、すでに破棄されていることを示している。このようにすることによって、必要なリソースだけを保持することができ、不必要な逆方向へのプログラムの実行を行うことなく、また、リソースバッファ36を効率よく使用することができる。
このように、この実施の形態のマルチプロセッサデバッガにおいては、サブプロセッサ3がメインプロセッサ2からの動作指示M2の1つである停止指示と、元時刻Xtの供給を受け、この停止指示を受けた時点のサブプロセッサ3における現在時刻を取得し、この現在時刻とメインプロセッサ2からの元時刻Xtに基づいて停止指示がサブプロセッサ3に到達するまでの遅延時間Dtを得る。
そして、サブプロセッサ3は、メインプロセッサ2からの停止指示に応じて動作を停止させた時点から遅延時間Dt分のリソースをリソースバッファ36に保持するようにし、保持されたリソース分だけ、逆方向実行手段32によりプログラムの逆方向への実行を行って、メインプロセッサ2における停止時点と同じタイミングのリソースをえて、その時点のサブプロセッサ3の動作状態を知ることができるようにされる。
すなわち、メインプロセッサ2とサブプロセッサ3における動作の停止時点を確実に一致させ、そのときの各プロセッサの内容を把握することができるようにされる。
なお、サブプロセッサ3のリソースバッファ36において、遅延時間分よりもさらに過去のデータは、必ずしも破棄する必要はなく、遅延時間分のリソースのみを用いて逆方向のプログラム実行ができるように、どこまでが遅延時間Dt分のデータであるかを把握できるようにしておけばよい。
また、サブプロセッサ3のリソースバッファ36に遅延時間Dt分以上のデータを残すようにした場合には、メインプロセッサ2における例えば1実行命令毎に逆方向にプログラムを実行するのに同期して、サブプロセッサ3においても、1実行命令毎に逆方向にプログラムを実行するようにすることも可能である。
[この発明によるマルチプロセッサデバッガの適用例について]
次に、図1〜図5を用いて説明したこの発明によるマルチプロセッサデバッガの適用例について具体的に説明する。以下においては、(1)マルチコアプロセッサ構成の場合、(2)ハードウェアシミュレータ内蔵マルチコアプロセッサ構成の場合、(3)シングルコアプロセッサ群構成の場合、(4)マルチコアプロセッサ群の場合の4つについて説明する。
次に、図1〜図5を用いて説明したこの発明によるマルチプロセッサデバッガの適用例について具体的に説明する。以下においては、(1)マルチコアプロセッサ構成の場合、(2)ハードウェアシミュレータ内蔵マルチコアプロセッサ構成の場合、(3)シングルコアプロセッサ群構成の場合、(4)マルチコアプロセッサ群の場合の4つについて説明する。
なお、以下に説明するマルチプロセッサデバッガにおいて、図1〜図5を用いて説明したマルチプロセッサデバッガと同様に構成される部分は、同じ参照符号を付し、重複する説明は省略する。
[(1)マルチコアプロセッサ構成の場合について]
図6は、この発明によるマルチプロセッサデバッガを、マルチコアプロセッサを用いて構成した場合の例を説明するためのブロック図である。図6に示すように、この例のマルチプロセッサデバッガは、ホストコンピュータ101と、マルチコアプロセッサ102と、シグナルエクササイザ103とを備えたものである。
図6は、この発明によるマルチプロセッサデバッガを、マルチコアプロセッサを用いて構成した場合の例を説明するためのブロック図である。図6に示すように、この例のマルチプロセッサデバッガは、ホストコンピュータ101と、マルチコアプロセッサ102と、シグナルエクササイザ103とを備えたものである。
ホストコンピュータ101は、例えばパーソナルコンピュータである。また、マルチコアプロセッサ102は、図6に示したように、複数のプロセッサを同一チップに内蔵したデバイスである。マルチコアプロセッサ102は、各プロセッサが協調動作するように設計されたものであり、複数のプロセッサのうちの1つはメインプロセッサ2であり、その他のプロセッサはサブプロセッサ3として機能する。すなわち、図6に示したマルチコアプロセッサ102は、複数のサブプロセッサ3(1)、3(2)、…を備えるものである。また、シグナルエクササイザ103は、ハードウェアシミュレータ4からなる例えば信号発生器である。
そして、ホストコンピュータ101にはデバッガ1が配置される。デバッガ1は、マルチコアプロセッサ102に対して動作指示M1を発行する。この動作指示M1は、図6に示したように、メインプロセッサ2に供給される。また、デバッガ1は、マルチプロセッサ102、および、シグナルエクササイザ103との間でデバッグ情報Dをやり取りする。このデバッガ情報Dは、メインプロセッサ2との間でやり取りされるデバッグ情報D1と、サブプロセッサ3(1)、3(2)、…のそれぞれとやり取りされるデバッグ情報D2(1)、D2(2),…、ハードウェアシミュレータ4との間でやり取りされるデバッグ情報D3とを総称するものである。
また、メインプロセッサ2から、各サブプロセッサ3(1)、3(2)、…に対しては、動作指示M2と元時刻Xtとが供給される。また、メインプロセッサ2とサブプロセッサ3のそれぞれは、ハードウェアシミュレータ4との間でハードウェア制御信号Cをやり取りする。このハードウェア制御信号Cは、メインプロセッサ2との間でやり取りされるハードウェア制御信号C1と、サブプロセッサ3(1)、3(2)、…との間でやり取りされるハードウェア制御信号C2(1)、C2(2)、…とを総称するものである。
すなわち、シグナルエクササイザ103のハードウェアシミュレータ4は、これに供給されるメインプロセッサ2からの動作指示M3とデバッガ1からのデバッグ情報D3に基づき、ハードウェア制御信号C1、C2を適宜形成し、これらを対応するメインプロセッサ2、サブプロセッサ3との間でやり取りすることができるようにしている。
このようにすることによって、メインプロセッサ2、サブプロセッサ3(1)、3(2)、…のそれぞれにおいては、それらが非可逆に破壊したリソースの一部または全部を、ハードウェアシミュレータ4の制御によって、目的の命令位置においてそうであったと同じ状態に復元することができるようにされる。
つまり、メインプロセッサ2、サブプロセッサ3(1)、3(2)、…のそれぞれにおいては、ハードウェアシミュレータ4の制御により、図4、図5を用いて説明したように、順方向実行と実行時リソースの保存がブレークが設定された位置まで行うようにされるが、サブプロセッサ3(1)、3(2)、…のそれぞれにおいては、メインプロセッサ2からの動作停止指示の到達の遅延時間を考慮して、設定されたブレーク位置まで、当該プログラムの逆方向への実行を行って、メインプロセッサ2が停止した位置における実行時リソースを復元することができるようにされる。
なお、マルチコアプロセッサ102は、同一機能のプロセッサを複数内蔵していてもよく、メインプロセッサ、サブプロセッサの役割は任意に選べることはもちろんである。
[(2)ハードウェアシミュレータ内蔵マルチコアプロセッサ構成の場合について]
図7は、この発明によるマルチプロセッサデバッガを、ハードウェアシミュレータ内蔵マルチコアプロセッサを用いて構成した場合の例を説明するためのブロック図である。図7に示すように、この例のマルチコアプロセッサは、ホストコンピュータ101と、ハードウェアシミュレータ内蔵マルチコアプロセッサ104とを備えたものである。
図7は、この発明によるマルチプロセッサデバッガを、ハードウェアシミュレータ内蔵マルチコアプロセッサを用いて構成した場合の例を説明するためのブロック図である。図7に示すように、この例のマルチコアプロセッサは、ホストコンピュータ101と、ハードウェアシミュレータ内蔵マルチコアプロセッサ104とを備えたものである。
図7において、ホストコンピュータ101は、図6に示したホストコンピュータ101と同様に構成されたものであり、デバッガ1を有するようにされたものである。また、ハードウェアシミュレータ内蔵マルチコアプロセッサ104は、図6に示したマルチコアプロセッサ102に、図6に示したハードウェアシミュレータ4からなるシグナルエクササイザ103を包含するように構成したものであり、メインプロセッサ2、サブプロセッサ3(1)、3(2)、…、ハードウェアシミュレータ4の構成、動作、役割は、図6に示した例の場合と同様である。
したがって、この図7に示した例の場合にも、デバッガ1は、ハードウェアシミュレータ内蔵マルチコアプロセッサ104に対して動作指示M1を発行する。この動作指示M1は、図7に示したように、メインプロセッサ2に供給される。また、デバッガ1は、ハードウェアシミュレータ内蔵マルチコアプロセッサ104との間でデバッグ情報Dをやり取りする。このデバッグ情報Dは、メインプロセッサ2との間でやり取りされるデバッグ情報D1と、サブプロセッサ3(1)、3(2)、…のそれぞれとやり取りされるデバッグ情報D2(1)、D2(2),…、ハードウェアシミュレータ4との間でやり取りされるデバッグ情報D3とを総称するものである。
また、メインプロセッサ2から、各サブプロセッサ3(1)、3(2)、…に対しては、動作指示M2と元時刻Xtとが供給される。また、メインプロセッサ2とサブプロセッサ3(1)、3(2)、…のそれぞれは、ハードウェアシミュレータ4との間でハードウェア制御信号Cをやり取りする。このハードウェア制御信号Cは、メインプロセッサ2との間でやり取りされるハードウェア制御信号C1と、サブプロセッサ3(1)、3(2)、…との間でやり取りされるハードウェア制御信号C2(1)、C2(2)、…とを総称するものである。
したがって、ハードウェアシミュレータ内蔵マルチコアプロセッサ104のハードウェアシミュレータ4は、これに供給されるメインプロセッサ2からの動作指示M3とデバッガ1からのデバッグ情報D3に基づき、ハードウェア制御信号C1、C2を適宜形成し、これらを対応するメインプロセッサ2、サブプロセッサ3との間でやり取りすることができるようにしている。
これにより、この図7に示した構成のマルチプロセッサデバッガの場合にも、メインプロセッサ2、サブプロセッサ3(1)、3(2)、…のそれぞれにおいては、それらが非可逆に破壊したリソースの一部または全部を、ハードウェアシミュレータ4の制御によって、目的の命令位置においてそうであったと同じ状態に復元することができるようにされる。
つまり、メインプロセッサ2、サブプロセッサ3(1)、3(2)、…のそれぞれにおいては、ハードウェアシミュレータ4の制御により、図4、図5を用いて説明したように、順方向実行と実行時リソースの保存が、ブレークが設定された位置まで行うようにされるが、サブプロセッサ3(1)、3(2)、…のそれぞれにおいては、メインプロセッサ2からの動作停止指示の到達の遅延時間を考慮して、設定されたブレーク位置まで、当該プログラムの逆方向への実行を行って、メインプロセッサ2が停止した位置における実行時リソースを復元することができるようにされる。
[(3)シングルコアプロセッサ群構成の場合について]
図8は、この発明によるマルチプロセッサデバッガを、シングルコアプロセッサ群を用いて構成した場合の例を説明するためのブロック図である。図8に示すように、この例のマルチプロセッサデバッガは、ホストコンピュータ101と、シグナルエクササイザ103と、シングルコアプロセッサ105と、シングルコアプロセッサ群106とを備えたものである。
図8は、この発明によるマルチプロセッサデバッガを、シングルコアプロセッサ群を用いて構成した場合の例を説明するためのブロック図である。図8に示すように、この例のマルチプロセッサデバッガは、ホストコンピュータ101と、シグナルエクササイザ103と、シングルコアプロセッサ105と、シングルコアプロセッサ群106とを備えたものである。
ホストコンピュータ101、シグナルエクササイザ103は、図6に示したホストコンピュータ101、シグナルエクササイザ103と同様に構成されたものである。そして、図8に示すように、この例のマルチプロセッサデデバッガは、複数のシングルコアプロセッサが設けられ、そのうちの1つにメインプロセッサ2が配置するようにされ、残りのシングルコアプロセッサからなるシングルコアプロセッサ群106を構成する各シングルコアプロセッサのそれぞれには、1つずつのサブプロセッサ3が配置するようにされる。
そして、デバッガ1は、シングルコアプロセッサ105のメインプロセッサ2に対して動作指示M1を発行する。また、デバッガ1は、シングルコアプロセッサ105のメインプロセッサ2との間ではデバッグ情報D1をやり取りし、シングルコアプロセッサ群のサブプロセッサ3(1)、3(2)、…のそれぞれとの間ではデバッグ情報D2をやり取りし、ハードウェアシミュレータ4との間ではデバッグ情報D3をやり取りする。なお、これらデバッグ情報D1、D2、D3をデバッグ情報Dが総称するようにしている。
また、メインプロセッサ2から、各サブプロセッサ3(1)、3(2)、…に対しては、動作指示M2と元時刻Xtとが供給される。また、メインプロセッサ2とサブプロセッサ3(1)、3(2)、…のそれぞれは、ハードウェアシミュレータ4との間でハードウェア制御信号Cをやり取りする。このハードウェア制御信号Cは、メインプロセッサ2との間でやり取りされるハードウェア制御信号C1と、サブプロセッサ3(1)、3(2)、…との間でやり取りされるハードウェア制御信号C2(1)、C2(2)、…とを総称するものである。
したがって、ハードウェアシミュレータ4は、これに供給されるメインプロセッサ2からの動作指示M3とデバッガ1からのデバッグ情報D3に基づき、ハードウェア制御信号C1、C2を適宜形成し、これらを対応するメインプロセッサ2、サブプロセッサ3との間でやり取りすることができるようにしている。
これにより、この図8に示した構成のマルチプロセッサデバッガの場合にも、メインプロセッサ2、サブプロセッサ3(1)、3(2)、…のそれぞれにおいては、それらが非可逆に破壊したリソースの一部または全部を、ハードウェアシミュレータ4の制御によって、目的の命令位置においてそうであったと同じ状態に復元することができるようにされる。
つまり、メインプロセッサ2、サブプロセッサ3(1)、3(2)、…のそれぞれにおいては、ハードウェアシミュレータ4の制御により、図4、図5を用いて説明したように、順方向実行と実行時リソースの保存が、ブレークが設定された位置まで行うようにされるが、サブプロセッサ3(1)、3(2)、…のそれぞれにおいては、メインプロセッサ2からの動作停止指示の到達の遅延時間を考慮して、設定されたブレーク位置まで、当該プログラムの逆方向への実行を行って、メインプロセッサ2が停止した位置における実行時リソースを復元することができるようにされる。
なお、シングルコアプロセッサのそれぞれは、異なる性能のプロセッサであってもよいことはもちろんである。
[(4)マルチコアプロセッサ群の場合について]
図9は、この発明によるマルチプロセッサデバッガを、マルチコアプロセッサ群を用いて構成した場合の例を説明するためのブロック図である。図8に示すように、この例のマルチプロセッサデバッガは、ホストコンピュータ101と、マルチコアプロセッサ102と、シグナルエクササイザ103と、マルチコアプロセッサ群107とを備えたものである。
図9は、この発明によるマルチプロセッサデバッガを、マルチコアプロセッサ群を用いて構成した場合の例を説明するためのブロック図である。図8に示すように、この例のマルチプロセッサデバッガは、ホストコンピュータ101と、マルチコアプロセッサ102と、シグナルエクササイザ103と、マルチコアプロセッサ群107とを備えたものである。
ホストコンピュータ101、シグナルエクササイザ103のそれぞれは、図6に示したホストコンピュータ101、シグナルエクササイザ103と同様に構成されたものである。そして、図9において、マルチコアプロセッサ102、マルチコアプロセッサ群107に示すように、複数のプロセッサを備えたマルチプロセッサが複数個設けられる。
この複数個のマルチプロセッサのうちの1つにおいて、複数のプロセッサのうちの1つをメインプロセッサ2とし、それ以外の複数個のプロセッサのそれぞれをサブプロセッサ3(1)、3(2)、…としたマルチコアプロセッサ102を設ける。それ以外のマルチコアプロセッサにおいては、全てのプロセッサをサブプロセッサ3(1)、3(2)、…とする。図9においては、複数のサブプロセッサのみを備えたマルチコアプロセッサの集まりをマルチコアプロセッサ群107として示している。
したがって、図9に示したマルチプロセッサ102は、図6に示したマルチコアプロセッサ102と同様に構成されていることが分かる。なお、上述もしたように、図9に示したメインプロセッサ2、サブプロセッサ3のそれぞれは、図6に示したメインプロセッサ2、サブプロセッサ3と同様に構成されたものである。
そして、デバッガ1は、マルチコアプロセッサ102のメインプロセッサ2に対して動作指示M1を発行する。また、デバッガ1は、マルチコアプロセッサ102のメインプロセッサ2との間と、マルチコアプロセッサ102内の各サブプロセッサ3(1)、3(2)、…のそれぞれとの間と、ハードウェアシミュレータ4との間と、マルチコアプロセッサ群107の各マルチコアプロセッサの各サブプロセッサとの間において、デバッグ情報Dのやり取りを行うことができるようにしている。
また、マルチコアプロセッサ102の各サブプロセッサ3(1)、3(2)、…、および、メインプロセッサ群の各マルチコアプロセッサの各サブプロセッサ3(1)、3(2)、…のそれぞれに対しては、メインプロセッサ2から、動作指示M2と元時刻Xtとが供給される。
また、マルチコアプロセッサ102のメインプロセッサ2と、マルチコアプロセッサ102のサブプロセッサ3(1)、3(2)、…のそれぞれと、マルチコアプロセッサ群107の各マルチコアプロセッサの各サブプロセッサ3(1)、(2)、…のそれぞれと、ハードウェアシミュレータ4との間でハードウェア制御信号Cをやり取りする。
したがって、ハードウェアシミュレータ4は、これに供給されるメインプロセッサ2からの動作指示M3とデバッガ1からのデバッグ情報Dに基づき、ハードウェア制御信号Cを適宜形成し、これをマルチコアプロセッサ102のメインプロセッサ2、マルチコアプロセッサ102のサブプロセッサ3(1)、3(2)、…、マルチコアプロセッサ群107の各マルチプロセッサの各サブプロセッサ3(1)、3(2)、…との間でやり取りすることができるようにしている。
これにより、この図9に示した構成のマルチプロセッサデバッガの場合にも、マルチコアプロセッサ102のメインプロセッサ2、サブプロセッサ3(1)、3(2)、…、マルチコアプロセッサ群107の各マルチコアプロセッサの各サブプロセッサ3(1)、3(2)、…のそれぞれにおいては、それらが非可逆に破壊したリソースの一部または全部を、ハードウェアシミュレータ4の制御によって、目的の命令位置においてそうであったと同じ状態に復元することができるようにされる。
つまり、マルチコアプロセッサ102のメインプロセッサ2おいびサブプロセッサ3(1)、3(2)、…、マルチコアプロセッサ群107の各マルチコアプロセッサの各サブプロセッサ3(1)、3(2)、…のそれぞれにおいては、ハードウェアシミュレータ4の制御により、図4、図5を用いて説明したように、順方向実行と実行時リソースの保存が、ブレークが設定された位置まで行うようにされるが、サブプロセッサ3(1)、3(2)、…のそれぞれにおいては、メインプロセッサ2からの動作停止指示の到達の遅延時間を考慮して、設定されたブレーク位置まで、当該プログラムの逆方向への実行を行って、メインプロセッサ2が停止した位置における実行時リソースを復元することができるようにされる。
なお、マルチコアプロセッサは、異なる性能のプロセッサであってもよいことはもちろんである。
また、図6〜図9を用いて説明したマルチプロセッサデバッガの構成例はいずれも一例であり、メインプロセッサとサブプロセッサとを有する構成とされた種々のマルチプロセッサにこの発明のマルチプロセッサデバッガを適用することができる。
[マルチプロセッサデバッガの適用例について]
次に、この発明によるマルチプロセッサデバッガの適用例について説明する。最近、グリッド・コンピューティングが注目されている。グリッド・コンピューティングは、ネットワークにつながる複数の情報処理装置を協調動作させて高い演算性能を実現する技術である。そして、グリッド・コンピューティングの技術が用いられ形成され、複数の情報処理装置間で分散処理を行うネットワークシステムで用いられる種々の情報処理装置において、マルチプロセッサシステムを用いることが考えられ、このような情報処理装置にこの発明を適用することが可能である。
次に、この発明によるマルチプロセッサデバッガの適用例について説明する。最近、グリッド・コンピューティングが注目されている。グリッド・コンピューティングは、ネットワークにつながる複数の情報処理装置を協調動作させて高い演算性能を実現する技術である。そして、グリッド・コンピューティングの技術が用いられ形成され、複数の情報処理装置間で分散処理を行うネットワークシステムで用いられる種々の情報処理装置において、マルチプロセッサシステムを用いることが考えられ、このような情報処理装置にこの発明を適用することが可能である。
図10は、グリッド・コンピューティングの技術が用いられると共に、マルチプロセッサシステムの情報処理装置がネットワークを通じて接続されて構成されるネットワークシステム、および、この発明によるマルチプロセッサデバッガが適用される情報処理装置の例を説明するための図である。
図10に示すように、ネットワーク200を介して複数の情報処理装置300(1)、300(2)、…、300(n)が接続されている。情報処理装置300(1)は、情報処理コントローラ310(1)、メインメモリ320(1)、外部記憶装置330(1)を備え、情報処理装置300(2)は、情報処理コントローラ310(2)、メインメモリ320(2)、外部記憶装置330(2)を備え、情報処理装置300(3)は、情報処理コントローラ310(3)、メインメモリ320(3)、外部記憶装置330(3)を備えたものである。
なお、各情報処理装置300(1)、300(2)、…、300(n)における、情報処理コントローラ310(1)、310(2)、…、310(n)、メインメモリ320(1)、320(2)、…、320(n)、外部記録装置330(1)、330(2)、…、330(n)のそれぞれは、同じ機能を有するものである。しかし、処理能力や記憶容量などが、各情報処理装置毎に異なっている場合もあるし、全く同様に構成されている場合もある。
以下においては、説明を簡単にするため、図10に示した情報処理装置300(n)の場合を例にして、各部の構成と動作について説明する。しかし、情報処理装置300(n)以外の各情報処理装置も同様に構成され、同様に動作するものである。
情報処理装置300(n)の情報処理コントローラ310(n)は、図10において情報処理装置310(n)の部分に示したように、好適には、1つのメインプロセッサ311と、1つ以上のサブプロセッサ315と、DMAC(ダイレクトメモリアクセスコントローラ)313と、DC(ディスクコントローラ)314とを具備する。なお、情報処理コントローラ311において、サブプロセッサ315は、1つの場合もあれば、図10に示したように複数個設けられる場合もある。
メインプロセッサ311は、サブプロセッサ315によるプログラムまたはデータの処理のスケジュール管理と全般的管理とを行う。また、メインプロセッサ311内でプログラムが動作する場合もある。後述する機能プログラムもメインプロセッサ311内で動作するプログラムである。
各サブプロセッサ315(1)、315(2)、…は、メインプロセッサ311の制御によって並列的かつ独立にプログラムまたはデータの処理を実行する。さらにメインプロセッサ311内のプログラムが、サブプロセッサ315(1)、315(2)、…内のプログラムと連携して動作する場合もある。メインプロセッサ311、サブプロセッサ315(1)、315(2)、…は各々、LS(ローカルストレージ)312、316を有している。
なお、情報処理装置300(1)、300(2)、…、300(n)のそれぞれには、ネットワーク全体を通して各情報処理装置を一意的に識別できる識別子が情報処理装置ID(以下、情報処理コントローラIDという。)として割り当てられる。同様に、各情報処理装置300(1)、300(2)、…、300(n)のそれぞれのメインプロセッサ311およびサブプロセッサ315についても識別可能な識別子がメインプロセッサIDおよびサブプロセッサIDとして割り当てられる。
DMAC313は、情報処理コントローラ310(n)と接続されているDRAM(ダイナミックRAM)等のメインメモリ320(n)に格納されているプログラムまたはデータへのアクセスを行う。DC314は、情報処理コントローラ310(n)と接続されている外部記録装置330(n)へのアクセスを行う。
外部記録装置330(n)には、固定ディスク(ハードディスク)、リムーバブルディスクや、MO(マグネット オプティカル ディスク)、CD±RW、DVD±RWなどの光ディスク、メモリディスク等が想定され、SRAM(スタティックRAM)、ROM等も含まれる。
これらメインプロセッサ311、サブプロセッサ315、DMAC313、DC314はバスによって接続されている。情報処理コントローラ310(n)はまた、好適には単一の集積回路として構成されることが望ましい。そして、上述もしたように、ネットワーク200に接続されている他の情報処理装置300(1)、300(2)、…等の情報処理コントローラ310(1)、310(2)、…等も同様に構成されているものとする。
前述したように、例えば、情報処理コントローラ310(n)が、複数のサブプロセッサ315(1)、315(2)、…を備える場合、サブプロセッサ315(1)、315(2)、…のそれぞれは、独立にプログラムまたはデータの処理を実行する。しかし、もしも異なるサブプロセッサが同一メインメモリ内の同一領域に対して同時に、読み出し、または書き込みを行った場合には、データの不整合が生じ得る。
そこで、この例の情報処理コントローラ310(n)においては、上述のように複数のサブプロセッサ315(1)、315(2)、…が存在することにより発生する可能性のあるデータの不整合を生じさせないようにしている。図11は、メインメモリ320(n)に対してアクセスする際の手順を説明するための図である。
メインメモリ320(n)は、図11に示すように、複数のアドレス指定可能なメモリロケーション(0〜M)から構成される。各メモリロケーション(0〜M)に対して、データの状態情報を格納するための追加セグメント(0〜M)が割り振られる。追加セグメントはF/Eビット、サブプロセッサID、LSアドレス(ローカルストレージアドレス)を含む。各メモリロケーション(0〜M)にはアクセスキー(0〜M)も割り振られるが、これについては後述する。
そして、追加セグメント(0〜M)のF/Eビットは、以下のように定義される。
F/Eビット=「0」の場合、サブプロセッサにより読み出され処理中、または空き状態であるため最新データではない無効データである。読み出し不可だが予約は可能であり、F/Eビットが「1」になった時に予め読み出し予約情報として追加セグメントに書き込まれたサブプロセッサID、LSアドレスへ読み出される。
F/Eビット=「0」の場合、サブプロセッサにより読み出され処理中、または空き状態であるため最新データではない無効データである。読み出し不可だが予約は可能であり、F/Eビットが「1」になった時に予め読み出し予約情報として追加セグメントに書き込まれたサブプロセッサID、LSアドレスへ読み出される。
すなわち、複数のサブプロセッサによりデータを多段階に処理する必要がある場合、このように構成することにより前段階の処理を行うサブプロセッサが、処理済みのデータをメインメモリ320(n)上の所定のアドレスへ書き込んだ直後、即時に該データが後段階の処理を行うサブプロセッサへ読み出されることになり、非常に好適である。また、書き込み可能であり、書き込み後にF/Eビットは「1」になる。
また、F/Eビット=「1」の場合、サブプロセッサにより読み出されておらず、従って処理中ではない最新データである。読み出し可能であり、読み出し後にF/Eは「0」になる。書き込み不可である。
また、図12に示すように、サブプロセッサ315(1)、315(2)、…内のLSも、複数のアドレス指定可能なメモリロケーション(0〜L)から構成される。各メモリロケーション(0〜L)に対してはやはり、追加セグメントが割り振られる。追加セグメントはビジービットを含む。
そして、メインメモリ320(n)内のデータをサブプロセッサ315(1)、315(2)、…等のLSのメモリロケーションへ読み出す時には、対応するビジービットを「1」に設定し予約する。ビジービットが「1」であるメモリロケーションには他のデータは格納不可である。LSのメモリロケーションへ読み出し後、ビジービットは「0」になり、任意の目的に使用可能になる。
さらに、図11に示したように、情報処理装置300(n)のメインメモリ320(n)には、複数のサンドボックスが含まれる。サンドボックスはメインメモリ320(n)内の領域を確定するものであり、各サンドボックスはサブプロセッサ315(1)、315(2)、…に割り当てられ排他的に使用可能である。すなわち、サブプロセッサ315(1)、315(2)、…のそれぞれは自身に割り当てられたサンドボックスを使用可能だが、前述の領域を超えてデータのアクセスを行えない。
また、図11に示したように、メインメモリ320(n)は、複数のメモリロケーションから構成されるが、サンドボックスはこれらのメモリロケーションの集合である。さらに、メインメモリ320(n)の排他制御を実現するために、図13に示すようなキー管理テーブルが用いられる。
キー管理テーブルは、SRAMのような比較的高速のメモリに好適に格納され、DMAC313と関連付けられる。キー管理テーブル内の各エントリには、サブプロセッサを識別するサブプロセッサID、サブプロセッサキー(0〜N)およびキーマスク(0〜N)が含まれる。
ここで、例えばサブプロセッサ315(1)がメインメモリ320(n)を使用する際のプロセスを図11、図12、図13を参照しながら説明する。サブプロセッサ315(1)はDMAC313へ、読み出しまたは書き込みコマンドを出力する。このコマンドには自身のサブプロセッサIDと使用要求対象先であるメインメモリ320(n)のアドレスが含まれる。
DMAC313は、このコマンドを実行する前に図13に示したように構成されるキー管理テーブルを参照し、使用要求元であるサブプロセッサ315(1)のサブプロセッサキーを調べる。次いでDMAC313は、調べたサブプロセッサキーとサブプロセッサ315(1)の使用要求先である図11に示したメインメモリ320(n)内のメモリロケーションに割り振られたアクセスキーとを比較する。2つのキーが一致した場合のみ、前述のコマンドを実行する。
また、図13に示したキーマスクの使用方法として、キーマスクの任意のビットが「1」になることにより、関連付けられたサブプロセッサキーの対応するビットが「0」または「1」になることができる。例えばサブプロセッサキーが「1010」であるとする。通常このサブプロセッサキーによって「1010」のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。
しかし、このサブプロセッサキーと関連付けられたキーマスクが「0001」に設定されている場合、このサブプロセッサキーを用いて「1010」または「1011」のいずれかのアクセスキーを持つサンドボックスへのアクセスが可能となる。以上のようにしてサンドボックスの排他性を実現する。
すなわち、前述の複数のサブプロセッサ315(1)、315(2)、…によりデータを多段階に処理する必要がある場合、このように構成することにより前段階の処理を行うサブプロセッサと、後段階の処理を行うサブプロセッサのみがメインメモリ320(n)の所定のアドレスへアクセスでき、データ保護が可能となる。
例えば、以下のように使用することが考えられる。まず、情報処理装置300(n)の起動直後においては、キーマスクの値は全てゼロである。メインプロセッサ311内のプログラムが実行され、サブプロセッサ315(1)、315(2)、…内のプログラムと連携動作するものとする。
第1のサブプロセッサ315(1)により出力された処理結果データを一旦メインメモリ320(n)に格納し、第2のサブプロセッサ315(2)に入力したいときには該当するメインメモリ領域は、当然どちらのサブプロセッサからもアクセス可能である必要がある。
そのような場合にメインプロセッサ311内のプログラムはキーマスクの値を適切に変更し、複数のサブプロセッサ315(1)、315(2)からアクセスできるメインメモリ領域を設けることにより、サブプロセッサ315(1)、315(2)による多段階的な処理を可能にする。
より具体的には、他情報処理装置からのデータ→第1のサブプロセッサ315(1)による処理→第1のメインメモリ領域→第2のサブプロセッサ315(2)による処理→第2のメインメモリ領域、という手順で多段階処理が行われるときには、
第1のサブプロセッサ315(1)のサブプロセッサキー:0100
第1のメインメモリ領域のアクセスキー :0100
第2のサブプロセッサ315(2)のサブプロセッサキー:0101
第2のメインメモリ領域のアクセスキー :0101
のような設定のままだと、第2のサブプロセッサ315(2)は第1のメインメモリ領域にアクセスすることができない。
第1のサブプロセッサ315(1)のサブプロセッサキー:0100
第1のメインメモリ領域のアクセスキー :0100
第2のサブプロセッサ315(2)のサブプロセッサキー:0101
第2のメインメモリ領域のアクセスキー :0101
のような設定のままだと、第2のサブプロセッサ315(2)は第1のメインメモリ領域にアクセスすることができない。
そこで、第2のサブプロセッサ315(2)のキーマスクを0001にすることにより、第2のサブプロセッサ315(2)による第1のメインメモリ領域へのアクセスを可能にすることができる。
以下に、このネットワークシステムを用いて分散処理を行う手順について説明する。なお、以下においては、特に区別が必要な場合を除き、情報処理装置300(1)、300(2)、…、300(n)を情報処理装置300と、情報処理コントローラ310(1)、310(2)、…、310(n)を情報処理コントローラ310と、メインメモリ320(1)、320(2)、…、320(n)をメインメモリ320と、外部記録装置330(1)、330(2)、…、330(n)を外部記憶装置330というように、サフィックスを省略することとする。
ネットワーク上の情報処理装置300(1)、300(2)、…、300(n)間では、ソフトウェアセルが伝送される。ある情報処理装置はコマンド、プログラムおよびデータを含むソフトウェアセルを生成し、ネットワークを介し他の情報処理装置に送信することにより処理を分散できる。
ソフトウェアセルの構成を図14に示す。図14を用いてソフトウェアセルの内部について説明する。送信元IDには、ソフトウェアセルの送信元である情報処理装置のネットワークアドレスおよび情報処理コントローラID、さらにメインプロセッサIDおよびサブプロセッサIDが含まれる。送信先IDおよび応答先IDには各々、ソフトウェアセルの送信先である情報処理装置およびソフトウェアセルの実行結果の応答先である情報処理装置について同じ情報が含まれる。
セルインターフェースには、ソフトウェアセルの利用に必要な情報が含まれ、グローバルID、必要なサブプロセッサ、サンドボックス、前回のソフトウェアセルIDから構成される。グローバルIDは、ネットワーク全体を通してソフトウェアセルを一意的に識別できるものであり、送信元IDおよびソフトウェアセルの作成または送信の日付と時刻に基づいて作成される。
必要なサブプロセッサによって、ソフトウェアセルの実行に必要な最低数のサブプロセッサが与えられる。サンドボックスサイズによって、ソフトウェアセルの実行に必要なメインメモリ内およびサブプロセッサのLS内のメモリ量が与えられる。前回のソフトウェアセルIDによって、ストリーミングデータ等のシーケンシャルな実行を要求する1グループのソフトウェアセル内の前回のソフトウェアセルの識別子が提供される。
実行セクションはDMAコマンドリスト、プログラム、データから構成される。DMAコマンドリストにはプログラムの起動に必要な一連のDMAコマンドが含まれ、プログラムにはサブプロセッサによって実行されるサブプロセッサプログラムが含まれる。またデータとは、これらのサブプロセッサプログラムを含むプログラムによって処理されるデータである。さらにDMAコマンドには、ロードコマンド、キックコマンド、ステータスコマンド、ステータス返信コマンド、機能プログラム実行コマンドがある。
ロードコマンドは、メインメモリ320内の情報をサブプロセッサ315内のLSへロードするコマンドである。ロードコマンドはロードコマンド自身の他にメインメモリアドレス、サブプロセッサID、LSアドレスを含む。メインアドレスは、情報のロード元であるメインメモリ320内の所定領域のアドレスを示す。サブプロセッサIDおよびLSアドレスは、情報のロード先であるサブプロセッサの識別子およびLSのアドレスを示す。
キックコマンドは、プログラムの実行を開始するコマンドである。キックコマンドはキックコマンド自身の他にサブプロセッサIDとプログラムカウンタを含む。サブプロセッサIDはキックする対象サブプロセッサを識別し、プログラムカウンタはプログラムの実行用プログラムカウンタのためのアドレスを与える。
機能プログラム実行コマンドは、情報処理装置が他の情報処理装置に対して機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンドを受信した他の情報処理装置は、後述する機能プログラムIDによって実行すべき機能プログラムを識別する。
なお、機能プログラムについては後述するが、情報処理装置300のメインメモリ320が記憶するソフトウェアの図17に示す構成図において、機能プログラムのカテゴリに属するプログラムである。機能プログラムは、メインメモリ320にロードされ、メインプロセッサ311により実行される。
ステータスコマンドは、送信先IDに示される情報処理装置の現在の状態(装置情報)を要求するコマンドである。ステータス返信コマンドは、前述のステータスコマンドを受信した情報処理装置が、自身の装置情報を当該ステータスコマンドに含まれる応答先IDに示される情報処理装置へ応答するコマンドである。
ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納するが、その際のデータ領域の構造を図15に示す。図15を用いて、DMAコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造について記載する。
情報処理コントローラIDは、自身の装置情報を応答する情報処理装置300を識別するための識別子であり、電源投入時にメインプロセッサ311によって、電源投入時の日付、時刻、情報処理装置300のネットワークアドレス、サブプロセッサの数等に基づいて生成される。情報処理装置種別IDには、情報処理装置300の特徴を表す値が含まれる。情報処理装置300の特徴とは、例えば、ハードディスクレコーダ、PDA、テレビなどといった商品を表す場合もあれば、画像処理、映像記録再生などといった機能を表す場合もある。
MSステータスは、情報処理装置300がマスタあるいは、スレーブのどちらで動作しているかを表す。「0」の場合、情報処理装置300はマスタとして動作し、「1」の場合はスレーブとして動作していることを表している。
メインプロセッサ動作周波数は、メインプロセッサ311の動作周波数を表す。メインプロセッサ使用率はメインプロセッサ311で現在動作している全てのプログラムの、メインプロセッサ311の使用率を表す。サブプロセッサ数は、情報処理装置300が具備するサブプロセッサ315の数を表す。サブプロセッサIDは、情報処理装置300におけるサブプロセッサ315を識別するための識別子である。
サブプロセッサステータスはサブプロセッサ315の状態を表すものであり、unused/reserved/busy等の状態がある。unusedは、未使用である状態を、reservedは、現在は未使用であるが予約されている状態を、busyは、使用中であることを、それぞれ示すものである。
サブプロセッサ使用率は、サブプロセッサ315で動作しているプログラムのサブプロセッサの使用率を表す。ステータスがbusyである場合には、サブプロセッサ使用率は現在の使用率を示し、reservedである場合には、後に使用される際の使用率を示す。サブプロセッサID、サブプロセッサステータス、サブプロセッサ使用率は一組であり、サブプロセッサ数だけ存在する。メインメモリ総容量とメインメモリ使用量は、情報処理コントローラ310と接続されているメインメモリ320の総容量と現在使用中の量を表す。
外部記録装置数は、情報処理コントローラ310と接続されている外部記録装置330の数を表す。外部記録装置IDは、情報処理コントローラ310と接続されている外部記録装置330を一意的に識別する情報を表す。外部記録装置種別IDには、当該外部記録装置330の種類を表す情報が含まれる。
なお、外部記録装置330の種類としては、前述もしたように、ハードディスク、リムーバブルディスク、MO、CD±RW、DVD±RWなどの光ディスク、メモリディスク等が想定され、SRAM、ROM等も含まれる。すなわち、磁気ディスク、光磁気ディスク、光ディスク、半導体メモリなどの種々のものが想定できる。
外部記録装置総容量と外部記録装置使用量は、外部記録装置IDにより識別される外部記録装置330における総容量と現在使用中の量を表す。外部記録装置ID、外部記録装置種別ID、外部記録装置総容量、外部記録装置使用量は一組であり、外部記録装置数だけ存在する。すなわち、1つの情報処理装置300に複数の外部記録装置が接続されている場合であっても、各々の外部記録装置には異なる外部記録装置IDが割り当てられ、また外部記録装置種別ID、外部記録装置総容量、外部記録装置使用量も別々に管理されることになる。
次に、ソフトウェアセルを生成し、実行するまでのプロセスについて説明する。ある情報処理装置内のメインプロセッサ311はソフトウェアセルを生成し、ネットワーク200を介し他の情報処理装置へ送信する。送信元である情報処理装置、送信先である情報処理装置および応答先である情報処理装置は、各々、前述の送信元ID、送信先IDおよび応答先IDにより識別される。
ソフトウェアセルを受信した他の情報処理装置内のメインプロセッサ311は、メインメモリに受信した該ソフトウェアセルを格納する。メインプロセッサ311は、ソフトウェアセルを評価し、それに含まれるDMAコマンドを処理する。
具体的にはメインプロセッサ311はまず、ロードコマンドを実行する。すると、ロードコマンドに含まれるメインメモリ320のメインメモリアドレスから、同様にロードコマンドに含まれるサブプロセッサIDとLSアドレスに対応するサブプロセッサ315内LSの所定領域へ情報がロードされる。ここで言う情報とは、受信したソフトウェアセルに含まれるサブプロセッサプログラムまたはデータの場合もあるし、あるいはその他のデータ等であってもよい。
そして、メインプロセッサ311は、キックコマンドを該キックコマンドに含まれるサブプロセッサIDに対応するサブプロセッサ315へ同様にキックコマンドに含まれるプログラムカウンタと共に出力する。サブプロセッサ315はキックコマンドおよびプログラムカウンタに従い、サブプロセッサプログラムを実行する。そして実行結果をメインメモリ320に格納後に、実行完了したことをメインプロセッサ311へ通知する。
また、メインメモリ320において実行される機能プログラム等のメインメモリ用プログラムを、ソフトウェアセルを用いて他の情報処理装置へ送信することも考えられる。その場合には、サブプロセッサプログラムの代わりにメインメモリ用プログラムを含むロードコマンドを送信することになる。他の情報処理装置内のメインメモリ320へ送信したメインメモリ用プログラムを実行する際には例えば、メインプロセッサID、メインメモリアドレス、メインメモリ用プログラムを識別するための識別子、プログラムカウンタを含み、DMAコマンドが機能プログラム実行コマンドであるソフトウェアセルを同様に他の情報処理装置へ送信する。
このようにして、ソフトウェアセルを使用することにより、ソフトウェアセルの送信元である情報処理装置は、送信先である他の情報処理装置をユーザが操作する必要なく、サブプロセッサプログラムまたはメインメモリ用プログラムを他の情報処理装置へ送信し、当該サブプロセッサプログラムを他の情報処理装置内のサブプロセッサへロードさせ、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを他の情報処理装置により実行させることができる。
以上のようにして、この例のネットワークシステムを構成する各情報処理装置は、自装置が機能プログラムまたはサブプロセッサプログラムを有していない場合にはネットワーク200に接続された他の情報処理装置からそれらを取得できる。さらに各サブプロセッサ間においてはDMA方式によりデータ転送を行い、また前述のサンドボックスを採用することにより、1つの情報処理装置内でデータを多段階に処理する必要がある場合でも、高速かつ高セキュリティに処理を実行することができる。
図16Aに示すように、ネットワーク200に接続されている複数の情報処理装置300(1)、300(2)、…が、図16Bに示すように仮想的な1台の装置として動作するための前提処理として、情報処理装置の電源投入後の処理について説明する。
図17は、情報処理装置300のメインメモリ320が記憶するソフトウェアの構成図を示すものである。各プログラムは機能または特徴によってカテゴライズ(分類)されている。また、これらのプログラムは情報処理装置300の電源投入前においては、情報処理装置300の情報処理コントローラ310に接続されている外部記録装置330に記録されている。
電源投入後に情報処理コントローラ310のメインプロセッサ311は、デバイスドライバのカテゴリに属する各プログラムおよび制御プログラムのカテゴリに属する各プログラムをメインメモリ320にロードする。メインメモリ320にロードする手順としては、メインプロセッサ311は、DC314に対して読み出し命令を実行することにより外部記録装置330から読み出す。
そして、DMAC313への書き込み命令を実行することでメインメモリ320にロードする。機能プログラムのカテゴリに属する各プログラムについては、必要なときに必要なものだけをロードするようにしてもよいし、他のカテゴリに属する各プログラムと同様に、電源投入後にロードするようにしてもよい。
ここで機能プログラムは、ネットワーク200に接続された全ての情報処理装置300の外部記録装置330に記録されている必要はなく、どれか1つの情報処理装置300の外部記録装置330に記録されていれば、前述の方法により他の情報処理装置から機能プログラムをロードすることが可能であるので、結果的に図5の仮想的な1台の装置として機能プログラムを実行できる。
さらに、機能プログラムには、機能プログラム毎に一意な識別子が機能プログラムIDとして割り当てられている。機能プログラムIDは、日付や時刻、情報処理コントローラID等から機能プログラムの作成の段階で決定される。
メインプロセッサ311は、自身が動作する情報処理装置300に関する装置情報を格納するための領域をメインメモリ320に確保し、当該情報を自装置の装置情報テーブルとして記録する。ここでの装置情報とは、図15に示した情報処理コントローラID以下の情報である。
メインプロセッサ311は、メインメモリ320にロードされたマスタ/スレーブマネージャを実行する。マスタ/スレーブマネージャは、処理が終了すると、終了通知をメインプロセッサ311へ送る。メインプロセッサ311は、マスタ/スレーブマネージャから終了通知を受け取ると、次に、能力交換プログラムを実行する。マスタ/スレーブマネージャおよび能力交換プログラムは、情報処理装置300の電源が切断されるまで動作する常駐プログラムである。
マスタ/スレーブマネージャは、自身が動作する情報処理装置がネットワークに接続されていることを検知すると、同一ネットワークに接続されている他の情報処理装置の存在を確認する。マスタ/スレーブマネージャは、もしもネットワークに他の情報処理装置が存在しないことを確認すると、前述の自装置の装置情報テーブルにおけるMSステータスを「0」に設定する。ネットワークに他の情報処理装置が存在することを確認した場合、MSステータスを「0」以外(例えば「1」)に設定する。
また、マスタ/スレーブマネージャは、常にネットワークの状況を確認し、新たにネットワークに情報処理装置が接続されたことや、ネットワークに接続されている情報処理装置の電源が切断されたこと、あるいはネットワークから情報処理装置が切り離されたことを監視し、ネットワークの接続状態に変化があると、その情報を能力交換プログラムに通知する。
マスタ/スレーブマネージャが同一ネットワークに接続されている他の情報処理装置の存在を確認する方法として例えば、各情報処理装置内のマスタ/スレーブマネージャが送信先IDとしてネットワークに接続された他の全ての情報処理装置に対して定期的に存在確認要求を送信する。存在確認要求を受信した各情報処理装置は、存在確認要求の送信元に対して自装置が存在することを通知するための返信を行う。ネットワークから切り離された情報処理装置からは当然のことながら、返信が行われないことになる。このようにしてネットワークに接続されている全ての情報処理装置の存在を、互いに把握することができる。
能力交換プログラムは、自身が動作する情報処理装置がマスタである場合、ネットワークに接続されている他の情報処理装置に関する装置情報を取得する。装置情報の取得は、前述した通り、DMAコマンドがステータスコマンドであるソフトウェアセルを生成・送信し、その後DMAコマンドがステータス返信コマンドであり、データとして他の情報処理装置に関する装置情報を含むソフトウェアセルを受信することで可能である。
能力交換プログラムは、前述の自装置の装置情報テーブルと同様に、取得した他の全ての情報処理装置に関する装置情報を格納するための領域をメインメモリ320に確保し、当該情報を他装置の装置情報テーブルとして記録する。すなわちマスタのメインメモリ320には、ネットワークに接続されている自身を含む全ての情報処理装置の装置情報テーブルが記録される。
一方、能力交換プログラムが動作する情報処理装置がスレーブである場合、ネットワークに接続されているマスタの情報処理装置および自身以外の全てのスレーブの情報処理装置に関する装置情報を取得する。そして装置情報に含まれる情報処理コントローラIDとMSステータスをメインメモリに記録する。すなわち、スレーブには、自装置に関する全ての装置情報が装置情報テーブルとして記録されると共に、ネットワークに接続された自身以外の全ての情報処理装置については情報処理コントローラIDとMSステータスが装置情報テーブルとして記録されることになる。
また、能力交換プログラムは、新たにネットワークに情報処理装置が接続されたことを示すネットワーク状態の変化通知をマスタ/スレーブマネージャから受信すると、当該情報処理装置に関する装置情報を取得する。同様にネットワークから情報処理装置が切り離された、あるいは電源が切断されたというネットワーク状態の変化通知を受信すると、当該装置の装置情報テーブルをメインメモリ320から削除する。
ネットワークに接続されている複数の情報処理装置を仮想的な1台の情報処理装置として動作させるために、マスタの情報処理装置(以下マスタ)が、ユーザの操作およびスレーブとなる情報処理装置(以下スレーブ)の動作状況を把握する必要がある。
図18は、ネットワークに接続されている3台の情報処理装置300(1)、300(2)、300(3)が、仮想的な1台の情報処理装置として動作する様子を説明するための図である。ここでは、情報処理装置300(1)がマスタ、情報処理装置300(2)と情報処理装置300(3)がスレーブとして動作し、ユーザは情報処理装置300(2)を操作し、当該操作に応じた処理を情報処理装置300(3)が実行するようにしている場合を示している。また、図19は、その際のフローチャートを示すものである。
ユーザが、ネットワークに接続されている情報処理装置を操作する場合には、操作されている情報処理装置がマスタまたはスレーブに関わらず、その操作情報は常にマスタに送信される。図18、図19に示した例の場合には、情報処理装置300(2)がユーザからの操作入力を受け付けて(ステップS101)、これをマスタである情報処理装置300(1)に通知する(ステップS102)。
マスタである情報処理装置300(1)のメインプロセッサ311は、スレーブである情報処理装置300(2)からの操作情報を受け付け(ステップS103)、当該操作情報に従い、実行する機能プログラムを選択する。その際に必要ならば、前述の方法に従い外部記録装置330からメインメモリ320へ機能プログラムをロードする。
実行時に機能プログラムは、自身が実行されるときに必要なメインプロセッサ311、サブプロセッサ315、メインメモリ320、外部記録装置330に関する情報をメインプロセッサ311に通知する。ここでの情報とは図15に示される情報処理コントローラID以下の情報である。
これらの情報を機能プログラムがメインプロセッサ311へ通知する方法としては、機能プログラムは自身が実行される実行要求の他に、情報通知要求にも対応しているので、メインプロセッサ311は機能プログラムへ当該情報通知要求を発行することにより、図15に示した情報処理コントローラID以下の情報を取得することができる。
そして、マスタである情報処理装置300(1)のメインプロセッサ311は、メインメモリ320に記録されている前述の自装置または他装置の装置情報テーブルに基づき、当該機能プログラムを実行可能なスレーブを選択する(ステップS104)。そして、この例の場合、マスタである情報処理装置300(1)は、選択されたスレーブである情報処理装置300(3)へ機能プログラムの実行を要求する(ステップS105)。その際にマスタは、前述の機能プログラムの実行に必要な情報等に基づき、自身のメインメモリ320に記録された選択されたスレーブに関する装置情報テーブルを更新する。
機能プログラムの実行を要求されたスレーブである情報処理装置300(3)のメインプロセッサ311は、マスタからの要求を受け付け(ステップS106)、要求に応じた機能プログラムを実行する(ステップS107)。その際にも必要ならばスレーブである情報処理装置300(3)のメインプロセッサ311は、前述の方法に従い外部記録装置330からメインメモリ320へ機能プログラムをロードする。
ここで、機能プログラムの実行を要求されたスレーブと接続された外部記録装置330に必要な機能プログラムが記録されていない場合には、他の情報処理装置が前述のメインメモリ用プログラムとして当該機能プログラムを機能プログラムの実行を要求されたスレーブへ送信してもよい。
さらにメインメモリ用プログラムと同様に、サブプロセッサプログラムも必要ならばソフトウェアセルを用いることにより他の情報処理装置へ送信し、当該他の情報処理装置内のサブプロセッサへロードさせ、当該サブプロセッサプログラムを他の情報処理装置により実行させることができる。
そして、機能プログラムの処理終了後、終了通知をマスタに送信する。マスタは終了通知を受信することにより、機能プログラムを実行したスレーブに関する装置情報テーブルを更新する。
また、マスタのメインプロセッサ311は、自装置または他装置の装置情報テーブルに基づき、当該機能プログラムを実行可能な情報処理装置として自身を選択する場合もあり得る。その場合には、マスタが機能プログラムを実行する。その際にはスレーブのメインメモリ320に記録されたマスタに関する装置情報テーブルが、マスタの動作状況に応じて更新されることになる。
このようにして、ユーザは1つの情報処理装置のみを操作することにより他の情報処理装置を操作する必要なく、複数の情報処理装置を仮想的な1台の情報処理装置として動作させることができる。
次に、この例のネットワークシステムを構成する情報処理装置300の具体例について説明する。図20は、情報処理装置の具体例を説明するための図である。情報処理装置300(1)および300(2)は、自身にハードディスクが装備され、映像や音声をハードディスクに記録するハードディスクレコーダである。情報処理装置300(3)は、個人情報端末(PDA)であり、情報処理装置300(4)は、携帯コンパクトディスクプレイヤ(CDプレイヤ)である。なお、ハードディスクレコーダである情報処理装置300(1)には、映像を表示するためのテレビモニタMt、音声を出力するためのスピーカSpが接続されている。
そして、図21は、ハードディスクレコーダである情報処理装置300(1)、300(2)の構成例を示し、図22は、PDAである情報処理装置300(3)の構成例を示し、図23は、CDプレイヤである情報処理装置300(4)の構成例を示すものである。また、図24は、ハードディスクレコーダである情報処理装置300(1)、300(2)のソフトウェア構成例を示し、図25は、PDAである情報処理装置300(3)のソフトウェア構成例を示し、図26は、CDプレイヤである情報処理装置300(4)のソフトウェア構成例を示すものである。
図21、図22、図23のそれぞれを比較すると分かるように、情報処理装置300(1)、300(2)と、情報処理装置300(3)と、情報処理装置300(4)は、外部記憶装置330(1−1)、330(1−2)、330(3)、330(4)が、光ディスク、ハードディスク、メモリカードディスク、CDというように異なり、また、インターフェース部340、350、360が、それぞれ異なっていることを除けば、その他の部分は同様に構成されているものである。
また、図24、図25、図26のそれぞれを比較すると分かるように、情報処理装置300(1)、300(2)と、情報処理装置300(3)と、情報処理装置300(4)は、備えるデバイスや処理機能により、デバイスドライバや機能プログラムは異なるものの、制御プログラムは、いずれの情報処理装置も、能力交換プログラムと、マスタ/スレーブマネージャを備えるものである。
このように、情報処理コントローラ310部分は、いずれも、マルチプロセッサの構成とされたものであり、この発明のマルチプロセッサデバッガを適用することができる。そして、この発明によるマルチプロセッサデバッガを適用することによって、メインプロセッサ311とサブプロセッサ315とで、動作終了タイミングがずれる場合が発生しても、動作終了タイミングの同期をとって、適正にデバッグ処理を行い、信頼性の高い情報処理装置を実現することができる。
次に、機能プログラムの起動をマスタからスレーブに処理を依頼する場合の具体例を、図20を用いて説明する。前提条件として、マスタのハードディスクレコーダである情報処理装置300(1)のハードディスクの空き容量が、録画時間で10分とする。また、スレーブのハードディスクレコーダである情報処理装置300(2)のハードディスクの空き容量は、録画時間にして20時間とする。
この例において、ユーザは、情報処理装置300(1)に対して、2時間の番組録画予約の操作を行うとする。情報処理装置300(1)はマスタであるので、ネットワークに接続された情報処理装置の情報テーブルから、2時間分の空きのあるハードディスクを具備するセカンダリを検索する。この場合、検索される機器はハードディスクレコーダである情報処理装置300(2)となる。マスタである情報処理装置300(1)は、スレーブである情報処理装置300(2)に対して2時間の番組予約の実行を依頼する。
このようにして、実際に処理を行う情報処理装置に対して、操作入力を行うことなく、同一のネットワークに接続された複数の情報処理装置をあたかも1つの情報処理装置のようにして扱うことができるようにされる。
次に、図20に示したように構成されるネットワークシステムにおいて、情報処理装置がネットワークから切り離された、あるいは、主電源が切断された場合の処理について説明する。ネットワークから情報処理装置が切り離されると、おのおの情報処理装置のマスタ/スレーブマネージャが、装置の切断を検知し、切断された情報処理コントローラIDと共に、切断情報を能力交換プログラムに通知する。能力交換プログラムは、マスタ/スレーブマネージャから通知された情報処理コントローラIDに対応した機器情報を、機器情報テーブルから削除する。
ネットワークから切断された情報処理装置がマスタである場合、現在ネットワークに接続されている情報処理装置のうち、スレーブからマスタに変更する装置を決定する必要があるが、次にその処理を記述する。マスタ/スレーブマネージャから通知された切断情報がマスタであった場合、情報処理コントローラIDを数値に置き換え、自身の情報処理コントローラIDと、自身が管理する装置情報テーブルの情報処理コントローラIDとを比較し、もしも、自身の情報処理コントローラIDが、装置情報テーブルの情報処理コントローラIDに比べて最小であった場合、そのスレーブはマスタに移行する。
マスタに移行すべきスレーブは、マスタの動作に切り替わるために、MSステータスを0に設定し、先述のマスタにおける装置情報の取得と同様に、ネットワークに接続された全ての情報処理装置の装置情報を取得し、メインメモリに記録する。
このようにして、ネットワークに接続された情報処理装置が、当該ネットワークから離脱する場合には、接続を存続する情報処理装置において、上述のように、ネットワークを再構成するようにすることができるので、ネットワークシステムを適正に運用することができるようにされる。
そして、上述もしたように、備える機能や能力が異なっていても、1つのメインプロセッサと1つ以上のメインプロセッサとを備えたマルチプロセッサシステムの場合には、図1〜図9を用いて説明したこの発明によるマルチプロセッサデバッガを適用することができる。そして、メインプロセッサとサブプロセッサとが独立して動作するために生じる動作の停止タイミングのずれを除去するようにしてデバッグを行うことができるので、マルチプロセッサシステムにおいても、適切にデバッグ処理を行うことができるようにされる。
1…デバッガ、2…メインプロセッサ、21…対象プロセッサ、22…逆方向実行手段、23…メモリ、24…計時手段、25…リソースバッファ管理手段、26…リソースバッファ、3…サブプロセッサ、31…対象プロセッサ、32…逆方向実行手段、33…メモリ、34…計時手段、35…リソースバッファ管理手段、36…リソースバッファ、37…遅延時間計測手段、4…ハードウェアシミュレータ
Claims (4)
- メインプロセッサと、前記メインプロセッサによって動作が管理される1つ以上のサブプロセッサとを備えたマルチプロセッサに用いるデバッガであって、
前記メインプロセッサ側に、
ユーザによって指示された位置でプログラムの実行を停止させた時点の現在時刻を取得し、これを元時刻として前記サブプロセッサのそれぞれに提供する元時刻提供手段と、
プログラムの実行の停止に伴って、動作の停止指示を前記サブプロセッサのそれぞれに提供する指示手段と
を設け、
1つ以上の前記サブプロセッサ側のそれぞれに、
プログラムの実行に関する情報をプログラム実行中に取得して、これを記憶手段に記録する取得手段と、
前記メインプロセッサからの前記停止指示を受け付けた時点の現在時刻を取得する現在時刻取得手段と、
前記メインプロセッサからの前記元時刻と前記現在時刻取得手段からの前記現在時刻とから遅延時間を算出する遅延時間計測手段と、
前記メインプロセッサからの前記停止指示に応じて動作を停止した時点から遡って、前記遅延時間算出手段において算出された前記遅延時間分の前記プログラムの実行に関する情報を前記記憶手段に保持するようにする情報管理手段と、
前記記憶手段に記憶された前記プログラムの実行に関する情報に基づいて、前記プログラムによる処理を、逆方向に実行するよにして、ユーザによって指示された前記位置に対応する時点における前記サブプロセッサの状態を復元する逆方向実行手段と
を設けることを特徴とするマルチプロセッサデバッガ。 - 請求項1に記載のマルチプロセッサデバッガであって、
デバッグ処理時に、前記メインプロセッサと1つ以上の前記サブプロセッサとの一方あるいは両方から、本来、ハードウェア各部に供給されるべきハードウェア制御信号の供給を受けて、ハードウェア各部の状態を再現するようにするシミュレータ手段を備えることを特徴とするマルチプロセッサデバッガ。 - メインプロセッサと、前記メインプロセッサによって動作が制御される1つ以上のサブプロセッサとを備えたマルチプロセッサに用いるデバッグ方法であって、
1つ以上の前記サブプロセッサにおいて、プログラムの実行に関する情報をプログラム実行中に取得して、これを所定の記憶手段に記録する取得ステップと、
前記メインプロセッサのプログラムの実行をユーザによって指示された位置で停止させた時点の現在時刻を取得し、これを元時刻として1つ以上の前記サブプロセッサに提供する元時刻提供ステップと、
前記メインプロセッサのプログラムの実行の停止に伴って、動作の停止指示を1つ以上の前記サブプロセッサに提供する指示ステップと、
1つ以上の前記サブプロセッサにおいて、前記停止指示を受け付けた時点の現在時刻を取得する現在時刻取得ステップと、
1つ以上の前記サブプロセッサにおいて、前記メインプロセッサからの前記元時刻と前記現在時刻取得ステップにおいて取得した前記現在時刻とから遅延時間を算出する遅延時間計測ステップと、
1つ以上の前記サブプロセッサにおいて、前記メインプロセッサからの前記停止指示に応じて動作を停止した時点から遡って、前記遅延時間算出手段において算出された前記遅延時間分の前記プログラムの実行に関する情報を前記記憶手段に保持するようにする情報管理ステップと、
1つ以上の前記サブプロセッサにおいて、前記記憶手段に記憶された前記プログラムの実行に関する情報に基づいて、前記プログラムによる処理を、逆方向に実行するようにして、ユーザによって指示された前記位置に対応する時点における前記サブプロセッサの状態を復元する逆方向実行ステップと
を有することを特徴とするマルチプロセッサにおいてのデバッグ方法。 - 請求項3に記載のデバッグ方法であって、
デバッグ処理時に、前記メインプロセッサと1つ以上の前記サブプロセッサとの一方あるいは両方から、本来、ハードウェア各部に供給されるべきハードウェア制御信号の供給を受けて、ハードウェア各部の状態を再現するようにするステップを有することを特徴とするマルチプロセッサにおいてのデバッグ方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004039233A JP2005234617A (ja) | 2004-02-17 | 2004-02-17 | マルチプロセッサデバッガおよびデバッグ方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004039233A JP2005234617A (ja) | 2004-02-17 | 2004-02-17 | マルチプロセッサデバッガおよびデバッグ方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005234617A true JP2005234617A (ja) | 2005-09-02 |
Family
ID=35017543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004039233A Pending JP2005234617A (ja) | 2004-02-17 | 2004-02-17 | マルチプロセッサデバッガおよびデバッグ方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005234617A (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008071093A (ja) * | 2006-09-13 | 2008-03-27 | Fujitsu Ltd | マルチプロセッサシステム |
CN103197914A (zh) * | 2012-01-05 | 2013-07-10 | 国际商业机器公司 | 多处理器延迟执行 |
JP2013214168A (ja) * | 2012-03-30 | 2013-10-17 | Fujitsu Ltd | 情報処理装置、演算装置および情報転送方法 |
US9620768B2 (en) | 2012-05-22 | 2017-04-11 | Sanyo Electric Co., Ltd. | Negative electrode for lithium secondary batteries, lithium secondary battery, and method for producing the negative electrode for lithium secondary batteries |
US10372576B2 (en) | 2015-05-11 | 2019-08-06 | Mitsubishi Electric Corporation | Simulation reproduction apparatus, simulation reproduction method, and computer readable medium |
US10514996B2 (en) | 2016-04-12 | 2019-12-24 | Mitsubishi Electric Corporation | Simulation reproducing apparatus and computer-readable recording medium |
WO2020108486A1 (zh) * | 2018-11-30 | 2020-06-04 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法、芯片及电子设备 |
EP4379593A1 (en) | 2022-11-30 | 2024-06-05 | Fujitsu Limited | Information processing method and information processing program |
-
2004
- 2004-02-17 JP JP2004039233A patent/JP2005234617A/ja active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008071093A (ja) * | 2006-09-13 | 2008-03-27 | Fujitsu Ltd | マルチプロセッサシステム |
CN103197914A (zh) * | 2012-01-05 | 2013-07-10 | 国际商业机器公司 | 多处理器延迟执行 |
CN103197914B (zh) * | 2012-01-05 | 2015-12-02 | 国际商业机器公司 | 多处理器延迟执行的方法和系统 |
JP2013214168A (ja) * | 2012-03-30 | 2013-10-17 | Fujitsu Ltd | 情報処理装置、演算装置および情報転送方法 |
US9003082B2 (en) | 2012-03-30 | 2015-04-07 | Fujitsu Limited | Information processing apparatus, arithmetic device, and information transferring method |
US9620768B2 (en) | 2012-05-22 | 2017-04-11 | Sanyo Electric Co., Ltd. | Negative electrode for lithium secondary batteries, lithium secondary battery, and method for producing the negative electrode for lithium secondary batteries |
US10372576B2 (en) | 2015-05-11 | 2019-08-06 | Mitsubishi Electric Corporation | Simulation reproduction apparatus, simulation reproduction method, and computer readable medium |
US10514996B2 (en) | 2016-04-12 | 2019-12-24 | Mitsubishi Electric Corporation | Simulation reproducing apparatus and computer-readable recording medium |
WO2020108486A1 (zh) * | 2018-11-30 | 2020-06-04 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法、芯片及电子设备 |
EP4379593A1 (en) | 2022-11-30 | 2024-06-05 | Fujitsu Limited | Information processing method and information processing program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3175757B2 (ja) | デバッグシステム | |
US20050283673A1 (en) | Information processing apparatus, information processing method, and program | |
US20110264959A1 (en) | Partial recording of a computer program execution for replay | |
US7007192B2 (en) | Information processing system, and method and program for controlling the same | |
CN101446909A (zh) | 用于管理任务事件的方法和系统 | |
US20010027387A1 (en) | Debugging supporting apparatus, debugging supporting method and recording medium readable by computer with its programs recorded thereon | |
JP2000020349A (ja) | プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援用プログラムを記録した媒体 | |
JP2005234617A (ja) | マルチプロセッサデバッガおよびデバッグ方法 | |
JP2000066904A (ja) | マルチタスク制御方法及び記憶媒体 | |
US20080148095A1 (en) | Automated memory recovery in a zero copy messaging system | |
JP2009176146A (ja) | マルチプロセッサシステム、障害検出方法および障害検出プログラム | |
CN102096607B (zh) | 微处理器及其除错方法 | |
US20070239972A1 (en) | Processing internal timestamp counter instructions in reference to external counter | |
JP2023150108A (ja) | インサーキットエミュレータ装置 | |
CN114756355A (zh) | 一种计算机操作系统的进程自动快速恢复的方法和装置 | |
JP4985642B2 (ja) | 初期診断プログラムの管理装置、管理方法およびプログラム | |
TWI739853B (zh) | 運算裝置與運作方法 | |
JP2005165825A (ja) | トレース情報記録装置 | |
US8392759B2 (en) | Test method, test program, test apparatus, and test system | |
JP2011203803A (ja) | デバッグ支援装置及びデバッグ支援用プログラム | |
JP2001154872A (ja) | ソフトウェア開発支援装置、ソフトウェア開発支援方法、および、そのプログラムを記録した記録媒体 | |
JP2000305830A (ja) | コンピュータシステムにおけるファイル管理方法およびファイル管理システム | |
JP7209784B1 (ja) | 冗長化システム及び冗長化方法 | |
JPH11120028A (ja) | プログラム移植サポート方式 | |
TWI470421B (zh) | 微處理器及其除錯方法 |