Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP6739513B2 - Implementation of load get/store release instructions using load/store operations with DMB operations - Google Patents
[go: Go Back, main page]

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 PDF

Info

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
Application number
JP2018502709A
Other languages
Japanese (ja)
Other versions
JP2018523235A (en
JP2018523235A5 (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 JP2018523235A publication Critical patent/JP2018523235A/en
Publication of JP2018523235A5 publication Critical patent/JP2018523235A5/ja
Application granted granted Critical
Publication of JP6739513B2 publication Critical patent/JP6739513B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

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.

本明細書において説明される様々な態様によるメモリ操作をフィルタリングするシステムの実施形態を示すブロック図である。FIG. 7 is a block diagram illustrating an embodiment of a system for filtering memory operations in accordance with various aspects set forth herein. 本明細書において説明される様々な態様によるメモリ操作をフィルタリングするシステムの実施形態を示すブロック図である。FIG. 7 is a block diagram illustrating an embodiment of a system for filtering memory operations in accordance with various aspects set forth herein. 本明細書において説明される様々な態様によるメモリ操作をフィルタリングするシステムの実施形態を示すブロック図である。FIG. 7 is a block diagram illustrating an embodiment of a system for filtering memory operations in accordance with various aspects set forth herein. 本明細書において説明される様々な態様によるメモリ操作をフィルタリングするシステムの実施形態を示すブロック図である。FIG. 7 is a block diagram illustrating an embodiment of a system for filtering memory operations in accordance with various aspects set forth herein. 獲得付きロード命令を実行するための方法の実施形態の流れ図である。6 is a flow diagram of an embodiment of a method for executing a load instruction with acquisition. 解放付きストア命令を実行するための方法の実施形態の流れ図である。6 is a flow diagram of an embodiment of a method for executing a store with release instruction. データメモリバリアを使用してメモリ操作をフィルタリングするための方法の実施形態の流れ図である。6 is a flow diagram of an embodiment of a method for filtering memory operations using a data memory barrier. 本明細書において説明される1つまたは複数の態様に関連して実装され得る電子コンピューティング環境のブロック図である。1 is a block diagram of an electronic computing environment that may be implemented in connection with one or more aspects described herein. 本明細書において説明される様々な態様に関連して動作し得る可能性があるデータ通信ネットワークのブロック図である。FIG. 7 is a block diagram of a data communication network that may potentially operate in connection with various aspects set forth herein.

様々な実施形態が、縮小命令セットコンピューティング(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 system 100 for filtering memory operations using a data memory barrier within a RISC processor, processing environment or architecture. The RISC processor may include a variant of the ARM processor and, in particular, the ARMv8 processor in this embodiment. As shown, system 100 may be communicatively coupled to and/or operable with processor 104 to facilitate the operation and/or execution of computer-executable instructions and/or components by system 100. A load/store component 102 that may be connected to the processor, a memory 106 for storing data and/or computer-executable instructions and/or components for execution by the system 100 utilizing the processor 104, for example, a processor Storage component 108 for providing longer-term storage for data and/or computer-executable instructions and/or components that may be executed by system 100 using 104. Further, as shown, the system 100 may receive an input 110 that may be transformed from a first state to a second state by execution of one or more computer-executable instructions and/or components by the processor 104. Yes, the first condition may be distinguishable and/or distinguishable and/or different from the second condition. The system 100 may also generate an output 112 that may include different states or articles that have been transformed through processing by the system 100.

図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. System 200 includes a data memory barrier 204 that enforces ordering constraints on prior instructions 202 and subsequent instructions 206. Data memory barrier 204 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 204 ensures that the previous instruction 202 is executed and completed before the subsequent instruction 206 is executed. The preceding instruction 202 and the following instruction 206 respectively add to the basic load and store instructions a more complex variation of these instructions (e.g., load-exclusive with acquire, store exclusive with release ( store-exclusive with release) and the like).

実施形態において、先の命令202および後続の命令206は、メモリからデータの第1のセットをロードし、データの第2のセットをメモリに記憶するように構成されるロードまたはストア命令を含む可能性がある。データメモリバリア204は、データをロードすることおよび記憶することに関連するメモリ操作を順序付けるように構成される可能性があり、達成される順序付けの種類は、1つまたは複数のロード命令およびストア命令に対するデータメモリのプログラム順序(program order)内の位置に基づく。 In an embodiment, the previous instruction 202 and the subsequent instruction 206 may include load or store instructions configured to load the first set of data from memory and store the second set of data in memory. There is a nature. The data memory barrier 204 may be configured to order the memory operations associated with loading and storing data, the type of ordering achieved being one or more load instructions and stores. Based on the position in the program order of the data memory for the instruction.

図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 system 300 can include a data memory barrier 304 that orders the load operations 302 prior to the data memory barrier 304 in program order. The data memory barrier 304 ensures that the load operation 302 is executed and completed before subsequent instructions are executed. System 300 illustrates a simple load instruction with acquisition that includes load operations and data memory barrier operations. In other embodiments, other types of load operations may result in different load instructions such as load exclusive with acquisition and other variants.

図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. System 400 may include data memory barriers 402 and 406 on either side of store operation 404 in program order. The data memory barrier 402 ensures that all previous instructions/operations are done before the store operation 404 is initiated, while the data memory barrier 406 causes any subsequent memory instructions/operations to occur. Ensure that store operation 404 is completed before. In addition, the first data memory barrier 402 and the second data memory barrier 406 also provide an order to ensure that store with free and load with get instructions are observed in program order.

図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 method 500 may begin at 502 where a load operation is performed, where the load operation specifies an address for accessing the data in memory.

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. Method 600 can begin at 602, where a first data memory barrier operation is performed. A data memory barrier is a type of barrier instruction that causes the CPU or compiler to enforce ordering constraints on memory operations issued before and after the barrier operation.

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 method 700 may begin at 702 where a first set of memory operations is performed before the barrier. The barrier ensures that all instructions are completed before step 704, where the second set of memory operations is performed after the data memory barrier.

本明細書において説明される技術は、メモリ操作の順序付けまたはフィルタリングを実行することが望ましい任意の縮小命令セットコンピューティング環境に適用され得る。すべての種類のハンドヘルド、ポータブル、およびその他のコンピューティングデバイスおよびコンピューティングオブジェクトが、様々な実施形態に関連する、つまり、そのメモリ操作の順序付けが実行され得る任意の状況での使用を想定されることを理解されたい。下で図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 computing system environment 800 in which aspects of the disclosed subject matter may be implemented, the computing system environment 800 being merely one example of a suitable computing environment for a device. It is not intended to suggest any limitation as to the scope of use or function of the subject.

図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 computer 810. The components of computer 810 may include a processing unit 820, a system memory 830, and a system bus 821 that couples various system components including the system memory to processing unit 820. The system bus 821 can be any of several bus structures including a memory bus or memory controller using any of a variety of bus architectures, a peripheral bus, and a local bus. Computer 810 typically includes a variety of computer readable media.

システムメモリ830は、読み出し専用メモリ(ROM)および/またはランダムアクセスメモリ(RAM)などの揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含み得る。起動中などにコンピュータ810内の要素間で情報を転送することに役立つ基礎的なルーチンを含む基本入出力システム(BIOS)が、メモリ830に記憶され得る。コンピュータ810は、その他の取り外し可能な/取り外し可能でない揮発性/不揮発性コンピュータ記憶媒体を含む可能性もある。 The system memory 830 may include computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) and/or random access memory (RAM). A basic input/output system (BIOS), containing the basic routines that help to transfer information between elements within computer 810, such as during start-up, can be stored in memory 830. Computer 810 may also include other removable/non-removable, volatile/nonvolatile computer storage media.

ユーザは、キーボード、および通常マウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイスなどの入力デバイスを通じてコンピュータ810にコマンドおよび情報を入力することができる。 A user can enter commands and information into computer 810 through an input device such as a keyboard and a pointing device commonly referred to as a mouse, trackball, or touchpad.

コンピュータ810は、リモートコンピュータ870などの1つまたは複数のその他のリモートコンピュータへの論理接続を使用するネットワーク化されたまたは分散型の環境内で動作することができ、そしてまた、それらのその他のリモートコンピュータは、デバイス810とは異なる媒体の能力を有する可能性がある。 Computer 810 can operate in a networked or distributed environment that uses logical connections to one or more other remote computers, such as remote computer 870, and also those other remote computers. The computer may have different medium capabilities than device 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のセットおよび前記バリア操作の後に行われるメモリ操作の第2のセットを含むメモリ操作を順序付ける、請求項1に記載のプロセッサ。 2. The data memory barrier operation orders memory operations including a first set of memory operations performed before the barrier operation and a second set of memory operations performed after the barrier operation. Processor. 前記ロード操作が、メモリの第1のデータにアクセスするためのアドレスを指定し、
前記獲得付きロード命令が、獲得付きロード命令および前記獲得付きロード命令の変化型のうちの少なくとも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.
前記データメモリバリア操作が、前記バリア操作の前に行われるメモリ操作の第1のセットおよび前記バリア操作の後に行われるメモリ操作の第2のセットを含むメモリ操作を順序付ける、請求項4に記載の方法。 5. The data memory barrier operation orders memory operations including a first set of memory operations performed before the barrier operation and a second set of memory operations performed after the barrier operation. the method of. 操作を実行するためのコンピュータ実行可能命令を実行するプロセッサであって、
前記命令が、メモリ操作の順序付けを実行する解放付きストア命令を含み、
前記解放付きストア命令が、第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のデータメモリバリア操作および前記第2のデータメモリバリア操作が、前記バリア操作の前に行われるメモリ操作の第1のセットおよび前記バリア操作の後に行われるメモリ操作の第2のセットを含むメモリ操作を順序付け、
前記ストア操作が、メモリに第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 .
前記第1のデータメモリバリア操作を実行するステップおよび前記第2のデータメモリバリア操作を実行するステップが、前記バリア操作の前に行われるメモリアクセスの第1のセットおよび前記バリア操作の後に行われるメモリアクセスの第2のセットを含むメモリ操作を順序付け、
獲得付きロード命令を実行する前に前記第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.
JP2018502709A 2015-07-21 2015-07-21 Implementation of load get/store release instructions using load/store operations with DMB operations Active JP6739513B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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