(57)【要約】【課題】半導体装置においてプログラムを実行した場合に発生するトレースデータを、そのトレースデータに適した圧縮方式で圧縮する。【解決手段】圧縮回路１１４は、トレースデータを複数の圧縮方式から選択された圧縮方式で圧縮する。圧縮回路最適化部１２０は、ＭＣＵ１０１において動作させるプログラム２０１を動作させ、プログラムの実行結果、及びトレースデータのシミュレーション結果を生成する。圧縮回路最適化部１２０は、プログラムの実行結果を解析し、トレースデータのシミュレーション結果を分析する。圧縮回路最適化部１２０は、プログラムの実行結果の解析結果、及びトレースデータのシミュレーション結果の分析結果に基づいて、圧縮回路１１４における圧縮方式を決定する。また、圧縮回路最適化部１２０は、圧縮回路１１４を決定した圧縮方式でトレースデータを圧縮する回路として動作させるための圧縮回路データを生成する。【選択図】図１
2019109821.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、該プロセッサがプログラムに従って動作することで発生するトレースデータを複数の圧縮方式から選択された圧縮方式で圧縮する圧縮回路と、該圧縮回路で圧縮されたトレースデータを出力するトレースインタフェースとを含む半導体装置において動作させるプログラムを動作させ、前記プログラムの実行結果、及び前記トレースデータのシミュレーション結果を生成するシミュレータと、
前記プログラムの実行結果を解析し、前記トレースデータのシミュレーション結果を分析する結果解析部と、
前記プログラムの実行結果の解析結果、及び前記トレースデータのシミュレーション結果の分析結果に基づいて前記圧縮回路における圧縮方式を決定し、前記圧縮回路を前記決定した圧縮方式で前記トレースデータを圧縮する回路として動作させるための圧縮回路データを生成する圧縮方式決定部とを備えるトレースデータ圧縮方式選定装置。
【請求項２】
前記シミュレータは、ログ取得条件に従って前記トレースデータのシミュレーション結果を生成する請求項１に記載のトレースデータ圧縮方式選定装置。
【請求項３】
前記ログ取得条件は、前記プログラムが前記半導体装置で実行される場合に、前記半導体装置に入力されると想定される入力情報を含む請求項２に記載のトレースデータ圧縮方式選定装置。
【請求項４】
前記半導体装置は、機器の制御に用いられるマイクロコントローラユニットである請求項１に記載のトレースデータ圧縮方式選定装置。
【請求項５】
前記圧縮回路は、再構成可能デバイスを用いて構成されており、
前記圧縮回路データは、前記再構成可能デバイスを、前記決定した圧縮方式で前記トレースデータを圧縮する回路として動作させるための構成情報を含む請求項１に記載のトレースデータ圧縮方式選定装置。
【請求項６】
前記圧縮方式決定部は、前記構成情報を、前記複数の圧縮方式のそれぞれに対応して記憶する圧縮回路ライブラリを参照し、前記決定した圧縮方式に対応する構成情報を前記圧縮回路ライブラリから取得して前記圧縮回路データを生成する請求項５に記載のトレースデータ圧縮方式選定装置。
【請求項７】
前記結果解析部は、前記プログラムの実行において、トレース対象のデータである特定の値が複数回使用されるか否かを調べ、
前記圧縮方式決定部は、前記結果解析部において前記特定の値が複数回使用されると判断された場合、前記特定の値と該特定の値の識別情報とを対応付けて記憶する辞書を用いた圧縮方式を、前記圧縮回路における圧縮方式として決定する請求項１に記載のトレースデータ圧縮方式選定装置。
【請求項８】
前記結果解析部は、前記プログラムにおける特定の処理区間において使用される、トレース対象のデータのデータ幅の傾向を解析し、
前記圧縮方式決定部は、前記結果解析部において、特定の処理区間において特定のデータ幅のデータが使用されていると解析された場合、前記特定の処理区間に対応する前記プロセッサのプログラムカウンタの範囲において、データ出力幅を前記データ幅の傾向の解析結果に合わせて変更することで前記トレースデータを圧縮する圧縮方式を、前記圧縮回路における圧縮方式として決定する請求項１に記載のトレースデータ圧縮方式選定装置。
【請求項９】
前記結果解析部は、前記プログラムにおける特定の処理区間において、トレース対象のである特定量のデータが連続で使用されているか否かを解析し、
前記圧縮方式決定部は、前記結果解析部において前記特定量のデータが連続で使用されると解析された場合、前記特定量のデータを所定の圧縮アルゴリズムを用いて圧縮することで前記トレースデータを圧縮する圧縮方式を、前記圧縮回路における圧縮方式として決定する請求項１に記載のトレースデータ圧縮方式選定装置。
【請求項１０】
前記結果解析部は、前記プログラムにおける特定の処理区間における動作が一意であるか否かを解析し、
前記圧縮方式決定部は、前記結果解析部において特定の処理区間における動作が一意であると解析された場合、前記特定の処理区間における途中の情報のトレースデータとしての出力を省略することで前記トレースデータを圧縮する圧縮方式を、前記圧縮回路における圧縮方式として決定する請求項１に記載のトレースデータ圧縮方式選定装置。
【請求項１１】
前記トレースデータはタイムスタンプを含み、
前記結果解析部は、所定条件に合致するタイミング以外のタイミングでは前記タイムスタンプが省略可能であるか否かを判断し、
前記圧縮方式決定部は、前記結果解析部において前記タイムスタンプが省略可能と判断されると、所定条件に合致するタイミング以外のタイミングにおいて前記タイムスタンプを省略することで前記トレースデータを圧縮する圧縮方式を、前記圧縮回路における圧縮方式として決定する請求項１に記載のトレースデータ圧縮方式選定装置。
【請求項１２】
前記半導体装置において前記プログラムが実行された場合に取得される、前記トレースインタフェースから出力される圧縮されたトレースデータを、前記圧縮回路の圧縮方式に対応したデータ復元方式で復元するデータ復元部を更に有する請求項１に記載のトレースデータ圧縮方式選定装置。
【請求項１３】
前記トレースデータは、第１のタイプのトレースデータと、第２のタイプのトレースデータとを含み、
前記圧縮回路は、前記第１のタイプのトレースデータを圧縮する第１の圧縮回路と前記第２のタイプのトレースデータを圧縮する第２の圧縮回路を含む請求項１に記載のトレースデータ圧縮方式選定装置。
【請求項１４】
前記圧縮方式決定部は、前記プログラムの実行結果の解析結果、及び前記第１のタイプのトレースデータのシミュレーション結果の分析結果に基づいて前記第１の圧縮回路における圧縮方式を決定し、前記プログラムの実行結果の解析結果、及び前記第２のタイプのトレースデータのシミュレーション結果の分析結果に基づいて前記圧縮回路における圧縮方式を決定する請求項１３に記載のトレースデータ圧縮方式選定装置。
【請求項１５】
前記半導体装置は、前記第２のタイプのトレースデータの出力を停止させる条件が成立したか否かを判定する判定部を更に含み、
前記結果解析部は、特定の処理状態において前記第１のタイプのトレースデータの単位時間当たりの発生量がしきい値以上となるか否かを判断し、
前記圧縮方式決定部は、前記結果解析部において前記第１のタイプのトレースデータの単位時間当たりの発生量がしきい値以上となると判断された場合、前記判定部に設定される、前記特定の処理状態に対応した判定条件を更に生成する請求項１４に記載のトレースデータ圧縮方式選定装置。
【請求項１６】
前記判定条件は、特定の処理区間に対応した前記プロセッサのプログラムカウンタの範囲、及び所定の内部トリガの発生の少なくとも一方を含む請求項１５に記載のトレースデータ圧縮方式選定装置。
【請求項１７】
プロセッサと、該プロセッサがプログラムに従って動作することで発生するトレースデータを複数の圧縮方式から選択された圧縮方式で圧縮する圧縮回路と、該圧縮回路で圧縮されたトレースデータを出力するトレースインタフェースとを含む半導体装置上で動作させるプログラムを動作させ、前記プログラムの実行結果、及び前記トレースデータのシミュレーション結果を生成し、
前記プログラムの実行結果を解析し、
前記トレースデータのシミュレーション結果を分析し、
前記プログラムの実行結果の解析結果、及び前記トレースデータのシミュレーション結果の分析結果に基づいて前記圧縮回路における圧縮方式を決定し、
前記決定された圧縮方式で前記トレースデータを圧縮する回路として動作させるための圧縮回路データを生成するトレースデータ圧縮方式選定方法。
【請求項１８】
コンピュータ装置に、
プロセッサと、該プロセッサがプログラムに従って動作することで発生するトレースデータを複数の圧縮方式から選択された圧縮方式で圧縮する圧縮回路と、該圧縮回路で圧縮されたトレースデータを出力するトレースインタフェースとを含む半導体装置上で動作させるプログラムを動作させ、前記プログラムの実行結果、及び前記トレースデータのシミュレーション結果を生成し、
前記プログラムの実行結果を解析し、
前記トレースデータのシミュレーション結果を分析し、
前記プログラムの実行結果の解析結果、及び前記トレースデータのシミュレーション結果の分析結果に基づいて前記圧縮回路における圧縮方式を決定し、
前記決定された圧縮方式で前記トレースデータを圧縮する回路として動作させるための圧縮回路データを生成する処理を実施させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トレースデータ圧縮方式選定装置、方法、及びプログラムに関し、例えばプロセッサがプログラムに従って動作する半導体装置におけるプログラム開発に用いられ得るトレースデータ圧縮方式選定装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
特許文献１は、データ処理装置の被モニタ回路のアクティビティを示すトレースストリームを発生するためのトレース回路を開示する。特許文献１には、トレース回路が、複数の圧縮回路を有する構成が記載されている。トレース回路は、複数の圧縮回路を用いてトレースデータを圧縮した結果を比較し、圧縮効果が高い圧縮回路を選択する。特許文献１には、複数の圧縮回路をＦＰＧＡ（field-programmable gate array）などの再コンフィギュア可能なデバイスで構成することも記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−８７３４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１において、圧縮回路の選定は、リアルタイムに発生するトレース情報の解析結果に基づいて実施される。特許文献１では、トレース情報を解析するためのテスト動作期間が必要であり、被モニタ回路のプログラム動作の傾向が変わった場合に、その変化に対応するまでに時間がかかる。特に近年では、制御用途のＭＣＵ（Micro Controller Unit）は複数の制御対象を同時に制御する場合がある。その場合、動作プログラムが頻繁に変化し、動作プログラムが変化すると、それに伴って発生するトレース情報のデータ傾向が変化する。特許文献１では、テスト動作期間においてトレース情報をリアルタイムに解析するため、例えばプログラムが変化した直後に、トレースデータを、そのトレースデータに適した圧縮方式で圧縮できないという問題がある。
【０００５】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００６】
一実施の形態によれば、トレースデータ圧縮方式選定装置は、プロセッサを含む半導体装置上で動作させるプログラムをシミュレートし、プログラムの実行結果、及びトレースデータのシミュレーション結果に基づいて、半導体装置に搭載される圧縮回路における圧縮方式を決定するものである。
【発明の効果】
【０００７】
前記一実施の形態によれば、半導体装置においてプログラムを実行した場合に発生するトレースデータを、そのトレースデータに適した圧縮方式で圧縮することができる。
【図面の簡単な説明】
【０００８】
【図１】実施形態１に係る圧縮方式選定装置を含むシステムを示すブロック図。
【図２】圧縮回路最適化部の構成例を示すブロック図。
【図３】圧縮回路最適化部における圧縮方式決定の動作手順を示すフローチャート。
【図４】実施形態２に係る圧縮方式選定装置を含むシステムを示すブロック図。
【図５】ＭＣＵにおけるプログラムのデバッグ時の動作手順を示すフローチャート。
【図６】実施形態２におけるＭＣＵの動作例を示すタイミングチャート。
【発明を実施するための形態】
【０００９】
本発明の実施の形態の説明に先立って、本発明者が検討した事項を説明する。一般に、トレースデータを出力する機能を有するＭＣＵ（Micro Controller Unit）は、内部で発生したトレース情報（トレースデータ）に対し、ＰＣ（Program Counter）の遷移やＲＡＭ（Random Access Memory）データへの読み書きなどの事前に想定したトレースデータの種類、又は汎用的に効果が見込める圧縮回路をハードウェア構成として搭載する。汎用的に用いられるデータ圧縮の手法には、例えば、アドレスの相対値での出力（差分出力）、及び上位ビットが未使用などの場合におけるデータ値の上位ビット値の省略が含まれる。また、汎用的に用いられるデータ圧縮の手法として、トレース対象情報の範囲を指定し、トレース情報のうち、指定された範囲の必要データのみを取得する手法がある。
【００１０】
トレースデータの内容は、ユーザ環境の様々な要因や、選択肢の組み合わせに応じて変化する。トレースデータの内容は、例えば、プログラムや適用アプリケーションに依存してその傾向が変化する。また、トレースデータの内容は、取得したいデータの種類や、測定対象とするデータ発生元のブロックに応じてその傾向が変化する。これら全ての条件に対して、事前に想定した固定ハードウェア構成のみで対応することは困難である。
【００１１】
特許文献１では、トレース回路が複数の圧縮回路を有することで、複数の圧縮方式に対応することができる。また、再コンフィギュア可能なデバイスで圧縮回路を構成することで、複数の圧縮方式に対応することができる。しかしながら、前述のように、特許文献１では、トレース情報を解析するためのテスト動作期間が必要であり、被モニタ回路のプログラム動作の傾向が変わった場合に、その変化に対応するまでに時間がかかるという問題がある。従って、例えばプログラムが変化した直後にトレースデータ量が増加した場合に対応することができない可能性がある。また、特許文献１では、発生したトレースデータに対する解析による圧縮が主になるため、ヘッダ情報や類似ビットの削減など、前後データの相関性に対するようなアルゴリズムは限定される。
【００１２】
以下、図面を参照しつつ、上記課題を解決するための手段を適用した実施形態を詳細に説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Central Processing Unit）、メモリ、又はその他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、又はそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、何れかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１３】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスク）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、及び半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ）を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の優先通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１４】
以下の実施の形態においては便宜上その必要があるときは、複数のセクション又は実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部又は全部の変形例、応用例、詳細説明、又は補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１５】
さらに、以下の実施の形態において、その構成要素（動作ステップ等も含む）は、特に明示した場合及び原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、又は位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等（個数、数値、量、範囲等を含む）についても同様である。
【００１６】
［実施形態１］
図１は、実施形態１に係る圧縮方式選定装置を含むシステムを示す。このシステム１００は、ＭＣＵ１０１、シミュレーション装置１０２、及びデバッグツール１０５を有する。シミュレーション装置１０２は、例えばコンピュータ装置を用いて構成される。ＭＣＵ（半導体装置）１０１は、例えば自動車などの制御対象機器の制御に用いられる制御用マイクロコントローラである。シミュレーション装置１０２は、例えばＭＣＵ１０１を動作させるためのプログラム２０１の開発時に使用される。デバッグツール１０５は、例えばＭＣＵ１０１がプログラム２０１に従って機器の制御を行っている場合に、ＭＣＵ１０１から圧縮されたトレースデータを取得する。
【００１７】
［ＭＣＵ］
ＭＣＵ１０１は、ＣＰＵ１１１、ＲＯＭ１１２、ＲＡＭ１１３、圧縮回路１１４、及びトレース出力インタフェース１１５を有する。ＲＯＭ１１２は、例えばデータフラッシュなどの不揮発性記憶装置であり、プログラム２０１を含むデータを記憶する。ＣＰＵ１１１は、プロセッサであり、ＲＯＭ１１２からプログラム２０１を読み出し、読み出したプログラム２０１に従って動作する。ＲＡＭ１１３は揮発性メモリであり、ＣＰＵ１１１は、プログラム２０１に従った動作において、ＲＡＭ１１３にデータを記憶し、或いはＲＡＭ１１３からデータを読み出す。ＭＣＵ１０１は、ＤＭＡ（Direct Memory Access）転送を制御する、図示しないＤＭＡ回路（ＤＭＡコントローラ）などを含んでいてもよい。
【００１８】
圧縮回路１１４には、ＣＰＵ１１１の動作情報、及び／又はＲＡＭ１１３の動作情報が、トレース対象のデータ（トレースデータ）として入力される。圧縮回路１１４は、複数の圧縮方式から選択された圧縮方式でトレースデータを圧縮し、圧縮トレースデータを生成する。ここで、圧縮とは、あるデータについて、そのデータを、復元可能な態様で元のデータサイズよりも小さいデータサイズのデータに変換（置換）することを意味する。トレース出力インタフェース１１５は、圧縮トレースデータを出力する。
【００１９】
圧縮回路１１４に適用可能な複数の圧縮方式は、例えばデータ値の頻出値を辞書化し、データ値を辞書における識別番号に変換する方式を含む。あるいは、複数の圧縮方式は、例えばプログラムのシミュレーション結果をデータベースとして情報参照を行う方式を含む。この方式では、各関数に対して識別情報を振り分けて管理し、一意にデータ順番が決まるデータをシミュレーションで取得して識別情報と対応付けておくことで、一意にデータ順番が決まるデータのトレースデータのとしての出力が省略可能である。複数の圧縮方式は、例えば、プログラム２０１が範囲で使用するデータを検出し、トレースとして出力される情報範囲を特定し、必要なアドレス情報のビット長を決定することで不要ヘッダ情報を除去する方式を含む。
【００２０】
本実施形態では、圧縮回路１１４は、例えばＦＰＧＡなどのＰＬＤ（programmable logic device）を用いた再構成可能な回路（リコンフィギュラブル回路）として構成される。圧縮回路１１４における回路構成は、圧縮回路データ２０２に基づいて規定される。圧縮回路データ２０２は、圧縮回路１１４のリコンフィギュラブル回路を、トレースデータを圧縮する回路として動作させるための構成情報を含む。
【００２１】
［シミュレーション装置］
シミュレーション装置１０２は、ＭＣＵ１０１上で動作させる解析対象のプログラム２０１の動作を解析する動作解析ツールである。シミュレーション装置１０２は、ＭＣＵ１０１におけるトレースデータの圧縮方式を決定するトレースデータ圧縮方式選定装置として機能する。シミュレーション装置１０２は、例えばＭＣＵ１０１と共に、ＭＣＵ１０１の製造メーカから提供され得る。あるいは、シミュレーション装置１０２は、ＭＣＵ１０１の製造メーカとは異なるサードパーティから提供されてもよい。
【００２２】
シミュレーション装置１０２は、圧縮回路最適化部１２０と、データ復元部１４０とを含む。圧縮回路最適化部１２０は、プログラム２０１とログ取得条件２０３とに基づいてシミュレーションを行い、そのシミュレーション結果を用いて、圧縮回路１１４における圧縮方式を決定する。ＭＣＵ１０１のシミュレーションには、例えば既存のシミュレーション手法が用いられる。圧縮回路最適化部１２０は、圧縮方式を決定すると、圧縮回路１１４のリコンフィギュラブル回路を決定した圧縮方式で圧縮を行う回路として動作させるための圧縮回路データ２０２を生成する。また、圧縮回路最適化部１２０は、決定した圧縮方式をデータ復元部１４０に通知する。
【００２３】
デバッグツール１０５は、例えばＭＣＵ１０１にてプログラム２０１が実行されているとき、トレース出力インタフェース１１５を通じて圧縮トレースデータを取得する。デバッグツール１０５は、取得した圧縮トレースデータをデータ復元部１４０に出力する。データ復元部１４０は、圧縮回路１１４における圧縮方式に対応した復元方式で圧縮トレースデータを復元する。データ復元部１４０は、復元されたトレースデータを含む実行ログ２０４を、ＭＣＵ１０１におけるプログラム２０１に実行ログとして出力する。
【００２４】
［圧縮回路最適化部］
図２は、圧縮回路最適化部１２０を示す。圧縮回路最適化部１２０は、対象ＭＣＵシミュレータ部１２１、結果解析部１２２、及び圧縮回路生成部１２５を有する。対象ＭＣＵシミュレータ部（シミュレータ）１２１は、解析対象のプログラム２０１を動作させ、ターゲットであるＭＣＵ１０１の動作をシミュレートする。対象ＭＣＵシミュレータ部１２１は、例えばターゲットとなるＭＣＵ１０１が指定されると、指定されたＭＣＵ１０１に搭載されるＣＰＵ１１１の動作をシミュレートする。対象ＭＣＵシミュレータ部１２１は、プログラム２０１の実行結果、及びトレースデータのシミュレーション結果を生成する。対象ＭＣＵシミュレータ部１２１は、シミュレーションでは、ログ取得条件２０３に従ってトレースデータのシミュレーション結果を生成する。ログ取得条件２０３は、プログラム２０１がＭＣＵ１０１で実行される場合に、ＭＣＵ１０１に入力されると想定される入力情報を含む。
【００２５】
結果解析部１２２は、プログラム動作解析部１２３、及びトレースデータ分析部１２４を含む。プログラム動作解析部１２３は、シミュレーションにおけるプログラム２０１の実行結果を解析する。プログラム動作解析部１２３は、例えば、対象ＭＣＵシミュレータ部１２１の動作結果に基づいて、プログラム２０１の内部状態の遷移やシーケンス性などを解析し、特定のデータが決定すればシミュレーション結果のみから情報が復元可能なＰＣ範囲を抽出する。あるいは、プログラム動作解析部１２３は、プログラム２０１の実行において頻出するデータや内部アドレスなどを抽出する。
【００２６】
トレースデータ分析部１２４は、トレースデータのシミュレーション結果を分析する。トレースデータ分析部１２４は、例えば対象ＭＣＵシミュレータ部１２１の動作結果として、ログ取得条件２０３で指定された条件に従ってトレースデータを分析する。圧縮回路生成部（圧縮方式決定部）１２５は、結果解析部１２２におけるプログラム２０１の実行結果の解析結果、及びトレースデータのシミュレーション結果の分析結果に基づいて、圧縮回路１１４（図１を参照）における圧縮方式を決定する。圧縮回路生成部１２５は、例えば事前に想定した複数の圧縮方式のうち、データの削減効果が高い圧縮方式を、圧縮回路１１４における圧縮方式として決定する。圧縮回路生成部１２５は、圧縮回路１１４を決定した圧縮方式でトレースデータを圧縮する回路として動作させるための圧縮回路データ２０２を生成する。
【００２７】
圧縮回路ライブラリ１３０は、トレースデータの圧縮に適用可能な圧縮アルゴリズム（圧縮方式）を実現するための基本回路情報を記憶する。圧縮回路ライブラリ１３０は、例えば圧縮回路１１４における複数の圧縮方式のそれぞれに対応するＦＰＧＡなどの構成情報を記憶する。圧縮回路ライブラリ１３０は、例えば圧縮方式Ａに対応した圧縮回路構成情報Ａ１３１、圧縮方式Ｂに対応した圧縮回路構成情報Ｂ１３２、及び圧縮方式Ｃに対応した圧縮回路構成情報Ｃ１３３を記憶する。圧縮回路生成部１２５は、圧縮回路ライブラリ１３０から、決定した圧縮方式に対応する構成情報を取得し、圧縮回路データ２０２を生成する。圧縮回路生成部１２５は、例えば決定した圧縮方式が圧縮方式Ａであれば、圧縮方式Ａに対応した圧縮回路構成情報Ａ１３１を含む圧縮回路データ２０２を生成する。
【００２８】
［動作手順］
図３は、圧縮回路最適化部１２０における圧縮方式の決定の動作手順を示す。対象ＭＣＵシミュレータ部１２１は、ＭＣＵ１０１上で動作させるプログラム２０１の動作を実行し、ログ取得条件に基づいて、プログラム２０１の実行時にＭＣＵ１０１から取得されるトレースデータのシミュレーション結果を生成する（ステップＳ１）。プログラム動作解析部１２３は、プログラム２０１の実行結果を解析する（ステップＳ２）。また、トレースデータ分析部１２４は、トレースデータのシミュレーション結果を分析する（ステップＳ３）。圧縮回路生成部１２５は、ステップＳ２及びＳ４の解析結果及び分析結果（これらをまとめて単に解析結果とも呼ぶ）に基づいて、圧縮回路における圧縮方式を決定する（ステップＳ４）。
【００２９】
結果解析部１２２（プログラム動作解析部１２３及びトレースデータ分析部１２４）は、ステップＳ２及びＳ３において、例えばプログラム２０１の実行において、トレース対象のデータである特定の値が複数回使用されるか否かを調べてもよい。制御用のＭＣＵ１０１は、周辺機能の制御のために、レジスタに特定の設定値を設定（格納）することが多い。その場合、プログラム中に多く使用されている設定値に対して辞書式の圧縮方式の適用が可能である。特定の値の使用が多い場合、圧縮回路生成部１２５は、ステップＳ４において、特定の値とその特定の値の識別情報とを対応付けて記憶する辞書を用いた圧縮方式を、圧縮回路における圧縮方式として決定してもよい。
【００３０】
結果解析部１２２は、ステップＳ２及びＳ３において、プログラム２０１における特定の処理区間において使用される、トレース対象のデータのデータ幅の傾向を解析してもよい。特定の処理区間、つまり、特定のＰＣ番地範囲において、使用されるデータ幅の傾向を解析することで、トレースデータに必要なビット幅などの限定が可能となる。例えばデータが６４ビットで表される場合に、特定の処理区間において３２ビットのデータ幅でデータが使用されていることがわかれば、データ幅を３２ビットに変更することで、トレースデータのデータ量の削減が可能である。結果解析部１２２は、特定の処理区間において特定のデータ幅のデータが使用されていると解析した場合、その旨を圧縮回路生成部１２５に通知する。その場合、圧縮回路生成部１２５は、ステップＳ４において、その特定の処理区間に対応するＣＰＵ１１１のプログラムカウンタ（ＰＣ）の範囲においてデータ出力幅をデータ幅の傾向の解析結果に合わせて変更することでトレースデータを圧縮する圧縮方式を、圧縮回路における圧縮方式として決定してもよい。
【００３１】
結果解析部１２２は、ステップＳ２及びＳ３において、プログラム２０１における特定の処理区間において、トレース対象のであるデータが特定量だけ連続で使用されているか否かを解析してもよい。特定処理区間において特定量のデータが連続で使用される場合、例えば一定量以上のデータに有用な圧縮アルゴリズムを用いて連続するデータを１つのデータに圧縮することで、個々のデータを別々にトレースデータとして出力する場合に比べて、データサイズを削減できる。結果解析部１２２は、特定の処理区間において特定量のデータが連続で使用されていると解析した場合、その旨を圧縮回路生成部１２５に通知する。その場合、圧縮回路生成部１２５は、ステップＳ４において、特定量のデータを所定の圧縮アルゴリズムを用いて圧縮することでトレースデータを圧縮する圧縮方式を、圧縮回路における圧縮方式として決定してもよい。
【００３２】
結果解析部１２２は、ステップＳ２及びＳ３において、プログラム２０１における特定の処理区間における動作が一意であるか否かを解析してもよい。動作が一意の場合には、特定の処理区間の途中の情報はシミュレーションと等価となるため、トレースとしての出力を省略することが可能となる。例えば分岐であれば、分岐判定の結果のみを出力対象とし、その他の情報を削減できる。データについては、ＭＣＵ１０１の外部でされた情報、例えば外部通信の情報やタイミング情報のみを出力対象とし、他の情報を削減できる。結果解析部１２２は、特定の処理区間における動作が一意であると解析した場合、その旨を圧縮回路生成部１２５に通知する。その場合、圧縮回路生成部１２５は、ステップＳ４において、特定の処理区間における途中の情報のトレースデータとしての出力を省略することでトレースデータを圧縮する圧縮方式を、圧縮回路における圧縮方式として決定してもよい。
【００３３】
結果解析部１２２は、ステップＳ２及びＳ３において、所定条件に合致するタイミング以外のタイミングでは、トレースデータに付加されるタイムスタンプが省略可能であるか否かを判断してもよい。特定タイミングでのみタイムスタンプを取得すればよい場合、例えば特定のメモリ番地や、特定のＰＣ番地などの指定条件でのみ情報を出力すればよく、他のタイミングについてはシミュレーションを用いて再現可能である。結果解析部１２２は、タイムスタンプが省略可能と判断した場合、その旨を圧縮回路生成部１２５に通知する。その場合、圧縮回路生成部１２５は、ステップＳ４において、所定条件に合致するタイミング以外のタイミングにおいてタイムスタンプを省略することでトレースデータを圧縮する圧縮方式を、圧縮回路における圧縮方式として決定する。
【００３４】
圧縮回路生成部１２５は、例えば上記した手法を用いて、シミュレーション結果から、ＭＣＵ１０１の圧縮回路１１４においてどのような圧縮手法を採用すればトレースデータに対する圧縮の効果が高いかを判断し、圧縮方式を決定する。圧縮回路生成部１２５は圧縮回路１１４を構成するＦＰＧＡなどのＰＬＤを、ステップＳ４で決定した圧縮方式でトレースデータを圧縮する回路として動作させるための圧縮回路データ２０２を生成する（ステップＳ５）。圧縮回路生成部１２５は、ステップＳ５では、シミュレーションの解析結果に基づいて圧縮方式とその圧縮方式におけるパラメータとを決定し、回路の構成情報とパラメータとを含む圧縮回路データ２０２を生成する。
【００３５】
ここで、圧縮回路生成部１２５は、ステップＳ４において、異なる２以上の処理区間に対して、異なる圧縮方式を決定してもよい。例えば、ある特定の処理区間に対しては辞書式で圧縮を行う圧縮方式を決定し、別の処理区間に対しては特定量のデータを所定の圧縮アルゴリズムで圧縮する圧縮方式を決定してもよい。その場合、圧縮回路データ２０２は、複数の圧縮方式に対応した複数の構成情報を含んでいてもよい。圧縮回路１１４は、ＭＣＵ１０１においてプログラム２０１が実行されている場合は、例えばＰＣ番地に応じて使用する圧縮方式を切り替えてもよい。圧縮回路１１４において使用できる圧縮方式の数は、例えば圧縮回路１１４に用いられるＦＰＧＡのゲート数などに依存する。
【００３６】
［データ復元］
圧縮回路生成部１２５は、ステップＳ４で決定した圧縮方式をデータ復元部１４０に通知する。データ復元部１４０は、ＭＣＵ１０１にてプログラム２０１が実行されているとき、デバッグツール１０５を介して、圧縮回路１１４にて圧縮された圧縮トレースデータを取得する。データ復元部１４０は、圧縮トレースデータに対して、圧縮回路１１４に設定された圧縮方式及びパラメータに対応する復元方式で復元処理を行い、実行ログ２０４を生成する。データ復元部１４０が復元処理を行うことで、圧縮トレースデータが、ユーザが確認できる程度の粒度の情報に復元される。データ復元において、例えば一意性がある処理区間のデータが省略されている場合は再度シミュレーションを行い、省略されたデータをシミュレーション結果から取得して実行ログ２０４に含めてもよい。
【００３７】
［まとめ］
本実施形態では、圧縮回路最適化部１２０は、ＭＣＵ１０１上で動作させるプログラム２０１に対してシミュレーションを行い、発生するトレースデータの傾向などを解析する。本実施形態では、シミュレーションを用いて、実際にＭＣＵ１０１にてプログラム２０１を動作させる前の段階で、ＭＣＵ１０１において発生するトレースデータの傾向などを把握することができる。ＭＣＵ１０１において、圧縮回路１１４は、複数の圧縮方式から選択された圧縮方式でトレースデータを圧縮することが可能に構成される。圧縮回路最適化部１２０は、ＭＣＵ１０１において発生するトレースデータの傾向などに基づいて、圧縮回路１１４にてどの圧縮方式で圧縮を行わせるかを決定する。このようにすることで、ＭＣＵ１０１において、プログラム２０１の実行時に発生するトレースデータを、そのトレースデータに適した圧縮方式で圧縮することができる。トレース出力インタフェース１１５から出力される圧縮トレースデータのデータ量を削減することで、トレース出力インタフェース１１５が帯域不足となってトレースデータの取得漏れが生じる事態を回避することができる。
【００３８】
本実施形態では、圧縮回路１１４には、ＦＰＧＡなどのリコンフィギュラブル回路が用いられる。圧縮回路１１４にリコンフィギュラブル回路を用いることで、圧縮回路１１４における圧縮方式を、圧縮回路データ２０２に応じて変更することができる。本実施形態では、圧縮回路データ２０２に応じて圧縮回路１１４における圧縮方式を選択できるため、ＭＣＵ１０１にて実行されるプログラム２０１の特性などに応じて、プログラム２０１の開発を行うユーザ側で、トレースデータの圧縮方式を変更することができる。本実施形態では、プログラムや取得したトレースデータに応じて、例えばマルチコアに最適化、或いはシングルコアに最適化した最適化手法で、圧縮回路１１４の圧縮方式の選定が可能である。また、本実施形態では、データアクセス取得に最適化、ＰＣ取得に最適化、或いは特定制御パターンに最適化した最適化手法で、圧縮回路１１４の圧縮方式を選定することができる。
【００３９】
例えば、一般的なＭＣＵでは、事前に想定された一般的なデータパターンに対してデータ圧縮が可能となる圧縮回路が搭載される。その場合、圧縮回路における圧縮方式は固定されるため、あるプログラムの実行時はトレースデータの圧縮効果が高くても、別のプログラムの実行時はトレースデータの圧縮効果が低い場合があった。また、取得したいトレースデータのデータ量が多い場合、ユーザは取得対象を絞るなど、ＭＣＵの内部で発生するトレースデータを考慮した設定が必要となる。その場合、トレースデータ取得の難易度が高く、実際にＭＣＵを動作させて確認しながらトレースデータの取得が可能であるか否かを確認する必要があった。本実施形態では、シミュレーションを用いて事前にトレースデータのデータ量を見積もることができ、生成される情報量などを想定しつつ設定を行うことが可能となり、トレースデータのデータ取得の難易度を下げることができる。また、シミュレーションによるデータの復元を行うことで、出力する圧縮トレースデータを最低限のデータとすることができ、圧縮トレースデータでは不足するデータを、シミュレーションから得ることができる。
【００４０】
［実施形態２］
次いで、実施形態２を説明する。図４は、実施形態２に係る圧縮方式選定装置を含むシステムを示す。このシステム１００ａは、図１に示される実施形態１で説明したシステム１００とは、ＭＣＵ１０１ａの構成が異なる。本実施形態において、トレースデータは２つのタイプのデータを含む。２つのタイプのトレースデータは、例えばデータの重要度が異なる。ＭＣＵ１０１ａの圧縮回路１１４ａは、一方のタイプのトレースデータを圧縮する圧縮回路１１６と、他方のタイプのトレースデータを圧縮する圧縮回路１１７とを含む。また、圧縮回路１１４ａは、判定部１１８を含む。その他の構成は、実施形態１と同様でよい。
【００４１】
本実施形態において、ログ取得条件２０３は、トレースデータの生成（取得）条件として、複数の条件を指定する。トレースデータの取得条件は、例えば条件Ｐと条件Ｑとを含む。条件Ｐは、必ず取得したいトレースデータを指定するための条件を示し、条件Ｑは、可能な範囲で取得したいトレースデータを指定するための条件を示す。圧縮回路１１６は、条件Ｐで指定される重要度が高いトレースデータを圧縮するための圧縮回路（回路部分）である。圧縮回路１１７は、条件Ｑで指定される重要度が低いトレースデータを圧縮するための圧縮回路（回路部分）である。圧縮回路１１６及び１１７は、ＦＰＧＡなどのリコンフィギュラブル回路で実現される。以下、便宜上、条件Ｑで指定され、圧縮回路１６で圧縮されるトレースデータをＭｕｓｔデータとも呼ぶ。また、条件Ｐで指定され、圧縮回路１１７で圧縮されるトレースデータをＷａｎｔデータとも呼ぶ。
【００４２】
通常時、圧縮回路１１６及び１１７は、それぞれ対応するタイプのトレースデータを圧縮し、トレース出力インタフェース１１５は、圧縮されたＭｕｓｔデータ及びＷａｎｔデータを出力する。判定部１１８は、Ｗａｎｔデータの出力を停止させる条件が成立したか否かを判定する。判定部１１８の回路構成、及び判定部１１８における判定条件は、圧縮回路データ２０２で指定される。判定部１１８は、判定条件が成立すると判定した場合は、例えば圧縮回路１１７を停止させることで、圧縮回路１１７が圧縮するＷａｎｔデータのトレース出力インタフェース１１５からデバッグツール１０５への出力を抑制する。この場合、トレース出力インタフェース１１５は、圧縮されたＭｕｓｔデータをデバッグツール１０５に出力する。
【００４３】
本実施形態において、対象ＭＣＵシミュレータ部１２１（図２を参照）は、Ｍｕｓｔデータのシミュレーション結果と、Ｗａｎｔデータのシミュレーション結果とを生成する。結果解析部１２２は、ＭｕｓｔデータとＷａｎｔデータとのそれぞれに対して解析などを行う。圧縮回路生成部１２５は、プログラム２０１の実行結果の解析結果、及びＭｕｓｔデータのシミュレーション結果の分析結果に基づいて、圧縮回路１１６の圧縮方式を決定する。また、圧縮回路生成部１２５は、プログラム２０１の実行結果の解析結果、及びＷａｎｔデータのシミュレーション結果の分析結果に基づいて、圧縮回路１１７の圧縮方式を決定する。
【００４４】
結果解析部１２２は、更に、特定の処理状態においてＭｕｓｔデータの単位時間当たりの発生量がしきい値以上となるか否かを判断する。結果解析部１２２は、特定の処理状態においてＭｕｓｔデータの単位時間当たりの発生量がしきい値以上となると判断した場合、その旨を圧縮回路生成部１２５に通知する。その場合、圧縮回路生成部１２５は、Ｍｕｓｔデータの単位時間当たりの発生量がしきい値以上となる特定の処理状態に対応した判定条件を更に生成する。本実施形態において、圧縮回路生成部１２５は、判定条件生成部としても機能する。
【００４５】
判定条件は、例えば特定の処理区間に対応したＣＰＵ１１１のＰＣの範囲を含む。判定条件は、例えばＤＭＡや外部からの信号の入力などを契機とする内部トリガの生成を含んでいてもよい。圧縮回路生成部１２５は、圧縮回路データ２０２に生成した判定条件を含める。圧縮回路１１４ａにおいて、判定部１１８において判定条件が成立すると判定された場合に圧縮回路１１７を停止することで、Ｍｕｓｔデータの単位時間当たりの発生量がしきい値以上となる特定の処理状態において、Ｗａｎｔデータの出力が抑制される。
【００４６】
［動作手順］
図５は、ＭＣＵ１０１におけるプログラムのデバッグ時の動作手順を示す。ＣＰＵ１１１は、ＲＯＭ１１２からプログラム２０１を読み出し、実行する（ステップＳ１１）。判定部１１８は、圧縮回路データ２０２で示される判定条件が成立しているか否かを判定する（ステップＳ１２）。判定部１１８は、ステップＳ１２では、例えばＣＰＵ１１１のＰＣ番地が、判定条件で示される範囲に含まれる場合、判定条件が成立すると判定する。あるいは、判定部１１８は、図示しないＤＭＡ回路に所定アドレス範囲のＤＭＡ転送が要求された場合に、判定条件が成立すると判定する。
【００４７】
圧縮回路１１６及び１１７は、判定部１１８において判定条件が成立しないと判定された場合、それぞれＭｕｓｔデータ及びＷａｎｔデータを圧縮する（ステップＳ１３）。一方、判定部１１８において判定条件が成立していると判定された場合、圧縮回路１１７は停止され、圧縮回路１１６はＭｕｓｔデータを圧縮する（ステップＳ１４）。
【００４８】
トレース出力インタフェース１１５は、圧縮回路１１４ａで圧縮されたトレースデータをデバッグツール１０５に出力する。トレース出力インタフェース１１５は、ステップＳ１５では、判定部１１８において判定条件が成立しないと判定された場合は、ステップＳ１３で圧縮されたＭｕｓｔデータ及びＷａｎｔデータを出力する。トレース出力インタフェース１１５は、判定部１１８において判定条件が成立すると判定された場合は、ステップＳ１４で圧縮されたＭｕｓｔデータを出力し、Ｗａｎｔデータは出力しない。
【００４９】
［動作例］
図６は、動作例を示す。図６において、横軸はＰＣ番地を示す。例えば圧縮回路最適化部１２０のトレースデータ分析部１２４は、プログラムカウンタの値がＰＣ１からＰＣ２で規定される処理区間において、Ｍｕｓｔデータのデータ量が増大するという分析結果を生成する。その場合、圧縮回路生成部１２５は、ＰＣ番地がＰＣ１からＰＣ２で定義される特定処理区間の範囲に含まれるか否かを判定条件として生成する。ＰＣ１からＰＣ２で定義される特定処理区間の範囲は、例えばある関数の処理区間に対応する。
【００５０】
ＭＣＵ１０１は、プログラム２０１のデバッグ時、ＰＣ番地が特定処理区間の範囲に含まれていない場合は、トレース出力インタフェース１１５からＭｕｓｔデータとＷａｎｔデータとを出力する。ＭＣＵ１０１は、特定の関数が呼び出されてＰＣ番地がＰＣ１になると、Ｗａｎｔデータの出力（圧縮）を停止し、トレース出力インタフェース１１５からＭｕｓｔデータのみを出力する。ＭＣＵ１０１は、処理が進行し、ＰＣ番地がＰＣ２よりも大きくなると、Ｗａｎｔデータの出力（圧縮）の抑止を解除し、トレース出力インタフェース１１５からＭｕｓｔデータ及びＷａｎｔデータを出力する。
【００５１】
［まとめ］
本実施形態では、トレースデータを重要度に応じて２つのタイプのトレースデータに分類する。また、本実施形態では、圧縮回路生成部１２５は、プログラム２０１のシミュレーション結果を用いて、短時間に急激にＭｕｓｔデータのデータ量が増加するなど、Ｍｕｓｔデータの出力が多くなる状態を判定するための判定条件を生成する。ＭＣＵ１０１は、判定部１１８において判定条件が成立していないと判定されている場合は、トレース出力インタフェース１１５からＭｕｓｔデータ及びＷａｎｔデータを出力する。ＭＣＵ１０１は、判定部１１８において判定条件が成立すると判定された場合は、トレース出力インタフェース１１５から２つのタイプのトレースデータのうちＭｕｓｔデータのみを出力し、Ｗａｎｔデータの出力を停止する。
【００５２】
本実施形態では、判定部１１８において例えば短時間に急激にＭｕｓｔデータのデータ量が増加する条件が成立すると判定された場合、重要度が高いＭｕｓｔデータのみがトレース出力インタフェース１１５から出力され、重要度の低いＷａｎｔデータの出力が抑止される。一方、判定部１１８において判定条件が成立したと判定されておらず、従ってトレース出力インタフェース１１５の帯域に余裕が見込まれる場合は、トレース出力インタフェース１１５からＭｕｓｔデータとＷａｎｔデータとの双方が出力される。このようにすることで、帯域に余裕がある場合はＭｕｓｔデータとＷａｎｔデータとの取得が可能であり、双方のタイプのトレースデータを利用してデバッグを行うことができる。急激にＭｕｓｔデータが増えることが見込まれる状況では、Ｗａｎｔデータの出力を抑止することで、Ｍｕｓｔデータの取りこぼしを防ぐことができる。
【００５３】
関連技術において、ＭＣＵに、トレースデータを一時的に記憶するバッファを配置し、短時間にトレースデータが増加した場合には、バッファにトレースデータを記憶することで、トレースデータの取りこぼしを抑制する技術は知られている。しかしながら、高速動作するＭＣＵにおいてトレースデータの取りこぼしを抑制するためには、バッファも高速で動作する必要があり、また、バッファの容量が増えるとレイアウトなどに影響するため、無尽蔵にバッファの搭載量を増やすことはできない。関連技術においては、バッファの空き容量に応じて取得するトレースデータを制御する技術も知られている。しかしながら、急激にトレースデータが増加した場合、内部動作の遅延などにより、データのバッファへの格納を止める前に、バッファオーバフローが発生する可能性がある。
【００５４】
関連技術では、実機動作として、どのタイミングでデータ量が最大化されるかを判断することは困難である。このため、常にトレースデータのデータ量の増加に対応できるように、バッファや通信速度を確保する必要がある。従って、関連技術においては、トレース出力インタフェースの帯域が空いている場合でも、余分なデータをトレースデータとして出力することはできない。本実施形態では、シミュレーション結果を用いてトレース出力インタフェース１１５のデータ帯域が空いているタイミングを把握することが可能であり、データ帯域が空いているタイミングにおいて、解析には必須ではないが参考になるデータ（Ｗａｎｔデータ）を出力することができる。Ｗａｎｔデータをデバッグに利用できることで、ＭＣＵ１０１の内部動作の可視性が向上できる。
【００５５】
［変形例］
なお、上記各実施形態では、圧縮回路１１４がＦＰＧＡなどのＰＬＤを用いて構成される例を説明したが、これには限定されない。圧縮回路１１４は、複数の圧縮方式でトレースデータの圧縮を行う複数の圧縮回路（基本回路）を含む構成であってもよい。その場合、圧縮回路生成部１２５が、圧縮回路１１４において、どの基本回路を用いて圧縮するかを示すパラメータを生成し、そのパラメータを含む圧縮回路データ２０２を生成してもよい。圧縮回路１１４が、圧縮回路データ２０２に含まれるパラメータを参照して圧縮動作を変更することで、プログラム２０１に応じた圧縮方式でトレースデータを圧縮できる。
【００５６】
実施形態２では、圧縮回路生成部１２５が圧縮回路１１６及び１１７の圧縮方式を決定して圧縮回路データ２０２を生成する例を説明したが、これには限定されない。実施形態２において、圧縮回路１１６及び１１７の圧縮方式は固定されていてもよい。その場合でも、判定部１１８が判定条件が成立するか否かに応じて出力されるトレースデータのタイプを制御することで、帯域に余裕がある場合には重要度が高いデータと低いデータとをトレースデータとして取得することができる。また、帯域に余裕がない場合には重要度が高いデータのみをトレースデータとして取得できる。
【００５７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【００５８】
例えば、上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【００５９】
［付記１］
プロセッサと、該プロセッサがプログラムに従って動作することで発生するトレースデータを複数の圧縮方式から選択された圧縮方式で圧縮する圧縮回路と、該圧縮回路で圧縮されたトレースデータを出力するトレースインタフェースとを含む半導体装置において動作させるプログラムを動作させ、前記プログラムの実行結果、及び前記トレースデータのシミュレーション結果を生成するシミュレータと、
前記プログラムの実行結果を解析し、前記トレースデータのシミュレーション結果を分析する結果解析部と、
前記プログラムの実行結果の解析結果、及び前記トレースデータのシミュレーション結果の分析結果に基づいて前記圧縮回路における圧縮方式を決定し、前記圧縮回路を前記決定した圧縮方式で前記トレースデータを圧縮する回路として動作させるための圧縮回路データを生成する圧縮方式決定部とを備えるトレースデータ圧縮方式選定装置。
【００６０】
［付記２］
前記シミュレータは、ログ取得条件に従って前記トレースデータのシミュレーション結果を生成する付記１に記載のトレースデータ圧縮方式選定装置。
【００６１】
［付記３］
前記ログ取得条件は、前記プログラムが前記半導体装置で実行される場合に、前記半導体装置に入力されると想定される入力情報を含む付記２に記載のトレースデータ圧縮方式選定装置。
【００６２】
［付記４］
前記半導体装置は、機器の制御に用いられるマイクロコントローラユニットである付記１に記載のトレースデータ圧縮方式選定装置。
【００６３】
［付記５］
前記圧縮回路は、再構成可能デバイスを用いて構成されており、
前記圧縮回路データは、前記再構成可能デバイスを、前記決定した圧縮方式で前記トレースデータを圧縮する回路として動作させるための構成情報を含む付記１に記載のトレースデータ圧縮方式選定装置。
【００６４】
［付記６］
前記圧縮方式決定部は、前記構成情報を、前記複数の圧縮方式のそれぞれに対応して記憶する圧縮回路ライブラリを参照し、前記決定した圧縮方式に対応する構成情報を前記圧縮回路ライブラリから取得して前記圧縮回路データを生成する付記５に記載のトレースデータ圧縮方式選定装置。
【００６５】
［付記７］
前記結果解析部は、前記プログラムの実行において、トレース対象のデータである特定の値が複数回使用されるか否かを調べ、
前記圧縮方式決定部は、前記結果解析部において前記特定の値が複数回使用されると判断された場合、前記特定の値と該特定の値の識別情報とを対応付けて記憶する辞書を用いた圧縮方式を、前記圧縮回路における圧縮方式として決定する付記１に記載のトレースデータ圧縮方式選定装置。
【００６６】
［付記８］
前記結果解析部は、前記プログラムにおける特定の処理区間において使用される、トレース対象のデータのデータ幅の傾向を解析し、
前記圧縮方式決定部は、前記結果解析部において、特定の処理区間において特定のデータ幅のデータが使用されていると解析された場合、前記特定の処理区間に対応する前記プロセッサのプログラムカウンタの範囲において、データ出力幅を前記データ幅の傾向の解析結果に合わせて変更することで前記トレースデータを圧縮する圧縮方式を、前記圧縮回路における圧縮方式として決定する付記１に記載のトレースデータ圧縮方式選定装置。
【００６７】
［付記９］
前記結果解析部は、前記プログラムにおける特定の処理区間において、トレース対象のである特定量のデータが連続で使用されているか否かを解析し、
前記圧縮方式決定部は、前記結果解析部において前記特定量のデータが連続で使用されると解析された場合、前記特定量のデータを所定の圧縮アルゴリズムを用いて圧縮することで前記トレースデータを圧縮する圧縮方式を、前記圧縮回路における圧縮方式として決定する付記１に記載のトレースデータ圧縮方式選定装置。
【００６８】
［付記１０］
前記結果解析部は、前記プログラムにおける特定の処理区間における動作が一意であるか否かを解析し、
前記圧縮方式決定部は、前記結果解析部において特定の処理区間における動作が一意であると解析された場合、前記特定の処理区間における途中の情報のトレースデータとしての出力を省略することで前記トレースデータを圧縮する圧縮方式を、前記圧縮回路における圧縮方式として決定する付記１に記載のトレースデータ圧縮方式選定装置。
【００６９】
［付記１１］
前記トレースデータはタイムスタンプを含み、
前記結果解析部は、所定条件に合致するタイミング以外のタイミングでは前記タイムスタンプが省略可能であるか否かを判断し、
前記圧縮方式決定部は、前記結果解析部において前記タイムスタンプが省略可能と判断されると、所定条件に合致するタイミング以外のタイミングにおいて前記タイムスタンプを省略することで前記トレースデータを圧縮する圧縮方式を、前記圧縮回路における圧縮方式として決定する付記１に記載のトレースデータ圧縮方式選定装置。
【００７０】
［付記１２］
前記半導体装置において前記プログラムが実行された場合に取得される、前記トレースインタフェースから出力される圧縮されたトレースデータを、前記圧縮回路の圧縮方式に対応したデータ復元方式で復元するデータ復元部を更に有する付記１に記載のトレースデータ圧縮方式選定装置。
【００７１】
［付記１３］
前記トレースデータは、第１のタイプのトレースデータと、第２のタイプのトレースデータとを含み、
前記圧縮回路は、前記第１のタイプのトレースデータを圧縮する第１の圧縮回路と前記第２のタイプのトレースデータを圧縮する第２の圧縮回路を含む付記１に記載のトレースデータ圧縮方式選定装置。
【００７２】
［付記１４］
前記圧縮方式決定部は、前記プログラムの実行結果の解析結果、及び前記第１のタイプのトレースデータのシミュレーション結果の分析結果に基づいて前記第１の圧縮回路における圧縮方式を決定し、前記プログラムの実行結果の解析結果、及び前記第２のタイプのトレースデータのシミュレーション結果の分析結果に基づいて前記圧縮回路における圧縮方式を決定する付記１３に記載のトレースデータ圧縮方式選定装置。
【００７３】
［付記１５］
前記半導体装置は、前記第２のタイプのトレースデータの出力を停止させる条件が成立したか否かを判定する判定部を更に含み、
前記結果解析部は、特定の処理状態において前記第１のタイプのトレースデータの単位時間当たりの発生量がしきい値以上となるか否かを判断し、
前記圧縮方式決定部は、前記結果解析部において前記第１のタイプのトレースデータの単位時間当たりの発生量がしきい値以上となると判断された場合、前記判定部に設定される、前記特定の処理状態に対応した判定条件を更に生成する付記１４に記載のトレースデータ圧縮方式選定装置。
【００７４】
［付記１６］
前記判定条件は、特定の処理区間に対応した前記プロセッサのプログラムカウンタの範囲、及び所定の内部トリガの発生の少なくとも一方を含む付記１５に記載のトレースデータ圧縮方式選定装置。
【００７５】
［付記１７］
プロセッサと、該プロセッサがプログラムに従って動作することで発生するトレースデータを複数の圧縮方式から選択された圧縮方式で圧縮する圧縮回路と、該圧縮回路で圧縮されたトレースデータを出力するトレースインタフェースとを含む半導体装置上で動作させるプログラムを動作させ、前記プログラムの実行結果、及び前記トレースデータのシミュレーション結果を生成し、
前記プログラムの実行結果を解析し、
前記トレースデータのシミュレーション結果を分析し、
前記プログラムの実行結果の解析結果、及び前記トレースデータのシミュレーション結果の分析結果に基づいて前記圧縮回路における圧縮方式を決定し、
前記決定された圧縮方式で前記トレースデータを圧縮する回路として動作させるための圧縮回路データを生成するトレースデータ圧縮方式選定方法。
【００７６】
［付記１８］
コンピュータ装置に、
プロセッサと、該プロセッサがプログラムに従って動作することで発生するトレースデータを複数の圧縮方式から選択された圧縮方式で圧縮する圧縮回路と、該圧縮回路で圧縮されたトレースデータを出力するトレースインタフェースとを含む半導体装置上で動作させるプログラムを動作させ、前記プログラムの実行結果、及び前記トレースデータのシミュレーション結果を生成し、
前記プログラムの実行結果を解析し、
前記トレースデータのシミュレーション結果を分析し、
前記プログラムの実行結果の解析結果、及び前記トレースデータのシミュレーション結果の分析結果に基づいて前記圧縮回路における圧縮方式を決定し、
前記決定された圧縮方式で前記トレースデータを圧縮する回路として動作させるための圧縮回路データを生成する処理を実施させるためのプログラム。
【００７７】
［付記１９］
プロセッサと、該プロセッサがプログラムに従って動作することで発生する第１のタイプのトレースデータ及び第２のタイプのトレースデータを圧縮する圧縮回路と、該圧縮回路で圧縮されたトレースデータを出力するトレースインタフェースと、前記第２のタイプのトレースデータの出力を停止させる条件が成立したか否かを判定する判定部とを含む半導体装置上で動作させるプログラムを動作させ、前記プログラムの実行結果、及び前記トレースデータのシミュレーション結果を生成するシミュレータと、
前記プログラムの実行結果を解析し、前記トレースデータのシミュレーション結果を分析して、特定の処理状態において前記第１のタイプのトレースデータの単位時間当たりの発生量がしきい値以上となるか否かを判断する結果解析部と、
前記結果解析部において前記第１のタイプのトレースデータの単位時間当たりの発生量がしきい値以上となると判断された場合、前記判定部に設定される、前記特定の処理状態に対応した判定条件を生成する判定条件生成部とを備えるシミュレーション装置。
【００７８】
［付記２０］
プロセッサと、
前記プロセッサがプログラムに従って動作することで発生する第１のタイプのトレースデータ、及び第２のタイプのトレースデータを圧縮する圧縮回路と、
前記圧縮回路で圧縮された前記第１のタイプのトレースデータ、及び前記第２のタイプのトレースデータを出力するトレースインタフェースと、
前記第２のタイプのトレースデータの出力を停止させる条件が成立したか否かを判定する判定部とを備え、
前記判定部において前記条件が成立すると判定された場合、前記第２のタイプのトレースデータの出力が抑制される半導体装置。
【００７９】
［付記２１］
前記圧縮回路は、前記判定部において前記条件が成立すると判定された場合、前記第２のタイプのトレースデータの圧縮を停止する付記２０に記載の半導体装置。
【００８０】
［付記２２］
前記条件は、前記プログラムの実行がシミュレータを用いてシミュレーションされた場合に、前記第１のタイプのトレースデータの単位時間当たりの発生量がしきい値以上となる処理状態に対応した条件である付記２１に記載の半導体装置。
【００８１】
［付記２３］
前記条件は、前記処理状態に対応した前記プロセッサのプログラムカウンタの範囲、及び所定の内部トリガの発生の少なくとも一方を含む付記２２に記載の半導体装置。
【符号の説明】
【００８２】
１００：システム
１０１：ＭＣＵ
１０２：シミュレーション装置
１０５：デバッグツール
１１１：ＣＰＵ
１１２：ＲＯＭ
１１３：ＲＡＭ
１１４：圧縮回路
１１６、１１７：圧縮回路
１１８：判定部
１１５：トレース出力インタフェース
１２０：圧縮回路最適化部
１２１：対象ＭＣＵシミュレータ部
１２２：結果解析部
１２３：プログラム動作解析部
１２４：トレースデータ分析部
１２５：圧縮回路生成部
１３０：圧縮回路ライブラリ
１３１〜１３３：圧縮回路構成情報
１４０：データ復元部
２０１：プログラム
２０２：圧縮回路データ
２０３：ログ取得条件
２０４：実行ログ
【図１】
2019109821.tif 000003
【図２】
2019109821.tif 000004
【図３】
2019109821.tif 000005
【図４】
2019109821.tif 000006
【図５】
2019109821.tif 000007
【図６】
2019109821.tif 000008