(57)【要約】  処理トランザクションのシーケンスをオーダリングするためのシステム、装置、および方法が提供される。方法は、メモリから、実行されることになる動作のプログラムシーケンスにアクセスすることを含む。命令が受け取られ、それらのうちのいくつかが識別子またはニーモニックを有し、識別子またはニーモニックは、それらの識別された動作を、識別子またはニーモニックを有していない他の動作と区別するために使用される。ニーモニックは、動作のプログラムシーケンスの実行の分布を示す。動作のプログラムシーケンスは、ニーモニックに基づいて、ある特定の動作が他の動作とは分離されるようにグループ化される。
2021535471.tif 000002
【特許請求の範囲】
【請求項１】
メモリから、実行されることになる動作のプログラムシーケンスにアクセスするステップと、
1つまたは複数の命令にアクセスするステップであって、前記1つまたは複数の命令のうちのいくつかが、関連付けられたニーモニックを有する、ステップと、
前記動作のプログラムシーケンス内の区別を示すニーモニックを有する1つまたは複数の命令を識別するステップと、
前記1つまたは複数の識別された命令を実行するステップと、
前記メモリによる動作の分布を区別するステップであって、前記分布が、1つまたは複数の第2の動作に対する1つまたは複数の第1の動作の第1のグループを示す、前記ニーモニックの存在に基づき、前記第1のグループが前記1つまたは複数の第2の動作とは区別される、ステップと
を含む、方法。
【請求項２】
前記ニーモニックに基づいて、選択された動作にメタデータタグを割り当てるステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記メタデータタグが前記動作のシーケンスを決定する、請求項2に記載の方法。
【請求項４】
前記メタデータタグが前記動作の分布の区別を示す、請求項2または3に記載の方法。
【請求項５】
前記メタデータタグがフェーズカラーを含む、請求項2から4のいずれか一項に記載の方法。
【請求項６】
前記メタデータタグがオーダリングタグを含む、請求項2から5のいずれか一項に記載の方法。
【請求項７】
後続の動作が異なるメタデータタグを有するように前記ニーモニックをリネームするステップと、
前記メタデータタグに基づいて動作をコアレッシングするステップと
をさらに含む、請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記ニーモニックが整数を含む、請求項1から7のいずれか一項に記載の方法。
【請求項９】
前記1つまたは複数の命令を受け取るステップが、インターフェースを介して命令を受け取るステップを含む、請求項1から8のいずれか一項に記載の方法。
【請求項１０】
1つまたは複数の後続の命令または動作に関連付けられたニーモニックを修正するステップをさらに含む、請求項1から9のいずれか一項に記載の方法。
【請求項１１】
先行する命令が実行された後で、ニーモニックを有する1つまたは複数の動作を実行するステップと、
ニーモニックを有する命令を実行する前に、1つまたは複数の動作をコアレッシングするステップと
をさらに含む、請求項1から10のいずれか一項に記載の方法。
【請求項１２】
選択された動作が前記ニーモニックとは無関係に実行される、請求項1から11のいずれか一項に記載の方法。
【請求項１３】
一致するニーモニックに基づいてメモリ動作をコアレッシングするステップをさらに含む、請求項1から12のいずれか一項に記載の方法。
【請求項１４】
ニーモニックとは無関係に、識別された命令に基づいて動作をコアレッシングするステップをさらに含む、請求項1から12のいずれか一項に記載の方法。
【請求項１５】
メモリアクセスを区別する第1の命令を受け取るステップと、
入って来るアドレスにアクセスする第2の命令を受け取るステップと、
前記第1の命令に第1のメタデータ値を関連付けるステップと、
前記第1のメタデータ値を各メモリ動作に割り当てることによって、前記第1の命令を実行するステップと、
後続のメモリ動作が第2のメタデータ値に割り当てられるように、カウンタをインクリメントするステップと、
前記第2のメタデータ値を次のデコードステージに付与するステップと、
前記第1のメタデータ値を前記第2のメタデータ値と比較して、
前記第1のメタデータ値が前記第2のメタデータ値と一致するとき、一致するメタデータ値を有する関連付けられた動作をグループ化し、
前記第1のメタデータ値が前記第2のメタデータ値とは異なるとき、一致しないメタデータ値を有する関連付けられた動作をグループ化する
ステップとを含む、方法。
【請求項１６】
前記第2の命令が、適合するメタデータを有するメモリ動作へのアクセスを提供する、請求項15に記載の方法。
【請求項１７】
前記第1の命令に、実行とは無関係であるが他の命令のグループ化に応じて、実行された状態が割り当てられる、請求項15または16に記載の方法。
【請求項１８】
前記第1の命令が、前記第1の命令の前のメモリアクセスおよび前記第1の命令の後のメモリアクセスを制御する、請求項15から17のいずれか一項に記載の方法。
【請求項１９】
メモリと、
前記メモリに結合され、前記メモリ内に格納された命令を実行するプロセッサと
を備え、前記命令が、
前記メモリから、実行されることになる動作のプログラムシーケンスにアクセスすることと、
1つまたは複数の命令にアクセスすることとを含み、前記1つまたは複数の命令のうちのいくつかが、関連付けられたニーモニックを有し、前記命令が、
前記動作のプログラムシーケンス内の区別を示すニーモニックを有する1つまたは複数の命令を識別することと、
前記1つまたは複数の識別された命令を実行することと、
前記メモリによる動作の分布を区別することとを含み、前記分布が、1つまたは複数の第2の動作に対する1つまたは複数の第1の動作の第1のグループを示す、前記ニーモニックの存在に基づき、前記第1のグループが前記1つまたは複数の第2の動作とは区別される、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令を実行するためのシステム、方法、および装置に関する。
【背景技術】
【０００２】
多くの命令実行システムでは、メモリアクセスをコアレッシングすることが望ましい。しかし、メモリコアレッシングは、典型的には、いくつかの効率上の利点を有するが、場合によっては、命令同士がグループ化され、それによって、コアレッシングしようとする取り組みが望ましいものではなくなる、ということもある。
【０００３】
コンピューティングシステムが発展するにつれて、望ましくないメモリアクセスを防ぐべく、メモリアクセスを制限するいくつかの既存のバリア命令技法が開発されてきた。典型的な既存のバリア命令技法は、メモリオーダリングを強制することによって命令のオーダリングを達成しようと試みるものであるが、そのような強制は、必要以上に遅く、デバイスメモリにとって過度の負担になることがある。既存のバリアのセマンティクスに関与するようにメモリシステムを変更しようとする試みは、受け入れがたいほど困難で、合理的ではない。さらに、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  フローチャート、一連のアクション
【図１】
2021535471.tif 000003
【図２】
2021535471.tif 000004
【図３】
2021535471.tif 000005
【図４】
2021535471.tif 000006
【図５】
2021535471.tif 000007
【図６】
2021535471.tif 000008
【図７】
2021535471.tif 000009
【手続補正書】
【提出日】令和3年4月16日(2021.4.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリから、実行されることになる動作のプログラムシーケンスにアクセスするステップと、
1つまたは複数の命令にアクセスするステップであって、前記1つまたは複数の命令のうちのいくつかが、関連付けられたニーモニックを有する、ステップと、
前記動作のプログラムシーケンス内の区別を示すニーモニックを有する1つまたは複数の命令を識別するステップと、
前記1つまたは複数の識別された命令を実行するステップと、
前記メモリによる動作の分布を区別するステップであって、前記分布が、1つまたは複数の第2の動作に対する1つまたは複数の第1の動作の第1のグループを示す、前記ニーモニックの存在に基づき、前記第1のグループが前記1つまたは複数の第2の動作とは区別される、ステップと
を含む、方法。
【請求項２】
前記ニーモニックに基づいて、選択された動作にメタデータタグを割り当てるステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記メタデータタグが前記動作のシーケンスを決定する、請求項2に記載の方法。
【請求項４】
前記メタデータタグが前記動作の分布の区別を示す、請求項2に記載の方法。
【請求項５】
前記メタデータタグがフェーズカラーを含む、請求項2に記載の方法。
【請求項６】
前記メタデータタグがオーダリングタグを含む、請求項2に記載の方法。
【請求項７】
後続の動作が異なるメタデータタグを有するように前記ニーモニックをリネームするステップと、
前記メタデータタグに基づいて動作をコアレッシングするステップと
をさらに含む、請求項1に記載の方法。
【請求項８】
前記ニーモニックが整数を含む、請求項1に記載の方法。
【請求項９】
前記1つまたは複数の命令を受け取るステップが、インターフェースを介して命令を受け取るステップを含む、請求項1に記載の方法。
【請求項１０】
1つまたは複数の後続の命令または動作に関連付けられたニーモニックを修正するステップをさらに含む、請求項1に記載の方法。
【請求項１１】
先行する命令が実行された後で、ニーモニックを有する1つまたは複数の動作を実行するステップと、
ニーモニックを有する命令を実行する前に、1つまたは複数の動作をコアレッシングするステップと
をさらに含む、請求項1に記載の方法。
【請求項１２】
選択された動作が前記ニーモニックとは無関係に実行される、請求項1に記載の方法。
【請求項１３】
一致するニーモニックに基づいてメモリ動作をコアレッシングするステップをさらに含む、請求項1に記載の方法。
【請求項１４】
ニーモニックとは無関係に、識別された命令に基づいて動作をコアレッシングするステップをさらに含む、請求項1に記載の方法。
【請求項１５】
メモリアクセスを区別する第1の命令を受け取るステップと、
入って来るアドレスにアクセスする第2の命令を受け取るステップと、
前記第1の命令に第1のメタデータ値を関連付けるステップと、
前記第1のメタデータ値を各メモリ動作に割り当てることによって、前記第1の命令を実行するステップと、
後続のメモリ動作が第2のメタデータ値に割り当てられるように、カウンタをインクリメントするステップと、
前記第2のメタデータ値を次のデコードステージに付与するステップと、
前記第1のメタデータ値を前記第2のメタデータ値と比較して、
前記第1のメタデータ値が前記第2のメタデータ値と一致するとき、一致するメタデータ値を有する関連付けられた動作をグループ化し、
前記第1のメタデータ値が前記第2のメタデータ値とは異なるとき、一致しないメタデータ値を有する関連付けられた動作をグループ化する
ステップとを含む、方法。
【請求項１６】
前記第2の命令が、適合するメタデータを有するメモリ動作へのアクセスを提供する、請求項15に記載の方法。
【請求項１７】
前記第1の命令に、実行とは無関係であるが他の命令のグループ化に応じて、実行された状態が割り当てられる、請求項15に記載の方法。
【請求項１８】
前記第1の命令が、前記第1の命令の前のメモリアクセスおよび前記第1の命令の後のメモリアクセスを制御する、請求項15に記載の方法。
【請求項１９】
メモリと、
前記メモリに結合され、前記メモリ内に格納された命令を実行するプロセッサと
を備え、前記命令が、
前記メモリから、実行されることになる動作のプログラムシーケンスにアクセスすることと、
1つまたは複数の命令にアクセスすることとを含み、前記1つまたは複数の命令のうちのいくつかが、関連付けられたニーモニックを有し、前記命令が、
前記動作のプログラムシーケンス内の区別を示すニーモニックを有する1つまたは複数の命令を識別することと、
前記1つまたは複数の識別された命令を実行することと、
前記メモリによる動作の分布を区別することとを含み、前記分布が、1つまたは複数の第2の動作に対する1つまたは複数の第1の動作の第1のグループを示す、前記ニーモニックの存在に基づき、前記第1のグループが前記1つまたは複数の第2の動作とは区別される、装置。
【国際調査報告】
2021535471.tif 000010
2021535471.tif 000011