JP2007257441A - プロセッサおよびプロセッサ制御方法 - Google Patents

プロセッサおよびプロセッサ制御方法 Download PDF

Info

Publication number
JP2007257441A
JP2007257441A JP2006082741A JP2006082741A JP2007257441A JP 2007257441 A JP2007257441 A JP 2007257441A JP 2006082741 A JP2006082741 A JP 2006082741A JP 2006082741 A JP2006082741 A JP 2006082741A JP 2007257441 A JP2007257441 A JP 2007257441A
Authority
JP
Japan
Prior art keywords
break
cache
data
cpu core
miss
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006082741A
Other languages
English (en)
Inventor
Yoshitaka Mizuno
美孝 水野
Yoshihiro Hiji
義弘 氷治
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006082741A priority Critical patent/JP2007257441A/ja
Priority to US11/499,811 priority patent/US20070226418A1/en
Publication of JP2007257441A publication Critical patent/JP2007257441A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】メモリ領域の不整合の場合の原因解析の容易化および処理速度の向上を、簡単な回路構成で実現するプロセッサを提供すること。
【解決手段】プロセッサ100は、CPUコア101のブレークポイントに定められたアドレスと、CPUコア101がアクセスするデータキャッシュ102のアドレスとの一致判定を比較器104でおこなう。また、データキャッシュ102は、アクセスによるキャッシュヒット/ミスの検出結果を表すキャッシュヒット信号を出力する。また、AND回路106は、比較器104の一致判定信号と、データキャッシュ102のキャッシュヒット信号とに基づいてCPUコア101にデータブレーク信号を出力し、ブレークを実行させる。
【選択図】図1

Description

この発明は、ハードウェアブレークを制御するプロセッサおよびプロセッサ制御方法に関する。
従来、プロセッサには、指定されたデータアドレス領域に対するアクセスの監視をおこない、監視によるデータ値の比較結果が所定の条件にヒットした場合に、実行途中の命令をすべて完了した後、プロセッサをブレークするデバック機能が備えられている。
デバッグ機能の一例として、プロセッサに内蔵する命令キャッシュならびにデータキャッシュの少なくともいずれか一方の構成をキャッシュのミスヒット時のリプレース用バス・サイクルに同期してトラップ割り込み要求を登録するトラップ・ビットを持つタグ・メモリ部を有し、トラップ・ビットの値に応じてトラップ割り込みを発生させるトラップ機能を提供するプロセッサが開示されている(たとえば、下記特許文献1参照。)。
また、デバッグ機能の他の例として、命令やデータブレーク発生時にその命令やデータがキャッシュに存在するのかメモリに存在するのかを示すビットレジスタを備えることでデバッグ対象の命令やデータがキャッシュメモリに存在するかを簡単に知ることのできるプロセッサが開示されている(たとえば、下記特許文献2参照。)。
特開平4−350735号公報 特開平5−204709号公報
しかしながら、DMA(Direct Memory Access)コアなどCPUコア以外がメインメモリに直接アクセスする場合や、マルチプロセッサで複数のコア(CPUや、DMA)が同じメモリ領域にアクセスする処理をおこなう場合には、メインメモリの内容とキャッシュの内容との食い違い、すなわちメモリ領域の不整合が発生することがある。
図6は、複数のコアが同じメモリ領域にアクセスした場合に生じるメモリ領域の不整合を模式的に示す説明図である。図6のようにCPUコア600が、メインメモリ602にアクセスするかわりにデータキャッシュ(または命令が保持されたインストラクションキャッシュ)601にアクセスすることで高速な読み出しや書き込みを実現する。
一方、DMAコア603は、メインメモリ602に直接アクセスしてデータの書き換えをおこなう。ここで、データキャッシュ601の内容はメインメモリ602のメモリ領域604の内容がそのまま保持されている。したがって、CPUコア600がデータキャッシュ601にアクセスして読み出しのみをおこなっている場合は、データキャッシュ601とメモリ領域604と保持内容の同一性は保たれるが、データキャッシュ601に書き込みがおこなわれると、データキャッシュ601とメモリ領域604と保持内容の食い違いによりデータ領域の不整合が発生してしまう。
上述のようなデータ領域の不整合を解決する手段として、バススヌープ機構の実装が考えられる。バススヌープ機構とは、食い違いをCPUコアに通知し、メインメモリとキャッシュの整合性を回復する機能である。このバススヌープ機構の実装には、回路の複雑化に伴うコストの増大や、検証作業の複雑化という問題があった。
そのため、組み込み用途の小規模なプロセッサでは、バススヌープ機構を実装せずに、メインメモリとキャッシュとの整合性をソフトウェアで保証する技術が提供されている。このようなソフトウェアで保証する技術も、メインメモリとキャッシュの内容が不一致となることにより、ソフトウェアの動作に不具合が生じた場合、その原因の解析が困難であるという問題があった。
また、メインメモリ602とデータキャッシュ601との内容の不一致を解析する場合、通常は、不一致が発生していると疑われるアドレスに対して、データブレークポイントを設定し、そのアドレスをアクセスした際に、プログラムの実行を一時停止させて、不一致の有無を確認することになる。
ところが、不一致が疑われるアドレスが、プログラムのあちこちから参照されている変数のものである場合や、実行回数が膨大なループ中で参照されている変数のものである場合、データブレーク実行によるCPUコアの停止が何度も発生し、その都度確認をおこなうことは、非常に手間を要する作業となる。すなわち、CPUコアにブレークを実行させる必要のない条件であっても、たびたびブレークが実行され、プロセッサの処理速度が低下してしまうという問題があった。
この発明は、上述した従来技術による問題点を解消するため、メモリ領域の不整合の場合の原因解析の容易化および処理速度の向上を、簡単な回路構成で実現することができるプロセッサ、プロセッサ制御方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、この発明にかかるプロセッサは、CPUコアのブレークポイントに定められたアドレスと、前記CPUコアがアクセスするキャッシュのアドレスとの一致判定をおこなうアドレス判定手段と、前記アクセスによるキャッシュヒット/ミス(キャッシュヒットもしくはキャッシュミス)を検出するキャッシュヒット/ミス検出手段と、前記アドレス判定手段によって判定された判定結果と、前記キャッシュヒット/ミス検出手段によって検出されたキャッシュヒット/ミスとに基づいて、前記CPUコアにブレークを実行させるブレーク信号を生成する生成手段と、を備えることを特徴とする。
この発明によれば、従来の構成にあらたに生成手段を追加した簡易な構成で、ブレークポイントに定められたアドレスにアクセスした際のキャッシュヒット/ミスを、CPUコアにブレークを実行させるか否かの判断基準として利用することができる。
また、上記発明において、前記CPUコアにブレークを実行させる条件が設定されており、当該条件と前記キャッシュヒット/ミス検出手段によって検出されたキャッシュヒット/ミスとに基づいて、ブレークを許可するブレーク許可信号を前記生成手段に出力する条件設定手段を備え、前記生成手段は、前記アドレス判定手段によって判定された判定結果と、前記条件設定手段によって出力されたブレーク許可信号とに基づいて、前記ブレーク信号を生成することを特徴とする。
この発明によれば、キャッシュヒット/ミスのいずれかを検出した際に、任意の設定によりCPUコアにブレークを実行させることができる。したがって、設定した条件の場合にのみCPUコアのブレークを実行させることができ、プロセッサを効率的に動作させることができる。
また、上記発明において、前記キャッシュのデータアドレスごとに保持されたデータが前記CPUコアのアクセスによって書き換えられた状態(以下、「ダーティ状態」という)か書き換えられていない状態(以下、「クリーン状態」という)かを検出する書換検出手段を備え、前記条件設定手段は、前記書換検出手段によって検出されたダーティ状態/クリーン状態(ダーティ状態もしくはクリーン状態)に基づいて、前記ブレーク許可信号を前記生成手段に出力することを特徴とする。
この発明によれば、キャッシュヒット/ミスおよびキャッシュに保持されたデータがCPUコアによって書き換えられているか否かの状態を検出した際に任意の設定によりCPUコアにブレークを実行させることができる。
また、上記発明において、前記条件設定手段は、前記キャッシュヒット/ミス検出手段によってキャッシュヒットが検出されると前記CPUコアにブレークを実行させる条件が設定されており、前記キャッシュヒット/ミス検出手段によってキャッシュヒットが検出された場合、前記ブレーク許可信号を出力し、前記キャッシュミスが検出された場合、前記ブレーク許可信号を出力しないことを特徴とする。
この発明によれば、CPUコアのブレークの実行がキャッシュヒットの発生に起因するものであると解析することができる。
また、上記発明において、前記条件設定手段は、前記キャッシュヒット/ミス検出手段によってキャッシュミスが検出されると前記CPUコアにブレークを実行させる条件が設定されており、前記キャッシュヒット/ミス検出手段によってキャッシュミスが検出された場合、前記ブレーク許可信号を出力し、前記キャッシュヒットが検出された場合、前記ブレーク許可信号を出力しないことを特徴とする。
この発明によれば、CPUコアのブレークの実行がキャッシュミスの発生に起因するものであると解析することができる。
また、上記発明において、前記条件設定手段は、前記書換検出手段によってダーティ状態が検出されると前記CPUコアにブレークを実行させる条件が設定されており、前記書換検出手段によってダーティ状態が検出された場合、前記ブレーク許可信号を出力し、前記クリーン状態が検出された場合、前記ブレーク許可信号を出力しないことを特徴とする。
この発明によれば、CPUコアのブレークの実行が、CPUコアのアクセスによってデータが書き換えられた状態のキャッシュにおいて発生したキャッシュヒットに起因するものであると解析することができる。
また、上記発明において、前記条件設定手段は、前記書換検出手段によってクリーン状態が検出されると前記CPUコアにブレークを実行させる条件が設定されており、前記書換検出手段によってクリーン状態が検出された場合、前記ブレーク許可信号を出力し、前記ダーティ状態が検出された場合、前記ブレーク許可信号を出力しないことを特徴とする。
この発明によれば、CPUコアのブレークの実行が、CPUコアのアクセスによってデータが書き換えられていない状態のキャッシュにおいて発生したキャッシュヒットに起因するものであると解析することができる。
また、上記発明において、前記生成手段は、前記CPUコアにブレークの実行の禁止/許可に関する指示信号が与えられた場合、前記アドレス判定手段の判定結果および前記条件設定手段のブレーク許可信号にかかわらず前記指示信号に応じて前記CPUコアにブレークを実行させることを特徴とする。
この発明によれば、CPUコアにブレークを実行させる条件として、キャッシュヒット/ミスを用いるか否かを設定することができる。
また、この発明にかかるプロセッサ制御方法は、CPUコアのブレークポイントに定められたアドレスと、前記CPUコアがアクセスするキャッシュのアドレスとの一致判定をおこなうアドレス判定工程と、前記アクセスによるキャッシュヒット/ミスを検出するキャッシュヒット/ミス検出工程と、前記アドレス判定工程によって判定された判定結果と、前記キャッシュヒット/ミス検出工程によって検出されたキャッシュヒット/ミスとに基づいて、前記CPUコアにブレークを実行させるブレーク信号を生成する生成工程と、を含むことを特徴とする。
この発明によれば、ブレークポイントに定められたアドレスにアクセスした際のキャッシュヒット/ミスを検出し、この検出結果を、CPUコアにブレークを実行させるか否かの判断基準として利用することができる。
本発明にかかるプロセッサおよびプロセッサ制御方法によれば、メモリ領域の不整合の場合の原因解析の容易化および処理速度の向上を、簡単な回路構成で実現することができるという効果を奏する。
以下に添付図面を参照して、この発明にかかるプロセッサおよびプロセッサ制御方法の好適な実施の形態を詳細に説明する。
(実施の形態1)
まず、実施の形態1について説明する。この実施の形態1で説明するプロセッサでは、キャッシュヒット/ミス発生時にCPUコアにデータブレークを実行させるように制御する。また、データブレークアドレス検出や、キャッシュヒット/ミス発生など、どのような条件でデータブレークをおこなうかを詳細に設定する機能を備えている。
(実施の形態1にかかるプロセッサの回路構成)
まず、この発明の実施の形態1にかかるプロセッサの回路構成について説明する。図1は、この発明の実施の形態1にかかるプロセッサの回路構成を示す説明図である。図1において、プロセッサ100は、CPUコア101と、データキャッシュ102と、データブレークアドレスレジスタ103と、比較器104と、条件設定回路105と、AND回路106とを含んで構成されている。
CPUコア101は、実行されているプログラムに応じてデータキャッシュ102の所定のデータアドレスにアクセスし、データを読み出す。このデータキャッシュ102へアクセスと同時に、CPUコア101は、アクセス先のデータアドレスの情報を比較器104へ出力する。
また、CPUコア101には、AND回路106からデータブレーク信号(0または1の2値)が入力される。CPUコア101は、データブレーク実行指示としてデータブレーク信号「1」が入力された場合にデータブレークを実行する。一方、CPUコア101に、AND回路106からデータブレーク信号「0」が入力された場合には、そのまま実行されているプログラムに応じた処理を継続する。
データキャッシュ102には、CPUコア101からの読み出し頻度の高いデータが高速に読み出し可能に保持されている。また、データキャッシュ102のデータは、それぞれ付与されたデータアドレスと対応させて保持されている。したがって、CPUコア101は、データアドレスを指定してデータキャッシュ102にアクセスをおこなうことで、所望のデータを読み出すことができる。
また、データキャッシュ102は、CPUコア101のアクセスによるデータの読み出しの成否をキャッシュヒット信号(0または1の2値)として条件設定回路105に出力する。具体的には、たとえば、CPUコア101が、アクセスしたデータアドレスから所望のデータを読み出せた場合を「キャッシュヒット」といい、CPUコア101が、アクセスしたデータアドレスに所望のデータが読み出せなかった、すなわちデータアドレスに保持されていなかった場合を「キャッシュミス」という。
上述の処理により、データキャッシュ102は、CPUコア101からのアクセスが「キャッシュヒット」となった場合、キャッシュヒット信号「1」を出力する。一方、データキャッシュ102は、CPUコア101からのアクセスが「キャッシュミス」の場合、キャッシュヒット信号「0」を出力する。なお、「キャッシュミス」の場合、CPUコア101は、不図示のメインメモリにアクセスして所望のデータを読み出す。
データブレークアドレスレジスタ103には、ブレークポイントとなるデータアドレスの情報が書き込まれている。ブレークポイントとは、プログラムの動作確認をおこなうために設けられた強制実行停止をおこなうコードである。また、データブレークアドレスレジスタ103に書き込まれているブレークポイントとなるデータアドレスの情報は、比較器104へ入力される。なお、データアドレスの情報は、上位プログラムによってデータブレークアドレスレジスタ103に書き込まれてもよいし、利用者によって個別に書き込まれてもよい。
比較器104は、CPUコア101から入力されたデータアドレスと、データブレークアドレスレジスタ103から入力されたブレークポイントとなるデータアドレスとを比較し一致判定信号(0または1の2値)を出力する。
具体的には、たとえば、比較器104は、比較内容、すなわちCPUコア101がアクセスしているデータアドレスと、ブレークポイントアドレスとが一致した場合にのみ、AND回路106へ一致判定信号として一致を表す「1」を出力し、一致しない場合は一致判定信号として不一致を表す「0」を出力する。
条件設定回路105は、データキャッシュ102から入力されたキャッシュヒット信号に応じてデータブレークの発生条件信号(0または1の2値)をAND回路106に出力する。この条件設定回路105は、セレクタ回路107,109と、NOT回路108とを含んで構成されている。
セレクタ回路107,109は、セレクタ端子Sに入力された信号によって表された番号の入力端子に入力された信号をそのまま出力する回路である。たとえば、入力端子0,1にそれぞれ信号が入力されている場合、セレクタ端子Sに「0」を表す信号が入力されると、セレクタ回路107,109は、入力端子0に入力された信号をそのまま出力する。
条件設定回路105は、上述のようなセレクタ回路107,109に個別に設定を施すことでデータキャッシュ102のキャッシュヒット/ミスの検出をデータブレーク実行の条件とするか、さらに、キャッシュヒット/ミスのいずれをデータブレーク実行の条件とするかなどを指定することができる。なお、条件設定回路105の設定内容とその動作についての詳細は後述する。
AND回路106は、比較器104からの一致判定信号と、条件設定回路105からのブレーク実行許可信号と、ブレークイネーブル信号とが入力され、入力された信号に応じてCPUコア101へデータブレーク信号を出力する。
具体的には、たとえば、AND回路106は、入力された信号がすべて「1」の場合にのみCPUコア101にデータブレーク信号「1」を出力する。したがって、入力された信号に1つでも「0」がある場合は、データブレーク信号は「0」を出力する。
(実施の形態1のプロセッサのデータブレーク実行設定と動作)
つぎに、実施の形態1のプロセッサ100におけるデータブレーク実行設定と動作について説明する。上述したように、プロセッサ100は、どのような条件でデータブレークを実行するかを設定することができる。具体的な設定は、条件設定回路105およびAND回路106によっておこなわれる。
まず、条件設定回路105における設定は、セレクタ回路107,109によっておこなわれる。セレクタ回路109にはセレクタ端子Sに第1制御ビット(0または1の2値)が入力され、第1制御ビットの値に応じてデータキャッシュ102におけるキャッシュヒット/ミスをデータブレーク実行の条件とするか否かを設定することができる。
具体的には、たとえば、データキャッシュ102におけるキャッシュヒット/ミスをデータブレーク実行の条件とする場合は、第1制御ビットとしてセレクタ回路109のセレクタ端子Sに「1」を入力する。一方、データキャッシュ102におけるキャッシュヒット/ミスをデータブレーク実行の条件としない場合は、第1制御ビットとしてセレクタ回路109のセレクタ端子Sに「0」を入力する。
また、セレクタ回路107にはセレクタ端子Sに第2制御ビット(0または1の2値)が入力され、データキャッシュ102における「キャッシュヒット」をデータブレーク実行の条件とするか、「キャッシュミス」をデータブレーク実行の条件とするかを設定することができる。
具体的には、たとえば、データキャッシュ102における「キャッシュヒット」をデータブレーク実行の条件とする場合は、第2制御ビットとしてセレクタ回路107のセレクタ端子Sに「1」を入力する。一方、データキャッシュ102における「キャッシュミス」をデータブレーク実行の条件とする場合は、第2制御ビットとしてセレクタ回路107のセレクタ端子Sに「0」を入力する。
また、AND回路106における設定は、ブレークイネーブル信号によっておこなわれる。ブレークイネーブル信号は、CPUコア101のデータブレーク実行を許可するか禁止するかを設定することができる。
具体的には、たとえば、CPUコア101のデータブレーク実行を許可する場合は、AND回路106にブレークイネーブル信号「1」が入力される。一方、CPUコア101のデータブレーク実行を禁止する場合は、AND回路106にブレークイネーブル信号「0」が入力される。
以上説明したような各設定をおこなうことで、たとえば下記のようにデータブレーク実行を制御することができる。
<第1制御ビット=0の場合>
このような場合、セレクタ回路109のセレクタ端子Sに第1制御ビットとして「0」を入力しているため、セレクタ回路107から入力される信号(0または1の2値)の値にかかわらず、セレクタ回路109はブレーク実行許可信号「1」を出力する。したがって、データキャッシュ102のキャッシュヒット/ミスにかかわらずデータアドレスの一致によりCPUコア101においてデータブレークを実行することができる。
<第1制御ビット=1かつ第2制御ビット=0>
このような場合、セレクタ回路107のセレクタ端子Sには、第2制御ビットとして「0」を入力されている。ここで、データキャッシュ102からキャッシュヒット信号としてキャッシュミスを表す「0」が出力されると、セレクタ回路107の入力端子1には「0」が入力され、入力端子0にはNOT回路108によって反転された「1」が入力されると、セレクタ回路107は、出力信号(0または1の2値)「1」を出力する。
また、セレクタ回路109のセレクタ端子Sには第1制御ビットとして「1」が入力されており、入力端子1にはセレクタ回路107から「1」が入力されていることから、セレクタ回路109はブレーク実行許可信号「1」を出力する。したがって、データキャッシュ102の「キャッシュミス」かつデータアドレスの一致によりCPUコア101によってデータブレークを実行することができる。
<第1制御ビット=1かつ第2制御ビット=1>
このような場合、セレクタ回路107のセレクタ端子Sには、第2制御ビットとして「1」を入力されている。ここで、データキャッシュ102からキャッシュヒット信号としてキャッシュヒットを表す「1」が出力されると、セレクタ回路107の入力端子1には「1」が入力される。一方、入力端子0にはNOT回路108によって反転された「0」が入力される。したがって、セレクタ回路107は、出力信号「1」を出力する。
また、セレクタ回路109のセレクタ端子Sには第1制御ビットとして「1」が入力されており、入力端子1にはセレクタ回路107から「1」が入力されていることから、セレクタ回路109はブレーク実行許可信号「1」を出力する。したがって、データキャッシュ102の「キャッシュヒット」かつデータアドレスの一致によりCPUコア101によってデータブレークを実行することができる。
なお、条件設定回路105に入力される第1制御ビットおよび第2制御ビットと、AND回路106に入力されるブレークイネーブル信号とは、あらかじめ不図示のレジスタに設定された値を用いる。レジスタへの設定は、上位プログラムによって自動的におこなってもよいし、利用者が個別におこなってもよい。
以上説明したように実施の形態1のプロセッサは、制御ビットやブレークイネーブル信号を用いてCPUコア101のデータブレーク実行の条件を個別に設定することができる。
(実施の形態2)
つぎに、実施の形態2について説明する。この実施の形態2で説明するプロセッサでは、キャッシュヒット/ミス発生時に、CPUコアに命令ブレークを実行させるように制御する。また、データブレークアドレス検出や、キャッシュヒット/ミス発生など、どのような条件で命令ブレークをおこなうかを詳細に設定する機能を備えている。
(実施の形態2にかかるプロセッサの回路構成)
まず、この発明の実施の形態2にかかるプロセッサの回路構成について説明する。図2は、この発明の実施の形態2にかかるプロセッサの回路構成を示す説明図である。図2において、プロセッサ200は、CPUコア201と、インストラクション(命令)キャッシュ202と、命令ブレークアドレスレジスタ203と、比較器204と、条件設定回路205と、AND回路206とを含んで構成されている。
CPUコア201は、実行されているプログラムに応じてインストラクションキャッシュ202の所定の命令アドレスにアクセスし、命令を読み出す。このインストラクションキャッシュ202へアクセスと同時に、CPUコア201は、アクセス先の命令アドレスの情報を比較器204へ出力する。
また、CPUコア201には、AND回路206から命令ブレーク信号(0または1の2値)が入力される。CPUコア201は、命令ブレーク実行指示として命令ブレーク信号「1」が入力された場合に命令ブレークを実行する。一方、CPUコア201に、AND回路206から命令ブレーク信号「0」が入力された場合には、そのまま実行されているプログラムに応じた処理を継続する。
インストラクションキャッシュ202には、CPUコア201の読み出し頻度の高い命令が高速に読み出し可能に保持されている。また、インストラクションキャッシュ202の命令は、それぞれ付与されたデータアドレスと対応させて保持されている。したがって、CPUコア201は、命令アドレスを指定してインストラクションキャッシュ202にアクセスをおこなうことで、所望の命令を読み出すことができる。
また、インストラクションキャッシュ202、実施の形態1のデータキャッシュ102と同様にCPUコア201のアクセスによるデータの読み出しの成否をキャッシュヒット信号(0または1の2値)として条件設定回路205に出力する。また「キャッシュミス」の場合も同様に、CPUコア201は、不図示のメインメモリにアクセスして所望の命令を読み出す。
命令ブレークアドレスレジスタ203には、ブレークポイントとなる命令アドレスの情報が書き込まれており、ブレークポイントとなる命令アドレスの情報は、比較器104に入力される。なお、命令アドレスの情報は、上位プログラムによって命令ブレークアドレスレジスタ203に書き込まれてもよいし、利用者によって個別に書き込まれてもよい。
比較器204は、CPUコア201から入力された命令アドレスと、命令ブレークアドレスレジスタ203から入力されたブレークポイントとなる命令アドレスとを比較し一致判定信号を出力する。
条件設定回路205は、インストラクションキャッシュ202から入力されたキャッシュヒット信号に応じて命令ブレークのブレーク実行許可信号をAND回路206に出力する。この条件設定回路205は、セレクタ回路207,209と、NOT回路208とを含んで構成されている。セレクタ回路207,209およびNOT回路208の機能は、実施の形態1のセレクタ回路107,109およびNOT回路108と同様であるため説明を省略する。
条件設定回路205は、上述のようなセレクタ回路207,209に個別に設定を施すことでインストラクションキャッシュ202のキャッシュヒット/ミスの検出を命令ブレーク実行の条件とするか、さらに、キャッシュヒット/ミスのいずれを命令ブレーク実行の条件とするかなどを指定することができる。なお、条件設定回路205の設定内容とその動作についての詳細は後述する。
AND回路206は、比較器204からの一致判定信号と、条件設定回路205からのブレーク実行許可信号と、ブレークイネーブル信号とが入力され、入力された信号に応じてCPUコア201へ命令ブレーク信号を出力する。
(実施の形態2のプロセッサの命令ブレーク実行設定と動作)
つぎに、実施の形態2のプロセッサ200における命令ブレーク実行設定と動作について説明する。上述したように、プロセッサ200は、どのような条件で命令ブレークを実行するかを設定することができる。具体的な設定は、条件設定回路205およびAND回路206によっておこなわれる。
まず、条件設定回路205における設定は、セレクタ回路207,209によっておこなわれる。なお、条件設定回路205における命令ブレーク実行の条件回路の設定は、実施の形態1の条件設定回路105におけるデータブレーク実行の条件回路の設定の際のセレクタ回路107,109および制御ビットと同一であるため説明を省略する。
また、AND回路206における設定も実施の形態1同様、ブレークイネーブル信号によっておこなわれる。ブレークイネーブル信号は、CPUコア201の命令ブレーク実行を許可するか禁止するかを設定することができる。
具体的には、たとえば、CPUコア201の命令ブレーク実行を許可する場合は、AND回路206にブレークイネーブル信号「1」が入力される。一方、CPUコア201の命令ブレーク実行を禁止する場合は、AND回路206にブレークイネーブル信号「0」が入力される。
以上説明したような各設定をおこなうことで、たとえば下記のように命令ブレーク実行を制御することができる。
<第1制御ビット=0の場合>
このような場合、セレクタ回路209のセレクタ端子Sには、第1制御ビットとして「0」を入力されるため、セレクタ回路207から入力される信号の値にかかわらず、セレクタ回路209はブレーク実行許可信号「1」を出力する。したがって、インストラクションキャッシュ202のキャッシュヒット/ミスにかかわらず命令アドレスの一致によりCPUコア201によって命令ブレークを実行することができる。
<第1制御ビット=1かつ第2制御ビット=0>
このような場合、セレクタ回路207のセレクタ端子Sには、第2制御ビットとして「0」を入力されている。ここで、インストラクションキャッシュ202からキャッシュヒット信号としてキャッシュミスを表す「0」が出力されると、セレクタ回路207の入力端子1には「0」が入力され、入力端子0にはNOT回路208によって反転された「1」が入力されると、セレクタ回路207は、出力信号「1」を出力する。
また、セレクタ回路209のセレクタ端子Sには第1制御ビットとして「1」が入力されており、入力端子1にはセレクタ回路207から「1」が入力されていることから、セレクタ回路209はブレーク実行許可信号「1」を出力する。したがって、インストラクションキャッシュ202の「キャッシュミス」かつ命令アドレスの一致によりCPUコア201によって命令ブレークを実行することができる。
<第1制御ビット=1かつ第2制御ビット=1>
このような場合、セレクタ回路207のセレクタ端子Sには、第2制御ビットとして「1」を入力されている。ここで、インストラクションキャッシュ202からキャッシュヒット信号としてキャッシュヒットを表す「1」が出力されると、セレクタ回路207の入力端子1には「1」が入力される。一方、入力端子0にはNOT回路208によって反転された「0」が入力される。したがって、セレクタ回路207は、出力信号「1」を出力する。
また、セレクタ回路209のセレクタ端子Sには第1制御ビットとして「1」が入力されており、入力端子1にはセレクタ回路207から「1」が入力されていることから、セレクタ回路209はブレーク実行許可信号「1」を出力する。したがって、インストラクションキャッシュ202の「キャッシュヒット」かつ命令アドレスの一致によりCPUコア201によって命令ブレークを実行することができる。
なお、条件設定回路205に入力される第1制御ビットおよび第2制御ビットと、AND回路206に入力されるブレークイネーブル信号とは、あらかじめ不図示のレジスタに設定された値を用いる。レジスタへの設定は、上位プログラムによって自動的におこなってもよいし、利用者が個別におこなってもよい。
以上説明したように実施の形態2のプロセッサ200は、制御ビットやブレークイネーブル信号を用いてCPUコア201の命令ブレーク実行の条件を個別に設定することができる。
(実施の形態3)
つぎに、実施の形態3について説明する。この実施の形態3で説明するプロセッサでは、コピーバックモードを備えたデータキャッシュにCPUコアがアクセスする。このようなプロセッサにおいてもキャッシュヒット/ミス発生時に、CPUコアにデータブレークを実行させる。また、データブレークアドレス検出や、キャッシュヒット/ミス発生や、コピーバックモード特有のデータキャッシュのライン状態など、どのような条件で命令ブレークをおこなうかを詳細に設定する機能を備えている。
(実施の形態3にかかるプロセッサの回路構成)
まず、この発明の実施の形態3にかかるプロセッサの回路構成について説明する。図3は、この発明の実施の形態3にかかるプロセッサの回路構成を示す説明図である。図3において、プロセッサ300は、CPUコア301と、データキャッシュ302と、ブレークアドレスレジスタ303と、比較器304と、条件設定回路305と、AND回路306と、を含んで構成される。
なお、上記の構成のうち、CPUコア301、ブレークアドレスレジスタ303、比較器304およびAND回路306は、実施の形態1のプロセッサ100(図1参照)の、CPUコア101、データブレークアドレスレジスタ103、比較器104およびAND回路106と同一の機能を有するため、説明を省略する。
データキャッシュ302は、実施の形態1のデータキャッシュ102と同様にCPUコア301の読み出し頻度の高いデータが高速に読み出し可能に保持されている。また、データキャッシュ302のデータは、それぞれ付与されたデータアドレスと対応させて保持されている。
また、データキャッシュ302は、コピーバックモードによって動作するキャッシュである。コピーバックモードとは、CPUコア301のアクセスによってデータキャッシュ302に書き換えがおこなわれた場合に、書き換え指示があるまでメインメモリにはデータキャッシュ302の書き換え内容を反映させない処理である。データキャッシュ302の書き換えのたびにメインメモリへの書き換えをおこなう必要がないため、処理速度を向上させることができる。
上述したように、データキャッシュ302は、コピーバックモードによって動作するため、CPUコア301からのアクセスのキャッシュヒット/ミスを表すキャッシュヒット信号に加えて、データキャッシュ302内のデータブロックのライン状態を表すライン状態信号(0または1の2値)を出力する。
また、データブロックのライン状態には、ダーティ(状態)と、クリーン(状態)との2つの状態が存在する。ダーティは、データアドレスごとに保持された各データがCPUコア301のアクセスによって書き換えられている状態を表す。一方、クリーンは、CPUコア301のアクセスによって書き換えられていない、すなわち、メインメモリから読み出した内容がそのまま保持されている状態を表す。
したがって、データキャッシュ302は、ライン状態に応じたライン状態信号を条件設定回路305に出力する。ここで、データキャッシュ302がクリーンであればライン状態信号「0」を出力し、データキャッシュ302がダーティであればライン状態信号「1」を出力する。なお、コピーバックモードにおけるデータキャッシュ302の振る舞いについては、図4,5を用いて詳しく後述する。
条件設定回路305は、データキャッシュ302から入力されたキャッシュヒット信号と、ライン状態信号とに応じてデータブレークのブレーク実行許可信号をAND回路306に出力する。この条件設定回路305は、セレクタ回路307,309と、NOT回路308と、AND回路310,311とを含んで構成されている。
セレクタ回路309は、実施の形態1のセレクタ回路109と同じ動作をおこなうが、セレクタ回路307は、4つの入力端子(1〜4)を備えているため、セレクタ端子Sには、1〜4を表す2ビットの2値の第2制御ビットが入力される。
具体的には、たとえば、セレクタ端子Sに入力される第2制御ビットは“00=1”,“01=1”,“10=2”,“11=3”の4種類である。セレクタ回路307は、第2制御ビットによって指定された値の入力端子に入力されている信号をそのまま出力する。
また、AND回路310,311の動作は、AND回路306と同様に、入力された信号がすべて「1」の場合にのみ、「1」を出力し、NOT回路308は、入力された信号を反転して出力する。
条件設定回路305は、上述のようなセレクタ回路307,309に個別に設定を施すことでデータキャッシュ302のキャッシュヒット/ミスの検出をデータブレーク実行の条件とするか、ダーティもしくはクリーンのいずれの状態でのキャッシュヒットをデータブレーク実行の条件とするか、さらに、キャッシュヒット/ミスのいずれかをデータブレーク実行の条件とするかなどを指定することができる。なお、条件設定回路305の設定内容とその動作についての詳細については後述する。
(コピーバックモードにおけるデータキャッシュの振る舞い)
ここで、コピーバックモードにおけるデータキャッシュ302の振る舞いについて説明する。まず、コピーバックモードにおけるデータキャッシュ302の状態の遷移について説明する。
図4は、コピーバックモードにおけるデータキャッシュの状態を示す状態遷移図である。図4のようにコピーバックをおこなうキャッシュは、CPUコアからの指示に応じて「キャッシュミス」、「クリーン」、「ダーティ」の3つの状態を遷移する。データキャッシュ302は、データヒットすることが前提とはいえ、実際の運用時にはキャッシュミスの頻繁に発生し、図4の3つの状態の間を頻繁に遷移していることとなる。
<キャッシュミス状態からの遷移>
図4のように、データキャッシュ302は、リセット(S401)されることで、キャッシュミス状態となる。このキャッシュミス状態のデータキャッシュ302にCPUコア301からのアクセスによってデータのリード(読み出し)のキャッシュミスが生じると(S402)、メインメモリから読み出したデータがデータキャッシュ302に書き込まれる。したがって、データキャッシュ302は、メインメモリから新たなデータが取り込まれたままであるため、クリーン状態となる。
また、キャッシュミス状態のデータキャッシュ302にCPUコア301からのアクセスによってデータのライト(書き込み)のキャッシュミスが生じると(S403)、CPUコア301からデータキャッシュ302に新たなデータが書き込まれる。したがって、データキャッシュ302は、メインメモリから取り込まれたデータに新たなデータが書き込まれたため、ダーティ状態となる。
<クリーン状態からの遷移>
また、クリーン状態のデータキャッシュ302にCPUコア301からのアクセスによってデータのリード(読み出し)のキャッシュミスが生じると(S404)、メインメモリから読み出したデータがデータキャッシュ302に書き込まれる。したがって、データキャッシュ302は、メインメモリから新たなデータが取り込まれたままであるため、引き続きクリーン状態となる。
また、クリーン状態のデータキャッシュ302にCPUコア301からのアクセスによってデータのリード(読み出し)のキャッシュヒットが生じると(S405)、データキャッシュ302に保持されているデータが読み出される。したがって、データキャッシュ302は、メインメモリから新たなデータが取り込まれたままであるため、引き続きクリーン状態となる。
また、クリーン状態のデータキャッシュ302にCPUコア301からのアクセスによってデータのライト(書き込み)のキャッシュヒットが生じると(S406)、CPUコア301からデータキャッシュ302に新たなデータが書き込まれる。したがって、データキャッシュ302は、メインメモリから取り込まれたデータに新たなデータが書き込まれたため、ダーティ状態となる。
<ダーティ状態からの遷移>
また、クリーン状態のデータキャッシュ302にCPUコア301からのアクセスによってデータのリード(読み出し)/ライト(書き込み)のキャッシュヒットが生じると(S407)、データキャッシュ302の読み出し、もしくは書き込みがおこなわれる。しかしながら、データキャッシュ302は、すでにダーティ状態であるため、リード/ライトにかかわらず、引き続きダーティ状態となる。
また、クリーン状態のデータキャッシュ302にCPUコア301からのアクセスによってデータのライト(書き込み)のキャッシュミスが生じると(S408)、CPUコア301からデータキャッシュ302に新たなデータが書き込まれる。この処理においても、データキャッシュ302は、新たなデータが書き込まれるが、すでにダーティ状態であるため、引き続きダーティ状態となる。
また、クリーン状態のデータキャッシュ302にCPUコア301から専用命令によってキャッシュフラッシュがおこなわれると(S409)、データキャッシュ302は、指定されたデータアドレスに保持されているデータをメインメモリに書き写して消去する。したがって、データキャッシュ302は、クリーン状態となる。
つぎに、コピーバックモードによるデータキャッシュ302の動作について説明する。図5は、コピーバックモードにおけるCPUコアの動作とメインメモリの内容との関係を示す説明図である。図5において、左半分はプロセッサ300のCPUコア301の動作を表し、右半分はCPUコア301がアクセスしたデータキャッシュ302のデータアドレス(アドレスA)の内容が保持されているメインメモリのアドレスAの内容を表している。
たとえば、プロセッサ300が、データキャッシュ302の同じデータアドレス(アドレスA)に値X〜Zを書き込み、書き込んだ内容をDMAなど外部のコアによって出力させる場合、図5のように、まず、値Xについて、アドレスAに値Xを書き込み(ステップS501)、データキャッシュ302をフラッシュし(ステップS502)、DMAを起動してアドレスAの内容を出力する(ステップS503)という処理をおこなう。
続いて、値Yについて、アドレスAに値Yを書き込み(ステップS504)、データキャッシュ302をフラッシュし(ステップS505)、DMAを起動してアドレスAの内容を出力する(ステップS506)という処理をおこなう。
最後に、値Zについて、アドレスAに値Zを書き込み(ステップS507)、データキャッシュ302をフラッシュし(ステップS508)、DMAを起動してアドレスAの内容を出力する(ステップS509)という処理をおこなう。
また、上述したCPUコア301における値Xのデータキャッシュ302のフラッシュ処理(ステップS502)によって、メインメモリのアドレスAの保持内容はXとなり(ステップS512)、値Yのデータキャッシュ302のフラッシュ処理(ステップS505)によって、メインメモリのアドレスAの保持内容はYとなり(ステップS515)、値Zのデータキャッシュ302のフラッシュ処理(ステップS508)によって、メインメモリのアドレスAの保持内容はZとなる(ステップS518)。
すなわち、図5に示したCPUコア動作とアドレスの内容との関係のように、データキャッシュ302は、コピーバックモードで動作し、CPUコア301が書き込んだ内容を正しく出力させるためには、DMAなどの外部のコアが起動する前にデータキャッシュ302の内容をフラッシュし、メインメモリに書き換える必要がある。
DMAなどの外部のコアが起動する前にデータキャッシュ302の内容をフラッシュするには、データキャッシュ302がダーティ状態でデータヒットされた状態をいち早く検出して、ブレークを実行させればよい。したがって、プロセッサ300は、ブレーク実行の状態として、ダーティ状態のデータヒットを設定することができる。また、データキャッシュ302とメインメモリとの不整合が発生した場合の解析処理を容易にするため、ダーティ状態のデータヒットのみならず、クリーン状態のデータヒットをブレーク実行の条件として設定することができる。
(実施の形態3のプロセッサのデータブレーク実行設定と動作)
つぎに、実施の形態3のプロセッサ300におけるデータブレーク実行設定と動作について説明する。上述したように、プロセッサ300は、どのような条件でデータブレークを実行するかを設定することができる。具体的な設定は、条件設定回路305およびAND回路306によっておこなわれる。
まず、条件設定回路305における設定は、セレクタ回路307,309によっておこなわれる。セレクタ回路309にはセレクタ端子Sに第1制御ビットが入力され、第1制御ビットの値に応じてデータキャッシュ302におけるキャッシュヒット/ミスをデータブレーク実行の条件とするか否かを設定することができる。
具体的には、たとえば、データキャッシュ302におけるキャッシュヒット/ミスをデータブレーク実行の条件とする場合は、第1制御ビットとしてセレクタ回路309のセレクタ端子Sに「1」を入力する。一方、データキャッシュ302におけるキャッシュヒット/ミスをデータブレーク実行の条件としない場合は、第1制御ビットとしてセレクタ回路309のセレクタ端子Sに「0」を入力する。
また、セレクタ回路307にはセレクタ端子Sに2ビットの第2制御ビットが入力され、以下のデータブレーク実行の条件を設定することができる。
・データキャッシュ302における「キャッシュヒット」(第2制御ビット=11)
・データキャッシュ302における「キャッシュミス」 (第2制御ビット=00)
・ライン状態がダーティの場合の「キャッシュヒット」 (第2制御ビット=01)
・ライン状態がクリーンの場合の「キャッシュヒット」 (第2制御ビット=10)
具体的には、たとえば、データキャッシュ302における「キャッシュヒット」をデータブレーク実行の条件とする場合は、第2制御ビットとしてセレクタ回路307のセレクタ端子Sに「11」が入力される。一方、データキャッシュ302における「キャッシュミス」をデータブレーク実行の条件とする場合は、第2制御ビットとしてセレクタ回路107のセレクタ端子Sに「00」が入力される。
さらに、ライン状態がダーティで「キャッシュヒット」をデータブレーク実行の条件とする場合は、第2制御ビットとしてセレクタ回路307のセレクタ端子Sに「01」が入力され、ライン状態がクリーンで「キャッシュヒット」をデータブレーク実行の条件とする場合は、第2制御ビットとしてセレクタ回路307のセレクタ端子Sに「10」が入力される。
また、AND回路306における設定は、ブレークイネーブル信号によっておこなわれる。ブレークイネーブル信号は、CPUコア301のデータブレーク実行を許可するか禁止するかを設定することができる。
具体的には、たとえば、CPUコア301のデータブレーク実行を許可する場合は、AND回路306にブレークイネーブル信号「1」が入力される。一方、CPUコア301のデータブレーク実行を禁止する場合は、AND回路306にブレークイネーブル信号「0」が入力される。
以上説明したような各設定をおこなうことで、たとえば下記のようにデータブレーク実行を制御することができる。
<第1制御ビット=0の場合>
このような場合、セレクタ回路309のセレクタ端子Sには、第1制御ビットとして「0」が入力されるため、セレクタ回路307から入力される信号の値にかかわらず、セレクタ回路309はブレーク実行許可信号「1」を出力する。したがって、データキャッシュ302のキャッシュヒット/ミスにかかわらずデータアドレスの一致によりCPUコア301によってデータブレークを実行することができる。
<第1制御ビット=1かつ第2制御ビット=00>
このような場合、セレクタ回路307のセレクタ端子Sには、第2制御ビットとして「00」が入力される。ここで、データキャッシュ302からキャッシュヒット信号としてキャッシュミスを表す「0」が出力されると、セレクタ回路307の入力端子3と、AND回路310,311と、NOT回路308に「0」が入力される。
上述のように、セレクタ回路307は、第2制御ビット「00」が入力されているため、入力端子0に入力された信号を出力する。入力端子0にはNOT回路308に入力された信号の反転信号が入力されるため、セレクタ回路307は、セレクタ回路309に「1」を出力する。
また、セレクタ回路309のセレクタ端子Sには第1制御ビットとして「1」が入力されており、入力端子1にはセレクタ回路307から「1」が入力されていることから、セレクタ回路309はブレーク実行許可信号「1」を出力する。したがって、ライン状態にかかわらず、データキャッシュ302の「キャッシュミス」かつデータアドレスの一致によりCPUコア301によってデータブレークを実行することができる。
<第1制御ビット=1かつ第2制御ビット=01>
このような場合、セレクタ回路307のセレクタ端子Sには、第2制御ビットとして「01」が入力される。ここで、データキャッシュ302からキャッシュヒット信号としてキャッシュヒットを表す「1」が出力されると、セレクタ回路307の入力端子3と、AND回路310,311と、NOT回路308に「1」が入力される。
また、データキャッシュ302からダーティを表すライン状態信号「1」が出力されると、AND回路311には「1」が入力され、AND回路310には反転された「0」が入力される。上述のように、セレクタ回路307は、第2制御ビット「01」が入力されているため、入力端子1に入力された信号を出力する。入力端子1にはAND回路311から出力された信号が入力されている。AND回路311は、キャッシュヒット信号「1」、ライン状態信号「1」が入力されていることから「1」を出力する。したがって、セレクタ回路309に「1」が入力される。
また、セレクタ回路309のセレクタ端子Sには第1制御ビットとして「1」が入力されており、入力端子1にはセレクタ回路307から「1」が入力されていることから、セレクタ回路309はブレーク実行許可信号「1」を出力する。したがって、ライン状態がダーティのデータキャッシュ302の「キャッシュミス」かつデータアドレスの一致の状態であればCPUコア301によってデータブレークを実行することができる。
<第1制御ビット=1かつ第2制御ビット=10>
このような場合、セレクタ回路307のセレクタ端子Sには、第2制御ビットとして「10」が入力される。ここで、データキャッシュ302からキャッシュヒット信号としてキャッシュヒットを表す「1」が出力されると、セレクタ回路307の入力端子3と、AND回路310,311と、NOT回路308に「1」が入力される。
また、データキャッシュ302からクリーンを表すライン状態信号「0」が出力されると、AND回路311には「0」が入力され、AND回路310には反転された「1」が入力される。上述のように、セレクタ回路307は、第2制御ビット「10」が入力されているため、入力端子2に入力された信号を出力する。入力端子2にはAND回路310から出力された信号が入力されている。AND回路310は、キャッシュヒット信号「1」、ライン状態信号「0」の反転信号「1」が入力されていることから「1」を出力する。したがって、セレクタ回路309に「1」が入力される。
また、セレクタ回路309のセレクタ端子Sには第1制御ビットとして「1」が入力されており、入力端子1にはセレクタ回路307から「1」が入力されていることから、セレクタ回路309はブレーク実行許可信号「1」を出力する。したがって、ライン状態がクリーンのデータキャッシュ302の「キャッシュミス」かつデータアドレスの一致の状態であればCPUコア301によってデータブレークを実行することができる。
<第1制御ビット=1かつ第2制御ビット=11>
このような場合、セレクタ回路307のセレクタ端子Sには、第2制御ビットとして「11」が入力される。ここで、データキャッシュ302からキャッシュヒット信号としてキャッシュヒットを表す「1」が出力されると、セレクタ回路307の入力端子3と、AND回路310,311と、NOT回路308に「1」が入力される。
上述のように、セレクタ回路307は、第2制御ビット「11」が入力されているため、入力端子3に入力された信号を出力する。入力端子3にはデータキャッシュ302から直接キャッシュヒット信号「1」が入力されるため、セレクタ回路307は、セレクタ回路309に「1」を出力する。
また、セレクタ回路309のセレクタ端子Sには、第1制御ビットとして「1」が入力されており、入力端子1にはセレクタ回路307から「1」が入力されていることから、セレクタ回路309は、ブレーク実行許可信号「1」を出力する。したがって、ライン状態にかかわらず、データキャッシュ302の「キャッシュヒット」かつデータアドレスの一致によりCPUコア301によってデータブレークを実行することができる。
なお、条件設定回路305に入力される第1制御ビットおよび第2制御ビットと、AND回路306に入力されるブレークイネーブル信号とは、あらかじめ不図示のレジスタに設定された値を用いる。レジスタへの設定は、上位プログラムによって自動的におこなってもよいし、利用者が個別におこなってもよい。
以上説明したように実施の形態3のプロセッサ300は、制御ビットやブレークイネーブル信号に加えて、コピーバックモードのライン状態信号を用いてCPUコア101のデータブレーク実行の条件を個別に設定することができる。
以上説明したように、プロセッサおよびプロセッサ制御方法によれば、ブレーク実行条件を個別に設定する機能を備えているため、メモリ領域の不整合の原因解析が容易であり、かつ設定したブレーク実行条件以外であれば通常の処理速度を保持することができる。
以上のように、本発明にかかるプロセッサおよびプロセッサ制御方法は、メモリ領域に複数のコアからアクセスがおこなわれるようなハードウェアに有用であり、特に、高速な処理が必要とされるデジタルAV機器やイメージング機器に搭載するプロセッサに適している。
この発明の実施の形態1にかかるプロセッサの回路構成を示す説明図である。 この発明の実施の形態2にかかるプロセッサの回路構成を示す説明図である。 この発明の実施の形態3にかかるプロセッサの回路構成を示す説明図である。 コピーバックモードにおけるデータキャッシュの状態を示す状態遷移図である。 コピーバックモードにおけるCPUコアの動作とメインメモリの内容との関係を示す説明図である。 複数のコアが同じメモリ領域にアクセスした場合に生じる不整合を模式的に示す説明図である。
符号の説明
100,200,300 プロセッサ
101,201,301 CPUコア
102,302 データキャッシュ
103,303 データブレークアドレスレジスタ
104,204,304 比較器
105,205,305 条件設定回路
106,206,306,310,311 AND回路
107,109,207,209,307,309 セレクタ回路
108,208,308 NOT回路
202 インストラクションキャッシュ
203 命令ブレークアドレスレジスタ

Claims (9)

  1. CPUコアのブレークポイントに定められたアドレスと、前記CPUコアがアクセスするキャッシュのアドレスとの一致判定をおこなうアドレス判定手段と、
    前記アクセスによるキャッシュヒット/ミスを検出するキャッシュヒット/ミス検出手段と、
    前記アドレス判定手段によって判定された判定結果と、前記キャッシュヒット/ミス検出手段によって検出されたキャッシュヒット/ミスとに基づいて、前記CPUコアにブレークを実行させるブレーク信号を生成する生成手段と、
    を備えることを特徴とするプロセッサ。
  2. 前記CPUコアにブレークを実行させる条件が設定されており、当該条件と前記キャッシュヒット/ミス検出手段によって検出されたキャッシュヒット/ミスとに基づいて、ブレークを許可するブレーク許可信号を前記生成手段に出力する条件設定手段を備え、
    前記生成手段は、
    前記アドレス判定手段によって判定された判定結果と、前記条件設定手段によって出力されたブレーク許可信号とに基づいて、前記ブレーク信号を生成することを特徴とする請求項1に記載のプロセッサ。
  3. 前記キャッシュのデータアドレスごとに保持されたデータが前記CPUコアのアクセスによって書き換えられた状態(以下、「ダーティ状態」という)か書き換えられていない状態(以下、「クリーン状態」という)かを検出する書換検出手段を備え、
    前記条件設定手段は、
    前記書換検出手段によって検出されたダーティ状態/クリーン状態に基づいて、前記ブレーク許可信号を前記生成手段に出力することを特徴とする請求項2に記載のプロセッサ。
  4. 前記条件設定手段は、前記キャッシュヒット/ミス検出手段によってキャッシュヒットが検出されると前記CPUコアにブレークを実行させる条件が設定されており、
    前記キャッシュヒット/ミス検出手段によってキャッシュヒットが検出された場合、前記ブレーク許可信号を出力し、前記キャッシュミスが検出された場合、前記ブレーク許可信号を出力しないことを特徴とする請求項2または3に記載のプロセッサ。
  5. 前記条件設定手段は、前記キャッシュヒット/ミス検出手段によってキャッシュミスが検出されると前記CPUコアにブレークを実行させる条件が設定されており、
    前記キャッシュヒット/ミス検出手段によってキャッシュミスが検出された場合、前記ブレーク許可信号を出力し、前記キャッシュヒットが検出された場合、前記ブレーク許可信号を出力しないことを特徴とする請求項2または3に記載のプロセッサ。
  6. 前記条件設定手段は、前記書換検出手段によってダーティ状態が検出されると前記CPUコアにブレークを実行させる条件が設定されており、
    前記書換検出手段によってダーティ状態が検出された場合、前記ブレーク許可信号を出力し、前記クリーン状態が検出された場合、前記ブレーク許可信号を出力しないことを特徴とする請求項3に記載のプロセッサ。
  7. 前記条件設定手段は、前記書換検出手段によってクリーン状態が検出されると前記CPUコアにブレークを実行させる条件が設定されており、
    前記書換検出手段によってクリーン状態が検出された場合、前記ブレーク許可信号を出力し、前記ダーティ状態が検出された場合、前記ブレーク許可信号を出力しないことを特徴とする請求項3に記載のプロセッサ。
  8. 前記生成手段は、
    前記CPUコアにブレークの実行の禁止/許可に関する指示信号が与えられた場合、前記アドレス判定手段の判定結果および前記条件設定手段のブレーク許可信号にかかわらず前記指示信号に応じて前記CPUコアにブレークを実行させることを特徴とする請求項1〜7に記載のプロセッサ。
  9. CPUコアのブレークポイントに定められたアドレスと、前記CPUコアがアクセスするキャッシュのアドレスとの一致判定をおこなうアドレス判定工程と、
    前記アクセスによるキャッシュヒット/ミスを検出するキャッシュヒット/ミス検出工程と、
    前記アドレス判定工程によって判定された判定結果と、前記キャッシュヒット/ミス検出工程によって検出されたキャッシュヒット/ミスとに基づいて、前記CPUコアにブレークを実行させるブレーク信号を生成する生成工程と、
    を含むことを特徴とするプロセッサ制御方法。
JP2006082741A 2006-03-24 2006-03-24 プロセッサおよびプロセッサ制御方法 Pending JP2007257441A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006082741A JP2007257441A (ja) 2006-03-24 2006-03-24 プロセッサおよびプロセッサ制御方法
US11/499,811 US20070226418A1 (en) 2006-03-24 2006-08-07 Processor and method for controlling processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006082741A JP2007257441A (ja) 2006-03-24 2006-03-24 プロセッサおよびプロセッサ制御方法

Publications (1)

Publication Number Publication Date
JP2007257441A true JP2007257441A (ja) 2007-10-04

Family

ID=38534934

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006082741A Pending JP2007257441A (ja) 2006-03-24 2006-03-24 プロセッサおよびプロセッサ制御方法

Country Status (2)

Country Link
US (1) US20070226418A1 (ja)
JP (1) JP2007257441A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009211630A (ja) * 2008-03-06 2009-09-17 Fujitsu Ltd デバッグ支援機構およびプロセッサシステム
JP2012178121A (ja) * 2011-02-28 2012-09-13 Nec Computertechno Ltd 情報処理装置及びエラー訂正支援方法
JP2019531542A (ja) * 2016-08-31 2019-10-31 エイアールエム リミテッド 処理回路素子に対するトリガ信号のアサーションを制御する装置及び方法
JP2021528780A (ja) * 2018-06-27 2021-10-21 マイクロソフト テクノロジー ライセンシング,エルエルシー 予約タグ・フィールド・ビットを使用するキャッシュ・ベースのブレークポイント・トレース/リプレイ(trace replay breakpoint)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9003118B2 (en) * 2009-01-09 2015-04-07 Dell Products L.P. Systems and methods for non-volatile cache control
US10185561B2 (en) 2015-07-09 2019-01-22 Centipede Semi Ltd. Processor with efficient memory access
US9575897B2 (en) * 2015-07-09 2017-02-21 Centipede Semi Ltd. Processor with efficient processing of recurring load instructions from nearby memory addresses
US10956325B2 (en) * 2016-12-12 2021-03-23 Intel Corporation Instruction and logic for flushing memory ranges in a distributed shared memory system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10154394A (ja) * 1996-11-21 1998-06-09 Toshiba Corp メモリ装置
US6862694B1 (en) * 2001-10-05 2005-03-01 Hewlett-Packard Development Company, L.P. System and method for setting and executing breakpoints

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009211630A (ja) * 2008-03-06 2009-09-17 Fujitsu Ltd デバッグ支援機構およびプロセッサシステム
JP2012178121A (ja) * 2011-02-28 2012-09-13 Nec Computertechno Ltd 情報処理装置及びエラー訂正支援方法
JP2019531542A (ja) * 2016-08-31 2019-10-31 エイアールエム リミテッド 処理回路素子に対するトリガ信号のアサーションを制御する装置及び方法
JP7026107B2 (ja) 2016-08-31 2022-02-25 アーム・リミテッド 処理回路素子に対するトリガ信号のアサーションを制御する装置及び方法
US11294787B2 (en) 2016-08-31 2022-04-05 Arm Limited Apparatus and method for controlling assertion of a trigger signal to processing circuitry
JP2021528780A (ja) * 2018-06-27 2021-10-21 マイクロソフト テクノロジー ライセンシング,エルエルシー 予約タグ・フィールド・ビットを使用するキャッシュ・ベースのブレークポイント・トレース/リプレイ(trace replay breakpoint)
JP7348919B2 (ja) 2018-06-27 2023-09-21 マイクロソフト テクノロジー ライセンシング,エルエルシー 予約タグ・フィールド・ビットを使用するキャッシュ・ベースのブレークポイント・トレース/リプレイ(trace replay breakpoint)

Also Published As

Publication number Publication date
US20070226418A1 (en) 2007-09-27

Similar Documents

Publication Publication Date Title
JP4094724B2 (ja) ソフトウェアをデバッグする際に例外を識別するための装置および方法
JP5419103B2 (ja) デバッグイベントを監視するためのシステム及び方法
JP2007257441A (ja) プロセッサおよびプロセッサ制御方法
US7533302B2 (en) Trace and debug method and system for a processor
US6857084B1 (en) Multiprocessor system and method for simultaneously placing all processors into debug mode
US7506205B2 (en) Debugging system and method for use with software breakpoint
TWI544410B (zh) 利用執行單步驟以進行編碼診斷
JPH06314213A (ja) デバッグ装置
US8037363B2 (en) Generation of trace elements within a data processing apparatus
JP2006309760A (ja) データプロセッサの異常動作を検出するためのモニタリング論理及びモニタリング方法
US20070226545A1 (en) Methods and systems for generating and storing computer program execution trace data
JP2008009721A (ja) 評価システム及びその評価方法
US7823019B2 (en) Debug circuitry
US7519865B1 (en) Systems and methods for identifying incomplete transactions
KR940003318B1 (ko) 캐시 메모리를 구비한 프로세서
JP6981920B2 (ja) 半導体装置、およびデバッグ方法
JP2007058450A (ja) 半導体集積回路
JP4806577B2 (ja) トレースデータ記録装置
JP2003281076A (ja) Dmaコントローラの不正アクセス検出装置、不正アクセス検出方法およびそのプログラム
JP2019531542A (ja) 処理回路素子に対するトリガ信号のアサーションを制御する装置及び方法
CN109087682B (zh) 全局存储器顺序检测***及方法
JP2007213131A (ja) マイクロプロセッサおよびメモリアクセスシステム
JPH0644098A (ja) メモリ・アクセス・バス・コンパレータ
CN115269309A (zh) 一种处理器微架构监测方法及装置
CN117290211A (zh) 计算机的***内存探测方法、装置、操作***及存储介质

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080730