(57)【要約】【課題】トレースデータを取得する際に、ＤＭＡコントローラ１２のアンアラインドアクセスに対応可能とする。【解決手段】ＤＭＡコントローラ１２は、ＤＭＡ要求を受け付け、受け付けたＤＭＡ要求に従って所定アクセス単位でメモリ１４にバス５２を介してアクセスする。トレースインタフェース２４は、ＤＭＡ要求がリードを示す場合は、ＤＭＡコントローラ１２がメモリ１４から取得したデータと、ＤＭＡ要求で指定された開始アドレスと、メモリ１４から取得されたデータにおける有効転送サイズとをトレース回路１５に出力する。トレース回路１５は、メモリ１４から取得されたデータのうち、ＤＭＡ要求で指定された開始アドレスから有効転送サイズ分のデータをトレースバッファ１６に記憶する。【選択図】図１
2019008526.tif 000002
【特許請求の範囲】
【請求項１】
バスと、
前記バスに接続されたメモリと、
ＤＭＡ（Direct Memory Access）要求を受け付け、該受け付けたＤＭＡ要求に従って所定アクセス単位で前記メモリに前記バスを介してアクセスするＤＭＡコントローラと、
トレースデータを収集してトレースバッファに記憶するトレース回路と、
前記ＤＭＡコントローラによる前記バスを介した前記メモリへのアクセスに関する情報を前記トレース回路に出力するトレースインタフェースとを備え、
前記ＤＭＡコントローラは、前記ＤＭＡ要求がリードを示す場合はリード要求を前記バスを介して前記メモリに出力して前記メモリからデータを取得し、前記ＤＭＡ要求がライトを示す場合はライト要求を前記バスを介してメモリに出力して前記メモリにデータを書き込み、
前記トレースインタフェースは、前記ＤＭＡ要求がリードを示す場合は、前記メモリから取得されたデータと、前記ＤＭＡ要求で指定された開始アドレスと、前記メモリから取得されたデータにおける有効転送サイズとを前記トレース回路に出力し、
前記トレース回路は、前記メモリから取得されたデータのうち、前記ＤＭＡ要求で指定された開始アドレスから前記有効転送サイズ分のデータをトレースバッファに記憶する半導体装置。
【請求項２】
前記ＤＭＡコントローラは、前記ＤＭＡ要求がリードを示す場合は、前記ＤＭＡ要求で指定される開始アドレスが前記所定アクセス単位の境界アドレスに一致するか否かを判断し、一致しないと判断した場合、前記境界アドレスに整列されたアドレスを読出し開始アドレスして含むリード要求を前記バスを介して前記メモリに出力して、前記ＤＭＡ要求で指定された範囲のデータを含むデータを前記メモリから取得し、
前記トレースインタフェースは、前記ＤＭＡ要求で指定された範囲のデータのデータサイズを前記有効転送サイズとして前記トレース回路に出力する請求項１に記載の半導体装置。
【請求項３】
前記ＤＭＡコントローラは、前記リード要求及び前記メモリから取得されたデータをバッファするバッファを有しており、
前記トレースインタフェースは、前記ＤＭＡ要求で指定される開始アドレスが前記所定アクセス単位の境界アドレスに一致しない場合、前記バッファされたリード要求に含まれる前記読出し開始アドレスを前記ＤＭＡ要求で指定された開始アドレスに書き換え、該読出し開始アドレスが書き換えられたリード要求と前記バッファされたデータとを前記トレース回路に出力する請求項２に記載の半導体装置。
【請求項４】
前記トレースインタフェースは、前記リード要求に前記有効転送サイズを付加して前記トレース回路に出力する請求項３に記載の半導体装置。
【請求項５】
前記リード要求は、バーストサイズ、及びバースト長を更に含む請求項１に記載の半導体装置。
【請求項６】
前記ＤＭＡコントローラは、前記ＤＭＡ要求がライトを示す場合、前記所定アクセス単位に対応したデータ幅のデータ及び該データのうちで書き込み対象のデータを指定するためのストローブ信号を前記バスに出力し、かつ、書込み開始アドレスを含むライト要求を前記バスを介して前記メモリに出力して、前記メモリの前記ＤＭＡ要求で指定された開始アドレスにデータを書き込み、
前記トレースインタフェースは、前記メモリに出力されたデータのうち前記ストローブ信号で書き込み対象として指定されたデータと、前記ＤＭＡ要求で指定された開始アドレスと、前記バスに出力されたデータにおける有効転送サイズとを前記トレース回路に更に出力し、
前記トレース回路は、前記トレースインタフェースから出力されたデータを前記トレースバッファに更に記憶する請求項１に記載の半導体装置。
【請求項７】
前記ＤＭＡコントローラは、前記ライト要求及び前記バスに出力されたデータをバッファするバッファを有しており、
前記トレースインタフェースは、前記バッファされたデータのうち前記書き込み対象として指定されたデータを最上位ビット側又は最下位ビット側にシフトし、該最上位ビット側又は最下位ビット側にシフトされたデータと前記バッファされたライト要求とを前記トレース回路に出力する請求項６に記載の半導体装置。
【請求項８】
前記トレース回路は、前記最上位ビット側又は最下位ビット側にシフトされたデータのうち、前記最上位ビット側又は最下位ビットから前記有効転送サイズ分のデータを前記トレースバッファに記憶する請求項７に記載の半導体装置。
【請求項９】
前記トレースインタフェースは、前記ライト要求に前記有効転送サイズを付加して前記トレース回路に出力する請求項６に記載の半導体装置。
【請求項１０】
前記ライト要求は、バーストサイズ、及びバースト長を更に含む請求項６に記載の半導体装置。
【請求項１１】
前記ＤＭＡコントローラは、前記ＤＭＡ要求と前記リード要求との対応関係を管理するリクエスト管理バッファを有し、
前記トレースインタフェースは、前記ＤＭＡコントローラが前記リード要求を出力すると、前記リクエスト管理バッファを参照して、前記バッファされたリード要求に含まれる読出し開始アドレスを前記ＤＭＡ要求で指定された開始アドレスに書き換え、かつ、前記リクエスト管理バッファから前記有効転送サイズを取得する請求項４に記載の半導体装置。
【請求項１２】
前記リクエスト管理バッファは、前記ＤＭＡ要求で指定される開始アドレスと前記リード要求に含まれる読出し開始アドレスとの差に対応する前記開始アドレスの下位アドレスを前記ＤＭＡ要求に対応付けて記憶し、
前記トレースインタフェースは、前記リクエスト管理バッファから前記下位アドレスを読み出し、該読み出した下位アドレスを前記読出し開始アドレスに付加することで、前記バッファされたリード要求に含まれる読出し開始アドレスを前記ＤＭＡ要求で指定された開始アドレスに書き換える請求項１１に記載の半導体装置。
【請求項１３】
前記ＤＭＡコントローラは、複数のリード要求及びライト要求のそれぞれにトレース識別子を割り当てて管理し、
前記トレースインタフェースは、前記トレース識別子を更に前記トレース回路に更に出力する請求項１に記載の半導体装置。
【請求項１４】
前記バスは、ＡＸＩ（Advanced eXtensible Interface）バスプロトコルに従った通信を行うためのバスである請求項１に記載の半導体装置。
【請求項１５】
ＤＭＡ（Direct Memory Access）要求に従ってバスを介して接続されるメモリに所定アクセス単位でアクセスするＤＭＡコントローラから、前記ＤＭＡ要求で指定される開始アドレスが前記所定アクセス単位の境界アドレスに一致する場合は前記開始アドレスを読出し開始アドレスして含むリード要求を前記メモリに出力し、前記ＤＭＡ要求で指定される開始アドレスが前記所定アクセス単位の境界アドレスに一致しない場合は、前記境界アドレスに整列されたアドレスを読出し開始アドレスして含むリード要求を前記メモリに出力し、
前記ＤＭＡ要求で指定される開始アドレスが前記所定アクセス単位の境界アドレスに一致する場合は、前記ＤＭＡ要求で指定された範囲のデータを前記メモリから前記ＤＭＡコントローラに出力し、前記ＤＭＡ要求で指定される開始アドレスが前記所定アクセス単位の境界アドレスに一致しない場合は、前記ＤＭＡ要求で指定された範囲のデータと範囲外のデータとを含むデータを前記メモリから前記ＤＭＡコントローラに出力し、
前記ＤＭＡ要求で指定される開始アドレスが前記所定アクセス単位の境界アドレスに一致する場合は、前記メモリから前記ＤＭＡコントローラに出力されたデータをトレースバッファに記憶し、前記ＤＭＡ要求で指定される開始アドレスが前記所定アクセス単位の境界アドレスに一致しない場合は、前記メモリから前記ＤＭＡコントローラに出力されたデータのうち、前記ＤＭＡ要求で指定された開始アドレスから有効転送サイズ分のデータをトレースバッファに記憶するトレースデータ記憶方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置及びトレースデータ記憶方法に関し、例えばＤＭＡ（Direct Memory Access）コントローラを有する半導体装置、及びそのような半導体装置におけるトレースデータ記憶方法に関する。
【背景技術】
【０００２】
特許文献１は、ＣＰＵ（Central Processing Unit）などの機能モジュールとＤＭＡコントローラとを有する半導体集積回路を開示する。特許文献１には、そのような半導体集積回路において、プログラムやシステムのデバッグを補助するために、機能モジュールやＤＭＡコントローラが接続されているバスを介して伝送されるアドレスやデータをトレースすることが記載されている。
【０００３】
具体的に、特許文献１において、ＤＭＡコントローラは、複数のチャネルを介してＤＭＡ要求を受け付ける。ＤＭＡコントローラは調停手段を有しており、調停手段は、複数のチャネルにあらかじめ割り当てられた優先順位に従って、複数のチャネルを介して受け付けた複数のＤＭＡ要求のうちの１つを選択する。特許文献１において、トレースバッファには、調停手段により選択されたＤＭＡ要求に関するトレースデータが格納される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−６００３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、ＤＭＡコントローラは、メモリに対して所定アクセス単位でアクセスする場合がある。一方で、ＤＭＡコントローラが受け付けるＤＭＡ要求で指定される転送データの範囲は所定アクセス単位には限定されず、ＤＭＡ要求で指定される転送データの範囲が所定アクセス単位に一致しない場合がある。ＤＭＡコントローラは、メモリに対してアンアラインドアクセスとなる場合は、所定アクセス単位でメモリにアクセスし、メモリから取得したデータから必要なデータを抽出して転送先のデバイスに転送する。
【０００６】
しかしながら、特許文献１に記載の半導体集積回路では、トレースデータの記憶に際してアンアラインドアクセスは考慮されていない。特許文献１では、バスを介して伝送されるデータがトレースバッファに記憶されるため、アンアラインドアクセスが生じると、トレースバッファには、実際にＤＭＡ転送されるデータだけでなく、その周辺のアドレスのデータも記憶されることとなる。
【０００７】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態によれば、半導体装置は、所定アクセス単位でメモリにアクセスするＤＭＡコントローラとトレースインタフェースとを有しており、トレースインタフェースは、ＤＭＡ要求がリードを示す場合、ＤＭＡコントローラがメモリから取得したデータと、ＤＭＡ要求で指定された開始アドレスと、メモリから取得されたデータにおける有効転送サイズとをトレース回路に出力し、トレース回路は、メモリから取得されたデータのうち、ＤＭＡ要求で指定された開始アドレスから有効転送サイズ分のデータをトレースバッファに記憶するものである。
【発明の効果】
【０００９】
前記一実施の形態によれば、ＤＭＡ転送対象のデータがメモリへのアクセス単位に対してアンアラインドになる場合でも、トレースバッファへの不要なデータの記憶を抑制できる。
【図面の簡単な説明】
【００１０】
【図１】実施形態１に係る半導体装置を示すブロック図。
【図２】ＤＭＡコントローラの構成を示すブロック図。
【図３】ＤＭＡコントローラによるメモリアクセスを模式的に示す図。
【図４】ＤＭＡコントローラがメモリからデータを読み出す際の動作信号例を示すタイミングチャート。
【図５】データ読出しが行われた場合にトレース回路へ出力される信号を示すタイミングチャート。
【図６】ＤＭＡコントローラがメモリへデータを書き込む際の動作信号例を示すタイミングチャート。
【図７】データ書込みが行われた場合にトレース回路へ出力される信号を示すタイミングチャート。
【発明を実施するための形態】
【００１１】
以下、図面を参照しつつ、上記課題を解決するための手段を適用した実施形態を詳細に説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Central Processing Unit）、メモリ、又はその他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、又はそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、何れかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１２】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスク）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、及び半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１３】
以下の実施の形態においては便宜上その必要があるときは、複数のセクション又は実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部又は全部の変形例、応用例、詳細説明、又は補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１４】
さらに、以下の実施の形態において、その構成要素（動作ステップ等も含む）は、特に明示した場合及び原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、又は位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等（個数、数値、量、範囲等を含む）についても同様である。
【００１５】
［実施形態１］
図１は、実施形態１に係る半導体装置を示す。半導体装置１０は、複数のＣＰＵ１１、ＤＭＡコントローラ１２、スイッチ１３、メモリ１４、トレース回路１５、及びトレースバッファ１６を有する。なお、図１では半導体装置１０がＣＰＵ１１を３つ有する例が示されているが、ＣＰＵ１１の数は特に限定されない。半導体装置１０は、例えばＣＰＵ１１を少なくとも１つ有していればよい。また、図１では図示を省略しているが、半導体装置１０は、他の周辺デバイスなどを有していてもよい。
【００１６】
ＣＰＵ１１及びＤＭＡコントローラ１２は、スイッチ１３を介してメモリ１４に接続される。各ＣＰＵ１１とスイッチ１３とはバス５１を介して接続され、ＤＭＡコントローラ１２とスイッチ１３とはバス５２を介して接続される。また、スイッチ１３とメモリ１４とはバス５３を介して接続される。スイッチ１３は、例えばクロスバスイッチであり、各ＣＰＵ１１に接続されたバス５１及びＤＭＡコントローラ１２に接続されたバス５２のうちの１つと、メモリ１４に接続されたバス５３とを接続する。バス５１〜５３は、例えばＡＸＩ（Advanced eXtensible Interface）バスプロトコルに従って通信を行うためのＡＸＩバスである。
【００１７】
ＤＭＡコントローラ１２は、ＤＭＡ要求を受け付け、受け付けたＤＭＡ要求に従ってメモリ１４にアクセスする。ＤＭＡ要求は、例えばリード又はライトのアクセスの種別を示す情報、アドレス（開始アドレス）に関する情報、転送先又は転送元に関する情報、及び転送データサイズなどの情報を含む。ＤＭＡコントローラ１２は、例えばメモリからバス５２を介してデータを読み出し、読み出したデータを転送先の図示しない周辺デバイスなどに転送先に転送する。あるいは、ＤＭＡコントローラ１２は、転送元からデータを取得し、取得したデータをバス５２を介してメモリ１４に書き込む。
【００１８】
ここで、本実施形態において、ＤＭＡコントローラ１２は、所定アクセス単位でバス５２を介してメモリ１４にアクセスする。例えばバス５２は所定データ幅のデータバスを含んでおり、ＤＭＡコントローラ１２は、所定データ幅で割り切れるアドレスに対して、所定データ幅単位でメモリ１４にアクセスする。具体的に、ＤＭＡコントローラ１２は、例えばメモリ１４からデータをリードする場合は、８バイトで割り切れるアドレスを読出し開始アドレスとし、そのアドレスから８バイト単位でデータを読み出す。
【００１９】
ＤＭＡコントローラ１２は、トレースインタフェース２４を含む。トレースインタフェース２４は、ＤＭＡコントローラ１２によるバス５２を介したメモリ１４へのアクセスに関する情報を、バス５３を介してトレース回路１５に出力する。バス５３には、例えばＡＸＩバス、又はそれを拡張したバスを用いることができる。トレース回路１５は、トレースデータを収集してトレースバッファ１６に記憶する。トレースバッファ１６は、トレースデータを記憶するための記憶装置である。トレース回路１５は、例えば、トレースインタフェース２４から出力された情報に基づいてトレースデータを生成し、トレースバッファ１６に記憶する。なお、トレースインタフェース２４は必ずしもＤＭＡコントローラ１２の内部に設けられている必要はなく、ＤＭＡコントローラ１２の外部に設けられていてもよい。
【００２０】
［ＤＭＡコントローラ］
図２は、ＤＭＡコントローラ１２の構成を示す。ＤＭＡコントローラ１２は、要求受付部２１、転送処理部２２、バッファ２３、及びトレースインタフェース２４を有する。要求受付部２１は、他のデバイス、例えばＣＰＵ１１からＤＭＡ要求を受け付ける。ＤＭＡ要求は、メモリ１４からデータを読み出す「リード」と、メモリ１４にデータを書き込む「ライト」とを含む。要求受付部２１は例えばレジスタを含んでおり、ＣＰＵ１１（図１を参照）などがそのレジスタにＤＭＡ要求を書き込むことで、ＤＭＡ要求が受け付けられる。要求受付部２１は、例えば複数のチャネルを有しており、複数のＤＭＡ要求を受付可能に構成されている。
【００２１】
転送処理部２２は、要求受付部２１が受け付けたＤＭＡ要求に従ってメモリ１４にアクセスする。転送処理部２２は、ＤＭＡ要求がリードを示す場合は、リード要求を、バス５２を介してメモリ１４に送信する。メモリ１４は、リード要求を受け取ると、それに対する応答として、読出しデータをバス５２を通じて転送処理部２２に送信（返却）する。転送処理部２２は、メモリ１４から取得した読出しデータをＤＭＡ要求において指定されている転送先へ転送する。転送処理部２２は、ＤＭＡ要求がライトを示す場合は、ＤＭＡ要求において指定されている転送元から書き込みデータを取得し、ライト要求と書込みデータとを、バス５２を介してメモリ１４に送信する。メモリ１４は、ライト要求を受け取ると、書込みデータを記憶する。
【００２２】
バス５２は、例えば、リードアドレスチャネル、リードデータチャネル、ライトアドレスチャネル、及びライトデータチャネルを含む。転送処理部２２は、ＤＭＡ要求がリードを示す場合は、バス５２のリードアドレスチャネルを通じて、読出し開始アドレス（ＡＲＡＤＤＲ）を含むリード要求をメモリ１４に送信する。リード要求は、バーストサイズ（ＡＲＳＩＺＥ）及びバースト長（ＡＲＬＥＮ）を更に含んでいてもよい。転送処理部２２は、バス５２のリードデータチャネルを通じて、メモリ１４から読出しデータ（ＲＤＡＴＡ）を取得する。
【００２３】
一方、転送処理部２２は、ＤＭＡ要求がライトを示す場合は、バス５２のライトアドレスチャネルを通じて、書込み開始アドレス（ＡＷＡＤＤＲ）を含むライト要求をメモリ１４に送信する。ライト要求は、バーストサイズ（ＡＷＳＩＺＥ）及びバースト長（ＡＷＬＥＮ）を更に含んでいてもよい。また、転送処理部２２は、バス５２のライトデータチャネルを通じて、書込みデータ（ＷＤＡＴＡ）、及びライトデータチャネル（書込み用のデータバス）に出力されたデータのうちで書き込み対象のデータを指定するためのストローブ信号（ＷＳＴＲＢ）をメモリ１４に送信する。リードデータチャネル及びライトデータチャネルのデータバスのデータ幅は、例えば、ＤＭＡコントローラ１２がメモリ１４にアクセスする際の所定アクセス単位に対応する。
【００２４】
転送処理部２２は、リクエスト管理バッファ２５を含んでいてもよい。リクエスト管理バッファ２５は、ＤＭＡ要求とメモリ１４に出力するリード要求との対応関係を管理する。リクエスト管理バッファ２５は、例えばＤＭＡ要求のＩＤ（Identifier）と、ＤＭＡ要求を受け付けたチャネルと、リード要求のＩＤと、リード要求に含まれる読出し開始アドレスとを対応付けて記憶する。また、リクエスト管理バッファ２５は、ＤＭＡ要求のＩＤと、ＤＭＡ転送で指定される開始アドレスと読出し開始アドレスとの差に対応する下位アドレス（アドレスオフセット）と、ＤＭＡ転送されるデータのデータサイズとを更に対応付けて記憶する。転送処理部２２は、リクエスト管理バッファ２５を参照して、ＤＭＡ転送処理を実施する。
【００２５】
バッファ２３は、ＤＭＡコントローラ１２からバス５２に出力される信号、及びＤＭＡコントローラ１２がバス５２から受け取る信号を記憶する。バッファ２３は、例えば上記した各チャネルの信号を一時的に記憶する。より詳細には、バッファ２３は、リードアドレスチャネルを介してメモリ１４に送信されるリード要求を一時的に記憶し、リードデータチャネルを通じてＤＭＡコントローラ１２に送信される読出しデータを一時的に記憶する。また、バッファ２３は、ライトアドレスチャネルを介してメモリ１４に送信されるライト要求を一時的に記憶し、ライトデータチャネルを介してメモリ１４に送信される書込みデータ及びストローブ信号を一時的に記憶する。トレースインタフェース２４は、バッファ２３に記憶された信号に基づいて、バス５３を介してトレース回路１５に出力する信号を生成する。
【００２６】
ここで、所定アクセス単位でのメモリアクセスを説明する。ＤＭＡコントローラ１２は、データを転送する際、よりバス効率の高いアクセス方法として、実際には転送しないデータもリードし、必要なデータだけ転送（ライト）するという動作を行う。ＤＭＡコントローラ１２は、このような動作をバースト転送によって実現する。ＡＸＩプロトコルでは、バースト転送の場合、リード要求で指定される読出し開始アドレス（ＡＲＡＤＤＲ）は、１セルあたりのデータサイズ（ＡＲＳＩＺＥ）に対してアラインドのアドレスで指定されることが必要である。しかしながら、ＤＭＡコントローラ１２は、１セルあたりのデータサイズに対して整列されていないアンアラインド（ミスアラインド）なアドレス範囲のデータを転送する場合もある。
【００２７】
図３は、ＤＭＡコントローラ１２によるメモリアクセスを模式的に示す。ここでは、１セルあたりのデータサイズを８バイトとし、ＤＭＡコントローラ１２が８バイト単位でメモリ１４にアクセスする場合を考える。また、ＤＭＡコントローラ１２が、アドレス０１Ｈを開始アドレスとして、その開始アドレスから３２バイトのデータを読み出して転送先に転送する旨を示すＤＭＡ要求を受け付けた場合を考える。
【００２８】
ＤＭＡコントローラ１２は、メモリ１４からデータを読み出す場合、例えばアドレス００Ｈ、０８Ｈ、１０Ｈ、１８Ｈ、及び２０Ｈなどの８バイトで割り切れるアドレス（境界アドレス）を読出し開始アドレスとして、メモリ１４にアクセスする。ＤＭＡ要求で指定される開始アドレスがメモリ１４へのアクセス単位と一致しない場合、及び／又は、ＤＭＡ転送されるデータのサイズが所定アクセス単位未満の場合、ＤＭＡコントローラ１２のメモリ１４へのアクセスはアンアラインドアクセスとなる。
【００２９】
ＤＭＡコントローラ１２（転送処理部２２）は、ＤＭＡ要求がリードを示す場合は、ＤＭＡ要求で指定される開始アドレスが所定アクセス単位の境界アドレスに一致するか否かを判断する。ＤＭＡコントローラ１２は、一致しないと判断した場合、境界アドレスに整列されたアドレスを読出し開始アドレスして含むリード要求をバス５２を介してメモリ１４に出力する。例えば、ＤＭＡ要求で指定される開始アドレスが０１Ｈで、ＤＭＡ転送されるデータのサイズが３２バイトであった場合、ＤＭＡコントローラ１２は、バス５２を介して、アドレス００Ｈから２７Ｈまでの４０バイトのデータの取得をメモリ１４に要求する。
【００３０】
メモリ１４は、ＤＭＡコントローラ１２から上記リード要求を受け取ると、ＤＭＡ要求で指定された範囲のデータと範囲外のデータとを含むデータをＤＭＡコントローラ１２にバス５２を介して送信する。具体的には、メモリ１４は、アドレス００Ｈから２７Ｈまでの４０バイトのデータを、バス５２を介してＤＭＡコントローラ１２に送信する。ＤＭＡコントローラ１２は、メモリ１４から取得した４０バイトのデータから、ＤＭＡ要求で指定されるアドレス０１Ｈを先頭アドレスとして３２バイトのデータを抽出し、ＤＭＡ転送で指定される転送先へ転送する。
【００３１】
上記の例では、ＤＭＡコントローラ１２は、実際にＤＭＡ転送される３２バイトのデータのみでなく、その周辺のアドレスのデータも含めた４０バイトのデータをメモリ１４から取得する。このとき、トレース回路１５が、単にメモリ１４からバス５２を介してＤＭＡコントローラ１２に出力されたデータをトレースデータとしてトレースバッファ１６に記憶したとすると、トレースバッファ１６には、実際には転送されない余分なデータも記憶されることとなる。その場合、例えば実際には転送されないデータのアドレスにブレークポイントなどが設定されていると、ＣＰＵ１１などの動作を一時停止して外部のデバッグツールへ通知するようなイベントが発生する可能性があり、意図した通りのデバッグが実行できない可能性がある。本実施形態は、主にこのような課題を解決するための手段を提供する。
【００３２】
図２に戻り、上記課題解決のため、本実施形態において、トレースインタフェース２４は、ＤＭＡ要求がリードを示す場合は、メモリ１４から取得されたデータと、ＤＭＡ要求で指定された開始アドレスと、メモリ１４から取得されたデータにおける有効転送サイズとを、バス５４を介してトレース回路１５に出力する。ここで、有効転送データサイズとは、ＤＭＡ要求で指定された範囲のデータのデータサイズを指す。別の言い方をすると、有効転送データサイズとは、メモリ１４から取得されたデータのうちでＤＭＡ転送の対象となるデータのサイズを指す。
【００３３】
トレースインタフェース２４は、アンアラインドアクセスの場合、バッファ２３にバッファされたリード要求に含まれるメモリ１４の読出し開始アドレスを、ＤＭＡ要求で指定された開始アドレスに書き換え、読出し開始アドレスが書き換えられたリード要求とバッファ２３にバッファされた読出しデータとをトレース回路１５に出力する。このとき、トレースインタフェース２４は、リード要求に、バス５２のリードアドレスチャネル上には存在しない有効転送サイズを付加してトレース回路１５に出力してもよい。
【００３４】
例えば、トレースインタフェース２４は、ＤＭＡコントローラ１２がリード要求を出力すると、リクエスト管理バッファ２５を参照して、バッファ２３から取得したリード要求に含まれる読出し開始アドレスをＤＭＡ要求で指定された開始アドレスに書き換える。より詳細には、トレースインタフェース２４は、例えばリクエスト管理バッファ２５から、リード要求に対応するオフセットアドレス（下位アドレス）を読み出し、読み出したオフセットアドレスをリード要求に含まれる読出し開始アドレスに加算することで、リード要求に含まれる読出し開始アドレスをＤＭＡ要求で指定された開始アドレスに書き換える。なお、アンアラインドアクセスではない場合は、読出し開始アドレスとＤＭＡ要求で指定された開始アドレスとが一致しており、オフセットアドレスが０であるため、リード要求に含まれる読出し開始アドレスにオフセットアドレスを加算しても、読出し開始アドレスは変化しない。トレースインタフェース２４は、リクエスト管理バッファ２５から有効転送サイズを取得し、取得した有効転送サイズをリード要求に付加してトレース回路１５に出力する。
【００３５】
トレース回路１５は、メモリ１４から取得されたデータのうち、ＤＭＡ要求で指定された開始アドレスから有効転送サイズ分のデータをトレースバッファ１６に記憶する。例えば図３の例では、トレース回路１５は、メモリ１４から取得された４０バイトのデータのうち、アドレス０１Ｈから有効転送サイズ３２バイト分のデータを、その他付随する情報と共にトレースバッファ１６に記憶する。このようにすることで、アンアラインドアクセスとなる場合でも、メモリ１４から取得されたデータのうち、ＤＭＡ転送の対象となるデータのみをトレースバッファ１６に記憶することができる。
【００３６】
一方、トレースインタフェース２４は、ＤＭＡ要求がライトを示す場合は、メモリ１４に出力されたデータのうちストローブ信号で書き込み対象として指定されたデータと、ＤＭＡ要求で指定された開始アドレスと、ライトデータチャネルに出力されたデータにおける有効転送サイズとをトレース回路１５に出力する。トレースインタフェース２４は、例えば、バッファ２３からライトデータチャネルに出力されたデータを取得し、取得したデータのうちのストローブ信号により書き込み対象として指定されたデータを最上位ビット又は最下位ビット側にシフトする。トレースインタフェース２４は、ビット位置がシフトされたデータとバッファ２３から取得したライト要求とをトレース回路１５に出力する。このときトレースインタフェース２４は、ライト要求に有効転送サイズを付加してトレース回路１５に出力してもよい。
【００３７】
トレース回路１５は、トレースインタフェース２４から出力されたデータをトレースバッファ１６に記憶する。トレース回路１５は、例えば、トレースインタフェース２４において最上位ビット側又は最下位ビット側にシフトされたデータのうち、最上位ビット側又は最下位ビットから有効転送サイズ分のデータをトレースバッファ１６に記憶する。
【００３８】
［リードの動作例］
以下、動作例を説明する。図４は、ＤＭＡコントローラ１２がメモリ１４からデータを読み出す際の動作信号例を示す。図４に示されるリード要求のＩＤ（ＡＲＩＤ）（（ｂ）を参照）、読出し開始アドレスＡＲＡＤＤＲ（（ｃ）を参照）、バーストサイズＡＲＳＩＺＥ（（ｄ）を参照）、及びバースト長ＡＲＬＥＮ（（ｅ）を参照）は、バス５２のリードアドレスチャネル上の信号を表す。リードＩＤ（ＲＩＤ）（（ｆ）を参照）、読出しデータＲＤＡＴＡ（（ｇ）を参照）、及びリードラスト信号ＲＬＡＳＴ（（ｈ）を参照）は、バス５２のリードデータチャネル上の信号を表す。バス５２は、クロック信号ＣＬＫ（（ａ）を参照）に従ったタイミングで動作する。
【００３９】
ＤＭＡコントローラ１２は、メモリ１４のアドレス０１Ｈから３２バイトのデータを読み出し、転送先のデバイスに転送する旨を示すＤＭＡ要求を受け付ける（図３も参照）。ＤＭＡコントローラ１２は、時刻ｔ１１でバス５２のリードアドレスチャネルを通じて、リード要求を発行する。ＤＭＡコントローラ１２は、時刻ｔ１１では、ＡＲＡＤＤＲが「００Ｈ」、ＡＲＳＩＺＥが「３」、ＡＲＬＥＮが「４」であるリード要求を発行する。つまり、ＤＭＡコントローラ１２は、メモリ１４に対して、読出し開始アドレスを００Ｈとし、バーストサイズが８バイトで、バースト長が５回であるリード要求を発行する。
【００４０】
メモリ１４は、リード要求を受け取ると、例えば時刻ｔ１２でリード要求に従ったデータの読出しを開始し、読み出したデータをリード要求に対する応答としてＤＭＡコントローラ１２に出力する。具体的に、メモリ１４は、ＡＲＡＤＤＲが示すアドレス００Ｈから、８バイトずつデータを５回読み出し、読み出した各回８バイトのデータを、ＲＤＡＴＡとしてＤＭＡコントローラ１２に順次に出力する。リードデータチャネルにおけるＲＩＤには、リード要求に含まれるＡＲＩＤと同じＩＤが使用される。メモリ１４は、時刻ｔ１３で最終データを読み出すと、リードラスト信号ＲＬＡＳＴをアサートし、ＤＭＡコントローラ１２に最終データである旨を通知する。
【００４１】
図５は、上記データ読出しが行われた場合にトレース回路へ出力される信号を示す。トレースインタフェース２４は、バス５２上のリード要求のＩＤ（ＡＲＩＤ）をＤｍａＴｒｃＡｒＩＤ（（ａ）として出力し、バーストサイズＡＲＳＩＺＥをＤｍａＴｒｃＡｒＳｉｚｅ（（ｃ）を参照）として出力し、バースト長ＡＲＬＥＮをＤｍａＴｒｃＡｒＬｅｎ（（ｄ）を参照）として出力する。また、トレースインタフェース２４は、バス５２上のリードＩＤ（ＲＩＤ）をＤｍａＴｒｃＤｒＩＤ（（ｆ）を参照）として出力し、読出しデータＲＤＡＴＡをＤｍａＴｒｃＤｒＤＡＴＡ（（ｇ）を参照）として出力する。
【００４２】
本実施形態では、トレースインタフェース２４は、バス５２上の読出し開始アドレスＡＲＡＤＤＲをそのままトレース回路１５に出力することに代えて、読出し開始アドレスＡＲＡＤＤＲにリクエスト管理バッファ２５（図２を参照）に記憶されたオフセットアドレスを加算したアドレスを、ＤｍａＴｒｃＡｒＡｄｄｒ（（ｂ）を参照）として出力する。具体的には、ＡＲＡＤＤＲ「００Ｈ」に対して、オフセットアドレス「０１Ｈ」（図３も参照）を加算したアドレスを、ＤｍａＴｒｃＡｒＡｄｄｒとして出力する。
【００４３】
また、トレースインタフェース２４は、バス５２上には存在しない信号として、有効転送サイズＤｍａＡｒＴｒｓｚ（（ｅ）を参照）を生成する。具体的には、トレースインタフェース２４は、リクエスト管理バッファ２５からＤＭＡ転送されるデータのデータサイズ「３２バイト」を取得し、トレース回路１５に、有効転送サイズが３２バイトである旨を示すＤｍａＴｒＡｒＴｒｓｚ「１ＦＨ」を出力する。この例では、トレース回路１５は、トレースインタフェース２４から出力された４０バイトのＤｍａＴｒｃＤｒＤａｔａのうち、図５において斜線で示すアドレス範囲（０１Ｈ−２０Ｈ）のデータをトレースバッファ１６に有効なデータとして記憶する。
【００４４】
［ライトの動作例］
図６は、ＤＭＡコントローラ１２がメモリ１４へデータを書き込む際の動作信号例を示す。図６に示されるライト要求のＩＤ（ＡＷＩＤ）（（ｂ）を参照）、書込み開始アドレスＡＷＡＤＤＲ（（ｃ）を参照）、バーストサイズＡＷＳＩＺＥ（（ｄ）を参照）、及びバースト長ＡＷＬＥＮ（（ｅ）を参照）は、バス５２のライトアドレスチャネル上の信号を表す。ライトＩＤ（ＷＩＤ）（（ｆ）を参照）、読出しデータＷＤＡＴＡ及びストローブ信号ＷＤＴＲＢ（（ｇ）を参照）、並びにライトラスト信号ＷＬＡＳＴ（（ｈ）を参照）は、バス５２のライトデータチャネル上の信号を表す。バス５２がクロック信号ＣＬＫ（（ａ）を参照）に従ったタイミングで動作する点は、図４と同様である。
【００４５】
ここでは、ＤＭＡコントローラ１２が、転送元から３２バイトのデータを取得し、その３２バイトのデータをメモリ１４のアドレス０１Ｈから書き込む旨を示すＤＭＡ要求を受け付けた場合を考える。ＤＭＡコントローラ１２は、書込みがアンアラインドである場合、データを適宜分割して、複数のライト要求を発行する。ＤＭＡコントローラ１２は、例えば計３２バイトのデータを、１バイト＋２バイト＋４バイト＋２４バイト＋１バイトの５つのデータに分割し、メモリ１４に対してそれら分割されたデータを書き込むためのライト要求を順次に発行する。
【００４６】
ＤＭＡコントローラ１２は、まず、時刻ｔ２１でバス５２のライトアドレスチャネルを通じて、１つ目のライト要求を発行する。ＤＭＡコントローラ１２は、時刻ｔ２１では、ＡＷＡＤＤＲが「０１Ｈ」、ＡＷＳＩＺＥが「０」、ＡＷＬＥＮが「０」であるライト要求を発行する。つまり、ＤＭＡコントローラ１２は、メモリ１４に対して、アドレス０１Ｈから、バーストサイズを１バイトとし、バースト長を１回とするライト要求を発行する。このとき、ＤＭＡコントローラ１２は、ストローブ信号ＷＳＴＲＢを用いて、例えば８バイトのデータバスにおいて、どの部分のデータが書き込み対象のデータ（有効データ）であるのかをメモリ１４に通知する。
【００４７】
ＤＭＡコントローラ１２は、次いで、時刻ｔ２２でバス５２のライトアドレスチャネルを通じて、２つ目のライト要求を発行する。ＤＭＡコントローラ１２は、時刻ｔ２２では、ＡＷＡＤＤＲが「０２Ｈ」、ＡＷＳＩＺＥが「１」、ＡＷＬＥＮが「０」であるライト要求を発行する。つまり、ＤＭＡコントローラ１２は、メモリ１４に対して、アドレス０２Ｈから、バーストサイズを２バイトとし、バースト長を１回とするライト要求を発行する。
【００４８】
ＤＭＡコントローラ１２は、続いて、時刻ｔ２３でバス５２のライトアドレスチャネルを通じて、３つ目のライト要求を発行する。ＤＭＡコントローラ１２は、時刻ｔ２３では、ＡＷＡＤＤＲが「０４Ｈ」、ＡＷＳＩＺＥが「２」、ＡＷＬＥＮが「０」であるライト要求を発行する。以降同様に、ＤＭＡコントローラ１２は、時刻ｔ２４でＡＷＡＤＤＲが「０８Ｈ」、ＡＷＳＩＺＥが「３」、ＡＷＬＥＮが「２」であるライト要求を発行し、時刻ｔ２５でＡＷＡＤＤＲが「２０Ｈ」、ＡＷＳＩＺＥが「０」、ＡＷＬＥＮが「０」であるライト要求を発行する。
【００４９】
メモリ１４は、ライト要求を受け取ると、ライト要求に従って、ＡＷＡＤＤＲで指定されたアドレスにデータを書き込む。メモリ１４は、時刻ｔ２２において、１つ目のライト要求に従って、ＡＷＡＤＤＲが示すアドレス０１Ｈに１バイトのデータを書き込む。ライトデータチャネルにおけるＷＩＤには、各ライト要求に含まれるＡＷＩＤと同じＩＤが使用される。メモリ１４は、時刻ｔ２２においてライトラスト信号ＷＬＡＳＴをアサートし、ＤＭＡコントローラ１２に書き込んだデータが１つ目のライト要求の最終データである旨を通知する。
【００５０】
以降同様に、メモリ１４は、時刻ｔ２３において、２つ目のライト要求に従って、ＡＷＡＤＤＲが示すアドレス０２Ｈから２バイトのデータを書き込み、時刻ｔ２４において、３つ目のライト要求に従って、ＡＷＡＤＤＲが示すアドレス０４Ｈから４バイトのデータを書き込む。また、メモリ１４は、時刻ｔ２５において、４つ目のライト要求に従って、ＡＷＡＤＤＲが示すアドレス０８Ｈから、８バイトずつ３回連続してデータを書き込み、時刻ｔ２６において、５つ目のライト要求に従って、ＡＷＡＤＤＲが示すアドレス２０Ｈに１バイトのデータを書き込む。
【００５１】
図７は、上記データ書込みが行われた場合にトレース回路へ出力される信号を示す。トレースインタフェース２４は、バス５２上のライト要求のＩＤ（ＡＷＩＤ）をＤｍａＴｒｃＡｗＩＤ（（ａ）として出力し、バーストサイズＡＷＳＩＺＥをＤｍａＴｒｃＡｗＳｉｚｅ（（ｃ）を参照）として出力し、バースト長ＡＷＬＥＮをＤｍａＴｒｃＡｗＬｅｎ（（ｄ）を参照）として出力する。また、トレースインタフェース２４は、バス５２上のライトＩＤ（ＷＩＤ）をＤｍａＴｒｃＤｗＩＤ（（ｆ）を参照）として出力する。
【００５２】
本実施形態では、トレースインタフェース２４は、書込みデータＷＤＡＴＡを最下位ビット側にシフトしたデータをＤｍａＴｒｃＤｗＤａｔａ（（ｇ）を参照）としてトレース回路１５に出力する。データシフト後のデータが存在しない部分は、例えば「０」で埋められる。また、トレースインタフェース２４は、リードの場合と同様に、バス５２上には存在しない信号として、有効転送サイズＤｍａＡｗＴｒｓｚ（（ｅ）を参照）を生成する。有効転送サイズＤｍａＡｗＴｒｓｚは、ストローブ信号ＷＳＴＲＢに基づいて生成することができる。トレース回路１５は、リードの場合と同様に、トレースインタフェース２４から出力されたＤｍａＴｒｃＤｗＤａｔａにおける有効転送サイズ分のデータをトレースバッファ１６に記憶する。
【００５３】
［まとめ］
本実施形態では、トレース回路１５は、トレースインタフェース２４を介して、ＤＭＡコントローラ１２からデータなどを取得する。トレースインタフェース２４は、ＤＭＡコントローラ１２が受け付けたＤＭＡ要求がリードを示す場合は、ＤＭＡコントローラ１２がメモリから取得したデータと、ＤＭＡ要求で指定された開始アドレスと、メモリから取得されたデータにおける有効転送サイズとをトレース回路１５に出力する。トレース回路１５は、メモリから取得されたデータのうち、ＤＭＡ要求で指定された開始アドレスから有効転送サイズ分のデータをトレースバッファ１６に記憶する。
【００５４】
ＤＭＡコントローラ１２は、メモリ１４からＤＭＡ転送には不要なアドレス範囲のデータを読み出すことがあり、バス５２上を流れるデータには、不要なデータが含まれることがある。このような不要なデータがトレースバッファ１６に記憶されると、デバッグにおいて、不要なデータが有効なデータとみなされることとなる。例えば、デバッグにおいて、ＤＭＡコントローラ１２による任意のアドレス範囲内へのデータアクセス（ＤＭＡ発行アクセス）を監視する場合に、不要なデータが有効なデータとみなされると、不要なイベントが発生してデバッグを正常に実施できない可能性がある。
【００５５】
本実施形態では、トレースインタフェース２４は、リード要求に含まれる読出し開始アドレスに、リクエスト管理バッファ２５が管理するオフセットアドレスを加算し、オフセットアドレスが加算された読出し開始アドレスをトレース回路１５に出力する。オフセットアドレスが加算された読出し開始アドレスは、ＤＭＡ要求で指定された開始アドレスと一致する。また、トレースインタフェース２４は、リクエスト管理バッファ２５が管理する転送データサイズ（有効転送サイズ）を、バス５２に出力されたリード要求に付加してトレース回路１５に出力する。トレース回路１５は、これら情報を用いることで、メモリ１４から取得されたデータのうち、どの部分が有効なデータであるかを知ることができる。本実施形態では、トレース回路１５が、例えばデータの有効な部分のみをトレースバッファ１６に記憶することで、デバッグにおいて不要なデータが有効なデータとみなされることを抑制することができる。
【００５６】
［実施形態２］
次いで、実施形態２を説明する。実施形態２に係る半導体装置の構成は、図１に示される実施形態１に係る半導体装置１０の構成と同様でよい。本実施形態では、ＤＭＡコントローラ１２は、複数のリード要求及びライト要求のそれぞれにトレース識別子を割り当てて管理する。また、トレースインタフェース２４は、トレース識別子を更にトレース回路１５に出力する。その他の点は、実施形態１と同様でよい。
【００５７】
本実施形態において、ＤＭＡコントローラ１２は、例えば最大１６個のリード要求を発行可能であるとする。転送処理部２２（図２を参照）は、例えば、リード要求を発行するたびに、リード要求のＩＤ（ＡＲＩＤ）、読出し開始アドレス（ＡＲＡＤＤＲ）、及びオフセットアドレスなどをリクエスト管理バッファ２５に追加する。転送処理部２２は、メモリ１４から、リード要求に対する応答が全て得られるとリクエスト管理バッファ２５から、該当するリード要求のエントリを削除する。
【００５８】
本実施形態では、例えばＡＲＩＤを拡張し、ＡＲＩＤにトレース用の追加ＩＤを付加したものをトレース識別子（トレースＩＤ）として使用する。より詳細には、例えば４ビットのＡＲＩＤに４ビットの追加ＩＤを付与した計８ビットのＩＤを、トレースＩＤとして使用する。追加ＩＤは、同一のＡＲＩＤを有する複数のリード要求を識別するために使用される。ライト側についても、ＡＷＩＤに４ビットの追加ＩＤを付与したＩＤをトレースＩＤとして使用する。
【００５９】
ここで、メモリ１４（そのコントローラ）は、複数のリード要求を受け付けると、要求を受付順ではなく、応答を返すことが可能となった要求から順に読出しデータを出力する。例えば、あるＡＲＩＤ（ＡＲＩＤ１）を有するリード要求が２つ発行され、次いで別のＡＲＩＤ（ＡＲＩＤ２）を有するリード要求が発行された場合を考える。その場合、ＡＲＩＤ１のリード要求に対する応答よりも先に、ＡＲＩＤ２のリード要求に対する応答がメモリ１４から出力されることがある。
【００６０】
上記の場合、本実施形態では、トレースインタフェース２４は、ＡＲＩＤ１の１つ目のリード要求をトレース回路１５に出力するときに、ＡＲＩＤに代えて、トレースＩＤ（ＡＲＩＤ１＋０００１ｂ）をトレース回路１５に出力する。また、トレースインタフェース２４は、ＡＲＩＤ１の２つ目のリード要求に対しては、トレースＩＤ（ＡＲＩＤ１＋００１０ｂ）をトレース回路１５に出力する。トレースインタフェース２４は、ＡＲＩＤ２のリード要求に対しては、トレースＩＤ（ＡＲＩＤ２＋００１０ｂ）をトレース回路１５に出力する。なお、同一のＩＤの複数のリードリクエストに対する応答は、インオーダーで得られるものとする。
【００６１】
ＤＭＡコントローラ１２は、例えばリクエスト管理バッファ２５を使用して、リード要求のＩＤごとに応答が何個得られたかをカウントし、そのカウント情報を追加ＩＤとして使用する。トレースインタフェース２４は、ＤＭＡコントローラ１２が、ＲＩＤがＡＲＩＤ１である１つ目の応答（読出しデータ）をメモリ１４から取得すると、トレースＩＤ（ＡＲＩＤ１＋０００１ｂ）をＤｍａＴｒｃＡｒＩＤとして出力する。トレースインタフェース２４は、ＤＭＡコントローラ１２が、ＲＩＤがＡＲＩＤ１である２つ目の応答を取得した場合は、トレースＩＤ（ＡＲＩＤ１＋００１０ｂ）をＤｍａＴｒｃＡｒＩＤとして出力し、ＲＩＤがＡＲＩＤ２である応答を取得した場合は、トレースＩＤ（ＡＲＩＤ２＋００１０ｂ）をＤｍａＴｒｃＡｒＩＤとして出力する。
【００６２】
［まとめ］
本実施形態では、トレースインタフェース２４は、トレース回路１５にトレースＩＤを出力する。トレース回路１５は、例えばトレースＩＤを含むリード要求及びライト要求をトレースバッファ１６に記憶する。トレースＩＤを用いることで、デバッグ時に、同じＩＤを有する複数のリード要求及びライト要求に対して、メモリ１４から出力される応答が、どの要求に対する応答であるかを識別することが可能となる。トレースＩＤを用いることで、例えば、動的にトレース機能のオン／オフを切り替えた場合や、応答の一部が欠落したような場合でも、デバッグ時に、要求と応答とを正しく対応付けることができる。
【００６３】
例えば、ＤＭＡのアウトスタンドが１であれば、トレースインタフェース２４を用いなくても、バス５２を監視することで、容易にトレース回路１５を構成することが可能である。しかしながら、リード要求がアウトオブオーダーで処理される場合を考えると、バス５２に流れる応答をバッファリングし、その中にブレークポイントとなるアドレスのデータが存在するか否かを照合しようとすると、高速に動作するバス５２の動作速度に追いつかない可能性がある。本実施形態では、トレースＩＤを用いるため、要求と応答との対応関係が容易に判断可能であり、周波数が比較的遅いためタイミング的にも余裕がある回路を作成できる効果がある。
【００６４】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００６５】
１０：半導体装置
１１：ＣＰＵ
１２：ＤＭＡコントローラ
１３：スイッチ
１４：メモリ
１５：トレース回路
１６：トレースバッファ
２１：要求受付部
２２：転送処理部
２３：バッファ
２４：トレースインタフェース
２５：リクエスト管理バッファ
５１〜５４：バス
【図１】
2019008526.tif 000003
【図２】
2019008526.tif 000004
【図３】
2019008526.tif 000005
【図４】
2019008526.tif 000006
【図５】
2019008526.tif 000007
【図６】
2019008526.tif 000008
【図７】
2019008526.tif 000009