IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

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

特許7245842デバイスをデバッグするときにメタデータにアクセスするための装置及び方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-15
(45)【発行日】2023-03-24
(54)【発明の名称】デバイスをデバッグするときにメタデータにアクセスするための装置及び方法
(51)【国際特許分類】
   G06F 11/36 20060101AFI20230316BHJP
   G06F 11/22 20060101ALI20230316BHJP
   G06F 15/78 20060101ALI20230316BHJP
【FI】
G06F11/36 120
G06F11/22 607Z
G06F15/78 516
G06F15/78 550
G06F15/78 514
【請求項の数】 22
(21)【出願番号】P 2020544021
(86)(22)【出願日】2019-01-17
(65)【公表番号】
(43)【公表日】2021-06-17
(86)【国際出願番号】 GB2019050129
(87)【国際公開番号】W WO2019166762
(87)【国際公開日】2019-09-06
【審査請求日】2022-01-11
(31)【優先権主張番号】1803179.9
(32)【優先日】2018-02-27
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ウィリアムズ、マイケル ジョン
(72)【発明者】
【氏名】ホーリー、ジョン マイケル
【審査官】木村 雅也
(56)【参考文献】
【文献】欧州特許出願公開第0652516(EP,A1)
【文献】米国特許出願公開第2002/087918(US,A1)
【文献】米国特許第10078113(US,B1)
【文献】米国特許出願公開第2010/0192026(US,A1)
【文献】特許第2907808(JP,B1)
【文献】特開2002-108648(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G06F 11/22
G06F 15/78
(57)【特許請求の範囲】
【請求項1】
デバッグ・アクセス・ポート回路であって、
デバッガからコマンドを受信するためのデバッグ・インターフェースと、
前記デバッガがデバイスのメモリ・システムにアクセスすることを可能にするためにバスに結合するためのバス・インターフェースであって、前記デバイスは、関連するメタデータ項目を有するデータ・グラニュールから形成されたデータに対して動作し、前記バス・インターフェースは、前記メモリ・システムと前記バス・インターフェースとの間の前記バスを介した前記データ・グラニュール及び前記メタデータ項目の両方の通信を可能にする、バス・インターフェースと、
複数の記憶要素であって、前記バス・インターフェースを介して前記メモリ・システム内で実施される前記アクセスが、前記コマンドによってアクセスされる前記記憶要素に応じて制御されるように、前記デバッガから発行された前記コマンドを介してアクセス可能な複数の記憶要素と
を備え、
前記記憶要素のうちの少なくとも1つが、複数のメタデータ項目を記憶するためのメタデータ記憶要素を備え、
前記デバッグ・アクセス・ポート回路は、前記デバッガからの少なくとも1つのコマンドに応答して、前記メタデータ記憶要素と前記メモリ・システムとの間で前記複数のメタデータ項目のうちの少なくとも1つを転送するために前記メモリ・システムへのアクセスを実施する、デバッグ・アクセス・ポート回路。
【請求項2】
前記記憶要素のうちの少なくとも1つが、アクセスされることになるメモリ・アドレスの指示を記憶するためのメモリ・アドレス記憶要素を備え、
前記デバッグ・アクセス・ポート回路は、前記複数のメタデータ項目のうちの前記少なくとも1つにアクセスするための前記メモリ・システム内のロケーションを決定するために前記メモリ・アドレス記憶要素を参照するように構成されている、請求項1に記載のデバッグ・アクセス・ポート回路。
【請求項3】
前記デバッグ・アクセス・ポート回路は、前記複数のメタデータ項目のうちの前記少なくとも1つのために使用される前記メタデータ記憶要素内のロケーションを決定するために前記メモリ・アドレス記憶要素を参照するようにさらに構成されている、請求項2に記載のデバッグ・アクセス・ポート回路。
【請求項4】
前記メモリ・アドレスの指定された数の低位アドレス・ビットが、前記メタデータ記憶要素内の前記ロケーションを決定するために使用される、請求項3に記載のデバッグ・アクセス・ポート回路。
【請求項5】
前記メモリ・システムからの読取りアクセス中に、前記メモリ・システムから取り出された前記メタデータ項目は、前記メタデータ記憶要素内の前記決定されたロケーションに書き込まれるが、前記メタデータ記憶要素内の他のロケーションのコンテンツが不変のままである、請求項3又は4に記載のデバッグ・アクセス・ポート回路。
【請求項6】
前記メタデータ記憶要素は、前記メモリ・システムからの読取りアクセス中にメタデータ項目を前記メタデータ記憶要素に追加し、前記メモリ・システムへの書込みアクセス中に前記メタデータ記憶要素からメタデータ項目を出力するためにシフト動作が使用されるように、シフト・レジスタ構造として構成されている、請求項1又は2に記載のデバッグ・アクセス・ポート回路。
【請求項7】
前記複数の記憶要素は、前記デバッガからのコマンドを介してアクセスされる場合に、前記メモリ・システムへのアクセスが前記デバッグ・アクセス・ポート回路によって開始されることを引き起こす、1つ又は複数のアクセス・トリガ要素をさらに備える、請求項1から6までのいずれか一項に記載のデバッグ・アクセス・ポート回路。
【請求項8】
前記複数の記憶要素は、前記1つ又は複数のアクセス・トリガ要素がアクセスされる場合に実施されることになるアクセス動作のタイプを識別するために前記デバッガからのコマンドを介してアクセス可能なモード制御記憶要素をさらに備える、請求項7に記載のデバッグ・アクセス・ポート回路。
【請求項9】
前記1つ又は複数のアクセス・トリガ要素は複数のアクセス・トリガ要素を備え、各アクセス・トリガ要素は異なるタイプのアクセス動作に関連し、前記デバッガは、前記メモリ・システムへのアクセス動作を開始するためにコマンドを発行する場合に、開始されることになる前記タイプのアクセス動作のための適切なアクセス・トリガ要素を前記コマンド内で識別するように構成されている、請求項7に記載のデバッグ・アクセス・ポート回路。
【請求項10】
前記デバッグ・アクセス・ポート回路は、前記デバッガから受信された前記コマンドに応じて、前記バス・インターフェースを介して、サポートされるアクセス動作のセットからのアクセス動作を開始するように構成されている、請求項1から9までのいずれか一項に記載のデバッグ・アクセス・ポート回路。
【請求項11】
前記サポートされるアクセス動作のセットは、
前記メタデータ記憶要素から取得された値を使用してメタデータ項目の値を更新し、前記デバッガからのコマンドによって提供されたデータ値を使用して前記関連するデータ・グラニュールの少なくとも一部分の現在の値を更新するための書込み動作と、
前記メタデータ記憶要素から取得された値を使用してメタデータ項目の値を更新するが、前記関連するデータ・グラニュールの現在の値を保存するための書込み動作と、
前記メタデータ記憶要素から取得された値を使用してメタデータ項目の値を更新し、前記関連するデータ・グラニュールの少なくとも一部分の値を知られている値に更新するための書込み動作と、
データ・グラニュールの少なくとも一部分を前記メモリ・システムに書き込み、前記関連するメタデータ項目の現在の値を保存するための書込み動作と、
データ・グラニュールの少なくとも一部分を前記メモリ・システムに書き込み、前記関連するメタデータ項目の値をデフォルト値に更新するための書込み動作と
のうちの1つ又は複数を備える、請求項10に記載のデバッグ・アクセス・ポート回路。
【請求項12】
前記サポートされるアクセス動作のセットは、
前記メモリ・システムからメタデータ項目を読み取り、前記読み取られたメタデータ項目の値を前記メタデータ記憶要素に記憶し、前記メモリ・システムから前記関連するデータ・グラニュールの少なくとも一部分をさらに読み取るための読取り動作と、
前記関連するデータ・グラニュールをさらに読み取ることなしに、前記メモリ・システムからメタデータ項目を読み取り、前記読み取られたメタデータ項目の値を前記メタデータ記憶要素に記憶するための読取り動作と、
前記関連するメタデータ項目を読み取ることなしに、前記メモリ・システムからデータ・グラニュールの少なくとも一部分を読み取るための読取り動作と
のうちの1つ又は複数を備える、請求項10に記載のデバッグ・アクセス・ポート回路。
【請求項13】
各メタデータ項目は1つ又は複数のビットを備える、請求項1から12までのいずれか一項に記載のデバッグ・アクセス・ポート回路。
【請求項14】
各メタデータ項目は、前記関連するデータ・グラニュールが能力を指定するか否かを識別する能力タグである、請求項1から13までのいずれか一項に記載のデバッグ・アクセス・ポート回路。
【請求項15】
各メタデータ項目は、前記関連するデータ・グラニュールの割振りポリシーを識別する割振りタグである、請求項1から14までのいずれか一項に記載の方法。
【請求項16】
前記デバッグ・インターフェースは、JTAG、シリアル・ワイヤ、又はPCIインターフェースのうちの1つである、請求項1から15までのいずれか一項に記載のデバッグ・アクセス・ポート回路。
【請求項17】
前記複数の記憶要素はアドレス空間内に存在し、前記デバッグ・インターフェースにおいて受信されたコマンドが、前記アドレス空間内のアドレスを指定することによって、前記コマンドが関係する記憶要素を識別する、請求項1から16までのいずれか一項に記載のデバッグ・アクセス・ポート回路。
【請求項18】
前記複数の記憶要素は複数のレジスタを備える、請求項1から17までのいずれか一項に記載のデバッグ・アクセス・ポート回路。
【請求項19】
前記デバッグ・アクセス・ポート回路は、前記デバッガからのコマンドに応答して、前記バス・インターフェースを介して、アクセス動作の複数の反復を開始し、各反復について、前記メモリ・アドレス記憶要素に記憶された前記メモリ・アドレスの指示が増分される、請求項2に従属する場合の請求項1から18までのいずれか一項に記載のデバッグ・アクセス・ポート回路。
【請求項20】
前記アクセス動作が、メタデータ項目及び前記データの両方がアクセスされることを要求する場合に、前記メモリ・アドレスの指示は、次の反復のためのアドレスの指示を提供するために、現在の反復においてアクセスされたデータの量に基づいて増分され、
前記アクセス動作が、メタデータ項目のみがアクセスされることを要求する場合に、前記メモリ・アドレスの指示は、データ・グラニュール・サイズのn倍増分され、nは、前記次の反復のためのアドレスの指示を提供するために、前記現在の反復においてアクセスされたメタデータ項目の数に等しい、請求項19に記載のデバッグ・アクセス・ポート回路。
【請求項21】
デバッグ・アクセス・ポート回路を動作させる方法であって、
デバッガからコマンドを受信するステップと、
前記デバッガがデバイスのメモリ・システムにアクセスすることを可能にするためにバスに結合するためのバス・インターフェースを提供するステップであって、前記デバイスは、関連するメタデータ項目を有するデータ・グラニュールから形成されたデータに対して動作し、前記バス・インターフェースは、前記メモリ・システムと前記バス・インターフェースとの間の前記バスを介した前記データ・グラニュール及び前記メタデータ項目の両方の通信を可能にする、ステップと、
複数の記憶要素であって、前記バス・インターフェースを介して前記メモリ・システム内で実施される前記アクセスが、前記コマンドによってアクセスされる前記記憶要素に応じて制御されるように、前記デバッガから発行された前記コマンドを介してアクセス可能な複数の記憶要素を提供するステップと、
複数のメタデータ項目を記憶するためのメタデータ記憶要素として前記記憶要素のうちの少なくとも1つを提供するステップと、
前記デバッガからの少なくとも1つのコマンドに応答して、前記メタデータ記憶要素と前記メモリ・システムとの間で前記複数のメタデータ項目のうちの少なくとも1つを転送するために前記メモリ・システムへのアクセスを実施するステップと
を含む、方法。
【請求項22】
デバッグ・アクセス・ポート回路であって、
デバッガからコマンドを受信するためのデバッグ・インターフェース手段と、
前記デバッガがデバイスのメモリ・システムにアクセスすることを可能にするためにバスに結合するためのバス・インターフェース手段であって、前記デバイスは、関連するメタデータ項目を有するデータ・グラニュールから形成されたデータに対して動作し、前記バス・インターフェース手段は、前記メモリ・システムと前記バス・インターフェース手段との間の前記バスを介した前記データ・グラニュール及び前記メタデータ項目の両方の通信を可能にする、バス・インターフェース手段と、
複数の記憶要素手段であって、前記バス・インターフェース手段を介して前記メモリ・システム内で実施される前記アクセスが、前記コマンドによってアクセスされる前記記憶要素手段に応じて制御されるように、前記デバッガから発行された前記コマンドを介してアクセス可能な複数の記憶要素手段と
を備え、
前記記憶要素手段のうちの少なくとも1つが、複数のメタデータ項目を記憶するためのメタデータ記憶要素手段を備え、
前記デバッグ・アクセス・ポート回路は、前記デバッガからの少なくとも1つのコマンドに応答して、前記メタデータ記憶要素手段と前記メモリ・システムとの間で前記複数のメタデータ項目のうちの少なくとも1つを転送するために前記メモリ・システムへのアクセスを実施する、デバッグ・アクセス・ポート回路。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、デバイスをデバッグするときにメタデータにアクセスするための技法に関する。
【背景技術】
【0002】
デバイスは、様々な形態をとることができ、たとえば、デバイスのメモリ・システム内に保持されたデータに対してデータ処理動作を実施するための中央処理ユニット(CPU:central processing unit)など、1つ又は複数の処理回路を含み得る。
【0003】
デバイスは、関連するメタデータ項目(metadata item)を有するデータ・グラニュール(data granule)から形成されたデータに対して動作するように構成され得る。データ・グラニュールのサイズは実装に応じて変動し得、実際、各データ・グラニュールに関連するメタデータ項目のサイズも、実装に応じて変動し得る。
【0004】
たとえば、処理回路のうちの1つ上で実行されるべきプログラムをデバッグするために、デバイスに関してデバッギング動作を実施するとき、デバッガは、いくつかの時点において、対応するデータ・グラニュールに関係する1つ又は複数のメタデータ項目にアクセスすることを望み得る。たとえば、それらのメタデータ項目の各々の値を読み取ることが所望され得る。代替的に、それらのメタデータ項目の各々の現在の値を更新するために書込み動作を実施することが所望され得る。
【0005】
デバイスの処理回路は、1つ又は複数のメタデータ項目にアクセスするためのメタデータ・アクセス動作の実施をサポートし得、したがって、デバッガは、デバッガがメタデータにアクセスすることを望むとき、処理回路がそのようなメタデータ・アクセス動作を実施することを引き起こすために、処理回路にコマンドを発行し得る。
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、これは、デバッガが当該のメタデータ項目にアクセスするのをサポートするために、処理回路によって実施されている現在の動作を停止させることを必要とし得る。デバイスのデバッギング中にメタデータ項目にアクセスするための改善された機構を提供することが望ましい。
【課題を解決するための手段】
【0007】
第1の例示的な構成では、デバッグ・アクセス・ポート回路であって、デバッガからコマンドを受信するためのデバッグ・インターフェースと、デバッガがデバイスのメモリ・システムにアクセスすることを可能にするためにバスに結合するためのバス・インターフェースであって、デバイスが、関連するメタデータ項目を有するデータ・グラニュールから形成されたデータに対して動作し、バス・インターフェースが、メモリ・システムとバス・インターフェースとの間のバスを介したデータ・グラニュールとメタデータ項目の両方の通信を可能にする、バス・インターフェースと、デバッガから発行されたコマンドを介してアクセス可能な複数の記憶要素であって、バス・インターフェースを介してメモリ・システム内で実施されるアクセスが、コマンドによってアクセスされる記憶要素に応じて制御されるような、複数の記憶要素とを備え、記憶要素のうちの少なくとも1つが、複数のメタデータ項目を記憶するためのメタデータ記憶要素を備え、デバッグ・アクセス・ポート回路が、デバッガからの少なくとも1つのコマンドに応答して、メタデータ記憶要素とメモリ・システムとの間で複数のメタデータ項目のうちの少なくとも1つを転送するためにメモリ・システムへのアクセスを実施する、デバッグ・アクセス・ポート回路が提供される。
【0008】
別の例示的な構成では、デバッグ・アクセス・ポート回路を動作させる方法であって、デバッガからコマンドを受信するステップと、デバッガがデバイスのメモリ・システムにアクセスすることを可能にするためにバスに結合するためのバス・インターフェースを提供するステップであって、デバイスが、関連するメタデータ項目を有するデータ・グラニュールから形成されたデータに対して動作し、バス・インターフェースが、メモリ・システムとバス・インターフェースとの間のバスを介したデータ・グラニュールとメタデータ項目の両方の通信を可能にする、ステップと、デバッガから発行されたコマンドを介してアクセス可能な複数の記憶要素を提供するステップであって、バス・インターフェースを介してメモリ・システム内で実施されるアクセスが、コマンドによってアクセスされる記憶要素に応じて制御されるような、ステップと、複数のメタデータ項目を記憶するためのメタデータ記憶要素として記憶要素のうちの少なくとも1つを提供するステップと、デバッガからの少なくとも1つのコマンドに応答して、メタデータ記憶要素とメモリ・システムとの間で複数のメタデータ項目のうちの少なくとも1つを転送するためにメモリ・システムへのアクセスを実施するステップとを含む、方法が提供される。
【0009】
またさらなる例示的な設定では、デバッグ・アクセス・ポート回路であって、デバッガからコマンドを受信するためのデバッグ・インターフェース手段と、デバッガがデバイスのメモリ・システムにアクセスすることを可能にするためにバスに結合するためのバス・インターフェース手段であって、デバイスが、関連するメタデータ項目を有するデータ・グラニュールから形成されたデータに対して動作し、バス・インターフェース手段が、メモリ・システムとバス・インターフェース手段との間のバスを介したデータ・グラニュールとメタデータ項目の両方の通信を可能にする、バス・インターフェース手段と、デバッガから発行されたコマンドを介してアクセス可能な複数の記憶要素手段であって、バス・インターフェース手段を介してメモリ・システム内で実施されるアクセスが、コマンドによってアクセスされる記憶要素手段に応じて制御されるような、複数の記憶要素手段とを備え、記憶要素手段のうちの少なくとも1つが、複数のメタデータ項目を記憶するためのメタデータ記憶要素手段を備え、デバッグ・アクセス・ポート回路が、デバッガからの少なくとも1つのコマンドに応答して、メタデータ記憶要素手段とメモリ・システムとの間で複数のメタデータ項目のうちの少なくとも1つを転送するためにメモリ・システムへのアクセスを実施する、デバッグ・アクセス・ポート回路が提供される。
【0010】
本技法は、単に例として、添付の図面に示されているその実例を参照しながらさらに説明される。
【図面の簡単な説明】
【0011】
図1】一実例によるシステムのブロック図である。
図2】一実例による、図1のメタデータ・アウェア・メモリ・アクセス・ポート内に提供される構成要素を示すブロック図である。
図3A】1つの例示的な構成による、デバッガがいくつかのメタデータ項目を読み取るための機構を示す流れ図である。
図3B】1つの例示的な構成による、デバッガがいくつかのメタデータ項目を読み取るための機構を示す流れ図である。
図4A】1つの例示的な構成による、デバッガが一連のメタデータ項目を書き込むための機構を示す流れ図である。
図4B】1つの例示的な構成による、デバッガが一連のメタデータ項目を書き込むための機構を示す流れ図である。
図5】代替構成による、図1のメタデータ・アウェア・メモリ・アクセス・ポート内に提供される構成要素を示すブロック図である。
図6A図5のメタデータ・アウェア・メモリ・アクセス・ポートを使用するときにデバッガが一連のメタデータ項目をどのように読み取り得るかを示す流れ図である。
図6B図5のメタデータ・アウェア・メモリ・アクセス・ポートを使用するときにデバッガが一連のメタデータ項目をどのように読み取り得るかを示す流れ図である。
図7A図5のメタデータ・アウェア・メモリ・アクセス・ポートを使用するときにデバッガが一連のメタデータ項目にどのように書き込み得るかを示す流れ図である。
図7B図5のメタデータ・アウェア・メモリ・アクセス・ポートを使用するときにデバッガが一連のメタデータ項目にどのように書き込み得るかを示す流れ図である。
図8A】メタデータ項目が各データ・グラニュールに関連してどのように提供され得るかを示す図である。
図8B】メタデータ項目が各データ・グラニュールに関連してどのように提供され得るかを示す図である。
図9】メタデータ項目が能力タグである例示的な構成を示す図である。
図10】メタデータ項目が割振りタグである別の例示的な構成を示す図である。
図11】1つの例示的な構成による、デバッガがそれを介してメタデータ・アウェア・メモリ・アクセス・ポートにコマンドを発行し得る、デバッガにとって利用可能な限られたアドレス空間を概略的に示す図である。
【発明を実施するための形態】
【0012】
1つの例示的な構成によれば、デバッグ・アクセス・ポート回路は、デバイスに対してデバッギング・アクティビティを実施するときのデバッガによる使用のために提供される。特に、デバッグ・アクセス・ポート回路は、デバッガからコマンドを受信するためのデバッグ・インターフェースと、デバッガがデバイスのメモリ・システムにアクセスすることを可能にするためにバスに結合するためのバス・インターフェースとを有する。デバイスは、関連するメタデータ項目を有するデータ・グラニュールから形成されたデータに対して動作するように構成され、バス・インターフェースは、メモリ・システムとバス・インターフェースとの間のバスを介したデータ・グラニュールとメタデータ項目の両方の通信を可能にするように構成される。
【0013】
デバッグ・アクセス・ポート回路は、デバッガから発行されたコマンドを介してアクセス可能な複数の記憶要素であって、バス・インターフェースを介してメモリ・システム内で実施されるアクセスが、コマンドによってアクセスされる記憶要素に応じて制御されるような、複数の記憶要素を有する。本明細書で説明される実例によれば、記憶要素のうちの少なくとも1つは、複数のメタデータ項目を記憶するためのメタデータ記憶要素を備える。デバッグ・アクセス・ポート回路は、次いで、デバッガからの少なくとも1つのコマンドに応答して、メタデータ記憶要素とメモリ・システムとの間で複数のメタデータ項目のうちの少なくとも1つを転送するためにメモリ・システムへのアクセスを実施する。
【0014】
このようにしてデバッグ・アクセス・ポート回路を構成することによって、これは、デバッガが、デバイス内の処理回路を、それの代わりにアクセス動作を実施するために採用する必要なしに、メタデータ項目に対してアクセス動作を実施するためにデバイスのメモリ・システムに効率的にアクセスするための機構を提供する。複数のメタデータ項目を記憶することができるメタデータ記憶要素を提供することによって、メモリ中の一連のメタデータ項目についての値が、デバッガによって発行された適切なコマンドを使用してメタデータ記憶要素に読み取られ得るか、又は代替的に、メタデータ項目についての一連の更新された値が、メタデータ記憶要素内に記憶され得、次いで、メタデータ記憶要素中に保持された値を使用して、メモリ・システムに記憶された一連のメタデータ項目の値を更新するために、デバッガによって書込み動作がトリガされ得る。
【0015】
アクセスされることになるメタデータ項目がデバッガによって識別され得るいくつかのやり方がある。1つの例示的な構成では、デバッグ・アクセス・ポート回路は、記憶要素のうちの少なくとも1つが、アクセスされることになるメモリ・アドレスの指示を記憶するためのメモリ・アドレス記憶要素を備えるように構成される。メモリ・アドレス記憶要素に発行されたコマンドを介して、メモリ・アドレスが、したがって、メモリ・アドレス記憶要素内に記憶され得る。デバッグ・アクセス・ポート回路は、次いで、複数のメタデータ項目のうちの少なくとも1つにアクセスするためのメモリ・システム内のロケーションを決定するためにメモリ・アドレス記憶要素を参照するように構成され得る。
【0016】
アドレスは、様々な形式をとることができる。1つの例示的な構成では、アドレスは、特定のデータ・グラニュールを識別するために使用され、そのアドレスに基づいて、メモリ中の関連するメタデータ項目のロケーションが決定され得、したがって、そのロケーションは、デバッガがメモリ・アドレス記憶要素内のそのアドレスを使用してメタデータ・アクセス動作をトリガするためにコマンドを発行したとき、アクセスされ得る。
【0017】
デバッガ・アクセス・ポート回路を介してデバッガによってトリガされた各メモリ・アクセス動作に応答してアクセスされるメタデータ項目の数は、実装に応じて変動することができる。たとえば、メモリ・アクセス動作をトリガするデバッガからの単一のコマンドに応答して複数のメタデータ項目にアクセスすることが可能であり得る。しかしながら、代替手法では、デバッガがメモリ・アクセス動作をトリガするためにコマンドを発行するたびに、単一のメタデータ項目がアクセスされ得る。
【0018】
メタデータ記憶要素内で使用されることになるロケーションが、アクセスされている各メタデータ項目について識別され得るいくつかのやり方がある。1つの例示的な構成では、デバッグ・アクセス・ポート回路は、アクセスされているメタデータ項目のために適用可能なメタデータ記憶要素内のロケーションを決定するためにメモリ・アドレス記憶要素を参照するようにさらに構成される。たとえば、メモリ・アドレスの指定された数の低位アドレス・ビットが、メタデータ記憶要素内のロケーションを決定するために使用され得る。したがって、メモリ・アドレス記憶要素によって識別される異なるアドレスに各々が関連する一連のアクセスを介して、各そのようなアクセスについてメタデータ記憶要素内の適用可能なロケーションを識別することが可能である。
【0019】
いくつかのメタデータ項目の値を取り出すためにメモリ・システムからの読取りアクセスを実施するとき、1つの例示的な構成では、メモリから取り出されたメタデータ項目の取得された値は、メタデータ記憶要素内の決定されたロケーションに書き込まれ得るが、メタデータ記憶要素内の他のロケーションのコンテンツは不変のままである。そのような手法によって、異なるアドレスに各々が関連するメタデータ・アクセス動作の繰り返される実施を通して、メタデータ記憶要素内で、効率的な様式で複数のメタデータ項目についての読み取られた値を構築することが可能である。デバッガは、その後、それらの複数の取り出されたメタデータ項目値を取得するためにメタデータ記憶要素のコンテンツを読み取ることができる。
【0020】
各メタデータ・アクセス動作についてアクセスするためにメタデータ記憶要素内の適切なロケーションを識別するためにメモリ・アドレス指示を使用することの代替として、メタデータ記憶要素は、代わりに、シフト・レジスタ構造として構成され得る。そのような構成によれば、メモリ・システムからの読取りアクセス中にメタデータ項目をメタデータ記憶要素に追加し、メモリ・システムへの書込みアクセス中にメタデータ記憶要素からメタデータ項目を出力するためにシフト動作が使用され得る。
【0021】
デバッガがメタデータ項目にアクセスするためにメモリ・システムへのアクセスをトリガし得るいくつかのやり方がある。しかしながら、1つの例示的な構成では、複数の記憶要素は、デバッガからのコマンドを介してアクセスされたとき、メモリ・システムへのアクセスがデバッグ・アクセス・ポート回路によって開始されることを引き起こす、1つ又は複数のアクセス・トリガ要素をさらに備える。アクセス・トリガ要素は、それらがあるデータを記憶することができるように構成され得るが、それらがそのようなやり方で編成されることについての要件はなく、代わりに、それらは、それらがデバッガからのコマンドを介してアドレス指定されたとき、それがメモリ・システムへの必要とされるアクセスをトリガするように構成され得るにすぎないことに留意されたい。
【0022】
アクセスが、メタデータ項目だけでなく関連するデータ・グラニュールの少なくとも一部分にもアクセスすることを伴うとき、データ・グラニュール(又はその関連のある部分)の値は、所望される場合、アクセス・トリガ要素内に一時的に記憶され得るが、代替構成では、データ・グラニュール(又はその関連のある部分)の値は、アクセス・トリガ要素を直接通過し得る(したがって、書込み動作の場合、データ・グラニュール又はその一部分の値は、バスまでまっすぐに受け渡され得るが、読取り動作の場合、読み取られたデータは、バスから直接デバッガに受け渡され得る)。
【0023】
1つの例示的な構成では、複数の異なるタイプのアクセス動作がデバッグ・アクセス・ポート回路によってサポートされ得る。1つの例示的な設定では、複数の記憶要素は、前記1つ又は複数のアクセス・トリガ要素がアクセスされたときに実施されることになるアクセス動作のタイプを識別するようにとのデバッガからのコマンドを介してアクセス可能なモード制御記憶要素をさらに備え得る。したがって、そのような手法によれば、アクセス・トリガ要素は、デバッガからのコマンドを介してアドレス指定されたとき、メモリ・システムへのアクセスが行われることを引き起こし、実施されるアクセスのタイプが次いでモード制御記憶要素の現在のコンテンツによって規定される、一般的な要素であり得る。
【0024】
しかしながら、代替構成では、そのようなモード制御記憶要素は使用されないことがあり、代わりに、複数の異なるアクセス・トリガ要素が提供され得る。特に、1つの例示的な構成では、前記1つ又は複数のアクセス・トリガ要素は複数のアクセス・トリガ要素を備え得、各アクセス・トリガ要素が異なるタイプのアクセス動作に関連し、デバッガは、メモリ・システムへのアクセス動作を開始するようにとのコマンドを発行したとき、開始されることになるタイプのアクセス動作のための適切なアクセス・トリガ要素をコマンド内で識別するように構成される。したがって、この実施例によれば、異なるアクセス・トリガ要素は異なるタイプのアクセス動作に関連し、デバッガは、デバッガが実施することを望むタイプのアクセス動作を顧慮した適切なアクセス・トリガ要素にコマンドを発行する。
【0025】
モード制御記憶要素が使用されるのか複数の異なるアクセス・トリガ要素が使用されるのかにかかわらず、デバッグ・アクセス・ポート回路は、デバッガから受信されたコマンドに応じて、バス・インターフェースを介して、サポートされるアクセス動作のセットからのアクセス動作を開始するように構成され得る。
【0026】
実例として、サポートされるアクセス動作のセットは、メタデータ記憶要素から取得された値を使用してメタデータ項目の値を更新し、デバッガからのコマンドによって提供されたデータ値を使用して関連するデータ・グラニュールの少なくとも一部分の現在の値を更新するための、書込み動作と、メタデータ記憶要素から取得された値を使用してメタデータ項目の値を更新するが、関連するデータ・グラニュールの現在の値を保存するための、書込み動作と、メタデータ記憶要素から取得された値を使用してメタデータ項目の値を更新し、関連するデータ・グラニュールの少なくとも一部分の値を知られている値に更新するための、書込み動作と、データ・グラニュールの少なくとも一部分をメモリ・システムに書き込み、関連するメタデータ項目の現在の値を保存するための、書込み動作と、データ・グラニュールの少なくとも一部分をメモリ・システムに書き込み、関連するメタデータ項目の値をデフォルト値に更新するための、書込み動作とのうちの1つ又は複数を備え得る。
【0027】
したがって、多種多様な異なるタイプの書込み動作がデバッグ・アクセス・ポート回路を介してデバッガによってトリガされ得ることが諒解されよう。
【0028】
別の実例として、サポートされるアクセス動作のセットは、メモリ・システムからメタデータ項目を読み取り、読み取られたメタデータ項目の値をメタデータ記憶要素に記憶し、メモリ・システムから関連するデータ・グラニュールの少なくとも一部分をさらに読み取るための、読取り動作と、関連するデータ・グラニュールをさらに読み取ることなしに、メモリ・システムからメタデータ項目を読み取り、その読み取られたメタデータ項目の値をメタデータ記憶要素に記憶するための、読取り動作と、関連するメタデータ項目を読み取ることなしに、メモリ・システムからデータ・グラニュールの少なくとも一部分を読み取るための、読取り動作とのうちの1つ又は複数を備え得る。したがって、デバッグ・アクセス・ポート回路の使用が、実施され得る読取り動作のタイプに関してデバッガに多くのフレキシビリティをも提供することがわかり得る。
【0029】
各メタデータ項目は、メタデータの形式に応じて1つ又は複数のビットを備え得る。特定の実例として、各メタデータ項目は、関連するデータ・グラニュールが能力を指定するかどうかを識別する能力タグであり得る。いくつかの能力が所与のプロセスについて定義され、定義された能力外の動作を行おうとする試みがある場合にエラーがトリガされ得る能力ベース・アーキテクチャへの関心が増加している。有界ポインタ(bounded pointer)が能力の一実例である。ポインタ自体が、たとえば、アクセスされることになるデータ値又は実行されるべき命令のアドレスを指すか、又はそれを決定するために使用され得る。しかしながら、ポインタはまた、ポインタを使用するときのアドレスの許容範囲を示す関連する範囲情報を有し得る。これは、たとえば、挙動のセキュリティ又は機能的正当性を維持するために、ポインタから決定されたアドレスがある限界内に残ることを確実にするために、有用であり得る。そのような能力ベース・システム内では、特定のデータ・グラニュールが能力に関係するのか汎用データに関係するのかを知ることは重要であり、能力タグは、この目的で使用され得る。
【0030】
メタデータ項目の別の実例として、メタデータ項目は、関連するデータ・グラニュールの割振りポリシーを識別する割振りタグであり得る。そのような割振りタグは、ガード・タグと呼ばれることもある。いくつかのメモリ使用エラーから保護するための1つの手法は、1つ又は複数のメモリ・ロケーションのブロックに関連してメモリ・システムに記憶されるガード・タグを提供することであり得る(それらの1つ又は複数のメモリ・ロケーション中のデータがデータ・グラニュールである)。タグガード(tag-guarded)・メモリ・アクセス動作が、メモリ・システム中の特定のアドレス指定されたロケーションを識別するターゲット・アドレスに基づいて要求されたとき、メモリ・アクセス回路は、ターゲット・アドレスに関連するアドレス・タグを、ターゲット・アドレスによって識別されたアドレス指定されたロケーションを含む1つ又は複数のメモリ・ロケーションのブロックに関連してメモリ・システムに記憶されたガード・タグと比較し得る。メモリ・アクセス回路は、ガード・タグとアドレス・タグとの間の一致が検出されたかどうかの指示を生成し得る。この指示は、メモリ・アクセスが成功することを可能にされるかどうか、又は、後続の動作が成功することができるかどうかを制御するために使用され得るか、或いは、メモリ・アクセスが通常通り続くことを可能にしながら報告され得るにすぎない。
【0031】
デバッガが、メモリ・システムにアクセスするためのコマンドを発行することを可能にするためにデバッグ・アクセス・ポート回路によって提供されるデバッグ・インターフェースは、様々な形態をとることができる。しかしながら、メモリ・システム内で実施されることになるアクセスが、デバッグ・アクセス・ポート回路によって提供される記憶要素の比較的小さいセットにコマンドを発行することによって誘発されることにより、デバッグ・インターフェースは、比較的コンパクトな形態をとることができる。単に実例として、デバッグ・インターフェースは、JTAG、シリアル・ワイヤ、又はPCIインターフェースのうちの1つであり得る。
【0032】
1つの例示的な構成では、複数の記憶要素がアドレス空間内に存在し、デバッグ・インターフェースにおいて受信されたコマンドは、アドレス空間内のアドレスを指定することによって、コマンドが関係する記憶要素を識別する。これは、様々な記憶要素を識別するための効率的な機構を提供する。
【0033】
複数の記憶要素は、様々な形態をとることができるが、1つの例示的な構成では、複数のレジスタを備える。
【0034】
例示的な一実装形態では、デバッグ・アクセス・ポート回路は、デバッガからのコマンドに応答して、バス・インターフェースを介して、アクセス動作の複数の反復を開始し、各反復について、メモリ・アドレス記憶要素に記憶されたメモリ・アドレス指示が増分される。
【0035】
メモリ・アドレス指示が増分される量は、例示的な一実装形態では、実施されているアクセス動作のタイプに応じて変動し得る。たとえば、例示的な一実装形態では、アクセス動作が、メタデータ項目とデータの両方がアクセスされることを必要とするとき、メモリ・アドレス指示は、次の反復のためのアドレス指示を提供するために、現在の反復においてアクセスされたデータの量に基づいて増分される。しかしながら、アクセス動作が、メタデータ項目のみがアクセスされることを必要とするとき、メモリ・アドレス指示は、n×データ・グラニュール・サイズだけ増分され得、ここで、nは、次の反復のためのアドレス指示を提供するために、現在の反復においてアクセスされたメタデータ項目の数に等しい。
【0036】
次に、図を参照しながら特定の実例が説明される。
【0037】
図1は、1つの例示的な設定によるシステムのブロック図である。デバッガ10が、デバイスに関してデバッグ動作を実施するために使用される。デバイスは様々な異なる形態をとることができるが、例示のために、図1中のデバイスは、相互接続30を介してメモリ35といくつかの周辺デバイス40とに接続された1つ又は複数の中央処理ユニット(CPU)15からなる。デバッガは、関連するメモリ・アクセス・ポート20、25を介したデバイスへのいくつかのバス接続を確立することができ、そのようなメモリ・アクセス・ポートは、本明細書ではデバッグ・アクセス・ポート回路とも呼ばれる。図1に示されているように、第1のメモリ・アクセス・ポート20が提供され、第1のメモリ・アクセス・ポート20を介して、デバッガは、CPU15のうちの1つ又は複数がいくつかの動作を実施することを引き起こすために、コマンドを発行することができる。メモリ・アクセス・ポート20はバス22を介してCPUに結合され、バス22を介して、メモリ・アクセス・ポートは、デバッガから受信されたコマンドによって示されるいくつかの動作を実施するようにCPUに命令することができ、データは、メモリ・アクセス・ポートとCPUとの間で両方向において流れ得る。
【0038】
本明細書で説明される技法によれば、メタデータ・アウェアであり、特に、バス27に結合することができる追加のメモリ・アクセス・ポート25が提供され、バス27を介して、データ・グラニュールと関連するメタデータ項目の両方がトランスポートされ得る。メタデータ・アウェア・メモリ・アクセス・ポート25は機構を提供し、その機構を介して、デバッガ10は、メモリ35に記憶されたメタデータ項目に直接アクセスし、したがって、CPU15のうちの1つ内でメタデータ・アクセス動作を開始する必要なしに、デバッガを介して直接、メタデータ項目を読み取り、メタデータ項目に書き込むことをサポートすることができる。
【0039】
図2は、1つの例示的な構成による、メタデータ・アウェア・メモリ・アクセス・ポート25内に提供される構成要素をより詳細に示すブロック図である。メモリ・アクセス・ポート25は、デバッガ10に結合するためのデバッグ・インターフェース50と、バス27に結合するためのバス・インターフェース75とを有する。メモリ・アクセス・ポート内に、デバッガ10から発行されたコマンドを介してアクセス可能である複数の記憶要素が提供される。特に、図2に示されている実例では、様々な記憶要素は、異なるレジスタの形態をとる。小さいアドレス空間がメモリ・アクセス・ポートに関連し、デバッガによって発行されたコマンドは、レジスタのうちの特定のレジスタを、そのレジスタに関連するアドレスを識別することによって、ターゲットにすることができる。各コマンドは、したがって、アクセス・ポート(AP:access port)レジスタ・アドレスと、何らかの付随する「データ」とを指定し得る。データは、コマンドによってアクセスされているレジスタに応じて様々な形式をとることができる。
【0040】
したがって、たとえば、関連するデータ・グラニュール及び/又はそのデータ・グラニュールに関連するメタデータ項目に関してアクセスを実施するように、デバッガがメモリ中のアドレスにアクセスすることを望むとき、デバッガは、バス・アドレス・レジスタ55を識別するコマンドを発行し得、そのコマンドで提供されるデータは、アクセスされることになるメモリ中のアドレスの指示である。そのようなコマンドがバス・アドレス・レジスタ55に発行されたとき、バス・アドレス・レジスタのコンテンツは、当該のメモリ・アドレスを識別するために、コマンドによって提供されたデータを用いて更新される。
【0041】
データ・レジスタ60も提供され得、コマンドがデバッガからデータ・レジスタに発行されたとき、これは、バス・アドレス・レジスタ55内に提供されたメモリ・アドレスを使用して、メモリへのアクセス動作を開始するようにメモリ・アクセス・ポートをトリガする。書込み動作を開始するために使用されるコマンドの場合、関連する書込みデータが、たとえば、アクセスされることになるデータ・グラニュールの少なくとも一部分についての更新された値を識別するために指定され得、そのデータは、所望される場合、データ・レジスタ60内に一時的にバッファされ得る。代替的に、データは、データ・レジスタ自体内に記憶される必要がないことがあり、代わりに、データは、バスまでまっすぐに受け渡され得、データ・レジスタ60へのアクセスは、単に、書込み動作の実施をトリガするための機構として使用される。
【0042】
同様に、読取り動作の場合、ターゲットにされるデータ・グラニュールの少なくとも一部分に関係する読み取られたデータがメモリ・アクセス・ポート25に返されるとき、そのデータは、データ・レジスタ60内に一時的にバッファされ得るか、又は代替的に、デバッガ10に返るようにアクセス・ポートを通ってまっすぐに受け渡され得、その場合、同じく、データ・レジスタ60自体はデータを記憶するために使用されず、データ・レジスタ60へのアクセスが、単に、読取り動作をトリガするために使用される。
【0043】
前に説明されたように、メモリ内のデータ・グラニュールへの読取り動作及び書込み動作を実施することに加えて、デバッガは、いくつかの時点において、それらのデータ・グラニュールに関連するメタデータ項目にアクセスすることを望み得る。そのようなアクセスは、関連するデータ・グラニュールがアクセスされることと同時に実施され得るか、又は代替的に、関連するデータ・グラニュールにアクセスすることなしにメタデータ項目にアクセスすることが所望され得る。そのようなメタデータ・アクセス動作を可能にするために、複数のメタデータ項目を記憶することが可能であるメタデータ・レジスタ70が提供される。メタデータ・レジスタ内に記憶され得るメタデータ項目の数は、メタデータ・レジスタのサイズと、各メタデータ項目を形成するビットの数とに依存する。多くの場合、メタデータ項目は、関連するデータ・グラニュールよりも著しく小さくなり得、実際、各メタデータ項目は、1ビット又は数ビットの情報のみを備え得る。そのような事例では、著しい数のメタデータ項目がメタデータ・レジスタ内に記憶されることが可能であり、したがって、一連のメタデータ項目全体への一括アクセスが、メタデータ・アウェア・メモリ・アクセス・ポート25を介したデバッガ10からの適切なコマンドの発行を通して行われることを可能にする。
【0044】
したがって、一連のメタデータ項目への書込み動作を実施することが所望されるとき、それらのメタデータ項目についての新しい値は、メタデータ・レジスタ70にコマンドを発行するデバッガを介してメタデータ・レジスタ70内に記憶され得、ここで、そのコマンドについての関連する「データ」は、一連のメタデータ項目についての更新された値を提供する。メタデータ・レジスタ70がアクセスされたとき、メタデータ項目についてのそれらの新しい値は、次いで、メタデータ・レジスタ内の対応するロケーション内に記憶される。
【0045】
次いで、一連の書込み動作が、データ・レジスタ60に一連のコマンドを発行することによってトリガされ得、各書込み動作についてアドレスを識別するためにバス・アドレス・レジスタ55のコンテンツが適宜に更新される。いくつかの事例では、デバッガは、各書込みコマンドがデータ・レジスタ60に発行されるより前にバス・アドレス・レジスタ55を更新するために別個のコマンドを発行し得るが、代替手法では、メモリ・アクセス・ポートは、バス・アドレス・レジスタ55内のアドレスが、各書込みコマンドに続いてある量だけ増分され得、それにより、デバッガが各書込み動作の実施の間にバス・アドレス・レジスタ・コンテンツ55を更新するためにコマンドを別個に発行する必要を回避するように、アドレス増分回路を含み得る。
【0046】
メタデータ・アウェア・メモリ・アクセス・ポート25は、バス制御レジスタ65をも含み、バス制御レジスタ65は、デバッガからの適切なコマンドを介してアクセスされ得、バス制御レジスタ65のコンテンツは、コマンドがその後データ・レジスタ60に発行されるときに実施されることになるアクセス動作のタイプを識別するために使用される。したがって、バス制御レジスタのコンテンツは、書込みアクセス動作が実施されるのか読取りアクセス動作が実施されるのかを決定することができ、また、実施されることになる書込み又は読取り動作のタイプ、たとえば、データ・グラニュールがアクセスされることになるのか関連するメタデータ項目がアクセスされることになるのか、又は、データ・グラニュールと関連するメタデータ項目の両方がアクセスされることになるかどうかを識別することができる。
【0047】
バス・アドレス・レジスタ55内のアドレスは、一実施例では、特定のデータ・グラニュールを識別し得るが、そのアドレスはまた、アクセスされることになる関連するメタデータ項目を識別するために使用され得る。したがって、データ・レジスタ60が、メタデータ書込み動作を開始するようにとのデバッガからのコマンドによって連絡されたとき、それは、バス・アドレス・レジスタ55のコンテンツからメタデータ項目のロケーションを決定することができ、メタデータ・レジスタ70からメタデータ項目についての更新された値を取得することができる。次いで、必要とされるメタデータ項目が更新されることを引き起こすために、メモリ・アクセス・ポート25からメタデータ書込み動作が開始され得る。
【0048】
同様に、メタデータ読取り動作の場合、バス・アドレス・レジスタ55中のアドレス情報は、同じく、関連のあるメタデータ項目を識別するために使用され得、そのメタデータ項目の値が返されたとき、それは、メタデータ・レジスタ内の適切なロケーションに記憶するためにメタデータ・レジスタ70にルーティングされ得る。
【0049】
メタデータ・レジスタ70内の適切なロケーションが、実施される各メタデータ・アクセス動作について識別され得るいくつかのやり方がある。たとえば、バス・アドレス・レジスタ55内に記憶されるアドレスのある数の低位ビットが、メタデータ書込み動作を実施するときに値が取り出されるべきであるか、又は取り出された値が、メタデータ読取り動作を実施するときに記憶されるべきである、メタデータ・レジスタ内の対応するロケーションを識別するために使用され得る。代替的に、メタデータ・レジスタはシフト・レジスタとして構成され得、したがって、メタデータ書込み動作を実施するとき、メタデータ項目の更新された値を表すある数のビットがシフト・アウトされ得るか、又は逆に、読み取られたメタデータ項目を表すビットが、メタデータ読取り動作を実施するときにメタデータ・レジスタ70中にシフトされ得る。
【0050】
図3A及び図3Bは、1つの例示的な構成による、メタデータ・アウェア・メモリ・アクセス・ポート25が、メタデータ項目の一括読取りを実施するためにデバッガによってどのように使用され得るかを識別する流れ図を提供する。ステップ100において、デバッガは、バス・アドレスのための初期アドレスを決定し、次いで、ステップ105において、そのバス・アドレスをデータとして指定するコマンドをバス・アドレス・レジスタ55に発行する。これは、バス・アドレス・レジスタ55が、初期アドレスを識別するためにそれのコンテンツを更新することを引き起こす。
【0051】
ステップ110において、デバッガは、次いで、実施されることになる読取り動作のタイプをデータとして指定するコマンドをバス制御レジスタ65に発行する。読取り動作は、様々な形式をとることができ、たとえば、メタデータ項目のみが読み取られることになることを指定し得るか、又は代替的に、メタデータ項目と関連するデータ・グラニュール(又はそのデータ・グラニュールの少なくとも一部分)の両方が読み取られることになることを識別し得る。
【0052】
デバッガは、次いで、バス制御レジスタ65において定義されたタイプの読取り動作の実施をトリガするためにデータ・レジスタ60にコマンドを発行する。さらに、バス・アドレス・レジスタ55中のバス・アドレスは、アクセスされているメモリ・アドレスを決定するために使用される。前に説明されたように、バス・アドレス・レジスタ中のアドレスは、データ・グラニュール・ロケーションを識別し得るが、関連するメタデータ項目のメモリ・システム内のロケーションをも決定するために使用され得る。特に、図8A及び図8Bを参照しながら後でより詳細に説明されるように、いくつかの例示的な構成では、メタデータ項目自体は、それらが、CPUによって発行され得るアドレスによって直接アドレス指定可能でないことがあるという点で、半ば隠れている(semi-hidden)ことがある。しかしながら、適切なデータ・グラニュールを指定することによって、対応するメタデータ項目が識別され、アクセスされ得る。
【0053】
ステップ120において、読み取られたメタデータ項目が受信されたとき、そのメタデータ項目は、次いで、メタデータ・レジスタ70のロケーション(そのロケーションは本明細書ではエントリとも呼ばれる)に記憶される。メタデータ・レジスタ70がシフト・レジスタとして構成されたとき、これは、読み取られたメタデータ値をメタデータ・レジスタにシフト・インすることによって行われ得る。代替的に、メタデータ・レジスタがシフト・レジスタとして構成されなかった場合、バス・アドレス・レジスタ55中のバス・アドレスのある数の低位ビットが、読み取られたメタデータ項目が記憶されるべきであるメタデータ・レジスタ内の適切なロケーションを識別するために使用され得る。このようにしてメタデータ・レジスタを更新するとき、更新プロセスは、一般に、他のロケーションのいずれも影響を及ぼされず、それらの現在のコンテンツを保つように構成される。
【0054】
ステップ120に示されているように、読取り動作がデータ・グラニュールの全部又は一部をも返す場合、その読み取られたデータは、所望される場合、デバッグ・インターフェース50を介してデバッガに返るより前に、データ・レジスタ60内に一時的にバッファされ得る。代替的に、その読み取られたデータは、データ・レジスタ60内にバッファされることなしにデバッグ・インターフェース50を介してデバッガに直接返され得る。
【0055】
図3Aでは、ステップ105、110及び115において別個のコマンドが発行されると仮定されるが、代替実装形態では、ステップ105~120の一部又は全部が、デバッガによって発行された単一のコマンドに応答して実施され得、たとえば、アドレス、制御及びアクセス・コマンドが単一のパケットを形成する。
【0056】
ステップ120に続いて、プロセスは、次いで、ステップ125に進み、読み取られるべきより多くのメタデータ項目があるかどうかが決定される。デバッガは、読み取られるメタデータ項目の数を制御することができるが、1つの例示的な構成では、デバッガは、メタデータ・レジスタ70を十分にポピュレートするのに十分な数のメタデータ項目を読み取ることを望み得、その十分にポピュレートされたメタデータ・レジスタ70は、次いで、読み取られたメタデータ項目の全部の値を取り出すために問い合わせられる。
【0057】
ステップ125において、読み取るべきより多くのメタデータ項目があると決定された場合、1つの例示的な構成では、デバッガは、ステップ130において、更新されたアドレスを決定し得る。しかしながら、代替構成では、メモリ・アクセス・ポート25は何らかのアドレス増分論理を組み込み得、アドレス増分論理は、読取り動作の実施に続いてバス・アドレス・レジスタ55のコンテンツを自動的に更新することができ、したがってステップ130が冗長になる。ステップ130が実施された場合、プロセスはステップ105に戻り、デバッガによって決定された更新されたアドレスは、バス・アドレス・レジスタ55に書き込まれる。この、次の反復時に、ステップ110は必要でないことがある。しかしながら、バス・アドレス・レジスタ・コンテンツがメモリ・アクセス・ポートによって自動的に更新された場合、ステップ125からのyes経路は、同じタイプの読取りコマンドが次の反復時に実施されることになり、したがってステップ110が再実施される必要がないと仮定すれば、図3Aのステップ115に直接戻り得る。
【0058】
バス・アドレス・レジスタ55内のアドレスが、読み取るべきより多くのメタデータ項目があるとステップ125において決定されたときに増分される必要がある量は、現在の読取り動作によってアクセスされるメタデータ項目の数に依存する。単一のメタデータ項目がアクセスされた場合、アドレスは、たとえば、それがデータ・グラニュール・サイズだけ増分されるように更新され得る。しかしながら、複数のメタデータ項目がアクセスされた場合、アドレスは、データ・グラニュール・サイズの倍数だけ増分され得る。
【0059】
さらに、データが、メタデータ項目に加えてアクセスされている場合、単一のデータ・アクセスが、グラニュール・サイズ未満でアクセスし得る。その結果、アドレスは、次いで、グラニュール・サイズ未満だけ増分され得、特に、アクセスされるデータのサイズだけ増分され得るにすぎない。アドレスは、したがって、次の反復のために同じグラニュール内にとどまり得、後続のアクセスは、次いで、同じメタデータ項目にアクセスする。
【0060】
それ以上読み取るべきメタデータ項目がないとステップ125において決定されると、プロセスはステップ135に進むことができ、デバッガは、メタデータ・レジスタ70に記憶された複数のメタデータ項目を読み出すためにメタデータ・レジスタ70にコマンドを発行し得る。
【0061】
図4A及び図4Bは、デバッガが、図2のメタデータ・アウェア・メモリ・アクセス・ポートを使用してメタデータ項目の一括書込みを実施することを可能にするために実施され得るステップを示すための流れ図を提供する。ステップ200において、デバッガは、複数のメタデータ項目についての値をデータとして指定し、それらのメタデータ項目値がメタデータ・レジスタに記憶されることを引き起こすコマンドを、メタデータ・レジスタ70に発行する。次いで、ステップ205、210、215及び220は、図3Aのステップ100、105、110及び115に対応する。ただし、ステップ215において、バス制御レジスタに発行されたコマンドで提供されるデータは、実施されることになる書込み動作のタイプを識別し、たとえば、書込み動作が、メタデータ項目の書込みを実施するが、関連するデータ・グラニュールの値を保存するためのものであるのか、又は代わりに、メタデータ項目の書込みと、また、データ・グラニュールの少なくとも一部を更新するための書込みとを実施するためのものであるのかを識別する。
【0062】
図4Aでは、ステップ210、215及び220において別個のコマンドが発行されると仮定されるが、代替実装形態では、ステップ210~220の一部又は全部は、デバッガによって発行された単一のコマンドに応答して実施され得、たとえば、アドレス、制御及びアクセス・コマンドが単一のパケットを形成する。
【0063】
書込み動作の実施をトリガするためにステップ220においてデータ・レジスタ60にコマンドが発行されると、次いで、ステップ225において、書込み動作は、メタデータ・レジスタのエントリから抽出されたメタデータ項目を使用して実施される。前に説明された読取り動作と同様に、バス・アドレス・レジスタ55に記憶されたアドレスのある数の低位ビットが、1つの例示的な構成では、メタデータ・レジスタ内の適切なエントリを識別するために使用され得る。しかしながら、メタデータ・レジスタがシフト・レジスタとして構成された別の例示的な構成では、関連のあるメタデータ項目値は、シフト・レジスタからある数のビットをシフト・アウトすることによって取得され得、シフト・レジスタからシフト・アウトされるビットの数は、各メタデータ項目を形成するビットの数に依存する。
【0064】
さらに、データ・グラニュールの少なくとも一部も書込み動作の一部として更新されている場合、そのデータの値は、書込み動作をトリガするためにデータ・レジスタ60に送られるコマンドにおいて指定され得、その書込みデータは、所望される場合、データ・レジスタ60中に一時的にバッファされる。代替的に、その書込みデータは、データ・レジスタ60内にバッファされることなしにバス27までまっすぐに受け渡され得る。
【0065】
ステップ230において、書き込むべきより多くのメタデータ項目があるかどうかが決定される。デバッガは、一般に、デバッガがそれに関して書込み動作を実施することを望むメタデータ項目の数を決定するが、1つの例示的な構成では、メタデータ・レジスタ70内に記憶され得る別個のメタデータ項目の数に等しいメタデータ項目の数を更新することを望み得、したがって、メタデータ・レジスタ70内に少なくとも1つのまだ未使用のメタデータ項目値がある場合、書き込むべきより多くのメタデータ項目があると決定される。
【0066】
書き込むべきより多くのメタデータ項目があると決定された場合、ステップ235において、デバッガは、プロセスがステップ210に戻るより前に、更新されたアドレスを決定し得る。この、次の反復時に、ステップ215は必要でないことがある。しかしながら、代替構成では、メモリ・アクセス・ポート25は、書込み動作の実施に続いてバス・アドレス・レジスタ55内のアドレスを自動的に増分するための増分回路を含み得、したがってステップ235の必要が回避され、その場合、プロセスは、同じタイプの書込みコマンドが次の反復時に実施されることになり、したがってステップ215が再実施される必要がないと仮定すれば、図4Aのステップ220に直接戻り得る。
【0067】
図5は、バス制御レジスタ65の必要が回避され得る、メタデータ・アウェア・メモリ・アクセス・ポートのための代替構成を示す。図5に示されているように、メタデータ・アウェア・メモリ・アクセス・ポート25’は、図2のようにバス・アドレス・レジスタ55とメタデータ・レジスタ70とを含み、デバッグ・インターフェース50とバス・インターフェース75とをも含む。しかしながら、複数のデータ・レジスタ250が提供され、1つのデータ・レジスタが、サポートされるアクセス動作の各タイプに関連する。そのような手法によれば、バス制御レジスタ65は必要とされず、代わりに、デバッガは、必要とされるメモリ・アクセスに関連する特定のデータ・レジスタにコマンドを発行する。したがって、異なるタイプの書込みコマンドに関連するいくつかのデータ・レジスタと、異なるタイプの読取りコマンドに関連するいくつかのデータ・レジスタとがあり得る。それらの書込みコマンド及び読取りコマンドのうちの少なくともいくつかは、メタデータ項目に関して書込み動作又は読取り動作を実施することを伴い、メタデータ項目は、図2を参照しながら前に説明されたのと同じやり方で、メタデータ・レジスタ70中でアクセスされ得る。
【0068】
図6A及び図6Bは、図3A及び図3Bの流れ図に類似するが、図5に示されているようにメタデータ・アウェア・メモリ・アクセス・ポート25’の形態を使用するときの、流れ図を提供する。ステップ300及び305は、図3Aのステップ100及び105に対応する。次いで、ステップ310において、デバッガは、バス・アドレス・レジスタ55に記憶されたバス・アドレスを使用して、必要とされる読取り動作の実施をトリガするために、その必要とされる読取り動作のタイプのための適切なデータ・レジスタにコマンドを発行する。したがって、あるコマンドがバス制御レジスタに発行され、その後に、別のコマンドがデータ・レジスタに発行されるのではなく、単一のコマンドがこのステップにおいて発行される必要があることがわかり得る。
【0069】
次いで、ステップ315、320、325及び330は、図3A及び図3Bのステップ120、125、130及び135に対応する。各反復の間にアドレスを更新することがメモリ・アクセス・ポート25’内で自動的に行われる場合、ステップ320からのyes経路は、ステップ305ではなくステップ310に戻ることができる。
【0070】
図7A及び図7Bは、図4A及び図4Bの流れ図に対応する流れ図を提供するが、図5のメタデータ・アウェア・メモリ・アクセス・ポート25’を利用するときにメタデータ項目の一括書込みがどのように実施され得るかについて説明する。ステップ400、405及び410は、図4Aのステップ200、205及び210に対応する。ステップ415において、デバッガは、次いで、バス・アドレス・レジスタ中のバス・アドレスを使用して、必要とされる書込み動作の実施をトリガするために、その必要とされる書込み動作のタイプのための適切なデータ・レジスタにコマンドを発行する。これは、したがって、バス制御レジスタにコマンドを発行し、その後、データ・レジスタに別個のコマンドを発行する必要を回避する。
【0071】
次いで、ステップ420、425、430及び435は、図4Bのステップ225、230、235及び240に対応する。アドレスが各反復の間にメモリ・アクセス・ポート25’内で自動的に調整され、ステップ430の必要が回避される場合、ステップ425からのyes経路は、ステップ415に直接戻ることができる。
【0072】
図8Aは、メモリ・アドレス空間と、そのアドレス空間内の様々なデータ・グラニュール450及び関連するメタデータ項目455の存在とを示す。ただし、1つの例示的な構成では、メタデータ項目自体は直接アドレス指定可能でなく、したがって、半ば隠れていると見なされ得る。代わりに、図8A中の下側の図に示されているように、アドレス指定可能なアドレス空間は、データ・グラニュールに関して指定される。この実例では、0のバイト・アドレスは第1のデータ・グラニュールがアクセスされることを引き起こし、16のバイト・アドレスは第2のデータ・グラニュールがアクセスされることを引き起こし、以下同様である。しかしながら、メタデータ項目455は各データ・グラニュールに関連する。その場合、メタデータ・アクセス動作が使用されるとき、アドレスは依然としてデータ・グラニュールを識別するが、そのアドレスは、当該の対応するメタデータ項目455を識別し、そのメタデータ項目がアクセスされることを引き起こすために使用され得る。
【0073】
図8Bは、メタデータ項目の2つの特定の例示的な形式を示す。両方の実例では、データ・グラニュールのサイズが16バイトであると仮定されるが、他の実装形態では、データ・グラニュール・サイズは異なり得る。能力実例によれば、16バイトの各データ・グラニュールは、本明細書では能力タグとも呼ばれる、関連する1ビットのメタデータを有し、それは、関連するデータ・グラニュールが能力を識別するのか汎用データを識別するにすぎないのかを識別するために使用される。
【0074】
図8B中の第2の実例は割振りタグ付けを示し、ここで、図示された特定の実例では、4ビットのメタデータが各16バイト・グラニュールに関連する。これらの4ビットのメタデータは、本明細書ではガード・タグとも呼ばれる、割振りタグと呼ばれ得る。メモリ中の特定のロケーションに対するアクセス要求が行われたとき、アドレス・タグが、ターゲット・アドレスに関連して指定され得、そのアドレス・タグは、メモリ中の関連のあるデータ・グラニュールに関連する割振りタグと比較され得る。ガード・タグとアドレス・タグとの間の一致が検出されたかどうかに応じて、異なるアクションがとられ得る。
【0075】
メタデータ項目は様々な形式をとることができるが、2つの実例が、図9及び図10を参照しながら以下で説明される。
【0076】
図9は、個々のデータ・ブロックが能力(この場合、有界ポインタ及び関連する制限情報)を表すのか通常のデータを表すのかを識別するために、それらのデータ・ブロックに関連してタグ・ビットがどのように使用されるかを概略的に示す。特に、能力アウェア・システム中のメモリ・アドレス空間510は、一般に、指定されたサイズを有する、一連のデータ・ブロック515を記憶し得る。単に例示のために、この実例では各データ・ブロックが128ビットを備えると仮定される。各データ・ブロック515に関連して、一実例では、タグ・ビットと呼ばれる単一のビット・フィールドであるタグ・フィールド520が提供され、これは、関連するデータ・ブロックが能力を表すことを識別するようにセットされ、関連するデータ・ブロックが通常のデータを表し、したがって、能力として扱われ得ないことを示すようにクリアされる。セット状態又はクリア状態に関連する実際の値が実施例に応じて変動することができるが、単に例として、一実施例では、タグ・ビットが1の値を有する場合、それは、関連するデータ・ブロックが能力であることを示し、タグ・ビットが0の値を有する場合、それは、関連するデータ・ブロックが通常のデータを含んでいることを示すことが諒解されよう。
【0077】
能力が、図9に示されている能力レジスタ500など、(本明細書では能力レジスタとも呼ばれる)有界ポインタ・レジスタにロードされたとき、タグ・ビットは、能力情報とともに移動する。したがって、能力が能力レジスタ500にロードされたとき、ポインタ502と、範囲情報504と、(パーミッション情報とも呼ばれる)制限情報506とが能力レジスタにロードされる。追加として、その能力レジスタに関連して、又はその内部の特定のビット・フィールドとして、タグ・ビット508は、コンテンツが能力を表すことを識別するようにセットされる。同様に、能力がメモリに戻って記憶されたとき、関連のあるタグ・ビット520は、能力が記憶されたデータ・ブロックに関連してセットされる。そのような手法によって、能力と通常のデータとを区別し、したがって、通常のデータが能力として使用され得ないことを確実にすることが可能である。
【0078】
本技法が適用され得るメタデータ項目の別の実例として、図10は、タグガード・メモリ・アクセス(本明細書では割振りタグとも呼ばれるガード・タグ)の概念を概略的に示す。メモリ・システム内のメモリ・ロケーションを参照するために使用される物理アドレス空間は、各々がある数のアドレス指定可能なロケーションを備えるいくつかのブロック630に、論理的に区分され得る。簡潔のために、図10の実例では、各ブロック630は4つのメモリ・ロケーションを備えるが、他のブロック・サイズが同様に使用され得る。各ブロック630は、対応するガード・タグ632に関連する。ある数のブロック630に関連するガード・タグは、一緒に集められ、物理アドレス空間内の異なるアーキテクチャ上アクセス可能なメモリ・ロケーション634内に、又はアーキテクチャ上アクセス可能でない(同じ物理アドレス空間にマッピングされない)メイン・メモリ中に提供された追加の記憶ロケーション内にのいずれかに記憶され得る。別個のアーキテクチャ上アクセス可能でないストレージの使用は、いくつかの場合には、ガード・タグ値をキャッシュするためのデータ・キャッシュ中の空間を使い尽くすことを回避するために選好され得、これは、通常のコードの性能に影響を及ぼし得、コヒーレンシ管理をより複雑にし得る。タグがメイン・メモリからアクセスされなければならない場合よりも速いアクセスのために、アーキテクチャ上アクセス可能でないストレージからタグ値をキャッシュするための追加のタグ・キャッシュが、処理回路15中に提供され得る。
【0079】
どのタグ記憶ロケーション634が各ブロック630に対応するかの特定のマッピングは、処理回路15のロード/記憶ユニットによって制御され得、ハードワイヤードであり得るか又はプログラマブルであり得る。代替的に、メモリ・システム35は、タグがどこに記憶されるかを決定し得、処理回路は、知る又は気にかける必要がない。図10では、各タグ632が物理アドレスのブロックに関連すると同時に、仮想メモリ・アドレス空間中の仮想メモリ・ロケーションに関連するガード・タグ632を提供することも可能であるが、これは、各メモリ・アクセス時にいくつかの追加のアドレス変換を必要とし得る。したがって、ガード・タグ632を物理メモリ・ロケーションに関連付けることによって、これは、性能を改善することができる。概して、特定の実装形態では、ガード・タグ632が物理アドレス空間の対応するブロック630に厳密にどのように関連付けられるかが選ばれる。概して、必要とされるのは、メモリの所与のブロックに関連するガード・タグ632がアクセスされ、比較され得ることだけである。
【0080】
したがって、タグガード・メモリ・アクセスが必要とされるとき、(アクセスされることになるアドレス指定されたロケーション644を識別するターゲット・アドレス642に関連する)アドレス・タグ640が、アドレス指定されたロケーション644を含むメモリ・ロケーションのブロック630に関連するガード・タグ632と比較される。たとえば、図10では、ターゲット・アドレス642は、図10のアドレス空間中で644で示された、メモリ中のあるロケーションB1を指す。したがって、ロケーションB1を含むロケーションのブロックBに関連するガード・タグBは、ターゲット・アドレス642に関連するアドレス・タグ640と比較される。図10の上部に示されているように、アドレス・タグ640は、ターゲット・アドレス自体の選択されたビットに応じて決定され得る。特に、アドレス・タグは、アドレス指定されたロケーション644として選択されることになる特定のメモリ・ロケーションを示すための、未使用であるターゲット・アドレスの一部分内のビットから決定され得る。たとえば、いくつかの実装形態では、ターゲット・アドレスのビットの上部分は、常に、符号拡張(オール0又はオール1)など、ある固定値を有し得、したがって、任意のタグ値を用いてこれらの未使用ビットを上書きすることによって、アドレス・タグ640を用いてアドレスがタグ付けされ得る。特定のアドレス・タグ値は、たとえばプログラマー又はコンパイラによって選択され得る。アドレス・タグとガード・タグ632とは、比較的小さいビット数、たとえば4ビットであり得、したがって、メモリ内及びターゲット・アドレス内の多くの空間を占有する必要がない。タグ空間の4ビット、すなわち、タグの16個の可能な値を提供することは、しばしば、多くの共通のタイプのメモリ・アクセス・エラーを検出するのに十分であり得る。
【0081】
したがって、タグガード・メモリ・アクセスがCPU15のうちのいずれかによって実施されたとき、そのCPU15のロード/記憶ユニットは、アドレス・タグ640と、アドレス指定されたロケーション644を含むブロック630に関連するガード・タグ632とを比較し、それらが一致するかどうかを決定する(代替的に、タグ比較は、メモリ・システム35内で実施され得る)。ロード/記憶ユニットは、アドレス・タグ640とガード・タグ632とが一致したかどうかを示す一致指示を生成する。たとえば、この一致指示は、アドレス・タグ640とガード・タグ632との間に不一致がある場合に生成される障害信号、又は、一致があったかどうかを示す、状態レジスタに入れられた指示、又は、エラーが検出されたアドレス及び/若しくはエラーをトリガした命令の命令アドレスを示すためにエラー報告に追加されたエントリであり得る。
【0082】
図2又は図5を参照しながら説明された形態のメモリ・アクセス・ポートを使用することによって、図11に示されているアドレス空間700など、比較的小さいアドレス空間が、デバッガにとって利用可能になり得る。その小さいアドレス空間を介して、デバッガは、アクセスが、デバッグされているデバイスのメモリ35中のはるかに大きいアドレス空間に対して実施されることを引き起こすことができ、さらに、実施されることになる多種多様な異なるタイプのアクセス動作を指定することができる、コマンドを発行することができる。図11に概略的に示されているように、アドレス空間700内の異なるアドレスが、メモリ・アクセス・ポート内の異なるレジスタを識別するために使用され得る。たとえば、コマンドにおいて指定されたアドレス705はバス・アドレス・レジスタ55を識別し得、別のアドレス710はデータ・レジスタ60を識別し得、さらなるアドレス715はメタデータ・レジスタ70を識別し得、またさらなるアドレス720はバス制御レジスタ65を識別し得る。
【0083】
バス制御レジスタが使用されない図5の代替手法を使用するとき、コマンドがそこに発行され得る異なるデータ・レジスタを識別するために、様々な異なるアドレス710、725、730が使用され得る。
【0084】
必要とされる小さいアドレス空間700により、デバッガ10とメモリ・アクセス・ポート25との間に比較的単純なインターフェースが提供され得る。たとえば、デバッグ・インターフェースは、JTAG、シリアル・ワイヤ又はPCIインターフェース、或いは任意の他の好適なインターフェースのいずれかから形成され得る。
【0085】
図11では、アドレス空間は、具体的な実例として、サイズが4キロバイトであるとして示されているが、アドレス空間は、他の実装形態では、異なるサイズのものであり得ることが諒解されよう。実際、いくつかの実装形態では、アドレス・サイズがそれよりも著しく小さいことが可能であり、たとえば256バイトが十分であり得る。
【0086】
様々な例示的な設定の上記の説明から、本明細書で説明される技法は、メタデータ項目が、関連するデータ・グラニュールに加えて、又はそれの代わりにメモリ内でアクセスされることを可能にする様式で、デバッガがメモリ・アクセスを直接開始するための効率的な機構を提供することが諒解されよう。次いで、必要とされるアクセス動作は、デバイスの処理回路上の処理を停止させる必要なしに、必要な場合に、効率的に及びアトミックに実施され得る。特に、本明細書で説明されるメタデータ・アウェア・メモリ・アクセス・ポートの使用によって、デバッガは、必要なメタデータ・アクセス動作を実施するためにデバイスの処理回路を使用する必要なしに、メモリ中のメタデータ項目にアクセスすることができる。
【0087】
本出願では、「...ように設定された(configured to...)」という言葉は、装置の要素が、定義された動作を行うことが可能である設定を有することを意味するために使用される。このコンテキストにおいて、「設定」は、ハードウェア又はソフトウェアの相互接続の構成又は様式を意味する。たとえば、装置が、定義された動作を提供する専用ハードウェアを有し得るか、又は、プロセッサ若しくは他の処理デバイスが、機能を実施するようにプログラムされ得る。「ように設定された」は、装置要素が、定義された動作を提供するために、何らかのやり方で変更されることを必要とすることを暗示しない。
【0088】
本発明の例示的な実施例が、添付の図面を参照しながら本明細書では詳細に説明されたが、本発明がそれらの正確な実施例に限定されないこと、並びに、様々な変更、追加及び修正が、添付の特許請求の範囲によって定義される本発明の範囲及び趣旨から逸脱することなく、当業者によってその中で実施され得ることを理解されたい。たとえば、従属請求項の特徴の様々な組合せが、本発明の範囲から逸脱することなく、独立請求項の特徴とともに行われ得る。
図1
図2
図3A
図3B
図4A
図4B
図5
図6A
図6B
図7A
図7B
図8A
図8B
図9
図10
図11