JP5387231B2 - マイクロプロセッサ及びマイクロプロセッサのデバッグ方法 - Google Patents

マイクロプロセッサ及びマイクロプロセッサのデバッグ方法 Download PDF

Info

Publication number
JP5387231B2
JP5387231B2 JP2009193537A JP2009193537A JP5387231B2 JP 5387231 B2 JP5387231 B2 JP 5387231B2 JP 2009193537 A JP2009193537 A JP 2009193537A JP 2009193537 A JP2009193537 A JP 2009193537A JP 5387231 B2 JP5387231 B2 JP 5387231B2
Authority
JP
Japan
Prior art keywords
instruction
copy
instructions
data
check
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.)
Expired - Fee Related
Application number
JP2009193537A
Other languages
English (en)
Other versions
JP2011044114A (ja
Inventor
健司 江副
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2009193537A priority Critical patent/JP5387231B2/ja
Publication of JP2011044114A publication Critical patent/JP2011044114A/ja
Application granted granted Critical
Publication of JP5387231B2 publication Critical patent/JP5387231B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、マイクロプロセッサ及びマイクロプロセッサのデバッグ方法に関するもので、特に、内部の論理不正動作の調査の容易化に係わる。
近年、半導体プロセスの微細化により、マイクロプロセッサ内の論理回路の数は飛躍的に増加し、その制御論理は複雑さを増している。マイクロプロセッサを設計開発する上でのチェック手段やシミュレーション環境は充実してきている。しかしながら、タイミングや競合条件によって発生する非常にまれな論理動作不正については、シミュレーションと異なり、内部状態の観測が難しいため、論理動作不正を引き起こす命令列を調査・特定し、解決するまでに、長期間必要になることが多い。
マイクロプロセッサ内部の動作履歴の収集・保存を行い観測するための技術としては、マイクロプロセッサ内部の動作履歴を収集・保存し、外部に出力することで、内部状態を観測し論理動作不正の調査を容易化するものがある。また、命令列を特定した後の回避手段に関しては、論理動作不正を引き起こす命令列を比較・検出してハードウェアが割り込みを発生させることにより、ソフトウェアでバグ回避コードを動作させる技術がある(例えば特許文献1)。
特開2003−76579号公報
しかしながら、マイクロプロセッサ内部の動作履歴の収集・保存を行い観測する技術のみでは、収集した情報を解析するのに時間がかかり、論理動作不正の原因を究明するまでに時間を要することが多い。また、割込みを発生させる技術の場合には、ハードウェア単独では論理動作不正を回避することができず、回避コードを実行するためにOS(Operating System)あるいはコンパイラの改造とアプリケーションのリコンパイルが必要になる。さらに、回避手段として割り込みを用いるためアプリケーションの実行速度が著しく低下するという問題があった。
上述の課題を鑑み、本発明は、内部の論理不正動作の調査を容易化できるマイクロプロセッサ及びマイクロプロセッサのデバッグ方法を提供することを目的とする。
本発明は上記の課題を解決するためになされたものであり、検査対象として比較すべき命令列、当該命令以前の命令との依存関係、当該命令を複製するか否かを示すコピー指示、及び当該命令の発行間隔の設定値を含む情報を格納する比較命令格納手段と、前記比較命令格納手段が格納する情報が示す命令と実行中の命令とが一致するか否かを判定する命令比較手段と、前記命令比較手段によって、命令が一致し且つコピー指示が当該命令を複製することを示すと判定された場合、当該命令の複製であるコピー命令を複数生成する命令制御手段と、前記設定値に設定された発行間隔に従って命令を発行するスケジュール設定手段と、前記スケジュール設定手段が発行する前記コピーの元となった命令及び前記複数のコピー命令を実行し、この実行結果を多数決処理によりチェックする多数決処理チェック手段とを備えることを特徴とするマイクロプロセッサである。
また、本発明は、検査対象として比較すべき命令列、当該命令以前の命令との依存関係、当該命令を複製するか否かを示すコピー指示、及び当該命令の発行間隔の設定値を含む情報を登録する工程と、前記登録した命令と実行中の命令とが一致するか否かを判定する工程と、命令が一致し且つコピー指示が当該命令を複製することを示すと判定された場合、当該命令の複製であるコピー命令を複数生成する工程と、前記設定値に設定された発行間隔に従って命令を発行する工程と、前記コピーの元となった命令及び前記複数のコピー命令を実行し、この実行結果を多数決処理によりチェックする工程とを含むことを特徴とするマイクロプロセッサのデバッグ方法である。
本発明によれば、単独のマイクロプロセッサにおいて論理動作不正の発生する命令を特殊な解析なしで特定することが可能になり、調査を容易化できる。また、多数決処理チェックの結果を観測することで、正しく論理動作不正が回避できているか確認できる。また、ハードウェアのみで論理動作不正を回避することができる。また、スケジューラーの発行条件を設定して論理動作不正の発生しない最小のタイミングに設定することで性能低下の影響を最小にでき、割込みとソフトウェアによる手段とによる解析と比較して、性能が向上する。
本発明の第1の実施形態に係るマイクロプロセッサの構成を示すブロック図である。 本発明の第1の実施形態に係るマイクロプロセッサにおける命令検出制御部の構成を示すブロック図である。 本発明の第1の実施形態に係るマイクロプロセッサにおけるロード・ストア命令パイプのデータチェック制御部の構成を示すブロック図である。 本発明の第1の実施形態に係るマイクロプロセッサにおける演算命令パイプのデータチェック制御部の構成を示すブロック図である。 本発明の第1の実施形態に係るマイクロプロセッサにおける命令フォーマットの一例の説明図である。 本発明の第1の実施形態に係るマイクロプロセッサにおける比較命令格納バッファの登録可能な設定値の一例の説明図である。 本発明の第1の実施形態に係るマイクロプロセッサにおける命令デコーダーから送られた論理動作不正の発生する命令列の一例の説明図である。 本発明の第1の実施形態に係るマイクロプロセッサにおけるデバッグ時の比較命令格納バッファの登録内容の一例の説明図である。 本発明の第1の実施形態に係るマイクロプロセッサにおける通常時の比較命令格納バッファの登録内容の一例の説明図である。 本発明の第1の実施形態に係るマイクロプロセッサにおける命令検出制御部で命令のコピー処理を行った後の命令列の一例の説明図である。 本発明の第1の実施形態に係るマイクロプロセッサにおける命令検出制御部で命令のコピー処理を行った後の命令列の一例の説明図である。 本発明の第1の実施形態に係るマイクロプロセッサにおける実行処理の説明に用いるタイミングチャートである。 本発明の第1の実施形態に係るマイクロプロセッサにおける実行処理の説明に用いるタイミングチャートである。
以下、本発明の実施の形態について図面を参照しながら説明する。図1は、本発明の第1の実施形態に係るマイクロプロセッサの内部構成を示すものである。
本発明の第1の実施形態に係るマイクロプロセッサは、図1に示すように、命令キャッシュ10と、デコーダー11と、命令検出制御部12と、スケジューラー13と、演算器20と、データキャッシュ(AA:アドレスアレイ)21と、データチェック制御部22と、データキャッシュ(DA:データアレイ)23と、リクエスト制御部24と、演算器30と、データチェック制御部31と、レジスタ32とを有している。また、それぞれの構成要素を接続する信号線100、110、120、130、131、200、210、220、221、230、240、241、242、243、300、310、320を有している。
命令キャッシュ10は、フェッチ部(図示せず)がメインメモリ(図示せず)からフェッチした命令を格納する。
デコーダー11は、プログラムカウンタ(図示せず)に従って、命令キャッシュ10が格納する命令を解析する。
命令検出制御部12は、検査対象として比較すべき命令列や、当該命令以前の命令との依存関係などを含む情報を内部バッファに格納し、当該格納された情報とデコーダー11から出力された命令とを比較する。また、命令検出制御部12の内部バッファに格納された情報には、デコーダー11から出力された命令の複製であるコピー命令を出力するか否かを示すコピー指示フラグが含まれる。当該コピー指示フラグが「有効」、すなわちコピー命令を出力することを示す場合において、当該コピー指示フラグを含む情報とデコーダー11から出力された命令とが一致するとき、命令検出制御部12は、デコーダー11から出力された命令のコピー命令を出力する。
スケジューラー13は、命令の発行間隔のスケジューリングを行う。
演算器20、データキャッシュ(AA)21、データチェック制御部22、データキャッシュ(DA)23は、ロード・ストアパイプを構成している。ロード・ストアパイプとは、パイプライン処理によってロード命令・ストア命令を実行する構成のことである。
データチェック制御部22は、多数決処理により、データ・アドレスのチェックを行う。具体的には、データチェック制御部22は、演算器20が処理した命令検出制御部12が出力した命令及び当該命令のコピー命令の実行結果を比較し、それぞれの命令で異なる値が出力された場合に、出力結果が同値となるものが多いものを実行結果として採用する。
リクエスト制御部24は、外部との間で、リクエストの入出力を行う。
演算器30、データチェック制御部31、レジスタ32は、演算命令パイプを構成している。演算命令パイプとは、パイプライン処理によって演算命令を実行する構成のことである。
データチェック制御部31は、多数決処理により、データのチェックを行う。このことについては後に説明する。
図2は、命令検出制御部12の構成を示すものである。命令検出制御部12は、図2に示すように、比較命令格納バッファ40、命令比較部41、命令トレーサー42、命令制御部43を有している。また、それぞれの構成要素を接続する信号線400、401、402、410、411、420、430を有している。
比較命令格納バッファ40には、検査対象として比較すべき命令列や依存関係などを含む情報が登録される。なお、比較命令格納バッファ40に登録される命令列や依存関係については後に説明する。
命令比較部41は、実際の命令と、比較命令格納バッファ40に登録されている設定が一致しているかをチェックし、比較結果が一致している場合は、比較命令格納バッファ40へ次エントリーの命令を出力するように指示する。また、コピー指示が「有効」の場合には、コピー動作を行うように、命令制御部43へ出力する。
命令トレーサー42は、実行している命令の履歴を取得し、内部メモリーに保存する。また、内部メモリーに登録されたデータは論理動作不正の解析に用いられる。
命令制御部43は、スケジューラー13へ命令を出力する。
図3は、ロード・ストア命令パイプのデータチェック制御部22の構成を示すものである。データチェック制御部22は、図3に示すように、コピー命令チェック部50と、データ・アドレスバッファ51と、多数決チェック部52とを有している。また、それぞれの構成要素を接続する信号線500、501、502、503、510、520、521、522、523を有している。
コピー命令チェック部50は、演算器20によって実行された命令がコピー命令であるか否かをチェックする。
データ・アドレスバッファ51は、実行された命令のデータ・アドレスを格納する。
多数決チェック部52は、多数決処理を行い、奇数個の命令から1命令を選び、データキャッシュ(DA)23へ書き込む。また、多数結処理チェック部52は、リクエスト制御部24へストア命令(命令・データ・アドレス)を出力する。
図4は、演算命令パイプのデータチェック制御部31の構成を示すものである。データチェック制御部31は、図4に示すように、コピー命令チェック部60、データバッファ61、多数決チェック部62を有している。また、それぞれの構成要素を接続する信号線600、601、602、603、610、620、621、622を有している。
コピー命令チェック部60は、演算器30によって実行された命令がコピー命令であるかをチェックする。
データバッファ61は、実行された命令のデータを保存する。
多数決チェック部62は、多数決処理を行い、奇数個の命令から1命令を選び、レジスタ32へデータを出力する。
次に、本発明の第1の実施形態に係るマイクロプロセッサのデバッグ動作の概要について説明する。本発明の第1の実施形態に係るマイクロプロセッサの特徴は、図1に示すように、命令検出制御部12と、データチェック制御部22及びデータチェック制御部31とを有していることである。これにより、単独のマイクロプロセッサにおいて論理動作不正の発生する命令を容易に解析することができる。
つまり、本発明の第1の実施形態では、予め論理動作不正が発生する命令列を、命令検出制御部12の比較命令格納バッファ40(図2参照)に格納しておき、動作不正の発生するプログラムを動作させる。当該プログラムの動作により、命令比較部41は、実際に実行している命令と比較命令格納バッファ40に記憶されている命令とを比較し、コピー指示が「有効」である命令を検出すると、命令制御部43にコピー命令を生成する。このとき、命令制御部43は、多数決処理を行うために、元の命令と合わせて奇数個となる個数のコピー命令、すなわち偶数個のコピー命令を生成する。
デバッグを行う際、予め命令検出制御部12の比較命令格納バッファ40が格納する命令の発行間隔を、前方に存在する全命令が完了する間隔に設定しておく。これにより、元々プログラム中に存在した命令は、通常のタイミングで動作するが、後続のコピーされた偶数個の命令は、前方に存在する命令が完了するまで実行しない。このように動作することで、後続の偶数個のコピー命令はマイクロプロセッサを専有して1命令のみ動作しているので、タイミングや競合による論理動作不正が発生しない。したがって、最終的に多数決処理でデータをチェックすると、元々存在した命令の不正な結果は破棄され、コピー命令動作時の正しい結果が得られる。
上記のような機能は、論理動作不正が発生する命令列を比較命令格納バッファ40に記憶できる程度の命令数に絞り込んだ後に使用する。特に、命令列中の最後の命令から1命令ずつコピー指示を前の命令に移動させながらプログラムを実行し、多数決処理チェックの結果を確認することで、論理動作不正の発生する命令を特殊な解析なしで機械的に特定することが可能になる。また、このような機能を含むことで、本発明によるマイクロプロセッサは、ハードウェアのみで論理動作不正を回避できる。さらに、通常時は後続のコピー命令の発行間隔を論理動作不正の発生しない最小のタイミングに設定することで、性能低下を最小限に抑え、割り込みを用いた方法と比較すると性能を向上させることができる。
次に、命令検出制御部12の比較命令格納バッファ40への設定内容について、具体的に説明する。図5に本発明の第1の実施形態に係るマイクロプロセッサで利用する命令フォーマットを示す。この例では、ソースレジスタは2個(レジスタ(S1)、(S2))、デスティネーションレジスタは1個(レジスタ(D))の3オペランド形式とする。
図6は、命令検出制御部12の比較命令格納バッファ40に格納する情報の各パラメータを示す図である。比較命令格納バッファ40への設定方法として、以下のようなものが考えられる。ソフトウェア(SW)によって情報を設定する方法としてデコーダー11から信号線400を介して設定する方法がある。また、ハードウェア(HW)によって情報を設定する方法として外部から信号線401を介して設定する方法がある。あるいは、命令トレーサー42で事前に採取した命令を、信号線420を介して設定するようにしても良い。上記の設定方法は一例であり、その他の設定方法も考えられる。
図6において、Vbit(Valid bit)の項目にはエントリーが「有効」あるいは「無効」であるかを設定する。オペコードの項目にはオペコードを設定する。レジスタ番号(D)には、図5に示した命令フォーマットのデスティネーションレジスタDの値を設定する。レジスタ番号(S1)の項目には、ソースレジスタS1の値を設定する。レジスタ番号(S2)の項目には、ソースレジスタS2の値を設定する。ただし、上記レジスタ番号の設定が不要の場合は「指定なし」を設定することで比較不要にすることも可能である。
依存関係(D)の項目には、デスティネーションレジスタが前方にある命令と依存関係を持つ場合に、依存元の命令が登録されているエントリー番号を設定する。依存関係(S1)の項目には、ソースレジスタ(S1)が前方にある命令と依存関係を持つ場合に、依存元の命令が登録されているエントリー番号を設定する。依存関係(S2)の項目には、ソースレジスタ(S2)が前方にある命令と依存関係を持つ場合に依存元の命令が登録されているエントリー番号を設定する。それぞれ、依存関係のない場合は「依存なし」を設定する。
コピー指示の項目には、「有効」あるいは「無効」が設定される。「有効」の場合、命令検出制御部12は、該当命令を検出した場合にコピー命令を発生させる。コピー命令を発生する数は、多数決処理を行うために、元の命令を含めて奇数となる個数、すなわちコピーする命令数は偶数個になる。以下の例では、コピーする命令数を2個として説明を行うが、4個以上の構成でもよい。コピーする命令数が2個である場合は、(元の命令(1個)+コピー命令(2個))となるので、同じ命令が3回実行されることとなる。発行間隔の項目は、スケジューラー13がコピー命令を演算器へ投入する時の直前の命令との発行間隔の設定になる。設定された値のクロック時間待ってからコピー命令は発行される。
なお、命令検出制御部12は、コピー元となる命令のフレームにおいて、コピー元の命令であることを示すコピー元bitを「有効」を示す値に書き換える。また、命令検出制御部12は、コピー命令のフレームにおいて、コピー命令であることを示すコピーbitを「有効」を示す値に書き換える。
次に、具体的な例を用いてマイクロプロセッサの処理を説明する。
図7は、マイクロプロセッサで実行されるプログラムの一例であり、図8は、これに対するデバッグ時の比較命令格納バッファ40の登録内容の一例である。図7において、LDはロード命令であり、ADDは加算命令であり、STはストア命令である。
図8に示すように、各エントリー毎に、図6に示した設定例に従って、比較命令格納バッファ40に登録内容が設定される。ここでは、論理動作不正を発生させる命令がまだ完全に特定できていないため、動作不正を起こす可能性のある命令列中の最後の命令であるエントリー番号「4」のST命令に対して、コピー指示が「有効」になっている。デバッグ時は、直前の命令が完了した後でコピー命令を動作させる必要があるため、発行間隔は充分大きな値、例えば4096クロックという値に設定されている。この後で、実際にプログラムを動作させ、多数決処理チェックを行い、コピー指示を1命令ずつ前の命令に移動させることで、不正の発生する命令を機械的に特定する。
不正の発生する命令を特定した後は、詳細な解析を行い理論的に論理動作不正が発生しない発行間隔を求めてもよいし、(発行間隔=1)から機械的に発行間隔の設定値を大きくし、不正の発生しない設定値を多数決処理チェックの結果を確認しながら見つけるようにしてもよい。上記例のようにデバッグを終えた後で、通常時の動作を設定する。
図9は、通常時の比較命令格納バッファ40の登録内容の例を示すものである。図9に示すように、発行間隔は論理動作不正の発生しない最小の値(図9では例えば「2」に設定)を設定することで、多数決処理チェックにより不正を起こさずに可能な限り性能を向上させることができる。
次に、デバッグ時の命令検出制御部12の動作について説明する。図2に示したように、命令検出制御部12は、比較命令格納バッファ40と、命令比較部41と、命令トレーサー42と、命令制御部43とを有している。
図2において、命令は、デコーダー11から信号線400を介して比較命令格納バッファ40、命令比較部41、命令トレーサー42、命令制御部43に送られる。比較命令格納バッファ40への信号線400は、ソフトウェア(SW)で設定をライトするために使用する。
命令比較部41は、デコーダー11から信号線400を介して送られてくる命令と比較命令格納バッファ40から信号線402を介して送られてくる設定が一致しているかチェックする。比較結果が一致している場合は、信号線411を介して比較命令格納バッファ40へ次エントリーの命令を出力するように指示する。また、コピー指示が「有効」の場合はコピー命令を生成して信号線410を介して命令制御部43へ出力する。比較結果が一致していない場合は、信号線411を介して比較命令格納バッファ40へ先頭エントリーの出力に戻すように指示する。また、その場合、比較結果が不一致であることを、信号線410を介して命令制御部43へ出力する。
命令トレーサー42は、実行している命令の履歴を取得し、内部メモリーに保存する。命令トレーサー42に登録されているデータは論理動作不正の解析のために用いられる。観測方法は、信号線420を介して、ソフトウェア(SW)の命令で出力してもよいし、ハードウェア(HW)の作りこみでLSIの外部へ出力してもよい。
命令制御部43は、命令比較結果を利用してコピー命令を使用するかあるいは通常の命令を使用するかを判断した後で、信号線430を介してスケジューラー13へ命令を出力する。具体的には、命令比較部41が、デコーダー11から送られてきた命令と命令格納バッファ40から送られてくる情報が示す設定とが一致すると判定した場合において、比較命令格納バッファ40から取得した情報のコピー指示が「有効」である場合に、コピー命令を使用すると判断し、コピー指示が「無効」である場合に、コピー命令を使用しないと判断する。
次に、スケジューラー13による命令発行間隔の制御について説明する。スケジューラー13は、命令検出制御部12より送られてきた命令に関して発行間隔のチェックを行う。発行間隔が「0」でない命令は指定されたクロック時間の間だけ命令発行を遅らせる。例えば、発行間隔が「2」の場合、直前に発行した命令に対して2クロック待ってから該当命令を発行する。デバッグ時は、この発行間隔を充分大きい値に設定することで、該当命令がマイクロプロセッサを専有して1命令のみ動作する状態を作り出し、タイミングや競合による論理動作不正の発生を防ぐ。命令の種類によってロード・ストア命令は信号線130を介して演算器20へ発行される。また、通常の演算命令は信号線131を介して演算器30へ発行される。
次に、各命令の動作について説明する。図1において、演算器20と演算器30は、それぞれ入力オペランドに従ってレジスタリードの場合は信号線320を介してデータを入力する。フォワーディングデータを使用する場合は信号線310を介してデータを入力する。その後で、指定された演算を行う。演算を行った命令は、演算器20を使用した場合は信号線200を介してデータキャッシュ(AA)21とデータチェック制御部22とデータキャッシュ(DA)23へ送られる。また、演算器30を使用した場合は信号線300を介してデータチェック制御部31へ送られる。この後は命令によって動作が異なるので分けて説明をする。
(1)ロード・ストアパイプの動作
データチェック制御部22がデータチェックを行うのは、レジスタあるいはデータキャッシュなどの内部資源にライトして内部状態が変化するときのみでよい。ここで、データキャッシュへのライトが発生するのはストア命令のキャッシュヒット時とロード命令のキャッシュミス時(キャッシュフィルによるライト)の2通り存在する。
a.ストア命令
ストア命令実行時、データチェック制御部22は、データキャッシュ(AA)21にアクセスし、キャッシュヒット/ミスの情報を、信号線210を介して取得する。
以下に、メインメモリーへの書き込み方式がライトバック方式である場合とライトスルー方式である場合との動作をそれぞれ説明する。
・ライトバック方式の場合
データチェック制御部22は、まず多数決処理によるチェックを行う。その後、データチェック制御部22が取得したキャッシュヒット/ミスの情報がキャッシュヒットを示す場合、データチェック制御部22は、信号線220を介してデータキャッシュ(DA)23へライトする。他方、データチェック制御部22が取得したキャッシュヒット/ミスの情報がキャッシュミスを示す場合は、信号線221を介してリクエスト制御部24へ命令を出力する。リクエスト制御部24は信号線240を介して当該命令をマイクロプロセッサの外部へ出力する。
・ライトスルー方式の場合
データチェック制御部22は、まず多数決処理によるチェックを行う。その後、データチェック制御部22が取得したキャッシュヒット/ミスの情報がキャッシュヒットを示す場合、信号線220を介してデータキャッシュ(DA)23へライトする。また、データチェック制御部22は、キャッシュヒット/ミスにかかわらず、信号線221を介してリクエスト制御部24へ命令を出力する。リクエスト制御部24は信号線240を介して当該命令をマイクロプロセッサ外部へ出力する。
図3を用いてロード・ストア命令パイプのデータチェック制御部の詳細な動作について説明する。
図3において、コピー命令チェック部50に、演算器20から信号線500を介して命令・データ・アドレスが送られる。また、コピー命令チェック部50に、データキャッシュ(AA)21から信号線501を介してキャッシュヒット/ミス情報が送られる。
コピー命令チェック部50は、キャッシュヒット/ミスにかかわらず、演算器20から送られてきた命令がコピー元の命令またはコピー命令(コピー元bitが「有効」あるいはコピーbitが「有効」の命令)であるかをチェックする。コピー元の命令またはコピー命令のいずれにも当てはまらない場合、コピー命令チェック部50は、そのまま信号線503を介して多数決チェック部52へ出力する。コピー元の命令またはコピー命令であった場合、コピー命令チェック部50は、信号線502を介してデータ・アドレスバッファ51に命令のデータ・アドレスを登録する。コピー命令中で最後の命令(3個目の命令)を検出すると、コピー命令チェック部50は、信号線503を介して多数決チェック部52に命令とキャッシュヒット/ミス情報を出力する。
多数決チェック部52は、コピー命令でなかった場合は多数決処理を行わずにそのまま命令を、信号線521、522を介してデータキャッシュ(DA)23及びリクエスト制御部24に出力する。コピー命令であった場合は信号線520を介してデータ・アドレスバッファ51に該当命令のデータ・アドレスの出力依頼を行う。データ・アドレスバッファ51は、信号線510を介して該当命令のデータ・アドレスを出力する。
多数決チェック部52は、多数決処理を行いコピー命令中の3命令から1命令を選び、信号線521を介してデータキャッシュ(DA)へライトを行う。また、信号線522を介してリクエスト制御部へストア命令(命令・データ・アドレス)を出力する。
多数決処理チェックの結果は、信号線523を介してソフトウェア(SW)の命令で出力してもよいし、ハードウェア(HW)の作りこみでマイクロプロセッサの外部へ出力してもよい。このように多数決チェックの結果を外部に出力するような観測機能を設けると論理動作不正の解析の容易化と動作の確認を行うことが可能になる。
次に、ロード命令の実行時におけるロード・ストアパイプの動作を説明する。
b.ロード命令
図1において、ロード命令実行時、データチェック制御部22は、データキャッシュ(AA)21にアクセスし、キャッシュヒット/ミスの情報を、信号線210を介して取得する。同時に、データチェック制御部22は、データキャッシュ(DA)23にアクセスする。
取得したキャッシュヒット/ミスの情報がキャッシュヒットを示す場合、データチェック制御部22は、信号線230を介して命令・データをデータチェック制御部31へ出力する。他方、取得したキャッシュヒット/ミスの情報がキャッシュミスを示す場合、データチェック制御部22は多数決処理チェックの処理を行い、信号線221を介してリクエスト制御部24にキャッシュフィルのリクエストを出力する。
リクエスト制御部24は、信号線240を介して外部にキャッシュフィルのリクエストを出力する。キャッシュフィルのデータは信号線241を介して返ってくる。リクエスト制御部24は、信号線242を介してキャッシュフィルのデータをデータキャッシュ(AA)21とデータキャッシュ(DA)23にライトする。キャッシュフィルのデータの中でロード命令のターゲットデータをチェックして信号線243を介してデータチェック制御部31へ出力する。
図3を用いてロード・ストア命令パイプのデータチェック制御部の詳細な動作について説明する。
図3において、コピー命令チェック部50には、演算器20から信号線500を介して命令・アドレスが送られる。また、コピー命令チェック部50には、データキャッシュ(AA)から信号線501を介してキャッシュヒット/ミス情報が送られる。
ここで、コピー命令チェック部50は、キャッシュヒットの場合、多数決処理チェックはレジスタライトの直前の図1のデータチェック制御部31で行うので、何も行わない。キャッシュミスの場合、演算器20から送られてきた命令がコピー元の命令またはコピー命令(コピー元bitが有効あるいはコピーbitが有効の命令)であるかをチェックする。
コピー元の命令またはコピー命令でなかった場合、コピー命令チェック部50は、そのまま信号線503を介して多数決チェック部52へ出力する。コピー命令であった場合、コピー命令チェック部50は、信号線502を介してデータ・アドレスバッファ51に命令のアドレスを登録する。また、コピー命令チェック部50は、コピー命令中で最後の命令(3個目の命令)を検出すると信号線503を介して多数決チェック部52に命令とキャッシュミス情報を出力する。
多数決チェック部52は、コピー命令でなかった場合は多数決処理を行わずにそのまま信号線522を介して出力する。他方、コピー命令であった場合は信号線520を介してデータ・アドレスバッファ51に該当命令のアドレスの出力依頼を行う。データ・アドレスバッファ51は、信号線510を介して該当命令のアドレスを出力する。多数決チェック部52は、多数決処理を行いコピー命令中の3命令から1命令を選び、信号線522を介してリクエスト制御部24へキャッシュフィルのリクエスト命令(命令・アドレス)を出力する。
多数決処理チェックの結果は、信号線523を介してソフトウェア(SW)の命令で出力してもよいし、ハードウェア(HW)の作りこみでLSIの外部へ出力してもよい。このように観測機能を設けると論理動作不正の解析の容易化と動作の確認を行うことが可能になる。
上記説明では、キャッシュフィルのリクエストを多数決処理チェック後に外部に出力したが、リクエスト制御部24にキャッシュフィル用の多数決処理チェックの制御部を設ければ、キャッシュフィルのデータが戻ってきた後にキャッシュフィルデータの多数決処理チェックを行うことも可能である。この場合は、ターゲットデータは信号線243を介してコピー命令も含めて3命令分 データチェック制御部31へ送られ多数決処理チェックを行った後で信号線310を介してレジスタ32へライトされる。
(2)演算命令パイプの動作
データチェックを行うのは、レジスタあるいはデータキャッシュなどの内部資源にライトして内部状態が変化する時のみでよい。本発明の実施例においてレジスタへのライトが発生するのは演算命令とロード命令の2通り存在する。
c.演算命令
図1において、演算命令の動作は、データチェック制御部31が多数決処理チェックの処理を行い、信号線310を介してレジスタ32へライトを行う。また信号線310を介してフォワーディングデータを演算器20、演算器30へ転送する。
図4を用いて演算命令パイプのデータチェック制御部31の詳細な動作について説明する。図4において、演算器30から信号線600を介して命令・データが送られる。コピー命令チェック部60は、演算器20から送られてきた命令がコピー元の命令またはコピー命令(コピー元bitが有効あるいはコピーbitが有効の命令)であるかをチェックする。
コピー命令でなかった場合、コピー命令チェック部60は、そのまま信号線603を介して多数決チェック部62へ出力する。コピー命令であった場合は信号線602を介してデータバッファ61に命令のデータを保存する。また、コピー命令中で最後の命令(3個目の命令)を検出すると信号線603を介して多数決チェック部62に命令を出力する。
多数決チェック部62は、コピー命令でなかった場合は多数決処理を行わずに取得した命令をそのまま信号線621を介して出力する。コピー命令であった場合は信号線620を介してデータバッファ61に該当命令のデータの出力依頼を行う。データバッファ61は、信号線610を介して該当命令のデータを出力する。多数決チェック部62は、多数決処理を行いコピー命令中の3命令から1命令を選び、信号線621を介してレジスタへデータを出力する。
多数決処理チェックの結果は、信号線622を介してソフトウェア(SW)の命令で出力してもよいし、ハードウェア(HW)の作りこみでマイクロプロセッサの外部へ出力してもよい。このように観測機能を設けると論理動作不正の解析の容易化と動作の確認を行うことが可能になる。
次に、ロード命令のレジスタライト動作実行時における演算命令パイプの動作を説明する。
d.ロード命令のレジスタライト動作
図1において、ロード命令の動作は、キャッシュヒット/ミスで異なる。キャッシュヒット時は、データチェック制御部31は多数決処理チェックの処理を行い、信号線310を介してレジスタ32へライトを行う。また信号線310を介してフォワーディングデータを演算器20、演算器30へ転送する。キャッシュミス時は、データチェック制御部31は多数決処理チェックを行わずに信号線310を介してレジスタ32へライトを行う。
図4を用いて演算命令パイプのデータチェック制御部31の詳細な動作について説明する。図4において、データキャッシュ(DA)から信号線601を介して命令・データが送られる。コピー命令チェック部60は、コピー命令(コピー元bitが有効あるいはコピーbitが有効の命令)であるかをチェックする。
コピー命令でなかった場合は、そのまま信号線603を介して多数決チェック部62へ出力する。コピー命令であった場合は、信号線602を介してデータバッファ61に命令のデータを保存する。コピー命令中で最後の命令(3個目の命令)を検出すると信号線603を介して多数決チェック部62に命令を出力する。
多数決チェック部62は、コピー命令でなかった場合は多数決処理を行わずにそのまま信号線621を介して出力する。コピー命令であった場合は信号線620を介してデータバッファ61に該当命令のデータの出力依頼を行う。データバッファ61は、該当命令のデータを信号線610を介して出力する。多数決チェック部62は、多数決処理を行いコピー命令中の3命令から1命令を選び、信号線621を介してレジスタへデータを出力する。
多数決処理チェックの結果は、信号線622を介してソフトウェア(SW)の命令で出力してもよいし、ハードウェア(HW)の作りこみでLSIの外部へ出力してもよい。観測機能を設けると論理動作不正の解析の容易化と動作の確認を行うことが可能になる。
次に、本発明の第1の実施形態に係るマイクロプロセッサのデバッグ時の各部の動作を具体的に説明する。まず、マイクロプロセッサでは、図7に示したプログラムを実行するものとする。また、比較命令格納バッファ40には、図8に示したような設定を登録したものとする。ここで、論理動作不正が発生する命令は、エントリー番号「3」のADD命令であるとする。
図1において、論理動作不正が発生するプログラムを実行すると、命令は命令キャッシュ10からフェッチされ、信号線100を介してデコーダー11へ送られる。デコーダー11は命令のデコードを行い、信号線110を介して命令検出制御部12へ出力する。
命令検出制御部12の命令比較部41(図2に参照)には、デコーダー11から信号線400を介して、図7の番号「1」のLD命令が、実際の命令として入力される。同時に比較命令格納バッファ40から、信号線402を介して、図8のエントリー番号「1」の内容が、設定された命令として入力される。命令比較部41は、実際の命令と設定された命令とを比較すると、オペコード、レジスタ番号(D、S1、S2)、依存関係(D、S1、S2)とが一致することを検出する。ただし、ここではコピー指示が「無効」のためコピー命令は発生しない。
命令比較部41は、次の比較に備えて信号線411を介して比較命令格納バッファ40に次エントリーの内容を出力するように指示する。次に、図7の番号「2」のLD命令と、図8のエントリー番号「2」の内容を比較する。この場合、「1」の命令と同様に、一致を検出し、各種処理を行うが、コピー命令は発生しない。
次に、図7の番号「3」のADD命令と、図8のエントリー番号「3」の内容を比較する。この場合、「1」、「2」と同様に、一致を検出するので、各種処理を行うが、コピー命令は発生しない。
次に、図7の番号「4」のST命令と、図8のエントリー番号「4」の内容を比較する。この場合、一致を検出し、さらに、図8のエントリー番号「4」はコピー指示が「有効」になっているので、命令比較部41は、信号線410を介して命令制御部43へ比較結果が一致、且つコピー指示が「有効」、且つ発行間隔が「4096」であることを出力する。また、図8の番号「4」のST命令に対して、2個のコピー命令を発生し、信号線410を介して命令制御部43へ出力する。
命令制御部43は、図7の番号「4」のST命令に、コピー元bit(コピー指示が有効な命令で元のプログラムの命令列中に存在した命令を示すbit)が「有効」、発行間隔が「0」を付与して、信号線430を介してスケジューラー13へ出力する。次に、ST命令のコピー命令を2命令分、コピーbit(コピー指示が有効な命令で新しくコピーとして生成した命令を示すbit)が「有効」、発行間隔が「4096」を付与して、信号線430を介してスケジューラー13へ出力する。上記処理を行って命令制御部43からスケジューラー13に送られる命令は、図10のようになる。
図12は、上記動作に関してのタイミングチャートを示すものである。番号「2」のLD命令から、番号「3」のADD命令へのデータのフォワーディングのタイミングで動作不正が発生している。この例では、番号「4」のST命令をコピー対象としたために、時刻が「8202」で多数決処理チェックを行っても、3命令とも同じ動作不正の発生したストア命令になり、論理動作不正は回避できないことになる。
論理動作不正が回避できていないので、比較命令格納バッファ40の登録内容の再設定を行う。命令列中で1命令前の番号「3」のADD命令にコピー指示を移動させる。ただし、デバッグ中なので発行間隔は「4096」である。
その後、プログラムを再実行すると、番号「3」のADDは動作不正になるが、番号「4」のADDと、番号「5」のADDの2つのコピー命令は正しく動作する。よって、論理動作不正が発生しても多数決処理チェック回路で正しい結果が得られる。
ここで、論理動作不正の回避による影響を少なくするために、上記動作について命令トレーサー42や多数決処理チェックの結果を用いて机上で解析すると、理論的には発行間隔を「2」に設定すれば正しく動作することが分かったとする。この理想的な設定を通常時の動作設定とすることで性能低下の影響を最小にすることができる。
比較命令格納バッファ40に図9に示した設定を登録してプログラムを実行する。この場合、命令制御部43からスケジューラー13に送られる命令は、図11のようになる。上記動作に関してのタイミングチャートは図13のようになる。時刻が「11」で多数決処理チェックを行うと、番号「3」のADD命令は論理動作不正を起こすが、番号「4」のADDと、番号「5」のADDのコピー命令2個は正常動作するため、多数決処理チェックを行うと、ADD命令としては正しく動作した上で、デバッグ時と比較して性能が向上する。
以上説明したように、本発明の実施形態では、以下に記載するような効果を持つ。
(1)単独のマイクロプロセッサにおいて論理動作不正の発生する命令を特殊な解析なしで特定することが可能になり調査を容易化できる。
(2)多数決処理チェックの結果を観測することで正しく論理動作不正が回避できているか確認できる。
(3)ハードウェアのみで論理動作不正を回避できる。
(4)スケジューラーの発行条件を設定して論理動作不正の発生しない最小のタイミングに設定することで性能低下の影響を最小にでき、割込みとソフトウェアによる解析と比較して性能が向上する。
本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。例えば、図1において命令キャッシュ10やデータキャッシュ(AA)21やデータキャッシュ(DA)23は構成せずに、直接メモリーに接続されていてもよい。また、上述の実施形態では、演算命令パイプとロード・ストア命令パイプの2パイプ構成にしているが、1パイプ構成や3パイプ構成以上でもよい。また、図2において命令トレーサー42は構成しなくてもよい。また、比較命令格納バッファと命令比較部を複数用意して同時に2つ以上の比較を行ってもよい。
また、図6において発行間隔の設定は、コピー命令毎に細かく設定できるようにしてもよい。この場合は、さらなる性能の向上を期待できる。発行条件は、発行間隔という時間ではなく、例えば、演算器が動作していない時やデータキャッシュをアクセスしていない時やキャッシュフィルを要求している命令が存在しない時やマイクロプロセッサ内の命令が全て完了している時などの状態等、マイクロプロセッサの内部状態を検出して制御を行ってもよい。
また、比較命令格納バッファの設定登録、不正動作の発生するプログラムの実行、多数決処理チェックの結果の確認という一連の動作をスクリプトなどを使用して自動的に実行できる仕組みを用いれば、人手を介せずに不正の発生する命令を特定することができる。
本発明は、上述した実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
10:命令キャッシュ
11:デコーダー
12:命令検出制御部
13:スケジューラー
20:演算器
21:データキャッシュ(AA)
22:データチェック制御部
23:データキャッシュ(DA)
24:リクエスト制御部
30:演算器
31:データチェック制御部
32:レジスタ
40:比較命令格納バッファ
41:命令比較部
42:命令トレーサー
43:命令制御部
50:コピー命令チェック部
51:データ・アドレスバッファ
52:多数決チェック部
60:コピー命令チェック部
61:データバッファ
62:多数決チェック部

Claims (5)

  1. 検査対象として比較すべき命令列、当該命令以前の命令との依存関係、当該命令を複製するか否かを示すコピー指示、及び当該命令の発行間隔の設定値を含む情報を格納する比較命令格納手段と、
    前記比較命令格納手段が格納する情報が示す命令と実行中の命令とが一致するか否かを判定する命令比較手段と、
    前記命令比較手段によって、命令が一致し且つコピー指示が当該命令を複製することを示すと判定された場合、当該命令の複製であるコピー命令を複数生成する命令制御手段と、
    前記設定値に設定された発行間隔に従って命令を発行するスケジュール設定手段と、
    前記スケジュール設定手段が発行する前記コピーの元となった命令及び前記複数のコピー命令を実行し、この実行結果を多数決処理によりチェックする多数決処理チェック手段と
    を備えることを特徴とするマイクロプロセッサ。
  2. 前記コピー命令として、偶数個の命令を生成することを特徴とする請求項1に記載のマイクロプロセッサ。
  3. 前記多数決処理チェック手段は、前記コピーの元となった命令と、前記偶数個のコピー命令とから、多数決処理により1命令を選ぶことを特徴とする請求項2に記載のマイクロプロセッサ。
  4. 検査対象として比較すべき命令列、当該命令以前の命令との依存関係、当該命令を複製するか否かを示すコピー指示、及び当該命令の発行間隔の設定値を含む情報を登録する工程と、
    前記登録した命令と実行中の命令とが一致するか否かを判定する工程と、
    命令が一致し且つコピー指示が当該命令を複製することを示すと判定された場合、当該命令の複製であるコピー命令を複数生成する工程と、
    前記設定値に設定された発行間隔に従って命令を発行する工程と、
    前記コピーの元となった命令及び前記複数のコピー命令を実行し、この実行結果を多数決処理によりチェックする工程とを含む
    ことを特徴とするマイクロプロセッサのデバッグ方法。
  5. 前記コピー命令は、前方に存在する命令が完了するまで実行しない発行間隔に設定し、
    命令列中の最後の命令から1命令ずつコピー指示を前の命令に移動させながらプログラムを実行し、多数決処理チェックの結果を確認することで、論理動作不正の発生する命令を特定する
    ことを特徴とする請求項4に記載のマイクロプロセッサのデバッグ方法。
JP2009193537A 2009-08-24 2009-08-24 マイクロプロセッサ及びマイクロプロセッサのデバッグ方法 Expired - Fee Related JP5387231B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009193537A JP5387231B2 (ja) 2009-08-24 2009-08-24 マイクロプロセッサ及びマイクロプロセッサのデバッグ方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009193537A JP5387231B2 (ja) 2009-08-24 2009-08-24 マイクロプロセッサ及びマイクロプロセッサのデバッグ方法

Publications (2)

Publication Number Publication Date
JP2011044114A JP2011044114A (ja) 2011-03-03
JP5387231B2 true JP5387231B2 (ja) 2014-01-15

Family

ID=43831483

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009193537A Expired - Fee Related JP5387231B2 (ja) 2009-08-24 2009-08-24 マイクロプロセッサ及びマイクロプロセッサのデバッグ方法

Country Status (1)

Country Link
JP (1) JP5387231B2 (ja)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5129450B2 (ja) * 2006-01-16 2013-01-30 ルネサスエレクトロニクス株式会社 情報処理装置

Also Published As

Publication number Publication date
JP2011044114A (ja) 2011-03-03

Similar Documents

Publication Publication Date Title
US10289469B2 (en) Reliability enhancement utilizing speculative execution systems and methods
US6754856B2 (en) Memory access debug facility
US6349382B1 (en) System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order
US6266768B1 (en) System and method for permitting out-of-order execution of load instructions
US8533394B2 (en) Controlling simulation of a microprocessor instruction fetch unit through manipulation of instruction addresses
JPH05303492A (ja) データ処理装置
US6301654B1 (en) System and method for permitting out-of-order execution of load and store instructions
US20120029900A1 (en) Simulation method and system for simulating a multi-core hardware platform
US20090271583A1 (en) Monitoring transactions in a data processing apparatus
CN109328341B (zh) 识别引起远程事务执行中止的存储的处理器、方法和系统
US7376820B2 (en) Information processing unit, and exception processing method for specific application-purpose operation instruction
US20220413870A1 (en) Technology For Optimizing Memory-To-Register Operations
JP4243271B2 (ja) データ処理装置およびデータ処理方法
JP2951580B2 (ja) 非プログラム順序の命令実行をサポートする方法及びデータ処理システム
US6704861B1 (en) Mechanism for executing computer instructions in parallel
US7305586B2 (en) Accessing and manipulating microprocessor state
US6711670B1 (en) System and method for detecting data hazards within an instruction group of a compiled computer program
US10346165B2 (en) Resource locking for load store scheduling in a VLIW processor
JP5387231B2 (ja) マイクロプロセッサ及びマイクロプロセッサのデバッグ方法
JP7403541B2 (ja) メモリ順序付け違反チェックバッファの排出遅延を許容するための投機的命令ウェイクアップ
US9710389B2 (en) Method and apparatus for memory aliasing detection in an out-of-order instruction execution platform
US6769057B2 (en) System and method for determining operand access to data
US11119149B2 (en) Debug command execution using existing datapath circuitry
JPH1049373A (ja) パイプライン・デジタル・プロセッサにおいて多重で高精度の事象を操作する方法と装置
WO2009096161A1 (ja) プロセッサ性能解析装置、方法及びシミュレータ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120711

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130828

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130910

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130923

R150 Certificate of patent or registration of utility model

Ref document number: 5387231

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees