(57)【要約】【課題】メモリ領域の不整合の場合の原因解析の容易化および処理速度の向上を、簡単な回路構成で実現するプロセッサを提供すること。【解決手段】プロセッサ１００は、ＣＰＵコア１０１のブレークポイントに定められたアドレスと、ＣＰＵコア１０１がアクセスするデータキャッシュ１０２のアドレスとの一致判定を比較器１０４でおこなう。また、データキャッシュ１０２は、アクセスによるキャッシュヒット／ミスの検出結果を表すキャッシュヒット信号を出力する。また、ＡＮＤ回路１０６は、比較器１０４の一致判定信号と、データキャッシュ１０２のキャッシュヒット信号とに基づいてＣＰＵコア１０１にデータブレーク信号を出力し、ブレークを実行させる。【選択図】図１
2007257441.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵコアのブレークポイントに定められたアドレスと、前記ＣＰＵコアがアクセスするキャッシュのアドレスとの一致判定をおこなうアドレス判定手段と、
前記アクセスによるキャッシュヒット／ミスを検出するキャッシュヒット／ミス検出手段と、
前記アドレス判定手段によって判定された判定結果と、前記キャッシュヒット／ミス検出手段によって検出されたキャッシュヒット／ミスとに基づいて、前記ＣＰＵコアにブレークを実行させるブレーク信号を生成する生成手段と、
を備えることを特徴とするプロセッサ。
【請求項２】
前記ＣＰＵコアにブレークを実行させる条件が設定されており、当該条件と前記キャッシュヒット／ミス検出手段によって検出されたキャッシュヒット／ミスとに基づいて、ブレークを許可するブレーク許可信号を前記生成手段に出力する条件設定手段を備え、
前記生成手段は、
前記アドレス判定手段によって判定された判定結果と、前記条件設定手段によって出力されたブレーク許可信号とに基づいて、前記ブレーク信号を生成することを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記キャッシュのデータアドレスごとに保持されたデータが前記ＣＰＵコアのアクセスによって書き換えられた状態（以下、「ダーティ状態」という）か書き換えられていない状態（以下、「クリーン状態」という）かを検出する書換検出手段を備え、
前記条件設定手段は、
前記書換検出手段によって検出されたダーティ状態／クリーン状態に基づいて、前記ブレーク許可信号を前記生成手段に出力することを特徴とする請求項２に記載のプロセッサ。
【請求項４】
前記条件設定手段は、前記キャッシュヒット／ミス検出手段によってキャッシュヒットが検出されると前記ＣＰＵコアにブレークを実行させる条件が設定されており、
前記キャッシュヒット／ミス検出手段によってキャッシュヒットが検出された場合、前記ブレーク許可信号を出力し、前記キャッシュミスが検出された場合、前記ブレーク許可信号を出力しないことを特徴とする請求項２または３に記載のプロセッサ。
【請求項５】
前記条件設定手段は、前記キャッシュヒット／ミス検出手段によってキャッシュミスが検出されると前記ＣＰＵコアにブレークを実行させる条件が設定されており、
前記キャッシュヒット／ミス検出手段によってキャッシュミスが検出された場合、前記ブレーク許可信号を出力し、前記キャッシュヒットが検出された場合、前記ブレーク許可信号を出力しないことを特徴とする請求項２または３に記載のプロセッサ。
【請求項６】
前記条件設定手段は、前記書換検出手段によってダーティ状態が検出されると前記ＣＰＵコアにブレークを実行させる条件が設定されており、
前記書換検出手段によってダーティ状態が検出された場合、前記ブレーク許可信号を出力し、前記クリーン状態が検出された場合、前記ブレーク許可信号を出力しないことを特徴とする請求項３に記載のプロセッサ。
【請求項７】
前記条件設定手段は、前記書換検出手段によってクリーン状態が検出されると前記ＣＰＵコアにブレークを実行させる条件が設定されており、
前記書換検出手段によってクリーン状態が検出された場合、前記ブレーク許可信号を出力し、前記ダーティ状態が検出された場合、前記ブレーク許可信号を出力しないことを特徴とする請求項３に記載のプロセッサ。
【請求項８】
前記生成手段は、
前記ＣＰＵコアにブレークの実行の禁止／許可に関する指示信号が与えられた場合、前記アドレス判定手段の判定結果および前記条件設定手段のブレーク許可信号にかかわらず前記指示信号に応じて前記ＣＰＵコアにブレークを実行させることを特徴とする請求項１〜７に記載のプロセッサ。
【請求項９】
ＣＰＵコアのブレークポイントに定められたアドレスと、前記ＣＰＵコアがアクセスするキャッシュのアドレスとの一致判定をおこなうアドレス判定工程と、
前記アクセスによるキャッシュヒット／ミスを検出するキャッシュヒット／ミス検出工程と、
前記アドレス判定工程によって判定された判定結果と、前記キャッシュヒット／ミス検出工程によって検出されたキャッシュヒット／ミスとに基づいて、前記ＣＰＵコアにブレークを実行させるブレーク信号を生成する生成工程と、
を含むことを特徴とするプロセッサ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ハードウェアブレークを制御するプロセッサおよびプロセッサ制御方法に関する。
【背景技術】
【０００２】
従来、プロセッサには、指定されたデータアドレス領域に対するアクセスの監視をおこない、監視によるデータ値の比較結果が所定の条件にヒットした場合に、実行途中の命令をすべて完了した後、プロセッサをブレークするデバック機能が備えられている。
【０００３】
デバッグ機能の一例として、プロセッサに内蔵する命令キャッシュならびにデータキャッシュの少なくともいずれか一方の構成をキャッシュのミスヒット時のリプレース用バス・サイクルに同期してトラップ割り込み要求を登録するトラップ・ビットを持つタグ・メモリ部を有し、トラップ・ビットの値に応じてトラップ割り込みを発生させるトラップ機能を提供するプロセッサが開示されている（たとえば、下記特許文献１参照。）。
【０００４】
また、デバッグ機能の他の例として、命令やデータブレーク発生時にその命令やデータがキャッシュに存在するのかメモリに存在するのかを示すビットレジスタを備えることでデバッグ対象の命令やデータがキャッシュメモリに存在するかを簡単に知ることのできるプロセッサが開示されている（たとえば、下記特許文献２参照。）。
【０００５】
【特許文献１】特開平４−３５０７３５号公報
【特許文献２】特開平５−２０４７０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コアなどＣＰＵコア以外がメインメモリに直接アクセスする場合や、マルチプロセッサで複数のコア（ＣＰＵや、ＤＭＡ）が同じメモリ領域にアクセスする処理をおこなう場合には、メインメモリの内容とキャッシュの内容との食い違い、すなわちメモリ領域の不整合が発生することがある。
【０００７】
図６は、複数のコアが同じメモリ領域にアクセスした場合に生じるメモリ領域の不整合を模式的に示す説明図である。図６のようにＣＰＵコア６００が、メインメモリ６０２にアクセスするかわりにデータキャッシュ（または命令が保持されたインストラクションキャッシュ）６０１にアクセスすることで高速な読み出しや書き込みを実現する。
【０００８】
一方、ＤＭＡコア６０３は、メインメモリ６０２に直接アクセスしてデータの書き換えをおこなう。ここで、データキャッシュ６０１の内容はメインメモリ６０２のメモリ領域６０４の内容がそのまま保持されている。したがって、ＣＰＵコア６００がデータキャッシュ６０１にアクセスして読み出しのみをおこなっている場合は、データキャッシュ６０１とメモリ領域６０４と保持内容の同一性は保たれるが、データキャッシュ６０１に書き込みがおこなわれると、データキャッシュ６０１とメモリ領域６０４と保持内容の食い違いによりデータ領域の不整合が発生してしまう。
【０００９】
上述のようなデータ領域の不整合を解決する手段として、バススヌープ機構の実装が考えられる。バススヌープ機構とは、食い違いをＣＰＵコアに通知し、メインメモリとキャッシュの整合性を回復する機能である。このバススヌープ機構の実装には、回路の複雑化に伴うコストの増大や、検証作業の複雑化という問題があった。
【００１０】
そのため、組み込み用途の小規模なプロセッサでは、バススヌープ機構を実装せずに、メインメモリとキャッシュとの整合性をソフトウェアで保証する技術が提供されている。このようなソフトウェアで保証する技術も、メインメモリとキャッシュの内容が不一致となることにより、ソフトウェアの動作に不具合が生じた場合、その原因の解析が困難であるという問題があった。
【００１１】
また、メインメモリ６０２とデータキャッシュ６０１との内容の不一致を解析する場合、通常は、不一致が発生していると疑われるアドレスに対して、データブレークポイントを設定し、そのアドレスをアクセスした際に、プログラムの実行を一時停止させて、不一致の有無を確認することになる。
【００１２】
ところが、不一致が疑われるアドレスが、プログラムのあちこちから参照されている変数のものである場合や、実行回数が膨大なループ中で参照されている変数のものである場合、データブレーク実行によるＣＰＵコアの停止が何度も発生し、その都度確認をおこなうことは、非常に手間を要する作業となる。すなわち、ＣＰＵコアにブレークを実行させる必要のない条件であっても、たびたびブレークが実行され、プロセッサの処理速度が低下してしまうという問題があった。
【００１３】
この発明は、上述した従来技術による問題点を解消するため、メモリ領域の不整合の場合の原因解析の容易化および処理速度の向上を、簡単な回路構成で実現することができるプロセッサ、プロセッサ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するため、この発明にかかるプロセッサは、ＣＰＵコアのブレークポイントに定められたアドレスと、前記ＣＰＵコアがアクセスするキャッシュのアドレスとの一致判定をおこなうアドレス判定手段と、前記アクセスによるキャッシュヒット／ミス（キャッシュヒットもしくはキャッシュミス）を検出するキャッシュヒット／ミス検出手段と、前記アドレス判定手段によって判定された判定結果と、前記キャッシュヒット／ミス検出手段によって検出されたキャッシュヒット／ミスとに基づいて、前記ＣＰＵコアにブレークを実行させるブレーク信号を生成する生成手段と、を備えることを特徴とする。
【００１５】
この発明によれば、従来の構成にあらたに生成手段を追加した簡易な構成で、ブレークポイントに定められたアドレスにアクセスした際のキャッシュヒット／ミスを、ＣＰＵコアにブレークを実行させるか否かの判断基準として利用することができる。
【００１６】
また、上記発明において、前記ＣＰＵコアにブレークを実行させる条件が設定されており、当該条件と前記キャッシュヒット／ミス検出手段によって検出されたキャッシュヒット／ミスとに基づいて、ブレークを許可するブレーク許可信号を前記生成手段に出力する条件設定手段を備え、前記生成手段は、前記アドレス判定手段によって判定された判定結果と、前記条件設定手段によって出力されたブレーク許可信号とに基づいて、前記ブレーク信号を生成することを特徴とする。
【００１７】
この発明によれば、キャッシュヒット／ミスのいずれかを検出した際に、任意の設定によりＣＰＵコアにブレークを実行させることができる。したがって、設定した条件の場合にのみＣＰＵコアのブレークを実行させることができ、プロセッサを効率的に動作させることができる。
【００１８】
また、上記発明において、前記キャッシュのデータアドレスごとに保持されたデータが前記ＣＰＵコアのアクセスによって書き換えられた状態（以下、「ダーティ状態」という）か書き換えられていない状態（以下、「クリーン状態」という）かを検出する書換検出手段を備え、前記条件設定手段は、前記書換検出手段によって検出されたダーティ状態／クリーン状態（ダーティ状態もしくはクリーン状態）に基づいて、前記ブレーク許可信号を前記生成手段に出力することを特徴とする。
【００１９】
この発明によれば、キャッシュヒット／ミスおよびキャッシュに保持されたデータがＣＰＵコアによって書き換えられているか否かの状態を検出した際に任意の設定によりＣＰＵコアにブレークを実行させることができる。
【００２０】
また、上記発明において、前記条件設定手段は、前記キャッシュヒット／ミス検出手段によってキャッシュヒットが検出されると前記ＣＰＵコアにブレークを実行させる条件が設定されており、前記キャッシュヒット／ミス検出手段によってキャッシュヒットが検出された場合、前記ブレーク許可信号を出力し、前記キャッシュミスが検出された場合、前記ブレーク許可信号を出力しないことを特徴とする。
【００２１】
この発明によれば、ＣＰＵコアのブレークの実行がキャッシュヒットの発生に起因するものであると解析することができる。
【００２２】
また、上記発明において、前記条件設定手段は、前記キャッシュヒット／ミス検出手段によってキャッシュミスが検出されると前記ＣＰＵコアにブレークを実行させる条件が設定されており、前記キャッシュヒット／ミス検出手段によってキャッシュミスが検出された場合、前記ブレーク許可信号を出力し、前記キャッシュヒットが検出された場合、前記ブレーク許可信号を出力しないことを特徴とする。
【００２３】
この発明によれば、ＣＰＵコアのブレークの実行がキャッシュミスの発生に起因するものであると解析することができる。
【００２４】
また、上記発明において、前記条件設定手段は、前記書換検出手段によってダーティ状態が検出されると前記ＣＰＵコアにブレークを実行させる条件が設定されており、前記書換検出手段によってダーティ状態が検出された場合、前記ブレーク許可信号を出力し、前記クリーン状態が検出された場合、前記ブレーク許可信号を出力しないことを特徴とする。
【００２５】
この発明によれば、ＣＰＵコアのブレークの実行が、ＣＰＵコアのアクセスによってデータが書き換えられた状態のキャッシュにおいて発生したキャッシュヒットに起因するものであると解析することができる。
【００２６】
また、上記発明において、前記条件設定手段は、前記書換検出手段によってクリーン状態が検出されると前記ＣＰＵコアにブレークを実行させる条件が設定されており、前記書換検出手段によってクリーン状態が検出された場合、前記ブレーク許可信号を出力し、前記ダーティ状態が検出された場合、前記ブレーク許可信号を出力しないことを特徴とする。
【００２７】
この発明によれば、ＣＰＵコアのブレークの実行が、ＣＰＵコアのアクセスによってデータが書き換えられていない状態のキャッシュにおいて発生したキャッシュヒットに起因するものであると解析することができる。
【００２８】
また、上記発明において、前記生成手段は、前記ＣＰＵコアにブレークの実行の禁止／許可に関する指示信号が与えられた場合、前記アドレス判定手段の判定結果および前記条件設定手段のブレーク許可信号にかかわらず前記指示信号に応じて前記ＣＰＵコアにブレークを実行させることを特徴とする。
【００２９】
この発明によれば、ＣＰＵコアにブレークを実行させる条件として、キャッシュヒット／ミスを用いるか否かを設定することができる。
【００３０】
また、この発明にかかるプロセッサ制御方法は、ＣＰＵコアのブレークポイントに定められたアドレスと、前記ＣＰＵコアがアクセスするキャッシュのアドレスとの一致判定をおこなうアドレス判定工程と、前記アクセスによるキャッシュヒット／ミスを検出するキャッシュヒット／ミス検出工程と、前記アドレス判定工程によって判定された判定結果と、前記キャッシュヒット／ミス検出工程によって検出されたキャッシュヒット／ミスとに基づいて、前記ＣＰＵコアにブレークを実行させるブレーク信号を生成する生成工程と、を含むことを特徴とする。
【００３１】
この発明によれば、ブレークポイントに定められたアドレスにアクセスした際のキャッシュヒット／ミスを検出し、この検出結果を、ＣＰＵコアにブレークを実行させるか否かの判断基準として利用することができる。
【発明の効果】
【００３２】
本発明にかかるプロセッサおよびプロセッサ制御方法によれば、メモリ領域の不整合の場合の原因解析の容易化および処理速度の向上を、簡単な回路構成で実現することができるという効果を奏する。
【発明を実施するための最良の形態】
【００３３】
以下に添付図面を参照して、この発明にかかるプロセッサおよびプロセッサ制御方法の好適な実施の形態を詳細に説明する。
【００３４】
（実施の形態１）
まず、実施の形態１について説明する。この実施の形態１で説明するプロセッサでは、キャッシュヒット／ミス発生時にＣＰＵコアにデータブレークを実行させるように制御する。また、データブレークアドレス検出や、キャッシュヒット／ミス発生など、どのような条件でデータブレークをおこなうかを詳細に設定する機能を備えている。
【００３５】
（実施の形態１にかかるプロセッサの回路構成）
まず、この発明の実施の形態１にかかるプロセッサの回路構成について説明する。図１は、この発明の実施の形態１にかかるプロセッサの回路構成を示す説明図である。図１において、プロセッサ１００は、ＣＰＵコア１０１と、データキャッシュ１０２と、データブレークアドレスレジスタ１０３と、比較器１０４と、条件設定回路１０５と、ＡＮＤ回路１０６とを含んで構成されている。
【００３６】
ＣＰＵコア１０１は、実行されているプログラムに応じてデータキャッシュ１０２の所定のデータアドレスにアクセスし、データを読み出す。このデータキャッシュ１０２へアクセスと同時に、ＣＰＵコア１０１は、アクセス先のデータアドレスの情報を比較器１０４へ出力する。
【００３７】
また、ＣＰＵコア１０１には、ＡＮＤ回路１０６からデータブレーク信号（０または１の２値）が入力される。ＣＰＵコア１０１は、データブレーク実行指示としてデータブレーク信号「１」が入力された場合にデータブレークを実行する。一方、ＣＰＵコア１０１に、ＡＮＤ回路１０６からデータブレーク信号「０」が入力された場合には、そのまま実行されているプログラムに応じた処理を継続する。
【００３８】
データキャッシュ１０２には、ＣＰＵコア１０１からの読み出し頻度の高いデータが高速に読み出し可能に保持されている。また、データキャッシュ１０２のデータは、それぞれ付与されたデータアドレスと対応させて保持されている。したがって、ＣＰＵコア１０１は、データアドレスを指定してデータキャッシュ１０２にアクセスをおこなうことで、所望のデータを読み出すことができる。
【００３９】
また、データキャッシュ１０２は、ＣＰＵコア１０１のアクセスによるデータの読み出しの成否をキャッシュヒット信号（０または１の２値）として条件設定回路１０５に出力する。具体的には、たとえば、ＣＰＵコア１０１が、アクセスしたデータアドレスから所望のデータを読み出せた場合を「キャッシュヒット」といい、ＣＰＵコア１０１が、アクセスしたデータアドレスに所望のデータが読み出せなかった、すなわちデータアドレスに保持されていなかった場合を「キャッシュミス」という。
【００４０】
上述の処理により、データキャッシュ１０２は、ＣＰＵコア１０１からのアクセスが「キャッシュヒット」となった場合、キャッシュヒット信号「１」を出力する。一方、データキャッシュ１０２は、ＣＰＵコア１０１からのアクセスが「キャッシュミス」の場合、キャッシュヒット信号「０」を出力する。なお、「キャッシュミス」の場合、ＣＰＵコア１０１は、不図示のメインメモリにアクセスして所望のデータを読み出す。
【００４１】
データブレークアドレスレジスタ１０３には、ブレークポイントとなるデータアドレスの情報が書き込まれている。ブレークポイントとは、プログラムの動作確認をおこなうために設けられた強制実行停止をおこなうコードである。また、データブレークアドレスレジスタ１０３に書き込まれているブレークポイントとなるデータアドレスの情報は、比較器１０４へ入力される。なお、データアドレスの情報は、上位プログラムによってデータブレークアドレスレジスタ１０３に書き込まれてもよいし、利用者によって個別に書き込まれてもよい。
【００４２】
比較器１０４は、ＣＰＵコア１０１から入力されたデータアドレスと、データブレークアドレスレジスタ１０３から入力されたブレークポイントとなるデータアドレスとを比較し一致判定信号（０または１の２値）を出力する。
【００４３】
具体的には、たとえば、比較器１０４は、比較内容、すなわちＣＰＵコア１０１がアクセスしているデータアドレスと、ブレークポイントアドレスとが一致した場合にのみ、ＡＮＤ回路１０６へ一致判定信号として一致を表す「１」を出力し、一致しない場合は一致判定信号として不一致を表す「０」を出力する。
【００４４】
条件設定回路１０５は、データキャッシュ１０２から入力されたキャッシュヒット信号に応じてデータブレークの発生条件信号（０または１の２値）をＡＮＤ回路１０６に出力する。この条件設定回路１０５は、セレクタ回路１０７，１０９と、ＮＯＴ回路１０８とを含んで構成されている。
【００４５】
セレクタ回路１０７，１０９は、セレクタ端子Ｓに入力された信号によって表された番号の入力端子に入力された信号をそのまま出力する回路である。たとえば、入力端子０，１にそれぞれ信号が入力されている場合、セレクタ端子Ｓに「０」を表す信号が入力されると、セレクタ回路１０７，１０９は、入力端子０に入力された信号をそのまま出力する。
【００４６】
条件設定回路１０５は、上述のようなセレクタ回路１０７，１０９に個別に設定を施すことでデータキャッシュ１０２のキャッシュヒット／ミスの検出をデータブレーク実行の条件とするか、さらに、キャッシュヒット／ミスのいずれをデータブレーク実行の条件とするかなどを指定することができる。なお、条件設定回路１０５の設定内容とその動作についての詳細は後述する。
【００４７】
ＡＮＤ回路１０６は、比較器１０４からの一致判定信号と、条件設定回路１０５からのブレーク実行許可信号と、ブレークイネーブル信号とが入力され、入力された信号に応じてＣＰＵコア１０１へデータブレーク信号を出力する。
【００４８】
具体的には、たとえば、ＡＮＤ回路１０６は、入力された信号がすべて「１」の場合にのみＣＰＵコア１０１にデータブレーク信号「１」を出力する。したがって、入力された信号に１つでも「０」がある場合は、データブレーク信号は「０」を出力する。
【００４９】
（実施の形態１のプロセッサのデータブレーク実行設定と動作）
つぎに、実施の形態１のプロセッサ１００におけるデータブレーク実行設定と動作について説明する。上述したように、プロセッサ１００は、どのような条件でデータブレークを実行するかを設定することができる。具体的な設定は、条件設定回路１０５およびＡＮＤ回路１０６によっておこなわれる。
【００５０】
まず、条件設定回路１０５における設定は、セレクタ回路１０７，１０９によっておこなわれる。セレクタ回路１０９にはセレクタ端子Ｓに第１制御ビット（０または１の２値）が入力され、第１制御ビットの値に応じてデータキャッシュ１０２におけるキャッシュヒット／ミスをデータブレーク実行の条件とするか否かを設定することができる。
【００５１】
具体的には、たとえば、データキャッシュ１０２におけるキャッシュヒット／ミスをデータブレーク実行の条件とする場合は、第１制御ビットとしてセレクタ回路１０９のセレクタ端子Ｓに「１」を入力する。一方、データキャッシュ１０２におけるキャッシュヒット／ミスをデータブレーク実行の条件としない場合は、第１制御ビットとしてセレクタ回路１０９のセレクタ端子Ｓに「０」を入力する。
【００５２】
また、セレクタ回路１０７にはセレクタ端子Ｓに第２制御ビット（０または１の２値）が入力され、データキャッシュ１０２における「キャッシュヒット」をデータブレーク実行の条件とするか、「キャッシュミス」をデータブレーク実行の条件とするかを設定することができる。
【００５３】
具体的には、たとえば、データキャッシュ１０２における「キャッシュヒット」をデータブレーク実行の条件とする場合は、第２制御ビットとしてセレクタ回路１０７のセレクタ端子Ｓに「１」を入力する。一方、データキャッシュ１０２における「キャッシュミス」をデータブレーク実行の条件とする場合は、第２制御ビットとしてセレクタ回路１０７のセレクタ端子Ｓに「０」を入力する。
【００５４】
また、ＡＮＤ回路１０６における設定は、ブレークイネーブル信号によっておこなわれる。ブレークイネーブル信号は、ＣＰＵコア１０１のデータブレーク実行を許可するか禁止するかを設定することができる。
【００５５】
具体的には、たとえば、ＣＰＵコア１０１のデータブレーク実行を許可する場合は、ＡＮＤ回路１０６にブレークイネーブル信号「１」が入力される。一方、ＣＰＵコア１０１のデータブレーク実行を禁止する場合は、ＡＮＤ回路１０６にブレークイネーブル信号「０」が入力される。
【００５６】
以上説明したような各設定をおこなうことで、たとえば下記のようにデータブレーク実行を制御することができる。
【００５７】
＜第１制御ビット＝０の場合＞
このような場合、セレクタ回路１０９のセレクタ端子Ｓに第１制御ビットとして「０」を入力しているため、セレクタ回路１０７から入力される信号（０または１の２値）の値にかかわらず、セレクタ回路１０９はブレーク実行許可信号「１」を出力する。したがって、データキャッシュ１０２のキャッシュヒット／ミスにかかわらずデータアドレスの一致によりＣＰＵコア１０１においてデータブレークを実行することができる。
【００５８】
＜第１制御ビット＝１かつ第２制御ビット＝０＞
このような場合、セレクタ回路１０７のセレクタ端子Ｓには、第２制御ビットとして「０」を入力されている。ここで、データキャッシュ１０２からキャッシュヒット信号としてキャッシュミスを表す「０」が出力されると、セレクタ回路１０７の入力端子１には「０」が入力され、入力端子０にはＮＯＴ回路１０８によって反転された「１」が入力されると、セレクタ回路１０７は、出力信号（０または１の２値）「１」を出力する。
【００５９】
また、セレクタ回路１０９のセレクタ端子Ｓには第１制御ビットとして「１」が入力されており、入力端子１にはセレクタ回路１０７から「１」が入力されていることから、セレクタ回路１０９はブレーク実行許可信号「１」を出力する。したがって、データキャッシュ１０２の「キャッシュミス」かつデータアドレスの一致によりＣＰＵコア１０１によってデータブレークを実行することができる。
【００６０】
＜第１制御ビット＝１かつ第２制御ビット＝１＞
このような場合、セレクタ回路１０７のセレクタ端子Ｓには、第２制御ビットとして「１」を入力されている。ここで、データキャッシュ１０２からキャッシュヒット信号としてキャッシュヒットを表す「１」が出力されると、セレクタ回路１０７の入力端子１には「１」が入力される。一方、入力端子０にはＮＯＴ回路１０８によって反転された「０」が入力される。したがって、セレクタ回路１０７は、出力信号「１」を出力する。
【００６１】
また、セレクタ回路１０９のセレクタ端子Ｓには第１制御ビットとして「１」が入力されており、入力端子１にはセレクタ回路１０７から「１」が入力されていることから、セレクタ回路１０９はブレーク実行許可信号「１」を出力する。したがって、データキャッシュ１０２の「キャッシュヒット」かつデータアドレスの一致によりＣＰＵコア１０１によってデータブレークを実行することができる。
【００６２】
なお、条件設定回路１０５に入力される第１制御ビットおよび第２制御ビットと、ＡＮＤ回路１０６に入力されるブレークイネーブル信号とは、あらかじめ不図示のレジスタに設定された値を用いる。レジスタへの設定は、上位プログラムによって自動的におこなってもよいし、利用者が個別におこなってもよい。
【００６３】
以上説明したように実施の形態１のプロセッサは、制御ビットやブレークイネーブル信号を用いてＣＰＵコア１０１のデータブレーク実行の条件を個別に設定することができる。
【００６４】
（実施の形態２）
つぎに、実施の形態２について説明する。この実施の形態２で説明するプロセッサでは、キャッシュヒット／ミス発生時に、ＣＰＵコアに命令ブレークを実行させるように制御する。また、データブレークアドレス検出や、キャッシュヒット／ミス発生など、どのような条件で命令ブレークをおこなうかを詳細に設定する機能を備えている。
【００６５】
（実施の形態２にかかるプロセッサの回路構成）
まず、この発明の実施の形態２にかかるプロセッサの回路構成について説明する。図２は、この発明の実施の形態２にかかるプロセッサの回路構成を示す説明図である。図２において、プロセッサ２００は、ＣＰＵコア２０１と、インストラクション（命令）キャッシュ２０２と、命令ブレークアドレスレジスタ２０３と、比較器２０４と、条件設定回路２０５と、ＡＮＤ回路２０６とを含んで構成されている。
【００６６】
ＣＰＵコア２０１は、実行されているプログラムに応じてインストラクションキャッシュ２０２の所定の命令アドレスにアクセスし、命令を読み出す。このインストラクションキャッシュ２０２へアクセスと同時に、ＣＰＵコア２０１は、アクセス先の命令アドレスの情報を比較器２０４へ出力する。
【００６７】
また、ＣＰＵコア２０１には、ＡＮＤ回路２０６から命令ブレーク信号（０または１の２値）が入力される。ＣＰＵコア２０１は、命令ブレーク実行指示として命令ブレーク信号「１」が入力された場合に命令ブレークを実行する。一方、ＣＰＵコア２０１に、ＡＮＤ回路２０６から命令ブレーク信号「０」が入力された場合には、そのまま実行されているプログラムに応じた処理を継続する。
【００６８】
インストラクションキャッシュ２０２には、ＣＰＵコア２０１の読み出し頻度の高い命令が高速に読み出し可能に保持されている。また、インストラクションキャッシュ２０２の命令は、それぞれ付与されたデータアドレスと対応させて保持されている。したがって、ＣＰＵコア２０１は、命令アドレスを指定してインストラクションキャッシュ２０２にアクセスをおこなうことで、所望の命令を読み出すことができる。
【００６９】
また、インストラクションキャッシュ２０２、実施の形態１のデータキャッシュ１０２と同様にＣＰＵコア２０１のアクセスによるデータの読み出しの成否をキャッシュヒット信号（０または１の２値）として条件設定回路２０５に出力する。また「キャッシュミス」の場合も同様に、ＣＰＵコア２０１は、不図示のメインメモリにアクセスして所望の命令を読み出す。
【００７０】
命令ブレークアドレスレジスタ２０３には、ブレークポイントとなる命令アドレスの情報が書き込まれており、ブレークポイントとなる命令アドレスの情報は、比較器１０４に入力される。なお、命令アドレスの情報は、上位プログラムによって命令ブレークアドレスレジスタ２０３に書き込まれてもよいし、利用者によって個別に書き込まれてもよい。
【００７１】
比較器２０４は、ＣＰＵコア２０１から入力された命令アドレスと、命令ブレークアドレスレジスタ２０３から入力されたブレークポイントとなる命令アドレスとを比較し一致判定信号を出力する。
【００７２】
条件設定回路２０５は、インストラクションキャッシュ２０２から入力されたキャッシュヒット信号に応じて命令ブレークのブレーク実行許可信号をＡＮＤ回路２０６に出力する。この条件設定回路２０５は、セレクタ回路２０７，２０９と、ＮＯＴ回路２０８とを含んで構成されている。セレクタ回路２０７，２０９およびＮＯＴ回路２０８の機能は、実施の形態１のセレクタ回路１０７，１０９およびＮＯＴ回路１０８と同様であるため説明を省略する。
【００７３】
条件設定回路２０５は、上述のようなセレクタ回路２０７，２０９に個別に設定を施すことでインストラクションキャッシュ２０２のキャッシュヒット／ミスの検出を命令ブレーク実行の条件とするか、さらに、キャッシュヒット／ミスのいずれを命令ブレーク実行の条件とするかなどを指定することができる。なお、条件設定回路２０５の設定内容とその動作についての詳細は後述する。
【００７４】
ＡＮＤ回路２０６は、比較器２０４からの一致判定信号と、条件設定回路２０５からのブレーク実行許可信号と、ブレークイネーブル信号とが入力され、入力された信号に応じてＣＰＵコア２０１へ命令ブレーク信号を出力する。
【００７５】
（実施の形態２のプロセッサの命令ブレーク実行設定と動作）
つぎに、実施の形態２のプロセッサ２００における命令ブレーク実行設定と動作について説明する。上述したように、プロセッサ２００は、どのような条件で命令ブレークを実行するかを設定することができる。具体的な設定は、条件設定回路２０５およびＡＮＤ回路２０６によっておこなわれる。
【００７６】
まず、条件設定回路２０５における設定は、セレクタ回路２０７，２０９によっておこなわれる。なお、条件設定回路２０５における命令ブレーク実行の条件回路の設定は、実施の形態１の条件設定回路１０５におけるデータブレーク実行の条件回路の設定の際のセレクタ回路１０７，１０９および制御ビットと同一であるため説明を省略する。
【００７７】
また、ＡＮＤ回路２０６における設定も実施の形態１同様、ブレークイネーブル信号によっておこなわれる。ブレークイネーブル信号は、ＣＰＵコア２０１の命令ブレーク実行を許可するか禁止するかを設定することができる。
【００７８】
具体的には、たとえば、ＣＰＵコア２０１の命令ブレーク実行を許可する場合は、ＡＮＤ回路２０６にブレークイネーブル信号「１」が入力される。一方、ＣＰＵコア２０１の命令ブレーク実行を禁止する場合は、ＡＮＤ回路２０６にブレークイネーブル信号「０」が入力される。
【００７９】
以上説明したような各設定をおこなうことで、たとえば下記のように命令ブレーク実行を制御することができる。
【００８０】
＜第１制御ビット＝０の場合＞
このような場合、セレクタ回路２０９のセレクタ端子Ｓには、第１制御ビットとして「０」を入力されるため、セレクタ回路２０７から入力される信号の値にかかわらず、セレクタ回路２０９はブレーク実行許可信号「１」を出力する。したがって、インストラクションキャッシュ２０２のキャッシュヒット／ミスにかかわらず命令アドレスの一致によりＣＰＵコア２０１によって命令ブレークを実行することができる。
【００８１】
＜第１制御ビット＝１かつ第２制御ビット＝０＞
このような場合、セレクタ回路２０７のセレクタ端子Ｓには、第２制御ビットとして「０」を入力されている。ここで、インストラクションキャッシュ２０２からキャッシュヒット信号としてキャッシュミスを表す「０」が出力されると、セレクタ回路２０７の入力端子１には「０」が入力され、入力端子０にはＮＯＴ回路２０８によって反転された「１」が入力されると、セレクタ回路２０７は、出力信号「１」を出力する。
【００８２】
また、セレクタ回路２０９のセレクタ端子Ｓには第１制御ビットとして「１」が入力されており、入力端子１にはセレクタ回路２０７から「１」が入力されていることから、セレクタ回路２０９はブレーク実行許可信号「１」を出力する。したがって、インストラクションキャッシュ２０２の「キャッシュミス」かつ命令アドレスの一致によりＣＰＵコア２０１によって命令ブレークを実行することができる。
【００８３】
＜第１制御ビット＝１かつ第２制御ビット＝１＞
このような場合、セレクタ回路２０７のセレクタ端子Ｓには、第２制御ビットとして「１」を入力されている。ここで、インストラクションキャッシュ２０２からキャッシュヒット信号としてキャッシュヒットを表す「１」が出力されると、セレクタ回路２０７の入力端子１には「１」が入力される。一方、入力端子０にはＮＯＴ回路２０８によって反転された「０」が入力される。したがって、セレクタ回路２０７は、出力信号「１」を出力する。
【００８４】
また、セレクタ回路２０９のセレクタ端子Ｓには第１制御ビットとして「１」が入力されており、入力端子１にはセレクタ回路２０７から「１」が入力されていることから、セレクタ回路２０９はブレーク実行許可信号「１」を出力する。したがって、インストラクションキャッシュ２０２の「キャッシュヒット」かつ命令アドレスの一致によりＣＰＵコア２０１によって命令ブレークを実行することができる。
【００８５】
なお、条件設定回路２０５に入力される第１制御ビットおよび第２制御ビットと、ＡＮＤ回路２０６に入力されるブレークイネーブル信号とは、あらかじめ不図示のレジスタに設定された値を用いる。レジスタへの設定は、上位プログラムによって自動的におこなってもよいし、利用者が個別におこなってもよい。
【００８６】
以上説明したように実施の形態２のプロセッサ２００は、制御ビットやブレークイネーブル信号を用いてＣＰＵコア２０１の命令ブレーク実行の条件を個別に設定することができる。
【００８７】
（実施の形態３）
つぎに、実施の形態３について説明する。この実施の形態３で説明するプロセッサでは、コピーバックモードを備えたデータキャッシュにＣＰＵコアがアクセスする。このようなプロセッサにおいてもキャッシュヒット／ミス発生時に、ＣＰＵコアにデータブレークを実行させる。また、データブレークアドレス検出や、キャッシュヒット／ミス発生や、コピーバックモード特有のデータキャッシュのライン状態など、どのような条件で命令ブレークをおこなうかを詳細に設定する機能を備えている。
【００８８】
（実施の形態３にかかるプロセッサの回路構成）
まず、この発明の実施の形態３にかかるプロセッサの回路構成について説明する。図３は、この発明の実施の形態３にかかるプロセッサの回路構成を示す説明図である。図３において、プロセッサ３００は、ＣＰＵコア３０１と、データキャッシュ３０２と、ブレークアドレスレジスタ３０３と、比較器３０４と、条件設定回路３０５と、ＡＮＤ回路３０６と、を含んで構成される。
【００８９】
なお、上記の構成のうち、ＣＰＵコア３０１、ブレークアドレスレジスタ３０３、比較器３０４およびＡＮＤ回路３０６は、実施の形態１のプロセッサ１００（図１参照）の、ＣＰＵコア１０１、データブレークアドレスレジスタ１０３、比較器１０４およびＡＮＤ回路１０６と同一の機能を有するため、説明を省略する。
【００９０】
データキャッシュ３０２は、実施の形態１のデータキャッシュ１０２と同様にＣＰＵコア３０１の読み出し頻度の高いデータが高速に読み出し可能に保持されている。また、データキャッシュ３０２のデータは、それぞれ付与されたデータアドレスと対応させて保持されている。
【００９１】
また、データキャッシュ３０２は、コピーバックモードによって動作するキャッシュである。コピーバックモードとは、ＣＰＵコア３０１のアクセスによってデータキャッシュ３０２に書き換えがおこなわれた場合に、書き換え指示があるまでメインメモリにはデータキャッシュ３０２の書き換え内容を反映させない処理である。データキャッシュ３０２の書き換えのたびにメインメモリへの書き換えをおこなう必要がないため、処理速度を向上させることができる。
【００９２】
上述したように、データキャッシュ３０２は、コピーバックモードによって動作するため、ＣＰＵコア３０１からのアクセスのキャッシュヒット／ミスを表すキャッシュヒット信号に加えて、データキャッシュ３０２内のデータブロックのライン状態を表すライン状態信号（０または１の２値）を出力する。
【００９３】
また、データブロックのライン状態には、ダーティ（状態）と、クリーン（状態）との２つの状態が存在する。ダーティは、データアドレスごとに保持された各データがＣＰＵコア３０１のアクセスによって書き換えられている状態を表す。一方、クリーンは、ＣＰＵコア３０１のアクセスによって書き換えられていない、すなわち、メインメモリから読み出した内容がそのまま保持されている状態を表す。
【００９４】
したがって、データキャッシュ３０２は、ライン状態に応じたライン状態信号を条件設定回路３０５に出力する。ここで、データキャッシュ３０２がクリーンであればライン状態信号「０」を出力し、データキャッシュ３０２がダーティであればライン状態信号「１」を出力する。なお、コピーバックモードにおけるデータキャッシュ３０２の振る舞いについては、図４，５を用いて詳しく後述する。
【００９５】
条件設定回路３０５は、データキャッシュ３０２から入力されたキャッシュヒット信号と、ライン状態信号とに応じてデータブレークのブレーク実行許可信号をＡＮＤ回路３０６に出力する。この条件設定回路３０５は、セレクタ回路３０７，３０９と、ＮＯＴ回路３０８と、ＡＮＤ回路３１０，３１１とを含んで構成されている。
【００９６】
セレクタ回路３０９は、実施の形態１のセレクタ回路１０９と同じ動作をおこなうが、セレクタ回路３０７は、４つの入力端子（１〜４）を備えているため、セレクタ端子Ｓには、１〜４を表す２ビットの２値の第２制御ビットが入力される。
【００９７】
具体的には、たとえば、セレクタ端子Ｓに入力される第２制御ビットは“００＝１”，“０１＝１”，“１０＝２”，“１１＝３”の４種類である。セレクタ回路３０７は、第２制御ビットによって指定された値の入力端子に入力されている信号をそのまま出力する。
【００９８】
また、ＡＮＤ回路３１０，３１１の動作は、ＡＮＤ回路３０６と同様に、入力された信号がすべて「１」の場合にのみ、「１」を出力し、ＮＯＴ回路３０８は、入力された信号を反転して出力する。
【００９９】
条件設定回路３０５は、上述のようなセレクタ回路３０７，３０９に個別に設定を施すことでデータキャッシュ３０２のキャッシュヒット／ミスの検出をデータブレーク実行の条件とするか、ダーティもしくはクリーンのいずれの状態でのキャッシュヒットをデータブレーク実行の条件とするか、さらに、キャッシュヒット／ミスのいずれかをデータブレーク実行の条件とするかなどを指定することができる。なお、条件設定回路３０５の設定内容とその動作についての詳細については後述する。
【０１００】
（コピーバックモードにおけるデータキャッシュの振る舞い）
ここで、コピーバックモードにおけるデータキャッシュ３０２の振る舞いについて説明する。まず、コピーバックモードにおけるデータキャッシュ３０２の状態の遷移について説明する。
【０１０１】
図４は、コピーバックモードにおけるデータキャッシュの状態を示す状態遷移図である。図４のようにコピーバックをおこなうキャッシュは、ＣＰＵコアからの指示に応じて「キャッシュミス」、「クリーン」、「ダーティ」の３つの状態を遷移する。データキャッシュ３０２は、データヒットすることが前提とはいえ、実際の運用時にはキャッシュミスの頻繁に発生し、図４の３つの状態の間を頻繁に遷移していることとなる。
【０１０２】
＜キャッシュミス状態からの遷移＞
図４のように、データキャッシュ３０２は、リセット（Ｓ４０１）されることで、キャッシュミス状態となる。このキャッシュミス状態のデータキャッシュ３０２にＣＰＵコア３０１からのアクセスによってデータのリード（読み出し）のキャッシュミスが生じると（Ｓ４０２）、メインメモリから読み出したデータがデータキャッシュ３０２に書き込まれる。したがって、データキャッシュ３０２は、メインメモリから新たなデータが取り込まれたままであるため、クリーン状態となる。
【０１０３】
また、キャッシュミス状態のデータキャッシュ３０２にＣＰＵコア３０１からのアクセスによってデータのライト（書き込み）のキャッシュミスが生じると（Ｓ４０３）、ＣＰＵコア３０１からデータキャッシュ３０２に新たなデータが書き込まれる。したがって、データキャッシュ３０２は、メインメモリから取り込まれたデータに新たなデータが書き込まれたため、ダーティ状態となる。
【０１０４】
＜クリーン状態からの遷移＞
また、クリーン状態のデータキャッシュ３０２にＣＰＵコア３０１からのアクセスによってデータのリード（読み出し）のキャッシュミスが生じると（Ｓ４０４）、メインメモリから読み出したデータがデータキャッシュ３０２に書き込まれる。したがって、データキャッシュ３０２は、メインメモリから新たなデータが取り込まれたままであるため、引き続きクリーン状態となる。
【０１０５】
また、クリーン状態のデータキャッシュ３０２にＣＰＵコア３０１からのアクセスによってデータのリード（読み出し）のキャッシュヒットが生じると（Ｓ４０５）、データキャッシュ３０２に保持されているデータが読み出される。したがって、データキャッシュ３０２は、メインメモリから新たなデータが取り込まれたままであるため、引き続きクリーン状態となる。
【０１０６】
また、クリーン状態のデータキャッシュ３０２にＣＰＵコア３０１からのアクセスによってデータのライト（書き込み）のキャッシュヒットが生じると（Ｓ４０６）、ＣＰＵコア３０１からデータキャッシュ３０２に新たなデータが書き込まれる。したがって、データキャッシュ３０２は、メインメモリから取り込まれたデータに新たなデータが書き込まれたため、ダーティ状態となる。
【０１０７】
＜ダーティ状態からの遷移＞
また、クリーン状態のデータキャッシュ３０２にＣＰＵコア３０１からのアクセスによってデータのリード（読み出し）／ライト（書き込み）のキャッシュヒットが生じると（Ｓ４０７）、データキャッシュ３０２の読み出し、もしくは書き込みがおこなわれる。しかしながら、データキャッシュ３０２は、すでにダーティ状態であるため、リード／ライトにかかわらず、引き続きダーティ状態となる。
【０１０８】
また、クリーン状態のデータキャッシュ３０２にＣＰＵコア３０１からのアクセスによってデータのライト（書き込み）のキャッシュミスが生じると（Ｓ４０８）、ＣＰＵコア３０１からデータキャッシュ３０２に新たなデータが書き込まれる。この処理においても、データキャッシュ３０２は、新たなデータが書き込まれるが、すでにダーティ状態であるため、引き続きダーティ状態となる。
【０１０９】
また、クリーン状態のデータキャッシュ３０２にＣＰＵコア３０１から専用命令によってキャッシュフラッシュがおこなわれると（Ｓ４０９）、データキャッシュ３０２は、指定されたデータアドレスに保持されているデータをメインメモリに書き写して消去する。したがって、データキャッシュ３０２は、クリーン状態となる。
【０１１０】
つぎに、コピーバックモードによるデータキャッシュ３０２の動作について説明する。図５は、コピーバックモードにおけるＣＰＵコアの動作とメインメモリの内容との関係を示す説明図である。図５において、左半分はプロセッサ３００のＣＰＵコア３０１の動作を表し、右半分はＣＰＵコア３０１がアクセスしたデータキャッシュ３０２のデータアドレス（アドレスＡ）の内容が保持されているメインメモリのアドレスＡの内容を表している。
【０１１１】
たとえば、プロセッサ３００が、データキャッシュ３０２の同じデータアドレス（アドレスＡ）に値Ｘ〜Ｚを書き込み、書き込んだ内容をＤＭＡなど外部のコアによって出力させる場合、図５のように、まず、値Ｘについて、アドレスＡに値Ｘを書き込み（ステップＳ５０１）、データキャッシュ３０２をフラッシュし（ステップＳ５０２）、ＤＭＡを起動してアドレスＡの内容を出力する（ステップＳ５０３）という処理をおこなう。
【０１１２】
続いて、値Ｙについて、アドレスＡに値Ｙを書き込み（ステップＳ５０４）、データキャッシュ３０２をフラッシュし（ステップＳ５０５）、ＤＭＡを起動してアドレスＡの内容を出力する（ステップＳ５０６）という処理をおこなう。
【０１１３】
最後に、値Ｚについて、アドレスＡに値Ｚを書き込み（ステップＳ５０７）、データキャッシュ３０２をフラッシュし（ステップＳ５０８）、ＤＭＡを起動してアドレスＡの内容を出力する（ステップＳ５０９）という処理をおこなう。
【０１１４】
また、上述したＣＰＵコア３０１における値Ｘのデータキャッシュ３０２のフラッシュ処理（ステップＳ５０２）によって、メインメモリのアドレスＡの保持内容はＸとなり（ステップＳ５１２）、値Ｙのデータキャッシュ３０２のフラッシュ処理（ステップＳ５０５）によって、メインメモリのアドレスＡの保持内容はＹとなり（ステップＳ５１５）、値Ｚのデータキャッシュ３０２のフラッシュ処理（ステップＳ５０８）によって、メインメモリのアドレスＡの保持内容はＺとなる（ステップＳ５１８）。
【０１１５】
すなわち、図５に示したＣＰＵコア動作とアドレスの内容との関係のように、データキャッシュ３０２は、コピーバックモードで動作し、ＣＰＵコア３０１が書き込んだ内容を正しく出力させるためには、ＤＭＡなどの外部のコアが起動する前にデータキャッシュ３０２の内容をフラッシュし、メインメモリに書き換える必要がある。
【０１１６】
ＤＭＡなどの外部のコアが起動する前にデータキャッシュ３０２の内容をフラッシュするには、データキャッシュ３０２がダーティ状態でデータヒットされた状態をいち早く検出して、ブレークを実行させればよい。したがって、プロセッサ３００は、ブレーク実行の状態として、ダーティ状態のデータヒットを設定することができる。また、データキャッシュ３０２とメインメモリとの不整合が発生した場合の解析処理を容易にするため、ダーティ状態のデータヒットのみならず、クリーン状態のデータヒットをブレーク実行の条件として設定することができる。
【０１１７】
（実施の形態３のプロセッサのデータブレーク実行設定と動作）
つぎに、実施の形態３のプロセッサ３００におけるデータブレーク実行設定と動作について説明する。上述したように、プロセッサ３００は、どのような条件でデータブレークを実行するかを設定することができる。具体的な設定は、条件設定回路３０５およびＡＮＤ回路３０６によっておこなわれる。
【０１１８】
まず、条件設定回路３０５における設定は、セレクタ回路３０７，３０９によっておこなわれる。セレクタ回路３０９にはセレクタ端子Ｓに第１制御ビットが入力され、第１制御ビットの値に応じてデータキャッシュ３０２におけるキャッシュヒット／ミスをデータブレーク実行の条件とするか否かを設定することができる。
【０１１９】
具体的には、たとえば、データキャッシュ３０２におけるキャッシュヒット／ミスをデータブレーク実行の条件とする場合は、第１制御ビットとしてセレクタ回路３０９のセレクタ端子Ｓに「１」を入力する。一方、データキャッシュ３０２におけるキャッシュヒット／ミスをデータブレーク実行の条件としない場合は、第１制御ビットとしてセレクタ回路３０９のセレクタ端子Ｓに「０」を入力する。
【０１２０】
また、セレクタ回路３０７にはセレクタ端子Ｓに２ビットの第２制御ビットが入力され、以下のデータブレーク実行の条件を設定することができる。
・データキャッシュ３０２における「キャッシュヒット」（第２制御ビット＝１１）
・データキャッシュ３０２における「キャッシュミス」  （第２制御ビット＝００）
・ライン状態がダーティの場合の「キャッシュヒット」  （第２制御ビット＝０１）
・ライン状態がクリーンの場合の「キャッシュヒット」  （第２制御ビット＝１０）
【０１２１】
具体的には、たとえば、データキャッシュ３０２における「キャッシュヒット」をデータブレーク実行の条件とする場合は、第２制御ビットとしてセレクタ回路３０７のセレクタ端子Ｓに「１１」が入力される。一方、データキャッシュ３０２における「キャッシュミス」をデータブレーク実行の条件とする場合は、第２制御ビットとしてセレクタ回路１０７のセレクタ端子Ｓに「００」が入力される。
【０１２２】
さらに、ライン状態がダーティで「キャッシュヒット」をデータブレーク実行の条件とする場合は、第２制御ビットとしてセレクタ回路３０７のセレクタ端子Ｓに「０１」が入力され、ライン状態がクリーンで「キャッシュヒット」をデータブレーク実行の条件とする場合は、第２制御ビットとしてセレクタ回路３０７のセレクタ端子Ｓに「１０」が入力される。
【０１２３】
また、ＡＮＤ回路３０６における設定は、ブレークイネーブル信号によっておこなわれる。ブレークイネーブル信号は、ＣＰＵコア３０１のデータブレーク実行を許可するか禁止するかを設定することができる。
【０１２４】
具体的には、たとえば、ＣＰＵコア３０１のデータブレーク実行を許可する場合は、ＡＮＤ回路３０６にブレークイネーブル信号「１」が入力される。一方、ＣＰＵコア３０１のデータブレーク実行を禁止する場合は、ＡＮＤ回路３０６にブレークイネーブル信号「０」が入力される。
【０１２５】
以上説明したような各設定をおこなうことで、たとえば下記のようにデータブレーク実行を制御することができる。
【０１２６】
＜第１制御ビット＝０の場合＞
このような場合、セレクタ回路３０９のセレクタ端子Ｓには、第１制御ビットとして「０」が入力されるため、セレクタ回路３０７から入力される信号の値にかかわらず、セレクタ回路３０９はブレーク実行許可信号「１」を出力する。したがって、データキャッシュ３０２のキャッシュヒット／ミスにかかわらずデータアドレスの一致によりＣＰＵコア３０１によってデータブレークを実行することができる。
【０１２７】
＜第１制御ビット＝１かつ第２制御ビット＝００＞
このような場合、セレクタ回路３０７のセレクタ端子Ｓには、第２制御ビットとして「００」が入力される。ここで、データキャッシュ３０２からキャッシュヒット信号としてキャッシュミスを表す「０」が出力されると、セレクタ回路３０７の入力端子３と、ＡＮＤ回路３１０，３１１と、ＮＯＴ回路３０８に「０」が入力される。
【０１２８】
上述のように、セレクタ回路３０７は、第２制御ビット「００」が入力されているため、入力端子０に入力された信号を出力する。入力端子０にはＮＯＴ回路３０８に入力された信号の反転信号が入力されるため、セレクタ回路３０７は、セレクタ回路３０９に「１」を出力する。
【０１２９】
また、セレクタ回路３０９のセレクタ端子Ｓには第１制御ビットとして「１」が入力されており、入力端子１にはセレクタ回路３０７から「１」が入力されていることから、セレクタ回路３０９はブレーク実行許可信号「１」を出力する。したがって、ライン状態にかかわらず、データキャッシュ３０２の「キャッシュミス」かつデータアドレスの一致によりＣＰＵコア３０１によってデータブレークを実行することができる。
【０１３０】
＜第１制御ビット＝１かつ第２制御ビット＝０１＞
このような場合、セレクタ回路３０７のセレクタ端子Ｓには、第２制御ビットとして「０１」が入力される。ここで、データキャッシュ３０２からキャッシュヒット信号としてキャッシュヒットを表す「１」が出力されると、セレクタ回路３０７の入力端子３と、ＡＮＤ回路３１０，３１１と、ＮＯＴ回路３０８に「１」が入力される。
【０１３１】
また、データキャッシュ３０２からダーティを表すライン状態信号「１」が出力されると、ＡＮＤ回路３１１には「１」が入力され、ＡＮＤ回路３１０には反転された「０」が入力される。上述のように、セレクタ回路３０７は、第２制御ビット「０１」が入力されているため、入力端子１に入力された信号を出力する。入力端子１にはＡＮＤ回路３１１から出力された信号が入力されている。ＡＮＤ回路３１１は、キャッシュヒット信号「１」、ライン状態信号「１」が入力されていることから「１」を出力する。したがって、セレクタ回路３０９に「１」が入力される。
【０１３２】
また、セレクタ回路３０９のセレクタ端子Ｓには第１制御ビットとして「１」が入力されており、入力端子１にはセレクタ回路３０７から「１」が入力されていることから、セレクタ回路３０９はブレーク実行許可信号「１」を出力する。したがって、ライン状態がダーティのデータキャッシュ３０２の「キャッシュミス」かつデータアドレスの一致の状態であればＣＰＵコア３０１によってデータブレークを実行することができる。
【０１３３】
＜第１制御ビット＝１かつ第２制御ビット＝１０＞
このような場合、セレクタ回路３０７のセレクタ端子Ｓには、第２制御ビットとして「１０」が入力される。ここで、データキャッシュ３０２からキャッシュヒット信号としてキャッシュヒットを表す「１」が出力されると、セレクタ回路３０７の入力端子３と、ＡＮＤ回路３１０，３１１と、ＮＯＴ回路３０８に「１」が入力される。
【０１３４】
また、データキャッシュ３０２からクリーンを表すライン状態信号「０」が出力されると、ＡＮＤ回路３１１には「０」が入力され、ＡＮＤ回路３１０には反転された「１」が入力される。上述のように、セレクタ回路３０７は、第２制御ビット「１０」が入力されているため、入力端子２に入力された信号を出力する。入力端子２にはＡＮＤ回路３１０から出力された信号が入力されている。ＡＮＤ回路３１０は、キャッシュヒット信号「１」、ライン状態信号「０」の反転信号「１」が入力されていることから「１」を出力する。したがって、セレクタ回路３０９に「１」が入力される。
【０１３５】
また、セレクタ回路３０９のセレクタ端子Ｓには第１制御ビットとして「１」が入力されており、入力端子１にはセレクタ回路３０７から「１」が入力されていることから、セレクタ回路３０９はブレーク実行許可信号「１」を出力する。したがって、ライン状態がクリーンのデータキャッシュ３０２の「キャッシュミス」かつデータアドレスの一致の状態であればＣＰＵコア３０１によってデータブレークを実行することができる。
【０１３６】
＜第１制御ビット＝１かつ第２制御ビット＝１１＞
このような場合、セレクタ回路３０７のセレクタ端子Ｓには、第２制御ビットとして「１１」が入力される。ここで、データキャッシュ３０２からキャッシュヒット信号としてキャッシュヒットを表す「１」が出力されると、セレクタ回路３０７の入力端子３と、ＡＮＤ回路３１０，３１１と、ＮＯＴ回路３０８に「１」が入力される。
【０１３７】
上述のように、セレクタ回路３０７は、第２制御ビット「１１」が入力されているため、入力端子３に入力された信号を出力する。入力端子３にはデータキャッシュ３０２から直接キャッシュヒット信号「１」が入力されるため、セレクタ回路３０７は、セレクタ回路３０９に「１」を出力する。
【０１３８】
また、セレクタ回路３０９のセレクタ端子Ｓには、第１制御ビットとして「１」が入力されており、入力端子１にはセレクタ回路３０７から「１」が入力されていることから、セレクタ回路３０９は、ブレーク実行許可信号「１」を出力する。したがって、ライン状態にかかわらず、データキャッシュ３０２の「キャッシュヒット」かつデータアドレスの一致によりＣＰＵコア３０１によってデータブレークを実行することができる。
【０１３９】
なお、条件設定回路３０５に入力される第１制御ビットおよび第２制御ビットと、ＡＮＤ回路３０６に入力されるブレークイネーブル信号とは、あらかじめ不図示のレジスタに設定された値を用いる。レジスタへの設定は、上位プログラムによって自動的におこなってもよいし、利用者が個別におこなってもよい。
【０１４０】
以上説明したように実施の形態３のプロセッサ３００は、制御ビットやブレークイネーブル信号に加えて、コピーバックモードのライン状態信号を用いてＣＰＵコア１０１のデータブレーク実行の条件を個別に設定することができる。
【０１４１】
以上説明したように、プロセッサおよびプロセッサ制御方法によれば、ブレーク実行条件を個別に設定する機能を備えているため、メモリ領域の不整合の原因解析が容易であり、かつ設定したブレーク実行条件以外であれば通常の処理速度を保持することができる。
【産業上の利用可能性】
【０１４２】
以上のように、本発明にかかるプロセッサおよびプロセッサ制御方法は、メモリ領域に複数のコアからアクセスがおこなわれるようなハードウェアに有用であり、特に、高速な処理が必要とされるデジタルＡＶ機器やイメージング機器に搭載するプロセッサに適している。
【図面の簡単な説明】
【０１４３】
【図１】この発明の実施の形態１にかかるプロセッサの回路構成を示す説明図である。
【図２】この発明の実施の形態２にかかるプロセッサの回路構成を示す説明図である。
【図３】この発明の実施の形態３にかかるプロセッサの回路構成を示す説明図である。
【図４】コピーバックモードにおけるデータキャッシュの状態を示す状態遷移図である。
【図５】コピーバックモードにおけるＣＰＵコアの動作とメインメモリの内容との関係を示す説明図である。
【図６】複数のコアが同じメモリ領域にアクセスした場合に生じる不整合を模式的に示す説明図である。
【符号の説明】
【０１４４】
１００，２００，３００  プロセッサ
１０１，２０１，３０１  ＣＰＵコア
１０２，３０２  データキャッシュ
１０３，３０３  データブレークアドレスレジスタ
１０４，２０４，３０４  比較器
１０５，２０５，３０５  条件設定回路
１０６，２０６，３０６，３１０，３１１  ＡＮＤ回路
１０７，１０９，２０７，２０９，３０７，３０９  セレクタ回路
１０８，２０８，３０８  ＮＯＴ回路
２０２  インストラクションキャッシュ
２０３  命令ブレークアドレスレジスタ
【図１】
2007257441.tif 000003
【図２】
2007257441.tif 000004
【図３】
2007257441.tif 000005
【図４】
2007257441.tif 000006
【図５】
2007257441.tif 000007
【図６】
2007257441.tif 000008