JP2021513139A - データ処理装置におけるアドレス変換 - Google Patents

データ処理装置におけるアドレス変換 Download PDF

Info

Publication number
JP2021513139A
JP2021513139A JP2020540422A JP2020540422A JP2021513139A JP 2021513139 A JP2021513139 A JP 2021513139A JP 2020540422 A JP2020540422 A JP 2020540422A JP 2020540422 A JP2020540422 A JP 2020540422A JP 2021513139 A JP2021513139 A JP 2021513139A
Authority
JP
Japan
Prior art keywords
tag
address
physical
virtual
predetermined
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020540422A
Other languages
English (en)
Other versions
JP7369699B2 (ja
Inventor
バーンズ、グレイム
マリナス、カタリン
ジェイムズ ディーコン、ウィリアム
ジェイムズ ディーコン、ウィリアム
Original Assignee
エイアールエム リミテッド
エイアールエム リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エイアールエム リミテッド, エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2021513139A publication Critical patent/JP2021513139A/ja
Application granted granted Critical
Publication of JP7369699B2 publication Critical patent/JP7369699B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/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; CALCULATING OR 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; CALCULATING OR 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)

Abstract

装置は、仮想タグ部88及び仮想アドレス部86を含む仮想アドレス80の、物理タグ部92及び物理アドレス部90を含む物理アドレス82への変換を行うためのアドレス変換回路70を備える。アドレス変換回路は、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換回路72を備え、行われることになるアドレス変換は、仮想アドレスに依存して選択される。

Description

本技法は、データ処理の分野に関する。
データ処理システムは、2つのアドレス指定システム、すなわち、仮想アドレスのシステム、及び物理アドレスのシステムを用いることがある。仮想アドレスは、データ処理装置によって実行されるソフトウェアによって使用されるものであり、その一方で、物理アドレスは、外部RAMなどのメモリ格納ハードウェアによって使用されるものである。アドレス変換能力は、次に、この2つのメモリ・アドレス指定システムの間で変換できるようにするため、及び特に、ハードウェアによって使用される物理アドレス・システムを使用する必要のない、このハードウェア内のメモリ格納先に実行ソフトウェアがアクセスできるようにするために、データ処理装置によって提供されることが可能である。言い換えれば、仮想から物理へのアドレス変換は、メモリ・アクセス・リクエスト(例えばロード及び格納)が仮想アドレスを使用して発行されるのでCPU上で実行されているソフトウェアに透明であることが可能であり、(メモリ・アクセスにふさわしいとき)データは、アドレス変換が行われ、仮想アドレスとは異なる物理アドレスにおいてデータがアクセスされたことをソフトウェアが認識する必要なく、メモリ・システムから返される。
「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53〜63頁
少なくともいくつかの実例は、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換回路であって、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換回路を備え、アドレス・タグ変換回路によって仮想アドレスに依存して行われることになる変換を選択する、アドレス変換回路を備える、装置を提供する。
少なくともいくつかの実例は、仮想タグ部及び仮想アドレス部を含む仮想アドレスに対して行われることになる、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を選択することであって、仮想アドレスに依存する、選択することと、仮想タグ部を物理タグ部に変換するために変換を行うこととを含む方法を提供する。
少なくともいくつかの実例は、ターゲット・プログラム・コードの命令の実行のための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換プログラム・ロジックを含み、アドレス変換プログラム・ロジックが、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換プログラム・ロジックを含み、アドレス変換プログラム・ロジックが、アドレス・タグ変換回路によって仮想アドレスに依存して行われることになる変換を選択する、コンピュータ・プログラムを提供する。
ストレージ媒体は、上述のコンピュータ・プログラムを格納することができる。ストレージ媒体は、非一時的ストレージ媒体であることが可能である。
本技法は、以下の説明と共に読まれることになる、添付の図面に示されるような実施例を参照しながら、ほんの一例としてさらに説明される。
データ処理装置の実例を概略的に示す図である。 アドレス・タグがガード・タグにマッチするかどうかをチェックすることを含むタグ・ガード式メモリ・アクセス動作の実例を示す図である。 タグ・ガード式メモリ・アクセス動作を行う方法を示す流れ図である。 カーネルによる使用のために1つの部分が予約され、ユーザ空間のために別の部分が予約される仮想アドレス空間を概略的に示す図である。 アドレス変換回路及びアドレス・タグ変換回路を備えるデータ処理装置の実例を概略的に示す図である。 仮想タグ部の物理タグ部への変換のさらなる詳細を示す1つの実例におけるデータ処理装置のいくつかの構成要素を概略的に示す図である。 1つの実例における図6のデータ処理装置のいくつかの構成要素を概略的に示す図である。 仮想タグ部を物理タグ部に変換する方法を示す流れ図である。 アドレス変換ロジックをサポートするシミュレータの実例を示す図である。
1つの実例において、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換回路であって、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換回路を備え、アドレス・タグ変換回路によって仮想アドレスに依存して行われることになる変換を選択する、アドレス変換回路を備える、装置がある。
物理アドレスに変換されることになる仮想アドレスは、プロセッサ・コアによる使用のために一意の仮想アドレスを定義するのに厳密に必要なものより広いビット幅を有する仮想アドレス空間において定義されることが可能である。例えば、命令セットのために64ビット・アドレス空間を使用するように構成された現代のアーキテクチャにおいて、プロセッサ・コアは、例えば64ビット・アドレス空間の下位48ビットしか使用できないように制限されることがあり、これより上位にあるビットは、何らかの方式で予約される。このアプローチは、例えば、ユーザ空間及びカーネル空間はそれぞれ、重複しない仮想アドレスの固有定義領域を有することができるので、有利である可能性がある。例えば、ユーザ空間及びカーネル空間がそれぞれ、(239=512GBの仮想アドレスをそれぞれ提供する)固有定義の39ビット・アドレス空間を含むシステムにおいて、1つのアプローチは、次に、例えば、全てのユーザ仮想アドレスが25個の先頭ゼロを含み、全てのカーネル仮想アドレスが25個の先頭1を含むように、ビットの先頭セットを用いて、ユーザ仮想アドレス及びカーネル仮想アドレスのこれらのセットにラベルを付けることである。例えば、これらは、最上位の「実」アドレス・ビットの符号拡張としてセットされることが可能である(これにより、予備部分は、全てゼロ又は全て1にセットされる)。ユーザ又はカーネルによって使用される仮想アドレスの先頭ビット部分の検査により、許可されたメモリ・アクセスが行われているかどうかの検証、及び違法なアクセスをトラップするための検証を行うことができる。
それでも、その結果、仮想アドレスの先頭ビット部分(の少なくとも大部分)が実質的に使用されない場合、これは、別の目的のためにこのビット空間が使用される機会をもたらす。しかし、これは、さらに、仮想アドレスの上位部分において使用されるエンコーディングが、仮想アドレス空間が使用される手法によって影響を受ける可能性があるということを意味する。ユーザ空間のために予約された部分、及びカーネル空間のために予約された部分を含む仮想アドレス空間の上述の実例において、(全てゼロ又は全て1にセットされた)仮想アドレスのビットの先頭部分が、所与のアドレスがユーザ空間のために予約されているか、カーネル空間のために予約されているかを示す場合、仮想アドレスのこの上位部分のためのデフォルトのビット・エンコーディングは、したがって、ユーザ空間及びカーネル空間に対して異なる。
さらに、仮想アドレス空間のこの上位部分が大部分、使用されていない場合、このビット空間を使用して、ソフトウェアが追加の情報をメモリ・システムに信号を送れるようにすることが有利である可能性がある。この背景において、提供された装置は、変換を行うときに受信した仮想アドレスの仮想タグ部と仮想アドレス部とを区別し、物理タグ部及び物理アドレス部を含む物理アドレスに仮想アドレスを変換する、仮想アドレスを物理アドレスに変換するためのアドレス変換回路を備える。言い換えれば、仮想アドレス部は、ソフトウェアがアクセスを要求する特定のメモリ・アドレスを示すために物理アドレス部に変換されるが、仮想アドレスのさらなる部分、すなわち仮想タグ部は、物理タグ部に別々に変換され、この物理タグ部は、次に、さらなる情報をメモリ・アドレス・システムに伝えることができる。さらに、仮想タグ部から物理タグ部へのこの変換を行うとき、本技法の装置は、アドレス・タグ変換回路によってどのような種類の変換が行われることになるかを判定するときに、仮想アドレスの内容を考慮に入れる。言い換えれば、仮想アドレスのいくつかの特徴に依存して、異なる変換が使用されることが可能である。
アドレス・タグ変換回路によって行われることになる変換のためにこのように仮想アドレスに依存することは、様々な方式で構成されることが可能であるが、いくつかの実例において、アドレス・タグ変換回路によって行われる変換は、仮想アドレス部の最上位ビットに依存する。仮想アドレス部のこの最上位ビットの意味は、特定の実装形態に応じて、及び実際には、仮想アドレス内の仮想タグ部と仮想アドレス部の間の境界がどこにあるかについての選択に応じて、変化する可能性があるということが認識されよう。
選択された変換が、仮想アドレス部の最上位ビットに依存する手法は、様々な形式であってよいが、いくつかの実例において、仮想アドレス部の最上位ビットが第1の値を含むとき、アドレス・タグ変換回路によって行われる選択された変換は、仮想タグ部にマッチする物理タグ部を生成し、最上位ビットが第2の値を含むとき、アドレス・タグ変換回路によって行われる選択された変換は、物理タグ部を生成するために仮想タグ部を修正する。したがって、最上位ビットが第1の値を含むとき、アドレス・タグ変換回路は、物理タグ部を生成するために仮想タグ部を修正しない。しかし、最上位ビットが第2の値を含むとき、仮想タグ部の修正は、物理タグ部を生成するために行われる。
上述のように、仮想アドレス部の最上位ビットの意味は変化する可能性がある。しかし、いくつかの実例において、装置は、カーネル固有処理及びユーザ固有処理のうちの1つによる排他使用のための仮想アドレスを配分するように設計され、仮想アドレス部の最上位ビットの値は、仮想アドレスがカーネル固有処理に配分されたか、ユーザ固有処理に配分されたかを示すものであることが可能である。これは、例えば、完全仮想アドレス空間の2つの別個且つ非重複部分が、カーネル処理及びユーザ固有処理にそれぞれ配分される上述のようなシステムの一部としてのものであることが可能であり、デフォルトで装置は、例えば、カーネル空間アドレスに対して1の連続セットで仮想アドレスの上位部分をポピュレートすること、及び、ユーザ空間アドレスに対してゼロの連続セットでこの同じ部分をポピュレートすること、を行うように設計される。本技法の背景において、これは、さらに、仮想アドレスがカーネル空間内に配分されたことが識別されたとき、仮想タグ部に変換を適用する一方で、ユーザ空間の一部として配分された仮想アドレスの一部を仮想タグ部が形成していることが識別されたとき、仮想タグ部に変換を適用しないようにアドレス変換回路が構成されることが可能であるということを意味する。仮想タグ部が、本当のアドレス自体の一部を形成しておらず、むしろ(場合によっては、特定のメモリ・アドレスに関連した、又は場合によっては、メモリ・システムへのより一般的なコマンド又は信号としての)他の情報をメモリ・システムに通信するために使用されることが可能である場合、このアプローチは、その結果として、アドレスがカーネル固有処理に属するか、ユーザ固有処理に属するかを、物理タグ部の生成が考慮できるようにする。
この依存性は様々に構成されてよいが、いくつかの実例において、アドレス・タグ変換回路によって行われる選択された変換は、物理タグ部を生成するために仮想タグ部の少なくとも一部を反転することを含む。このような構成は、例えば、カーネル固有アドレスに対して1の連続セットによって、及びユーザ固有アドレスに対してゼロの連続セットで、デフォルトで仮想タグ部がポピュレートされるように、装置内のアドレス指定が構成されるときに使用されることが可能である。したがって、メモリ・アドレス・システムに情報を通信するために仮想タグ部の少なくとも一部が使用されるとき、仮想タグ部のこの少なくとも一部をこのように反転すると、仮想アドレスがカーネル固有処理のものであるか、ユーザ固有処理のものであるかに関わらず、メモリ・アドレス・システムに提示された情報のエンコーディングを同じものにすることができる。
他の実例において、アドレス・タグ変換回路によって行われる選択された変換は、物理タグ部を生成するために仮想タグ部の少なくとも一部をインクリメントすることを含むことができる。これは、例えば、アドレス空間の可能な限り小さい値で配分されるものがある一方で、アドレス空間の最上位において他の処理に配分されるものもあるように、仮想アドレス空間内のアドレスが種々の処理に配分される構成に適用できる可能性がある。例えば、仮想アドレス空間の上述のユーザ空間/カーネル空間の境界設定において、ゼロの完全セット(例えば64ビット)を含むアドレスが、ユーザ空間に配分されることが可能である一方で、1の完全なセットを含むアドレスは、カーネル空間に配分されることが可能である。可能な限り大きいアドレス(全て1)がインクリメントされる場合、この値は、64個のゼロの連続シーケンスを生み出すためにラップ・アラウンドすることになる(264を法とすることが可能なアドレスがある)。しかし、この変換は仮想タグ部にしか適用されないので、この実例において、仮想タグ部における1の連続セットは、物理タグ部におけるゼロの連続セットに変換されることになるということに留意されたい。仮想アドレス部における1の連続シーケンスは、物理アドレス部における1の連続シーケンスのままである。
いくつかの実例において、装置は、物理アドレスを受信し、物理アドレス部によって識別された記憶場所にアクセスするためのメモリ・システムをさらに備え、メモリ・システムは、物理アドレスの受信に応答して、物理タグ部の所定部分が所定値を含むとき、所定のメモリ動作を行う。したがって、物理タグ部、及びさらに言うと仮想タグ部は、メモリ・システムが所定のメモリ動作を行うために使用されることが可能である。これは、メモリ・システムについての有用な制御メカニズムをプロセッサ・コアに与える。
所定のメモリ動作は、システム要件及び特定の実装形態に応じて多種多様な形式であることが可能であるが、いくつかの実例において、所定のメモリ動作は、物理タグ部の、記憶場所と関連付けられたガード・タグ値とのガード・タグ比較であり、メモリ・システムは、物理タグ部とガード・タグ値がマッチ条件を満たさないことに応答して、フォルト(fault)状態を示す。このようにして、このような装置において、物理アドレス部によって指定された記憶場所に関連してメモリ・システムに格納されたガード・タグが提供され、物理タグ部とガード・タグ値がマッチ条件を満たすことが要求されることによって、記憶場所へのアクセスに対して制御を及ぼすことが可能になる。マッチ条件が満たされなかったことを示すフォルト状態は、様々な方式で使用されることが可能である。例えば、フォルト状態は、この記憶場所にアクセスするのを防ぐために使用されることが可能であるが、これは、フォルト状態が使用されるただ1つの手法ではなく、他の実例において、フォルト状態は、マッチ条件が満たされなかったが、依然としてアクセスを続行できることを示すために、装置の別の部分に単に信号で送られる(例えば、プロセッサ・コアに戻す)ことが可能である。このようにして、物理タグ部とガード・タグ値の比較の結論は、メモリ・アクセスを続けることができるかどうか、若しくは、その後の動作を続けることができるかどうかを制御するために使用されることが可能であり、又は、いつものようにメモリ・アクセスを続けられる間、単にレポートされることが可能である。
このようなガード・タグ・チェックを行うようにメモリ・システムが構成されるこのような構成において、ガード・タグ比較が行われることになる特定の手法を制御するために、物理タグ部の少なくとも一部を使用することができる。いくつかの実例において、物理タグ部の所定部分が所定値を含むとき、マッチ条件は、いずれかのガード・タグ値がマッチ条件を満たすようなmatch−all条件である。したがって、事実上これにより、いずれかのガード・タグ値がマッチ条件を満たすことになり、したがって、フォルト状態が生成されなくなるので、フォルト状態を信号で送ることができなくなる。
いくつかの実例において、物理タグ部の所定部分が所定値を含まないとき、マッチ条件は、マッチ条件を満たすために、物理タグ部の所定部分とガード・タグ値が同じでなければならないようなmatch−one条件である。このようにして、逆に、物理タグ部の所定部分は、この部分が上述の「match−all」値を含まない場合にマッチ条件を満たすことが明示的に要求される可能性がある。物理タグ部の所定部分は、したがって、マッチ条件を満たすためにガード・タグ値が含まなければならない特定の値を指定するために使用されることが可能である。例えば、これは、例えば、メモリ・アドレスが配分された特定の処理に依存して、これらのメモリ・アドレスをカテゴライズするためにシステムによって使用されることが可能であり、その結果、特定のメモリ・アドレスが配分された処理だけが、フォルト状態をトリガせずにこのメモリ・アドレスにアクセスすることができる。
物理タグ部の所定部分は様々に定義されてよいが、いくつかの実例において、物理タグ部の所定部分は、物理タグ部のビットの所定セットである。ビットのこの所定のセットは様々に定義されてよいが、16個の種々の順列が、例えば、上述の「match−all」値として1つを残して定義されるような、また、残りが、次に、メモリ・アドレスの15個の種々のカテゴリ化をシステム内で定義できる「match−one」値として個別に使用される場合の、例えば、(ただ1つの例証となる実例を挙げると)4ビットのセットであることが可能である。一般に、物理タグ部の任意の数のビットは、このように使用されることが可能であり、これに対応して、カテゴリ化のより大きいセット又はより小さいセットを定義することができる。
この上述の「match−all」値が、「match−one」値のセットからのメモリ・システムへの影響とは異なるということが理解される場合、アドレス・タグ変換回路は、様々な状況の下での所定値を有する物理タグ部の所定部分の生成を強制するように設計されることが可能である。例えば、いくつかの実例において、アドレス・タグ変換回路は、所定値を含む仮想タグ部の所定ビットに応答して物理タグ部を生成し、物理タグ部の所定部分は、仮想タグ部の他の所定ビットの値に関係のない所定値を含む。このように、仮想タグ部の所定ビットは、このようにして、メモリ・システムによって「match−all」比較が行われることを強制するための制御ビットとして振る舞う。
match−all比較が行われることをトリガする物理タグ部の所定部分は様々に定義されてよいが、いくつかの実施例において、物理タグ部の所定部分は、物理タグ部の所定ビットである。match−all比較を行うべきか否かについてのメモリ・システムへの信号は、このようにして、(他の情報をメモリ・システムに通信するための物理タグ部の他のビットを潜在的に残して)物理タグ部の単一ビットだけによって通信されることが可能である。
物理タグ部とガード・タグ値との間のガード・タグ比較は様々に構成されてよいが、いくつかの実例において、ガード・タグ比較は、物理タグ部の全ての、記憶場所と関連付けられたガード・タグ値との比較より小さいものである。
さらに、物理タグ部の所定部分の所定値は様々に定義されてよいが、いくつかの実例において、仮想タグ部は、物理アドレスに含まれる少なくとも1つのビットを含み、メモリ・システムは、少なくとも1つのビットに応答して、記憶場所にライト・アクセスが行われるとき、記憶場所と関連付けられたガード・タグの上書きを制御する。このようにして、仮想タグ部のビットを定義する処理は、この少なくとも1つのビットを使用して、記憶場所に対してライト・アクセスがどのように行われることになるかについてメモリ・システムに通信し、この実例において、ライト・アクセスが行われるとき、記憶場所と関連付けられたガード・タグの上書きを制御することができる。原則として、記憶場所に対してライト・アクセスが行われるとき、一般に、定義されたガード・タグ配分を、記憶場所にアクセスする処理が遵守している場合、これは変更するべきではないので、この記憶場所と関連付けられたガード・タグが更新されるのは必須ではないが、ガード・タグの上書きの制御は、ライト・アクセスが行われるときにガード・タグ値が上書きされることを強制することによって、ライト・アクセスを行っている処理が、そのように行うことを正しく許可される追加のレベルの検証を提供する。
いくつかの実例において、仮想タグ部及び仮想アドレス部を含む仮想アドレスに対して行われることになる、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を選択することであって、仮想アドレスに依存する、選択することと、仮想タグ部を物理タグ部に変換するために変換を行うことと、を含む方法がある。
いくつかの実例において、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換プログラム・ロジックを含み、アドレス変換プログラム・ロジックが、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換プログラム・ロジックを含み、アドレス変換プログラム・ロジックが、アドレス・タグ変換回路によって仮想アドレスに依存して行われることになる変換を選択する、コンピュータ・プログラムがある。
いくつかの実例において、上述のコンピュータ・プログラムを格納するストレージ媒体があり、このストレージ媒体は、非一時的ストレージ媒体であることが可能である。
いくつかの特定の実施例が、図を参照しながらこれから説明される。
図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を備える。各ページ・テーブルのエントリは、アドレスの対応するページに対するアドレス変換マッピングを提供することができ、ページがリード・オンリの領域であるか、可読及び書込み可能の両方であるかを指定するアクセス許可、又は、どの特権レベルがページにアクセスできるかを指定するアクセス許可などの、アクセス制御パラメータを指定することもできる。
図2は、タグ・ガード式メモリ・アクセスの概念を概略的に示す。メモリ・システム内の記憶場所を参照するために使用される物理アドレス空間は、いくつかのブロック30に論理的に区分されることが可能であり、それぞれは、一定数のアドレス指定可能な位置を含む。簡潔さのために、図2の実例において、各ブロック30は4つの記憶場所を含むが、他のブロック・サイズも同様に使用されることが可能である。各ブロック30は、対応するガード・タグ32と関連付けられる。一定数のブロック30と関連付けられたガード・タグは、ひとまとめにされ、物理アドレス空間内の異なる構造的にアクセス可能な記憶場所34の中、又は、構造的にアクセス可能ではない(同じ物理アドレス空間にマッピングされていない)、メイン・メモリ18内に用意された追加の格納先に格納されることが可能である。別個の構造的にアクセス可能でないストレージの使用は、場合によっては、通常のコードの実行に影響を及ぼす恐れがあり、コヒーレンス管理をより複雑にする恐れのある、ガード・タグ値をキャッシュするためのデータ・キャッシュ16、17内の空間を使用し尽くすこと、を避けるのに好ましい可能性がある。追加のタグ・キャッシュ19は、メイン・メモリ18からタグにアクセスしなければならない場合よりアクセスを高速にするために、構造的にアクセス可能でないストレージからのタグ値をキャッシュするために、マイクロ・アーキテクチャの中で提供されることが可能である。タグ格納先34が各ブロック30に対応する特定のマッピングは、ロード/格納ユニット15によって制御されることが可能であり、配線で接続されること、又はプログラム可能であることが可能である。図2において、各タグ32は、物理アドレスのブロックと関連付けられているが、仮想メモリ・アドレス空間内の仮想記憶場所と関連付けられたガード・タグ32を提供することも可能であるはずであるが、これは、各メモリ・アクセスに対していくつかの追加のアドレス変換を必要とする可能性がある。したがって、ガード・タグ32を物理記憶場所と関連付けることによって、これは、性能を改善することができる。一般に、これは、物理アドレス空間の対応するブロック30と、ガード・タグ32が正確にどのように関連付けられるかについての、特定のマイクロ・アーキテクチャの実装形態の選択である。一般に、必要とされるものは全て、メモリの所与のブロックと関連付けられたガード・タグ32がアクセスされ、比較されることが可能であるというものである。
したがって、タグ・ガード式メモリ・アクセスが必要なとき、(アクセスされることになるアドレス指定位置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個の可能な値を提供することは、しばしば、多くの共通タイプのメモリ・アクセス・エラーを検出するのに十分である可能性がある。
したがって、タグ・ガード式メモリ・アクセスが行われるとき、アドレス・タグ40と、アドレス指定位置44を含むブロック30と関連付けられたガード・タグ32との間で比較が行われ、これらがマッチするかどうかについて判定が行われる。図1の実例の構成において、ロード/格納ユニット15と物理メモリ18との間のどこでも比較が行われることが可能である(及び実際は、この経路に沿って分散されることが可能である)ということに留意されたい。しかしこの実例において、比較は、簡略化のために、ロード/格納ユニット15によって比較が行われるという観点から説明される。ロード/格納ユニット15は、アドレス・タグ40とガード・タグ32がマッチしたかどうかを示すマッチ指標を生成する。例えば、このマッチ指標は、アドレス・タグ40とガード・タグ32との間にミスマッチがある場合に生成されるフォルト信号60、又は、マッチがあったかどうかを示す状態レジスタ内にある指標、又は、エラーが検出されたアドレス、及び/若しくはエラーをトリガした命令の命令アドレスを示すためのエラー・レポートに追加されたエントリ、であることが可能である。
図3は、タグ・ガード式メモリ・アクセスをハンドリングするための流れ図を示す。メモリ・アクセスをトリガする命令は、アドレス・タグ及びターゲット・アドレスを指定することができる。図2に示されているように、いくつかのケースにおいて、アドレス・タグは、ターゲット・アドレス自体のビットのサブセットから実際に導出されることが可能であるが、他の実例において、別個のレジスタで指定されることが可能である。ステップ50において、タグ・ガード式メモリ・アクセスをトリガする命令が発生する。それに応じて、ステップ52において、メモリ・アクセス回路15は、ターゲット・アドレスによって識別されたアドレス指定位置44へのメモリ・アクセスをトリガする。また、ステップ54において、メモリ・アクセス回路15は、ターゲット・アドレスによって識別されたアドレス指定位置44を含む、記憶場所30のブロックに関連のある、メモリ・システムに格納されたガード・タグ32を取得する。ステップ56において、メモリ・アクセス回路15は、ステップ54において取得されたガード・タグ32と、アドレス・タグ40を比較する。ステップ58において、ガード・タグとアドレス・タグとの間でマッチが検出されたかどうかについての指標が、メモリ・アクセス回路15によって生成される(例えば、上述のマッチ/ミスマッチ・レポート指標のタイプのいずれか)。いずれかのミスマッチをレポートするために使用される正確な指標は、実装形態によって変化する可能性がある。
図4は、実例の実施例において使用されることが可能な仮想アドレス空間60の図を概略的に示す。図は、この64ビット・アドレス空間において指定されることが可能な仮想アドレスの全範囲を示し、上位部分62が、カーネル使用のために予約されているものとして示されている一方で、下位部分64は、ユーザ空間として予約されているものとして示されている。したがって、カーネル空間における仮想アドレスは、連続した1の先頭(最上位)セットを含む一方で、ユーザ空間における仮想アドレスは、先頭ゼロの対応する連続セットを含む。図にさらに記されているように、この仮想アドレス空間への参照は264を法とする手法で行われ、その結果、0xFF...FFより上位の仮想アドレスへの参照をインクリメントすると、最小定義アドレス0x00...00にラップ・アラウンドするという点において、この空間において定義されることが可能な最小アドレス(0x00...00)と最大アドレス(0xFF...FF)は互いに「隣接」している。
上述のように、プロセッサ・コアにおいて(すなわち、例えば、処理回路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を参照しながら下記において説明される。
図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条件における)マッチを満たすことが実質的にできるようになる。
一般に、仮想タグ部の残りの部分は、図の中でラベル付けされたように「予備」とみなされてよいが、いくつかの実例において、(例えば、図の中で「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」が構成される場合、この比較のために使用される。
図7は、図6に示された回路のいくつかの別の概略図であり、ここで、制御回路76による変換回路98の制御に対する変形物を示す。制御回路76は、(「OV」(オーバーライド)とラベル付けされた)仮想タグ部の特定のビットを受信し、これは、変換回路98によって特定のビット(又はビットの組合せ)が物理タグ部内に生成されることを強制するために使用されることが可能である。これは、例えば、match_all比較が行われることを強制するために使用されることが可能である。しかし原則として、タグ・ガード式メモリ・アクセスの一部としてのものであろうと、別のメモリ動作に関するものであろうと、変換回路98によって物理タグ部の中に生成された強制されたビット(又はビットの組合せ)によって、いずれかの目的が果たされることが可能であり、仮想タグ部内のオーバーライド・ビット(OV)は、これをトリガするために使用されることが可能である。
1つの実例において、1つのアプローチが行われ、「match_all」物理タグ・エンコーディングとして定義される、仮想アドレス部の最上位ビットに基づく仮想タグ・エンコーディングのうちの多くても1つについて選択が行われる。この「match_all」比較が行われるかどうかは、他のコンテキストの構成に基づくことも可能である。例えば、これは、全てのユーザ・タグが「match_one」であるように構成されることが可能であり、ユーザ・タグ「0」が「match_all」であるように構成されることが可能であり、全てのカーネル・タグが「match_one」であるように構成されることが可能であり、カーネル・タグ「1111」が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に復帰する。
図9は、使用されることが可能なシミュレータの実装形態を示す。前に説明された実施例は、当該の技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法の観点から本発明を実行しているが、コンピュータ・プログラムの使用によって実行される、本明細書において説明される実施例による命令実行環境を提供することもできる。このようなコンピュータ・プログラムは、これらが、ハードウェア・アーキテクチャのソフトウェア・ベースの実装形態を提供する限りにおいて、シミュレータと呼ばれることが多い。様々な種類のシミュレータ・コンピュータ・プログラムは、エミュレータ、仮想マシン、モデル、及び、ダイナミック・バイナリ・トランスレータを含むバイナリ・トランスレータを含む。典型的には、シミュレータの実装形態は、シミュレータ・プログラム210をサポートする、任意選択としてホスト・オペレーティング・システム220を実行するホスト・プロセッサ230上で実行することができる。いくつかの設計では、ハードウェアと、提供された命令実行環境、及び/又は同じホスト・プロセッサ上で提供される複数の別個の命令実行環境との間にシミュレーションの複数のレイヤがある可能性がある。歴史的に、適度な速さで実行するシミュレータの実装形態を提供するために強力なプロセッサが必要とされてきたが、このようなアプローチは、互換又は再使用のために、別のプロセッサにネイティブのコードを、実行するという要望があるときなどの一定の状況において正当化されることがある。例えば、シミュレータの実装形態は、ホスト・プロセッサ・ハードウェアによってサポートされない追加の機能を命令実行環境に提供すること、又は、異なるハードウェア・アーキテクチャと典型的に関連付けられた命令実行環境を提供することができる。シミュレーションの全体像は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53〜63頁において示されている。
特定のハードウェア構造又は特徴を参照しながら実施例が前に説明された範囲まで、シミュレートされた実施例において、適切なソフトウェア構造又は特徴によって同等の機能が提供されることが可能である。例えば、コンピュータ・プログラム・ロジックとしてシミュレートされた実施例において、特定の回路が実装されることが可能である。同様に、レジスタ又はキャッシュなどのメモリ・ハードウェアは、ソフトウェア・データ構造としてシミュレートされた実施例において実装されることが可能である。前述の実施例において参照されたハードウェア要素の1つ又は複数がホスト・ハードウェア(例えばホスト・プロセッサ230)上にある設計において、いくつかのシミュレートされた実施例は、適切な場合、ホスト・ハードウェアを使用することができる。
シミュレータ・プログラム210は、(非一時的媒体であることが可能な)コンピュータ可読ストレージ媒体212に格納され、シミュレータ・プログラム210によってモデル化される、ハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じ、(アプリケーション、オペレーティング・システム、及びハイパーバイザを含むことができる)ターゲット・コード200へのプログラム・インターフェース(命令実行環境)を提供することができる。このようにして、ターゲット・コード200のプログラム命令は、シミュレータ・プログラム210を使用して、命令実行環境内から実行されることが可能であり、これにより、上述の装置2のハードウェア特徴、及び、特にタグ変換回路72を、実際には備えていないホスト・コンピュータ230が、これらの特徴をエミュレートすることができる。例えば、シミュレータ・プログラム210は、仮想アドレスを物理アドレスに変換するためのアドレス変換ロジック214を含むことができ、特に、仮想アドレス・タグ部を物理アドレス・タグ部に変換するためのアドレス変換ロジック216を含むことができる。このようにして、シミュレータ・プログラム210は、ガード・タグとアドレス・タグの比較を行うため、ガード・タグとアドレス・タグとの間のなんらかのミスマッチが検出されたかどうかをレポートするためのメモリ・アクセス・プログラム・ロジックを含むこともできる。また、シミュレータ・プログラム110は、ハードウェア実施例がタグをセットするはずの方式に対応する方式でガード・タグを設定するための命令を含むタグ設定プログラム・ロジックを含むことができる。
簡単に全体を要約すると、装置は、仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換回路を備える。アドレス変換回路は、仮想タグ部の物理タグ部への変換を行うためのアドレス・タグ変換回路を備え、アドレス・タグ変換回路によって行われることになる変換は、仮想アドレスに依存して選択される。
本出願において、単語「〜ように構成された(configured to...)」は、装置の要素が、定義された動作を実行できる構成を備えることを意味するために使用される。この文脈において、「構成」は、ハードウェア又はソフトウェアの相互接続の設計又は手法を意味する。例えば、装置は、定義された動作を行う専用のハードウェアを備えることができ、又は、プロセッサ若しくは他の処理デバイスは、機能を実行するようにプログラムされることが可能である。「ように構成された(Configured to)」は、定義された動作を行うために任意の方式で装置の要素が変更される必要があることを意味しない。
例証的な実施例が、添付の図面を参照しながら本明細書において詳細に説明されてきたが、本発明はこれらの正確な実施例に限定されず、添付の特許請求の範囲によって定義されるような本発明の範囲を逸脱することなく当業者によって様々な変更、追加、及び修正がもたらされる可能性があるということが理解されよう。例えば、従属請求項の特徴の様々な組合せは、本発明の範囲から逸脱することなく、独立請求項の特徴によって行われることが可能である。

Claims (19)

  1. 仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換回路であって、
    前記仮想タグ部の前記物理タグ部への変換を行うためのアドレス・タグ変換回路
    を備え、
    前記アドレス・タグ変換回路によって前記仮想アドレスに依存して行われることになる前記変換を選択する
    アドレス変換回路
    を備える、装置。
  2. 前記アドレス・タグ変換回路によって行われる前記変換が、前記仮想アドレス部の最上位ビットに依存する、請求項1に記載の装置。
  3. 前記仮想アドレス部の前記最上位ビットが第1の値を含むとき、前記アドレス・タグ変換回路によって行われる前記選択された変換が、前記仮想タグ部にマッチする前記物理タグ部を生成し、
    前記最上位ビットが第2の値を含むとき、前記アドレス・タグ変換回路によって行われる前記選択された変換が、前記物理タグ部を生成するために前記仮想タグ部を修正する
    請求項2に記載の装置。
  4. 前記装置が、カーネル固有処理及びユーザ固有処理のうちの1つによる排他使用のための仮想アドレスを配分するように設計され、前記仮想アドレス部の前記最上位ビットの値が、前記仮想アドレスがカーネル固有処理に配分されたか、ユーザ固有処理に配分されたかを示すものである、請求項2又は3に記載の装置。
  5. 前記アドレス・タグ変換回路によって行われる前記選択された変換が、前記物理タグ部を生成するために前記仮想タグ部の少なくとも一部を反転することを含む、請求項1から4までのいずれか一項に記載の装置。
  6. 前記アドレス・タグ変換回路によって行われる前記選択された変換が、前記物理タグ部を生成するために前記仮想タグ部の少なくとも一部をインクリメントすることを含む、請求項1から4までのいずれか一項に記載の装置。
  7. 前記物理アドレスを受信し、前記物理アドレス部によって識別された記憶場所にアクセスするためのメモリ・システムをさらに備え、前記メモリ・システムが、前記物理アドレスの受信に応答して、前記物理タグ部の所定部分が所定値を含むとき、所定のメモリ動作を行う、請求項1から6までのいずれか一項に記載の装置。
  8. 前記所定のメモリ動作が、前記物理タグ部の、前記記憶場所と関連付けられたガード・タグ値とのガード・タグ比較であり、前記メモリ・システムが、前記物理タグ部と前記ガード・タグ値がマッチ条件を満たさないことに応答して、フォルト状態を示す、請求項7に記載の装置。
  9. 前記物理タグ部の所定部分が所定値を含むとき、前記マッチ条件が、いずれかのガード・タグ値が前記マッチ条件を満たすようなmatch−all条件である、請求項8に記載の装置。
  10. 前記物理タグ部の前記所定部分が前記所定値を含まないとき、前記マッチ条件が、前記マッチ条件を満たすために、前記物理タグ部の前記所定部分と前記ガード・タグ値が同じでなければならないようなmatch−one条件である、請求項9に記載の装置。
  11. 前記物理タグ部の前記所定部分が、前記物理タグ部のビットの所定セットである、請求項9又は10に記載の装置。
  12. 前記アドレス・タグ変換回路が、所定値を含む前記仮想タグ部の所定ビットに応答して前記物理タグ部を生成し、前記物理タグ部の前記所定部分が、前記仮想タグ部の他の所定ビットの値に関係のない前記所定値を含む、請求項9から11までのいずれか一項に記載の装置。
  13. 前記物理タグ部の前記所定部分が、前記物理タグ部の所定ビットである、請求項9又は10に記載の装置。
  14. 前記ガード・タグ比較が、前記物理タグ部の全ての、前記記憶場所と関連付けられた前記ガード・タグ値との比較より小さいものである、請求項8から13までのいずれか一項に記載の装置。
  15. 前記物理タグ部の前記所定部分の前記所定値が、同じビット値の全ビットを含む、請求項9から14までのいずれか一項に記載の装置。
  16. 前記仮想タグ部が、前記物理アドレスに含まれる少なくとも1つのビットを含み、前記メモリ・システムが、前記少なくとも1つのビットに応答して、前記記憶場所にライト・アクセスが行われるとき、前記記憶場所と関連付けられた前記ガード・タグの上書きを制御する、請求項8から15までのいずれか一項に記載の装置。
  17. 仮想タグ部及び仮想アドレス部を含む仮想アドレスに対して行われることになる、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を選択するステップであって、前記仮想アドレスに依存する、ステップと、
    前記仮想タグ部を前記物理タグ部に変換するために前記変換を行うステップと
    を含む、方法。
  18. ターゲット・プログラム・コードの命令の実行のための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
    仮想タグ部及び仮想アドレス部を含む仮想アドレスの、物理タグ部及び物理アドレス部を含む物理アドレスへの変換を行うためのアドレス変換プログラム・ロジック
    を含み、前記アドレス変換プログラム・ロジックが、
    前記仮想タグ部の前記物理タグ部への変換を行うためのアドレス・タグ変換プログラム・ロジック
    を含み、
    前記アドレス変換プログラム・ロジックが、前記アドレス・タグ変換回路によって前記仮想アドレスに依存して行われることになる前記変換を選択する
    コンピュータ・プログラム。
  19. 請求項18に記載のコンピュータ・プログラムを格納するストレージ媒体。
JP2020540422A 2018-01-31 2019-01-23 データ処理装置におけるアドレス変換 Active JP7369699B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1801598.2 2018-01-31
GB1801598.2A GB2570665B (en) 2018-01-31 2018-01-31 Address translation in a data processing apparatus
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 true JP2021513139A (ja) 2021-05-20
JP7369699B2 JP7369699B2 (ja) 2023-10-26

Family

ID=61558059

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020540422A Active JP7369699B2 (ja) 2018-01-31 2019-01-23 データ処理装置におけるアドレス変換

Country Status (9)

Country Link
US (1) US11687464B2 (ja)
EP (1) EP3746898B1 (ja)
JP (1) JP7369699B2 (ja)
KR (1) KR20200116471A (ja)
CN (1) CN111527480A (ja)
GB (1) GB2570665B (ja)
IL (1) IL275728B2 (ja)
TW (1) TWI791086B (ja)
WO (1) WO2019150077A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0215345A (ja) * 1988-07-04 1990-01-19 Hitachi Ltd データ処理装置
US5574877A (en) * 1992-09-25 1996-11-12 Silicon Graphics, Inc. TLB with two physical pages per virtual tag
JP2002366425A (ja) * 2001-06-05 2002-12-20 Hitachi Ltd アドレス変換回路を有するデータ処理装置

Family Cites Families (23)

* 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
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
JPH0887451A (ja) * 1994-09-09 1996-04-02 Internatl Business Mach Corp <Ibm> アドレス変換を管理する方法およびアドレス変換マネージャ
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
US6675279B2 (en) * 2001-10-16 2004-01-06 International Business Machines Corporation Behavioral memory enabled fetch prediction mechanism within a data processing system
US6792521B2 (en) 2001-10-16 2004-09-14 International Business Machines Corporation Behavioral memory mechanism for a data processing system
JP4085328B2 (ja) * 2003-04-11 2008-05-14 ソニー株式会社 情報処理装置および方法、記録媒体、プログラム、並びに撮像装置
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
WO2013078085A1 (en) 2011-11-22 2013-05-30 Mips Technologies, 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 (ja) 2013-09-20 2018-02-07 富士通株式会社 演算処理装置、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0215345A (ja) * 1988-07-04 1990-01-19 Hitachi Ltd データ処理装置
US5574877A (en) * 1992-09-25 1996-11-12 Silicon Graphics, Inc. TLB with two physical pages per virtual tag
JP2002366425A (ja) * 2001-06-05 2002-12-20 Hitachi Ltd アドレス変換回路を有するデータ処理装置

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4815539B2 (ja) フレーム管理を有する動的アドレス変換
KR102586257B1 (ko) 명령들의 실행을 제어하는 장치 및 방법
JP7291149B2 (ja) メモリ・アクセスにおける保護タグ・チェックの制御
KR20200107997A (ko) 다중 가드 태그 설정 명령어
JP7349437B2 (ja) メモリ・アクセスにおける保護タグ・チェックの制御
JP7369699B2 (ja) データ処理装置におけるアドレス変換
JP7317099B2 (ja) ガード・タグ紛失の取り扱い
TW202403562A (zh) 用於記憶體位址空間之頁面的「讀值只有x」性質

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