(57)【要約】  デバイスをデバッグするときにメタデータにアクセスするための装置及び方法が提供される。特に、デバッガからコマンドを受信するためのデバッグ・インターフェースと、デバッガがデバイスのメモリ・システムにアクセスすることを可能にするためにバスに結合するためのバス・インターフェースとを備えるデバッグ・アクセス・ポート回路が提供される。デバイスは、関連するメタデータ項目を有するデータ・グラニュールから形成されたデータに対して動作し、バス・インターフェースは、メモリ・システムとバス・インターフェースとの間のバスを介したデータ・グラニュールとメタデータ項目の両方の通信を可能にする。デバッグ・アクセス・ポート回路は、デバッガから発行されたコマンドを介してアクセス可能な複数の記憶要素であって、バス・インターフェースを介してメモリ・システム内で実施されるアクセスが、コマンドによってアクセスされる記憶要素に応じて制御されるような、複数の記憶要素をさらに有する。記憶要素のうちの少なくとも１つが、複数のメタデータ項目を記憶するためのメタデータ記憶要素を備え、デバッグ・アクセス・ポート回路は、デバッガからの少なくとも１つのコマンドに応答して、メタデータ記憶要素とメモリ・システムとの間で複数のメタデータ項目のうちの少なくとも１つを転送するためにメモリ・システムへのアクセスを実施する。これは、デバッガが、デバッグされているデバイスのメモリ・システム内のメタデータ項目に直接アクセスすることを可能にするための効率的な機構を提供する。
2021515308.tif 000002
【特許請求の範囲】
【請求項１】
デバッグ・アクセス・ポート回路であって、
デバッガからコマンドを受信するためのデバッグ・インターフェースと、
前記デバッガがデバイスのメモリ・システムにアクセスすることを可能にするためにバスに結合するためのバス・インターフェースであって、前記デバイスは、関連するメタデータ項目を有するデータ・グラニュールから形成されたデータに対して動作し、前記バス・インターフェースは、前記メモリ・システムと前記バス・インターフェースとの間の前記バスを介した前記データ・グラニュール及び前記メタデータ項目の両方の通信を可能にする、バス・インターフェースと、
複数の記憶要素であって、前記バス・インターフェースを介して前記メモリ・システム内で実施される前記アクセスが、前記コマンドによってアクセスされる前記記憶要素に応じて制御されるように、前記デバッガから発行された前記コマンドを介してアクセス可能な複数の記憶要素と
を備え、
前記記憶要素のうちの少なくとも１つが、複数のメタデータ項目を記憶するためのメタデータ記憶要素を備え、
前記デバッグ・アクセス・ポート回路は、前記デバッガからの少なくとも１つのコマンドに応答して、前記メタデータ記憶要素と前記メモリ・システムとの間で前記複数のメタデータ項目のうちの少なくとも１つを転送するために前記メモリ・システムへのアクセスを実施する、デバッグ・アクセス・ポート回路。
【請求項２】
前記記憶要素のうちの少なくとも１つが、アクセスされることになるメモリ・アドレスの指示を記憶するためのメモリ・アドレス記憶要素を備え、
前記デバッグ・アクセス・ポート回路は、前記複数のメタデータ項目のうちの前記少なくとも１つにアクセスするための前記メモリ・システム内のロケーションを決定するために前記メモリ・アドレス記憶要素を参照するように構成されている、請求項１に記載のデバッグ・アクセス・ポート回路。
【請求項３】
前記デバッグ・アクセス・ポート回路は、前記複数のメタデータ項目のうちの前記少なくとも１つのために使用される前記メタデータ記憶要素内のロケーションを決定するために前記メモリ・アドレス記憶要素を参照するようにさらに構成されている、請求項２に記載のデバッグ・アクセス・ポート回路。
【請求項４】
前記メモリ・アドレスの指定された数の低位アドレス・ビットが、前記メタデータ記憶要素内の前記ロケーションを決定するために使用される、請求項３に記載のデバッグ・アクセス・ポート回路。
【請求項５】
前記メモリ・システムからの読取りアクセス中に、前記メモリ・システムから取り出された前記メタデータ項目は、前記メタデータ記憶要素内の前記決定されたロケーションに書き込まれるが、前記メタデータ記憶要素内の他のロケーションのコンテンツが不変のままである、請求項３又は４に記載のデバッグ・アクセス・ポート回路。
【請求項６】
前記メタデータ記憶要素は、前記メモリ・システムからの読取りアクセス中にメタデータ項目を前記メタデータ記憶要素に追加し、前記メモリ・システムへの書込みアクセス中に前記メタデータ記憶要素からメタデータ項目を出力するためにシフト動作が使用されるように、シフト・レジスタ構造として構成されている、請求項１又は２に記載のデバッグ・アクセス・ポート回路。
【請求項７】
前記複数の記憶要素は、前記デバッガからのコマンドを介してアクセスされる場合に、前記メモリ・システムへのアクセスが前記デバッグ・アクセス・ポート回路によって開始されることを引き起こす、１つ又は複数のアクセス・トリガ要素をさらに備える、請求項１から６までのいずれか一項に記載のデバッグ・アクセス・ポート回路。
【請求項８】
前記複数の記憶要素は、前記１つ又は複数のアクセス・トリガ要素がアクセスされる場合に実施されることになるアクセス動作のタイプを識別するために前記デバッガからのコマンドを介してアクセス可能なモード制御記憶要素をさらに備える、請求項７に記載のデバッグ・アクセス・ポート回路。
【請求項９】
前記１つ又は複数のアクセス・トリガ要素は複数のアクセス・トリガ要素を備え、各アクセス・トリガ要素は異なるタイプのアクセス動作に関連し、前記デバッガは、前記メモリ・システムへのアクセス動作を開始するためにコマンドを発行する場合に、開始されることになる前記タイプのアクセス動作のための適切なアクセス・トリガ要素を前記コマンド内で識別するように構成されている、請求項７に記載のデバッグ・アクセス・ポート回路。
【請求項１０】
前記デバッグ・アクセス・ポート回路は、前記デバッガから受信された前記コマンドに応じて、前記バス・インターフェースを介して、サポートされるアクセス動作のセットからのアクセス動作を開始するように構成されている、請求項１から９までのいずれか一項に記載のデバッグ・アクセス・ポート回路。
【請求項１１】
前記サポートされるアクセス動作のセットは、
前記メタデータ記憶要素から取得された値を使用してメタデータ項目の値を更新し、前記デバッガからのコマンドによって提供されたデータ値を使用して前記関連するデータ・グラニュールの少なくとも一部分の現在の値を更新するための書込み動作と、
前記メタデータ記憶要素から取得された値を使用してメタデータ項目の値を更新するが、前記関連するデータ・グラニュールの現在の値を保存するための書込み動作と、
前記メタデータ記憶要素から取得された値を使用してメタデータ項目の値を更新し、前記関連するデータ・グラニュールの少なくとも一部分の値を知られている値に更新するための書込み動作と、
データ・グラニュールの少なくとも一部分を前記メモリ・システムに書き込み、前記関連するメタデータ項目の現在の値を保存するための書込み動作と、
データ・グラニュールの少なくとも一部分を前記メモリ・システムに書き込み、前記関連するメタデータ項目の値をデフォルト値に更新するための書込み動作と
のうちの１つ又は複数を備える、請求項１０に記載のデバッグ・アクセス・ポート回路。
【請求項１２】
前記サポートされるアクセス動作のセットは、
前記メモリ・システムからメタデータ項目を読み取り、前記読み取られたメタデータ項目の値を前記メタデータ記憶要素に記憶し、前記メモリ・システムから前記関連するデータ・グラニュールの少なくとも一部分をさらに読み取るための読取り動作と、
前記関連するデータ・グラニュールをさらに読み取ることなしに、前記メモリ・システムからメタデータ項目を読み取り、前記読み取られたメタデータ項目の値を前記メタデータ記憶要素に記憶するための読取り動作と、
前記関連するメタデータ項目を読み取ることなしに、前記メモリ・システムからデータ・グラニュールの少なくとも一部分を読み取るための読取り動作と
のうちの１つ又は複数を備える、請求項１０に記載のデバッグ・アクセス・ポート回路。
【請求項１３】
各メタデータ項目は１つ又は複数のビットを備える、請求項１から１２までのいずれか一項に記載のデバッグ・アクセス・ポート回路。
【請求項１４】
各メタデータ項目は、前記関連するデータ・グラニュールが能力を指定するか否かを識別する能力タグである、請求項１から１３までのいずれか一項に記載のデバッグ・アクセス・ポート回路。
【請求項１５】
各メタデータ項目は、前記関連するデータ・グラニュールの割振りポリシーを識別する割振りタグである、請求項１から１４までのいずれか一項に記載の方法。
【請求項１６】
前記デバッグ・インターフェースは、ＪＴＡＧ、シリアル・ワイヤ、又はＰＣＩインターフェースのうちの１つである、請求項１から１５までのいずれか一項に記載のデバッグ・アクセス・ポート回路。
【請求項１７】
前記複数の記憶要素はアドレス空間内に存在し、前記デバッグ・インターフェースにおいて受信されたコマンドが、前記アドレス空間内のアドレスを指定することによって、前記コマンドが関係する記憶要素を識別する、請求項１から１６までのいずれか一項に記載のデバッグ・アクセス・ポート回路。
【請求項１８】
前記複数の記憶要素は複数のレジスタを備える、請求項１から１７までのいずれか一項に記載のデバッグ・アクセス・ポート回路。
【請求項１９】
前記デバッグ・アクセス・ポート回路は、前記デバッガからのコマンドに応答して、前記バス・インターフェースを介して、アクセス動作の複数の反復を開始し、各反復について、前記メモリ・アドレス記憶要素に記憶された前記メモリ・アドレスの指示が増分される、請求項２に従属する場合の請求項１から１８までのいずれか一項に記載のデバッグ・アクセス・ポート回路。
【請求項２０】
前記アクセス動作が、メタデータ項目及び前記データの両方がアクセスされることを要求する場合に、前記メモリ・アドレスの指示は、次の反復のためのアドレスの指示を提供するために、現在の反復においてアクセスされたデータの量に基づいて増分され、
前記アクセス動作が、メタデータ項目のみがアクセスされることを要求する場合に、前記メモリ・アドレスの指示は、データ・グラニュール・サイズのｎ倍増分され、ｎは、前記次の反復のためのアドレスの指示を提供するために、前記現在の反復においてアクセスされたメタデータ項目の数に等しい、請求項１９に記載のデバッグ・アクセス・ポート回路。
【請求項２１】
デバッグ・アクセス・ポート回路を動作させる方法であって、
デバッガからコマンドを受信するステップと、
前記デバッガがデバイスのメモリ・システムにアクセスすることを可能にするためにバスに結合するためのバス・インターフェースを提供するステップであって、前記デバイスは、関連するメタデータ項目を有するデータ・グラニュールから形成されたデータに対して動作し、前記バス・インターフェースは、前記メモリ・システムと前記バス・インターフェースとの間の前記バスを介した前記データ・グラニュール及び前記メタデータ項目の両方の通信を可能にする、ステップと、
複数の記憶要素であって、前記バス・インターフェースを介して前記メモリ・システム内で実施される前記アクセスが、前記コマンドによってアクセスされる前記記憶要素に応じて制御されるように、前記デバッガから発行された前記コマンドを介してアクセス可能な複数の記憶要素を提供するステップと、
複数のメタデータ項目を記憶するためのメタデータ記憶要素として前記記憶要素のうちの少なくとも１つを提供するステップと、
前記デバッガからの少なくとも１つのコマンドに応答して、前記メタデータ記憶要素と前記メモリ・システムとの間で前記複数のメタデータ項目のうちの少なくとも１つを転送するために前記メモリ・システムへのアクセスを実施するステップと
を含む、方法。
【請求項２２】
デバッグ・アクセス・ポート回路であって、
デバッガからコマンドを受信するためのデバッグ・インターフェース手段と、
前記デバッガがデバイスのメモリ・システムにアクセスすることを可能にするためにバスに結合するためのバス・インターフェース手段であって、前記デバイスは、関連するメタデータ項目を有するデータ・グラニュールから形成されたデータに対して動作し、前記バス・インターフェース手段は、前記メモリ・システムと前記バス・インターフェース手段との間の前記バスを介した前記データ・グラニュール及び前記メタデータ項目の両方の通信を可能にする、バス・インターフェース手段と、
複数の記憶要素手段であって、前記バス・インターフェース手段を介して前記メモリ・システム内で実施される前記アクセスが、前記コマンドによってアクセスされる前記記憶要素手段に応じて制御されるように、前記デバッガから発行された前記コマンドを介してアクセス可能な複数の記憶要素手段と
を備え、
前記記憶要素手段のうちの少なくとも１つが、複数のメタデータ項目を記憶するためのメタデータ記憶要素手段を備え、
前記デバッグ・アクセス・ポート回路は、前記デバッガからの少なくとも１つのコマンドに応答して、前記メタデータ記憶要素手段と前記メモリ・システムとの間で前記複数のメタデータ項目のうちの少なくとも１つを転送するために前記メモリ・システムへのアクセスを実施する、デバッグ・アクセス・ポート回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、デバイスをデバッグするときにメタデータにアクセスするための技法に関する。
【背景技術】
【０００２】
デバイスは、様々な形態をとることができ、たとえば、デバイスのメモリ・システム内に保持されたデータに対してデータ処理動作を実施するための中央処理ユニット（ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）など、１つ又は複数の処理回路を含み得る。
【０００３】
デバイスは、関連するメタデータ項目（ｍｅｔａｄａｔａ  ｉｔｅｍ）を有するデータ・グラニュール（ｄａｔａ  ｇｒａｎｕｌｅ）から形成されたデータに対して動作するように構成され得る。データ・グラニュールのサイズは実装に応じて変動し得、実際、各データ・グラニュールに関連するメタデータ項目のサイズも、実装に応じて変動し得る。
【０００４】
たとえば、処理回路のうちの１つ上で実行されるべきプログラムをデバッグするために、デバイスに関してデバッギング動作を実施するとき、デバッガは、いくつかの時点において、対応するデータ・グラニュールに関係する１つ又は複数のメタデータ項目にアクセスすることを望み得る。たとえば、それらのメタデータ項目の各々の値を読み取ることが所望され得る。代替的に、それらのメタデータ項目の各々の現在の値を更新するために書込み動作を実施することが所望され得る。
【０００５】
デバイスの処理回路は、１つ又は複数のメタデータ項目にアクセスするためのメタデータ・アクセス動作の実施をサポートし得、したがって、デバッガは、デバッガがメタデータにアクセスすることを望むとき、処理回路がそのようなメタデータ・アクセス動作を実施することを引き起こすために、処理回路にコマンドを発行し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、これは、デバッガが当該のメタデータ項目にアクセスするのをサポートするために、処理回路によって実施されている現在の動作を停止させることを必要とし得る。デバイスのデバッギング中にメタデータ項目にアクセスするための改善された機構を提供することが望ましい。
【課題を解決するための手段】
【０００７】
第１の例示的な構成では、デバッグ・アクセス・ポート回路であって、デバッガからコマンドを受信するためのデバッグ・インターフェースと、デバッガがデバイスのメモリ・システムにアクセスすることを可能にするためにバスに結合するためのバス・インターフェースであって、デバイスが、関連するメタデータ項目を有するデータ・グラニュールから形成されたデータに対して動作し、バス・インターフェースが、メモリ・システムとバス・インターフェースとの間のバスを介したデータ・グラニュールとメタデータ項目の両方の通信を可能にする、バス・インターフェースと、デバッガから発行されたコマンドを介してアクセス可能な複数の記憶要素であって、バス・インターフェースを介してメモリ・システム内で実施されるアクセスが、コマンドによってアクセスされる記憶要素に応じて制御されるような、複数の記憶要素とを備え、記憶要素のうちの少なくとも１つが、複数のメタデータ項目を記憶するためのメタデータ記憶要素を備え、デバッグ・アクセス・ポート回路が、デバッガからの少なくとも１つのコマンドに応答して、メタデータ記憶要素とメモリ・システムとの間で複数のメタデータ項目のうちの少なくとも１つを転送するためにメモリ・システムへのアクセスを実施する、デバッグ・アクセス・ポート回路が提供される。
【０００８】
別の例示的な構成では、デバッグ・アクセス・ポート回路を動作させる方法であって、デバッガからコマンドを受信するステップと、デバッガがデバイスのメモリ・システムにアクセスすることを可能にするためにバスに結合するためのバス・インターフェースを提供するステップであって、デバイスが、関連するメタデータ項目を有するデータ・グラニュールから形成されたデータに対して動作し、バス・インターフェースが、メモリ・システムとバス・インターフェースとの間のバスを介したデータ・グラニュールとメタデータ項目の両方の通信を可能にする、ステップと、デバッガから発行されたコマンドを介してアクセス可能な複数の記憶要素を提供するステップであって、バス・インターフェースを介してメモリ・システム内で実施されるアクセスが、コマンドによってアクセスされる記憶要素に応じて制御されるような、ステップと、複数のメタデータ項目を記憶するためのメタデータ記憶要素として記憶要素のうちの少なくとも１つを提供するステップと、デバッガからの少なくとも１つのコマンドに応答して、メタデータ記憶要素とメモリ・システムとの間で複数のメタデータ項目のうちの少なくとも１つを転送するためにメモリ・システムへのアクセスを実施するステップとを含む、方法が提供される。
【０００９】
またさらなる例示的な設定では、デバッグ・アクセス・ポート回路であって、デバッガからコマンドを受信するためのデバッグ・インターフェース手段と、デバッガがデバイスのメモリ・システムにアクセスすることを可能にするためにバスに結合するためのバス・インターフェース手段であって、デバイスが、関連するメタデータ項目を有するデータ・グラニュールから形成されたデータに対して動作し、バス・インターフェース手段が、メモリ・システムとバス・インターフェース手段との間のバスを介したデータ・グラニュールとメタデータ項目の両方の通信を可能にする、バス・インターフェース手段と、デバッガから発行されたコマンドを介してアクセス可能な複数の記憶要素手段であって、バス・インターフェース手段を介してメモリ・システム内で実施されるアクセスが、コマンドによってアクセスされる記憶要素手段に応じて制御されるような、複数の記憶要素手段とを備え、記憶要素手段のうちの少なくとも１つが、複数のメタデータ項目を記憶するためのメタデータ記憶要素手段を備え、デバッグ・アクセス・ポート回路が、デバッガからの少なくとも１つのコマンドに応答して、メタデータ記憶要素手段とメモリ・システムとの間で複数のメタデータ項目のうちの少なくとも１つを転送するためにメモリ・システムへのアクセスを実施する、デバッグ・アクセス・ポート回路が提供される。
【００１０】
本技法は、単に例として、添付の図面に示されているその実例を参照しながらさらに説明される。
【図面の簡単な説明】
【００１１】
【図１】一実例によるシステムのブロック図である。
【図２】一実例による、図１のメタデータ・アウェア・メモリ・アクセス・ポート内に提供される構成要素を示すブロック図である。
【図３Ａ】１つの例示的な構成による、デバッガがいくつかのメタデータ項目を読み取るための機構を示す流れ図である。
【図３Ｂ】１つの例示的な構成による、デバッガがいくつかのメタデータ項目を読み取るための機構を示す流れ図である。
【図４Ａ】１つの例示的な構成による、デバッガが一連のメタデータ項目を書き込むための機構を示す流れ図である。
【図４Ｂ】１つの例示的な構成による、デバッガが一連のメタデータ項目を書き込むための機構を示す流れ図である。
【図５】代替構成による、図１のメタデータ・アウェア・メモリ・アクセス・ポート内に提供される構成要素を示すブロック図である。
【図６Ａ】図５のメタデータ・アウェア・メモリ・アクセス・ポートを使用するときにデバッガが一連のメタデータ項目をどのように読み取り得るかを示す流れ図である。
【図６Ｂ】図５のメタデータ・アウェア・メモリ・アクセス・ポートを使用するときにデバッガが一連のメタデータ項目をどのように読み取り得るかを示す流れ図である。
【図７Ａ】図５のメタデータ・アウェア・メモリ・アクセス・ポートを使用するときにデバッガが一連のメタデータ項目にどのように書き込み得るかを示す流れ図である。
【図７Ｂ】図５のメタデータ・アウェア・メモリ・アクセス・ポートを使用するときにデバッガが一連のメタデータ項目にどのように書き込み得るかを示す流れ図である。
【図８Ａ】メタデータ項目が各データ・グラニュールに関連してどのように提供され得るかを示す図である。
【図８Ｂ】メタデータ項目が各データ・グラニュールに関連してどのように提供され得るかを示す図である。
【図９】メタデータ項目が能力タグである例示的な構成を示す図である。
【図１０】メタデータ項目が割振りタグである別の例示的な構成を示す図である。
【図１１】１つの例示的な構成による、デバッガがそれを介してメタデータ・アウェア・メモリ・アクセス・ポートにコマンドを発行し得る、デバッガにとって利用可能な限られたアドレス空間を概略的に示す図である。
【発明を実施するための形態】
【００１２】
１つの例示的な構成によれば、デバッグ・アクセス・ポート回路は、デバイスに対してデバッギング・アクティビティを実施するときのデバッガによる使用のために提供される。特に、デバッグ・アクセス・ポート回路は、デバッガからコマンドを受信するためのデバッグ・インターフェースと、デバッガがデバイスのメモリ・システムにアクセスすることを可能にするためにバスに結合するためのバス・インターフェースとを有する。デバイスは、関連するメタデータ項目を有するデータ・グラニュールから形成されたデータに対して動作するように構成され、バス・インターフェースは、メモリ・システムとバス・インターフェースとの間のバスを介したデータ・グラニュールとメタデータ項目の両方の通信を可能にするように構成される。
【００１３】
デバッグ・アクセス・ポート回路は、デバッガから発行されたコマンドを介してアクセス可能な複数の記憶要素であって、バス・インターフェースを介してメモリ・システム内で実施されるアクセスが、コマンドによってアクセスされる記憶要素に応じて制御されるような、複数の記憶要素を有する。本明細書で説明される実例によれば、記憶要素のうちの少なくとも１つは、複数のメタデータ項目を記憶するためのメタデータ記憶要素を備える。デバッグ・アクセス・ポート回路は、次いで、デバッガからの少なくとも１つのコマンドに応答して、メタデータ記憶要素とメモリ・システムとの間で複数のメタデータ項目のうちの少なくとも１つを転送するためにメモリ・システムへのアクセスを実施する。
【００１４】
このようにしてデバッグ・アクセス・ポート回路を構成することによって、これは、デバッガが、デバイス内の処理回路を、それの代わりにアクセス動作を実施するために採用する必要なしに、メタデータ項目に対してアクセス動作を実施するためにデバイスのメモリ・システムに効率的にアクセスするための機構を提供する。複数のメタデータ項目を記憶することができるメタデータ記憶要素を提供することによって、メモリ中の一連のメタデータ項目についての値が、デバッガによって発行された適切なコマンドを使用してメタデータ記憶要素に読み取られ得るか、又は代替的に、メタデータ項目についての一連の更新された値が、メタデータ記憶要素内に記憶され得、次いで、メタデータ記憶要素中に保持された値を使用して、メモリ・システムに記憶された一連のメタデータ項目の値を更新するために、デバッガによって書込み動作がトリガされ得る。
【００１５】
アクセスされることになるメタデータ項目がデバッガによって識別され得るいくつかのやり方がある。１つの例示的な構成では、デバッグ・アクセス・ポート回路は、記憶要素のうちの少なくとも１つが、アクセスされることになるメモリ・アドレスの指示を記憶するためのメモリ・アドレス記憶要素を備えるように構成される。メモリ・アドレス記憶要素に発行されたコマンドを介して、メモリ・アドレスが、したがって、メモリ・アドレス記憶要素内に記憶され得る。デバッグ・アクセス・ポート回路は、次いで、複数のメタデータ項目のうちの少なくとも１つにアクセスするためのメモリ・システム内のロケーションを決定するためにメモリ・アドレス記憶要素を参照するように構成され得る。
【００１６】
アドレスは、様々な形式をとることができる。１つの例示的な構成では、アドレスは、特定のデータ・グラニュールを識別するために使用され、そのアドレスに基づいて、メモリ中の関連するメタデータ項目のロケーションが決定され得、したがって、そのロケーションは、デバッガがメモリ・アドレス記憶要素内のそのアドレスを使用してメタデータ・アクセス動作をトリガするためにコマンドを発行したとき、アクセスされ得る。
【００１７】
デバッガ・アクセス・ポート回路を介してデバッガによってトリガされた各メモリ・アクセス動作に応答してアクセスされるメタデータ項目の数は、実装に応じて変動することができる。たとえば、メモリ・アクセス動作をトリガするデバッガからの単一のコマンドに応答して複数のメタデータ項目にアクセスすることが可能であり得る。しかしながら、代替手法では、デバッガがメモリ・アクセス動作をトリガするためにコマンドを発行するたびに、単一のメタデータ項目がアクセスされ得る。
【００１８】
メタデータ記憶要素内で使用されることになるロケーションが、アクセスされている各メタデータ項目について識別され得るいくつかのやり方がある。１つの例示的な構成では、デバッグ・アクセス・ポート回路は、アクセスされているメタデータ項目のために適用可能なメタデータ記憶要素内のロケーションを決定するためにメモリ・アドレス記憶要素を参照するようにさらに構成される。たとえば、メモリ・アドレスの指定された数の低位アドレス・ビットが、メタデータ記憶要素内のロケーションを決定するために使用され得る。したがって、メモリ・アドレス記憶要素によって識別される異なるアドレスに各々が関連する一連のアクセスを介して、各そのようなアクセスについてメタデータ記憶要素内の適用可能なロケーションを識別することが可能である。
【００１９】
いくつかのメタデータ項目の値を取り出すためにメモリ・システムからの読取りアクセスを実施するとき、１つの例示的な構成では、メモリから取り出されたメタデータ項目の取得された値は、メタデータ記憶要素内の決定されたロケーションに書き込まれ得るが、メタデータ記憶要素内の他のロケーションのコンテンツは不変のままである。そのような手法によって、異なるアドレスに各々が関連するメタデータ・アクセス動作の繰り返される実施を通して、メタデータ記憶要素内で、効率的な様式で複数のメタデータ項目についての読み取られた値を構築することが可能である。デバッガは、その後、それらの複数の取り出されたメタデータ項目値を取得するためにメタデータ記憶要素のコンテンツを読み取ることができる。
【００２０】
各メタデータ・アクセス動作についてアクセスするためにメタデータ記憶要素内の適切なロケーションを識別するためにメモリ・アドレス指示を使用することの代替として、メタデータ記憶要素は、代わりに、シフト・レジスタ構造として構成され得る。そのような構成によれば、メモリ・システムからの読取りアクセス中にメタデータ項目をメタデータ記憶要素に追加し、メモリ・システムへの書込みアクセス中にメタデータ記憶要素からメタデータ項目を出力するためにシフト動作が使用され得る。
【００２１】
デバッガがメタデータ項目にアクセスするためにメモリ・システムへのアクセスをトリガし得るいくつかのやり方がある。しかしながら、１つの例示的な構成では、複数の記憶要素は、デバッガからのコマンドを介してアクセスされたとき、メモリ・システムへのアクセスがデバッグ・アクセス・ポート回路によって開始されることを引き起こす、１つ又は複数のアクセス・トリガ要素をさらに備える。アクセス・トリガ要素は、それらがあるデータを記憶することができるように構成され得るが、それらがそのようなやり方で編成されることについての要件はなく、代わりに、それらは、それらがデバッガからのコマンドを介してアドレス指定されたとき、それがメモリ・システムへの必要とされるアクセスをトリガするように構成され得るにすぎないことに留意されたい。
【００２２】
アクセスが、メタデータ項目だけでなく関連するデータ・グラニュールの少なくとも一部分にもアクセスすることを伴うとき、データ・グラニュール（又はその関連のある部分）の値は、所望される場合、アクセス・トリガ要素内に一時的に記憶され得るが、代替構成では、データ・グラニュール（又はその関連のある部分）の値は、アクセス・トリガ要素を直接通過し得る（したがって、書込み動作の場合、データ・グラニュール又はその一部分の値は、バスまでまっすぐに受け渡され得るが、読取り動作の場合、読み取られたデータは、バスから直接デバッガに受け渡され得る）。
【００２３】
１つの例示的な構成では、複数の異なるタイプのアクセス動作がデバッグ・アクセス・ポート回路によってサポートされ得る。１つの例示的な設定では、複数の記憶要素は、前記１つ又は複数のアクセス・トリガ要素がアクセスされたときに実施されることになるアクセス動作のタイプを識別するようにとのデバッガからのコマンドを介してアクセス可能なモード制御記憶要素をさらに備え得る。したがって、そのような手法によれば、アクセス・トリガ要素は、デバッガからのコマンドを介してアドレス指定されたとき、メモリ・システムへのアクセスが行われることを引き起こし、実施されるアクセスのタイプが次いでモード制御記憶要素の現在のコンテンツによって規定される、一般的な要素であり得る。
【００２４】
しかしながら、代替構成では、そのようなモード制御記憶要素は使用されないことがあり、代わりに、複数の異なるアクセス・トリガ要素が提供され得る。特に、１つの例示的な構成では、前記１つ又は複数のアクセス・トリガ要素は複数のアクセス・トリガ要素を備え得、各アクセス・トリガ要素が異なるタイプのアクセス動作に関連し、デバッガは、メモリ・システムへのアクセス動作を開始するようにとのコマンドを発行したとき、開始されることになるタイプのアクセス動作のための適切なアクセス・トリガ要素をコマンド内で識別するように構成される。したがって、この実施例によれば、異なるアクセス・トリガ要素は異なるタイプのアクセス動作に関連し、デバッガは、デバッガが実施することを望むタイプのアクセス動作を顧慮した適切なアクセス・トリガ要素にコマンドを発行する。
【００２５】
モード制御記憶要素が使用されるのか複数の異なるアクセス・トリガ要素が使用されるのかにかかわらず、デバッグ・アクセス・ポート回路は、デバッガから受信されたコマンドに応じて、バス・インターフェースを介して、サポートされるアクセス動作のセットからのアクセス動作を開始するように構成され得る。
【００２６】
実例として、サポートされるアクセス動作のセットは、メタデータ記憶要素から取得された値を使用してメタデータ項目の値を更新し、デバッガからのコマンドによって提供されたデータ値を使用して関連するデータ・グラニュールの少なくとも一部分の現在の値を更新するための、書込み動作と、メタデータ記憶要素から取得された値を使用してメタデータ項目の値を更新するが、関連するデータ・グラニュールの現在の値を保存するための、書込み動作と、メタデータ記憶要素から取得された値を使用してメタデータ項目の値を更新し、関連するデータ・グラニュールの少なくとも一部分の値を知られている値に更新するための、書込み動作と、データ・グラニュールの少なくとも一部分をメモリ・システムに書き込み、関連するメタデータ項目の現在の値を保存するための、書込み動作と、データ・グラニュールの少なくとも一部分をメモリ・システムに書き込み、関連するメタデータ項目の値をデフォルト値に更新するための、書込み動作とのうちの１つ又は複数を備え得る。
【００２７】
したがって、多種多様な異なるタイプの書込み動作がデバッグ・アクセス・ポート回路を介してデバッガによってトリガされ得ることが諒解されよう。
【００２８】
別の実例として、サポートされるアクセス動作のセットは、メモリ・システムからメタデータ項目を読み取り、読み取られたメタデータ項目の値をメタデータ記憶要素に記憶し、メモリ・システムから関連するデータ・グラニュールの少なくとも一部分をさらに読み取るための、読取り動作と、関連するデータ・グラニュールをさらに読み取ることなしに、メモリ・システムからメタデータ項目を読み取り、その読み取られたメタデータ項目の値をメタデータ記憶要素に記憶するための、読取り動作と、関連するメタデータ項目を読み取ることなしに、メモリ・システムからデータ・グラニュールの少なくとも一部分を読み取るための、読取り動作とのうちの１つ又は複数を備え得る。したがって、デバッグ・アクセス・ポート回路の使用が、実施され得る読取り動作のタイプに関してデバッガに多くのフレキシビリティをも提供することがわかり得る。
【００２９】
各メタデータ項目は、メタデータの形式に応じて１つ又は複数のビットを備え得る。特定の実例として、各メタデータ項目は、関連するデータ・グラニュールが能力を指定するかどうかを識別する能力タグであり得る。いくつかの能力が所与のプロセスについて定義され、定義された能力外の動作を行おうとする試みがある場合にエラーがトリガされ得る能力ベース・アーキテクチャへの関心が増加している。有界ポインタ（ｂｏｕｎｄｅｄ  ｐｏｉｎｔｅｒ）が能力の一実例である。ポインタ自体が、たとえば、アクセスされることになるデータ値又は実行されるべき命令のアドレスを指すか、又はそれを決定するために使用され得る。しかしながら、ポインタはまた、ポインタを使用するときのアドレスの許容範囲を示す関連する範囲情報を有し得る。これは、たとえば、挙動のセキュリティ又は機能的正当性を維持するために、ポインタから決定されたアドレスがある限界内に残ることを確実にするために、有用であり得る。そのような能力ベース・システム内では、特定のデータ・グラニュールが能力に関係するのか汎用データに関係するのかを知ることは重要であり、能力タグは、この目的で使用され得る。
【００３０】
メタデータ項目の別の実例として、メタデータ項目は、関連するデータ・グラニュールの割振りポリシーを識別する割振りタグであり得る。そのような割振りタグは、ガード・タグと呼ばれることもある。いくつかのメモリ使用エラーから保護するための１つの手法は、１つ又は複数のメモリ・ロケーションのブロックに関連してメモリ・システムに記憶されるガード・タグを提供することであり得る（それらの１つ又は複数のメモリ・ロケーション中のデータがデータ・グラニュールである）。タグガード（ｔａｇ−ｇｕａｒｄｅｄ）・メモリ・アクセス動作が、メモリ・システム中の特定のアドレス指定されたロケーションを識別するターゲット・アドレスに基づいて要求されたとき、メモリ・アクセス回路は、ターゲット・アドレスに関連するアドレス・タグを、ターゲット・アドレスによって識別されたアドレス指定されたロケーションを含む１つ又は複数のメモリ・ロケーションのブロックに関連してメモリ・システムに記憶されたガード・タグと比較し得る。メモリ・アクセス回路は、ガード・タグとアドレス・タグとの間の一致が検出されたかどうかの指示を生成し得る。この指示は、メモリ・アクセスが成功することを可能にされるかどうか、又は、後続の動作が成功することができるかどうかを制御するために使用され得るか、或いは、メモリ・アクセスが通常通り続くことを可能にしながら報告され得るにすぎない。
【００３１】
デバッガが、メモリ・システムにアクセスするためのコマンドを発行することを可能にするためにデバッグ・アクセス・ポート回路によって提供されるデバッグ・インターフェースは、様々な形態をとることができる。しかしながら、メモリ・システム内で実施されることになるアクセスが、デバッグ・アクセス・ポート回路によって提供される記憶要素の比較的小さいセットにコマンドを発行することによって誘発されることにより、デバッグ・インターフェースは、比較的コンパクトな形態をとることができる。単に実例として、デバッグ・インターフェースは、ＪＴＡＧ、シリアル・ワイヤ、又はＰＣＩインターフェースのうちの１つであり得る。
【００３２】
１つの例示的な構成では、複数の記憶要素がアドレス空間内に存在し、デバッグ・インターフェースにおいて受信されたコマンドは、アドレス空間内のアドレスを指定することによって、コマンドが関係する記憶要素を識別する。これは、様々な記憶要素を識別するための効率的な機構を提供する。
【００３３】
複数の記憶要素は、様々な形態をとることができるが、１つの例示的な構成では、複数のレジスタを備える。
【００３４】
例示的な一実装形態では、デバッグ・アクセス・ポート回路は、デバッガからのコマンドに応答して、バス・インターフェースを介して、アクセス動作の複数の反復を開始し、各反復について、メモリ・アドレス記憶要素に記憶されたメモリ・アドレス指示が増分される。
【００３５】
メモリ・アドレス指示が増分される量は、例示的な一実装形態では、実施されているアクセス動作のタイプに応じて変動し得る。たとえば、例示的な一実装形態では、アクセス動作が、メタデータ項目とデータの両方がアクセスされることを必要とするとき、メモリ・アドレス指示は、次の反復のためのアドレス指示を提供するために、現在の反復においてアクセスされたデータの量に基づいて増分される。しかしながら、アクセス動作が、メタデータ項目のみがアクセスされることを必要とするとき、メモリ・アドレス指示は、ｎ×データ・グラニュール・サイズだけ増分され得、ここで、ｎは、次の反復のためのアドレス指示を提供するために、現在の反復においてアクセスされたメタデータ項目の数に等しい。
【００３６】
次に、図を参照しながら特定の実例が説明される。
【００３７】
図１は、１つの例示的な設定によるシステムのブロック図である。デバッガ１０が、デバイスに関してデバッグ動作を実施するために使用される。デバイスは様々な異なる形態をとることができるが、例示のために、図１中のデバイスは、相互接続３０を介してメモリ３５といくつかの周辺デバイス４０とに接続された１つ又は複数の中央処理ユニット（ＣＰＵ）１５からなる。デバッガは、関連するメモリ・アクセス・ポート２０、２５を介したデバイスへのいくつかのバス接続を確立することができ、そのようなメモリ・アクセス・ポートは、本明細書ではデバッグ・アクセス・ポート回路とも呼ばれる。図１に示されているように、第１のメモリ・アクセス・ポート２０が提供され、第１のメモリ・アクセス・ポート２０を介して、デバッガは、ＣＰＵ１５のうちの１つ又は複数がいくつかの動作を実施することを引き起こすために、コマンドを発行することができる。メモリ・アクセス・ポート２０はバス２２を介してＣＰＵに結合され、バス２２を介して、メモリ・アクセス・ポートは、デバッガから受信されたコマンドによって示されるいくつかの動作を実施するようにＣＰＵに命令することができ、データは、メモリ・アクセス・ポートとＣＰＵとの間で両方向において流れ得る。
【００３８】
本明細書で説明される技法によれば、メタデータ・アウェアであり、特に、バス２７に結合することができる追加のメモリ・アクセス・ポート２５が提供され、バス２７を介して、データ・グラニュールと関連するメタデータ項目の両方がトランスポートされ得る。メタデータ・アウェア・メモリ・アクセス・ポート２５は機構を提供し、その機構を介して、デバッガ１０は、メモリ３５に記憶されたメタデータ項目に直接アクセスし、したがって、ＣＰＵ１５のうちの１つ内でメタデータ・アクセス動作を開始する必要なしに、デバッガを介して直接、メタデータ項目を読み取り、メタデータ項目に書き込むことをサポートすることができる。
【００３９】
図２は、１つの例示的な構成による、メタデータ・アウェア・メモリ・アクセス・ポート２５内に提供される構成要素をより詳細に示すブロック図である。メモリ・アクセス・ポート２５は、デバッガ１０に結合するためのデバッグ・インターフェース５０と、バス２７に結合するためのバス・インターフェース７５とを有する。メモリ・アクセス・ポート内に、デバッガ１０から発行されたコマンドを介してアクセス可能である複数の記憶要素が提供される。特に、図２に示されている実例では、様々な記憶要素は、異なるレジスタの形態をとる。小さいアドレス空間がメモリ・アクセス・ポートに関連し、デバッガによって発行されたコマンドは、レジスタのうちの特定のレジスタを、そのレジスタに関連するアドレスを識別することによって、ターゲットにすることができる。各コマンドは、したがって、アクセス・ポート（ＡＰ：ａｃｃｅｓｓ  ｐｏｒｔ）レジスタ・アドレスと、何らかの付随する「データ」とを指定し得る。データは、コマンドによってアクセスされているレジスタに応じて様々な形式をとることができる。
【００４０】
したがって、たとえば、関連するデータ・グラニュール及び／又はそのデータ・グラニュールに関連するメタデータ項目に関してアクセスを実施するように、デバッガがメモリ中のアドレスにアクセスすることを望むとき、デバッガは、バス・アドレス・レジスタ５５を識別するコマンドを発行し得、そのコマンドで提供されるデータは、アクセスされることになるメモリ中のアドレスの指示である。そのようなコマンドがバス・アドレス・レジスタ５５に発行されたとき、バス・アドレス・レジスタのコンテンツは、当該のメモリ・アドレスを識別するために、コマンドによって提供されたデータを用いて更新される。
【００４１】
データ・レジスタ６０も提供され得、コマンドがデバッガからデータ・レジスタに発行されたとき、これは、バス・アドレス・レジスタ５５内に提供されたメモリ・アドレスを使用して、メモリへのアクセス動作を開始するようにメモリ・アクセス・ポートをトリガする。書込み動作を開始するために使用されるコマンドの場合、関連する書込みデータが、たとえば、アクセスされることになるデータ・グラニュールの少なくとも一部分についての更新された値を識別するために指定され得、そのデータは、所望される場合、データ・レジスタ６０内に一時的にバッファされ得る。代替的に、データは、データ・レジスタ自体内に記憶される必要がないことがあり、代わりに、データは、バスまでまっすぐに受け渡され得、データ・レジスタ６０へのアクセスは、単に、書込み動作の実施をトリガするための機構として使用される。
【００４２】
同様に、読取り動作の場合、ターゲットにされるデータ・グラニュールの少なくとも一部分に関係する読み取られたデータがメモリ・アクセス・ポート２５に返されるとき、そのデータは、データ・レジスタ６０内に一時的にバッファされ得るか、又は代替的に、デバッガ１０に返るようにアクセス・ポートを通ってまっすぐに受け渡され得、その場合、同じく、データ・レジスタ６０自体はデータを記憶するために使用されず、データ・レジスタ６０へのアクセスが、単に、読取り動作をトリガするために使用される。
【００４３】
前に説明されたように、メモリ内のデータ・グラニュールへの読取り動作及び書込み動作を実施することに加えて、デバッガは、いくつかの時点において、それらのデータ・グラニュールに関連するメタデータ項目にアクセスすることを望み得る。そのようなアクセスは、関連するデータ・グラニュールがアクセスされることと同時に実施され得るか、又は代替的に、関連するデータ・グラニュールにアクセスすることなしにメタデータ項目にアクセスすることが所望され得る。そのようなメタデータ・アクセス動作を可能にするために、複数のメタデータ項目を記憶することが可能であるメタデータ・レジスタ７０が提供される。メタデータ・レジスタ内に記憶され得るメタデータ項目の数は、メタデータ・レジスタのサイズと、各メタデータ項目を形成するビットの数とに依存する。多くの場合、メタデータ項目は、関連するデータ・グラニュールよりも著しく小さくなり得、実際、各メタデータ項目は、１ビット又は数ビットの情報のみを備え得る。そのような事例では、著しい数のメタデータ項目がメタデータ・レジスタ内に記憶されることが可能であり、したがって、一連のメタデータ項目全体への一括アクセスが、メタデータ・アウェア・メモリ・アクセス・ポート２５を介したデバッガ１０からの適切なコマンドの発行を通して行われることを可能にする。
【００４４】
したがって、一連のメタデータ項目への書込み動作を実施することが所望されるとき、それらのメタデータ項目についての新しい値は、メタデータ・レジスタ７０にコマンドを発行するデバッガを介してメタデータ・レジスタ７０内に記憶され得、ここで、そのコマンドについての関連する「データ」は、一連のメタデータ項目についての更新された値を提供する。メタデータ・レジスタ７０がアクセスされたとき、メタデータ項目についてのそれらの新しい値は、次いで、メタデータ・レジスタ内の対応するロケーション内に記憶される。
【００４５】
次いで、一連の書込み動作が、データ・レジスタ６０に一連のコマンドを発行することによってトリガされ得、各書込み動作についてアドレスを識別するためにバス・アドレス・レジスタ５５のコンテンツが適宜に更新される。いくつかの事例では、デバッガは、各書込みコマンドがデータ・レジスタ６０に発行されるより前にバス・アドレス・レジスタ５５を更新するために別個のコマンドを発行し得るが、代替手法では、メモリ・アクセス・ポートは、バス・アドレス・レジスタ５５内のアドレスが、各書込みコマンドに続いてある量だけ増分され得、それにより、デバッガが各書込み動作の実施の間にバス・アドレス・レジスタ・コンテンツ５５を更新するためにコマンドを別個に発行する必要を回避するように、アドレス増分回路を含み得る。
【００４６】
メタデータ・アウェア・メモリ・アクセス・ポート２５は、バス制御レジスタ６５をも含み、バス制御レジスタ６５は、デバッガからの適切なコマンドを介してアクセスされ得、バス制御レジスタ６５のコンテンツは、コマンドがその後データ・レジスタ６０に発行されるときに実施されることになるアクセス動作のタイプを識別するために使用される。したがって、バス制御レジスタのコンテンツは、書込みアクセス動作が実施されるのか読取りアクセス動作が実施されるのかを決定することができ、また、実施されることになる書込み又は読取り動作のタイプ、たとえば、データ・グラニュールがアクセスされることになるのか関連するメタデータ項目がアクセスされることになるのか、又は、データ・グラニュールと関連するメタデータ項目の両方がアクセスされることになるかどうかを識別することができる。
【００４７】
バス・アドレス・レジスタ５５内のアドレスは、一実施例では、特定のデータ・グラニュールを識別し得るが、そのアドレスはまた、アクセスされることになる関連するメタデータ項目を識別するために使用され得る。したがって、データ・レジスタ６０が、メタデータ書込み動作を開始するようにとのデバッガからのコマンドによって連絡されたとき、それは、バス・アドレス・レジスタ５５のコンテンツからメタデータ項目のロケーションを決定することができ、メタデータ・レジスタ７０からメタデータ項目についての更新された値を取得することができる。次いで、必要とされるメタデータ項目が更新されることを引き起こすために、メモリ・アクセス・ポート２５からメタデータ書込み動作が開始され得る。
【００４８】
同様に、メタデータ読取り動作の場合、バス・アドレス・レジスタ５５中のアドレス情報は、同じく、関連のあるメタデータ項目を識別するために使用され得、そのメタデータ項目の値が返されたとき、それは、メタデータ・レジスタ内の適切なロケーションに記憶するためにメタデータ・レジスタ７０にルーティングされ得る。
【００４９】
メタデータ・レジスタ７０内の適切なロケーションが、実施される各メタデータ・アクセス動作について識別され得るいくつかのやり方がある。たとえば、バス・アドレス・レジスタ５５内に記憶されるアドレスのある数の低位ビットが、メタデータ書込み動作を実施するときに値が取り出されるべきであるか、又は取り出された値が、メタデータ読取り動作を実施するときに記憶されるべきである、メタデータ・レジスタ内の対応するロケーションを識別するために使用され得る。代替的に、メタデータ・レジスタはシフト・レジスタとして構成され得、したがって、メタデータ書込み動作を実施するとき、メタデータ項目の更新された値を表すある数のビットがシフト・アウトされ得るか、又は逆に、読み取られたメタデータ項目を表すビットが、メタデータ読取り動作を実施するときにメタデータ・レジスタ７０中にシフトされ得る。
【００５０】
図３Ａ及び図３Ｂは、１つの例示的な構成による、メタデータ・アウェア・メモリ・アクセス・ポート２５が、メタデータ項目の一括読取りを実施するためにデバッガによってどのように使用され得るかを識別する流れ図を提供する。ステップ１００において、デバッガは、バス・アドレスのための初期アドレスを決定し、次いで、ステップ１０５において、そのバス・アドレスをデータとして指定するコマンドをバス・アドレス・レジスタ５５に発行する。これは、バス・アドレス・レジスタ５５が、初期アドレスを識別するためにそれのコンテンツを更新することを引き起こす。
【００５１】
ステップ１１０において、デバッガは、次いで、実施されることになる読取り動作のタイプをデータとして指定するコマンドをバス制御レジスタ６５に発行する。読取り動作は、様々な形式をとることができ、たとえば、メタデータ項目のみが読み取られることになることを指定し得るか、又は代替的に、メタデータ項目と関連するデータ・グラニュール（又はそのデータ・グラニュールの少なくとも一部分）の両方が読み取られることになることを識別し得る。
【００５２】
デバッガは、次いで、バス制御レジスタ６５において定義されたタイプの読取り動作の実施をトリガするためにデータ・レジスタ６０にコマンドを発行する。さらに、バス・アドレス・レジスタ５５中のバス・アドレスは、アクセスされているメモリ・アドレスを決定するために使用される。前に説明されたように、バス・アドレス・レジスタ中のアドレスは、データ・グラニュール・ロケーションを識別し得るが、関連するメタデータ項目のメモリ・システム内のロケーションをも決定するために使用され得る。特に、図８Ａ及び図８Ｂを参照しながら後でより詳細に説明されるように、いくつかの例示的な構成では、メタデータ項目自体は、それらが、ＣＰＵによって発行され得るアドレスによって直接アドレス指定可能でないことがあるという点で、半ば隠れている（ｓｅｍｉ−ｈｉｄｄｅｎ）ことがある。しかしながら、適切なデータ・グラニュールを指定することによって、対応するメタデータ項目が識別され、アクセスされ得る。
【００５３】
ステップ１２０において、読み取られたメタデータ項目が受信されたとき、そのメタデータ項目は、次いで、メタデータ・レジスタ７０のロケーション（そのロケーションは本明細書ではエントリとも呼ばれる）に記憶される。メタデータ・レジスタ７０がシフト・レジスタとして構成されたとき、これは、読み取られたメタデータ値をメタデータ・レジスタにシフト・インすることによって行われ得る。代替的に、メタデータ・レジスタがシフト・レジスタとして構成されなかった場合、バス・アドレス・レジスタ５５中のバス・アドレスのある数の低位ビットが、読み取られたメタデータ項目が記憶されるべきであるメタデータ・レジスタ内の適切なロケーションを識別するために使用され得る。このようにしてメタデータ・レジスタを更新するとき、更新プロセスは、一般に、他のロケーションのいずれも影響を及ぼされず、それらの現在のコンテンツを保つように構成される。
【００５４】
ステップ１２０に示されているように、読取り動作がデータ・グラニュールの全部又は一部をも返す場合、その読み取られたデータは、所望される場合、デバッグ・インターフェース５０を介してデバッガに返るより前に、データ・レジスタ６０内に一時的にバッファされ得る。代替的に、その読み取られたデータは、データ・レジスタ６０内にバッファされることなしにデバッグ・インターフェース５０を介してデバッガに直接返され得る。
【００５５】
図３Ａでは、ステップ１０５、１１０及び１１５において別個のコマンドが発行されると仮定されるが、代替実装形態では、ステップ１０５〜１２０の一部又は全部が、デバッガによって発行された単一のコマンドに応答して実施され得、たとえば、アドレス、制御及びアクセス・コマンドが単一のパケットを形成する。
【００５６】
ステップ１２０に続いて、プロセスは、次いで、ステップ１２５に進み、読み取られるべきより多くのメタデータ項目があるかどうかが決定される。デバッガは、読み取られるメタデータ項目の数を制御することができるが、１つの例示的な構成では、デバッガは、メタデータ・レジスタ７０を十分にポピュレートするのに十分な数のメタデータ項目を読み取ることを望み得、その十分にポピュレートされたメタデータ・レジスタ７０は、次いで、読み取られたメタデータ項目の全部の値を取り出すために問い合わせられる。
【００５７】
ステップ１２５において、読み取るべきより多くのメタデータ項目があると決定された場合、１つの例示的な構成では、デバッガは、ステップ１３０において、更新されたアドレスを決定し得る。しかしながら、代替構成では、メモリ・アクセス・ポート２５は何らかのアドレス増分論理を組み込み得、アドレス増分論理は、読取り動作の実施に続いてバス・アドレス・レジスタ５５のコンテンツを自動的に更新することができ、したがってステップ１３０が冗長になる。ステップ１３０が実施された場合、プロセスはステップ１０５に戻り、デバッガによって決定された更新されたアドレスは、バス・アドレス・レジスタ５５に書き込まれる。この、次の反復時に、ステップ１１０は必要でないことがある。しかしながら、バス・アドレス・レジスタ・コンテンツがメモリ・アクセス・ポートによって自動的に更新された場合、ステップ１２５からのｙｅｓ経路は、同じタイプの読取りコマンドが次の反復時に実施されることになり、したがってステップ１１０が再実施される必要がないと仮定すれば、図３Ａのステップ１１５に直接戻り得る。
【００５８】
バス・アドレス・レジスタ５５内のアドレスが、読み取るべきより多くのメタデータ項目があるとステップ１２５において決定されたときに増分される必要がある量は、現在の読取り動作によってアクセスされるメタデータ項目の数に依存する。単一のメタデータ項目がアクセスされた場合、アドレスは、たとえば、それがデータ・グラニュール・サイズだけ増分されるように更新され得る。しかしながら、複数のメタデータ項目がアクセスされた場合、アドレスは、データ・グラニュール・サイズの倍数だけ増分され得る。
【００５９】
さらに、データが、メタデータ項目に加えてアクセスされている場合、単一のデータ・アクセスが、グラニュール・サイズ未満でアクセスし得る。その結果、アドレスは、次いで、グラニュール・サイズ未満だけ増分され得、特に、アクセスされるデータのサイズだけ増分され得るにすぎない。アドレスは、したがって、次の反復のために同じグラニュール内にとどまり得、後続のアクセスは、次いで、同じメタデータ項目にアクセスする。
【００６０】
それ以上読み取るべきメタデータ項目がないとステップ１２５において決定されると、プロセスはステップ１３５に進むことができ、デバッガは、メタデータ・レジスタ７０に記憶された複数のメタデータ項目を読み出すためにメタデータ・レジスタ７０にコマンドを発行し得る。
【００６１】
図４Ａ及び図４Ｂは、デバッガが、図２のメタデータ・アウェア・メモリ・アクセス・ポートを使用してメタデータ項目の一括書込みを実施することを可能にするために実施され得るステップを示すための流れ図を提供する。ステップ２００において、デバッガは、複数のメタデータ項目についての値をデータとして指定し、それらのメタデータ項目値がメタデータ・レジスタに記憶されることを引き起こすコマンドを、メタデータ・レジスタ７０に発行する。次いで、ステップ２０５、２１０、２１５及び２２０は、図３Ａのステップ１００、１０５、１１０及び１１５に対応する。ただし、ステップ２１５において、バス制御レジスタに発行されたコマンドで提供されるデータは、実施されることになる書込み動作のタイプを識別し、たとえば、書込み動作が、メタデータ項目の書込みを実施するが、関連するデータ・グラニュールの値を保存するためのものであるのか、又は代わりに、メタデータ項目の書込みと、また、データ・グラニュールの少なくとも一部を更新するための書込みとを実施するためのものであるのかを識別する。
【００６２】
図４Ａでは、ステップ２１０、２１５及び２２０において別個のコマンドが発行されると仮定されるが、代替実装形態では、ステップ２１０〜２２０の一部又は全部は、デバッガによって発行された単一のコマンドに応答して実施され得、たとえば、アドレス、制御及びアクセス・コマンドが単一のパケットを形成する。
【００６３】
書込み動作の実施をトリガするためにステップ２２０においてデータ・レジスタ６０にコマンドが発行されると、次いで、ステップ２２５において、書込み動作は、メタデータ・レジスタのエントリから抽出されたメタデータ項目を使用して実施される。前に説明された読取り動作と同様に、バス・アドレス・レジスタ５５に記憶されたアドレスのある数の低位ビットが、１つの例示的な構成では、メタデータ・レジスタ内の適切なエントリを識別するために使用され得る。しかしながら、メタデータ・レジスタがシフト・レジスタとして構成された別の例示的な構成では、関連のあるメタデータ項目値は、シフト・レジスタからある数のビットをシフト・アウトすることによって取得され得、シフト・レジスタからシフト・アウトされるビットの数は、各メタデータ項目を形成するビットの数に依存する。
【００６４】
さらに、データ・グラニュールの少なくとも一部も書込み動作の一部として更新されている場合、そのデータの値は、書込み動作をトリガするためにデータ・レジスタ６０に送られるコマンドにおいて指定され得、その書込みデータは、所望される場合、データ・レジスタ６０中に一時的にバッファされる。代替的に、その書込みデータは、データ・レジスタ６０内にバッファされることなしにバス２７までまっすぐに受け渡され得る。
【００６５】
ステップ２３０において、書き込むべきより多くのメタデータ項目があるかどうかが決定される。デバッガは、一般に、デバッガがそれに関して書込み動作を実施することを望むメタデータ項目の数を決定するが、１つの例示的な構成では、メタデータ・レジスタ７０内に記憶され得る別個のメタデータ項目の数に等しいメタデータ項目の数を更新することを望み得、したがって、メタデータ・レジスタ７０内に少なくとも１つのまだ未使用のメタデータ項目値がある場合、書き込むべきより多くのメタデータ項目があると決定される。
【００６６】
書き込むべきより多くのメタデータ項目があると決定された場合、ステップ２３５において、デバッガは、プロセスがステップ２１０に戻るより前に、更新されたアドレスを決定し得る。この、次の反復時に、ステップ２１５は必要でないことがある。しかしながら、代替構成では、メモリ・アクセス・ポート２５は、書込み動作の実施に続いてバス・アドレス・レジスタ５５内のアドレスを自動的に増分するための増分回路を含み得、したがってステップ２３５の必要が回避され、その場合、プロセスは、同じタイプの書込みコマンドが次の反復時に実施されることになり、したがってステップ２１５が再実施される必要がないと仮定すれば、図４Ａのステップ２２０に直接戻り得る。
【００６７】
図５は、バス制御レジスタ６５の必要が回避され得る、メタデータ・アウェア・メモリ・アクセス・ポートのための代替構成を示す。図５に示されているように、メタデータ・アウェア・メモリ・アクセス・ポート２５’は、図２のようにバス・アドレス・レジスタ５５とメタデータ・レジスタ７０とを含み、デバッグ・インターフェース５０とバス・インターフェース７５とをも含む。しかしながら、複数のデータ・レジスタ２５０が提供され、１つのデータ・レジスタが、サポートされるアクセス動作の各タイプに関連する。そのような手法によれば、バス制御レジスタ６５は必要とされず、代わりに、デバッガは、必要とされるメモリ・アクセスに関連する特定のデータ・レジスタにコマンドを発行する。したがって、異なるタイプの書込みコマンドに関連するいくつかのデータ・レジスタと、異なるタイプの読取りコマンドに関連するいくつかのデータ・レジスタとがあり得る。それらの書込みコマンド及び読取りコマンドのうちの少なくともいくつかは、メタデータ項目に関して書込み動作又は読取り動作を実施することを伴い、メタデータ項目は、図２を参照しながら前に説明されたのと同じやり方で、メタデータ・レジスタ７０中でアクセスされ得る。
【００６８】
図６Ａ及び図６Ｂは、図３Ａ及び図３Ｂの流れ図に類似するが、図５に示されているようにメタデータ・アウェア・メモリ・アクセス・ポート２５’の形態を使用するときの、流れ図を提供する。ステップ３００及び３０５は、図３Ａのステップ１００及び１０５に対応する。次いで、ステップ３１０において、デバッガは、バス・アドレス・レジスタ５５に記憶されたバス・アドレスを使用して、必要とされる読取り動作の実施をトリガするために、その必要とされる読取り動作のタイプのための適切なデータ・レジスタにコマンドを発行する。したがって、あるコマンドがバス制御レジスタに発行され、その後に、別のコマンドがデータ・レジスタに発行されるのではなく、単一のコマンドがこのステップにおいて発行される必要があることがわかり得る。
【００６９】
次いで、ステップ３１５、３２０、３２５及び３３０は、図３Ａ及び図３Ｂのステップ１２０、１２５、１３０及び１３５に対応する。各反復の間にアドレスを更新することがメモリ・アクセス・ポート２５’内で自動的に行われる場合、ステップ３２０からのｙｅｓ経路は、ステップ３０５ではなくステップ３１０に戻ることができる。
【００７０】
図７Ａ及び図７Ｂは、図４Ａ及び図４Ｂの流れ図に対応する流れ図を提供するが、図５のメタデータ・アウェア・メモリ・アクセス・ポート２５’を利用するときにメタデータ項目の一括書込みがどのように実施され得るかについて説明する。ステップ４００、４０５及び４１０は、図４Ａのステップ２００、２０５及び２１０に対応する。ステップ４１５において、デバッガは、次いで、バス・アドレス・レジスタ中のバス・アドレスを使用して、必要とされる書込み動作の実施をトリガするために、その必要とされる書込み動作のタイプのための適切なデータ・レジスタにコマンドを発行する。これは、したがって、バス制御レジスタにコマンドを発行し、その後、データ・レジスタに別個のコマンドを発行する必要を回避する。
【００７１】
次いで、ステップ４２０、４２５、４３０及び４３５は、図４Ｂのステップ２２５、２３０、２３５及び２４０に対応する。アドレスが各反復の間にメモリ・アクセス・ポート２５’内で自動的に調整され、ステップ４３０の必要が回避される場合、ステップ４２５からのｙｅｓ経路は、ステップ４１５に直接戻ることができる。
【００７２】
図８Ａは、メモリ・アドレス空間と、そのアドレス空間内の様々なデータ・グラニュール４５０及び関連するメタデータ項目４５５の存在とを示す。ただし、１つの例示的な構成では、メタデータ項目自体は直接アドレス指定可能でなく、したがって、半ば隠れていると見なされ得る。代わりに、図８Ａ中の下側の図に示されているように、アドレス指定可能なアドレス空間は、データ・グラニュールに関して指定される。この実例では、０のバイト・アドレスは第１のデータ・グラニュールがアクセスされることを引き起こし、１６のバイト・アドレスは第２のデータ・グラニュールがアクセスされることを引き起こし、以下同様である。しかしながら、メタデータ項目４５５は各データ・グラニュールに関連する。その場合、メタデータ・アクセス動作が使用されるとき、アドレスは依然としてデータ・グラニュールを識別するが、そのアドレスは、当該の対応するメタデータ項目４５５を識別し、そのメタデータ項目がアクセスされることを引き起こすために使用され得る。
【００７３】
図８Ｂは、メタデータ項目の２つの特定の例示的な形式を示す。両方の実例では、データ・グラニュールのサイズが１６バイトであると仮定されるが、他の実装形態では、データ・グラニュール・サイズは異なり得る。能力実例によれば、１６バイトの各データ・グラニュールは、本明細書では能力タグとも呼ばれる、関連する１ビットのメタデータを有し、それは、関連するデータ・グラニュールが能力を識別するのか汎用データを識別するにすぎないのかを識別するために使用される。
【００７４】
図８Ｂ中の第２の実例は割振りタグ付けを示し、ここで、図示された特定の実例では、４ビットのメタデータが各１６バイト・グラニュールに関連する。これらの４ビットのメタデータは、本明細書ではガード・タグとも呼ばれる、割振りタグと呼ばれ得る。メモリ中の特定のロケーションに対するアクセス要求が行われたとき、アドレス・タグが、ターゲット・アドレスに関連して指定され得、そのアドレス・タグは、メモリ中の関連のあるデータ・グラニュールに関連する割振りタグと比較され得る。ガード・タグとアドレス・タグとの間の一致が検出されたかどうかに応じて、異なるアクションがとられ得る。
【００７５】
メタデータ項目は様々な形式をとることができるが、２つの実例が、図９及び図１０を参照しながら以下で説明される。
【００７６】
図９は、個々のデータ・ブロックが能力（この場合、有界ポインタ及び関連する制限情報）を表すのか通常のデータを表すのかを識別するために、それらのデータ・ブロックに関連してタグ・ビットがどのように使用されるかを概略的に示す。特に、能力アウェア・システム中のメモリ・アドレス空間５１０は、一般に、指定されたサイズを有する、一連のデータ・ブロック５１５を記憶し得る。単に例示のために、この実例では各データ・ブロックが１２８ビットを備えると仮定される。各データ・ブロック５１５に関連して、一実例では、タグ・ビットと呼ばれる単一のビット・フィールドであるタグ・フィールド５２０が提供され、これは、関連するデータ・ブロックが能力を表すことを識別するようにセットされ、関連するデータ・ブロックが通常のデータを表し、したがって、能力として扱われ得ないことを示すようにクリアされる。セット状態又はクリア状態に関連する実際の値が実施例に応じて変動することができるが、単に例として、一実施例では、タグ・ビットが１の値を有する場合、それは、関連するデータ・ブロックが能力であることを示し、タグ・ビットが０の値を有する場合、それは、関連するデータ・ブロックが通常のデータを含んでいることを示すことが諒解されよう。
【００７７】
能力が、図９に示されている能力レジスタ５００など、（本明細書では能力レジスタとも呼ばれる）有界ポインタ・レジスタにロードされたとき、タグ・ビットは、能力情報とともに移動する。したがって、能力が能力レジスタ５００にロードされたとき、ポインタ５０２と、範囲情報５０４と、（パーミッション情報とも呼ばれる）制限情報５０６とが能力レジスタにロードされる。追加として、その能力レジスタに関連して、又はその内部の特定のビット・フィールドとして、タグ・ビット５０８は、コンテンツが能力を表すことを識別するようにセットされる。同様に、能力がメモリに戻って記憶されたとき、関連のあるタグ・ビット５２０は、能力が記憶されたデータ・ブロックに関連してセットされる。そのような手法によって、能力と通常のデータとを区別し、したがって、通常のデータが能力として使用され得ないことを確実にすることが可能である。
【００７８】
本技法が適用され得るメタデータ項目の別の実例として、図１０は、タグガード・メモリ・アクセス（本明細書では割振りタグとも呼ばれるガード・タグ）の概念を概略的に示す。メモリ・システム内のメモリ・ロケーションを参照するために使用される物理アドレス空間は、各々がある数のアドレス指定可能なロケーションを備えるいくつかのブロック６３０に、論理的に区分され得る。簡潔のために、図１０の実例では、各ブロック６３０は４つのメモリ・ロケーションを備えるが、他のブロック・サイズが同様に使用され得る。各ブロック６３０は、対応するガード・タグ６３２に関連する。ある数のブロック６３０に関連するガード・タグは、一緒に集められ、物理アドレス空間内の異なるアーキテクチャ上アクセス可能なメモリ・ロケーション６３４内に、又はアーキテクチャ上アクセス可能でない（同じ物理アドレス空間にマッピングされない）メイン・メモリ中に提供された追加の記憶ロケーション内にのいずれかに記憶され得る。別個のアーキテクチャ上アクセス可能でないストレージの使用は、いくつかの場合には、ガード・タグ値をキャッシュするためのデータ・キャッシュ中の空間を使い尽くすことを回避するために選好され得、これは、通常のコードの性能に影響を及ぼし得、コヒーレンシ管理をより複雑にし得る。タグがメイン・メモリからアクセスされなければならない場合よりも速いアクセスのために、アーキテクチャ上アクセス可能でないストレージからタグ値をキャッシュするための追加のタグ・キャッシュが、処理回路１５中に提供され得る。
【００７９】
どのタグ記憶ロケーション６３４が各ブロック６３０に対応するかの特定のマッピングは、処理回路１５のロード／記憶ユニットによって制御され得、ハードワイヤードであり得るか又はプログラマブルであり得る。代替的に、メモリ・システム３５は、タグがどこに記憶されるかを決定し得、処理回路は、知る又は気にかける必要がない。図１０では、各タグ６３２が物理アドレスのブロックに関連すると同時に、仮想メモリ・アドレス空間中の仮想メモリ・ロケーションに関連するガード・タグ６３２を提供することも可能であるが、これは、各メモリ・アクセス時にいくつかの追加のアドレス変換を必要とし得る。したがって、ガード・タグ６３２を物理メモリ・ロケーションに関連付けることによって、これは、性能を改善することができる。概して、特定の実装形態では、ガード・タグ６３２が物理アドレス空間の対応するブロック６３０に厳密にどのように関連付けられるかが選ばれる。概して、必要とされるのは、メモリの所与のブロックに関連するガード・タグ６３２がアクセスされ、比較され得ることだけである。
【００８０】
したがって、タグガード・メモリ・アクセスが必要とされるとき、（アクセスされることになるアドレス指定されたロケーション６４４を識別するターゲット・アドレス６４２に関連する）アドレス・タグ６４０が、アドレス指定されたロケーション６４４を含むメモリ・ロケーションのブロック６３０に関連するガード・タグ６３２と比較される。たとえば、図１０では、ターゲット・アドレス６４２は、図１０のアドレス空間中で６４４で示された、メモリ中のあるロケーションＢ１を指す。したがって、ロケーションＢ１を含むロケーションのブロックＢに関連するガード・タグＢは、ターゲット・アドレス６４２に関連するアドレス・タグ６４０と比較される。図１０の上部に示されているように、アドレス・タグ６４０は、ターゲット・アドレス自体の選択されたビットに応じて決定され得る。特に、アドレス・タグは、アドレス指定されたロケーション６４４として選択されることになる特定のメモリ・ロケーションを示すための、未使用であるターゲット・アドレスの一部分内のビットから決定され得る。たとえば、いくつかの実装形態では、ターゲット・アドレスのビットの上部分は、常に、符号拡張（オール０又はオール１）など、ある固定値を有し得、したがって、任意のタグ値を用いてこれらの未使用ビットを上書きすることによって、アドレス・タグ６４０を用いてアドレスがタグ付けされ得る。特定のアドレス・タグ値は、たとえばプログラマー又はコンパイラによって選択され得る。アドレス・タグとガード・タグ６３２とは、比較的小さいビット数、たとえば４ビットであり得、したがって、メモリ内及びターゲット・アドレス内の多くの空間を占有する必要がない。タグ空間の４ビット、すなわち、タグの１６個の可能な値を提供することは、しばしば、多くの共通のタイプのメモリ・アクセス・エラーを検出するのに十分であり得る。
【００８１】
したがって、タグガード・メモリ・アクセスがＣＰＵ１５のうちのいずれかによって実施されたとき、そのＣＰＵ１５のロード／記憶ユニットは、アドレス・タグ６４０と、アドレス指定されたロケーション６４４を含むブロック６３０に関連するガード・タグ６３２とを比較し、それらが一致するかどうかを決定する（代替的に、タグ比較は、メモリ・システム３５内で実施され得る）。ロード／記憶ユニットは、アドレス・タグ６４０とガード・タグ６３２とが一致したかどうかを示す一致指示を生成する。たとえば、この一致指示は、アドレス・タグ６４０とガード・タグ６３２との間に不一致がある場合に生成される障害信号、又は、一致があったかどうかを示す、状態レジスタに入れられた指示、又は、エラーが検出されたアドレス及び／若しくはエラーをトリガした命令の命令アドレスを示すためにエラー報告に追加されたエントリであり得る。
【００８２】
図２又は図５を参照しながら説明された形態のメモリ・アクセス・ポートを使用することによって、図１１に示されているアドレス空間７００など、比較的小さいアドレス空間が、デバッガにとって利用可能になり得る。その小さいアドレス空間を介して、デバッガは、アクセスが、デバッグされているデバイスのメモリ３５中のはるかに大きいアドレス空間に対して実施されることを引き起こすことができ、さらに、実施されることになる多種多様な異なるタイプのアクセス動作を指定することができる、コマンドを発行することができる。図１１に概略的に示されているように、アドレス空間７００内の異なるアドレスが、メモリ・アクセス・ポート内の異なるレジスタを識別するために使用され得る。たとえば、コマンドにおいて指定されたアドレス７０５はバス・アドレス・レジスタ５５を識別し得、別のアドレス７１０はデータ・レジスタ６０を識別し得、さらなるアドレス７１５はメタデータ・レジスタ７０を識別し得、またさらなるアドレス７２０はバス制御レジスタ６５を識別し得る。
【００８３】
バス制御レジスタが使用されない図５の代替手法を使用するとき、コマンドがそこに発行され得る異なるデータ・レジスタを識別するために、様々な異なるアドレス７１０、７２５、７３０が使用され得る。
【００８４】
必要とされる小さいアドレス空間７００により、デバッガ１０とメモリ・アクセス・ポート２５との間に比較的単純なインターフェースが提供され得る。たとえば、デバッグ・インターフェースは、ＪＴＡＧ、シリアル・ワイヤ又はＰＣＩインターフェース、或いは任意の他の好適なインターフェースのいずれかから形成され得る。
【００８５】
図１１では、アドレス空間は、具体的な実例として、サイズが４キロバイトであるとして示されているが、アドレス空間は、他の実装形態では、異なるサイズのものであり得ることが諒解されよう。実際、いくつかの実装形態では、アドレス・サイズがそれよりも著しく小さいことが可能であり、たとえば２５６バイトが十分であり得る。
【００８６】
様々な例示的な設定の上記の説明から、本明細書で説明される技法は、メタデータ項目が、関連するデータ・グラニュールに加えて、又はそれの代わりにメモリ内でアクセスされることを可能にする様式で、デバッガがメモリ・アクセスを直接開始するための効率的な機構を提供することが諒解されよう。次いで、必要とされるアクセス動作は、デバイスの処理回路上の処理を停止させる必要なしに、必要な場合に、効率的に及びアトミックに実施され得る。特に、本明細書で説明されるメタデータ・アウェア・メモリ・アクセス・ポートの使用によって、デバッガは、必要なメタデータ・アクセス動作を実施するためにデバイスの処理回路を使用する必要なしに、メモリ中のメタデータ項目にアクセスすることができる。
【００８７】
本出願では、「．．．ように設定された（ｃｏｎｆｉｇｕｒｅｄ  ｔｏ．．．）」という言葉は、装置の要素が、定義された動作を行うことが可能である設定を有することを意味するために使用される。このコンテキストにおいて、「設定」は、ハードウェア又はソフトウェアの相互接続の構成又は様式を意味する。たとえば、装置が、定義された動作を提供する専用ハードウェアを有し得るか、又は、プロセッサ若しくは他の処理デバイスが、機能を実施するようにプログラムされ得る。「ように設定された」は、装置要素が、定義された動作を提供するために、何らかのやり方で変更されることを必要とすることを暗示しない。
【００８８】
本発明の例示的な実施例が、添付の図面を参照しながら本明細書では詳細に説明されたが、本発明がそれらの正確な実施例に限定されないこと、並びに、様々な変更、追加及び修正が、添付の特許請求の範囲によって定義される本発明の範囲及び趣旨から逸脱することなく、当業者によってその中で実施され得ることを理解されたい。たとえば、従属請求項の特徴の様々な組合せが、本発明の範囲から逸脱することなく、独立請求項の特徴とともに行われ得る。
【図１】
2021515308.tif 000003
【図２】
2021515308.tif 000004
【図３Ａ】
2021515308.tif 000005
【図３Ｂ】
2021515308.tif 000006
【図４Ａ】
2021515308.tif 000007
【図４Ｂ】
2021515308.tif 000008
【図５】
2021515308.tif 000009
【図６Ａ】
2021515308.tif 000010
【図６Ｂ】
2021515308.tif 000011
【図７Ａ】
2021515308.tif 000012
【図７Ｂ】
2021515308.tif 000013
【図８Ａ】
2021515308.tif 000014
【図８Ｂ】
2021515308.tif 000015
【図９】
2021515308.tif 000016
【図１０】
2021515308.tif 000017
【図１１】
2021515308.tif 000018
【国際調査報告】
2021515308.tif 000019
2021515308.tif 000020
2021515308.tif 000021