(57)【特許請求の範囲】
【請求項１】
操作を実行するためのコンピュータ実行可能命令を実行するプロセッサであって、
前記命令が、メモリ操作の順序付けを実行する獲得付きロード命令を含み、
前記獲得付きロード命令が、データメモリバリア操作が後に続くロード操作を含み、
前記データメモリバリア操作が、メモリ操作の順序付けのための一組のロード獲得セマンティクスに取って代わり、前記データメモリバリア操作は、前記データメモリバリア操作の前および後に起こるメモリ操作を順序付ける、プロセッサ。
【請求項２】
前記データメモリバリア操作が、前記バリア操作の前に行われるメモリ操作の第1のセットおよび前記バリア操作の後に行われるメモリ操作の第2のセットを含むメモリ操作を順序付ける、請求項1に記載のプロセッサ。
【請求項３】
前記ロード操作が、メモリの第1のデータにアクセスするためのアドレスを指定し、
前記獲得付きロード命令が、獲得付きロード命令および前記獲得付きロード命令の変化型のうちの少なくとも1つを含む、請求項1に記載のプロセッサ。
【請求項４】
プロセッサにおいて命令を実行するための方法であって、
メモリ操作の順序付けを実行するために獲得付きロード命令を実行するステップを含み、
前記獲得付きロード命令を実行するステップが、データメモリバリア操作が後に続くロード操作を実行するステップを含み、
前記データメモリバリア操作の実行が、メモリ操作の順序付けのための一組のロード獲得セマンティクスに取って代わり、前記データメモリバリア操作は、前記データメモリバリア操作の前および後に起こるメモリ操作を順序付ける、方法。
【請求項５】
獲得付きロード命令および前記獲得付きロード命令の変化型を実行するステップをさらに含み、
前記ロード操作が、メモリの第1のデータにアクセスするためのアドレスを指定する、請求項4に記載の方法。
【請求項６】
前記データメモリバリア操作が、前記バリア操作の前に行われるメモリ操作の第1のセットおよび前記バリア操作の後に行われるメモリ操作の第2のセットを含むメモリ操作を順序付ける、請求項4に記載の方法。
【請求項７】
操作を実行するためのコンピュータ実行可能命令を実行するプロセッサであって、
前記命令が、メモリ操作の順序付けを実行する解放付きストア命令を含み、
前記解放付きストア命令が、第2のデータメモリバリア操作が後に続くストア操作が後に続く第1のデータメモリバリア操作を含み、
前記命令が、解放付きストア命令および前記解放付きストア命令の変化型をさらに含み、
前記データメモリバリア操作は、前記データメモリバリア操作の前および後に起こるメモリ操作を順序付ける、プロセッサ。
【請求項８】
前記第1のデータメモリバリア操作および前記第2のデータメモリバリア操作が、前記バリア操作の前に行われるメモリ操作の第1のセットおよび前記バリア操作の後に行われるメモリ操作の第2のセットを含むメモリ操作を順序付け、
前記ストア操作が、メモリに第1のデータを書き込むためのアドレスを指定する、請求項7に記載のプロセッサ。
【請求項９】
プロセッサにおいて命令を実行するための方法であって、
メモリ操作の順序付けを実行するために解放付きストア命令を実行するステップを含み、
解放付きストア命令を実行するステップが、第2のデータメモリバリア操作を実行するステップが後に続く、ストア操作を実行するステップが後に続く、第1のデータメモリバリア操作を実行するステップを含み、
前記方法が、解放付きストア命令および前記解放付きストア命令の変化型を実行するステップをさらに含み、
前記データメモリバリア操作は、前記データメモリバリア操作の前および後に起こるメモリ操作を順序付ける、方法。
【請求項１０】
前記第1のデータメモリバリア操作を実行するステップおよび前記第2のデータメモリバリア操作を実行するステップが、前記バリア操作の前に行われるメモリアクセスの第1のセットおよび前記バリア操作の後に行われるメモリアクセスの第2のセットを含むメモリ操作を順序付け、
獲得付きロード命令を実行する前に前記第2のデータメモリバリア操作を実行するステップが、前記命令がプログラム順序で観測されることを保証する、請求項9に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンピューティング環境におけるメモリ操作の順序付けに関する。
【背景技術】
【０００２】
ロックのないコンピューティングにおいては、スレッドが共有メモリを操作し得る2つの方法があり、スレッドが、リソースのために互いに競合する可能性があるか、または情報をスレッドからスレッドへと協働して渡す可能性がある。獲得および解放セマンティクス(semantics)が、情報をスレッドからスレッドへと協働して渡すことを達成するために使用される。獲得および解放セマンティクスは、メモリ操作がエラーを防止するために正しく順序付けられることを保証するための構造的システムを提供する。ストア解放命令は、すべての先の命令が完了されることを保証し、ロード獲得命令は、すべての以降の命令がそのロード獲得命令が完了した後にのみ完了することになることを保証する。獲得および解放セマンティクスを使用してメモリ操作を適切に順序付けるためには、ストア解放およびロード獲得命令の複雑な組合せが必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本明細書において開示されるのは、縮小命令セットコンピューティング(RISC)において使用されるロード獲得およびストア解放セマンティクスを単純化するためのシステムおよび方法である。
【課題を解決するための手段】
【０００４】
実施態様は、本明細書において開示される命令に関連してメモリ操作を順序付けることを提供する。典型的な獲得付きロード(load with acquire)命令は、獲得付きロードの後のメモリ操作が獲得付きロードの後に順序付けられることのみを必要とする--その典型的な獲得付きロード命令は、(獲得付きロードと後続の命令との両方に関連して)獲得付きロードの前の命令にいかなる順序も課さない。実施形態において、獲得付きロードは、獲得付きロードの前のおよび獲得付きロードを含むすべてのアクセスが獲得付きロードの後の命令からのすべてのアクセスの前に順序付けられることを保証する、ロード操作に関連して使用されるデータメモリバリアを含む。
【０００５】
同様に、通常の解放付きストア(store with release)命令は、解放付きストアからのアクセスとすべての先の命令のアクセスとの間に順序付けを課す(しかし、後続の命令には課さない)。しかし、実施形態においては、解放付きストアの初めのデータメモリバリアが、先のアクセスと解放付きストアに関連するアクセスとの間に強い順序付けを与える。
【０００６】
一実施態様においては、システムは、操作を実行するためのコンピュータ実行可能命令を実行するプロセッサを含む。命令は、メモリ操作の順序付けを実行する獲得付きロード命令を含む可能性があり、獲得付きロード命令は、データメモリバリア操作が後に続くロード操作を含む。
【０００７】
別の実施態様においては、方法は、プロセッサにおいて命令を実行するステップを含む。方法は、メモリ操作の順序付けを実行するための獲得付きロード命令を含む可能性があり、獲得付きロード命令を実行するステップは、データメモリバリア操作が後に続くロード操作を実行することを含む。
【０００８】
一実施態様においては、システムは、操作を実行するためのコンピュータ実行可能命令を実行するプロセッサを含む。命令は、メモリ操作の順序付けを実行する解放付きストア命令を含む可能性があり、解放付きストア命令は、第2のデータメモリバリア操作が後に続くストア操作が後に続く第1のデータメモリバリア操作を含む。
【０００９】
一実施態様においては、方法は、プロセッサにおいて命令を実行するステップを含む。方法は、メモリ操作の順序付けを実行するために解放付きストア命令を含む可能性があり、解放付きストア命令を実行するステップは、第2のデータメモリバリア操作を実行するステップが後に続く、ストア操作を実行するステップが後に続く、第1のデータメモリバリア操作を実行するステップを含む。
【図面の簡単な説明】
【００１０】
【図１】本明細書において説明される様々な態様によるメモリ操作をフィルタリングするシステムの実施形態を示すブロック図である。
【図２】本明細書において説明される様々な態様によるメモリ操作をフィルタリングするシステムの実施形態を示すブロック図である。
【図３】本明細書において説明される様々な態様によるメモリ操作をフィルタリングするシステムの実施形態を示すブロック図である。
【図４】本明細書において説明される様々な態様によるメモリ操作をフィルタリングするシステムの実施形態を示すブロック図である。
【図５】獲得付きロード命令を実行するための方法の実施形態の流れ図である。
【図６】解放付きストア命令を実行するための方法の実施形態の流れ図である。
【図７】データメモリバリアを使用してメモリ操作をフィルタリングするための方法の実施形態の流れ図である。
【図８】本明細書において説明される1つまたは複数の態様に関連して実装され得る電子コンピューティング環境のブロック図である。
【図９】本明細書において説明される様々な態様に関連して動作し得る可能性があるデータ通信ネットワークのブロック図である。
【発明を実施するための形態】
【００１１】
様々な実施形態が、縮小命令セットコンピューティング(RISC)において使用されるロード獲得およびストア解放セマンティクスを単純化するシステムを提供する。ロックのないコンピューティングにおいては、スレッドが共有メモリを操作し得る2つの方法があり、スレッドが、リソースのために互いに競合する可能性があるか、または情報をスレッドからスレッドへと協働して渡す可能性がある。しかしながら、これらのセマンティクスは、複雑であり、特殊なセマンティクスを単純なデータメモリバリアによって置き換えることは、メモリの順序付けのプロセスを単純化する可能性がある。セマンティクスをマイクロオペレーションか、または複雑な機械命令を実装するために使用される低レベルの命令に変換することは、複雑な新しいメモリ操作を実装する必要を回避し得る。ロードおよびストア命令に関連してデータメモリバリアを使用することは、単純な総当たりの(brute force)順序付け操作を使用して十分な順序付けを提供することができる。
【００１２】
本開示において使用されるとき、用語「命令」、「操作」、および「アクセス」は、別々のプロセスを指し、交換可能でない。命令が、1つまたは複数の操作からなる一方、操作は、ゼロ以上のメモリアクセスまたはバリアを含む可能性がある。例として、獲得付きロード命令は、2つの操作(ロード操作およびバリア操作)を生成する。このバリアは、すべてのメモリアクセスを2つのグループに分ける。第1のグループは、獲得付きロードの前のすべての命令からのアクセスと、獲得付きロードに属するロード操作からのアクセスとを含む。第2のグループは、獲得付きロード命令の後のすべての命令からのアクセスを含む。
【００１３】
図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を生成し得る。
【００１４】
図2は、本明細書において説明される様々な態様によるメモリ操作をフィルタリングするシステムの実施形態を示すブロック図を示す。システム200は、先の命令202および後続の命令206に対して順序付けの制約を施行するデータメモリバリア204を含む。データメモリバリア204は、CPUまたはコンパイラにバリア操作の前後に発行されたメモリ操作に対して順序付けの制約を施行させる一種のバリア操作である。通常、これは、特定の操作がバリアの前に実行されることを保証され、その他の操作がバリアの後に実行されることを保証されることを意味する。データメモリバリア204は、後続の命令206が実行される前に先の命令202が実行され、完了されることを保証する。先の命令202および後続の命令206は、それぞれ、基本的なロードおよびストア命令にこれらの命令のより複雑な変化型(たとえば、獲得付きロード排他(load-exclusive with acquire)、解放付きストア排他(store-exclusive with release)など)を加えたものの様々な組合せを含み得る。
【００１５】
実施形態において、先の命令202および後続の命令206は、メモリからデータの第1のセットをロードし、データの第2のセットをメモリに記憶するように構成されるロードまたはストア命令を含む可能性がある。データメモリバリア204は、データをロードすることおよび記憶することに関連するメモリ操作を順序付けるように構成される可能性があり、達成される順序付けの種類は、1つまたは複数のロード命令およびストア命令に対するデータメモリのプログラム順序(program order)内の位置に基づく。
【００１６】
図3は、本明細書において説明される様々な態様による獲得付きロード命令によってメモリ操作をフィルタリングするシステムの実施形態を示すブロック図である。システム300は、プログラム順序でデータメモリバリア304に先立つロード操作302を順序付けるデータメモリバリア304を含み得る。データメモリバリア304は、後続の命令が実行される前にロード操作302が実行され、完了されることを保証する。システム300は、ロード操作およびデータメモリバリア操作を含む単純な獲得付きロード命令を示す。その他の実施形態においては、その他のタイプのロード操作が、獲得付きロード排他およびその他の変化型などの異なるロード命令をもたらす可能性がある。
【００１７】
図4は、本明細書において説明される様々な態様による解放付きストア命令を実行するシステムの実施形態を示す。システム400は、プログラム順序でストア操作404の両側にデータメモリバリア402および406を含み得る。データメモリバリア402は、ストア操作404が開始される前にすべての先の命令/操作が終わっていることを保証し、一方、データメモリバリア406は、いずれかの後続のメモリ命令/操作が起こる前にストア操作404が完了されることを保証する。加えて、第1のデータメモリバリア402および第2のデータメモリバリア406は、解放付きストアおよび獲得付きロード命令がプログラム順序で観測されることを保証するための順序をやはり生じる。
【００１８】
図5〜図7の流れ図に関連して説明される対象に従って実装され得る方法は、一連のブロックとして示され、説明され、一部のブロックが本明細書において示され、説明されるものとは異なる順序でおよび/またはその他のブロックと同時に行われる可能性があるので、特許請求の対象はブロックの順序によって限定されないことを理解されたい。さらに、すべての示されるブロックが、以降で説明される方法を実装するために必要とされるわけではない可能性がある。
【００１９】
図5は、獲得付きロード命令を実行するための方法の実施形態の流れ図を示す。方法500は、ロード操作が実行される502から始まる可能性があり、ロード操作は、メモリのデータにアクセスするためのアドレスを指定する。
【００２０】
504において、データメモリバリアが実行される可能性がある。データメモリバリアは、CPUまたはコンパイラにバリア操作の前後に発行されたメモリ操作に対して順序付けの制約を施行させる一種のバリア操作である。通常、これは、特定の操作がバリアの前に実行されることを保証され、その他の操作がバリアの後に実行されることを保証されることを意味する。データメモリバリアは、後続の命令が実行される前に先の命令が実行され、完了されることを保証する。この場合、データメモリバリア操作は、後続の命令が実行される前に先のロード操作が実行され、完了されることを保証する。
【００２１】
図6は、解放付きストア命令を実行するための方法の実施形態の流れ図を示す。方法600は、第1のデータメモリバリア操作が実行される602から始まる可能性がある。データメモリバリアは、CPUまたはコンパイラにバリア操作の前後に発行されたメモリ操作に対して順序付けの制約を施行させる一種のバリア命令である。
【００２２】
604において、ストア操作が実行される。ストア操作は、メモリにデータを書き込むためのアドレスを指定する。606において、第2のデータメモリバリア操作が実行される。2つのデータメモリバリア操作の間にストア操作を有することは、ストア操作が実行される前にすべてのその他のメモリ操作が実行済みであり、完了され、それから、ストア操作が完了されるまでその他のメモリ操作が許されないことを保証する。このようにして、解放付きストア命令は、単純なストアおよびデータメモリバリア操作を使用してメモリ操作の順序付けを実行した。
【００２３】
図7は、データメモリバリア操作を使用してメモリ操作をフィルタリングするための方法の実施形態の流れ図である。方法700は、メモリ操作の第1のセットがバリアの前に実行される702から始まる可能性がある。バリアは、すべての命令がステップ704の前に完了されることを保証し、ステップ704において、メモリ操作の第2のセットが、データメモリバリアの後に実行される。
【００２４】
本明細書において説明される技術は、メモリ操作の順序付けまたはフィルタリングを実行することが望ましい任意の縮小命令セットコンピューティング環境に適用され得る。すべての種類のハンドヘルド、ポータブル、およびその他のコンピューティングデバイスおよびコンピューティングオブジェクトが、様々な実施形態に関連する、つまり、そのメモリ操作の順序付けが実行され得る任意の状況での使用を想定されることを理解されたい。下で図8において説明される下の多目的リモートコンピュータは、例であり、開示される対象は、ネットワーク/バス相互運用性およびインタラクションを有する任意のクライアントを用いて実装され得る。したがって、開示される対象は、ネットワーク化されたホストされるサービスの環境、たとえば、家電製品内に置かれるオブジェクト(object)などのクライアントデバイスが単にネットワーク/バスとのインターフェースとして働くネットワーク化された環境内のチップまたはシステムに実装され得る。
【００２５】
図8は、開示される対象の態様が実装され得る好適なコンピューティングシステム環境800の例を示し、コンピューティングシステム環境800は、デバイスのための好適なコンピューティング環境の一例に過ぎず、開示される対象の使用または機能の範囲に関していかなる限定も示唆するように意図されていない。
【００２６】
図8は、コンピュータ810の形態の多目的コンピューティングデバイスを含む、開示される対象を実装するための例示的なデバイスである。コンピュータ810の構成要素は、処理ユニット820、システムメモリ830、およびシステムメモリを含む様々なシステム構成要素を処理ユニット820に結合するシステムバス821を含み得る。システムバス821は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む数種のバス構造のいずれかである可能性がある。通常、コンピュータ810は、様々なコンピュータ可読媒体を含む。
【００２７】
システムメモリ830は、読み出し専用メモリ(ROM)および/またはランダムアクセスメモリ(RAM)などの揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含み得る。起動中などにコンピュータ810内の要素間で情報を転送することに役立つ基礎的なルーチンを含む基本入出力システム(BIOS)が、メモリ830に記憶され得る。コンピュータ810は、その他の取り外し可能な/取り外し可能でない揮発性/不揮発性コンピュータ記憶媒体を含む可能性もある。
【００２８】
ユーザは、キーボード、および通常マウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイスなどの入力デバイスを通じてコンピュータ810にコマンドおよび情報を入力することができる。
【００２９】
コンピュータ810は、リモートコンピュータ870などの1つまたは複数のその他のリモートコンピュータへの論理接続を使用するネットワーク化されたまたは分散型の環境内で動作することができ、そしてまた、それらのその他のリモートコンピュータは、デバイス810とは異なる媒体の能力を有する可能性がある。
【００３０】
以上に加えて、開示される対象は、開示される対象を実装するように電子デバイスを制御するためのハードウェア、ファームウェア、ソフトウェア、またはこれらの任意の好適な組合せを製造するために典型的な製造、プログラミング、または工学技術を使用して、方法、装置、または製品として実装される可能性がある。コンピュータ可読媒体は、ハードウェア媒体またはソフトウェア媒体を含む可能性があり、媒体は、非一時的媒体または転送媒体を含む可能性がある。
【符号の説明】
【００３１】
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  通信ネットワーク/バス
【図１】
0006739513.tif 000002
【図２】
0006739513.tif 000003
【図３】
0006739513.tif 000004
【図４】
0006739513.tif 000005
【図５】
0006739513.tif 000006
【図６】
0006739513.tif 000007
【図７】
0006739513.tif 000008
【図８】
0006739513.tif 000009
【図９】
0006739513.tif 000010