JP6739513B2 - Implementation of load get/store release instructions using load/store operations with DMB operations - Google Patents
Implementation of load get/store release instructions using load/store operations with DMB operations Download PDFInfo
- Publication number
- JP6739513B2 JP6739513B2 JP2018502709A JP2018502709A JP6739513B2 JP 6739513 B2 JP6739513 B2 JP 6739513B2 JP 2018502709 A JP2018502709 A JP 2018502709A JP 2018502709 A JP2018502709 A JP 2018502709A JP 6739513 B2 JP6739513 B2 JP 6739513B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- load
- barrier operation
- data memory
- store
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Stored Programmes (AREA)
Description
本開示は、コンピューティング環境におけるメモリ操作の順序付けに関する。 This disclosure relates to ordering memory operations in a computing environment.
ロックのないコンピューティングにおいては、スレッドが共有メモリを操作し得る2つの方法があり、スレッドが、リソースのために互いに競合する可能性があるか、または情報をスレッドからスレッドへと協働して渡す可能性がある。獲得および解放セマンティクス(semantics)が、情報をスレッドからスレッドへと協働して渡すことを達成するために使用される。獲得および解放セマンティクスは、メモリ操作がエラーを防止するために正しく順序付けられることを保証するための構造的システムを提供する。ストア解放命令は、すべての先の命令が完了されることを保証し、ロード獲得命令は、すべての以降の命令がそのロード獲得命令が完了した後にのみ完了することになることを保証する。獲得および解放セマンティクスを使用してメモリ操作を適切に順序付けるためには、ストア解放およびロード獲得命令の複雑な組合せが必要である。 In lock-free computing, there are two ways in which threads can manipulate shared memory, and threads can compete with each other for resources, or information can collaborate from thread to thread. There is a possibility to pass. Acquisition and release semantics are used to accomplish the cooperative passing of information from thread to thread. Acquisition and release semantics provide a structural system to ensure that memory operations are properly ordered to prevent errors. The store release instruction ensures that all previous instructions are completed, and the load acquisition instruction ensures that all subsequent instructions will only be completed after the load acquisition instruction is completed. Proper ordering of memory operations using the get and free semantics requires a complex combination of store free and load get instructions.
本明細書において開示されるのは、縮小命令セットコンピューティング(RISC)において使用されるロード獲得およびストア解放セマンティクスを単純化するためのシステムおよび方法である。 Disclosed herein are systems and methods for simplifying load acquisition and store release semantics used in reduced instruction set computing (RISC).
実施態様は、本明細書において開示される命令に関連してメモリ操作を順序付けることを提供する。典型的な獲得付きロード(load with acquire)命令は、獲得付きロードの後のメモリ操作が獲得付きロードの後に順序付けられることのみを必要とする--その典型的な獲得付きロード命令は、(獲得付きロードと後続の命令との両方に関連して)獲得付きロードの前の命令にいかなる順序も課さない。実施形態において、獲得付きロードは、獲得付きロードの前のおよび獲得付きロードを含むすべてのアクセスが獲得付きロードの後の命令からのすべてのアクセスの前に順序付けられることを保証する、ロード操作に関連して使用されるデータメモリバリアを含む。 Implementations provide for ordering memory operations in connection with the instructions disclosed herein. A typical load with acquire instruction only requires that memory operations after a load with acquire be ordered after the load with acquire--the typical load with acquire instruction is Do not impose any order on the instruction before the load with acquisition (in relation to both the load with and subsequent instructions). In an embodiment, a load with acquire guarantees that all accesses before and including the load with acquire are ordered before all accesses from instructions after the load with acquire. Includes data memory barriers used in connection.
同様に、通常の解放付きストア(store with release)命令は、解放付きストアからのアクセスとすべての先の命令のアクセスとの間に順序付けを課す(しかし、後続の命令には課さない)。しかし、実施形態においては、解放付きストアの初めのデータメモリバリアが、先のアクセスと解放付きストアに関連するアクセスとの間に強い順序付けを与える。 Similarly, a normal store with release instruction imposes an ordering between accesses from the store with release and all previous instructions (but not subsequent instructions). However, in an embodiment, the initial data memory barrier of the store with release provides a strong ordering between the previous access and the access associated with the store with release.
一実施態様においては、システムは、操作を実行するためのコンピュータ実行可能命令を実行するプロセッサを含む。命令は、メモリ操作の順序付けを実行する獲得付きロード命令を含む可能性があり、獲得付きロード命令は、データメモリバリア操作が後に続くロード操作を含む。 In one implementation, a system includes a processor that executes computer-executable instructions for performing operations. The instruction may include a load instruction with acquisition that performs an ordering of memory operations, and the load instruction with acquisition includes a load operation followed by a data memory barrier operation.
別の実施態様においては、方法は、プロセッサにおいて命令を実行するステップを含む。方法は、メモリ操作の順序付けを実行するための獲得付きロード命令を含む可能性があり、獲得付きロード命令を実行するステップは、データメモリバリア操作が後に続くロード操作を実行することを含む。 In another implementation, a method includes executing instructions in a processor. The method may include a load instruction with acquisition for performing an ordering of memory operations, and the step of executing the load instruction with acquisition includes performing a load operation followed by a data memory barrier operation.
一実施態様においては、システムは、操作を実行するためのコンピュータ実行可能命令を実行するプロセッサを含む。命令は、メモリ操作の順序付けを実行する解放付きストア命令を含む可能性があり、解放付きストア命令は、第2のデータメモリバリア操作が後に続くストア操作が後に続く第1のデータメモリバリア操作を含む。 In one implementation, a system includes a processor that executes computer-executable instructions for performing operations. The instruction may include a store with release instruction that performs an ordering of memory operations, the store with release instruction including a first data memory barrier operation followed by a second data memory barrier operation. Including.
一実施態様においては、方法は、プロセッサにおいて命令を実行するステップを含む。方法は、メモリ操作の順序付けを実行するために解放付きストア命令を含む可能性があり、解放付きストア命令を実行するステップは、第2のデータメモリバリア操作を実行するステップが後に続く、ストア操作を実行するステップが後に続く、第1のデータメモリバリア操作を実行するステップを含む。 In one implementation, a method includes executing instructions in a processor. The method may include a store with release instruction to perform ordering of memory operations, the step of executing the store with release instruction followed by the step of performing a second data memory barrier operation. Including performing a first data memory barrier operation, followed by performing the step.
様々な実施形態が、縮小命令セットコンピューティング(RISC)において使用されるロード獲得およびストア解放セマンティクスを単純化するシステムを提供する。ロックのないコンピューティングにおいては、スレッドが共有メモリを操作し得る2つの方法があり、スレッドが、リソースのために互いに競合する可能性があるか、または情報をスレッドからスレッドへと協働して渡す可能性がある。しかしながら、これらのセマンティクスは、複雑であり、特殊なセマンティクスを単純なデータメモリバリアによって置き換えることは、メモリの順序付けのプロセスを単純化する可能性がある。セマンティクスをマイクロオペレーションか、または複雑な機械命令を実装するために使用される低レベルの命令に変換することは、複雑な新しいメモリ操作を実装する必要を回避し得る。ロードおよびストア命令に関連してデータメモリバリアを使用することは、単純な総当たりの(brute force)順序付け操作を使用して十分な順序付けを提供することができる。 Various embodiments provide a system that simplifies load acquisition and store release semantics used in reduced instruction set computing (RISC). In lock-free computing, there are two ways in which threads can manipulate shared memory, and threads can compete with each other for resources, or information can collaborate from thread to thread. There is a possibility to pass. However, these semantics are complex and replacing the special semantics with a simple data memory barrier may simplify the process of memory ordering. Translating the semantics into micro-operations or low-level instructions used to implement complex machine instructions may avoid the need to implement complex new memory operations. Using a data memory barrier in connection with load and store instructions can provide sufficient ordering using a simple brute force ordering operation.
本開示において使用されるとき、用語「命令」、「操作」、および「アクセス」は、別々のプロセスを指し、交換可能でない。命令が、1つまたは複数の操作からなる一方、操作は、ゼロ以上のメモリアクセスまたはバリアを含む可能性がある。例として、獲得付きロード命令は、2つの操作(ロード操作およびバリア操作)を生成する。このバリアは、すべてのメモリアクセスを2つのグループに分ける。第1のグループは、獲得付きロードの前のすべての命令からのアクセスと、獲得付きロードに属するロード操作からのアクセスとを含む。第2のグループは、獲得付きロード命令の後のすべての命令からのアクセスを含む。 As used in this disclosure, the terms “instruction”, “operation”, and “access” refer to separate processes and are not interchangeable. While an instruction consists of one or more operations, the operations may include zero or more memory accesses or barriers. As an example, the load instruction with acquisition generates two operations, a load operation and a barrier operation. This barrier divides all memory accesses into two groups. The first group includes accesses from all instructions before the load with acquire and accesses from load operations that belong to the load with acquire. The second group includes accesses from all instructions after the load with acquisition instruction.
図1は、RISCプロセッサ、処理環境またはアーキテクチャ内でデータメモリバリアを使用してメモリ操作をフィルタリングするシステム100を示す。RISCプロセッサは、ARMプロセッサおよび特にこの実施形態においてはARMv8プロセッサの変化型を含み得る。示されるように、システム100は、システム100によるコンピュータ実行可能命令および/またはコンポーネントの操作および/または実行を容易にするためにプロセッサ104に通信可能なように接続され得るおよび/または動作可能なように接続され得るロード/ストアコンポーネント102と、たとえば、プロセッサ104を利用してシステム100によって実行するためにデータおよび/またはコンピュータ実行可能命令および/またはコンポーネントを記憶するためのメモリ106と、たとえば、プロセッサ104を使用してシステム100によって実行され得るデータおよび/またはコンピュータ実行可能命令および/またはコンポーネントのためのより長期的なストレージを提供するためのストレージコンポーネント108とを含む可能性がある。さらに、示されるように、システム100は、プロセッサ104による1つまたは複数のコンピュータ実行可能命令および/またはコンポーネントの実行によって第1の状態から第2の状態に変形され得る入力110を受け取る可能性があり、第1の状態は、第2の状態と区別され得るおよび/または識別可能であるおよび/または異なる。また、システム100は、システム100による処理を通じて異なる状態または物(thing)に変形されたもの(article)を含む可能性がある出力112を生成し得る。
FIG. 1 illustrates a
図2は、本明細書において説明される様々な態様によるメモリ操作をフィルタリングするシステムの実施形態を示すブロック図を示す。システム200は、先の命令202および後続の命令206に対して順序付けの制約を施行するデータメモリバリア204を含む。データメモリバリア204は、CPUまたはコンパイラにバリア操作の前後に発行されたメモリ操作に対して順序付けの制約を施行させる一種のバリア操作である。通常、これは、特定の操作がバリアの前に実行されることを保証され、その他の操作がバリアの後に実行されることを保証されることを意味する。データメモリバリア204は、後続の命令206が実行される前に先の命令202が実行され、完了されることを保証する。先の命令202および後続の命令206は、それぞれ、基本的なロードおよびストア命令にこれらの命令のより複雑な変化型(たとえば、獲得付きロード排他(load-exclusive with acquire)、解放付きストア排他(store-exclusive with release)など)を加えたものの様々な組合せを含み得る。
FIG. 2 illustrates a block diagram illustrating an embodiment of a system for filtering memory operations according to various aspects described herein.
実施形態において、先の命令202および後続の命令206は、メモリからデータの第1のセットをロードし、データの第2のセットをメモリに記憶するように構成されるロードまたはストア命令を含む可能性がある。データメモリバリア204は、データをロードすることおよび記憶することに関連するメモリ操作を順序付けるように構成される可能性があり、達成される順序付けの種類は、1つまたは複数のロード命令およびストア命令に対するデータメモリのプログラム順序(program order)内の位置に基づく。
In an embodiment, the
図3は、本明細書において説明される様々な態様による獲得付きロード命令によってメモリ操作をフィルタリングするシステムの実施形態を示すブロック図である。システム300は、プログラム順序でデータメモリバリア304に先立つロード操作302を順序付けるデータメモリバリア304を含み得る。データメモリバリア304は、後続の命令が実行される前にロード操作302が実行され、完了されることを保証する。システム300は、ロード操作およびデータメモリバリア操作を含む単純な獲得付きロード命令を示す。その他の実施形態においては、その他のタイプのロード操作が、獲得付きロード排他およびその他の変化型などの異なるロード命令をもたらす可能性がある。
FIG. 3 is a block diagram illustrating an embodiment of a system for filtering memory operations with load instructions with acquisition in accordance with various aspects set forth herein. The
図4は、本明細書において説明される様々な態様による解放付きストア命令を実行するシステムの実施形態を示す。システム400は、プログラム順序でストア操作404の両側にデータメモリバリア402および406を含み得る。データメモリバリア402は、ストア操作404が開始される前にすべての先の命令/操作が終わっていることを保証し、一方、データメモリバリア406は、いずれかの後続のメモリ命令/操作が起こる前にストア操作404が完了されることを保証する。加えて、第1のデータメモリバリア402および第2のデータメモリバリア406は、解放付きストアおよび獲得付きロード命令がプログラム順序で観測されることを保証するための順序をやはり生じる。
FIG. 4 illustrates an embodiment of a system for performing store instructions with release instructions according to various aspects described herein.
図5〜図7の流れ図に関連して説明される対象に従って実装され得る方法は、一連のブロックとして示され、説明され、一部のブロックが本明細書において示され、説明されるものとは異なる順序でおよび/またはその他のブロックと同時に行われる可能性があるので、特許請求の対象はブロックの順序によって限定されないことを理解されたい。さらに、すべての示されるブロックが、以降で説明される方法を実装するために必要とされるわけではない可能性がある。 Methods that may be implemented in accordance with the subject matter described in connection with the flow charts of FIGS. 5-7 are shown and described as a series of blocks, and some blocks are not shown or described herein. It is to be understood that the claimed subject matter is not limited by the order of the blocks, as they may occur in different orders and/or concurrently with other blocks. Moreover, not all illustrated blocks may be required to implement the methods described below.
図5は、獲得付きロード命令を実行するための方法の実施形態の流れ図を示す。方法500は、ロード操作が実行される502から始まる可能性があり、ロード操作は、メモリのデータにアクセスするためのアドレスを指定する。
FIG. 5 shows a flow chart of an embodiment of a method for executing a load instruction with acquisition. The
504において、データメモリバリアが実行される可能性がある。データメモリバリアは、CPUまたはコンパイラにバリア操作の前後に発行されたメモリ操作に対して順序付けの制約を施行させる一種のバリア操作である。通常、これは、特定の操作がバリアの前に実行されることを保証され、その他の操作がバリアの後に実行されることを保証されることを意味する。データメモリバリアは、後続の命令が実行される前に先の命令が実行され、完了されることを保証する。この場合、データメモリバリア操作は、後続の命令が実行される前に先のロード操作が実行され、完了されることを保証する。 At 504, a data memory barrier may be implemented. A data memory barrier is a type of barrier operation that causes the CPU or compiler to enforce ordering constraints on memory operations issued before and after the barrier operation. Typically, this means that certain operations are guaranteed to be performed before the barrier and other operations are guaranteed to be performed after the barrier. The data memory barrier ensures that the previous instruction is executed and completed before the subsequent instruction is executed. In this case, the data memory barrier operation ensures that the previous load operation has been executed and completed before the subsequent instruction is executed.
図6は、解放付きストア命令を実行するための方法の実施形態の流れ図を示す。方法600は、第1のデータメモリバリア操作が実行される602から始まる可能性がある。データメモリバリアは、CPUまたはコンパイラにバリア操作の前後に発行されたメモリ操作に対して順序付けの制約を施行させる一種のバリア命令である。
FIG. 6 shows a flow diagram of an embodiment of a method for executing a store with release instruction.
604において、ストア操作が実行される。ストア操作は、メモリにデータを書き込むためのアドレスを指定する。606において、第2のデータメモリバリア操作が実行される。2つのデータメモリバリア操作の間にストア操作を有することは、ストア操作が実行される前にすべてのその他のメモリ操作が実行済みであり、完了され、それから、ストア操作が完了されるまでその他のメモリ操作が許されないことを保証する。このようにして、解放付きストア命令は、単純なストアおよびデータメモリバリア操作を使用してメモリ操作の順序付けを実行した。 At 604, a store operation is performed. The store operation specifies an address for writing data to the memory. At 606, a second data memory barrier operation is performed. Having a store operation between two data memory barrier operations means that all other memory operations have been performed and completed before the store operation is performed, and then other operations until the store operation is completed. Guarantees that memory operations are not allowed. In this way, the store with release instruction performed ordering of memory operations using simple store and data memory barrier operations.
図7は、データメモリバリア操作を使用してメモリ操作をフィルタリングするための方法の実施形態の流れ図である。方法700は、メモリ操作の第1のセットがバリアの前に実行される702から始まる可能性がある。バリアは、すべての命令がステップ704の前に完了されることを保証し、ステップ704において、メモリ操作の第2のセットが、データメモリバリアの後に実行される。
FIG. 7 is a flow diagram of an embodiment of a method for filtering memory operations using data memory barrier operations. The
本明細書において説明される技術は、メモリ操作の順序付けまたはフィルタリングを実行することが望ましい任意の縮小命令セットコンピューティング環境に適用され得る。すべての種類のハンドヘルド、ポータブル、およびその他のコンピューティングデバイスおよびコンピューティングオブジェクトが、様々な実施形態に関連する、つまり、そのメモリ操作の順序付けが実行され得る任意の状況での使用を想定されることを理解されたい。下で図8において説明される下の多目的リモートコンピュータは、例であり、開示される対象は、ネットワーク/バス相互運用性およびインタラクションを有する任意のクライアントを用いて実装され得る。したがって、開示される対象は、ネットワーク化されたホストされるサービスの環境、たとえば、家電製品内に置かれるオブジェクト(object)などのクライアントデバイスが単にネットワーク/バスとのインターフェースとして働くネットワーク化された環境内のチップまたはシステムに実装され得る。 The techniques described herein may be applied to any reduced instruction set computing environment in which it is desirable to perform ordering or filtering of memory operations. All types of handheld, portable, and other computing devices and computing objects are envisioned for use in any context that is relevant to various embodiments, that is, where the ordering of their memory operations may be performed. I want you to understand. The multipurpose remote computer below, described in FIG. 8 below, is an example and the disclosed subject matter may be implemented with any client having network/bus interoperability and interaction. Accordingly, the disclosed subject matter is an environment for networked hosted services, eg, a networked environment in which a client device, such as an object located within a home appliance, simply interfaces with the network/bus. Can be implemented on a chip or system within.
図8は、開示される対象の態様が実装され得る好適なコンピューティングシステム環境800の例を示し、コンピューティングシステム環境800は、デバイスのための好適なコンピューティング環境の一例に過ぎず、開示される対象の使用または機能の範囲に関していかなる限定も示唆するように意図されていない。
FIG. 8 illustrates an example of a suitable
図8は、コンピュータ810の形態の多目的コンピューティングデバイスを含む、開示される対象を実装するための例示的なデバイスである。コンピュータ810の構成要素は、処理ユニット820、システムメモリ830、およびシステムメモリを含む様々なシステム構成要素を処理ユニット820に結合するシステムバス821を含み得る。システムバス821は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む数種のバス構造のいずれかである可能性がある。通常、コンピュータ810は、様々なコンピュータ可読媒体を含む。
FIG. 8 is an exemplary device for implementing the disclosed subject matter, including a general purpose computing device in the form of a
システムメモリ830は、読み出し専用メモリ(ROM)および/またはランダムアクセスメモリ(RAM)などの揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含み得る。起動中などにコンピュータ810内の要素間で情報を転送することに役立つ基礎的なルーチンを含む基本入出力システム(BIOS)が、メモリ830に記憶され得る。コンピュータ810は、その他の取り外し可能な/取り外し可能でない揮発性/不揮発性コンピュータ記憶媒体を含む可能性もある。
The
ユーザは、キーボード、および通常マウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイスなどの入力デバイスを通じてコンピュータ810にコマンドおよび情報を入力することができる。
A user can enter commands and information into
コンピュータ810は、リモートコンピュータ870などの1つまたは複数のその他のリモートコンピュータへの論理接続を使用するネットワーク化されたまたは分散型の環境内で動作することができ、そしてまた、それらのその他のリモートコンピュータは、デバイス810とは異なる媒体の能力を有する可能性がある。
以上に加えて、開示される対象は、開示される対象を実装するように電子デバイスを制御するためのハードウェア、ファームウェア、ソフトウェア、またはこれらの任意の好適な組合せを製造するために典型的な製造、プログラミング、または工学技術を使用して、方法、装置、または製品として実装される可能性がある。コンピュータ可読媒体は、ハードウェア媒体またはソフトウェア媒体を含む可能性があり、媒体は、非一時的媒体または転送媒体を含む可能性がある。 In addition to the above, the disclosed subject matter is typical for manufacturing hardware, firmware, software, or any suitable combination thereof for controlling an electronic device to implement the disclosed subject matter. It may be implemented as a method, apparatus, or product using manufacturing, programming, or engineering techniques. Computer-readable media can include hardware or software media, which can include non-transitory media or transfer media.
100 システム
102 ロード/ストアコンポーネント
104 プロセッサ
106 メモリ
108 ストレージコンポーネント
110 入力
112 出力
200 システム
202 先の命令
204 データメモリバリア
206 後続の命令
300 システム
302 ロード操作
304 データメモリバリア
400 システム
402 データメモリバリア
404 ストア操作
406 データメモリバリア
800 コンピューティングシステム環境
810 コンピュータ
820 処理ユニット
821 システムバス
830 システムメモリ
840 入力
850 出力、例えば、ディスプレイ
860 ネットワークインターフェース
870 リモートコンピュータ
910,912 サーバオブジェクト
920,922,928 コンピューティングデバイス
924,926 オブジェクト
940 (複数の)データストア
942 通信ネットワーク/バス
100 system
102 load/store components
104 processors
106 memory
108 Storage components
110 inputs
112 outputs
200 system
202 orders ahead
204 Data memory barrier
206 Subsequent instructions
300 system
302 Load operation
304 data memory barrier
400 system
402 Data memory barrier
404 store operation
406 Data memory barrier
800 computing system environment
810 computer
820 processing unit
821 system bus
830 system memory
840 inputs
850 output, eg display
860 network interface
870 remote computer
910, 912 Server object
920, 922, 928 Computing device
924,926 objects
940 Datastore(s)
942 Communication network/bus
Claims (10)
前記命令が、メモリ操作の順序付けを実行する獲得付きロード命令を含み、
前記獲得付きロード命令が、データメモリバリア操作が後に続くロード操作を含み、
前記データメモリバリア操作が、メモリ操作の順序付けのための一組のロード獲得セマンティクスに取って代わり、前記データメモリバリア操作は、前記データメモリバリア操作の前および後に起こるメモリ操作を順序付ける、プロセッサ。 A processor executing computer-executable instructions for performing an operation, comprising:
The instructions include load instructions with acquisition that perform ordering of memory operations,
The load instruction with acquisition includes a load operation followed by a data memory barrier operation,
Said data memory barrier operation, instead taking a set of load acquisition semantics for ordering memory operations, the data memory barrier operation orders the memory operations that occur before and after the data memory barrier operation, the processor ..
前記獲得付きロード命令が、獲得付きロード命令および前記獲得付きロード命令の変化型のうちの少なくとも1つを含む、請求項1に記載のプロセッサ。 The load operation specifies an address for accessing the first data in memory,
The processor of claim 1, wherein the load instruction with acquisition includes at least one of a load instruction with acquisition and a variation of the load instruction with acquisition .
メモリ操作の順序付けを実行するために獲得付きロード命令を実行するステップを含み、
前記獲得付きロード命令を実行するステップが、データメモリバリア操作が後に続くロード操作を実行するステップを含み、
前記データメモリバリア操作の実行が、メモリ操作の順序付けのための一組のロード獲得セマンティクスに取って代わり、前記データメモリバリア操作は、前記データメモリバリア操作の前および後に起こるメモリ操作を順序付ける、方法。 A method for executing instructions in a processor, the method comprising:
Including executing a load instruction with acquisition to perform ordering of memory operations,
Executing the load instruction with acquisition comprises executing a load operation followed by a data memory barrier operation,
Execution of the data memory barrier operation, instead taking a set of load acquisition semantics for ordering memory operations, the data memory barrier operation orders the memory operations that occur before and after the data memory barrier operation , Method.
前記ロード操作が、メモリの第1のデータにアクセスするためのアドレスを指定する、請求項4に記載の方法。 Further comprising executing a load instruction with acquisition and a variation of the load instruction with acquisition
The method of claim 4, wherein the load operation specifies an address for accessing the first data in memory.
前記命令が、メモリ操作の順序付けを実行する解放付きストア命令を含み、
前記解放付きストア命令が、第2のデータメモリバリア操作が後に続くストア操作が後に続く第1のデータメモリバリア操作を含み、
前記命令が、解放付きストア命令および前記解放付きストア命令の変化型をさらに含み、
前記データメモリバリア操作は、前記データメモリバリア操作の前および後に起こるメモリ操作を順序付ける、プロセッサ。 A processor executing computer-executable instructions for performing an operation, comprising:
The instructions include store with release instructions that perform ordering of memory operations,
The store with release instruction comprises a first data memory barrier operation followed by a store operation followed by a second data memory barrier operation,
Wherein the instructions further viewing including the release with a store instruction and the change of the release with a store instruction,
A processor wherein the data memory barrier operation orders memory operations that occur before and after the data memory barrier operation .
前記ストア操作が、メモリに第1のデータを書き込むためのアドレスを指定する、請求項7に記載のプロセッサ。 The first data memory barrier operation and the second data memory barrier operation include a first set of memory operations performed before the barrier operation and a second set of memory operations performed after the barrier operation. Ordering memory operations, including
8. The processor of claim 7, wherein the store operation specifies an address for writing first data in memory.
メモリ操作の順序付けを実行するために解放付きストア命令を実行するステップを含み、
解放付きストア命令を実行するステップが、第2のデータメモリバリア操作を実行するステップが後に続く、ストア操作を実行するステップが後に続く、第1のデータメモリバリア操作を実行するステップを含み、
前記方法が、解放付きストア命令および前記解放付きストア命令の変化型を実行するステップをさらに含み、
前記データメモリバリア操作は、前記データメモリバリア操作の前および後に起こるメモリ操作を順序付ける、方法。 A method for executing instructions in a processor, the method comprising:
Executing a store instruction with release to perform ordering of memory operations,
Performing a store with release instruction comprises performing a first data memory barrier operation, followed by performing a second data memory barrier operation, followed by performing a store operation,
Said method further seen including the step of performing the release with store instructions and change of the release with a store instruction,
The method, wherein the data memory barrier operation orders memory operations that occur before and after the data memory barrier operation .
獲得付きロード命令を実行する前に前記第2のデータメモリバリア操作を実行するステップが、前記命令がプログラム順序で観測されることを保証する、請求項9に記載の方法。 Performing the first data memory barrier operation and performing the second data memory barrier operation are performed after the first set of memory accesses and the barrier operation that are performed before the barrier operation. Order memory operations, including a second set of memory accesses,
10. The method of claim 9, wherein the step of performing the second data memory barrier operation before executing a load instruction with acquisition ensures that the instruction is observed in program order.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2015/041322 WO2017014752A1 (en) | 2015-07-21 | 2015-07-21 | Implementation of load acquire/store release instructions using load/store operation with dmb operation |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| JP2018523235A JP2018523235A (en) | 2018-08-16 |
| JP2018523235A5 JP2018523235A5 (en) | 2018-11-15 |
| JP6739513B2 true JP6739513B2 (en) | 2020-08-12 |
Family
ID=57835180
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2018502709A Active JP6739513B2 (en) | 2015-07-21 | 2015-07-21 | Implementation of load get/store release instructions using load/store operations with DMB operations |
Country Status (4)
| Country | Link |
|---|---|
| EP (1) | EP3326059A4 (en) |
| JP (1) | JP6739513B2 (en) |
| CN (2) | CN110795150A (en) |
| WO (1) | WO2017014752A1 (en) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10606590B2 (en) | 2017-10-06 | 2020-03-31 | International Business Machines Corporation | Effective address based load store unit in out of order processors |
| US10417002B2 (en) | 2017-10-06 | 2019-09-17 | International Business Machines Corporation | Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses |
| US10572256B2 (en) | 2017-10-06 | 2020-02-25 | International Business Machines Corporation | Handling effective address synonyms in a load-store unit that operates without address translation |
| US11175924B2 (en) | 2017-10-06 | 2021-11-16 | International Business Machines Corporation | Load-store unit with partitioned reorder queues with single cam port |
| US10606591B2 (en) | 2017-10-06 | 2020-03-31 | International Business Machines Corporation | Handling effective address synonyms in a load-store unit that operates without address translation |
| US10394558B2 (en) | 2017-10-06 | 2019-08-27 | International Business Machines Corporation | Executing load-store operations without address translation hardware per load-store unit port |
Family Cites Families (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH07302200A (en) * | 1994-04-28 | 1995-11-14 | Hewlett Packard Co <Hp> | Loading instruction method of computer provided with instruction forcing sequencing loading operation and sequencing storage |
| JP2000181891A (en) * | 1998-12-18 | 2000-06-30 | Hitachi Ltd | Shared memory access order guarantee method |
| US6678810B1 (en) * | 1999-12-30 | 2004-01-13 | Intel Corporation | MFENCE and LFENCE micro-architectural implementation method and system |
| US7552317B2 (en) * | 2004-05-04 | 2009-06-23 | Sun Microsystems, Inc. | Methods and systems for grouping instructions using memory barrier instructions |
| WO2005121948A1 (en) * | 2004-06-02 | 2005-12-22 | Sun Microsystems, Inc. | Method and apparatus for enforcing membar instruction semantics in an execute-ahead processor |
| US7725618B2 (en) * | 2004-07-29 | 2010-05-25 | International Business Machines Corporation | Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment |
| US8060482B2 (en) * | 2006-12-28 | 2011-11-15 | Intel Corporation | Efficient and consistent software transactional memory |
| CN101828173A (en) * | 2007-10-18 | 2010-09-08 | Nxp股份有限公司 | Data processing system with a plurality of processors, cache circuits and a shared memory |
| GB2461716A (en) * | 2008-07-09 | 2010-01-13 | Advanced Risc Mach Ltd | Monitoring circuitry for monitoring accesses to addressable locations in data processing apparatus that occur between the start and end events. |
| US8997103B2 (en) * | 2009-09-25 | 2015-03-31 | Nvidia Corporation | N-way memory barrier operation coalescing |
| US8935513B2 (en) * | 2012-02-08 | 2015-01-13 | International Business Machines Corporation | Processor performance improvement for instruction sequences that include barrier instructions |
| US9218289B2 (en) * | 2012-08-06 | 2015-12-22 | Qualcomm Incorporated | Multi-core compute cache coherency with a release consistency memory ordering model |
| US9582276B2 (en) * | 2012-09-27 | 2017-02-28 | Apple Inc. | Processor and method for implementing barrier operation using speculative and architectural color values |
| US9442755B2 (en) * | 2013-03-15 | 2016-09-13 | Nvidia Corporation | System and method for hardware scheduling of indexed barriers |
| US9477599B2 (en) * | 2013-08-07 | 2016-10-25 | Advanced Micro Devices, Inc. | Write combining cache microarchitecture for synchronization events |
| US9396112B2 (en) * | 2013-08-26 | 2016-07-19 | Advanced Micro Devices, Inc. | Hierarchical write-combining cache coherence |
-
2015
- 2015-07-21 WO PCT/US2015/041322 patent/WO2017014752A1/en not_active Ceased
- 2015-07-21 JP JP2018502709A patent/JP6739513B2/en active Active
- 2015-07-21 CN CN201910999320.5A patent/CN110795150A/en active Pending
- 2015-07-21 CN CN201580082189.6A patent/CN108139903B/en not_active Expired - Fee Related
- 2015-07-21 EP EP15899072.1A patent/EP3326059A4/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| CN108139903A (en) | 2018-06-08 |
| CN110795150A (en) | 2020-02-14 |
| WO2017014752A1 (en) | 2017-01-26 |
| JP2018523235A (en) | 2018-08-16 |
| CN108139903B (en) | 2019-11-15 |
| EP3326059A1 (en) | 2018-05-30 |
| EP3326059A4 (en) | 2019-04-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP6739513B2 (en) | Implementation of load get/store release instructions using load/store operations with DMB operations | |
| JP6799652B2 (en) | Methods and devices for processing information | |
| JP6293888B2 (en) | Techniques for detecting race conditions | |
| JP7030514B2 (en) | Efficient synchronization barrier technology with work stealing support | |
| JP2015532749A5 (en) | ||
| EP2672388B1 (en) | Multi-processor parallel simulation method, system and scheduler | |
| JP2019502201A5 (en) | ||
| US10592235B2 (en) | Generating an idempotent workflow | |
| EP3113020A1 (en) | Data processing device and method for processing serial tasks | |
| US10540150B2 (en) | Composable context menus | |
| CN107479981B (en) | Processing method and device for realizing synchronous call based on asynchronous call | |
| CN104537003B (en) | A kind of general high-performance data wiring method of Hbase databases | |
| JP2018523235A5 (en) | ||
| CN110781016A (en) | Data processing method, device, equipment and medium | |
| US9672080B2 (en) | Systems and methods for enabling dynamic calls via filtering, grouping, and substitution mechanisms | |
| US9851957B2 (en) | Improving application code execution performance by consolidating accesses to shared resources | |
| US20150186115A1 (en) | Generating software code | |
| US20140013312A1 (en) | Source level debugging apparatus and method for a reconfigurable processor | |
| JP2017045144A5 (en) | ||
| CN102508715A (en) | Object calling method and device based on multiple threads | |
| CN103714511B (en) | GPU-based branch processing method and device | |
| CN107645541B (en) | Data storage method and device and server | |
| CN105159766B (en) | Data synchronization access method and synchronization access device | |
| Kim | Scaling theory and machine abstractions | |
| CN201348778Y (en) | Information processing system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180316 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180703 |
|
| A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20180725 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181004 |
|
| A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20181004 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20181211 |
|
| A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20190124 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190204 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20190507 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190805 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20191105 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20200205 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200310 |
|
| 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: 20200622 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200721 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6739513 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |