JP2019516181A - ケイパビリティ・メタデータに対する操作を実施するための装置及び方法 - Google Patents

ケイパビリティ・メタデータに対する操作を実施するための装置及び方法 Download PDF

Info

Publication number
JP2019516181A
JP2019516181A JP2018553940A JP2018553940A JP2019516181A JP 2019516181 A JP2019516181 A JP 2019516181A JP 2018553940 A JP2018553940 A JP 2018553940A JP 2018553940 A JP2018553940 A JP 2018553940A JP 2019516181 A JP2019516181 A JP 2019516181A
Authority
JP
Japan
Prior art keywords
capability
bulk
metadata
data block
instruction
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.)
Granted
Application number
JP2018553940A
Other languages
English (en)
Other versions
JP6975723B2 (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 JP2019516181A publication Critical patent/JP2019516181A/ja
Application granted granted Critical
Publication of JP6975723B2 publication Critical patent/JP6975723B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • G06F16/2386Bulk updating operations
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/28DMA

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

データ・ブロックを記憶するための記憶素子を備える装置が提供され、各々のデータ・ブロックは、そのデータ・ブロックに関連付けられた、そのデータ・ブロックがケイパビリティを指定しているかどうかを識別するケイパビリティ・メタデータを有し、少なくとも1つのケイパビリティ・タイプは有界ポインタである。次に、複数の記憶素子を識別するバルク・ケイパビリティ・メタデータ操作に応答するように処理回路が配置され、複数の記憶素子に記憶されている各々のデータ・ブロックに関連付けられたケイパビリティ・メタデータに対する操作を実施する。したがってこれは、指定された単一の操作を介して、複数のケイパビリティ・メタデータに対する問合せ及び/又は修正操作の実施を可能にし、したがってこのようなケイパビリティ・メタデータに対するより有効なアクセスを提供する。

Description

本技法は、ケイパビリティ・メタデータ(capability metadata)に対する操作を実施するための装置及び方法に関する。
特定のケイパビリティが所与のプロセスに対して定義され、定義されたケイパビリティ外の操作を実行しようと試みられた場合エラーをトリガすることができるケイパビリティ・ベース・アーキテクチャの関心が高まっている。ケイパビリティは様々な形態を取ることができるが、ケイパビリティの1つのタイプは有界ポインタ(bounded pointer)である(「ファット・ポインタ」と呼ぶことも可能である)。有界ポインタの場合、ポインタ値は、例えばアクセスされるデータ値又は実行される命令のアドレスを識別することができるか、又はこのポインタ値を使用してこれらのアドレスを決定することができる。しかしながらポインタ値は、ポインタ値を使用する際にアドレスの許容可能範囲を示す関連する範囲情報を有することも可能である。これは、例えばポインタから決定されるアドレスが特定の境界内に留まって挙動の安全性又は機能的適切性を維持することを保証するために有用であり得る。さらに、有界ポインタのポインタ値と関連して特定の許可/制限情報を指定することができる。有界ポインタのための範囲情報及び何らかの許可/制限情報はケイパビリティ情報と呼ぶことができ、ケイパビリティ・ベース・アーキテクチャにおいては、このような有界ポインタ(その関連するケイパビリティ情報を含む)はケイパビリティと呼ぶことができる。
ケイパビリティ・ベース・アーキテクチャにおいては、装置の記憶素子に記憶されている個々のデータ・ブロックと関連してケイパビリティ・メタデータを記憶することが知られている。ケイパビリティ・メタデータを使用して、関連するデータ・ブロックがケイパビリティを指定しているかどうか、又はその代わりにケイパビリティを表さないデータ(本明細書においては汎用データとも呼ばれる)を含んでいるかどうかを識別することができる。望ましい場合、ケイパビリティ・メタデータは特定の追加情報を指定することも可能である。
個別のデータ・ブロックにアクセスする場合、データ・ブロックがケイパビリティを表しているか、又は汎用データを表しているかどうかを決定するために関連するケイパビリティ・メタデータを参照することができる。しかしながらケイパビリティ・ベース・アーキテクチャを使用しているシステム内のケイパビリティ・メタデータにアクセスし、且つ、取り扱うための改良された機構を提供することが望ましいであろう。
第1の実例の構成では、データ・ブロックを記憶するための記憶素子であって、各々のデータ・ブロックが、そのデータ・ブロックに関連付けられた、データ・ブロックがケイパビリティを指定しているかどうかを識別するケイパビリティ・メタデータを有し、少なくとも1つのケイパビリティ・タイプが有界ポインタである、記憶素子と、複数の記憶素子を識別するバルク・ケイパビリティ・メタデータ操作に応答して、複数の記憶素子に記憶されている各々のデータ・ブロックに関連付けられたケイパビリティ・メタデータに対する操作を実施する処理回路と、を備える装置が提供される。
別の実例の構成では、データ・ブロックを記憶素子に記憶するステップであって、各々のデータ・ブロックが、そのデータ・ブロックに関連付けられた、データ・ブロックがケイパビリティを指定しているかどうかを識別するケイパビリティ・メタデータを有し、少なくとも1つのケイパビリティ・タイプが有界ポインタであるステップと、複数の記憶素子を識別するバルク・ケイパビリティ・メタデータ操作に応答して、複数の記憶素子に記憶されている各々のデータ・ブロックに関連付けられたケイパビリティ・メタデータに対する操作を処理回路に実施させるステップと、を含む、ケイパビリティ・メタデータに対する操作を実施する方法が提供される。
さらに他の実例の構成では、データ・ブロックを記憶するための記憶素子手段であって、各々のデータ・ブロックが、そのデータ・ブロックに関連付けられた、データ・ブロックがケイパビリティを指定しているかどうかを識別するケイパビリティ・メタデータを有し、少なくとも1つのケイパビリティ・タイプは有界ポインタである、記憶素子手段と、複数の記憶素子手段を識別するバルク・ケイパビリティ・メタデータ操作に応答して、複数の記憶素子手段に記憶されている各々のデータ・ブロックに関連付けられたケイパビリティ・メタデータに対する操作を実施するための処理手段と、を備える装置が提供される。
さらに他の実例の構成では、上で考察した第1の実例の構成による装置に対応するプログラム命令のための仮想計算機実行環境を提供するようにコンピュータを制御するためのコンピュータ・プログラムを非一時的形態で記憶するコンピュータ・プログラム製品が提供される。
本技法は、ほんの一例として、添付の図面に示されている本技法の実施例を参照してさらに説明される。
一実施例による装置のブロック図である。 有界ポインタ記憶素子のセット内のポインタ値を設定、又はこれにアクセスしようと試みられた場合エラーをトリガすることができる命令であって、そのポインタ値が、関連する範囲情報によって示される範囲の外のアドレスを指定するのに使用される命令のタイプの実例を示す。 一実施例による、有界ポインタに関連したタグ・ビットの使用を示す。 一実施例による、有界ポインタの形態を取るケイパビリティ内に提供される様々なフィールドを、関連するケイパビリティ・メタデータ情報と共に概略的に示す。 メモリ内の記憶素子上でバルク・タグ問合せ操作を実施するために、一実施例に従って提供することができる、ある命令内に提供されるフィールドを示す。 メモリ内の記憶素子上でバルク・タグ問合せ操作を実施するために、一実施例に従って提供することができる、別の命令内に提供されるフィールドを示す。 ある実施例による、キャッシュのキャッシュ・ライン内の各々のデータ・ブロックと関連してタグ・ビット(ケイパビリティ・メタデータの実例)を記憶することができる方法を示す。 別の実施例による、キャッシュのキャッシュ・ライン内の各々のデータ・ブロックと関連してタグ・ビット(ケイパビリティ・メタデータの実例)を記憶することができる方法を示す。 一実施例による、装置内のケイパビリティ・レジスタの形態を取る記憶素子上でバルク・タグ問合せ操作を実施するために使用される命令内に提供されるフィールドを概略的に示す。 メモリ内のメモリ・ロケーションの形態を取る記憶素子上でバルク・タグ修正操作を実施するために、一実施例に従って使用することができる命令のある形態内に提供されるフィールドを示す。 メモリ内のメモリ・ロケーションの形態を取る記憶素子上でバルク・タグ修正操作を実施するために、一実施例に従って使用することができる命令の別の形態内に提供されるフィールドを示す。 ケイパビリティ・レジスタの形態の記憶素子上でバルク・タグ修正操作を実施するために、一実施例に従って使用することができる命令内に提供されるフィールドを示す。 一実施例による、バルク・タグ問合せ操作を実施することによって獲得される被問合せタグ値、又はバルク・タグ修正操作中に適用されるタグ値の指示のいずれかを保持するように、汎用レジスタを埋めることができる、ある方法を示す。 一実施例による、バルク・タグ問合せ操作を実施することによって獲得される被問合せタグ値、又はバルク・タグ修正操作中に適用されるタグ値の指示のいずれかを保持するように、汎用レジスタを埋めることができる、別の方法を示す。 一実施例による、図9Aに示されているような汎用レジスタ内の情報が、バルク・タグ修正操作を実施している間、解釈され得る方法の4つの実例を概略的に示す。 一実施例による、バルク・タグ命令によって指定されたバルク・タグ操作を進めることが許可されるか否かを決定するために一実施例における処理回路によって実施することができるプロセスを示す流れ図である。 一実施例による、図11のステップ455を実現するために実施することができるステップを示す流れ図である。 一実施例による、図11のステップ455を実現するために実施することができるステップを示す流れ図である。 一実施例による、図11のステップ455を実現するために実施することができるステップを示す流れ図である。 一実施例による、ケイパビリティを認識する記憶素子とケイパビリティ非認識の補助記憶装置の間で転送されるケイパビリティに関する分解プロセスと再構成プロセスの両方を概略的に示す。 一実施例による、図13の分解プロセスを概略的に示す流れ図である。 一実施例による、図13のケイパビリティの再構成のプロセスを概略的に示す流れ図である。 代替実施例による、プロセッサ・パイプラインがバルク・タグ問合せ又は修正操作をDMA回路にオフロードして、DMA回路に一連のトランザクションを介してそのバルク・タグ問合せ又は修正操作を実現させる装置である。 一実施例による、装置の仮想計算機実施態様を概略的に示す。
添付の図を参照して実施例を考察する前に、実施例についての以下の説明が提供される。
既に言及したように、特定のケイパビリティが所与のプロセスに対して定義され、定義されたケイパビリティ外の操作を実行しようと試みられた場合エラーをトリガすることができるケイパビリティ・ベース・アーキテクチャの関心が高まっている。様々なタイプのケイパビリティを定義することができるが、ケイパビリティの1つのタイプは有界ポインタである(一実施例では、ポインタ値と関連する範囲及び許可情報の両方を組み込む)。このようなケイパビリティ・ベース・アーキテクチャを採用する装置は、典型的には、ケイパビリティを記憶するために使用される記憶素子(本明細書においては有界ポインタ記憶素子とも呼ばれる)を有することになる。記憶素子はレジスタ(本明細書においては有界ポインタ・レジスタ又はケイパビリティ・レジスタとも呼ばれる)であっても、及び/又は汎用メモリ中のメモリ・ロケーション、例えばスタックメモリ上の場所であってもよい。所望のケイパビリティにアクセスし、且つ、そのケイパビリティに依存している操作を実施するために、特定の命令を使用してこのような記憶素子を参照することができる。例えば有界ポインタを考えると、このような命令を実行することにより有界ポインタを回収することができ、次にその中のポインタ値を使用して、命令を実行している間に要求されるメモリ内のアドレスを導出することができる。ポインタ値を直接使用してメモリ・アドレスを識別することができ、或いはポインタ値を使用して、例えばポインタ値へのオフセットの追加によってメモリ・アドレスを導出することができる。次に、メモリ・アドレスが範囲情報によって指定された範囲内であり、且つ、許可情報中で指定されたすべての許可が合致することを条件として操作を進めることが許可されることになる。
ケイパビリティ・メタデータは、データ・ブロックがケイパビリティを表しているかどうか、又はその代わりに汎用データを表しているかどうかを識別するために、記憶素子に記憶されている個々のデータ・ブロックと関連して提供することができる。本明細書において説明される実施例によれば、装置は、バルク・ケイパビリティ・メタデータ操作を実施して、複数の記憶素子に関連付けられたケイパビリティ・メタデータのバルク問合せ及び/又は修正を許可するように配置される。
より詳細には、一実施例では、データ・ブロックを記憶するための記憶素子を備える装置が提供され、個々のデータ・ブロックは、そのデータ・ブロックに関連付けられた、前記データ・ブロックがケイパビリティを指定しているかどうかを識別するケイパビリティ・メタデータを有し、少なくとも1つのケイパビリティ・タイプは有界ポインタである。処理回路は、次に、複数の前記記憶素子を識別するバルク・ケイパビリティ・メタデータ操作に応答して、複数の記憶素子に記憶されている個々のデータ・ブロックに関連付けられたケイパビリティ・メタデータに対する操作を実施する。
説明される実施例によれば、特定のケイパビリティ・メタデータ及び/又は関連するデータ・ブロックをターゲットにした操作に応答して個別のケイパビリティ・メタデータにアクセスするのではなく、バルク・ケイパビリティ・メタデータ操作を指定して複数の記憶素子を識別することができる。処理回路は、次に、このようなバルク・ケイパビリティ・メタデータ操作に応答して、複数の記憶素子に記憶されている個々のデータ・ブロックに関連付けられたケイパビリティ・メタデータに対する操作を実施することができる。バルク・ケイパビリティ・メタデータ操作は、複数のケイパビリティ・メタデータを直接ターゲットにしており、操作中に関連するデータ・ブロックにアクセスする必要はない。したがってこれは、その関連するケイパビリティ・メタデータがアクセスされる複数の記憶素子を識別する単一のバルク要求に応答して、複数のケイパビリティ・メタデータに対する操作を実施するためのとりわけ有効な機構を提供する。
このような操作は様々な状況において有用であり得る。例えば操作は、ケイパビリティ認識記憶素子とケイパビリティ非認識補助記憶装置の間でメモリをページングする場合、又は固有ケイパビリティ・サポートが不足しているネットワーク内で仮想計算機を移行させる場合に有用であり得る。バルク・ケイパビリティ・メタデータ操作を提供することにより、このような操作の効率及び性能を著しく改善することができる。
バルク・ケイパビリティ・メタデータ操作は様々な形態を取ることができるが、一実施例ではバルク問合せ操作であり、処理回路は、バルク問合せ操作に応答して、複数の前記記憶素子に記憶されている個々のデータ・ブロックに関連付けられたケイパビリティ・メタデータを獲得し、且つ、獲得したケイパビリティ・メタデータを含む出力データを生成する。したがってこのようなバルク問合せ操作を実施する場合、識別された複数の記憶素子に関連する様々なケイパビリティ・メタデータが回収され、且つ、1つに集められて出力データを形成する。次に、様々な目的のために出力データを使用することができ、例えば汎用レジスタに出力データを書き込むことができ、汎用レジスタから出力データを補助記憶装置などのケイパビリティ非認識実体に書き出すことができ、或いは実際にいくつかの実施例では、このような補助記憶装置に出力データを直接書き込むことができる。
しかしながらバルク・ケイパビリティ・メタデータ操作はバルク問合せ操作である必要はない。代替実施例では、バルク・ケイパビリティ・メタデータ操作はバルク修正操作であり、処理回路は、バルク修正操作に応答して、バルク修正操作のために指定された修正データに基づいて、前記複数の前記記憶素子に記憶されている個々のデータ・ブロックに関連付けられたケイパビリティ・メタデータを修正する。したがってこのような実施例では、修正データを指定することができ、次にこの修正データを使用して、識別された複数の記憶素子の各々に関連付けられたケイパビリティ・メタデータが選択的に更新され、したがって識別された単一の操作に応答して複数のケイパビリティ・メタデータを更新するための極めて有効な機構を提供する。
バルク修正操作は様々な形態を取ることができる。一実施例では、バルク修正操作は、複数の記憶素子に記憶されている個々のデータ・ブロックに関連付けられたケイパビリティ・メタデータをセットして、個々のデータ・ブロックがケイパビリティを指定していることを識別することができ、或いは別法として個々のデータ・ブロックに関連付けられたケイパビリティ・メタデータをクリアして、個々のデータ・ブロックがケイパビリティ以外のデータ(本明細書においては汎用データとも呼ばれる)を指定していることを識別することができる。
代替実施例では、修正データは、バルク修正プロセスによってアクセスされるケイパビリティ・メタデータ毎に、そのケイパビリティ・メタデータに関して実施されることになる修正を識別することができる。したがってこのような実施例では、個々のケイパビリティ・メタデータに関して同じ修正を実施する必要はないが、その代わりにより細かい細分性で修正を指定することができる。
一実施例では、修正データは、以下の修正、即ち(i)ケイパビリティ・メタデータをセットして、関連するデータ・ブロックがケイパビリティを指定していることを識別する、(ii)ケイパビリティ・メタデータをクリアして、関連するデータ・ブロックがケイパビリティ以外のデータを指定していることを識別する、及び(iii)ケイパビリティ・メタデータを不変のままにする、のうちの少なくとも2つのうちの1つを識別するバルク修正操作によってアクセスされるケイパビリティ・メタデータ毎に修正値を提供する。このような手法は、個別のケイパビリティ・メタデータがバルク修正プロセスの間に更新される方法に関して著しい柔軟性を提供する。
いくつかの実施例では、バルク・ケイパビリティ・メタデータ操作は無条件で実施することができるが、代替実施例では、処理回路は、条件が合致することを条件としてバルク・ケイパビリティ・メタデータ操作を実施するように配置することができる。バルク・ケイパビリティ・メタデータ操作の実施を条件付きにすることを可能にすることにより、これはプロセスの安全性を強化することができる。例えば、とりわけバルク修正操作を考えると、複数の記憶素子のためのケイパビリティ・メタデータを修正する能力は強力なツールであり、このようなバルク修正を実施する能力をある特定のシナリオに強制することが望ましいことがあり得ることは認識されよう。
例えば一実施例では、以下の条件、即ち(i)処理回路が所定の特権状態で動作している、(ii)処理回路が所定の特権状態で動作している場合に設定することができる構成記憶素子が、バルク・ケイパビリティ・メタデータ操作が許可されることを示す値を有している、(iii)バルク・ケイパビリティ・メタデータ操作を指定している要求がバルク操作ケイパビリティを識別し、且つ、バルク・ケイパビリティ・メタデータ操作が許可されることをバルク操作ケイパビリティが示している、のうちの少なくとも1つが真である場合、条件が合致したことを決定することができる。このような手法により、必要に応じてバルク・ケイパビリティ・メタデータ操作を実施することができるシナリオを有効に強制することが可能である。
そのケイパビリティ・メタデータがバルク・ケイパビリティ・メタデータ操作によって取り扱われる記憶素子は様々な形態を取ることができる。例えば記憶素子は、一実施例では、処理回路にアクセスすることができるメモリ・ロケーションであってもよい。
一実施例では、有界ポインタを参照することによって複数のメモリ・ロケーションを指定することができ、処理回路は、複数のメモリ・ロケーションが有界ポインタによって識別されたアドレスの許容可能な範囲内に存在していることが決定されると、バルク・ケイパビリティ・メタデータ操作を実施するように配置される。したがってバルク・ケイパビリティ・メタデータ操作の実施が例えば既に考察した技法のうちの任意の技法を使用して条件付きにされるかどうかに無関係に、有界ポインタをも使用してメモリ・ロケーションが指定される場合、その関連するケイパビリティ・メタデータがバルク・ケイパビリティ・メタデータ操作によって取り扱われる複数のメモリ・ロケーションが、有界ポインタによって識別されたアドレスの許容可能な範囲内に存在することを保証することによって追加レベルのチェックを実施することができる。
いくつかのバルク・ケイパビリティ・メタデータ操作はメモリ・ロケーションに関して実現することができるが、代替実施例では、或いは追加として、処理回路にアクセスすることができるケイパビリティ・レジスタに関連付けられたケイパビリティ・メタデータに関して特定のバルク・ケイパビリティ・メタデータ操作を適用することも可能である。このようなケイパビリティ・レジスタは、ケイパビリティ、例えば既に言及した有界ポインタを記憶するように配置することができ、個々のケイパビリティ・レジスタは、個々のケイパビリティ・レジスタに関連付けられた、そのケイパビリティ・レジスタの現在の内容が実際にケイパビリティを表しているかどうか、又はその代わりに汎用データとして扱われるかどうかを識別するためのケイパビリティ・メタデータを有することになる。
バルク・ケイパビリティ・メタデータ操作を指定することができる多くの方法が存在している。しかしながら一実施例では、単一の命令を使用して個々のバルク・ケイパビリティ・メタデータ操作が指定される。例えば一実施例では、装置は、一連の命令に応答して処理回路に発行するための制御信号を生成し、前記一連の命令によって要求される操作を処理回路に実施させる復号回路をさらに備えることができる。復号回路は、バルク・ケイパビリティ・メタデータ命令を受け取ったことに応答して、前記バルク・ケイパビリティ・メタデータ命令によって要求されるバルク・ケイパビリティ・メタデータ操作を処理回路に実施させるために、処理回路に発行するための制御信号を生成するように配置することができる。したがって処理回路は、例えば、復号された命令によって要求される操作を実施するために復号回路によって生成される制御信号に応答するプロセッサ・コアであってもよい。復号回路がバルク・ケイパビリティ・メタデータ命令を復号すると、処理回路は、結果として得られる生成された制御信号に応答して、要求されるバルク・ケイパビリティ・メタデータ操作を実施することになる。このような手法は、単一の命令による、メモリ・ロケーション又はレジスタのいずれかであってもよい識別された複数の記憶素子に関連付けられた複数のケイパビリティ・メタデータに対して実施されるバルク問合せ及び/又は修正操作の指定を可能にすることにより、有意な性能及び符号密度利点を提供することができることは認識されよう。
そのケイパビリティ・メタデータがバルク・ケイパビリティ・メタデータ操作によってアクセスされ/取り扱われることになる複数の記憶素子を命令内で指定することができる多くの方法が存在している。例えば一実施例では、記憶素子はメモリ・ロケーションであり、バルク・ケイパビリティ・メタデータ命令は、その関連するケイパビリティ・メタデータがバルク・ケイパビリティ・メタデータ操作の対象になることになるメモリ・ロケーションの連続したシリーズを識別するアドレスを提供するレジスタを指定する。レジスタによって指定されるアドレスは様々な形態を取ることができるが、一実施例では例えば開始アドレスであってもよい。
連続したシリーズ中のメモリ・ロケーションの数を識別することができる様々な方法が存在している。例えば一実施例では、バルク・ケイパビリティ・メタデータ命令は、連続したシリーズ中のメモリ・ロケーションの数を識別するフィールドを含むことができる。したがってこのような例では、命令は、バルク・ケイパビリティ・メタデータ操作の対象になることになるメモリ・ロケーションの数を明確に識別することができる。
メモリ・ロケーションの数を識別するフィールドは様々な形態を取ることができる。例えばフィールドは、連続したシリーズ中のメモリ・ロケーションの数を示す値を含むレジスタに対する参照を提供することができる。別法として、連続したシリーズ中のメモリ・ロケーションの数を直接示す即値をフィールドの中で指定することも可能である。
代替実施例では、バルク・ケイパビリティ・メタデータ命令が連続したシリーズ中のメモリ・ロケーションの数を明確に識別することが要求されない場合がある。例えば一実施例では、メモリ・ロケーションのその数は装置の特性から暗黙的であり得る。メモリ・ロケーションの数を定義する装置の特性は様々な形態を取ることができるが、一実施例では特性は、処理回路にアクセスすることができるキャッシュのキャッシュ・ライン長である。このような手法は、例えばプロセッサのデータ・キャッシュの構造の利用を可能にすることになる。詳細には、このようなキャッシュがキャッシュ・ライン中に位置している個々のデータ・ブロックのためのケイパビリティ・メタデータを使用してキャッシュ・ライン情報を強化する場合、このような命令の使用を通してこのようなケイパビリティ・メタデータに対する管理操作を加速する可能性が存在することになり、これは、例えばケイパビリティ認識メモリ・システムと補助記憶装置の間、又はその逆の間でケイパビリティを移動させるために使用されるページング・コードの最適化に有用であり得る。
一実施例では、バルク・ケイパビリティ・メタデータ命令は、複数の記憶素子としてケイパビリティ・レジスタを識別する。このような実施例では、バルク・ケイパビリティ・メタデータ命令は、その関連するケイパビリティ・メタデータがバルク・ケイパビリティ・メタデータ操作の対象になることになるケイパビリティ・レジスタを識別するレジスタ識別子フィールドを含むことができ、前記レジスタ識別子フィールドは、ケイパビリティ・レジスタを識別するために即値及びレジスタ識別子のうちの少なくとも1つを提供する。複数のケイパビリティ・レジスタに関連付けられたケイパビリティ・メタデータに対するこのようなバルク操作を実施する場合、典型的には、レジスタをレジスタの連続したシーケンスにする要求事項は存在しないことになり、したがって個別のレジスタが識別される方法に関して著しい柔軟性が存在する。例えばマスク値を使用して、即値として、又はマスク値を含むレジスタを参照して、関連するレジスタを識別することが可能である。別法として、ベース・レジスタ識別子とカウント値の組合せを使用してレジスタを識別することも可能であり、ベース・レジスタ識別子又はカウント値のいずれかが汎用レジスタを参照して指定され、ベース・レジスタ識別子及びカウント値以外は、例えば即値によって指定される。
バルク・ケイパビリティ・メタデータ命令は様々な形態を取ることができる。一実施例では、バルク・ケイパビリティ・メタデータ命令はバルク問合せ命令の形態を取り、処理回路は、バルク問合せ命令を復号する際に復号回路によって生成される制御信号に応答してバルク問合せ操作を実施するように配置される。バルク問合せ命令は宛先レジスタを識別することができ、処理回路は、バルク問合せ操作に応答して、複数の前記記憶素子に記憶されている個々のデータ・ブロックに関連付けられたケイパビリティ・メタデータを獲得し、且つ、宛先レジスタに記憶するために、獲得したケイパビリティ・メタデータを含む出力データを生成する。したがって単一の命令に応答して、複数の記憶素子に関連付けられたケイパビリティ・メタデータを1つに集めて単一の宛先レジスタ内に記憶することができる。
いくつかの例では、バルク・ケイパビリティ・メタデータ命令はバルク修正命令であってもよく、処理回路は、バルク修正命令を復号する際に復号回路によって生成される制御信号に応答してバルク修正操作を実施するように配置される。バルク修正命令は、修正データを識別する出所フィールドを識別することができ、処理回路は、バルク修正操作に応答して、出所フィールドによって識別された修正データに基づいて、複数の前記記憶素子に記憶されている個々のデータ・ブロックに関連付けられたケイパビリティ・メタデータを修正する。
出所フィールドは、様々な方法で修正データを識別することができる。例えば出所フィールドは、修正データを識別するために即値及び/又はレジスタ識別子を提供することができる。一実施例では、記憶素子がメモリ・ロケーションである場合、汎用レジスタは、修正データを含むことが識別される。しかしながら記憶素子がケイパビリティ・レジスタである場合、一実施例では、修正データを識別するために即値及びレジスタ識別子のうちのいずれか又は両方を指定することができる。さらに他の実施例では、記憶素子がメモリ・ロケーションである場合、即値及びレジスタ識別子のうちのいずれか又は両方を使用して修正データを識別することができる。
処理回路がバルク問合せ操作をバルク・ケイパビリティ・メタデータ操作として実施するように配置される一実施例では、処理回路は、ケイパビリティ非認識記憶デバイスに記憶するために、獲得したケイパビリティ・メタデータを含むデータを出力するようにさらに配置することができる。処理回路は、ケイパビリティ非認識記憶デバイスに記憶するためにそのデータを直接出力することができ、或いは最初にその出力データを汎用レジスタに記憶することができ、汎用レジスタからその出力データをケイパビリティ非認識記憶デバイス上に送ることができる。
処理回路がバルク修正操作をバルク・ケイパビリティ・メタデータ操作として実施するように配置される一実施例では、使用される修正データはケイパビリティ非認識記憶デバイスから獲得することができる。一実施例では、修正データはケイパビリティ非認識記憶デバイスから直接獲得することができるが、代替実施例では、修正データは最初にケイパビリティ非認識記憶デバイスから汎用レジスタに書き込むことができ、次にバルク修正操作を実施している間、汎用レジスタから修正データが処理回路によって参照される。
処理回路が関連する復号回路によって復号される命令を実行するプロセッサ・コアである代替として、処理回路は、代替実施例では直接メモリ・アクセス(DMA:direct memory access)回路であってもよい。このような実施例では、プロセッサ・コアによってバルク・ケイパビリティ・メタデータ操作を指定し、DMA回路に1つ又は複数のトランザクションを発行させて、メモリ・ロケーションの連続したシリーズ上でバルク・ケイパビリティ・メタデータ操作を実現することができる。したがってこのような実施例では、プロセッサ・パイプラインがメモリに対するアクセスを有し、メモリもまたDMA回路にアクセスすることができる場合、プロセッサ・パイプラインはバルク・ケイパビリティ・メタデータ操作をDMA回路にオフロードすることができ、DMA回路は、次に、要求された操作をDMA回路と関連するメモリ・ロケーションとの間の一連のトランザクションを介して実現する。したがってこのような実施例では、バルク・ケイパビリティ・メタデータ操作はバス・プロトコル・レベルとして効果的に表現され、メモリの領域に関連する一組のケイパビリティ・メタデータへのDMA回路によるアクセス/取扱いを許容する。
次に特定の実施例について、図を参照して説明する。
図1は、命令を処理するための処理パイプライン4を備えるデータ処理装置2の実例を概略的に示したものである。この実例では、処理パイプライン4は、フェッチ段6、復号段8、発行段10、実行段12及びライト・バック段14を含む多数のパイプライン段を含むが、段の他のタイプ又は組合せを提供することができることは認識されよう。いくつかの実施例では、例えばレジスタ改名を実施するための改名段を含むことも可能である。処理される命令は段から段へ移動し、ある命令が1つの段で保留中である間、別の命令は、パイプライン4の異なる段で保留中であってもよい。
フェッチ段6は、レベル1(L1)命令キャッシュ20から命令を取り込む。フェッチ段6は、通常、連続する命令アドレスから命令を逐次取り込むことができる。しかしながらフェッチ段は、分岐命令の結果を予測するための分岐予測器22を有することも可能であり、フェッチ段6は、分岐がとられると予測されると、(非逐次)分岐ターゲット・アドレスから命令を取り込むことができ、或いは分岐がとられないと予測されると、次の逐次アドレスから命令を取り込むことができる。分岐予測器22は、特定の分岐がとられる可能性が高いか否かを予測するための情報を記憶するための1つ又は複数の分岐履歴テーブルを含むことができる。例えば分岐履歴テーブルは、その前に実行された分岐の実際の結果を追跡するための、或いは分岐のためになされた予測の確信を表すためのカウンタを含むことができる。分岐予測器22は、分岐命令のその前のターゲット・アドレスをキャッシュするための分岐ターゲット・アドレス・キャッシュ(BTAC:branch target address cache)24を含むことも可能であり、したがってこれらを同じ分岐命令の後続するターゲット・アドレス上で予測することができる。
取り込まれた命令は、命令を復号して復号された命令を生成する復号段8に引き渡される。復号された命令は、実行段12を制御して適切な処理操作を実行するための制御情報を含むことができる。キャッシュ20から取り込まれるいくつかのもっと複雑な命令に対して、復号段8は、これらの命令を複数の復号された命令にマップすることができ、これはマイクロ操作(μ操作又はu操作)として知られているものと思われる。したがって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は、一組のレジスタ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に存在しない場合、L2キャッシュ44からデータを取り込むことができ、必要に応じてメモリ50からデータを取り込むことができる。任意の知られているスキームを使用してキャッシュ階層を管理することができる。
プログラム命令及びデータ値を参照するためにパイプライン4によって使用されるアドレスは仮想アドレスであってもよいが、少なくとも主メモリ50及び任意選択で少なくともいくつかのレベルのキャッシュ階層は物理的にアドレス指定することもできる。したがってトランスレーション・ルックアサイド・バッファ52(TLB:translation lookaside buffer)は、パイプライン4によって使用される仮想アドレスをキャッシュ又はメモリにアクセスするために使用される物理アドレスに翻訳するために提供することができる。例えばTLB52は、仮想アドレス空間の対応するページの仮想ページ・アドレス、及び対応するページ内の仮想アドレスを物理アドレスに翻訳するために仮想ページ・アドレスがマップされるべき対応する物理ページ・アドレスを個々に指定する多数のエントリを含むことができる。例えば仮想アドレスを物理アドレスにマッピングする場合、仮想及び物理ページ・アドレスは、対応する仮想及び物理アドレスの最も重要な部分に対応し、残りの最も重要ではない部分は不変のままにし得る。アドレス翻訳情報と同様、個々のTLBエントリも、アドレスの特定のページがパイプライン4の特定のモードでアクセス可能であるかどうかの指示などのアクセス許可を指定するいくつかの情報をも含むことができる。いくつかの実施例では、TLBエントリは、アドレスの対応するページの他の特性、例えば読出し又は書込み操作に応答して更新されるキャッシュ階層のレベルを定義するキャッシュ・ポリシー情報(例えばキャッシュがライト・バック・モード又はライト・スルー・モードで動作するべきかどうか)、又はデータ・アクセスがパイプライン4によって発行された順序と比較して、対応するページ内のアドレスへのデータ・アクセスをメモリ・システムによって整理し直すことができるかどうかを定義する情報などをも定義することができる。
図1は単一レベルTLB52を示しているが、TLBの階層は、レベル1(LI)TLB52が多数の新しくアクセスされたページ内のアドレスを翻訳するためのTLBエントリを含ことができるように提供することができ、レベル2(L2)TLBは、より多くのページのためのエントリを記憶するために提供することができることは認識されよう。要求されたエントリがL1TLBに存在しない場合、L2TLBからエントリを取り込むことができ、或いは階層中の他のTLBから取り込むことができる。アクセスされるページのための要求されたエントリがどのTLBにも存在しない場合、ページ・テーブル・ウォークを実施してメモリ50内のページ・テーブルにアクセスすることができる。この技法には任意の知られているTLB管理スキームを使用することができる。
また、いくつかのシステムは複数のレベルのアドレス翻訳をサポートすることができ、したがって例えば第1のTLB(又はTLBの階層)を使用して仮想アドレスを中間アドレスに翻訳することができ、1つ又は複数の他のTLBを使用する第2のレベルのアドレス翻訳は、次に、中間アドレスをキャッシュ又はメモリにアクセスするために使用される物理アドレスに翻訳することができることも認識されよう。これは、例えばオペレーティング・システムによって第1のレベルのアドレス翻訳を管理することができ、ハイパーバイザによって第2のレベルのアドレス翻訳を管理することができる仮想化をサポートするために有用であり得る。
図1に示されているように、装置2は、一組の有界ポインタ・レジスタ60を有することができる。その一組の有界ポインタ・レジスタは、図1では一組の汎用データ・レジスタ40とは物理的に個別のものとして示されているが、一実施例では、同じ物理記憶装置を使用して、汎用データ・レジスタ及び有界ポインタ・レジスタの両方を提供することができる。
個々の有界ポインタ・レジスタ60は、アクセスされるデータ値のアドレスを決定するために使用することができるポインタ値62、及び対応するポインタ62を使用する際にアドレスの許容可能範囲を指定する範囲情報64を含む。有界ポインタ・レジスタ60は、ポインタの使用に対する1つ又は複数の制限/許可を定義することができる制限情報66(本明細書においては許可情報とも呼ばれる)を含むことも可能である。例えば制限66を使用して、ポインタ62を使用することができる命令のタイプ、又はポインタを使用することができるパイプライン4のモードを制限することができる。したがって範囲情報64及び制限情報66は、その範囲内でポインタ62の使用が許容されるケイパビリティを定義すると見なすことができる。定義されたケイパビリティ外のポインタ62を使用しようと試みられると、エラーをトリガすることができる。範囲情報64は、例えばポインタが特定の知られている境界内に留まり、感知可能情報又は安全保護情報を含み得るメモリ・アドレス空間の他の領域へ漂遊しないことを保証するために有用であり得る。汎用データ・レジスタ及び有界ポインタ・レジスタの両方のために同じ物理記憶装置が使用される実施例の場合、一実施例では、ポインタ値62は例えば対応する汎用レジスタのために使用される記憶位置と同じ記憶位置に記憶することができる。
図2は、許容可能範囲を使用してデータ又は命令に対する無許可アクセスを保護する命令のタイプの実例を示したものである。図2の一番上の部分に示されているように、特定の有界ポインタ・レジスタPR1は、所与のポインタ値62、及びこの実例では許容可能範囲の下部境界を画定する下部境界アドレス68、及び許容可能範囲の上部境界を画定する上部境界アドレス69を使用して指定されている範囲情報64を含む。例えば境界68、69は、アドレス80000〜81000の範囲を画定するために設定される。特定の命令が有界ポインタ・レジスタPR1を参照し、ポインタ62から決定されるアドレスがこの範囲外である場合、エラーをトリガすることができる。
例えば図2の部分Aに示されているように、いくつかのシステムでは、ポインタ・レジスタ60内のポインタ62の値を範囲情報64によって指定された範囲外の値に設定しようと試みられた場合エラーをトリガすることができる(ここではポインタがアドレスを直接指定することが仮定されている)。これは、ポインタ62が指定された範囲外の何らかの値を取ることを回避し、したがってポインタを使用したすべてのアクセスは、許容された範囲内に安全に存在していることが保証され得る。別法として、図2の部分Bに示されているように、ポインタ62のアドレスによって識別され、そのアドレスが指定された範囲外に存在する場合の位置へ命令がアクセスしようと試みるとエラーをトリガすることも可能である。したがって指定された範囲外の値へのポインタ62の設定を依然として許容することができるが、ポインタ・アドレス(又はポインタから導出されるアドレス)におけるデータ・アクセスが試みられると、アドレスが許容された範囲外に存在している場合、エラーをトリガすることができる。他のシステムは、図2の部分A及びBに示されている両方のタイプの命令に応答してエラーをトリガすることができる。
範囲情報64は異なる方法で設定することができる。例えば安全保護コード又はオペレーティング・システム或いはハイパーバイザは、所与のポインタのために許容される範囲を指定することができる。例えば命令設定アーキテクチャは、所与のポインタ62のための範囲情報64を設定又は修正するための多くの命令を含むことができ、これらの命令の実行は、特定のソフトウェア又は特定のモード或いはプロセッサ4の除外状態に制限することができる。範囲情報64を設定又は修正するための任意の知られている技法を使用することができる。
ポインタを参照する特定の命令を実行する際に実行段12で使用することができる一組の有界ポインタ記憶素子60に加えて、命令がレベル1命令キャッシュ20から取り込まれている際に、フェッチ段6でプログラム・カウンタ・ケイパビリティ(PCC:program counter capability)レジスタ80をも使用して同様の機能性を提供することができる。詳細には、プログラム・カウンタ・ポインタはフィールド82に記憶することができ、PCC80は、一組の有界ポインタ記憶素子60中のポインタの各々を使用して提供される範囲情報及び制限情報と同様、範囲情報84及び任意の適切な制限情報86をも提供する。
図3は、タグ・ビットを個別のデータ・ブロックと関連して使用して、これらのデータ・ブロックがケイパビリティ(即ち有界ポインタ及び関連する制限情報)を表しているかどうか、又は通常のデータを表しているかどうかを識別する方法を概略的に示したものである。詳細には、メモリ・アドレス空間110は、典型的には特定のサイズを有することになる一連のデータ・ブロック115を記憶することになる。単に実例による説明を目的として、この実例では、個々のデータ・ブロックは128ビットを含むことが仮定されている。個々のデータ・ブロック115と関連して、一実例では、タグ・ビットと呼ばれる、関連するデータ・ブロックがケイパビリティを表していることを識別するためにセットされ、関連するデータ・ブロックが通常のデータを表し、したがってケイパビリティとして扱われ得ないことを示すためにクリアされる単一ビットフィールドであるタグフィールド120が提供される。セット状態又はクリア状態と関連する実際の値は実施例に応じて様々であり得るが、単に実例による説明として、一実施例では、タグ・ビットが1の値を有している場合、それは、関連するデータ・ブロックがケイパビリティであることを示し、タグ・ビットが0の値を有している場合、それは、関連するデータ・ブロックが通常のデータを含んでいることを示すことは認識されよう。
ケイパビリティが図3に示されているケイパビリティ・レジスタ100などの有界ポインタ・レジスタ60(本明細書においてはケイパビリティ・レジスタとも呼ばれる)のうちの1つにロードされると、タグ・ビットはケイパビリティ情報と共に移動する。したがってケイパビリティがケイパビリティ・レジスタ100中にロードされると、ポインタ102、範囲情報104及び制限情報106(以下、許可情報と呼ばれる)は、ケイパビリティ・レジスタ中にロードされることになる。さらに、そのケイパビリティ・レジスタと関連して、又はケイパビリティ・レジスタ内の特定のビットフィールドとして、その内容がケイパビリティを表していることを識別するようにタグ・ビット108がセットされることになる。同様に、ケイパビリティがメモリにストア・バックされると、関連するタグ・ビット120が、ケイパビリティが記憶されているデータ・ブロックと関連してセットされることになる。このような手法によれば、ケイパビリティと通常のデータとを区別することができ、したがって通常のデータがケイパビリティとして使用され得ないことを保証することができる。
図3では、タグ・ビットを含むタグフィールドが参照されているが、より一般的な実施例では、タグ・ビットは、個々のケイパビリティと結合することができるケイパビリティ・メタデータの実例である。したがって図4に示されているように、システムの記憶素子に記憶されているケイパビリティ150(ケイパビリティ・レジスタ60又はメモリ・アドレス空間110内のメモリ・ロケーションのうちの1つであろうとなかろうと)は、ケイパビリティ150に関連付けられたケイパビリティ・メタデータ155を有することができる。ケイパビリティ・メタデータは、関連するデータ・ブロック150が実際にケイパビリティを表しているかどうか、又はその代わりに汎用データとして解釈すべきかどうかを識別することになり、一実施例では、その情報は、ケイパビリティ・メタデータ155内のタグ・ビットとして符号化されることになる。ケイパビリティ・メタデータは、一実施例ではタグ・ビットのみを含むことができるが、代替実施例では、必要に応じて追加情報を含むことも可能である。例えばデータのタイプはさらに細分することができ、ケイパビリティ・メタデータは、例えば特定の特権レベル、細粒度化された許可、例えば読出しのみ、等々による所有権を示す。
ケイパビリティは様々な形態を取ることができるが、図4に示されている実施例ではケイパビリティは有界ポインタである。示されているように、有界ポインタは、ポインタ値160、範囲情報165及び許可属性170で構成されている。範囲情報及び許可属性は、集合的に有界ポインタの属性と呼ぶことができる。
一実施例では、図1に示されている実行パイプライン12は、識別された複数の記憶素子上でバルク・ケイパビリティ・メタデータ操作を実施するために命令を実行するように配置され、識別された複数の記憶素子に記憶されている個々のデータ・ブロックに関連付けられたケイパビリティ・メタデータに対する操作が実施されることになる。バルク・ケイパビリティ・メタデータ操作は様々な形態を取ることができる。例えばバルク・ケイパビリティ・メタデータ操作の一形態はバルク問合せ操作であってもよいが、バルク・ケイパビリティ・メタデータ操作の別の実例形態はバルク修正操作であってもよい。
図5A及び5Bは、メモリ・システム内の一連のメモリ・ロケーションに関連付けられたケイパビリティ・メタデータに対してバルク問合せ操作を実施するために、実行段12によって実行することができる2つの異なるタイプの命令内に提供することができるフィールドを示したものである。これらのメモリ・ロケーションは、図1に示されているメモリ50内に存在していても、或いはキャッシュ36、44のレベルのうちの1つに存在していてもよい。
図5Aに示されているように、一連の制御信号を生成するために復号段8によって復号するために、CQueryTagsM命令と呼ばれる命令を図1のレベル1命令キャッシュ20を介して取り込むことができ、これらの一連の制御信号は、引き続いて実行段12を制御して、命令によって識別された複数のデータ・ブロックに関連付けられた複数のタグ・ビットに対して問合せ操作を実施することになる(この実施例では、例えば図3を参照して既に考察したように、個々のケイパビリティ・メタデータはタグ・ビットを含むことが仮定されている)。図5Aに示されているように、演算コードフィールド205は、命令をCQueryTagsM命令として識別する。フィールド210を使用してアドレスが識別され、このアドレスから、そのタグ・ビットが問い合わされることになる複数のメモリ・ロケーションを決定することができる。一実施例では、そのアドレスは、一連のメモリ・ロケーションのための開始アドレスであり、その開始アドレスは、ケイパビリティ・レジスタ60のうちの1つ、又は汎用レジスタ40のうちの1つのいずれかの中で指定することができ、フィールド210は、そのレジスタのための識別子を含む。一実施例では、アドレスは、ケイパビリティメモリ・ロケーション、即ち図3のメモリ・アドレス空間110内に示されているデータ・ブロック115のうちの1つの開始に整列されることになる。代替実施例では、整列した方法で開始アドレスを指定する要求事項は存在しないこともあり、その代わりに指定されたアドレスを整列させないすべてのビットは無視することができ、したがってフィールド210の中で指定されたアドレスを整列したアドレスに効果的に変換することができる。
図5Aの命令の実例では、そのタグ・ビットが問い合わされるメモリ・ロケーションの数がフィールド215の使用を通して命令内で明確に定義される。一実施例では、フィールド215は、問い合わされることになるタグの数をその内容が識別する汎用レジスタを識別することができる。別法として、即値をフィールド215内で指定して、問い合わされることになるタグの数を直接識別することも可能である。
次に、汎用レジスタ40を識別するために他のフィールド220が提供され、このフィールド220の中に問合せ結果が出力されることになる。したがって識別されたメモリ・ロケーションの各々のためのタグ・ビットを回収するために一連の操作を実行段12が実施すると、次にこれらのタグ・ビットがまとめて出力データ値中に照合され、この出力データ値が出力されて汎用レジスタ40のうちの1つに記憶される。
望ましい場合、命令200内で(また、実際、本明細書において説明されている任意の命令内で)、ソース・レジスタのうちの1つを宛先レジスタと同じになるように指定することができる。したがって例えば汎用レジスタがフィールド215の中に指定されて、問い合わされることになるタグの数を識別する場合、問合せ結果が書き込まれるレジスタになるようにその同じ汎用レジスタを指定することができる(例えばフィールド215、220を結合して単一のフィールドを形成することができる)。これは、命令の符号化空間要求事項に対する強制を低減することができる。
図5Aの命令200の実例では、そのタグが問い合わされることになるメモリ・ロケーションの数を明確に設定することができるが、代替実施例では、その数は暗黙的であってもよく、したがって例えば命令が実行される装置の特性から導出することができる。図5Bにこのような命令の実例が示されており、「DC_CQueryTagsM」命令225が示されている。演算コード230は命令をDC_CQueryTagsM命令として識別するが、フィールド235は、図5Aの命令200内のフィールド210と同じ目的を果たし、したがってそのタグ・ビットが問い合わされることになる一連のメモリ・ロケーションのための開始アドレスを識別する。しかしながらこの実例では、問い合わせるタグの数を識別するための個別のフィールドは存在せず、その代わりにバルク問合せ操作中にアクセスされるタグの数は、図1に示されているレベル1データ・キャッシュ36などの関連するデータ・キャッシュのキャッシュ・ライン長から決定される(命令名に使用されている「DC」という用語には、これがバルク問合せ命令の一タイプであることを伝えることが意図されており、問合せタグの数はデータ・キャッシュのキャッシュ・ライン・サイズで決まる)。キャッシュ・ライン・サイズは、例えばプロセッサが利用することができるシステム・レジスタのうちの1つの中で指定することができる(参照数表示90によって図1に指示されている)。
一実施例では、フィールド235の中で指定された開始アドレスは、キャッシュ・ライン長細分性に整列され、その結果として、命令が実行されると、キャッシュ・ライン内に保持されているデータ・ブロックの各々に関連付けられたタグ・ビットが問い合わされ、且つ、次にフィールド240内に指定されている汎用レジスタ中に出力される出力値中に照合される。別法として、フィールド235の中で指定された開始アドレスがキャッシュ・ライン長細分性に整列されない場合、代替実施例では、アドレスを非整列にさせるアドレス内のビットは無視することができ、したがってアドレスを整列したアドレスに効果的に変換することができる。
図6A及び6Bは、個々のデータ・ブロックに関連付けられたタグ・ビットをデータ・キャッシュのデータRAM(ランダム・アクセス・メモリ(Random Access Memory))内の個々のキャッシュ・ラインのキャッシュ・ライン情報内に組み込むことができる2つの実例方法を示したものである。図6Aに示されている実例では、データRAM250は複数のキャッシュ・ライン255を含み、個々のキャッシュ・ラインは、複数のデータ・ブロック(例えば実例として図3に示されている複数の128ビット・データ・ブロック)を含む。図6Aに示されている実例では、個々のタグ・ビットは、個々のデータ・ブロックの終わりに加えられている(別法として、個々のタグ・ビットは、個々のデータ・ブロックの始めに存在させることも可能である)。したがって必要なタグ・ビット情報を組み込むべくキャッシュ・ラインの有効長が延長される。
図6Aに示されている実施例では、様々なタグ・ビットがそれらの対応するデータ・ブロックを使用して配置されているが、図6Bに示されている代替実例では、様々なタグ・ビットは、すべてデータRAM260の個々のキャッシュ・ライン265の最後の部分270の中に含まれている。したがって個々のキャッシュ・ライン中のデータ・ブロックは順々に加えられており、タグ・ビット情報はキャッシュ・ラインの終わりで照合される(代替実施例では、タグ・ビット情報は、キャッシュ・ライン内の任意の適切なポイントで照合することができ、例えばキャッシュ・ラインの始まりで照合することができることは認識されよう)。図6A及び6Bは、タグ・ビット情報をキャッシュ・ライン・コンテンツ内に含むことができる単なる2つの実例配置にすぎないこと、任意の他の適切なスキームを採用することができることは認識されよう。
図5A及び5Bに示されている命令には、一連のメモリ・ロケーションに関連付けられたタグ・ビットに対して操作することが意図されているが、装置は、バルク・タグ問合せ操作を実施するためにケイパビリティ・レジスタに対して操作する命令の実行をサポートすることも可能である。図7にこのような命令の1つが示されており、とりわけ命令CQueryTagsR300が指定されており、この命令CQueryTagsR300は、一連のケイパビリティ・レジスタに関連する複数のタグ・ビットの問合せを実施するように配置されている(これらの命令がメモリ・ロケーションに関して操作していることを示す図5A及び5Bの命令の末尾の「M」の述語と対照してみると、命令の末尾の「R」の述語は、それがケイパビリティ・レジスタに対して操作していることを指示している)。
フィールド305は、命令をCQueryTagsR命令として識別する演算コードを含む。次に、フィールド310を使用して、そのタグ・ビットが問い合わされることになる複数のケイパビリティ・レジスタが識別される。その複数のケイパビリティ・レジスタがフィールド310内で識別される方法は実施例によって様々である。例えばそれらの複数のケイパビリティ・レジスタは、問い合わされることになる複数のレジスタをその内容が識別する汎用レジスタを参照して識別することができ、或いはフィールド310内に特に組み込まれた即値によって識別することができる。実際、汎用レジスタと即値の組合せを使用して、問い合わされることになるレジスタを指定することができる。
図7の下半分にフィールド310内のレジスタを識別する2つの実例方法が概略的に示されている。第1の実例では、例えば汎用レジスタの内容又は即値のいずれかによって指定することができるマスク値320が提供される。マスク値を使用して、問い合わされることになるレジスタを直接識別することができる。例えばマスク値の個々のビットは、レジスタ・ファイル内の1つのレジスタに対応することが可能であり、そのビットがセットであるか又はクリアであるかどうかが、そのレジスタがそのタグ・ビットを問い合わさせることになるかどうかを決定する。例えば個々のセット・ビットは、そのタグ・ビットが問い合わされることになるレジスタを識別することができる。装置内に複数の個別のレジスタ・ファイルが存在する場合、任意選択のレジスタ・ファイル識別子325を指定して、マスク値320を適用するレジスタ・ファイルを識別することができる。このようなマスク値の使用を通して、そのタグ・ビットが問い合わされることになる任意の複数のケイパビリティ・レジスタを指定することができることは認識されよう。
図7には代替配置もまた示されており、フィールド310は、実際に2つのサブフィールド、即ちベース・レジスタ識別子を識別する第1のサブフィールド330、及びカウント値を識別する第2のサブフィールド335を組み込むことができる。組合せでは、これらのフィールドを使用して、ベース・レジスタ識別子によって識別されるレジスタから始まる一連の複数のレジスタを識別することができる。サブフィールド330、335のうちの一方は、汎用レジスタを使用してその内容を識別することができ、もう一方は、例えば即値を提供することができる。この場合も、複数のレジスタ・ファイルが装置内に提供される場合、任意選択の他のフィールド340を使用して、そのレジスタが操作されることになる特定のレジスタ・ファイルを識別することができる。
図5A及び5Bの命令と同様、図7の命令300は、問合せ結果が書き込まれることになる汎用レジスタが識別されるフィールド315を含む。
図5A、5B及び7の実例では、命令は、複数の記憶素子に関連付けられたタグ・ビットを回収し、次にこれらのタグ・ビットを出力して汎用レジスタに記憶するためにバルク問合せ操作を実施させるバルク問合せ命令である。装置内に提供することができる別のタイプの命令は、バルク修正命令であり、復号段8によって生成される制御信号に応答して実行段12で実行されると、識別された個々の記憶素子に関連付けられたタグ・ビットがバルク修正命令によって指定された修正データに従って選択的に修正されることになる。
図8A、8B及び8Cに3つのこのようなバルク・タグ修正命令が示されており、これらは概ね、それぞれ図5A、5B及び7の等価バルク問合せ命令に対応している。
詳細には、図8Aは、一連のメモリ・ロケーションに関連付けられたタグ・ビットに対してバルク・タグ修正操作を実施するために使用することができるCModTagsM命令350を示したものであり、メモリ・ロケーションの数、したがって操作されることになるタグ・ビットの数が命令内で明確に識別される。したがって演算コード355は命令をCModTagsM命令として識別し、一方、フィールド360、365は、概ね図5Aの命令200のフィールド210、215に対応している。したがってこれらの2つのフィールドは、集合的に開始アドレス及び修正されることになるタグの数を識別する。次にフィールド370は修正データを含む汎用レジスタを識別し、したがってバルク・タグ修正操作中に適用されることになる更新されたタグ値の指示を提供する。なされることになるタグ・ビット修正を、フィールド370内で識別される汎用レジスタ内に指定されるビットを使用して決定することができる方法に関するさらなる詳細については、図10を参照して後で考察される。
図8Bは、この場合も一連のメモリ・ロケーションに関連付けられたタグ・ビットに対してバルク・タグ修正を実施するために使用することができるDC_CModTagsM命令375のフォーマットを示したものであるが、この実例では、操作されることになるタグ・ビットの数は、装置の特性、詳細には装置のデータ・キャッシュのうちの1つの中のキャッシュ・ラインのキャッシュ・ライン長から暗黙的である。演算コード380は命令をDC_CModTagsM命令として識別し、一方、フィールド385は、図5Bの命令225のフィールド235と同じ目的を果たし、したがって一連のメモリ・ロケーションのための開始アドレスを識別する。フィールド390はフィールド370と同じ目的を果たし、したがってタグ値がバルク・タグ修正操作中に更新される方法をその内容が識別する汎用レジスタを識別する。
図8A及び8Bの命令は、一連のメモリ・ロケーション上でバルク・タグ修正操作を実施させるが、図8Cに示されている命令は、その代わりに一組のケイパビリティ・レジスタ60内の複数のケイパビリティ・レジスタに関連付けられたタグ・ビットに対して操作する。詳細には、図8CはCModTagsR命令400を示しており、演算コード405は、命令をCModTagsR命令として識別する。フィールド410は、図7の命令300のフィールド310と同じ目的を果たし、したがってそのタグ・ビットがバルク修正操作の対象になることになる複数のレジスタを識別する。次にフィールド415は、タグ値がバルク・タグ修正操作中に修正される方法を識別する。フィールド415は、単に、図8A及び図8Bに示されている命令のフィールド370、390と同じ方法で汎用レジスタに対する参照を含むことができるが、代替実施例では、フィールド415は即値を指定することも可能であり、或いは即値と汎用レジスタの組合せを使用して、なされることになる修正を識別することも可能である。原理上、図8A及び8Bに示されている命令のフィールド370、390は、汎用レジスタと即値の組合せをも使用して、なされることになる更新を識別することができるが、即値と組み合わせた汎用レジスタの使用は、バルク・タグ修正操作を施すために指定することができるケイパビリティ・レジスタの不連続の性質が与えられると、ケイパビリティ・レジスタ・コンテンツ上でバルク・タグ修正を実施する場合により有効であり得ることが分かっている。
バルク・タグ問合せ操作を実施する場合に、問合せ結果のために識別される汎用レジスタ内にタグ・ビットが記憶される方法、又は修正データ・ビットがバルク・タグ修正操作のために識別される汎用レジスタ内で表現される方法は、様々な形態を取ることができる。図9Aはパックド・フォーマットを示したものであり、最下位ビットから始まる個々のビットは、問い合わされるタグ・ビット(レジスタを使用してバルク・タグ問合せ操作の結果が蓄積される場合)又は個別の修正データ(汎用レジスタをソース・レジスタとして使用して、バルク・タグ修正操作中に使用される修正データを識別する場合)を識別する。したがって汎用レジスタ420内に一連のビット425が提供される。レジスタ内のアクティブ・ビットの数は、そのタグ・ビットが問い合わされているか又は修正されている記憶素子の数で決まることになり、したがってレジスタ420のより高いビットのうちのいくつかは使用されないことがある。図9Aでは、最下位ビット位置から始まるパックド・フォーマットが示されているが、代替実施例では、そのパックド・フォーマットは最上位ビットから始まり、したがって最下位ビットの特定の数は使用されないことがあり得ることは認識されよう。
図9Bは、汎用レジスタ430が情報の一連のブロックを含む代替手法を示したものであり、この実例では、一連の個別のバイト及び個々のバイト中の特定のビット435を使用して、(バルク・タグ問合せ操作の実例では)問い合わされるタグ・ビットのうちの1つ、又は(バルク・タグ修正操作の実例では)修正データのうちの1つが識別される。個々のバイト内の他のビットは、必要に応じて他の情報のために使用することができ、或いは使用されないこともある。
図10は、バルク・タグ修正操作を実施している間に個別のタグ・ビットに対してなされることになる更新を修正データ・ビットを使用して識別することができる方法をより詳細に示す線図である。実例による説明のために図9Aのパックド・フォーマットが示されているが、この原理は、図9Bのアンパックド・フォーマットにも等しく適用される。一連のビット425を解釈するための4つの実例オプションが図10に示されている。個々のビット425は、修正されることになるタグ・ビットのうちの1つに対応している。オプションAによれば、ビット425が論理0値にある場合、対応するタグ・ビットは、関連するデータ・ブロックがケイパビリティを表していないことを識別するためにクリアされる。それとは逆にビット425が論理1値にある場合、対応するタグ・ビットは、関連するデータ・ブロックがケイパビリティとして解釈されるべきであることを識別するためにセットされる。対応するデータ・ブロックがケイパビリティであることを識別するためにタグ・ビットが論理1にセットされ、関連するデータ・ブロックがケイパビリティではないことを識別するために論理0値にクリアされる実施例では、更新は、移動操作を介して効果的に実施することができ、それによりバルク・タグ更新操作の間、レジスタ420内の関連するビット425の内容が対応するタグ・ビット中へ移動される。
オプションBは、ビット425が論理0値にある場合、対応するタグ・ビットは非修正状態のままにされるシナリオを示したものである。したがってその対応するタグ・ビットは、それが既にセットされている場合、セット状態で保持されることになるが、さもなければクリア状態で保持されることになる。それとは逆にビット425が論理1値を有している場合、これは、タグ・ビットがクリアされることになる。一実施例では、このオプションは、BIC(BIt Clear)操作の使用を通して実現することができる。
オプションCによれば、ビット425が論理0値にある場合、対応するタグ・ビットは非修正状態のままにされ、一方、ビット425が論理1値にある場合、タグ・ビットがセットされる。このオプションは、一実施例ではORR操作の使用を通して実現することができる。
オプションDは、原理上、必要に応じて使用することができる他のオプションを示したものであるが、他のオプションA乃至Cよりケイパビリティ・タグ・ビットの修正に対する実際的な用途が少ないかもしれない。オプションDによれば、ビット425が論理0値を有している場合、対応するタグ・ビットは非修正状態のままにされ、一方、タグ・ビット425が論理1値を有している場合、対応するタグ・ビットの値が交換され、したがってそれが既にセットされている場合はクリアされ、それが既にクリアされている場合はセットされる。このような操作は、一実施例ではXOR操作によって実現することができる。
一実施例では、バルク・タグ操作の実施は無条件であってもよいが、代替実施例では、装置は、バルク・タグ操作を進めることが許可される前に、特定の条件が合致しなければならないように配置することができる。図11は、バルク・タグ命令の実行の許可に先立って1つ又は複数のチェックが実施される実例実施態様を示す流れ図である。ステップ450で、バルク・タグ命令が受け取られたかどうかが決定される。ステップ455で、次に指定された命令によって要求されたバルク操作の実行が許可されるかどうかが決定される。詳細には、実例として図12A乃至12Cを参照して後で考察されるように、バルク・タグ命令のうちの少なくともいくつかを実行し得る際に様々な制限を課すことができる。
制限はすべてのタイプのバルク・タグ命令に等しく適用することができ、或いはより面倒な制限を特定のタイプのバルク・タグ命令の使用に課すことができる。例えばいくつかの実施態様では、極めて厳しい制限をバルク・タグ修正命令の使用に課すことが適切であり、一方、バルク・タグ問合せ命令の使用は、それほど強くは強制されないようである。これは、データ・ブロックに関連付けられたタグ・ビットを修正する能力に対する厳格な制御が汎用データをケイパビリティに変換する能力に課されない場合、ケイパビリティ・ベース・アーキテクチャによってもたらされる安全保護が潜在的に妥協され得るため、このような制御がしばしば重要であることによるものである。詳細には、バルク・タグ修正命令の実行は、それが、データの複数のブロックと関連してタグ・ビットを設定することによる複数のケイパビリティの生成を可能にし得るため、潜在的に極めて強力なツールである。
ステップ455で、命令によって要求されたバルク操作が許可されないことが決定されると、ステップ465でフォールト状態が生じることが決定される。これは、例えば例外を取ることによってプロセッサにフォールトを立てさせることを含み得る。
命令によって要求されたバルク操作が許可されることが決定されると、任意選択でステップ460で、任意の他の必要なチェックを実施することができる。例えば有界ポインタを使用して、一連のメモリ・ロケーションに対して実施されることになるバルク・タグ操作のための開始アドレスを識別する場合、バルク・タグ命令によって識別された一連のメモリ・ロケーションが許容可能範囲内であること、任意の許可属性が満たされることを保証するために、有界ポインタの範囲及び許可属性がチェックされることになる。ステップ460で実施することができる他のチェックの別の実例として、任意のメモリ管理ユニット(MMU:memory management unit)アクセス許可をチェックして、これらのアクセス許可が満たされていることを保証することができる。他のチェックを実施して、決定されたメモリ・アドレス範囲に関してメモリ・フォールトが生じていないことを保証することができる。他の必要なチェックのうちの何らかのチェックに合格しなかった場合、プロセスは再びステップ465へ進行し、そこでフォールト状態が生じる。しかしながらさもなければプロセスはステップ470へ進行し、指定されたバルク・タグ命令によって要求されたバルク操作が実施される。
図12A乃至12Cは、バルク・タグ命令の使用に課すことができるいくつかの実例制限を示したものであり、詳細には図12A乃至12Cの各々は、図11のステップ455を異なる実施例の中で実現するために取り得るステップを示している。最初に図12Aを考察すると、ステップ500で、バルク・タグ命令によって要求されたバルク操作が識別される。次にステップ505で、プロセッサが所定の高い特権状態で動作しているかどうかが決定される。所定の高い特権状態は、実施例に応じて様々な形態を取ることができるが、例えば仮想計算機タイプ環境を考えると、所定の高い特権状態はハイパーバイザ・レベルであってもよい。プロセッサが所定の高い特権状態で動作していないことが決定されると、プロセスはステップ515へ進行し、そこでフォールトが生じる。ステップ515は図11のステップ465に対応している。しかしながらプロセッサが所定の高い特権状態にある場合、ステップ510で、実施する必要がある任意の他のチェック(図11のステップ460を参照して既に考察したチェックなど)の対象になるバルク操作が実施される。
図12Bは代替手法を示したものであり、ステップ520、530及び535は、図12Aのステップ500、510及び515に対応しているが、試験505は試験525によって置き換えられており、詳細には、識別されたバルク操作の実施を許可するために特権構成レジスタが設定されているかどうかが決定される。特権構成レジスタは、例えば、所定の特権状態で動作している場合にプロセッサによる設定が可能なレジスタであってもよく、したがってその値は、その所定の特権状態で動作しているプロセッサによってのみ修正することができる。識別されたバルク操作が許可されていることを構成レジスタの内容が示していると仮定すると、プロセスはステップ530へ進行するが、さもなければステップ535でフォールトが立てられる。
既に言及したように、異なるタイプのバルク・タグ操作には異なる制限を課すことができる。したがって異なる特権構成レジスタ又は特権構成レジスタ内の異なるフィールドを使用して、異なるタイプのバルク操作のための許可を識別することができる。したがって例えば特権構成レジスタは、バルク・タグ問合せ操作が許可され、しかしバルク・タグ修正操作は許可されないことを識別することができる。
図12Cは、バルク操作ケイパビリティが定義される別の代替手法を示したものである。既に言及したように、ケイパビリティは、プロセッサが利用することができる一組の権利を効果的に識別し、ほとんどのケイパビリティは既に説明した有界ポインタの形態を取ることができるが、すべてのケイパビリティが有界ポインタである必要はない。その代わりにケイパビリティは、特定の機能性との関係で特定の権利を単に識別するものとして定義され得る。したがって例えばケイパビリティ・レジスタ60のうちの1つの中に保持され、バルク・タグ操作のための入力として指定され得るバルク操作ケイパビリティが定義され得る。したがってバルク・タグ命令は、既に考察した様々な他のオペランドの指定に加えて、例えばそのオペランドのうちの1つとしてバルク操作ケイパビリティを識別することができる。このような配置では、以下のステップ540で、要求されたバルク操作が識別され、ステップ545で、バルク・タグ命令によって識別されたバルク操作ケイパビリティが関連するケイパビリティ・レジスタから回収され、次にその内容を決定するために解析される。次にステップ550で、バルク操作ケイパビリティが識別されたバルク操作の実施を許可するかどうかが決定される。識別されたバルク操作の実施が許可される場合、プロセスはステップ555へ進行し、さもなければステップ560でフォールトが立てられる。
バルク操作ケイパビリティは、任意の形態のバルク・タグ操作が許可されるか否かを示すためにセットされる許可ビットを有することができ、或いはその代わりにバルク・タグ修正操作及びバルク・タグ問合せ操作のための異なる許可ビットを提供することができる。
バルク操作ケイパビリティは、一連のメモリ・ロケーションに対して実施されることになるバルク・タグ操作に関してチェックすることができる範囲情報を識別することも可能であり、その範囲情報が合致しない場合、ステップ560で再びフォールトが立てられる。しかしながら一実施例では、このような範囲情報はバルク操作ケイパビリティ内では要求されず、その代わりに図5A、5B、8A又は8Bを参照して既に考察した命令フォーマットを採用する場合、ケイパビリティ・レジスタを使用して一連のメモリ・ロケーションの開始アドレスを識別することができ、そのケイパビリティ・レジスタの範囲情報を図11の後続するステップ460の一部としてチェックすることができる。
例えば図3を参照して既に考察したように、ケイパビリティがメモリとケイパビリティ・レジスタの間で移動されると、タグ・ビットは、ケイパビリティと共に移動して、データの関連するブロックが実際にケイパビリティであることを識別する。しかしながらいくつかの実施態様では、例えばメモリ内のすべてのケイパビリティ情報を保持するためには空間が不十分であるため、或いはハイバーネーションをサポートする場合、ケイパビリティをメモリからディスクなどの補助記憶装置中に記憶する必要があり得る。一実施例では、これには、個々のケイパビリティを個別のデータ及びタグ部分に分解し、且つ、タグを補助記憶装置内のデータとして扱う必要がある。これは図13に概略的に示されており、図3を参照して既に説明した手法によれば、ケイパビリティがケイパビリティ・レジスタ600とメモリ605の間で移動されると、タグ・ビット615は個々のデータ・ブロック610と共に移動する。したがってメモリ605内のデータの個々のブロックは、ケイパビリティ又は汎用データのいずれかを表しているものとして識別することができる。データ・ブロックが補助記憶装置625へ移動されると、分解プロセス620を使用してケイパビリティがデータ624及びタグ情報622に分解され、タグ情報はデータとして扱われる。したがって補助記憶装置内では、情報は単にデータとして存続し、補助記憶装置はケイパビリティ非認識である。
補助記憶装置に記憶されているデータからケイパビリティを再構成する場合、再構成プロセス630を実施する必要があり、この再構成プロセス630は、ケイパビリティの使用を通して利用することができる安全保護が妥協されないことを保証するために強制され得る。図15を参照して後でより詳細に考察されるように、既に説明したバルク・タグ修正命令は、このようなケイパビリティ再構成目的のために使用することができ、これらの命令の使用は、図11を参照して既に考察した方法論の使用を通して強制され得る(例えば図12A乃至12Cを参照して既に説明した技法を使用して図11のステップ455を実現する)。再構成操作を実施することができることは、再構成操作630が要求される時点で決定されると仮定すると、ステップ630でケイパビリティを再構成し、且つ、共用メモリ605中にライト・バックすることができる(後でより詳細に考察されるように、一実施例では再構成は、再構成されたケイパビリティが次に共用メモリ605中に出力される前に、ケイパビリティ・レジスタを使用して生じる)。
図14は分解プロセスを示す流れ図であり、図14の右側の略図は、この流れ図に示されているステップの各々によって実施されるプロセスをさらに示したものである。
ステップ650で、複数の記憶位置のためのタグ値を汎用レジスタ中に集めるためにバルク・タグ問合せ命令が実行される。したがって図14の右側に示されているように、メモリ・アドレス空間665内のメモリ・ロケーションの連続したシーケンスのためにタグ・ビットがアクセスされ、且つ、回収され、次に汎用レジスタ670内に記憶するために照合され得る。
次にステップ655で、その汎用レジスタ670の内容が補助記憶装置675に書き出される。この時点で補助記憶装置は、そのデータを単に汎用データとして扱い、ケイパビリティには気がつかない。
ステップ660で、次に標準書出し操作を使用して、その関連するタグ・ビットがステップ650におけるバルク・タグ問合せ操作の対象になった一連のメモリ・ロケーション内のデータ・ブロックの各々が補助記憶装置675に書き出される。一実施例では、実施態様は、メモリ・アドレス空間からレジスタ中へのこれらのデータ・ブロックのローディング、及びその後のレジスタから補助記憶装置へのそれらの書出しを含むことになる。
図15は、一実施例による図13の再構成操作630を示す流れ図である。図14の場合と同様、図15の右側の略図は、図15のステップの各々で実施される操作を示したものである。ステップ700で、一連のロード操作を使用して複数のデータ・ブロックが補助記憶装置720からケイパビリティ・レジスタ725内の対応する複数のセットのケイパビリティ・レジスタ中にロードされ、これらのケイパビリティ・レジスタに関連付けられたタグ・ビットは、データ・ブロックが現在ケイパビリティを表していないことを識別するために論理0値にクリアされる。
次にステップ705で、ロード操作を使用して、複数のタグ値、詳細にはケイパビリティ・レジスタ725中にロードされたデータ・ブロックの各々と結合されることになるタグ値を表すデータが補助記憶装置720から汎用レジスタ730中にロードされる。
次にステップ710で、例えば図8Cを参照して既に考察したバルク・タグ修正命令を実行することによってバルク・タグ修正プロセスが実施され、識別されたケイパビリティ・レジスタは、ケイパビリティ・レジスタ725のセットからの関連するケイパビリティ・レジスタである。命令は、バルク・タグ修正操作の間に使用されることになる修正データを含むものとして汎用レジスタ730をも識別する。図11の上記考察によれば、識別されたバルク・タグ修正操作を進めることが許可されることをチェックするために、ステップ710を実施している間に1つ又は複数のチェックを実施することができる。しかしながらこれらのチェックに合格したと仮定すると、ステップ710でバルク・タグ修正操作を実施することにより、関連するケイパビリティ・レジスタ725の各々に関連付けられたタグ値が汎用レジスタ730に保持されているデータに基づいて修正されることになる。これは、複数のデータ・ブロックがケイパビリティとして識別されることになる(一実施例では、すべてのデータ・ブロックが、それらがケイパビリティであることを識別するためにセットされるそれらのタグ・ビットを有することができる)。したがってステップ710を実施している間に、補助記憶装置720から回収された情報からケイパビリティが効果的に再生成される。次にステップ715で、ケイパビリティ・レジスタ・コンテンツをそれらの関連するタグ・ビットと共にメモリ・アドレス空間735へ移動させることができる。
図15を参照して考察した実施例では、タグを更新するために使用される修正データは最初に汎用レジスタ730中に記憶されるが、代替実施例では、タグ値をメモリから関連するケイパビリティ・レジスタ・タグ位置中に直接ロードすることができるようにバルク・タグ修正操作を修正することができる。同様の方法で操作を提供して、ケイパビリティ・タグ情報を汎用データのブロックとしてケイパビリティ・レジスタからメモリ中に直接記憶することができる(介在する汎用レジスタを使用することなく)。
図16は、バルク・タグ問合せ操作又はバルク・タグ修正操作を実施するためにプロセッサ・コアがバルク・タグ命令を実行するのではなく、プロセッサ・コアがそのタスクを関連するDMA回路にオフロードすることができる代替実施例を示したものである。詳細には、図16に示されているように、プロセッサ・パイプライン750は、メモリ管理ユニット755を介して1つ又は複数のレベルのキャッシュ760と接続され、次に相互接続765を介してメモリ770と接続される。MMU755は、図1を参照して既に考察したTLB構造52を組み込むことができ、したがってプロセッサ・パイプラインによって発行される仮想アドレスをキャッシュ/メモリ・システム上に送られる物理アドレスに変換することができる。この実施例によれば、プロセッサ・パイプラインがバルク・タグ問合せ又は修正操作の実施を希望する場合、プロセッサ・パイプラインは、点線の経路780を介してDMA回路775に適切な要求を発行して、DMA回路による、要求された操作のタイプの識別及びそのタグ・ビットがバルク・タグ操作の対象になることになる一連のメモリ・アドレスの識別を可能にする十分な情報を提供することができる。DMA回路は、次に、バルク・タグ問合せ又は修正操作を実現するために、相互接続765を介してメモリ・システム770に一連のトランザクション780を発行する。個々のトランザクションは、メモリ770からDMA回路775へ戻す少なくとも1つの応答と共に、DMA回路からメモリへの要求の発行を含むことになる。バルク・タグ問合せ操作の場合、応答は、問い合わされたタグ情報を組み込むことができる。バルク・タグ修正操作の場合、DMA回路によって発行される要求には、メモリ中のタグ・ビットを更新するために要求される必要な修正データが付随することになり、応答は、メモリ・システムからの、修正が実施されたことを確認するための肯定応答信号の形態を取ることになる。
この実施例によれば、バルク・タグ問合せ/修正操作は、プロセッサ・パイプライン750の代わりにDMA回路775などのバス・マスタ・デバイスによるこのような操作の実施を可能にするバス・プロトコル・レベルで表現される。
図17は、使用することができる仮想計算機実施態様を示したものである。既に説明した実施例は、関係する技法をサポートする特定の処理ハードウェアを動作させるため装置及び方法によって本技法を実現するが、ハードウェア・デバイスのいわゆる仮想計算機実施態様を提供することも可能である。これらの仮想計算機実施態様は、典型的には、仮想計算機プログラム810をサポートするホスト・オペレーティング・システム820を動作させるホスト・プロセッサ830上で動作する。合理的な速度で実行する仮想計算機実施態様を提供するためには、しばしば強力な大型プロセッサが必要であるが、このような手法は、両立性又は再使用の理由で別のプロセッサに特有のコードを動作させたい場合などの特定の状況において正当化され得る。仮想計算機プログラム810は、仮想ハードウェア・インタフェースをゲスト・プログラム800に提供し、この仮想ハードウェア・インタフェースは、仮想計算機プログラム810によってモデル化されているデバイスである実ハードウェアによって提供されることになるハードウェア・インタフェースと同じハードウェア・インタフェースである。したがって上で説明したバルク・タグ/バルク・ケイパビリティ・メタデータ命令を含むプログラム命令は、仮想計算機プログラム810を使用してゲスト・プログラム800内から実行して、仮想計算機ハードウェアとのそれらの相互作用をモデル化することができる。ゲスト・プログラム800はベア・メタル・プログラムであっても、或いは別法としてゲスト・プログラム800は、ホストOS820が仮想計算機アプリケーション810を動作させる方法と同様の方法でアプリケーションを動作させるゲスト・オペレーティング・システムであってもよい。異なるタイプの仮想計算機が存在し、いくつかのタイプでは仮想計算機は、ホストOS820を必要とすることなく、ホスト・ハードウェア830上で直接動作することも認識されよう。
上で説明した実施例から、このような実施例は、ケイパビリティ・アーキテクチャ中のタグ・ビットなどのケイパビリティ・メタデータへのより最適なアクセスを可能にすることは認識されよう。説明された操作は様々なシナリオに有用であり、例えばメモリを補助記憶装置からタグ付きメモリ・ロケーションへ、又はこれらのタグ付きメモリ・ロケーションから補助記憶装置へページングする場合、或いは固有ケイパビリティ・サポートが不足しているネットワーク内で仮想計算機を移行させる場合に有用であり得る。説明された実施例は、ケイパビリティ位置の範囲の問合せ、又はバルク中における取扱いを許可するために実行することができる多くの命令を提示している。2つの個別のグループの命令が説明されており、1つはバルク中の操作のケイパビリティメモリ・ロケーションへの適用であり、もう1つはバルク中の操作のケイパビリティ・レジスタ位置への適用である。
本出願においては、「ように構成された」という語は、定義された操作を実行することができる構成を装置の要素が有していることを意味するために使用されている。この文脈においては、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は方法を意味している。例えば装置は、定義された操作を提供する専用ハードウェアを有することができ、或いはプロセッサ又は他の処理デバイスは、機能を実施するようにプログラムすることができる。「ように構成された」は、定義された操作を提供するために装置要素を何らかの方法で変更する必要があることを意味していない。
以上、本明細書において、添付の図面を参照して本発明の例証実施例について詳細に説明したが、本発明はこれらの厳密な実施例に限定されないこと、当業者によって、添付の特許請求の範囲で定義されている本発明の範囲及び精神を逸脱することなく様々な変更、追加及び修正をそれらに加えることができることを理解されたい。例えば独立請求項の特徴を使用して、本発明の範囲を逸脱することなく従属請求項の特徴の様々な組合せを実施することができる。

Claims (29)

  1. データ・ブロックを記憶するための記憶素子であって、各々のデータ・ブロックが、前記データ・ブロックに関連付けられた、前記データ・ブロックがケイパビリティを指定しているかどうかを識別するケイパビリティ・メタデータを有し、少なくとも1つのケイパビリティ・タイプが有界ポインタである、記憶素子と、
    複数の前記記憶素子を識別するバルク・ケイパビリティ・メタデータ操作に応答して、前記複数の記憶素子に記憶されている各々のデータ・ブロックに関連付けられた前記ケイパビリティ・メタデータに対する操作を実施する処理回路と、
    を備える装置。
  2. 前記バルク・ケイパビリティ・メタデータ操作がバルク問合せ操作であり、前記処理回路が、前記バルク問合せ操作に応答して、前記複数の前記記憶素子に記憶されている各々のデータ・ブロックに関連付けられた前記ケイパビリティ・メタデータを獲得し、且つ、前記獲得したケイパビリティ・メタデータを含む出力データを生成する、請求項1に記載の装置。
  3. 前記バルク・ケイパビリティ・メタデータ操作がバルク修正操作であり、前記処理回路が、前記バルク修正操作に応答して、前記バルク修正操作のために指定された修正データにしたがって、前記複数の前記記憶素子に記憶されている各々のデータ・ブロックに関連付けられた前記ケイパビリティ・メタデータを修正する、請求項1に記載の装置。
  4. 前記バルク修正操作が、前記複数の前記記憶素子に記憶されている各々のデータ・ブロックに関連付けられた前記ケイパビリティ・メタデータを、各々のデータ・ブロックがケイパビリティを指定していることを識別するようセットする、請求項3に記載の装置。
  5. 前記バルク修正操作が、前記複数の前記記憶素子に記憶されている各々のデータ・ブロックに関連付けられた前記ケイパビリティ・メタデータを、各々のデータ・ブロックがケイパビリティ以外のデータを指定していることを識別するようクリアする、請求項3に記載の装置。
  6. 前記修正データが、前記バルク修正操作によってアクセスされるケイパビリティ・メタデータ毎に、前記ケイパビリティ・メタデータに関して実施されることになる前記修正を識別する、請求項3に記載の装置。
  7. 前記修正データが、
    (i)前記ケイパビリティ・メタデータを、前記関連するデータ・ブロックがケイパビリティを指定していることを識別するようセットする、
    (ii)前記ケイパビリティ・メタデータを、前記関連するデータ・ブロックがケイパビリティ以外のデータを指定していることを識別するようクリアする、及び
    (iii)前記ケイパビリティ・メタデータを不変のままにする、
    の修正のうちの少なくとも2つのうちの1つを識別する前記バルク修正操作によってアクセスされるケイパビリティ・メタデータ毎に修正値を提供する、請求項6に記載の装置。
  8. 前記処理回路が、条件が合致することを条件として前記バルク・ケイパビリティ・メタデータ操作を実施するように手配される、請求項1から7までのいずれか一項に記載の装置。
  9. 前記条件が、
    (i)前記処理回路が所定の特権状態で動作している、
    (ii)前記処理回路が所定の特権状態で動作している場合に設定することができる構成記憶素子が、前記バルク・ケイパビリティ・メタデータ操作が許可されていることを示す値を有している、
    (iii)前記バルク・ケイパビリティ・メタデータ操作を指定している要求がバルク操作ケイパビリティを識別し、且つ、前記バルク・ケイパビリティ・メタデータ操作が許可されていることを前記バルク操作ケイパビリティが示している、
    の条件のうちの少なくとも1つが真である場合に、合致したと決定される、請求項8に記載の装置。
  10. 前記記憶素子がメモリ・ロケーションである、請求項1から9までのいずれか一項に記載の装置。
  11. 前記複数のメモリ・ロケーションが有界ポインタへの参照によって指定され、前記処理回路が、前記複数のメモリ・ロケーションが前記有界ポインタによって識別されたアドレスの許容可能な範囲内に存在していることが決定されたときに、前記バルク・ケイパビリティ・メタデータ操作を実施するように手配される、請求項10に記載の装置。
  12. 前記記憶素子が前記処理回路にアクセスすることができるケイパビリティ・レジスタである、請求項1から11までのいずれか一項に記載の装置。
  13. 一連の命令に応答して、前記一連の命令によって要求される操作を前記処理回路に実施させるように、前記処理回路に発行するための制御信号を生成する復号回路をさらに備え、前記復号回路が、バルク・ケイパビリティ・メタデータ命令を受け取ったことに応答して、前記バルク・ケイパビリティ・メタデータ命令によって要求される前記バルク・ケイパビリティ・メタデータ操作を前記処理回路に実施させるために、前記処理回路に発行するための制御信号を生成する、請求項1から12までのいずれか一項に記載の装置。
  14. 前記記憶素子がメモリ・ロケーションであり、前記バルク・ケイパビリティ・メタデータ命令が、その関連するケイパビリティ・メタデータが前記バルク・ケイパビリティ・メタデータ操作の対象になることになるメモリ・ロケーションの連続したシリーズを識別するアドレスを提供するレジスタを指定する、請求項13に記載の装置。
  15. 前記バルク・ケイパビリティ・メタデータ命令が、前記連続したシリーズ中のメモリ・ロケーションの数を識別するフィールドを含む、請求項14に記載の装置。
  16. 前記フィールドが、前記連続したシリーズ中のメモリ・ロケーションの前記数を示す値を含むレジスタに対する参照、及び前記連続したシリーズ中のメモリ・ロケーションの前記数を示す即値のうちの1つを提供する、請求項15に記載の装置。
  17. 前記連続したシリーズ中のメモリ・ロケーションの数が前記装置の特性から暗黙的である、請求項14に記載の装置。
  18. 前記特性が、前記処理回路にアクセスすることができるキャッシュのキャッシュ・ライン長である、請求項17に記載の装置。
  19. 前記記憶素子がケイパビリティ・レジスタであり、前記バルク・ケイパビリティ・メタデータ命令が、その関連するケイパビリティ・メタデータが前記バルク・ケイパビリティ・メタデータ操作の対象になることになる前記ケイパビリティ・レジスタを識別するレジスタ識別子フィールドを含み、前記レジスタ識別子フィールドが、前記ケイパビリティ・レジスタを識別するために即値及びレジスタ識別子のうちの少なくとも1つを提供する、請求項13に記載の装置。
  20. 前記レジスタ識別子フィールドが、
    −前記ケイパビリティ・レジスタを識別するために使用されるマスク値、
    −前記ケイパビリティ・レジスタを識別するために組み合わせて使用されるベース識別子及びカウント値、
    のうちの1つを提供する、請求項19に記載の装置。
  21. 前記バルク・ケイパビリティ・メタデータ命令がバルク問合せ命令であり、前記処理回路が、前記バルク問合せ命令を復号する際に前記復号回路によって生成される前記制御信号に応答してバルク問合せ操作を実施するように手配され、
    前記バルク問合せ命令が宛先レジスタを識別し、前記処理回路が、前記バルク問合せ操作に応答して、前記複数の前記記憶素子に記憶されている各々のデータ・ブロックに関連付けられた前記ケイパビリティ・メタデータを獲得し、且つ、前記宛先レジスタに記憶するために、前記獲得したケイパビリティ・メタデータを含む出力データを生成する、
    請求項13に従属する場合の請求項1から20までのいずれか一項に記載の装置。
  22. 前記バルク・ケイパビリティ・メタデータ命令がバルク修正命令であり、前記処理回路が、前記バルク修正命令を復号する際に前記復号回路によって生成される前記制御信号に応答してバルク修正操作を実施するように手配され、
    前記バルク修正命令が修正データを識別する出所フィールドを識別し、前記処理回路が、前記バルク修正操作に応答して、前記出所フィールドによって識別された前記修正データに依存して、前記複数の前記記憶素子に記憶されている各々のデータ・ブロックに関連付けられた前記ケイパビリティ・メタデータを修正する、
    請求項13に従属する場合の請求項1から21までのいずれか一項に記載の装置。
  23. 前記出所フィールドが、前記修正データを識別するために即値及びレジスタ識別子のうちの少なくとも1つを提供する、請求項22に記載の装置。
  24. 前記複数の前記記憶素子に記憶されている各々のデータ・ブロックに関連付けられた前記ケイパビリティ・メタデータを獲得するために、前記処理回路がバルク問合せ操作を前記バルク・ケイパビリティ・メタデータ操作として実施するように手配され、前記処理回路が、ケイパビリティ非認識記憶デバイスに記憶するために、前記獲得したケイパビリティ・メタデータを含むデータを出力するようにさらに手配される、請求項1から23までのいずれか一項に記載の装置。
  25. ケイパビリティ非認識記憶デバイスから獲得される修正メタデータに依存して、前記複数の前記記憶素子に記憶されている各々のデータ・ブロックに関連付けられた前記ケイパビリティ・メタデータを修正するために、前記処理回路がバルク修正操作を前記バルク・ケイパビリティ・メタデータ操作として実施するように手配される、請求項1から24までのいずれか一項に記載の装置。
  26. 前記処理回路が直接メモリ・アクセス(DMA)回路であり、
    前記バルク・ケイパビリティ・メタデータ操作がプロセッサ・コアによって指定され、メモリ・ロケーションの連続したシリーズに対して前記バルク・ケイパビリティ・メタデータ操作を実現するように、前記DMA回路に1つ又は複数のトランザクションを発行させる、請求項1から12までのいずれか一項に記載の装置。
  27. データ・ブロックを記憶素子に記憶するステップであって、各々のデータ・ブロックが、前記データ・ブロックに関連付けられた、前記データ・ブロックがケイパビリティを指定しているかどうかを識別するケイパビリティ・メタデータを有し、少なくとも1つのケイパビリティ・タイプが有界ポインタであるステップと、
    複数の前記記憶素子を識別するバルク・ケイパビリティ・メタデータ操作に応答して、前記複数の記憶素子に記憶されている各々のデータ・ブロックに関連付けられた前記ケイパビリティ・メタデータに対する操作を処理回路に実施させるステップと、
    を含む、ケイパビリティ・メタデータに対する操作を実施する方法。
  28. データ・ブロックを記憶するための記憶素子手段であって、各々のデータ・ブロックが、前記データ・ブロックに関連付けられた、前記データ・ブロックがケイパビリティを指定しているかどうかを識別するケイパビリティ・メタデータを有し、少なくとも1つのケイパビリティ・タイプが有界ポインタである、記憶素子手段と、
    複数の前記記憶素子手段を識別するバルク・ケイパビリティ・メタデータ操作に応答して、前記複数の記憶素子手段に記憶されている各々のデータ・ブロックに関連付けられた前記ケイパビリティ・メタデータに対する操作を実施するための処理手段と、
    を備える装置。
  29. 請求項1から26までのいずれか一項に記載の装置に対応するプログラム命令のための仮想計算機実行環境を提供するようにコンピュータを制御するためのコンピュータ・プログラムを非一時的形態で記憶するコンピュータ・プログラム製品。
JP2018553940A 2016-04-20 2017-03-29 ケイパビリティ・メタデータに対する操作を実施するための装置及び方法 Active JP6975723B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1606872.8A GB2549511B (en) 2016-04-20 2016-04-20 An apparatus and method for performing operations on capability metadata
GB1606872.8 2016-04-20
PCT/GB2017/050881 WO2017182770A1 (en) 2016-04-20 2017-03-29 An apparatus and method for performing operations on capability metadata

Publications (2)

Publication Number Publication Date
JP2019516181A true JP2019516181A (ja) 2019-06-13
JP6975723B2 JP6975723B2 (ja) 2021-12-01

Family

ID=58489720

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018553940A Active JP6975723B2 (ja) 2016-04-20 2017-03-29 ケイパビリティ・メタデータに対する操作を実施するための装置及び方法

Country Status (9)

Country Link
US (1) US11481384B2 (ja)
EP (1) EP3446222B8 (ja)
JP (1) JP6975723B2 (ja)
KR (1) KR102446063B1 (ja)
CN (1) CN109074322B (ja)
GB (1) GB2549511B (ja)
IL (1) IL261614B (ja)
TW (1) TWI752951B (ja)
WO (1) WO2017182770A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108171041B (zh) * 2016-12-07 2020-03-27 澜起科技股份有限公司 用于对访问存储器的应用程序进行身份验证的方法和装置
US10606494B2 (en) * 2017-04-17 2020-03-31 StorageOS Limited System and method for managing volumes of data in a block storage system as a function of a short condition register and a long condition register
GB2570692B (en) 2018-02-02 2020-09-09 Advanced Risc Mach Ltd Controlling guard tag checking in memory accesses
GB2571352B (en) 2018-02-27 2020-10-21 Advanced Risc Mach Ltd An apparatus and method for accessing metadata when debugging a device
GB2572151B (en) * 2018-03-19 2020-07-08 Advanced Risc Mach Ltd An apparatus and method for storing bounded pointers
GB2572158B (en) * 2018-03-20 2020-11-25 Advanced Risc Mach Ltd Random tag setting instruction
GB2576506B (en) * 2018-08-20 2021-06-30 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers
US11068268B2 (en) * 2019-08-05 2021-07-20 Arm Limited Data structure processing
CN110717315B (zh) * 2019-09-10 2023-08-04 中国平安财产保险股份有限公司 系统数据批量修改方法、装置、存储介质及电子设备
CN115080118B (zh) * 2019-10-31 2025-08-26 北京东土科技股份有限公司 批量配置寄存器的方法、装置及计算机可读存储介质
EP3819775A1 (en) 2019-11-06 2021-05-12 Microsoft Technology Licensing, LLC Confidential computing mechanism
EP3819774B1 (en) * 2019-11-06 2022-05-25 Microsoft Technology Licensing, LLC Confidential computing mechanism
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction
US11669271B2 (en) * 2020-04-15 2023-06-06 Advanced Micro Devices, Inc. Memory operations using compound memory commands
US11928472B2 (en) 2020-09-26 2024-03-12 Intel Corporation Branch prefetch mechanisms for mitigating frontend branch resteers
CN114385529B (zh) * 2020-10-16 2024-11-01 瑞昱半导体股份有限公司 直接记忆体存取控制器、使用其之电子装置以及操作其的方法
US12182317B2 (en) * 2021-02-13 2024-12-31 Intel Corporation Region-based deterministic memory safety
US12504891B2 (en) 2021-06-24 2025-12-23 Intel Corporation Zero-redundancy tag storage for bucketed allocators
US12235791B2 (en) 2021-08-23 2025-02-25 Intel Corporation Loop driven region based frontend translation control for performant and secure data-space guided micro-sequencing
US20230195614A1 (en) * 2021-12-21 2023-06-22 Intel Corporation Circuitry and methods for implementing non-redundant metadata storage addressed by bounded capabilities
CN114064576A (zh) * 2022-01-13 2022-02-18 北京九章云极科技有限公司 数据集获得方法、装置及电子设备
GB2634058A (en) * 2023-09-28 2025-04-02 Advanced Risc Mach Ltd Technique for controlling manipulation of pointers
US20250284832A1 (en) * 2024-03-11 2025-09-11 Intel Corporation Capability-based memory access control for graphics processors and accelerators

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120296877A1 (en) * 2011-05-17 2012-11-22 International Business Machines Corporation Facilitating data coherency using in-memory tag bits and tag test instructions
JP2014528623A (ja) * 2011-10-11 2014-10-27 マカフィー, インコーポレイテッド ハイパーバイザ環境におけるクリティカル・アドレス空間保護のためのシステム及び方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5522051A (en) * 1992-07-29 1996-05-28 Intel Corporation Method and apparatus for stack manipulation in a pipelined processor
US6826672B1 (en) * 2000-05-16 2004-11-30 Massachusetts Institute Of Technology Capability addressing with tight object bounds
US9525696B2 (en) * 2000-09-25 2016-12-20 Blue Coat Systems, Inc. Systems and methods for processing data flows
US20030177342A1 (en) * 2002-03-15 2003-09-18 Hitachi Semiconductor (America) Inc. Processor with register dirty bits and special save multiple/return instructions
US7149862B2 (en) * 2002-11-18 2006-12-12 Arm Limited Access control in a data processing apparatus
US7257657B2 (en) 2003-11-06 2007-08-14 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses for specific types of instructions
GB2448149B (en) * 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
US20120317339A1 (en) * 2011-06-13 2012-12-13 International Business Machines Corporation System and method for caching data in memory and on disk
US8850130B1 (en) * 2011-08-10 2014-09-30 Nutanix, Inc. Metadata for managing I/O and storage for a virtualization
US20150227414A1 (en) * 2012-08-31 2015-08-13 Pradeep Varma Systems And Methods Of Memory And Access Management
US9274710B1 (en) * 2014-03-31 2016-03-01 Amazon Technologies, Inc. Offset-based congestion control in storage systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120296877A1 (en) * 2011-05-17 2012-11-22 International Business Machines Corporation Facilitating data coherency using in-memory tag bits and tag test instructions
JP2014528623A (ja) * 2011-10-11 2014-10-27 マカフィー, インコーポレイテッド ハイパーバイザ環境におけるクリティカル・アドレス空間保護のためのシステム及び方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ROBERT N.M. WATSON ET AL.: "Capability Hardware Enhanced RISC Instructions:CHERI Instruction-Set Architecture", TECHNICAL REPORT UCAM-CL-TR-876 NUMBER 876, JPN7021001396, 30 September 2015 (2015-09-30), pages 1 - 198, ISSN: 0004494141 *

Also Published As

Publication number Publication date
US20190095389A1 (en) 2019-03-28
JP6975723B2 (ja) 2021-12-01
EP3446222A1 (en) 2019-02-27
IL261614A (en) 2018-10-31
CN109074322A (zh) 2018-12-21
CN109074322B (zh) 2023-03-03
WO2017182770A1 (en) 2017-10-26
IL261614B (en) 2020-08-31
GB2549511B (en) 2019-02-13
TWI752951B (zh) 2022-01-21
GB2549511A (en) 2017-10-25
EP3446222B1 (en) 2020-01-01
US11481384B2 (en) 2022-10-25
KR20180136976A (ko) 2018-12-26
KR102446063B1 (ko) 2022-09-22
TW201738757A (zh) 2017-11-01
EP3446222B8 (en) 2020-03-04

Similar Documents

Publication Publication Date Title
JP6975723B2 (ja) ケイパビリティ・メタデータに対する操作を実施するための装置及び方法
JP7128206B2 (ja) 機能の使用を管理するための装置および方法
US11347508B2 (en) Apparatus and method for managing a capability domain
US11023237B2 (en) Apparatus and method for interpreting permissions associated with a capability
CN110799939B (zh) 用于控制指令的执行的设备与方法
CN107735775A (zh) 用于使用与指针相关联的范围信息来执行指令的装置和方法
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法
JP7719863B2 (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法
JP7799703B2 (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200319

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210427

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210726

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: 20211015

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211108

R150 Certificate of patent or registration of utility model

Ref document number: 6975723

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250