Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7369699B2 - Address translation in data processing equipment - Google Patents
[go: Go Back, main page]

JP7369699B2 - Address translation in data processing equipment - Google Patents

Address translation in data processing equipment Download PDF

Info

Publication number
JP7369699B2
JP7369699B2 JP2020540422A JP2020540422A JP7369699B2 JP 7369699 B2 JP7369699 B2 JP 7369699B2 JP 2020540422 A JP2020540422 A JP 2020540422A JP 2020540422 A JP2020540422 A JP 2020540422A JP 7369699 B2 JP7369699 B2 JP 7369699B2
Authority
JP
Japan
Prior art keywords
tag
address
virtual
physical
translation
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
JP2020540422A
Other languages
Japanese (ja)
Other versions
JP2021513139A (en
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 JP2021513139A publication Critical patent/JP2021513139A/en
Application granted granted Critical
Publication of JP7369699B2 publication Critical patent/JP7369699B2/en
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/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/10Address translation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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
    • 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/145Protection 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 virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Description

本技法は、データ処理の分野に関する。 The present technique relates to the field of data processing.

データ処理システムは、2つのアドレス指定システム、すなわち、仮想アドレスのシステム、及び物理アドレスのシステムを用いることがある。仮想アドレスは、データ処理装置によって実行されるソフトウェアによって使用されるものであり、その一方で、物理アドレスは、外部RAMなどのメモリ格納ハードウェアによって使用されるものである。アドレス変換能力は、次に、この2つのメモリ・アドレス指定システムの間で変換できるようにするため、及び特に、ハードウェアによって使用される物理アドレス・システムを使用する必要のない、このハードウェア内のメモリ格納先に実行ソフトウェアがアクセスできるようにするために、データ処理装置によって提供されることが可能である。言い換えれば、仮想から物理へのアドレス変換は、メモリ・アクセス・リクエスト(例えばロード及び格納)が仮想アドレスを使用して発行されるのでCPU上で実行されているソフトウェアに透明であることが可能であり、(メモリ・アクセスにふさわしいとき)データは、アドレス変換が行われ、仮想アドレスとは異なる物理アドレスにおいてデータがアクセスされたことをソフトウェアが認識する必要なく、メモリ・システムから返される。 Data processing systems may employ two addressing systems: a system of virtual addresses and a system of physical addresses. Virtual addresses are those used by software executed by a data processing device, while physical addresses are used by memory storage hardware such as external RAM. Address translation capabilities are then provided within this hardware to be able to translate between the two memory addressing systems and, in particular, without having to use the physical addressing system used by the hardware. may be provided by the data processing device to enable executing software to access the memory storage location of the data processing device. In other words, virtual to physical address translation can be transparent to software running on the CPU since memory access requests (e.g. loads and stores) are issued using virtual addresses. Yes, the data (when appropriate for memory access) undergoes address translation and is returned from the memory system without the software having to know that the data was accessed at a physical address that is different from the virtual address.

「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53~63頁"Some Efficient Architecture Simulation Techniques", Robert Bedichek, Winter 1990 USENIX Conference, pp. 53-63

少なくともいくつかの実例は、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換回路であって、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換回路を備え、アドレス・タグ変換回路によって仮想アドレスに依存して行われることになる変換を選択する、アドレス変換回路を備える、装置を提供する。 At least some examples include an address translation circuit for translating a virtual address including a virtual tag portion and a virtual address portion to a physical address including a physical tag portion and a physical address portion, the An apparatus is provided, comprising an address-to-tag translation circuit for performing a translation into a tag part, and for selecting a translation to be performed by the address-to-tag translation circuit in dependence on a virtual address.

少なくともいくつかの実例は、仮想タグ部及び仮想アドレス部を含む仮想アドレスに対して行われることになる、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を選択することであって、仮想アドレスに依存する、選択することと、仮想タグ部を物理タグ部に変換するために変換を行うこととを含む方法を提供する。 At least some examples include selecting a translation to a physical address that includes a physical tag portion and a physical address portion to be performed on a virtual address that includes a virtual tag portion and a virtual address portion; A method is provided that includes selecting, depending on an address, and performing a translation to convert a virtual tag part to a physical tag part.

少なくともいくつかの実例は、ターゲット・プログラム・コードの命令の実行のための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換プログラム・ロジックを含み、アドレス変換プログラム・ロジックが、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換プログラム・ロジックを含み、アドレス変換プログラム・ロジックが、アドレス・タグ変換回路によって仮想アドレスに依存して行われることになる変換を選択する、コンピュータ・プログラムを提供する。 At least some examples are a computer program for controlling a host data processing device to provide an instruction execution environment for execution of instructions of target program code, the computer program comprising: a virtual tag portion and a virtual address; address translation program logic for converting a virtual address containing a part into a physical address including a physical tag part and a physical address part, the address translation program logic converting a virtual tag part into a physical tag part; A computer program product is provided that includes address tag translation program logic for performing an address tag translation program, the address translation program logic selecting a translation to be performed by the address tag translation circuit in dependence on a virtual address.

ストレージ媒体は、上述のコンピュータ・プログラムを格納することができる。ストレージ媒体は、非一時的ストレージ媒体であることが可能である。 A storage medium can store the computer program described above. A storage medium can be a non-transitory storage medium.

本技法は、以下の説明と共に読まれることになる、添付の図面に示されるような実施例を参照しながら、ほんの一例としてさらに説明される。 The present technique will be further described, by way of example only, with reference to embodiments as illustrated in the accompanying drawings, which shall be read in conjunction with the following description.

データ処理装置の実例を概略的に示す図である。1 is a diagram schematically showing an example of a data processing device; FIG. アドレス・タグがガード・タグにマッチするかどうかをチェックすることを含むタグ・ガード式メモリ・アクセス動作の実例を示す図である。FIG. 3 illustrates an example tag-guarded memory access operation that includes checking whether an address tag matches a guard tag. タグ・ガード式メモリ・アクセス動作を行う方法を示す流れ図である。2 is a flow diagram illustrating a method for performing tag-guarded memory access operations. カーネルによる使用のために1つの部分が予約され、ユーザ空間のために別の部分が予約される仮想アドレス空間を概略的に示す図である。1 schematically depicts a virtual address space in which one part is reserved for use by the kernel and another part for user space; FIG. アドレス変換回路及びアドレス・タグ変換回路を備えるデータ処理装置の実例を概略的に示す図である。1 is a diagram schematically showing an example of a data processing device including an address translation circuit and an address/tag translation circuit; FIG. 仮想タグ部の物理タグ部への変換のさらなる詳細を示す1つの実例におけるデータ処理装置のいくつかの構成要素を概略的に示す図である。Figure 3 schematically depicts several components of a data processing apparatus in one example illustrating further details of the conversion of a virtual tag part to a physical tag part. 1つの実例における図6のデータ処理装置のいくつかの構成要素を概略的に示す図である。7 schematically depicts some components of the data processing apparatus of FIG. 6 in one example; FIG. 仮想タグ部を物理タグ部に変換する方法を示す流れ図である。3 is a flowchart illustrating a method of converting a virtual tag part to a physical tag part. アドレス変換ロジックをサポートするシミュレータの実例を示す図である。FIG. 2 is a diagram illustrating an example of a simulator that supports address translation logic.

1つの実例において、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換回路であって、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換回路を備え、アドレス・タグ変換回路によって仮想アドレスに依存して行われることになる変換を選択する、アドレス変換回路を備える、装置がある。 In one example, an address translation circuit for translating a virtual address including a virtual tag portion and a virtual address portion to a physical address including a physical tag portion and a physical address portion, the physical tag portion of the virtual tag portion; There is an apparatus comprising an address-to-tag translation circuit for performing a translation to a virtual address and selecting a translation to be performed by the address-to-tag translation circuit in dependence on a virtual address.

物理アドレスに変換されることになる仮想アドレスは、プロセッサ・コアによる使用のために一意の仮想アドレスを定義するのに厳密に必要なものより広いビット幅を有する仮想アドレス空間において定義されることが可能である。例えば、命令セットのために64ビット・アドレス空間を使用するように構成された現代のアーキテクチャにおいて、プロセッサ・コアは、例えば64ビット・アドレス空間の下位48ビットしか使用できないように制限されることがあり、これより上位にあるビットは、何らかの方式で予約される。このアプローチは、例えば、ユーザ空間及びカーネル空間はそれぞれ、重複しない仮想アドレスの固有定義領域を有することができるので、有利である可能性がある。例えば、ユーザ空間及びカーネル空間がそれぞれ、(239=512GBの仮想アドレスをそれぞれ提供する)固有定義の39ビット・アドレス空間を含むシステムにおいて、1つのアプローチは、次に、例えば、全てのユーザ仮想アドレスが25個の先頭ゼロを含み、全てのカーネル仮想アドレスが25個の先頭1を含むように、ビットの先頭セットを用いて、ユーザ仮想アドレス及びカーネル仮想アドレスのこれらのセットにラベルを付けることである。例えば、これらは、最上位の「実」アドレス・ビットの符号拡張としてセットされることが可能である(これにより、予備部分は、全てゼロ又は全て1にセットされる)。ユーザ又はカーネルによって使用される仮想アドレスの先頭ビット部分の検査により、許可されたメモリ・アクセスが行われているかどうかの検証、及び違法なアクセスをトラップするための検証を行うことができる。 A virtual address that is to be translated into a physical address may be defined in a virtual address space that has a bit width wider than strictly necessary to define a unique virtual address for use by a processor core. It is possible. For example, in modern architectures configured to use 64-bit address spaces for instruction sets, processor cores may be limited to using, for example, only the lower 48 bits of the 64-bit address space. The upper bits are reserved in some way. This approach can be advantageous because, for example, user space and kernel space can each have uniquely defined regions of non-overlapping virtual addresses. For example, in a system where user space and kernel space each contain uniquely defined 39-bit address spaces (providing 2 39 = 512 GB of virtual addresses each), one approach is to then, e.g. Labeling these sets of user virtual addresses and kernel virtual addresses with leading sets of bits such that addresses contain 25 leading zeros and all kernel virtual addresses contain 25 leading ones. It is. For example, they can be set as the sign extension of the most significant "real" address bits (thereby setting the reserved part to all zeros or all ones). Inspection of the first bit portion of the virtual address used by the user or the kernel can verify whether authorized memory accesses are being made and to trap illegal accesses.

それでも、その結果、仮想アドレスの先頭ビット部分(の少なくとも大部分)が実質的に使用されない場合、これは、別の目的のためにこのビット空間が使用される機会をもたらす。しかし、これは、さらに、仮想アドレスの上位部分において使用されるエンコーディングが、仮想アドレス空間が使用される手法によって影響を受ける可能性があるということを意味する。ユーザ空間のために予約された部分、及びカーネル空間のために予約された部分を含む仮想アドレス空間の上述の実例において、(全てゼロ又は全て1にセットされた)仮想アドレスのビットの先頭部分が、所与のアドレスがユーザ空間のために予約されているか、カーネル空間のために予約されているかを示す場合、仮想アドレスのこの上位部分のためのデフォルトのビット・エンコーディングは、したがって、ユーザ空間及びカーネル空間に対して異なる。 Nevertheless, if the result is that (at least a large portion of) the leading bit portion of the virtual address is substantially unused, this provides an opportunity for this bit space to be used for another purpose. However, this also means that the encoding used in the upper part of the virtual address may be influenced by the manner in which the virtual address space is used. In the above example of a virtual address space that includes a portion reserved for user space and a portion reserved for kernel space, the leading portion of the bits of the virtual address (set to all zeros or all ones) is , indicates whether a given address is reserved for user space or kernel space, then the default bit encoding for this upper part of the virtual address is therefore user space and kernel space. Different for kernel space.

さらに、仮想アドレス空間のこの上位部分が大部分、使用されていない場合、このビット空間を使用して、ソフトウェアが追加の情報をメモリ・システムに信号を送れるようにすることが有利である可能性がある。この背景において、提供された装置は、変換を行うときに受信した仮想アドレスの仮想タグ部と仮想アドレス部とを区別し、物理タグ部及び物理アドレス部を含む物理アドレスに仮想アドレスを変換する、仮想アドレスを物理アドレスに変換するためのアドレス変換回路を備える。言い換えれば、仮想アドレス部は、ソフトウェアがアクセスを要求する特定のメモリ・アドレスを示すために物理アドレス部に変換されるが、仮想アドレスのさらなる部分、すなわち仮想タグ部は、物理タグ部に別々に変換され、この物理タグ部は、次に、さらなる情報をメモリ・アドレス・システムに伝えることができる。さらに、仮想タグ部から物理タグ部へのこの変換を行うとき、本技法の装置は、アドレス・タグ変換回路によってどのような種類の変換が行われることになるかを判定するときに、仮想アドレスの内容を考慮に入れる。言い換えれば、仮想アドレスのいくつかの特徴に依存して、異なる変換が使用されることが可能である。 Additionally, if this upper portion of the virtual address space is largely unused, it may be advantageous to use this bit space to allow software to signal additional information to the memory system. There is. In this context, the provided apparatus distinguishes between a virtual tag part and a virtual address part of a received virtual address when performing the translation, and translates the virtual address into a physical address comprising a physical tag part and a physical address part. An address conversion circuit is provided for converting a virtual address to a physical address. In other words, the virtual address part is translated into a physical address part to indicate the particular memory address that the software requests access to, but a further part of the virtual address, namely the virtual tag part, is separated into the physical tag part. Once translated, this physical tag portion can then convey further information to the memory addressing system. Furthermore, when performing this translation from a virtual tag part to a physical tag part, the apparatus of the present technique uses the virtual address Take into account the content of In other words, different translations may be used depending on some characteristics of the virtual address.

アドレス・タグ変換回路によって行われることになる変換のためにこのように仮想アドレスに依存することは、様々な方式で構成されることが可能であるが、いくつかの実例において、アドレス・タグ変換回路によって行われる変換は、仮想アドレス部の最上位ビットに依存する。仮想アドレス部のこの最上位ビットの意味は、特定の実装形態に応じて、及び実際には、仮想アドレス内の仮想タグ部と仮想アドレス部の間の境界がどこにあるかについての選択に応じて、変化する可能性があるということが認識されよう。 This reliance on virtual addresses for the translations to be performed by the address-tag translation circuitry can be configured in a variety of ways, but in some instances, the address-tag translation The translation performed by the circuit depends on the most significant bits of the virtual address part. The meaning of this most significant bit of the virtual address part depends on the particular implementation and, indeed, on the choice as to where the boundary between the virtual tag part and the virtual address part in the virtual address is. , it will be recognized that this is subject to change.

選択された変換が、仮想アドレス部の最上位ビットに依存する手法は、様々な形式であってよいが、いくつかの実例において、仮想アドレス部の最上位ビットが第1の値を含むとき、アドレス・タグ変換回路によって行われる選択された変換は、仮想タグ部にマッチする物理タグ部を生成し、最上位ビットが第2の値を含むとき、アドレス・タグ変換回路によって行われる選択された変換は、物理タグ部を生成するために仮想タグ部を修正する。したがって、最上位ビットが第1の値を含むとき、アドレス・タグ変換回路は、物理タグ部を生成するために仮想タグ部を修正しない。しかし、最上位ビットが第2の値を含むとき、仮想タグ部の修正は、物理タグ部を生成するために行われる。 The manner in which the selected translation depends on the most significant bits of the virtual address portion may take various forms, but in some instances, when the most significant bits of the virtual address portion include a first value, The selected translation performed by the address tag translation circuit produces a physical tag part that matches the virtual tag part, and when the most significant bit contains the second value, the selected translation performed by the address tag translation circuit produces a physical tag part that matches the virtual tag part; The translation modifies the virtual tag part to generate a physical tag part. Therefore, when the most significant bit contains the first value, the address-to-tag translation circuit does not modify the virtual tag part to generate a physical tag part. However, when the most significant bit contains a second value, modification of the virtual tag part is performed to generate a physical tag part.

上述のように、仮想アドレス部の最上位ビットの意味は変化する可能性がある。しかし、いくつかの実例において、装置は、カーネル固有処理及びユーザ固有処理のうちの1つによる排他使用のための仮想アドレスを配分するように設計され、仮想アドレス部の最上位ビットの値は、仮想アドレスがカーネル固有処理に配分されたか、ユーザ固有処理に配分されたかを示すものであることが可能である。これは、例えば、完全仮想アドレス空間の2つの別個且つ非重複部分が、カーネル処理及びユーザ固有処理にそれぞれ配分される上述のようなシステムの一部としてのものであることが可能であり、デフォルトで装置は、例えば、カーネル空間アドレスに対して1の連続セットで仮想アドレスの上位部分をポピュレートすること、及び、ユーザ空間アドレスに対してゼロの連続セットでこの同じ部分をポピュレートすること、を行うように設計される。本技法の背景において、これは、さらに、仮想アドレスがカーネル空間内に配分されたことが識別されたとき、仮想タグ部に変換を適用する一方で、ユーザ空間の一部として配分された仮想アドレスの一部を仮想タグ部が形成していることが識別されたとき、仮想タグ部に変換を適用しないようにアドレス変換回路が構成されることが可能であるということを意味する。仮想タグ部が、本当のアドレス自体の一部を形成しておらず、むしろ(場合によっては、特定のメモリ・アドレスに関連した、又は場合によっては、メモリ・システムへのより一般的なコマンド又は信号としての)他の情報をメモリ・システムに通信するために使用されることが可能である場合、このアプローチは、その結果として、アドレスがカーネル固有処理に属するか、ユーザ固有処理に属するかを、物理タグ部の生成が考慮できるようにする。 As mentioned above, the meaning of the most significant bits of the virtual address portion can change. However, in some instances, the apparatus is designed to allocate virtual addresses for exclusive use by one of a kernel-specific process and a user-specific process, and the value of the most significant bit of the virtual address portion is It may be an indication of whether the virtual address was allocated to kernel-specific processing or to user-specific processing. This could be, for example, as part of a system as described above, where two separate and non-overlapping parts of the full virtual address space are allocated to kernel processing and user-specific processing, respectively; For example, the device populates the upper part of the virtual address with consecutive sets of ones for kernel-space addresses, and populates this same part with consecutive sets of zeros for user-space addresses. Designed to be. In the context of the present technique, this also applies a transformation to the virtual tag part when a virtual address is identified as being allocated within kernel space, while the virtual address allocated as part of user space When it is identified that a virtual tag part forms a part of a virtual tag part, this means that the address translation circuit can be configured so as not to apply translation to the virtual tag part. The virtual tag part does not form part of the real address itself, but rather (in some cases related to a particular memory address, or in some cases a more general command or command to the memory system). If it is possible for other information (as signals) to be used to communicate to the memory system, this approach will result in the determination of whether the address belongs to a kernel-specific or a user-specific process. , so that the generation of the physical tag part can be taken into account.

この依存性は様々に構成されてよいが、いくつかの実例において、アドレス・タグ変換回路によって行われる選択された変換は、物理タグ部を生成するために仮想タグ部の少なくとも一部を反転することを含む。このような構成は、例えば、カーネル固有アドレスに対して1の連続セットによって、及びユーザ固有アドレスに対してゼロの連続セットで、デフォルトで仮想タグ部がポピュレートされるように、装置内のアドレス指定が構成されるときに使用されることが可能である。したがって、メモリ・アドレス・システムに情報を通信するために仮想タグ部の少なくとも一部が使用されるとき、仮想タグ部のこの少なくとも一部をこのように反転すると、仮想アドレスがカーネル固有処理のものであるか、ユーザ固有処理のものであるかに関わらず、メモリ・アドレス・システムに提示された情報のエンコーディングを同じものにすることができる。 Although this dependency may be configured differently, in some instances the selected translation performed by the address-to-tag translation circuitry inverts at least a portion of the virtual tag portion to generate the physical tag portion. Including. Such a configuration may be configured such that, for example, the addressing within the device is such that the virtual tag portion is populated by default with consecutive sets of ones for kernel-specific addresses and with consecutive sets of zeros for user-specific addresses. can be used when configured. Therefore, when at least a portion of the virtual tag portion is used to communicate information to the memory address system, inverting this at least portion of the virtual tag portion in this manner ensures that the virtual address is one for kernel-specific processing. The encoding of the information presented to the memory address system can be the same whether it is for user-specific processing or for user-specific processing.

他の実例において、アドレス・タグ変換回路によって行われる選択された変換は、物理タグ部を生成するために仮想タグ部の少なくとも一部をインクリメントすることを含むことができる。これは、例えば、アドレス空間の可能な限り小さい値で配分されるものがある一方で、アドレス空間の最上位において他の処理に配分されるものもあるように、仮想アドレス空間内のアドレスが種々の処理に配分される構成に適用できる可能性がある。例えば、仮想アドレス空間の上述のユーザ空間/カーネル空間の境界設定において、ゼロの完全セット(例えば64ビット)を含むアドレスが、ユーザ空間に配分されることが可能である一方で、1の完全なセットを含むアドレスは、カーネル空間に配分されることが可能である。可能な限り大きいアドレス(全て1)がインクリメントされる場合、この値は、64個のゼロの連続シーケンスを生み出すためにラップ・アラウンドすることになる(264を法とすることが可能なアドレスがある)。しかし、この変換は仮想タグ部にしか適用されないので、この実例において、仮想タグ部における1の連続セットは、物理タグ部におけるゼロの連続セットに変換されることになるということに留意されたい。仮想アドレス部における1の連続シーケンスは、物理アドレス部における1の連続シーケンスのままである。 In other examples, the selected translation performed by the address-to-tag translation circuit may include incrementing at least a portion of the virtual tag portion to generate a physical tag portion. This means that addresses in the virtual address space may vary, for example, some addresses may be allocated at the lowest possible value in the address space, while others may be allocated to other processes at the top of the address space. It may be applicable to configurations allocated to processing. For example, in the user space/kernel space delimitation described above for virtual address space, an address containing a complete set of zeros (e.g. 64 bits) can be allocated to user space, while a complete set of ones Addresses containing sets can be allocated in kernel space. If the largest possible address (all 1s) is incremented, this value will wrap around to produce a continuous sequence of 64 zeros (the address that can be modulo 2 64 is be). Note, however, that this conversion only applies to the virtual tag portion, so in this example, a consecutive set of ones in the virtual tag portion will be converted to a consecutive set of zeros in the physical tag portion. A consecutive sequence of 1's in the virtual address part remains a consecutive sequence of 1's in the physical address part.

いくつかの実例において、装置は、物理アドレスを受信し、物理アドレス部によって識別された記憶場所にアクセスするためのメモリ・システムをさらに備え、メモリ・システムは、物理アドレスの受信に応答して、物理タグ部の所定部分が所定値を含むとき、所定のメモリ動作を行う。したがって、物理タグ部、及びさらに言うと仮想タグ部は、メモリ・システムが所定のメモリ動作を行うために使用されることが可能である。これは、メモリ・システムについての有用な制御メカニズムをプロセッサ・コアに与える。 In some instances, the apparatus further comprises a memory system for receiving the physical address and accessing the storage location identified by the physical address portion, the memory system responsive to receiving the physical address; When a predetermined portion of the physical tag section includes a predetermined value, a predetermined memory operation is performed. Therefore, the physical tag portion, and by extension the virtual tag portion, can be used by the memory system to perform certain memory operations. This provides the processor core with a useful control mechanism over the memory system.

所定のメモリ動作は、システム要件及び特定の実装形態に応じて多種多様な形式であることが可能であるが、いくつかの実例において、所定のメモリ動作は、物理タグ部の、記憶場所と関連付けられたガード・タグ値とのガード・タグ比較であり、メモリ・システムは、物理タグ部とガード・タグ値がマッチ条件を満たさないことに応答して、フォルト(fault)状態を示す。このようにして、このような装置において、物理アドレス部によって指定された記憶場所に関連してメモリ・システムに格納されたガード・タグが提供され、物理タグ部とガード・タグ値がマッチ条件を満たすことが要求されることによって、記憶場所へのアクセスに対して制御を及ぼすことが可能になる。マッチ条件が満たされなかったことを示すフォルト状態は、様々な方式で使用されることが可能である。例えば、フォルト状態は、この記憶場所にアクセスするのを防ぐために使用されることが可能であるが、これは、フォルト状態が使用されるただ1つの手法ではなく、他の実例において、フォルト状態は、マッチ条件が満たされなかったが、依然としてアクセスを続行できることを示すために、装置の別の部分に単に信号で送られる(例えば、プロセッサ・コアに戻す)ことが可能である。このようにして、物理タグ部とガード・タグ値の比較の結論は、メモリ・アクセスを続けることができるかどうか、若しくは、その後の動作を続けることができるかどうかを制御するために使用されることが可能であり、又は、いつものようにメモリ・アクセスを続けられる間、単にレポートされることが可能である。 Although the predetermined memory operation can take a wide variety of forms depending on system requirements and the particular implementation, in some instances the predetermined memory operation is associated with a storage location of a physical tag portion. The memory system indicates a fault condition in response to the physical tag portion and the guard tag value not meeting the match condition. Thus, in such devices, a guard tag is provided that is stored in the memory system in association with the memory location specified by the physical address portion, and the physical tag portion and the guard tag value satisfy a match condition. The requirements allow for control to be exerted over access to storage locations. A fault condition indicating that a match condition was not met can be used in a variety of ways. For example, a fault condition may be used to prevent access to this storage location, but this is not the only technique in which a fault condition is used; in other instances, a fault condition may be , it may simply be signaled to another part of the device (eg, back to the processor core) to indicate that the match condition was not met, but access can still proceed. In this way, the conclusion of the comparison of the physical tag part and the guard tag value is used to control whether the memory access can continue or whether subsequent operations can continue. or simply be reported while memory accesses continue as usual.

このようなガード・タグ・チェックを行うようにメモリ・システムが構成されるこのような構成において、ガード・タグ比較が行われることになる特定の手法を制御するために、物理タグ部の少なくとも一部を使用することができる。いくつかの実例において、物理タグ部の所定部分が所定値を含むとき、マッチ条件は、いずれかのガード・タグ値がマッチ条件を満たすようなmatch-all条件である。したがって、事実上これにより、いずれかのガード・タグ値がマッチ条件を満たすことになり、したがって、フォルト状態が生成されなくなるので、フォルト状態を信号で送ることができなくなる。 In such configurations where the memory system is configured to perform such guard tag checking, at least one of the physical tag portions is configured to control the particular manner in which the guard tag comparison is to be performed. can be used. In some instances, when the predetermined portion of the physical tag portion includes the predetermined value, the match condition is a match-all condition such that any guard tag value satisfies the match condition. Therefore, this effectively prevents the fault condition from being signaled because any guard tag value will satisfy the match condition and therefore no fault condition will be generated.

いくつかの実例において、物理タグ部の所定部分が所定値を含まないとき、マッチ条件は、マッチ条件を満たすために、物理タグ部の所定部分とガード・タグ値が同じでなければならないようなmatch-one条件である。このようにして、逆に、物理タグ部の所定部分は、この部分が上述の「match-all」値を含まない場合にマッチ条件を満たすことが明示的に要求される可能性がある。物理タグ部の所定部分は、したがって、マッチ条件を満たすためにガード・タグ値が含まなければならない特定の値を指定するために使用されることが可能である。例えば、これは、例えば、メモリ・アドレスが配分された特定の処理に依存して、これらのメモリ・アドレスをカテゴライズするためにシステムによって使用されることが可能であり、その結果、特定のメモリ・アドレスが配分された処理だけが、フォルト状態をトリガせずにこのメモリ・アドレスにアクセスすることができる。 In some instances, when the predetermined portion of the physical tag portion does not contain the predetermined value, the match condition may be such that the predetermined portion of the physical tag portion and the guard tag value must be the same in order to satisfy the match condition. This is a match-one condition. In this way, conversely, a given portion of the physical tag portion may be explicitly required to satisfy the match condition if this portion does not contain the above-mentioned “match-all” value. The predetermined portion of the physical tag portion can therefore be used to specify the particular value that the guard tag value must contain in order to satisfy the match condition. For example, this can be used by the system to categorize memory addresses, e.g. depending on the particular process to which they are allocated, so that certain memory Only the process to which the address was allocated can access this memory address without triggering a fault condition.

物理タグ部の所定部分は様々に定義されてよいが、いくつかの実例において、物理タグ部の所定部分は、物理タグ部のビットの所定セットである。ビットのこの所定のセットは様々に定義されてよいが、16個の種々の順列が、例えば、上述の「match-all」値として1つを残して定義されるような、また、残りが、次に、メモリ・アドレスの15個の種々のカテゴリ化をシステム内で定義できる「match-one」値として個別に使用される場合の、例えば、(ただ1つの例証となる実例を挙げると)4ビットのセットであることが可能である。一般に、物理タグ部の任意の数のビットは、このように使用されることが可能であり、これに対応して、カテゴリ化のより大きいセット又はより小さいセットを定義することができる。 Although the predetermined portion of the physical tag portion may be defined differently, in some instances the predetermined portion of the physical tag portion is a predetermined set of bits of the physical tag portion. This predetermined set of bits may be variously defined, but 16 different permutations may be defined, for example, all but one is defined as the "match-all" value mentioned above, and the rest are Then, for example (to take just one illustrative example), 15 different categorizations of memory addresses, when used individually as "match-one" values that can be defined within the system. Can be a set of bits. In general, any number of bits of the physical tag portion can be used in this way, and correspondingly larger or smaller sets of categorizations can be defined.

この上述の「match-all」値が、「match-one」値のセットからのメモリ・システムへの影響とは異なるということが理解される場合、アドレス・タグ変換回路は、様々な状況の下での所定値を有する物理タグ部の所定部分の生成を強制するように設計されることが可能である。例えば、いくつかの実例において、アドレス・タグ変換回路は、所定値を含む仮想タグ部の所定ビットに応答して物理タグ部を生成し、物理タグ部の所定部分は、仮想タグ部の他の所定ビットの値に関係のない所定値を含む。このように、仮想タグ部の所定ビットは、このようにして、メモリ・システムによって「match-all」比較が行われることを強制するための制御ビットとして振る舞う。 If it is understood that this above-mentioned "match-all" value is different from the effect on the memory system from the set of "match-one" values, then the address tag translation circuit will be can be designed to force the generation of a predetermined portion of the physical tag part with a predetermined value at . For example, in some implementations, the address-to-tag translation circuitry generates a physical tag portion in response to a predetermined bit of the virtual tag portion that includes a predetermined value, and the predetermined portion of the physical tag portion is different from other portions of the virtual tag portion. Contains a predetermined value that is unrelated to the value of the predetermined bit. Thus, certain bits of the virtual tag portion thus act as control bits to force a "match-all" comparison to be performed by the memory system.

match-all比較が行われることをトリガする物理タグ部の所定部分は様々に定義されてよいが、いくつかの実施例において、物理タグ部の所定部分は、物理タグ部の所定ビットである。match-all比較を行うべきか否かについてのメモリ・システムへの信号は、このようにして、(他の情報をメモリ・システムに通信するための物理タグ部の他のビットを潜在的に残して)物理タグ部の単一ビットだけによって通信されることが可能である。 Although the predetermined portion of the physical tag portion that triggers a match-all comparison to be performed may be defined differently, in some embodiments the predetermined portion of the physical tag portion is a predetermined bit of the physical tag portion. The signal to the memory system as to whether or not to perform a match-all comparison is thus transmitted (potentially leaving other bits of the physical tag part to communicate other information to the memory system). ) can be communicated by only a single bit of the physical tag part.

物理タグ部とガード・タグ値との間のガード・タグ比較は様々に構成されてよいが、いくつかの実例において、ガード・タグ比較は、物理タグ部の全ての、記憶場所と関連付けられたガード・タグ値との比較より小さいものである。 Although a guard tag comparison between a physical tag portion and a guard tag value may be configured in a variety of ways, in some instances, a guard tag comparison may be configured such that all of the physical tag portions are associated with a storage location. It is smaller than the guard tag value.

さらに、物理タグ部の所定部分の所定値は様々に定義されてよいが、いくつかの実例において、仮想タグ部は、物理アドレスに含まれる少なくとも1つのビットを含み、メモリ・システムは、少なくとも1つのビットに応答して、記憶場所にライト・アクセスが行われるとき、記憶場所と関連付けられたガード・タグの上書きを制御する。このようにして、仮想タグ部のビットを定義する処理は、この少なくとも1つのビットを使用して、記憶場所に対してライト・アクセスがどのように行われることになるかについてメモリ・システムに通信し、この実例において、ライト・アクセスが行われるとき、記憶場所と関連付けられたガード・タグの上書きを制御することができる。原則として、記憶場所に対してライト・アクセスが行われるとき、一般に、定義されたガード・タグ配分を、記憶場所にアクセスする処理が遵守している場合、これは変更するべきではないので、この記憶場所と関連付けられたガード・タグが更新されるのは必須ではないが、ガード・タグの上書きの制御は、ライト・アクセスが行われるときにガード・タグ値が上書きされることを強制することによって、ライト・アクセスを行っている処理が、そのように行うことを正しく許可される追加のレベルの検証を提供する。 Further, although the predetermined values of the predetermined portions of the physical tag portion may be variously defined, in some instances the virtual tag portion includes at least one bit included in the physical address, and the memory system includes at least one bit included in the physical address. control overwriting of a guard tag associated with a storage location when a write access is made to the storage location. In this way, the process of defining the bits of the virtual tag portion uses this at least one bit to communicate to the memory system about how a write access is to be made to the storage location. However, in this example, when a write access is made, overwriting of the guard tag associated with the storage location can be controlled. In principle, when a write access is made to a storage location, this should not change if the process accessing the storage location generally respects the defined guard tag distribution. Although it is not mandatory that the guard tag associated with a storage location be updated, the guard tag override control forces the guard tag value to be overwritten when a write access is made. provides an additional level of verification that processes making write accesses are correctly authorized to do so.

いくつかの実例において、仮想タグ部及び仮想アドレス部を含む仮想アドレスに対して行われることになる、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を選択することであって、仮想アドレスに依存する、選択することと、仮想タグ部を物理タグ部に変換するために変換を行うことと、を含む方法がある。 In some instances, selecting a translation to a physical address that includes a physical tag portion and a physical address portion to be performed on a virtual address that includes a virtual tag portion and a virtual address portion, the virtual address Depending on the method, the method includes selecting and performing a transformation to convert the virtual tag part to a physical tag part.

いくつかの実例において、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換プログラム・ロジックを含み、アドレス変換プログラム・ロジックが、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換プログラム・ロジックを含み、アドレス変換プログラム・ロジックが、アドレス・タグ変換回路によって仮想アドレスに依存して行われることになる変換を選択する、コンピュータ・プログラムがある。 In some instances, the address translation program logic includes address translation program logic for translating a virtual address that includes a virtual tag portion and a virtual address portion to a physical address that includes a physical tag portion and a physical address portion; includes an address tag translation program logic for converting a virtual tag part to a physical tag part, and the address translation program logic is performed by the address tag translation circuit depending on the virtual address. There is a computer program that selects the conversion.

いくつかの実例において、上述のコンピュータ・プログラムを格納するストレージ媒体があり、このストレージ媒体は、非一時的ストレージ媒体であることが可能である。 In some instances, there is a storage medium that stores the computer program described above, and the storage medium can be a non-transitory storage medium.

いくつかの特定の実施例が、図を参照しながらこれから説明される。 Some specific embodiments will now be described with reference to the figures.

図1は、データ処理装置2の実例を概略的に示す。これは単に、装置の構成要素のサブセットの高レベル表現であり、装置は、示されていない他の多くの構成要素を含むことができるということが理解されよう。装置2は、命令デコーダ6によってデコードされた命令に応答してデータ処理を行う処理回路4を備える。命令デコーダ6は、命令キャッシュ8からフェッチされた命令をデコードして、処理回路4を制御するための制御信号10を生成し、それによって、命令に相当する対応処理動作を行う。処理回路4は、レジスタに書き戻されることになる結果の値を生成するために、レジスタ14に格納されている値に対する動作を行うための1つ又は複数の実行ユニットを含むことができる。例えば、実行ユニットは、算術演算若しくは論理演算を実行するための算術/論理ユニット(ALU)、浮動小数点オペランドを使用して動作を実行するための浮動小数点ユニット、及び/又は複数の独立データ要素を含むオペランドに対してベクトル演算を行うためのベクトル処理ユニットを含むことができる。処理回路は、レジスタ14とメモリ・システムとの間のデータの移送を制御するための(例えばロード/格納ユニットを含む)メモリ・アクセス回路15も含む。この実例において、メモリ・システムは、命令キャッシュ8、レベル1(Ll)データ・キャッシュ16、データと命令との間で共有されるレベル2(L2)キャッシュ17、及びメイン・メモリ18を含む。他のキャッシュ階層も可能であり、これは1つの実例に過ぎないということが理解されよう。メモリ管理ユニット(MMU:memory management unit)20は、ロード/格納ユニット15によってトリガされたメモリ・アクセスをサポートするためのアドレス変換機能を行うために提供される。MMUは、メモリ・システム16、17、18に格納されたページ・テーブルからのエントリのサブセットをキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB)22を備える。各ページ・テーブルのエントリは、アドレスの対応するページに対するアドレス変換マッピングを提供することができ、ページがリード・オンリの領域であるか、可読及び書込み可能の両方であるかを指定するアクセス許可、又は、どの特権レベルがページにアクセスできるかを指定するアクセス許可などの、アクセス制御パラメータを指定することもできる。 FIG. 1 schematically shows an example of a data processing device 2. As shown in FIG. It will be appreciated that this is merely a high-level representation of a subset of the components of the device, and that the device may include many other components not shown. The device 2 includes a processing circuit 4 that performs data processing in response to instructions decoded by an instruction decoder 6. The instruction decoder 6 decodes the instruction fetched from the instruction cache 8 and generates a control signal 10 for controlling the processing circuit 4, thereby performing a corresponding processing operation corresponding to the instruction. Processing circuitry 4 may include one or more execution units for performing operations on values stored in registers 14 to generate resultant values that are to be written back to the registers. For example, an execution unit may include an arithmetic/logic unit (ALU) for performing arithmetic or logical operations, a floating point unit for performing operations using floating point operands, and/or multiple independent data elements. A vector processing unit may be included for performing vector operations on the included operands. The processing circuitry also includes memory access circuitry 15 (eg, including a load/store unit) for controlling the transfer of data between registers 14 and the memory system. In this example, the memory system includes an instruction cache 8, a level 1 (Ll) data cache 16, a level 2 (L2) cache 17 shared between data and instructions, and main memory 18. It will be appreciated that other cache hierarchies are possible and this is just one example. A memory management unit (MMU) 20 is provided to perform address translation functions to support memory accesses triggered by the load/store unit 15. The MMU includes a translation lookaside buffer (TLB) 22 for caching a subset of entries from page tables stored in memory systems 16, 17, 18. Each page table entry can provide an address translation mapping of addresses to the corresponding page, access permissions specifying whether the page is a read-only region or both readable and writable; Alternatively, access control parameters can be specified, such as access permissions that specify which privilege levels can access the page.

図2は、タグ・ガード式メモリ・アクセスの概念を概略的に示す。メモリ・システム内の記憶場所を参照するために使用される物理アドレス空間は、いくつかのブロック30に論理的に区分されることが可能であり、それぞれは、一定数のアドレス指定可能な位置を含む。簡潔さのために、図2の実例において、各ブロック30は4つの記憶場所を含むが、他のブロック・サイズも同様に使用されることが可能である。各ブロック30は、対応するガード・タグ32と関連付けられる。一定数のブロック30と関連付けられたガード・タグは、ひとまとめにされ、物理アドレス空間内の異なる構造的にアクセス可能な記憶場所34の中、又は、構造的にアクセス可能ではない(同じ物理アドレス空間にマッピングされていない)、メイン・メモリ18内に用意された追加の格納先に格納されることが可能である。別個の構造的にアクセス可能でないストレージの使用は、場合によっては、通常のコードの実行に影響を及ぼす恐れがあり、コヒーレンス管理をより複雑にする恐れのある、ガード・タグ値をキャッシュするためのデータ・キャッシュ16、17内の空間を使用し尽くすこと、を避けるのに好ましい可能性がある。追加のタグ・キャッシュ19は、メイン・メモリ18からタグにアクセスしなければならない場合よりアクセスを高速にするために、構造的にアクセス可能でないストレージからのタグ値をキャッシュするために、マイクロ・アーキテクチャの中で提供されることが可能である。タグ格納先34が各ブロック30に対応する特定のマッピングは、ロード/格納ユニット15によって制御されることが可能であり、配線で接続されること、又はプログラム可能であることが可能である。図2において、各タグ32は、物理アドレスのブロックと関連付けられているが、仮想メモリ・アドレス空間内の仮想記憶場所と関連付けられたガード・タグ32を提供することも可能であるはずであるが、これは、各メモリ・アクセスに対していくつかの追加のアドレス変換を必要とする可能性がある。したがって、ガード・タグ32を物理記憶場所と関連付けることによって、これは、性能を改善することができる。一般に、これは、物理アドレス空間の対応するブロック30と、ガード・タグ32が正確にどのように関連付けられるかについての、特定のマイクロ・アーキテクチャの実装形態の選択である。一般に、必要とされるものは全て、メモリの所与のブロックと関連付けられたガード・タグ32がアクセスされ、比較されることが可能であるというものである。 FIG. 2 schematically illustrates the concept of tag-guarded memory access. The physical address space used to refer to memory locations within a memory system may be logically partitioned into a number of blocks 30, each containing a certain number of addressable locations. include. For simplicity, in the example of FIG. 2, each block 30 includes four memory locations, but other block sizes may be used as well. Each block 30 is associated with a corresponding guard tag 32. Guard tags associated with a certain number of blocks 30 may be grouped together and placed in different structurally accessible memory locations 34 within the physical address space or not structurally accessible (in the same physical address space). (not mapped to the main memory 18) may be stored in additional storage locations provided within the main memory 18. The use of separate, structurally inaccessible storage for caching guard tag values can sometimes impact normal code execution and make coherence management more complex. It may be advantageous to avoid running out of space in the data caches 16, 17. An additional tag cache 19 is provided in the microarchitecture for caching tag values from storage that is not structurally accessible for faster access than if the tags had to be accessed from main memory 18. It is possible to be provided within. The specific mapping of tag storage locations 34 to each block 30 can be controlled by the load/store unit 15 and can be hardwired or programmable. Although in FIG. 2 each tag 32 is associated with a block of physical addresses, it would also be possible to provide guard tags 32 associated with a virtual memory location within a virtual memory address space. , which may require some additional address translations for each memory access. Therefore, by associating guard tags 32 with physical storage locations, this can improve performance. Generally, this is a particular micro-architectural implementation choice as to exactly how the guard tag 32 is associated with the corresponding block 30 of the physical address space. Generally, all that is required is that the guard tags 32 associated with a given block of memory can be accessed and compared.

したがって、タグ・ガード式メモリ・アクセスが必要なとき、(アクセスされることになるアドレス指定位置44を識別するターゲット・アドレス42と関連付けられた)アドレス・タグ40は、アドレス指定位置44を含む記憶場所30のブロックと関連付けられたガード・タグ32と比較されることが可能である。例えば、図2において、ターゲット・アドレス42は、図2のアドレス空間内で44とマークされたメモリ内の一定の位置B1を指す。したがって、位置B1を含む位置Bのブロックと関連付けられたガード・タグBは、ターゲット・アドレス42と関連付けられたアドレス・タグ40と比較される。図2の一番上に示されているように、アドレス・タグ4は、ターゲット・アドレス自体の選択されたビットに応じて決定されることが可能である。特に、アドレス・タグは、アドレス指定位置44として選択されることになる特定の記憶場所を示すために使用されていないターゲット・アドレスの一部の中のビットから決定されることが可能である。例えば、いくつかのアーキテクチャにおいて、ターゲット・アドレスのビットの最上位部分は、常に、符号拡張などの一定の固定値(オール0又はオール1)を含むことができるので、アドレスは、これらの未使用ビットを任意のタグ値で上書きすることによってアドレス・タグ40でタグ付けされることが可能である。例えばプログラマ又はコンパイラによって特定のアドレス・タグ値が選択されることが可能である。アドレス・タグ及びガード・タグ32は、例えば4ビットといった、比較的少ない数のビットであることが可能なので、メモリ内及びターゲット・アドレス内の多くの空間を占有する必要がない。4ビットのタグ空間、すなわちタグの16個の可能な値を提供することは、しばしば、多くの共通タイプのメモリ・アクセス・エラーを検出するのに十分である可能性がある。 Thus, when a tag-guarded memory access is required, the address tag 40 (associated with the target address 42 that identifies the addressed location 44 to be accessed) A guard tag 32 associated with a block at location 30 can be compared. For example, in FIG. 2, target address 42 points to a location B1 in memory marked 44 within the address space of FIG. Accordingly, the guard tag B associated with the block at location B, including location B1, is compared to the address tag 40 associated with the target address 42. As shown at the top of FIG. 2, the address tag 4 can be determined depending on the selected bits of the target address itself. In particular, the address tag may be determined from bits within the portion of the target address that are not used to indicate the particular memory location that is to be selected as the addressing location 44. For example, in some architectures, the most significant part of the bits of the target address may always contain some fixed value (all 0s or all 1s), such as sign extension, so that the address It can be tagged with an address tag 40 by overwriting the bit with an arbitrary tag value. For example, a particular address tag value can be selected by a programmer or compiler. The address tag and guard tag 32 can be a relatively small number of bits, for example 4 bits, so they do not need to occupy much space in memory and in the target address. Providing a 4-bit tag space, or 16 possible values for a tag, can often be sufficient to detect many common types of memory access errors.

したがって、タグ・ガード式メモリ・アクセスが行われるとき、アドレス・タグ40と、アドレス指定位置44を含むブロック30と関連付けられたガード・タグ32との間で比較が行われ、これらがマッチするかどうかについて判定が行われる。図1の実例の構成において、ロード/格納ユニット15と物理メモリ18との間のどこでも比較が行われることが可能である(及び実際は、この経路に沿って分散されることが可能である)ということに留意されたい。しかしこの実例において、比較は、簡略化のために、ロード/格納ユニット15によって比較が行われるという観点から説明される。ロード/格納ユニット15は、アドレス・タグ40とガード・タグ32がマッチしたかどうかを示すマッチ指標を生成する。例えば、このマッチ指標は、アドレス・タグ40とガード・タグ32との間にミスマッチがある場合に生成されるフォルト信号60、又は、マッチがあったかどうかを示す状態レジスタ内にある指標、又は、エラーが検出されたアドレス、及び/若しくはエラーをトリガした命令の命令アドレスを示すためのエラー・レポートに追加されたエントリ、であることが可能である。 Therefore, when a tag-guarded memory access is made, a comparison is made between the address tag 40 and the guard tag 32 associated with the block 30 containing the addressed location 44 to see if they match. A judgment will be made as to whether In the illustrative configuration of FIG. 1, comparisons can be made (and in fact distributed along this path) anywhere between the load/store unit 15 and the physical memory 18. Please note that. However, in this example, the comparison will be described in terms of the comparison being performed by the load/storage unit 15 for simplicity. Load/store unit 15 generates a match indicator indicating whether address tag 40 and guard tag 32 match. For example, this match indicator may be a fault signal 60 generated if there is a mismatch between address tag 40 and guard tag 32, or an indicator in a status register indicating whether there was a match, or an error signal. may be an entry added to the error report to indicate the address where the error was detected and/or the instruction address of the instruction that triggered the error.

図3は、タグ・ガード式メモリ・アクセスをハンドリングするための流れ図を示す。メモリ・アクセスをトリガする命令は、アドレス・タグ及びターゲット・アドレスを指定することができる。図2に示されているように、いくつかのケースにおいて、アドレス・タグは、ターゲット・アドレス自体のビットのサブセットから実際に導出されることが可能であるが、他の実例において、別個のレジスタで指定されることが可能である。ステップ50において、タグ・ガード式メモリ・アクセスをトリガする命令が発生する。それに応じて、ステップ52において、メモリ・アクセス回路15は、ターゲット・アドレスによって識別されたアドレス指定位置44へのメモリ・アクセスをトリガする。また、ステップ54において、メモリ・アクセス回路15は、ターゲット・アドレスによって識別されたアドレス指定位置44を含む、記憶場所30のブロックに関連のある、メモリ・システムに格納されたガード・タグ32を取得する。ステップ56において、メモリ・アクセス回路15は、ステップ54において取得されたガード・タグ32と、アドレス・タグ40を比較する。ステップ58において、ガード・タグとアドレス・タグとの間でマッチが検出されたかどうかについての指標が、メモリ・アクセス回路15によって生成される(例えば、上述のマッチ/ミスマッチ・レポート指標のタイプのいずれか)。いずれかのミスマッチをレポートするために使用される正確な指標は、実装形態によって変化する可能性がある。 FIG. 3 shows a flow diagram for handling tag-guarded memory accesses. Instructions that trigger memory accesses can specify an address tag and a target address. As shown in Figure 2, in some cases the address tag can actually be derived from a subset of the bits of the target address itself, while in other instances it is stored in a separate register. It is possible to specify At step 50, an instruction is generated that triggers a tag-guarded memory access. Accordingly, in step 52, memory access circuit 15 triggers a memory access to the addressed location 44 identified by the target address. Also, in step 54, memory access circuit 15 obtains the guard tag 32 stored in the memory system associated with the block of memory locations 30 that includes the addressed location 44 identified by the target address. do. In step 56, memory access circuit 15 compares guard tag 32 obtained in step 54 with address tag 40. At step 58, an indication as to whether a match is detected between the guard tag and the address tag is generated by the memory access circuit 15 (e.g., any of the types of match/mismatch reporting indicators described above). mosquito). The exact metrics used to report any mismatches may vary depending on implementation.

図4は、実例の実施例において使用されることが可能な仮想アドレス空間60の図を概略的に示す。図は、この64ビット・アドレス空間において指定されることが可能な仮想アドレスの全範囲を示し、上位部分62が、カーネル使用のために予約されているものとして示されている一方で、下位部分64は、ユーザ空間として予約されているものとして示されている。したがって、カーネル空間における仮想アドレスは、連続した1の先頭(最上位)セットを含む一方で、ユーザ空間における仮想アドレスは、先頭ゼロの対応する連続セットを含む。図にさらに記されているように、この仮想アドレス空間への参照は264を法とする手法で行われ、その結果、0xFF...FFより上位の仮想アドレスへの参照をインクリメントすると、最小定義アドレス0x00...00にラップ・アラウンドするという点において、この空間において定義されることが可能な最小アドレス(0x00...00)と最大アドレス(0xFF...FF)は互いに「隣接」している。 FIG. 4 schematically shows a diagram of a virtual address space 60 that can be used in an illustrative embodiment. The figure shows the full range of virtual addresses that can be specified in this 64-bit address space, with the upper part 62 shown as being reserved for kernel use, while the lower part 62 64 is shown as being reserved as user space. Thus, a virtual address in kernel space includes a leading (most significant) set of consecutive ones, while a virtual address in user space includes a corresponding consecutive set of leading zeros. As further noted in the figure, references to this virtual address space are made in a modulo 264 manner, resulting in 0xFF. .. .. When you increment the reference to the virtual address above FF, the minimum defined address 0x00. .. .. The smallest address (0x00...00) and largest address (0xFF...FF) that can be defined in this space are "adjacent" to each other in that they wrap around to 00.

上述のように、プロセッサ・コアにおいて(すなわち、例えば、処理回路4において)使用される仮想アドレスは、メモリ・システムのハードウェアにおいて使用される物理アドレスに変換され、図5は、これをサポートするために提供される実例の回路を概略的に示す。示された装置70は、タグ変換回路72、アドレス変換回路74、及び制御回路76を備える。制御回路76は、タグ変換回路72及びアドレス変換回路74の動作を制御する。必要であれば、制御回路76も、仮想アドレスと物理アドレスとの間の定義された変換を格納するページ・テーブル78内のエントリを参照する。このようにして、装置70によって受信された仮想アドレス80は、物理アドレス82に変換され、これは次に、必要に応じて関連物理アドレスにアクセスするために、メモリ・システム84にさらに渡される。仮想アドレス80は、2つの部分、すなわち仮想アドレス部86及び仮想タグ部88においてハンドリングされる。示される実例において、仮想アドレスは64ビットであり、ビット[55:0]は仮想アドレス部を形成し、ビット[63:56]は仮想タグ部を形成する。仮想タグ部の最大ビットは、代替として、例えば、64ビット・アドレスのビット[63:60]が単純に、特定の実装形態において使用されない場合、ビット[59]であるとみなされることが可能であるということを図5が示しているということに留意されたい。このようにして、仮想アドレス部は、装置70内のアドレス変換回路74によって受信され、制御回路76の制御下で、この仮想アドレスは、当業者が見慣れているはずの手法で、対応する物理アドレスに変換される。しかし、さらに仮想タグ部88は、装置70のタグ変換回路72によって受信され、この回路は、仮想タグ部を物理タグ部92に変換することができる。この仮想タグから物理タグへの変換のさらなる詳細は、図6、図7、及び図8を参照しながら下記において説明される。 As mentioned above, the virtual addresses used in the processor core (i.e., e.g., in the processing circuit 4) are translated into physical addresses used in the memory system hardware, and FIG. 5 supports this. 1 schematically shows an example circuit provided for the purpose of the present invention; The illustrated device 70 includes a tag translation circuit 72, an address translation circuit 74, and a control circuit 76. The control circuit 76 controls the operations of the tag conversion circuit 72 and the address conversion circuit 74. If necessary, control circuit 76 also references entries in page table 78 that store defined translations between virtual and physical addresses. In this manner, the virtual address 80 received by device 70 is translated into a physical address 82, which is then further passed to memory system 84 for accessing the associated physical address as required. Virtual address 80 is handled in two parts: virtual address part 86 and virtual tag part 88. In the example shown, the virtual address is 64 bits, with bits [55:0] forming the virtual address portion and bits [63:56] forming the virtual tag portion. The largest bit of the virtual tag portion can alternatively be considered to be bits [59], for example, if bits [63:60] of a 64-bit address are simply not used in a particular implementation. Note that FIG. 5 shows that there is. In this way, a virtual address portion is received by address translation circuitry 74 within device 70 and, under the control of control circuitry 76, this virtual address is converted into a corresponding physical address in a manner that should be familiar to those skilled in the art. is converted to However, in addition, virtual tag portion 88 is received by tag translation circuitry 72 of device 70, which circuitry may convert the virtual tag portion to a physical tag portion 92. Further details of this virtual tag to physical tag conversion are explained below with reference to FIGS. 6, 7, and 8.

図6は、仮想タグ部を物理タグ部に変換するために提供される回路の実例を、より詳細に概略的に示す。図5の実例におけるように、(ビット[63:56]を含む)仮想タグ部、及び(ビット[55:0]を含む)仮想アドレス部を含む仮想アドレス80が示されている。仮想タグ部内のビットは、異なる使用を行うことができ、図に示されるように、「t」とラベルを付けられた仮想タグ部([59:56])の最小4ビットは、変換される仮想タグ部を形成する。これより上位の仮想タグ部の残りのビット([63:60])は、下記においてより詳細に説明されるような異なる機能を果たす。仮想タグ部のビット「t」のセットは、ビットのこのセットのための2つの可能な経路を提供するタグ変換回路72によって受信される。これらの経路のどれが続くかは、制御回路76の制御の下、多重化装置94、96の設定によって決定される。本質的にこれは、タグ変換回路を通る直接経路、又は、構成可能な変換回路98を経由して進む経路である。示された実例において、制御回路76は、仮想アドレス部の最上位ビット(ビット[55])に基づいて変換選択を行う。このようにして、このビットがセットされるとき、変換回路98を経由する経路が選ばれるが、このビットがセットされないとき、タグ変換回路72を通る直接経路が選択される。この制御は、if VA[55]=1 PA[t]=t-bar else PA[t]=tという、論理ステートメントによって図6の右側に示されている。言い換えれば、ビット55がセットされると、tは反転され、そうでなければ、tは、変更されずに伝搬される。しかし反転は、行われることが可能なただ1つの変換ではなく、変換回路98によって行われる変換は、構成設定100に応じて変化することが可能である。別の実例において、変換は、部分tによって表現される値のインクリメントであることが可能であり、他の変換も同様に予想できる。装置が動作する手法は、仮想タグ部内の他のビットによる影響を受ける可能性もある。図6に示されるように、(mとラベルを付けられた)別のビットも、制御回路76によって受信される。ここで、ガード・タグ制御回路の制御の下、(例えば、図2及び図3を参照しながら上述されたような)タグ・ガード式メモリ・アクセスを含むメモリ・システムにおける使用のために物理アドレスが生成される実例が示され、追加ビット「m」は、このタグ・ガード式メモリ・アクセスが行われる手法に対して制御を及ぼすために使用されることが可能である。図6に示された実例において、「m」ビットは、「match_all」又は「match_one」条件を定義するために、タグ変換回路72によって生成された4ビットのセット102がメモリ・システムによって使用されるかどうかを判定する。言い換えれば、このmビットの設定に応じて、タグ・ガード式メモリ・アクセスは、ビット102のための物理アドレス・タグと、(match_one条件における)関連メモリ・アドレスに関連のある格納されたガード・タグとの間のマッチが必要になるか、又は、ビットのいずれかのアドレス・タグのセットが(match_all条件における)マッチを満たすことが実質的にできるようになる。 FIG. 6 schematically illustrates in more detail an example of the circuit provided for converting a virtual tag part into a physical tag part. As in the illustration of FIG. 5, a virtual address 80 is shown including a virtual tag portion (including bits [63:56]) and a virtual address portion (including bits [55:0]). The bits in the virtual tag part can have different uses, as shown in the figure, a minimum of 4 bits of the virtual tag part ([59:56]) labeled "t" are translated. Form a virtual tag part. The remaining bits of the higher virtual tag portion ([63:60]) serve different functions as explained in more detail below. The set of bits "t" of the virtual tag portion is received by tag translation circuit 72, which provides two possible paths for this set of bits. Which of these paths follows is determined by the settings of multiplexers 94, 96 under control of control circuit 76. Essentially this is a direct route through the tag translation circuit or a route via the configurable translation circuit 98. In the illustrated example, control circuit 76 makes the translation selection based on the most significant bit (bit[55]) of the virtual address portion. Thus, when this bit is set, a path through translation circuit 98 is selected, but when this bit is not set, a direct path through tag translation circuit 72 is selected. This control is illustrated on the right side of FIG. 6 by the logic statement if VA[55]=1 PA[t]=t-bar else PA[t]=t. In other words, if bit 55 is set, t is inverted, otherwise t is propagated unchanged. However, inversion is not the only conversion that can be performed, and the conversion performed by conversion circuit 98 can vary depending on configuration settings 100. In another example, the transformation can be an increment of the value represented by the portion t, and other transformations can be envisaged as well. The manner in which the device operates may also be influenced by other bits within the virtual tag portion. As shown in FIG. 6, another bit (labeled m) is also received by control circuit 76. where, under the control of a guard tag control circuit, the physical address is stored for use in a memory system that includes tag guarded memory accesses (e.g., as described above with reference to FIGS. 2 and 3). An example is shown where a tag-guarded memory access is generated, and an additional bit "m" can be used to exert control over the manner in which this tag-guarded memory access is performed. In the example shown in FIG. 6, the "m" bit is the set of four bits 102 generated by the tag translation circuit 72 used by the memory system to define a "match_all" or "match_one" condition. Determine whether or not. In other words, depending on the setting of this m bit, tag-guarded memory accesses include the physical address tag for bit 102 and the stored guard address associated with the associated memory address (in the match_one condition). A match is required between the tags, or any set of address tags of bits is effectively able to satisfy the match (in the match_all condition).

一般に、仮想タグ部の残りの部分は、図の中でラベル付けされたように「予備」とみなされてよいが、いくつかの実例において、(例えば、図の中で「c」とラベル付けされたような)この予備部分の1つ又は複数のビットは、追加として、仮想タグ部内に設定可能な1つ又は複数の追加の制御ビットを提供するために使用されることが可能であり、メモリ・システムに伝えられること、及び/又は、装置の構成設定に影響を与えることが可能である。したがって、図において(代替として破線で)示されるように、これらの予備ビットは、構成設定100を決定することができ、例えば、追加の制御ビットとしてメモリ・システムに渡される2つの追加ビット106を提供することもできる。最終的に、ガード・タグ制御回路104は、ビットのセット102の特定のビットの組合せが(物理タグの中で)受信されるとき、「match_all」条件がセットされるように一般に構成されるということに留意されたい。示された実例において、これは、全ビットがセットされるときのものである。これも、if PA[t]=0xF match_all else match_oneという、図6の右下の方にある論理ステートメントによって示される。(図4に示されるように)利用可能な仮想アドレス空間の一部がユーザ空間のために予約され、別の部分がカーネル空間のために予約されるシステム内で仮想アドレスが配分されることが可能であり、これが、完全(例えば64ビット)仮想アドレスの上位部分にデフォルトの意味をもたらすことを思い出すと、仮想アドレス部の最上位ビット(ビット[55])によって制御される、変換回路72によって行われる変換は、したがって、仮想アドレスがカーネル空間のために配分されたか、ユーザ空間のために配分されたかに関わらず、同じ所定の「match_all」ビットの組合せ(この実例では0xF)がメモリ制御システムに提供されることが可能であるということを定めることができる。他の実例の構成において、5ビットの物理タグが使用されることが可能であり、ここで、1つのビットは、「match_all」比較又は「match_one」比較が行われるべきかどうかを示すことに充てられ、他の4つのビットは、「match_one」が構成される場合、この比較のために使用される。 Generally, the remainder of the virtual tag section may be considered "reserve" as labeled in the diagram, but in some instances (e.g., labeled "c" in the diagram) One or more bits of this reserved part can additionally be used to provide one or more additional control bits configurable within the virtual tag part; The memory system may be communicated and/or configuration settings of the device may be influenced. Thus, as shown (alternatively in dashed lines) in the figure, these reserved bits can determine the configuration settings 100, e.g. two additional bits 106 which are passed to the memory system as additional control bits. It can also be provided. Finally, guard tag control circuit 104 is generally configured such that when a particular bit combination of set of bits 102 is received (in a physical tag), a "match_all" condition is set. Please note that. In the example shown, this is when all bits are set. This is also illustrated by the logic statement towards the bottom right of FIG. 6: if PA[t]=0xF match_all else match_one. Virtual addresses may be distributed within a system where a portion of the available virtual address space is reserved for user space and another portion for kernel space (as shown in Figure 4). possible, and recalling that this provides a default meaning for the high-order part of a full (e.g. 64-bit) virtual address, by the translation circuit 72, controlled by the most significant bit (bit[55]) of the virtual address part. The translation that takes place is therefore the same predetermined combination of "match_all" bits (0xF in this example) in the memory control system, regardless of whether the virtual address is allocated for kernel space or for user space. It may be provided that the In other example configurations, a 5-bit physical tag may be used, where one bit is devoted to indicating whether a "match_all" comparison or a "match_one" comparison is to be made. and the other four bits are used for this comparison if "match_one" is configured.

図7は、図6に示された回路のいくつかの別の概略図であり、ここで、制御回路76による変換回路98の制御に対する変形物を示す。制御回路76は、(「OV」(オーバーライド)とラベル付けされた)仮想タグ部の特定のビットを受信し、これは、変換回路98によって特定のビット(又はビットの組合せ)が物理タグ部内に生成されることを強制するために使用されることが可能である。これは、例えば、match_all比較が行われることを強制するために使用されることが可能である。しかし原則として、タグ・ガード式メモリ・アクセスの一部としてのものであろうと、別のメモリ動作に関するものであろうと、変換回路98によって物理タグ部の中に生成された強制されたビット(又はビットの組合せ)によって、いずれかの目的が果たされることが可能であり、仮想タグ部内のオーバーライド・ビット(OV)は、これをトリガするために使用されることが可能である。 FIG. 7 is another schematic diagram of some of the circuits shown in FIG. 6, in which a variation on the control of conversion circuit 98 by control circuit 76 is shown. Control circuit 76 receives certain bits of the virtual tag portion (labeled “OV” (override)), which means that conversion circuit 98 converts the particular bit (or combination of bits) into the physical tag portion. Can be used to force generation. This can be used, for example, to force a match_all comparison to take place. However, in principle, any forced bits (or Either purpose can be served by a combination of bits) and an override bit (OV) in the virtual tag part can be used to trigger this.

1つの実例において、1つのアプローチが行われ、「match_all」物理タグ・エンコーディングとして定義される、仮想アドレス部の最上位ビットに基づく仮想タグ・エンコーディングのうちの多くても1つについて選択が行われる。この「match_all」比較が行われるかどうかは、他のコンテキストの構成に基づくことも可能である。例えば、これは、全てのユーザ・タグが「match_one」であるように構成されることが可能であり、ユーザ・タグ「0」が「match_all」であるように構成されることが可能であり、全てのカーネル・タグが「match_one」であるように構成されることが可能であり、カーネル・タグ「1111」がmatch allであるように構成されることが可能である。 In one example, an approach is taken in which a selection is made for at most one of the virtual tag encodings based on the most significant bits of the virtual address portion, defined as the "match_all" physical tag encoding. . Whether this "match_all" comparison is performed may also be based on other context configurations. For example, this can be configured such that all user tags are 'match_one', user tag '0' can be configured such that it is 'match_all', All kernel tags can be configured to be "match_one" and kernel tags "1111" can be configured to be match all.

図8は、1つの実例において実行される一連のステップを示す流れ図である。ステップ120において、変換されることになる新しい仮想アドレスが受信される。ステップ122において、(例えば、仮想タグ部内の予備ビットを用いて)変換回路に適用することになる特定の構成があるかどうかが判定され、この場合、これは、ステップ124において発生する。ステップ126において、仮想タグ部に適用されることになる変換は、仮想アドレスの仮想アドレス部に基づいて(例えば、その最上位ビットに基づいて)決定される。選択された変換は、次に、ステップ128において、(対応する物理タグ部を生成するために)仮想タグ部の一部に適用される。ステップ130において、ビット「m」が1であるかどうかが判定され、これは、match_all比較が行われることになるかどうか(ステップ132)、又はmatch_one比較(ステップ134)が行われることになるかどうかを判定する。最終的に、ステップ136において、物理アドレス・タグ部におけるビットの生成されたセットが、所定の特殊な値に対応するかどうかが判定され、この実例において、この値は、1の連続セット(0xF)である。この場合、フローはステップ140に進み、ここで、これがメモリ・システム内で特殊な動作をトリガし、その一方で、そうではない場合、フローはステップ138を介して進み、ここで、「通常の」タグ・ガード式メモリ・アクセスが行われ、比較は、ステップ130において判定されたように、match_all又はmatch_oneとしてチェックされる。フローは次に、ステップ120に復帰する。 FIG. 8 is a flow diagram illustrating a series of steps performed in one example. At step 120, a new virtual address to be translated is received. In step 122, it is determined (eg, using reserved bits in the virtual tag part) whether there is a particular configuration to be applied to the translation circuit, in which case this occurs in step 124. At step 126, the translation to be applied to the virtual tag portion is determined based on the virtual address portion of the virtual address (eg, based on its most significant bits). The selected transformation is then applied to a portion of the virtual tag portion (to generate a corresponding physical tag portion) in step 128. In step 130, it is determined whether bit "m" is 1, which means whether a match_all comparison is to be made (step 132) or a match_one comparison (step 134). judge whether Finally, in step 136, it is determined whether the generated set of bits in the physical address tag portion corresponds to a predetermined special value, which in this example is a continuous set of ones (0xF ). In this case, the flow proceeds to step 140, where this triggers a special operation in the memory system, whereas if not, the flow proceeds through step 138, where it is determined that the ” A tag-guarded memory access is performed and the comparison is checked as match_all or match_one, as determined in step 130. Flow then returns to step 120.

図9は、使用されることが可能なシミュレータの実装形態を示す。前に説明された実施例は、当該の技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法の観点から本発明を実行しているが、コンピュータ・プログラムの使用によって実行される、本明細書において説明される実施例による命令実行環境を提供することもできる。このようなコンピュータ・プログラムは、これらが、ハードウェア・アーキテクチャのソフトウェア・ベースの実装形態を提供する限りにおいて、シミュレータと呼ばれることが多い。様々な種類のシミュレータ・コンピュータ・プログラムは、エミュレータ、仮想マシン、モデル、及び、ダイナミック・バイナリ・トランスレータを含むバイナリ・トランスレータを含む。典型的には、シミュレータの実装形態は、シミュレータ・プログラム210をサポートする、任意選択としてホスト・オペレーティング・システム220を実行するホスト・プロセッサ230上で実行することができる。いくつかの設計では、ハードウェアと、提供された命令実行環境、及び/又は同じホスト・プロセッサ上で提供される複数の別個の命令実行環境との間にシミュレーションの複数のレイヤがある可能性がある。歴史的に、適度な速さで実行するシミュレータの実装形態を提供するために強力なプロセッサが必要とされてきたが、このようなアプローチは、互換又は再使用のために、別のプロセッサにネイティブのコードを、実行するという要望があるときなどの一定の状況において正当化されることがある。例えば、シミュレータの実装形態は、ホスト・プロセッサ・ハードウェアによってサポートされない追加の機能を命令実行環境に提供すること、又は、異なるハードウェア・アーキテクチャと典型的に関連付けられた命令実行環境を提供することができる。シミュレーションの全体像は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53~63頁において示されている。 FIG. 9 shows an implementation of a simulator that can be used. Although the previously described embodiments implement the invention in terms of apparatus and methods for operating specific processing hardware that supports the techniques in question, it is also possible to implement the invention through the use of computer programs. An instruction execution environment may also be provided according to the embodiments described herein. Such computer programs are often referred to as simulators insofar as they provide a software-based implementation of a hardware architecture. Various types of simulator computer programs include emulators, virtual machines, models, and binary translators, including dynamic binary translators. Typically, a simulator implementation may run on a host processor 230 that supports the simulator program 210 and optionally executes a host operating system 220. In some designs, there may be multiple layers of simulation between the hardware and the provided instruction execution environment and/or multiple separate instruction execution environments provided on the same host processor. be. Historically, powerful processors have been required to provide simulator implementations that run at reasonable speeds, but such approaches have been difficult to implement natively on another processor for compatibility or reuse. may be justified in certain circumstances, such as when there is a desire to execute code. For example, simulator implementations may provide additional functionality to the instruction execution environment not supported by the host processor hardware or may provide instruction execution environments typically associated with different hardware architectures. I can do it. An overview of the simulation is given in "Some Efficient Architecture Simulation Techniques", Robert Bedichek, Winter 1990 USENIX Conference, pages 53-63.

特定のハードウェア構造又は特徴を参照しながら実施例が前に説明された範囲まで、シミュレートされた実施例において、適切なソフトウェア構造又は特徴によって同等の機能が提供されることが可能である。例えば、コンピュータ・プログラム・ロジックとしてシミュレートされた実施例において、特定の回路が実装されることが可能である。同様に、レジスタ又はキャッシュなどのメモリ・ハードウェアは、ソフトウェア・データ構造としてシミュレートされた実施例において実装されることが可能である。前述の実施例において参照されたハードウェア要素の1つ又は複数がホスト・ハードウェア(例えばホスト・プロセッサ230)上にある設計において、いくつかのシミュレートされた実施例は、適切な場合、ホスト・ハードウェアを使用することができる。 To the extent that embodiments have been described above with reference to particular hardware structures or features, equivalent functionality may be provided by suitable software structures or features in the simulated embodiments. For example, certain circuits may be implemented in simulated embodiments as computer program logic. Similarly, memory hardware such as registers or caches can be implemented in simulated embodiments as software data structures. In designs where one or more of the hardware elements referenced in the previous embodiments reside on host hardware (e.g., host processor 230), some simulated embodiments may・Can use hardware.

シミュレータ・プログラム210は、(非一時的媒体であることが可能な)コンピュータ可読ストレージ媒体212に格納され、シミュレータ・プログラム210によってモデル化される、ハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じ、(アプリケーション、オペレーティング・システム、及びハイパーバイザを含むことができる)ターゲット・コード200へのプログラム・インターフェース(命令実行環境)を提供することができる。このようにして、ターゲット・コード200のプログラム命令は、シミュレータ・プログラム210を使用して、命令実行環境内から実行されることが可能であり、これにより、上述の装置2のハードウェア特徴、及び、特にタグ変換回路72を、実際には備えていないホスト・コンピュータ230が、これらの特徴をエミュレートすることができる。例えば、シミュレータ・プログラム210は、仮想アドレスを物理アドレスに変換するためのアドレス変換ロジック214を含むことができ、特に、仮想アドレス・タグ部を物理アドレス・タグ部に変換するためのアドレス変換ロジック216を含むことができる。このようにして、シミュレータ・プログラム210は、ガード・タグとアドレス・タグの比較を行うため、ガード・タグとアドレス・タグとの間のなんらかのミスマッチが検出されたかどうかをレポートするためのメモリ・アクセス・プログラム・ロジックを含むこともできる。また、シミュレータ・プログラム110は、ハードウェア実施例がタグをセットするはずの方式に対応する方式でガード・タグを設定するための命令を含むタグ設定プログラム・ロジックを含むことができる。 The simulator program 210 is stored on a computer readable storage medium 212 (which can be a non-transitory medium) and has the same application program interface of the hardware architecture modeled by the simulator program 210. A programmatic interface to target code 200 (which may include applications, operating systems, and hypervisors) may be provided. In this way, the program instructions of target code 200 can be executed from within the instruction execution environment using simulator program 210, thereby controlling the hardware characteristics of device 2 and Host computer 230, which does not actually include tag translation circuitry 72, in particular, can emulate these features. For example, the simulator program 210 may include address translation logic 214 for translating virtual addresses to physical addresses, and in particular address translation logic 216 for translating virtual address tag portions to physical address tag portions. can include. In this way, the simulator program 210 performs a memory access to perform a comparison between the guard tag and the address tag and report whether any mismatch between the guard tag and the address tag is detected. - Can also include program logic. Simulator program 110 may also include tag setting program logic that includes instructions for setting guard tags in a manner that corresponds to the manner in which the hardware implementation would set the tags.

簡単に全体を要約すると、装置は、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換回路を備える。アドレス変換回路は、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換回路を備え、アドレス・タグ変換回路によって行われることになる変換は、仮想アドレスに依存して選択される。 To briefly summarize, the apparatus includes an address translation circuit for translating a virtual address including a virtual tag part and a virtual address part to a physical address including a physical tag part and a physical address part. The address translation circuit includes an address tag translation circuit for translation of a virtual tag part into a physical tag part, and the translation to be performed by the address tag translation circuit is selected depending on the virtual address. .

本出願において、単語「~ように構成された(configured to...)」は、装置の要素が、定義された動作を実行できる構成を備えることを意味するために使用される。この文脈において、「構成」は、ハードウェア又はソフトウェアの相互接続の設計又は手法を意味する。例えば、装置は、定義された動作を行う専用のハードウェアを備えることができ、又は、プロセッサ若しくは他の処理デバイスは、機能を実行するようにプログラムされることが可能である。「ように構成された(Configured to)」は、定義された動作を行うために任意の方式で装置の要素が変更される必要があることを意味しない。 In this application, the word "configured to..." is used to mean that an element of a device is equipped with a configuration capable of performing a defined operation. In this context, "configuration" means the design or approach of hardware or software interconnections. For example, an apparatus may include dedicated hardware to perform defined operations, or a processor or other processing device may be programmed to perform the functions. "Configured to" does not imply that elements of the device need to be modified in any way to perform the defined operation.

例証的な実施例が、添付の図面を参照しながら本明細書において詳細に説明されてきたが、本発明はこれらの正確な実施例に限定されず、添付の特許請求の範囲によって定義されるような本発明の範囲を逸脱することなく当業者によって様々な変更、追加、及び修正がもたらされる可能性があるということが理解されよう。例えば、従属請求項の特徴の様々な組合せは、本発明の範囲から逸脱することなく、独立請求項の特徴によって行われることが可能である。 Although illustrative embodiments have been described in detail herein with reference to the accompanying drawings, the invention is not limited to these precise embodiments, but is defined by the appended claims. It will be appreciated that various changes, additions, and modifications may be made by those skilled in the art without departing from the scope of the invention. For example, various combinations of the features of the dependent claims can be made with the features of the independent claims without departing from the scope of the invention.

Claims (18)

仮想タグ部及び仮想アドレス部を含む仮想アドレスを、物理タグ部及び物理アドレス部を含む物理アドレスに変換を行うためのアドレス変換回路、を備える装置であって、
前記アドレス変換回路は、前記仮想タグ部を前記物理タグ部に変換を行うためのアドレス・タグ変換回路を備え、
前記アドレス変換回路は、前記仮想アドレス部に依存して前記アドレス・タグ変換回路によって行われることになる前記変換を選択
前記アドレス・タグ変換回路によって行われる前記変換が、前記仮想アドレス部の最上位ビットに依存する、
装置。
An apparatus comprising an address conversion circuit for converting a virtual address including a virtual tag part and a virtual address part into a physical address including a physical tag part and a physical address part, the apparatus comprising:
The address conversion circuit includes an address/tag conversion circuit for converting the virtual tag part into the physical tag part,
the address translation circuit selects the translation to be performed by the address tag translation circuit in dependence on the virtual address portion;
the translation performed by the address tag translation circuit depends on the most significant bit of the virtual address part;
Device.
前記仮想アドレス部の前記最上位ビットが第1の値を含むとき、前記アドレス・タグ変換回路によって行われる前記選択された変換が、前記仮想タグ部にマッチする前記物理タグ部を生成し、
前記最上位ビットが第2の値を含むとき、前記アドレス・タグ変換回路によって行われる前記選択された変換が、前記物理タグ部を生成するために前記仮想タグ部を修正する
請求項に記載の装置。
when the most significant bit of the virtual address portion includes a first value, the selected translation performed by the address-to-tag translation circuit produces the physical tag portion that matches the virtual tag portion;
2. When the most significant bit includes a second value, the selected translation performed by the address tag translation circuit modifies the virtual tag portion to generate the physical tag portion . equipment.
前記装置が、カーネル固有処理及びユーザ固有処理のうちの1つによる排他使用のための仮想アドレスを配分するように設計され、前記仮想アドレス部の前記最上位ビットの値が、前記仮想アドレスがカーネル固有処理に配分されたか、ユーザ固有処理に配分されたかを示すものである、請求項又はに記載の装置。 The apparatus is designed to allocate a virtual address for exclusive use by one of a kernel-specific process and a user-specific process, and the value of the most significant bit of the virtual address portion indicates that the virtual address is a kernel-specific process. The apparatus according to claim 1 or 2 , wherein the apparatus indicates whether the processing is allocated to specific processing or user-specific processing. 前記アドレス・タグ変換回路によって行われる前記選択された変換が、前記物理タグ部を生成するために前記仮想タグ部の少なくとも一部を反転することを含む、請求項1からまでのいずれか一項に記載の装置。 Any one of claims 1 to 3 , wherein the selected translation performed by the address-to-tag translation circuit comprises inverting at least a portion of the virtual tag part to generate the physical tag part. Equipment described in Section. 前記アドレス・タグ変換回路によって行われる前記選択された変換が、前記物理タグ部を生成するために前記仮想タグ部の少なくとも一部をインクリメントすることを含む、請求項1からまでのいずれか一項に記載の装置。 4. The method of claim 1 , wherein the selected translation performed by the address tag translation circuit comprises incrementing at least a portion of the virtual tag portion to generate the physical tag portion. Equipment described in Section. 前記物理アドレスを受信し、前記物理アドレス部によって識別された記憶場所にアクセスするためのメモリ・システムをさらに備え、前記メモリ・システムが、前記物理アドレスの受信に応答して、前記物理タグ部の所定部分が所定値を含むとき、所定のメモリ動作を行う、請求項1からまでのいずれか一項に記載の装置。 further comprising a memory system for receiving the physical address and accessing the storage location identified by the physical address portion, the memory system responsive to receiving the physical address, identifying the physical tag portion of the physical tag portion; 6. Apparatus according to any one of claims 1 to 5 , wherein the device performs a predetermined memory operation when the predetermined portion contains a predetermined value. 前記所定のメモリ動作が、前記物理タグ部の、前記記憶場所と関連付けられたガード・タグ値とのガード・タグ比較であり、前記メモリ・システムが、前記物理タグ部と前記ガード・タグ値がマッチ条件を満たさないことに応答して、フォルト状態を示す、請求項に記載の装置。 the predetermined memory operation is a guard tag comparison of the physical tag portion with a guard tag value associated with the memory location; 7. The apparatus of claim 6 , wherein the apparatus indicates a fault condition in response to not meeting a match condition. 前記物理タグ部の所定部分が所定値を含むとき、前記マッチ条件が、いずれかのガード・タグ値が前記マッチ条件を満たすようなmatch-all条件である、請求項に記載の装置。 8. The apparatus according to claim 7 , wherein when the predetermined portion of the physical tag section includes a predetermined value, the match condition is a match-all condition such that any guard tag value satisfies the match condition. 前記物理タグ部の前記所定部分が前記所定値を含まないとき、前記マッチ条件が、前記マッチ条件を満たすために、前記物理タグ部の前記所定部分と前記ガード・タグ値が同じでなければならないようなmatch-one条件である、請求項に記載の装置。 When the predetermined portion of the physical tag portion does not include the predetermined value, the predetermined portion of the physical tag portion and the guard tag value must be the same in order to satisfy the match condition. 9. The apparatus according to claim 8 , wherein the match-one condition is such that: 前記物理タグ部の前記所定部分が、前記物理タグ部のビットの所定セットである、請求項又はに記載の装置。 10. The apparatus according to claim 8 or 9 , wherein the predetermined portion of the physical tag portion is a predetermined set of bits of the physical tag portion. 前記アドレス・タグ変換回路が、所定値を含む前記仮想タグ部の所定ビットに応答して前記物理タグ部を生成し、前記物理タグ部の前記所定部分が、前記仮想タグ部の他の所定ビットの値に関係のない前記所定値を含む、請求項から10までのいずれか一項に記載の装置。 The address/tag conversion circuit generates the physical tag portion in response to a predetermined bit of the virtual tag portion including a predetermined value, and the predetermined portion of the physical tag portion is configured to correspond to another predetermined bit of the virtual tag portion. 11. The device according to any one of claims 8 to 10 , wherein the predetermined value is independent of the value of . 前記物理タグ部の前記所定部分が、前記物理タグ部の所定ビットである、請求項又はに記載の装置。 The device according to claim 8 or 9 , wherein the predetermined portion of the physical tag portion is a predetermined bit of the physical tag portion. 前記ガード・タグ比較が、前記物理タグ部のうちの一部について、前記記憶場所と関連付けられた前記ガード・タグ値と比較するものである、請求項から12までのいずれか一項に記載の装置。 13. The guard tag comparison is for comparing some of the physical tag portions with the guard tag value associated with the storage location. equipment. 前記物理タグ部の前記所定部分の前記所定値が、同じビット値の全ビットを含む、請求項から13までのいずれか一項に記載の装置。 14. The apparatus according to any one of claims 8 to 13 , wherein the predetermined value of the predetermined portion of the physical tag portion includes all bits of the same bit value. 前記仮想タグ部が、前記物理アドレスに含まれる少なくとも1つのビットを含み、前記メモリ・システムが、前記少なくとも1つのビットに応答して、前記記憶場所にライト・アクセスが行われるとき、前記記憶場所と関連付けられた前記ガード・タグ値の上書きを制御する、請求項から14までのいずれか一項に記載の装置。 the virtual tag portion includes at least one bit included in the physical address, and the memory system is configured to access the memory location when a write access is made to the memory location in response to the at least one bit; 15. Apparatus according to any one of claims 7 to 14 , controlling the overwriting of the guard tag value associated with. 仮想タグ部及び仮想アドレス部を含む仮想アドレスに対して行われることになる、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を選択するステップであって、前記変換の前記選択は前記仮想アドレス部に依存する、ステップと、
前記仮想タグ部を前記物理タグ部に変換するために前記変換を行うステップと
を含
前記変換が、前記仮想アドレス部の最上位ビットに依存する、
方法。
selecting a translation to a physical address including a physical tag part and a physical address part to be performed on a virtual address including a virtual tag part and a virtual address part, the selection of the translation being performed on a virtual address including a virtual tag part and a virtual address part; a step that depends on the address part;
performing the conversion to convert the virtual tag portion to the physical tag portion;
the translation depends on the most significant bits of the virtual address part;
Method.
ターゲット・プログラム・コードの命令の実行のための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
仮想タグ部及び仮想アドレス部を含む仮想アドレスを、物理タグ部及び物理アドレス部を含む物理アドレスに変換を行うためのアドレス変換プログラム・ロジック
を含み、前記アドレス変換プログラム・ロジックが、
前記仮想タグ部を前記物理タグ部に変換を行うためのアドレス・タグ変換プログラム・ロジック
を含み、
前記アドレス変換プログラム・ロジックが、前記仮想アドレス部に依存して前記アドレス・タグ変換プログラム・ロジックによって行われることになる前記変換を選択し、
前記アドレス・タグ変換プログラム・ロジックによって行われる前記変換が、前記仮想アドレス部の最上位ビットに依存する、
コンピュータ・プログラム。
A computer program for controlling a host data processing device to provide an instruction execution environment for execution of instructions of target program code, the computer program comprising:
Address conversion program logic for converting a virtual address including a virtual tag part and a virtual address part to a physical address including a physical tag part and a physical address part, the address translation program logic comprising:
including address tag conversion program logic for converting the virtual tag part to the physical tag part;
the address translation program logic selects the translation to be performed by the address tag translation program logic depending on the virtual address portion ;
the translation performed by the address tag translation program logic depends on the most significant bits of the virtual address portion;
computer program.
請求項17に記載のコンピュータ・プログラムを格納するストレージ媒体。 A storage medium storing a computer program according to claim 17 .
JP2020540422A 2018-01-31 2019-01-23 Address translation in data processing equipment Active JP7369699B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1801598.2A GB2570665B (en) 2018-01-31 2018-01-31 Address translation in a data processing apparatus
GB1801598.2 2018-01-31
PCT/GB2019/050189 WO2019150077A1 (en) 2018-01-31 2019-01-23 Address translation in a data processing apparatus

Publications (2)

Publication Number Publication Date
JP2021513139A JP2021513139A (en) 2021-05-20
JP7369699B2 true JP7369699B2 (en) 2023-10-26

Family

ID=61558059

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020540422A Active JP7369699B2 (en) 2018-01-31 2019-01-23 Address translation in data processing equipment

Country Status (8)

Country Link
US (1) US11687464B2 (en)
EP (1) EP3746898B1 (en)
JP (1) JP7369699B2 (en)
CN (1) CN111527480B (en)
GB (1) GB2570665B (en)
IL (1) IL275728B2 (en)
TW (1) TWI791086B (en)
WO (1) WO2019150077A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2639004A (en) * 2024-03-06 2025-09-10 Advanced Risc Mach Ltd Tag-non-preserving write operation
GB2639626A (en) * 2024-03-20 2025-10-01 Advanced Risc Mach Ltd Data-Access-To-Tag check

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002366425A (en) 2001-06-05 2002-12-20 Hitachi Ltd Data processing device having address conversion circuit

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4218743A (en) * 1978-07-17 1980-08-19 International Business Machines Corporation Address translation apparatus
US4774659A (en) * 1986-04-16 1988-09-27 Astronautics Corporation Of America Computer system employing virtual memory
JPH0215345A (en) * 1988-07-04 1990-01-19 Hitachi Ltd data processing equipment
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
US5341485A (en) * 1991-05-07 1994-08-23 International Business Machines Corporation Multiple virtual address translation per computer cycle
US5574877A (en) * 1992-09-25 1996-11-12 Silicon Graphics, Inc. TLB with two physical pages per virtual tag
JPH0887451A (en) * 1994-09-09 1996-04-02 Internatl Business Mach Corp <Ibm> Method for control of address conversion and address conversion manager
US6230248B1 (en) * 1998-10-12 2001-05-08 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for pre-validating regions in a virtual addressing scheme
US6598050B1 (en) * 2000-02-11 2003-07-22 Integrated Device Technology, Inc. Apparatus and method for limited data sharing in a multi-tasking system
US6604187B1 (en) * 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
US6792521B2 (en) 2001-10-16 2004-09-14 International Business Machines Corporation Behavioral memory mechanism for a data processing system
US6675279B2 (en) * 2001-10-16 2004-01-06 International Business Machines Corporation Behavioral memory enabled fetch prediction mechanism within a data processing system
JP4085328B2 (en) * 2003-04-11 2008-05-14 ソニー株式会社 Information processing apparatus and method, recording medium, program, and imaging apparatus
US7117290B2 (en) * 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US7296136B1 (en) * 2004-06-04 2007-11-13 Hewlett-Packard Development Company, L.P. Methods and systems for loading data from memory
EP2441005A2 (en) * 2009-06-09 2012-04-18 Martin Vorbach System and method for a cache in a multi-core processor
US8386747B2 (en) * 2009-06-11 2013-02-26 Freescale Semiconductor, Inc. Processor and method for dynamic and selective alteration of address translation
US8589447B1 (en) * 2009-07-07 2013-11-19 Netapp, Inc. Efficient file system scan for shared data blocks
US8645633B2 (en) * 2011-05-17 2014-02-04 International Business Machines Corporation Facilitating data coherency using in-memory tag bits and faulting stores
US8868867B2 (en) * 2011-09-15 2014-10-21 The Regents Of The University Of California Method for reducing latency of accessing data stored in a file system on a computer storage device by caching file system permission information in the computer storage device
GB2511957B (en) 2011-11-22 2015-02-11 Mips Tech Inc Processor with kernel mode access to user space virtual addresses
US9218289B2 (en) * 2012-08-06 2015-12-22 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
JP6273733B2 (en) 2013-09-20 2018-02-07 富士通株式会社 Arithmetic processing device, information processing device, control method for information processing device, and control program for information processing device
US9542323B2 (en) * 2014-03-28 2017-01-10 Samsung Electronics Co., Ltd. Address re-ordering mechanism for efficient pre-fetch training in an out-of-order processor
US10061712B2 (en) * 2016-05-10 2018-08-28 Oracle International Corporation Virtual memory page mapping overlays

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002366425A (en) 2001-06-05 2002-12-20 Hitachi Ltd Data processing device having address conversion circuit

Also Published As

Publication number Publication date
EP3746898B1 (en) 2022-08-03
KR20200116471A (en) 2020-10-12
CN111527480B (en) 2024-09-27
US20200264983A1 (en) 2020-08-20
WO2019150077A1 (en) 2019-08-08
US11687464B2 (en) 2023-06-27
GB2570665A (en) 2019-08-07
GB2570665B (en) 2020-08-26
IL275728B1 (en) 2023-11-01
IL275728A (en) 2020-08-31
CN111527480A (en) 2020-08-11
IL275728B2 (en) 2024-03-01
GB201801598D0 (en) 2018-03-14
EP3746898A1 (en) 2020-12-09
TW201935249A (en) 2019-09-01
TWI791086B (en) 2023-02-01
JP2021513139A (en) 2021-05-20

Similar Documents

Publication Publication Date Title
KR102847990B1 (en) Control protection tag checking during memory access
US20250181515A1 (en) Read-as-x property for page of memory address space
KR102846228B1 (en) Control protection tag checking during memory access
CN120693595A (en) Mark protection instructions
JP7369699B2 (en) Address translation in data processing equipment
JP7317099B2 (en) Handling lost guard tags
KR102953825B1 (en) Address conversion of the data processing unit

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221227

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230327

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20230414

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230809

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20230822

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231016

R150 Certificate of patent or registration of utility model

Ref document number: 7369699

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150