特許第6874253号(P6874253)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アーム・リミテッドの特許一覧

特許6874253処理回路による命令実行を示すトレースストリームの生成及び処理を行う装置及び方法
<>
  • 特許6874253-処理回路による命令実行を示すトレースストリームの生成及び処理を行う装置及び方法 図000002
  • 特許6874253-処理回路による命令実行を示すトレースストリームの生成及び処理を行う装置及び方法 図000003
  • 特許6874253-処理回路による命令実行を示すトレースストリームの生成及び処理を行う装置及び方法 図000004
  • 特許6874253-処理回路による命令実行を示すトレースストリームの生成及び処理を行う装置及び方法 図000005
  • 特許6874253-処理回路による命令実行を示すトレースストリームの生成及び処理を行う装置及び方法 図000006
  • 特許6874253-処理回路による命令実行を示すトレースストリームの生成及び処理を行う装置及び方法 図000007
  • 特許6874253-処理回路による命令実行を示すトレースストリームの生成及び処理を行う装置及び方法 図000008
  • 特許6874253-処理回路による命令実行を示すトレースストリームの生成及び処理を行う装置及び方法 図000009
  • 特許6874253-処理回路による命令実行を示すトレースストリームの生成及び処理を行う装置及び方法 図000010
  • 特許6874253-処理回路による命令実行を示すトレースストリームの生成及び処理を行う装置及び方法 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6874253
(24)【登録日】2021年4月26日
(45)【発行日】2021年5月19日
(54)【発明の名称】処理回路による命令実行を示すトレースストリームの生成及び処理を行う装置及び方法
(51)【国際特許分類】
   G06F 9/30 20180101AFI20210510BHJP
   G06F 9/32 20060101ALI20210510BHJP
   G06F 9/38 20060101ALI20210510BHJP
   G06F 11/36 20060101ALI20210510BHJP
【FI】
   G06F9/30 350A
   G06F9/32 320A
   G06F9/32 330A
   G06F9/38 330X
   G06F11/36 136
【請求項の数】27
【全頁数】28
(21)【出願番号】特願2018-565866(P2018-565866)
(86)(22)【出願日】2016年9月13日
(65)【公表番号】特表2019-521436(P2019-521436A)
(43)【公表日】2019年7月25日
(86)【国際出願番号】GB2016052819
(87)【国際公開番号】WO2017220950
(87)【国際公開日】20171228
【審査請求日】2019年9月6日
(31)【優先権主張番号】1611012.4
(32)【優先日】2016年6月24日
(33)【優先権主張国】GB
(73)【特許権者】
【識別番号】504394342
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】特許業務法人浅村特許事務所
(72)【発明者】
【氏名】ギブズ、マイケル ジョン
(72)【発明者】
【氏名】ホーリー、ジョン マイケル
【審査官】 清木 泰
(56)【参考文献】
【文献】 特表2019−509576(JP,A)
【文献】 米国特許出願公開第2013/0013849(US,A1)
【文献】 米国特許出願公開第2010/0149185(US,A1)
【文献】 米国特許出願公開第2007/0283133(US,A1)
【文献】 Joseph Yui著,宇賀神孝,長尾和則訳,ARM Cortex-M3システム開発ガイド,CQ出版株式会社,2009年 6月15日,初版,pp.249〜259
【文献】 Cortex-M4 Devices Generic User Guide (ARM DUI 0553A),ARM,2010年12月16日,First release,pp.1-2〜1-4
【文献】 Vladmir Uzelec, et al.,Using Branch Predictors and Variable Encoding for On-the-Fly Program Tracing,IEEE TRANSACTIONS ON COMPUTERS,IEEE,2014年 4月,VOL.63, NO.4,pp.1008〜1020
【文献】 Timothy Sherwood, Brad Calder,Patchable Instruction ROM Architecture,Proceedings of CASES'01,米国,ACM,2001年11月16日,pp.24〜33
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30− 9/355
G06F 9/38
G06F11/07
G06F11/28−11/36
G06F11/22−11/277
G06F15/78
(57)【特許請求の範囲】
【請求項1】
処理回路によって実行される命令シーケンスを示す命令実行情報を処理回路から受け取る入力インタフェースであって、前記シーケンスには、前記シーケンス内の分岐未来命令の後に続く特定の命令を示す分岐未来命令が含まれ、該分岐未来命令の実行後に、前記処理回路が前記シーケンス内で前記特定の命令に遭遇した場合に、前記特定の命令は、処理回路に分岐未来命令によって特定されるターゲットアドレスへの分岐を行わせる、入力インタフェースと、
前記処理回路による前記シーケンス内の所定の命令の実行を示す複数のトレース要素を含むトレースストリームを前記命令実行情報から生成するトレース生成回路と、
前記分岐未来命令から生じる分岐制御情報を格納する分岐制御キャッシュと、を具備し、
前記トレース生成回路は、前記分岐制御キャッシュに格納された前記分岐制御情報に基づいて、前記処理回路がいつ特定の命令に遭遇したかを検出し、前記ターゲットアドレスへの分岐が生じたことを示すトレース要素を前記トレースストリーム内に発行するように構成されている、
ことを特徴とする装置。
【請求項2】
前記分岐制御キャッシュは、前記トレース生成回路に対応付けられ、前記トレース生成回路は、前記処理回路から受け取った前記命令実行情報に応じて前記分岐制御情報を記憶するよう構成されている、ことを特徴とする請求項1に記載の装置。
【請求項3】
前記命令実行情報が処理回路によって分岐未来命令が実行されたことを示す場合、前記トレース生成回路は、その分岐未来命令によって特定され、前記特定の命令を判定するのに用いられる分岐点データを前記分岐制御キャッシュ内に格納するように構成されている、ことを特徴とする請求項2に記載の装置。
【請求項4】
前記トレース生成回路は、前記処理回路がいつ前記特定の命令に遭遇したかを受け取った命令実行情報から検出し、その検出をすると前記ターゲットアドレスへの分岐が生じたことを示す前記トレース要素をトレースストリーム内に発行するために、前記分岐制御キャッシュに格納された前記分岐点データを参照するよう構成されている、ことを特徴とする請求項3に記載の装置。
【請求項5】
前記命令実行情報が前記処理回路によって前記分岐未来命令が実行されたことを示す場合、前記トレース生成回路は、前記分岐未来命令内で特定された即値からターゲットアドレスを直接導出可能かどうかを示すターゲットインジケータを前記分岐制御キャッシュに格納するように構成されている、ことを特徴とする請求項2〜4のいずれか一項に記載の装置。
【請求項6】
前記ターゲットインジケータが前記ターゲットアドレスは前記即値から直接導出可能ではないことを示す場合、前記トレース生成回路は、前記ターゲットアドレスへの分岐が生じたことを示すトレース要素に関連して、前記処理回路から受け取った前記命令実行情報から導き出したターゲットアドレスを示す指標を前記トレースストリーム内に発行するように構成されている、ことを特徴とする請求項5に記載の装置。
【請求項7】
前記トレース生成回路は、前記処理回路によって実行される命令シーケンスの一部を示すトレースストリームを生成するよう構成され、前記トレース要素はその部分に含まれる所定の命令に関連するものであり、
前記トレース生成回路は、前記関連する分岐未来命令が前記命令シーケンスの一部内にある場合にのみ前記分岐制御キャッシュに分岐制御情報を格納するよう構成されている、
ことを特徴とする請求項2〜6のいずれか一項に記載の装置。
【請求項8】
前記分岐制御キャッシュは、前記処理回路が使用する分岐制御情報を保持する処理回路分岐制御キャッシュとは別であり、前記処理回路が分岐未来命令の実行後に特定の命令に遭遇した場合、分岐未来命令によって特定されたターゲットアドレスへの分岐を処理回路に行わせる、ことを特徴とする請求項2〜7のいずれか一項に記載の装置。
【請求項9】
前記処理回路分岐制御キャッシュは、1つの分岐未来命令から導き出された分岐制御情報のみを記憶することが可能であり、前記トレース生成回路に対応する分岐制御キャッシュは、前記1つの分岐未来命令内で特定された即値からターゲットアドレスを直接導出可能かどうかを示すターゲットインジケータを格納し、前記分岐未来命令によって特定され、前記特定の命令を判定するのに用いられる分岐点データを格納しないように構成されている、ことを特徴とする、請求項5乃至8のいずれもが請求項3及び4のいずれにも従属していないところの請求項8に記載の装置。
【請求項10】
前記トレース生成回路は、前記処理回路分岐制御キャッシュに記憶される分岐制御情報に関連する特定の命令に遭遇したために、前記処理回路がターゲットアドレスへの分岐を行なったことを示す命令実行情報に対応するが、前記トレース生成回路に対応する前記分岐制御キャッシュは、その特定の命令に対して、特定の命令と、その特定の命令に遭遇した際に取られた分岐との両方を特定するトレース要素を発行するための分岐制御情報を記憶していない、ことを特徴とする、請求項5乃至8のいずれもが請求項3及び4のいずれにも従属していないところの請求項8又は9に記載の装置。
【請求項11】
前記トレース生成回路は、所定のトレース制御イベントが発生すると、前記分岐制御キャッシュの分岐制御情報を無効にするよう構成されている、ことを特徴とする請求項2〜10のいずれか一項に記載の装置。
【請求項12】
前記分岐点データには、
前記特定の命令のアドレスを示すアドレスデータ、
前記特定の命令の直前の最後の命令のアドレスを示すエンドデータ、
前記分岐未来命令と前記特定の命令との距離を示すオフセットデータ、
前記特定の命令の前に処理すべき残りの命令数を示す残存サイズ命令データ、
前記特定の命令に到達する前に処理すべき残りのプログラム格納先の数を示す残存サイズデータ、
のうちの一つ又は複数が含まれている、ことを特徴とする請求項3又は請求項3に従属する請求項4〜11のいずれか一項に記載の装置。
【請求項13】
前記分岐制御キャッシュは、前記処理回路に対応付けられ、処理回路が使用する分岐制御情報を保持するのに用いられて、前記処理回路が分岐未来命令の実行後に特定の命令に遭遇した場合、分岐未来命令によって特定されたターゲットアドレスへの分岐を前記処理回路に行わせ、
前記命令実行情報には、分岐未来命令がいつ処理回路に実行されるかの指標、分岐がいつ処理回路に処理されたかの指標、その分岐の処理が分岐命令の実行によるものではなく、処理回路の分岐制御キャッシュに保持された分岐制御情報によるものであったかどうかに関する指標が含まれ、
前記トレース生成回路は、前記命令実行情報内の前記指標に基づいて生成するトレース要素を決定する、ことを特徴とする請求項1に記載の装置。
【請求項14】
前記命令実行情報が、分岐未来命令が実行され、次に発生した分岐が分岐制御情報によるものであったことを示す場合、前記トレース生成回路は、前記ターゲットアドレスへの分岐が生じたことを示す前記トレース要素を生成するよう構成されている、ことを特徴とする請求項13に記載の装置。
【請求項15】
前記命令実行情報が、分岐命令の実行によって分岐の処理が行われ、それに先行して分岐未来命令の実行が行われなかったことを示す場合、前記トレース生成回路は、前記処理回路によって分岐が取られたか否かを示すタイプのトレース要素を発行するよう構成されている、ことを特徴とする請求項13又は14に記載の装置。
【請求項16】
前記命令実行情報が、分岐命令の実行によって分岐の処理が行われたが、それに先行して分岐未来命令の実行が行われたことを示す場合、前記トレース生成回路は、前記ターゲットアドレスへの分岐が発生しなかったことを示す第1トレース要素と、前記分岐命令の実行によって処理された分岐が前記処理回路によって取られたか否かを示すタイプの第2トレース要素とを生成するよう構成されている、ことを特徴とする請求項13〜15のいずれか一項に記載の装置。
【請求項17】
前記命令実行情報が前記分岐制御情報によって分岐が発生したことを示すが、前記トレース生成回路は、前の分岐未来命令が前記処理回路によって実行されたかどうか知らない場合、前記トレース生成回路は、前記特定の命令と、その特定の命令に遭遇した際に取られた分岐との両方を特定するトレース要素を発行するよう構成されている、ことを特徴とする請求項13〜16のいずれか一項に記載の装置。
【請求項18】
前記分岐制御キャッシュが前記処理回路と関連付けられ、前記処理回路が分岐未来命令の実行後に特定の命令に遭遇した場合に分岐未来命令によって特定されたターゲットアドレスへの分岐を行うのに使用する分岐制御情報を保持するのに用いられ、
前記トレース生成回路は、前記命令実行情報が前記処理回路によって前記分岐未来命令が実行されたことを示す場合に設定される記憶要素を備え、
前記命令実行情報が、分岐制御キャッシュに記憶される分岐制御情報に関連する特定の命令に遭遇したため、処理回路がターゲットアドレスへの分岐を行なったことを示し、前記記憶要素が設定されている場合、前記トレース生成回路は、前記ターゲットアドレスへの分岐が生じたことを示すトレース要素を前記トレースストリームに発行するよう構成され、さらに前記記憶要素をクリアするよう構成されている、ことを特徴とする請求項1に記載の装置。
【請求項19】
前記命令実行情報が、前記分岐制御キャッシュに記憶される分岐制御情報に関連する特定の命令に遭遇したために、前記処理回路がターゲットアドレスへの分岐を行なったことを示し、前記記憶要素が設定されていない場合、前記トレース生成回路は、前記特定の命令と、その特定の命令に遭遇した際に取られた分岐との両方を特定するトレース要素を発行するよう構成されている、ことを特徴とする請求項18に記載の装置。
【請求項20】
前記命令実行情報が、分岐命令が実行されたために分岐の処理が行われたことを示す場合、前記トレース生成回路は、前記処理回路によって分岐が取られたか否かを示すタイプのトレース要素を発行するよう構成され、さらに前記記憶要素をクリアするよう構成されている、ことを特徴とする請求項18又は19に記載の装置。
【請求項21】
処理回路によって実行される命令シーケンスを示す命令実行情報に基づいて発行された、前記命令シーケンス内の所定の命令の前記処理回路による実行を示す複数のトレース要素を含むトレースストリームを受け取る入力インタフェースであって、前記シーケンスには、前記シーケンス内の分岐未来命令の後に続く特定の命令を示す分岐未来命令が含まれ、該分岐未来命令の実行後に、前記処理回路が前記シーケンス内で前記特定の命令に遭遇した場合に、前記特定の命令は、処理回路に分岐未来命令によって特定されるターゲットアドレスへの分岐を行わせる、入力インタフェースと、
各トレース要素に応じて、前記所定の命令のうちの次の命令がプログラムイメージ内で検出されるまで、現在の命令アドレスからプログラムイメージをトラバースし、前記現在の命令アドレスと、前記所定の命令のうちの次の命令との間の命令を示す情報を、前記プログラムイメージから生成する展開回路と、
前記展開回路に対応する分岐制御キャッシュと、
を具備し、
前記展開回路は、前記プログラムイメージをトラバースする際、前記分岐未来命令の検出に応じて、該分岐未来命令から得られた分岐制御情報を前記分岐制御キャッシュに格納し、
前記展開回路は、前記分岐制御情報を参照して、前記プログラムイメージのトラバース時に特定の命令に到達したことを検出する際、その特定の命令を前記所定の命令のうちの次の命令として扱うよう構成されている、
ことを特徴とする装置。
【請求項22】
前記展開回路は、前記分岐制御情報として、前記分岐未来命令によって特定され、前記特定の命令を判別するのに用いられる分岐点データを記憶するよう構成されている、ことを特徴とする請求項21に記載の装置。
【請求項23】
前記展開回路は、前記分岐未来命令内で特定された即値からターゲットアドレスを直接導出可能な場合に、そのターゲットアドレスを分岐制御情報として記憶するよう構成されている、ことを特徴とする請求項22に記載の装置。
【請求項24】
処理回路による命令実行を示すトレースストリームを生成する方法であって、
前記処理回路によって実行される命令シーケンスを示す命令実行情報を前記処理回路から受け取る工程であって、前記シーケンスには、前記シーケンス内の分岐未来命令の後に続く特定の命令を示す分岐未来命令が含まれ、該分岐未来命令の実行後に、前記処理回路が前記シーケンス内で前記特定の命令に遭遇した場合に、前記特定の命令は、処理回路に分岐未来命令によって特定されるターゲットアドレスへの分岐を行わせる、工程と、
前記処理回路による前記シーケンス内の所定の命令の実行を示す複数のトレース要素を含むトレースストリームを前記命令実行情報から生成する工程と、
前記分岐未来命令から生じる分岐制御情報を分岐制御キャッシュに格納する工程と、
前記分岐制御キャッシュに格納された前記分岐制御情報に基づいて、前記処理回路がいつ特定の命令に遭遇したかを検出し、前記ターゲットアドレスへの分岐が生じたことを示すトレース要素を前記トレースストリーム内に発行する工程と、
を具備することを特徴とする方法。
【請求項25】
処理回路によって実行される命令シーケンスを示す命令実行情報を前記処理回路から受け取る入力インタフェース手段であって、前記シーケンスには、前記シーケンス内の分岐未来命令の後に続く特定の命令を示す分岐未来命令が含まれ、該分岐未来命令の実行後に、前記処理回路が前記シーケンス内で前記特定の命令に遭遇した場合に、前記特定の命令は、処理回路に分岐未来命令によって特定されるターゲットアドレスへの分岐を行わせる、入力インタフェース手段と、
前記処理回路による前記シーケンス内の所定の命令の実行を示す複数のトレース要素を含むトレースストリームを前記命令実行情報から生成するトレース生成手段と、
前記分岐未来命令から生じる分岐制御情報を格納する分岐制御キャッシュ手段と、
前記分岐制御キャッシュ手段に格納された前記分岐制御情報に基づいて、前記処理回路がいつ特定の命令に遭遇したかを検出し、前記ターゲットアドレスへの分岐が生じたことを示すトレース要素を前記トレースストリーム内に発行するトレース生成手段と、
を具備することを特徴とする装置。
【請求項26】
処理回路による命令実行を示すトレースストリームを処理する方法であって、
前記処理回路によって実行される命令シーケンス内の所定の命令が前記処理回路によって実行されることを示す複数のトレース要素を有するトレースストリームを受け取る工程であって、前記シーケンスには、前記シーケンス内の分岐未来命令の後に続く特定の命令を示す分岐未来命令が含まれ、該分岐未来命令の実行後に、前記処理回路が前記シーケンス内で前記特定の命令に遭遇した場合に、前記特定の命令は、処理回路に分岐未来命令によって特定されるターゲットアドレスへの分岐を行わせる、工程と、
各トレース要素に応じて、前記所定の命令のうちの次の命令がプログラムイメージ内で検出されるまで、現在の命令アドレスからプログラムイメージをトラバースし、前記現在の命令アドレスと、前記所定の命令のうちの次の命令との間の命令を示す情報を、前記プログラムイメージから生成する工程と、
前記分岐未来命令の検出に応じて、該分岐未来命令から得られた分岐制御情報を分岐制御キャッシュに格納する工程と、
前記分岐制御情報を参照して、前記プログラムイメージのトラバース時に特定の命令に到達したことを検出する際、その特定の命令を前記所定の命令のうちの次の命令として扱う工程と、
を具備することを特徴とする方法。
【請求項27】
処理回路によって実行される命令シーケンス内の所定の命令が前記処理回路によって実行されることを示す複数のトレース要素を有するトレースストリームを受け取る入力インタフェース手段であって、前記シーケンスには、前記シーケンス内の分岐未来命令の後に続く特定の命令を示す分岐未来命令が含まれ、該分岐未来命令の実行後に、前記処理回路が前記シーケンス内で前記特定の命令に遭遇した場合に、前記特定の命令は、処理回路に分岐未来命令によって特定されるターゲットアドレスへの分岐を行わせる、入力インタフェース手段と、
各トレース要素に応じて、前記所定の命令のうちの次の命令がプログラムイメージ内で検出されるまで、現在の命令アドレスからプログラムイメージをトラバースし、前記現在の命令アドレスと、前記所定の命令のうちの次の命令との間の命令を示す情報を、前記プログラムイメージから生成する展開手段と、
前記展開手段に対応する分岐制御キャッシュ手段と、
を具備し、
前記展開手段は、前記プログラムイメージをトラバースする際、前記分岐未来命令の検出に応じて、該分岐未来命令から得られた分岐制御情報を前記分岐制御キャッシュ手段に格納し、
前記展開手段は、前記分岐制御情報を参照して、前記プログラムイメージのトラバース時に特定の命令に到達したことを検出する際、その特定の命令を前記所定の命令のうちの次の命令として扱う、
ことを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、データ処理システム内における処理回路の活動を示すトレースストリームを生成する機構に関し、特に、当該処理回路による命令実行を示すトレースストリームの生成及び処理を行う機構に関するものである。
【背景技術】
【0002】
トレース回路を用いて一連のトレース要素を含むトレースストリームを生成することができ、それらの要素については、関連する処理回路の活動を判定する、例えば、処理回路によって実行される命令シーケンスを判定するためにその後分析を行うことができる。そのトレースストリーム内のトレース情報の量を軽減するため、トレース回路は、実行された各命令のそれぞれに別々のトレース要素を生成するのではなく、実行された所定の命令に対してのみトレース要素を生成する、例えば、実行された各分岐命令に対してトレース要素を生成するよう構成されていてもよい。分析回路は、所定の命令に関する情報から、実行された命令シーケンスに関する情報の再構築を行うために、プログラムイメージの利用を図ることができる。
【0003】
最近では新しいタイプの命令も提案されており、本明細書では分岐未来命令という。分岐未来命令は、任意の命令を分岐に効果的に変換することができる。
【0004】
これでは、上記トレースストリームを用いた方法で処理回路の実行挙動のトレースを図った場合に、ある所定の命令にだけしかトレース要素が生じないといった重大な問題が生じることになる。具体的には、トレース機構は、各分岐命令についてトレース要素を生成するよう構成されてもよいが、分岐未来命令を用いることにより、(そのトレース機構が分岐命令と見なさない)任意の命令に命令フロー内で分岐を開始させることができ、それによってトレース回路が生成したトレースストリームから処理回路の命令実行挙動を正確に判定する分析回路の能力を低下させてしまう場合がある。
【発明の概要】
【0005】
本技術は、上記分岐未来命令がある場合にもトレース処理の信頼性を高めることを目的とする。
【0006】
一構成例では、処理回路によって実行される命令シーケンスを示す命令実行情報を処理回路から受け取る入力インタフェースであって、そのシーケンスには、シーケンス内の分岐未来命令の後に続く特定の命令を示す分岐未来命令が含まれ、該分岐未来命令の実行は、処理回路がシーケンス内で特定の命令に遭遇した場合に、特定の命令は、処理回路に分岐未来命令によって特定されるターゲットアドレスへの分岐を行わせる、入力インタフェースと、処理回路による前記シーケンス内の所定の命令の実行を示す複数のトレース要素を含むトレースストリームを命令実行情報から生成するトレース生成回路と、分岐未来命令から生じる分岐制御情報を格納する分岐制御キャッシュと、を具備し、トレース生成回路は、分岐制御キャッシュに格納された分岐制御情報に基づいて、処理回路がいつ特定の命令に遭遇したかを検出し、ターゲットアドレスへの分岐が生じたことを示すトレース要素を前記トレースストリーム内に発行するように構成されている装置が提供される。
【0007】
別の構成例では、処理回路によって実行される命令シーケンスを示す命令実行情報を処理回路から受け取る入力インタフェースであって、そのシーケンスには、シーケンス内の分岐未来命令の後に続く特定の命令を示す分岐未来命令が含まれ、該分岐未来命令の実行は、処理回路が前記シーケンス内で特定の命令に遭遇した場合に、特定の命令は、処理回路に分岐未来命令によって特定されるターゲットアドレスへの分岐を行わせる、入力インタフェースと、
各トレース要素に応じて、所定の命令のうちの次の命令がプログラムイメージ内で検出されるまで、現在の命令アドレスからプログラムイメージをトラバースし、現在の命令アドレスと、所定の命令のうちの次の命令との間の命令を示すプログラムイメージ情報から生成する展開回路と、展開回路に対応する分岐制御キャッシュとを具備し、展開回路は、前記プログラムイメージをトラバースする際、前記分岐未来命令の検出に応じて、該分岐未来命令から得られた分岐制御情報を前記分岐制御キャッシュに格納し、展開回路は、分岐制御情報を参照して、プログラムイメージのトラバース時に特定の命令に到達したことを検出する際、その特定の命令を前記所定の命令のうちの次の命令として扱うよう構成されている装置が提供される。
【0008】
さらに別の構成例では、処理回路による命令実行を示すトレースストリームを生成する方法であって、処理回路によって実行される命令シーケンスを示す命令実行情報を処理回路から受け取る工程であって、そのシーケンスには、シーケンス内の分岐未来命令の後に続く特定の命令を示す分岐未来命令が含まれ、該分岐未来命令の実行は、処理回路が前記シーケンス内で特定の命令に遭遇した場合に、特定の命令は、処理回路に分岐未来命令によって特定されるターゲットアドレスへの分岐を行わせる工程と、処理回路による前記シーケンス内の所定の命令の実行を示す複数のトレース要素を含むトレースストリームを命令実行情報から生成する工程と、分岐未来命令から生じる分岐制御情報を分岐制御キャッシュに格納する工程と、分岐制御キャッシュに格納された分岐制御情報に基づいて、処理回路がいつ特定の命令に遭遇したかを検出し、ターゲットアドレスへの分岐が生じたことを示すトレース要素をトレースストリーム内に発行する工程とを具備することを特徴とする方法が提供される。
【0009】
さらに別の構成例では、処理回路によって実行される命令シーケンスを示す命令実行情報を処理回路から受け取る入力インタフェース手段であって、そのシーケンスには、シーケンス内の分岐未来命令の後に続く特定の命令を示す分岐未来命令が含まれ、該分岐未来命令の実行は、処理回路が前記シーケンス内で特定の命令に遭遇した場合に、特定の命令は、処理回路に分岐未来命令によって特定されるターゲットアドレスへの分岐を行わせる、入力インタフェース手段と、処理回路による前記シーケンス内の所定の命令の実行を示す複数のトレース要素を含むトレースストリームを前記命令実行情報から生成するトレース生成手段と、分岐未来命令から生じる分岐制御情報を格納する分岐制御キャッシュ手段と、分岐制御キャッシュに格納された分岐制御情報に基づいて、処理回路がいつ特定の命令に遭遇したかを検出し、ターゲットアドレスへの分岐が生じたことを示すトレース要素をトレースストリーム内に発行するトレース生成手段とを具備することを特徴とする装置が提供される。
【0010】
別の構成例によれば、処理回路による命令実行を示すトレースストリームを処理する方法であって、処理回路によって実行される命令シーケンス内の所定の命令が処理回路によって実行されることを示す複数のトレース要素を有するトレースストリームを受け取る工程であって、そのシーケンスには、シーケンス内の分岐未来命令の後に続く特定の命令を示す分岐未来命令が含まれ、該分岐未来命令の実行は、処理回路が前記シーケンス内で前記特定の命令に遭遇した場合に、特定の命令は、処理回路に分岐未来命令によって特定されるターゲットアドレスへの分岐を行わせる工程と、各トレース要素に応じて、所定の命令のうちの次の命令がプログラムイメージ内で検出されるまで、現在の命令アドレスからプログラムイメージをトラバースし、現在の命令アドレスと、所定の命令のうちの次の命令との間の命令を示すプログラムイメージ情報から生成する工程と、分岐未来命令の検出に応じて、該分岐未来命令から得られた分岐制御情報を分岐制御キャッシュに格納する工程と、分岐制御情報を参照して、プログラムイメージのトラバース時に特定の命令に到達したことを検出する際、その特定の命令を所定の命令のうちの次の命令として扱う工程とを具備することを特徴とする方法が提供される。
【0011】
さらに別の構成例では、処理回路によって実行される命令シーケンス内の所定の命令が処理回路によって実行されることを示す複数のトレース要素を有するトレースストリームを受け取る入力インタフェース手段であって、そのシーケンスには、シーケンス内の分岐未来命令の後に続く特定の命令を示す分岐未来命令が含まれ、該分岐未来命令の実行は、処理回路が前記シーケンス内で特定の命令に遭遇した場合に、特定の命令は、処理回路に分岐未来命令によって特定されるターゲットアドレスへの分岐を行わせる、入力インタフェース手段と、各トレース要素に応じて、所定の命令のうちの次の命令がプログラムイメージ内で検出されるまで、現在の命令アドレスからプログラムイメージをトラバースし、現在の命令アドレスと、所定の命令のうちの次の命令との間の命令を示すプログラムイメージ情報から生成する展開手段と、展開手段に対応する分岐制御キャッシュ手段とを具備し、展開手段は、前記プログラムイメージをトラバースする際、分岐未来命令の検出に応じて、該分岐未来命令から得られた分岐制御情報を分岐制御キャッシュ手段に格納し、展開手段は、分岐制御情報を参照して、プログラムイメージのトラバース時に特定の命令に到達したことを検出する際、その特定の命令を所定の命令のうちの次の命令として扱うことを特徴とする装置が提供される。
【0012】
本技術について、ほんの一例として、添付の図面に示す実施例を参照しながらさらに詳しく説明する。
【図面の簡単な説明】
【0013】
図1】一実施例に係るシステムを示すブロック図である。
図2】一実施例で使用するトレースモジュールをより詳細に示すブロック図である。
図3】一実施例で使用するトレース分析回路をより詳細に示すブロック図である。
図4A】一実施例に係る図1のシステム内で使用可能なさまざまな形態の分岐先アドレスキャッシュ(BTAC)を示すブロック図である。
図4B】一実施例に係る図1のシステム内で使用可能なさまざまな形態の分岐先アドレスキャッシュ(BTAC)を示すブロック図である。
図4C】一実施例に係る図1のシステム内で使用可能なさまざまな形態の分岐先アドレスキャッシュ(BTAC)を示すブロック図である。
図5】一実施例に係る図2のトレースモジュールの動作を示すフロー図である。
図6】一実施例に係る図3の展開回路の動作を示すフロー図である。
図7】トレースBTACが設けられていない他の実施例における図2のトレースモジュールの動作を示す図である。
図8】トレースBTACが設けられていないさらに他の実施例における図2のトレースモジュールの動作を示す図である。
【発明を実施するための形態】
【0014】
データ処理システム内の処理回路の活動をトレースすることによって、後にその処理回路のステップバイステップの活動を特定するのに分析可能なトレース要素の流れを生成することは、システム開発において極めて有用なツールである。このトレースストリームの分析は、例えば、処理回路によって実行される一連の命令のデバッグを容易にするために行われてもよい。トレース機構は、通常、処理回路と共にオンチップで設けられる。そのようなオンチップトレース機構の例としては、さまざまなARMプロセッサと関連して、イギリス、ケンブリッジのARM社製エンベデッド・トレース・マクロセル(ETM)が挙げられる。このようなトレース機構では、さらなる分析を行うにはオフチップ実装が必要なトレース要素が大量に生成される可能性がある。処理回路のステップバイステップの活動を後で分析可能としつつ、生成されるトレース情報量の軽減を図るために数多くの手法が開発されている。
【0015】
前述のように、生成されるトレース情報量を軽減させる手法の一つでは、処理回路によって実行される命令シーケンス内の特定の種類の命令に対してトレース要素を出力する工程しか含まれず、トレース分析回路は、それらの特定の命令の実行に関する情報から、処理回路のステップバイステップの命令実行挙動を再構築することができる。一例として、トレース回路は、その分岐が取られたか否かを示す分岐命令が処理されるたびにトレース要素を出力してもよく、分析回路は、トレース要素が生成された命令間において、処理回路によってどの命令が実行されたかの推測を行うことができる。
【0016】
ここでは分岐未来命令と呼ばれる新しいタイプの命令が提案されている。分岐未来命令は、命令シーケンス内でこの分岐未来命令の後に続く命令を特定するのに用いることができ、分岐未来命令を実行することによって、命令シーケンス内でその特定された命令に遭遇した場合にその分岐未来命令によって特定されたターゲットアドレスへの分岐を後で処理回路に行わせる。よって、この分岐未来命令によって、分岐への任意のいかなる命令でも効果的に変更可能である。
【0017】
これでは、前述のように、上記トレースストリームを用いた方法で処理回路の実行挙動のトレースを図った場合に、ある所定の命令にだけしかトレース要素が生じないといった重大な問題が生じることになる。以下に説明する実施例は、これらの問題を緩和することを目的とし、分岐未来命令を含む命令シーケンスの提供も行いながら、上記軽減されたトレースストリームを用いた方法を継続して採用することを可能にする。
【0018】
添付の図面を参照した考察を行う前に、実施例について以下に説明する。
【0019】
一実施例では、処理回路によって実行される命令シーケンスを示す命令実行情報を処理回路から受け取る入力インタフェースと、処理回路による該シーケンス内の所定の命令の実行を示す複数のトレース要素を含むトレースストリームを該命令実行情報から生成するトレース生成回路とを備えた装置を提供する。命令シーケンスには、シーケンス内の分岐未来命令の後に続く特定の命令を示す分岐未来命令が含まれる。処理回路は、この分岐未来命令を実行することにより、後にシーケンス内でその特定の命令に遭遇した場合に、その分岐未来命令によって特定されるターゲットアドレスへの分岐を行う。これにより、上記特定の命令自体はその実行されたインスタンスにはなく、分岐未来命令によって特定されるターゲットアドレスへの分岐に置き換えられる。
【0020】
この装置は、分岐未来命令から生じる分岐制御情報を格納する分岐制御キャッシュを備えている。さらに、上記トレース生成回路は、この分岐制御キャッシュに格納された分岐制御情報に基づいて、処理回路がいつ特定の命令に遭遇したかを検出し、上記ターゲットアドレスへの分岐が生じたことを示すトレース要素を該トレースストリーム内に発行するように構成されている。
【0021】
従って、上記実施例では、分岐未来命令の実行によって特定の命令がいつ分岐に置き換えられたかを検出し、ターゲットアドレスへの分岐が生じたことを示すトレース要素をトレースストリーム内に発行するために、トレース生成回路は分岐制御キャッシュに保持された分岐制御情報を利用することができる。シーケンス内の所定の命令(例えば、通常の分岐命令)が処理回路によって実行された場合にトレース生成回路によって挿入されるトレース要素に加えて、上記トレース要素をトレースストリームに組み込むことにより、トレース分析回路は、トレースストリーム内のトレース要素から、処理回路によって実行される命令の流れを判定することが可能となる。
【0022】
その分岐制御情報がトレース生成回路に利用される分岐制御キャッシュは、処理回路に関連する分岐制御キャッシュであってもよく、その場合、処理回路は、命令実行情報の一部として、その分岐制御キャッシュにおいてヒットがいつ処理回路によって検出されたかを示す情報を含んでいてもよい。しかしながら、一実施例では、トレース生成回路に使用される分岐制御キャッシュは、実際には、トレース生成回路に関連する分岐制御キャッシュであり、一実施例では、処理回路自体に対して設けられる任意の分岐制御キャッシュとは別に設けられてもよい。このような実施例では、トレース生成回路は、処理回路から得た命令実行情報によって、その関連する分岐制御キャッシュ内の分岐制御情報を記憶するように構成されていてもよい。よって、このような実施例では、トレース生成回路はそれ自身の分岐制御キャッシュを有し、そこには処理回路がいつ特定の命令に遭遇したかを検出し、適切なトレース要素を発行することを可能にする適切な分岐制御情報が保持されている。
【0023】
トレース生成回路がその関連する分岐制御キャッシュにデータを投入する方法は実施例によって異なっていてもよい。しかしながら、一実施例では、命令実行情報が処理回路によって分岐未来命令が実行されたことを示す場合、トレース生成回路は、その分岐未来命令によって特定され、上記特定の命令を判定するのに用いられる分岐点データを分岐制御キャッシュ内に格納するように構成されている。この分岐点データはさまざまな形を取ることができるが、特定の命令を判定することができ、処理回路がいつ特定の命令に遭遇したかをトレース生成回路が検出できるのに十分なものである。
【0024】
一実施例において、分岐点データには、上記特定の命令のアドレスを示すアドレスデータ、その特定の命令の直前の最後の命令のアドレスを示すエンドデータ、上記分岐未来命令と特定の命令との距離を示すオフセットデータ、命令の開始記憶アドレスを区別するメモリ記憶アドレスビットの最下位ビット端部から始まる特定の命令のメモリ記憶アドレスを示す適切なビットサブセット、上記特定の命令の前に処理すべき残りの命令数を示す残存サイズ命令データ、上記特定の命令に到達する前に処理すべき残りのプログラム格納先の数を示す残存サイズデータのうちの一つ又は複数が含まれていてもよい。これらのさまざまな選択肢により、命令シーケンス内の特定の命令にいつ到達したかを判定する機構が提供されることが理解されよう。前述のように、上記処理回路は、その特定の命令をまさに実行しようとする時点に到達すると、分岐未来命令をそれより前に実行しているため、実際にはその特定の命令を実行せず、その時点では、該分岐未来命令によって特定されたターゲットアドレスへの分岐を取る。
【0025】
一実施例において、トレース生成回路は、処理回路がいつ特定の命令に遭遇したかを受け取った命令実行情報から検出し、その検出時にターゲットアドレスへの分岐が生じたことを示すトレース要素をトレースストリーム内に発行するために、その関連する分岐制御キャッシュに格納された分岐点データを参照する。
【0026】
トレース生成回路がその関連する分岐制御キャッシュに上記分岐点データを格納しているかどうかに関係なく、一実施例では、命令実行情報が処理回路によって分岐未来命令が実行されたことを示す場合、トレース生成回路は、その分岐未来命令内で特定された即値からターゲットアドレスを直接導き出すことが可能かどうかを示すターゲットインジケータを分岐制御キャッシュに格納するように構成されている。
【0027】
このターゲットインジケータ情報は、トレース生成回路がそのターゲットアドレスへの分岐が生じたことを示すトレース要素に関連するトレースストリームにおいてどの情報を提供すべきかを判断する際に用いることができる。具体的には、ターゲットインジケータが分岐未来命令内で特定された即値からターゲットアドレスを直接導き出すことが可能であることを示す場合、トレース分析回路は、通常、処理回路によって実行されるプログラムのプログラムイメージが与えられることによってターゲットアドレスを導き出すことができるので、そのターゲットアドレスに関する追加情報を提供する必要はない。一方で、一実施例では、ターゲットインジケータが即値からターゲットアドレスを直接導き出すことが不可能であることを示す場合、トレース生成回路は、ターゲットアドレスへの分岐が生じたことを示すトレース要素に関連して、処理回路から受け取った命令実行情報から導き出したターゲットアドレスを示す指標をトレースストリーム内に発行するように構成されている。具体的には、トレース生成回路は、トレース分析回路が後にトレースストリームを分析する際にターゲットアドレスを判定可能となるように、処理回路に対して提供された命令実行情報に基づいてターゲットアドレスを決定し、トレースストリームにおいてそのターゲットアドレスを示す指標を出力することができる。
【0028】
いくつかの例において、トレース生成回路は、処理回路のすべての活動をトレースするように構成されていてもよい。一方、他の実施例では、トレース生成回路の動作は、処理回路によって実行された命令の一部だけが実際にトレースされるよう選択的に行われてもよい。例えば、特定のメモリアドレスレンジ内で実行された命令についてトレースをオンにしてもよい。このような構成では、トレース生成回路は、トレースターゲットアドレスレンジに実際に含まれるシーケンス内のそれらの所定の命令に対してトレース要素を生成し、処理回路が実行済み分岐未来命令によって特定された特定の命令に遭遇したこと(かつ、その特定の命令がトレースターゲットアドレスレンジ内にあること)を分岐制御キャッシュから検出した場合に、さらなるトレース要素を追加する。一方、一実施例では、トレース生成回路は、関連する分岐未来命令が、トレースされている命令シーケンスの当該部分(例えば、アドレスレンジ)内にある場合にだけ分岐制御情報を分岐制御キャッシュに格納するように構成されている。これにより、トレースがアクティブな命令の範囲外に分岐未来命令がある場合、分岐制御キャッシュにはその分岐未来命令に関する入力が行われることはない。
【0029】
前述のように、トレース生成回路に対応する分岐制御キャッシュは、処理回路が使用する分岐制御情報を保持するのに用いられる処理回路分岐制御キャッシュとは別に備えられ、処理回路が分岐未来命令の実行後に特定の命令に遭遇した場合、分岐未来命令によって特定されたターゲットアドレスへの分岐を処理回路に行わせるようにしてもよい。
【0030】
一実施例では、処理回路分岐制御キャッシュは1つのエントリしか有しておらず、1つの分岐未来命令から導き出された分岐制御情報しか記憶されない場合、トレース生成回路に対応する分岐制御キャッシュの内容が簡略化されてもよい。具体的には、そのような実施例では、トレース生成回路に対応する分岐制御キャッシュは、その1つの分岐未来命令内で特定された即値からターゲットアドレスを直接導き出すことが可能かどうかを示すターゲットインジケータを格納すればよいが、その特定の命令を判定するのに用いられる分岐点データを格納する必要はない。その代わり、処理回路がその処理回路分岐制御キャッシュにヒットを検出し、その旨をトレース生成回路に転送する命令実行情報を介してトレース生成回路に通知する場合、トレース生成回路は、そのヒットが分岐制御キャッシュのエントリを行なったのと同じ分岐未来命令によるものであることを理解し、ターゲットアドレスへの分岐が生じたことを示すのに発行されるトレース要素に、もしあれば、どの情報を付随させるべきかを判断するのにターゲットインジケータをただ直接利用することができる。このような方法によれば、トレース生成回路に関連付けられる分岐制御キャッシュのサイズ要件を軽減することができる。
【0031】
前述のように、いくつかの実施例では、トレース生成回路は、処理回路によって実行される命令シーケンス全体をトレースしなくてもよく、その代わり、実行される命令シーケンスの一つ又は複数の部分に対してのみトレース情報を生成するよう設定されてもよい。その場合、分岐未来命令がトレースされている部分の範囲外となる可能性があり、トレース生成回路に対応する分岐制御キャッシュにはエントリが行われない場合がある。そのような実施例では、処理回路がその分岐制御キャッシュに関連する分岐制御情報を有する特定の命令に遭遇したため、ターゲットアドレスへの分岐を行なったことを示す命令実行情報をトレース生成回路が受け取る場合があるが、トレース生成回路に対応する分岐制御キャッシュには同等のエントリが存在しないこともある。そのような場合、一実施例では、トレース生成回路は、特定の命令と、その特定の命令に遭遇した際に取られた分岐との両方を特定するトレース要素を発行するよう構成されている。
【0032】
このような特別な形態のトレース要素は、特定の命令を明確に特定し、その特定の命令に遭遇した際に取られた分岐を完全に特定するのに十分な情報をそのトレース要素内に含む必要があるため、トレース生成回路の関連する分岐制御キャッシュにおいてヒットを検出した際に発行される前述のトレース要素よりも多くの情報を入手する必要がある。従って、一実施例では、そのトレース要素が特定の命令のアドレスとターゲットアドレスを特定する必要がある。この特別な形態のトレース要素は、トレース帯域幅の観点から見れば費用がかかるが、処理回路の分岐制御キャッシュにヒットがあったものの、トレース生成回路の分岐制御キャッシュには同等のヒットが検出されなかったというような特定の例でしか必要とされない。一実施例において、この特別なトレース要素には、既存のタイプのトレース要素の形式、すなわち、命令実行時に発生する例外に関する情報を提供するのにすでに用いられたトレース要素の形式を使用することができる。
【0033】
一実施例では、トレース生成回路は、所定のトレース制御イベントが発生すると、その関連する分岐制御キャッシュの分岐制御情報を無効にするよう構成されていてもよい。この所定のトレース制御イベントは、さまざまな形を取ることができる。例えば、トレース中のものからいくつかの活動を除外するフィルタリング状態の終了を示す同期イベントや「トレースオン」イベントであってもよい。このようなイベントは、トレース活動の断絶を示すものであってもよい。
【0034】
いくつかの実施例では、トレース生成回路に対して分岐制御キャッシュを設けなくてもよい。その代わり、処理回路に関連する分岐制御キャッシュを単に用いて、トレース生成回路が分岐未来命令によって特定されたターゲットアドレスへの分岐がいつ生じたかを示すトレース要素を発行するのに十分な情報をそのトレース生成回路に提供するだけで十分であってもよい。
【0035】
具体的には、一実施例では、処理回路からトレース生成回路に提供される命令実行情報には、分岐未来命令がいつ処理回路に実行されるかの指標、分岐がいつ処理回路に処理されたかの指標、その分岐の処理が分岐命令の実行によるものではなく、処理回路の分岐制御キャッシュに保持された分岐制御情報によるものであったかどうかに関する指標が含まれる。トレース生成回路は、このような情報が提供されると、命令実行情報内のそれらの指標に基づいて生成するトレース要素を決定することができ、具体的には、分岐未来命令によって特定されたターゲットアドレスへの分岐が生じたことを示すトレース要素を発行する必要がある状況を判断することができる。
【0036】
具体的には、命令実行情報が、分岐未来命令が実行され、次に発生した分岐が分岐制御情報によるものであったことを示す場合、トレース生成回路は、ターゲットアドレスへの分岐が生じたことを示すトレース要素を生成するよう構成されていてもよい。
【0037】
さらに、一実施例では、命令実行情報が、分岐命令の実行によって分岐の処理が行われ、それに先行して分岐未来命令の実行が行われなかったことを示す場合、トレース生成回路は、処理回路によって分岐が取られたか否かを示すタイプのトレース要素を発行するよう構成されていてもよい。
【0038】
さらに起こり得る状況として、命令実行情報が、分岐命令の実行によって分岐の処理が行われたが、それに先行して分岐未来命令の実行が行われたことを示す場合がある。これは、例えば、処理回路の分岐制御キャッシュが、分岐未来命令が実行された後であって、命令シーケンス内で特定の命令に遭遇する前の時点でその内容の一部又はすべてを無効にされたという状況が発生した場合に起こり得る。この場合、一実施例では、トレース生成回路は、ターゲットアドレスへの分岐が発生しなかったことを示す第1トレース要素と、分岐命令の実行によって処理された分岐が処理回路によって取られたか否かを示すタイプの第2トレース要素とを生成するよう構成されていてもよい。従って、この場合でも、トレース生成回路は、命令シーケンス内で遭遇した特定の命令を示す第1トレース要素を出力するが、この場合では、ターゲットアドレスへの分岐が生じなかったことを示す。その後、分岐命令の実行を示す、具体的には、分岐が取られたか否かを示す第2トレース要素が続き、この分岐が取られたか否かという状態は、処理回路によって与えられた命令実行情報から判断される。
【0039】
このような方法により、一実施例のトレース分析回路の正常な動作が確保される。具体的には、後述するように、トレース分析回路には、一実施例では、プログラムイメージ内で分岐未来命令に遭遇した場合に入力を行うそれ自身のローカル分岐制御キャッシュも備えられている。これにより、ターゲットアドレスへの分岐に関連するトレース要素を継続して生成しつつも、その分岐が発生しなかったことを特定することによって、トレース分析装置がトレースストリーム内で受け取る一連のトレース要素に正常に対応できるようにする。
【0040】
またさらに起こり得る状況の例としては、命令実行情報が分岐制御情報によって分岐が発生したことを示すが、トレース生成回路は、前の分岐未来命令が処理回路によって実行されたかどうかを知るのに十分な情報を持っていない場合がある。これは、例えば、処理回路の活動のサブセットのみがトレースされ、分岐未来命令がそのサブセット外にある場合に起こり得る。この場合、一実施例では、トレース生成回路は、特定の命令と、その特定の命令に遭遇した際に取られた分岐との両方を特定するトレース要素を発行するよう構成されている。このトレース要素は、前述の特別なトレース要素と同じ形態を取ることができるため、必要なすべての情報を入手するためにトレース要素の既存の例外型の形式を用いてもよい。この情報には、一実施例では、特定の命令のアドレスとターゲットアドレスが含まれる。
【0041】
また、分岐制御キャッシュが処理回路と関連付けられ、処理回路が分岐未来命令の実行後に特定の命令に遭遇した場合に分岐未来命令によって特定されたターゲットアドレスへの分岐を行うのに使用する分岐制御情報を保持するのに用いられるさらなる実施例では、トレース生成回路は、命令実行情報が処理回路によって分岐未来命令が実行されたことを示す場合に設定される記憶要素を有するよう構成されていてもよい。また、命令実行情報が、分岐制御キャッシュの関連する分岐制御情報を有する特定の命令に遭遇したため、処理回路がターゲットアドレスへの分岐を行なったことを示し、記憶要素が設定されている場合、トレース生成回路は、ターゲットアドレスへの分岐が生じたことを示すトレース要素をトレースストリームに発行するよう構成され、さらにその記憶要素をクリアするよう構成されている。
【0042】
従って、本実施例では、トレース生成回路は、分岐制御情報自体を保持しないが、上述のように設定されたりクリアされたりする単純な記憶要素を有する。これにより、トレース生成回路は、処理回路がその分岐制御キャッシュにヒットがあったために分岐を行う場合に、トレース要素を確実に発行することができる。
【0043】
一実施例では、命令実行情報が、分岐制御キャッシュに関連する分岐制御情報を有する特定の命令に遭遇したために、処理回路がターゲットアドレスへの分岐を行なったことを示し、記憶要素が設定されていない場合、トレース生成回路は、特定の命令と、その特定の命令に遭遇した際に取られた分岐との両方を特定するトレース要素を発行するよう構成されている。このトレース要素は、前述の特別なトレース要素と同じ形態を取ることができるため、必要なすべての情報を入手するためにトレース要素の既存の例外型の形式を用いてもよい。
【0044】
一実施例では、命令実行情報が、分岐命令が実行されたために分岐の処理が行われたことを示す場合、トレース生成回路は、処理回路によって分岐が取られたか否かを示すタイプのトレース要素を発行するよう構成され、さらに記憶要素をクリアするよう構成されている。従って、トレース生成回路には、通常の分岐が生じた(すなわち、分岐未来命令がそれより前に実行されたためではなく生じた)ことと、記憶要素がクリアされたことが通知される。
【0045】
さらなる実施例では、トレース分析機能を行う装置が提供されてもよい。具体的には、この装置は、処理回路によって実行される命令シーケンス内の所定の命令が処理回路によって実行されることを示す複数のトレース要素を有するトレースストリームを受け取る入力インタフェースを備えていてもよい。そのシーケンスには、一つ又は複数の前述の分岐未来命令が含まれてもよい。この装置は、各トレース要素に応じて、上記所定の命令のうちの次の命令がプログラムイメージ内で検出されるまで、現在の命令アドレスからプログラムイメージをトラバースする展開回路をさらに備えている。この展開回路は、現在の命令アドレスと、検出された次の所定の命令との間の命令を示すプログラムイメージ情報から生成する。この装置は、上記展開回路に対応する分岐制御キャッシュをさらに備えている。この展開回路は、プログラムイメージをトラバースする際、分岐未来命令の検出に応じて、その分岐未来命令から得られた分岐制御情報を分岐制御キャッシュに格納する。さらに、展開回路は、分岐制御情報を参照して、プログラムイメージのトラバース時に特定の命令に到達したことを検出する際、その特定の命令を所定の命令のうちの次の命令として扱うよう構成されている。
【0046】
このように、所定の命令が分岐命令である例を考えると、特定の命令自体が分岐命令ではなかったとしても、展開回路に関連して分岐制御キャッシュを使用することにより、展開回路は、プログラムイメージ内でその特定の命令にいつ遭遇したかを検出することができ、その時点で、その特定の命令をまるで分岐命令であるかのように扱うことができる。これにより、実行される命令シーケンスに分岐未来命令が含まれ、任意の命令が分岐になる可能性があったとしても、処理回路によって実行される特定の命令についてのトレース要素しか生成しないトレースストリームの生成について、トレース分析回路による分析を正常に行うことができる。
【0047】
上記展開回路に対応する分岐制御キャッシュに格納された情報は、さまざまな形態をとることができる。一実施例では、この展開回路は、分岐制御情報として、分岐未来命令によって特定され、特定の命令を判別するのに用いられる分岐点データを記憶するよう構成されている。さらに、一実施例では、展開回路は、分岐未来命令内で特定された即値からターゲットアドレスを直接導出可能な場合に、そのターゲットアドレスを分岐制御情報として記憶するよう構成されている。これにより、そのターゲットアドレスが即値から直接導出可能である場合、展開回路は、プログラムイメージからターゲットアドレスを判別することができ、そのローカル分岐制御キャッシュ内でそのターゲットアドレスを入手することができる。これにより、特定の命令に遭遇した場合にプログラムイメージ内のどこに分岐を行うべきかを直接判定可能となる。一方、ターゲットアドレスが直接特定できない場合、そのターゲットアドレスを直接特定する情報がトレースストリームに含まれ、展開回路はトレースストリームを含む情報からターゲットアドレスを判定可能であることが上記説明から理解されるであろう。
【0048】
次に、特定の実施例について図面を参照して説明する。
【0049】
図1は、一実施例に係るシステムを概略的に示す図である。このシステムには、監視回路10、トレースモジュール20、トレースバッファ30、トレース分析装置40が備えられている。図1にはトレースバッファ30を備えたシステムを示すが、他の実施例では、トレースモジュール20は、その出力をトレースバッファを介さずトレース分析装置40に直接渡すようにしてもよい。このトレースモジュール20は、一連のトレース要素を有するトレースストリームを生成するよう構成され、トレース分析装置が監視回路10の活動を再構築できるようにする。この監視回路10は、さまざまな形態を取ることができるが、一実施例では、命令シーケンスを実行するよう構成された少なくとも一つの処理装置、例えば、プロセッサコアを備えている。この監視回路は、監視回路で実行されている命令を示す命令実行情報をトレースモジュール20に出力する。
【0050】
一実施例ではオンチップ実装され、例えば、イギリス、ケンブリッジのARM社製ETM回路の形態を取り得るトレースモジュールは、命令シーケンス内の所定の命令の実行を示す一連のトレース要素を含むトレースストリームを生成するよう構成されている。よって、監視回路によって実行される各命令を示すトレース要素を生成するのではなく、トレースストリーム内のトレース要素は、ある所定の命令の実行しか示さず、トレース分析装置には、そのようなトレース要素が与えられた所定の命令間で事項された命令についての情報を再構築するのに十分な知識が(例えば、プログラムイメージを介して)与えられる。例えば、一実施例では、トレースモジュールは、シーケンス内で実行されるすべての分岐命令についてトレース要素を生成するよう構成されてもよく、そのトレース要素によって、分岐が取られたか否かについての情報が与えられる。トレース分析装置40は、分岐命令の処理に関する情報に基づいて、実際に実行された命令シーケンスの判別を可能にするプログラムイメージを備えている。これにより、生成されるトレース要素の量を大幅に低減させることが可能となる。このことは、トレース分析装置40は通常オフチップ実装され、トレースストリームにはその分析装置へとチップのピンを介したルーティングが必要となるため、非常に有用である。
【0051】
監視回路によって実行される命令シーケンスには、分岐未来命令が含まれてもよい。分岐未来命令は、その分岐未来命令に続く任意の命令を特定することができ、その特定された命令に後に遭遇した場合、監視回路は、その命令を実行しない代わりに、分岐未来命令に特定されたターゲットアドレスへの分岐を取るようにしてもよい。この挙動をサポートするため、一実施例では、監視回路は、一つ又は複数のエントリを有する関連する分岐先アドレスキャッシュ(BTAC)を備えていてもよい。分岐未来命令が実行されると、BTACにエントリが割り当てられ、そのエントリには、処理回路がその特定の命令に遭遇した際に分岐を行うべきアドレスを特定するターゲットアドレスと共に、分岐未来命令が示す特定の命令のアドレスをソースアドレスとして記録されている。一実施例では、分岐未来命令の実行と、BTACのポピュレーションが上記のように行われた後、処理回路がそのBTACのエントリの一つにヒットを検出すると、例えば、そのプログラムカウンタが更新された、もしくはまさに更新されようとしていることを検出したため、そのアドレスでは特定の命令が実行されない代わりに、命令フローがそのBTACのエントリでも得られたターゲットアドレスへと分岐する。
【0052】
そのような方法によって、分岐未来命令を用いて任意の命令を効果的に分岐に変えることができることが分かる。上記のような方法で分岐未来命令によって特定される場合、処理回路は実際その特定の命令を実行せず、その代わりに分岐未来命令によって特定された分岐を行うので、その特定の命令の形態は重要ではない。分岐未来命令は、必要に応じて、条件的に実行することができる。従って、分岐未来命令を実行する条件が満たされた場合、上記処理が発生し、その後特定の命令に遭遇した場合、監視回路は特定の命令を実行するのではなく、ターゲットアドレスへの分岐を行う。一方、分岐未来命令を実行する時点で上記条件が満たされなかった場合、分岐未来命令は実行されず、そのうちに特定の命令が通常の方法で実行され、その特定の命令で特定された機能が実行される。
【0053】
このような分岐未来命令を用いることによって、監視回路で行われ得る動作に大きな柔軟性が付加され、トレースモジュール20が前述のタイプのトレースストリームを生成するよう構成されている場合に、監視回路によって実行されるシーケンス内のある所定の命令に対してしかトレース要素が生成されないという重要な問題がトレースモジュールに対して生じる。具体的には、トレースモジュールが、実行された各分岐命令に対してトレース要素を生成するよう設定されている場合に、分岐未来命令によって分岐を生じるものとしてフラグが付けられた特定の命令についてトレース要素を通常は生成しない。そのような分岐が生じたことについて、トレースストリームによって正しくフラグが付けられないと、トレース分析装置は、監視回路によって実行された命令シーケンスを正確に推測することができない。
【0054】
例外が起きた場合についての情報をトレースするのと同じ方法で、監視回路のBTACにおけるエントリによってフラグが付けられた特定の命令に到達した結果発生した上記分岐をトレースするトレース生成回路を設けることもできる。しかしながら、この方法では、特定の命令のアドレスと分岐先のターゲットアドレスの両方をトレースする必要があるので、トレース帯域幅の観点から見ても費用がかかってしまい、トレースストリーム形式の効率性を大幅に低下させてしまうこともある。
【0055】
後でさらに説明するように、事前に分岐未来命令が実行されたため、監視回路のBTAC内のエントリにマッチする特定の命令に遭遇したために、監視回路内で生じる分岐をトレース生成回路が効率的にトレースできるようにする機構が提供される。
【0056】
図2は、一実施例のトレースモジュール20を示すブロック図である。図示のように、トレースモジュール20は処理部50に接続され、その処理部50は、一実施例では、監視回路10の少なくとも一部を形成する。この処理部50は、各分岐未来命令の実行時に入力される分岐制御情報を保持する関連するBTAC55を有する。このBTAC55は一つ又は複数のエントリを有し、処理部50が分岐未来命令を実行するたびに、BTAC55内のエントリの一つに特定の分岐制御情報が入力される。具体的には、一実施例では、図4Aに示すように、BTAC55内の各エントリには、分岐未来命令が示す特定の命令のアドレスを保存するソースアドレスフィールド155と、分岐未来命令が示すターゲットアドレスを記憶するターゲットアドレスフィールド160とが含まれる。一実施例では、フィールド155には、特定の命令のアドレスが記憶される、より一般的には、前述のいずれかの形態を取ることができ、処理部が命令ストリームでいつ特定の命令に遭遇したかを検出するのに十分な分岐点データが記憶される。命令ストリーム内で特定の命令に遭遇したことを示すヒットがBTAC55のいずれかのエントリで検出されるたびに、その特定の命令は実行されず、代わりに、処理部が関連するターゲットアドレスフィールド160のターゲットアドレスへの分岐を行う。
【0057】
処理部50によって命令シーケンスが実行されると、命令実行情報がトレースモジュール20の入力インタフェース65に渡され、そこからトレース生成回路60に転送される。トレース生成回路60は、必要に応じて、入力インタフェース65を介して受け取った命令実行情報から得られた特定の分岐制御情報が格納される関連するトレースBTAC75を備えていてもよい。一実施例では、このトレースBTAC75は、図4Bに示す形態を取り、一つ又は複数のエントリを有している。各エントリは、処理部によって実行された分岐未来命令が示す特定の命令のアドレス(又は、前述したものと同等の他の分岐点データ)をソースアドレスとして記憶するフィールド165を有する。さらに、そのような各エントリには、ターゲットアドレスが分岐未来命令から、例えば、分岐未来命令における即値として与えられることによって、直接判定できるかどうかを示すフィールド170がさらに設けられている。また、その内容がターゲットアドレスの導出に用いられるレジスタが分岐未来命令によって特定される場合、そのターゲットアドレスは間接ターゲットアドレスであると考えられ、そのターゲットアドレスは直接ではない、すなわち、間接であるというフラグがフィールド170に立てられる。トレースBTACには、ターゲットアドレス自体を実際に保存する必要はない。
【0058】
一実施例では、分岐未来命令の実行に関連する条件コードが満たされたかどうかに関係なく、トレースBTAC75にエントリがなされる。
【0059】
トレースモジュール20は、一つ又は複数の所定のトレース制御イベントが発生した際に、そのトレースBTAC75の内容を無効にするよう構成されていてもよい。これらのトレース制御イベントは、さまざまな形態を取ることができるが、例えば、所定のトレースフィルタリング動作の終了を示す同期イベントや「トレースオン」イベントであってもよい。このようなイベントは、トレースの断絶を示すものであってもよい。これにより、古い情報がトレースBTAC75に保持されないようにする。
【0060】
後述するように、いくつかの実施例では、トレースBTACはフィールド165を有していなくてもよく、フィールド170内にターゲットアドレスの直接的/間接的な性質を保存してさえいればよい。さらに、図7及び図8の実施例を参照して説明するように、いくつかの実施例では、トレースモジュール20は、トレースBTAC75を別個に保持していなくてもよく、トレース生成回路60が必要なトレース要素を生成するには、処理部50から得られたそのローカルBTAC55とのやりとりを示す情報で十分であってもよい。図8を参照して後述する実施例では、図8で説明する方法でその内容が設定されたりクリアされたりする小さな記憶要素78がトレースモジュールに保持されている。
【0061】
一実施例では、トレース生成回路60は、命令シーケンスで分岐命令が実行されるたび、そのトレースストリーム内のトレース要素を出力するよう構成されている。そのトレース要素は、分岐が取られたか否かも示し、このことは、処理部50から入力インタフェース65を介して受け取った命令実行情報から導出可能である。トレース要素のストリームは、出力インタフェース70を介して転送され、さらにトレースバッファ30及び/又はトレース分析装置40へ向かって伝播される。各トレース要素は、本明細書では「アトム」ということもある。
【0062】
また、トレース生成回路は、そのローカルトレースBTAC75に記憶された分岐制御情報に基づいて(又は、いくつかの実施例では、処理部のローカルBTAC55に発生したヒットを示す処理部50によって転送されたBTACヒット情報に基づいて)処理部50が実行済み分岐未来命令によって特定された命令にいつ遭遇したかを検出するよう構成されている。また、この場合、トレース生成回路は、ターゲットアドレスへの分岐が発生したことを示すトレース要素をトレースストリームに発行する。このターゲットアドレス自体は、その後トレース分析装置40によって判定可能なため、分岐未来命令から直接推測可能であれば、トレースストリームにおいて特定されなくてもよい。しかしながら、ターゲットアドレスが直接推測可能ではない場合、トレース生成回路60は、処理部50から得られた情報からターゲットアドレスを判定し、そのターゲットアドレスがその後トレース分析装置40によって使用可能なように、トレースストリームに出力する。
【0063】
図3は、一実施例のトレース分析装置40を概略的に示す図である。トレース分析装置40は、その入力インタフェース105でトレースストリーム(一連のアトム)を受け取り、そこからその情報を展開回路100に転送する。この展開回路100は、開始回路が実行したプログラムコードのコピーを提供するプログラムイメージ110にアクセスできる。展開回路100は、そのプログラムイメージ内の現アドレスを追跡し(この現アドレスは、トレースがオンになった時点など、所定の時点での所定の初期値に設定される)、新しいアトムを受け取るたびに、プログラムイメージにおける特定のタイプの次の命令、例えば、トレースストリーム内の各トレース要素が分岐命令の実行を示す上記例では分岐命令に到達するまで、プログラムイメージをトラバースする。この展開回路は、現アドレスとその次の所定の命令との間に実行された各命令に関する情報をプログラムイメージから抽出し、その実行情報をすべて分析回路120に出力して分析を行う。プログラムイメージでその次の所定の命令に遭遇すると、トレースストリームで次のアトムを受け取った場合に同じプログラムイメージのトラバース処理を新しい現アドレスから再開できるように、その遭遇した分岐のターゲットアドレスに基づいて現アドレスを更新する。
【0064】
前述のように、トレースストリームには、通常の分岐命令に加えて、監視回路が分岐未来命令によって示される特定の命令に遭遇したためにターゲットアドレスへの分岐が発生したことがトレースモジュール20によって検出された際に挿入されたトレース要素も含まれる。そのような場合に、展開回路100がプログラムイメージのトラバース処理を適切に行うため、展開回路には、図3では展開BTAC115という関連するローカルBTACも備えられている。展開回路100は、分岐未来命令に遭遇した際に、プログラムイメージ110のトラバース処理を行う場合、その分岐未来命令から得られた分岐制御情報を展開BTAC115に記憶する。一実施例では、展開BTACは、図4Cに示す形態を取理、一つ又は複数のエントリを有する。各エントリは、分岐未来命令が特定する命令のアドレス(又は、前述したものと同等の他の分岐点データ)をソースアドレスとして記憶するフィールド175と、ターゲットアドレスが分岐未来命令から直接判定できる場合にそのターゲットアドレスを記憶するフィールド180とが含まれる。具体的には、その場合、展開回路100は、プログラムイメージの内容から直接ターゲットアドレスを判定することができ、そのターゲットアドレスをフィールド180に保存する。そのターゲットアドレスが直接判定可能ではない場合、フィールド180は空白のままとなり、展開回路は、後にトレースストリームに与えられた情報からターゲットアドレスを判定する。
【0065】
展開BTAC115のポピュレーションが上記の方法で行われると、展開回路100は、プログラムイメージのトラバース処理を行う際にこの展開BTAC115を参照することができる。プログラムイメージ内で考慮されている現命令のアドレスから、展開BTAC115のエントリの一つにソースアドレス情報とのヒットがあることが検出されるたびに、現在考慮中の命令が、分岐未来命令によって特定された特定の命令であると判断し、次の分岐命令に到達するまで待つのではなく、その特定の命令が次の所定の命令として扱われる。その時点で、展開回路100は、プログラムイメージの現在のトラバース処理中にトラバースされたすべての命令に関する情報を分析回路120に提供することができ、その時点で、現アドレスをターゲットアドレスに更新することもできる。直接ターゲットアドレスとしては、展開BTAC115内の関連するエントリのフィールド180に示すターゲットアドレスであり、その一方で、間接ターゲットアドレスとしては、そのターゲットアドレス情報は、現在考慮中のアトムに関連して、トレースストリームに直接提供される。
【0066】
トレースモジュール20のBTAC75に関して前述した方法と同様に、トレース分析装置40は、一つ又は複数の所定のトレース制御イベントが発生すると、その展開BTAC115の内容を無効化し、その展開BTAC115に古い情報が保持されないようにするよう構成されてもよい。
【0067】
図5は、一実施例に係る図2のトレースモジュール20が実行し得る処理を示すフロー図である。ステップ200では、監視回路が現在実行中の命令に関する情報を待ち、その情報を受け取った時点で、入力インタフェース65を介してトレース生成回路60へ送る。ステップ205では、トレース生成回路は、その現在の命令がトレースされるかどうかを判定する。いくつかの実施例では、命令シーケンス全体がトレースされると判断されてもよいが、他の実施例では、トレース機構は、現在実行中の命令によって選択的にオン・オフされてもよい。これにより、コードの特定の部分をトレース可能とし、その他の部分はトレースされない。そのような実施例では、それらのトレース対象のコードの部分に関してのみトレースストリームが生成され、前述の機構により、実際のトレース要素/アトムはそれらの部分で実行される特定の命令にしか関連しない。こうすることで、トレース分析装置は、それらの部分のその他の命令に関する情報を再構築することができる。
【0068】
ステップ205で現在の命令がトレースされないと判定された場合、処理は単にステップ200に戻り、監視回路が実行する次の命令に関する情報を待つ。
【0069】
ステップ205で現在の命令がトレースされると判定された場合、トレース生成回路は、ステップ210で、現在の命令のアドレスがトレースBTAC75のエントリにヒットするかどうかを判定する。ヒットする場合、現在の命令が以前に実行された分岐未来命令によって特定された特定の命令であることを示すため、まるで分岐であるかのように処理されなければならない。そのため、ステップ215では、その現在の命令は、分岐命令として扱われ、トレースストリームにアトムが発行される。
【0070】
一実施例では、トレース生成回路がトレースアトムを発行するよう構成された所定の命令を「P0命令」といい、このP0命令の例として、一実施例では、分岐命令が挙げられる。P0命令としては、その他のタイプの命令も考えられ、対応するアトムをトレースストリームに発生させる。分岐未来命令によって特定される命令は必ずしもそれ自体がP0命令ではないが、トレースBTAC75にヒットが存在するため、まるでP0命令であるかのように扱われ、P0命令に相応しいアトムがステップ215でトレースストリームに発行される。トレースBTAC75の関連するエントリの直接/間接ターゲットアドレスフィールド170が、分岐未来命令からターゲットアドレスを直接判定可能であることを示す場合、ターゲットアドレス情報をトレースストリームに出力する必要はない。さらに、この時点では、現在の命令が単にP0命令として扱われるので、ソースアドレス情報も出力する必要はなく、必要なのはP0命令が実行されたことを特定するアトムだけである。そのようなアトムのことを、一実施例では、「E」アトムという。これにより、分岐が発生したことを示す符号化が非常に効率的に行われる。
【0071】
トレースBTACの関連するエントリのフィールド170が、ターゲットアドレスが間接ターゲットアドレスであることを示す場合、トレース生成回路は、処理部50によって提供された命令実行情報からターゲットアドレスを判定し、そのターゲットアドレスが後にトレース分析装置40によって利用可能となるよう、そのターゲットアドレスの指標がトレースストリーム内のEアトムの後に続く。ステップ215の後、処理はステップ200に戻り、処理部50が実行する次の命令の情報を待つ。
【0072】
ステップ210で現在の命令のアドレスがトレースBTAC75のエントリにヒットしない場合、現在の命令が通常のP0命令、例えば、通常の分岐命令であるかどうかを判定する。そうである場合、ステップ225で、そのP0命令に対する通常のアトムが命令ストリームに発行される。分岐命令を考慮すると、命令実行情報は、分岐命令が実行された際に分岐が取られたか否かを特定し、この情報をステップ225で発行したアトムに提示することができる。具体的には、前述の「E」アトムは、分岐が取られた場合に発行されるが、分岐が取られなかった場合には「N」アトムが発行される。このようにアトムが存在すること自体によりP0命令に遭遇したことが示され、そのアトムのE/Nフレーバーは、分岐が取られたか否かを示す。前のステップ215を参照して、トレースBTACでヒットが検出され、それにより現在の命令がP0命令として扱われる場合、以前に行われた分岐未来命令の実行により処理回路がターゲットアドレスへの分岐を行うため、分岐が取られたことが分かり、ステップ215では生成されるアトムが常にEアトムであることが理解されよう。
【0073】
ステップ215で前述したのと同様に、ステップ225では、ターゲットアドレスが分岐命令から直接導出可能である場合、ターゲットアドレス情報を発行する必要がない。しかしながら、直接導出可能ではない場合、トレース生成回路は、ターゲットアドレスの判定を行い、そのターゲットアドレスの指標をE/Nアトムに関連付けてトレースストリームに出力する。その後、処理はステップ200に戻る。
【0074】
ステップ220で現在の命令が通常のP0命令ではないと判定された場合、ステップ230では、現在の命令によって、処理部のBTAC55にヒットが存在するため、処理部がそのプログラムカウンタを変更したかどうかを判定する。これは、例えば、処理部の命令サブセットのみがトレースされるトレースフィルタリング動作によって行われることもある。関連する以前の分岐未来命令がそのトレースされた命令サブセットの範囲外である場合、その分岐未来命令に関する情報はトレースBTAC75に保存されず、ステップ210からは「いいえ」の経路をたどることになる。一方、ステップ230で処理部のBTAC55にヒットが存在するため、処理部に分岐が発生したと判定された場合、処理かステップ235に進んで、現在の命令とターゲットアドレスに関して必要なすべての情報を入手する特別なタイプのアトムによって、トレースストリームで現在の命令をトレースする。具体的には、そのアトムによって現在の命令のアドレスと分岐先のターゲットアドレスが特定される。このために、一実施例では、処理部50において命令実行中に発生する例外に関する情報を入手するのに用いられる既存のタイプのアトムを使用することができる。ステップ235で発行されたアトムとそれに関連する情報は、ステップ215、225で発行したアトムに比べて、トレース帯域幅の観点からも費用がかかるが、トレースBTACが関連する分岐未来命令についての情報を入手できない場合にのみ発行すればよい。ステップ235の後、処理はステップ200に戻る。
【0075】
ステップ230で、現在の命令により、処理部のBTAC55にヒットが存在するため、処理部がそのプログラムカウンタを変更しないと判定された場合、ステップ240では、現在の命令により処理部BTAC55をプリロードするかどうか、すなわち、現在の命令が前述の分岐未来命令の一つであるかどうかを判定する。そうであった場合、ステップ245では、トレースBTAC75内のエントリを割り当て、ソースアドレスフィールド165と直接/間接フィールド170に処理部から転送された命令実行情報から得られた情報を入力する。その後、処理はステップ200に戻る。
【0076】
トレースBTAC75は、一実施例では、図4Bに示す形態を取り、ステップ245では、ソースアドレスと直接/間接ターゲットアドレス情報の両方がフィールド165、170に保存されるが、一実施例では、ソースアドレスフィールド165を削除して、直接/間接ターゲットアドレスフィールド170のみをトレースBTACに保持してもよい。具体的には、処理部BTAC55に1つのエントリしかなく、1つの分岐未来命令についての情報しか記憶できない場合に、処理部50から転送された命令実行情報がそのローカルBTAC55にヒットがあったことを示す場合、トレース生成回路60は、そのトレースBTAC75に保持しているエントリがその同じ分岐未来命令に関するものであると推測してもよく、ソースアドレスのチェックを行う必要なく、直接/間接ターゲットアドレス情報170を直接使用することができる。
【0077】
図6は、一実施例に係る図3の展開回路100が行う処理を示すフロー図である。ステップ300では、入力インタフェース105でトレースストリームのアトムを受け取ったかどうかを判定する。アトムを受け取った場合、ステップ305では、展開回路100が現アドレスからプログラムイメージ110のトラバース処理を開始する。トレース開始点もしくはトレース活動内の同期点では、現アドレスが特定値に設定されていてもよい。その後、以下の図6についての詳細な説明からも分かるように、展開回路が行うプログラムトラバース動作に基づいて更新される。
【0078】
ステップ310では、現在の命令の詳細が分析回路120に出力され、ステップ315では、プログラムイメージを参照して、現在の命令(すなわち、現アドレスが指す命令)が処理部のBTAC55をプリロードする命令、すなわち、上記分岐未来命令のうちの一つであるかどうかを判定する。そうである場合、処理はステップ320に進み、そこで展開回路100は、その展開BTAC115にエントリを割り当て、分岐未来命令が特定した命令のアドレスをソースアドレスとしてそのエントリに記憶する。また、現在の命令、すなわち、分岐未来命令から直接算出可能な場合、そのターゲットアドレスをそのエントリに記憶する。その後、処理はステップ335に進み、そこでプログラムイメージの次の命令を(指示するアドレスをプログラムイメージの次の命令に進めることにより)現在の命令に設定し、処理がステップ310に戻る。
【0079】
ステップ315で現在の命令が分岐未来命令ではないと判定された場合、ステップ325では、現在の命令のアドレスが展開BTAC115に記憶されたソースアドレスと一致するかどうかを判定する。一致する場合、現在の命令が事前に実行された分岐未来命令によって特定された特定の命令であることを示すため、P0命令の場合と同様に、プログラムイメージのトラバース処理を停止させる命令として扱われなければならない。これにより、処理はステップ340へと進み、展開回路が保持している現アドレスがターゲットアドレスに更新される。これは、ターゲットアドレスが直接ターゲットアドレスであれば、展開BTACエントリから直接入手できるし、ターゲットアドレスが間接ターゲットアドレスであれば、トレースストリームに与えられた情報から入手できる。ステップ345では、処理はプログラムイメージのトラバース処理を停止させ、ステップ300に戻って次のアトムを待つ。
【0080】
ステップ325で現在の命令のアドレスが展開BTACに保持されたソースアドレスと一致しないと判定された場合、ステップ330では、プログラムイメージの現在の命令が通常のP0命令、例えば、分岐命令であるかどうかを判定する。そうであれば、処理は再びステップ340に進み、それでなければステップ335に進む。
【0081】
このような方法により、通常のP0命令に関連付けられるか、分岐未来命令に特定された命令に関連付けられた各アトムを受け取ると、プログラムイメージがトラバースされるということが分かる。図6で説明した方法により入力が行われる展開BTAC115を用いることで、展開回路100は、トレースストリームを正しく解釈する、具体的には、各アトムに応じてプログラムイメージのトラバース処理を停止するタイミングを正確に判断することができ、それによって、命令フローの分岐を、それらが分岐命令によるものなのか、分岐未来命令によって分岐へと任意に変換されたその他の命令によるものなのかどうかに関係なく、正しく追跡することが可能となる。
【0082】
図7は、トレースBTAC75を必要としない他の実施例における図2のトレースモジュール20の動作を示すフロー図である。
【0083】
ステップ400では、トレース生成回路は、処理部から受け取った命令実行情報を、分岐が処理部によって処理されたという指標がその情報に含まれるまで蓄積させる。一実施例では、処理部は、各命令が処理部によって実行されると、命令実行情報を提供してもよい。一方、ウェイポイントインタフェースが処理部50とトレースモジュール20の間に保持される(ウェイポイントインタフェースは、処理部50とトレースモジュール20の間に保持されている次の分岐のアドレスを前の分岐のターゲットアドレスに提供することによる命令の実行を意味する)他の実施例では、処理部自身によって、分岐のようなポイントが処理されるまで、必要な命令実行情報のバッファリングが行われてもよく、そのすべての命令実行情報を一括してトレースモジュール20に提供する。
【0084】
ステップ405では、処理部から提供された情報が、分岐未来命令が分岐の前に実行されたことを示すかどうかを判定する。そうであれば、ステップ410で、処理部からの情報が、発生した分岐は処理部のBTAC55におけるヒットによるもの、すなわち、処理部が実行された分岐未来命令により特定された命令に遭遇した結果生じたものであることも示しているかどうかを判定する。そうであれば、処理はステップ415に進み、ターゲットアドレスに対するBTACヒット分岐を示すEアトムをトレースストリームに発行する。ターゲットアドレスが分岐未来命令から直接判定可能であれば、そのEアトムに加えてさらなる情報は必要ないが、ターゲットアドレスが間接的なものである場合、トレース生成回路60は、処理部50から提供された命令実行情報からターゲットアドレスを判定し、そのターゲットアドレスはトレースストリームのEアトムに関連付けられて転送される。その後、ステップ445では、トレースモジュール20に現在保持されている命令実行情報がクリアされて、処理がステップ400に戻る。
【0085】
処理部に提供された情報が、分岐の前に分岐未来命令が実行されたことを示しているとステップ405で判定されたにも関わらず、分岐が処理部BTACのヒットによるものではなかったとステップ410で判定された場合、処理はステップ420に進む。この時点で、トレース生成回路60は、BTACベースの分岐に対してNアトムを発行して、BTACベースの分岐が発生しなかったとフラグを立て、その後発生した通常の分岐を特定するアトムをさらに発行する。前述のように、このアトムは、処理部50により提供された命令実行情報から判定されるような、その分岐命令の取られたか/取られなかったかの挙動によって、Eアトム又はNアトムである。ステップ420の後、処理はステップ445に進む。
【0086】
処理部からの情報が、分岐の前に分岐未来命令が実行されたことを示していないとステップ405で判定された場合、処理はステップ425に進み、分岐未来命令が実行されたか否かが命令実行情報から実際にわかっているかどうかを判定する。分岐未来命令が実行されなかったことがその情報から分かっている場合、処理はステップ430に進み、命令実行情報における取られたか/取られなかったかに関する情報によって、Eアトム又はNアトムであるアトムが発生した通常の分岐に対して発行される。
【0087】
一方、処理部に実行された命令シーケンスのある特定の部分だけがトレースの対象となる実施例では、分岐未来命令が実行されたか否かをトレースモジュールが断定できない場合がある。その場合、ステップ425からは「はい」の経路をたどり、ステップ435では、処理部によって提供された情報が、分岐がそれでもなお処理部BTAC55のBTACヒットによるものであることを示しているかどうかを判定する。そうであれば、処理はステップ440に進み、発生した分岐イベントに関するすべての必要な情報が含まれる前述の「例外型」アトムが発行される。具体的には、そのアトムには、分岐を発生させた命令のアドレスと、分岐先ターゲットとが含まれる。
【0088】
処理部からの情報が、分岐がBTACヒットによるものではなかった、すなわち、通常の分岐によるものであったことを示している場合、処理はステップ435からステップ430へと進む。ステップ430又は440の後、処理はステップ445に進む。
【0089】
図7を参照して説明したような実施例では、トレース生成回路に対応するトレースBTAC75がなくてもシステムを運用可能であることが理解されよう。その代わり、トレース生成回路は、処理部BTAC55内で発生したBTACヒットを示す、処理部50から提供された情報により動作を行い、トレース要素を生成する。なお、図7の方法を採用する場合も、トレース分析装置40は展開BTAC115を含み、展開回路100は図6を参照して説明した方法で動作を行う。
【0090】
図8は、さらに他の実施例に係るトレースモジュール20の動作を示すフロー図である。本実施例では、トレースモジュール20は、前述のトレースBTAC75を備えておらず、図8で説明する方法で設定されたりクリアされたりするフィールド(一実施例では、単一ビットであってもよい)を保持する単純な記憶要素78を備えている。図8のステップ500及び505は、前述の図5のステップ200及び205に対応し、ステップ510及び515は、図5のステップ220及び225に対応する。本実施例では、トレースモジュールがそれ自身のBTAC75を備えていないので、図5のステップ210及び215は図8では反復され図、ステップ505からの「はい」の経路が直接ステップ510へ進む。処理がステップ515に進んで現在の命令に対してアトムが発行される場合、ステップ529では、トレースモジュールの記憶要素78がクリアされて、その後処理がステップ500に戻る。
【0091】
現在の命令が通常のP0命令ではないとステップ510で判定された場合、図5のステップ230に対応するステップ525に処理が進む。現在の命令によって、処理部50にそのローカルBTAC55にヒットが存在するために、そのプログラムカウンタを変更させるとステップ525で判定された場合、ステップ530では、トレースモジュールの記憶要素78が設定されているかどうかを判定する。設定されている場合、ステップ535では、現在の命令がP0命令として扱われ、トレースストリームにアトムが発行される。このステップ535は、基本的には図5のステップ215に対応している。その後、ステップ540では、トレースモジュールの記憶要素がクリアされて、処理がステップ500に戻る。
【0092】
ステップ530で記憶要素78がセットされていないと判定された場合、図5のステップ235に対応するステップ545へと処理が進み、「例外型」アトムが発行された後、処理がステップ500に戻る。
【0093】
現在の命令によって、BTAC55にヒットが存在するために、処理部にそのプログラムカウンタを変更させないとステップ525で判定された場合、ステップ550では、現在の命令が分岐未来命令であるかどうかを判定し、処理部50によって処理部のBTAC55にエントリの割り当てを行う。そうであれば、ステップ555では、記憶要素78のビットを設定し、その後処理がステップ500に戻る。一方、ステップ550から「いいえ」経路をたどる場合、処理はただ直接ステップ500に戻る。
【0094】
一実施例では、図8で説明した方法によって設定やクリアが行われる前述の単一ビットが記憶要素78に単に保持される。その際、処理部50からトレースモジュール20に転送された命令実行情報は、処理回路が特定の命令に遭遇した場合に発生する分岐に対するターゲットアドレスが分岐未来命令内で特定される即値から直接導出可能なものであるか否かを示すよう構成することができる。図5のステップ215を参照して前述したのと同様に、ステップ535でEアトムを発行する際に、ターゲットアドレスが直接導出可能ではないと判定された場合、トレース生成回路は、処理部50によって提供された命令実行情報からターゲットアドレスを判定し、トレース分析装置40が後にそのターゲットアドレスを入手できるよう、そのターゲットアドレスの指標がトレースストリームのEアトムに続く。
【0095】
他の実施例において、記憶要素は、ステップ555では、トレースBTAC75のフィールド170について前述した方法と同様に、直接的/間接的な指標を必要に応じて保持し、トレースモジュール20は、ターゲットアドレスが直接的か間接的か、ひいてはターゲットアドレスの指標をトレースストリームに出力する必要があるか否かを決定する際にその情報を参照することができる。
【0096】
上記実施例から、分岐未来命令を実行することにより、分岐挙動と、シーケンスで特定の命令に遭遇した場合に分岐未来命令によって特定されるターゲットアドレスへの分岐を処理回路に行わせる特定の命令とを対応付けることが可能となることが理解されよう。このトレース機構により、トレース分析装置が処理回路によって実行された命令フローを正確に判定することができるよう、上記分岐挙動をトレースすることが可能となる。
【0097】
上記実施例で説明した分岐未来命令は、命令シーケンスで後に遭遇する任意の命令をターゲットアドレスへの分岐を発生させる命令と見なす。一方、上記技術を採用し得る分岐未来命令と見なされる他の形態の命令としては、プログラムループ本体の終了時点でのループエンド命令がある。その時点では、そのループエンド命令は、プログラムループ本体内での直前の命令を特定の命令と見なし、ターゲットアドレスがプログラムループ本体の開始時点における命令のアドレスである。この場合、プログラムループの性質上、特定の命令がまずループエンド命令の前に現れるが、そのループがさらに反復して行われると、後に何度も命令シーケンスでも遭遇することになる。従って、トレース生成部は、上記直前の命令に対する分岐制御情報が処理部の分岐制御キャッシュに格納される時点でその直前の命令に遭遇するために分岐が発生したことを命令実行情報が示すたびに分岐がトリガされたことを示すトレース要素を発行するよう構成することができる。
【0098】
このようなループエンド命令は、いわゆる「ゼロオーバーヘッドループ」の実施に利用可能である。この「ゼロオーバーヘッドループ」では、ループエンド命令(ゼロオーバーヘッドループエンド(ZOLE)命令ともいう)が、ループが反復されるたびに実行されなくてもよく、最初の反復が行われた後、プログラムループ本体の最後から二番目の命令に遭遇した際にさらなる反復に必要な分岐処理をトリガすることができる。上記の方法でトレース生成部にトレース要素を生成させることにより、分析回路は、処理回路によるそのようなゼロオーバーヘッドループの実行を正確に追跡することが可能となる。
【0099】
本明細書で説明した実施例によれば、監視回路によって実際に実行された命令の(通常小さな)サブセットに対してのみトレース要素を生成するが、任意の命令を効果的に分岐に変換することができる一つ又は複数の分岐未来命令を含む命令シーケンスが監視回路によって実行された場合も、監視回路の活動を正確に追跡可能な非常に効率的なトレース機構を実現可能である。
【0100】
本出願において、「〜ように構成される」という表記は、装置の要素が、定められた動作を行うことが可能な構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は方法を意味する。例えば、装置が定められた動作を提供する専用のハードウェアを有するか、又は、プロセッサもしくは他の処理デバイスがその機能を行うようにプログラムされていてもよい。「〜ように構成される」とは、定められた動作を提供するために、その装置の要素を変更する必要が決してないことを意味する。
【0101】
本明細書では本発明の例示的な実施例について、添付の図面を参照しながら詳しく説明してきたが、本発明がそれらの厳密な実施例に制限されず、当業者によって、添付の特許請求の範囲によって定められる発明の範囲及び趣旨を逸脱することなく、さまざまな変更、追加、修正がそこに加えられてもよいことが理解される。例えば、本発明の範囲を逸脱することなく、従属請求項の特徴のさまざまな組み合わせが独立請求項の特徴と共になされることも可能である。
図1
図2
図3
図4A
図4B
図4C
図5
図6
図7
図8