JP2017539001A - コンテキスト依存のバリア命令の実行 - Google Patents

コンテキスト依存のバリア命令の実行 Download PDF

Info

Publication number
JP2017539001A
JP2017539001A JP2017523951A JP2017523951A JP2017539001A JP 2017539001 A JP2017539001 A JP 2017539001A JP 2017523951 A JP2017523951 A JP 2017523951A JP 2017523951 A JP2017523951 A JP 2017523951A JP 2017539001 A JP2017539001 A JP 2017539001A
Authority
JP
Japan
Prior art keywords
context
data processing
access
instruction
memory system
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
JP2017523951A
Other languages
English (en)
Other versions
JP6722182B2 (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 JP2017539001A publication Critical patent/JP2017539001A/ja
Application granted granted Critical
Publication of JP6722182B2 publication Critical patent/JP6722182B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/1433Protection 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 module or a part of a module
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • 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/461Saving or restoring of program or task context
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

それに従って、装置の処理回路がメモリシステムにアクセスし、それがサポートする複数のコンテキストのうちの1つのコンテキストにおいてデータ処理命令を実行し得る、データ処理のための装置及びデータ処理方法が提供される。処理回路がバリア命令を実行するときには、結果として生じるアクセス順序制約は、例えば、バリア命令が実行されたコンテキストであり得る、識別されたコンテキストにおいて動作するときに、処理回路によって開始されたアクセスに対して強制することに制限され得る。これは、その複数の可能なコンテキストにおける処理回路の動作間の分離を提供し、特に、例えば、メモリの高レイテンシ領域へのアクセスに関連するアクセス順序制約の完了における遅延が、他のコンテキストのタイミング感度に影響を及ぼすことを回避する。

Description

本開示は、データ処理に関する。より具体的には、データ処理装置におけるバリア命令の使用に関する。
データ処理動作を行うか、または代行させるためにデータ処理命令を実行するデータ処理装置は、バリア命令に応答するように手配されることが既知である。バリア命令は、データ処理装置に、特定のアクセス順序の制約が強制されることを確実にさせ、換言すると、バリア命令は、バリア命令に続く一連のデータ処理命令においてデータ処理装置が命令を実行し得る前に、データ処理装置が実行する一連のデータ処理命令においてバリア命令に先行する命令が完了すること、すなわち、アクセスされるメモリシステム内で実施されることを保証され得ることを確実にする。これは、例えば、メモリシステムの内容が、バリア命令に遭遇したときに、最新であり、データ処理装置の現在の処理の状態に関して整合性があることを確実にするために有用であり得る。
本開示は、データ処理装置が、そのようなバリア命令の遭遇にどのように応答するかの改善に関する。
第1の態様から見ると、データ処理のための装置であって、データ処理動作を行うためにデータ処理命令を実行する処理回路であって、データ処理動作は、メモリシステムにアクセスすることを含み、処理回路は、複数のコンテキストにおいてデータ処理命令を実行することが可能である、処理回路と、処理回路とメモリシステムとの間にインターフェースを提供するメモリシステム相互作用回路と、を備え、メモリシステム相互作用回路は、処理回路が複数のコンテキストのうちの現在のコンテキストにおいてバリア命令を実行することに応答して、アクセス順序制約を強制することが可能であり、メモリシステム相互作用回路は、アクセス順序制約の強制を、識別されたコンテキストにおいて動作するときに処理回路によって開始されたアクセスに制限することが可能である装置が提供される。
第2の態様から見ると、データ処理方法であって、データ処理動作を行うためにデータ処理命令を実行するステップであって、データ処理動作は、メモリシステムにアクセスすることを含み、データ処理命令は、複数のコンテキストのうちの現在のコンテキストにおいて実行される、ステップと、複数のコンテキストのうちの現在のコンテキストにおけるバリア命令の実行に応答して、アクセス順序制約を強制するステップと、アクセス順序制約の強制を、識別されたコンテキストにおいてデータ処理命令を実行するときに開始されたアクセスに制限するステップと、を含む方法が提供される。
第3の態様から見ると、データ処理のための装置であって、データ処理動作を行うためにデータ処理命令を実行する手段であって、データ処理動作は、メモリシステムにアクセスすることを含み、データ処理命令は、複数のコンテキストのうちの現在のコンテキストにおいて実行される、手段と、処理回路とメモリシステムとの間にインターフェースを提供するための手段と、を含み、インターフェースを提供するための手段は、データ処理命令を実行するための手段が複数のコンテキストのうちの現在のコンテキストにおいてバリア命令を実行することに応答して、アクセス順序制約を強制することが可能であり、データ処理命令を実行するための手段は、アクセス順序制約の強制を、識別されたコンテキストにおいて動作するときに処理回路によって開始されたアクセスに制限することが可能である装置が提供される。
本発明は、添付の図面に例示されるようなその実施形態を参照して、例としてのみ、さらに説明される。
一実施形態における、2つのデータ処理装置及びメモリシステムを備えるデータ処理システムを概略的に例示する。 一実施形態における、図1に示されるもの等の1つ以上のデータ処理装置上で実行される、仮想化された動作環境の構造を概略的に例示する。 一実施形態における、図1のデータ処理システムのコンポーネントのいくつかを、より詳細に概略的に例示する。 一実施形態における、バリア命令を例示する。 一実施形態における、図3Aの各データ処理装置内の各格納バッファの構成をより詳細に概略的に例示する。 一実施形態における、図4に例示されるもの等の格納バッファによって行われる一連のステップを示す。 一実施形態における、処理回路によって実行され得る例示的な一連の命令を示す。 一実施形態における、処理回路によって実行され得る例示的な一連の命令を示す。
本発明の技術は、データ処理装置の処理回路が、1つを超えるコンテキストにおいてデータ処理命令を実行することが可能な(すなわち、それが実行することを可能にする構成を有する)場合、処理回路がデータ処理命令を実行するコンテキストに応じて、データ処理装置が、バリア命令に応答する様式を変更することが有利であると認識している。本明細書において、「コンテキスト」とは、データ処理装置がそこで動作することができ、それに従ってデータ処理装置のコンポーネントに、データ処理装置自体のコンポーネントだけでなく、データ処理装置が存在する、例えば、データ処理装置が接続されるメモリシステムをさらに含むデータ処理システムの全体の、見かけ上完全で自己整合性のある概観が提供される、動作環境として理解されるべきである。「見かけ上」という用語は、本明細書においては、例えば、データ処理装置が相互作用するメモリシステムが、実際に、データ処理装置の処理回路が特定のコンテキストにおいて動作しているときに見ることができるよりも広範囲のアドレス位置を含有し得、しかし、処理回路は、その特定のコンテキストにおいて動作しているときに、メモリシステム内に他のアクセス不可なメモリ位置が存在していることを認識していないことを示すために使用される。バリア命令は、例えばメモリバリア命令であり得るか、または、例えばメモリアクセスだけでなく整合性動作等の他の関連している動作も同期化する同期化バリアであり得る。例えば、分岐予測器またはTLB維持動作により、DVMメッセージが得られ、同期化バリアは、これらのアクセスも同期化する。
本発明の技術によると、データ処理装置の処理回路がバリア命令に遭遇すると、データ処理装置は、例えば現在のコンテキストであり得る識別されたコンテキストにおいて動作するときに処理回路によって開始されたアクセス、すなわち、処理回路が現在動作していて、バリア命令に遭遇したコンテキストと同一のコンテキストにおいて以前に開始されたアクセスに対してのみ、対応するアクセス順序制約(access ordering constraint)の強制を制限にすることによって、応答し得る。言い換えると、アクセス順序制約の強制は、識別されたコンテキストにおいて動作しているときに処理回路によって開始されるアクセスに制限され得る。アクセスは、種々の形をとり得、例えば、格納または読み込み等のメモリアクセスであり得、例えば、整合性動作またはキャッシュ(データまたは命令)維持動作でもあり得る。
これは、処理回路が、それらの複数のコンテキストのうちの所与のコンテキストにおいてデータ処理命令を実行しているときに、データ処理装置内の複数の可能なコンテキストの存在が、データ処理装置の動作に対して有し得る影響をさらに低減するという利点を有する。例えば、本技術が特に有益であり得る1つの状況は、データ処理装置が、そのデータ処理命令を実行し、かつほとんど遅延なく外部信号に応答すること(「リアルタイムコンテキスト」)が必要とされ、そのデータ処理命令の実行の完了において、かつ外部信号への応答において、いくらかの遅延が許容可能である別のコンテキストにおいて動作する(「非リアルタイムコンテキスト」)ように手配されるときに、データ処理装置内に提供される1つのコンテキストが、処理回路の動作のために使用される場合である。処理回路が所与のコンテキストにおいてバリア命令に遭遇するときに行われるアクセス順序制約が、その特定のコンテキストにおいて動作されるときに処理回路によって開始されたアクセスに対して強制されるように、データ処理装置を手配することによって、遅延に敏感であるコンテキストのタイミング制約(リアルタイムコンテキスト)は、より良好に保護され、このコンテキストにおいて動作するときの処理回路の動作は、そのような厳格なタイミング制約を有さず、したがって、例えば応答の比較的長いレイテンシを有することが既知である外部メモリへのアクセス等の、「リアルタイム」コンテキストに対して許容可能であるよりも大きな遅延を潜在的に伴い得るアクセスを伴い得る異なるコンテキストにおいて動作するときに処理回路によって開始されたアクセスの完了を待つ(アクセス順序制約を遵守するために)ことによって減速されない。
一実施形態において、識別されたコンテキストは、現在のコンテキストである。現在のコンテキストは、種々の方法でアクセス順序制約を強制するコンポーネントに通信され得る。
一実施形態において、識別されたコンテキストは、バリア命令において特定される。これにより、プログラマ(及び/またはハイパーバイザ)は、選択されたコンテキストに対してアクセス順序制約をいつでも柔軟に強制することができる。
一実施形態において、識別されたコンテキストは、処理回路にとってアクセス可能な格納域において特定される。例えば、特定されたものの指標は、(他の何らかの適した格納域も使用され得るが)レジスタに格納され得る。
一実施形態において、装置は、複数の仮想マシンのうちの現在の仮想マシンであって、処理回路がそれとの相互作用によってデータ処理命令を実行することが可能であり、現在のコンテキストがそれに対応する、現在の仮想マシンが動作する仮想化された動作環境を提供することが可能である。したがって、仮想化された動作環境は、データ処理装置の処理回路が、1つを超えるコンテキストにおいて動作(すなわち、データ処理命令を実行)し得る1つの様式を提供する。所与の仮想マシン(典型的には、特定のゲストオペレーティングシステム及びそのゲストオペレーティングシステム上で実行されるアプリケーションのセットを含む)は、その仮想マシンの現在の動作が、データ処理装置に対する動作の現在のコンテキストであるときに、データ処理装置のハードウェア(すなわち、特に、現在のコンテキストにおいて、処理回路及びメモリシステム相互作用回路)と相互作用する。本発明の技術は、したがって、仮想マシン(特に、低遅延タイミング制約の仮想マシン)のそれぞれのタイミング制約に対する保護を提供する。
いくつかの実施形態において、装置は、仮想マシン識別子を格納するための仮想マシン識別子格納域をさらに備え、装置は、現在の仮想マシンを示す、仮想マシン識別子を更新することが可能である。仮想マシン識別子格納域は、例えば、識別子格納域の他の何らかの適した形によっても可能であるが、データ処理装置の処理回路内のレジスタによって提供されることができ、したがって、装置のコンポーネントに対し容易に使用可能であり、信頼性のある、現在の仮想マシンを判定するためのリファレンスをデータ処理装置に提供する。
いくつかの実施形態において、メモリシステム相互作用回路は、保留中のアクセスをバッファ処理する格納バッファを備え、格納バッファは、その保留中のアクセスが発行されたコンテキストを示す識別子で、各保留中のアクセスをタグ付けすることが可能である。保留中のアクセスをバッファ処理する格納バッファの提供により、処理回路が他のデータ処理命令の実行を継続する一方で、既存の回路が、アクセス(典型的には、それらが完了する前に少なくとも小さな遅延を有し得る)の執行(administration)を代行させることができるようになる。格納バッファ内にバッファ処理される各保留中のアクセスのタグ付けは、その保留中のアクセスが発行されたコンテキストを示す。その名称にかかわらず、格納バッファは、「格納」アクセスだけでなく、例えば、整合性動作等の他のアクセスも取り扱い得ることに留意するべきである。
これにより、データ処理回路が動作することができるコンテキストのそれぞれに対して、データ処理回路によって開始される保留中のアクセスを、格納バッファが区別することができるようになる。
いくつかの実施形態において、格納バッファは、現在のコンテキストと一致するその保留中のアクセスが発行されたコンテキストを示す識別子でタグ付けされる保留中のアクセスに、アクセス順序制約の強制を制限することが可能である。これにより、(処理回路がバリア命令を実行し)アクセス順序制約が強制される際に、格納バッファは、現在のコンテキストにおいて動作しているときに処理回路によって開始された(したがって、アクセス順序制約が行われるべき)アクセスと異なるコンテキストにおいて動作しているときに処理回路によって開始された(したがって、アクセス順序制約が行われることが望ましくないであろう)アクセスとを、判定することができるようになる。
いくつかの実施形態において、メモリシステム相互作用回路は、整合性ユニットをさらに備え、格納バッファは、整合性ユニットを介して、メモリシステムと相互作用することが可能である。整合性ユニットを介したメモリシステムとの相互作用により、メモリシステムにアクセスするデータ処理装置と、同一のメモリシステムにもアクセスしている他のデータ処理装置との間、及びそれぞれのメモリ階層の格納デバイス間の整合性が可能になり、格納バッファが整合性ユニットを介してメモリシステムと相互作用する場合、(コンテキストに応じた)選択的なアクセス順序制約の強制の実施は、格納バッファが整合性ユニットに送信するメッセージの選択的なフィルタリングによって提供され得る。整合性ユニットは、例えば、捜索制御ユニット(snoop control unit)であり得る。
いくつかの実施形態において、格納バッファは、複数の格納位置を有するコンテキスト追跡格納域を備え、格納バッファは、アクセス順序制約が現在のコンテキストに対して最後に強制されて以来、現在のコンテキストがアクセスを開始した場合、現在のコンテキストに対して、複数の格納位置のうちの1つにエントリ(entry)を格納することが可能である。このようにして、このコンテキスト追跡格納域の提供により、格納バッファは、現在のコンテキストに対してそもそもアクセス順序制約が強制される必要があるかどうかを容易に判定できるようになる。
いくつかの実施形態において、格納バッファは、選択されたエントリに対応するアクセス順序制約が強制されたときに、コンテキスト追跡格納域内の選択されたエントリを消去することが可能である。したがって、一旦、所予のコンテキストに対してアクセス順序制約が強制されると、その時点でコンテキスト追跡格納域内の対応するエントリを消去することにより、もしそのコンテキストにおいてさらなるバリア命令が実行されるときは、格納バッファは確実に、アクセス順序制約が、以前のバリア命令によって生じる行為に影響されるそれらの以前のアクセスに関して実行される必要がないことを、容易に認識することができる。
いくつかの実施形態において、コンテキスト追跡格納域内の複数の格納位置の全てが占有され、格納バッファが、現在のコンテキストに対して占有されたエントリを有しない場合、格納バッファは、対応する犠牲になるエントリを有する、現在のコンテキストではない犠牲になるコンテキストによって開始される保留中のアクセスに対して、対応するバリア命令を実行することを処理回路に要求しない暗黙的なアクセス順序制約を強制し、選択されたコンテキストに対して犠牲になるエントリを消去することができる。格納バッファは、処理回路がデータ処理命令を実行し得る全ての可能なコンテキストに十分な格納位置を有するコンテキスト追跡格納域が提供され得る一方で、データ処理装置によってサポートされるコンテキストの数が、コンテキスト追跡格納域内に提供されることが望ましい格納位置の数を超える場合があり得る。言い換えると、格納バッファのサイズを可能な限り小さく保つために、コンテキスト追跡格納域内の格納位置の数を、比較的小さい数に制限することが所望され得る。この状況では、格納バッファは、現在のコンテキストについて占有されたエントリをもたず、現在のコンテキストについて直ちに使用できる使用可能なエントリをもたないかも知れないことが認識される。その状況において、現在のコンテキストのためにエントリが必要とされると、格納バッファは、暗黙的なアクセス順序制約(これは、バリア命令の実行により処理回路によって命令されるのではなく、そのコンテキスト追跡格納域内のエントリを解放するために、格納バッファ自体によって開始されるという意味で「暗黙的」)を強制し得る。現在のコンテキスト以外の1つ以上の犠牲になるコンテキストが、コンテキスト追跡格納域内の1つ以上のエントリを解放するために、そのような暗黙的なアクセス順序制約を受けるように格納バッファによって選択される。
いくつかの実施形態において、格納バッファは、アクセス順序制約がそのコンテキストに対して最後に強制されて以来開始されたアクセスが、少なくとも1つの種類のアクセスを含むかどうかを示すコンテキスト追跡格納域内の各エントリに関連付けられる少なくとも1つの指標を格納することが可能である。これにより、格納バッファは、所予のコンテキストにおいて処理回路によって開始され得、かつアクセス順序制約の強制に関して様々な要件を有し得る、様々な種類のアクセスを区別することが可能になる。
いくつかの実施形態において、装置は、アクセス順序制約の強制を、現在のコンテキストに対するアクセス順序制約が最後に行われて以来、現在のコンテキストがアクセス命令の対応する種類を実行したときに、アクセス命令のその対応する種類の現在のコンテキストによる実行によって開始された、保留中のアクセスの選択された種類に制限することが可能である。言い換えると、装置は、現在のコンテキストに対するアクセス順序制約が最後に行われて以来、現在のコンテキストがアクセス命令の対応する種類を実行した場合にのみ、アクセス命令のその対応する種類の現在のコンテキストによる実行によって開始された、保留中のアクセスの選択された種類に対して、アクセス順序制約を強制し得る。したがって、装置は、このように、処理回路によるアクセス命令の対応する様々な種類の実行によって開始されたアクセスの様々な種類を区別することができ、さらに、アクセスの種類に依存して、アクセス順序制約の強制を行うことができる。これは、アクセスの様々な種類が互いにいくらか独立であり得、アクセス命令の1つの種類に対するアクセス順序制約の強制が、アクセス命令の異なる種類によって開始された保留中のアクセスがアクセス順序制約の強制に関与することを、実際には必要としないかもしれないことが、本発明の技術によって認識されているためである。
いくつかの実施形態において、保留中のアクセスの選択された種類は、格納動作である。データ処理システムにおける格納動作の予想されるレイテンシに応じて、格納動作は、そのような格納アクセスはそれらに関連付けられる著しいレイテンシを有し得るという事実に起因して、現在のコンテキストによって開始された格納動作に対してのみアクセス順序制約を強制することが有益であるような(メモリ)アクセスの一種を代表している。
いくつかの実施形態において、メモリシステム相互作用回路は、格納動作が選択されたメモリ領域に対してであるときに、アクセス順序制約の強制を制限することが可能である。そうして、メモリ相互作用回路は、格納動作が選択されたメモリ領域に対してである場合にのみ、アクセス順序制約を強制し得る。アクセスの選択された種類は、全ての格納動作であり得る一方で、本発明の技術は、関連付けられた高レイテンシを有するメモリシステムの特定のコンポーネントであり得(メモリシステムの他の部分は、許容可能な低いレイテンシを有し得る)、したがって、メモリシステム相互作用回路は、それに関連付けられる選択されたメモリ領域(例えば、メモリアドレスの範囲)によって、メモリのより高いレイテンシ部分へのアクセスを認識し得ることを認識している。これは、メモリシステムの高レイテンシコンポーネントへのアクセスを提供することが知られている、データ処理システム内の特定のポート(または複数のポート)にアクセスする格納の識別によって識別されることもあり得る。
いくつかの実施形態において、保留中のアクセスの選択された種類は、整合性動作である。整合性動作は、例えば、キャッシュ維持動作、変換索引バッファ(TLB)維持動作、分岐予測器維持動作等を含み得る。本発明の技術は、そのような整合性動作が、完了の比較的高いレイテンシを伴い得、したがって、本発明の技術が特に有益なアクセスの一種であるということを認識している。
図1は、2つの中央処理ユニット(CPU)12及び14を備える、一実施形態におけるデータ処理システム10を例示している。各CPUは、データ処理システム10内でデータ処理動作を行うか、または開始するために、一連のデータ処理命令を実行するプロセッサ16、18をそれぞれ備え、また、それらのデータ処理動作においてプロセッサ16、18によって使用される値が格納されるレジスタの組20、22もそれぞれ備える。各CPU12、14は、当業者が精通している様式で、データ処理システム10のメモリシステムの残りから取得されるデータ項目の一時コピーを、それらのデータ項目に対するアクセスレイテンシを低減させるために、格納することができる(すなわち、格納することを可能にする構成を有する)、密接に関連付けられたレベル1(L1)メモリシステム(キャッシュ)を有する。各データ処理装置12、14のそれぞれのL1メモリ24、26は、再び当業者が精通している、キャッシュ及びメモリのこの組の階層構成において、それ自体、システムバス30を介して外部メモリ32と相互作用する、レベル2(L2)メモリ28と相互作用する。
図2は、図1に示されるデータ処理システム10の1つの特徴、すなわち、データ処理システム10のデータ処理装置12及び14が、仮想化された動作環境をサポートすることを、概略的に例示している。これらの仮想化された動作環境は、このように提供される仮想化の制御全体を維持するハイパーバイザ34が、「例外レベル番号2」(EL2)または「特権レベル2」(PL2)と称される図に示される最も高い特権レベルで動作する、図2に概略的に示される階層的な様式に見られ得る。さらに、例えばセキュアなモニタが動作する、より高い特権レベル(EL3)もまた提供され得る。ハイパーバイザは、最も高い非セキュアな特権レベル、及び仮想化を管理する特権レベルで動作する。ハイパーバイザは、いくつかの仮想マシンのうちのどれがデータ処理装置内で現在動作しているかを制御する。例示の明確さのためだけに、図2は、2つの仮想マシン36及び38だけを示すが、データ処理装置は、より多くの仮想マシンをサポートするよう構成され得ることが理解されるべきである。各仮想マシンは、オペレーティングシステム(それぞれ、OS1 40及びOS2 42)及びそのオペレーティングシステムの制御下で実行される多くのアプリケーション、それぞれ44、46及び48、50によって図2に表されている。再び、例示の明確さのためだけに、各仮想マシン内に2つのアプリケーションのみが示されているが、実際には、各仮想マシンが実行することが可能なより多くのアプリケーションが存在し得る。アプリケーションは、典型的には、最も低い特権のレベル(EL0/PL0)で動作する一方で、ゲストオペレーティングシステム40及び42は、典型的には、中位の特権のレベル(EL1/PL1)で動作する。こうして、データ処理装置で実行され得る各仮想マシンは、データ処理装置、具体的には、データ処理装置のプロセッサ(処理回路)がそこで動作し得る、別個のコンテキストを表す。仮想マシンは、各仮想マシンに使用可能とされるのに適切な処理リソースに応じて、1つだけのデータ処理装置によってホストされるかもしれず、またはいくつかに分散され得ることに留意されたい。非リアルタイム仮想マシンは、いくつかのデータ処理装置にわたって分散されるよう構成され得る一方で、リアルタイム仮想マシンが提供される場合、1つのデータ処理装置だけに制限される可能性がより高い。
図3Aは、図1に示されるデータ処理装置12及び14の構成及びデータ処理システム10のいくつかのさらなるコンポーネントをより詳細に概略的に例示している。各データ処理装置12、14は、データ処理動作を行うか、または開始するためにデータ処理命令を実行するデータ処理ユニット(実行ユニット/処理回路)52、54を備える。データ処理命令/動作が、メモリシステムにアクセスすることを含む場合、各DPU52、54は、それぞれの読み込み格納ユニット(LSU)60、62及び格納バッファ(STB)56、58との相互作用を介してこれを行う。図2を参照して説明されたように、各データ処理装置12、14は、現在のコンテキストにおいて(すなわち、選択された仮想マシンが動作することを可能にするハイパーバイザ34の制御下で)動作し、それぞれのDPU52、54は、仮想マシン識別子として機能し、かつそれぞれのデータ処理装置で実行される現在の仮想マシンを示す値をレジスタVSCTLR.VMID80、82内に格納する。各データ処理装置のLSU及びSTBは、それらに関連付けられた、むしろ様々なアクセスレイテンシを、特に有し得る、メモリシステムの種々の格納コンポーネントと相互作用し得る。例えば、各データ処理装置12、14は、それぞれ低アクセスレイテンシを有する密接に連結されたメモリ(TCM)68、70それぞれへのアクセスが提供される。同様に、データ処理装置12、14は、これも低アクセスレイテンシを有する低レイテンシRAM(LL RAM)76へのアクセスを共有する。それにもかかわらず、LLRAM76は、何らかの維持動作がそれらに関連付けられたより長いレイテンシを有し得る、ページテーブル78を格納するためにも使用され得る。この場合には、LLRAM内のそれらのページテーブルに直接または間接的に関連があるいずれかの整合性動作は、(低レイテンシアクセスである)通常のLLRAM読み込み及び格納と異なるアクセスのクラス(すなわち、高レイテンシ)として扱われるべきであることが、本発明の技術によって認識されているため、標準のポート単位のメモリ順序は、本発明の技術が回避しようとする特定のコンテキストに対する遅延を回避するのに十分ではないであろう。
各データ処理装置12、14はまた、L2メモリシステム28の一部を形成し、特に、本実施形態においてはARM社(英国Cambridge市)によって提供されるようなAXIマスタポートであるバスアクセスポート74へのアクセスを提供する捜索制御ユニット(SCU)72によってこの例において具体化される整合性ユニットへのアクセスも共有し、SCUはまた、クラスタにおける全てのコア/処理要素間の整合性も維持する(図1も参照)。このAXIマスタポート74は、AXIシステムバス30を介して外部メモリ32へのアクセスを提供し、したがって、例えば、TCM60、78、またはLLRAM76よりも著しく高い、関連するアクセスレイテンシを有する。各データ処理装置のSTB56、58は、それぞれのローカルバスインターフェースユニット(BIU)64、66を介して、共有されるSCU72及び共有されるLLRAM76とそれぞれ相互作用する。
図3Bは、この命令をデータ処理装置に対するバリア命令として識別するオペコード部分と、このバリア命令が現在のVMID(例えば、VSCTLR.VMIDレジスタの内容によって示されるような)に適用されるべきか否かを特定し得るか、またはこのバリア命令が適用されるべきVMID値を明示的に特定し得るVMID使用部分と、を含む、例示的なバリア命令を概略的に例示する。バリア命令が適用されるべきVMID値は、バリア命令内にエンコードされるのではなく、レジスタ内に格納され得る(図1の20及び22参照)。
図4は、図3Aに示される格納バッファ56の構成をより詳細に概略的に例示する。格納バッファ58は、同様の構成を有することに留意されたい。全ての格納動作、キャッシュ維持動作、TLB維持動作等は、L1メモリシステム内において(VMIDレジスタ80から取得されるか、またはバリア命令内で明示的に特定されるか、もしくはレジスタ等の格納域内での指標としての)現在のVMID値でタグ付けられ、STB56を通り抜ける。言い換えると、処理回路(DPU)52からリタイアした対応する命令と関連付けられたVMID指標とが、STB56によって受信される。これらは、格納バッファの制御全体を執行する制御ユニット90によって最初に受信される。格納バッファ56は、保留中のアクセスが、メモリシステムの残りに渡される前に、一時的に格納される多くの格納バッファスロット92をさらに備える。各格納バッファスロットは、対応するリタイアした命令に関連付けられて受信され、この対応する保留中のアクセスをセットアップする、仮想マシン識別子の指標94でマークされる。格納バッファは、どのVMID(コンテキスト)が(SCU72を介して)高レイテンシのAXIマスタポート74にアクセスしたか、またはD−キャッシュ維持動作(「SCU」とラベル付けされている)を行ったか、及び、どのVMIDが分散された仮想メモリ(DVM)メッセージ(「DVM同期」とラベル付けされている)を送信したかを追跡するために、格納バッファが使用するコンテキストトラッカ96をさらに備える。DVMメッセージは、例えば、I−キャッシュ維持、分岐予測器維持、及びTLB維持に関連し得る。DVM同期は、事実上、順序制約を強制するDVMメッセージである。本明細書において、コンテキストトラッカは、この格納域に使用可能な比較的な限定された数、図4に例示されているように3つのエントリのみを有し、格納バッファ56が、データ処理装置12の比較的小さいコンポーネントとして提供されることを可能にする。制御ユニット90は、いつ、SCU72を介したAXIマスタポート74へのアクセスにリタイアした格納命令が関連するかを識別することができるように、高レイテンシのAXIマスタポート98のメモリアドレス範囲の指標へのアクセスをさらに有し、また、整合性命令100、すなわち、DVMメッセージをもたらすそれらの命令のリストへのアクセスも有する。いくつかの「整合性のある」メモリアクセスは、実際にはAXI−Mポートにアクセスし得ず、例えば、(AXI−Mアドレスの範囲内にある)ある整合性のあるアドレスへの格納は、AXI−Mポートに一度もアクセスすることなく、ローカルキャッシュアクセス、L2キャッシュアクセス、または別のコアのキャッシュへの捜索によって十分に満足され得ることに留意されたい。
図4のこの記載された構成によって、バリア命令がリタイアされ、制御ユニット90によって受信されたときに、格納バッファが、そのバリアの適用を、一致するVMIDを有する格納バッファスロットに制限し、したがって、バリア命令に応答して、アクセス順序制約の強制を、同一のコンテキストにおいて動作する(すなわち、VMID値によって示されるのと同一の仮想マシンが実行されている)ときにDPU52によって開始された格納バッファスロット内に対応するエントリを有する保留中のアクセスに制限することが可能になる。しかしながら、格納バッファはまた、そのVMIDに対してのみアクセス順序制約を強制するように、(例えば、図3Bを参照して上述されたように)バリア命令内にエンコードされた明示的なVMID特定にも応答できることに留意されたい。加えて、ハイパーバイザは、全ての仮想マシン(VMID/コンテキスト)に対して順序制約を強制し得る「強い」バリアへのアクセスを有することが留意されるべきである。また、順序制約は、現在保留中のメモリアクセスだけではなく、概して、他の処理要素(コア)に対して見えるようになっているという意味で、完了していないかもしれないあらゆる種類のアクセスに適用することも留意されるべきである。言い換えると、このコアに関する限りは完了している(したがって、保留中ではない)かもしれないが、その効果の全てが他のオブザーバー(例えば、他のコア)に対して見えるようになっているわけではない。バリアは、(STBにおいて)依然として保留中であるか否かに関係なく、この順序制約を強制する必要がある。
コンテキストトラッカ96の構成により、格納バッファは、DVM同期化が最後に行われて以来、バリア命令が適用するコンテキスト(すなわち、その関連付けられたVMID指標)がDVMメッセージを送信した場合、バリア命令がリタイアしたときに、メモリシステムの残りにDVM同期化メッセージを送信することだけができるようになる。これは、DVM同期化に関連するコンテキストトラッカ内の指標の維持によって行われ、これは、図5に関してより詳細に説明される。同様に、コンテキストトラッカ96のこの構成により、格納バッファ56は、関連しているコンテキスト(VMID)に対してバリア動作が最後に行われて以来、バリアが適用するコンテキスト(すなわち、その関連付けられたVMID指標)がSCUにAXIマスタ格納またはキャッシュ維持動作を送信した場合、(他の全ての未処理のAXIマスタアクセスをCPU12からバリアするために)バリアをSCU72に伝達することだけができるようになる。これをサポートするコンテキストトラッカ56の内容の維持のさらなる詳細は、図5、6A、及び6Bを参照して説明される。
図5は、一実施形態における、図4に示される格納バッファ56によって行われる一連のステップを示す。この例において、格納バッファは、現在のVMID/コンテキスト(すなわち、バリア命令において特定されるVMIDではない)を使用する。流れは、命令が、リタイアし、格納バッファ56の制御ユニット90によって受信される、ステップ110において開始すると考えることができる。その後、ステップ112において、この命令がバリア命令であるかが判定される。バリア命令でない場合、流れは、関連しているメモリアドレス範囲98及び整合性命令100のリストを参照して、制御ユニット90が、この命令が、(SCUを介した)AXIマスタポートへの格納であるか、DVM整合性命令であるか、またはデータキャッシュ維持動作であるかを判定する、ステップ114へ進む。どれでもない場合、流れは、アクセス命令が、メモリシステムの対象部分に直接伝えられ得るか、または必要な場合、それを扱うことができるまで、複数のSTBバッファスロットのうちの1つのバッファスロット内に保留され得る、ステップ116へ進む。このようにバッファスロット92のうちの1つに格納されるとき、関連付けられるVMID指標もまた、この目的のために提供される格納域94内のそのバッファスロットに関連付けられて格納される。その後、流れは、ステップ110に戻る。
しかしながら、ステップ112において、リタイアした命令がバリア命令であると判定された場合、流れは、コンテキストトラッカ96を参照して、コンテキストトラッカが、現在のVMID(コンテキスト)指標を有するエントリを有するかが判定される、ステップ118へ進む。有しない場合、流れは、格納バッファ56が、現在のコンテキストに対するこのバリア命令に対して、対応する順序制約を強制し、すなわち、一致するVMIDを有する格納バッファスロットのみがバリアされる、ステップ120へ進む。その後、流れは、ステップ110に戻る。
しかしながら、ステップ118において、コンテキストトラッカが、現在のVMID(その指標がこのバリア命令に関連付けられて受信された)でマークされたエントリを有すると判定される場合、流れは、このコンテキスト(VMID)に対してバリアが最後に行われて以来、このバリア命令が適用する(すなわち、VMID指標の参照による)コンテキストがAXIマスタ格納または他のキャッシュ維持動作をSCUに送信したということ(「SCUアクセス」)を示す、SCUマーカがこのエントリに関連付けられてセットされているということを、そのエントリが示すかがチェックされる、ステップ122へ進む。SCUマーカがセットされている場合、流れはステップ124へ進み、バリアがSCUに送信される。そうでなければ、流れは、直接ステップ126に移る。ステップ126において、DVM同期化がこのコンテキストに対して最後に行われて以来、バリアが適用するコンテキスト(すなわち、このバリア命令に関連して受信されたVMID指標)がDVMメッセージを送信したことを、対応するVMID指標を有するコンテキストトラッカ内のエントリが示すかが、同様に判定される。DVM同期マーカがセットされていない場合、流れは、直接ステップ130に移る。しかしながら、DVM同期マーカがセットされている場合、流れは、全ての保留中のAXIマスタポートアクセスに対してデータ同期化バリア(DSB)がその後に続く、全ての保留中のDVMメッセージに対するDVM同期をバリア命令がもたらす、ステップ128を介して進む。そして、ステップ130において、一致するVMIDを有するいかなる格納バッファスロットもまたバリアされ、一度これらのアクセスの全てがドレインされると、一致するVMIDを有するコンテキストトラッカ内のエントリが消去される。その後、流れは、ステップ110に戻る。
ステップ114の考察に戻り、リタイアした命令がAXIマスタポートへの(SCUを介した)格納であるか、またはDVM整合性命令であると判定されたならば、流れは、コンテキストトラッカが現在のコンテキストに対する(すなわち、一致するVMIDを有する)エントリを有するかが判定される、ステップ134へ進む。有する場合、またはステップ136においてコンテキストトラッカ内に自由なエントリがあると判定された場合、流れは、エントリが現在のコンテキストによる使用のために選択される、ステップ138へ進む。そして、ステップ140において、エントリは、現在のVMIDでラベル付けされ、ステップ142において、命令の種類、すなわち、これがSCUアクセスを表すか、またはDVMメッセージを送信する命令であるかを示す、対応するマーカがセットされる。そして、流れは、必要な場合、この命令に関連付けられたアクセスが、現在のVMID値でラベル付けされ、格納バッファのバッファスロットに割り当てられる、ステップ116へ進む。その後、前述の通り、流れは、ステップ110へ戻る。
しかしながら、ステップ136において、コンテキストトラッカ96内に現在使用可能なエントリが存在しないと判定された場合、流れは、ステップ144へ進み、格納バッファは、コンテキストトラッカ内のエントリによって少なくとも1つのコンテキストに対して暗黙的バリアを行い、ここで「暗黙的」とは、このバリアが、格納バッファによって受信されたリタイアしたバリア命令の受信によって開始されたのではなく、格納バッファ自体によって開始されたという事実を反映することが理解されるべきであり、したがって、ステップ146において、格納バッファは、関連しているコンテキストによって、すなわち、一致するVMIDによってマークされた全ての保留中のアクセスがドレインし、格納バッファが現在取り扱っているリタイアした命令がリタイアするのを待つ。その後、ステップ148において、コンテキストトラッカ内の対応する1つのエントリまたは複数のエントリは消去され、流れは、ステップ138を介して、上述のように進む。
図6A及び6Bはそれぞれ、格納バッファの動作をさらに例示するために、例示的な一連のデータ処理命令を示し、これらの命令のそれぞれが実行されるコンテキストも示す。図6Aを参照すると、コンテキストA内で実行される格納(STR)−命令1−は、長いレイテンシアドレス(例えば、SCUを介したAXIマスタポートへの)に関連するとして格納バッファによって識別され、したがって、エントリが、このコンテキストに対して、SCUアクセスマーカがセットされてコンテキストトラッカ内で作成される。命令2(同様に、識別された長いレイテンシアドレスへの格納)がリタイアした後、格納バッファは、SCUアクセス指標をマークして、コンテキストトラッカ内のエントリにコンテキストDを追加する。命令3は、低レイテンシアドレスへの格納であり、したがって、エントリは、コンテキストBに対してコンテキストトラッカ内で作成されない。命令4(データ同期化バリア(DSB))がリタイアするとき、このコンテキストはコンテキストトラッカ内に対応するエントリを有しないため、格納バッファは、バリアをSCUに伝達せず、したがって、(他のコンテキストに対して)現在進行中のいかなるAXIマスタポート格納域を待つことも回避し、(対応する低レイテンシポートを介した)メモリの低レイテンシ部分への格納を待つだけでよい。格納バッファのコンテキストトラッカが、(図4に示される例示的な実施形態のように)使用可能な3つ以上のエントリを有するならば、命令5(長いレイテンシアドレスへの、すなわち、SCUを介したAXIマスタポートへの格納)がリタイアするとき、エントリが、(対応するVMID及びSCUアクセスによってマークされた)コンテキストCに対してコンテキストトラッカ内で作成される。そして、命令6(DSB)は、このコンテキスト(VMID)に対してコンテキストトラッカ内でエントリが作成され、SCUマーカが、「高レイテンシコンテキスト」であることを示してセットされたということにより、リタイアし得る前に、全ての以前のAXIマスタポートアクセスが完了するのを待つ必要がある。しかしながら、格納バッファのコンテキストトラッカが可能なエントリを2つしか有しないとしたら、図6Aに示される一連の命令を通した進行のこの時点において、(これらの2つのエントリは、コンテキストA及びコンテキストDのために既に占有されているため)コンテキストCに使用可能なエントリは存在せず、したがって、格納バッファは、コンテキストトラッカのエントリを占有している高レイテンシコンテキストA及びDのうちの少なくとも1つに対して、暗黙的バリアを挿入し、そして、この暗黙的バリアによって影響される全てのアクセスがドレインするのを待つ。これらのアクセスの全てがドレインすると、コンテキストトラッカ内の1つ(または両方の)エントリが空になり、コンテキストCのために必要とされるエントリを、格納(命令5)がリタイアするのと同時に、追跡リストに追加することができる。格納は、それに対してリタイアしないように妨げられるであろう。その後、DSB(命令6)は、全ての以前のアクセスが、この挿入された暗黙的DSBによってバリアされているべきであるため、図6Aに示されるこの例示的な一連の命令のこの時点において、命令5の格納のみであるべきである、全てのAXIマスタアクセス(高レイテンシアクセス)を待つことになろう。
ここで、図6Bに示される例示的な一連の命令を考察すると、命令1(TLB維持動作)がリタイアした後に、格納バッファは、エントリをコンテキストトラッカに追加し、コンテキストAがDVM動作を行った(したがって、本明細書において「非リアルタイム」コンテキストとして分類される)ことを示す。命令2は、低レイテンシアドレスを対象とする(すなわち、SCUを介さずに、AXIマスタポートへ)として認識され、したがって、対応するエントリは、コンテキストトラッカ内で作成されない。命令3(DSB)がリタイアすると、いかなる保留中のAXIマスタポート格納も待つ必要はなく(これらは、他のコンテキストにのみ適用し得るため)、これは、(識別された低レイテンシポートを介した)低レイテンシメモリアドレスへの格納を待つだけでよい。このコンテキストは、それ自体、いかなるDVM(コンテキストトラッカ内の対応するエントリの欠如(したがって、必然的に、このコンテキストに対する対応するDVM同期化マーカの欠如)によって格納バッファが識別し得る)も行っていないため、何らかの種類のDVM同期化動作を送信することも回避するであろう。命令4(長いレイテンシアドレスへの格納または別のTLB維持動作のいずれか)がリタイアした後、格納バッファは、コンテキストCに対するエントリをコンテキストトラッカに追加し、このエントリをSCUアクセスとしてマークするか、またはこのエントリを、コンテキストCがDVM動作を行ったことを示すDVM同期マーカでマークする。その後、命令5(DSB)がリタイアするとき、命令4が、格納(STR)であるか、またはTLB無効化(TLBIMVAA)であるかに応じて、以下の2つの可能性のうちの1つが生じる。命令4が格納である場合、DSBバリアは、この格納及びデータ処理システムによって現在取り扱われているAXIマスタポートへの他の全ての格納に影響するが、DVM同期は格納バッファから送信されない。一方で、命令4がTLB無効化である場合、DSBバリア(命令5)は、全ての以前のDVMメッセージに対してDVM同期をもたらし、全ての以前のAXIマスタポートアクセスに影響するDSBが続く。
本発明の例示的な実施形態が、添付の図面を参照して、本明細書において詳細に説明されたが、本発明は、それらの正確な実施形態に限定されず、添付の特許請求の範囲に定義されるような本発明の範囲及び精神から逸脱することなく、当業者によって、種々の変更、追加、及び改良が行われ得ることが理解されるべきである。例えば、従属請求項の特徴の種々の組み合わせは、本発明の範囲から逸脱することなく、独立請求項の特徴とともに行われ得る。

Claims (19)

  1. データ処理のための装置であって、
    データ処理動作を行うためにデータ処理命令を実行する処理回路であって、前記データ処理動作は、メモリシステムにアクセスすることを含み、当該処理回路は、複数のコンテキストにおいて前記データ処理命令を実行することが可能である、処理回路と、
    前記処理回路と前記メモリシステムとの間にインターフェースを提供するメモリシステム相互作用回路と、
    を備え、
    前記メモリシステム相互作用回路は、前記処理回路が前記複数のコンテキストのうちの現在のコンテキストにおいてバリア命令を実行することに応答して、アクセス順序制約を強制することが可能であり、
    前記メモリシステム相互作用回路は、前記アクセス順序制約の強制を、識別されたコンテキストにおいて動作するときに前記処理回路によって開始されたアクセスに制限することが可能である装置。
  2. 前記識別されたコンテキストは、前記現在のコンテキストである、請求項1に記載の装置。
  3. 前記識別されたコンテキストは、前記バリア命令において特定される、請求項1に記載の装置。
  4. 前記装置は、複数の仮想マシンのうちの現在の仮想マシンが動作する仮想化された動作環境を提供することが可能であり、前記処理回路は、前記現在の仮想マシンとの相互作用によって、前記データ処理命令を実行することが可能であり、前記現在のコンテキストは、前記現在の仮想マシンに対応する、請求項1〜3のいずれか一項に記載の装置。
  5. 前記装置は、仮想マシン識別子を格納するための仮想マシン識別子格納域をさらに備え、前記装置は、前記現在の仮想マシンを示すために、前記仮想マシン識別子を更新することが可能である、請求項4に記載の装置。
  6. 前記メモリシステム相互作用回路は、保留中のアクセスをバッファ処理するための格納バッファを備え、前記格納バッファは、各保留中のアクセスを、その保留中のアクセスが発行された前記コンテキストを示す識別子でタグ付けすることが可能である、請求項1〜5のいずれか一項に記載の装置。
  7. 前記格納バッファは、前記現在のコンテキストと一致するその保留中のアクセスが発行された前記コンテキストを示す前記識別子でタグ付けされた保留中のアクセスに、前記アクセス順序制約の強制を制限することが可能である、請求項6に記載の装置。
  8. 前記メモリシステム相互作用回路は、整合性ユニットをさらに備え、前記格納バッファは、前記整合性ユニットを介して、前記メモリシステムと相互作用することが可能である、請求項7に記載の装置。
  9. 前記格納バッファは、複数の格納位置を有するコンテキスト追跡格納域を備え、前記格納バッファは、前記アクセス順序制約が前記現在のコンテキストに対して最後に強制されて以来、前記現在のコンテキストがアクセスを開始した場合、前記現在のコンテキストに対して、前記複数の格納位置のうちの1つにエントリを格納することが可能である、請求項6〜8のいずれか一項に記載の装置。
  10. 前記格納バッファは、前記選択されたエントリに対応する前記アクセス順序制約が強制されているときに、前記コンテキスト追跡格納域内の選択されたエントリを消去することが可能である、請求項9に記載の装置。
  11. 前記コンテキスト追跡格納域内の前記複数の格納位置のうちの全てが占有され、かつ、前記格納バッファが前記現在のコンテキストに対して占有されたエントリを有しない場合、前記格納バッファは、対応する犠牲になるエントリを有する、前記現在のコンテキスト以外の犠牲になるコンテキストによって開始された保留中のアクセスに対して、暗黙的なアクセス順序制約を強制し、前記選択されたコンテキストに対して前記犠牲になるエントリを消去することが可能であり、前記暗黙的なアクセス順序制約は、対応するバリア命令を実行することを前記処理回路に要求しない、請求項9または請求項10に記載の装置。
  12. 前記格納バッファは、前記アクセス順序制約がそのコンテキストに対して最後に強制されて以来開始された前記アクセスが、少なくとも1つの種類のアクセスを含むかを示す、前記コンテキスト追跡格納域内の各エントリに関連付けられる少なくとも1つの指標を格納することが可能である、請求項9〜11のいずれか一項に記載の装置。
  13. 前記装置は、前記現在のコンテキストに対する前記アクセス順序制約が最後に行われて以来、前記現在のコンテキストがアクセス命令の対応する種類を実行したとき、アクセス命令の前記対応する種類の前記現在のコンテキストによる実行によって開始された保留中のアクセスの選択された種類に、前記アクセス順序制約の強制を制限することが可能である、請求項1〜12のいずれか一項に記載の装置。
  14. 保留中のアクセスの前記選択された種類は、格納動作である、請求項13に記載の装置。
  15. 前記メモリシステム相互作用回路は、前記格納動作が、選択されたメモリ領域に対するものであるときに、前記アクセス順序制約の強制を制限することが可能である、請求項14に記載の装置。
  16. 保留中のアクセスの前記選択された種類は、整合性動作である、請求項13に記載の装置。
  17. 前記識別されたコンテキストは、前記処理回路にアクセス可能な格納域内で特定される、請求項1に記載の装置。
  18. データ処理方法であって、
    データ処理動作を行うためにデータ処理命令を実行するステップであって、前記データ処理動作は、メモリシステムにアクセスすることを含み、前記データ処理命令は、複数のコンテキストのうちの現在のコンテキストにおいて実行される、ステップと、
    前記複数のコンテキストのうちの前記現在のコンテキストにおけるバリア命令の実行に応答して、アクセス順序制約を強制するステップと、
    前記アクセス順序制約の強制を、識別されたコンテキストにおいてデータ処理命令を実行するときに開始されたアクセスに制限するステップと、
    を含む方法。
  19. データ処理のための装置であって、
    データ処理動作を行うためにデータ処理命令を実行する手段であって、前記データ処理動作は、メモリシステムにアクセスすることを含み、前記データ処理命令は、複数のコンテキストのうちの現在のコンテキストにおいて実行される、手段と、
    前記処理回路と前記メモリシステムとの間にインターフェースを提供するための手段と、
    を含み、
    インターフェースを提供するための前記手段は、データ処理命令を実行するための前記手段が前記複数のコンテキストのうちの前記現在のコンテキストにおいてバリア命令を実行することに応答して、アクセス順序制約を強制することが可能であり、
    データ処理命令を実行するための前記手段は、前記アクセス順序制約の強制を、識別されたコンテキストにおいて動作するときに前記処理回路によって開始されたアクセスに制限することが可能である装置。
JP2017523951A 2014-11-13 2015-10-09 コンテキスト依存のバリア命令の実行 Active JP6722182B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1420173.5 2014-11-13
GB1420173.5A GB2549239A (en) 2014-11-13 2014-11-13 Context sensitive barriers in data processing
PCT/GB2015/052959 WO2016075430A1 (en) 2014-11-13 2015-10-09 Context sensitive barrier instruction execution

Publications (2)

Publication Number Publication Date
JP2017539001A true JP2017539001A (ja) 2017-12-28
JP6722182B2 JP6722182B2 (ja) 2020-07-15

Family

ID=52248288

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017523951A Active JP6722182B2 (ja) 2014-11-13 2015-10-09 コンテキスト依存のバリア命令の実行

Country Status (10)

Country Link
US (1) US10503512B2 (ja)
EP (1) EP3218796B1 (ja)
JP (1) JP6722182B2 (ja)
KR (1) KR102421315B1 (ja)
CN (1) CN107077384B (ja)
GB (1) GB2549239A (ja)
IL (1) IL251309B (ja)
MY (1) MY183825A (ja)
TW (1) TWI693549B (ja)
WO (1) WO2016075430A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019517052A (ja) * 2016-03-31 2019-06-20 クアルコム,インコーポレイテッド メモリ管理ユニットおよび分散仮想メモリネットワークのためのハードウェア管理電力コラプスおよびクロックウェイクアップ

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628329B2 (en) * 2016-04-26 2020-04-21 Nxp Usa, Inc. Data processing system having a coherency interconnect
US11907377B2 (en) 2018-10-30 2024-02-20 Intel Corporation Supporting self-modifying graphics workloads in fully virtualized graphics architectures
KR20220169754A (ko) 2021-06-21 2022-12-28 최은지 입체퍼즐을 이용한 혼합현실 체감형 학습 교구

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69423206T2 (de) * 1994-04-28 2000-09-07 Hewlett Packard Co Rechnervorrichtung mit Mitteln zum Erzwingen der Ausführung von Befehlen in regelmässiger Folge
US6978360B2 (en) 2001-05-11 2005-12-20 International Business Machines Corporation Scalable processor
US7752423B2 (en) 2001-06-28 2010-07-06 Intel Corporation Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor
JP4234361B2 (ja) 2002-06-28 2009-03-04 富士通株式会社 記憶制御装置およびデータ格納方法
US7788468B1 (en) * 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
WO2008155806A1 (ja) 2007-06-20 2008-12-24 Fujitsu Limited バリア同期方法、装置、及びマルチコアプロセッサ
US8112604B2 (en) * 2007-12-17 2012-02-07 International Business Machines Corporation Tracking load store ordering hazards
GB2456813B (en) 2008-01-24 2012-03-07 Advanced Risc Mach Ltd Diagnostic context construction and comparison
EP2266026A4 (en) * 2008-03-11 2012-01-11 Univ Washington MULTITRAITEMENT DETERMINISTIC EFFECTIVE
JP2010020363A (ja) 2008-07-08 2010-01-28 Sony Corp 演算処理装置
CN101771600B (zh) * 2008-12-30 2012-12-12 北京天融信网络安全技术有限公司 多核下连接并发处理的方法
US8539204B2 (en) * 2009-09-25 2013-09-17 Nvidia Corporation Cooperative thread array reduction and scan operations
US8443148B2 (en) * 2009-12-26 2013-05-14 Intel Corporation System-wide quiescence and per-thread transaction fence in a distributed caching agent
US8941676B2 (en) * 2012-10-26 2015-01-27 Nvidia Corporation On-chip anti-alias resolve in a cache tiling architecture
US9448803B2 (en) * 2013-03-11 2016-09-20 Nvidia Corporation System and method for hardware scheduling of conditional barriers and impatient barriers
US9367472B2 (en) * 2013-06-10 2016-06-14 Oracle International Corporation Observation of data in persistent memory
US9703951B2 (en) 2014-09-30 2017-07-11 Amazon Technologies, Inc. Allocation of shared system resources

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019517052A (ja) * 2016-03-31 2019-06-20 クアルコム,インコーポレイテッド メモリ管理ユニットおよび分散仮想メモリネットワークのためのハードウェア管理電力コラプスおよびクロックウェイクアップ

Also Published As

Publication number Publication date
JP6722182B2 (ja) 2020-07-15
EP3218796A1 (en) 2017-09-20
TW201633116A (zh) 2016-09-16
EP3218796B1 (en) 2020-05-06
MY183825A (en) 2021-03-17
US10503512B2 (en) 2019-12-10
TWI693549B (zh) 2020-05-11
IL251309B (en) 2020-02-27
KR102421315B1 (ko) 2022-07-15
CN107077384A (zh) 2017-08-18
GB201420173D0 (en) 2014-12-31
WO2016075430A1 (en) 2016-05-19
KR20170083070A (ko) 2017-07-17
CN107077384B (zh) 2020-11-17
GB2549239A (en) 2017-10-18
IL251309A0 (en) 2017-05-29
US20160139922A1 (en) 2016-05-19

Similar Documents

Publication Publication Date Title
US7543131B2 (en) Controlling an I/O MMU
US7516247B2 (en) Avoiding silent data corruption and data leakage in a virtual environment with multiple guests
US8380907B2 (en) Method, system and computer program product for providing filtering of GUEST2 quiesce requests
US10255069B2 (en) Cleared memory indicator
US7480784B2 (en) Ensuring deadlock free operation for peer to peer traffic in an input/output memory management unit (IOMMU)
EP2889777A2 (en) Modifying memory permissions in a secure processing environment
KR20060099404A (ko) 가상 머신들 간에서 페이지들을 공유하기 위한 방법,시스템 및 컴퓨터 판독가능 매체
JP2013533545A (ja) 処理を逐次化するための診断命令を実行する方法、システム及びプログラム
US20160210465A1 (en) Handling access attributes for data accesses
US10635308B2 (en) Memory state indicator
US10430221B2 (en) Post-copy virtual machine migration with assigned devices
US8458438B2 (en) System, method and computer program product for providing quiesce filtering for shared memory
US10884946B2 (en) Memory state indicator check operations
JP6722182B2 (ja) コンテキスト依存のバリア命令の実行
US10802971B2 (en) Cache memory transaction shielding via prefetch suppression
US11210222B2 (en) Non-unified cache coherency maintenance for virtual machines
US11036647B2 (en) Suspending translation look-aside buffer purge execution in a multi-processor environment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181002

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190717

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20191017

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20191217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200115

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200619

R150 Certificate of patent or registration of utility model

Ref document number: 6722182

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250