(57)【要約】      （修正有）【課題】プロセッサにおけるデバッグ機能の構成を簡素化する。【解決手段】デバッグ回路１０は、プロセッサ１の演算部（プロセッサコア）１０１からのアクセス先アドレスに基づき、基本処理単位サイズ間隔で複数のオフセットアドレスを生成する。下位オフセットアドレス生成部１０４は、演算部からのアクセス先メモリ領域を区切って複数の検証アドレス範囲を設定する。下位バイトマッチ判定部１０７は、設定された複数の検証アドレス範囲に対して、ウォッチポイントレジスタ１０３の監視対象アドレスとの一致を順次判定する。【選択図】図１
2020091708.tif 000002
【特許請求の範囲】
【請求項１】
演算部と、当該演算部から監視対象アドレスに対するデータアクセスを監視する監視装置とを備える演算処理装置であって、
前記監視装置が、
前記演算部からのアクセス先アドレスに基づき、基本処理単位サイズ間隔で複数のオフセットアドレスを生成することで、前記演算部からのアクセス先メモリ領域を区切って複数の検証アドレス範囲を設定するオフセットアドレス生成部と、
生成された前記複数の検証アドレス範囲に対して、監視対象アドレスとの一致を順次、判定する判定部と
を備えることを特徴とする、演算処理装置。
【請求項２】
前記監視対象アドレスと、前記検証アドレス範囲に含まれる検証アドレスを構成するビット列における検証対象ビット位置を抽出するためのバイトマスクとを記憶する記憶部と、
前記演算部からのアクセス先アドレスにおけるデータアクセスの有効ビット位置を示すバイト有効ビット位置情報を生成するバイト有効ビット生成部と、
前記オフセットアドレス，前記監視対象アドレスおよび前記バイトマスクに基づき、前記検証アドレスにおけるアクセス検証位置を表すバイトアクセス位置情報を生成するバイトアクセス位置生成部と
を備え、
前記判定部が、前記バイト有効ビット位置情報と前記バイトアクセス位置情報との一致を判断する
ことを特徴とする、請求項１記載の演算処理装置。
【請求項３】
前記判定部において前記バイト有効ビット位置情報と前記バイトアクセス位置情報とが一致したと判断した場合に、前記演算部に対して検出通知を発行する通知部
を備えることを特徴とする、請求項２記載の演算処理装置。
【請求項４】
前記判定部において、前記バイト有効ビット位置情報と前記バイトアクセス位置情報とが不一致である場合に、バイトアクセス位置生成部および一致判断部が、前記複数の検証アドレス範囲のうち、未処理の検証アドレス範囲に対して処理を行なう
ことを特徴とする、請求項２または３記載の演算処理装置。
【請求項５】
演算部と、当該演算部から監視対象アドレスに対するデータアクセスを監視する監視装置とを備える演算処理装置において、
前記監視装置が、
前記演算部からのアクセス先アドレスに基づき、基本処理単位サイズ間隔で複数のオフセットアドレスを生成することで、前記演算部からのアクセス先メモリ領域を区切って複数の検証アドレス範囲を設定する処理と、
設定された前記複数の検証アドレス範囲に対して、監視対象アドレスとの一致を順次、判定する処理と
を備えることを特徴とする、演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
演算処理装置としてのプロセッサに実装されるデバッグ機能として、例えばウォッチポイントを用いる手法が知られている。このウォッチポイントを用いるデバッグ機能においては、メモリの特定のアドレスを監視対象アドレス（ウォッチポイント）として設定し、この監視対象アドレスへのデータアクセスの発生を検知した場合にトラップルーチンを実行させて実行中の処理を停止させる。
【０００３】
図１５は従来のプロセッサのデバッグ機能を説明するための図である。
【０００４】
図１５に示すプロセッサ５００は、プロセッサコア５０１，ウォッチポイントレジスタ５０３，上位バイトアドレスマッチ回路５０２，下位バイトアドレスマッチ回路５０５，下位バイト要素アドレス生成回路５０４および検出通知判定回路５０６を備える。
【０００５】
プロセッサコア５０１は、実行する命令および当該命令の実行により生じるメモリアクセス領域のデータサイズを示す情報（以下、単にデータサイズ情報という）を下位バイト要素アドレス生成回路５０４および下位バイトアドレスマッチ回路５０５に通知する。
【０００６】
また、プロセッサコア５０１は、命令の実行により生じるメモリアクセスのアクセス先アドレス（以下、単にアクセス先アドレスという場合がある）を上位バイトアドレスマッチ回路５０２および下位バイト要素アドレス生成回路５０４に通知する。
【０００７】
ウォッチポイントレジスタ５０３は、ユーザから設定されたウォッチポイントのアドレス（以下、ウォッチポイントアドレスという場合がある）を格納する。ウォッチポイントレジスタ５０３には、例えば、所定サイズ（例えば８バイト）のウォッチポイントアドレスが設定される。また、ウォッチポイントレジスタ５０３はバイトマスクおよび検出許可ビットを格納する。
【０００８】
ウォッチポイントレジスタ５０３から読み出されたウォッチポイントアドレスは、上位バイトアドレスマッチ回路５０２と下位バイトアドレスマッチ回路５０５とに入力される。
【０００９】
検出許可ビットは、ウォッチポイントアドレスの検出を許可するか否かを表す情報であり、予めユーザ等により設定される。例えば、ウォッチポイントアドレスの検出を行なう場合には、検出許可ビットに“１”が設定される。ウォッチポイントレジスタ５０３から読み出された検出許可ビットは、検出通知判定回路５０６のＡＮＤゲート５０６１に入力される。
【００１０】
バイトマスクは、処理対象のアドレスを構成するビット列のうち、ウォッチポイントアドレスとの比較を行なう部分（ビット）を抽出するためのマスクである。ウォッチポイントレジスタ５０３から読み出されたバイトマスクは下位バイトアドレスマッチ回路５０５に入力される。
【００１１】
上位バイトアドレスマッチ回路５０２は、プロセッサコア５０１から通知されたアクセス先アドレスの上位バイトと、ウォッチポイントレジスタ５０３から通知されるウォッチポイントアドレスの上位バイトとを比較する。比較の結果、上位バイトのアドレスが一致した場合には、上位バイトアドレスマッチ回路５０２は、検出通知判定回路５０６のＡＮＤゲート５０６１に“１（High）”を出力する。
【００１２】
下位バイト要素アドレス生成回路５０４は、アクセス先アドレス，命令およびデータサイズ情報に基づいて、一つの命令でアクセスするデータバス幅を所定の処理単位サイズで分割して複数の要素アドレスを生成する。処理単位サイズは、プロセッサコア５０１が一度に読み出せるデータサイズ（データ長）であり、例えば、4B（バイト）である。
【００１３】
下位バイト要素アドレス生成回路５０４は、データバス幅から分割して生成される要素アドレスの数だけ用意される。例えば、下位バイトのデータバス幅が12Bであり、処理単位サイズが4Bである場合には、３つの下位バイト要素アドレス生成回路５０４が備えられる。プロセッサコア５０１から出力されるアドレスは、複数の下位バイト要素アドレス生成回路５０４に振り分けてそれぞれ入力される。
【００１４】
下位バイト要素アドレス生成回路５０４は、生成した各要素アドレスを下位バイトアドレスマッチ回路５０５に入力する。
【００１５】
下位バイトアドレスマッチ回路５０５は、下位バイト要素アドレス生成回路５０４から入力された要素アドレスを、ウォッチポイントレジスタ５０３から読み出したウォッチポイントアドレスの下位バイトと比較する。この際、下位バイトアドレスマッチ回路５０５は、ウォッチポイントレジスタ５０３から読み出したバイトマスクによりマスクされていないビット位置について比較を行なう。
【００１６】
下位バイトアドレスマッチ回路５０５は下位バイト要素アドレス生成回路５０４と同数備えられる。図１５に示す例においては、下位バイトアドレスマッチ回路５０５および下位バイト要素アドレス生成回路５０４がそれぞれ３つずつ備えられている。すなわち、下位バイトアドレスマッチ回路５０５は下位バイト要素アドレス生成回路５０４に対応して備えられる。
【００１７】
各下位バイト要素アドレス生成回路５０４は、それぞれ一つの下位バイトアドレスマッチ回路５０５に接続され、一の下位バイト要素アドレス生成回路５０４において生成された要素アドレスは、対応する一の下位バイトアドレスマッチ回路５０５に入力される。
【００１８】
比較の結果、バイトマスクによるマスクがされていない部分において、要素アドレスとウォッチポイントアドレスとが一致した場合には、下位バイトアドレスマッチ回路５０５は、検出通知判定回路５０６に“１（High）”を出力する。
【００１９】
検出通知判定回路５０６は、ＡＮＤゲート５０６１とＯＲゲート５０６２とを備える。ＡＮＤゲート５０６１は、下位バイトアドレスマッチ回路５０５と同数備えられている。すなわち、ＡＮＤゲート５０６１は、下位バイトアドレスマッチ回路５０５に対応させて備えられている。
【００２０】
ＡＮＤゲート５０６１は、それぞれ一つの下位バイトアドレスマッチ回路５０５に接続され、一の下位バイトアドレスマッチ回路５０５の出力（比較結果）は、対応する一のＡＮＤゲート５０６１に入力される。
【００２１】
また、各ＡＮＤゲート５０６１には、それぞれ上位バイトアドレスマッチ回路５０２の出力（比較結果）と、ウォッチポイントレジスタ５０３から読み出された検出許可ビットとも入力される。
【００２２】
各ＡＮＤゲート５０６１は、下位バイトアドレスマッチ回路５０５の出力値と、上位バイトアドレスマッチ回路５０２の出力値と、ウォッチポイントレジスタ５０３からの検出許可ビットとがいずれも“１”である場合に、“１”を出力する。各ＡＮＤゲート５０６１の出力はＯＲゲート５０６２に入力される。ＯＲゲート５０６２は、いずれかのＡＮＤゲート５０６１から“１”が入力されると、検出通知として“１”をプロセッサコア５０１に出力（通知）する。
【００２３】
このような構成により、従来のプロセッサ５００のデバッグ機能においては、プロセッサコア５０１からのアクセス先アドレス，命令およびデータサイズ情報に基づいて、下位バイト要素アドレス生成回路５０４がデータバス幅を処理単位サイズで分割した複数の要素アドレスを生成する。
【００２４】
そして、上位バイトアドレスマッチ回路５０２が、アクセス先アドレスの上位バイトと、ウォッチポイントアドレスの上位バイトとの比較を行なう。また、下位バイトアドレスマッチ回路５０５が、全要素アドレス情報および命令，データサイズ情報と、ウォッチポイントレジスタ５０３から読み出されたウォッチポイントアドレスとバイトマスクを用いて比較を行なう。
【００２５】
検出通知判定回路５０６は、これらの比較結果に基づき、いずれかの要素アドレス情報に関してウォッチポイントアドレスに一致するバイトが検出されると、プロセッサコア５０１に対して検出通知を行なう。
【先行技術文献】
【特許文献】
【００２６】
【特許文献１】特開２０１０−２０７６７号公報
【特許文献２】特開２００８−３０５３０６号公報
【発明の概要】
【発明が解決しようとする課題】
【００２７】
近年、プロセッサの処理性能を向上させるために命令セットアーキテクチャ（Industrial Standard Architecture：ＩＳＡ）の拡張が行なわれ、命令種やデータバス幅が増加している。
【００２８】
ストライド命令拡張やデータバス幅が増加すると、プロセッサ５００において、下位バイト要素アドレス生成回路５０４，上位バイトアドレスマッチ回路５０２およびＡＮＤゲート５０６１が増加する。これによりプロセッサ５００に搭載される回路や配線が増加して、回路面積が増大し、また装置への実装が困難になるという課題がある。
【００２９】
１つの側面では、本発明は、プロセッサにおけるデバッグ機能の構成を簡素化できるようにすることを目的とする。
【課題を解決するための手段】
【００３０】
このため、この演算処理装置は、演算部と、当該演算部から監視対象アドレスに対するデータアクセスを監視する監視装置とを備える演算処理装置であって、前記監視装置が、前記演算部からのアクセス先アドレスに基づき、基本処理単位サイズ間隔で複数のオフセットアドレスを生成することで、前記演算部からのアクセス先メモリ領域を区切って複数の検証アドレス範囲を設定するオフセットアドレス生成部と、生成された前記複数の検証アドレス範囲に対して、監視対象アドレスとの一致を順次、判定する判定部とを備える。
【発明の効果】
【００３１】
一実施形態によれば、プロセッサにおけるデバッグ機能の構成を簡素化することができる。
【図面の簡単な説明】
【００３２】
【図１】実施形態の一例としてのプロセッサのデバッグ回路の構成を説明するための図である。
【図２】実施形態の一例としてのプロセッサにおける下位バイトオフセットアドレスを例示する図である。
【図３】実施形態の一例としてのプロセッサにおける下位バイトオフセットアドレスを例示する図である。
【図４】実施形態の一例としてのプロセッサにおける下位バイトオフセットアドレスを例示する図である。
【図５】実施形態の一例としてのプロセッサにおける下位バイトオフセットアドレスを例示する図である。
【図６】実施形態の一例としてのプロセッサにおける下位バイトオフセットアドレスを例示する図である。
【図７】実施形態の一例としてのプロセッサにおける下位バイト有効ビット位置情報を説明するための図である。
【図８】実施形態の一例としてのプロセッサにおける下位バイト有効ビット位置情報を説明するための図である。
【図９】実施形態の一例としてのプロセッサにおける下位バイト有効ビット位置情報を説明するための図である。
【図１０】実施形態の一例としてのプロセッサの下位バイトアクセス位置生成回路によるバイトアクセス位置情報の生成方法を説明するための図である。
【図１１】実施形態の一例としてのプロセッサにおけるバイトアクセス位置情報の生成方法を説明するための図である。
【図１２】実施形態の一例としてのプロセッサにおける下位バイトマッチ判定回路の構成を例示する図である。
【図１３】実施形態の一例としてのプロセッサのデバッグ回路の処理を説明するためのフローチャートである。
【図１４】図１に示したプロセッサのデバッグ回路の変形例を示す図である。
【図１５】従来のプロセッサのデバッグ機能を説明するための図である。
【発明を実施するための形態】
【００３３】
以下、図面を参照して本演算処理装置および演算処理装置の制御方法に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００３４】
（Ａ）構成
図１は実施形態の一例としてのプロセッサ１のデバッグ回路１０の構成を説明するための図である。
【００３５】
図１に示すプロセッサ１は、プロセッサコア１０１を備え、種々の演算処理を行なう。また、本プロセッサ１は、プログラムデバッグを行なうデバッグ回路１０を備える。
【００３６】
デバッグ回路１０は、プロセッサコア１０１から特定のメモリアドレス（ウォッチポイント）に対するデータアクセスを検出し、プロセッサコア１０１に通知する機能を実現する。デバッグ回路１０は、プロセッサコア１０１からのアクセス先のメモリ領域（アクセス先メモリ領域；検証アドレス範囲）にウォッチポイントアドレスが含まれるかを検証する。
【００３７】
プロセッサコア１０１においては、デバッグ回路１０からウォッチポイントに対するメモリアクセスの検出を通知されると、例えばプログラムの実行を中断させる等の処理を行なう。
【００３８】
デバッグ回路１０は、図１に示すように、ウォッチポイントレジスタ１０３，上位バイトアドレスマッチ回路１０２，下位バイトオフセットアドレス生成回路１０４，下位バイトアクセス位置生成回路１０５，下位バイト有効ビット生成回路１０６，下位バイトマッチ判定回路１０７，ＡＮＤゲート１０８，判定回路１０９およびインクリメント回路１１０を備える。
【００３９】
プロセッサコア１０１は、実行する命令および当該命令の実行により生じるメモリアクセス領域のデータサイズを示す情報（以下、単にデータサイズ情報という）の情報を下位バイトオフセットアドレス生成回路１０４および下位バイト有効ビット生成回路１０６に通知する。
【００４０】
また、プロセッサコア１０１は、命令の実行により生じるメモリアクセスのアクセス先のアドレス（以下、アクセス先アドレスという場合がある）を上位バイトアドレスマッチ回路１０２および下位バイトオフセットアドレス生成回路１０４に通知する。また、アクセス先アドレスを検証アドレスまたは検証アドレス範囲という場合がある。
【００４１】
ウォッチポイントレジスタ１０３は、ユーザから設定されたウォッチポイントのアドレス（監視対象アドレス；以下、ウォッチポイントアドレスという場合がある）を記憶する。ウォッチポイントアドレスは、プロセッサコア１０１によって実行されるプログラムによるデータアクセスを検出する対象としてのメモリアドレス（監視対象アドレス）である。ウォッチポイントは、例えばプログラムの実行を中断させる位置（アドレス）を示す。
【００４２】
デバッグ回路１０は検証アドレスについて、ウォッチポイントアドレスと一致するか否かを判断する。
【００４３】
ウォッチポイントレジスタ１０３から読み出されたウォッチポイントアドレスは、上位バイトアドレスマッチ回路１０２と下位バイトアクセス位置生成回路１０５とに入力される。
【００４４】
また、ウォッチポイントレジスタ１０３はバイトマスクおよび検出許可ビットを記憶する。
【００４５】
検出許可ビットは、ウォッチポイントアドレスの検出を許可するか否かを表す情報であり、予めユーザ等により設定される。例えば、ウォッチポイントアドレスの検出を行なう場合には、検出許可ビットに“１”が設定される。ウォッチポイントレジスタ１０３から読み出された検出許可ビットは、ＡＮＤゲート１０８に入力される。
【００４６】
バイトマスクは、プロセッサコア１０１からのアクセス対象（処理対象）のメモリアドレスを構成するデータ列（ビット列）のうち、ウォッチポイントアドレスとの比較を行なう部分（位置；ビット）を抽出（特定）するためのマスクである。すなわち、バイトマスクは、オフセットアドレスを構成するビット列における検証ビット位置を抽出するための情報である。
【００４７】
ウォッチポイントレジスタ１０３から読み出されたバイトマスクは下位バイトアクセス位置生成回路１０５に入力される。
【００４８】
バイトマスクは、例えば、8ビット[7:0]のビット列であり、処理単位サイズ（8バイト）分備えられる。
【００４９】
ウォッチポイントレジスタ１０３は、ウォッチポイントアドレスおよびバイトマスクを格納する記憶部として機能する。
【００５０】
上位バイトアドレスマッチ回路１０２は、プロセッサコア１０１から通知されたアクセス先アドレスのうちの上位バイトと、ウォッチポイントレジスタ１０３から通知されるウォッチポイントアドレスの上位バイトとを比較（上位バイトアドレスマッチ判定）する。
【００５１】
上位バイトは、プロセッサコア１０１によるアクセス先としてのデータアドレスのうち、後述する下位バイトマッチ判定回路１０７による判定が行なわれる下位のバイト（下位バイト）以外の部分であってもよい。
【００５２】
上位バイトアドレスマッチ回路１０２による比較の結果、上位バイトのアドレスがウォッチポイントアドレスの上位バイトと一致した場合には、上位バイトアドレスマッチ回路１０２は、ＡＮＤゲート１０８に、判定結果として一致を示す1（High）を出力する。以下、上位バイトアドレスマッチ回路１０２による判定結果の出力を上位バイトアドレスマッチ信号という場合がある。
【００５３】
一方、上位バイトアドレスマッチ回路１０２による比較の結果、上位バイトのアドレスがウォッチポイントアドレスの上位バイトと一致していない場合には、上位バイトアドレスマッチ回路１０２は、ＡＮＤゲート１０８に、判定結果として不一致を示す0（Low）を出力する。
【００５４】
下位バイトオフセットアドレス生成回路１０４は、アクセス先アドレスの下位バイトに基づき、ウォッチポイント検索対象（検証アドレス範囲）の先頭アドレス（下位バイトオフセットアドレス）を生成（設定）する。下位バイトオフセットアドレス生成回路１０４は、プロセッサコア１０１から入力される命令種およびデータサイズ情報に基づいて下位バイトオフセットアドレスを生成する。
【００５５】
下位バイトオフセットアドレス生成回路１０４は、アクセス先アドレスの下位バイトをベースアドレスとして、このベースアドレスに予め規定された所定のデータ幅（例えば８バイト）に応じた値（加算値）を加算することで、下位バイトオフセットアドレスを生成する。
【００５６】
下位バイトオフセットアドレス生成回路１０４は、算出した下位バイトオフセットアドレスに対して基本処理単位サイズの加算を繰り返し行なうことで複数の下位バイトオフセットアドレス（オフセットアドレス計算値）を生成する。
【００５７】
下位バイトオフセットアドレス生成回路１０４は、プロセッサコア１０１から通知されるアクセス先アドレスに基づき、基本処理単位サイズ間隔の複数の下位バイトオフセットアドレス（オフセットアドレス）を生成する。
【００５８】
生成された複数の下位バイトオフセットアドレスにより、プロセッサコア１０１からのアクセス先メモリ領域は、基本処理単位サイズを有する複数の領域に仮想的に分割される（区切られる）。
【００５９】
従って、下位バイトオフセットアドレス生成回路１０４は、複数の下位バイトオフセットアドレスを生成（算出）することで、プロセッサコア１０１のアクセス先領域（データバス幅）を所定のデータ幅（処理単位サイズ；例えば8バイト）毎に仮想的に分割（区画）する。
【００６０】
下位バイトオフセットアドレス生成回路１０４によって生成された複数の下位バイトオフセットアドレスにより仮想的に分割される個々の領域を、分割処理フロー（検証アドレス範囲）という場合がある。
【００６１】
このように、下位バイトオフセットアドレス生成回路１０４は、複数の下位バイトオフセットアドレスを生成（算出）することで、プロセッサコア１０１からのアクセス先メモリ領域を区切って複数の分割処理フローを設定する。
【００６２】
分割処理フロー番号は、生成された個々の分割処理フローを特定する識別情報であり、後述するインクリメント回路１１０によって設定される。分割処理フロー番号は、分割処理フローに対して、アクセス先メモリ領域の先頭から順番に連番として設定される。すなわち、下位バイトオフセットアドレス生成回路１０４によって生成される複数の分割処理フローは、分割処理フロー番号によって順序づけられている。
【００６３】
これにより、分割処理フロー番号をインクリメントしながら指定することで、分割処理フロー（検証アドレス範囲）を順番に切り替えることが可能となる。
【００６４】
下位バイトオフセットアドレス生成回路１０４は、データバス幅を仮想的（数値的）に等間隔に分割して複数の下位バイトオフセットアドレスを設定する。生成された複数の下位バイトオフセットアドレスは、プロセッサコア１０１からのアクセス先メモリ領域を処理単位サイズで区切るポインタもしくは境界として機能する。また、各下位バイトオフセットアドレスは、各ウォッチポイント検索対象（検証アドレス範囲）の先頭アドレスとして機能する。
【００６５】
また、ストライド幅を設定する場合には、下位バイトオフセットアドレス生成回路１０４は、加算値にストライド幅を反映させる。なお、ストライド幅は、プロセッサコア１０１から出力されるデータサイズ情報等に基づき既知の手法により得ることができる。
【００６６】
図２〜図６は、それぞれ実施形態の一例としてのプロセッサ１における下位バイトオフセットアドレスを例示する図である。
【００６７】
図２はストライド幅=0の場合における下位バイトオフセットアドレスの計算例を示す図である。図３はストライド幅=2であり、データサイズ単位が8B（バイト）の場合における下位バイトオフセットアドレスの計算例を示す図である。図４はストライド幅=2であり、データサイズ単位が1Bまたは2Bまたは4Bの場合における下位バイトオフセットアドレスの計算例を示す図である。
【００６８】
図５はストライド幅=3であり、データサイズ単位が8B（バイト）の場合における下位バイトオフセットアドレスの計算例を示す図である。図６はストライド幅=3であり、データサイズ単位が1Bまたは2Bまたは4Bの場合における下位バイトオフセットアドレスの計算例を示す図である。
【００６９】
これらの図２〜図６に示す各例においては、生成された各下位バイトオフセットアドレスに対して、その先頭から順に分割処理フロー番号として連番の自然数が付与されている。
【００７０】
本プロセッサ１においては、生成された下位バイトオフセットアドレスを先頭とする検証アドレス範囲毎にウォッチポイントアドレスとのマッチ判定が行なわれる。
【００７１】
下位バイトオフセットアドレス生成回路１０４は、プロセッサコア１０１から入力される命令種およびデータサイズ情報に基づき、命令のベースアドレスから下位バイトオフセットアドレスを設定する。
【００７２】
下位バイトオフセットアドレス生成回路１０４は、生成した下位バイトオフセットアドレスを下位バイトアクセス位置生成回路１０５に対して出力する。
【００７３】
下位バイト有効ビット生成回路１０６は、プロセッサコア１０１から出力される命令およびデータサイズ情報に基づいて、下位バイトオフセットアドレスを基準とした下位バイト有効ビット位置情報の生成を行なう。
【００７４】
下位バイト有効ビット位置情報は、プロセッサコア１０１からのアクセス先として有効な位置であるか否かを示す情報であり、例えば、下位バイトオフセットアドレスを構成する８バイトのデータ列においてデータアクセスが生じ得る位置（下位バイト有効ビット位置）を示す。
【００７５】
図７〜図９はそれぞれ実施形態の一例としてのプロセッサ１における下位バイト有効ビット位置情報を説明するための図である。
【００７６】
これらの図７〜図９は、それぞれ、オフセットアドレス先頭（図中では単に先頭と示す）からみたメモリイメージを例示するものである。図７はストライド幅=0の場合の下位バイト有効ビット位置情報であり、図８および図９はそれぞれ、ストライド幅=2の場合およびストライド幅=3の場合をそれぞれ例示する。
【００７７】
なお、以下、本実施形態においては、図中、先頭アドレスが右側に位置するリトルエンディアン（little endian）の形式で表す。すなわち、図７〜図９においては、図中右側が先頭側（上位アドレス）であり、図中左側が末尾側（下位アドレス）となる。なお、データ表示方法はリトルエンディアンに限定されるものではなく、例えば、ビッグエンディアン（big endian）の形式で表してもよく、適宜変更して実施することができる。
【００７８】
図７〜図９に例示する下位バイト有効ビット位置情報は、レジスタイメージを構成するB0〜B7のバイト有効ビット（8ビット）に対して、下位バイトオフセットアドレスを先頭として連続する複数（図７に示す例では１０個）のバイト位置PT0〜PT9を対応づけたマトリックス（テーブル）を構成している。すなわち、下位バイト有効ビット位置情報は1バイト単位のテーブル情報として構成されている。
【００７９】
そして、図中、1B，2B，4B，8Bの各文字はデータサイズ（単位：バイト）を表し、これら1B，2B，4B，8Bの記載位置に該当するビット位置が下位バイト有効ビット位置を表し、有効ビット1が設定される。
【００８０】
これらの図７〜図９に示す下位バイト有効ビット位置情報を参照することで、オフセットアドレスを先頭とする各位置において、データアクセスが生じるか否かを判断することができる。
【００８１】
なお、下位バイト有効ビット位置情報は分割処理単位で共通となるため、分割処理フロー毎に生成する必要はない。
【００８２】
本例においては、分割処理フローの単位が８バイトの例について示すが、ストライド幅を考慮して１０個のバイト位置PT0〜PT9を示すものとする。
【００８３】
下位バイトアクセス位置生成回路１０５は、下位バイトオフセットアドレス，ウォッチポイントアドレスおよびバイトマスク情報に基づき、分割処理フロー毎のバイトアクセス位置情報を生成する。
【００８４】
バイトアクセス位置情報は、検証アドレスにおける、後述する下位バイトマッチ判定回路１０７によるウォッチポイントアドレスとの比較（判定）の対象となる位置（バイトアクセス位置）を示す。
【００８５】
下位バイトアクセス位置生成回路１０５は、下位バイトオフセットアドレスを先頭とする各ビット位置について、バイトマスクとの比較を行なうことで、バイトアクセス位置であるか否かを判断し、バイトアクセス位置情報を生成する。
【００８６】
具体的には、下位バイトアクセス位置生成回路１０５は、下位バイトオフセットアドレスを先頭とする各ビット位置PT0〜PT9のそれぞれについて、予め規定された条件式を適用することで、各ビット位置がバイトアクセス位置であるか否かを判断する。
【００８７】
バイトアクセス位置情報は、ビット位置PT0〜PT9がそれぞれバイトアクセス位置であるかを示し、例えば、ビット位置PT0〜PT9のそれぞれに、“1”もしくは“0”を設定することで構成される。
【００８８】
下位バイトアクセス位置生成回路１０５は、バイトアクセス位置と判断したビット位置PT0〜PT9に“1”を設定する一方、バイトアクセス位置と判断したビット位置以外のPT0〜PT9に“0”を設定することで、バイトアクセス位置情報を生成する。
【００８９】
図１０は実施形態の一例としてのプロセッサ１の下位バイトアクセス位置生成回路１０５によるバイトアクセス位置情報の生成方法を説明するための図である。
【００９０】
図１０は、オフセットアドレスの先頭から見たメモリイメージを表し、下位バイトオフセットアドレスを先頭として連続する複数（図１０に示す例では１０個）のバイト位置PT0〜PT9のそれぞれについて、後述する下位バイトマッチ判定回路１０７による判定が行なわれるべき位置であるかを判定するための条件式を示す。
【００９１】
本例においては、分割処理フローの単位が８バイトの例について示すが、ストライド幅を考慮して１０個のバイト位置PT0〜PT9を示すものとする。
【００９２】
図１０においては、主にオフセットアドレスの3ビット目について検証を行なう例について示すが、下位バイトアクセス位置生成回路１０５はオフセットアドレスの各ビットについて同様の処理を行なう。
【００９３】
また、図中、オフセットアドレスをＯＳアドレスと表すとともに、ウォッチポイントアドレスをＷＰアドレスと表す場合がある。
【００９４】
例えば、バイト位置PT0については、下位バイトアクセス位置生成回路１０５は、以下に示す条件式（１）を用いて、アクセスバイト位置であるか否かの判断を行なう。
【００９５】
すなわち、下位バイトアクセス位置生成回路１０５は、この条件式（１）が満たされる場合に、バイト位置PT0に対して有効を示す情報（フラグ；例えば1）を設定する。バイト位置PT0はベースアドレスに相当する。
【００９６】
【数１】
2020091708.tif 000003
【００９７】
上記の条件式（１）においては、“オフセットアドレス[3]==ウォッチポイントアドレス[3]”という条件を満たし、且つ、“オフセットアドレス[2:0]=000 & バイトマスク[0]”，“オフセットアドレス[2:0]=001 & バイトマスク[1]”，“オフセットアドレス[2:0]=010 & バイトマスク[2]”，“オフセットアドレス[2:0]=011 & バイトマスク[3]”，“オフセットアドレス[2:0]=100 & バイトマスク[4]”，“オフセットアドレス[2:0]=101 & バイトマスク[5]”，“オフセットアドレス[2:0]=110 & バイトマスク[6]”および“オフセットアドレス[2:0]=111 & バイトマスク[7]” のうちいずれかの条件を満たす場合に、当該位置PT0に対して有効を示す情報（フラグ；例えば1）が設定されることを意味する。
【００９８】
ここで、“オフセットアドレス[3]==ウォッチポイントアドレス[3]”は、下位バイトオフセットアドレスの3ビット目の値がウォッチポイントレジスタの3ビット目と一致していることを表す。
【００９９】
また、例えば、“オフセットアドレス[2:0]=001 & バイトマスク[1]”は、3ビットの下位バイトオフセットアドレスが“001”であり、且つ、バイトマスク[1]が“1”であることを示している。ベースアドレスにおいては、バイトマスク[1]の位置がオフセットアドレス[2:0]=001に相当することを示す。
【０１００】
バイト位置PT0に後続するバイト位置PT1〜PT9においては、バイトマスクを、先頭のバイト位置PT0からの距離（ビット数）と同数のビット数だけ下位アドレス方向（末尾側）へずらした下位オフセットアドレスと比較する。
【０１０１】
例えば、バイト位置PT1については、下位バイトアクセス位置生成回路１０５は、以下に示す条件式（２）を用いて、アクセスバイト位置であるか否かの判断を行なう。
【０１０２】
すなわち、下位バイトアクセス位置生成回路１０５は、この条件式（２）が満たされる場合に、バイト位置PT1に対して有効を示す情報（フラグ；例えば1）を設定する。
【０１０３】
【数２】
2020091708.tif 000004
【０１０４】
バイト位置PT1はバイト位置PT0に比べて下位アドレス方向（末尾側）へ1ビットずれた位置となるので、条件式（２）においては、上記条件式（１）に比べて各バイトマスクに相当するオフセットアドレスに1ビット増えた位置が対応している。
【０１０５】
例えば、“オフセットアドレス[2:0]=001 & バイトマスク[2]”となっており、3ビットの下位バイトオフセットアドレスが“001”であり、且つ、バイトマスク[2]が“1“であることを条件としている。
【０１０６】
また、分割処理フローの単位が８バイトであるため、バイトマスク[0]に対しては、ウォッチポイントアドレス[3]が、“オフセットアドレス[3]”に後続する次の8バイトである“オフセットアドレス[3]+1”に一致するかを判断している。
【０１０７】
下位バイトアクセス位置生成回路１０５は、この図１０に例示するように、各バイト位置PT0〜PT9について、それぞれ条件式に基づいて、下位バイトオフセットアドレスに対してウォッチポイントレジスタに設定されたバイトマスクの位置を対応づける。
【０１０８】
このように、各条件式においては、様々な値をとりうるオフセットアドレスにバイトマスクを対応させている。
【０１０９】
これにより、バイトアクセス位置情報は、下位バイト有効ビット生成回路１０６によって生成された複数の下位バイトオフセットアドレスに対して、ウォッチポイントレジスタに設定されたバイトマスクの位置を合せることができる。
【０１１０】
下位バイトアクセス位置生成回路１０５は、バイト位置PT0〜PT9について、それぞれオフセットアドレスに対してバイトアクセス位置情報を用いてバイトマスクを対応づけて、オフセットアドレスにおけるウォッチポイントアドレスとの検証対象位置を決定（生成）する。
【０１１１】
下位バイトアクセス位置生成回路１０５は、バイト位置PT0〜PT9のうち、上記の条件式を満たすバイト位置に対して“1”を設定し、条件式を満たさないバイト位置に対して“0”を設定する。下位バイトアクセス位置生成回路１０５は、バイト位置PT0〜PT9について“0”もしくは“1”を設定した情報をバイトアクセス位置情報として生成する。
【０１１２】
図１１は実施形態の一例としてのプロセッサ１における下位バイトアクセス位置情報及び下位バイト有効ビット位置情報の生成方法を説明するための図である。
【０１１３】
図１１においては、オフセットアドレス=0xfff9，ストライド幅=0，データサイズ=4B，ウォッチポイントアドレス=0xfff8，バイトマスク[7:0]=00000100の例における下位バイトアクセス位置情報及び下位バイト有効ビット位置情報の生成例を示す。
【０１１４】
この図１１に示す例においては、下位バイトアクセス位置情報として、図１０の条件式により（PT9,PT8,PT7,PT6,PT5,PT4,PT3,PT2,PT1,PT0）=(0,0,0,0,0,0,1,0)が生成され、下位バイト有効ビット位置情報として、図７のテーブル情報により有効ビットが1となる箇所が生成される。
【０１１５】
なお、バイトアクセス位置情報は、図１１に例示したものに限定されるものではなく、例えば、分割処理の単位やバイトマスクのビット数等に応じて適宜変更して実施してもよい。
【０１１６】
下位バイトマッチ判定回路１０７は、下位バイトアクセス位置生成回路１０５によって生成された分割処理毎の下位バイトアクセス位置情報と、下位バイト有効ビット生成回路１０６によって生成された下位バイト有効ビット位置情報とを比較する（下位バイトマッチ判定）。下位バイトマッチ判定回路１０７は、下位バイトアクセス位置情報と下位バイト有効ビット位置情報とにおいて共通して“1”が設定された位置があるかを判定する。
【０１１７】
下位バイトマッチ判定回路１０７は、バイトアクセス位置情報のビット位置PT0〜PT9で1となる箇所に対して、下位バイト有効ビット位置情報のバイト位置PT0〜PT9にある有効ビットを検索し、有効ビットが1となる箇所があるかを判断する。
【０１１８】
下位バイトマッチ判定回路１０７は、有効ビットが1となる箇所があれば判定結果を1としてＡＮＤゲート１０８に出力する。例えば、下位バイトマッチ判定回路１０７は、下位バイトアクセス位置情報と下位バイト有効ビット位置情報とにおいて共通して“1”が設定された位置がある場合に、判定結果として“1”をＡＮＤゲート１０８に出力する。一方、下位バイトアクセス位置情報と下位バイト有効ビット位置情報とにおいて共通して“1”が設定された位置がない場合に、下位バイトマッチ判定回路１０７は、判定結果として“0”をＡＮＤゲート１０８に出力する。
【０１１９】
図１２は実施形態の一例としてのプロセッサ１における下位バイトマッチ判定回路１０７の構成を例示する図である。本例においては、分割処理フローの単位が８バイトの例について示すが、ストライド幅を考慮して１０個のバイト位置PT0〜PT9を示すものとする。
【０１２０】
この図１２に示す例において、PT0〜PT9は下位バイトアクセス位置生成回路１０５によって生成された下位バイトアクセス位置情報であり、B0〜B7は下位バイト有効ビット生成回路１０６によって生成された下位バイト有効ビット位置情報である。
【０１２１】
ここで、下位バイト有効ビット位置情報は、図７〜図９の有効ビットが1となる全ての箇所を示し、B0であれば有効ビットが1となるのはPT0のみのためB0[0]、B1であれば有効ビットが1となるのはPT1とPT2とPT3のためB1[1]とB1[2]とB1[3]、という形でPT0〜PT9の末尾の数字を用いてB0〜B7をビット表記化したものである。
【０１２２】
図１２に例示する下位バイトマッチ判定回路１０７は、複数（図１２に示す例では１６個）のＡＮＤゲート７１−１〜７１−１６と、複数（図１２に示す例では５個）のＯＲゲート７２−１〜７２−５とを備える。
【０１２３】
なお、以下、下位バイトマッチ判定回路１０７のＡＮＤゲートを示す符号としては、複数のＡＮＤゲートのうち１つを特定する必要があるときには符号７１−１〜７１−１６を用いるが、任意のＡＮＤゲートを指すときには符号７１を用いる。同様に、以下、下位バイトマッチ判定回路１０７のＯＲゲートを示す符号としては、複数のＯＲゲートのうち１つを特定する必要があるときには符号７２−１〜７２−５を用いるが、任意のＯＲゲートを指すときには符号７２を用いる。
【０１２４】
例えば、ＡＮＤゲート７１−４には、下位バイトアクセス位置情報PT3と、下位バイト有効ビット位置情報B1におけるPT3に対応する出力B1[3]が入力される。ＡＮＤゲート７１−４は、２つの入力がいずれも1である場合に、1をＯＲゲート７２−１に入力する。各ＡＮＤゲート７１は同様の処理を行なう。
【０１２５】
ＯＲゲート７２−１は、ＡＮＤゲート７１−１〜７１−４のいずれかから1が入力されると1をＯＲゲート７２−５に入力する。各ＯＲゲート７２は同様の処理を行なう。
【０１２６】
ＯＲゲート７２−５は、いずれかのＯＲゲート７２−１〜７２−４のいずれかから1が入力されると、1をＡＮＤゲート１０８に出力する。
【０１２７】
下位バイトマッチ判定回路１０７は、下位バイトオフセットアドレス生成回路１０４によって生成された複数の分割処理フローを一つの処理単位として、ウォッチポイントアドレスとの一致を判定する。なお、下位バイトマッチ判定回路は、図１２に例示したものに限定されるものではなく、例えば、分割処理の単位やストライド幅等に応じて適宜変更して実施してもよい。
【０１２８】
ＡＮＤゲート１０８には、ウォッチポイントレジスタ１０３から読み出された検出許可ビットと、上位バイトアドレスマッチ回路１０２からの判定結果と、下位バイトマッチ判定回路１０７からの判定結果とが入力される。
【０１２９】
ＡＮＤゲート１０８は、入力された３つの信号の論理積の結果を出力する。すなわち、ウォッチポイントレジスタ１０３から読み出された検出許可ビットと、上位バイトアドレスマッチ回路１０２からの判定結果と、下位バイトマッチ判定回路１０７からの判定結果とがいずれも“1”である場合に、ウォッチポイント検出として“1”を出力する。
【０１３０】
ＡＮＤゲート１０８においては、ウォッチポイントレジスタ１０３から読み出された検出許可ビットによるマスクが行なわれている。ＡＮＤゲート１０８の出力は判定回路１０９に入力される。
【０１３１】
判定回路１０９は、ＡＮＤゲート１０８からの出力信号が“1”であるか否かを判定する。判定の結果、ＡＮＤゲート１０８から“1”が出力された場合には、判定回路１０９は検出通知として“1”をプロセッサコア１０１に入力する。
【０１３２】
プロセッサコア１０１は、デバッグ回路１０（判定回路１０９）から検出通知1が入力されると、実行中のプログラムを停止させる等、予め規定された所定の処理を実行する。
【０１３３】
また、判定回路１０９は、ＡＮＤゲート１０８から検出通知1が出力されない場合には、インクリメント回路１１０に通知（インクリメント指示）を行なう。
【０１３４】
本プロセッサ１においては、下位バイトオフセットアドレス生成回路１０４によって生成された複数の分割処理フローを一つの処理単位として、ウォッチポイントアドレスとの一致を判定する。
【０１３５】
インクリメント回路１１０は、判定回路１０９からインクリメント指示が入力されると、分割処理フロー番号をインクリメント（+1）し、このインクリメント後の分割処理フロー番号を下位バイトオフセットアドレス生成回路１０４に通知する。
【０１３６】
すなわち、下位バイトマッチ判定回路１０７による下位バイトマッチ判定で1となる箇所が無く判定結果が0となった場合は、インクリメント回路１１０が分割処理フロー番号をインクリメント（+1）する。
【０１３７】
本プロセッサ１において、一の分割処理フローにおいてウォッチポイントアドレスとの一致が検出されなかった場合には、次の分割処理フロー番号によって特定される分割処理フローに対して、ウォッチポイントアドレスとの一致判定が行なわれるのである。
【０１３８】
下位バイトマッチ判定回路１０７は、新たな分割処理フロー番号に相当するバイトアクセス位置情報（図２〜図６参照）を計算する。以下、下位バイトオフセットアドレス生成回路１０４，下位バイトアクセス位置生成回路１０５および下位バイトマッチ判定回路１０７により処理が、判定回路１０９において判定結果1が検出されるまで繰り返し行なわれる。すなわち、ウォッチポイントが検出されるまで繰り返し行なわれる。
【０１３９】
（Ｂ）動作
上述の如く構成された実施形態の一例としてのプロセッサ１のデバッグ回路１０の処理を、図１３に示すフローチャート（ステップＳ１〜Ｓ８）に従って説明する。
【０１４０】
ステップＳ１において、デバッグ回路１０は、プロセッサコア１０１からアドレス，命令，データサイズを取得する。また、デバッグ回路１０は、ウォッチポイントレジスタ１０３からウォッチポイントアドレスおよびバイトマスクを読み出して取得する。
【０１４１】
ステップＳ２において、下位バイトオフセットアドレス生成回路１０４が、アクセス先アドレスの下位バイトに基づき、ウォッチポイント検索対象の先頭アドレス（下位バイトオフセットアドレス）を生成する。すなわち、下位バイトオフセットアドレス生成回路１０４は、分割処理フロー番号によって順序づけられた複数の分割処理フロー（検証アドレス範囲）を設定する。
【０１４２】
下位バイトアクセス位置生成回路１０５は、下位バイトオフセットアドレス，ウォッチポイントアドレスおよびバイトマスク情報に基づき、分割処理毎のバイトアクセス位置情報を生成する。
【０１４３】
一方、ステップＳ３において、上位バイトアドレスマッチ回路１０２が、プロセッサ１０１から通知されたアクセス先アドレスのうちの上位バイトと、ウォッチポイントレジスタ１０３から通知されるウォッチポイントアドレスの上位バイトとを比較する。この比較の結果、上位バイトのアドレスがウォッチポイントアドレスの上位バイトと一致した場合には、上位バイトアドレスマッチ回路１０２は、上位バイトアドレスマッチ信号を出力する。
【０１４４】
また、下位バイト有効ビット生成回路１０６が、プロセッサコア１０１から出力される命令およびデータサイズ情報に基づいて、下位バイトオフセットアドレスを基準とした下位バイト有効ビット位置情報の生成を行なう。
【０１４５】
以下に示すステップＳ４〜Ｓ８の処理は、複数の分割処理フロー（検証対象アドレス範囲）のそれぞれに対して、分割処理フロー番号に沿って順次行なわれることになる。
【０１４６】
ステップＳ４において、下位バイトマッチ判定回路１０７が、下位バイトアクセス位置生成回路１０５によって生成された分割処理毎の下位バイトアクセス位置情報と、下位バイト有効ビット生成回路１０６によって生成された下位バイト有効ビット位置情報とを比較する。下位バイトマッチ判定回路１０７は、下位バイトアクセス位置情報と下位バイト有効ビット位置情報とにおいて共通して1が設定された位置があれば判定結果を1としてＡＮＤゲート１０８に出力する。
【０１４７】
ＡＮＤゲート１０８は、ウォッチポイントレジスタ１０３から読み出された検出許可ビットと、上位バイトアドレスマッチ回路１０２からの判定結果と、下位バイトマッチ判定回路１０７からの判定結果とがいずれも1である場合に1を出力する。判定回路１０９は、ＡＮＤゲート１０８から1が出力されるとウォッチポイントが検出されたと判断する。
【０１４８】
ステップＳ５において、ウォッチポイントの検出が行なわれたか否かの確認が行なわれる。確認の結果、ウォッチポイントが検出された場合には（ステップＳ５のＹＥＳルート参照）、ステップＳ６に移行する。
【０１４９】
ステップＳ６において、判定回路１０９はプロセッサコア１０１に対して、ウォッチポイント検出通知を行なう。ウォッチポイント検出通知を受けたプロセッサコア１０１は、例えば、実行中のプログラムを停止させる等の処理を行なう。デバッグ回路１０は、その後、処理を終了する。
【０１５０】
一方、ステップＳ５における確認の結果、ウォッチポイントが検出されていない場合には（ステップＳ５のＮＯルート参照）、ステップＳ７に移行する。
【０１５１】
ステップＳ７において、判定回路１０９はインクリメント回路１１０に対してインクリメント指示を行なう。インクリメント回路１１０は、インクリメント指示が入力されると、分割処理フロー番号をインクリメント（+1）し、このインクリメント後の分割処理フロー番号を下位バイトオフセットアドレス生成回路１０４に通知する。
【０１５２】
ステップＳ８において、下位バイトオフセットアドレス生成回路１０４は、分割処理フロー番号が最大値であるかを確認する。分割処理フロー番号が最大値であるかは、例えば、プロセッサコア１０１から通知されるデータサイズ情報に基づいて判断してもよい。
【０１５３】
確認の結果、分割処理フロー番号が最大値でない場合には（ステップＳ８のＮＯルート参照）、ステップＳ２に戻り、ステップＳ７においてインクリメントされた分割処理フロー番号によって特定される下位バイトオフセットアドレスについて処理を行なう。
【０１５４】
すなわち、本プロセッサ１においては、プロセッサコア１０１からのアクセス先アドレスに基づき複数の下位バイトオフセットアドレスを生成し、これらの複数のオフセットアドレスに対して、ウォッチポイントアドレスとの一致検証をシーケンシャルに行なうのである。
【０１５５】
一方、分割処理フロー番号が最大値である場合には（ステップＳ８のＹＥＳルート参照）、処理を終了する。
【０１５６】
（Ｃ）効果
このように、実施形態の一例としてのプロセッサ１によれば、下位バイトオフセットアドレス生成回路１０４が、複数の下位バイトオフセットアドレスを生成（算出）する。これにより、プロセッサコア１０１のアクセス先領域（データバス幅）を設定処理単位サイズ毎の複数の検証アドレス範囲に仮想的に区切ることができる。
【０１５７】
そして、生成された下位バイトオフセットアドレス毎（分割処理フロー毎）に下位バイトアクセス位置生成回路１０５による下位バイトアクセス位置情報の生成や、下位バイトマッチ判定回路１０７やＡＮＤゲート１０８によるウォッチポイントアドレスやバイトマスクとの一致判定を行なう。すなわち、下位バイト有効ビット生成回路１０６，下位バイトマッチ判定回路１０７およびＡＮＤゲート１０８により、これらの複数の検証アドレス範囲に対して順次ウォッチポイントアドレスとの一致判定を行なう。一の分割処理フローに対する判定において一致判定が行なわれなかった場合には、インクリメント回路１１０により次の分割処理フローに移行して、同様の一致判定を繰り返し行なう。
【０１５８】
これらにより、下位バイト有効ビット生成回路１０６，下位バイトマッチ判定回路１０７およびＡＮＤゲート１０８を重複して備えることなく、データサイズの分割単位で下位バイトオフセットアドレスの生成回路やウォッチポイントアドレスやバイトマスクとの比較回路（コンパレータ）等を共通化できる。従って、命令種類やデータサイズ幅が増加しても回路や配線が増加しないため、実装コストを削減でき、また、費電力を削減することもできる。
【０１５９】
下位バイト有効ビット生成回路１０６が、下位バイトオフセットアドレスを基準とした下位バイト有効ビット位置情報の生成を行なうことで、下位バイトオフセットアドレスにおけるアクセス先として有効な位置が特定される。
【０１６０】
さらに、下位バイトアクセス位置生成回路１０５が、下位バイトオフセットアドレス，ウォッチポイントアドレスおよびバイトマスク情報に基づき、分割処理毎のバイトアクセス位置情報を生成する。これにより、下位バイトオフセットアドレスに対する、ウォッチポイントアドレスおよびバイトマスクに応じた検出判定位置が特定される。
下位バイトマッチ判定回路１０７が、下位バイトアクセス位置情報と下位バイト有効ビット位置情報とにおいて共通して“1”が設定された位置があるかを判定することで、下位バイトアドレスにおけるウォッチポイントアドレスおよびバイトマスクとの一致判定を効率的に行なうことができる。
【０１６１】
プロセッサコア１０１からのアクセス先アドレスに基づき、下位バイトオフセットアドレス生成回路１０４が、複数の下位バイトオフセットアドレスを生成する。そして、下位バイトマッチ判定回路１０７が、これらの複数のオフセットアドレスに対して、ウォッチポイントアドレスとの一致検証をシーケンシャルに行なう。これにより、共通化された一つの下位バイトマッチ判定回路１０７およびＡＮＤゲート１０８で複数のオフセットアドレスに対するウォッチポイントアドレスとの一致検証を実現することができる。
【０１６２】
（Ｄ）その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０１６３】
例えば、上述した実施形態においては、ウォッチポイントレジスタ１０３から読み出された検出許可ビットによるマスクを下位バイトマッチ判定回路１０７による下位バイトマッチ判定後に行なっているが、これに限定されるものではない。
【０１６４】
図１４は図１に示したプロセッサ１のデバッグ回路１０の変形例を示す図である。
【０１６５】
この図１４に示す例において、デバッグ回路１０ａは、図１のデバッグ回路１０にＡＮＤゲート１０８１を備えている。そして、上位バイトアドレスマッチ回路１０２から出力される上位バイトアドレスマッチ信号と、ウォッチポイントレジスタから読み出される検出許可ビットは、このＡＮＤゲート１０８１に入力される。
【０１６６】
ＡＮＤゲート１０８１は、上位バイトアドレスマッチ信号と検出許可ビットとがいずれも1である場合に、ＡＮＤゲート１０８に1を出力する。
【０１６７】
ＡＮＤゲート１０８には、下位バイトマッチ判定回路１０７からの出力信号と、ＡＮＤゲート１０８１からの出力信号とが入力される。
【０１６８】
本変形例においては、上位バイトアドレスマッチ回路１０２による上位バイトアドレスマッチ判定の結果、上位バイトのアドレスがウォッチポイントアドレスの上位バイトと一致する場合に、その後段の処理において、下位バイトオフセットアドレス生成回路１０４によるバイトマスクを用いたバイトアクセス位置情報の作成等が行なわれる。
【０１６９】
一方、上位バイトアドレスマッチ判定の結果、上位バイトのアドレスがウォッチポイントアドレスの上位バイトと一致しない場合には、以降の分割処理フローを行なわずにウォッチポイント検出処理を終了する。
【０１７０】
これにより、上位バイトアドレスマッチ判定の結果、上位バイトのアドレスがウォッチポイントアドレスの上位バイトと不一致の場合に、以降の不要な分割処理フローを行なうことがなく、デバッグを効率的に処理することができる。
【０１７１】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【０１７２】
（Ｅ）付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１７３】
（付記１）
演算部と、当該演算部から監視対象アドレスに対するデータアクセスを監視する監視装置とを備える演算処理装置であって、
前記監視装置が、
前記演算部からのアクセス先アドレスに基づき、基本処理単位サイズ間隔で複数のオフセットアドレスを生成することで、前記演算部からのアクセス先メモリ領域を区切って複数の検証アドレス範囲を設定するオフセットアドレス生成部と、
設定された前記複数の検証アドレス範囲に対して、監視対象アドレスとの一致を順次、判定する判定部と
を備えることを特徴とする、演算処理装置。
【０１７４】
（付記２）
前記監視対象アドレスと、前記検証アドレス範囲に含まれる検証アドレスを構成するビット列における検証対象ビット位置を抽出するためのバイトマスクとを記憶する記憶部と、
前記演算部からのアクセス先アドレスにおけるデータアクセスの有効ビット位置を示すバイト有効ビット位置情報を生成するバイト有効ビット生成部と、
前記オフセットアドレス，前記監視対象アドレスおよび前記バイトマスクに基づき、前記検証アドレスにおけるアクセス検証位置を表すバイトアクセス位置情報を生成するバイトアクセス位置生成部と
を備え、
前記判定部が、前記バイト有効ビット位置情報と前記バイトアクセス位置情報との一致を判断する
ことを特徴とする、付記１記載の演算処理装置。
【０１７５】
（付記３）
前記判定部において前記バイト有効ビット位置情報と前記バイトアクセス位置情報とが一致したと判断した場合に、前記演算部に対して検出通知を発行する通知部
を備えることを特徴とする、付記２記載の演算処理装置。
【０１７６】
（付記４）
前記判定部において、前記バイト有効ビット位置情報と前記バイトアクセス位置情報とが不一致である場合に、バイトアクセス位置生成部および一致判断部が、前記複数の検証アドレス範囲のうち、未処理の検証アドレス範囲に対して処理を行なう
ことを特徴とする、付記２または３記載の演算処理装置。
【０１７７】
（付記５）
演算部と、当該演算部から監視対象アドレスに対するデータアクセスを監視する監視装置とを備える演算処理装置において、
前記監視装置が、
前記演算部からのアクセス先アドレスに基づき、基本処理単位サイズ間隔で複数のオフセットアドレスを生成することで、前記演算部からのアクセス先メモリ領域を区切って複数の検証アドレス範囲を設定する処理と、
設定された前記複数の検証アドレス範囲に対して、監視対象アドレスとの一致を順次、判定する処理と
を備えることを特徴とする、演算処理装置の制御方法。
【０１７８】
（付記６）
前記演算部からのアクセス先アドレスにおけるデータアクセスの有効ビット位置を示すバイト有効ビット位置情報を生成する処理と、
前記オフセットアドレス，前記監視対象アドレスおよび前記検証アドレス範囲に含まれる検証アドレスを構成するビット列における検証対象ビット位置を抽出するためのバイトマスクに基づき、前記検証アドレスにおけるアクセス検証位置を表すバイトアクセス位置情報を生成する処理と、
前記バイト有効ビット位置情報と前記バイトアクセス位置情報との一致を判断する処理と
を備えることを特徴とする、付記５記載の演算処理装置の制御方法。
【０１７９】
（付記７）
前記バイト有効ビット位置情報と前記バイトアクセス位置情報とが一致したと判断した場合に、前記演算部に対して検出通知を発行する処理
を備えることを特徴とする、付記６記載の演算処理装置の制御方法。
【０１８０】
（付記８）
前記バイト有効ビット位置情報と前記バイトアクセス位置情報とが不一致である場合に、前記複数の検証アドレス範囲のうち、未処理の検証アドレス範囲に対して処理を行なう
ことを特徴とする、付記６または７記載の演算処理装置の制御方法。
【符号の説明】
【０１８１】
１    プロセッサ
１０，１０ａ    デバッグ回路
１０１    プロセッサコア
１０２    上位バイトアドレスマッチ回路
１０３    ウォッチポイントレジスタ
１０４    下位バイトオフセットアドレス生成回路
１０５    下位バイトアクセス位置生成回路
１０６    下位バイト有効ビット生成回路
１０７    下位バイトマッチ判定回路
７１−１〜７１−１６，７１，１０８，１０８１    ＡＮＤゲート
１０９    判定回路
１１０    インクリメント回路
７２−１〜７２−５，７２    ＯＲゲート
【図１】
2020091708.tif 000005
【図２】
2020091708.tif 000006
【図３】
2020091708.tif 000007
【図４】
2020091708.tif 000008
【図５】
2020091708.tif 000009
【図６】
2020091708.tif 000010
【図７】
2020091708.tif 000011
【図８】
2020091708.tif 000012
【図９】
2020091708.tif 000013
【図１０】
2020091708.tif 000014
【図１１】
2020091708.tif 000015
【図１２】
2020091708.tif 000016
【図１３】
2020091708.tif 000017
【図１４】
2020091708.tif 000018
【図１５】
2020091708.tif 000019