(57)【要約】【課題】プロセッサが実行していた異常終了直前の命令データを特定することができる。【解決手段】ＬＳＩ１０は、バス１３を介してプロセッサ１２に入力された命令データを処理するパイプライン１５、及びパイプラインに１５よって処理された命令データが入力され、命令データに従って演算処理を行う演算実行回路１６を有するプロセッサ１２と、パイプライン１５から演算実行回路１６に入力される命令データを格納する記憶回路１４と、を有するものである。【選択図】  図２
2008293061.tif 000002
【特許請求の範囲】
【請求項１】
バスを介してプロセッサに入力された命令データを処理するパイプライン、及び前記パイプラインによって処理された前記命令データが入力され、当該命令データに従って演算処理を行う演算実行回路を有するプロセッサと、
前記パイプラインから前記演算実行回路に入力される前記命令データを格納する記憶回路と、を有する
半導体装置。
【請求項２】
前記記憶回路に記憶された前記命令データを外部に出力するインタフェースを更に有する
請求項１記載の半導体装置。
【請求項３】
前記記憶回路は、前記パイプラインから前記演算実行回路に入力される最新の前記命令データにより更新されたデータを一定容量保存する
請求項１又は２記載の半導体装置。
【請求項４】
前記プロセッサが異常状態となったことを検出する異常状態検出回路を更に備えた
請求項１乃至３のいずれか１項に記載の半導体装置。
【請求項５】
前記記憶回路は、前記異常状態検出回路によって前記プロセッサの異常状態が検出されると、前記命令データの格納を停止する
請求項４記載の半導体装置。
【請求項６】
前記インタフェースは、パラレルにデータを出力するパラレルインタフェースである
請求項２記載の半導体装置。
【請求項７】
前記インタフェースは、シリアルにデータを出力するシリアルインタフェースである
請求項２記載の半導体装置。
【請求項８】
バスを介してプロセッサに入力された命令データをパイプライン処理し、
当該パイプライン処理された命令データに従って演算処理をする際の当該命令データを記憶する
半導体装置のデバッグ方法。
【請求項９】
記憶された前記命令データに基づいて、前記半導体装置の異常状態を解析する
請求項８記載の半導体装置のデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、特に、プロセッサが異常状態となったときの原因の解析が可能な半導体装置に関する。
【背景技術】
【０００２】
従来より、インサーキットエミュレータ（以下、ＩＣＥという。）をターゲットプロセッサに接続し、デバッガがＩＣＥを介してプロセッサと通信することによりデバッグを行うデバッグシステムが広く用いられている。デバッガは、ＩＣＥを介してプロセッサが実行するプログラムをダウンロードしたり、プロセッサにブレーク要求を送信してプロセッサの処理を一時停止させ、メモリやレジスタの状態をデバッガに出力させたり、メモリやレジスタのデータを書き換えるよう操作することによりプロセッサの動作確認を行う。ターゲットプロセッサが正常に動作している状態では、このような操作は滞りなく実行される。
【０００３】
しかしながら、プロセッサに接続されたハードウェアやプロセッサ製造時のシリコン等の不具合により、プロセッサの外部バスに接続されるバスインタフェースが正常に動作しない状態でプロセッサが動作を停止することがある。例えば、外部バスのスレーブ側、すなわち、プロセッサに接続されたハードウェアからの応答を示すＲｅａｄｙ信号がアクティブにならない状態や、プロセッサを一時停止させるＷａｉｔ信号がアクティブにならないような状態等が考えられる。
【０００４】
ＩＣＥは、プロセッサのバスインタフェースを介してメモリやレジスタにアクセスするため、バスインタフェースが使用できない状態でプロセッサが一時停止すると、メモリやレジスタにアクセスすることができず、デバッガは所定のデバッグ処理を行うことができない。このような状態での不具合の解析は、不具合箇所を特定することが困難であり、デバッグ処理に非常に長い時間が費やされてしまう。
【０００５】
特許文献１及び特許文献２には、プロセッサ内のメインメモリとは別にデータ記憶回路を設け、プロセッサの実行したプログラムをデータ記憶回路に格納する仕組みが開示されている。しかしながら、特許文献１及び特許文献２に記載されたＬＳＩでは、バスインタフェースを使用することができない状態では、データ記憶回路に格納されたプログラム等をＩＣＥ等の外部装置に出力することができない。
【０００６】
特許文献３には、共通バスとは別にメモリデータをダンプするためのダンプバスを設け、共通バスが使えなくなった場合であっても、制御バスが使えないときにはダンプバスを用いてメモリデータを外部に転送する技術が記載されている。
【特許文献１】特開昭５８−０４４５４５号公報
【特許文献２】特開平０１−１６１５４４号公報
【特許文献３】特開平０８−３２８９１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献３に記載されているシステムメモリでは、パイプラインと演算実行回路との間の命令データを記憶することができず、プロセッサがバスインタフェースを使用できない状態で一時停止した場合では、プロセッサが実行していた命令データを特定することが困難である。
【課題を解決するための手段】
【０００８】
本発明に係る半導体装置は、バスを介してプロセッサに入力された命令データを処理するパイプライン、及び前記パイプラインによって処理された前記命令データが入力され、当該命令データに従って演算処理を行う演算実行回路を有するプロセッサと、前記パイプラインから前記演算実行回路に入力される前記命令データを格納する記憶回路と、を有するものである。
【０００９】
本発明に係る半導体装置によれば、パイプラインから演算実行回路に出力される命令データを記憶回路に記憶することにより、例えば、プロセッサが異常終了した場合であっても記憶回路に記憶された命令データをトレースすることにより、プロセッサが実行していた異常終了直前の命令データを特定することができる。
【発明の効果】
【００１０】
本発明によれば、プロセッサが実行していた異常終了直前の命令データを特定することができる。
【発明を実施するための最良の形態】
【００１１】
以下、添付した図面を参照して本発明の実施の形態について説明する。
［第１の実施形態］
図１は、本発明に係るＬＳＩ１０の概要を示すブロック図である。なお、実施の形態では、本発明に係る半導体装置をＬＳＩ１０として説明する。ＬＳＩ１０は、解析装置９とメインメモリ３０に接続されている。ＬＳＩ１０の有するプロセッサ１２は、メインメモリ３０に格納された命令データを呼び出し、この命令データに従って所定の演算処理を実行している。ＬＳＩ１０は、メインメモリ３０からプロセッサ１２に入力される命令データを記憶回路１４に記憶している。
【００１２】
この記憶回路１４に記憶された命令データは、例えば、プロセッサ１２に異常が発生し、プロセッサ１２の動作が停止した場合に解析装置９に出力される。解析装置９は、記憶回路１４に記憶された命令データを解析することにより、プロセッサ１２において発生した異常を解析することができる。
【００１３】
図２は、本発明の第１の実施形態に係るＬＳＩ１０の一構成例を示すブロック図である。ＬＳＩ１０は、プロセッサ１２、バス１３、及び記憶回路１４を備えて構成されている。プロセッサ１２は、バス１３に接続されたメインメモリ３０にアクセスする。プロセッサ１２は、メインメモリ３０に格納された命令データや数値データ等を読み出し、プログラムに従って所定の演算処理を実行した後、演算結果をバス１３に出力する。バス１３は、ＬＳＩ１０の有する内部バスである。バス１３は、プロセッサ１２、メインメモリ３０、及び、機能モジュール（図示せず）などのハードウェアコンポーネントが接続されている。
【００１４】
バス１３は、プロセッサ１２と、メインメモリや機能モジュールとの間のデータの伝送路となる。記憶回路１４は、プロセッサ１２の内部に流れる命令データを順次記憶部１８に格納していく。記憶部１８は、最新の命令データを順次格納していくＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）構造を有し、プロセッサ１２が実行する最新の命令データを一定容量保存することができる。すなわち、記憶部１８は、プロセッサ１２で実行された命令データの一定量の履歴を記憶している。命令データは、例えば、命令を識別する命令コードや、命令が格納されたアドレス等の情報である。記憶部１８に格納された命令データは、ＬＳＩ１０の有するシリアルインタフェース１９を介して、ＬＳＩ１０の外部に出力することができる。シリアルインタフェース１９は、外部に接続された解析装置９等にシリアルにデータを出力するインタフェースである。シリアルインタフェース１９は、バス１３に接続されておらず、プロセッサ１２やバス１３の動作状態に関らず、記憶部１８に格納された命令データを出力することができる。記憶回路１４は、プロセッサ１２とは別チップに搭載されいてもよく、また、プロセッサ１２内部に搭載されていてもよい。
【００１５】
プロセッサ１２は、パイプライン１５、演算実行回路１６、及び、異常状態検出回路１７を備えて構成されている。パイプライン１５は、演算実行回路１６とバス１３の間に設けられている。パイプライン１５は、バス１３を介して入力された命令データを、演算実行回路１６の処理効率が向上するように処理し、演算実行回路１６に出力している。プロセッサ１２は、バス１３から取得した命令データをパイプライン１５から入力する。パイプライン１５に入力された命令データは、パイプライン処理され、演算実行回路１６に出力される。また、パイプライン１５は、バス１３から入力された命令データを記憶回路１４にも出力している。すなわち、パイプライン１５は、入力された命令データを、演算実行回路１６及び記憶回路１４に出力している。記憶回路１４には、演算実行回路１６に入力さされる命令データと同じ命令データが順次入力されている。バス１３は、プロセッサ１２の外部バスであるのに対し、パイプライン１５と演算実行回路１６の間のバスは、プロセッサ１２の内部バスである。
【００１６】
異常状態検出回路１７は、プロセッサ１２に生じた何らかの異常状態を検知する回路である。例えば、異常状態検出回路１７は、演算実行回路１６に取り込まれた命令データがプロセッサ１２において定義されていない、すなわち未定義な命令であった場合に、演算実行回路１６から異常を知らせる信号が入力されることによりプロセッサ１２の異常を検出する。または、異常状態検出回路１７は、一定期間バス１３からの応答がなくなったことを検知することにより、プロセッサ１２の異常を検知する。
【００１７】
または、異常状態検出回路１７は、これらを組み合わせ、未定義な命令が実行された場合や、一定期間バス１３からの応答がなくなった場合などを合わせて異常状態であると検知するよう構成することもできる。異常状態検出回路１７は、プロセッサ１２において異常状態を検知すると、異常状態検知信号を記憶回路１４に出力する。記憶回路１４は、異常状態検出回路１６からこの異常状態検知信号が入力されると、命令データの格納を停止する。
【００１８】
このように構成されたＬＳＩ１０では、バス１３からパイプライン１５に入力される命令データを順次、記憶回路１４に記憶していく。異常状態検出回路１７によってプロセッサ１２に何らかの異常状態が検知された場合には、記憶回路１４は、命令データの格納を中断する。記憶回路１４によって記憶された命令データは、シリアルインタフェース１９を介してＬＳＩ１０の外部に出力される。ＬＳＩ１０の外部に接続された解析装置９は、この記憶回路１４に蓄積された命令データをトレースすることにより、プロセッサ１２に発生した異常状態を解析することができる。
【００１９】
次に、このように構成されたＬＳＩ１０の動作について説明する。図３〜図５は、プロセッサ１２の動作状態に応じた、ＬＳＩ１０の動作を示すタイミングチャートである。図３は、プロセッサ１２が正常に動作している場合のＬＳＩ１０の動作を示し、図４及び図５は、プロセッサ１２に異常状態が発生したときのＬＳＩ１０の動作を示している。図４は、一例として、未定義の命令データがプロセッサ１２に入力された異常状態が発生した場合のＬＳＩ１０の動作を示し、図５は、他の例として、バス１３からの応答が停止した異常状態が発生した場合のＬＳＩ１０の動作を示している。図３〜図５には、上から、バス１３からパイプライン１５に入力される命令データ、パイプライン１５から演算実行回路１６に入力される命令データ、記憶回路１４に記憶される命令データ、演算実行回路１６で実行される命令データがそれぞれ示されている。
【００２０】
図３は、プロセッサ１２が正常に動作している場合のＬＳＩ１０の動作を示すタイミングチャートである。プロセッサ１２の正常動作時では、バス１３に流れる命令データは、パイプライン１５からプロセッサ１２に入力される。バス１３に、命令データＡ〜Ｊが流れていれば、パイプライン１５にも、命令データＡ〜Ｊが流れる。パイプライン１５に入力された命令データは、記憶回路１４に順次記憶されている。記憶回路１４は、パイプライン１５から演算実行回路１６に命令データが入力されるタイミングに同期して、命令データＡ〜Ｊを書き込んでいく。演算実行回路１６にも同様に、パイプライン１５から命令データＡ〜Ｊが入力される。演算実行回路１６は、この命令データＡ〜Ｊに従って、所定の演算処理を実行していく。このように、演算実行回路１６が所定の演算処理を実行している間中、記憶回路１４は、演算実行回路１６で実行される命令データＡ〜Ｊを記憶していく。
【００２１】
図４は、プロセッサ１２に未定義の命令データが入力された異常状態が発生した場合の、ＬＳＩ１０の動作を示すタイミングチャートである。ここでは、命令データＥがプロセッサ１２において未定義の命令であるとする。バス１３には、命令データＡ〜Ｊが流れている。パイプライン１５は、バス１３から命令データＡ〜Ｊが入力されている。パイプライン１５に入力された命令データＡ〜Ｊは、パイプライン１５から、記憶回路１４及び演算実行回路１６に分岐して出力される。演算実行回路１６は、パイプライン１５から入力された命令データに従って演算処理を実行している。
【００２２】
演算実行回路１６において、例えば、未定義である命令データＥが入力されて動作が停止すると、演算実行回路１６は、動作が停止したことを異常状態検出回路１７に通知する。異常状態検出回路１７は、演算実行回路１６から異常状態を知らせる通知を受け取ると、記憶回路１４に対して異常状態検出信号を出力する。記憶回路１４は、異常状態検出回路１７から異常状態検出信号が入力されると、命令データの格納を中断する。すなわち、記憶回路１４には、命令データＡ〜Ｅが格納され、命令データＦの格納が中断する。この、命令データＡ〜Ｆの履歴は、シリアルインタフェース１９を介して外部の解析装置９に出力される。
【００２３】
解析装置９を用い、記憶回路１４に記憶された命令データＡ〜Ｆをトレースすることにより、異常状態発生の原因を解析することができる。
【００２４】
図５は、プロセッサ１２にバス１３からの応答停止した異常状態が発生した場合の、ＬＳＩ１０の動作を示すタイミングチャートである。プロセッサ１２は、バス１３から命令データを取り込み、演算実行回路１６において所定の演算処理を実行していく。ここで、バス１３からパイプライン１５の間で、命令データＥ以降の命令データが流れなくなってしまったとする。命令データＥの演算実行回路１６は、バス１３から応答が得られず、実行すべき命令データをバス１３から取得できない場合、バス１３から命令データが入力されるまで、バスの応答を待ち続ける。異常状態検出回路１７は、バス１３接続され、バス１３から一定時間異常応答がないことを検出すると、異常状態検出信号を記憶回路１４に出力する。または、異常状態検出回路１７は、演算処理回路１６に接続され、演算処理回路１６において一定時間演算処理が実行されないと、バス１３から応答がないと判断して異常状態検出信号を出力する。なお、異常状態検出回路１７は、これらの構成に限らず、プロセッサ１２の異常を検出できる構成であればよい。
【００２５】
記憶回路１４は、異常状態検出回路１７から異常状態検出信号が入力されると、命令データの格納を中断する。記憶回路１４に格納された命令データＡ〜Ｅは、シリアルインタフェース１９を介して外部の解析装置９等に出力される。解析装置９において、記憶回路１４に格納された命令データＡ〜Ｅをトレースすることにより、異常状態が発生した直前に実効された命令データを特定することができる。これにより、プロセッサ１２の異常状態の発生を解析することができる。
【００２６】
このように、第１の実施形態に係るＬＳＩ１０では、プロセッサ１２内部のバスであるパイプライン１５の状態を記憶する記憶回路１４を設けることにより、プロセッサ１２が異常終了した場合であってもプロセッサ１２が実行していた命令データを特定することができる。記憶回路１４に格納された命令データを、シリアルインタフェース１９を介して外部に出力することにより、プロセッサ１２やバス１３の動作状態に関係なく、命令データを取得し、解析することが可能である。なお、シリアルインタフェース１９に接続される解析装置９は、常時、ＬＳＩ１０に接続しておく必要がない。また、異常状態が生じる直前の命令データが自動的に記憶回路１４の記憶部１８に格納されるため、ソフトウェアに異常状態解析用のデータを追加する必要がない。
【００２７】
［第２の実施形態］
図６は、本発明の第２の実施形態に係るＬＳＩ２０の一構成例を示すブロック図である。第２の実施形態に係るＬＳＩ１０の特徴は、第１の実施形態に係るシリアルインタフェース１９に代えて、パラレルに信号を出力するパラレルインタフェース２１を用いた点にある。なお、他の構成については、第１の実施形態と略同一構成であるため、第１の実施形態と略同一構成については同一符号を付すことによりその説明を省略する。
【００２８】
図６に示すように、第２の実施形態に係るＬＳＩ２０は、記憶回路１４から外部に命令データを出力するインタフェースがパラレルインタフェース２１によって構成されている。一般に、パラレルインタフェース２１は、シリアルインタフェース１９に比べて信号線の本数が多く、端子数を削減するためにシリアルインタフェース１９が用いられることが多い。しかしながら、データ量、すなわち、外部に出力される命令データが多くなった場合は、第２の実施形態のようにパラレルインタフェース２１を用いることが好ましい。これにより、命令データの転送速度が向上し、短時間で命令データを外部に出力することができる。
【００２９】
図７は、第２の実施形態に係るＬＳＩ２０を適用したＬＳＩシステム１００の一構成例を示すブロック図である。ＬＳＩシステム１００は、プロセッサ１２を含むＬＳＩ２０がバス１３を介してメインメモリ３０に接続されている。プロセッサ１２の命令データは、このメインメモリ３０に記憶されている。バス１３には、機能モジュール３１Ａ、３１ＢがＬＳＩシステム１００のハードウェアコンポーネントとして接続されている。
【００３０】
次に、このように構成されたＬＳＩシステム１００の動作について説明する。プロセッサ２０は、起動されると、メインメモリ３０に格納されたデータの中から、リセットベクタに設定されたアドレスから命令データをバス１３から取得し始める。メインメモリ３０は、プロセッサ１２からのリセットベクタの取得要求に応答して、リセットベクタをバス１３に出力する。続いて、メインメモリ３０は、プロセッサ１２の要求に応じて、順次命令データをバス１３に出力していく。これらのデータは、バス１３を介してプロセッサ１２に入力される。
【００３１】
図６に示すように、プロセッサ２０の内部では、パイプライン１５を介して演算実行回路１６に命令データが入力されている。パイプライン１５に流れるデータは、記憶回路１４に順次出力されている。記憶回路１４は、最新の命令データが一定容量格納されている。演算実行回路１６は、命令データに従って、順次演算処理を実行している。ここで、プログラムの生成ミス等によって、プロセッサ１２に、演算処理できないような未定義の命令データが入力された場合や、バス１３から命令データの入力が停止してしまった場合には、異常状態検出回路１７から記憶回路１４に対して異常状態検出信号が出力される。例えば、演算実行回路１６において、演算処理が停止した場合や、バス１３のデータが停止した場合は、プロセッサ１２に異常が発生していると判断する。バス１３からの命令データの入力停止の要因としては、例えば、バス１３に接続された機能モジュール３１Ａ、３１Ｂの不具合などによりバス１３の機能が停止してしまった場合などが考えられる。
【００３２】
記憶回路１４は、異常状態検出回路１７から異常状態検出信号が入力されると、命令データの格納を中断する。この命令データは、パラレルインタフェース２１を介して外部に出力され、外部の解析装置９等によって命令データの解析が実行される。これにより、ＬＳＩシステム１００において、プロセッサ１２に異常が発生した直前にプロセッサ１２が実行していた命令を解析し、プロセッサ１２の異常の要因を特定することができる。
【００３３】
本発明は、前述した実施形態に限定されるものではなく、演算実行回路１６に入力される命令データを記憶する記憶回路１４を設ける構成を有していれば、種々構成の変更が可能である。
【図面の簡単な説明】
【００３４】
【図１】本発明のＬＳＩ１０の概要を示すブロック図である。
【図２】本発明の第１の実施形態に係るＬＳＩ１０の一構成例を示すブロック図である。
【図３】プロセッサ１２が正常に動作している場合のＬＳＩ１０の動作を示すタイミングチャートである。
【図４】プロセッサ１２に未定義の命令データが入力された異常状態が発生した場合の、ＬＳＩ１０の動作を示すタイミングチャートである。
【図５】プロセッサ１２にバス１３からの応答停止した異常状態が発生した場合の、ＬＳＩ１０の動作を示すタイミングチャートである。
【図６】本発明の第２の実施形態に係るＬＳＩ２０の一構成例を示すブロック図である。
【図７】第２の実施形態に係るＬＳＩ２０を組み込んだＬＳＩシステム１００全体の一構成例を示すブロック図である。
【符号の説明】
【００３５】
９  解析装置
１０、２０  ＬＳＩ
１２  プロセッサ
１３  バス
１４  記憶回路
１５  パイプライン
１６  演算実行回路
１７  異常状態検出回路
１９  シリアルインタフェース
２１  パラレルインタフェース
３０  メインメモリ
３１Ａ、３１Ｂ  機能モジュール
１００  ＬＳＩシステム
【図１】
2008293061.tif 000003
【図２】
2008293061.tif 000004
【図３】
2008293061.tif 000005
【図４】
2008293061.tif 000006
【図５】
2008293061.tif 000007
【図６】
2008293061.tif 000008
【図７】
2008293061.tif 000009