(57)【要約】【課題】半導体装置の所望の動作を実現するためのデバッグを容易に行う。【解決手段】半導体装置２は、デバッグフラグ設定レジスタ８と識別子設定レジスタ９とを備え、デバッグのためのメモリ領域５へのアクセスについて制御するデバッグマスタ７と、ガード回路６とを有する。デバッグマスタ７は、デバッグフラグ設定レジスタ８に設定された値が第１の値である場合、有効なフラグ値を含むアクセス要求をバス４に出力し、設定された値が第２の値である場合、無効なフラグ値と、識別子設定レジスタ９に設定された識別子とを含むアクセス要求をバス４に出力する。ガード回路６は、アクセス要求に含まれるフラグ値が有効である場合、メモリ領域５へのアクセスを許可し、アクセス要求に含まれるフラグ値が無効である場合、アクセス要求に含まれる識別子に応じて、メモリ領域５へのアクセスを許可する。【選択図】図３
2019079219.tif 000002
【特許請求の範囲】
【請求項１】
バスと、
前記バスを介してアクセスされるメモリ領域と、
前記バスに出力されたアクセス要求に含まれる識別子が、予め定められた許可値と一致する場合に前記メモリ領域へのアクセスを許可するガード回路と、
デバッグフラグ設定レジスタと識別子設定レジスタとを備え、エミュレーション装置と接続可能であり、デバッグのための前記メモリ領域へのアクセスについて制御するデバッグマスタと
を有し、
前記デバッグマスタは、
前記デバッグフラグ設定レジスタに設定された値が第１の値である場合、有効なフラグ値を含む前記アクセス要求を前記バスに出力し、
前記デバッグフラグ設定レジスタに設定された値が第２の値である場合、無効なフラグ値と、前記識別子設定レジスタに設定された識別子とを含む前記アクセス要求を前記バスに出力し、
前記ガード回路は、
前記アクセス要求に含まれる前記フラグ値が有効である場合、前記識別子に関わらず、前記メモリ領域へのアクセスを許可し、
前記アクセス要求に含まれる前記フラグ値が無効である場合、前記アクセス要求に含まれる前記識別子に応じて、前記メモリ領域へのアクセスを許可する
半導体装置。
【請求項２】
前記デバッグマスタは、
前記エミュレーション装置により前記デバッグフラグ設定レジスタに設定された値に基づく無効な前記フラグ値と、前記エミュレーション装置により前記識別子設定レジスタに設定された前記識別子とを含む前記アクセス要求を前記バスに出力し、
前記ガード回路によるアクセス許否の判定結果を取得し、前記エミュレーション装置に該判定結果を出力する
請求項１に記載の半導体装置。
【請求項３】
前記エミュレーション装置により前記識別子設定レジスタには予め定められた範囲の各値が順に前記識別子として設定され、
前記デバッグマスタは、
順に設定される前記識別子毎の前記アクセス要求を前記バスに出力し、
前記ガード回路による前記識別子毎のアクセス許否の判定結果を取得し、前記エミュレーション装置に該判定結果を出力する
請求項２に記載の半導体装置。
【請求項４】
前記デバッグマスタは、さらに、エラーフラグレジスタを備え、
前記ガード回路は、アクセス許否の判定結果を、前記バスを介して前記デバッグマスタに通知し、
前記デバッグマスタは、通知された判定結果を前記エラーフラグレジスタに格納する
請求項１に記載の半導体装置。
【請求項５】
前記ガード回路のアクセス許否の判定結果が設定されるエラーステータスレジスタをさらに有し、
前記ガード回路は、前記半導体装置の状態が非デバッグモードである場合、アクセス許否の判定結果を前記エラーステータスレジスタに格納し、前記半導体装置の状態がデバッグモードである場合、アクセス許否の判定結果を、前記エラーステータスレジスタへの格納に代えて、前記バスを介して前記デバッグマスタに通知する
請求項４に記載の半導体装置。
【請求項６】
演算実行部をさらに有し、
前記演算実行部の制御にしたがって、前記デバッグフラグ設定レジスタには予め定められた範囲の各値が順に前記識別子として設定され、
前記デバッグマスタは、順に設定される前記識別子毎に、無効な前記フラグ値と前記識別子とを含む前記アクセス要求を前記バスに出力し、
前記演算実行部は、前記ガード回路による前記識別子毎のアクセス許否の判定結果を取得し、該判定結果が予め定められた合格条件を満たすか否かを検査する
請求項１に記載の半導体装置。
【請求項７】
半導体装置と、
エミュレーション装置と、を備え、
前記半導体装置は、
バスと、
前記バスを介してアクセスされるメモリ領域と、
前記バスに出力されたアクセス要求に含まれる識別子が、予め定められた許可値と一致する場合に前記メモリ領域へのアクセスを許可するガード回路と、
デバッグフラグ設定レジスタと識別子設定レジスタとを備え、前記エミュレーション装置と接続可能であり、デバッグのための前記メモリ領域へのアクセスについて制御するデバッグマスタと
を有し、
前記エミュレーション装置は、前記デバッグフラグ設定レジスタの値及び前記識別子設定レジスタの値を設定し、
前記デバッグマスタは、
前記デバッグフラグ設定レジスタに設定された値が第１の値である場合、有効なフラグ値を含む前記アクセス要求を前記バスに出力し、
前記デバッグフラグ設定レジスタに設定された値が第２の値である場合、無効なフラグ値と、前記識別子設定レジスタに設定された識別子とを含む前記アクセス要求を前記バスに出力し、
前記ガード回路は、
前記アクセス要求に含まれる前記フラグ値が有効である場合、前記識別子に関わらず、前記メモリ領域へのアクセスを許可し、
前記アクセス要求に含まれる前記フラグ値が無効である場合、前記アクセス要求に含まれる前記識別子に応じて、前記メモリ領域へのアクセスを許可する
デバッグシステム。
【請求項８】
前記デバッグマスタは、
前記エミュレーション装置により前記デバッグフラグ設定レジスタに設定された値に基づく無効な前記フラグ値と、前記エミュレーション装置により前記識別子設定レジスタに設定された前記識別子とを含む前記アクセス要求を前記バスに出力し、
前記ガード回路によるアクセス許否の判定結果を取得し、
前記エミュレーション装置に該判定結果を出力し、
前記エミュレーション装置は、該判定結果を表示出力する
請求項７に記載のデバッグシステム。
【請求項９】
前記エミュレーション装置は、受け付けた入力操作により指定された前記識別子を前記識別子設定レジスタに設定する
請求項８に記載のデバッグシステム。
【請求項１０】
前記エミュレーション装置は、予め定められた範囲の各値を順に前記識別子として設定し、
前記デバッグマスタは、
順に設定される前記識別子毎に、無効な前記フラグ値と前記識別子とを含む前記アクセス要求を前記バスに出力し、
前記デバッグマスタは、前記ガード回路による前記識別子毎のアクセス許否の判定結果を取得し、前記エミュレーション装置に該判定結果を出力し、
前記エミュレーション装置は、前記識別子毎のアクセス許否の判定結果を一覧表示する
請求項８に記載のデバッグシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及びデバッグシステムに関し、例えば、メモリ領域へのアクセスを識別子に基づいて許可するガード回路を有する半導体装置及びデバッグシステムに関する。
【背景技術】
【０００２】
半導体装置で実行されるプログラムの開発段階において、デバッグは重要な作業である。このため、半導体装置におけるデバッグに関する様々な技術が提案されている。例えば、特許文献１では、デバッガインタフェースを備えた情報処理半導体装置にデバッガを接続して、プログラムのデバッグを行うことについて開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３４１９５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
半導体装置においてプログラムが実行される際、メモリへのアクセスが発生しうる。メモリへのアクセスをセキュアに実現するための技術が半導体装置に設けられている場合、プログラムにバグが含まれているときのみならず、当該技術が正しく動作していないときにも、半導体装置の所望の動作を実現できない。
【０００５】
このため、メモリへのアクセスをセキュアに実現するための技術が半導体装置に設けられている場合、所望の動作が実現できない原因を特定することが難しいという問題があった。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、半導体装置は、デバッグフラグ設定レジスタと識別子設定レジスタとを備え、デバッグのためのメモリ領域へのアクセスについて制御するデバッグマスタと、ガード回路とを有する。前記デバッグマスタは、前記デバッグフラグ設定レジスタに設定された値が第１の値である場合、有効なフラグ値を含むアクセス要求をバスに出力し、設定された値が第２の値である場合、無効なフラグ値と、前記識別子設定レジスタに設定された識別子とを含むアクセス要求をバスに出力する。前記ガード回路は、前記アクセス要求に含まれる前記フラグ値が有効である場合、前記メモリ領域へのアクセスを許可し、前記アクセス要求に含まれる前記フラグ値が無効である場合、前記アクセス要求に含まれる前記識別子に応じて、前記メモリ領域へのアクセスを許可する。
【発明の効果】
【０００８】
前記一実施の形態によれば、半導体装置の所望の動作を実現するためのデバッグを容易に行うことができる。
【図面の簡単な説明】
【０００９】
【図１】比較例にかかるマイクロコンピュータの構成の一例を示す模式図である。
【図２】マイクロコンピュータにおけるプログラムの階層モデルを示す模式図である。
【図３】実施の形態の概要にかかるデバッグシステムの構成の一例を示す模式図である。
【図４】実施の形態１にかかるデバッグシステムの構成の一例を示す模式図である。
【図５】アクセス可否についてまとめた表の一例を示す図である。
【図６】エミュレーション装置において、デバッガが表示部に表示するＧＵＩの表示の一例を示す模式図である。
【図７】アクセスが成功したか否かについての一覧表示の一例を示す図である。
【図８】実施の形態３にかかるデバッグシステムの構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１０】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１１】
＜比較例＞
実施の形態について説明する前に、実施の形態に対する比較例について説明する。図１は、比較例にかかるマイクロコンピュータ５０の構成の一例を示す模式図である。マイクロコンピュータ５０は、メモリ領域へのアクセスをセキュアに実現するための技術が設けられている。以下、マイクロコンピュータ５０について説明する。
【００１２】
図１に示したマイクロコンピュータ５０は、バスマスタとして、演算実行部１１０＿１、１１０＿２、ＤＭＡ（Direct Memory Access）コントローラ１２０に加え、デバッグマスタ５１を有する。これらのバスマスタは、データバス１３０を介して、メモリ領域１４０＿１〜１４０＿ｎにアクセスする。デバッグマスタ５１は、エミュレーション装置と接続可能であり、エミュレーション装置から指示されたアクセスについて制御する。エミュレーション装置は、デバッグマスタ５１を介して各種資源（メモリ空間）に対しリード処理及びライト処理を行う装置である。
【００１３】
また、マイクロコンピュータ５０は、ガード回路１５０＿１〜１５０＿ｎと、プロテクション設定レジスタ１５１＿１〜＿１５１ｎと、エラーステータスレジスタ１５２＿１〜１５２＿ｎを有する。具体的には、メモリ領域１４０＿ｉに対して、ガード回路１５０＿ｉが設けられており、ガード回路１５０＿ｉに対して、プロテクション設定レジスタ１５１＿ｉ及びエラーステータスレジスタ１５２＿ｉが設けられている。なお、ｎは、１以上の整数であり、ｉは１以上ｎ以下の整数である。
【００１４】
バスマスタからのアクセス要求が、データバス１３０に出力され、メモリ領域１４０＿１〜１４０＿ｎへのアクセスが実現される。ここで、データバス１３０に出力されるアクセス要求は、アクセスアドレス（ＡＤＤＲ）、アクセスデータ（ＤＡＴＡ）、アクセス属性（Ｒ／Ｗ）、システム保護識別子（ＳＰＩＤ）、デバッグマスタアクセスフラグ（ＤＢＧ）を含みうる。
【００１５】
アクセスアドレスは、アクセス先を特定するアドレス情報である。アクセスデータは、アクセス要求により書き込まれるデータ又は読み出されるデータである。アクセス属性は、アクセスの種別（リード又はライト）を示す情報である。システム保護識別子は、バスマスタからのアクセス要求がアクセス先へのアクセス権を有するものであるか否かをガード回路１５０＿ｉが判定するために用いられる識別子であり、アクセスの主体を識別する識別子である。言い換えると、システム保護識別子は、アクセスの要求元を識別する識別子である。なお、以下の説明では、システム保護識別子をＳＰＩＤと称す。デバッグマスタアクセスフラグは、デバッグマスタ５１によるアクセス要求であることを示すためのフラグ情報である。
【００１６】
マイクロコンピュータ５０において、デバッグマスタ５１以外のバスマスタは、予め割り当てられたＳＰＩＤを含むアクセス要求をデータバス１３０に出力してアクセスを実行する。なお、デバッグマスタ５１以外のバスマスタが出力するアクセス要求では、デバッグマスタアクセスフラグの値は無効値である。また、マイクロコンピュータ５０において、デバッグマスタ５１は、デバッグマスタアクセスフラグの値が有効値であるアクセス要求を出力する。ここで、デバッグマスタ５１が出力するアクセス要求は、ＳＰＩＤを含まない。
【００１７】
ガード回路１５０＿ｉは、バスマスタからデータバス１３０に出力されたアクセス要求のうちメモリ領域１４０＿ｉへのアクセスを要求するアクセス要求に対し、当該アクセス要求に含まれる識別子が、プロテクション設定レジスタ１５１＿ｉに予め設定された許可値と一致するか否かを判定する。プロテクション設定レジスタ１５１＿ｉには、メモリ領域１４０＿ｉに対するアクセスを許可する識別子が許可値として予め設定されている。
ガード回路１５０＿ｉは、アクセスが許可されていないＳＰＩＤを伴うアクセス要求については、アクセスを許可せず、エラーの発生を示す状態値をエラーステータスレジスタ１５２＿ｉに格納する。このように、エラーステータスレジスタ１５２＿ｉは、ガード回路１５０＿ｉのアクセス許否の判定結果が設定されるレジスタである。
【００１８】
プロテクション設定レジスタ１５１＿１〜１５１＿ｎへの許可値の設定は、アクセス権の設定を司るプログラムであるハイパーバイザーを演算実行部１１０＿１又は演算実行部１１０＿２が実行することにより行われる。
図２は、マイクロコンピュータ５０におけるプログラムの階層モデルを示す模式図である。ハイパーバイザーは、プロテクション設定レジスタ１５１＿１〜１５１＿ｎの設定に加え、図２に示すように、アクセスの実行主体であるスーパーバイザー（ＯＳ（Operating System））及びユーザプログラムにＳＰＩＤを割り当てる。デバッグマスタ５１以外の各バスマスタは、実行中のプログラムに割り当てられたＳＰＩＤをバスアクセス情報としてアクセス要求に含め、データバス１３０に出力する。
なお、ハイパーバイザーは、デバッグマスタ５１以外の各バスマスタにＳＰＩＤを固定的に割り当ててもよい。この場合、デバッグマスタ５１以外の各バスマスタは、メモリアクセスが発生すると、バスマスタに割り当てられたＳＰＩＤを含むアクセス要求をデータバス１３０に出力することとなる。
【００１９】
図２に示されるプログラム（ハイパーバイザー、スーパーバイザー、ユーザプログラム）は、例えば演算実行部１１０＿１（又は演算実行部１１０＿２）のメモリ１１１＿１（メモリ１１１＿２）に記憶されており、演算実行部１１０＿１（又は演算実行部１１０＿２）のＣＰＵ（Central Processing Unit）１１２＿１（ＣＰＵ１１２＿２）により実行される。
【００２０】
このような構成により、マイクロコンピュータ５０では、メモリ領域１４０＿１〜１４０＿ｎ毎に、プロテクト設定をすることができる。以上説明した通り、マイクロコンピュータ５０は、メモリ空間に対するアクセス権を判定することでセキュアなアクセスを実現するバスシステムを備えている。
【００２１】
ところで、エミュレーション装置は、デバッグ作業のために用いられる。デバッグ作業では、任意のメモリ空間の値について参照および書き換えを行いたいというユーザのニーズがあるため、エミュレーション装置は、全メモリ空間について、記憶されている値の参照、及び記憶されている値の書き換えができる必要がある。このため、ハイパーバイザーによるアクセス権についての設定にかかわらず、デバッグマスタ５１からのアクセスは成功する必要がある。このため、デバッグマスタ５１は、上述の通り、デバッグマスタアクセスフラグを有効値にセットしてアクセス要求を出力する。そして、ガード回路１５０＿１〜１５０＿ｎは、デバッグマスタアクセスフラグが有効値であるアクセス要求については、アクセス権限の判定対象とせず、アクセスを許可する。このような構成により、エミュレーション装置は、全メモリ空間について、参照及び書き換えを自由に行うことができる。
【００２２】
比較例では、次のような課題がある。上述の通り、エミュレーション装置からは、全メモリ空間を参照可能である。すなわち、デバッグマスタ５１は、全メモリ空間にアクセスできる。ここで、ハイパーバイザーによるアクセス権についての設定（すなわち、プロテクション設定レジスタ１５１＿１〜１５１＿ｎの設定又はＳＰＩＤの割り当ての設定）に誤りがある場合、ユーザプログラムは適切にメモリ領域１４０＿１〜１４０＿ｎにアクセスできない。例えば、ユーザプログラムの実行では、ある領域へのアクセスに失敗するものの、エミュレーション装置の表示を用いたユーザの解析では、当該領域を参照することができてしまうため、アクセスの失敗に対する効果的なデバッグが困難である。このように、比較例においては、メモリへのアクセスをセキュアに実現するための技術がマイクロコンピュータに設けられているため、所望の動作が実現できない原因を特定することが難しいという問題がある。
【００２３】
＜実施の形態の概要＞
次に、実施の形態の概要について説明する。図３は、実施の形態の概要にかかるデバッグシステム１の構成の一例を示す模式図である。デバッグシステム１は、マイクロコンピュータなどの半導体装置２と、半導体装置２に接続されるエミュレーション装置３とを備える。
【００２４】
半導体装置２は、バス４と、メモリ領域５と、ガード回路６と、デバッグマスタ７とを有する。メモリ領域５は、バス４を介して、デバッグマスタ７を含むバスマスタによりアクセスされる領域である。ガード回路６は、バス４に出力されたアクセス要求に含まれる識別子が予め定められた許可値と一致する場合に、メモリ領域５へのアクセスを許可する回路である。デバッグマスタ７は、デバッグのためのメモリ領域５へのアクセスについて制御するバスマスタである。デバッグマスタ７は、デバッグフラグ設定レジスタ８と識別子設定レジスタ９とを備えている。また、デバッグマスタ７は、エミュレーション装置３と接続可能である。
【００２５】
エミュレーション装置３は、半導体装置２で実行されるプログラムのデバッグのために用いられる装置であり、デバッグマスタ７と接続される。また、エミュレーション装置３は、デバッグマスタ７のデバッグフラグ設定レジスタ８の値、及び識別子設定レジスタ９の値を設定することができる。エミュレーション装置３は、デバッグフラグ設定レジスタ８に第１の値又は第１の値とは異なる第２の値のいずれかの値を設定する。また、エミュレーション装置３は、識別子設定レジスタ９に識別子（上述のシステム保護識別子（ＳＰＩＤ））を設定する。
【００２６】
デバッグマスタ７は、デバッグフラグ設定レジスタ８に設定された値が第１の値である場合、有効なフラグ値を含むアクセス要求をバス４に出力する。また、デバッグマスタ７は、デバッグフラグ設定レジスタ８に設定された値が第２の値である場合、無効なフラグ値と、識別子設定レジスタ９に設定された識別子とを含むアクセス要求をバス４に出力する。
【００２７】
ガード回路６は、アクセス要求に含まれるフラグ値が有効である場合、識別子（ＳＰＩＤ）に関わらず、メモリ領域５へのアクセスを許可する。これに対し、ガード回路６は、アクセス要求に含まれるフラグ値が無効である場合、アクセス要求に含まれる識別子（ＳＰＩＤ）に応じて、メモリ領域５へのアクセスを許可する。すなわち、この場合、ガード回路６は、アクセス要求に含まれる識別子が、予め定められた許可値と一致する場合にメモリ領域５へのアクセスを許可する。言い換えると、ガード回路６は、アクセス要求に含まれる識別子が、予め定められた許可値と異なる場合には、メモリ領域５へのアクセスを許可しない。
【００２８】
デバッグシステム１では、デバッグフラグ設定レジスタ８に第１の値が設定されている場合、上記比較例と同様、デバッグマスタ７は全メモリ空間にアクセスできるが、デバッグフラグ設定レジスタ８に第２の値が設定されている場合、識別子設定レジスタ９に設定された識別子に応じてアクセスの許否が判定される。すなわち、デバッグフラグ設定レジスタ８の値が第２の値である場合のデバッグマスタ７のアクセスの成否の結果に基づいて、ガード回路６によるメモリ領域５の保護機能の動作を確認することができる。このため、比較例よりも容易にバグの原因を解析することが可能となる。つまり、デバッグシステム１によれば、半導体装置２の所望の動作を実現するためのデバッグを容易に行うことができる。
【００２９】
＜実施の形態１＞
次に、実施の形態１について説明する。図４は、実施の形態１にかかるデバッグシステム１０の構成の一例を示す模式図である。デバッグシステム１０は、マイクロコンピュータ１００と、マイクロコンピュータ１００に接続されるエミュレーション装置２００とを備える。マイクロコンピュータ１００は、上述の半導体装置２のより詳細な構成例であり、エミュレーション装置２００は、上述のエミュレーション装置３のより詳細な構成例である。
【００３０】
まず、エミュレーション装置２００について説明する。エミュレーション装置２００は、図３のエミュレーション装置３に相当し、マイクロコンピュータ１００で実行されるプログラムのデバッグのために用いられる。ここで、マイクロコンピュータ１００で実行されるプログラムのデバッグとは、ユーザプログラムのデバッグに限らず、ハイパーバイザー及びスーパーバイザーのデバッグを含んでもよい。
エミュレーション装置２００は、マイクロコンピュータ１００の接続端子１６０を介してデバッグマスタ１７０と電気的に接続され、デバッグマスタ１７０を介してメモリ領域１４０＿１〜１４０＿ｎに対しリード処理及びライト処理を行う。なお、メモリ領域１４０＿１〜１４０＿ｎは、図３のメモリ領域５に相当する。
【００３１】
以下の説明において、メモリ領域１４０＿１〜１４０＿ｎについて、これらを区別せずに言及する場合、メモリ領域１４０と称すことがある。同様に、ガード回路１５０＿１〜１５０＿ｎについて、ガード回路１５０と称し、プロテクション設定レジスタ１５１＿１〜１５１＿ｎについて、プロテクション設定レジスタ１５１と称し、エラーステータスレジスタ１５２＿１〜１５２＿ｎについて、エラーステータスレジスタ１５２と称すことがある。
【００３２】
エミュレーション装置２００は、例えば、図４に示すように、ＣＰＵ２０１、メモリ２０２、入力部２０３、表示部２０４、インタフェース部２０５を有し、コンピュータとしての機能を有する。ＣＰＵ２０１は、例えばメモリ２０２に格納されたデバッガを実行する。エミュレーション装置２００の動作は、デバッガがＣＰＵ２０１により実行されることで行われる。
【００３３】
入力部２０３は、ユーザからの入力操作を受け付ける装置であり、例えば、キーボード、マウスなどである。表示部２０４は、情報を表示するための装置であり、例えば、フラットパネルディスプレイである。インタフェース部２０５は、エミュレーション装置２００とマイクロコンピュータ１００とで通信するためのインタフェースであり、例えば、ＪＴＡＧ(Joint Test Action Group)などの所定の規格に準拠したインタフェースである。
【００３４】
エミュレーション装置２００の入力部２０３は、例えば、アクセスアドレス、アクセス属性、アクセスデータなどの入力を受け付ける。特に、本実施の形態では、エミュレーション装置２００は、マイクロコンピュータ１００のデバッグマスタ１７０のデバッグフラグ設定レジスタ１７１に設定する値、及び識別子設定レジスタ１７２に設定する値を受け付ける。デバッガは、デバッグフラグ設定レジスタ１７１に設定する値が入力されると、入力された値をデバッグフラグ設定レジスタ１７１に設定する。同様に、デバッガは、識別子設定レジスタ１７２に設定する値が入力されると、入力された値を識別子設定レジスタ１７２に設定する。
例えば、ユーザは、全メモリ空間について参照可能としたい場合、デバッグフラグ設定レジスタ１７１に第１の値を設定するよう入力する。また、ユーザは、特定のＳＰＩＤを伴うアクセス要求についてのガード回路１５０による保護機能の動作を知りたい場合、デバッグフラグ設定レジスタ１７１に第２の値を設定するよう入力する。なお、この場合、ユーザは、この特定のＳＰＩＤを指定する入力も行う。この入力されたＳＰＩＤは、識別子設定レジスタ１７２に設定されることとなる。なお、デバッグフラグ設定レジスタ１７１及び識別子設定レジスタ１７２の設定において、必ずしもユーザからの入力を必要としなくてもよい。すなわち、デバッガは、予め定められた値をレジスタに設定してもよい。
【００３５】
また、デバッガは、入力部２０３が受け付けた情報に基づいて、マイクロコンピュータ１００のデバッグマスタ１７０にメモリ領域１４０へのアクセスを指示する。デバッグマスタ１７０は、エミュレーション装置２００から指示されたアクセスを実行するためのアクセス要求をデータバス１３０に出力する。
【００３６】
次に、マイクロコンピュータ１００について説明する。マイクロコンピュータ１００は、演算実行部１１０＿１、１１０＿２と、ＤＭＡコントローラ１２０と、デバッグマスタ１７０と、データバス１３０と、メモリ領域１４０＿１〜１４０＿ｎと、ガード回路１５０＿１〜１５０＿ｎと、プロテクション設定レジスタ１５１＿１〜１５１＿ｎと、エラーステータスレジスタ１５２＿１〜１５２＿ｎとを有する。なお、図４に示した例では、マイクロコンピュータ１００は２つの演算実行部１１０＿１、１１０＿２を有するが、マイクロコンピュータ１００は３つ以上の演算実行部を有してもよいし、１つの演算実行部を有してもよい。マイクロコンピュータ１００においても、ガード回路１５０により、メモリ領域１４０へのアクセスがセキュアに実現される。
【００３７】
なお、以下の説明において、演算実行部１１０＿１、１１０＿２について、これらを区別せずに言及する場合、演算実行部１１０と称すことがある。また、演算実行部１１０が有するＣＰＵ１１２＿１、１１２＿２について、これらを区別せずに言及する場合、ＣＰＵ１１２と称すことがある。同様に、メモリ１１１＿１、１１１＿２について、これらを区別せずに言及する場合、メモリ１１１と称すことがある。
【００３８】
マイクロコンピュータ１００は、デバッグマスタ５１がデバッグマスタ１７０に置き換えられた点で、比較例にかかるマイクロコンピュータ５０と異なる。すなわち、マイクロコンピュータ１００は、バスマスタとして、演算実行部１１０、ＤＭＡコントローラ１２０、デバッグマスタ１７０を有し、これらのバスマスタは、図３のバス４に相当するデータバス１３０を介して、メモリ領域１４０にアクセスする。なお、バスマスタからのアクセス要求は、比較例と同様、アクセスアドレス（ＡＤＤＲ）、アクセスデータ（ＤＡＴＡ）、アクセス属性（Ｒ／Ｗ）、システム保護識別子（ＳＰＩＤ）、デバッグマスタアクセスフラグ（ＤＢＧ）を含みうる。
【００３９】
デバッグマスタ１７０は、図３のデバッグマスタ７に相当し、マイクロコンピュータ１００の接続端子１６０を介してエミュレーション装置２００と接続可能であり、エミュレーション装置２００から指示されたアクセスについて制御する制御回路である。ただし、デバッグマスタ１７０は、デバッグフラグ設定レジスタ１７１と識別子設定レジスタ１７２とを備えている点で、比較例にかかるデバッグマスタ５１と異なる。デバッグマスタ１７０は、これらのレジスタに設定された値に基づいて、デバッグのためのメモリ領域１４０へのアクセスについて制御する。
【００４０】
マイクロコンピュータ１００において、デバッグマスタ１７０以外のバスマスタは、アクセスが必要な場合、比較例と同様に、アクセス要求をデータバス１３０に出力する。比較例にかかるデバッグマスタ５１が出力するアクセス要求におけるデバッグマスタアクセスフラグの値は、常に有効値であるが、本実施の形態では、デバッグフラグ設定レジスタ１７１の値に依存する。
【００４１】
デバッグマスタ１７０は、デバッグフラグ設定レジスタ１７１に設定されたデバッグフラグ値が第１の値である場合、有効なデバッグマスタアクセスフラグを含むアクセス要求をデータバス１３０に出力する。この場合、デバッグマスタ１７０は、エミュレーション装置２００から指定されたアクセスアドレスに対し、エミュレーション装置２００から指定されたアクセスを実行するためのアクセス要求を出力する。言い換えると、デバッグマスタ１７０は、エミュレーション装置２００から指定されたアクセス内容を実現するよう、アクセスアドレス、アクセスデータ、アクセス属性といった情報をデバッグマスタアクセスフラグとともに含むアクセス要求を出力する。
デバッグフラグ設定レジスタ１７１に設定された値が第１の値である場合、ＳＰＩＤに関わらず、ガード回路１５０はアクセスを許可する。このため、デバッグフラグ設定レジスタ１７１に設定された値が第１の値である場合、デバッグマスタ１７０が出力するアクセス要求はＳＰＩＤを含む必要がないが、設定された値が第１の値の場合もアクセス要求がＳＰＩＤを含むよう、デバッグマスタ１７０が構成されてもよい。このように本実施の形態では、デバッグマスタアクセスフラグは、ガード回路１５０による保護機能を用いるか否かを示すフラグ情報である。
【００４２】
また、デバッグマスタ１７０は、デバッグフラグ設定レジスタ１７１に設定された値が第２の値である場合、無効なデバッグマスタアクセスフラグと、識別子設定レジスタ１７２に設定された識別子（すなわち、ＳＰＩＤ）とを含むアクセス要求をデータバス１３０に出力する。この場合も、デバッグマスタ１７０は、エミュレーション装置２００から指定されたアクセスアドレスに対し、エミュレーション装置２００から指定されたアクセスを実行するためのアクセス要求を出力する。言い換えると、デバッグマスタ１７０は、エミュレーション装置２００から指定されたアクセス内容を実現するよう、アクセスアドレス、アクセスデータ、アクセス属性といった情報をデバッグマスタアクセスフラグ及びＳＰＩＤとともに含むアクセス要求を出力する。
【００４３】
また、デバッグマスタ１７０は、デバッグフラグ設定レジスタ１７１に設定された値が第２の値である場合、ガード回路１５０によるアクセス許否の判定結果を取得し、エミュレーション装置２００に判定結果を出力する。すなわち、デバッグマスタ１７０は、エミュレーション装置２００によりデバッグフラグ設定レジスタ１７１に設定された値に基づく無効なフラグ値（無効なデバッグマスタアクセスフラグ）と、エミュレーション装置２００により識別子設定レジスタ１７２に設定された識別子とを含むアクセス要求をデータバス１３０に出力し、このアクセス要求に対するガード回路１５０によるアクセス許否の判定結果を取得し、エミュレーション装置２００に判定結果を出力する。なお、本実施の形態では、デバッグマスタ１７０は、例えば、エラーステータスレジスタ１５２を参照することにより、判定結果を取得する。具体的には、例えば、デバッグマスタ１７０は、エラーステータスレジスタ１５２＿１〜１５２＿ｎのそれぞれのアドレスをテーブルにより予め管理しておき、アクセス要求を出力後、当該アクセス要求で指定したアクセス先に対応するエラーステータスレジスタ１５２を特定し、特定したエラーステータスレジスタ１５２の値を読み出すことにより、判定結果を取得する。
【００４４】
ガード回路１５０は、図３のガード回路６に相当する。したがって、ガード回路１５０は、アクセス要求に含まれるフラグ値（デバッグマスタアクセスフラグ）が有効である場合、ＳＰＩＤの確認をせず、メモリ領域１４０へのアクセスを許可する。これに対し、ガード回路１５０＿ｉは、アクセス要求に含まれるフラグ値（デバッグマスタアクセスフラグ）が無効である場合、アクセス要求に含まれる識別子（ＳＰＩＤ）が、プロテクション設定レジスタ１５１＿ｉに予め設定された許可値（すなわち、アクセスが許可されるＳＰＩＤ）と一致する場合にメモリ領域１４０＿ｉへのアクセスを許可する。言い換えると、ガード回路１５０＿ｉは、アクセス要求に含まれるフラグ値が無効である場合、アクセス要求に含まれる識別子（ＳＰＩＤ）が、プロテクション設定レジスタ１５１＿ｉに予め設定された許可値と一致しない場合にメモリ領域１４０＿ｉへのアクセスを許可しない。この場合、ガード回路１５０は、エラーの発生を示す状態値をエラーステータスレジスタ１５２＿ｉに格納する。
【００４５】
上述の通り、デバッグマスタ１７０は、ガード回路１５０によるアクセス許否の判定結果を取得し、エミュレーション装置２００に判定結果を出力する。エミュレーション装置２００は、デバッグマスタ１７０から判定結果を取得すると、判定結果を表示出力する。すなわち、エミュレーション装置２００の表示部２０４が判定結果を表示する。このように、デバッグシステム１０では、デバッグフラグ設定レジスタ１７１に設定された値が第２の値である場合、特定の識別子（ＳＰＩＤ）を伴うアクセス要求についてのガード回路１５０によるアクセス許否の判定結果がエミュレーション装置２００に出力される。このため、ユーザは、エミュレーション装置２００による表示により、特定のＳＰＩＤのガード回路１５０によるアクセス許否の判定結果を確認することができる。
【００４６】
以上説明した通り、デバッグシステム１０においては、デバッグフラグ設定レジスタ１７１に第１の値を設定することで、比較例と同様のデバッグ作業を行うことができる。すなわち、この場合、デバッグマスタアクセスフラグが有効なバスアクセスが発生し、各ガード回路１５０はメモリ領域１４０へのアクセスを許可する。これに対し、デバッグフラグ設定レジスタ１７１に第２の値を設定することで、特定のＳＰＩＤを伴うバスアクセスをエミュレートすることができる。すなわち、この場合、デバッグマスタアクセスフラグが無効なバスアクセスが発生し、識別子設定レジスタ１７２に設定されたＳＰＩＤを伴うバスアクセスをエミュレートすることができる。
【００４７】
ここで、デバッグシステム１０における具体的な設定例について説明する。ここでは、一例として、演算実行部１１０＿１のＣＰＵ１１２＿１が演算実行部１１０＿１のメモリ１１１＿１に記憶されたハイパーバイザーを実行するものとする。また、演算実行部１１０＿１のＣＰＵ１１２＿１が演算実行部１１０＿１のメモリ１１１＿１に記憶されたユーザプログラムＡを実行し、演算実行部１１０＿２のＣＰＵ１１２＿２が演算実行部１１０＿２のメモリ１１１＿２に記憶されたユーザプログラムＢを実行するものとする。
【００４８】
ここで、ハイパーバイザーによって、アクセスが許可されるＳＰＩＤの値として、「００１」がプロテクション設定レジスタ１５１＿１に設定され、「００２」がプロテクション設定レジスタ１５１＿２に設定されたとする。すなわち、ガード回路１５０＿１は、ＳＰＩＤとして「００１」を含むアクセス要求についてアクセスを許可し、ガード回路１５０＿２は、ＳＰＩＤとして「００２」を含むアクセス要求についてアクセスを許可する。また、ハイパーバイザーによって、ユーザプログラムＡに対し、ＳＰＩＤの値として「００１」を割り当て、ユーザプログラムＢに対し、「００２」を割り当てたとする。
【００４９】
図５は、このような設定が行われた際のアクセス可否についてまとめた表である。なお、図５においては、ユーザプログラムＡのアクセス要求に対するアクセス結果、ユーザプログラムＢのアクセス要求に対するアクセス結果、比較例にかかるデバッグマスタ５１によるアクセス要求に対するアクセス結果、及び本実施の形態にかかるデバッグマスタ１７０によるアクセス要求に対するアクセス結果を示している。なお、デバッグマスタ１７０によるアクセス要求に対するアクセス結果としては、デバッグフラグ設定レジスタ１７１に第２の値（すなわち、デバッグマスタアクセスフラグを無効にするための値）が設定され、かつ、識別子設定レジスタ１７２に「００１」が設定された場合のアクセス要求に対するアクセス結果と、デバッグフラグ設定レジスタ１７１に第２の値が設定され、かつ、識別子設定レジスタ１７２に「００２」が設定された場合のアクセス要求に対するアクセス結果とが示されている。
【００５０】
比較例にかかるデバッグマスタ５１では、デバッグマスタアクセスフラグは常に有効であるため、図５の表に示すように、メモリ領域１４０＿１、１４０＿２の両方にアクセスすることができる。すなわち、デバッガによる表示画面では、メモリ領域１４０＿１、１４０＿２が記憶している値がそれぞれ表示されることとなる。つまり、ガード回路１５０によるアクセスの許否を確認することができない。したがって、比較例では、メモリ領域１４０に対するアクセスに関する処理が適切に行えていないことに起因する意図しないプログラム動作について、その原因を、ユーザがデバッガを用いて解析することが難しい。これに対し、本実施の形態にかかるデバッグマスタ１７０では、ＳＰＩＤに応じたアクセスの許否結果を得ることができる。このため、ガード回路１５０によるアクセス許否の動作を確認することができる。例えば、ユーザプログラムＢにおいてメモリ領域１４０＿１からデータを読み出す処理を実現したい場合に、ユーザプログラムＢがメモリ領域１４０＿１のアクセスに失敗するとき、ユーザは、デバッグマスタ１７０にユーザプログラムＢのＳＰＩＤを設定することにより、当該ＳＰＩＤを用いたアクセスに対するガード回路１５０による動作を確認することができる。
【００５１】
図６は、エミュレーション装置２００において、デバッガが表示部２０４に表示するＧＵＩの表示の一例を示す模式図である。ユーザプログラムのメモリ領域１４０へのアクセスが適切ではない場合、ユーザは、例えば、図６に示すＧＵＩを用いて、ハイパーバイザーによるアクセス権についての設定（すなわち、プロテクション設定レジスタ１５１の設定又はＳＰＩＤの割り当て設定）にバグがあるのか、ユーザプログラムにバグがあるのかを確認することができる。
図６に示すＧＵＩの表示は、アドレス入力テキストボックス６０１と、ＳＰＩＤ入力テキストボックス６０２と、書き込み値入力テキストボックス６０３と、書き込みボタン６０４と、読み出しボタン６０５と、読み出し値表示領域６０６と、アクセス結果表示領域６０７とを有する。
【００５２】
アドレス入力テキストボックス６０１は、アクセスアドレスを指定するためのテキストボックスである。ＳＰＩＤ入力テキストボックス６０２は、ＳＰＩＤを指定するためのテキストボックスである。書き込み値入力テキストボックス６０３は、メモリ領域１４０に書き込む値を指定するためのテキストボックスである。書き込みボタン６０４は、書き込み値入力テキストボックス６０３に入力された値のメモリ領域１４０への書き込みの実行を指示するためのボタンである。読み出しボタン６０５は、メモリ領域１４０に記憶された値の読み出しの実行を指示するためのボタンである。読み出し値表示領域６０６は、読み出された値を表示するための領域である。アクセス結果表示領域６０７は、アクセスが成功したか否かを表示するための領域である。
【００５３】
エミュレーション装置２００において、入力部２０３が書き込みボタン６０４の押下操作を受け付けると、デバッガは、アドレス入力テキストボックス６０１に入力されたアドレスのメモリ領域に、書き込み値入力テキストボックス６０３に入力された値を書き込むようデバッグマスタ１７０に通知する。このとき、デバッガは、ＳＰＩＤ入力テキストボックス６０２に入力されたＳＰＩＤも通知する。つまり、デバッガは、識別子設定レジスタ１７２にＳＰＩＤを設定する。これに対し、デバッグマスタ１７０は、デバッガが通知したこれらの情報と、無効なデバッグマスタアクセスフラグとを含むアクセス要求をデータバス１３０に出力する。その後、デバッグマスタ１７０は、当該アクセス要求に対するガード回路１５０によるアクセス許否の判定結果を取得し、デバッガに通知する。そして、デバッガは、アクセス結果表示領域６０７にアクセスが成功したか否かを表示する。
【００５４】
また、エミュレーション装置２００において、入力部２０３が読み出しボタン６０５の押下操作を受け付けると、デバッガは、アドレス入力テキストボックス６０１に入力されたアドレスのメモリ領域から値を読み出すようデバッグマスタ１７０に通知する。このとき、デバッガは、ＳＰＩＤ入力テキストボックス６０２に入力されたＳＰＩＤも通知する。つまり、デバッガは、識別子設定レジスタ１７２にＳＰＩＤを設定する。これに対し、デバッグマスタ１７０は、デバッガが通知したこれらの情報と、無効なデバッグマスタアクセスフラグとを含むアクセス要求をデータバス１３０に出力する。その後、デバッグマスタ１７０は、当該アクセス要求に対するガード回路１５０によるアクセス許否の判定結果を取得し、デバッガに通知する。アクセスに成功した場合は、デバッグマスタ１７０がデータバス１３０から取得した読み出し値についても、デバッガに通知する。そして、デバッガは、アクセス結果表示領域６０７にアクセスが成功したか否かを表示する。また、アクセスに成功した場合は、デバッガは、読み出し値表示領域６０６に読み出し値を表示する。
【００５５】
このように、エミュレーション装置２００は、受け付けた入力操作により指定された識別子（ＳＰＩＤ）を識別子設定レジスタ１７２に設定する。そして、デバッグマスタ１７０は、識別子設定レジスタ１７２に設定された識別子を用いてアクセスを要求する。このため、ユーザは、ユーザプログラムについてのデバッグ作業の際、図６に示したようなデバッガによるＧＵＩを用いて、任意のＳＰＩＤによるアクセスをエミュレートできる。このため、当該ユーザプログラムに割り当てられたＳＰＩＤによる各メモリ領域１４０へのアクセスの可否を容易に確認できる。また、任意のＳＰＩＤによるアクセスを疑似的に起こすことも可能であることから、ユーザプログラムの単体テストを実施するにあたって、他のプログラムからではないと設定できないメモリ領域の値を任意の値に設定したテストを、ユーザプログラムの開発者は実施できる。
【００５６】
以上説明した通り、本実施の形態にかかるデバッグシステム１０によれば、比較例よりも容易にバグの原因を解析することが可能である。つまり、デバッグシステム１０によれば、マイクロコンピュータ１００の所望の動作を実現するためのデバッグを容易に行うことができる。
【００５７】
＜実施の形態２＞
次に、実施の形態２について説明する。マイクロコンピュータ１００が所望の動作を実現するためには、ハイパーバイザーによるアクセス権についての設定に誤りがないことは非常に重要である。ハイパーバイザーよりも下位の階層に属するユーザプログラムの開発者は、各メモリ領域１４０に対する保護機能の仕様の詳細は意識せず、当該ユーザプログラムに割り当てられることになっているＳＰＩＤと、アクセスが許可されることになっているメモリ領域１４０についての情報とに基づいて当該ユーザプログラムの開発を行う。
【００５８】
また、ユーザプログラムによるアクセスがガード回路１５０により拒否された場合、このアクセスの失敗についてのエラーを処理するのはハイパーバイザーである。このようなことから、保護機能の仕様の詳細やエラー処理を行うプログラムの詳細については不明であるユーザプログラム開発者からすると、ハイパーバイザープログラムにミスがありためにアクセス権についての設定に誤りがある場合、ユーザプログラムが期待どおりに動かないことは、ユーザプログラムの開発に際し大きな問題である。
【００５９】
よって、ハイパーバイザーによるアクセス権についての設定に誤りがないことを確認するためのテストが求められる。そこで、実施の形態２にかかるデバッグシステム１０は、ハイパーバイザーによるアクセス権についての設定をテストするための処理を行う。実施の形態２にかかるデバッグシステム１０の構成は、実施の形態１と同様であるが、実施の形態２では、デバッグシステム１０は以下のような処理を行う。
【００６０】
識別子設定レジスタ１７２には、エミュレーション装置２００により、予め定められた範囲の各値が順に識別子（ＳＰＩＤ）として設定される。エミュレーション装置２００は、ハイパーバイザープログラムによるアクセス権についての設定処理が実行された後、例えば、ハイパーバイザーによって割り当てられ得るＳＰＩＤの値の範囲に属する各値を、順に識別子設定レジスタ１７２に設定する。これにより、例えば、識別子設定レジスタ１７２には、「００１」、「００２」、「００３」、「００４」といった値が順に設定される。
【００６１】
デバッグマスタ１７０は、順に設定されるＳＰＩＤ毎のアクセス要求をデータバス１３０に出力する。より詳細は、デバッグマスタ１７０は、順に設定されるＳＰＩＤ毎に、無効なバッグマスタアクセスフラグ値とＳＰＩＤとを含むアクセス要求を出力する。そして、デバッグマスタ１７０は、ガード回路１５０によるＳＰＩＤ毎のアクセス許否の判定結果を取得し、エミュレーション装置２００に判定結果を出力する。
すなわち、上記の例を用いて説明すると、デバッグマスタ１７０は、ＳＰＩＤが「００１」であるアクセス要求、ＳＰＩＤが「００２」であるアクセス要求、ＳＰＩＤが「００３」であるアクセス要求、ＳＰＩＤが「００４」であるアクセス要求を順に発行し、それぞれのアクセスが成功したか否かについての判定結果を取得して、エミュレーション装置２００に通知する。なお、デバッグマスタ１７０は、識別子設定レジスタ１７２に設定されたＳＰＩＤを用いて、例えば、全てのメモリ領域１４０に対し、順に、アクセスを行う。
デバッグマスタ１７０は、アクセス要求を発行するたびに、アクセス先のメモリ領域１４０に対応するエラーステータスレジスタ１５２を読み出す。エラーステータスレジスタ１５２の値がエラーの発生を示す状態値でない場合、デバッグマスタ１７０は、エミュレーション装置２００に「アクセス可」を通知する。これに対し、エラーステータスレジスタ１５２の値がエラーの発生を示す状態値である場合、デバッグマスタ１７０は、エミュレーション装置２００に「アクセス不可」を通知し、エラーステータスレジスタ１５２の値をクリアする。
【００６２】
エミュレーション装置２００は、デバッグマスタ１７０から通知されたＳＰＩＤ毎のアクセス許否の判定結果を一覧表示する。すなわち、エミュレーション装置２００の表示部２０４が判定結果を一覧表示する。より詳細には、図７に示すように、表示部２０４は、ＳＰＩＤ及びメモリ領域毎に、アクセスが成功したか否かを一覧表示する。例えば、仕様書に規定された設定ではメモリ領域１４０＿１へのアクセスが許可されるＳＰＩＤが「００１」及び「００２」であるとし、図７に示される一覧表示が行われた場合、ユーザは、ＳＰＩＤ「００２」によるメモリ領域１４０＿１へのアクセスに失敗していることを認識することができる。すなわち、ユーザは、ハイパーバイザーによるアクセス権についての設定に誤りがあることを認識することができる。
【００６３】
以上説明した通り、本実施の形態にかかるデバッグシステム１０では、デバッグマスタ１７０により各ＳＰＩＤを伴うアクセスを実施することで、ハイパーバイザーにより設定された保護機能をテストし、それらアクセスの実行結果を表示することができる。このため、ハイパーバイザープログラムによるアクセス権の設定について容易にテストすることができる。また、各ＳＰＩＤ及び各メモリ領域１４０についてアクセス結果を確認することができるため、ハイパーバイザープログラムにより設定された保護機能について網羅的にテストできる。このため、ハイパーバイザープログラムの品質を上げることが可能であり、その結果、ユーザプログラムのデバッグ効率の向上にも寄与する。
【００６４】
＜実施の形態３＞
次に、実施の形態３について説明する。本実施の形態は、ガード回路からデバッグマスタに対して、データバスを介してアクセスエラーの発生を通知する点で、上述の実施の形態と異なる。また、実施の形態２では、エミュレーション装置の制御のもと、アクセス権の設定についてのテストが行われたが、本実施の形態では、演算実行部の制御のもとテストが行われる。
【００６５】
図８は、実施の形態３にかかるデバッグシステム１０の構成の一例を示すブロック図である。実施の形態３にかかるデバッグシステム１０は、デバッグマスタ１７０がデバッグマスタ１８０に置き換わった点で上述の実施の形態にかかるデバッグシステム１０と異なる。ここで、デバッグマスタ１８０は、さらにエラーフラグレジスタ１８１を備える点で、デバッグマスタ１７０と異なる。なお、以下の説明では、デバッグシステム１０の構成及び動作について、上述の実施の形態と異なる点を中心に説明し、同様の点については、説明を適宜省略する。
【００６６】
上述の通り、本実施の形態では、ガード回路１５０は、アクセス許否の判定結果を、データバス１３０を介してデバッグマスタ１８０に通知する。そして、デバッグマスタ１８０は、通知された判定結果をエラーフラグレジスタ１８１に格納する。なお、本実施の形態では、判定結果の格納及び通知は、具体的には、アクセスの失敗を示す情報（エラー情報）の格納及び通知であるが、アクセスの成功を示す情報の格納及び通知であってもよい。
【００６７】
このような構成によれば、デバッグマスタ１８０は、エラーステータスレジスタ１５２の値を取得せずとも、デバッグマスタ１８０内のエラーフラグレジスタ１８１の値を取得することにより、アクセス可否の結果を容易に取得することができる。
ところで、例えば、アクセス要求で指定したアクセス先に対応するエラーステータスレジスタ１５２を特定できるようにするために、エラーステータスレジスタ１５２のそれぞれのアドレスをテーブルによりデバッグマスタ１７０が予め管理しておくことで、エラーステータスレジスタ１５２の値を取得することができる。しかしながら、この場合、デバッグマスタ１８０はそのようなテーブルを有している必要がある。
これに対し、本実施の形態では、アクセス先のメモリ領域１４０に対応するガード回路１５０から判定結果がデバッグマスタ１８０に通知されるため、そのようなテーブルを有さずとも、デバッグマスタ１８０は判定結果を取得することができる。
【００６８】
ここで、ガード回路１５０は、マイクロコンピュータ１００の状態が非デバッグモードである場合、アクセス許否の判定結果をエラーステータスレジスタ１５２に格納し、マイクロコンピュータ１００の状態がデバッグモードである場合、アクセス許否の判定結果を、エラーステータスレジスタ１５２への格納に代えて、データバス１３０を介してデバッグマスタ１８０に通知してもよい。すなわち、非デバッグモード時には、デバッグマスタ１８０へのデータバス１３０を介した通知は行わなくてもよい。また、デバッグモード時には、エラーステータスレジスタ１５２への判定結果の格納を行わなくてもよい。このようにすることで、非デバッグモード時に不要な通知が行われることを防ぐことができる。また、デバッグモード時に、アクセスエラーの発生を示す状態値がエラーステータスレジスタ１５２に格納されることを防ぐことができる。エラーステータスレジスタ１５２にアクセスエラーの発生を示す状態値が記憶されている場合、エラー処理が開始されてしまい、ユーザプログラムの所望の処理についての実行結果の経過を確認できなくなってしまう。これを回避するためには、エラーステータスレジスタ１５２の値をクリアする必要がある。上述のように、エラーステータスレジスタ１５２への値の設定に代えて、デバッグマスタ１８０への通知が行われることで、そのような問題を解決することができる。すなわち、エラーステータスレジスタ１５２にアクセスエラーの発生を示す状態値が設定されることによるエミュレーション動作への影響を、エラーステータスレジスタ１５２の値のクリアをせずとも、回避することが実現できる。
【００６９】
なお、デバッグモードとは、エミュレーション装置２００（デバッガ）による処理が許可されるモードである。ガード回路１５０は、任意の手法により、マイクロコンピュータ１００の状態がデバッグモードであるか非デバッグモードであるかを判定すればよい。例えば、マイクロコンピュータ１００がデバッグモードである場合に所定の値が設定されるレジスタを参照することによりモードが判定されてもよい。
【００７０】
また、本実施の形態では、演算実行部１１０の制御のもと、アクセス権の設定についてテストするための処理を行う。なお、演算実行部１１０は、例えばデバッグモード時に、アクセス権の設定についてテストするための下記の処理を行う。以下、本実施の形態にかかるデバッグシステム１０における、アクセス権の設定についてテストするための処理について説明する。
【００７１】
実施の形態２では、エミュレーション装置２００の制御にしたがって、識別子設定レジスタ１７２には予め定められた範囲の各値が順にＳＰＩＤとして設定されたが、本実施の形態では、演算実行部１１０の制御にしたがって、予め定められた範囲の各値が順にＳＰＩＤとして識別子設定レジスタ１７２に設定される。例えば、この制御は、ハイパーバイザーの処理として実現される。すなわち、例えばＣＰＵ１１２がメモリ１１１に記憶されたハイパーバイザーを実行することにより実現される。例えば、ハイパーバイザーは、アクセス権についての設定処理の後、アクセス権の設定についてテストするための処理を行う。
【００７２】
デバッグマスタ１８０は、実施の形態２にかかるデバッグマスタ１７０と同様、順に設定されるＳＰＩＤ毎に、無効なバッグマスタアクセスフラグ値とＳＰＩＤとを含むアクセス要求を出力する。そして、演算実行部１１０は、デバッグマスタ１８０内のエラーフラグレジスタ１８１を参照し、ガード回路１５０によるＳＰＩＤ毎のアクセス許否の判定結果を取得する。
【００７３】
演算実行部１１０は、取得した判定結果が予め定められた合格条件を満たすか否かを検査する。この合格条件は、メモリ領域１４０に対する保護機能の所定の仕様に沿ってアクセス権の設定が行われた場合に満たす条件であり、例えば、アクセス不可となるアクセス数についての条件である。例えば、ＳＰＩＤが「００１」であるアクセスについて全てのメモリ領域１４０に対しアクセスを許可するよう使用が定めている場合、ＳＰＩＤが「００１」であるアクセスについてアクセス不可となるアクセス数としては０が期待される。すなわち、演算実行部１１０が取得した判定結果から算出されるＳＰＩＤ「００１」についてのアクセス不可の件数が１以上である場合、合格条件を満たさないこととなる。なお、この合格条件は、ユーザにより入力され、例えば演算実行部１１０のメモリ１１１に予め記憶されている。本実施の形態では、合格条件に基づく検査は、ハイパーバイザーにおける処理として行われる。テストのために設定された合格条件と、これとは別にコーディングされたハイパーバイザーによる実際の設定に基づくアクセス結果とが比較されるため、アクセス権の設定の誤りを検出すること期待される。ただし、仮に、ユーザが誤った合格条件を入力した場合には、ハイパーバイザーによるアクセス権についての設定が仕様を正確に反映したものであるか否かを完全に判定することはできない。なお、演算実行部１１０による検査結果は、エミュレーション装置２００の表示部２０４に表示されてもよい。
【００７４】
以上、実施の形態３について説明した。本実施の形態では、演算実行部１１０の制御のもと、テストが行われる。すなわち、マイクロコンピュータ１００内の演算実行部１１０とデバッグマスタ１８０との間で、アクセス結果についての情報などの通信が行われる。このため、エミュレーション装置２００との通信によるテストに比べ、より高速にデータの伝送を行うことができる。このため、エミュレーション装置２００の制御のもとテストを行う場合に比べて、高速にテストを実行することができる。なお、演算実行部１１０とデバッグマスタ１８０との通信は、データバス１３０を介して行われてもよいし、演算実行部１１０とデバッグマスタ１８０の間で直接行われてもよい。
【００７５】
各実施の形態において、エミュレーション装置２００による上述した処理は、例えば、メモリ２０２に格納されたデバッガなどのプログラムをＣＰＵ２０１が実行することにより実現される。また、マイクロコンピュータ１００の演算実行部１１０による上述した処理は、例えば、メモリ１１１に格納されたハイパーバイザーなどのプログラムをＣＰＵ１１２が実行することにより実現される。なお、エミュレーション装置２００における上述した処理の一部若しくは全部、又は、マイクロコンピュータ１００における上述した処理の一部若しくは全部が、ハードウェア回路により実現されてもよい。
【００７６】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００７７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００７８】
１、１０    デバッグシステム
２    半導体装置
３、２００    エミュレーション装置
４    バス
５、１４０    メモリ領域
６、１５０    ガード回路
７、５１、１７０、１８０    デバッグマスタ
８、１７１    デバッグフラグ設定レジスタ
９、１７２    識別子設定レジスタ
５０、１００    マイクロコンピュータ
１１０    演算実行部
１１１    メモリ
１１２、２０１    ＣＰＵ
１２０    ＤＭＡコントローラ
１３０    データバス
１５１    プロテクション設定レジスタ
１５２    エラーステータスレジスタ
１６０    接続端子
１８１    エラーフラグレジスタ
２０２    メモリ
２０３    入力部
２０４    表示部
２０５    インタフェース部
【図１】
2019079219.tif 000003
【図２】
2019079219.tif 000004
【図３】
2019079219.tif 000005
【図４】
2019079219.tif 000006
【図５】
2019079219.tif 000007
【図６】
2019079219.tif 000008
【図７】
2019079219.tif 000009
【図８】
2019079219.tif 000010