JP7096840B2 - 能力メタデータを管理するための装置及び方法 - Google Patents

能力メタデータを管理するための装置及び方法 Download PDF

Info

Publication number
JP7096840B2
JP7096840B2 JP2019558514A JP2019558514A JP7096840B2 JP 7096840 B2 JP7096840 B2 JP 7096840B2 JP 2019558514 A JP2019558514 A JP 2019558514A JP 2019558514 A JP2019558514 A JP 2019558514A JP 7096840 B2 JP7096840 B2 JP 7096840B2
Authority
JP
Japan
Prior art keywords
data block
metadata
data
capability
capacity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019558514A
Other languages
English (en)
Other versions
JP2020519991A (ja
Inventor
デイビッド バイルス、スチュアート
ピーター バーンズ、グレイム
Original Assignee
アーム・リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2020519991A publication Critical patent/JP2020519991A/ja
Application granted granted Critical
Publication of JP7096840B2 publication Critical patent/JP7096840B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Library & Information Science (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Memory System (AREA)

Description

本開示は、能力メタデータを管理するための装置及び方法に関する。
能力ベースのアーキテクチャでは、ある種の能力が所与のプロセスのために定義され、定義された能力外の動作を実行しようとする試みが存在する場合、エラーがトリガされ得る。能力は、様々な形を取ることができるが、1つのタイプの能力は、有界ポインタ(「太いポインタ」とも呼ばれる)である。有界ポインタでは、ポインタ値は、たとえば、アクセスされることになるデータ値のアドレス又は実行されることになる命令を識別することができる、或いはこれを決定するために使用することができる。しかしながら、ポインタ値はまた、ポインタ値を使用するときのアドレスの許容範囲を示す関連範囲情報を有し得る。これは、ポインタから決定されたアドレスが、セキュリティ又はビヘイビアの機能的正確性を維持するために、ある特定の境界内に留まることを確実にするのに有用になり得る。加えて、ある特定の許可/制約情報が、有界ポインタのポインタ値に関連して指定され得る。有界ポインタの範囲情報及び任意の許可/制約情報は、能力情報と呼ばれることもあり、有界ポインタ(その関連能力情報を含む)などの能力ベースのアーキテクチャにおいて、能力と呼ばれることもある。能力メタデータは、装置の記憶素子に記憶されたデータに関連して記憶され得る。能力メタデータは、関連データ・ブロックが能力を指定するか又は能力を表さないデータ(本明細書では汎用データとも呼ばれる)を代わりに含むかを識別するために使用することができる。能力メタデータはまた、ある種の追加の情報を指定することができる。指定されたデータにアクセスするとき、関連能力メタデータが、データ・ブロックが能力又は汎用データを表すかどうかを判定するために、参照され得る。能力ベースのアーキテクチャを用いるシステムの記憶素子内の能力メタデータを管理するための改良された機構を実現する必要性がそこには残っている。
本明細書に記載の1つの実例では、データ・ブロックを記憶するためのキャッシュ・ストレージを備えた装置が提供され、各データ・ブロックは、前記各データ・ブロックが能力を指定するかデータ値を指定するかを識別することに関連して記憶された能力メタデータを有し、少なくとも1つのタイプの能力は、データ・ブロックに関連して能力メタデータ修正マーカーを設定するためのキャッシュ・ストレージに記憶されたデータ・ブロックへの書き込みに応答する有界ポインタ及びキャッシュ制御回路であり、その能力メタデータ修正マーカーの値は、データ・ブロックに関連する能力メタデータが、データ・ブロックがキャッシュ・ストレージに記憶された以後に、変わったかどうか、を示す。
本明細書に記載の1つの実例では、キャッシュ・ストレージにデータ・ブロックを記憶するステップ、少なくとも1つのタイプの能力が有界ポインタである、各データ・ブロックが能力を指定するかデータ値を指定するかを識別する前記各データ・ブロックに関連して能力メタデータを記憶するステップ、能力メタデータ修正マーカーの値が、データ・ブロックに関連する能力メタデータは、データ・ブロックがキャッシュ・ストレージに記憶された以後に、変わったかどうかを示す、キャッシュ・ストレージに記憶されたデータ・ブロックへの書き込みに応答して、データ・ブロックに関連して能力メタデータ修正マーカーを設定するステップ、を含む、キャッシュ・ストレージを動作させる方法が提供される。
本明細書に記載の1つの実例では、データ・ブロックをキャッシュするための手段、少なくとも1つのタイプの能力が有界ポインタである、各データ・ブロックが能力を指定するかデータ値を指定するかを識別する前記各データ・ブロックに関連して能力メタデータを記憶するための手段、能力メタデータ修正マーカーの値は、データ・ブロックに関連する能力メタデータが、データ・ブロックがデータ・ブロックをキャッシュするための手段に記憶された以後に、変わったかどうかを示す、データ・ブロックへの書き込みに応答して、データ・ブロックをキャッシュするための手段に記憶されたデータ・ブロックに関連して能力メタデータ修正マーカーを設定するための手段を備えた装置が提供される。
単に例として、以下のような添付の図面に示すような実施例を参照して、本発明についてさらに説明する。
1つの実施例による装置を概略的に示す図である。 有界ポインタ記憶素子のセット内のポインタ値を設定する又はこれにアクセスする試みが存在する場合にエラーがトリガされ得る命令のタイプの実例を示し、そのポインタ値は、関連範囲情報によって指示される範囲外のアドレスを指定するために使用される、図である。 1つの実施例による、有界ポインタに関連する能力タグ・ビットの使用を示す図である。 1つの実施例による、関連能力メタデータ情報とともに、有界ポインタの形をとる能力内で提供される様々なフィールドを概略的に示す図である。 1つの実施例による、2つの値が関連能力メタデータ及び能力タグ・ダーティ・ビットとともに記憶される例示的キャッシュ・ラインを示す図である。 1つの実施例による、キャッシュ・ライン内の各能力タグの関連能力メタデータ及び能力タグ・ダーティ・ビットを有する2つの値を記憶する例示的キャッシュ・ラインを示す図である。 1つの実施例による、キャッシュ・ラインに記憶された値が書き込み動作によって更新されるときにキャッシュ・ライン内の能力タグ・ダーティ・ビットを更新するために使用される回路を概略的に示す図である。 1つの実施例による、2つのレベルのキャッシュ・ストレージ、メモリ・コントローラ、能力テーブル・キャッシュ、及びメモリを備えた1つの実施例における装置を概略的に示す図である。 データ書き込みトランザクションが能力メタデータを含むべきかどうかを決定するために1つの実施例において施されるステップのシーケンスを示す図である。 能力タグ・ダーティ・ビットの値に基づいてデータ書き込みトランザクションにおける能力メタデータの包含を抑制するための回路の実例を示す図である。 1つの実施例による、メモリからの能力タグ・テーブルのラインを記憶するための一時的な能力タグ・テーブル・キャッシュの使用と、削除及びロードによるそれらの更新とを示す図である。 1つの実施例による、キャッシュ・ラインに記憶された値に関連する能力タグが更新されるときに、能力タグ・ダーティ・ビットを更新するためにキャッシュにおいて施されるステップのシーケンスを示す図である。 1つの実施例による、能力タグ・ダーティ・ビット情報及び能力タグ・テーブル・キャッシュに記憶された能力タグ・ビットに基づいて、メモリ・アクセスが受け付けられるときにメモリ・コントローラによって施されるステップのシーケンスを示す図である。 1つの実施例による、データ及び能力タグ・クリーン/ダーティ状態を判定するために、これらが、転送されたデータに関連して、完全に提供される、部分的に提供される、又は提供されないときに、データがキャッシュ内に又はキャッシュ外に転送されるときに施されるステップのシーケンスを示す図である。 1つの実施例による、データ及び能力タグ・クリーン/ダーティ状態を判定するために、これらが、転送されたデータに関連して、完全に提供される、部分的に提供される、又は提供されないときに、データがキャッシュ内に又はキャッシュ外に転送されるときに施されるステップのシーケンスを示す図である。 1つの実施例による、データ及び能力タグ・クリーン/ダーティ状態を判定するために、これらが、転送されたデータに関連して、完全に提供される、部分的に提供される、又は提供されないときに、データがキャッシュ内に又はキャッシュ外に転送されるときに施されるステップのシーケンスを示す図である。 図11から13において参照された状態の組合せを部分的に要約するテーブルを示す図である。 使用され得る仮想マシン環境を示す図である。
そこに示された特定の実施例を説明するために図を参照する前に、実施例の説明を以下に提供する。
前述のように、能力ベースのアーキテクチャにおいて、ある種の能力が所与のプロセスのために定義され、定義された能力外の動作を実行しようとする試みが存在する場合に、エラーがトリガされ得る。様々なタイプの能力が定義され得るが、1つのタイプの能力は有界ポインタである(1つの実施例では、ポインタ値と関連範囲情報及び許可情報との両方を組み込む)。そのような能力ベースのアーキテクチャを適用する装置は、一般に、値が能力を表すか又はそうではなく汎用データを表すかを識別するために、メモリに記憶された値並びに記憶された各値に関連して提供される能力メタデータにアクセスすることになる。したがって、「値」という用語は、一般的に能力又はデータ値のいずれかを参照するために本明細書において使用され、区別が必要とされる場合に「能力」又は「データ値」という用語が使用されることが理解されよう。さらに、異なる実施例では、「データ・ブロック」は異なる情報の粒度に対応し得ることも理解されたい。たとえば、ある極端な場合には、データ・ブロックは、アーキテクチャにおいて参照することができるビットの最小グループが能力を表すか又はそうではなく汎用データを表すかを示す能力メタデータの関連項目を有し、そのグループに対応し得る。反対に、他の実施例では、データ・ブロックは、そのグループが能力を表すか又はそうではなく汎用データを表すかを示す能力メタデータの関連項目を有し、ビットの任意に定義された大きなグループに対応し得る。ある種の命令が、それの能力メタデータを用いて能力として記憶及びラベル付けされた値を参照するために、並びにその能力に依存する動作を実行するために、使用され得る。たとえば、有界ポインタを考えると、そのような命令の実行は、境界ポインタを取得させることができ、そこにあるポインタ値が、次いで、命令の実行中に必要とされるメモリ内のアドレスを導出するために使用される。ポインタ値は、メモリ・アドレスを識別するために直接使用することができ、又は、たとえばポインタ値へのオフセットの追加によって、メモリ・アドレスを導出するために使用することができる。動作は、そのメモリ・アドレスが範囲情報によって指定された範囲内にあり、許可情報において指定された任意の許可が満たされることを条件として、続行することを許されることになる。
具体的には、1つの実施例において、キャッシュ・ストレージを備える装置が提供され、ここで、キャッシュ・ストレージに関連するキャッシュ制御回路は、キャッシュ・ストレージに記憶されたデータ・ブロックに関連して能力メタデータ修正マーカーを管理し、能力メタデータ修正マーカーは、データ・ブロックがキャッシュ・ストレージに記憶された以後に能力メタデータ(すなわち、データ・ブロックが能力を指定するかデータ値を指定するかを指示する)が修正されたかどうかを示すために使用される。そのデータ項目はキャッシュされた以後に修正されたかどうかを示すためにキャッシュされたデータ項目に関連して記憶され得るデータ「ダーティ」ビットに対する類似性によって、能力メタデータ修正マーカーは、本明細書において、能力タグ「ダーティ」ビットとも称される。能力を指定するデータ・ブロックとデータ値を指定するデータ・ブロックとの機能の有意差により、これらの2つのタイプのデータ・ブロックの慎重な区別が、一般に、装置において、因ってそのようなデータ・ブロックがキャッシュされるときにもまた、必要とされる。能力メタデータ修正マーカーの提供は、具体的には、たとえば問題のデータ値にアクセスするために使用される能力から継承された許可を用いて、1つのタイプから他のタイプへの修正が意図されずに起こり得ないように、これをサポートするが、関連付けられた能力メタデータを有するそのようなデータ・ブロックの記憶に関して効率性が得られ得ることもさらに実現する。この後者の特徴の1つの実例は、ストレージに対する別個のアクセスをたとえば必要とし得る、データ・ブロック及びそれらの関連能力メタデータが別個に記憶される場合に、生じ得る。所与のストレージ・ブロックに関連する能力メタデータが、データ・ブロックがキャッシュ・ストレージに記憶された以降、変化したかどうかを知ることは、たとえば、ストレージに対して行われるアクセスを少なくすることができる。
データ項目がキャッシュされた以後に修正されたかどうかを指示するためにキャッシュされたデータ項目に関連して記憶され得るデータ「ダーティ」ビットを再び参照すると、実際には、データ項目に対する書き込みが起こったかどうかを単に追跡することが、そのようなキャッシュ・ダーティ・ビットの実装形態に共通であることに留意されたい。言い換えれば、この手法は、データ項目が前に有した値を書き直すデータ項目に対する書き込みと、データ項目が前に有した値に異なる値を書き込むデータ項目に対する書き込みとを区別しない。これは、実際の変更が起きたかどうかを確かめるためにすべてのデータ・ビットをチェックすることは、通常、コストがかかり過ぎる(またその価値がない)ためである。しかしながら、本技法によれば、比較的少ない能力メタデータ・ビットが通常存在することになることが期待され、したがって、それらのビットが実際に変わったかどうかをチェックすることは遥かに実行可能である。さらにまた、メモリのデータ・ブロックは長期間に亘りその現在の使用(データ又は能力)を通常は保持することになることが期待される。それにも関わらず、能力メタデータ修正マーカーの値が、データ・ブロックがキャッシュ・ストレージに記憶された以後にこのデータ・ブロックに関連する能力メタデータが書き込まれたかどうかを示す(データ・ブロックが実際に変化したかどうかは検査せずに)実施例も提案されている。
能力メタデータ修正マーカーとデータ・ブロックとの対応は、システム要件に応じて、様々に構成され得る。一部の実施例では、1つの能力メタデータ修正マーカーは、前記データ・ブロックを含む複数のデータ・ブロックに対応する。キャッシュに記憶されたデータに関する様々な粒度のレベルが意図されているが、一部の実施例では、データ・ブロックに関連してキャッシュ制御回路によって設定される能力メタデータ修正マーカーは、キャッシュ・ストレージ内の各キャッシュ・ラインのための単一のビットである。他の実施例は、能力メタデータ修正マーカーの異なる粒度を有することができ、すなわち、各々が少数のデータ・ブロックのみに対応する、又は各々が多数のデータ・ブロックに対応する。一部の実施例では、データ・ブロックに関連して設定された能力メタデータ修正マーカーが前記データ・ブロックとの1対1の対応を有するような、各データ・ブロックの能力メタデータ修正マーカーが存在する。
能力メタデータ修正マーカーによって提供された情報は、様々な形で使用され得るが、一部の実施例では、装置は、能力メタデータ修正マーカーの値が、指定されたデータ・ブロックがキャッシュ・ストレージに記憶された以後に能力メタデータは変わっていないことを示すとき、キャッシュ・ストレージからさらなるストレージ・レベルへの指定されたデータ・ブロック及び関連能力メタデータについての受信された書き込みトランザクションに応答して関連能力メタデータ及びさらなるストレージ・レベルに関する書き込みトランザクションを抑制するメモリ・コントローラをさらに備える。したがって、指定されたデータ・ブロックのそのような書き込みトランザクションを処理するときに、メモリ・コントローラは、能力メタデータが変わらなかったことが知られた場合、書き込みトランザクションの目標であるストレージにおいてそれの関連能力メタデータが更新される必要がないことを識別することができる。言い換えれば、能力がキャッシュに記憶され、修正された可能性があるが、能力のままである場合、或いは反対に、データ値がキャッシュ・ストレージに記憶されてあり、修正されたが、データ値のままである場合、「値」自体のみが、目標ストレージへの書き込みトランザクションによる更新を必要とし、関連能力メタデータは必要としない。
トランザクションの目標であるさらなるストレージは、様々な形をとり得るが、一部の実施例では、メモリ・ストレージである。他の実施例では、それは、さらなるキャッシュ・ストレージ・レベルでもよい。さらなるストレージがメモリ・ストレージである場合、書き込みトランザクションは、メモリ・ストレージ内の関連能力メタデータに関する読み取り-修正-書き込みトランザクションでもよい。したがって、そのような読み取り-修正-書き込みトランザクションが、目標能力メタデータが修正されなかったことを知ることによって、回避され得る場合、関連能力メタデータ・ストレージの記憶に対する2つの別個の読み取り及び書き込みトランザクションが回避され得る。
一部の実施例では、特に能力メタデータのためのキャッシュ・ストレージがさらに提供され得、これはキャッシュ・ストレージより高いメモリ階層レベル(すなわち、キャッシュ・ストレージとメモリとの間)において提供されて、メモリ内の能力メタデータへのアクセスに関連するレイテンシの回避をさらにサポートする。そのような実施例では、メモリ・コントローラは、能力メタデータ・キャッシュ・ストレージ内にキャッシュされた能力メタデータを参照してメモリへのアクセスが必要かどうかを判定し、具体的には、必要な能力メタデータは、少なくとも1つのデータ・ブロックがキャッシュ・ストレージに記憶された以後に、変わらなかったことを能力メタデータ修正マーカーが示すときに、そのようなアクセスを回避することができる。したがって、一部の実施例では、装置は、キャッシュ・ストレージより高いメモリ階層レベルにおいて能力メタデータを記憶するための能力メタデータ・キャッシュ・ストレージをさらに備え、メモリ・コントローラは、少なくとも1つのデータ・ブロックについてのメモリ・アクセス・トランザクションに応答して、少なくとも1つのデータ・ブロックに関連する必要な能力メタデータを返し、メモリ・コントローラは、必要な能力メタデータが能力メタデータ・キャッシュ・ストレージに記憶されていないときに、少なくとも1つのデータ・ブロックについてのメモリ・アクセス・トランザクションに応答して、少なくとも1つのデータ・ブロックに関連する能力メタデータ修正マーカーの値が、必要な能力メタデータは、少なくとも1つのデータ・ブロックがキャッシュ・ストレージに記憶された以後に、変わらなかったことを示さない限り、能力メタデータ・キャッシュ・ストレージからの現在記憶されている能力メタデータの削除及び能力メタデータ・キャッシュ・ストレージ内への必要な能力メタデータの取得を開始する。
能力メタデータは、能力メタデータ・キャッシュ・ストレージに様々な形で記憶され得るが、能力メタデータ・キャッシュ・ストレージに記憶された1ビットが、能力メタデータの複数のビットのいずれかが設定されているか否かを示し得る、コンパクトなストレージ・フォーマットが実現され得る。したがって、これが事実であるメモリの有意の隣接チャンクが存在し得ることが期待されて以後、ストレージに対する単一のアクセスのみがメモリ・アクセス・トランザクションを実装するために必要とされ得る能力メタデータ・キャッシュ・ストレージ内の情報を用いて、すなわち、少なくとも1つのデータ・ブロックにアクセスすること及び対応する能力メタデータにアクセスする必要性を省くことのみによって、そのようなセクションを識別したとき、これは、実際のメモリに記憶された対応するデータがデータ値のみを含む(能力は含まない)かどうかをそれにより迅速に識別することができる機構を提供する。
実際には、能力メタデータ・キャッシュ・ストレージに記憶される情報は、階層的に記憶され得る、たとえば、そこでは、能力メタデータのテーブルが、様々な粒度でメモリに記憶され、能力メタデータ・キャッシュ・ストレージは、通常ライン・ベースのキャッシング構造においてテーブルのラインを保持することができる。そのとき、これらのテーブルのうちの1つのテーブル内の各ビットは、たとえば、より低いレベルのテーブル内ではビットの隣接するセットのいずれかが設定され、最も低いレベルのテーブル内では各ビットが個々の能力メタデータ・タグを表すことができるかどうかを表すことができる。したがって、そのような能力メタデータ・キャッシュ・ストレージが存在するとき、能力メタデータ修正マーカーは、能力メタデータの適切なラインが能力メタデータ・キャッシュ内にあることを確実にする(能力メタデータ情報の高速の読み取り又は書き込みを可能にする)必要性をメモリ・コントローラが回避することを可能にする。ラインが存在しなかった場合、能力メタデータ・ビットを含むライン、そしてまた(この情報の前述の階層レベルのキャッシュ・ストレージが能力メタデータ・キャッシュ・ストレージにおいて使用される場合に)より粗い粒度の能力メタデータテーブル情報を表すさらなるラインがその後に続く、メモリに対する可能な書き戻しで能力メタデータ・キャッシュから既存のラインを削除すること、次に、キャッシュから有用な情報を削除し、場合により書き戻しすることを必要とすることになろう。しかしながら、能力メタデータ修正情報が入手可能である場合、そのとき、能力メタデータはメモリからの読み取り以降に変わらなかったという指示は、次いで、能力メタデータ・キャッシュ・コンテンツに対する変更を必要としないことになる。
しかしながら、所与のキャッシュ・ライン内に、より細かい粒度の情報が存在してもよく、能力メタデータ修正マーカーは、キャッシュ・ラインのそれぞれの部分のために提供され得る。したがって、一部の実施例では、キャッシュ・ストレージは、キャッシュ・ラインにデータ・ブロックを記憶する能力を有し、データ・ブロックに関連してキャッシュ制御回路によって設定された能力メタデータ修正マーカーは、キャッシュ・ストレージ内の各キャッシュ・ラインの複数のビットのうちの1つであり、各キャッシュ・ラインの複数のビットのうちの各ビットは、前記キャッシュ・ラインのそれぞれの部分の能力メタデータが、前記キャッシュ・ラインのそれぞれの部分がキャッシュ・ストレージに記憶された以後に、変わったかどうか、を示す。それぞれがラインの部分を表す、キャッシュ・ラインごとに提供されているそのような複数の能力タグ・ダーティ・ビットは、キャッシュ・ラインのそれぞれの部分について提供される同粒度のデータ・ダーティ・ビットまで提供され得る。したがって、一部の実施例では、キャッシュ制御回路は、データ・ブロック部分に関連してデータ修正マーカーを記憶するために、キャッシュ・ストレージに記憶されたデータ・ブロックへの書き込みに応答し、データ修正マーカーの値は、データ・ブロックがキャッシュ・ストレージに記憶された以後に、データ・ブロック部分が書き込まれたかどうか、を示し、能力メタデータ修正マーカーに対応する前記キャッシュ・ラインのそれぞれの部分は、データ・ブロック部分と少なくとも同じ大きさである。前述の解説に従って、実際に変化が起きたかどうかを確かめるためにすべてのデータ・ビットをチェックするのは、通常、コストがかかり過ぎる(そして、その価値がない)ため、このデータ・ブロック部分が書き込まれたかがモニターされる(そして、データ・ブロック部分が実際に変更された場合はモニターされない)ことに留意されたい。
前述のように、装置内に用意されたメモリ・コントローラは、メモリに対するある種のアクセスを回避するために、指定されたデータ・ブロックに関連して記憶された能力メタデータが、その指定されたデータ・ブロックがキャッシュ・ストレージに(メモリから)記憶された以後に、変わらなかったことを示す能力メタデータ修正マーカーの値を活用することができる。しかしながら、本技法はさらに、能力メタデータの正しい管理に関してさらなるレベルのセキュリティを提供するために、及び具体的には、偽の能力が、同じメモリ空間に関して動作する複数のエージェントによって「偽造」され得ないことを確実にするために、一部の実施例において、複数のエージェントが、これが起き得ないことを確実にするために、同じメモリ空間にアクセスすることができる、ステップが施され得ることを提案する。
したがって、一部の実施例では、装置はさらに、指定されたデータ・ブロックに関連して記憶された能力メタデータは、それがデータ値であることを示し、そして、能力メタデータ修正マーカーの値は、指定されたデータ・ブロックに関連して記憶された能力メタデータが、その指定されたデータ・ブロックがキャッシュ・ストレージに記憶された以後に、変わらなかったことを示すときに、キャッシュ・ストレージからさらなるストレージ・レベルへの指定されたデータ・ブロック及び関連能力メタデータについての受信された書き込みトランザクションに応答してメモリ書き込みトランザクションを発行し、メモリに記憶された能力メタデータを、指定されたデータ・ブロックがデータ値であることを示すように、アクティブに設定される、メモリ・コントローラを備える。したがって、たとえ、能力は変わらなかったことが(能力メタデータ修正マーカーの値のおかげで)知られても、それでもなお、指定されたデータ・ブロックがデータ値である(本明細書に記載の実施例では、値が0であるときだが、これは任意の実装形態選択として認識されることになる)ことを示すそれの値に能力メタデータを明示的にセット(又は、そうではなくリセット)するように選択されてもよく、その結果、指定されたデータ・ブロックがデータ値を保持すべき場合、それが、不注意で又は悪意を持って能力を偽造するために、同じ記憶場所(しかし、異なるエージェント)との複数の相互作用によって更新され得ないことを確実にする。たとえば、エージェントAが、(能力ではなくデータを示す)設定されていない関連能力タグを有するメモリからのデータを読み取り、エージェントBが、次に、同じ場所に能力を書き込み、まだ設定されていない能力タグを有する(そして、修正されていないとしてマークを付けられた能力タグを有する)エージェントAからのデータの削除がこれに続く場合、次いで、エージェントAからの書き込み上のタグを消去しないことをメモリ・コントローラが選択しようとした場合、これは、Aデータ及びBタグから能力が偽造されることを可能にすることになろう。表示データにおいて能力メタデータを明示的にリセットすることは、これを回避することができることを示す。
これに対する別の手法が、一部の実施例で提供され、そこでは、指定されたデータ・ブロックに関連して記憶された能力メタデータがそれはデータ値であることを示すときに、並びに、別のエージェントが、指定されたデータ・ブロックがキャッシュ・ストレージに記憶された以後に、指定されたデータ・ブロック及びメモリ内の関連能力メタデータのうちの少なくとも1つに対する書き込みアクションを実行したことを示す信号をメモリ・コントローラが受信したときに、キャッシュ・ストレージからさらなるストレージ・レベルへの指定されたデータ・ブロック及び関連能力メタデータについての受信された書き込みトランザクションに応答して、指定されたデータ・ブロックはデータ値であることを示すようにメモリに記憶された能力メタデータをアクティブに設定させるためのメモリ書き込みトランザクションを発行する、メモリ・コントローラを、装置はさらに備える。したがって、別のエージェントが同じ記憶場所に書き込みアクションを実行したことが明示的に知られた場合、それが、指定されたデータ・ブロックがデータ値であることを示すようにリセットされることを確実にするための能力メタデータの明示的リセットが、そのような能力偽造の可能性を回避するために、実行され得る。他の手法は、エージェントA及びエージェントBが同じ記憶場所にアクセスすることを禁止することを含み得る。
本技法はさらに、データ・ブロックがキャッシュ・ストレージ内に又は外に転送されるとき、いくつかの実施例では能力メタデータ修正マーカー及び/又はデータ修正マーカーも転送しなくてもよいことを意図している。言い換えれば、キャッシュにおいてデータ・ブロックに関連して記憶され得る能力タグ・ダーティ・ビット及び/又はデータ・ダーティ・ビットは、それが転送される(キャッシュ内へ又はキャッシュ外へのいずれでも)とき、データ・ブロックと移動しなくてもよい。この状況において、ある種の制約が、能力メタデータ修正マーカー及び/又はデータ修正マーカー(能力タグ・ダーティ・ビット及び/又はデータ・ダーティ・ビット)がそうであると仮定されるものに関して転送の目標に課され得る。
一部の実施例では、装置は、キャッシュ・ストレージ内へ又はキャッシュ・ストレージ外へのデータ・ブロックの転送に応答し、データ・ブロックに関連する能力メタデータが変わったことを能力メタデータ修正マーカーの値が示すときに、修正されたものとしてデータ・ブロックが扱われるようにさせる。
一部の実施例では、装置は、キャッシュ・ストレージ内へ又はキャッシュ・ストレージ外へのデータ・ブロックの転送に応答し、データ修正マーカーが転送されないときに、転送がより低いキャッシュ層へである場合にはデータ・ブロック及び能力メタデータ修正マーカーがクリーンとして扱われるようにさせ、転送がより低いキャッシュ層へではない場合にはデータ・ブロック及び能力メタデータ修正マーカーが修正されたものとして扱われるようにさせる。
一部の実施例では、装置は、キャッシュ・ストレージ内へ又はキャッシュ・ストレージ外へのデータ・ブロックの転送に応答し、能力メタデータ修正マーカーが転送されないときには、能力メタデータ修正マーカーの値がデータ修正マーカーから推論されるようにさせる。
一部の実施例では、装置は、キャッシュ・ストレージ内へ又はキャッシュ・ストレージ外へのデータ・ブロックの転送に応答し、能力メタデータが転送されないときに、データ修正マーカー及び能力メタデータ修正マーカーが両方とも修正されていないことを示す場合は、データ値を指定するものとしてデータ・ブロックを識別するものとして能力メタデータを転送の目標に扱わせ、データ修正マーカー及び能力メタデータ修正マーカーが両方とも修正されていることを示す場合は、データ値を指定するものとしてデータ・ブロックを識別するものとして能力メタデータを転送の目標に扱わせ、データ修正マーカーは修正されたことを示し、能力メタデータ修正マーカーは修正されていないことを示す場合は、転送の目標に能力メタデータ修正マーカーのローカル・コピーを有効として扱わせる。
一部の実施例では、装置は、キャッシュ・ストレージ内へ又はキャッシュ・ストレージ外へのデータ・ブロックの転送に応答して、能力メタデータが転送されるときに、データ修正マーカー及び能力メタデータ修正マーカーが両方とも修正されていないことを示す場合又はデータ修正マーカー及び能力メタデータ修正マーカーが両方とも修正されていることを示す場合には、転送の目標に能力メタデータを有効として扱わせ、データ修正マーカーが修正されたことを示し、能力メタデータ修正マーカーが修正されていないことを示す場合に、転送の目標に次のうちの1つを実行させる:能力メタデータのローカル・コピーを修正しないこと、能力メタデータのローカル・コピーを更新すること、又は、能力メタデータのローカル・コピーが転送された能力メタデータとは異なるときにはエラーを報告すること。
一部の実施例では、以下のステップを含むキャッシュ・ストレージを動作させる方法が提供される:キャッシュ・ストレージにデータ・ブロックを記憶するステップと、各データ・ブロックが能力を指定するかデータ値を指定するかを識別する前記各データ・ブロックに関連して能力メタデータを記憶するステップであって、少なくとも1つのタイプの能力は有界ポインタである、ステップと、キャッシュ・ストレージに記憶されたデータ・ブロックへの書き込みに応答して、データ・ブロックに関連して能力メタデータ修正マーカーを設定するステップであって、データ・ブロックに関連する能力メタデータが、データ・ブロックがキャッシュ・ストレージに記憶された以後に、変わったかどうかを能力メタデータ修正マーカーの値が示す、ステップ。
一部の実施例では、以下を備える装置が提供される:データ・ブロックをキャッシュするための手段と、各データ・ブロックが能力を指定するかデータ値を指定するかを識別する前記各データ・ブロックに関連して能力メタデータを記憶するための手段であって、少なくとも1つのタイプの能力が有界ポインタである、手段と、データ・ブロックへの書き込みに応答して、データ・ブロックをキャッシュするための手段に記憶されたデータ・ブロックに関連して能力メタデータ修正マーカーを設定するための手段であって、データ・ブロックに関連する能力メタデータが、データ・ブロックをキャッシュするための手段にデータ・ブロックが記憶された以後に、変わったかどうかを能力メタデータ修正マーカーの値が示す、手段。
ここで、図を参照して、いくつかの具体的な実施例について説明する。
図1は、命令を処理するための処理パイプライン4を備えたデータ処理装置2の実例を概略的に示す。この実例では、処理パイプライン4は、フェッチ・ステージ6、デコード・ステージ8、発行ステージ10、実行ステージ12、及び書き戻しステージ14を含む、いくつかのパイプライン・ステージを含むが、他のタイプのステージ又はステージの組合せが提供され得ることが理解されよう。たとえば、レジスタ名前変更を実行するための名前変更ステージが、一部の実施例では、含まれ得る。処理されることになる命令は、ステージからステージに移動し、ある命令が1つのステージで保留中の間に、別の命令がパイプライン4の異なるステージにおいて保留になり得る。
フェッチ・ステージ6は、レベル1(L1)命令キャッシュ20から命令をフェッチする。フェッチ・ステージ6は、通常、連続的命令アドレスから連続して命令をフェッチすることができる。しかしながら、フェッチ・ステージはまた、分岐命令の結果を予測するための分岐予測能力(明示的に図示されていない)も有し、フェッチ・ステージ6は、分岐が取られると予測された場合には(不連続の)分岐目標アドレスから、或いは分岐が取られないと予測された場合には次の連続的アドレスから、命令をフェッチすることができる。フェッチされた命令は、デコードされた命令を生成するために、命令をデコードするデコード・ステージ8に渡される。デコードされた命令は、適切な処理動作を実行するように実行ステージ12を制御するための制御情報を含み得る。キャッシュ20からフェッチされたいくつかのより複雑な命令について、デコード・ステージ8は、それらの命令を、マイクロオペレーション(μops又はuops)として知られ得る複数のデコードされた命令にマップすることができる。故に、L1命令キャッシュ20からフェッチされた命令とパイプラインのその後のステージによって見られるような命令との間に1対1の関係は存在しなくてもよい。一般に、本出願における「命令」の参照は、マイクロオペレーションを含むものとして解釈されるべきである。
デコードされた命令は、命令の実行のために必要とされるオペランドが使用可能であるかどうかを判定する、及びオペランドが使用可能であるときに実行するための命令を発行する、発行ステージ10に渡される。いくつかの実施例は、命令がL1命令キャッシュ20からフェッチされるプログラム順序に対応する順序で実行するために命令が発行されるように、順序正しい処理をサポートすることができる。他の実施例は、プログラム順序とは異なる順序で実行ステージ12に対して命令が発行され得るように、順不同の実行をサポートすることができる。順不同の処理は、オペランドを待っている間に前の命令が停滞させられている間に、オペランドが使用可能なプログラム順序における後の命令を最初に実行することができるので、パフォーマンスの改善に有用になり得る。
発行ステージ10は、様々なデータ処理動作を実行するために命令が実行される実行ステージ12に対して命令を発行する。たとえば、実行ステージは、整数値に算術又は論理演算を実行するための算術/論理ユニット(ALU:Arithmetic/Logic Unit)30と、浮動小数点形式で表された値に演算を実行するための浮動小数点演算(FP:Floating-Point)ユニット32と、レベル1(L1)データ・キャッシュ36からレジスタ40にデータ値をロードするためのロード動作又はレジスタ40からL1データ・キャッシュ36にデータ値を記憶するための記憶動作を実行するためのロード/記憶ユニット34とを含む、いくつかの実行ユニット30、32、34を含み得る。これらは、提供することができる実行ユニットのタイプのほんの一部の実例であり、多数の他の種類もまた提供され得ることが、理解されよう。処理動作を実行するために、実行ステージ12は、1セットのレジスタ40からデータ値を読み取ることができる。実行された命令の結果は、次いで、書き戻しステージ14によってレジスタ40に書き戻すことができる。
L1命令キャッシュ20及びL1データ・キャッシュ36は、複数のレベルのキャッシュを含むキャッシュ階層の一部でもよい。たとえば、レベル2(L2)キャッシュ44もまた提供され得、任意選択で、さらなるレベルのキャッシュが提供可能である。この実例では、L2キャッシュ44は、L1命令キャッシュ20とL1データ・キャッシュ36との間で共用されるが、他の実例は、別個のL2命令及びデータ・キャッシュを有し得る。フェッチされることになる命令がL1命令キャッシュ20内にないとき、その場合、命令はL2キャッシュ44からフェッチすることができ、同様に、命令がL2キャッシュ44内にない場合、そのとき、命令はメイン・メモリ50からフェッチすることができる。同様に、必要に応じて、データがL1データ・キャッシュ36内になく、メモリ50からフェッチされる場合、ロード命令に応答して、データはL2キャッシュ44からフェッチすることができる。任意の知られている方式が、キャッシュ階層の管理に使用され得る。L1データ・キャッシュ36及びL2キャッシュ44はまた、さらなる図を参照してさらに詳しく後述される、制御(CTRL)回路を備えるように示されている。
プログラム命令及びデータ値を参照するためにパイプライン4によって使用されるアドレスは仮想アドレスでもよいが、少なくともメイン・メモリ50、及び任意選択で少なくともいくつかのレベルのキャッシュ階層もまた、物理的にアドレス指定され得る。変換索引バッファ(TLB:Translation Lookaside Buffer)(明示的に示されてはいない)は、パイプライン4によって使用される仮想アドレスをキャッシュ又はメモリにアクセスするために使用される物理アドレスに変換するために提供され得る。
図1に示すように、装置2は、1セットの有界ポインタ・レジスタ60を有し得る。有界ポインタ・レジスタのセットは、汎用データ・レジスタ40のセットとは物理的に別個なものとして図1には示されているが、1つの実施例では、同じ物理ストレージが、汎用データ・レジスタと有界ポインタ・レジスタとの両方を提供するために使用され得る。
各有界ポインタ・レジスタ60は、アクセスされることになるデータ値のアドレスを決定するために使用され得るポインタ値62と、対応するポインタ62を使用するときにアドレスの許容範囲を指定する範囲情報64とを含む。有界ポインタ・レジスタ60はまた、ポインタの使用時の1つ又は複数の制約/許可を定義することができる制約情報66(本明細書で許可情報とも呼ばれる)を含み得る。たとえば、制約66は、ポインタ62を使用することができる命令のタイプ、又はポインタを使用することができるパイプライン4のモードを制約するために使用することができる。これ故に、範囲情報64及び制約情報66は、その中でポインタ62を使用することが許される能力を定義すると考えてもよい。定義された能力外でポインタ62を使用する試みがなされたとき、エラーがトリガされ得る。範囲情報64は、たとえば、ある種の知られている境界内にポインタが残り、機密又は安全情報を含み得るメモリ・アドレス空間の他のエリアに外れないことを確実にするために有用になり得る。一実施例において、同じ物理ストレージが、汎用データ・レジスタと有界ポインタ・レジスタとの両方に使用される場合、そのとき、1つの実施例において、ポインタ値62は、たとえば、対応する汎用レジスタのために使用されるのと同じ記憶場所内に記憶され得る。
図2は、データ又は命令への不正アクセスから保護するために許容範囲が使用される命令のタイプの実例を示す。図2の最上部に示すように、特定の有界ポインタ・レジスタPR1は、所与のポインタ値62及び範囲情報64を含み、範囲情報64は、この実例では、許容範囲の下縁を定義する下縁アドレス68及び許容範囲の上縁を定義する上縁アドレス69を使用して指定される。たとえば、境界68、69は、アドレスの範囲80000から81000を定義するように設定される。ある種の命令が有界ポインタ・レジスタPR1を参照し、ポインタ62から判定されたアドレスがこの範囲外であるとき、エラーがトリガされ得る。
たとえば、図2の部分Aに示すように、いくつかのシステムでは、範囲情報64によって指定された範囲外にある値にポインタ・レジスタ60内のポインタ62の値を設定しようとする試み(ここでは、ポインタはアドレスを直接指定すると仮定されている)がある場合に、エラーがトリガされ得る。これは、ポインタを使用する任意のアクセスが、許可された範囲内に安全に位置することが確保され得るように、指定された範囲外のいずれかの値をポインタ62が取ることを回避させる。別法として、図2の部分Bに示すように、アドレスが指定された範囲外にあるときに、命令がポインタ62のそのアドレスによって識別される場所にアクセスしようと試みるとき、エラーがトリガされ得る。これ故に、指定された範囲外の値にポインタ62を設定することはまだ許容可能になり得るが、ポインタ・アドレス(又はポインタから導出されたアドレス)におけるデータアクセスが試みられると、次いで、アドレスが許可された範囲外にある場合、エラーがトリガされ得る。他のシステムは、図2の部分A及びBに示された両方のタイプの命令に応答して、エラーをトリガし得る。
範囲情報64は、異なるやり方で設定することができる。たとえば、安全なコード、又はオペレーティング・システム若しくはハイパーバイザは、所与のポインタに許可された範囲を指定することができる。たとえば、命令セット・アーキテクチャは、所与のポインタ62の範囲情報64を設定又は修正するためのいくつかの命令を含むことができ、これらの命令の実行は、プロセッサ4のある種のソフトウェア又はある種のモード若しくは例外状況に制約され得る。範囲情報64を設定又は修正するための任意の知られている技法を使用することができる。
ポインタを参照するある種の命令を実行するときに実行ステージ12において使用され得る有界ポインタ記憶素子60のセットに加えて、プログラム・カウンタ能力(PCC:Program Counter Capability)レジスタ80もまた、命令がレベル1命令キャッシュ20からフェッチされているときにフェッチ・ステージ6において類似の機能を提供するために使用され得る。具体的には、プログラム・カウンタ・ポインタは、有界ポインタ記憶素子のセット60においてそれぞれのポインタで与えられる範囲及び制約情報と類似の、範囲情報84及び任意の適切な制約情報86も提供するPCC80で、フィールド82に記憶され得る。
図3は、それらのデータ・ブロックが能力(すなわち、有界ポインタ及び関連する制約情報)を表すか又は通常のデータを表すかを識別するために、個々のデータ・ブロックに関連してタグ・ビットがどのように使用されるかを概略的に示す。具体的には、メモリ・アドレス空間110は、一連のデータ・ブロック115を記憶することになり、これは指定されたサイズを通常は有することになる。純粋に説明を目的として、この実例では、各データ・ブロックは128ビットを含むと仮定する。各データ・ブロック115に関連して、1つの実施例では、関連データ・ブロックが能力を表すことを識別するために設定され、関連データ・ブロックが通常のデータを表すことを示すために消去される、タグ・ビットと呼ばれる単一のビット・フィールドであり、故に能力として扱うことはできない、タグ・フィールド120が提供される。セット又は消去する状態に関連する実際の値は具体的実施例に応じて変化することができるが、純粋に例として、1つの実施例では、タグ・ビットが1の値を有する場合、それは、関連データ・ブロックが能力であることを示し、そして、それが0の値を有する場合、それは、関連データ・ブロックが通常のデータを含むことを示す、ことが理解されよう。
能力が、図3に示す能力レジスタ100などの有界ポインタ・レジスタ60(本明細書で能力レジスタとも呼ばれる)のうちの1つにロードされるとき、次いで、タグ・ビットは、能力情報と移動する。したがって、能力レジスタ100に能力がロードされるとき、ポインタ102、範囲情報104及び制約情報106(以下、許可情報と称する)は、能力レジスタにロードされることになる。加えて、その能力レジスタに関連して、又はその中の特定のビット・フィールドとして、タグ・ビット108は、コンテンツが能力を表すことを識別するように設定されることになる。同様に、能力がメモリに記憶し戻されるとき、関係するタグ・ビット120は、能力が記憶されるデータ・ブロックに関連して設定されることになる。そのような手法によって、能力と通常のデータとを区別することが可能であり、これ故に、通常のデータが能力として使用され得ないことを確実にする。
図3では、タグ・ビットを含むタグ・フィールドが参照されてあるが、より一般的な実施例では、タグ・ビットは、各能力に関連付けられ得る能力メタデータの実例である。これ故に、図4に示すように、システムの記憶素子(それが能力レジスタ60のうちの1つでも又はメモリ・アドレス空間110内の記憶場所でも)に記憶された能力150は、それと関連する能力メタデータ155を有し得る。能力メタデータは、関連データ・ブロック150が実際に能力を表すか、又はそうではなく汎用データとして解釈されるべきかを識別することになり、1つの実施例において、その情報は能力メタデータ155内にタグ・ビットとしてエンコードされることになる。能力メタデータは、1つの実施例において、タグ・ビットを単に含み得るが、代替実施例では、必要に応じて追加の情報を含み得る。たとえば、データのタイプは、たとえば、特定の特権レベルによる所有権、粒度の細かい許可、たとえば読み取り専用、などを示す能力メタデータでさらに細分化することができる。
能力は様々な形をとることができるが、図4に示す実施例では、能力は有界ポインタである。図示するように、有界ポインタは、ポインタ値160、範囲情報165及び許可属性170で構成される。範囲情報及び許可属性は、有界ポインタの属性と総称され得る。
図5Aは、一部の実施例で記憶され得る例示的キャッシュ・ライン200を示す。図示されているように、キャッシュ・ライン200は、タグ・アドレス201、有効性ビット202、ダーティ・ビット203、能力タグ・ダーティ・ビット204、能力タグ205及び206、並びにデータ値207及び208を含む。能力タグ及びデータ値のラベリングが示すように、各データ値に能力タグが与えられている。対照的に、このキャッシュ・ライン内には1つのみの能力タグ・ダーティ・ビット204が与えられ、能力タグ205又は206のいずれかがこのキャッシュ・ラインの有効期間中に修正されるかどうかを追跡するために使用される、ことに留意されたい。図5Bは、図5Aに示されたそれと類似した、一部の実施例において記憶され得る別のキャッシュ・ライン210を示す。図示するように、キャッシュ・ライン210は、タグ・アドレス201、有効性ビット212、ダーティ・ビット213、2つの能力タグ・ダーティ・ビット214及び215、能力タグ216及び217、並びにデータ値218及び218を含む。図5A及び図5Bの例示的キャッシュ・ラインの唯一の差は、図5Bの実例では、2つの能力タグ・ダーティ・ビット214及び215が提供され、能力タグ216及び217のぞれぞれのために1つ存在する、ということである。
図5Cは、データ値の書き込みが起こるときにそのデータ値に関連して記憶された能力タグ・ダーティ・ビットを更新するために1つの実施例において使用される回路を概略的に示す。この回路は、書き込みトランザクションの対象となるデータ値230及びその関連能力タグ232を、これらを記憶されたデータ値234及び能力タグ236として記憶させる(たとえば、キャッシュ・ラインに)前に、バッファするように構成される。この回路はさらに、書き込みトランザクションの一部として提供される能力タグ232及び能力タグ236(以前に記憶されたものとしての)をその入力として取る比較論理238を含む。これらが異なるとき、記憶されたデータ値234に関連して記憶される能力タグ・ダーティ・ビット238は、能力タグが変わったことを示すように設定される。より単純な変形形態もまたここで提案され(明示的に示されてはいないが)、そこでは、能力タグ・ダーティ・ビット238が、データ値234に更新が行われるときにはいつでも設定され(たとえこれが能力タグを実際には修正しなくても)、これは、能力タグ値の完全ビット単位の比較を必要としないという利点を有する、ことに留意されたい。しかしながら、能力タグ値が比較的小さいことが予期されると仮定すると、そのような構成によって得られる優位性は、比較的限られ得る。
図6は、1つの実施例におけるデータ処理システム250を概略的に示す。本システムは、中央処理装置(CPU:Central Processing Unit)252、レベル1データ・キャッシュ254(ローカル・キャッシュ制御装置256を有する)、レベル2(統一された)キャッシュ258(ローカル・キャッシュ制御装置260を有する)、メモリ・コントローラ262、能力テーブル・キャッシュ264、及びメイン・メモリ266を備える。これらの構成要素は、当業者には馴染みのあるキャッシュ階層の形で配置され、そこでは、より小さい、より高速のキャッシュ・ストレージは、CPU252により近くより低いキャッシュ・レベルで提供され、より低速の、より大きなキャッシュ能力は、メモリ266により近くより高いキャッシュ・レベルで提供される。図6に示すように、さらなるキャッシュ・レベル268もまた、メモリ・コントローラ262とメイン・メモリ266との間に提供され得る。図6に示された構成要素のうちのいくつかの特定の構成について、次の図を参照してさらに詳しく論じる。
図7Aは、データ書き込みトランザクションが能力メタデータ含むべきかどうかを判定するために1つの実施例において施されるステップのシーケンスを示す。たとえば、これらのステップは、図6に示すようなメモリ・コントローラ262によって実行され得る。ステップ280では、キャッシュ/メモリ階層内の次のレベルを対象とする書き込みトランザクションが実行されることになるまで、流れはループする。これに該当する場合、流れはステップ282に進み、そこでは、書き込みトランザクションの対象であるデータ値の能力タグ・ダーティ・ビット(CTD:Capability Tag Dirty bit)が0であるか、すなわち、書き込みトランザクションの対象である1つ又は複数のデータ値に関連する能力タグ・ビットが修正されなかったことを示すか、が判定される。これに該当しない場合、すなわち、それらが修正されてあった場合、次いで、流れはステップ284に進み、書き込みトランザクションは、能力タグ・ビットを含んで継続する。言い換えれば、これらの能力タグのローカルに保持された値はまた、キャッシュ/メモリ階層内の次のレベルに書き出される。図7Aにおいて参照された書き込みトランザクションは、実際には、読み取り-修正-書き込みトランザクションでもよいことに留意すべきであり、したがって、ステップ284における(ステップ288において下で同様に)書き込みトランザクションを進めることは、能力タグに関して(又は制御の流れに依存せず)初期読み取りトランザクションを含むこともまた理解されるべきである。しかしながら、ステップ282では、能力タグ・ダーティ・ビットは、設定されておらず(0)、能力タグ・ビットの修正が起こらなかったことを示していると判定された場合、次いで、流れはステップ286へと進む。ステップ286では、能力タグがデータ(能力に対立するものとしての)を示すかどうか、及び「アクティブ能力タグ(CT:Capability Tag)設定」が現在有効にされているかどうかが判定される。これは、たとえば、複数のエージェントが同じ記憶場所に書き込む状況において有用になり得る、能力タグに関して追加のレベルのセキュリティを提供するための技法である。この「アクティブ能力タグ(CT)設定」が、一般に設定され得る、又は、たとえば、他のコアから受信された書き込みアクティビティ情報(図6のメモリ・コントローラ262に対する入力を参照)に基づいて設定され得る。これらの条件の両方が当てはまる場合、次いで、流れはステップ284に進み、書き込みトランザクションは、能力タグを含んで進む。これは、能力タグが変わっていないように見えても、それらが、作成されるべきではない能力の偽造(不注意によるか悪意があるかにかかわらず)に対するさらなるレベルの保護を提供するために、明示的にリセットされてデータ値(能力に対立するものとしての)を示すことを実現する。そうでない場合には、ステップ286から、流れはステップ288に進み、そこで、書き込みトランザクションは能力タグ・ビットなしで進む。言い換えれば、更新された値のみが、次のメモリレベルに書き出される。
図7Bは、この機能性を実装するために使用され得る回路の1つの実例を提供し、ここでは、値290及びその関連能力タグ292が、バッファ294及び296に一時的に記憶され、バッファ296は、値290に関連して記憶された能力タグ・ダーティ・ビット298から得られた追加の有効化(EN:Enable)入力を有する。したがって、これは、能力タグ292が次のストレージ・レベルへのアクセスの一部を形成することになることを能力タグ・ダーティ(CTD)ビット298の設定が意味することを意図する。
図8は、1つの実施例における図6の項目264として示されるものなどの能力タグ・キャッシュを概略的に示す。この能力タグ・キャッシュは、たとえば、メモリ・コントローラ262の一部を形成してもよく、又は別個に提供されてもよい。使用中、キャッシュ・メモリ階層内の次のレベルに(メモリ266にでもよく又はさらなるキャッシュ・レベル268にでもよい)渡されることになる書き込みトランザクションの処理中の、メモリ・コントローラは、この能力タグ・キャッシュを参照する。たとえば、これは、ダーティ・キャッシュ・ラインを削除した、さらに低いキャッシュ・レベル(CPU252により近い)によって開始された書き戻しトランザクションをメモリ・コントローラ262が処理しているときに、起こり得る。メモリ・コントローラがこのトランザクションをキャッシュ・メモリ内の次のレベルに渡す場合、これは、1つのキャッシュ・レベルから、包括的キャッシング配置に加わっている別のキャッシュ・レベルに、ダーティ・データを書き戻すことでもよい。
図8で282のラベルを付された能力タグ・キャッシュは、メモリの一部分から取得された(図6を参照)、いくつかのキャッシュ・ラインに能力タグ・テーブル情報を記憶する。キャッシュ・ラインにおける能力タグ・テーブル情報の記憶は、書き込みトランザクションの対象である値の対応するタグ・アドレスに基づく。そのように必要とされる場合、変換回路280が、タグ・アドレスを能力タグ・キャッシュのインデックスに変換するために提供される。一般に、能力タグ・キャッシュの動作は、従来のキャッシュ動作手順に従って実行され、キャッシュは一般に完全に占有されて、キャッシュ・ミスが生じるとき、必要とされるキャッシュ・ラインがメモリから取得され、置換されることになるビクティム・キャッシュ・ラインが選択される。
図8に示された能力タグ・キャッシュ282内のキャッシュ・ラインは、図の下方部に示された能力タグ・テーブル情報の階層的配置の能力タグ・テーブル情報を記憶する。構造の最も高いレベルのテーブル286(この実例では、8ビットを有する)の各ビットは、次にあるより低レベルのテーブル内のビットのいずれかが設定されたかどうかを表す。これ故に、図示された実例では、テーブル290のビットが設定されない場合、テーブル286内の「サマリ」ビットは設定されない。反対に、テーブル288の2つのビットが設定された場合、テーブル286内の「サマリ」ビットが設定される。同じ原理が、テーブル288/290と、それらが次にあるより低いレベルにおいて要約するテーブル(292、294、296、及び298のラベルを付されたもの)との間の関係に適用される。
単純なメモリシステムにおいて、メモリ・コントローラは関連データから物理メモリの別個の領域に能力タグを記憶することができると考えられるとき、能力タグ・キャッシュ282の提供の利益は理解することができる。これが当てはまる場合、次いで、能力タグ・ダーティ情報が存在しなかった場合、次いで、たとえば、最後のレベルのキャッシュからメモリへの書き込み時に、メモリ・コントローラは、実際に、2つの書き込みトランザクションを実行する必要があることになる:データを保持するメモリへの第1の書き込みと、能力タグ情報を含むメモリでの第2の読み取り-修正-書き込み。しかしながら、能力タグは変わっていないことを示す能力タグ・ダーティ情報の入手可能性とともに、この追加の読み取り-修正-書き込み動作は必要ないことになる。
これに関連して、能力タグを付けられたメモリに必要とされる余分な検索のコストを軽減するために、能力タグ・キャッシュ(図8の282など)が、メモリへのこれらの追加のアクセスのうちのいくらかを減らすために、提供され得る。しかしながら、そのような能力タグ・キャッシュが存在することになるが、本明細書で提案される能力タグ・ダーティ情報がない場合、次いで、メモリ・コントローラは、タグ情報の高速の読み取り又は書き込みを可能にするために、能力タグ情報の適切なラインがタグ・キャッシュ内にあったことを確実にする必要があることになる。ラインが存在しなかった場合、メモリに対する可能な書き戻しを有して、タグ・キャッシュからの既存のラインの削除、これに続く、タグ・ビットを含むライン、及び、恐らくは、より粗い粒度のタグ・テーブル情報を表すさらなるラインのロード、次に、タグ・キャッシュから有用な情報を削除すること及び場合により書き戻すことを必要とすることになろう。これに対応して、図8における「ロード」及び「削除」を示す矢印は、1つ以上のキャッシュ・ラインがロードされ得ることと、1つ以上のキャッシュ・ラインが、能力タグ・キャッシュのそのようなそれぞれの更新のために、削除され得ることと、を(破線の矢印の延長を用いて)示すことに留意されたい。反対に、能力タグ・ダーティ情報の入手可能性を用いて、タグは、メモリからの読み取り以後、変化していないという指示は、次いで、能力タグ・キャッシュ・コンテンツへの変更を必要としないことになる。たとえば、階層の最も高いレベル286において設定されていない1つのビット(「0」)は、メモリの全セクションはデータ値のみを含み能力を含まないことを指示し得るので、能力タグ情報のストレージの階層的性質はさらに、このローカルに記憶された能力タグ情報の参照を加速することができる。
図9は、本明細書で提案されるようなキャッシュにおいて能力タグ・ダーティ・ビットを管理するときに、1つの実施例において施されるステップのシーケンスを示す。流れは、ステップ300で開始するように示されており、そこでは、値は、その値とアトミックに記憶された能力タグ情報を有するキャッシュのキャッシュ・ラインに記憶されていると仮定される。流れは、次いで、ステップ302に進み、そこで、このキャッシュ・ラインへの書き込みが作動させられるべきかが決定される。これが当てはまらないとき、流れはステップ308に進み、そこで、このキャッシュ・ラインの削除が作動させられるべきかが決定され、これが当てはまる場合、このキャッシュ・ラインの(現在の)有効期間が終わり、流れはステップ310で終了する。しかしながら、このキャッシュ・ラインへの書き込みが作動させられることになるとステップ302で決定されたとき、次いで、ステップ304で、書き込みの対象である値の能力タグが修正されたかが判定される。たとえば、ビット単位の比較が、能力タグの現在記憶されている値と、書き込みの対象である値とともに提供されている能力タグの値との間で行われ得る。能力タグが修正されたことが発見された場合、次いで、流れはステップ306に進み、そこで、対応する能力タグ・ダーティ・ビットが設定され、この修正を示す。パスは、次のステップ308で合流し、そこでは、(前述のように)このキャッシュ・ラインの削除が作動させられるべきかが決定され、これが当てはまる場合、このキャッシュ・ラインの(現在の)有効期間が終わり、流れはステップ310で終了する。そうでない場合には、このキャッシュ・ラインはキャッシュ内に残り、流れはステップ302に戻る。
図10は、本明細書で提案されるように能力タグ・キャッシュにアクセスするときに1つの実施例において施されるステップのシーケンスを示す。たとえば、これらは、264(図6を参照)などの能力タグ・キャッシュにアクセスするときに262などのメモリ・コントローラによって実行されるステップでもよい。流れは、320において開始すると考えることができ、そこで、プロセスは、メモリ・アクセスが受け付けられるのを待つ。たとえば、これは、(図6の実例における)メモリ266を対象とする書き込みトランザクションでもよい。作動させられようとするメモリ・アクセスが受け付けられると、流れはステップ322に進み、そこで、対応する能力タグ・ダーティ(CTD)ビットが利用可能であるかが判定される。次のステップが324である場合、そこでは、CTDビットが設定されたかがチェックされる。設定されていない場合、能力タグが修正されなかったことを示し、次いで、流れはステップ334に進み、そこで、能力タグ・アクセスの完了が信号伝達され、メモリ・アクセスの能力タグ部分は省略され得る。しかしながら、CTDビットが設定されている場合、又は対応するCTD情報が入手可能でない場合、次いで、流れはステップ326に進み、そこで、メモリ・コントローラは、メモリ・アクセスのタグ・アドレス情報に基づく検索を実行し、能力タグ・テーブル・キャッシュにアクセスする。ステップ328において、対応する能力タグ情報が、能力タグ・テーブル・キャッシュ内に見つからない(すなわち、「ミス」が存在する)場合、次いで、流れは、1つ又は複数の能力タグ・テーブル・ラインの削除並びにメモリから取得された1つ又は複数の能力タグ・テーブル・ラインの新たな割り当てによる置換のためにステップ330を介して進む。ステップ328の後(又は「ヒット」から直接)、ステップ332で、必要とされる能力タグ・テーブル・ラインがアクセスされ、最後に、ステップ334で、能力タグ・アクセスの完了が信号伝達される。ステップ334に続いて、流れはステップ320に戻る。
図11、12、及び13は、システムが能力メタデータ修正マーカー(能力タグ・ダーティ(CTD)ビット)及び/又はデータ修正マーカー(データ・ダーティ・ビット)を転送するようにも配置されるかどうかに応じて、データがキャッシュ・ストレージ内に又は外に転送されるときの状況のいくつかの実施例でシステムに課されるいくつかのルールを示す。言い換えれば、キャッシュにおいてデータ・ブロックに関連して記憶され得る能力タグ・ダーティ・ビット及び/又はデータ・ダーティ・ビットは、それが転送される(キャッシュ内へ又はキャッシュ外へにかかわらず)時にデータ・ブロックと移動しなくてもよい。これらのルールは、能力タグ・ダーティ・ビット及び/又はデータ・ダーティ・ビットが何であると仮定されるかに関して転送の目標にある種の制約を適用する。
図11のステップ400で(キャッシュ・ストレージ内への又は外へのデータの転送時に)開始し、(ステップ402)能力タグ・ダーティ・ビットの値が、データ・ブロックに関連付けられた能力タグが変わったことを示す場合、次いで、(ステップ404)データは、修正されたものとして扱われなければならない。ステップ406で、データ・ダーティ・ビットもまた転送されなかった場合、及び転送がより低いキャッシュ・レベルに対して(CPUに向けて)であった場合(ステップ408)、次いで、(ステップ410)データ及び能力タグ・ダーティ・ビットはクリーンとして扱われなければならない。そうでない場合(ステップ412)、データ及び能力タグ・ダーティ・ビットはダーティとして扱われなければならない。
能力タグ・ダーティ・ビットもまた転送されるとき(ステップ414)、次いで、(ステップ416)データ・ダーティ・ビット及び能力タグ・ダーティ・ビットは、提供されたものとして使用することができる。それらが転送されず(ステップ418に進む)、能力タグ・ダーティ・ビットもまた転送されない場合、次いで、能力タグ・ダーティ状態は、データ・ダーティ状態から推論される必要がある。これ故に、能力タグ・ビットが転送されない場合(ステップ418、ステップ420に進む)、次いで:(ステップ420)データ及び能力タグがともにダーティではないものとしてマークを付けられた場合、次いで、能力タグは、設定されていないものとして扱われ(すなわち、データを示す)、(図12のステップ424)データ及び能力タグがともにダーティとしてマークを付けられた場合、次いで、(ステップ426)能力タグは設定されていないものとして扱われ(すなわち、データを示す)、そして、(ステップ428)データはダーティとしてマークを付けられ、能力タグはダーティではないとしてマークを付けられた場合。
ステップ418から、能力タグ・ビットが転送された場合(単に読みやすくするためにステップ434で繰り返される)、次いで、流れはステップ436に進む。ここから、(ステップ436)データ及び能力タグがダーティではないとしてマークをともに付けられた場合、又は(ステップ438)データ及び能力タグがダーティとしてマークをともに付けられた場合、次いで、(ステップ440)転送された能力タグが、目標によって使用されなければならない。そうではなく、(図13のステップ442)データはダーティとしてマークを付けられ、能力タグはダーティではないとしてマークを付けられた場合、次いで、目標は、次のうちの1つを選択しなければならない(ステップ446):能力タグのそれのコピーを変更しないことと、能力タグのそれのコピーを更新することと、能力タグのそれのコピーが、提供された能力タグとは異なる場合に、エラーを報告すること。そうでない場合、転送されたデータと転送された能力タグとの両方がクリーンである(ステップ444)。
図14は、転送されたデータに加えて(又はそうではなく)トランザクション内に存在し得る情報の可能な16の組合せの意味を提示する。本技法の異なる実施例は、トランザクションがそれらの組合せをどのように表すかを選択することができる、すなわち、能力タグ及び/又はタグ・ダーティ状態がトランザクション内に存在するかどうかは実装形態に委ねられている。TDP=0はTD=DDであることをただ暗示するので、TDPは、トランザクションが何を意味するかを解明することを目的として、ほとんどは無視され得ることに留意されたい。DDは、多くは、トランザクションが読み取りであるか書き込みであるかを伝えるが、キャッシュ・ラインがダーティ・データと内部に移動することができる実施例もまた意図されており、そのとき、TD/TPは、この(少し変わった)状況がどのように対処されるべきかを示す。
図15は、使用することができる仮想マシン実装形態を示す。前述の実施例は、関係する技法をサポートする特定の処理ハードウェアを動作させる装置及び方法に関して本発明を実装するが、ハードウェア・デバイスのいわゆる仮想マシン実装形態を提供することもまた可能である。これらの仮想マシン実装形態は、仮想マシン(VM:Virtual Machine)プログラム510をサポートするホスト・オペレーティング・システム(OS:Operating System)520を実行するホスト・プロセッサ(ハードウェア)530で実行する。通常は、大きな強力なプロセッサが、合理的な速度で実行する仮想マシン実装形態を実現するために必要とされるが、そのような手法は、互換性又は再使用を理由に別のプロセッサに固有のコードを実行するという要望があるときなど、ある種の状況において正当化され得る。仮想マシン・プログラム510は、コンピュータ可読記憶媒体(非一時的媒体でもよい)に記憶されてもよく、仮想マシン・プログラム510によってモデル化されているデバイスである実際のハードウェアによって提供されることになるアプリケーション・プログラムインターフェースと同じであるアプリケーション・プログラム500にアプリケーション・プログラム・インターフェース(命令実行環境)を提供する。したがって、キャッシュ・ストレージのモデル及び前述のキャッシュ・ストレージを動作させる方法のサポートは、そのような物理キャッシュ・ストレージを有するハードウェア・デバイスと同じ形で機能する環境をアプリケーション500に提供するために、仮想マシン・プログラム510において提供され得る。
簡潔な総合的要約において、キャッシュ・ストレージを備えた装置及びそのようなキャッシュ・ストレージを動作させる方法が提供される。キャッシュ・ストレージ内のデータ・ブロックは、データ・ブロックが能力を指定するかデータ値を指定するかを識別することに関連して記憶された能力メタデータを有する。少なくとも1つのタイプの能力は有界ポインタである。キャッシュ・ストレージ内のデータ・ブロックへの書き込みに応答して、能力メタデータ修正マーカーが、データ・ブロックに関連して設定され、データ・ブロックに関連する能力メタデータは、データ・ブロックがキャッシュ・ストレージに記憶された以後に、変わったかどうかを示す。これは、データ値から能力へのデータ・ブロックの使用の修正が、意図されない限り、起こり得ないように、システムのセキュリティをサポートする。能力メタデータがメモリ内の他のデータとは別個に記憶されるとき、メモリに対して行われるアクセスは少なくなり得るので、効率性もまた生じ得る。
本出願では、「…ように構成された」又は「ように配置された」という言葉は、定義された動作を実行することができる構成を装置の要素が有することを意味するために使用される。これに関連して、「構成」は、ハードウェア又はソフトウェアの配置又は相互接続の形を意味する。たとえば、装置が、定義された動作を行う専用ハードウェアを有してもよく、或いは、プロセッサ又は他の処理デバイスが、その機能を実行するようにプログラムされてもよい。「ように構成された」又は「ように配置された」は、装置要素が、定義された動作を行うために、何らかの形で変更される必要がある、ということを暗示しない。
説明のための実施例が、添付の図面を参照して詳細に本明細書において説明されているが、本発明はそれらの正確な実施例には限定されないことと、様々な変更、追加及び修正が、添付の特許請求の範囲によって定義されるものとしての本発明の範囲を逸脱せずに、当業者によってもたらされ得ることと、を理解されたい。たとえば、従属請求の特徴の様々な組合せが、本発明の範囲を逸脱せずに、独立請求の特徴を有して、行われ得る。

Claims (24)

  1. データ・ブロックを記憶するためのキャッシュ・ストレージであって、各データ・ブロックが、前記各データ・ブロックが能力を指定するかデータ値を指定するかを識別することに関連して記憶された能力メタデータを有し、少なくとも1つのタイプの能力が有界ポインタである、キャッシュ・ストレージと、
    前記キャッシュ・ストレージに記憶されたデータ・ブロックへの書き込みに応答して、前記データ・ブロックに関連して能力メタデータ修正マーカーを設定する、キャッシュ制御回路であって、能力メタデータ修正マーカーの値が、前記データ・ブロックに関連する前記能力メタデータが、前記データ・ブロックが前記キャッシュ・ストレージに記憶された以後に、変わったかどうかを示す、キャッシュ制御回路と、を備える、装置。
  2. 前記データ・ブロックに関連して設定された前記能力メタデータ修正マーカーが、前記データ・ブロックを含む複数のデータ・ブロックに対応する、請求項1に記載の装置。
  3. 前記データ・ブロックに関連して設定された前記能力メタデータ修正マーカーが、前記キャッシュ・ストレージ内の各キャッシュ・ラインのための単一のビットである、請求項2に記載の装置。
  4. 前記データ・ブロックに関連して設定された前記能力メタデータ修正マーカーが、前記データ・ブロックとの1対1の対応を有する、請求項1に記載の装置。
  5. 前記能力メタデータ修正マーカーの前記値が、指定されたデータ・ブロックが前記キャッシュ・ストレージに記憶された以後に前記能力メタデータは変わっていないことを示すときに、前記キャッシュ・ストレージからさらなるストレージ・レベルへの前記指定されたデータ・ブロック及び関連能力メタデータについての受信された書き込みトランザクションに応答して、前記関連能力メタデータ及び前記さらなるストレージ・レベルに関する書き込みトランザクションを抑制する、メモリ・コントローラをさらに備える、請求項1から4までのいずれか一項に記載の装置。
  6. 前記さらなるストレージ・レベルが、メモリ・ストレージである、請求項5に記載の装置。
  7. 前記さらなるストレージ・レベルが、さらなるキャッシュ・ストレージ・レベルである、請求項5に記載の装置。
  8. 前記書き込みトランザクションが、前記メモリ・ストレージ内の前記関連能力メタデータに関する読み取り-修正-書き込みトランザクションである、請求項6に記載の装置。
  9. 前記キャッシュ・ストレージより高いメモリ階層レベルにおいて能力メタデータを記憶するために能力メタデータ・キャッシュ・ストレージをさらに備え、前記メモリ・コントローラは、少なくとも1つのデータ・ブロックについてのメモリ・アクセス・トランザクションに応答して、前記少なくとも1つのデータ・ブロックに関連する必要な能力メタデータを返し、
    前記メモリ・コントローラが、前記必要な能力メタデータが前記能力メタデータ・キャッシュ・ストレージに記憶されていないときに、前記少なくとも1つのデータ・ブロックについての前記メモリ・アクセス・トランザクションに応答して、前記少なくとも1つのデータ・ブロックに関連する前記能力メタデータ修正マーカーの前記値が、前記必要な能力メタデータは、前記少なくとも1つのデータ・ブロックが前記キャッシュ・ストレージに記憶された以後に、変わらなかったことを示さない限り、現在記憶されている能力メタデータの前記能力メタデータ・キャッシュ・ストレージからの削除及び前記能力メタデータ・キャッシュ・ストレージ内への前記必要な能力メタデータの取得を開始する、請求項5から8までのいずれか一項に記載の装置。
  10. 前記能力メタデータ・キャッシュ・ストレージに記憶された各ビットが、能力メタデータの複数のビットのいずれかが設定されているか否かを示す、請求項9に記載の装置。
  11. 前記能力メタデータ・キャッシュ・ストレージが、少なくとも2つの階層レベルのストレージを備え、より高い階層レベルに記憶された各ビットが、次にあるより低い階層レベル内の複数のビットのいずれかが設定されているか否かを示す、請求項10に記載の装置。
  12. 前記キャッシュ・ストレージが、キャッシュ・ラインに前記データ・ブロックを記憶することができ、前記データ・ブロックに関連して前記キャッシュ制御回路によって設定された前記能力メタデータ修正マーカーが、前記キャッシュ・ストレージ内の各キャッシュ・ラインの複数のビットのうちの1つであり、各キャッシュ・ラインの前記複数のビットのうちの各ビットが、前記キャッシュ・ラインのそれぞれの部分の前記能力メタデータが、前記キャッシュ・ラインの前記それぞれの部分が前記キャッシュ・ストレージに記憶された以後に、変わったかどうか、を示す、請求項1から11までのいずれか一項に記載の装置。
  13. 前記キャッシュ制御回路が、前記キャッシュ・ストレージに記憶された前記データ・ブロックへの前記書き込みに応答して、データ・ブロック部分に関連してデータ修正マーカーを記憶し、前記データ修正マーカーの値は、前記データ・ブロック部分が、前記データ・ブロックが前記キャッシュ・ストレージに記憶された以後に、書き込まれたかどうか、を示し、
    前記能力メタデータ修正マーカーに対応する前記キャッシュ・ラインのそれぞれの部分は、前記データ・ブロック部分と少なくとも同じ大きさである、請求項12に記載の装置。
  14. 指定されたデータ・ブロックに関連して記憶された能力メタデータは、それがデータ値であることを示し、前記能力メタデータ修正マーカーの前記値は、前記指定されたデータ・ブロックに関連して記憶された前記能力メタデータが、前記指定されたデータ・ブロックが前記キャッシュ・ストレージに記憶された以後に、変わらなかったことを示すとき、前記キャッシュ・ストレージからさらなるストレージ・レベルへ前記指定されたデータ・ブロック及び関連能力メタデータについての受信された書き込みトランザクションに応答して、前記指定されたデータ・ブロックがデータ値であることを示すようにメモリに記憶された前記能力メタデータがアクティブに設定されるようにさせるためのメモリ書き込みトランザクションを発行する、メモリ・コントローラをさらに備える、請求項1から4までのいずれか一項に記載の装置。
  15. 指定されたデータ・ブロックに関連して記憶された前記能力メタデータが、それがデータ値であることを示すとき、並びに、別のエージェントが、前記指定されたデータ・ブロックが前記キャッシュ・ストレージに記憶された以後に、前記指定されたデータ・ブロック及びメモリ内の関連能力メタデータのうちの少なくとも1つに対する書き込みアクションを実行したことを示す信号を受信したときに、前記キャッシュ・ストレージからさらなるストレージ・レベルへの前記指定されたデータ・ブロック及び前記関連能力メタデータについての受信された書き込みトランザクションに応答して、前記指定されたデータ・ブロックがデータ値であることを示すようにメモリに記憶された前記能力メタデータが設定されるようにさせるためのメモリ書き込みトランザクションを発行する、メモリ・コントローラをさらに備える、請求項1から4までのいずれか一項に記載の装置。
  16. 前記キャッシュ・ストレージ内へ又は前記キャッシュ・ストレージ外への前記データ・ブロックの転送に応答し、前記能力メタデータ修正マーカーの前記値が、前記データ・ブロックに関連する前記能力メタデータが変わったことを示すときに、修正されたものとして前記データ・ブロックが扱われるようにさせる、請求項1から15までのいずれか一項に記載の装置。
  17. 前記キャッシュ・ストレージ内へ又は前記キャッシュ・ストレージ外への前記データ・ブロックの転送に応答し、データ修正マーカーが転送されないときに、
    前記転送がより低いキャッシュ層へである場合には前記データ・ブロック及び能力メタデータ修正マーカーがクリーンとして扱われるようにさせ、
    前記転送がより低いキャッシュ層へではない場合には前記データ・ブロック及び能力メタデータ修正マーカーが修正されたものとして扱われるようにさせる、請求項1から16までのいずれか一項に記載の装置。
  18. 前記キャッシュ・ストレージ内へ又は前記キャッシュ・ストレージ外への前記データ・ブロックの転送に応答し、前記能力メタデータ修正マーカーが転送されないときに、
    前記能力メタデータ修正マーカーの前記値がデータ修正マーカーから推論されるようにさせる、請求項1から17までのいずれか一項に記載の装置。
  19. 前記キャッシュ・ストレージ内へ又は前記キャッシュ・ストレージ外への前記データ・ブロックの転送に応答して、
    前記能力メタデータが転送されないときに、
    データ修正マーカー及び前記能力メタデータ修正マーカーが両方とも修正されていないことを示す場合は、データ値を指定するものとして前記データ・ブロックを識別するものとして前記能力メタデータを前記転送の目標に扱わせ、
    前記データ修正マーカー及び前記能力メタデータ修正マーカーが両方とも修正されていることを示す場合は、データ値を指定するものとして前記データ・ブロックを識別するものとして前記能力メタデータを前記転送の前記目標に扱わせ、
    前記データ修正マーカーは修正されたことを示し、前記能力メタデータ修正マーカーは修正されていないことを示す場合は、前記転送の前記目標に前記能力メタデータ修正マーカーのローカル・コピーを有効として扱わせる、請求項1から18までのいずれか一項に記載の装置。
  20. 前記キャッシュ・ストレージ内へ又は前記キャッシュ・ストレージ外への前記データ・ブロックの転送に応答して、
    前記能力メタデータが転送されたときに、
    ータ修正マーカー及び前記能力メタデータ修正マーカーが両方とも修正されていないことを示す場合又は前記データ修正マーカー及び前記能力メタデータ修正マーカーが両方とも修正されていることを示す場合に、前記転送の目標に前記能力メタデータを有効として扱わせ、
    前記データ修正マーカーが修正されたことを示し、前記能力メタデータ修正マーカーが修正されていないことを示す場合に、前記転送の前記目標に
    前記能力メタデータのローカル・コピーを修正しないこと、
    前記能力メタデータの前記ローカル・コピーを更新すること、又は、
    前記能力メタデータの前記ローカル・コピーが前記転送された能力メタデータとは異なるときにはエラーを報告すること
    のうちの1つを実行させること、
    を行う、請求項1に記載の装置。
  21. 請求項1から20までのいずれか一項に記載の装置に対応する命令実行環境を提供するようにホスト・データ処理装置を制御するためのプログラム命令を含む、仮想マシン・コンピュータ・プログラム。
  22. 請求項21に記載の前記仮想マシン・コンピュータ・プログラムを記憶するコンピュータ可読記憶媒体。
  23. キャッシュ・ストレージを処理デバイスによって動作させる方法であって、
    前記キャッシュ・ストレージにデータ・ブロックを記憶するステップと、
    各データ・ブロックが能力を指定するかデータ値を指定するかを識別する前記各データ・ブロックに関連して能力メタデータを記憶するステップであって、少なくとも1つのタイプの能力が有界ポインタである、ステップと、
    前記キャッシュ・ストレージに記憶されたデータ・ブロックへの書き込みに応答して、前記データ・ブロックに関連して能力メタデータ修正マーカーを設定するステップであって、前記データ・ブロックに関連する前記能力メタデータが、前記データ・ブロックが前記キャッシュ・ストレージに記憶された以後に、変わったかどうかを前記能力メタデータ修正マーカーの値が示す、ステップと、を含む、方法。
  24. データ・ブロックをキャッシュするための手段と、
    各データ・ブロックが能力を指定するかデータ値を指定するかを識別する前記各データ・ブロックに関連して能力メタデータを記憶するための手段であって、少なくとも1つのタイプの能力が有界ポインタである、手段と、
    データ・ブロックへの書き込みに応答して、前記データ・ブロックをキャッシュするための手段に記憶されたデータ・ブロックに関連して能力メタデータ修正マーカーを設定するための手段であって、前記能力メタデータ修正マーカーの値が、前記データ・ブロックに関連する前記能力メタデータは、前記データ・ブロックをキャッシュするための手段に前記データ・ブロックが記憶された以後に、変わったかどうかを示す、手段と、を備える、装置。
JP2019558514A 2017-05-02 2018-04-19 能力メタデータを管理するための装置及び方法 Active JP7096840B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1706971.7A GB2562062B (en) 2017-05-02 2017-05-02 An apparatus and method for managing capability metadata
GB1706971.7 2017-05-02
PCT/GB2018/051034 WO2018203032A1 (en) 2017-05-02 2018-04-19 An apparatus and method for managing capability metadata

Publications (2)

Publication Number Publication Date
JP2020519991A JP2020519991A (ja) 2020-07-02
JP7096840B2 true JP7096840B2 (ja) 2022-07-06

Family

ID=59010913

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019558514A Active JP7096840B2 (ja) 2017-05-02 2018-04-19 能力メタデータを管理するための装置及び方法

Country Status (8)

Country Link
US (1) US11119925B2 (ja)
EP (1) EP3619615B1 (ja)
JP (1) JP7096840B2 (ja)
KR (1) KR102590180B1 (ja)
CN (1) CN111201518B (ja)
GB (1) GB2562062B (ja)
IL (1) IL270241B (ja)
WO (1) WO2018203032A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2586276B (en) * 2019-08-16 2022-03-30 Advanced Risc Mach Ltd Capability write address tracking
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction
US11200175B2 (en) 2020-03-20 2021-12-14 Arm Limited Memory accessor invailidation
CN112379929B (zh) * 2020-11-13 2023-09-08 海光信息技术股份有限公司 一种指令替换方法、装置、处理器、电子设备及存储介质
JP2022144469A (ja) 2021-03-19 2022-10-03 キオクシア株式会社 メモリシステム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011081790A (ja) 2009-09-30 2011-04-21 Intel Corp レジスタ拡張を使用した中央処理装置のメタデータの管理およびそのインプリメント
WO2017009598A1 (en) 2015-07-10 2017-01-19 Arm Limited Apparatus and method for executing instruction using range information associated with a pointer
WO2017032969A1 (en) 2015-08-27 2017-03-02 Arm Limited An apparatus and method for controlling instruction execution behaviour

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5450563A (en) 1992-10-30 1995-09-12 International Business Machines Corporation Storage protection keys in two level cache system
US6826672B1 (en) * 2000-05-16 2004-11-30 Massachusetts Institute Of Technology Capability addressing with tight object bounds
US8321637B2 (en) * 2007-05-14 2012-11-27 International Business Machines Corporation Computing system with optimized support for transactional memory
BRPI0925055A2 (pt) * 2009-06-26 2015-07-28 Intel Corp "otimizações para um sistema de memória transacional ilimitada (utm)"
US9753858B2 (en) * 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US9274956B1 (en) * 2012-10-31 2016-03-01 Amazon Technologies, Inc. Intelligent cache eviction at storage gateways
US9348598B2 (en) * 2013-04-23 2016-05-24 Arm Limited Data processing apparatus and method for pre-decoding instructions to be executed by processing circuitry
GB2526849B (en) * 2014-06-05 2021-04-14 Advanced Risc Mach Ltd Dynamic cache allocation policy adaptation in a data processing apparatus
US9336047B2 (en) * 2014-06-30 2016-05-10 International Business Machines Corporation Prefetching of discontiguous storage locations in anticipation of transactional execution
US9514054B2 (en) * 2014-07-08 2016-12-06 Netapp, Inc. Method to persistent invalidation to ensure cache durability
US9916191B1 (en) * 2014-12-19 2018-03-13 EMC IP Holding Company LLC Techniques for efficiently performing a filesystem consistency check
US9804891B1 (en) * 2015-03-20 2017-10-31 Antara Teknik LLC Parallelizing multiple signing and verifying operations within a secure routing context
US20180089088A1 (en) * 2016-09-27 2018-03-29 Intel Corporation Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011081790A (ja) 2009-09-30 2011-04-21 Intel Corp レジスタ拡張を使用した中央処理装置のメタデータの管理およびそのインプリメント
WO2017009598A1 (en) 2015-07-10 2017-01-19 Arm Limited Apparatus and method for executing instruction using range information associated with a pointer
WO2017032969A1 (en) 2015-08-27 2017-03-02 Arm Limited An apparatus and method for controlling instruction execution behaviour

Also Published As

Publication number Publication date
KR20200002932A (ko) 2020-01-08
JP2020519991A (ja) 2020-07-02
KR102590180B1 (ko) 2023-10-17
IL270241B (en) 2022-04-01
GB201706971D0 (en) 2017-06-14
WO2018203032A1 (en) 2018-11-08
CN111201518A (zh) 2020-05-26
US20200192800A1 (en) 2020-06-18
GB2562062A (en) 2018-11-07
EP3619615B1 (en) 2021-12-01
CN111201518B (zh) 2023-10-20
EP3619615A1 (en) 2020-03-11
US11119925B2 (en) 2021-09-14
GB2562062B (en) 2019-08-14

Similar Documents

Publication Publication Date Title
JP7096840B2 (ja) 能力メタデータを管理するための装置及び方法
KR101025354B1 (ko) 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
JP6902029B2 (ja) 有界ポインタを管理するための装置および方法
JP7128206B2 (ja) 機能の使用を管理するための装置および方法
TWI770172B (zh) 用於管理能力域的設備及方法
TWI417724B (zh) 使用替代頁池管理直接記憶器存取寫入頁錯誤之電腦執行方法、裝置、及電腦程式產品
JP2008530656A (ja) データ転送中にキャッシュへのアクセスを制限するシステムおよびその方法
JP7445431B2 (ja) 命令の実行を制御する装置および方法
US11023237B2 (en) Apparatus and method for interpreting permissions associated with a capability
JP2019503009A (ja) ベクトルアトミックメモリ更新命令
JP2021531583A (ja) メモリ・システム内に記憶されている制御テーブルのための二分探索手順
JP7269942B2 (ja) 複数ガード・タグ設定命令
KR101121902B1 (ko) 변경된 메모리 주소를 추적하는 트랜잭션 메모리 시스템 및 방법
US11226819B2 (en) Selective prefetching in multithreaded processing units
JP7369720B2 (ja) アクションをトリガするための装置及び方法
TWI801622B (zh) 用於處理保護標籤損失的裝置、方法、電腦程式、與儲存媒體
JPH0342744A (ja) キャッシュ・メモリを有する計算システムおよびキャッシュ・メモリ管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210412

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220411

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220523

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220531

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220624

R150 Certificate of patent or registration of utility model

Ref document number: 7096840

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150