JP7410126B2 - 命令を実行するためのシステム、方法、および装置 - Google Patents

命令を実行するためのシステム、方法、および装置 Download PDF

Info

Publication number
JP7410126B2
JP7410126B2 JP2021507785A JP2021507785A JP7410126B2 JP 7410126 B2 JP7410126 B2 JP 7410126B2 JP 2021507785 A JP2021507785 A JP 2021507785A JP 2021507785 A JP2021507785 A JP 2021507785A JP 7410126 B2 JP7410126 B2 JP 7410126B2
Authority
JP
Japan
Prior art keywords
memory
instructions
instruction
metadata
operations
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
JP2021507785A
Other languages
English (en)
Other versions
JP2021535471A (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 JP2021535471A publication Critical patent/JP2021535471A/ja
Application granted granted Critical
Publication of JP7410126B2 publication Critical patent/JP7410126B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/30181Instruction operation extension or modification
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • 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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、命令を実行するためのシステム、方法、および装置に関する。
多くの命令実行システムでは、メモリアクセスをコアレッシングすることが望ましい。しかし、メモリコアレッシングは、典型的には、いくつかの効率上の利点を有するが、場合によっては、命令同士がグループ化され、それによって、コアレッシングしようとする取り組みが望ましいものではなくなる、ということもある。
コンピューティングシステムが発展するにつれて、望ましくないメモリアクセスを防ぐべく、メモリアクセスを制限するいくつかの既存のバリア命令技法が開発されてきた。典型的な既存のバリア命令技法は、メモリオーダリングを強制することによって命令のオーダリングを達成しようと試みるものであるが、そのような強制は、必要以上に遅く、デバイスメモリにとって過度の負担になることがある。既存のバリアのセマンティクスに関与するようにメモリシステムを変更しようとする試みは、受け入れがたいほど困難で、合理的ではない。さらに、I/Oメモリアクセスに使用される既存のバリアには、そのバリアによりプロセッサとメモリとの間の接続、例えばPCIルートコンプレックスからの肯定応答を待っている間にパイプラインのストールまたは遅延が生じるので、性能上の悪影響がある。
添付の図面は、さまざまな代表的実施形態についてより完全に説明するために使用され、また開示する代表的実施形態およびそれらの固有の利点をより一層理解するために当業者が使用することのできる、視覚的表現物を提供する。これらの図面では、同様の参照番号が、対応する要素を識別する。
本開示によるシステムのブロック図である。 さまざまな代表的実施形態に従って使用することのできるフローチャートの一例を示す図である。 さまざまな代表的実施形態に従って使用することのできるフローチャートの一例を示す図である。 さまざまな代表的実施形態によるハードウェアに関連して使用することのできるフローチャートの一例を示す図である。 さまざまな代表的実施形態によるバッファの一例を示す図である。 さまざまな代表的実施形態によるメモリモジュールの一例を示す図である。 一実施形態によるフローチャートを示す図である。
本開示は、多くの異なる形態での実施形態が可能であるが、本開示はここで説明する原理の一例とみなされるべきであり、図示し説明する特定の実施形態に本開示を限定するものではない、という理解の下に、特定の実施形態が図面中に示され、本明細書において詳細に説明される。下の説明では、同様の参照番号が、図面のいくつかの図中の同じ部分、同様の部分、または対応する部分について説明するために使用されている。
本文献では、第1のおよび第2の、上部および下部などの関係性の用語が、あるエンティティまたはアクションを別のエンティティまたはアクションと、そのようなエンティティまたはアクション間のいかなる実際のそのような関係または順序も必ずしも必要とすることなく、または示唆することなく、識別するためだけに使用されていることがある。「備える(comprise)」、「備える(comprises)」、「備える(comprising)」という用語、またはそれらの他の任意の変形は、要素のリストを備えるプロセス、方法、物品、または装置が、それらの要素のみを含むのではなく、明示的にリストされていないかまたはそのようなプロセス、方法、物品、もしくは装置に固有ではない他の要素も含むことができるような、非排他的包含をカバーすることが意図される。「~を備える(comprises…a)」に続く要素は、それ以上の制約なしに、その要素を備えるプロセス、方法、物品、または装置内にさらなる同一要素が存在することを排除するものではない。
本文献全体を通して、「1つの実施形態」、「いくつかの実施形態」、「一実施形態」、または同様の用語に言及する場合、実施形態に関して説明する特定の特徴、構造、または特性が本開示の少なくとも1つの実施形態に含まれている、ということを意味する。したがって、本明細書全体を通してそのような句が出現する場合、またはそのような句がさまざまな場所に出現する場合、必ずしも全てが、同じ実施形態に言及しているとは限らない。さらに、特定の特徴、構造、または特性が、制限なく、1つまたは複数の実施形態において、任意の適切な様式で組み合わされてもよい。
「または」という用語は、本明細書では、包含的なものとして、またはいずれか1つもしくはいずれかの組合せを意味するものとして、解釈されるべきである。したがって、「A、B、またはC」は、「A、B、C、AとB、AとC、BとC、AとBとC、のうちのいずれか」を意味する。この定義の例外は、要素、機能、動作、または行為の組合せが、何らかの形で、本質的に相互に排他的であるときにのみ起こる。
例示を単純かつ明快にする目的で、対応する要素または類似の要素を示すために、図の間で参照番号が繰り返されることがある。本明細書において説明する実施形態の理解をもたらすために、多数の詳細が記載される。実施形態は、これらの詳細がなくても実践することができる。他の例では、説明する実施形態を曖昧にしないために、よく知られた方法、手順、および構成要素について詳細に説明されていない。説明は、本明細書において説明する実施形態の範囲に限定されるものとみなされるべきではない。
以下の用語は、本開示のさまざまな実施形態についての本説明の中で使用されていることがある。
補助の:追加の、補足的な。
バリア命令:CPUまたはコンパイラに、その命令の前および後にアクセスされた命令から生じるメモリ動作の間で区別させる命令。
バッファ:通常はRAM内にある一時的な記憶領域。大多数のバッファの目的は、保持領域としての役割を果たし、CPUがデータをデバイスに転送する前にそれを操作できるようにすることである。
キャッシュ:CPUメモリとも呼ばれるキャッシュメモリは、コンピュータマイクロプロセッサが通常のランダムアクセスメモリ(RAM)にアクセスすることができるよりも迅速にアクセスすることのできる、RAMである。このメモリは、典型的には、直接的にCPUチップと統合されるか、またはCPUとの別のバスインターコネクトを有する別のチップ上に配置される。キャッシュメモリは、プロセッサへの高速データアクセスを可能にし、頻繁に使用されるコンピュータプログラム、アプリケーション、およびデータを格納する、小サイズタイプの揮発性コンピュータメモリである。キャッシュメモリは、コンピュータが電源投入されて初めて、データを格納および保持する。
コアレッシング:同様のタイプの2つの命令をマージすること。コアレッシングは、実行されることになる2つの同様の命令があるとすぐに行われ得るか、もしくはブロックが解放されるとすぐに行われ得、またはコアレッシングは、しばらく後まで延期され得るか(延期コアレッシング(deferred coalescing)として知られる)、もしくは全く行われないことがある。
CPU:中央処理装置、すなわち、命令によって指定された基本的な算術、論理、制御、および入力/出力(I/O)動作を実施することによってコンピュータプログラムの命令を実行する、コンピュータ内の電子回路。
実行:コンピュータの基本動作プロセス。コンピュータが、メモリからプログラム命令を取り出し、命令が要求するアクションは何かを決定し、それらのアクションを実行するプロセスである。このサイクルは、起動からコンピュータがシャットダウンされるまで、中央処理装置(CPU)によって連続的に繰り返される。
フローチャート:アルゴリズム、ワークフロー、またはプロセスを表現する図の一タイプ。フローチャートは、各種ボックスとして方法の動作またはアクション、およびそれらの順序を示す。
粒度:システムが(粒子のような)別々の構成要素を含む程度。システム内に構成要素が多いほど、すなわち粒度が高いほど、システムは柔軟になる。
インターフェース:ハードウェア接続またはユーザインターフェース。インターフェースは、2つのデバイスが互いに接続される方法を説明する動詞としても使用することができる。ハードウェアインターフェースは、2つ以上の電子デバイスを一緒に接続するために使用される。
ロードキュー:処理待ちのワークオブジェクトのシーケンス。
メタデータ:追加的なデータ。典型的には、データについての基本情報を要約し、それにより、データの特定のインスタンスを見いだすこと、およびその取扱いが、より容易になり得る。
マイクロアーキテクチャによる(Micro-architectural):コンピュータ構成。特定のプロセッサ内に所与の命令セットアーキテクチャ(ISA)が実装される様式。
ニーモニック:長さはより短いが、元の機能と同じ機能性を提供する、名称または識別子またはコード。
I/O:入力/出力。データ処理システムにおけるプロセッサと周辺デバイスとの間のデータ転送。I/Oデバイスとしては、直接的に、または介在するI/Oコントローラを通じて結合させることのできる、キーボード、ディスプレイ、ポインティングデバイスなどがあり得る。
モジュール:ハードウェアもしくはソフトウェア、またはハードウェアとソフトウェアの組合せを含むことのできる、プログラムまたはデバイスの構成要素または部分。ソフトウェアを含むモジュールでは、ソフトウェアは、1つまたは複数のルーチンまたはサブルーチンを含むことができる。1つまたは複数のモジュールは、プログラムおよび/またはデバイスを構成することができる。
単調に:所与の順序を保つかまたは逆にする、順序付けされるセット間の順序付け方式。
動作:プログラムの実行の際にコンピュータによって実施される1回のアクション。
オーダリングタグ:アイテムの説明を助け、閲覧または検索によってアイテムが再度見いだされることを可能にする、一種のメタデータ。
周辺装置:本質的なコンピュータ(すなわちメモリおよびマイクロプロセッサ)の部分ではない、キーボードやプリンタなどのコンピュータデバイス。これらの補助デバイスは、典型的には、コンピュータに接続されるものである。
ソースコード:人間が読み取れるプログラミング言語を使用して通常はプレーンテキストとして記述された、場合によってはコメントを伴うコードの任意の集合。プログラムのソースコードは、コンピュータによって実施されることになるアクションをたいていはソースコードを記述することにより指定するコンピュータプログラマの作業を容易にするように、特別に設計されている。ソースコードはしばしば、アセンブラまたはコンパイラによって、コンピュータが理解するバイナリのマシンコードに変換される。次いで、マシンコードは、後に実行できるように格納されてよい。あるいはソースコードは、解釈され、したがって即座に実行されてもよい。
ストアキュー:格納されているワークオブジェクトのシーケンス。
本開示の一実施形態は、動作を格納するメモリ位置を利用する。そのメモリ位置において、(分離を表す)「SEP」というニーモニックを有する新たな命令が受け取られる。この命令の挙動は、プログラム順序またはプログラムシーケンス内でこの命令より前のメモリアクセスが、この命令の後のメモリアクセスと組み合わされることを防ぐものである。
いくつかのコモディティCPUアーキテクチャでは、メモリコアレッシング挙動は、マイクロアーキテクチャによるものであり、すなわち、プログラミングインターフェースに晒されないが、メモリおよび命令に対するいくらかの制御が、I/Oデバイスとの効率的な通信にとって有用となることがある。これにより、実行のプログラムシーケンスまたは命令シーケンスに対する何らかの制御手段が与えられ、ある程度のレーテンシの低減が可能になり、どんなパイプラインストールも発生しない。本明細書において説明する実施形態は、実装上の修正を最小限にして、かつメモリシステムに修正を加えることなく、性能が大幅に改善されるため、特に有用である。
本開示の実施形態は、いくつかのメモリ動作をコアレッシングするか、またはいくつかのメモリ動作のコアレッシングを妨げるか、効率に基づいてメモリ動作を分離するための、バリア命令技法を提示する。
ニーモニック(分離すなわち「SEP」)を有するこのバリア命令は、メモリ動作の「実行」後の、メモリ相互作用がバッファリングされ、場合によってはコアレッシングされるステージの存在を指定することにより実現される。このステージは、メモリステージ(「MEM」)と指定される。実際のところ、メモリすなわちMEMというステージは、メモリモデルに応じて、アーキテクチャによるものでもよく、マイクロアーキテクチャによるものでもよく、アーキテクチャ以外によるものでもよい。例えば、アーキテクチャによる実施形態は、トータルストアオーダリング(Total Store Ordering)に使用することができる。アーキテクチャ以外によるものである実施形態は、他のオーダリングモデルに使用することができる。
アーキテクチャによる実施形態、マイクロアーキテクチャによる実施形態、またはアーキテクチャ以外による実施形態のいずれにおいても、分離すなわち「SEP」として識別され得るニーモニックを有するバリア命令は、メタデータ値を各メモリ動作に割り当てることによって実施され得る。メタデータは、フェーズカラー(phase color)、またはオーダリングタグ、または符号なし整数、または他の適切なタグ、識別子、もしくは標識とすることができる。
1つの実施形態では、ニーモニックSEPが、メモリ動作に順序タグを割り当てるために使用される単調増加カウンタをインクリメントする。SEP自体は、どんなメモリ機能も実施しない。したがって、このタグは、早ければデコードステージの直後に付与され得、したがって、潜在的なアウトオブオーダメモリ動作を害さない(すなわち、SEPニーモニックはオーダリングを強制せず、そのため、SEPの後の複数のメモリ動作が、SEPがコミットされる前に実行され、コアレッシングされ得る)。そのような実施形態では、MEMステージは、同じメタデータタグをもつメモリ動作をコアレッシングするにすぎず、したがって、所望のセマンティクスを満足させるが、ニーモニックSEPは、マイクロオペレーションを生成する必要も、リネームされる必要も、発行される必要も、実行される必要もない。
この概念は、その命令による影響を受けるメモリ動作、例として書込み/ストア命令のみ、を制限する、1つまたは複数のオペランドによって拡張することができる。
加えて、本明細書において開示する別の実施形態は、「WRITE」動作やメモリに対する他の動作などのメモリ動作である。この実施形態では、プログラマが、メモリストリームにおける実行を停止するための制御をする。これはCPUにおいて、コマンドがある度に「1」だけ増加するメモリフェーズ識別子を使用することによって実施され得る。同じ識別子を共有する動作のみが組み合わされる。
図1は、システム100を示し、システム100は、さまざまな周辺/補助モジュール114(a)…(n)(ただし「n」はシステム100に適合する任意の適切な数である)に双方向通信バス112(a)…(n)(ただし「n」はシステム100に適合する任意の適切な数である)を介して動作可能に結合された、第1のモジュール110を含む。これらの要素についてはそれぞれ、本明細書においてより詳細に説明する。
モジュール110は、プロセッサ106にインターフェース104を介して動作可能に結合されたメモリ102を含む。プロセッサ106は、記憶モジュール130(a)、I/Oモジュール130(b)、および周辺/補助モジュール130(n)にそれぞれ、関連するインターフェース126(a)、(b)…(n)(ただし「n」は任意の適切な数である)を介して動作可能に結合されている。
メモリモジュール102は、例えばバッファ116、ロードキュー118、ストアキュー120、およびキャッシュメモリ122を含む追加のメモリ位置またはメモリモジュールに結合されるか、またはそれを含む。4つの補足的なメモリモジュール116、118、120、および122が示されているが、任意の適切な数の補足的なメモリモジュールが使用されてよい。
バッファモジュール116は、メモリモジュール102において受け取られたさまざまな命令をバッファリングするために使用され得る。バッファ116は、保持領域としての役割を果たし、CPUがデータをモジュールまたはデバイスに転送する前にそれを操作することができるようになっている。
ロードキューモジュール118は、実行されることになる命令を格納するために使用される。
ストアキュー120は、アクセスおよび処理され得る命令を格納するために使用される。
メモリモジュール102は、プロセッサ106にインターフェース104を介して動作可能に結合されており、メモリモジュール122、116、118、および120を利用することができる。インターフェース104は、任意の適切なインターフェース、例えば、ARM(登録商標) Incorporatedによって開発されたインターフェースであるAXIインターフェースとすることができる。インターフェース104は、情報信号およびデータ信号および通信信号および制御信号が交換され得るようにメモリモジュール102とプロセッサ106を接続するための、ハードウェアインターフェースを提供する。
プロセッサモジュール106は、モデルまたはルールまたはアルゴリズムに基づいてオーダリングを実施するのに十分な処理能力を有するCPUを備えた任意の適切なプロセッサとすることができ、モデルまたはルールまたはアルゴリズムは、キャッシュメモリなどのメモリ内に格納されるか、またはプロセッサモジュール106によってリモートの記憶装置からアクセスされ得る。プロセッサモジュール106は、命令、コード、アルゴリズム、モデル、ならびに他の動作パラメータおよび実行パラメータを格納することが可能である。
本明細書では、「プロセッサ」という用語は、コンピュータ、マイクロコントローラ、組込みマイクロコントローラ、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、およびコンプレックスプログラマブルロジックデバイス(CPLD)などのプログラマブルハードウェアを包含するか、またはそれを利用することができる。これらのハードウェア例は、さらに、所望の機能的コントローラモジュールを達成するために、組み合わせて使用されてもよい。コンピュータ、マイクロコントローラ、およびマイクロプロセッサは、アセンブリ、C、C++、C#などの言語を使用してプログラムすることができる。FPGA、ASIC、およびCPLDはしばしば、プログラマブルデバイス上のより少ない機能性を用いて内部ハードウェアモジュール間の接続を構成する、VHSICハードウェア記述言語(VHDL)やVerilogなどのハードウェア記述言語(HDL)を使用して、プログラムされる。
プロセッサモジュール106は、1つまたは複数のモジュール130(a)…(n)(ただし「n」は任意の適切な数である)に、関連するインターフェースまたはバス126(a)…(n)(ただし「n」は任意の適切な数である)を介して動作可能に結合されている。
メモリ102、プロセッサ106、および関連モジュール130(全体として)を含む、第1のモジュール110は、複数の周辺/補助モジュール114(a)…(n)(ただし「n」は任意の適切な数である)にそれぞれ、関連する双方向インターフェースまたはバス112(a)…(n)(ただし「n」は任意の適切な数である)を介して動作可能に結合されている。
周辺/補助モジュール114は、システム100に適合する、任意のI/O(入力/出力)、マウス、キーボード、プリンタ、ポートなどのコンピュータ周辺装置、または補助メモリもしくは補助プロセッサとすることができる。
図2は、一実施形態によるフローチャート200を示す。一連のアクション200は、任意の適切なプログラミング言語において、不揮発性メモリもしくは他の適切なメモリ、またはコンピュータ使用可能媒体上に格納されてよい。
図2に示す一連のアクションは、本明細書において示すメモリ102内に格納され、本明細書において示すプロセッサ106によって実行され得る。
図2に示すように、アルゴリズムが開始する(202)。プログラム順序またはプログラムシーケンスがアクセスされる(204)。命令が、一般にはインターフェースを介して受け取られまたはアクセスされる(206)。命令がグループ変更標識を含んでいるかどうかを判定する(208)ように、命令が評価され、標識は、ニーモニックまたは「開始/停止」コマンドまたは注釈(notation)とすることができる。グループ変更順序標識は、いくつかの標識のうちのいずれか1つとすることができる。グループ変更標識は、メモリ動作シーケンスを修正する。ある実施形態は、コマンドであるニーモニック、またはメタデータとしての標識を含む。別の実施形態は、標識が開始/停止標識である、というものである。
標識を有する命令が、メモリによる動作の分布を区別するために使用される。分布は一般に、ニーモニックまたは他の識別子に基づく。メモリによる動作のこの分布には一般に、1つまたは複数の第1の動作からなる第1のグループが1つまたは複数の第2の動作に対して区別されるように、動作をグループ化することが関与する。
実際のところ、1つの実施形態は、第2の動作を開放グループとすることができる、というものであり、というのも、それらの動作は、第1のグループ内の動作の処理に続いて処理されるためである。
命令がシーケンス変更標識を含んでいない(210)との判定(208)が行われた場合、動作は実行される(212)。動作の実行(212)に続いて、別の命令があるかどうかの判定が行われる(216)。別の命令がある場合(218)、次の命令が、一般にはインターフェースから受け取られる(206)。さらなる命令がない場合、アルゴリズムは終了する(270)。
受け取られた命令の一部としてシーケンス修正標識がある(222)との判定(208)が行われた場合、プログラム動作シーケンスが修正される(224)。シーケンス修正標識のタイプ、またはそれに関連するコマンドに応じて、次のもの、すなわち、停止、開始、バリアを挿入すること、またはその他の形で動作のシーケンスを修正すること、のうちのいずれかを行うためのコマンド(226)が発行される。標識は、任意のコマンド制御機能性を実際に実施してもよく、そうではなく単にポインタとしての役割を果たしてもよい。例えば、「SEP」は、任意のメモリ機能を実施するのではなく、後続のメモリ動作が異なるメタデータタグを得るようにカウンタを更新するだけでよい。
プログラムシーケンスが修正され、それは全体としてメモリ操作(228)とすることができる。このメモリ操作またはメモリ修正は、例えば、いくつかの命令をコアレッシングすること、いくつかの命令のコアレッシングを防ぐこと、実行を開始すること、実行を停止すること、または命令もしくは他のメモリ動作の実行順序の他の任意の改訂もしくは変更を含むことができる。
アルゴリズムの中のこの時点で、実施することのできるいくつかの異なる実施形態がある。1つの実施形態は、メモリ動作にメタデータタグまたはメタデータ値が割り当てられる(230)というものである。このメタデータタグまたはメタデータ値は、フェーズカラーもしくはオーダリングタグ、または単調増加カウンタなどのカウンタから割り当てられた符号なし整数と考えることができる。次いで、このタグがメモリ動作に割り当てられる(232)。
加えて、上で述べたように、値は、例えば単調増加カウンタ(234)によって割り当てられた符号なし整数とすることもできる。この実施形態では、SEPは、どんなメモリ機能も実際に実施せず、後続のメモリ動作に異なるメタデータタグが割り当てられるようにカウンタをインクリメントする働きをするだけである。したがって、このタグは、早ければデコードステージの直後に付与され得る。したがって、SEPはオーダリングを強制せず、それにより、SEPの後の複数のメモリ動作が、SEPがコミットされる前に実行され、コアレッシングされることが可能である。この実施形態では、バッファリングステージ、またはMEMステージは、同じメタデータタグを有するメモリ動作をコアレッシングするにすぎない。これにより、所望のセマンティクスが満足されるが、SEPは、マイクロオペレーションを生成する必要も、リネームされる必要も、発行される必要も、実行される必要もない。
さらに別の実施形態では、「開始/停止」コマンドがパイプライン式に認識され得る(236)。このパイプライン処理において、このコマンドは、境界条件を区別するために使用される。この境界条件は、処理シーケンスまたは処理順序を操作するために使用され、バリア命令を識別するために、またはバリア命令としての働きをするために、使用され得る。
タグ(232)があるか、それともカウンタ(234)があるか、それともコマンド(236)があるかに関わらず、識別子(232)、(234)、(236)の、所定の判断基準または他の測定基準に対する比較(238)が行われる。例えば、メタデータタグが使用されるとき、ある動作のメタデータタグが、別の動作のメタデータタグに対して比較され得る。加えて、ある動作のカウンタ値が、別の動作のカウンタ動作に対して比較され得る。さらに、「開始」または「停止」というコマンドが、動作の開始または動作の停止として識別され得る。
比較(238)の結果に応じて、一致、または作動もしくは機能の判定が行われる(248)。一致する、またはバリアがないと判定された場合、メモリコアレッシングが行われ得る(252)。一致しない、またはバリアがある場合、メモリコアレッシングは行われない(258)。
コアレッシングされた(252)かコアレッシングされていない(258)かに関わらず、動作が実行された後、動作はリネームされ得る。
さらなる命令があるかどうかの判定が行われる(216)。さらなる命令がある場合(218)、次の命令が、一般にはインターフェースから受け取られる(206)。さらなる命令がない場合、アルゴリズムは終了する(270)。
図3は、本開示の一実施形態に従って使用されてよい、例示的なアルゴリズムまたはフローチャート300を示す。フローチャート300は、任意の適切なプログラミング言語において、不揮発性メモリもしくは他の適切なメモリ、またはコンピュータ使用可能媒体上に格納されてよい。
アルゴリズムが開始(302)し、第1の命令が、一般にはインターフェースを介してプロセッサにおいて受け取られる(304)。第2の命令が、一般にはインターフェースを介してプロセッサにおいて受け取られる(306)。第1の命令に標識が関連付けられる(308)。一般に、この標識は、メタデータ、メタデータタグ、メタデータ値、コマンド(「開始/停止」)、またはインクリメンタル値とすることができる。
第1の命令に関連付けられた標識は、修正または更新または変更され得(310)、それによって、第2の命令に新たな標識が関連付けられる(312)。一実施形態は、場合によっては第1の標識が第2の標識と同じになる、というものである。実際のところ、第2の命令に関連付けられる標識は、第1の命令の命令タイプと第2の命令の命令タイプとの間の一致を示すようなものとすることができる。
第1の命令に関連付けられた標識および第2の命令に関連付けられた標識を使用することは、バリア命令が存在するかどうか、または標識がプログラムシーケンスの変化もしくは動作の実行順序の変化を生じさせるかどうかを判定するために、それらの標識が比較または解析され得る(314)といったようなものである。
比較は、それらの標識が一致するかどうかを判定する(316)ために、または実行順序が変更されるべきかどうかをその他の形で示すために、使用される。判定(316)の結果が、それらの標識が一致しないかまたは実行修正識別子がある(318)というものである場合、メモリ動作はコアレッシングされない(320)。
判定(316)の結果が、それらの標識が一致するかまたは実行修正識別子がない(324)というものである場合、メモリ動作はコアレッシングされる(326)。
メモリコアレッシングする(326)かまたはコアレッシングしない(320)に続いて、後続の命令のために標識がリネームされ得る。
さらに命令があるかどうかの判定が行われ(330)、さらに命令がある場合(334)、別の命令が受け取られる(304)ことを示す。さらなる命令がない場合(336)、アルゴリズムは終了する(340)。
図4は、一実施形態を実装するためのハードウェア構成要素に関するフローチャートを示す。図4の要素は、まとめて400として示されており、その構成要素は、ハードウェア、メモリ、プロセッサ、周辺装置、補助構成要素、インターフェース、およびソフトウェアからなるコンピュータ処理環境において利用され得る。ソフトウェアは、任意の適切なプログラミング言語において、不揮発性メモリもしくは他の適切なメモリ、またはコンピュータ使用可能媒体上に格納されてよい。
図4は、命令キャッシュがアクセスされ得る(402)ことを示す。この命令キャッシュは、ローカルでもよくリモートでもよい、記憶モジュール、メモリ、または任意の適切な電子記憶媒体とすることができる。命令キャッシュは、複数の命令を格納する。
命令キャッシュにアクセスした後で、命令がフェッチされる(406)。この命令は、プロセッサ、メモリ、またはそれらの組合せによって使用される任意の所望の命令とすることができる。
命令がデコードされる(410)。命令のデコードは、標識、ニーモニック、メタデータタグ、メタデータ値、カウンタ値、コマンド(開始/停止)、または命令に関連付けられた他の任意の使用可能な情報など、命令のさまざまな態様を、識別を目的としてパースするために使用され得る。識別することにより、プログラム順序またはプログラム実行シーケンスが修正されるべきであることを示す標識を命令が含むかどうかの判定が促進される。
命令は、デコードおよび識別された後、リネームされる(412)。リネームは、発行または実行された命令の制御を維持するために実施される。このリネームにより、後続のメモリ動作が、異なるメタデータタグや異なるコマンドなど、異なる標識を得ることが確実になる。
次いで、動作の実行を実施するために命令が発行される(414)。命令の発行(414)に続いて、他のユニットまたは動作がアクセスされ得る(416)。
メモリ動作が実施される(418)。これらのメモリ動作は、デコード(410)された標識または命令に基づいて修正され得る。一般に、メモリ動作は、メモリモジュール(420)にアクセスし、メモリモジュールは、ロードキューモジュール(422)およびストアキューモジュール(424)を含むことができる。メモリモジュール(420)内に他のメモリレジスタまたはサブモジュールがあってもよい。
図5は、ストアキュー(424)をより詳細に示す。ストアキュー(424)は、例えば、書込み結合バッファ(WCB)などのバッファとすることができ、アクセスされ得るいくつかのレジスタまたは記憶領域またはメモリ位置を含む。本明細書においては1つのバッファ424について図示し説明しているが、複数のWCBを含めて任意の適切な数のバッファをシステムが有することができることが、本開示の範囲に含まれる。
図6は、データキャッシュメモリモジュール522を示し、データキャッシュメモリモジュール522は、ストアキュー424がキャッシュモジュール522のデータにアクセスすることができるように、ストアキュー424に動作可能に結合されている。データキャッシュモジュール522は、データを保持し、バッファおよび記憶位置にアクセスすることができる。
1つの実施形態では、ストアキュー424はWCBとすることができ、WCBは弱くオーダリングされたメモリタイプである。WCBは、データキャッシュモジュール522に動作可能に結合させることができる。これにより、WCBが、より遅い制御メッセージよりも迅速に反応することが可能になる。WCBはマッピングされ、それによって、プロセッサまたはCPUコア内で、各WCBが他のWCBバッファとは独立して動作することが可能になり得る。WCBを利用することにより、データ同士が結合されて、一時的に格納されることが可能になり、次いで、それらのデータは、単一ビットまたは小さなまとまりとして(即座に)書き込まれるのではなく、一緒に解放され得る。
図5に示すように、バッファ424のメモリレジスタは、記憶域割当て526、528、530、532、534、536、および538を有する。これらの記憶域割当ては、レジスタ552(a)…(n)を有するキャッシュ522からのデータを格納するために使用される。バッファ424の記憶レジスタは、その中にデータが格納されてもよく、されなくてもよい。実際のところ、バッファ内のデータの記憶位置は、メモリ動作がコアレッシングされ得るように、またコマンドやタグなどのバリア標識が識別されたときは、メモリ動作がコアレッシングされないように、操作され得る。バッファ424の記憶容量サイズ(storage capacity dimension)540が示されている。バッファ424によって示されるように、記憶域割当て526、528、530、532、534、536、および538は、サイズ540よりも小さくてよい。
図6は、データキャッシュ522の図を示す。このデータキャッシュ522は、サブレジスタ552(a)…(n)(ただし「n」は任意の適切な数)を有するカラム552として全体が示された、セットを有する。データキャッシュ522の幅サイズ560が示されている。(全体としての)レジスタ552内のデータは、アクセスされ、操作され、バッファ424内に格納され得る。次いで、バッファ424内に格納されたデータは、単一ビットまたはより小さなセグメントではなくバーストの形で利用され得る。
図7は、一実施形態によるフローチャート700を示す。一連のアクション700は、任意の適切なプログラミング言語において、不揮発性メモリもしくは他の適切なメモリ、またはコンピュータ使用可能媒体上に格納されてよい。
図7に示す一連のアクションは、本明細書において示すメモリ102内に格納され、本明細書において示すプロセッサ106によって実行され得る。
図7に示すように、アルゴリズムが開始する(702)。実行されることになる動作のプログラム順序またはプログラムシーケンスがアクセスされる(704)。命令が、一般にはインターフェースを介して受け取られまたはアクセスされる(706)。
命令の一部としての、動作のシーケンスの区別を示すグループ変更標識またはニーモニックを識別する(708)ように、命令が評価される。標識は、ニーモニックまたは「開始/停止」コマンドまたは注釈とすることができる。グループ変更順序標識は、いくつかの標識のうちのいずれか1つとすることができる。グループ変更標識は、メモリ動作シーケンスを修正するために使用され得る。ある実施形態は、コマンドであるニーモニック、またはメタデータとしての標識を含む。別の実施形態は、標識が開始/停止標識である、というものである。
標識を有する命令が、メモリによる動作の分布を区別するために使用される。分布は一般に、ニーモニックまたは他の識別子に基づく。メモリによる動作のこの分布には一般に、1つまたは複数の第1の動作からなる第1のグループが1つまたは複数の第2の動作に対して区別されるように、動作をグループ化することが関与する。
実際のところ、1つの実施形態は、第2の動作を開放グループとすることができる、というものであり、というのも、それらの動作は、第1のグループ内の動作の処理に続いて処理されるためである。
命令がシーケンス変更標識を含んでいないとの判定(708)が行われた場合、動作はデフォルトで第2のグループに割り当てられ(709)、それらの動作が実行される(720)。
命令が動作のシーケンスの区別を示すニーモニックを含んでいるとき、その命令が実行される(710)。
動作の分布が、ニーモニック、またはニーモニックを有する命令に基づいて、区別される(712)。動作は、区別に基づいて分離または隔離またはグループ化される(714)。一般に、分離されると、コアレッシングされない第1のグループ、またはニーモニックに基づくシーケンスで実行される動作になる。開放グループとすることのできる第2のグループは、コアレッシングされ得る。あるいは、第1のグループが、メモリコアレッシングとは無関係とすることのできる他の処理動作のために区別されてもよい。
図7に示すように、区別されて第1のグループになった動作が実行される(716)。次いで、第2のグループ内の動作が実行される(720)。
さらなる動作があるかどうかの判定が行われる(722)。さらなる動作がある場合(724)、動作のシーケンスがアクセスされる(704)。さらなる動作がない場合(726)、アルゴリズムは終了する(730)。
1つまたは複数のコンピュータ使用可能媒体またはコンピュータ可読媒体の任意の組合せが利用されてよい。コンピュータ使用可能媒体またはコンピュータ可読媒体は、例えば、それに限定されないが、電子、磁気、光学、電磁、赤外線、または半導体の、システム、装置、デバイス、または伝搬媒体とすることができる。コンピュータ可読媒体のより具体的な例(非網羅的リスト)として、次のもの、すなわち1つもしくは複数のワイヤを有する電気接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、消去可能プログラマブル読出し専用メモリ(EPROMもしくはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読出し専用メモリ(CDROM)、光学記憶デバイス、インターネットもしくはイントラネットをサポートするような伝送媒体、または磁気記憶デバイスがある。
コンピュータ使用可能媒体またはコンピュータ可読媒体は、その上にプログラムが印刷される紙または別の適切な媒体であってさえよく、というのも、プログラムは、例として紙または他の媒体の光学的走査を介して電子的に取り込み、次いで、必要に応じてコンパイルし、解釈し、またはその他の形で適切に処理し、次いでコンピュータメモリ内に格納することができるためである。本文献の文脈では、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、命令実行装置、または命令実行デバイスによって使用するための、またはそれらに関連して使用するためのプログラムを、収容、格納、通信、伝搬、または搬送することのできる、任意の媒体とすることができる。コンピュータ使用可能媒体は、コンピュータ使用可能プログラムコードがそれを用いて具現化される、ベースバンドとしての、または搬送波の一部としての、伝搬データ信号を含むことができる。コンピュータ使用可能プログラムコードは、ワイヤレス、有線、光ファイバケーブル、RFなどを含むがそれに限定されない、任意の適切な媒体を使用して、伝送されてよい。
本開示の動作を実行するためのコンピュータプログラムコードは、Java、Smalltalk、C++、C#などのオブジェクト指向プログラミング言語、および「C」プログラミング言語や同様のプログラミング言語など、従来の手続き型プログラミング言語を含む、1つまたは複数のプログラム言語の任意の組合せで記述されてよい。プログラムコードは、全体をユーザのコンピュータ上で、スタンドアロンソフトウェアパッケージとして一部をユーザのコンピュータ上で、一部をユーザのコンピュータ上でかつ一部をリモートコンピュータ上で、または全体をリモートコンピュータもしくはサーバ上で、実行することができる。後者のシナリオでは、リモートコンピュータがユーザのコンピュータにローカルエリアネットワーク(LAN)もしくは広域ネットワーク(WAN)を含む任意のタイプのネットワークを通じて接続されてもよく、(例えばインターネットサービスプロバイダを使用してインターネットを通じて)接続が外部コンピュータに対して行われてもよい。
本開示については下で、本開示の実施形態による方法、装置、システム、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して説明する。フローチャート図および/またはブロック図の各ブロック、ならびにフローチャート図および/またはブロック図内のブロックの組合せは、コンピュータプログラム命令によって実装され得る、ということが理解されよう。
これらのコンピュータプログラム命令を、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供して、マシンを生成することができ、したがって、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される命令は、フローチャートおよび/またはブロック図の1つまたは複数のブロック内に指定された機能/行為を実装するための手段を作り出す。これらのコンピュータプログラム命令は、コンピュータ可読媒体内に格納されてもよく、コンピュータ可読媒体は、コンピュータまたは他のプログラマブルデータ処理装置に、特定の様式で機能するように指示することができ、したがって、コンピュータ可読媒体内に格納された命令は、フローチャートおよび/またはブロック図の1つまたは複数のブロック内に指定された機能/行為を実装する命令手段を含む製品を生み出す。
コンピュータプログラム命令を、コンピュータまたは他のプログラマブルデータ処理装置上にロードして、コンピュータまたは他のプログラマブル装置上で一連の動作を実施させ、それによって、コンピュータ実施プロセスを生み出すこともでき、したがって、コンピュータまたは他のプログラマブル装置上で実行される命令は、フローチャートおよび/またはブロック図の1つまたは複数のブロック内に指定された機能/行為を実装するためのプロセスをもたらす。
当業者には理解されるように、実施形態は、システム、方法、またはコンピュータプログラム製品として説明することができる。したがって、本開示は、全体がハードウェアの実施形態、全体が(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)ソフトウェアの実施形態、またはソフトウェアの態様とハードウェアの態様を組み合わせた実施形態の形態をとることができ、それらはいずれも一般に、本明細書において「回路」、「モジュール」、または「システム」と呼ばれることがある。さらに、本開示は、コンピュータ使用可能プログラムコードが媒体内に具現化される、任意の有形的表現媒体内に具現化されたコンピュータプログラム製品の形態をとることもできる。
本明細書において提示したシステムおよび方法は、現況技術の向上をもたらす、ということが分かる。
したがって、開示した実施形態のいくつかを、以下に記載する。
1つの実施形態は、メモリから、実行されることになる動作のプログラムシーケンスにアクセスすることと、1つまたは複数の命令にアクセスすることとを含み、1つまたは複数の命令のうちのいくつかが、関連付けられたニーモニックを有し、命令が、動作のプログラムシーケンス内の区別を示すニーモニックを有する1つまたは複数の命令を識別することと、1つまたは複数の識別された命令を実行することと、メモリによる動作の分布を区別することとを含み、分布が、1つまたは複数の第2の動作に対する1つまたは複数の第1の動作の第1のグループを示す、ニーモニックの存在に基づき、第1のグループが1つまたは複数の第2の動作とは区別される、方法(「方法」)を対象とする。
ニーモニックに基づいて、選択された動作にメタデータタグを割り当てることをさらに含む、方法。
メタデータタグが動作のシーケンスを決定する、方法。
メタデータタグが動作の分布の区別を示す、方法。
メタデータタグがフェーズカラーを含む、方法。
メタデータタグがオーダリングタグを含む、方法。
後続の動作が異なるメタデータタグを有するようにニーモニックをリネームすることと、メタデータタグに基づいて動作をコアレッシングすることとをさらに含む、方法。
ニーモニックが整数を含む、方法。
1つまたは複数の命令を受け取ることが、命令をインターフェースを介して受け取ることを含む、方法。
1つまたは複数の後続の命令または動作に関連付けられたニーモニックを修正することをさらに含む、方法。
先行する命令が実行された後で、ニーモニックを有する1つまたは複数の動作を実行することと、ニーモニックを有する命令を実行する前に、1つまたは複数の動作をコアレッシングすることとをさらに含む、方法。
選択された動作がニーモニックとは無関係に実行される、方法。
一致するニーモニックに基づいてメモリ動作をコアレッシングすることをさらに含む、方法。
ニーモニックとは無関係に、識別された命令に基づいて動作をコアレッシングすることをさらに含む、方法。
別の実施形態は、メモリアクセスを区別する第1の命令を受け取ることと、入って来るアドレスにアクセスする第2の命令にアクセスすることと、第1の命令に第1のメタデータ値を関連付けることと、第1のメタデータ値を各メモリ動作に割り当てることによって、第1の命令を実行することと、後続のメモリ動作が第2のメタデータ値に割り当てられるように、カウンタをインクリメントすることと、第2のメタデータ値を次のデコードステージに付与することと、第1のメタデータ値を第2のメタデータ値と比較して、第1のメタデータ値が第2のメタデータ値と一致するとき、一致するメタデータ値を有する関連付けられた動作をグループ化し、第1のメタデータ値が第2のメタデータ値とは異なるとき、一致しないメタデータ値を有する関連付けられた動作をグループ化することとを含む、方法を対象とする。
第2の命令が、適合するメタデータを有するメモリ動作へのアクセスを提供する、上で説明した方法。
第1の命令に、実行とは無関係であるが他の命令のグループ化に応じて、実行された状態が割り当てられる、上で説明した方法。
第1の命令が、第1の命令より前のメモリアクセスおよび第1の命令の後のメモリアクセスを制御する、上で説明した方法。
メモリと、メモリに結合され、メモリ内に格納された命令を実行するプロセッサとを備え、命令が、メモリから、実行されることになる動作のプログラムシーケンスにアクセスすることと、1つまたは複数の命令にアクセスすることとを含み、1つまたは複数の命令のうちのいくつかが、関連付けられたニーモニックを有し、命令が、動作のプログラムシーケンス内の区別を示すニーモニックを有する1つまたは複数の命令を識別することと、1つまたは複数の識別された命令を実行することと、メモリによる動作の分布を区別することとを含み、分布が、1つまたは複数の第2の動作に対する1つまたは複数の第1の動作の第1のグループを示す、ニーモニックの存在に基づき、第1のグループが1つまたは複数の第2の動作とは区別される、装置。
本明細書において詳細に説明してきたさまざまな代表的実施形態は、限定としてではなく例として提示されている。説明した実施形態の形態および細部に、添付の特許請求の範囲に記載の範囲内に留まる等価な実施形態をもたらすさまざまな変更を加えることができることが、当業者には理解されよう。
100 システム
102 メモリ、メモリモジュール
104 インターフェース
106 プロセッサ、プロセッサモジュール
110 第1のモジュール
112(a)…(n) 双方向通信バス
114 周辺/補助モジュール
114(a)…(n) 周辺/補助モジュール
116 バッファ、メモリモジュール、バッファモジュール
118 ロードキュー、メモリモジュール、ロードキューモジュール
120 ストアキュー、メモリモジュール
122 キャッシュメモリ、メモリモジュール
126(a)、(b)…(n) インターフェース、インターフェースまたはバス
130 関連モジュール
130(a) 記憶モジュール
130(b) I/Oモジュール
130(n) 周辺/補助モジュール
200 フローチャート、一連のアクション
300 アルゴリズムまたはフローチャート
400 要素
420 メモリモジュール
422 ロードキューモジュール
424 ストアキューモジュール、ストアキュー、バッファ
522 データキャッシュメモリモジュール、データキャッシュモジュール、データキャッシュ
526 記憶域割当て
528 記憶域割当て
530 記憶域割当て
532 記憶域割当て
534 記憶域割当て
536 記憶域割当て
538 記憶域割当て
540 記憶容量サイズ
552 カラム、レジスタ
552(a)…(n) サブレジスタ
560 幅サイズ
700 フローチャート、一連のアクション

Claims (18)

  1. メモリから、命令のプログラムシーケンス内の区別を示すバリア命令を含む、実行されることになる命令前記プログラムシーケンスにアクセスするステップと、
    バリア命令を識別するステップと、
    前記バリア命令を実行するステップと、
    前記バリア命令の前にアクセスされる命令の第1のグループと、前記バリア命令の後にアクセスされる命令の第2のグループとの間で区別するステップであって、前記区別することは、前記第1および第2のグループのうちの少なくとも1つの中の命令から生じるメモリ動作がコアレッシングされることを可能にし、異なるグループの中の命令から生じるメモリ動作がコアレッシングされることを防ぐことを含む、ステップと
    を含む、方法。
  2. プロセッサによって、命令の前記第1および第2のグループの中の命令から生じるメモリ動作にメタデータタグを割り当てるステップであって、前記メタデータタグは、第1の値を有する命令の前記第1のグループの中の命令から生じるメモリ動作に割り当てられ、前記メタデータタグは、第2の値を有する命令の前記第2のグループの中の命令から生じるメモリ動作に割り当てられる、ステップをさらに含む、請求項1に記載の方法。
  3. 前記バリア命令が実行されるとき、前記プロセッサが前記第1の値から前記第2の値に前記メタデータタグを更新することをさらに含む、請求項2に記載の方法。
  4. 前記メタデータタグがアウトオブオーダメモリ動作を防止しない、請求項2に記載の方法。
  5. 前記メタデータタグがフェーズカラーを含む、請求項2に記載の方法。
  6. 前記メタデータタグが、対応する命令のグループがアクセスされた順序を示すオーダリングタグを含む、請求項2に記載の方法。
  7. 前記バリア命令を実行したことに応答して、後続の動作が異なるメタデータタグを有するように前記メタデータタグをリネームするステップと、
    前記メタデータタグに基づいてメモリ動作をコアレッシングするステップと
    をさらに含む、請求項2に記載の方法。
  8. 前記メタデータタグが整数を含む、請求項2に記載の方法。
  9. 1つまたは複数の命令にアクセスすことが、インターフェースを介して命令を受け取ることを含む、請求項1に記載の方法。
  10. 1つまたは複数の後続の命令または動作から生じるメモリ命令に関連付けられたメタデータタグを修正するステップをさらに含む、請求項2に記載の方法。
  11. 先行するバリア命令が実行された後で、メタデータタグを有する1つまたは複数のメモリ動作を実行するステップと、
    前記バリア命令を実行する前に、前記1つまたは複数のメモリ動作をコアレッシングするステップと
    をさらに含む、請求項1に記載の方法。
  12. メモリ動作の実行の順序が前記バリア命令とは無関係である、請求項1に記載の方法。
  13. 一致するメタデータタグに基づいてメモリ動作をコアレッシングするステップをさらに含む、請求項2に記載の方法。
  14. 1つまたは複数の命令の第1のグループを受け取るステップと、
    メモリアクセスを区別する第1の命令を受け取るステップと、
    1つまたは複数の命令の第2のグループを受け取るステップと、
    命令の前記第1のグループの中の命令から生じるメモリ動作に第1のメタデータ値を関連付けるステップであって、前記第1のメタデータ値がカウンタ値に基づく、ステップと、
    前記カウンタ値をインクリメントすることによって、前記第1の命令を実行するステップと、
    命令の前記第2のグループの中の命令から生じるメモリ動作に第2のメタデータ値を関連付けるステップであって、前記第2のメタデータ値が前記インクリメントされたカウンタ値に基づく、ステップと、
    第1のメモリ動作および第2のメモリ動作のメタデータ値比較して、
    前記第1のメモリ動作のメタデータ値が前記第2のメモリ動作のメタデータ値と一致するとき、一致するメタデータ値を有する前記第1および第2のメモリ動作をコアレッシングし、
    前記第1のメモリ動作のメタデータ値が前記第2のメモリ動作のメタデータ値とは異なるとき、一致しないメタデータ値を有する第1および第2のメモリ動作のコアレッシングを防ぐステップとを含む、方法。
  15. 命令の前記第1または第2のグループのうちの命令をデコードステージにおいてデコードするステップと、
    前記デコードステージの直後のメモリ動作にメタデータ値を付与するステップと
    をさらに含む、請求項14に記載の方法。
  16. 前記第1の命令が、他の命令のオーダリングを強制しない、請求項14に記載の方法。
  17. 前記第1の命令の前の命令から生じるメモリ動作が前記第1の命令の後の命令から生じるメモリ動作とコアレッシングされないように、前記第1の命令が、前記第1の命令の前のメモリアクセスおよび前記第1の命令の後のメモリアクセスを制御する、請求項14に記載の方法。
  18. 装置であって、
    メモリと、
    前記メモリに結合されプロセッサと
    を備え、前記プロセッサが、
    前記メモリから、実行されることになる命令のプログラムシーケンスにアクセスするように構成され前記命令は、命令の前記プログラムシーケンス内の区別を示すバリア命令を含み、前記プロセッサが、
    バリア命令を識別
    前記バリア命令を実行
    前記バリア命令の実行に基づいて、1つまたは複数の第2の命令の第2のグループに対する1つまたは複数の第1の命令の第1のグループを区別するように構成され、前記第1のグループが前記第2のグループとは区別され、前記区別することは、前記第1および第2のグループのうちの少なくとも1つの中の命令から生じるメモリ動作がコアレッシングされることを可能にし、異なるグループの中の命令から生じるメモリ動作がコアレッシングされることを防ぐことを含む、装置。
JP2021507785A 2018-08-16 2019-08-06 命令を実行するためのシステム、方法、および装置 Active JP7410126B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/103,995 2018-08-16
US16/103,995 US11409530B2 (en) 2018-08-16 2018-08-16 System, method and apparatus for executing instructions
PCT/GB2019/052205 WO2020035659A1 (en) 2018-08-16 2019-08-06 System, method and apparatus for executing instructions

Publications (2)

Publication Number Publication Date
JP2021535471A JP2021535471A (ja) 2021-12-16
JP7410126B2 true JP7410126B2 (ja) 2024-01-09

Family

ID=67659899

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021507785A Active JP7410126B2 (ja) 2018-08-16 2019-08-06 命令を実行するためのシステム、方法、および装置

Country Status (7)

Country Link
US (1) US11409530B2 (ja)
EP (1) EP3837600A1 (ja)
JP (1) JP7410126B2 (ja)
KR (1) KR20210033501A (ja)
CN (1) CN112567340A (ja)
IL (1) IL280585A (ja)
WO (1) WO2020035659A1 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001117772A (ja) 1999-10-14 2001-04-27 Hewlett Packard Co <Hp> コンピュータ・プログラムのハザードを検出するシステム
JP2001229024A (ja) 2000-01-06 2001-08-24 Internatl Business Mach Corp <Ibm> 基本キャッシュ・ブロックを利用したマイクロプロセッサ
JP2002510079A (ja) 1998-01-23 2002-04-02 サン・マイクロシステムズ・インコーポレーテッド メモリ・インタフェース間で読み書きの順序付けられた実行を強制する方法と装置
JP2005332387A (ja) 2004-05-04 2005-12-02 Sun Microsyst Inc メモリ命令をグループ化及び管理する方法及びシステム
US20140089589A1 (en) 2012-09-27 2014-03-27 Apple Inc. Barrier colors
JP2014063385A (ja) 2012-09-21 2014-04-10 Fujitsu Ltd 演算処理装置及び演算処理装置の制御方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3205406B2 (ja) * 1992-11-10 2001-09-04 富士通株式会社 参照対象変数決定処理方法および翻訳処理システム
US6813704B1 (en) * 2001-12-20 2004-11-02 Lsi Logic Corporation Changing instruction order by reassigning only tags in order tag field in instruction queue
JP2008027341A (ja) * 2006-07-25 2008-02-07 Matsushita Electric Ind Co Ltd 命令セットおよび情報処理装置
US7793080B2 (en) * 2007-12-31 2010-09-07 Globalfoundries Inc. Processing pipeline having parallel dispatch and method thereof
US8997103B2 (en) * 2009-09-25 2015-03-31 Nvidia Corporation N-way memory barrier operation coalescing
US20120216020A1 (en) * 2011-02-21 2012-08-23 Olson Christopher H Instruction support for performing stream cipher
US10255075B2 (en) * 2013-07-18 2019-04-09 Nvidia Corporation System, method, and computer program product for managing out-of-order execution of program instructions
US9292337B2 (en) * 2013-12-12 2016-03-22 International Business Machines Corporation Software enabled and disabled coalescing of memory transactions
GB2522990B (en) * 2013-12-20 2016-08-03 Imagination Tech Ltd Processor with virtualized instruction set architecture and methods
US9898292B2 (en) * 2015-02-25 2018-02-20 Mireplica Technology, Llc Hardware instruction generation unit for specialized processors
US10671393B2 (en) 2015-04-24 2020-06-02 International Business Machines Corporation Techniques for facilitating cracking and fusion within a same instruction group
US20180069767A1 (en) * 2016-09-06 2018-03-08 Advanced Micro Devices, Inc. Preserving quality of service constraints in heterogeneous processing systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002510079A (ja) 1998-01-23 2002-04-02 サン・マイクロシステムズ・インコーポレーテッド メモリ・インタフェース間で読み書きの順序付けられた実行を強制する方法と装置
JP2001117772A (ja) 1999-10-14 2001-04-27 Hewlett Packard Co <Hp> コンピュータ・プログラムのハザードを検出するシステム
JP2001229024A (ja) 2000-01-06 2001-08-24 Internatl Business Mach Corp <Ibm> 基本キャッシュ・ブロックを利用したマイクロプロセッサ
JP2005332387A (ja) 2004-05-04 2005-12-02 Sun Microsyst Inc メモリ命令をグループ化及び管理する方法及びシステム
JP2014063385A (ja) 2012-09-21 2014-04-10 Fujitsu Ltd 演算処理装置及び演算処理装置の制御方法
US20140089589A1 (en) 2012-09-27 2014-03-27 Apple Inc. Barrier colors

Also Published As

Publication number Publication date
US11409530B2 (en) 2022-08-09
KR20210033501A (ko) 2021-03-26
CN112567340A (zh) 2021-03-26
EP3837600A1 (en) 2021-06-23
JP2021535471A (ja) 2021-12-16
IL280585A (en) 2021-03-25
WO2020035659A1 (en) 2020-02-20
US20200057640A1 (en) 2020-02-20

Similar Documents

Publication Publication Date Title
US10467010B2 (en) Method and apparatus for nearest potential store tagging
CN108139908B (zh) 移动前缀指令
US9626189B2 (en) Reducing operand store compare penalties
KR102584035B1 (ko) 스플라이스 동작을 수행하는 장치 및 방법
US9135005B2 (en) History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties
US20120060016A1 (en) Vector Loads from Scattered Memory Locations
US20120060015A1 (en) Vector Loads with Multiple Vector Elements from a Same Cache Line in a Scattered Load Operation
US20140304492A1 (en) Method and apparatus to increase the speed of the load access and data return speed path using early lower address bits
DE102014119281A1 (de) Prozessor mit virtualisierter befehlssatzstruktur &amp; verfahren
US10649780B2 (en) Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order
TW201741867A (zh) 記憶體複製指令、處理器、方法及系統
US10209757B2 (en) Reducing power consumption in a multi-slice computer processor
US10970079B2 (en) Parallel dispatching of multi-operation instructions in a multi-slice computer processor
CN102890624B (zh) 用于管理无序毫码控制操作的方法和系统
CN105468336A (zh) 用以改善在处理器中重新执行加载的装置与方法
JP7410126B2 (ja) 命令を実行するためのシステム、方法、および装置
TWI258665B (en) Prefetch with intent to store mechanism for block memory
US20170168834A1 (en) Operation of a multi-slice processor with selective producer instruction types
WO2020117512A1 (en) Register renaming-based techniques for block-based processors
US9959122B2 (en) Single cycle instruction pipeline scheduling
CN105573714A (zh) 用以改善在处理器中重新执行加载的装置与方法
US20050066151A1 (en) Method and apparatus for handling predicated instructions in an out-of-order processor
CN105573784A (zh) 用以改善在处理器中重新执行加载的装置与方法
US10552156B2 (en) Processing operation issue control
CN105511842A (zh) 用以改善在处理器中重新执行加载的装置与方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210416

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220525

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230619

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230816

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231221

R150 Certificate of patent or registration of utility model

Ref document number: 7410126

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150