JP2022547545A - ページテーブルウォークメモリトランザクションのためのパーティション識別子 - Google Patents

ページテーブルウォークメモリトランザクションのためのパーティション識別子 Download PDF

Info

Publication number
JP2022547545A
JP2022547545A JP2022515710A JP2022515710A JP2022547545A JP 2022547545 A JP2022547545 A JP 2022547545A JP 2022515710 A JP2022515710 A JP 2022515710A JP 2022515710 A JP2022515710 A JP 2022515710A JP 2022547545 A JP2022547545 A JP 2022547545A
Authority
JP
Japan
Prior art keywords
partition
memory
partition identifier
page table
register
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.)
Pending
Application number
JP2022515710A
Other languages
English (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 JP2022547545A publication Critical patent/JP2022547545A/ja
Pending legal-status Critical Current

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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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/1009Address translation using page tables, e.g. page table structures
    • 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]
    • 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/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • 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/656Address space sharing
    • 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)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

メモリトランザクションには、どのソフトウェア実行環境によってメモリトランザクションが発行されたかに応じて選択されたパーティション識別子をタグ付けすることができる。メモリシステム構成要素は、メモリトランザクションによって指定されたパーティション識別子に応じて選択された、選択された1組のメモリシステム構成要素パラメータに応じて、メモリトランザクションを処理するためのリソースの割り当てを制御できるか、若しくはリソースの競合を管理できるか、又はメモリトランザクションによって指定されたパーティション識別子に応じて、性能監視データがメモリトランザクションに応答して更新されるかどうかを制御できる。ページテーブルウォークメモリトランザクションには、対応するデータ/命令アクセスメモリトランザクションにアサインされたパーティション識別子とは異なるパーティション識別子がアサインされ得る。【選択図】図3

Description

技術分野
本技術は、データ処理分野に関する。
技術背景
アプリケーション又は仮想マシンなどの2つ以上のソフトウェア実行環境は、ソフトウェア実行環境間で共有される共通のメモリシステムへのアクセスを用いて同じデータ処理システム上で実行され得る。システムによっては、共有メモリシステム内のリソースを多く使用している別のソフトウェア実行環境が原因で、1つのソフトウェア実行環境の性能が低下しないことが重要な場合がある。この問題は、「ノイジーネイバー(noisy neighbour)」問題と呼ばれることがあり、例えば、企業ネットワーキング又はサーバシステムにとって特に重大となり得る。
少なくともいくつかの例は、装置であって、複数のソフトウェア実行環境のうちの1つからの命令を処理する処理回路と、命令に応答して、処理回路によって発行されたメモリトランザクションを処理するための少なくとも1つのメモリシステム構成要素とを備え、どのソフトウェア実行環境がメモリトランザクションを発行させたかに応じて選択されたパーティション識別子を指定する処理回路によって発行されたメモリトランザクションに応答して、少なくとも1つのメモリシステム構成要素は、メモリトランザクションによって指定されたパーティション識別子に応じて選択された、選択された1組のメモリシステム構成要素パラメータに応じて、メモリトランザクションを処理するためのリソースの割り当てを制御するか、若しくは当該リソースの競合を管理するか、又はメモリトランザクションによって指定されたパーティション識別子に応じて、性能監視データがメモリトランザクションに応答して更新されるかどうかを制御するように構成され、ページテーブルウォークメモリトランザクションが、対応するデータ/命令アクセスメモリトランザクションの変換されたターゲットアドレスを取得するために必要なページテーブルデータへのアクセスを要求するために、処理回路によって発行されると、処理回路は、ページテーブルウォークメモリトランザクションに、対応するデータ/命令アクセスメモリトランザクションにアサインされたパーティション識別子に異なるパーティション識別子をアサインすることができる、装置を提供する。
少なくともいくつかの例は、装置であって、複数のソフトウェア実行環境のうちの1つからの命令を処理するための手段と、命令に応答して処理するための手段によって発行されたメモリトランザクションを処理するための少なくとも1つの手段とを備え、どのソフトウェア実行環境がメモリトランザクションを発行させたかに応じて選択されたパーティション識別子の指定を処理するための手段によって発行されたメモリトランザクションに応答して、メモリトランザクションを処理するための少なくとも1つの手段は、メモリトランザクションによって指定されたパーティション識別子に応じて選択された、選択された1組のメモリシステム構成要素パラメータに応じて、メモリトランザクションを処理するためのリソースの割り当てを制御するか、若しくは当該リソースの競合を管理するか、又はメモリトランザクションによって指定されたパーティション識別子に応じて、性能監視データがメモリトランザクションに応答して更新されるかどうかを制御するように構成され、ページテーブルウォークメモリトランザクションが、対応するデータ/命令アクセスメモリトランザクションの変換されたターゲットアドレスを取得するために必要なページテーブルデータへのアクセスを要求するために、処理するための手段によって発行されると、処理するための手段は、ページテーブルウォークメモリトランザクションに、対応するデータ/命令アクセスメモリトランザクションにアサインされたパーティション識別子に異なるパーティション識別子をアサインすることができる、装置を提供する。
少なくともいくつかの例は、方法であって、複数のソフトウェア実行環境のうちの1つからの命令を処理することと、命令に応答して発行されたメモリトランザクションを処理することとを含み、どのソフトウェア実行環境がメモリトランザクションを発行させたかに応じて選択されたパーティション識別子を指定するメモリトランザクションに応答して、少なくとも1つのメモリシステム構成要素は、メモリトランザクションによって指定されたパーティション識別子に応じて選択された、選択された1組のメモリシステム構成要素パラメータに応じて、メモリトランザクションを処理するためのリソースの割り当てを制御するか、若しくは当該リソースの競合を管理するか、又はメモリトランザクションによって指定されたパーティション識別子に応じて、性能監視データがメモリトランザクションに応答して更新されるかどうかを制御し、ページテーブルウォークメモリトランザクションが、対応するデータ/命令アクセスメモリトランザクションの変換されたターゲットアドレスを取得するために必要なページテーブルデータへのアクセスを要求するために発行されると、ページテーブルウォークメモリトランザクションにアサインされたパーティション識別子は、対応するデータ/命令アクセスメモリトランザクションにアサインされたパーティション識別子とは異なるパーティション識別子であることができる、方法を提供する。
メモリシステムを備えるデータ処理システムの一例を概略的に示す図である。 メモリトランザクションに関連するソフトウェア実行環境に割り当てられたパーティション識別子に応じたメモリシステムリソースの分割制御の一例を概略的に示す図である。 パーティション識別子を指定するメモリトランザクションを発行するための処理回路の一例を概略的に示す図である。 処理回路によって実行される異なるソフトウェア実行環境の一例を示す図である。 異なるソフトウェア実行環境にパーティション識別子を割り当てる例を示す図である。 所与のメモリトランザクションに対してどのパーティション識別子が指定されるかを制御するための制御レジスタの一例を示す図である。 マスタデバイスからデータアクセスメモリトランザクションを発行する方法を示す流れ図である。 マスタデバイスから命令フェッチメモリトランザクションを発行する方法を示す流れ図である。 処理回路の現在の動作状態に応じたパーティション識別子レジスタの選択を概略的に示す図である 仮想パーティション識別子を物理パーティション識別子にマッピングする例を概略的に示す図である。 仮想パーティション識別子を物理パーティション識別子にマッピングする方法を示す流れ図である。 命令及びデータメモリトランザクションのために別々のパーティション識別子を生成する例を概略的に示す図である。 メモリシステム構成要素におけるメモリトランザクションに応答する方法を示す流れ図である。 パーティション識別子に応じてキャッシュリソースの割り当てを制御し、かつ/又はパーティション識別子に基づいて選択された性能監視データを更新するキャッシュの一例を示す図である。 パーティション識別子に応じて選択された容量閾値に応じてキャッシュへの割り当てを制御する方法を示す流れ図である。 パーティション識別子に応じてキャッシュのどの部分にデータを割り当てることができるかを制御する例を示す図である。 ページテーブルウォークメモリトランザクション専用のいくつかのパーティション識別子レジスタが提供される第1の例を示す図である。 ページテーブルウォークトランザクションが現在の特権レベル又はより大きな特権の特権レベルに関連付けられたパーティション識別子レジスタからのパーティション識別子を使用するかどうかを制御するための構成情報が提供される代替例を示す図である。 どのパーティション識別子がページテーブルウォークメモリトランザクションに使用されるかを制御する方法を示す図である。
発明を実施するための実施例
装置は、いくつかのソフトウェア実行環境のうちの1つからの命令を処理する処理回路と、命令に応答して、処理回路によって発行されたメモリトランザクションを処理するための少なくとも1つのメモリシステム構成要素とを有してもよい。メモリトランザクションには、どのソフトウェア実行環境によってメモリトランザクションが発行されたかに応じて選択されるパーティション識別子をアサインすることができる。少なくとも1つのメモリシステム構成要素は、パーティション識別子に基づいて選択された1組のメモリシステム構成要素パラメータに応じて、リソースの割り当て又はリソースの競合の管理を制御するためにパーティション識別子を使用することができる。また、あるいはその代わりに、パーティション識別子を使用して、性能監視データがメモリトランザクションに応答して更新されるかどうかを制御することができる。
したがって、処理回路は、どのソフトウェアがトランザクションを発行したかに応じて、メモリトランザクションのラベルとしてパーティション識別子を提示してもよい。これは、メモリシステム内のリソースをソフトウェア実行環境間で分割することができ、1つのソフトウェア実行環境が、その公正なリソース共有を超えることを回避して、上記のノイジーネイバー問題に対処することができることを意味する。
しかしながら、本発明者は、所与のソフトウェア実行環境を実行するときに発行される全てのメモリトランザクションがその環境に関連する情報にアクセスしているわけではないことを認識した。以下でより詳細に論じられるように、対応するデータ/命令アクセスメモリトランザクションの変換されたターゲットアドレスを取得するために必要なページテーブルデータへのアクセスを要求するように発行されるページテーブルウォークメモリトランザクションの場合、ページテーブルデータは、データ又は命令アクセスメモリトランザクションを発行した実行環境よりも高いレベルの特権で実行されるソフトウェア実行環境によって管理され得る。ページテーブルウォークメモリトランザクションによって消費されたメモリリソースが、ページテーブルウォーク要求を発行した下位特権実行環境のリソース割り当ての一部として消費された場合、これは、そのソフトウェア実行環境によって発行された他のメモリトランザクションに使用され得るリソースを奪う可能性があり、異なるソフトウェア実行環境にアサインされたメモリリソースの相対量の不均衡をもたらす可能性がある。例えば、これは、共通のページテーブルデータへのアクセスを共有する2つ以上のソフトウェア実行環境のうちの最初のものがページテーブルデータに最初にアクセスしたためにそのリソースの一部を消費し、次いで、同じページテーブルデータを使用する他の実行環境は、それらのデータ/命令アクセスメモリトランザクションが第1のソフトウェア実行環境に応答して既にキャッシュされているページテーブルデータを使用することができたため、より多くのリソースを有し得、その結果、実質的に等しいリソース割り当てが提供されていてもよいソフトウェア実行環境に、実際には性能の不均衡をもたらすことがある。
したがって、処理回路が、ページテーブルウォークメモリトランザクションに、対応するデータ/命令アクセスメモリトランザクションにアサインされたパーティション識別子に異なるパーティション識別子をアサインすることを可能にするいくつかの実施形態が以下に説明される。これにより、リソース分割を、ページテーブルデータが異なるソフトウェア実行環境に対して管理される方法により正確に対応させることができ、より公平なリソース分割を提供することができる。
ページテーブルウォークメモリトランザクションのパーティション識別子の制御を考察する前に、最初に、ソフトウェア実行環境のためのパーティション識別子を設定し、それらのパーティション識別子を使用して、メモリシステム内のリソース割り当て又は管理及び/又は性能監視を制御するための一般的なアーキテクチャが説明される。一般的なアーキテクチャが説明された後、ページテーブルウォークメモリトランザクションを制御する機能については、「ページテーブルウォークメモリトランザクションのパーティション識別子の制御」という見出しのセクションで後述する。
メモリリソース及び性能監視分割のための一般的なアーキテクチャ
図1は、N個(Nは1以上)の処理クラスタ4を含むデータ処理システム2の一例を概略的に示し、各処理クラスタは、CPU(中央処理ユニット)又はGPU(グラフィック処理ユニット)などの1つ又は複数の処理ユニット6を含む。各処理ユニット6は、例えばレベル1データキャッシュ8、レベル1命令キャッシュ10、及び共有レベル2キャッシュ12など、少なくとも1つのキャッシュを有してもよい。これは可能なキャッシュ階層の一例にすぎず、他のキャッシュ構成を使用することもできることを理解されよう。同じクラスタ内の処理ユニット6は、クラスタ相互接続14によって結合されている。クラスタ相互接続は、いずれかの処理ユニットにアクセス可能なデータをキャッシュするためのクラスタキャッシュ16を有することができる。
システムオンチップ(SoC)相互接続18は、N個のクラスタと他の任意のマスタデバイス22(ディスプレイコントローラ又は直接メモリアクセス(DMA)コントローラなど)とを結合する。SoC相互接続は、それに接続されたマスタのいずれにもアクセス可能なデータをキャッシュするためのシステムキャッシュ20を有することができる。SoC相互接続18は、任意の既知のコヒーレンシプロトコルに従って、それぞれのキャッシュ8、10、12、16、20間のコヒーレンシを制御する。SoC相互接続はまた、各々がDRAM又はSRAMなどの対応するメモリ25へのアクセスを制御するための1つ又は複数のメモリコントローラ24に結合される。SoC相互接続18はまた、暗号化/復号化機能を提供するための暗号ユニットなどの他のスレーブデバイスにトランザクションを送ることができる。
したがって、データ処理システム2は、処理ユニット6及び他のマスタデバイス22によって発行されたトランザクションに応答してデータを格納し、データへのアクセスを提供するためのメモリシステムを備える。キャッシュ8、10、12、16、20、相互接続14、18、メモリコントローラ24、及びメモリデバイス25は各々、メモリシステムの構成要素と見なすことができる。メモリシステム構成要素の他の例は、メモリにアクセスするために使用されるメモリアドレスを変換するために使用されるメモリ管理ユニット又は変換ルックアサイドバッファ(処理ユニット6自体内、あるいは更に下のシステム相互接続18内又はメモリシステムの他の部分内)を含んでもよく、メモリシステムの一部と見なすことができる。一般に、メモリシステム構成要素は、メモリデータにアクセスするためにメモリトランザクションをサービスするため、又はそれらのメモリトランザクションの処理を制御するために使用されるデータ処理システムの任意の構成要素を含むことができる。
メモリシステムは、メモリトランザクションを処理するために利用可能な様々なリソースを有することができる。例えば、キャッシュ8、10、12、16、20は、プロセッサ6のうちの1つで実行されている所与のソフトウェア実行環境によって必要とされるデータをキャッシュするために利用可能な記憶容量を有し、それらがメインメモリ25からフェッチされなければならなかった場合よりもデータ又は命令へのより速いアクセスを提供する。同様に、MMU/TLBはアドレス変換データをキャッシュするために利用可能な容量を有することができる。また、相互接続14、18、メモリコントローラ24、及びメモリデバイス25は各々、メモリトランザクションを処理するために利用可能な一定量の帯域幅を有することができる。
処理要素6上で実行されている複数のソフトウェア実行環境がメモリシステムへのアクセスを共有するとき、他の実行環境が性能の損失を知覚するのを防ぐために、1つのソフトウェア実行環境がその公平な共有を超えるリソースを使用するのを防ぐことが望ましい場合がある。これは、データセンタサーバの使用率を高めるために、一定量のメモリ容量と相互作用する独立したソフトウェアプロセスの数を増やすことによって設備投資を削減する需要が高まっているデータセンタ(サーバ)アプリケーションにとって特に重要であり得る。それにもかかわらず、ウェブアプリケーションのテールレイテンシの目標を達成することが依然として求められているので、サーバ上で実行されている1つのプロセスが他のプロセスが被る程度にメモリシステムリソースを独占することができるならば、それは望ましくない。同様に、ネットワーキングアプリケーションでは、以前は別々のSoCにあったはずの複数の機能を単一のSoCに組み合わせることがますます一般的になっている。これもまた、ソフトウェア実行環境間の性能の相互作用を制限し、性能の相互作用を制限しながらこれらの独立したプロセスが共有メモリにアクセスすることを可能にする必要がある方法を監視したいという要望につながる。
図2は、対応するメモリトランザクションを発行するソフトウェア実行環境に応じてメモリシステムリソースの割り当ての制御を分割する例を概略的に示している。これに関連して、ソフトウェア実行環境は、データ処理システム内の処理ユニットによって実行される任意のプロセス、又はプロセスの一部であり得る。例えば、ソフトウェア実行環境は、アプリケーション、ゲストオペレーティングシステム若しくは仮想マシン、ホストオペレーティングシステム若しくはハイパーバイザ、システムの異なるセキュリティ状態を管理するためのセキュリティモニタプログラム、又はこれらのタイププロセスのいずれかのより低い部分を含んでもよい(例えば、単一の仮想マシンが別々のソフトウェア実行環境と見なされる異なる部分を有する場合がある)。図2に示すように、各ソフトウェア実行環境には、そのソフトウェア実行環境に関連するメモリトランザクションと共にメモリシステム構成要素に渡される所与のパーティション識別子30が割り当てられてもよい。
メモリシステム構成要素内では、パーティション識別子に基づいて選択されたメモリシステム構成要素パラメータの複数のセットのうちの1つに基づいて、リソース割り当て又は競合解決動作を制御することができる。例えば、図2に示すように、各ソフトウェア実行環境には、そのソフトウェア実行環境に関連するデータ/命令に割り当てることができるキャッシュ容量の最大量を表す割り当て閾値がアサインされてもよく、所与のトランザクションをサービスするときの関連する割り当て閾値は、そのトランザクションに関連するパーティション識別子に基づいて選択される。例えば、図2では、パーティション識別子0に関連付けられているトランザクションが、キャッシュの記憶容量の最大50%にデータを割り当て、キャッシュの少なくとも50%を他の目的に使用できるようにする。
同様に、メモリトランザクションをサービスするために利用可能な有限量の帯域幅を有するメモリコントローラ24のようなメモリシステム構成要素では、最小及び/又は最大帯域幅閾値が各パーティション識別子に対して指定され得る。所与の期間内に、そのパーティション識別子を指定するメモリトランザクションが最小量の帯域幅よりも少ない量しか使用していない場合には、所与のパーティション識別子に関連するメモリトランザクションを優先させることができ、一方で、最大帯域幅が既に同じパーティション識別子を指定しているトランザクションに使用されているか超えている場合は、プライオリティを下げてメモリトランザクションに使用できる。
これらの制御方式については以下で更に詳しく説明する。当然のことながら、これらは、対応するトランザクションを発行したソフトウェア実行環境に基づいてメモリシステムリソースの制御を分割することができる方法の単なる2つの例である。一般に、異なるプロセスがメモリシステムによって提供されるリソースの異なる分割された部分を「見る」ことを可能にすることによって、プロセス間の性能の相互作用を制限して上述の問題に対処するのを助けることを可能にする。
同様に、メモリトランザクションに関連するパーティション識別子を使用してメモリシステム内の性能監視を分割することができるので、所与のソフトウェア実行環境(又はソフトウェア実行環境のグループ)に固有の情報を識別させることを可能にするために各パーティション識別子について別々のセットの性能監視データを追跡でき、その結果、性能監視データが全てのソフトウェア実行環境全体で記録されている場合よりも、潜在的な性能の相互作用の原因を簡単に特定できる。これは、潜在的な性能の相互作用の影響を診断し、考えられる解決策の識別にも役立ち得る。
パーティション識別子の設定を制御し、対応するソフトウェア実行環境に対して設定されたパーティション識別子に基づいてメモリトランザクションをラベル付けし、メモリシステムを通してパーティション識別子をルーティングし、そしてメモリシステム内のメモリシステム構成要素においてパーティションベースの制御を提供するためのアーキテクチャを以下に説明する。このアーキテクチャは、パーティション識別子の幅広い用途に合わせて拡張できる。パーティション識別子の使用は、メモリシステムの既存のアーキテクチャ上のセマンティクスを変更せずに重ね合わせることを目的としているため、メモリシステムによって使用されている特定のメモリプロトコルによって課されるアドレス指定、コヒーレンス、及び必要なメモリトランザクションの順序付けは、リソース/性能監視分割の影響を受けない。パーティション識別子を使用してリソース割り当てを制御するとき、これは所与のソフトウェア実行環境のためのメモリトランザクションをサービスするときに達成される性能に影響を及ぼし得るが、それはアーキテクチャ上有効な計算の結果に影響を及ぼさない。すなわち、パーティション識別子は、メモリトランザクションの成果又は結果(例えば、どのデータがアクセスされるか)を変更するのではなく、単にそのメモリトランザクションに対して達成されるタイミング又は性能に影響を及ぼすだけである。
図3は、処理ユニット6の一例をより詳細に概略的に示している。プロセッサは、命令キャッシュ10から命令をフェッチするためのフェッチステージ40、フェッチされた命令をデコードするためのデコードステージ42、オペランドが使用可能になるのを待っている間に命令を待ち行列に入れ、オペランドが使用可能になったときに実行のために命令を発行する発行キュー46を含む発行ステージ44、対応する処理動作を実行するために異なるクラスの命令を実行するための複数の実行ユニット50を含む実行ステージ48、及び処理動作の結果をデータレジスタ54に書き込むためのライトバックステージ52を含む、いくつかのパイプラインステージを含む処理パイプラインを含む。データ処理動作のためのソースオペランドは、実行ステージ48によってレジスタ54から読み取られてもよい。この例では、実行ステージ48は、算術演算又は論理演算を実行するためのALU(算術/論理ユニット)、浮動小数点値を使用して演算を実行するための浮動小数点(FP)ユニット、及びメモリシステムからレジスタ54にデータをロードするためのロードオペレーション、若しくはレジスタ54からメモリシステムにデータを格納するためのストアオペレーションを実行するためのロード/ストアユニットを含む。当然のことながら、これらは、可能な実行ユニットのほんのいくつかの例であり、他のタイプを提供することができる。同様に、他の例は、異なる構成のパイプラインステージを有することができる。例えば、故障したプロセッサでは、命令によって指定されたアーキテクチャ上のレジスタ指定子を、ハードウェアに設けられた物理レジスタ指定子識別レジスタ54に再マッピングするための追加のレジスタリネーミングステージ、ならびに命令がキャッシュ10からフェッチされた順序とは異なる順序で実行された命令の実行及びコミットメントを追跡するためのリオーダバッファを設けることができる。同様に、図1に示されていない他の機構も依然として提供することができ、例えば、分岐予測機能は、分岐命令の予測結果に基づいて、次のフェッチアドレス61の生成を制御するためにフェッチステージで提供され得る。
プロセッサ6は、例えば実行中のプログラムの現在の実行時点を示すプログラムカウンタを格納するためのプログラムカウンタレジスタ62、プロセッサが命令を実行している時点で現在の例外レベルの表示を格納するための例外レベルレジスタ64、プロセッサが非セキュア状態にあるかセキュア状態にあるかの表示を格納するためのセキュリティ状態レジスタ66、ならびにメモリシステムリソース及び性能監視分割を制御するためのメモリ分割監視(MPAM)制御レジスタ68(MPAM制御レジスタについては以下で更に詳細に説明する)、を含む複数の制御レジスタ60を有する。他の制御レジスタもまた提供され得ることが理解されよう。プログラムカウンタレジスタ62は、フェッチステージ40によって維持されるものとして図3に示されているが、他のステージ、例えば、実行ステージ48にアクセス可能であり得る。
プロセッサは、メモリトランザクションに応答してメモリシステムへのアクセスを制御するためのメモリ管理ユニット(MMU)70を有する。例えば、ロード又はストア命令に遭遇すると、ロード/ストアユニットは、仮想アドレスを指定する対応するメモリトランザクションを発行する。仮想アドレスは、1つ又は複数の変換ルックアサイドバッファ(TLB)72、73、74に格納されたアドレスマッピングデータを使用して仮想アドレスを物理アドレスに変換するメモリ管理ユニット(MMU)70に提供される。TLBは、ロード/ストアユニット50によって開始されたデータアクセスのためのレベル-1 TLBとして機能するデータTLB74を含み得、命令TLB73は、フェッチステージ40によって開始されるレベル-1 TLBとして機能し、命令及びデータアクセスの両方の共有レベル-2 TLBとして機能する主TLB72は、レベル-1 TLB73、74のミスでアクセスされる。各TLB72~74は、いくつかのTLBエントリを格納する。各TLBエントリは、アドレスをどのように変換するかを識別するマッピングデータだけでなく、プロセッサがアドレス空間の対応するページ内のアドレスに読み書きすることを許可されるかどうかを定義する関連するアクセス許可データも識別してもよい。いくつかの例では、複数のステージのアドレス変換があってもよく、したがって複数のTLB、例えば、ロード/ストアユニット50によって生成された仮想アドレスを中間物理アドレスにマッピングするための変換の第1のステージを提供するステージ1 TLB、及び中間物理アドレスをアクセスされるデータを識別するためにメモリシステムによって使用される物理アドレスにマッピングするための変換の第2のステージを提供するステージ2 TLBがあってもよい。ステージ1のTLBのマッピングデータは、オペレーティングシステムの制御下で設定され得、ステージ2のTLBのマッピングデータは、ハイパーバイザの制御下で設定され得、例えば仮想化をサポートする。図3に示すTLBの配置は、単なる一例であり、他の実装形態は、TLBの異なる1組を有することができることが理解されよう。
TLB72、73、74に加えて、MMUはまた、ページテーブルウォーク中にTLBにロードされるべきマッピングデータを識別するために使用されるデータをキャッシュするためのページウォークキャッシュ75などの他のタイプのキャッシュも含むことができる。メモリシステムは、仮想メモリアドレス空間の各ページについてアドレスマッピングデータを指定するページテーブルを格納することができる。TLB72、73、74は、最近アクセスされたいくつかのページについてそれらのページテーブルエントリのサブセットをキャッシュすることができる。プロセッサが、対応するアドレスマッピングデータがTLB72、73、74に格納されていないページにメモリトランザクションを発行すると、ページテーブルウォークユニット76が開始される。必要なページのアドレスマッピングエントリを識別するためにメモリ内をトラバースするページテーブルのレベルが複数ある場合があるため、これは比較的遅くなる可能性がある。ページテーブルウォークをスピードアップするために、ページテーブルの最近アクセスされたページテーブルエントリをページウォークキャッシュ75に入れることができる。これらは通常、必要なページのマッピングを実際に指定する最終レベルのページテーブルエントリ以外のページテーブルエントリである。これらのより高いレベルのページテーブルエントリは通常、対応するアドレス範囲に対する他のページテーブルエントリがメモリ内のどこにあり得るかを特定する。前のページテーブルウォークでトラバースしたページテーブルの少なくともいくつかのレベルをページウォークキャッシュ75にキャッシュすることによって、ページテーブルウォークの同じ初期部分を共有する他のアドレスに対するページテーブルウォークをより速くすることができる。あるいは、ページテーブルエントリ自体をキャッシュするのではなく、ページウォークキャッシュ75は、それらのページテーブルエントリがメモリ内で見つけられることができるアドレスをキャッシュすることができ、そのため再び所与のページテーブルエントリは、それらのアドレスがメモリ内の他のページテーブルエントリに最初にアクセスすることによって識別されなければならない場合よりも速くアクセスされ得る。
図4は、プロセッサ6によって実行され得る異なるソフトウェア実行環境の例を示している。この例では、アーキテクチャは、特権レベルが増加する4つの異なる例外レベルEL0からEL3をサポートする(したがって、EL3が最も高い特権例外レベルを有し、EL0が最も低い特権例外レベルを有する)。一般に、より高い特権レベルは、より低い特権レベルよりも高い特権を有し、したがって、少なくともいくつかのデータにアクセスする、及び/又はより低い特権レベルには利用できないいくつかの処理動作を実行することができる。アプリケーション80は、最も低い特権レベルEL0で実行される。いくつかのゲストオペレーティングシステム82が特権レベルEL1で実行され、各ゲストオペレーティングシステム82は、EL0で1つ又は複数のアプリケーション80を管理する。ハイパーバイザ又はホストオペレーティングシステムとしても知られる仮想マシンモニタ84は、例外レベルEL2で実行され、それぞれのゲストオペレーティングシステム82の仮想化を管理する。EL0のいくつかのアプリケーションは、EL1に介在するオペレーティングシステムなしで、EL2のホストオペレーティングシステムによって直接管理でき得る。
より低い例外レベルからより高い例外レベルへの移行は、例外イベントによって引き起こされる可能性があり(例えば、ハイパーバイザ又はとホストオペレーティングシステムによって処理される必要があるイベントは、EL2への遷移を引き起こす可能性がある)、一方で、より低いレベルに戻る移行は、例外イベント処理からの復帰によって引き起こされる可能性がある。例外イベントの中には、それらが取得されたレベルと同じ例外レベルでサービスされるものもあれば、より高い例外状態への移行をトリガするものもある。現在の例外レベルレジスタ64は、処理回路6が例外レベルEL0~EL3のどれで現在コードを実行しているかを示す。
この例では、システムは、セキュアドメイン90と通常の(安全性の低い)ドメイン92との間の分割もサポートする。機密性の高いデータ又は命令を、それらをセキュアドメイン90にアクセス可能であるとマークされたメモリアドレスにのみ割り当てることによって保護することができ、安全性の低いドメイン92で実行されているプロセスがデータ又は命令にアクセスできないことを保証するためのハードウェア機構をプロセッサが有する。例えば、MMU70に設定されたアクセス許可は、セキュアドメインと非セキュアドメインとの間の分割を制御することができ、あるいは、完全に別のセキュリティメモリ管理ユニットを使用してセキュリティ状態分割を制御することができ、別々のセキュア及び非セキュアMMU70は、それぞれのセキュリティ状態内の副制御のために提供されている。セキュアドメイン90と通常ドメイン92との間の移行を、最も高い特権レベルEL3で実行されているセキュア監視プロセス94によって管理することができる。これにより、ドメイン間の遷移を厳密に制御して、例えばセキュアドメインからのデータへのアクセスなどの非セキュアオペレーション80又はオペレーティングシステム82を防ぐことができる。他の例では、ハードウェア技術を使用してセキュリティ状態とポリス遷移との間の分離を強制することができ、その結果、通常ドメイン92内のコードは、別のセキュア監視プロセス94を介して遷移することなくセキュアドメイン90内のコードに直接分岐することができる。しかしながら、説明を容易にするために、以下の説明では、EL3でセキュア監視プロセス94を使用する例を参照する。セキュアドメイン90内では、セキュアワールドオペレーティングシステム96が例外レベルEL1で実行され、1つ又は複数の信頼できるアプリケーション98がそのオペレーティングシステム96の制御下で、例外レベルEL0で実行され得る。この例では、必要に応じてこれを提供することは依然として可能ではあるが、仮想化がセキュアドメインではサポートされていないので、セキュアドメイン90に例外レベルEL2はない。そのようなセキュアドメイン90をサポートするためのアーキテクチャの例は、英国のArm(登録商標)Limited of Cambridgeによって提供されるTrustZone(登録商標)アーキテクチャであり得る。ただし、他の技術もまた使用され得ることが理解されよう。いくつかの例は2つより多いセキュリティ状態を有することができ、3つ以上の状態にそれらに関連している異なったレベルのセキュリティを提供する。セキュリティ状態レジスタ66は、現在のドメインがセキュアドメイン90であるか非セキュア92であるかを示し、これはMMU70又は他の制御ユニットに対して、特定のデータにアクセスできるか操作を許可するかを管理するために使用するアクセス許可を示す。
次に、図4は、システム上で実行することができるいくつかの異なるソフトウェア実行環境80、82、84、94、96、98を示している。これらのソフトウェア実行環境の各々には、所与のパーティション識別子(パーティションID又はPARTID)を割り当てることができ、又は2つ以上のソフトウェア実行環境のグループに共通のパーティションIDを割り当てることができる。場合によっては、単一プロセスの個々の部分(例えば、異なる機能又はサブルーチン)を別々の実行環境と見なし、別々のパーティションIDを割り当てることができる。例えば、図5に示される例では、仮想マシンVM3及びその下で実行されている2つのアプリケーション3741、3974が全てPARTID1に割り当てられ、第2の仮想マシンVM7の下で実行されている特定のプロセス3974がPARTID2に割り当てられ、VM7自体及びその下で実行されている別のプロセス1473には、PARTID0が割り当てられる。全てのソフトウェア実行環境に個別のパーティションIDを割り当てる必要はない。専用パーティションIDが割り当てられていないソフトウェア実行環境に使用するためにデフォルトパーティションIDを指定することができる。パーティションID空間のどの部分が各ソフトウェア実行環境に割り当てられるかの制御は、より高い特権レベルでソフトウェアによって実行され、例えば、EL2で動作するハイパーバイザは、EL1で動作する仮想マシンオペレーティングシステムへのパーティションの割り当てを制御する。ただし、場合によっては、ハイパーバイザは、より低い特権レベルのオペレーティングシステムが、独自のコードの一部又はその下で実行されているアプリケーションに独自のパーティションIDを設定することを許可することがある。また、いくつかの例では、セキュアワールド90は、セキュアワールドOS又はモニタプログラムEL3によって制御される、通常ワールド92とは完全に別のパーティションID空間を有することができる。
図3に示すように、CPUは、所与のメモリアクセストランザクションに関連付けられるMPAM関連情報を生成するためのMPAM生成論理77を含み得る。MPAM関連情報は、少なくともPARTIDを含んでもよいが、いくつかの例では他の情報も含むことができる。MPAM生成論理77は、MPAM関連情報を生成するためにどのレジスタを使用すべきかを決定するためにMPAM制御レジスタ68のパーティションIDレジスタ間で選択するMPAMレジスタ選択ロジック78と、仮想パーティションIDの物理パーティションIDへのマッピングを制御するためのパーティションID仮想化論理79とを含んでもよい。MPAMレジスタ選択論理78及びパーティションID仮想化論理79は、それぞれ図8及び図9に関してより詳細に後述される。MPAM生成論理77は、命令フェッチアクセスに使用される命令MPAM関連情報(I-MPAM)、データアクセスに使用されるデータMPAM関連情報(D-MPAM)、命令フェッチによってトリガされるページテーブルウォークアクセスに使用される命令ページテーブルウォークMPAM関連情報(I-PTW-MPAM)、及びデータページテーブルウォークMPAM関連情報に使用されるデータページテーブルウォークMPAM関連情報(D-PTW-MPAM)を含む、いくつかの代替MPAM関連情報を生成する。I-PTW-MPAM及びD-PTW-MPAMの選択については、図16~図17を参照して以下でより詳細に説明する。
図6は、MPAM制御レジスタ68の一例を示している。MPAM制御レジスタ68は、各々が処理回路のそれぞれの動作状態に対応するいくつかのパーティションIDレジスタ100(MPAMシステムレジスタとしても知られる)を含む。MPAM制御レジスタ68はまた、ハイパーバイザ制御レジスタ(HCR)、MPAMHCR_EL2 116、仮想パーティションID有効レジスタ(MPAMVPMV_EL2)124、及び1組の仮想パーティションIDマッピングレジスタ126を含む。この例では、8つの仮想パーティションIDマッピングレジスタ126、MPAMVPM0_EL2~MPAMVPM7_EL2があるが、他の実装形態は、異なる数を提供することができることが理解されよう。
この例では、パーティションIDレジスタ100は、それぞれの例外レベルEL0~EL3に対応するレジスタMPAM0_EL1~MPAM3_EL3を含む。この例では、パーティションIDレジスタ100は、所与の例外レベルについてセキュアワールドと非セキュアワールドとの間で共有され得るが、別のアプローチは、非セキュアワールドで同じ例外レベルに使用されるパーティションIDレジスタとは別に、所与の例外レベルでセキュアワールド処理のための専用パーティションIDレジスタを提供することであり得る。
各パーティションIDレジスタ100は、以下の表1に示すように最大3つのパーティションID用のフィールドを含む。
Figure 2022547545000002
以下の表2は、各動作状態で実行されるメモリトランザクションにどのパーティションIDレジスタ100が使用され、各パーティションIDレジスタ100がどの動作状態から制御されるか(すなわち、どの動作状態がそのレジスタによって指定される情報を更新できるか)を要約している。
Figure 2022547545000003
パーティションIDレジスタの命名規則MPAMx_Elyは、パーティションIDレジスタMPAMx_ELyに指定されたパーティションIDが、動作状態ELxにあるときに処理回路6によって発行されるメモリトランザクションに使用されること、及び状態ELyが、そのパーティションIDレジスタMPAMx_ELyにアクセスできる最も低い例外レベルであることを示す。しかしながら、現在の例外レベルが非セキュアドメイン内のEL0である場合、MPAM0_EL1をオーバーライドすることができ、制御レジスタ(後述するMPAMHCR_EL2 116)に設定された設定値GSTAPP_PLKが1に設定された場合、MPAM1_EL1内のパーティションIDが使用される。したがって、必要に応じて、EL1の制御は、EL0の制御をオーバーライドできる。これは、同じ仮想マシン内のアプリケーション間でコンテキストスイッチがあるたびにMPAM0_EL1を更新する必要がないように、特定の仮想マシンで実行されている全てのアプリケーションが同じパーティションIDを使用するように制限するのに役立ち得る。この例では構成パラメータGSTAPP_PLKがMPAMHCR_EL2 116制御レジスタに格納されるように説明されているが、他のMPAM制御レジスタ68(例えば、その構成パラメータを設定するより高い例外レベルに対応するパーティションIDレジスタ)に格納されることもできる。
一般に、同じ状態で実行されている異なるプロセス(例えば、EL0の異なるアプリケーションやEL1の異なるゲストオペレーティングシステム)を切り替えると、例外イベントは、プロセスがその状態で実行されている高い例外状態への切り替えをトリガし(例えば、EL1のオペレーティングシステム又はEL2のハイパーバイザ)、次に、処理をより低い例外状態に戻して新しいプロセスを続行できるようにする前に、関連するパーティションIDレジスタ100内のパーティションIDを更新する。したがって、所与のプロセスに関連付けられているパーティションIDは、そのプロセスに関連付けられているコンテキスト情報の一部と見なすことが効果的であり、このコンテキスト情報は、そのプロセスとの切り替え時にプロセッサのアーキテクチャ状態の一部として保存及び復元される。
しかし、システムの異なる動作状態に対応する複数のパーティションIDレジスタ100を提供することによって、コンテキストスイッチ以外のとき、例えば、同じOSに戻る前にハイパーバイザが何らかのアクションを実行するために、オペレーティングシステム(OS)が一時的にハイパーバイザにトラップする場合などに、動作状態に変化があるたびに単一のパーティションIDレジスタの内容を更新する必要はない。例えば、ハイパーバイザが、ハードウェアで実際に提供されているものとは異なる物理リソースのビューをOSに提供するために介入する必要がある場合、ハイパーバイザへのそのようなトラップは、仮想化システムではかなり一般的であり得る。したがって、複数のパーティションIDレジスタ100を提供することによって、パーティションIDを用いたメモリシステムトランザクションのラベリングは、例外レベル又はセキュア/非セキュア状態の変化に自動的に追従するので、例外レベル又はセキュリティ状態に変更があるたびにパーティションIDを更新する必要がないため、性能が向上する。
また、ほとんどの場合、所与の動作状態に関連するパーティションIDレジスタ100内で指定されるパーティションID及び任意の関連構成情報などの制御情報は、そのパーティションIDレジスタ100に関連する例外レベルよりも高い例外レベルで実行される命令に応答して設定されるが、場合によっては、所与の動作状態で実行しているコードが、対応するパーティションIDレジスタで、独自のパーティションIDを設定することが望ましい場合がある。制御フラグは、MPAM制御レジスタ68において設定されて、どの例外レベルが所与のパーティションIDレジスタ100に書き込むことができるかを制御し、及び/又は所与の例外レベルからの所与のパーティションIDレジスタ100への書き込みが、より高い例外レベルへのトラップをトリガするかどうかを制御してもよく、次いで、より低い例外レベルによって要求された書き込みを実施するかどうかを決定することができてもよい。したがって、より高い例外状態によって許可されていないときに同じ例外状態内からパーティションIDレジスタ100を設定しようとすると、そのより高い例外状態への切り替えをトリガする例外イベントが引き起こされ得る。より高い例外状態にある例外ハンドラは、パーティションIDの設定方法を決定できる。
一般に、メモリトランザクションが処理回路6によって生成されると、パーティションIDレジスタ100のうちの1つが、上で指定されたように現在の動作状態に基づいて選択される。メモリトランザクションが命令にアクセスするためのものである場合、そのトランザクションは、選択されたパーティションIDレジスタのPARTID_Iフィールドから導出されたパーティションIDでタグ付けされる。いくつかの例では、命令アクセスのためのTLB72のミスによってトリガされたページテーブルウォークメモリトランザクションは、命令アクセスと同じパーティションIDを使用するであろう。しかしながら、他の実施形態は、図16~図18に関して以下で説明するように、命令側ページテーブルウォークメモリトランザクションが命令アクセス自体に異なるパーティションIDを指定することを可能にしてもよい。メモリトランザクションがデータにアクセスするためのものである場合、トランザクションは、選択されたパーティションIDレジスタ100のPARTID_Dフィールドから導出されたパーティションIDでタグ付けされる(データアクセス後にMMUによって引き起こされるページテーブルウォークアクセスも、データアクセス自体と同じパーティションIDを使用するか、又は以下に更に説明されるように、データアクセスに異なるパーティションIDを指定してもよい)。なお、ページテーブルウォークアクセスを発行するMMU自体がパーティションIDに基づいてリソース/性能監視分割をサポートするかどうかにかかわらず、メモリシステムの別の部分のメモリシステム構成要素がそのような分割を実行することを可能にするために、依然として関連するパーティション識別子を対応するメモリトランザクションに付加してもよい。所与のパーティションIDレジスタのPARTID_Dフィールド及びPARTID_Iフィールドは、同じパーティションID又は異なるパーティションIDに設定され得る。
同じソフトウェア実行環境のデータアクセスと命令アクセスに別々のパーティションIDを定義できるようにして、対応する命令アクセスとデータアクセスに異なるリソース制御パラメータを使用できるようにすると有効であり得る。代替のアプローチは、ソフトウェア実行環境全体に関連する単一のパーティションIDを有するが、アクセスが命令又はデータのためであるかどうかに応じて0又は1の追加のビットを付加することであり、これによりメモリシステム構成要素は、命令アクセスとデータアクセスにそれぞれ異なる制御パラメータを選択することが可能になる。しかしながら、パーティションIDに基づいて選択された制御パラメータの所与の数のセットに対して、このアプローチは、データと命令との間にパーティションID空間の五分五分の分割がなければならないことを意味するであろう。実際には、複数のソフトウェア実行環境が、同じコードを使用しながら異なるデータ入力で実行することが比較的一般的である可能性があるため、多くの場合、命令パーティションよりも多くのデータパーティションを有することが望ましく、このため、単一の命令パーティションIDを複数のソフトウェア実行環境間で共有しながら、各々の環境で異なるデータパーティションを使用できるようにすると特に有効であり得る。データアクセスに関する命令を示すために0又は1ビットを付加するというアプローチは、その状況において、共通コードの各別々のインスタンスに対してメモリシステム構成要素において定義されるべき同一の構成情報の複数のセットを必要とする。対照的に、パーティションIDレジスタ100において、命令及びデータパーティションIDが、共通のID空間から選択される別々の命令及びデータパーティションフィールドを提供することによって、異なるソフトウェア実行環境間で同じパーティションIDを再利用し、これを五分五分の分割に制限することなく、必要に応じてデータと命令の間でパーティションID空間を分割することが可能である。各パーティションIDレジスタ100内の2つのパーティションIDフィールドにいくらかの追加の記憶容量が必要であるとしても、このアプローチは、複数の実行環境の命令アクセス間で1つのパーティションを共有することによって、メモリシステム構成要素において必要とされる制御パラメータのセットが少なくなり(したがって記憶容量が少なくなり)、メモリシステム構成要素でリソースを節約できる。
PARTIDを提供するだけでなく、トランザクションはまた、選択されたパーティションIDレジスタ100のPMG_D又はPMG_Iフィールドから導出された性能監視パーティションIDでタグ付けされる(PMGフィールドが、トランザクションがデータアクセス用であるか又は命令フェッチアクセス用であるかに依存する)。これにより、メモリシステム構成要素は、例えば、特定の性能モニタをメモリトランザクションに応答して更新する必要があるかどうかを判断するための基準の一部として、メモリトランザクションの性能監視IDを使用することによって、性能監視を分割することができる。一実施形態では、PMG_D又はPMG_Iフィールドは、PARTID_Dフィールド及びPARTID_Iフィールドから完全に独立しているものとして扱われ得る。この場合、性能監視を実施するメモリシステム構成要素は、メモリトランザクションが、同じメモリトランザクションに対して指定されたPARTID_D又はPARTID_I値とは無関係に、PMG_D又はPMG_I識別子のみに依存して、所与の性能モニタの更新を引き起こすかどうかを決定し得る。これは、それにもかかわらず、命令/データアクセスのための異なるパーティションが同じ性能監視IDを共有することができるという利点を提供し、それはメモリシステム構成要素で異なる命令/データアクセス構成を必要とする複数のプロセスに関する結合された性能統計の収集をサポートし得る。したがって、メモリシステム構成要素でリソース割り当てを制御するために使用されるパーティションIDとは別に性能監視グループIDを指定することによって、リソースが別々に割り当てられている場合でも、共通の性能カウンタセットを使用して複数の異なるソフトウェア実行環境を追跡することができる。
あるいは、別のアプローチは、PMG_D又はPMG_Iフィールドを、PARTID_Dフィールド又はPARTID_Iフィールドから導出された対応するパーティションIDに付加されるべきサフィックスとして解釈することであり得る。このアプローチでは、トランザクションがメモリに発行されると、トランザクションに2つのIDが付加され、1つは選択されたPARTID_I又はPARTID_Dフィールドに基づき、もう1つはPMGフィールドに基づいているが、PMG_I又はPMG_Dフィールドは、それ自体のIDではなく、PARTIDの特性と見なされる。したがって、メモリシステム構成要素は、この場合、PARTID_I又はPARTID_Dから導出された第1のパーティションIDに基づいてリソース分割を実行することができるが、第1のパーティションIDとPMG_I又はPMG_Dから導出された第2のパーティションIDの組み合わせに基づいて性能監視分割を実行することができる。このアプローチでは、異なるメモリリソースパーティションIDが同じ性能監視IDを共有することはできなくなるが、利点は、命令/データPMGフィールドが全ての可能な性能監視パーティションを区別する必要がなく、同じ命令/データリソースパーティションIDを共有するパーティションのみが命令/データPMGフィールドによって区別されるため、短いPMGフィールドを使用してハードウェアコストを節約できることである。例えば、これは、より大きなフィールドではなく1又は2ビットのPMGフィールドを使用することを可能にすることができ、それは制御レジスタ68だけでなくメモリシステムを通してメモリトランザクションを運ぶワイヤにおいてもコストを節約する。上記の例は、PARTID_Dフィールド及びPARTID_Iフィールドにそれぞれ対応する別々のPMGサフィックスフィールドのPMG_D及びPMG_Iを提供して、別々の性能監視グループプロパティをそれぞれデータアクセス及び命令アクセスに対して定義できるようにすることができ、別のアプローチは、データアクセスと命令アクセスとの間で共有される単一のPMGフィールドを提供することであり得る。
どちらの方法でも、データ/命令パーティションIDごとに複数の性能監視パーティションを定義する機能が役立ち得る。一方、他の例では別々の性能監視IDフィールドを完全に省略し、代わりに同じパーティションIDを使用してリソースの管理と性能監視の両方を制御することができることを理解されよう。
図7Aは、CPU6、GPU、又はメモリトランザクションのソースとして機能する他のマスタなどの処理要素からのデータアクセスメモリトランザクションの発行を制御する方法、特にどのパーティションIDがメモリトランザクションで指定されるかを制御する方法を示す流れ図である。図7Aに示すアプローチは、少なくともロード/ストアユニット50(そのようなデータアクセスメモリトランザクションによってトリガされるデータ側ページテーブルウォークメモリトランザクションの場合、ステップ112でのMPAMレジスタの選択は、以下で更に説明するように異なる方法で処理することができる)によって発行されたデータアクセスメモリトランザクションに使用することができる。
ステップ110において、処理要素は、例えば実行ステージ48で実行されたロード/ストア命令に応答して、データアクセス(ロード/ストア)メモリアクセストランザクションを発行する。
ステップ112において、処理要素のMPAMレジスタ選択論理78は、その現在の動作状態64、及びMPAM制御レジスタ68で指定されたMPAM制御情報に応じてパーティションIDレジスタ100のうちの1つを選択する。図8は、少なくとも現在の例外レベル64及びハイパーバイザ制御レジスタMPAMHCR_EL2116で指定された以下の制御パラメータに依存して、どのパーティションIDレジスタ100を使用して現在のメモリトランザクションのパーティションIDを生成すべきかを選択するMPAMレジスタ選択論理78の例を概略的に示している:
●EL2で動作するタイプ2ハイパーバイザに対して1に設定されるパラメータE2H 113。E2Hが1に設定されると、特定のEL1制御レジスタにアクセスするための命令は、制御レジスタ状態の対応するEL2バージョンを返すので、EL1で動作するように設計された修正されていないオペレーティングシステムは、EL2で動作するタイプ2ハイパーバイザとして機能することができる。
●TGE=1の場合に、通常はEL1(TGE=0の場合)にルーティングされるEL0で発生する例外のタイプが、代わりにEL2にルーティングされるべきであることを示し、その結果、EL2で動作するタイプ2ハイパーバイザは、EL1でオペレーティングシステムを介在させることなくEL0でアプリケーションを管理することができるパラメータTGE114。
●MPAMHCR_EL2 116に格納されたパラメータGSTAPP_PLK115であって、EL0で動作するプロセスがMPAM0_EL1パーティションIDを使用すべきか、又はMPAM1_EL1パーティションIDを使用すべきかを定義する、パラメータGSTAPP_PLK115。
レジスタ100が選択されたレジスタであることを選択するための基準は、以下の通りである:
●以下のいずれかが真である場合、MPAM0_EL1が選択される:
○現在の例外レベル64はEL0であり、GSTAPP_PLK=0、
又は
○現在の例外レベル64がEL0であり、E2H=1及びTGE=1の両方である場合。
したがって、MPAM0_EL1は、EL0&&((E2H&&TGE)||!GSTAPP_PLK)の場合に選択される。
●以下のいずれかが真である場合、MPAM1_EL1が選択される:
○現在の例外レベル64はEL1である、
又は
○現在の例外レベル64はEL0及びGSTAPP_PLK=1であり、E2H及びTGE=0の少なくとも一方である。
したがって、MPAM1_EL1は、EL1&&(EL0&&GSTAPP_PLK&&!(E2H&&TGE))の場合に選択される。
●現在の例外レベル64がEL2である場合、MPAM2_EL2が選択される。
●現在の例外レベル64がEL3である場合、MPAM 3_EL3が選択される。
GSTAPP_PLK構成パラメータの提供はオプションであり、この機能をサポートしないシステムでは、現在の例外レベルがMPAM1_EL1ではなくEL0である場合にMPAM0_EL1が選択される。同様に、タイプ2ハイパーバイザのサポートはオプションであってもよく、そのため、他の実装はE2H/TGE制御を有していなくてもよい。
また、別個のセキュアパーティションIDレジスタMPAM1_EL1_Sを有する上述の実施形態では、選択は現在のセキュリティ状態にも依存し、セキュアドメイン内のEL0又はEL1での処理時にレジスタMPAM1_EL1_Sが選択され、それ以外の場合、選択は上記の通りである。
ステップ118において、現在のトランザクションは、データアクセストランザクションであるため、PMG_D及びPARTID_Dフィールドは、ステップ112で選択されたレジスタ100から読み取られる。
ステップ120において、処理要素は、現在の動作状態において読み取られたパーティションIDに対して仮想化が実施及び有効化されているかどうかを決定する。EL2及びEL3の場合、仮想化を実行する必要はない。EL0及びEL1の場合、仮想化が有効であるかどうかは、仮想化イネーブルフラグEL0_VPMEN及びEL1_VPMENを含むハイパーバイザ制御レジスタMPAMHCR_EL2116に指定された情報に依存し、それぞれ、仮想化がEL0及びEL1に対して有効にされるかどうかを指定する。仮想化がEL0に対して有効にされ、ステップ112でMPAM0_EL1レジスタが選択された場合、又は仮想化がEL1に対して有効にされ、ステップ112でMPAM1_EL1レジスタが選択された場合、ステップ122で、ステップ116又は118で読み取られたパーティションIDの少なくとも1つが、メモリシステムに発行されるメモリトランザクションに付加された物理パーティションIDにマッピングされる。そうでない場合、ステップ122は省略されている。
パーティションIDの仮想化マッピングの例を図9に示す。グローバルパーティションID空間は、EL2のハイパーバイザによって制御されてもよい。この例では、仮想化はPARTID(メモリリソースパーティションID)にのみ適用されるが、PMG(性能監視パーティションID)には適用されない。しかしながら、他の実施形態はまた、例えば、性能監視パーティションIDの仮想化を提供することができる。
ハイパーバイザは、EL1で実行するゲストオペレーティングシステムが(例えばゼロから始まる)狭い範囲のパーティションIDのみを使用するように制限することができ、マッピングレジスタ126は、そのゲストオペレーティングシステムによって使用される仮想パーティションIDをグローバルID空間内の物理パーティションIDにマッピングするためのいくつかのマッピングエントリを提供するマッピングテーブルを定義する。各マッピングレジスタは、(単一パーティションIDの幅と比較したレジスタの相対サイズに応じて)1つ又は複数の仮想IDのマッピングエントリを格納することができる。マッピングテーブルは、オペレーティングシステムによって使用される仮想パーティションIDに基づいて索引付けされ、対応する物理パーティションIDをグローバルID空間に戻す。これにより、各ゲストオペレーティングシステムは、それが仮想化されて類似のID値を使用している可能性がある他のゲストオペレーティングシステムと並行して実行されているという事実を認識せずに、独自のアプリケーションのIDを設定できる。各ゲストオペレーティングシステムは、ハイパーバイザによってマッピングテーブルに設定されたマッピングによって、異なるグローバル物理パーティションIDにマッピングされたそれらの競合する仮想IDを有することができる。
図9は、図3に示されるパーティション仮想化論理79の例を示し、現在の例外レベルがEL0又はEL1であるときに呼び出される。選択されたパーティションIDレジスタ100からのパーティション(上で論じたようなレジスタ選択論理78によって選択される)は、仮想パーティションIDであり、マッピングレジスタ126から対応するマッピングエントリを選択するために使用される。この実施例では、各マッピングレジスタ126は、4つのマッピングエントリを含むため、仮想パーティションIDの2ビットは、マッピングレジスタ126内の特定のマッピングエントリを選択し、残りのビットは、どのマッピングレジスタ126が選択されるかを選択する。しかしながら、他の例は、レジスタごとに異なる数のエントリを有し得る。物理パーティションIDは、選択されたマッピングエントリから読み取られ、マルチプレクサ132に提供され、マルチプレクサは、仮想化有効化パラメータEL0_VPMEN(選択されたレジスタ100がMPAM0_EL1であった場合)又はEL1_VPMEN(選択されたレジスタ100がMPAM1_EL1であった場合)に応じて、選択されたパーティションIDレジスタ100から読み取られた元の仮想パーティションIDと、対応する再マッピングされた物理パーティションIDとの間で選択する。仮想化が有効になっていない場合、元の仮想パーティションIDが物理PARTIDとして出力され、仮想化が有効になっている場合、マッピングレジスタ126からの物理パーティションIDが使用される。
各マッピングエントリは、マッピング有効レジスタMPAMVPMV_EL2124内の対応する有効ビットに関連付けられる。所与のマッピングエントリの有効ビットは、その仮想-物理パーティションIDマッピングが有効であるかどうかを指定する。処理要素が無効な仮想パーティションIDを指定するメモリトランザクションを発行すると、これは代わりに代替の有効なパーティションIDを選択するようにマッピング論理をトリガしてもよい。したがって、ハイパーバイザは、全ての可能な仮想PARTIDに対して仮想-物理パーティションIDマッピングを割り当てる必要はない。無効な仮想パーティションIDを受信すると、マッピング回路は、物理パーティションIDの「エラーの場合の」値を単に使用することができ、これは対応するメモリ要求と共にメモリシステム構成要素に渡され、有効なパーティションIDとして扱われる。所定の物理パーティションIDは、パーティションIDの特定の「デフォルト」値、例えば、特別なパーティションIDが割り当てられていないソフトウェア実行環境に使用されるものと同じデフォルトパーティションIDであり得る。例えば、所定の物理パーティションIDは、ゼロであり得る。代替として、制御レジスタ(PARTID_ON_ERROR)は、エラーの場合に所定の物理パーティションIDとして使用されるべき物理パーティションIDの特定の値を定義することができる。代替的なアプローチは、無効な仮想パーティションIDが受信されたときにEL2でハイパーバイザにトラップすることであるが、これはより大きな性能影響を有する可能性がある。
図6は、有効ビットがマッピングレジスタ126とは別のレジスタ124に格納される例を示しているが、他の実施形態では、各マッピングエントリは、それ自体有効ビットを含むことができ、このため、有効ビットは、対応する物理パーティションIDと共にマッピングレジスタ126に格納される。この場合、再マッピング有効レジスタ124を省略することができる。したがって、一般に、各マッピングエントリは、有効ビットに関連付けられ得るが、有効ビットが格納される場所は、実装の選択に応じて異なり得る。
簡潔にするために、図7Aは、条件付きステップとしてステップ122を有する順次プロセスを示しているが、実際には、図9に示すように、物理パーティションIDは、各メモリトランザクションに対して計算することができ、パーティションIDの再マッピングされたバージョンと再マッピングされていないバージョンの両方は、関連する有効化パラメータに基づいてそれらの間で選択するマルチプレクサ132に提供され得る。これは、物理パーティションIDを調べる前に仮想化が有効になっているかどうかが判定されるまで待つよりも早くなり得る。
図10は、ステップ122をより詳細に示す流れ図である。ステップ140で、再マッピングされている仮想パーティションIDが範囲外であるかどうかが判定される。例えば、ハイパーバイザ制御レジスタ116又は別のMPAM制御レジスタ68(例えば、ハードウェアにどのような機能が提供されているかをソフトウェアに識別させるためのディスカバリレジスタMPAMIDR_EL1 142)は、現在のコンテキストで指定できる最大ID値を指定することができる。例えば、ハイパーバイザは、例えばハードウェアにいくつのマッピングレジスタ126が設けられているかに基づいて、その下で実行されているオペレーティングシステムによって使用され得るパーティションIDのマッピング可能範囲を定義することができる。再マッピングされているパーティションID(すなわち、図7Aのステップ112で選択されたレジスタから読み取られたID)が範囲外である場合、ステップ144において、代わりに使用される有効な仮想PARTIDが選択され、方法は、後述するステップ149に進む。どの特定の仮想PARTIDが使用されるかは、任意であり得る(例えば、最も低い有効なPARTID)。
仮想パーティションIDが許可された範囲内にある場合、ステップ145において、例えばマッピング有効レジスタ124内の対応する有効ビットに基づいて、対応するマッピングエントリが有効であるかどうかが決定される。仮想パーティションIDが有効である場合、方法は、後述するステップ149に進む。仮想パーティションIDが有効でない場合、ステップ146において、仮想PARTID0が選択される(すなわち、0の数値に等しい仮想PARTID)。ステップ147において、仮想PARTID0が有効であるかどうかがチェックされ、有効である場合、方法は、ステップ149に続く。仮想PARTID0が無効である場合、ステップ148において、メモリトランザクションに付加される物理PARTIDとして、物理PARTID0(全てのビットが0に等しい物理PARTID)が使用される。
ステップ149(これは、ステップ144、145又は147のいずれかに続いてもよい)において、選択された仮想PARTIDは、仮想PARTIDに対応するマッピングエントリで指定された物理IDにマッピングされ、結果としての物理PARTIDは、メモリトランザクションにタグ付けするために使用される。
別の例では、受信した仮想PARTIDが無効である場合に、ステップ145からステップ148に直接進むことが可能である。
図11に示すように、PARTID_I及びPARTID_Dは、パーティションIDレジスタ100内で別々に指定されているが、マッピング回路130は、両方のタイプのIDに対して共通のマッピングテーブル126を使用することができる。したがって、命令及びデータアクセスのために別々のセットのマッピングレジスタ126、128を設ける必要はない。
要約すると、メモリシステム構成要素によって使用されるグローバルID空間内の物理ID上に仮想IDのより小さい空間をマッピングするためのマッピングハードウェア(マッピングレジスタ126及びマッピング回路79)を設けることによって、競合するパーティションIDを使用しながら複数のゲストオペレーティングシステムを共存させることができ、各メモリトランザクションがパーティションIDをマッピングするためにハイパーバイザにトラップする必要がないため、性能が向上する。
図7Aのステップ150において、PMG及びPARTID(選択されたパーティションIDレジスタから読み取られた元の形式で、又はステップ122でマッピングした後のいずれか)を指定するメモリトランザクションが発行されるだけでなく、セキュア状態表示は、トランザクションが発行されたセキュリティ状態であるかどうかを示す。セキュア状態表示は、セキュアドメインに割り当てられたパーティションIDが、安全性の低いドメインに割り当てられたパーティションIDとは完全に別のパーティションID空間を使用できるように含まれる(単一のID空間からセキュアプロセスにいくつかのパーティションIDを割り当てるのではなく、非セキュアプロセスが提供されたセキュアプロセスに関する情報を推測できる可能性がある)。セキュアワールドとそれほどセキュアでないワールドを完全に分離することで、セキュリティを向上させることができる。トランザクションと共に提供されるセキュリティ表示は、トランザクションがどのセキュリティ状態から発行されたかを示す。
このセキュリティ表示は、トランザクションのターゲットアドレスがセキュアか非セキュアかを示すアドレスベースのセキュリティ表示とは別に提供されてもよい。すなわち、メモリアドレス空間の領域は、セキュア又は非セキュアとして指定され得、セキュア領域は、セキュアドメインからのみアクセス可能であり、一方、非セキュア領域は、セキュア及び非セキュアドメインの両方でアクセス可能である。アドレスがセキュア領域にあるか非セキュア領域にあるかに応じてアクセスを制御するシステムMMUなどの更なる制御構造をメモリシステムが含む場合、そのようなアドレスベースのセキュリティ表示をトランザクションに含めることができる。ただし、セキュアドメインは、アドレス空間の非セキュア領域とセキュア領域の両方にアクセスできるため、このアドレスベースのセキュリティ表示では、トランザクションを発行したプロセスがセキュアか非セキュアかを識別するのに十分ではない。したがって、メモリトランザクションは、トランザクションが発行されたドメイン(MPAM_NS)とターゲットアドレスに関連付けられたセキュリティ状態(NS)の両方を別々に識別できる。
Figure 2022547545000004
メモリトランザクションを受信すると、メモリシステム構成要素は、MPAM_NSセキュリティ表示を使用して、セキュアドメインと非セキュアドメインのそれぞれについて異なるパラメータセット間で選択することができ、これにより、非セキュアコードが性能制御パラメータを設定したり、セキュアコードの性能監視データにアクセスしたりする場合に、セキュリティ上のリスクが生じる可能性があるドメイン間での制御パラメータの共有を回避できる。
図7Bは、CPU6、GPU、又は他のマスタなどの処理要素からの命令フェッチアクセスメモリトランザクションの発行を制御する方法、特にどのパーティションIDがメモリトランザクションで指定されるかを制御する方法を示す流れ図である。図7Bに示すアプローチは、少なくともフェッチステージ40によって発行された命令フェッチメモリトランザクションに使用することができる。そのような命令フェッチメモリトランザクションによってトリガされる命令側ページテーブルウォークメモリトランザクションの場合、ステップ112におけるMPAMレジスタの選択は、以下で更に説明するように異なる方法で処理することができる。
図7Bのステップ111において、処理回路は、命令フェッチメモリトランザクションを発行し、所与のアドレスに対する命令のフェッチを要求する。命令フェッチ要求は、実行のために命令が実際にフェッチされる必要があるときに、フェッチステージ40によって行われ得るか、又はいくつかの実装形態は、命令が実際に実行のために必要とされる時間よりも前に命令を命令キャッシュ10にプリフェッチするプリフェッチ回路を有してもよく、そのため、プリフェッチ回路はまた、命令フェッチメモリトランザクションを生成することもできる。
図7Bのステップ112は、データアクセスについて図7Aに示すものと同じであり、上述したように現在の動作状態(及び他の制御パラメータ)に基づいてMPAMパーティションIDレジスタ100のうちの1つを選択する。
図7Bのステップ116において、選択されたパーティションIDレジスタ100のPMG_I及びPARTID_Iフィールドが読み取られる。
図7Bのステップ120、122及び150は、PMG_D及びPARTID_D値の代わりにステップ116で読み取られたPMG_I/PARTID_I値に適用されることを除いて、図7Aの対応するステップと同じである。
図6に戻ると、ディスカバリレジスタMPAMIDR_EL1 142は、対応する処理要素(PE)のハードウェア機能を識別する様々な機能パラメータを識別する。これにより、ソフトウェアは、特定のハードウェア実装でどのMPAMリソースが提供されているかを問い合わせることができるため、同じコードを複数の異なるハードウェアプラットフォームで実行できる。例えば、ディスカバリレジスタ142は、特定のMPAM機能(例えば、仮想化、又は別々のセキュア/非セキュアID空間)が提供されるかどうか、又はどのサイズのリソースが提供されるか(例えば、パーティションIDのビット数、又はマッピングレジスタ126の数)を指定し得る。例えば、ディスカバリレジスタ142は以下を指定することができる:
●PARTID_MAX:PEのハードウェア実装でサポートされている最大パーティションID;
●HAS_HCR:仮想化機能が提供されるかどうか(したがって、ハイパーバイザ制御レジスタ116、再マッピング有効レジスタ124、マッピングレジスタ126、及びマッピング回路79が提供されるかどうか);
●VPMR_MAX:仮想化が実施されるとき、PEのハードウェア実装でサポートされている最大仮想パーティションID;
●PMG_MAX:PEのハードウェア実装でサポートされている最大PMG値。
ディスカバリレジスタ142は、EL0以外の任意の例外状態から読み取り可能であり得るが、読み取り専用であり、ディスカバリレジスタ142は、特定のハードウェア実装に固有のパラメータを定義するので、書き込むことができない。例えば、ディスカバリレジスタ142は、装置の製造中に有線で接続されてもよい。
仮想化がサポートされている場合、PARTID_MAXの実際の値は、ハイパーバイザがオペレーティングシステムに使用を許可したパーティションIDの範囲よりも大きい可能性があるので、EL1のオペレーティングシステムがディスカバリレジスタ142を直接読み取ることを防ぐことが望ましいかもしれない。したがって、ディスカバリレジスタ142にアクセスしようと試みるEL1で実行される命令(又は少なくともメモリトランザクションに指定されることが許可される最大パーティションIDを定義するPARTID_MAXフィールドにアクセスしようとする試み)は、例外をトリガする可能性があり、これは、最大値の代わりに別の値(例えば、VPMR_MAX)を提供して、オペレーティングシステムに見えるパーティションIDの数をエミュレートできるハイパーバイザにトラップする。構成パラメータTRAP_MPAMIDR_EL1は、EL1からディスカバリレジスタ142へのそのようなアクセスがEL2にトラップされるかどうかを制御することができる。この構成パラメータを設定することによって、EL2のハイパーバイザ又はEL3のセキュアモニタは、EL1のゲストOSがディスカバリレジスタ(IDR)142に直接アクセスできるかどうか、又はハイパーバイザがステップインしなければならないかどうかを制御できる。例えば、仮想化が無効になっているとき、IDRアクセスがEL2にトラップするかどうかを選択する柔軟性を提供することは、OSがEL2への不要なトラップを回避することによってIDRに直接アクセスすることが適切である場合、性能を改善するのに有用である。
EL1又はEL0による使用のために仮想から物理IDへのマッピングを設定するEL2の文脈で仮想化が上述されているが、一般に、この技術は、異なる特権レベルのソフトウェア実行環境の任意のペアに使用され得るため、より高い特権レベルの環境は、より低い特権のソフトウェア実行環境によって発行されたトランザクションについて、仮想パーティションIDの物理パーティションIDへのマッピングを制御することができる。また、別段の指定がない限り、パーティションIDについて上述した技法は、いくつかの実施形態では性能監視グループにも使用することができるが、これは必須ではない。したがって、パーティション識別子という用語は、特に指定がない限り、性能監視グループ識別子を含むと解釈できる。
所与のメモリトランザクションに付加されたパーティションID及び性能監視グループ、ならびにトランザクションが発行されたセキュリティ状態を指定するセキュリティ状態表示は、メモリシステム全体にわたってメモリトランザクションと共に流れる。したがって、メモリトランザクションをメモリシステムの他の構成要素に渡すメモリシステムのノード(例えば、相互接続)は、そのようなノードで受信された対応する要求と同じパーティションID、性能監視グループ及びセキュリティ状態表示を有する外部メモリトランザクションを提供する。メモリシステム内のキャッシュの場合、これらはキャッシュヒットがあると要求に対する応答を生成することがあり、キャッシュミスがあるとそれをメモリシステムの別の部分に渡すことがあるという挙動がある。また、要求に基づいて新しいエントリを割り当てることもある。新しいエントリを割り当てるとき、キャッシュは、キャッシュされたデータ自体と一緒に、パーティションID、性能監視グループ、及び割り当てを引き起こした要求のセキュリティ表示を格納することができる。データが更なるキャッシュ又はメモリに書き戻されるとき、追い出しをトリガした要求に関連付けられたIDではなく、キャッシュ内の追い出されたデータに関連付けられたパーティションID、性能監視グループ及びセキュリティ表示を指定してライトバックトランザクションが生成される。これにより、対応するデータをキャッシュに割り当てたソフトウェア実行環境に固有のパラメータに従って、ライトバックのためのリソース割り当て又は性能監視を制御/監視することが可能になる。
全てのメモリシステム構成要素(例えば、キャッシュ、相互接続、メモリコントローラ、メモリデバイス、又はメモリ管理ユニット)が、分割をサポートするわけではないことに留意されたい。分割をサポートしない構成要素は、全てのソフトウェア実行環境に対して共通の方法でリソース割り当てを制御したり性能を監視したりしてもよい。それにもかかわらず、分割をサポートする下流のメモリシステム構成要素が、適切なパラメータセットを選択するためにパーティションIDを使用することができるように、外部要求は、上で論じられたのと同じ方法でパーティションIDを依然として付加される。したがって、システム設計者が、実際に任意の所与のメモリシステム構成要素でパーティションIDを使用することを選択したかどうかにかかわらず、上述の処理要素アーキテクチャ及びパーティションIDルーティング方式は、メモリシステムの様々な場所でパーティション分割を実装する様々な実装範囲をサポートする柔軟性を提供する。しかしながら、パーティションID又は性能監視グループIDに応答するそのようなメモリシステム構成要素の場合、これらは、パーティションIDに基づいてリソース割り当て若しくは競合管理、又は性能監視を制御することができる。
性能モニタは、リソース分割制御とは異なる動作をする。性能モニタは、モニタにプログラムされているフィルタに基づいて性能メトリックを測定、カウント、又は計算する。フィルタパラメータには、パーティションIDと性能監視グループ(又はパーティションIDは含まない性能監視グループ)を含めることができる。例えば、メモリに転送されたバイト数をカウントする性能モニタは、パーティションIDが5で性能監視グループが2の読み取りのみをカウントするように、測定値をフィルタリングしてもよい。したがって、性能測定値は、同じパーティションIDと性能監視グループを共有する、異なるソフトウェア実行環境、又は異なるソフトウェア実行環境のグループごとに収集できる。
一方、リソース分割をサポートするシステム構成要素の場合、メモリシステム構成要素は、パーティションIDに基づいてメモリシステム構成要素パラメータのセットを選択する。メモリシステム構成要素パラメータは、メモリシステムリソースの割り当て(帯域幅、キャッシュ容量など)又はそれらのリソースの競合を制御するために使用されるリソース制御パラメータであってもよい(例えば、選択されたメモリシステム構成要素パラメータは、対応するパーティションIDに関連するトランザクションに設定されたプライオリティを定義することができる)。
図12は、パーティションIDに基づいてメモリシステム構成要素の動作を制御するための方法を示している。ステップ200において、メモリシステム構成要素は、上述したようにパーティションID、性能監視グループ及びセキュリティ状態表示を指定するメモリトランザクションを受信する。メモリシステム構成要素がメモリシステムリソース分割をサポートする場合(ステップ202)、ステップ204で、パーティションID及びセキュリティ状態に基づいてリソース制御パラメータのセットが選択される。性能監視グループは、このステップでは考慮されない。ステップ206において、リソースの割り当ては、選択されたリソース制御パラメータのセットを使用して制御されるか、又はそれらのリソースの競合は、選択されたリソースパラメータのセットを使用して管理される。メモリシステムリソース分割がサポートされていない場合、ステップ204及び206は省略される。
メモリシステム構成要素が性能監視グループによる性能監視分割をサポートする場合(ステップ208)、その後ステップ210で、構成要素に実装された各性能モニタは、その要求をそのフィルタパラメータに対してテストする(PMGフィールド及びパーティションIDフィールドに適用されるテストを含み得る)。フィルタパラメータを満たしている各モニタは、そのモニタが実行するように設計されている測定、カウント、又は計算に従って、その内部状態を更新する。性能監視分割をサポートしないメモリシステム構成要素については、ステップ210は省略される。上記で説明したように、いくつかの実施形態では、パーティションIDフィールドとPMGフィールドの両方をフィルタパラメータに含めることができる(そのため、PMGフィールドはパーティションIDフィールドを更に制限する)。あるいは、PMGは、パーティションIDフィールドとは別個の独立したIDとして解釈され得、その場合、フィルタパラメータは、PMGを考慮し得るがパーティションIDを考慮し得ない。
リソース監視分割をサポートする各メモリシステム構成要素は、パーティションIDに基づいて選択される異なるセットのメモリシステム構成要素パラメータを格納するパラメータレジスタのセットを有することができる。分割制御のための制御パラメータは、論理的にはパーティションIDで索引付けされた制御パラメータのアレイである。制御パラメータを設定するためのインタフェースは、メモリマッピングされたレジスタのアレイとして構成することができ、あるいはセレクタレジスタと制御パラメータごとにただ1つの構成レジスタと共に構成することができる。後者の場合、構成ソフトウェアは、まず構成するためのパーティションIDをセレクタレジスタに格納し、次に所望の制御パラメータを1つ又は複数の制御パラメータ構成レジスタに格納する。
図13は、メモリシステム構成要素の一例であるキャッシュ300の一例を示している。キャッシュ300は、所与の処理要素6のレベル1データキャッシュ8、レベル1命令キャッシュ10若しくはレベル2キャッシュ12、クラスタキャッシュ16、又はシステムキャッシュ20などの命令又はデータをキャッシュするためのキャッシュであり得る。キャッシュ300は、MMU70内のTLB72又はページウォークキャッシュ74などのアドレス変換用のキャッシュでもあり得る。図3は、MMU70が所与のプロセッサコア内に設けられている例を示しているが、例えばSoC相互接続18内で、システムMMUをメモリシステムの更に下方に設けることも可能である。
キャッシュ300は、キャッシュされる情報を格納するためのキャッシュストレージ(キャッシュRAM)302を有する。キャッシュRAM302は、一定数のストレージエントリ304を有する。図13に示すように、各エントリは以下を格納することができる:
●キャッシュされたデータ306(これは、任意のキャッシュされた情報であり得る-データ値だけでなく、キャッシュのタイプに応じた命令又はアドレス変換データも包含する);
●エントリ内の対応するデータが有効かどうかを指定する有効ビット308;
●キャッシュされたデータに関連するアドレスの一部を示すタグフィールド310;
●データをキャッシュに割り当てたメモリトランザクションのパーティションID314;
●割り当てメモリトランザクションの性能監視グループID316;
●割り当てメモリトランザクションのセキュリティ状態表示318(そのメモリトランザクションがどのセキュリティ状態から発行されたかを示す);
●システム設計がキャッシュラインごとに保持する必要がある可能性があるその他の情報、例えば、コヒーレンス状態やアドレス空間インジケータ(ASI)。
キャッシュからデータが追い出されると、IDフィールド314、316、318を使用して、ライトバックトランザクションのためのパーティションID、性能監視グループID、及びセキュリティ状態表示が導出される。図13には示されていないが、各キャッシュエントリはまた、キャッシュされたデータのコヒーレンシ状態を指定するコヒーレンシ情報(例えば、ライトバックが必要かどうかを判断するためにデータがクリーンかダーティか)、及び/又は追い出しが必要な場合の犠牲キャッシュラインを選択するために犠牲選択データ(例えば、どのエントリが直近に使用されたのかを追跡するためのデータ)であり得る。
キャッシュへのデータの割り当ては、直接マッピング、セットアソシアティブ、又はフルアソシアティブを含む、任意の既知のキャッシュ編成に従って制御することができる。図13の例は、4通りのセットアソシアティブ編成方式を示しているが、これは一例にすぎないことを理解されたい。キャッシュへのルックアップは、対応するメモリトランザクションに関連付けられているパーティションIDとは無関係に実行される。したがって、所与のパーティションIDを指定するメモリトランザクションが受信されると、トランザクションは、キャッシュエントリに格納されたパーティションID314、非セキュアIDインジケータ318、及び性能監視グループ316に関係なく、インデックス付きキャッシュエントリ内の任意のデータに対してヒットできる。したがって、性能リソースの分割及び/又は性能監視は、キャッシュされたデータへのアクセスを共有する様々なソフトウェアプロセスを妨げることはない。
一方、キャッシュにデータを割り当てるとき、キャッシュコントローラ312は、セキュリティ状態及び対応するメモリトランザクションのパーティションIDに基づいて選択されたリソース制御パラメータのセットに応じて割り当てを制御する。キャッシュは、上述のようにリソース制御パラメータレジスタ320のセットを有し、各レジスタ320は、対応するソフトウェア実行環境に対するリソース制御パラメータを格納する。セレクタ322は、パーティションIDと、キャッシュへのデータの割り当てを必要とする着信メモリトランザクションのセキュリティ状態とに基づいて、レジスタのうちの1つを選択する。選択されたレジスタに格納されたパラメータは、データがキャッシュに割り当てられるかどうか、そしてどのように割り当てられるかを制御するために使用される。
第1のキャッシュ分割制御モードでは、パーティションIDを使用して選択された最大容量閾値を使用して割り当てが制御され、対応するパーティションIDに関連するデータを割り当てられることが許可されるキャッシュ容量の最大エントリ数を識別する。セキュア状態及び非セキュア状態をサポートする実装形態では、閾値は、パーティションIDと非セキュアIDインジケータとの所与の組み合わせに関連付けられたデータを割り当てられることを許可された最大容量を定義することができる。例えば、最大容量閾値をより高い特権プロセスによって設定することができ、すなわち所与のオペレーティングシステムに対する閾値をハイパーバイザによって設定することができ、所与のアプリケーションに対する閾値をオペレーティングシステムによって設定することができる。
例えば、図2は、パーティションID0、1、及び2にそれぞれ50%、50%、及び40%の最大容量閾値がアサインされている例を示している。これは、保証された割り当てではなく、特定のパーティションIDのデータを格納できるキャッシュ量の上限にすぎないため、異なるソフトウェア実行環境に対して定義されている最大容量閾値の合計が100%を超える可能性があることに留意されたい。この場合、対応するソフトウェア実行環境が全て同時に最大割り当てを使用することはない。
図13に戻ると、キャッシュ300は、各パーティションIDに関連するデータに対していくつのキャッシュエントリ304が割り当てられたかを追跡するための割り当てカウンタ326のセットを有する。セキュリティ状態がサポートされている場合、カウンタは、セキュリティ状態に基づいて更に分割されてもよい。所与のパーティションIDに対するデータ値がキャッシュに割り当てられると、対応する割り当てカウンタ326がインクリメントされる。データが無効化、削除、又は置換されると、対応するパーティションIDの割り当てカウントがデクリメントする。所与のメモリトランザクションに応答してキャッシュミスが発生すると、キャッシュコントローラ312は、メモリトランザクションによって指定されたパーティションIDに対応する割り当てカウンタ326及びリソース制御パラメータレジスタ320を読み取り、割り当てカウントを最大容量閾値と比較し、比較結果に基づいて割り当てを制御する。現在の割り当てがまだ閾値を超えていない場合は、必要なデータをキャッシュに割り当てることができる。しかし、割り当てカウントが閾値以上である場合、キャッシュコントローラ312は、新しい要求にデータを割り当てないことを決定するか、又は新たなデータを割り当てる前にキャッシュから同じパーティションIDに関連する他のデータを追い出すか若しくは置き換えることができ、そのパーティションIDに関連した閾値レベルを超えるエントリがキャッシュに割り当てられるのを防ぐ。追い出し又は置き換えが必要な場合、キャッシュの各エントリに格納されているパーティションID314(及び提供されている場合は犠牲選択情報)を使用して、どのデータが追い出されるかを判断することができる。容量をカウントする上記の手段は、単なる一例であり、他の技術もキャッシュ容量を追跡するために使用され得ることが理解されよう。
リソース制御パラメータレジスタ320は、最大容量閾値によって示される最大エントリ数を様々な方法で表すことができる。例えば、対応するパーティションIDデータに割り当てることができるエントリの最大数を直接指定できる。あるいは、そのパーティションIDに割り当てることができるキャッシュの全容量のうちの一部分に関して閾値を指定することができる。例えば、パラメータは、パラメータの幅及びスケールファクタが対応するメモリ構成要素のIDレジスタ362に指定されている場合のスケーリングされた割合を表すことができる。例えば、構成要素が256でスケーリングされた8ビットの容量制御をサポートしているとすると、この場合、容量の30%を特定のパーティションに割り当てるため、パーティションの最大容量パラメータは、30256=76.8となり、割り当てが望ましい割合を超えないように、76に切り捨てられる。
複数のセキュリティ状態がサポートされる実施形態では、セキュリティ状態表示は、パーティションIDと組み合わせて、適切なリソース制御パラメータレジスタ320及び割り当てカウント326を選択するためにも使用される。
図14は、第1の分割制御モードにおいて最大容量閾値に応じてキャッシュ割り当てを制御する方法を示している。ステップ330で、所与のメモリトランザクションについてキャッシュミスが検出される。ステップ332において、リソース制御パラメータ320のセットが、対応するパーティションID及びセキュリティ状態に基づいて選択される。ステップ334で、対応するセキュリティ状態及びパーティションIDについてカウンタ326によって維持されている割り当てカウントが、選択されたリソース制御パラメータ320のセット内の最大容量閾値と比較され、次に、ステップ336で、割り当てカウントが最大容量閾値より大きいかどうかが判断される。もしそうでなければ、ステップ338でキャッシュミスに応答してその要求のデータがキャッシュに割り当てられる。一方、割り当てが割り当て閾値以上である場合、ステップ340においてキャッシュへのデータの割り当てが阻止されるか、あるいはステップ342において現在の要求と同じパーティションIDに関連するデータが置き換えられ得るか、又は、新たに割り当てられたデータのために追い出され、ステップ338でデータを通常通りに割り当てることができる(例えば、閾値が最近更新された場合、ステップ340又は342によって提供される制限にもかかわらず、割り当てカウントが閾値を超えることがある)。方法がステップ340又は342に進むかどうかは、キャッシュの所与の実装形態に対する実装上の選択である。
あるいは、図15に示すように、パーティションIDに基づいて選択されたキャッシュ容量部分ビットマップ350を使用してキャッシュ割り当てを制御する第2のキャッシュ制御モードを使用することができる。ビットマップ350は、キャッシュストレージ302の対応する部分が対応するパーティションIDに関連するデータを格納するために割り当てられることが許可されるかどうかを各々指定する複数のフィールド352を有する。例えば、図15の例の下部に示されているビットマップ350は、各々がキャッシュ容量の1/32に対応する32個のフィールド352を有する。対応するパーティションIDを指定するトランザクションがキャッシュのその部分にデータを割り当てることができないことを示すために各フィールドを0に設定し、その部分にそのパーティションID用のデータを割り当てることを許可することを示すために1に設定することができる。
図15の上部に示すように、異なるパーティションIDに対して異なるビットマップ350を設定することによって、キャッシュのいくつかの部分を所与のパーティションIDのために予約することができるが、他の部分はパーティションID間で共有されるか又は全く割り当てられない可能性がある。例えば、図15に示す4つのキャッシュ部分のサブセット(これは全体のキャッシュ容量ではない)では、キャッシュの部分0はパーティション1にのみ割り当てられ、部分1はパーティション1とパーティション2の両方に割り当てられ、このため、キャッシュのこの部分への割り当てを競合する可能性があり、部分2はパーティション2にのみ割り当てられ、部分3はこれらのパーティションのいずれにも割り当てられない。したがって、パーティション1のキャッシュにデータを割り当てるとき、キャッシュコントローラ312は、部分0又は1内の位置を選択することに制限されるが、部分2又は3に割り当てることはできない。ビットマップによって定義される「部分」は、任意の所与のアドレスをグループの少なくとも1つのエントリ、例えばセットアソシアティブキャッシュ内の全ウェイ(そのウェイに属する全てのセットを含む)、又はフルアソシアティブキャッシュ内の任意のより多くのエントリのサブセットに割り当てることができるという特性を有する1つ又は複数のキャッシュエントリの任意のグループとすることができる。
したがって、第2の割り当て制御モードでは、キャッシュミスが検出されたときに、対応するパーティションID及びセキュリティ状態に対する制御パラメータセットが再び選択されるが、今回はキャッシュビットマップが読み取られ、キャッシュのどの部分にデータを割り当てることができるかを制御するために使用される。
いくつかのキャッシュ実装形態は、上で説明された第1及び第2のキャッシュ割り当て制御モードのうちの1つのみをサポートし得る(例えば、直接マッピングされたキャッシュは、第1のモードを実装できるが第2のモードを実装できない)。他の実装形態は、両方のモードを使用するオプションをサポートし得る。例えば、これは、使用されている特定のキャッシュ編成が多くの部分を与えることをサポートしていない場合(例えば、比較的連想性の低いセットアソシアティブキャッシュ)、最大容量制限をオーバーレイすることで部分分割のみよりも多くの制御を与えるので有用であり得る。
上述のように、キャッシュ300は、リソース分割がどのように実行されるかを制御するためのメモリマッピングされた構成レジスタ360を有することができる。構成レジスタ360は、キャッシュ300のハードウェア機能を識別するためのIDレジスタ362、更新するリソース制御パラメータのセットを選択するためのセレクタレジスタ364、及び選択されたリソース制御パラメータセットに書き込まれるパラメータを指定するための1つ又は複数の構成レジスタ366を含む。
例えば、IDレジスタ362は、どの第1/第2のキャッシュ割り当て制御モードがサポートされているかを指定することができる(閾値又はビットマップに基づく分割)。例えば、割り当てカウンタ326を全く有していないキャッシュは、第1のモードがサポートされていないことを示してもよい。この場合、制御プロセッサは、第2のモードの使用に制限されてもよい。他のキャッシュは、両方のモードをサポートし、与えられたプロセスにどちらが使用されるかを選択する柔軟性を有していてもよい。この場合、どのモードを使用するかは、対応するパーティションIDについてリソース制御パラメータレジスタ320内で指定され、構成レジスタ360を使用してプログラムされてもよい。
所与のパーティションIDに対してリソース制御パラメータのセットを設定するとき、ソフトウェアは、それらのレジスタ364,366にマッピングされたメモリアドレスを指定するメモリトランザクションを発行することによって、そのパーティションID及び対応する構成レジスタ366に書き込まれるべきパラメータをセレクタレジスタ364に書き込む。それに応答して、キャッシュ300は、構成レジスタ366からパラメータを読み取り、それらを関連パーティションIDによって識別される対応するリソース制御パラメータレジスタ320に書き込む。セキュリティ状態がサポートされるとき、セレクタレジスタ364及び構成レジスタ366は、どのセットのレジスタがアクセスされるかを選択するメモリトランザクションに関連するセキュリティ表示と共に、セキュア状態及びセキュアでない状態にそれぞれ異なるバージョンが提供されるようにバンクされ得る。
リソース制御パラメータを設定するためのそのようなセレクタレジスタ364及び構成レジスタ366は、リソース制御パラメータをどのように設定することができるかの一例にすぎないことに留意されたい。このアプローチの利点は、メモリシステム構成要素のアドレス空間の使用量が節約されることである。しかしながら、代替案は、制御設定のアレイがN個の制御設定レジスタのアレイとして公開されるより広いインタフェースを使用することであり、ここでNは、サポートされるパーティションIDの最大数である。これは、制御構成が単一書き込みでパーティションに対して更新されることができ、したがって他のプロセッサがメモリシステム構成要素を構成している間に1つのプロセッサがセレクタレジスタ364及び構成レジスタ366にアクセスするのを防ぐための相互排除を必要としないという点でより簡単である。例えば、パーティションIDの最大数が216で、一般的なメモリシステム構成要素に2~4個の制御がある場合、このアプローチではリソース制御パラメータのアレイに256KBのアドレス空間を使用してもよい。
メモリマッピングされた構成レジスタ360へのアクセスは、例えば、どの動作状態が構成レジスタ360を更新するためのメモリトランザクションを発行できるかを制限するために、MMU70によって制御されてもよい。例えば、EL0で実行される命令は、構成レジスタ360にアクセスすることを許可されないかもしれないが、EL2のハイパーバイザは、許可されることがある。パーティションIDの仮想化がサポートされる場合、キャッシュ300内で使用されるパーティションIDは、物理パーティションIDであり、一方、対応するアプリケーションのパーティションIDに使用されるリソース制御パラメータを設定しようと試みるオペレーティングシステムは、仮想パーティションIDを指定し得る。したがって、オペレーティングシステムが誤ったリソース制御パラメータを更新するのを防ぐために、構成レジスタ360にマッピングされたアドレスへのアクセスがトラップされ得、EL2でハイパーバイザに処理を切り替える例外をトリガすることができる。次いで、ハイパーバイザ内の例外ハンドラは、キャッシュ300において関連するパラメータセット320を更新するために、正しい物理パーティションIDを有する対応するメモリトランザクションを発行することができる。これを達成するために、2ステージのMMU変換プロセスにおいて、メモリマッピングされたレジスタ360に関連するアドレスは、メモリシステム構成要素によって使用される他のアドレス空間とは異なるステージ2アドレスページに配置されてもよい。
リソース制御分割と同様に、キャッシュ300内の性能監視は、性能監視グループ(及びPMGがパーティションIDのサブプロパティである実施形態ではパーティションID)及びセキュリティ状態に基づいて分割されてもよい。各々がその性能モニタ380に対応するフィルタパラメータ382のセットにプログラムされたフィルタに基づいて性能メトリクスを測定、カウント、又は計算するように構成可能な、いくつかの性能モニタ380を設けることができる。フィルタパラメータ382は、PARTID及びPMGを指定するためにフィールドを含むことができ、メモリトランザクションを受信すると、フィルタパラメータ382がPARTID/PMGフィールドに特定の値を設定している場合、性能モニタは、そのトランザクションに関連するPARTID/PMG値がフィルタパラメータ382に設定された値と一致するかどうかに応じて、そのトランザクションに基づいてそのメトリックを更新するかどうかを決定することができる。割り当て閾値を超えているかどうかを追跡するために割り当てカウンタ326が提供される第1のキャッシュ割り当てモードをサポートする実装形態では、同じ割り当てカウンタ326を性能監視に使用することもできることに留意されたい。
キャッシュ300がTLB又はページウォークキャッシュなどのアドレス変換キャッシュである場合、このようにキャッシュ割り当てリソースを分割することは、1つのソフトウェア実行環境が、割り当てられたパーセンテージ/アドレス変換キャッシュ容量の一部を超えて割り当てられないようにするのに役立ち得、これにより、他のソフトウェア実行環境用の空間を確保し、「ノイジーネイバー(noisy neighbour)」効果を軽減する。
図13は、キャッシュ300の一例を示しているが、他のメモリシステム構成要素は、所与のパーティションID/性能監視グループ/セキュリティ状態に関連するメモリシステム構成要素パラメータを構成するためのメモリマッピングされた構成レジスタ360、及び対応するパーティションIDに対する構成データのセットを指定するためのリソース制御パラメータレジスタ320の類似のセットを有し得る。
特に、他のメモリシステム構成要素(例えば、メモリコントローラ24又は相互接続14、18など)については、以下の形態のリソース分割のいずれかを実装することができる。
メモリチャネル帯域幅分割
メインメモリチャネルの帯域幅は、分割されてもよい。2つの帯域幅制御方式が提供されてもよい。メモリチャネルは、以下のうちの一方又は両方をオプションで実装できる。
●競合がある場合でも、パーティションが要求する最小帯域幅
●競合がある場合にパーティションに使用可能な最大帯域幅制限
これらをサポートするチャネルでは、これらの制御方式の任意の組み合わせを同時に使用できる。各制御方式については、以下のセクションで説明する。
最小帯域幅制御方式
最小帯域幅制御方式は、現在の帯域幅が最小値を下回るとパーティション優先度からの要求を出し、最小帯域幅を超えるとその要求が他の通常の要求と競合できるようする。パーティションの最小帯域幅を下回る要求は、チャネルでスケジュールされる可能性が最も高い。最小帯域幅制御方式は、アカウンティング期間中にメモリ帯域幅を追跡する。
●アカウンティング期間中に追跡されたパーティションの帯域幅使用量が現在パーティションの最小値を下回っている場合、その要求は、チャネル帯域幅を使用するように優先的に選択される。
●アカウンティング期間中に追跡されたパーティションの帯域幅使用量が現在パーティションの最小値を超えている場合、その要求は、他の通常の優先度要求と競合してチャネルの帯域幅を使用する。
アカウンティングウィンドウの間にパーティションによって使用されない帯域幅は累積しない。メモリシステム構成要素内のレジスタは、所与のパーティションIDに対する最小帯域幅制限を、スケーリングされた1秒あたりのメガバイトとして指定することができる。1秒あたりのメガバイト数のスケール値は、1秒あたりの目標メガバイト数に、ハードウェアで定義されている可能性があるスケールファクタを掛けたものとして計算される。
最大帯域幅制限制御方式
最大帯域幅制限制御方式は、アカウンティング期間中にその最大帯域幅制限までパーティションの通常の優先度を与える。アカウンティング期間中に追跡されたパーティションの帯域幅使用量が現在パーティションの最大値を下回っている場合、その要求は、通常の優先度でメモリチャネルでのスケジューリングを求めて競合する。アカウンティング期間中に追跡されたパーティションの帯域幅使用量が現在パーティションの最大帯域幅制限を超えている場合、その要求は、他の優先度の低い要求と競合してチャネルで帯域幅を使用する。
最大帯域幅制限制御方式は、帯域幅使用量が最大帯域幅制限を下回るときにはパーティションの通常の優先度からの要求、帯域幅使用量が最大帯域幅制限を超えるときには通常ではない優先度からの要求を与える。したがって、チャネル帯域幅の競合がない場合、パーティションは、最大帯域幅よりも多くを使用することがある。パーティションの帯域幅使用量がその上限を下回っているときの帯域幅の要求は、通常のプライオリティでスケジュールされるため、競合する要求によっては、パーティションの最大制限を下回る要求帯域幅の全てがチャネルスケジューラによって許可されるとは限らない。アカウンティングウィンドウの間にパーティションによって使用されない帯域幅は累積しない。
この場合もやはり、最大帯域幅制限のための制御パラメータは、スケーリングされた1秒あたりのメガバイトとして指定され得る。1秒あたりのメガバイト数のスケール値は、1秒あたりの目標メガバイト数に、ハードウェアで定義されている可能性があるスケールファクタを掛けたものとして計算される。
最小帯域幅制御方式と最大帯域幅制限制御方式の両方が実装されている場合、次の表は要求の優先度を示している:
Figure 2022547545000005
上述した全ての方式について、帯域幅分割方式の制御パラメータは全て、所与の単位、例えば1秒あたりのメガバイト数で表すことができる。この値は、マイクロ秒あたりに転送されたバイト数にも相当する。実装は、結果として得られる値がパーティションIDのためのメモリシステム構成要素の帯域幅制御レジスタのうちの1つにプログラムされる前に、各帯域幅分割制御パラメータが一定のスケーリングファクタによって乗算されることを必要とし得る。実装が制御パラメータのスケーリングを必要とするかどうか、及び必要ならばスケーリングファクタは、メモリシステム構成要素内のディスカバリレジスタ内で指定され得る(上述のキャッシュのディスカバリレジスタ362と同様)。
上述した全てのメモリ帯域幅分割方式について、メモリチャネル帯域幅調整は、アカウンティング期間にわたって起こり得る。アカウンティング期間は、固定ウィンドウでも移動ウィンドウでもよい。ウィンドウの幅は、メモリシステム構成要素内のディスカバリレジスタから読み取ることができる発見可能な定数であり得る。例えば、アカウンティング期間は、少なくとも1マイクロ秒であり得、最大20マイクロ秒以上であり得る。アカウンティング期間が長いほど、特に移動ウィンドウの実装では、より多くのハードウェアが必要になるが、アカウンティング期間が短いほど、特に固定ウィンドウの実装では、境界効果が大きくなる可能性がある。
固定ウィンドウアカウンティングでは、各パーティションがそのパーティションの最小値と最大値に従って帯域幅を取得するように、帯域幅が要求に割り当てられる。要求又はローカルのプライオリティを使用して、帯域幅に関する競合する要求を解決できる。アカウンティングウィンドウの期間に達すると、以前にサービスされたことがない要求のキューを除いて、新しいウィンドウは、履歴なしで始まる。新しいウィンドウは、パーティションごとにゼロから帯域幅の累積を開始する。
移動ウィンドウアカウンティングでは、移動ウィンドウは、過去のウィンドウ幅で発行された全てのコマンドからパーティションごとに帯域幅の履歴を保持する。パーティションごとの帯域幅のアカウンティングのリセットはなく、むしろ、コマンドが処理されたときに帯域幅が追加され、そのコマンドがウィンドウの履歴から移動したときにアカウンティングから削除される。この継続的なアカウンティングは、境界効果から比較的自由であるが、固定ウィンドウによって必要とされるパーティションIDごとの帯域幅カウンタに加えてウィンドウ内のコマンドの履歴を追跡するためにより多くのハードウェアを必要とする。
全てのパーティションの最小帯域幅割り当ては、利用可能なものよりも多くの帯域幅になる可能性がある。未使用の割り当てが他のパーティションで使用できるようになっているため、一部のパーティションで帯域幅割り当てが使用されていない場合、これは問題にならない。ただし、最小帯域幅が過剰に割り当てられていると、パーティション用にプログラムされている最小帯域幅が常に満たされるとは限らない。プログラムされた最小帯域幅割り当てがシステムによって確実に配信され得ることを保証するために、ソフトウェアは、最小帯域幅が過剰に割り当てられないことを保証することができる。
利用可能な帯域幅は、例えばDDRクロックなど、多くのシステムで1つ又は複数のクロック周波数に依存する可能性があるため、利用可能な帯域幅に影響を与えるクロックを変更するときにソフトウェアが帯域幅を再割り当てすることを望むことがある。割り当てを変更せずにクロックレートを下げると、帯域幅が過剰に割り当てられる可能性がある。注:DRAMチャネルで使用可能な帯域幅は、一定ではないが、クロックレート、読み取りと書き込みの組み合わせ、及びバンクヒットレートによって異なる。
当業者は、説明されたタイプの帯域幅制御がメモリチャネルコントローラにおいてのみ使用されることに限定されず、任意のメモリシステム構成要素において帯域幅を制御するために展開され得ることを理解されよう。
プライオリティ分割
このドキュメントに記載されている他のメモリシステムリソースとは異なり、プライオリティは、メモリシステムリソースの割り当てに直接影響するのではなく、リソースへのアクセスに関して発生する競合に影響する。適切に構成されたシステムが、プライオリティを付けるために性能に大きな影響を与えることはめったにないが、プライオリティは、即時又は持続を問わず、オーバーサブスクライブの状況で重要な役割を果たす。したがって、「プライオリティ分割」は、パーティション間のメモリシステムの影響を分離するのに役立つツールとして使用できる。
パーティションは、メモリシステム内の各構成要素(プライオリティ分割をサポートする)でプライオリティをアサインされてもよい。この分割制御により、メモリシステムの異なる部分を異なるプライオリティで要求を処理するように設定することが可能になる。例えば、プロセッサからシステムキャッシュへの要求は、システムキャッシュからメインメモリへの要求よりも高い転送プライオリティを使用するように設定されてもよい。
パーティションIDごとに2種類のプライオリティが識別され得る。
●内部プライオリティは、このメモリシステム構成要素の内部動作で使用されるプライオリティを制御する。それらを、内部動作を優先するためにメモリシステム構成要素内で使用することができる。例えば、メモリコントローラは、帯域幅の割り当てが明確な勝者を選ばない場合、内部のプライオリティを使用して待機中の要求を選択できる。
●下流プライオリティは、他のメモリシステム構成要素(例えば、相互接続又はメモリコントローラ)に下流で伝達されるプライオリティを制御する。「下流」とは、要求に対する通信方向を指す。「上流」応答は通常、それを生成した要求と同じ転送プライオリティを使用する。メモリシステム構成要素は、プライオリティ分割を有していない下流構成要素にプライオリティを示すために、下流プライオリティを使用する。これは、下流にある相互接続構成要素に転送プライオリティを設定するために使用できる。
一方、構成要素がプライオリティの分割を実装していない場合、又は下流のプライオリティを実装していない場合は、「スループライオリティ」を使用することが可能であり、下流のプライオリティは、着信(上流)プライオリティ又は要求と同じである。同様に、(下流から上流へ)メモリシステム構成要素を通過する応答のプライオリティは、(下流から)受信された応答と同じプライオリティである。
ページテーブルウォークメモリトランザクションのためのパーティション識別子の制御
以下の例は、ページテーブルウォークメモリトランザクションが、ページテーブルウォークをトリガしたデータ又は命令アクセスメモリトランザクションに異なるパーティションIDをアサインされることを可能にするための技術を説明する。図3に示すように、処理パイプラインが命令フェッチ又はロード/ストアオペレーションを要求すると、命令フェッチ又はデータアクセスのために指定された仮想アドレスが、アドレス変換を処理するMMU70に渡される。アドレス変換は、仮想アドレス(VA)から物理アドレス(PA)に直接変換される1ステージのアドレス変換とすることもできるか、又は仮想アドレスが中間物理アドレス(IPA)に変換され、次いで中間アドレスが物理アドレスに変換される2ステージのアドレス変換とすることもできる。MMU70が、VAから変換されたアドレス(IPA又はPA)を取得するために使用することができるページテーブル情報をそのTLB72、73、74又はページウォークキャッシュ75内に既にキャッシュしている場合、上述のように選択された物理アドレス及びパーティションIDを指定するデータ又は命令アクセスを発行するだけでよい。しかしながら、仮想アドレスを変換するために必要なページテーブルデータがMMU70内にまだキャッシュされていない場合、ページテーブルデータが返されることを要求するために、少なくとも1つのページテーブルウォーク(PTW)メモリトランザクションがメモリシステムに発行され得る。場合によっては、階層ページテーブル構造をトラバースするために、関連するページテーブルデータを見つけるために実行されるページテーブルウォーク動作の一部としていくつかのメモリトランザクションが必要になることがある。
1つのアプローチは、PTWメモリトランザクションに、対応するデータ/命令(D/I)アクセスメモリトランザクションと同じパーティション識別子が単にアサインされることであり得る。しかしながら、これは、非効率的なリソース使用をもたらし、同じページテーブルデータへのアクセスを共有する異なるソフトウェア実行環境間の潜在的な不公平性をもたらす可能性がある。
例えば、1つの使用モデルでは、オペレーティングシステムのプロバイダは、そのオペレーティングシステムの下で実行されているいくつかのアプリケーション間で共有されるページテーブルデータを定義することができる。パーティションベースのリソース制約は、メモリシステム内のほぼ同等の量のリソースを各アプリケーションに割り当てる意図で設定することができる。しかしながら、アプリケーションのうちの一方が最初に実行され、MMU内のアドレス変換キャッシュ72、74において多数のミスに遭遇した場合、その最初に実行するアプリケーションは、比較的多数のPTWメモリトランザクションを発行しなければならない場合がある。PTWメモリトランザクションがD/Iアクセスと同じパーティションIDでタグ付けされている場合、これは、そのアプリケーションに割り当てられたメモリリソースの一部を消費する。同じオペレーティングシステムの下で実行されている別のアプリケーションへのコンテキストスイッチが実行されると、第2のアプリケーションは、第1の実行アプリケーションに割り当てられたリソースを使用して実行されたMMU70又はデータキャッシュ8内のページテーブルデータの任意のキャッシュから利益を得ることがあり、その結果、後の実行アプリケーションは、第1のアプリケーションと同じだけそのリソースパーティションを消費する必要がないことがある。これにより、第2のアプリケーションは、第1のアプリケーションよりも高いレベルの性能を実質的に見ることができ、これは場合によっては望ましくないことがある。
したがって、以下の実施例は、PTWメモリトランザクションが、異なるパーティションIDを対応するD/Iメモリトランザクションにアサインすることができる技術を提供する。例えば、これにより、オペレーティングシステムに関連付けられたパーティションIDを、オペレーティングシステムの管理下でより低い特権レベルで実行されるアプリケーションによって発行されたPTWメモリトランザクションにアサインすることを可能にすることができる。同様に、複数のオペレーティングシステムが、オペレーティングシステムの共有ページテーブルデータを使用して共有ハイパーバイザによって管理される場合、それらのオペレーティングシステム又はアプリケーションによってトリガされたD/Iアクセスに割り当てられたパーティションIDとは別に、オペレーティングシステム又はそれらの基礎となるアプリケーションによって発行されたPTWメモリトランザクションに対して、ハイパーバイザに関連付けられたパーティションIDを指定し得る。
したがって、D/Iアクセスと比較して、異なるパーティションIDをPTWメモリトランザクションにアサインすることを可能にすることによって、リソース分割の性能及び公平性を改善することができる。したがって、図3に示すように、MPAM生成論理77は、対応するD/Iアクセスに使用されるMPAM関連情報とは異なり得るD/Iページテーブルウォーク固有のMPAM関連情報を出力し得る。ページテーブルウォークユニット76によって発行されたPTWメモリトランザクションの場合、マルチプレクサ390は、PTWメモリトランザクションがデータアクセス又は命令フェッチによってトリガされたかどうかに応じて、データPTW MPAM情報と命令PTW MPAM情報との間で選択してもよい。
しかしながら、全ての使用事例が、D/Iアクセスに対して異なるパーティションIDを指定するPTWメモリトランザクションから利益を得てもよいわけではないことが認識されている。また、PTWメモリトランザクションが対応するD/Iアクセスと同じパーティションIDを指定することが望ましいことがある有効な使用事例もある。例えば、異なるプログラミングモデルでは、オペレーティングシステムは、そこで実行されるそれぞれのアプリケーションに異なるページテーブル構造をアサインしてもよく、その場合、アプリケーション間でページテーブルデータの共有がないため、所与のアプリケーションからのPTWメモリトランザクションによって消費される任意のメモリリソースが、オペレーティングシステムのリソース割り当てではなく、その特定のアプリケーションにアサインされたリソース割り当てから取得されることがより理にかない得る。
したがって、いくつかの実施形態では、処理回路が、ソフトウェア実行環境のうちの少なくとも1つからの命令に応答してプログラム可能なプログラム可能情報に基づいて、PTWメモリトランザクション及び対応するD/Iアクセスメモリトランザクションに異なるパーティション識別子をアサインするべきか、又は同じパーティション識別子をアサインするべきかを選択することが有用であり得る。プログラム可能情報の設定は、少なくとも特権が与えられた特権レベル以外の特権レベルで実行される少なくとも1つのソフトウェア実行環境からの命令によって制御され得る。プログラム可能情報の様々な例を以下に説明する。場合によっては、プログラム可能情報は、単に、D/Iアクセスに使用されるパーティションIDフィールドと同じパーティションIDに設定され得るか、又は異なるパーティションIDに設定され得るPTWメモリトランザクションのための第2のパーティションIDフィールドとすることができる。しかしながら、後方互換性の理由及びプログラミングの容易さのために、D/Iアクセス及びPTWそれぞれのためにパーティションID自体を実際に提供するフィールドとは別に、パーティションIDをページテーブルウォークに異なるようにアサインすべきかどうかを制御することができる何らかの他の制御状態を有することが好ましいことがある。
PTWの固有のMPAM情報レジスタ
図16は、PTWメモリトランザクションに対して異なるパーティションIDを指定することを可能にするためのアーキテクチャ技術の第1の例を示す。この例では、パーティションIDレジスタ100の数は、いくつかの追加レジスタを含むように上記の例と比較して拡張される。パーティションIDレジスタは、図6のブラケット100内に示される4つのレジスタを依然として含み、これは、D/Iアクセスメモリトランザクションのためのパーティション識別子を提供するために使用され、関連するレジスタは、D/Iアクセストランザクションが発行されたときに上述したように選択される。
しかしながら、これらのレジスタに加えて、レジスタ100はまた、PTWメモリトランザクションに使用されるべきパーティション識別子を提供するために使用される4つのページテーブルウォークパーティション識別子レジスタ400を含む。いくつかのPTWパーティションIDレジスタ400が提供され、PTWメモリトランザクションが発行されたときの現在の例外レベルと、アドレス変換のどのステージ(ステージ1又はステージ2)が要求されているかに基づいて、使用する特定のレジスタが選択される。これは、以下でより詳細に論じられる。
図16の下部に示すように、PTWパーティションIDレジスタ400の各々は、上述のパーティションIDレジスタ100と同様に、データアクセス及び命令アクセスのための別々のパーティションID、ならびにデータアクセス及び命令アクセスのための別々の性能監視グループIDを指定する。更に、ページテーブルウォークパーティションIDレジスタ400は、PTWメモリトランザクションがPTWパーティションIDレジスタ400に記録されたパーティションIDを使用するかどうか、又はPTWメモリトランザクションが、現在の実行状態におけるデータ/命令アクセストランザクションのために選択される他のパーティションIDレジスタ100のうちの1つで指定されたパーティションIDを使用するべきかどうかを制御する有効化フィールド402を指定する。
したがって、いくつかのシステムレジスタ400は、テーブルウォークステージに使用するMPAM状態を保持するために設けられる。ソフトウェアは、各レジスタを任意のMPAMn_ELxレジスタ100内のものとは異なるPARTIDでロードするか、又はMPAM3_EL3.PARTID_{I,D}、MPAM2_EL2.PARTID_{I,D}、MPAM1_EL1.PARTID_{I,D}、又はMPAM0_EL1.PARTID_{I,D}のうちの1つ又は両方でロードすることを選択することができる。
一例では、図4に示すようにアーキテクチャでサポートされるソフトウェア実行環境の階層を与えられ、MMUは、アドレス変換の次のステージをサポートしてもよい:
●セキュアEL3で発行されたトランザクションの仮想アドレス(VA)を物理アドレス(PA)に変換するために使用される、セキュアEL3ステージ1。
●セキュアEL1又はセキュアEL0で発行されたトランザクションのVAをPAに変換するために使用される、セキュアEL1&0ステージ1。
●非セキュアEL2で発行されたトランザクションのVAをPAに変換するために使用される、非セキュアEL2ステージ1。
●EL0に関連する仮想メモリ構成がEL1ではなくEL2で管理されるモードで動作するときに、非セキュアEL2又は非セキュアEL0で発行されたVAをPAに変換するために一部のハイパーバイザによって使用される、非セキュアEL2&0ステージ1。
●非セキュアEL1又は非セキュアEL0で発行されたトランザクションのVAを中間物理アドレス(IPA)に変換するために使用される、非セキュアEL1&0ステージ1。
●IPAを非セキュアEL1&0ステージ1からPAに変換するために使用される、非セキュアEL1&0ステージ2。
2つのセキュリティ状態を一緒に折り畳むと、カウントは6から5に減少する。また、EL2ステージ1とEL2&0ステージ1は、同時に使用することができないため、組み合わせることができ、カウントを4に減らすことができる:
●EL3ステージ1
●EL2ステージ1又はEL2&0ステージ1
●EL1&0ステージ2
●EL1&0ステージ1
したがって、MPAMレジスタは、以下のように4つの追加のPTWパーティションIDレジスタ400を含み得る:
●MPAMPTWS1_EL3:EL3ステージ1に使用
●MPAMPTWS1_EL2:EL2ステージ1及びEL2&0ステージ1に使用
●MPAMPTWS2_EL2:EL1&0ステージ2に使用
●MPAMPTWS1_EL1:EL1&0ステージ1に使用
ここで、MPAMPTWSa_ELbという表記は、アドレス変換のステージaにレジスタが使用され、レジスタの内容を書き換えることができる最も低い特権状態がELbであることを示す。
これらのレジスタの4つは全て、図16に示すのと同じフィールドを有する。
Figure 2022547545000006
要約すると、図16に示すアプローチを用いて、異なる動作状態に対してそれぞれのパーティション識別子を指定するパーティション識別子レジスタは、追加のページテーブルウォークパーティション識別子レジスタで補完することができる。メモリトランザクションが発行されると、処理回路は、選択されたパーティション識別子レジスタに格納されたパーティション識別子を選択し、選択されたパーティション識別子に応じて、パーティション識別子をメモリトランザクションにアサインする。パーティション識別子の仮想化は、少なくともEL0又はEL1から開始されたアクセスに対して、上述したように依然としてサポートされ得るので、メモリトランザクションは、選択されたパーティション識別子レジスタで指定されたものとは異なり得るパーティション識別子値をアサインされ得ることに留意されたい。選択されたパーティション識別子は、メモリトランザクションが発行される現在の特権レベルに依存し得る。
したがって、少なくとも1つのページテーブルウォークパーティション識別子レジスタは、ページテーブルウォークメモリトランザクションに使用するために選択されたパーティション識別子を提供する、選択されたパーティション識別子レジスタとして選択されてもよい。処理回路は、アドレス変換のいくつかのステージをサポートしてもよく、アドレス変換の各ステージは、それぞれのページテーブル構造に基づいており、どのパーティション識別子レジスタがページテーブルウォークメモリトランザクションのための選択されたパーティション識別子レジスタであるかは、ページテーブルウォークメモリトランザクションに関連付けられたアドレス変換のステージに依存し得る。アドレス変換の異なるステージのそれぞれのページテーブル構造を管理する異なる実行環境は、リソース分割の制御のための異なる要件を有することがあり、アドレス変換の各ステージに異なるパーティション識別子を提供することが有用であり得るのはこのためである。あるいは、アドレス変換のいくつかのステージは、同じパーティション識別子レジスタを共有することができ、その場合、実行コンテキストを切り替えるときにレジスタを再プログラムする必要があり得る。
いくつかの実装形態では、上記の有効化フィールド402は必要ではないことがあり、1つのアプローチは、PTWメモリトランザクションが、D/Iアクセスに使用される通常のパーティションIDレジスタ100ではなく、ページテーブルウォークレジスタ400のうちの1つからのパーティションIDを常に使用することであり得る。しかしながら、これは、特定のユースケースがD/Iトランザクションと同じパーティションIDをPTWメモリトランザクションにアサインすることを望む場合、両方のレジスタが関連するパーティションIDで書き込まれる必要があるように、プログラミング負荷を増加させる可能性がある。また、追加のページテーブルウォークパーティションIDレジスタ400を有しないシステム用に書き込まれたコードとの後方互換性のために、新しいハードウェア機能をサポートするソフトウェアがそれらの機能を有効にするまで、新しいハードウェア実装は、前の実装のように動作するべきである。したがって、有効化表示402を提供することは有用であり得る。ソフトウェアによって明示的に有効にされていない場合、システムは、無効状態の有効化表示402をリセットすることができ、その結果、ページテーブルウォークトランザクションは、他の非PTWパーティションIDレジスタ100のうちの1つから選択されたパーティションIDを使用する。
したがって、所与のPTWメモリトランザクションの場合、処理回路は、対応するPTWパーティション識別子レジスタの有効化フィールドが有効状態又は無効状態を指定するかどうかを決定してもよい。どのレジスタが対応するPTWパーティション識別子レジスタであるかは、上述したようにPTWメモリトランザクションが発行されるアドレス変換の現在の動作状態(セキュリティ状態/特権レベル)及びステージに依存し得る。有効化フィールドが有効状態を示すとき、対応するPTWパーティション識別子レジスタ自体がPTWメモリトランザクションのための選択されたパーティション識別子レジスタとして使用されてもよく、そのレジスタからパーティションIDを選択することができる。一方、対応するPTWパーティション識別子レジスタの有効化フィールドが無効状態を示す場合、選択されたパーティションIDレジスタは、少なくとも1つのPTWパーティションIDレジスタ400以外のパーティションIDレジスタであってもよい。特に、対応するパーティションIDレジスタの有効化フィールドが無効状態にあるとき、選択されたパーティションIDレジスタは、データ/命令アクセスメモリトランザクションが現在の実行状態から発行された場合に選択されたであろう非PTWパーティションIDレジスタ100の同じものであり得る。
PTWパーティションIDレジスタが、別々のデータ及び命令パーティションIDを指定することは有用であり得る。これにより、例えば、異なるアプリケーション又はオペレーティングシステムが命令ページテーブルウォークのために同じパーティションIDを共有するが、データページテーブルウォークのために異なるパーティションIDを使用することが可能になる。したがって、データアクセスメモリトランザクションに対応するPTWメモリトランザクションの場合、選択されたパーティションIDは、選択されたパーティションIDレジスタMPAMPTWSn_ELxのPARTID_Dフィールドによって指定されるデータパーティション識別子に基づいてもよく、命令アクセスメモリトランザクションに対応するPTWメモリトランザクションの場合、選択されたパーティション識別子は、選択されたパーティションIDレジスタMPAMPTWSn_ELxのPARTID_Iフィールドからの命令パーティション識別子であってもよい。
あるいは、他の例は、PTWパーティションIDレジスタ内に別個の命令及びデータフィールドを提供せず、データアクセスに関連するPTWメモリトランザクションと、命令アクセスに関連するPTWメモリトランザクションの両方に使用される同じパーティションIDを有するだけであることを選択することができる。
また、上述した一般的な実施形態のように、図16は、リソース制御に使用されるPARTIDと比較して別個の性能監視グループ(PMG)を示しているが、他のアプローチは、リソース制御と性能監視の両方に使用される同じパーティションIDを提供することができる。
MPAM情報の構成可能なソース
図17は、PTWメモリトランザクションが、対応するD/Iメモリトランザクションとは異なるパーティションIDを使用することを可能にする第2の例を示す。この例では、PTWトランザクション専用の追加のパーティションIDレジスタを提供するのではなく、PTWメモリトランザクションは、D/Iアクセスメモリトランザクションに使用される同じパーティションIDレジスタを共有してもよい。しかしながら、図17に示すように、現在の実行環境以外のパーティションIDレジスタ100のうちの1つで指定されたパーティション識別子を使用するために、必要に応じて、所与の実行環境からPTWトランザクションを転送するために、いくつかの追加の制御状態410~416がパーティションIDレジスタ100のうちのいくつかに提供される。
このアプローチは、現在の例外レベルを超える例外レベルが、それらのレベルで実行されるソフトウェア環境に関連付けられたMPAM情報を既に含むという観察から得られる。これは、追加のMPAM情報をCPUに格納する必要がないことを意味し、この機能は、異なる種類の変換テーブルアクセス中にMPAM情報を取得する例外レベルを選択する制御を提供するが、上記の一般的な方式に既に存在するものを超えるMPAMパーティションIDを保持するための追加のレジスタ又はレジスタビットさえ含まない。
使用するMPAM情報は、現在の例外レベル及び使用中の変換のステージに依存する。2ステージ変換方式は、変換プロセス中に2つのステージを使用し、使用されるMPAM情報はステージごとに異なる必要があり得る。MPAM情報のソースは、2段階スキームにおいて各ステージについて別々に制御される。
各MPAMn_ELxレジスタは、ページテーブルウォークのためのMPAM情報のソースを制御する1つ又は2つの新しいフィールドを取得する。MPAM2_EL2及びMPAM1_EL1レジスタの各々に1つのフィールド(S1PTWSRCn)が存在する。S1PTWSRCnは、ELnでの実行によって実行される単一ステージページテーブルウォークについて、又は2ステージPTWのうちの第1のステージについてのMPAM情報のソースである。第2のフィールド(S2PTWSRCn)は、MPAM2_EL2及びMPAM1_EL1の各々に存在する。第2のフィールドは、ELnでの実行によって実行されるステージ2 PTWについてのMPAM情報のソースを制御する。これらの各設定は、基本的には以下の通りである:
●後方互換性(すなわち、PTWトランザクションは、対応するデータ/命令アクセスと同じパーティション情報を使用する)
●PTWトランザクションのための実行ELnのMPAM情報を使用する
●PTWトランザクションのために実行ELn+1のMPAM情報を使用する。
したがって、新しい制御フィールドは、MPAMパーティションIDレジスタ100のいくつかに追加される。「S1PTW」で始まるレジスタフィールドは、ステージ1 ページテーブルウォークのためのMPAM情報のソースを制御し、「S2PTW」制御で始まるものは、ステージ2ページテーブルウォークを制御する。最後の桁は、その設定が使用される実行ELを示す。
図17に示すように、MPAM1_EL1は、S1PTWSRC0及びS2PTWSCR0フィールドを追加され(4ビット)、MPAM2_EL2は、S1PTWSRC1及びS2PTWSCR1フィールドを追加される(4ビット)。
S1PTWSRC0(ビット[51:50]):EL0用のステージ1ページテーブルウォーク(ハイパーバイザ)ソース制御
S1PTWSRC0は、MPAM0_EL1又はMPAM1_EL1レジスタがステージ-1ページテーブルウォークのPARTIDのソースとして使用されるかどうかを制御する、レジスタMPAM1_EL1に追加されたフィールド412である。TGE==’1’の場合、MPAM 1_EL1.S1PTWSRC0は、使用されない(TGEはハイパーバイザ制御レジスタ(HCR)116内のフラグであり、TGE=1の場合、通常はEL 1にルーティングされるはずのEL0で発生する例外のタイプが(TGE=0の場合)代わりにEL2にルーティングされるべきであることを示す)。
S1PTWSRC0 412は、次の値をとることができる(各々は、2ビットのバイナリ値として表される)。
Figure 2022547545000007
S1PTWSRC1(ビット[51:50]):EL1のステージ1ページテーブルウォーク(ハイパーバイザ)ソース制御
MPAM2_EL2には、追加フィールド416が追加される。
S1PTWSRC1は、EL1での実行によって引き起こされるステージ1テーブルウォークのPARTIDのソースとしてMPAM1_EL1レジスタを使用するかMPAM2_EL1レジスタを使用するかを制御する。
S1PTWSRC1(ビット[51:50])
Figure 2022547545000008
S2PTWSRC0(ビット[53:52]):EL0のためのステージ2 ページテーブルウォーク(ハイパーバイザ)ソース制御
追加フィールド410がMPAM1_EL1に追加され、以下のように定義される:
S2PTWSRC0(ビット[53:52]):ステージ2 ページテーブルウォークソース制御
Figure 2022547545000009
S2PTWSRC1(ビット[53:52]):EL1のための第2段階ページテーブルウォーク(ハイパーバイザ)ソース制御
追加フィールド414がMPAM2_EL2に追加され、以下のように定義される:
S2PTWSRC1(ビット[53:52]):EL1のための第2段階ページテーブルウォーク(ハイパーバイザ)ソース制御
Figure 2022547545000010
したがって、現在の特権レベルから発行されたPTWメモリトランザクションのこのアプローチでは、処理回路は、PTWメモリトランザクションのパーティション識別子を生成するために使用される選択されたパーティションIDレジスタとして、現在の特権レベルより、より大きな特権の特権レベルに関連付けられたパーティションIDレジスタを選択することができる。これは、所与のメモリトランザクションにどのパーティションIDを使用するかを選択するためにわずかにより複雑な選択論理を必要とすることがあるが、より少ないレジスタ記憶空間が必要とされるため、PTWメモリトランザクションのための異なるパーティションIDのサポートを実装するハードウェアコストを削減することができる。
処理回路は、プログラム可能構成情報に基づいて、選択されたパーティションIDレジスタが現在の特権レベルに関連付けられたパーティションIDレジスタであるべきか、現在の特権レベルより、より大きな特権の特権レベルに関連付けられたパーティションIDレジスタであるべきかを選択してもよい。このプログラム可能構成情報は、より大きい特権の特権レベルで実行される命令によってプログラム可能であり得る。したがって、例えば、オペレーティングシステムは、そこで動作しているアプリケーションがPTWメモリトランザクションにアプリケーション自体のパーティションIDレジスタを使用するか、又はオペレーティングシステム内のD/Iメモリトランザクションに使用されるレジスタを参照するかを制御するためにプログラム可能状態410、412を設定することができる。同様に、ハイパーバイザは、状態414、416を使用して、どのパーティションIDレジスタ100が、オペレーティングシステムによってEL1で発行されたステージ1又はステージ2のPTWトランザクションによって使用するために選択されるかを制御することができる。
図17に示すように、場合によっては、各々が特権レベル、セキュリティ状態、及びアドレス変換ステージの異なる組み合わせに関連付けられたいくつかのプログラム可能構成情報410、412、414、416が存在し得る。したがって、所与のPTWメモリトランザクションについて、現在の特権レベル、現在のセキュリティ状態、及びPTWメモリトランザクションが発行されるアドレス変換の現在のステージのうちの少なくとも1つに応じて、プログラム可能構成情報の項目のうちの1つを選択してもよい。プログラム可能構成情報の選択された項目に基づいて、処理回路は、選択されたパーティションIDレジスタが現在の特権レベルに関連付けられたものであるべきか、より大きな特権の特権レベルに関連付けられたパーティションIDレジスタであるべきかを選択することができる。
図17は、プログラム可能構成情報410~416のこれらの項目をMPAM制御レジスタ68内にどのように格納することができるかの特定の例を示しているが、制御状態の異なるレイアウトを使用するか、又はプログラム可能構成情報410~416をパーティションIDレジスタ100自体とは別のレジスタに格納することも可能である。
図18は、PTWメモリトランザクションのためのパーティションID割り当ての処理方法を示す流れ図を示す。ステップ500において、PTWメモリトランザクションがMMU70によって発行される。ステップ502において、処理回路は、(少なくともいくつかの特権レベルについて、現在の特権レベルより、より大きな特権の特権レベルに設定することができる)プログラム可能情報が、現在の変換ステージ及び特権レベルのPTWトランザクションが、対応するデータ/命令アクセスメモリトランザクションとは異なるパーティションIDを有するべきかどうかを示すかどうかをチェックする。このプログラム可能情報は、異なるMPANレジスタ100を参照するように、PTWトランザクションを対応するD/I命令アクセスに転送する図17に示すフィールド410~416のうちの1つであってもよく、又は例えば図16に示す専用PTWパーティションIDレジスタの有効化フィールド402であってもよい。
現在のアクセスに対して選択されたプログラム可能情報が無効状態にあり、PTWトランザクションがD/Iアクセスメモリトランザクションと同じ方法で処理されるべきであることを示す場合、ステップ504において、対応するD/Iアクセスメモリトランザクションにアサインされるのと同じパーティションIDがPTWメモリトランザクションにアサインされる。例えば、パーティションIDレジスタは、上述したように図8に示すアプローチを使用して現在の例外レベル及びGSTAPP_PLKフィールドに基づいて選択することができ、パーティションID(命令又はデータ)のうちの関連する1つをPTWメモリトランザクションにアサインすることができる。
しかしながら、ステップ502において、現在の特権レベル及び変換ステージでPTWトランザクションに別々のパーティションIDを提供するオプションが有効にされていることをプログラム可能情報が示すと決定された場合、ステップ506において、対応するD/Iアクセスメモリトランザクションと比較して異なるパーティションIDがPTWメモリトランザクションにアサインされる。例えば、図16に示すアプローチが使用される場合、使用されるパーティションID値を取得するために専用PTWパーティションIDレジスタを参照することができるか(値を仮想化マッピングする)、又は図17に示す手法では、現在の特権レベル以外の特権レベルのパーティションIDレジスタを参照して、メモリトランザクションにアサインするパーティションID値を導出するために使用されるパーティションIDを取得することができる。
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することができる構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配置又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスが、機能を行うようにプログラムされてもよい。「ように構成された」は、装置要素が、定義された動作を提供するためにある方法で変更される必要があることを意味しない。
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されてきたが、本発明はそれらの正確な実施形態に限定されず、添付の特許請求の範囲によって定義される本発明の範囲及び精神から逸脱することなく、当業者によって様々な変更及び修正を行うことができることを理解されたい。

Claims (16)

  1. 装置であって、
    複数のソフトウェア実行環境のうちの1つからの命令を処理する処理回路と、
    前記命令に応答して、前記処理回路によって発行されたメモリトランザクションを処理するための少なくとも1つのメモリシステム構成要素と、
    を備え、
    どのソフトウェア実行環境が前記メモリトランザクションを発行させたかに応じて選択されたパーティション識別子を指定する前記処理回路によって発行されたメモリトランザクションに応答して、前記少なくとも1つのメモリシステム構成要素は、前記メモリトランザクションによって指定された前記パーティション識別子に応じて選択された、選択された1組のメモリシステム構成要素パラメータに応じて、前記メモリトランザクションを処理するためのリソースの割り当てを制御するか、若しくは前記リソースの競合を管理するか、又は前記メモリトランザクションによって指定された前記パーティション識別子に応じて、性能監視データが前記メモリトランザクションに応答して更新されるかどうかを制御するように構成され、
    ページテーブルウォークメモリトランザクションが、対応するデータ/命令アクセスメモリトランザクションの変換されたターゲットアドレスを取得するために必要なページテーブルデータへのアクセスを要求するために、前記処理回路によって発行されると、前記処理回路は、前記ページテーブルウォークメモリトランザクションに、前記対応するデータ/命令アクセスメモリトランザクションにアサインされた前記パーティション識別子に異なるパーティション識別子をアサインすることができる、装置。
  2. 前記処理回路は、前記複数のソフトウェア実行環境のうちの少なくとも1つからの命令に応答してプログラム可能なプログラム可能情報に基づいて、
    異なるパーティション識別子を、前記ページテーブルウォークメモリトランザクション及び前記対応するデータ/命令アクセスメモリトランザクションにアサインするか、又は
    同じパーティション識別子を、前記ページテーブルウォークメモリトランザクション及び前記対応するデータ/命令アクセスメモリトランザクションに割り当てるか
    を選択するように構成される、請求項1に記載の装置。
  3. 前記プログラム可能情報は、少なくとも特権が与えられた特権レベル以外の特権レベルで実行される少なくとも1つのソフトウェア実行環境からの命令に応答してプログラム可能である、請求項2に記載の装置。
  4. 各々がそれぞれのパーティション識別子を指定するための複数のパーティション識別子レジスタ
    を備え、
    メモリトランザクションを発行する上で、前記処理回路は、選択されたパーティション識別子レジスタに格納されたパーティション識別子を選択し、前記選択されたパーティション識別子レジスタに格納された前記選択されたパーティション識別子に応じて、パーティション識別子を前記メモリトランザクションにアサインするように構成される、請求項1から3のいずれか一項に記載の装置。
  5. 前記処理回路は、複数の特権レベルのうちの1つからの命令を実行し、前記メモリトランザクションが発行された現在の特権レベルに少なくとも基づいて、前記選択されたパーティション識別子レジスタを選択するように構成される、請求項4に記載の装置。
  6. 前記複数のパーティション識別子レジスタは、ページテーブルウォークメモリトランザクションに使用するために前記選択されたパーティション識別子を提供するために、前記選択されたパーティション識別子レジスタとして選択可能な少なくとも1つのページテーブルウォークパーティション識別子レジスタを含む、請求項4又は5に記載の装置。
  7. 前記処理回路は、複数のステージのアドレス変換をサポートするように構成され、各ステージのアドレス変換は、それぞれのページテーブル構造に基づき、
    前記複数のパーティション識別子レジスタは、各々が少なくとも1つのステージのアドレス変換に関連付けられた複数のページテーブルウォークパーティション識別子レジスタを含み、
    ページテーブルウォークメモリトランザクションの場合、前記処理回路は、前記ページテーブルウォークメモリトランザクションに関連付けられたアドレス変換の前記ステージに基づいて、どのパーティション識別子レジスタが前記選択されたパーティション識別子レジスタであるかを選択するように構成される、請求項6に記載の装置。
  8. 各ページテーブルウォークパーティション識別子レジスタは、有効状態及び無効状態のうちの1つを指定する有効化フィールドを備え、
    所与のページテーブルウォークメモリトランザクションの場合、前記処理回路は、対応するページテーブルウォークパーティション識別子レジスタの前記有効化フィールドが前記有効状態又は前記無効状態を指定するかどうかを決定するように構成され、
    前記対応するページテーブルウォークパーティション識別子レジスタの前記有効化フィールドが前記有効状態を示す場合、前記選択されたパーティション識別子レジスタは、前記対応するページテーブルウォークパーティション識別子レジスタであり、
    前記対応するページテーブルウォークパーティション識別子レジスタの前記有効化フィールドが前記無効状態を示す場合、前記選択されたパーティション識別子レジスタは、前記少なくとも1つのページテーブルウォークパーティション識別子レジスタ以外のパーティション識別子レジスタである、請求項6又は7に記載の装置。
  9. 各ページテーブルウォークパーティション識別子レジスタは、データパーティション識別子及び命令パーティション識別子を指定し、
    前記選択されたパーティション識別子レジスタは、前記少なくとも1つのページテーブルウォークパーティション識別子レジスタのうちの1つであるとき、
    データアクセスメモリトランザクションに対応するページテーブルウォークメモリトランザクションの場合、前記処理回路は、前記選択されたパーティション識別子レジスタによって指定された前記データパーティション識別子を前記選択されたパーティション識別子として選択するように構成され、
    命令アクセスメモリトランザクションに対応するページテーブルウォークメモリトランザクションの場合、前記処理回路は、前記選択されたパーティション識別子レジスタによって指定された前記命令パーティション識別子を前記選択されたパーティション識別子として選択するように構成される、請求項6から8のいずれか一項に記載の装置。
  10. 前記処理回路は、複数の特権レベルのうちの1つからの命令を実行するように構成されており、
    現在の特権レベルから発行されたページテーブルウォークメモリトランザクションの場合、前記処理回路は、前記選択されたパーティション識別子レジスタとして、前記現在の特権レベルより大きな特権の特権レベルに関連付けられたパーティション識別子レジスタを選択することができる、請求項4から9のいずれか一項に記載の装置。
  11. 前記処理回路は、複数の特権レベルのうちの1つからの命令を実行するように構成されており、
    現在の特権レベルから発行されたページテーブルウォークメモリトランザクションの場合、前記処理回路は、プログラム可能構成情報に基づいて、前記選択されたパーティション識別子レジスタが、前記現在の特権レベルに関連付けられたパーティション識別子レジスタであるか、又は前記現在の特権レベルより大きな特権の特権レベルに関連付けられたパーティション識別子レジスタであるかを選択するように構成されている、請求項4から10のいずれか一項に記載の装置。
  12. 前記プログラム可能構成情報は、前記より大きな特権の特権レベルで実行される命令によってプログラム可能である、請求項11に記載の装置。
  13. 前記プログラム可能構成情報は、プログラム可能構成情報の複数の項目を含み、
    ページテーブルウォークメモリトランザクションの場合、前記処理回路は、
    前記ページテーブルウォークメモリトランザクションが発行される特権レベルと、
    前記ページテーブルウォークメモリトランザクションが発行される前記処理回路のセキュリティ状態と、
    前記ページテーブルウォークメモリトランザクションに関連付けられているアドレス変換の複数のステージのうちのいずれかのステージであって、アドレス変換の各ステージは、それぞれのページテーブル構造に基づく、いずれかのステージと
    のうちの少なくとも1つに応じてプログラム可能構成情報の前記項目のうちの1つを選択するように構成されており、
    前記処理回路は、プログラム可能構成情報の前記選択された項目に基づいて、前記選択されたパーティション識別子レジスタが、前記現在の特権レベルに関連付けられたパーティション識別子レジスタであるか、又は前記現在の特権レベルより、前記より大きな特権の特権レベルに関連付けられたパーティション識別子レジスタであるかを制御するように構成されている、請求項11又は12に記載の装置。
  14. 前記少なくとも1つのメモリシステム構成要素は、
    キャッシュであって、前記選択された1組のメモリシステム構成要素パラメータに応じて、前記メモリトランザクションに応答して前記キャッシュへのデータの割り当てを制御するように構成された、キャッシュと、
    前記選択された1組のメモリシステム構成要素に応じて、前記メモリトランザクションを処理するための帯域幅又はバッファ占有の割り当てを制御するように構成された相互接続又はメモリコントローラと
    のうちの少なくとも1つを備える、請求項1から13のいずれか一項に記載の装置。
  15. 装置であって、
    複数のソフトウェア実行環境のうちの1つからの命令を処理するための手段と、
    前記命令に応答して処理するための前記手段によって発行されたメモリトランザクションを処理するための少なくとも1つの手段と
    を備え、
    どのソフトウェア実行環境がメモリトランザクションを発行させたかに応じて選択されたパーティション識別子の指定を処理するための前記手段によって発行された前記メモリトランザクションに応答して、メモリトランザクションを処理するための前記少なくとも1つの手段は、前記メモリトランザクションによって指定された前記パーティション識別子に応じて選択された、選択された1組のメモリシステム構成要素パラメータに応じて、前記メモリトランザクションを処理するためのリソースの割り当てを制御するか、若しくは前記リソースの競合を管理するか、又は前記メモリトランザクションによって指定された前記パーティション識別子に応じて、性能監視データが前記メモリトランザクションに応答して更新されるかどうかを制御するように構成され、
    ページテーブルウォークメモリトランザクションが、対応するデータ/命令アクセスメモリトランザクションの変換されたターゲットアドレスを取得するために必要なページテーブルデータへのアクセスの要求を処理するための前記手段によって発行されると、処理するための前記手段は、前記ページテーブルウォークメモリトランザクションに、前記対応するデータ/命令アクセスメモリトランザクションにアサインされた前記パーティション識別子に異なるパーティション識別子をアサインすることができる、装置。
  16. 方法であって、
    複数のソフトウェア実行環境のうちの1つからの命令を処理することと、
    前記命令に応答して発行されたメモリトランザクションを処理することと
    を含み、
    どのソフトウェア実行環境がメモリトランザクションを発行させたかに応じて選択されたパーティション識別子を指定する前記メモリトランザクションに応答して、少なくとも1つのメモリシステム構成要素は、前記メモリトランザクションによって指定された前記パーティション識別子に応じて選択された、選択された1組のメモリシステム構成要素パラメータに応じて、前記メモリトランザクションを処理するためのリソースの割り当てを制御するか、若しくは前記リソースの競合を管理するか、又は前記メモリトランザクションによって指定された前記パーティション識別子に応じて、性能監視データが前記メモリトランザクションに応答して更新されるかどうかを制御し、
    ページテーブルウォークメモリトランザクションが、対応するデータ/命令アクセスメモリトランザクションの変換されたターゲットアドレスを取得するために必要なページテーブルデータへのアクセスを要求するために発行されると、前記ページテーブルウォークメモリトランザクションにアサインされた前記パーティション識別子は、前記対応するデータ/命令アクセスメモリトランザクションにアサインされた前記パーティション識別子とは異なるパーティション識別子であることが可能になる、方法。
JP2022515710A 2019-09-10 2020-08-18 ページテーブルウォークメモリトランザクションのためのパーティション識別子 Pending JP2022547545A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/565,839 US11256625B2 (en) 2019-09-10 2019-09-10 Partition identifiers for page table walk memory transactions
US16/565,839 2019-09-10
PCT/GB2020/051969 WO2021048519A1 (en) 2019-09-10 2020-08-18 Partition identifiers for page table walk memory transactions

Publications (1)

Publication Number Publication Date
JP2022547545A true JP2022547545A (ja) 2022-11-14

Family

ID=72148177

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022515710A Pending JP2022547545A (ja) 2019-09-10 2020-08-18 ページテーブルウォークメモリトランザクションのためのパーティション識別子

Country Status (6)

Country Link
US (1) US11256625B2 (ja)
EP (1) EP4028887A1 (ja)
JP (1) JP2022547545A (ja)
KR (1) KR20220060543A (ja)
CN (1) CN114375439A (ja)
WO (1) WO2021048519A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11620217B2 (en) 2021-03-31 2023-04-04 Arm Limited Partition identifier space selection
US11481141B1 (en) 2021-04-26 2022-10-25 Micron Technology, Inc. Secure self-purging memory partitions
US11662931B2 (en) 2021-05-26 2023-05-30 Arm Limited Mapping partition identifiers
US12001705B2 (en) * 2021-05-26 2024-06-04 Arm Limited Memory transaction parameter settings
US11429535B1 (en) 2021-07-09 2022-08-30 Apple Inc. Cache replacement based on traversal tracking

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4376297A (en) 1978-04-10 1983-03-08 Signetics Corporation Virtual memory addressing device
US5404476A (en) 1989-02-10 1995-04-04 Nec Corporation Multiprocessing system having a single translation lookaside buffer with reduced processor overhead
US5790979A (en) 1993-05-10 1998-08-04 Liedtke; Jochen Translation method in which page-table progression is dynamically determined by guard-bit sequences
JP3740195B2 (ja) 1994-09-09 2006-02-01 株式会社ルネサステクノロジ データ処理装置
JPH0981459A (ja) 1995-09-19 1997-03-28 Hitachi Ltd アドレス変換バッファ装置
US6629220B1 (en) 1999-08-20 2003-09-30 Intel Corporation Method and apparatus for dynamic arbitration between a first queue and a second queue based on a high priority transaction type
US7346757B2 (en) 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US7069413B1 (en) 2003-01-29 2006-06-27 Vmware, Inc. Method and system for performing virtual to physical address translations in a virtual machine monitor
US7984108B2 (en) 2003-10-08 2011-07-19 Unisys Corporation Computer system para-virtualization using a hypervisor that is implemented in a partition of the host system
US8006017B2 (en) 2004-12-21 2011-08-23 Intel Corporation Stream priority
US7430643B2 (en) 2004-12-30 2008-09-30 Sun Microsystems, Inc. Multiple contexts for efficient use of translation lookaside buffer
US7937556B2 (en) 2008-04-30 2011-05-03 Oracle America, Inc. Minimizing TLB comparison size
US9367363B2 (en) 2008-05-12 2016-06-14 Oracle America, Inc. System and method for integrating best effort hardware mechanisms for supporting transactional memory
US8296547B2 (en) 2008-08-27 2012-10-23 International Business Machines Corporation Loading entries into a TLB in hardware via indirect TLB entries
US8108650B2 (en) 2009-05-29 2012-01-31 Apple Inc. Translation lookaside buffer (TLB) with reserved areas for specific sources
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
US20130013889A1 (en) 2011-07-06 2013-01-10 Jaikumar Devaraj Memory management unit using stream identifiers
US9886312B2 (en) 2011-09-28 2018-02-06 Microsoft Technology Licensing, Llc Dynamic provisioning of virtual video memory based on virtual video controller configuration
US9923826B2 (en) 2011-10-14 2018-03-20 Citrix Systems, Inc. Systems and methods for dynamic adaptation of network accelerators
US9069598B2 (en) 2012-01-06 2015-06-30 International Business Machines Corporation Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core
US8880745B2 (en) 2012-10-05 2014-11-04 Analog Devices, Inc. Efficient scheduling of transactions from multiple masters
US10169091B2 (en) 2012-10-25 2019-01-01 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US9172655B1 (en) 2012-11-15 2015-10-27 Qlogic, Corporation Systems and methods for quality of service in networks
US9547524B2 (en) 2012-12-20 2017-01-17 Massachusetts Institute Of Technology Methods and systems for enhancing hardware transactions using hardware transactions in software slow-path
US9405711B2 (en) 2013-01-09 2016-08-02 International Business Machines Corporation On-chip traffic prioritization in memory
EP2954419B1 (en) 2013-02-05 2017-03-29 ARM Limited Virtualisation supporting guest operating systems using memory protection units
US9088501B2 (en) 2013-07-31 2015-07-21 Citrix Systems, Inc. Systems and methods for least connection load balancing by multi-core device
US20150089185A1 (en) 2013-09-23 2015-03-26 International Business Machines Corporation Managing Mirror Copies without Blocking Application I/O
US9298623B2 (en) 2013-09-26 2016-03-29 Globalfoundries Inc. Identifying high-conflict cache lines in transactional memory computing environments
US9208261B2 (en) 2014-01-24 2015-12-08 Oracle International Corporation Power reduction for fully associated translation lookaside buffer (TLB) and content addressable memory (CAM)
US9465673B2 (en) 2014-02-27 2016-10-11 International Business Machines Corporation Deferral instruction for managing transactional aborts in transactional memory computing environments to complete transaction by deferring disruptive events handling
US9471371B2 (en) 2014-02-27 2016-10-18 International Business Machines Corporation Dynamic prediction of concurrent hardware transactions resource requirements and allocation
US9424072B2 (en) 2014-02-27 2016-08-23 International Business Machines Corporation Alerting hardware transactions that are about to run out of space
FR3019921B1 (fr) 2014-04-10 2017-08-11 Commissariat Energie Atomique Systeme de calcul distribue mettant en œuvre une memoire transactionnelle materielle de type non-speculatif et son procede d'utilisation pour le calcul distribue
US9323692B2 (en) 2014-04-17 2016-04-26 International Business Machines Corporation Managing translation of a same address across multiple contexts using a same entry in a translation lookaside buffer
US9317443B2 (en) 2014-04-17 2016-04-19 International Business Machines Corporation Managing translations across multiple contexts using a TLB with entries directed to multiple privilege levels and to multiple types of address spaces
US9477469B2 (en) 2014-06-02 2016-10-25 International Business Machines Corporation Branch predictor suppressing branch prediction of previously executed branch instructions in a transactional execution environment
US10067960B2 (en) 2015-06-04 2018-09-04 Microsoft Technology Licensing, Llc Controlling atomic updates of indexes using hardware transactional memory
GB2539433B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2539435B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
GB2539436B (en) 2015-06-16 2019-02-06 Advanced Risc Mach Ltd Secure initialisation
US9875186B2 (en) 2015-07-08 2018-01-23 Futurewei Technologies, Inc. System and method for data caching in processing nodes of a massively parallel processing (MPP) database system
GB2551756B (en) * 2016-06-29 2019-12-11 Advanced Risc Mach Ltd Apparatus and method for performing segment-based address translation
US20180095892A1 (en) * 2016-10-01 2018-04-05 Intel Corporation Processors, methods, systems, and instructions to determine page group identifiers, and optionally page group metadata, associated with logical memory addresses
US10083126B2 (en) 2016-12-06 2018-09-25 Arm Limited Apparatus and method for avoiding conflicting entries in a storage structure
US10268379B2 (en) 2017-01-13 2019-04-23 Arm Limited Partitioning of memory system resources or performance monitoring
US20180203807A1 (en) * 2017-01-13 2018-07-19 Arm Limited Partitioning tlb or cache allocation
US10394454B2 (en) 2017-01-13 2019-08-27 Arm Limited Partitioning of memory system resources or performance monitoring

Also Published As

Publication number Publication date
US11256625B2 (en) 2022-02-22
WO2021048519A1 (en) 2021-03-18
EP4028887A1 (en) 2022-07-20
KR20220060543A (ko) 2022-05-11
US20210073131A1 (en) 2021-03-11
CN114375439A (zh) 2022-04-19

Similar Documents

Publication Publication Date Title
JP7245779B2 (ja) Tlbまたはキャッシュ割り当ての分割
JP7265478B2 (ja) メモリ分割
KR102471308B1 (ko) 메모리 시스템 자원 또는 성능 모니터링의 파티셔닝
JP7128822B2 (ja) メモリシステムリソースの分割または性能監視
KR102471326B1 (ko) 메모리 시스템 자원 또는 성능 모니터링의 파티셔닝
US11256625B2 (en) Partition identifiers for page table walk memory transactions

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20220318

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220707

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230810