(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-30
(45)【発行日】2023-02-07
(54)【発明の名称】演算処理装置および演算処理装置の制御方法
(51)【国際特許分類】
G06F 11/36 20060101AFI20230131BHJP
G06F 15/78 20060101ALI20230131BHJP
G06F 9/345 20180101ALI20230131BHJP
【FI】
G06F11/36 148
G06F15/78 516
G06F9/345 S
(21)【出願番号】P 2018229044
(22)【出願日】2018-12-06
【審査請求日】2021-09-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100092978
【氏名又は名称】真田 有
(72)【発明者】
【氏名】岡林 達
【審査官】石川 亮
(56)【参考文献】
【文献】特開2014-067376(JP,A)
【文献】特開平09-146854(JP,A)
【文献】特開2011-090492(JP,A)
【文献】米国特許第06662288(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G06F 15/78
G06F 9/345
(57)【特許請求の範囲】
【請求項1】
演算部と、当該演算部から監視対象アドレスに対するデータアクセスを監視する監視装置とを備える演算処理装置であって、
前記監視装置が、
前記演算部からのアクセス先アドレスに基づき、基本処理単位サイズ間隔で複数のオフセットアドレスを生成することで、前記演算部からのアクセス先メモリ領域を区切って複数の検証アドレス範囲を設定するオフセットアドレス生成部と、
生成された前記複数の検証アドレス範囲に対して、監視対象アドレスとの一致を順次、判定する判定部と
を備えることを特徴とする、演算処理装置。
【請求項2】
前記監視対象アドレスと、前記検証アドレス範囲に含まれる検証アドレスを構成するビット列における検証対象ビット位置を抽出するためのバイトマスクとを記憶する記憶部と、
前記演算部からのアクセス先アドレスにおけるデータアクセスの有効ビット位置を示すバイト有効ビット位置情報を生成するバイト有効ビット生成部と、
前記オフセットアドレス,前記監視対象アドレスおよび前記バイトマスクに基づき、前記検証アドレスにおけるアクセス検証位置を表すバイトアクセス位置情報を生成するバイトアクセス位置生成部と
を備え、
前記判定部が、前記バイト有効ビット位置情報と前記バイトアクセス位置情報との一致を判断する
ことを特徴とする、請求項1記載の演算処理装置。
【請求項3】
前記判定部において前記バイト有効ビット位置情報と前記バイトアクセス位置情報とが一致したと判断した場合に、前記演算部に対して検出通知を発行する通知部
を備えることを特徴とする、請求項2記載の演算処理装置。
【請求項4】
前記判定部において、前記バイト有効ビット位置情報と前記バイトアクセス位置情報とが不一致である場合に、
前記バイトアクセス位置生成部および
前記判定部が、前記複数の検証アドレス範囲のうち、未処理の検証アドレス範囲に対して処理を行なう
ことを特徴とする、請求項2または3記載の演算処理装置。
【請求項5】
演算部と、当該演算部から監視対象アドレスに対するデータアクセスを監視する監視装置とを備える演算処理装置において、
前記監視装置が、
前記演算部からのアクセス先アドレスに基づき、基本処理単位サイズ間隔で複数のオフセットアドレスを生成することで、前記演算部からのアクセス先メモリ領域を区切って複数の検証アドレス範囲を設定する処理と、
設定された前記複数の検証アドレス範囲に対して、監視対象アドレスとの一致を順次、判定する処理と
を備えることを特徴とする、演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算処理装置および演算処理装置の制御方法に関する。
【背景技術】
【0002】
演算処理装置としてのプロセッサに実装されるデバッグ機能として、例えばウォッチポイントを用いる手法が知られている。このウォッチポイントを用いるデバッグ機能においては、メモリの特定のアドレスを監視対象アドレス(ウォッチポイント)として設定し、この監視対象アドレスへのデータアクセスの発生を検知した場合にトラップルーチンを実行させて実行中の処理を停止させる。
【0003】
図15は従来のプロセッサのデバッグ機能を説明するための図である。
【0004】
図15に示すプロセッサ500は、プロセッサコア501,ウォッチポイントレジスタ503,上位バイトアドレスマッチ回路502,下位バイトアドレスマッチ回路505,下位バイト要素アドレス生成回路504および検出通知判定回路506を備える。
【0005】
プロセッサコア501は、実行する命令および当該命令の実行により生じるメモリアクセス領域のデータサイズを示す情報(以下、単にデータサイズ情報という)を下位バイト要素アドレス生成回路504および下位バイトアドレスマッチ回路505に通知する。
【0006】
また、プロセッサコア501は、命令の実行により生じるメモリアクセスのアクセス先アドレス(以下、単にアクセス先アドレスという場合がある)を上位バイトアドレスマッチ回路502および下位バイト要素アドレス生成回路504に通知する。
【0007】
ウォッチポイントレジスタ503は、ユーザから設定されたウォッチポイントのアドレス(以下、ウォッチポイントアドレスという場合がある)を格納する。ウォッチポイントレジスタ503には、例えば、所定サイズ(例えば8バイト)のウォッチポイントアドレスが設定される。また、ウォッチポイントレジスタ503はバイトマスクおよび検出許可ビットを格納する。
【0008】
ウォッチポイントレジスタ503から読み出されたウォッチポイントアドレスは、上位バイトアドレスマッチ回路502と下位バイトアドレスマッチ回路505とに入力される。
【0009】
検出許可ビットは、ウォッチポイントアドレスの検出を許可するか否かを表す情報であり、予めユーザ等により設定される。例えば、ウォッチポイントアドレスの検出を行なう場合には、検出許可ビットに“1”が設定される。ウォッチポイントレジスタ503から読み出された検出許可ビットは、検出通知判定回路506のANDゲート5061に入力される。
【0010】
バイトマスクは、処理対象のアドレスを構成するビット列のうち、ウォッチポイントアドレスとの比較を行なう部分(ビット)を抽出するためのマスクである。ウォッチポイントレジスタ503から読み出されたバイトマスクは下位バイトアドレスマッチ回路505に入力される。
【0011】
上位バイトアドレスマッチ回路502は、プロセッサコア501から通知されたアクセス先アドレスの上位バイトと、ウォッチポイントレジスタ503から通知されるウォッチポイントアドレスの上位バイトとを比較する。比較の結果、上位バイトのアドレスが一致した場合には、上位バイトアドレスマッチ回路502は、検出通知判定回路506のANDゲート5061に“1(High)”を出力する。
【0012】
下位バイト要素アドレス生成回路504は、アクセス先アドレス,命令およびデータサイズ情報に基づいて、一つの命令でアクセスするデータバス幅を所定の処理単位サイズで分割して複数の要素アドレスを生成する。処理単位サイズは、プロセッサコア501が一度に読み出せるデータサイズ(データ長)であり、例えば、4B(バイト)である。
【0013】
下位バイト要素アドレス生成回路504は、データバス幅から分割して生成される要素アドレスの数だけ用意される。例えば、下位バイトのデータバス幅が12Bであり、処理単位サイズが4Bである場合には、3つの下位バイト要素アドレス生成回路504が備えられる。プロセッサコア501から出力されるアドレスは、複数の下位バイト要素アドレス生成回路504に振り分けてそれぞれ入力される。
【0014】
下位バイト要素アドレス生成回路504は、生成した各要素アドレスを下位バイトアドレスマッチ回路505に入力する。
【0015】
下位バイトアドレスマッチ回路505は、下位バイト要素アドレス生成回路504から入力された要素アドレスを、ウォッチポイントレジスタ503から読み出したウォッチポイントアドレスの下位バイトと比較する。この際、下位バイトアドレスマッチ回路505は、ウォッチポイントレジスタ503から読み出したバイトマスクによりマスクされていないビット位置について比較を行なう。
【0016】
下位バイトアドレスマッチ回路505は下位バイト要素アドレス生成回路504と同数備えられる。
図15に示す例においては、下位バイトアドレスマッチ回路505および下位バイト要素アドレス生成回路504がそれぞれ3つずつ備えられている。すなわち、下位バイトアドレスマッチ回路505は下位バイト要素アドレス生成回路504に対応して備えられる。
【0017】
各下位バイト要素アドレス生成回路504は、それぞれ一つの下位バイトアドレスマッチ回路505に接続され、一の下位バイト要素アドレス生成回路504において生成された要素アドレスは、対応する一の下位バイトアドレスマッチ回路505に入力される。
【0018】
比較の結果、バイトマスクによるマスクがされていない部分において、要素アドレスとウォッチポイントアドレスとが一致した場合には、下位バイトアドレスマッチ回路505は、検出通知判定回路506に“1(High)”を出力する。
【0019】
検出通知判定回路506は、ANDゲート5061とORゲート5062とを備える。ANDゲート5061は、下位バイトアドレスマッチ回路505と同数備えられている。すなわち、ANDゲート5061は、下位バイトアドレスマッチ回路505に対応させて備えられている。
【0020】
ANDゲート5061は、それぞれ一つの下位バイトアドレスマッチ回路505に接続され、一の下位バイトアドレスマッチ回路505の出力(比較結果)は、対応する一のANDゲート5061に入力される。
【0021】
また、各ANDゲート5061には、それぞれ上位バイトアドレスマッチ回路502の出力(比較結果)と、ウォッチポイントレジスタ503から読み出された検出許可ビットとも入力される。
【0022】
各ANDゲート5061は、下位バイトアドレスマッチ回路505の出力値と、上位バイトアドレスマッチ回路502の出力値と、ウォッチポイントレジスタ503からの検出許可ビットとがいずれも“1”である場合に、“1”を出力する。各ANDゲート5061の出力はORゲート5062に入力される。ORゲート5062は、いずれかのANDゲート5061から“1”が入力されると、検出通知として“1”をプロセッサコア501に出力(通知)する。
【0023】
このような構成により、従来のプロセッサ500のデバッグ機能においては、プロセッサコア501からのアクセス先アドレス,命令およびデータサイズ情報に基づいて、下位バイト要素アドレス生成回路504がデータバス幅を処理単位サイズで分割した複数の要素アドレスを生成する。
【0024】
そして、上位バイトアドレスマッチ回路502が、アクセス先アドレスの上位バイトと、ウォッチポイントアドレスの上位バイトとの比較を行なう。また、下位バイトアドレスマッチ回路505が、全要素アドレス情報および命令,データサイズ情報と、ウォッチポイントレジスタ503から読み出されたウォッチポイントアドレスとバイトマスクを用いて比較を行なう。
【0025】
検出通知判定回路506は、これらの比較結果に基づき、いずれかの要素アドレス情報に関してウォッチポイントアドレスに一致するバイトが検出されると、プロセッサコア501に対して検出通知を行なう。
【先行技術文献】
【特許文献】
【0026】
【文献】特開2010-20767号公報
【文献】特開2008-305306号公報
【発明の概要】
【発明が解決しようとする課題】
【0027】
近年、プロセッサの処理性能を向上させるために命令セットアーキテクチャ(Industrial Standard Architecture:ISA)の拡張が行なわれ、命令種やデータバス幅が増加している。
【0028】
ストライド命令拡張やデータバス幅が増加すると、プロセッサ500において、下位バイト要素アドレス生成回路504,上位バイトアドレスマッチ回路502およびANDゲート5061が増加する。これによりプロセッサ500に搭載される回路や配線が増加して、回路面積が増大し、また装置への実装が困難になるという課題がある。
【0029】
1つの側面では、本発明は、プロセッサにおけるデバッグ機能の構成を簡素化できるようにすることを目的とする。
【課題を解決するための手段】
【0030】
このため、この演算処理装置は、演算部と、当該演算部から監視対象アドレスに対するデータアクセスを監視する監視装置とを備える演算処理装置であって、前記監視装置が、前記演算部からのアクセス先アドレスに基づき、基本処理単位サイズ間隔で複数のオフセットアドレスを生成することで、前記演算部からのアクセス先メモリ領域を区切って複数の検証アドレス範囲を設定するオフセットアドレス生成部と、生成された前記複数の検証アドレス範囲に対して、監視対象アドレスとの一致を順次、判定する判定部とを備える。
【発明の効果】
【0031】
一実施形態によれば、プロセッサにおけるデバッグ機能の構成を簡素化することができる。
【図面の簡単な説明】
【0032】
【
図1】実施形態の一例としてのプロセッサのデバッグ回路の構成を説明するための図である。
【
図2】実施形態の一例としてのプロセッサにおける下位バイトオフセットアドレスを例示する図である。
【
図3】実施形態の一例としてのプロセッサにおける下位バイトオフセットアドレスを例示する図である。
【
図4】実施形態の一例としてのプロセッサにおける下位バイトオフセットアドレスを例示する図である。
【
図5】実施形態の一例としてのプロセッサにおける下位バイトオフセットアドレスを例示する図である。
【
図6】実施形態の一例としてのプロセッサにおける下位バイトオフセットアドレスを例示する図である。
【
図7】実施形態の一例としてのプロセッサにおける下位バイト有効ビット位置情報を説明するための図である。
【
図8】実施形態の一例としてのプロセッサにおける下位バイト有効ビット位置情報を説明するための図である。
【
図9】実施形態の一例としてのプロセッサにおける下位バイト有効ビット位置情報を説明するための図である。
【
図10】実施形態の一例としてのプロセッサの下位バイトアクセス位置生成回路によるバイトアクセス位置情報の生成方法を説明するための図である。
【
図11】実施形態の一例としてのプロセッサにおけるバイトアクセス位置情報の生成方法を説明するための図である。
【
図12】実施形態の一例としてのプロセッサにおける下位バイトマッチ判定回路の構成を例示する図である。
【
図13】実施形態の一例としてのプロセッサのデバッグ回路の処理を説明するためのフローチャートである。
【
図14】
図1に示したプロセッサのデバッグ回路の変形例を示す図である。
【
図15】従来のプロセッサのデバッグ機能を説明するための図である。
【発明を実施するための形態】
【0033】
以下、図面を参照して本演算処理装置および演算処理装置の制御方法に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0034】
(A)構成
図1は実施形態の一例としてのプロセッサ1のデバッグ回路10の構成を説明するための図である。
【0035】
図1に示すプロセッサ1は、プロセッサコア101を備え、種々の演算処理を行なう。また、本プロセッサ1は、プログラムデバッグを行なうデバッグ回路10を備える。
【0036】
デバッグ回路10は、プロセッサコア101から特定のメモリアドレス(ウォッチポイント)に対するデータアクセスを検出し、プロセッサコア101に通知する機能を実現する。デバッグ回路10は、プロセッサコア101からのアクセス先のメモリ領域(アクセス先メモリ領域;検証アドレス範囲)にウォッチポイントアドレスが含まれるかを検証する。
【0037】
プロセッサコア101においては、デバッグ回路10からウォッチポイントに対するメモリアクセスの検出を通知されると、例えばプログラムの実行を中断させる等の処理を行なう。
【0038】
デバッグ回路10は、
図1に示すように、ウォッチポイントレジスタ103,上位バイトアドレスマッチ回路102,下位バイトオフセットアドレス生成回路104,下位バイトアクセス位置生成回路105,下位バイト有効ビット生成回路106,下位バイトマッチ判定回路107,ANDゲート108,判定回路109およびインクリメント回路110を備える。
【0039】
プロセッサコア101は、実行する命令および当該命令の実行により生じるメモリアクセス領域のデータサイズを示す情報(以下、単にデータサイズ情報という)の情報を下位バイトオフセットアドレス生成回路104および下位バイト有効ビット生成回路106に通知する。
【0040】
また、プロセッサコア101は、命令の実行により生じるメモリアクセスのアクセス先のアドレス(以下、アクセス先アドレスという場合がある)を上位バイトアドレスマッチ回路102および下位バイトオフセットアドレス生成回路104に通知する。また、アクセス先アドレスを検証アドレスまたは検証アドレス範囲という場合がある。
【0041】
ウォッチポイントレジスタ103は、ユーザから設定されたウォッチポイントのアドレス(監視対象アドレス;以下、ウォッチポイントアドレスという場合がある)を記憶する。ウォッチポイントアドレスは、プロセッサコア101によって実行されるプログラムによるデータアクセスを検出する対象としてのメモリアドレス(監視対象アドレス)である。ウォッチポイントは、例えばプログラムの実行を中断させる位置(アドレス)を示す。
【0042】
デバッグ回路10は検証アドレスについて、ウォッチポイントアドレスと一致するか否かを判断する。
【0043】
ウォッチポイントレジスタ103から読み出されたウォッチポイントアドレスは、上位バイトアドレスマッチ回路102と下位バイトアクセス位置生成回路105とに入力される。
【0044】
また、ウォッチポイントレジスタ103はバイトマスクおよび検出許可ビットを記憶する。
【0045】
検出許可ビットは、ウォッチポイントアドレスの検出を許可するか否かを表す情報であり、予めユーザ等により設定される。例えば、ウォッチポイントアドレスの検出を行なう場合には、検出許可ビットに“1”が設定される。ウォッチポイントレジスタ103から読み出された検出許可ビットは、ANDゲート108に入力される。
【0046】
バイトマスクは、プロセッサコア101からのアクセス対象(処理対象)のメモリアドレスを構成するデータ列(ビット列)のうち、ウォッチポイントアドレスとの比較を行なう部分(位置;ビット)を抽出(特定)するためのマスクである。すなわち、バイトマスクは、オフセットアドレスを構成するビット列における検証ビット位置を抽出するための情報である。
【0047】
ウォッチポイントレジスタ103から読み出されたバイトマスクは下位バイトアクセス位置生成回路105に入力される。
【0048】
バイトマスクは、例えば、8ビット[7:0]のビット列であり、処理単位サイズ(8バイト)分備えられる。
【0049】
ウォッチポイントレジスタ103は、ウォッチポイントアドレスおよびバイトマスクを格納する記憶部として機能する。
【0050】
上位バイトアドレスマッチ回路102は、プロセッサコア101から通知されたアクセス先アドレスのうちの上位バイトと、ウォッチポイントレジスタ103から通知されるウォッチポイントアドレスの上位バイトとを比較(上位バイトアドレスマッチ判定)する。
【0051】
上位バイトは、プロセッサコア101によるアクセス先としてのデータアドレスのうち、後述する下位バイトマッチ判定回路107による判定が行なわれる下位のバイト(下位バイト)以外の部分であってもよい。
【0052】
上位バイトアドレスマッチ回路102による比較の結果、上位バイトのアドレスがウォッチポイントアドレスの上位バイトと一致した場合には、上位バイトアドレスマッチ回路102は、ANDゲート108に、判定結果として一致を示す1(High)を出力する。以下、上位バイトアドレスマッチ回路102による判定結果の出力を上位バイトアドレスマッチ信号という場合がある。
【0053】
一方、上位バイトアドレスマッチ回路102による比較の結果、上位バイトのアドレスがウォッチポイントアドレスの上位バイトと一致していない場合には、上位バイトアドレスマッチ回路102は、ANDゲート108に、判定結果として不一致を示す0(Low)を出力する。
【0054】
下位バイトオフセットアドレス生成回路104は、アクセス先アドレスの下位バイトに基づき、ウォッチポイント検索対象(検証アドレス範囲)の先頭アドレス(下位バイトオフセットアドレス)を生成(設定)する。下位バイトオフセットアドレス生成回路104は、プロセッサコア101から入力される命令種およびデータサイズ情報に基づいて下位バイトオフセットアドレスを生成する。
【0055】
下位バイトオフセットアドレス生成回路104は、アクセス先アドレスの下位バイトをベースアドレスとして、このベースアドレスに予め規定された所定のデータ幅(例えば8バイト)に応じた値(加算値)を加算することで、下位バイトオフセットアドレスを生成する。
【0056】
下位バイトオフセットアドレス生成回路104は、算出した下位バイトオフセットアドレスに対して基本処理単位サイズの加算を繰り返し行なうことで複数の下位バイトオフセットアドレス(オフセットアドレス計算値)を生成する。
【0057】
下位バイトオフセットアドレス生成回路104は、プロセッサコア101から通知されるアクセス先アドレスに基づき、基本処理単位サイズ間隔の複数の下位バイトオフセットアドレス(オフセットアドレス)を生成する。
【0058】
生成された複数の下位バイトオフセットアドレスにより、プロセッサコア101からのアクセス先メモリ領域は、基本処理単位サイズを有する複数の領域に仮想的に分割される(区切られる)。
【0059】
従って、下位バイトオフセットアドレス生成回路104は、複数の下位バイトオフセットアドレスを生成(算出)することで、プロセッサコア101のアクセス先領域(データバス幅)を所定のデータ幅(処理単位サイズ;例えば8バイト)毎に仮想的に分割(区画)する。
【0060】
下位バイトオフセットアドレス生成回路104によって生成された複数の下位バイトオフセットアドレスにより仮想的に分割される個々の領域を、分割処理フロー(検証アドレス範囲)という場合がある。
【0061】
このように、下位バイトオフセットアドレス生成回路104は、複数の下位バイトオフセットアドレスを生成(算出)することで、プロセッサコア101からのアクセス先メモリ領域を区切って複数の分割処理フローを設定する。
【0062】
分割処理フロー番号は、生成された個々の分割処理フローを特定する識別情報であり、後述するインクリメント回路110によって設定される。分割処理フロー番号は、分割処理フローに対して、アクセス先メモリ領域の先頭から順番に連番として設定される。すなわち、下位バイトオフセットアドレス生成回路104によって生成される複数の分割処理フローは、分割処理フロー番号によって順序づけられている。
【0063】
これにより、分割処理フロー番号をインクリメントしながら指定することで、分割処理フロー(検証アドレス範囲)を順番に切り替えることが可能となる。
【0064】
下位バイトオフセットアドレス生成回路104は、データバス幅を仮想的(数値的)に等間隔に分割して複数の下位バイトオフセットアドレスを設定する。生成された複数の下位バイトオフセットアドレスは、プロセッサコア101からのアクセス先メモリ領域を処理単位サイズで区切るポインタもしくは境界として機能する。また、各下位バイトオフセットアドレスは、各ウォッチポイント検索対象(検証アドレス範囲)の先頭アドレスとして機能する。
【0065】
また、ストライド幅を設定する場合には、下位バイトオフセットアドレス生成回路104は、加算値にストライド幅を反映させる。なお、ストライド幅は、プロセッサコア101から出力されるデータサイズ情報等に基づき既知の手法により得ることができる。
【0066】
図2~
図6は、それぞれ実施形態の一例としてのプロセッサ1における下位バイトオフセットアドレスを例示する図である。
【0067】
図2はストライド幅=0の場合における下位バイトオフセットアドレスの計算例を示す図である。
図3はストライド幅=2であり、データサイズ単位が8B(バイト)の場合における下位バイトオフセットアドレスの計算例を示す図である。
図4はストライド幅=2であり、データサイズ単位が1Bまたは2Bまたは4Bの場合における下位バイトオフセットアドレスの計算例を示す図である。
【0068】
図5はストライド幅=3であり、データサイズ単位が8B(バイト)の場合における下位バイトオフセットアドレスの計算例を示す図である。
図6はストライド幅=3であり、データサイズ単位が1Bまたは2Bまたは4Bの場合における下位バイトオフセットアドレスの計算例を示す図である。
【0069】
これらの
図2~
図6に示す各例においては、生成された各下位バイトオフセットアドレスに対して、その先頭から順に分割処理フロー番号として連番の自然数が付与されている。
【0070】
本プロセッサ1においては、生成された下位バイトオフセットアドレスを先頭とする検証アドレス範囲毎にウォッチポイントアドレスとのマッチ判定が行なわれる。
【0071】
下位バイトオフセットアドレス生成回路104は、プロセッサコア101から入力される命令種およびデータサイズ情報に基づき、命令のベースアドレスから下位バイトオフセットアドレスを設定する。
【0072】
下位バイトオフセットアドレス生成回路104は、生成した下位バイトオフセットアドレスを下位バイトアクセス位置生成回路105に対して出力する。
【0073】
下位バイト有効ビット生成回路106は、プロセッサコア101から出力される命令およびデータサイズ情報に基づいて、下位バイトオフセットアドレスを基準とした下位バイト有効ビット位置情報の生成を行なう。
【0074】
下位バイト有効ビット位置情報は、プロセッサコア101からのアクセス先として有効な位置であるか否かを示す情報であり、例えば、下位バイトオフセットアドレスを構成する8バイトのデータ列においてデータアクセスが生じ得る位置(下位バイト有効ビット位置)を示す。
【0075】
図7~
図9はそれぞれ実施形態の一例としてのプロセッサ1における下位バイト有効ビット位置情報を説明するための図である。
【0076】
これらの
図7~
図9は、それぞれ、オフセットアドレス先頭(図中では単に先頭と示す)からみたメモリイメージを例示するものである。
図7はストライド幅=0の場合の下位バイト有効ビット位置情報であり、
図8および
図9はそれぞれ、ストライド幅=2の場合およびストライド幅=3の場合をそれぞれ例示する。
【0077】
なお、以下、本実施形態においては、図中、先頭アドレスが右側に位置するリトルエンディアン(little endian)の形式で表す。すなわち、
図7~
図9においては、図中右側が先頭側(上位アドレス)であり、図中左側が末尾側(下位アドレス)となる。なお、データ表示方法はリトルエンディアンに限定されるものではなく、例えば、ビッグエンディアン(big endian)の形式で表してもよく、適宜変更して実施することができる。
【0078】
図7~
図9に例示する下位バイト有効ビット位置情報は、レジスタイメージを構成するB0~B7のバイト有効ビット(8ビット)に対して、下位バイトオフセットアドレスを先頭として連続する複数(
図7に示す例では10個)のバイト位置PT0~PT9を対応づけたマトリックス(テーブル)を構成している。すなわち、下位バイト有効ビット位置情報は1バイト単位のテーブル情報として構成されている。
【0079】
そして、図中、1B,2B,4B,8Bの各文字はデータサイズ(単位:バイト)を表し、これら1B,2B,4B,8Bの記載位置に該当するビット位置が下位バイト有効ビット位置を表し、有効ビット1が設定される。
【0080】
これらの
図7~
図9に示す下位バイト有効ビット位置情報を参照することで、オフセットアドレスを先頭とする各位置において、データアクセスが生じるか否かを判断することができる。
【0081】
なお、下位バイト有効ビット位置情報は分割処理単位で共通となるため、分割処理フロー毎に生成する必要はない。
【0082】
本例においては、分割処理フローの単位が8バイトの例について示すが、ストライド幅を考慮して10個のバイト位置PT0~PT9を示すものとする。
【0083】
下位バイトアクセス位置生成回路105は、下位バイトオフセットアドレス,ウォッチポイントアドレスおよびバイトマスク情報に基づき、分割処理フロー毎のバイトアクセス位置情報を生成する。
【0084】
バイトアクセス位置情報は、検証アドレスにおける、後述する下位バイトマッチ判定回路107によるウォッチポイントアドレスとの比較(判定)の対象となる位置(バイトアクセス位置)を示す。
【0085】
下位バイトアクセス位置生成回路105は、下位バイトオフセットアドレスを先頭とする各ビット位置について、バイトマスクとの比較を行なうことで、バイトアクセス位置であるか否かを判断し、バイトアクセス位置情報を生成する。
【0086】
具体的には、下位バイトアクセス位置生成回路105は、下位バイトオフセットアドレスを先頭とする各ビット位置PT0~PT9のそれぞれについて、予め規定された条件式を適用することで、各ビット位置がバイトアクセス位置であるか否かを判断する。
【0087】
バイトアクセス位置情報は、ビット位置PT0~PT9がそれぞれバイトアクセス位置であるかを示し、例えば、ビット位置PT0~PT9のそれぞれに、“1”もしくは“0”を設定することで構成される。
【0088】
下位バイトアクセス位置生成回路105は、バイトアクセス位置と判断したビット位置PT0~PT9に“1”を設定する一方、バイトアクセス位置と判断したビット位置以外のPT0~PT9に“0”を設定することで、バイトアクセス位置情報を生成する。
【0089】
図10は実施形態の一例としてのプロセッサ1の下位バイトアクセス位置生成回路105によるバイトアクセス位置情報の生成方法を説明するための図である。
【0090】
図10は、オフセットアドレスの先頭から見たメモリイメージを表し、下位バイトオフセットアドレスを先頭として連続する複数(
図10に示す例では10個)のバイト位置PT0~PT9のそれぞれについて、後述する下位バイトマッチ判定回路107による判定が行なわれるべき位置であるかを判定するための条件式を示す。
【0091】
本例においては、分割処理フローの単位が8バイトの例について示すが、ストライド幅を考慮して10個のバイト位置PT0~PT9を示すものとする。
【0092】
図10においては、主にオフセットアドレスの3ビット目について検証を行なう例について示すが、下位バイトアクセス位置生成回路105はオフセットアドレスの各ビットについて同様の処理を行なう。
【0093】
また、図中、オフセットアドレスをOSアドレスと表すとともに、ウォッチポイントアドレスをWPアドレスと表す場合がある。
【0094】
例えば、バイト位置PT0については、下位バイトアクセス位置生成回路105は、以下に示す条件式(1)を用いて、アクセスバイト位置であるか否かの判断を行なう。
【0095】
すなわち、下位バイトアクセス位置生成回路105は、この条件式(1)が満たされる場合に、バイト位置PT0に対して有効を示す情報(フラグ;例えば1)を設定する。バイト位置PT0はベースアドレスに相当する。
【0096】
【0097】
上記の条件式(1)においては、“オフセットアドレス[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)が設定されることを意味する。
【0098】
ここで、“オフセットアドレス[3]==ウォッチポイントアドレス[3]”は、下位バイトオフセットアドレスの3ビット目の値がウォッチポイントレジスタの3ビット目と一致していることを表す。
【0099】
また、例えば、“オフセットアドレス[2:0]=001 & バイトマスク[1]”は、3ビットの下位バイトオフセットアドレスが“001”であり、且つ、バイトマスク[1]が“1”であることを示している。ベースアドレスにおいては、バイトマスク[1]の位置がオフセットアドレス[2:0]=001に相当することを示す。
【0100】
バイト位置PT0に後続するバイト位置PT1~PT9においては、バイトマスクを、先頭のバイト位置PT0からの距離(ビット数)と同数のビット数だけ下位アドレス方向(末尾側)へずらした下位オフセットアドレスと比較する。
【0101】
例えば、バイト位置PT1については、下位バイトアクセス位置生成回路105は、以下に示す条件式(2)を用いて、アクセスバイト位置であるか否かの判断を行なう。
【0102】
すなわち、下位バイトアクセス位置生成回路105は、この条件式(2)が満たされる場合に、バイト位置PT1に対して有効を示す情報(フラグ;例えば1)を設定する。
【0103】
【0104】
バイト位置PT1はバイト位置PT0に比べて下位アドレス方向(末尾側)へ1ビットずれた位置となるので、条件式(2)においては、上記条件式(1)に比べて各バイトマスクに相当するオフセットアドレスに1ビット増えた位置が対応している。
【0105】
例えば、“オフセットアドレス[2:0]=001 & バイトマスク[2]”となっており、3ビットの下位バイトオフセットアドレスが“001”であり、且つ、バイトマスク[2]が“1“であることを条件としている。
【0106】
また、分割処理フローの単位が8バイトであるため、バイトマスク[0]に対しては、ウォッチポイントアドレス[3]が、“オフセットアドレス[3]”に後続する次の8バイトである“オフセットアドレス[3]+1”に一致するかを判断している。
【0107】
下位バイトアクセス位置生成回路105は、この
図10に例示するように、各バイト位置PT0~PT9について、それぞれ条件式に基づいて、下位バイトオフセットアドレスに対してウォッチポイントレジスタに設定されたバイトマスクの位置を対応づける。
【0108】
このように、各条件式においては、様々な値をとりうるオフセットアドレスにバイトマスクを対応させている。
【0109】
これにより、バイトアクセス位置情報は、下位バイト有効ビット生成回路106によって生成された複数の下位バイトオフセットアドレスに対して、ウォッチポイントレジスタに設定されたバイトマスクの位置を合せることができる。
【0110】
下位バイトアクセス位置生成回路105は、バイト位置PT0~PT9について、それぞれオフセットアドレスに対してバイトアクセス位置情報を用いてバイトマスクを対応づけて、オフセットアドレスにおけるウォッチポイントアドレスとの検証対象位置を決定(生成)する。
【0111】
下位バイトアクセス位置生成回路105は、バイト位置PT0~PT9のうち、上記の条件式を満たすバイト位置に対して“1”を設定し、条件式を満たさないバイト位置に対して“0”を設定する。下位バイトアクセス位置生成回路105は、バイト位置PT0~PT9について“0”もしくは“1”を設定した情報をバイトアクセス位置情報として生成する。
【0112】
図11は実施形態の一例としてのプロセッサ1における下位バイトアクセス位置情報及び下位バイト有効ビット位置情報の生成方法を説明するための図である。
【0113】
図11においては、オフセットアドレス=0xfff9,ストライド幅=0,データサイズ=4B,ウォッチポイントアドレス=0xfff8,バイトマスク[7:0]=00000100の例における下位バイトアクセス位置情報及び下位バイト有効ビット位置情報の生成例を示す。
【0114】
この
図11に示す例においては、下位バイトアクセス位置情報として、
図10の条件式により(PT9,PT8,PT7,PT6,PT5,PT4,PT3,PT2,PT1,PT0)=(0,0,0,0,0,0,1,0)が生成され、下位バイト有効ビット位置情報として、
図7のテーブル情報により有効ビットが1となる箇所が生成される。
【0115】
なお、バイトアクセス位置情報は、
図11に例示したものに限定されるものではなく、例えば、分割処理の単位やバイトマスクのビット数等に応じて適宜変更して実施してもよい。
【0116】
下位バイトマッチ判定回路107は、下位バイトアクセス位置生成回路105によって生成された分割処理毎の下位バイトアクセス位置情報と、下位バイト有効ビット生成回路106によって生成された下位バイト有効ビット位置情報とを比較する(下位バイトマッチ判定)。下位バイトマッチ判定回路107は、下位バイトアクセス位置情報と下位バイト有効ビット位置情報とにおいて共通して“1”が設定された位置があるかを判定する。
【0117】
下位バイトマッチ判定回路107は、バイトアクセス位置情報のビット位置PT0~PT9で1となる箇所に対して、下位バイト有効ビット位置情報のバイト位置PT0~PT9にある有効ビットを検索し、有効ビットが1となる箇所があるかを判断する。
【0118】
下位バイトマッチ判定回路107は、有効ビットが1となる箇所があれば判定結果を1としてANDゲート108に出力する。例えば、下位バイトマッチ判定回路107は、下位バイトアクセス位置情報と下位バイト有効ビット位置情報とにおいて共通して“1”が設定された位置がある場合に、判定結果として“1”をANDゲート108に出力する。一方、下位バイトアクセス位置情報と下位バイト有効ビット位置情報とにおいて共通して“1”が設定された位置がない場合に、下位バイトマッチ判定回路107は、判定結果として“0”をANDゲート108に出力する。
【0119】
図12は実施形態の一例としてのプロセッサ1における下位バイトマッチ判定回路107の構成を例示する図である。本例においては、分割処理フローの単位が8バイトの例について示すが、ストライド幅を考慮して10個のバイト位置PT0~PT9を示すものとする。
【0120】
この
図12に示す例において、PT0~PT9は下位バイトアクセス位置生成回路105によって生成された下位バイトアクセス位置情報であり、B0~B7は下位バイト有効ビット生成回路106によって生成された下位バイト有効ビット位置情報である。
【0121】
ここで、下位バイト有効ビット位置情報は、
図7~
図9の有効ビットが1となる全ての箇所を示し、B0であれば有効ビットが1となるのはPT0のみのためB0[0]、B1であれば有効ビットが1となるのはPT1とPT2とPT3のためB1[1]とB1[2]とB1[3]、という形でPT0~PT9の末尾の数字を用いてB0~B7をビット表記化したものである。
【0122】
図12に例示する下位バイトマッチ判定回路107は、複数(
図12に示す例では16個)のANDゲート71-1~71-16と、複数(
図12に示す例では5個)のORゲート72-1~72-5とを備える。
【0123】
なお、以下、下位バイトマッチ判定回路107のANDゲートを示す符号としては、複数のANDゲートのうち1つを特定する必要があるときには符号71-1~71-16を用いるが、任意のANDゲートを指すときには符号71を用いる。同様に、以下、下位バイトマッチ判定回路107のORゲートを示す符号としては、複数のORゲートのうち1つを特定する必要があるときには符号72-1~72-5を用いるが、任意のORゲートを指すときには符号72を用いる。
【0124】
例えば、ANDゲート71-4には、下位バイトアクセス位置情報PT3と、下位バイト有効ビット位置情報B1におけるPT3に対応する出力B1[3]が入力される。ANDゲート71-4は、2つの入力がいずれも1である場合に、1をORゲート72-1に入力する。各ANDゲート71は同様の処理を行なう。
【0125】
ORゲート72-1は、ANDゲート71-1~71-4のいずれかから1が入力されると1をORゲート72-5に入力する。各ORゲート72は同様の処理を行なう。
【0126】
ORゲート72-5は、いずれかのORゲート72-1~72-4のいずれかから1が入力されると、1をANDゲート108に出力する。
【0127】
下位バイトマッチ判定回路107は、下位バイトオフセットアドレス生成回路104によって生成された複数の分割処理フローを一つの処理単位として、ウォッチポイントアドレスとの一致を判定する。なお、下位バイトマッチ判定回路は、
図12に例示したものに限定されるものではなく、例えば、分割処理の単位やストライド幅等に応じて適宜変更して実施してもよい。
【0128】
ANDゲート108には、ウォッチポイントレジスタ103から読み出された検出許可ビットと、上位バイトアドレスマッチ回路102からの判定結果と、下位バイトマッチ判定回路107からの判定結果とが入力される。
【0129】
ANDゲート108は、入力された3つの信号の論理積の結果を出力する。すなわち、ウォッチポイントレジスタ103から読み出された検出許可ビットと、上位バイトアドレスマッチ回路102からの判定結果と、下位バイトマッチ判定回路107からの判定結果とがいずれも“1”である場合に、ウォッチポイント検出として“1”を出力する。
【0130】
ANDゲート108においては、ウォッチポイントレジスタ103から読み出された検出許可ビットによるマスクが行なわれている。ANDゲート108の出力は判定回路109に入力される。
【0131】
判定回路109は、ANDゲート108からの出力信号が“1”であるか否かを判定する。判定の結果、ANDゲート108から“1”が出力された場合には、判定回路109は検出通知として“1”をプロセッサコア101に入力する。
【0132】
プロセッサコア101は、デバッグ回路10(判定回路109)から検出通知1が入力されると、実行中のプログラムを停止させる等、予め規定された所定の処理を実行する。
【0133】
また、判定回路109は、ANDゲート108から検出通知1が出力されない場合には、インクリメント回路110に通知(インクリメント指示)を行なう。
【0134】
本プロセッサ1においては、下位バイトオフセットアドレス生成回路104によって生成された複数の分割処理フローを一つの処理単位として、ウォッチポイントアドレスとの一致を判定する。
【0135】
インクリメント回路110は、判定回路109からインクリメント指示が入力されると、分割処理フロー番号をインクリメント(+1)し、このインクリメント後の分割処理フロー番号を下位バイトオフセットアドレス生成回路104に通知する。
【0136】
すなわち、下位バイトマッチ判定回路107による下位バイトマッチ判定で1となる箇所が無く判定結果が0となった場合は、インクリメント回路110が分割処理フロー番号をインクリメント(+1)する。
【0137】
本プロセッサ1において、一の分割処理フローにおいてウォッチポイントアドレスとの一致が検出されなかった場合には、次の分割処理フロー番号によって特定される分割処理フローに対して、ウォッチポイントアドレスとの一致判定が行なわれるのである。
【0138】
下位バイトマッチ判定回路107は、新たな分割処理フロー番号に相当するバイトアクセス位置情報(
図2~
図6参照)を計算する。以下、下位バイトオフセットアドレス生成回路104,下位バイトアクセス位置生成回路105および下位バイトマッチ判定回路107により処理が、判定回路109において判定結果1が検出されるまで繰り返し行なわれる。すなわち、ウォッチポイントが検出されるまで繰り返し行なわれる。
【0139】
(B)動作
上述の如く構成された実施形態の一例としてのプロセッサ1のデバッグ回路10の処理を、
図13に示すフローチャート(ステップS1~S8)に従って説明する。
【0140】
ステップS1において、デバッグ回路10は、プロセッサコア101からアドレス,命令,データサイズを取得する。また、デバッグ回路10は、ウォッチポイントレジスタ103からウォッチポイントアドレスおよびバイトマスクを読み出して取得する。
【0141】
ステップS2において、下位バイトオフセットアドレス生成回路104が、アクセス先アドレスの下位バイトに基づき、ウォッチポイント検索対象の先頭アドレス(下位バイトオフセットアドレス)を生成する。すなわち、下位バイトオフセットアドレス生成回路104は、分割処理フロー番号によって順序づけられた複数の分割処理フロー(検証アドレス範囲)を設定する。
【0142】
下位バイトアクセス位置生成回路105は、下位バイトオフセットアドレス,ウォッチポイントアドレスおよびバイトマスク情報に基づき、分割処理毎のバイトアクセス位置情報を生成する。
【0143】
一方、ステップS3において、上位バイトアドレスマッチ回路102が、プロセッサコア101から通知されたアクセス先アドレスのうちの上位バイトと、ウォッチポイントレジスタ103から通知されるウォッチポイントアドレスの上位バイトとを比較する。この比較の結果、上位バイトのアドレスがウォッチポイントアドレスの上位バイトと一致した場合には、上位バイトアドレスマッチ回路102は、上位バイトアドレスマッチ信号を出力する。
【0144】
また、下位バイト有効ビット生成回路106が、プロセッサコア101から出力される命令およびデータサイズ情報に基づいて、下位バイトオフセットアドレスを基準とした下位バイト有効ビット位置情報の生成を行なう。
【0145】
以下に示すステップS4~S8の処理は、複数の分割処理フロー(検証対象アドレス範囲)のそれぞれに対して、分割処理フロー番号に沿って順次行なわれることになる。
【0146】
ステップS4において、下位バイトマッチ判定回路107が、下位バイトアクセス位置生成回路105によって生成された分割処理毎の下位バイトアクセス位置情報と、下位バイト有効ビット生成回路106によって生成された下位バイト有効ビット位置情報とを比較する。下位バイトマッチ判定回路107は、下位バイトアクセス位置情報と下位バイト有効ビット位置情報とにおいて共通して1が設定された位置があれば判定結果を1としてANDゲート108に出力する。
【0147】
ANDゲート108は、ウォッチポイントレジスタ103から読み出された検出許可ビットと、上位バイトアドレスマッチ回路102からの判定結果と、下位バイトマッチ判定回路107からの判定結果とがいずれも1である場合に1を出力する。判定回路109は、ANDゲート108から1が出力されるとウォッチポイントが検出されたと判断する。
【0148】
ステップS5において、ウォッチポイントの検出が行なわれたか否かの確認が行なわれる。確認の結果、ウォッチポイントが検出された場合には(ステップS5のYESルート参照)、ステップS6に移行する。
【0149】
ステップS6において、判定回路109はプロセッサコア101に対して、ウォッチポイント検出通知を行なう。ウォッチポイント検出通知を受けたプロセッサコア101は、例えば、実行中のプログラムを停止させる等の処理を行なう。デバッグ回路10は、その後、処理を終了する。
【0150】
一方、ステップS5における確認の結果、ウォッチポイントが検出されていない場合には(ステップS5のNOルート参照)、ステップS7に移行する。
【0151】
ステップS7において、判定回路109はインクリメント回路110に対してインクリメント指示を行なう。インクリメント回路110は、インクリメント指示が入力されると、分割処理フロー番号をインクリメント(+1)し、このインクリメント後の分割処理フロー番号を下位バイトオフセットアドレス生成回路104に通知する。
【0152】
ステップS8において、下位バイトオフセットアドレス生成回路104は、分割処理フロー番号が最大値であるかを確認する。分割処理フロー番号が最大値であるかは、例えば、プロセッサコア101から通知されるデータサイズ情報に基づいて判断してもよい。
【0153】
確認の結果、分割処理フロー番号が最大値でない場合には(ステップS8のNOルート参照)、ステップS2に戻り、ステップS7においてインクリメントされた分割処理フロー番号によって特定される下位バイトオフセットアドレスについて処理を行なう。
【0154】
すなわち、本プロセッサ1においては、プロセッサコア101からのアクセス先アドレスに基づき複数の下位バイトオフセットアドレスを生成し、これらの複数のオフセットアドレスに対して、ウォッチポイントアドレスとの一致検証をシーケンシャルに行なうのである。
【0155】
一方、分割処理フロー番号が最大値である場合には(ステップS8のYESルート参照)、処理を終了する。
【0156】
(C)効果
このように、実施形態の一例としてのプロセッサ1によれば、下位バイトオフセットアドレス生成回路104が、複数の下位バイトオフセットアドレスを生成(算出)する。これにより、プロセッサコア101のアクセス先領域(データバス幅)を設定処理単位サイズ毎の複数の検証アドレス範囲に仮想的に区切ることができる。
【0157】
そして、生成された下位バイトオフセットアドレス毎(分割処理フロー毎)に下位バイトアクセス位置生成回路105による下位バイトアクセス位置情報の生成や、下位バイトマッチ判定回路107やANDゲート108によるウォッチポイントアドレスやバイトマスクとの一致判定を行なう。すなわち、下位バイト有効ビット生成回路106,下位バイトマッチ判定回路107およびANDゲート108により、これらの複数の検証アドレス範囲に対して順次ウォッチポイントアドレスとの一致判定を行なう。一の分割処理フローに対する判定において一致判定が行なわれなかった場合には、インクリメント回路110により次の分割処理フローに移行して、同様の一致判定を繰り返し行なう。
【0158】
これらにより、下位バイト有効ビット生成回路106,下位バイトマッチ判定回路107およびANDゲート108を重複して備えることなく、データサイズの分割単位で下位バイトオフセットアドレスの生成回路やウォッチポイントアドレスやバイトマスクとの比較回路(コンパレータ)等を共通化できる。従って、命令種類やデータサイズ幅が増加しても回路や配線が増加しないため、実装コストを削減でき、また、消費電力を削減することもできる。
【0159】
下位バイト有効ビット生成回路106が、下位バイトオフセットアドレスを基準とした下位バイト有効ビット位置情報の生成を行なうことで、下位バイトオフセットアドレスにおけるアクセス先として有効な位置が特定される。
【0160】
さらに、下位バイトアクセス位置生成回路105が、下位バイトオフセットアドレス,ウォッチポイントアドレスおよびバイトマスク情報に基づき、分割処理毎のバイトアクセス位置情報を生成する。これにより、下位バイトオフセットアドレスに対する、ウォッチポイントアドレスおよびバイトマスクに応じた検出判定位置が特定される。
下位バイトマッチ判定回路107が、下位バイトアクセス位置情報と下位バイト有効ビット位置情報とにおいて共通して“1”が設定された位置があるかを判定することで、下位バイトアドレスにおけるウォッチポイントアドレスおよびバイトマスクとの一致判定を効率的に行なうことができる。
【0161】
プロセッサコア101からのアクセス先アドレスに基づき、下位バイトオフセットアドレス生成回路104が、複数の下位バイトオフセットアドレスを生成する。そして、下位バイトマッチ判定回路107が、これらの複数のオフセットアドレスに対して、ウォッチポイントアドレスとの一致検証をシーケンシャルに行なう。これにより、共通化された一つの下位バイトマッチ判定回路107およびANDゲート108で複数のオフセットアドレスに対するウォッチポイントアドレスとの一致検証を実現することができる。
【0162】
(D)その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0163】
例えば、上述した実施形態においては、ウォッチポイントレジスタ103から読み出された検出許可ビットによるマスクを下位バイトマッチ判定回路107による下位バイトマッチ判定後に行なっているが、これに限定されるものではない。
【0164】
図14は
図1に示したプロセッサ1のデバッグ回路10の変形例を示す図である。
【0165】
この
図14に示す例において、デバッグ回路10aは、
図1のデバッグ回路10にANDゲート1081を備えている。そして、上位バイトアドレスマッチ回路102から出力される上位バイトアドレスマッチ信号と、ウォッチポイントレジスタから読み出される検出許可ビットは、このANDゲート1081に入力される。
【0166】
ANDゲート1081は、上位バイトアドレスマッチ信号と検出許可ビットとがいずれも1である場合に、ANDゲート108に1を出力する。
【0167】
ANDゲート108には、下位バイトマッチ判定回路107からの出力信号と、ANDゲート1081からの出力信号とが入力される。
【0168】
本変形例においては、上位バイトアドレスマッチ回路102による上位バイトアドレスマッチ判定の結果、上位バイトのアドレスがウォッチポイントアドレスの上位バイトと一致する場合に、その後段の処理において、下位バイトオフセットアドレス生成回路104によるバイトマスクを用いたバイトアクセス位置情報の作成等が行なわれる。
【0169】
一方、上位バイトアドレスマッチ判定の結果、上位バイトのアドレスがウォッチポイントアドレスの上位バイトと一致しない場合には、以降の分割処理フローを行なわずにウォッチポイント検出処理を終了する。
【0170】
これにより、上位バイトアドレスマッチ判定の結果、上位バイトのアドレスがウォッチポイントアドレスの上位バイトと不一致の場合に、以降の不要な分割処理フローを行なうことがなく、デバッグを効率的に処理することができる。
【0171】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【0172】
(E)付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0173】
(付記1)
演算部と、当該演算部から監視対象アドレスに対するデータアクセスを監視する監視装置とを備える演算処理装置であって、
前記監視装置が、
前記演算部からのアクセス先アドレスに基づき、基本処理単位サイズ間隔で複数のオフセットアドレスを生成することで、前記演算部からのアクセス先メモリ領域を区切って複数の検証アドレス範囲を設定するオフセットアドレス生成部と、
設定された前記複数の検証アドレス範囲に対して、監視対象アドレスとの一致を順次、判定する判定部と
を備えることを特徴とする、演算処理装置。
【0174】
(付記2)
前記監視対象アドレスと、前記検証アドレス範囲に含まれる検証アドレスを構成するビット列における検証対象ビット位置を抽出するためのバイトマスクとを記憶する記憶部と、
前記演算部からのアクセス先アドレスにおけるデータアクセスの有効ビット位置を示すバイト有効ビット位置情報を生成するバイト有効ビット生成部と、
前記オフセットアドレス,前記監視対象アドレスおよび前記バイトマスクに基づき、前記検証アドレスにおけるアクセス検証位置を表すバイトアクセス位置情報を生成するバイトアクセス位置生成部と
を備え、
前記判定部が、前記バイト有効ビット位置情報と前記バイトアクセス位置情報との一致を判断する
ことを特徴とする、付記1記載の演算処理装置。
【0175】
(付記3)
前記判定部において前記バイト有効ビット位置情報と前記バイトアクセス位置情報とが一致したと判断した場合に、前記演算部に対して検出通知を発行する通知部
を備えることを特徴とする、付記2記載の演算処理装置。
【0176】
(付記4)
前記判定部において、前記バイト有効ビット位置情報と前記バイトアクセス位置情報とが不一致である場合に、バイトアクセス位置生成部および一致判断部が、前記複数の検証アドレス範囲のうち、未処理の検証アドレス範囲に対して処理を行なう
ことを特徴とする、付記2または3記載の演算処理装置。
【0177】
(付記5)
演算部と、当該演算部から監視対象アドレスに対するデータアクセスを監視する監視装置とを備える演算処理装置において、
前記監視装置が、
前記演算部からのアクセス先アドレスに基づき、基本処理単位サイズ間隔で複数のオフセットアドレスを生成することで、前記演算部からのアクセス先メモリ領域を区切って複数の検証アドレス範囲を設定する処理と、
設定された前記複数の検証アドレス範囲に対して、監視対象アドレスとの一致を順次、判定する処理と
を備えることを特徴とする、演算処理装置の制御方法。
【0178】
(付記6)
前記演算部からのアクセス先アドレスにおけるデータアクセスの有効ビット位置を示すバイト有効ビット位置情報を生成する処理と、
前記オフセットアドレス,前記監視対象アドレスおよび前記検証アドレス範囲に含まれる検証アドレスを構成するビット列における検証対象ビット位置を抽出するためのバイトマスクに基づき、前記検証アドレスにおけるアクセス検証位置を表すバイトアクセス位置情報を生成する処理と、
前記バイト有効ビット位置情報と前記バイトアクセス位置情報との一致を判断する処理と
を備えることを特徴とする、付記5記載の演算処理装置の制御方法。
【0179】
(付記7)
前記バイト有効ビット位置情報と前記バイトアクセス位置情報とが一致したと判断した場合に、前記演算部に対して検出通知を発行する処理
を備えることを特徴とする、付記6記載の演算処理装置の制御方法。
【0180】
(付記8)
前記バイト有効ビット位置情報と前記バイトアクセス位置情報とが不一致である場合に、前記複数の検証アドレス範囲のうち、未処理の検証アドレス範囲に対して処理を行なう
ことを特徴とする、付記6または7記載の演算処理装置の制御方法。
【符号の説明】
【0181】
1 プロセッサ
10,10a デバッグ回路
101 プロセッサコア
102 上位バイトアドレスマッチ回路
103 ウォッチポイントレジスタ
104 下位バイトオフセットアドレス生成回路
105 下位バイトアクセス位置生成回路
106 下位バイト有効ビット生成回路
107 下位バイトマッチ判定回路
71-1~71-16,71,108,1081 ANDゲート
109 判定回路
110 インクリメント回路
72-1~72-5,72 ORゲート