JP6041749B2 - トレース収集回路及びトレース収集方法 - Google Patents
トレース収集回路及びトレース収集方法 Download PDFInfo
- Publication number
- JP6041749B2 JP6041749B2 JP2013088668A JP2013088668A JP6041749B2 JP 6041749 B2 JP6041749 B2 JP 6041749B2 JP 2013088668 A JP2013088668 A JP 2013088668A JP 2013088668 A JP2013088668 A JP 2013088668A JP 6041749 B2 JP6041749 B2 JP 6041749B2
- Authority
- JP
- Japan
- Prior art keywords
- trace
- data
- bus
- buffer
- circuit
- 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
Links
Images
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Bus Control (AREA)
- Computer Hardware Design (AREA)
Description
最近は、上記の原理を応用し、市販のロジックアナライザのプローブを接続し、そのメモリに記録したデータ(以下「トレース」と呼ぶ)を別コンピュータで解析することで専用の装置なしに上記の方法と同様なことが実現できている。
まず、プログラムを止めた状態でCPUやメモリの内容を読み出す機能としてJTAGを使用したデバッグ手法が一般的である。これは、リアルタイム動作が必要な多くの組み込み機器では、継続動作ができないという課題を持っている。
性能分析に上記手法を用いるには、RAMが数百Kbyte〜数十Mbyte必要であり、チップコストと性能上、チップ外部のDRAM(Dynamic Random Access Memory)に事象の発生の結果を蓄える必要が出てきた。
また、ピンを他の目的のピンと兼用し切り替える方法は、DDR(Double Data Rate)、DDR2、DDR3とDRAMの信号振幅が小さくなりその電気特性がきめ細かくなってきているため、困難である。
DRAM自体をトレースにも共用し、DRAMコントローラを本来の機能とこのトレース結果出力用にそれぞれ持つと、ピンを駆動するドライバへの入力をそれらの間で調停する必要が生じ、配線遅延が増大し、またDRAMコントローラ回路が2倍になるという課題が発生する。また、トレースデータをDRAMコントローラにバースト転送できる専用のDMA回路も必要となる。
オーバランはトレースのDRAM書き込みの優先度を通常のアクセスに比べて低い優先度で行うためにまず発生する。固定的に高い優先度にするとオーバランはなくてもリアルタイム処理が間に合わなくなる。それらの緩和には、バッファ残量を見て動的に制御する古典的な優先度制御方法をこのトレースに適用できる。
特許文献3には、このような優先度制御に関して事象発生元のCPUを止める技術が開示されているが、その手法は汎用的かつ十分に緩和できるものではない。特許文献(3)では、CPU負荷に限定して言及している。
前記メモリを制御するメモリ制御部と、
前記バスを制御するバスコントローラと、
バッファを備え、前記トレースデータを取得し、取得した前記トレースデータを前記バッファに記録するトレースバッファ回路と、
前記バッファから前記トレースデータを読み出すリードリクエストを、前記トレースバッファ回路をバスターゲットとして前記バスに発行する転送コントローラと
を備え、
前記トレースバッファ回路は、
前記転送コントローラにより発行された前記リードリクエストに対応して、前記バッファに記録された前記トレースデータをリードデータとして前記バスに送出し、
前記転送コントローラは、
前記バスに送出された前記リードデータを前記メモリに書き込むライトリクエストを、前記メモリ制御部をバスターゲットとして前記バスに発行する転送を実行し、
前記メモリ制御部は、前記転送コントローラにより発行された前記ライトリクエストに対応して、前記リードデータを前記メモリに記録することを特徴とする。
図1は、本実施の形態に係るLSI100の構成図である。LSI100は、回路の一例である。
図1において、LSI100は、バス2を中心に、バス2の動作を起動するバスイニシエータ3、その起動に対してサービスをするバスターゲット4、バスを制御するバスコントローラ5、CPU6、キャッシュメモリ7を中心に構成される。
また、その他に、図中に番号は付与していないが、LSI100に内蔵されたメモリ、入出力装置(I/O)、外部バスとのインターフェイス回路等がある。
バスターゲット4には、DRAMコントローラ10(メモリ制御部の一例),SRAMコントローラ10a、I/Oブリッジ4a、トレースバッファ12(トレースバッファ回路の一例)などがある。DRAMコントローラ10は、DRAM13(メモリの一例)を制御する。
図2に示すように、2aはアドレスとコマンド、2bはライトデータ、2cはリードデータを示す。応答信号や各種有効信号の記載は省略している。矢印はそれぞれの流れを、台形は選択回路を示す。
バスコントローラ5は、各バスイニシエータ3やバスターゲット4から信号を受け取り、バスの調停とバス動作に必要な選択信号の駆動をする。
各バスイニシエータ3は、バスリクエスト、コマンド、アドレス、ライトデータを送信し、リードデータと応答を受信する。
各バスターゲット4は、調停されたコマンドとアドレスを受信し、ライト動作では受信したライトデータをメモリにライトまたは下位のバスに伝送する。リード動作では、メモリから読みだしたデータまたは下位バスのデータをリードデータとしてバスに返送する。バス2がアウトオブオーダ制御のときには、バスコントローラ5の調停に従いリードデータを送出する。
DRAMコントローラ10は、バス2からのリクエストをバッファリングして、DRAM13のRAS、CAS、WE、CSなどの信号を生成し、アドレスとともにLSI100外部のDRAM13を起動し、ライトデータを駆動する。
CPU6からメモリアクセスした場合には、キャッシュメモリ7がライトバック方式でありヒットする場合は、バスイニシエータ3(CPUブリッジ3a)にはリクエストが出ない。ミスした場合、キャッシュ禁止アクセス、コピーバックのライトアクセスが出る。I/Oアクセス動作のときはCPUブリッジ3aを介してバス2にリクエストが出る。
そこで、バス上にリクエストとして現れたアドレスをトレースして、それを別コンピュータで解析することによりその低下原因を究明し、プログラムの改善やLSI100の構成やキャッシュメモリ7の改良を行う。アドレスを見ることによりRAMの種類やI/Oの種類の情報も判る。
DMAコントローラ11には、あらかじめプログラムからDMAコントローラ11内の記憶素子に転送指示情報が格納されている。転送指示情報とは、転送元アドレス(a)、転送先アドレス(b)、転送データ長(c)である。
図3に示すように、DMAコントローラ11は、転送指示情報である転送元アドレス(a)、転送先アドレス(b)、転送データ長(c)に基づき、バスとターゲットが扱える転送単位(図2における「d」)ごとのバス動作としてリードとライトとを繰り返す。
通常は、全データの転送が完了するか、異常状態が発生するか、プログラムから停止指令が指示されるまでこの動作を繰り返す。リードの転送単位が2×dで、ライトの転送単位がdの場合はリード、ライト、ライト、リード、ライト、ライトという順で動作する。
また、バス2から見ると通常、他のイニシエータの動作と入り乱れてDMA動作が行われる。
DMAコントローラ同士は互いに独立して動作する。図示はしていないが、DMAコントローラには1個のコントローラが複数のチャネルを持ち、見掛け上複数のDMAコントローラに相当する機能を持つものもある。その場合は、時分割でチャネルを切り替え、バス動作上は複数チャネル間の動作がパイプライン動作してオーバラップし、また、順不同に転送処理がおこなわれるアウトオブオーダ動作をする。
CPU6以外のバスイニシエータ3に関してもバス2をトレースすることによりCPU同様にアクセス挙動が判る。バスコントローラ5には、パフォーマンスカウンタ70を内蔵しており、それは、バスアクセス回数を、選択回路72に指定した条件で絞り込んでカウントを行う。このパフォーマンスカウンタ70の例を図5に示す。
その信号群74には、バス2のコマンドの種類、イニシエータ、ターゲット、ターゲット内のアドレスなどがあり、その信号群74から選択回路72により選択された信号がカウンタ71でカウントされることにより統計値としてそれらの回数を知ることができる。バス2でなく個別信号の場合もある。このカウンタ71に変化・記録された統計値を、割り込みなどの一定時間ごとにプログラムが読み出し、メモリ上に格納することにより時系列的な挙動把握ができる。
しかし、数十マイクロ秒以下の分解能を得るのは困難であり、またその事象発生原因の推定には情報が不足する。
バスコントローラ5は、他のバスイニシエータ3のリクエストとDMAコントローラ11のリクエストとの調停を行い、DMAコントローラ11にバス権を与える。
トレースバッファ12は、トレース起動を受けて、以下のように動作する。
図6に示すように、トレースバッファ12は、トレース候補信号40の中から、選択指定信号43に従い、トレース対象となるトレース候補信号40の一部である有効信号41aをサンプルする。サンプルした有効信号41aが有効ならば、選択された対象信号41を、バッファ用のRAM(一時バッファRAM50)に書き込む。
事象発生判定部59は、選択された対象信号41と有効信号41aとを入力し、事象発生か否かを判定し、事象判定結果信号44をバッファ管理部51に出力する。
このバッファ用のRAM(一時バッファRAM50)は、ライトポインタ45とリードポインタ46を持つサイクルバッファ構成で、ライトとリードを同時に行える。WE信号47は、一時バッファRAM50への書き込みを直接指示する。タイミング信号48は、データの長さを知るコマンドと、データ転送との同期をとるための信号である。
図7に示すように、事象データ91(トレースデータの一例)が各事象の記録単位(リード単位)である。事象データ91の括弧内の数字はビット長を示す。これを複数個まとめた転送単位データ90(リードデータの一例)が、DMAコントローラ11への送信単位となる。
ここでは、転送元アドレス(A)、転送先アドレス(B)、転送データ長(C)とする。
DMAコントローラ11は、図8に示す状態遷移をとり、起動後は(60)に遷移してバス権を得てリードリクエスト(61)を発行、リードデータが返ったら(62)(63)と遷移し、バスコントローラ5にバス権を求め、今度はDRAMに対し、バースト転送のライトコマンドを発行し、受信したリードデータを渡す。
DMAコントローラ11は、このライトが受けつけられたら、(64)に遷移して転送先アドレス(B)をdだけ加算し、転送長(C)をdだけ減算する。DMAコントローラ11は、Cがゼロになるまで、この一連の処理(61,62,63,64)を繰り返す。
このDMA転送では転送元はバッファでありそのアドレスは意味がない。DMAコントローラ11に転送元のアドレスが固定またはインクリメントしないというモード設定を行う、トレースバッファが転送元の場合はインクリメントしない、またはトレースバッファを意味するアドレス空間がインクリメントされてもその範囲を示すように大きな領域を持つ、などの機能を用いて転送元アドレスが意味を持たないようにしている。
(1)トレースデータが揃わないのでリードデータを返送できない。
(2)そのため次のバストランザクションが前のトランザクション終了を待ち続ける場合、または、パイプライン動作のためその次が待たされることはないが、さらにその次のトランザクション発行ができない。
(3)その結果トレース対象の事象が増加しない。
図9は、デットロックの発生の様子を示す図である。
図9では、DMA−2がトレースデータの転送用で、DMA−1が通常のデータ転送である。
図9に示すように、DMA−2においてトレースデータ転送長以下のためリードデータを返送できず待ち状態となっているので、DMA−1において、前のデータ転送が未完了のためバスを使用できず、デットロックとなっている。
アウトオブオーダでデータを返す場合は、データ転送のリクエストをバスターゲット4が上げ、それらのうちの1つをバスコントローラ5が選択して転送許可を与える。バスターゲット4は、データとともに受信するバスイニシエータ3の識別子と、複数トランザクションを発行できる場合にはトランザクションの識別子とを併せて送信する。
バスの規約として受信バッファに空きがなくてもバスイニシエータ3がバス2にコマンド発行できる場合には、バスターゲット4はリクエストを上げるときにバスイニシエータ3の識別子も知らせ、バスコントローラ5はバスイニシエータ3のバッファ空き状態を応答可否条件に入れて、リードデータ返送のバス使用許可を与える。アウトオブオーダバス自体は既知の技術である。
上記のような手法を組み合わせることにより、デットロックを回避できる様子を図10に示す。
図10においても、DMA−2がトレースデータの転送用で、DMA−1が通常のデータ転送である。リクエストの順番にしか動作できない図9のインオーダ方式では4回目のバス動作が起動されたが、DMA−2の4回目とDMA−1のK+3回目がハングする。
図10のアウトオブオーダ方式では、K+3回目とK+4回目がDMA−2を追い越すことにより4回目のリードデータが返送でき、このバスレベルでのデットロック問題を回避している。
DRAM13の書き込み領域のサイズをDMAで指定するが、実際の事象発生数はそれより小さいかもしれず、DMAコントローラ11は、終了条件がわからず待ち続ける可能性がある。
トレースバッファ12中のデータが、1回の転送データ長以上ある場合は1回分の転送後にDMAは停止する。1回の転送分にも満たないトレースデータしかない場合は、データが溜まり転送された後に停止できる。通常は、その方法でトレース全体が終了できる。
さらに、トレースバッファ12のトレースイネーブルビット49を0にして停止指示を行うと、トレースバッファ12はそのデータ残量に無関係にバッファ中の古いデータまたはダミーデータを転送し確実に終了させることができる。
図11は、転送単位データ90にダミーデータを付加した状態を示す図である。
まず、オーバランはトレース書き込みの優先度を通常のアクセスに比べて低い優先度で行うために発生する。その回避には、トレースの優先度を上げる方法があるが、原理的にはトレースに関わらず優先度制御として通常の技術である。しかし、この技術の適用は、トレースではない本来のアクセスが遅れてしまい、リアルタイム処理が間に合わなくなるという短所があり組み込み機器では受け入れられない場合がある。
その主たる原因は、タイマーなどで規定された周期で動作する独立したプログラム単位(タスクと呼ぶ)の周期が、複数種類あり、ぶれが発生することによる。そこで、タスク間の遷移時に遷移情報を、トレースと同じ時刻情報源を用いた時刻情報とともに記録して併合時に突き合わせを行うと、ぶれの補正ができる。
例えば、周期同士の関係が2倍のときは、その組み込み機器の一番長い周期の2周期分の時間のトレース結果を採り、複数に分割したトレース結果を併合すれば少なくてもその1周期分のトレースを再現できる。また、このタスク遷移情報の格納もオーバヘッドを伴うが、その誤差を確認するためにパフォーマンスカウンタ(サイクル数カウンタ)を用いて、トレースした場合としない場合のそれぞれに対しクロックサイクル数やキャッシュミス回数などを比較判定する判定部を設けることにより、オーバヘッドを定量的に把握・確認できる。
この課題は、3つ目の最初の課題(オーバーラン)と類似しており、トレース対象を絞り込むという対策も同様である。すなわち、誤差を減らすにはDRAM13にライトするデータを減らすのが効果的である。
本実施の形態に係るトレース収集方式では、トレースデータのライトもトレース対象となりうる。1バストランザクションあたりのトレースデータを8byte、バス転送を64byteとすると64byte転送のトレースにあたりトレースデータのリードとライトで計16byteつまり25%の無駄が発生する。
図12は、本実施の形態に係るトレース要否の一例(トレース除外情報81)を示す図である。図6の事象発生判定部59のなかには、トレース除外情報81に基づいてトレースの要否を選択するトレース選択部58bが設けられる。
図6のトレース選択部58bは、図12のトレース除外情報81に基づいて、パフォーマンスカウンタなど他の情報から補てんできるトレース情報についてのトレースの取得を除外する。
たとえば500MHzで動作するバスで20m秒間を計測するには24ビット必要であり、分解能を1μ秒に粗くしても15ビットは必須となる。しかし、平均して100μ秒ごとに事象が発生する場合には、7ビットあれば1μ秒の分解能で127μ秒までカウントでき、時間が1つ前の記録より小さくなったら1周分の128μ秒を加算して補正することが考えられる。しかし、必ずしも事象が発生しない場合には、1周後か2周後以降かの判別ができなくなる。
図13は、トレースにおける時刻データの記録方法について示す図である。図13に示すように、時刻データを記録する92のタイミングまでに事象の記録がない場合には、92では時刻情報(時刻データ)を記録する。
図14は、時刻情報取得の回路例を示す図である。図14の回路では、最後に記録した事象から1周時間が進み記録するべき事象がない場合には時刻情報のみを記録する。
これにより周期を間違えることなく短いビット幅で正確に記録ができる効果を得られる。
トレーストランザクションが1サイクルでも先行したために、本来のバスアクセスやDRAMアクセスがそれ以上のサイクル間待たされるオーバヘッドであるレイテンシの増加は、図15に示す回路を用いて、トレース動作対象を除外した待ち状態をカウントし、トレースした時とトレースしない時とのカウンタ値を比較することでその影響が判る。
(a)バスのアドレス、バスのイニシエータ、リードとライトの区別、データ長、を全部または一部またはそれらを推定できる情報をトレースデータとしてメモリに記録するために、サンプルする機能。
(b)上記(a)の結果のバス転送を円滑に行うために一時的に蓄えるレジスタまたは小容量のメモリからなるバッファ。
(c)バスターゲットとしてDMAコントローラからのリクエストに対応して(b)のバッファからバスへ送出する機構。
(d)DMAコントローラにはデータ転送元として(c)を指定可能。
(e)データの転送元、データの転送先を指定できるメモリ間の転送を行うDMA機構。
(f)DMAコントローラはバスまたはDRAMが扱える転送単位に分割して(c)からのリードとDRAMコントローラへのライトを繰り返すDMA機能。
本実施の形態では、主に、実施の形態1と異なる点について説明する。
実施の形態1で説明した機能構成と同様の機能構成については、同一の符号を付し、その説明を省略する。
図16は、バス調停回路(バスコントローラ)を示す図である。図16に示す回路は、バスのイニシエータが転送先として選んだターゲットと、そのターゲットが発するビジー信号群を用いて、ターゲットがビジーでないものの中からトランザクションを選択する回路である。
図17では、DMA−2からの4回目の転送要求があるが、トレースバッファがビジーをアサートしているのでDMA−2にバス権を与えないためバスのデットロックは発生しない。
本実施の形態では、主に、実施の形態1,2と異なる点について説明する。
実施の形態1,2で説明した機能構成と同様の機能構成については、同一の符号を付し、その説明を省略する。
実施の形態1で説明した図8のDMAコントローラ11のステートに、図18では新たなステート65が加わっている。
キック信号を1にする条件は、トレースバッファ12に転送できるデータが揃った時である。
このバスでトレースデータを連続してDRAM13に転送しないならば、1にするタイミングと同じでよい。このバスでトレースバッファ12がコマンドを受け付けた状態で、さらに次のコマンドを受け付け開始するならば、リードポインタをさらに1本追加してデータ読み出し用のリードポインタとデータ残量計算用のリードポインタに分け、コマンド受け付け時にデータ残量計算用のリードポインタを更新し、更新した結果との計算結果にてキック信号の値を決める。
本実施の形態では、主に、実施の形態3と異なる点について説明する。
実施の形態1〜3で説明した機能構成と同様の機能構成については、同一の符号を付し、その説明を省略する。
実施の形態3では、単一チャネル動作の実施形態を示したが、ここでは複数チャネル構成のDMA回路に関する実施形態について述べる。
ステート65からステート61に遷移したチャネルの中からチャネルを選択すればデットロックなしに転送が可能となる。もともとチャネルごとにバッファを持たない複数チャネル実装においては回路量の増加も少なく回路変更も比較的容易である。
本実施の形態では、主に、実施の形態1〜4と異なる点について説明する。
実施の形態1〜4で説明した機能構成と同様の機能構成については、同一の符号を付し、その説明を省略する。
図19は、本実施の形態に係る事象データ91を示す図である。図19において、カッコ内の数字はビット長の例を示す。
実施の形態4まではアドレスを記録対象にしていたが、図19の例では、アドレスではなくライトデータまたはリードデータをその記録対象とする。アドレスとデータを判別ために、事象データ91に専用のビットを設けてもよい。
しかし、I/Oに限定すると、メモリに比べて頻度が少ないため、数パーセント増で済む。I/Oであるか否か判定には、アドレスの上位部の上限の比較、上下限の範囲比較、上位部のビットマスク後の値との一致比較をレジスタ指定した値とバスアドレス(パイプラインバスではそれを遅延させたもの)を図6のアドレス指定・比較部58a相当の回路で比較すればよい。
特に、メモリと異なりI/Oの場合はそのデータ挙動をプログラムからシミュレーションで再現するのが困難である。また、特に、リードデータ値によりその後のプログラム挙動が大きく変わるためデータをトレース記録する効果は大きい。
本実施の形態では、主に、実施の形態1〜5と異なる点について説明する。
実施の形態1〜5で説明した機能構成と同様の機能構成については、同一の符号を付し、その説明を省略する。
図20では、1つの事象データ91がトレースバッファ12への書き込み単位と異なる一例を示す。
なお、図21(b)のレジスタ53のクロック制御の代わりに、一時バッファRAM50のライトイネーブルを複数に分割し、複数に分割したライトイネーブルを制御しても同様な効果が得られる。
これを実現する回路の構成は、図21(a)や図21(b)と同等であるが、データが詰まっている状態を示すカウンタ(図示なし)のビットを短く省略できないこと、また動作が複雑化することが差異点ではある。
本実施の形態では、主に、実施の形態1〜6と異なる点について説明する。
実施の形態1〜6で説明した機能構成と同様の機能構成については、同一の符号を付し、その説明を省略する。
図23は、トレースデータの格納方法として圧縮した例を示し、(a)は圧縮したトレースデータの構成、(b)〜(e)は圧縮として差分方式の一例を示す。図23において、カッコ内の数字はビット長の例を示す。
図23(b)は、圧縮方式を示す部分(91a)の実施例である。
図23(c)〜図23(e)に圧縮後のデータ部(91b)の実施例である。
リード・ライトと転送長とイニシエータは前回と異なる場合のみ合計7ビットのデータ用いる。
時刻は前回との差分を符号なし4ビットで表現できれば4ビットを、そうでなければ16ビットを用いる。
図24は、本実施の形態に係るトレース差分計算機構の一例を示す図である。図24に示すトレース差分計算機構を、図21(a)または図21(b)の入力に挿入することにより、上述した機能を実現することができる。このトレース差分計算機構は、前回の事象データ91を記録する前回値レジスタ55と今回の事象データ91との差分を計算する差分演算器56から構成され、圧縮方式を示す部分91aと圧縮後のデータ部91bとを生成する。
本実施の形態では、主に、実施の形態1〜7と異なる点について説明する。
実施の形態1〜7で説明した機能構成と同様の機能構成については、同一の符号を付し、その説明を省略する。
図25に示すように、圧縮後の事象データ91cと圧縮後の事象データ長91dを圧縮演算器57が算出する。しかし、確率が低いデータでは圧縮後の事象データ長91dが長くなることがあり、それがバッファRAMの格納単位のビット幅を超えるとその実装は複雑になる。
本実施の形態では、主に、実施の形態1〜8と異なる点について説明する。
実施の形態1〜8で説明した機能構成と同様の機能構成については、同一の符号を付し、その説明を省略する。
トレースデータの圧縮にLZ77など辞書を用いた圧縮方式も適用できる。これらの方式では、一般にRAM上に辞書データ用の領域を設けて辞書を参照・更新しながら圧縮をする。しかし、出現頻度の測定を行うと、(a)そのカウント用の回路とカウント値を格納するデータが辞書のエントリ数分必要となる、(b)出力待ちのバッファが多く必要となる、(c)バスとDRAMへのアクセス頻度が均等ではなく一時期に集中しやすくなる等の課題が出てくる。
図26に示すように、トレースデータが0xABAB5555の場合に、1byteごとに「1byte圧縮演算器103」を用いて圧縮データを得る。
辞書のヒットは辞書の中身とデータが一致し、その一致したエントリ番号と有効数を示すカウンタ値から判断される。
ヒットすればエントリ番号110が辞書RAM101より返され、ヒットしなければ辞書に登録後のエントリ番号110が返されるとともに辞書カウンタを+1する。図26において、1byte圧縮演算器103と辞書RAM101との「*2」同士は接続されていることを意味し、辞書RAM101から1byte圧縮演算器103にエントリ番号110が返されることを示す。
8ビット幅の信号109、エントリ番号110は各byteごとにある。
辞書があふれる場合は、あふれ信号107を1にして、辞書データ108を辞書RAM101から一時バッファRAM50に順に吐き出す。
また、元のトレースデータ(事象データ91)の各byte値(91f)は1つ前のbyte値と比較器104で比較され、連続長計算器105で何byte同じ値が連続するか決定される。
本実施の形態では、主に、実施の形態1〜9と異なる点について説明する。
実施の形態1〜9で説明した機能構成と同様の機能構成については、同一の符号を付し、その説明を省略する。
データ長を変更しない暗号化方式としては、ビットの反転、ビットの入れ替え、複数ビット単位での補数計算、複数ビット間での値のデータ位置の入れ替えが考えられる。しかし、時刻情報やアドレスなどは、その特性から暗号化のアルゴリズムを見破られやすい。
図27は、ビット反転のパターンを生成多項式を循環させることにより切り替える方式を示す。これは乱数発生回路として排他論理和とシフトを繰り返す方式である。
図27に示すように、生成多項式演算部110N(Nは1以上の整数)により生成された乱数値の中で1の立っているビットに対しトレースデータのビット反転を施す。しかし、1種類の多項式である場合は、見破られる可能性が高い。そこで、生成式または初期値の異なる生成多項式を複数組(K個)持ち、一定期間ごとに使用する多項式を信号117により切り替える。
本実施の形態では、主に、実施の形態1〜10と異なる点について説明する。
実施の形態1〜10で説明した機能構成と同様の機能構成については、同一の符号を付し、その説明を省略する。
図28(b)に示すように、回路は、ステート値レジスタ120により、ステートマシンを構成する。選択回路121によりステート値ごとのキー値を選択し、選択したキー値とデータバス2bよりセットされたデータ値とを比較器125により比較する。比較が一致したら比較器出力信号124によりステートが進む。
本実施の形態によれば、上記のような正しいシーケンスを踏まないとトレースを開始できないため、簡易な回路で防御することができる。
Claims (18)
- バスを備え、トレース対象のトランザクションをトレースしたトレースデータを、前記バスを介して取得し、メモリに記憶するトレース収集回路において、
前記メモリを制御するメモリ制御部と、
前記バスを制御するバスコントローラと、
バッファを備え、前記トレースデータを取得し、取得した前記トレースデータを前記バッファに記録するトレースバッファ回路と、
前記バッファから前記トレースデータを読み出すリードリクエストを、前記トレースバッファ回路をバスターゲットとして前記バスに発行する転送コントローラと
を備え、
前記トレースバッファ回路は、
前記転送コントローラにより発行された前記リードリクエストに対応して、前記バッファに記録された前記トレースデータをリードデータとして前記バスに送出し、
前記転送コントローラは、
前記バスに送出された前記リードデータを前記メモリに書き込むライトリクエストを、前記メモリ制御部をバスターゲットとして前記バスに発行する転送を実行し、
前記メモリ制御部は、
前記転送コントローラにより発行された前記ライトリクエストに対応して、前記リードデータを前記メモリに記録する
ことを特徴とするトレース収集回路。 - 前記転送コントローラは、DMA(Direct・Memory・Access)転送を行うDMAコントローラであることを特徴とする請求項1に記載のトレース収集回路。
- 前記トレースバッファ回路は、前記バッファに記録された少なくともひとつの前記トレースデータがリード単位のサイズを満たした場合に、前記リードデータとして送出し、
前記バスコントローラは、前記トレースデータがリード単位のサイズを満たすまでの間に、前記バスがデットロックを起こさないように前記バスを制御する
ことを特徴とする請求項1または2に記載のトレース収集回路。 - 前記転送コントローラは、複数のチャネルを有し、
前記トレースバッファ回路は、前記複数のチャネルのそれぞれに対応する複数の前記バッファを備え、
前記転送コントローラは、前記複数のチャネルのチャネル毎に前記転送を実行する
ことを特徴とする請求項1〜3のいずれかに記載のトレース収集回路。 - CPUからの命令に基づいて、トレース対象のトランザクションのトレース可否を判定する判定部を備えることを特徴とする請求項1〜4のいずれかに記載のトレース収集回路。
- 前記判定部は、トレース対象とする必要のないトランザクションの種類が予め設定されたトレース除外情報を記憶装置に備え、前記トレース除外情報に基づいて、トレース対象のトランザクションのトレース可否を判定することを特徴とする請求項5に記載のトレース収集回路。
- 前記トレースデータを前記メモリに記録するために発生したトランザクションが後続のトランザクションの動作を遅延させた場合に、前記バスの待ち時間を計測する待ち時間カウンタを備えることを特徴とする請求項1〜6のいずれかに記載のトレース収集回路。
- 前記トレースデータを前記メモリに記録するために発生したメモリアクセスがビジー状態の場合に、前記メモリアクセス以外のアクセスが遅延する場合に、遅延状態のクロックサイクル数を計測するサイクル数カウンタを備えることを特徴とする請求項1〜7のいずれかに記載のトレース収集回路。
- 前記バスコントローラは、前記バスに発行されたリクエストの順序を変えて実行するアウトオブオーダ方式で動作することを特徴とする請求項1〜8のいずれかに記載のトレース収集回路。
- 前記トレースバッファ回路は、前記リードデータがリード単位を満たしていることを通知するリード可能通知を前記バスコントローラに通知し、
前記転送コントローラは、前記バスに前記リードリクエストを発行するためのバス権を得る前に、前記リードリクエストの発行の対象である前記トレースバッファ回路を識別する識別情報を、前記バスコントローラに通知し、
前記バスコントローラは、前記転送コントローラから通知された識別情報により識別される前記トレースバッファ回路が前記リード可能通知を通知している場合に、前記転送コントローラに対してバス権を与える
ことを特徴とする請求項1〜9のいずれかに記載のトレース収集回路。 - 前記トレースバッファ回路は、前記バスのトレース対象を選択するためのバスアドレスの範囲を示すレジスタを備え、前記レジスタに示された前記バスアドレスに基づいたデータを前記トレースデータに含めて前記メモリに記録することを特徴とする請求項1〜10のいずれかに記載のトレース収集回路。
- 前記トレースバッファ回路は、前記バッファに記録されたデータ量を記録するカウンタと、データのシフト回路とを備え、前記トレースデータを前記バッファに転送する前に、前記カウンタに記録されたデータ量に基づいて、前記トレースデータに対して前記シフト回路によりシフト操作を行なうことを特徴とする請求項1〜11のいずれかに記載のトレース収集回路。
- 前記トレースバッファ回路は、前記バッファに記録したトレースデータと新たに記録するトレースデータとの差分を計算し、計算した差分に基づいて前記新たに記録するトレースデータに圧縮し、前記バッファに記録することを特徴とする請求項1〜12のいずれかに記載のトレース収集回路。
- 前記トレースバッファ回路は、符号化によるデータ圧縮方法を利用した演算回路を備え、前記トレースデータに対し前記演算回路により圧縮を実行して圧縮後トレースデータを生成し、生成した前記圧縮後トレースデータと、圧縮前のトレースデータとのいずれかを選択して前記バッファに記録することを特徴とする請求項1〜12のいずれかに記載のトレース収集回路。
- 前記トレースバッファ回路は、前記トレースデータの少なくとも一部と前記バッファに記憶された辞書データとを用いたデータ圧縮方法を適用した回路を備え、頻度測定を行わずに出現順に辞書に登録しつつ圧縮対象データを出力し、辞書のエントリ数をカウンタで計数し、辞書があふれたら辞書データをトレースデータの一部として出力し、辞書の容量分をバッファの空き容量計算に使用し、古い辞書データの出力中にも新たな辞書の更新と参照を可能にする前記バッファに記録することを特徴とする請求項1〜12のいずれかに記載のトレース収集回路。
- 前記トレースバッファ回路は、多項式を生成する複数の回路を備え、前記トレースデータを前記複数の回路のいずれかに基づいて暗号化し、暗号化した暗号化後のトレースデータと暗号化するために用いた前記複数の回路のうちのいずれかの回路の情報とを含めて前記バッファに記録することを特徴とする請求項1〜12のいずれかに記載のトレース収集回路。
- 前記トレースバッファ回路は、予め設定されている前記トレースデータの取得を制限する保護機能を解除する解除部を有し、前記解除部により前記保護機能を解除してから、トレース起動を行なうことを特徴とする請求項1〜15のいずれかに記載のトレース収集回路。
- バスとメモリと前記メモリを制御するメモリ制御部とを備え、トレース対象のトランザクションをトレースしたトレースデータを、前記バスを介して取得し、前記メモリに記憶するトレース収集回路のトレース収集方法において、
バッファを備えるトレースバッファ回路が、前記トレースデータを取得し、取得した前記トレースデータを前記バッファに記録し、
コントローラが、前記バッファから前記トレースデータを読み出すリードリクエストを、前記トレースバッファ回路をバスターゲットとして前記バスに発行し、
前記トレースバッファ回路が、前記コントローラにより発行された前記リードリクエストに対応して、前記バッファに記録された前記トレースデータをリードデータとして前記バスに送出し、
前記コントローラが、前記バスに送出された前記リードデータを前記メモリに書き込むライトリクエストを、前記メモリ制御部をバスターゲットとして前記バスに発行し、
前記コントローラにより発行された前記ライトリクエストに対応して、前記リードデータを前記メモリに記録することを特徴とするトレース収集回路のトレース収集方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013088668A JP6041749B2 (ja) | 2013-04-19 | 2013-04-19 | トレース収集回路及びトレース収集方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013088668A JP6041749B2 (ja) | 2013-04-19 | 2013-04-19 | トレース収集回路及びトレース収集方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014211813A JP2014211813A (ja) | 2014-11-13 |
JP6041749B2 true JP6041749B2 (ja) | 2016-12-14 |
Family
ID=51931516
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013088668A Expired - Fee Related JP6041749B2 (ja) | 2013-04-19 | 2013-04-19 | トレース収集回路及びトレース収集方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6041749B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101735590B1 (ko) * | 2016-01-22 | 2017-05-15 | 한양대학교 산학협력단 | 트랜잭션 추출 장치 및 방법 |
JP6188895B1 (ja) * | 2016-09-05 | 2017-08-30 | 三菱電機株式会社 | 車載制御プログラムの実行時データ取得方法および車載制御装置 |
WO2019239602A1 (ja) * | 2018-06-15 | 2019-12-19 | 三菱電機株式会社 | メモリ履歴管理システム |
WO2021106925A1 (ja) * | 2019-11-29 | 2021-06-03 | 株式会社メガチップス | 情報処理装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11143789A (ja) * | 1997-11-05 | 1999-05-28 | Fanuc Ltd | バストレース装置 |
JP3629181B2 (ja) * | 2000-03-28 | 2005-03-16 | Necマイクロシステム株式会社 | プログラム開発支援装置 |
JP3796111B2 (ja) * | 2000-11-10 | 2006-07-12 | 株式会社ルネサステクノロジ | データプロセッサ |
JP2006318172A (ja) * | 2005-05-12 | 2006-11-24 | Renesas Technology Corp | マイクロコンピュータ |
JP5533097B2 (ja) * | 2010-03-18 | 2014-06-25 | 株式会社リコー | 情報処理装置、画像形成装置及び情報処理プログラム |
JP5606261B2 (ja) * | 2010-10-19 | 2014-10-15 | 三菱電機株式会社 | デバッグシステムおよびデバッグシステムのトレースデータ取得方法 |
US8713370B2 (en) * | 2011-08-11 | 2014-04-29 | Apple Inc. | Non-intrusive processor tracing |
-
2013
- 2013-04-19 JP JP2013088668A patent/JP6041749B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2014211813A (ja) | 2014-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6556952B1 (en) | Performance monitoring and optimizing of controller parameters | |
JP5328531B2 (ja) | データ処理装置の監視およびその監視データの集計 | |
US8381041B2 (en) | Program counter (PC) trace | |
US8489792B2 (en) | Transaction performance monitoring in a processor bus bridge | |
KR101016711B1 (ko) | 집적 회로용 진단 회로 | |
JP4371452B2 (ja) | コンピュータメモリシステムにおいて空間的及び時間的サンプリングを行う装置 | |
US8713370B2 (en) | Non-intrusive processor tracing | |
US5675729A (en) | Method and apparatus for performing on-chip measurement on a component | |
US8527812B2 (en) | Information processing device | |
US20060005083A1 (en) | Performance count tracing | |
CN108475236B (zh) | 测量地址转换延迟 | |
US7487398B2 (en) | Microprocessor design support for computer system and platform validation | |
JP2008513875A (ja) | 非侵入的追跡を行う方法及び装置 | |
JP6041749B2 (ja) | トレース収集回路及びトレース収集方法 | |
TWI437488B (zh) | 微處理器及適用於微處理器之操作方法 | |
US6678838B1 (en) | Method to track master contribution information in a write buffer | |
US6298394B1 (en) | System and method for capturing information on an interconnect in an integrated circuit | |
US6173243B1 (en) | Memory incoherent verification methodology | |
US8291417B2 (en) | Trace buffer with a processor | |
US7260745B1 (en) | Detection of information on an interconnect | |
US7546642B2 (en) | Latching processor state information | |
US6349371B1 (en) | Circuit for storing information | |
US7266728B1 (en) | Circuit for monitoring information on an interconnect | |
US20100332690A1 (en) | Processor performance analysis device, method, and simulator | |
JP6052847B2 (ja) | トランザクション処理装置及び不正トランザクション検出方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20151217 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160930 |
|
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: 20161011 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161108 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6041749 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |