(57)【要約】実行ユニット内のロードストアユニットをバイパスすることによって、同じメモリアドレスからストア及びロードする場合のロードレイテンシを減少させるために、ストア及びロードを追跡するシステム及び方法を開示する。システム及び方法は、データを、１つ以上のメモリ依存アーキテクチャレジスタ番号（ＭｄＡｒｎ）に記憶することと、１つ以上のＭｄＡｒｎをＭＥＭＦＩＬＥに割り当てることと、割り当てられた１つ以上のＭｄＡｒｎをマップファイルに書き込むことであって、マップファイルは、ＭＥＭＦＩＬＥ内のエントリへの後続のアクセスを可能にするためのＭｄＡｒｎマップを含む、ことと、ロード要求を受信すると、マップファイルを介してベース、インデックス、ディスプレイスメント及び一致／ヒットをチェックして、ＭＥＭＦＩＬＥ内のエントリと、関連するストアと、を識別することと、ヒットの場合に、１つ以上のＭｄＡｒｎからのロード要求に応じて当該エントリを提供することと、を含む。【選択図】図３
2019525355.tif 000002
【特許請求の範囲】
【請求項１】
実行ユニット内のロードストア（ＬＳ）ユニットをバイパスすることによって、同じメモリアドレスからストア及びロードする場合のロードレイテンシを減少させるために、ストア及びロードを追跡する方法であって、
データを、１つ以上のメモリ依存アーキテクチャレジスタ番号（ＭｄＡｒｎ）に記憶することと、
前記１つ以上のＭｄＡｒｎを、インメモリファイルキャッシュに割り当てることと、
割り当てられた前記１つ以上のＭｄＡｒｎをファイルへ書き込むことであって、前記ファイルは、前記インメモリファイルキャッシュ内のエントリへの後続のアクセスを可能にするためのＭｄＡｒｎマップを含む、ことと、
ロード要求を受信すると、前記ファイルを介してベース、インデックス、ディスプレイスメント及び一致／ヒットをチェックして、前記インメモリファイルキャッシュ内のエントリと、関連するストアと、を識別することと、
ヒットの場合に、前記１つ以上のＭｄＡｒｎからの前記ロード要求に応じて前記エントリを提供することと、を含む、
方法。
【請求項２】
フリーデスティネーションを物理レジスタファイル（ＰＲＦ）に割り当てることをさらに含む、
請求項１の方法。
【請求項３】
ヒットの場合に、前記ＬＳユニットがロード要求に応じてデータを返すことを抑制することをさらに含む、
請求項１の方法。
【請求項４】
前記抑制することは、スケジューラによって実行される、
請求項３の方法。
【請求項５】
前記スケジューラは、算術論理ユニット（ＡＬＵ）スケジューラ（ＡＬＳＱ）を含む、
請求項４の方法。
【請求項６】
前記スケジューラは、アドレス生成ユニット（ＡＧＵ）スケジューラ（ＡＧＳＱ）を含む、
請求項４の方法。
【請求項７】
実行ユニット内のロードストア（ＬＳ）ユニットをバイパスすることによって、同じメモリアドレスからストア及びロードする場合のロードレイテンシを減少させるために、ストア及びロードを追跡するシステムであって、
データを記憶するための複数のメモリ依存アーキテクチャレジスタ番号（ＭｄＡｒｎ）と、
前記複数のＭｄＡｒｎのうち少なくとも１つを割り当てるためのインメモリファイルキャッシュと、
ＭｄＡｒｎマップを書き込むためのファイルと、を備え、
ロード要求を受信すると、前記ファイルを介してベース、インデックス、ディスプレイスメント及び一致／ヒットをチェックして、前記インメモリファイルキャッシュ内のエントリと、関連するストアと、を識別することと、
ヒットの場合に、前記複数のＭｄＡｒｎのうち少なくとも１つからの前記ロード要求に応じて前記エントリを提供することと、
を行うように構成されている、
システム。
【請求項８】
フリーデスティネーションを割り当てるための物理レジスタファイル（ＰＲＦ）をさらに備える、
請求項７のシステム。
【請求項９】
ヒットの場合に、前記ＬＳユニットがロード要求に応じてデータを返すことを抑制することをさらに行うように構成されている、
請求項７のシステム。
【請求項１０】
前記抑制することは、スケジューラによって実行される、
請求項９のシステム。
【請求項１１】
前記スケジューラは、算術論理ユニット（ＡＬＵ）スケジューラ（ＡＬＳＱ）を含む、
請求項１０のシステム。
【請求項１２】
前記スケジューラは、アドレス生成ユニット（ＡＧＵ）スケジューラ（ＡＧＳＱ）を含む、
請求項１０のシステム。
【請求項１３】
前記チェックすることは、スケジューラ及び／又は実行ユニットによって実行される、
請求項７のシステム。
【請求項１４】
実行ユニット内のロードストア（ＬＳ）ユニットをバイパスすることによって、同じメモリアドレスからストア及びロードする場合のロードレイテンシを減少させるために、ストア及びロードを追跡する方法をコンピュータに実行させるプログラム命令を含むコンピュータ可読記憶媒体であって、
前記方法は、
データを、１つ以上のメモリ依存アーキテクチャレジスタ番号（ＭｄＡｒｎ）に記憶することと、
前記１つ以上のＭｄＡｒｎを、インメモリファイルキャッシュに割り当てることと、
割り当てられた前記１つ以上のＭｄＡｒｎをファイルへ書き込むことであって、前記ファイルは、前記インメモリファイルキャッシュ内のエントリへの後続のアクセスを可能にするためのＭｄＡｒｎマップを含む、ことと、
ロード要求を受信すると、前記ファイルを介してベース、インデックス、ディスプレイスメント及び一致／ヒットをチェックして、前記インメモリファイルキャッシュ内のエントリと、関連するストアと、を識別することと、
ヒットの場合に、前記１つ以上のＭｄＡｒｎからの前記ロード要求に応じて前記エントリを提供することと、を含む、
コンピュータ可読記憶媒体。
【請求項１５】
前記方法は、フリーデスティネーションを物理レジスタファイル（ＰＲＦ）にフリーデスティネーションを割り当てることをさらに含む、
請求項１４のコンピュータ可読記憶媒体。
【請求項１６】
前記方法は、ヒットの場合に、前記ＬＳユニットがロード要求に応じてデータを返すことを抑制することをさらに含む、
請求項１４のコンピュータ可読記憶媒体。
【請求項１７】
前記抑制することは、スケジューラによって実行される、
請求項１６のコンピュータ可読記憶媒体。
【請求項１８】
前記スケジューラは、算術論理ユニット（ＡＬＵ）スケジューラ（ＡＬＳＱ）を含む、
請求項１７のコンピュータ可読記憶媒体。
【請求項１９】
前記スケジューラは、アドレス生成ユニット（ＡＧＵ）スケジューラ（ＡＧＳＱ）を含む、
請求項１７のコンピュータ可読記憶媒体。
【請求項２０】
前記チェックすることは、スケジューラ及び／又は実行ユニットによって実行される、
請求項１４のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
（関連出願の相互参照）
本願は、２０１６年８月１９日に出願された米国仮特許出願第６２／３７７，３０１号及び２０１６年１２月１５日に出願された米国特許出願第１５／３８０，７７８号の利益を主張し、その内容は、完全に記載されているかのように、参照により本明細書に組み込まれる。
【０００２】
現在のコンピュータシステムは、ロードキュー及びストアキューを使用してメモリアクセス用のロード及びストアを提供する。一般に、これらのシステムは、ストアツーロード（store-to-load）転送を使用して動作する。しかしながら、ストアツーロード転送は、ロード及びストアが同一のアドレスを対象とする状況では、レイテンシが最小のソリューションを提供することができない。
【０００３】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解が得られるであろう。
【図面の簡単な説明】
【０００４】
【図１】特定の実施形態による、プロセッサのコア処理ユニットを示す図である。
【図２】図１のコア処理ユニット内のデータアクセスを処理するロードストア（ＬＳ）ユニットを示す図である。
【図３】図１のコア処理ユニット内のＬＳユニットと関連するメモリリネーミングのハードウェアフローを示す図である。
【図４】図１のコア処理ユニット内のＬＳユニットと関連するメモリリネーミング方法を示す図である。
【図５】１つ以上の開示された実施例の１つ以上の部分を実装することができる例示的なデバイスを示す図である。
【発明を実施するための形態】
【０００５】
メモリリネーミングは、同じアドレスへのストア及びロードを追跡し、ロードが関連するストアに続く場合に、ロードストアユニットをバイパスする方法である。このシナリオは、頻繁に起こる可能性がある。一例として、メモリリネーミングは、プログラムがストアキューを介してデータを記憶し、他の処理を実行し、次にロードキューを介して同じデータをロードする場合に必要とされる。このロードは、関連するストアに続く。プログラムは、最近記憶されたデータをロードしようとすることが多い。
【０００６】
ロードストアユニットをバイパスすることによってストア及びロードを追跡するシステム及び方法が開示される。このシステム及び方法は、１つ以上のメモリ依存アーキテクチャレジスタ番号（ＭｄＡｒｎ）にデータを記憶することを含む。１つ以上のＭｄＡｒｎがインメモリファイルキャッシュ（ＭＥＭＦＩＬＥ）に割り当てられている。割り当てられた１つ以上のＭｄＡｒｎはマップファイルに書き込まれ、マップファイルは、ＭＥＭＦＩＬＥ内のエントリへの後続のアクセスを可能にするＭｄＡｒｎマップを含む。ロード要求を受信すると、マップファイルを介してベース、インデックス、ディスプレイスメント及びマッチ／ヒットをチェックして、ＭＥＭＦＩＬＥ内のエントリ及び関連するストアを識別する。ヒット時に、１つ以上のＭｄＡｒｎからのロード要求に応じてエントリを提供する。
【０００７】
図１は、特定の実施形態による、プロセッサ１００のコア処理ユニット１０５のハイレベルブロック図及びフロー図である。コア処理ユニット１０５は、マイクロ動作（マイクロオペレーション）をスケジューラ及び／又は実行ユニット１１５に提供するデコーダユニット１１０を含むが、これに限定されない。デコーダユニット１１０は、キャッシュ１２２及びマイクロ動作キャッシュ１２４の各々に接続された分岐予測器１２０を含むが、これに限定されない。また、キャッシュ１２２は、デコーダ１２６に接続されている。デコーダ１２６及びマイクロ動作キャッシュ１２４の各々は、マイクロ動作キュー１２８に接続されている。
【０００８】
スケジューラ及び／又は実行ユニット１１５は、整数スケジューラ及び／又は実行ユニット１３０と、浮動小数点スケジューラ及び／又は実行ユニット１３２と、を含むが、これらに限定されず、これらの両方は、キャッシュ１３４に接続されている。また、キャッシュ１３４は、Ｌ２キャッシュ１３６と、ロードキュー１３８と、ストアキュー１４０と、に接続されている。ロードキュー１３８、ストアキュー１４０及びキャッシュ１３４は、まとめてロードストア（ＬＳ）ユニット１３９と呼ばれる。
【０００９】
整数スケジューラ及び／又は実行ユニット１３０は、算術論理ユニット（ＡＬＵ）スケジューラキュー（ＡＬＳＱ）１５２と、アドレス生成ユニット（ＡＧＵ）スケジューラキュー（ＡＧＳＱ）１５４と、を含むスケジューラ１５１に接続された整数リネーマ（integer renamer）１５０を含むが、これに限定されない。また、スケジューラ１５１（特に、ＡＬＳＱ１５２及びＡＧＳＱ１５４）は、ＡＬＵ１５６及びＡＧＵ１５８の各々に接続されている。整数スケジューラ及び／又は実行ユニット１３０は、整数物理レジスタファイル１６０を含む。
【００１０】
浮動小数点スケジューラ及び／又は実行ユニット１３２は、スケジューラ１７２に接続された浮動小数点リネーマ（floating point renamer）１７０を含むが、これに限定されない。また、スケジューラ１７２は、乗算器１７４及び加算器１７６の各々に接続されている。さらに、浮動小数点スケジューラ及び／又は実行ユニット１３２は、浮動小数点物理レジスタファイル１７８を含む。
【００１１】
パイプラインプロセッサは、命令のストリームをパイプラインに安定に供給する必要がある。分岐予測器１２０は、何れの命令セットをパイプラインプロセッサでフェッチして実行するかを予測する。これらの命令は、フェッチされ、キャッシュ１２２に記憶され、キャッシュ１２２から読み出されるときにデコーダ１２６によって動作にデコードされる。マイクロ動作キャッシュ１２４は、デコーダ１２６がマイクロ動作を生成する場合にマイクロ動作をキャッシュする。マイクロ動作キュー１２８は、マイクロ動作を実行のためにディスパッチする目的で、デコーダ１２６及びマイクロ動作キャッシュ１２４からのマイクロ動作を記憶してキューに入れる。
【００１２】
従来のパイプライン処理では、マイクロ動作キューは、特定の動作（例えば、ロード又はストア動作）を、ペイロード（例えば、動作からデコードされた制御情報等）と、マイクロ動作に関連するメモリアドレスと、を保持するロードキュー及び／又はストアキューに直接ディスパッチする。例示すると、ストアキューは、マイクロ動作キューから複数の動作を受け入れ、ディスパッチ時にペイロードをストアキューに書き込むことができる。次に、アドレス生成時に、ストアキューは、スケジューラからキューインデックスを受信し、何れのストアエントリが処理されているかを特定する。スケジューラは、ディスパッチペイロードを読み出し、セグメンテーションチェックのためにセグメンテーションロジックに送信し、マイクロ動作パイプライン上での可能なピックのためにロードキューに送信する。すなわち、従来のパイプライン処理は、ストアキュー及びロードキューに対する２パス書き込み処理であり、ペイロードのディスパッチ時に１回書き込みし、メモリ内のアドレス生成時に再度の書き込みを行う。
【００１３】
一実施形態によれば、マイクロ動作は、従来のパイプライン処理のようにロードキュー１３８及びストアキュー１４０に直接書き込むのではなく、整数スケジューラ及び／又は実行ユニット１３０及び浮動小数点スケジューラ及び／又は実行ユニット１３２のみにディスパッチされる。特に、マイクロ動作は、（１）整数リネーマ１５０を介してスケジューラ１５１に送られ、（２）浮動小数点リネーマ１７０を介してスケジューラ１７２に送られる。スケジューラ１５１は、ＡＧＳＱ１５４において、マイクロ動作のディスパッチペイロード（例えば、ストアマイクロ動作のディスパッチペイロード）の全てを保持する。すなわち、ＡＧＳＱ１５４は、適切なロードキュー１３８又はストアキュー１４０内のキューエントリが利用可能になるまで、マイクロ動作（例えば、ロード及びストアマイクロ動作）を保持する。キューエントリが利用可能になり、物理レジスタファイル１６０についてのソースが準備されると、ＡＧＳＱ１５４は、アドレスを生成し、ディスパッチペイロードを読み出し、ディスパッチペイロードをロードキュー１３８及び／又はストアキュー１４０に送信する。
【００１４】
エイジオーダー（age-order）の動作又は順番通り（in-order）のキューを維持するために、全てのストアマイクロ動作は、特定のキューエントリ又はキュー識別子と関連付けられる。特に、スケジューラ１５１は、ＡＧＳＱ１５４がアドレス生成をいつ実行することができるか、及び、スケジューラ１５１が記憶されたデータ（すなわち、ディスパッチペイロード）をストアキュー１４０にいつ送信することができるかを知る必要がある。したがって、特定のキューは、当該特定のキューが利用可能であるときにストアキュー１４０によってＡＧＳＱ１５４に通信される。この通信チェーンは図１に具体的に示されていないが、この通信は、一般的な事項として提供される。
【００１５】
ロードキュー１３８及びストアキュー１４０は、コミット−割り当て解除信号をスケジューラ１５１（ＡＧＳＱ１５４及びＡＬＳＱ１５２）に送信して、スケジューラ１５１（ＡＧＳＱ１５４及びＡＬＳＱ１５２）が、古いストアマイクロ動作が各々のストアキューエントリを割り当て解除して解放するときに、アドレス生成又は若いストアマイクロ動作のストアデータの送信を可能にするように、最古のストアマイクロ動作のストアキューエントリインデックスを更新することができる。これは、例えば、ロードキュー１３８及びストアキュー１４０からの出力（図示省略）を、スケジューラ１５１（ＡＧＳＱ１５４及びＡＬＳＱ１５２）の入力に追加することによって実施することができる。
【００１６】
全てのディスパッチ情報をＡＧＳＱ１５４に保持し、アドレス生成時までストアキューの割り当てを遅らせる（例えば、ストアキューエントリが前のストアマイクロ動作によってまだ使用中であるストアマイクロ動作のデータを記憶する）ことによって、ストアキュー１４０のサイズよりも多くのストアマイクロ動作をディスパッチすることができる。ディスパッチストールの原因を排除することによって、さらなるマイクロ動作をウィンドウ内に導入し、これらの作業を開始するのを可能にすることができる。何れのストアマイクロ動作も、そのストアキューエントリ内の前のストアの割り当てが解除されるまで開始することができないが、他のマイクロ動作を続行することができる。これは、キャッシュミスを開始するために、キャッシュミスである可能性があるロードが、アドレス生成をディスパッチ及び／又は実行するのを可能にする。
【００１７】
ストアキューエントリよりも多くの数のストアをウィンドウ内で処理するためのサポートには、マイクロ動作のエイジ（age）を比較するための方法が必要である。エイジを比較するための方法は、マイクロ動作に関連するストアキューエントリ番号と、ストアキューエントリ番号に付随する「ラップ」ビットと、を使用することによって提供される。ラップビットは、関連するストアマイクロ動作が、ストアキューエントリの何れの「エポック」を使用するかを決定する。単一のラップビットは、フルストアキュー（ＸＣ＿ＳＴＱＤＥＰＴＨ）のディスパッチが可能になる、ストアキューの２つの異なる「ラップ」又は「エポック」を追跡する方法を提供する。ストアキューエントリよりも多くのストアマイクロ動作のディスパッチが可能な場合、ウィンドウ内に同じストアキューエントリを有するマイクロ動作が存在する場合だけでなく、ストアキューの複数の異なる「ラップ」又は「エポック」からのマイクロ動作が存在する場合がある。合計で２つのラップビットに対して１つの追加のラップビットは、ストアキューの４つの異なる「ラップ」又は「エポック」を追跡するための方法を提供し、ストアキューの深さの３倍までのディスパッチを可能にする。
【００１８】
図示した例では、実装されたアーキテクチャが４４のストアキューの深さを有し、（アドレス生成時には、最大２８の追加のマイクロ動作ストアに対して）２つの１４エントリのＡＧＳＱがある場合、ウィンドウ内にディスパッチすることが可能なストアの合計は７２になる。したがって、プロセッサは、ストアキューの深さの２倍を超えてディスパッチしない。２つのラップビットは、マシン内の７２のストアマイクロ動作の全てのエイジを追跡し比較するのに十分であり、ディスパッチストールは必要とされない。ラップビットは、ディスパッチ時に計算され、ＡＧＳＱペイロードに保持される。ＡＧＳＱスケジューラの深さがストアキューの深さの３倍を超えるストアのディスパッチを可能にする場合には、追加のラップビットを加えて、任意の数のストアのディスパッチを可能にすることができる。
【００１９】
ロードマイクロ動作は、必ずしもエイジオーダーではなく、当業者に知られている他の技術を使用して、命令の実行順序を制御することが可能である。一実施形態では、ロードマイクロ動作は、ストアマイクロ動作と同様に動作することが可能である。
【００２０】
アーキテクチャの観点からは、本明細書に記載の実施形態は、上記で概説した問題を解決する。第１に、ストアキュー内のディスパッチペイロード書き込みポートの数が低減される。例えば、ディスパッチペイロード書き込みポートの数を、４つ（ディスパッチ時に１サイクル当たり４ストア）から２つ（１サイクル当たり２ストアアドレス生成）に低減することができる。第２に、困難なタイミングパスが排除される。例えば、キューインデックスをストアキューに送信することと、ペイロードを読み出すことと、ペイロードをセグメンテーションロジック及びロードキューに送信することと、を含むタイミングパスが排除される。
【００２１】
ＡＧＳＱ１５４によってアドレス生成が実行され、データ／ディスパッチペイロードが必要に応じてロードキュー１３８及びストアキュー１４０に記憶されると、コア処理ユニット１０５は、マイクロ動作を実行する。ロードキュー１３８及びストアキュー１４０の各々は、ロードマイクロ動作のデータを返し、ストアマイクロ動作の書き込みを実行する。他のタイプの動作について、スケジューラ１５１及びスケジューラ１７２は、各々のソースの準備が整うと、マイクロ動作を、整数スケジューラ及び／又は実行ユニット１３０と、浮動小数点スケジューラ及び／又は実行ユニット１３２と、に発行する。
【００２２】
本明細書において以下により詳細に説明するように、デコーダ１２６、物理レジスタファイル１６０及びＬＳユニット１３９は、通信可能に接続されている。
【００２３】
図２は、プロセッサ１００内でデータアクセスを処理するためのロードストア（ＬＳ）ユニット１３９を示す図である。ＬＳユニット１３９は、データキャッシュ２２０に動作可能に接続されたロードキュー２１０及びストアキュー２１５を含む。ＬＳユニット１３９は、独立したパイプライン（集合的に）２２５，２３０に構成されている。一実施形態では、ＬＳユニット１３９は、３つのパイプライン（集合的に）２２５，２３０を含み、１サイクルあたり２つのロードメモリ動作２２５Ａ，２２５Ｂと、１つのストアメモリ動作２３０の実行を可能にする。
【００２４】
ＬＳユニット１３９のロードキュー２１０は、複数のエントリを含む。一実施形態では、ロードキュー２１０は、４４個のエントリを含む。ロードキュー２１０は、ディスパッチ時にロード動作を受信し、ロードは、完了して、整数スケジューラ及び／又は実行ユニット１３０か浮動小数点スケジューラ及び／又は実行ユニット１３２にデータを配信する場合に、ロードキュー２１０を出る。
【００２５】
ストアキュー２１５は、複数のエントリを含む。一実施形態では、ストアキュー２１５は、４４個のエントリを含む。この例は、上記の例のロードキュー２１０のエントリ数と等しいが、ロードキュー２１０及びストアキュー２１５に等しい数のエントリは必要ではない。ストアキュー２１５は、ストアデータがデータキャッシュ２２０に書き込まれるまでディスパッチからストアを保持する。
【００２６】
データキャッシュ２２０は、Ｌ２  ２３５へのストレージが実行されるまでデータをキャッシュする。データキャッシュ２２０は、データを記憶するハードウェア又はソフトウェアコンポーネントであるため、そのデータに対する将来の要求をより迅速に提供することが可能である。データキャッシュ２２０に記憶されたデータは、以前の計算の結果、他の場所に記憶されたデータの複製、又は、ストアキュー２１５からのストアデータとすることができる。Ｌ２  ２３５は、データキャッシュ２２０のより遅い及び／又はより大きいバージョンとすることができる。
【００２７】
ＬＳユニット１３９は、動作を動的に再順序付けして、ロードキュー２１０を用いて古いロードをバイパスするロード動作と、ストアキュー２１５を用いて古い非競合ストアをバイパスするストア動作と、の両方をサポートする。ＬＳユニット１３９は、プロセッサがロードキュー２１０及びストアキュー２１５を介してプロセッサ１００のシステムアーキテクチャによって定義されたアーキテクチャ上のロード／ストア順序付け規則に確実に準拠するようにする。
【００２８】
ＬＳユニット１３９は、全てのロードのバイトを含む古いストアがある場合にストアツーロード転送（ＳＴＬＦ）をサポートし、ストアのデータは、生成され、ストアキュー２１５内で利用可能である。ＳＴＬＦからのロードは、ストア内に完全に含まれる限り、ストアに関する特定のアライメントを必要としない。
【００２９】
プロセッサ１００を含むコンピューティングシステムでは、ＳＴＬＦ適格性を判別するために特定のアドレスビットが割り当てられる。重要なことに、コンピュータシステムは、同じアドレスビットを有する複数のストアが、同時に処理中の異なるアドレスに向けられることを回避する。これは、ロードがＳＴＬＦを必要とする可能性がある場合である。一般に、ストアに続く同様のアドレスビットへのロードは、同じレジスタを使用し、アクセスが密接にグループ化される。このグループ化は、可能な場合にストア及びロードによって使用されるレジスタへの変更又は書き込みに介在するのを回避する。これにより、ＬＳユニット１３９は、「インフライト」ロード／ストアを追跡することができる。例えば、ＬＳユニット１３９は、「インフライト」キャッシュミスを追跡することができる。
【００３０】
ＬＳユニット１３９及び関連するパイプライン２２５Ａ，２２５Ｂ，２３０は、単純なアドレス生成モード用に最適化されている。ベース＋ディスプレイスメント、ベース＋インデックス及びディスプレイスメントのみのアドレッシングモード（ディスプレイスメントサイズにかかわらず）は、単純なアドレッシングモードとみなされ、４サイクルのロードツーユース（load-to-use）整数ロードレイテンシと、７サイクルのロードツーユース浮動小数点（ＦＰ）ロードレイテンシと、を実現する。インデックス及びディスプレイスメントの両方が存在するアドレッシングモード（例えば、ベース＋インデックス＋ディスプレイスメントを有する、一般的に使用される３ソースアドレッシングモード等）と、スケールドインデックス（例えば、×２、×４、×８等）を利用するアドレッシングモードとは、複雑なアドレッシングモードとみなされ、このアドレスを計算するために追加のレイテンシサイクルが必要である。複雑なアドレッシングモードは、５サイクル（整数）／８サイクル浮動小数点ロードツーユースレイテンシを実現する。概して、これらのシステムは、複雑さ（例えば、レイテンシセンシティブコードにおけるスケールドインデックス又はインデックス＋ディスプレイスメントアドレッシングモード等）を回避することによって動作する。
【００３１】
図３は、図１のコア処理ユニット１０５内のＬＳユニット１３９と関連するメモリリネーミングのハードウェアフロー３００を示す図である。図３は、ＬＳユニット１３９をバイパスすることによってストア及びロードを追跡するハードウェアフロー３００を示している。特に、メモリリネーミングは、ロードが関連するストアに続く場合に、ＬＳユニット１３９をバイパスしながら同じアドレスへのストア及びロードを追跡する方法である。メモリリネーミングを使用して、ストアからロードへのデータの転送を最適化する。メモリリネーミングの使用は、概して、ＬＳユニット１３９のリソースを含まずに動作する。実質的に、メモリリネーミングは、整数スケジューラ及び／又は実行ユニット１３０と、浮動小数点スケジューラ及び／又は実行ユニット１３２と、にデータを「記憶」することが可能になる。
【００３２】
概して、「記憶」することを可能にするために、メモリ依存アーキテクチャレジスタ番号（ＭｄＡｒｎ）であるマイクロアーキテクチャレジスタを利用する。ＭｄＡｒｎは、後続のロードで使用するために記憶されたデータを「記憶」するための場所として機能する。データが従来のメモリストアに記憶されている場合であっても、ＭｄＡｒｎが利用される。従来のメモリストアは、ＬＳユニット１３９を介して発生する。ＭｄＡｒｎは、図１に示す整数リネーマ１５０及び／又は浮動小数点リネーマ１７０の一部であり、これらにアクセス可能なアーキテクチャレジスタ番号である。これにより、整数リネーマ１５０及び／又は浮動小数点リネーマ１７０は、ＬＳユニットからのデータを要求する必要なしに、ＭｄＡｒｎからデータをロードする（「記憶」する）ことができる。
【００３３】
一実施形態では、ＭｄＡｒｎに関する情報は、マップ３２０に記憶される。マップ３２０は、ＭｄＡｒｎマップを含むファイルであり、ＭｄＡｒｎマップは、特定のＭｄＡｒｎに記憶されているものへのマップを提供する。ＭｄＡｒｎは、構造的に可視ではなく、メモリ依存リネーミングのために内部的にのみ使用される。具体的に、マップ３２０内の各エントリは、ＬＳユニット１３９へ送信されることに加えて、所定のストアデータが書き込まれる物理レジスタファイル（ＰＲＦ）１６０，１７８のインデックスである物理レジスタ番号（ＰＲＮ）を含む。マップ３２０は、関連するストアのＭｄＡｒｎを用いたリネーミングを介して、ストアデータがロード及びロード依存に転送されるのを可能にする。Ｎ個のＭｄＡｒｎが存在する。
【００３４】
ハードウェアフロー３００は、Ｎ個の命令３０５のディスパッチを示している。Ｎ個の命令３０５は、図１及び図２に関して上述したように記憶されている。これらの図に詳述されている記憶プロセスに加えて、ストア３１５は、複数の個々のＭｄＡｒｎ３３７．１，３３７．２，…，３３７．ｎを含むＭｄＡｒｎを使用する。図３は、マップ３２０内でＮ個のＭｄＡｒｎをディスパッチすることを示しているが、グループ間の依存関係の数は、例えば６ワイドアーキテクチャにおける６つの動作等のように、同時にディスパッチされる動作の数によって制約される。現在のディスパッチグループ内の何れかのストア３１５のアドレス情報は、デコーダユニット１１０内のＭＥＭＦＩＬＥ３１０に書き込まれ（３０８）、ＭｄＡｒｎ、及び、フリーＰＲＮにマッピングするためにリネーマ１５０，１７０が割り当てられ、マッピングされたＡＲＮで行われるのと同じように、それをマップ３２０に記憶する。ディスパッチグループ内の同じアドレスに複数のストアが存在する場合に、最古のストアのみがＭＥＭＦＩＬＥ３１０に記憶され、ＭｄＡｒｎにリネームされる。ＭＥＭＦＩＬＥ３１０は、インメモリファイルキャッシュである。
【００３５】
古いストアはプログラム順で定義される。共通のディスパッチグループ内では、動作がプログラム順序になっている。グループ間の依存関係が、正しいソースを確実にするためにチェックされる。最古の動作は、若い動作の何れにも依存しない。例えば、２番目に古い動作を最古の動作に依存させることができ、最も若い動作をその古い動作に依存させることができる。
【００３６】
ストア３１５は、ＭＥＭＦＩＬＥ３１０に割り当てられるとともに書き込まれ（３０８）、マップ３２０内で識別される。ストア３１５がＭＥＭＦＩＬＥ３１０を対象とし、マップ３２０内で識別される場合に、これらのストアは、３３７（３３７．１，３３７．２，…，３３７．ｎ）に示すように、アドレス一致に関して、ディスパッチロード３２５と比較される。また、ディスパッチロード３２５は、３４７（３４７．１，３４７．２，…，３４７．ｎ）に示すように、ＭＥＭＦＩＬＥ３１０に以前に書き込まれたストアとのアドレス一致についてチェックされる。比較ロジック３３７，３４７内のストアとアドレスが一致するロード３２５は、所定のストアと関連付けられ、グループ間の依存関係のチェック（３５０，３６０，３７０）を受け、次に、ストアＭｄＡｒｎによって示されるＰＲＮにマッピングされる。
【００３７】
一実施形態では、スケジューラ及び／又は実行ユニット１１５は、デコーダ１２６内のＭＥＭＦＩＬＥ３１０内の各ストア３１５を順に監視する。要するに、一実施形態では、ＭＥＭＦＩＬＥ３１０は、ディスパッチされる各ストア３１５に割り当てられた、エイジオーダーで回転するＦＩＦＯ（first-in, first-out）である。ディスパッチは、命令がデコードされ、（例えば、マイクロ動作キュー１２８とリネーマ１５０との間（整数リネーマの場合）等のように）リネーマ及びスケジューリングキュー（３６３，３６８）に送信されるときである。ＭＥＭＦＩＬＥ３１０内の各エントリは、ストア３１５に関する情報（例えば、物理レジスタファイル１６０内のベースレジスタ及びインデックスレジスタ等）を含み、ディスプレイスメントの一部を含む。このストア３１５には、Ｎ個のＭｄＡｒｎが回転するように割り当てられる。
【００３８】
スケジューラ及び／又は実行ユニット１１５において、ストア３１５は、図１及び図２に関して本明細書で上述したように動作する。ストア３１５は、アドレス生成コンポーネントと、ＬＳユニット１３９にデータ移動するストア３１５と、に分割される。メモリリネーミングのために、ストア３１５は、ストアデータをＭｄＡｒｎに移動させることを含む。ＬＳユニット１３９へのストアデータの移動中に、物理レジスタファイル１６０は、マップ３２０内のＭｄＡｒｎに割り当てられたＰＲＮについて書き込まれる。
【００３９】
メモリリネーミングは、レジスタ間の移動へ変更することによって、ＳＴＬＦのレイテンシを減少させる。動作のサブセットは、マッピングのみで実現されるように移動排除とさらに組み合わされて、ＳＴＬＦを０サイクルレイテンシに減少させることができる。
【００４０】
ロード３２５がロード動作又は純粋なロードである場合、メモリ（例えば、キャッシュ１３４、Ｌ２  １３６又は他のメモリ等）から通常来るオペランドは、代わりにＭｄＡｒｎによって提供される。ロード３２５は、アドレス生成を実行し、ＬＳユニット１３９は、メモリリネーミングフロー３００の正当性を検証する。ＬＳユニット１３９は、データを返すことを控える。また、ＬＳユニット１３９は、リネームされたストア−ロードの関連付けを壊す所定のアドレスへの中間ストアがなかったことをチェックする。検証が失敗した場合、ＬＳユニット１３９は、ロード３２５を再実行することによって、ロード３２５を再同期させる。ロード３２５の再同期は、実行された全ての作業を再実行することと、パイプラインをフラッシュすることと、ロードによって開始するスクラッチから実行を始めることと、を含む。
【００４１】
図４は、図１のコア処理ユニット１０５内のＬＳユニット１３９と関連するメモリリネーミング方法４００を示す図である。方法４００は、ステップ４１０において、命令を、従来のストレージパスと共にＭｄＡｒｎに記憶することを含む。ステップ４２０において、方法４００は、ＭｄＡｒｎストレージに基づいてＭＥＭＦＩＬＥ３１０の割り当て及び書き込みを行う。ステップ４３０において、フリーデスティネーションＰＲＮが使用されるように割り当てられ、マップが書き込まれる。システムは、ステップ４４０において、ロード要求を監視する。ステップ４５０において、ロード要求時に、ＭＥＭＦＩＬＥ３１０内の、ベース、インデックス、ディスプレイスメント及び一致／ヒットは、マイクロ動作キュー１２８とマップ３２０との間（考察されるようなリネーマ１５０内）など、ＭＥＭＦＩＬＥ３１０が存在するディスパッチロジック内（例えば、マイクロ動作キュー１２８とマップ３２０との間（上述したようにリネーマ１５０内））でチェックされる。ステップ４６０において、ヒットの場合に、ＬＳユニット１３９は、データを返すことを抑制され、ＭＥＭＦＩＬＥから識別されたＭｄＡｒｎからのロードのエントリを提供する。ステップ４７０において、ＬＳユニット１３９は、ストア−ロードペアが正しく関連付けられていることを検証する。そうでなければ、ロードがフラッシュされ、再実行される。
【００４２】
図５は、１つ以上の開示された例のうち１つ以上の部分が実装されている例示的なデバイス５００のブロック図である。デバイス５００は、例えば、ヘッドマウントデバイス、サーバ、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含む。デバイス５００は、計算ノード又はプロセッサ５０２と、メモリ５０４と、ストレージデバイス５０６と、１つ以上の入力デバイス５０８と、１つ以上の出力デバイス５１０と、を含む。また、デバイス５００は、入力ドライバ５１２及び出力ドライバ５１４をオプションで含むことができる。デバイス５００は、図５に示されていない追加のコンポーネントを含んでもよいことを理解されたい。
【００４３】
計算ノード又はプロセッサ５０２は、中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）、同じダイ上に配置されたＣＰＵ及びＧＰＵ、又は、１つ以上のプロセッサコアを含み、各プロセッサコアはＣＰＵ又はＧＰＵであってもよい。メモリ５０４は、計算ノード又はプロセッサ５０２と同じダイ上に配置されてもよいし、計算ノード又はプロセッサ５０２とは別に配置されてもよい。メモリ５０４は、例えば、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ若しくはキャッシュ等の揮発性又は不揮発性メモリを含むことができる。
【００４４】
ストレージ５０６は、例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等の固定又は取り外し可能なストレージデバイスを含むことができる。入力デバイス５０８は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックスキャナ又はネットワーク接続（例えば、無線ＩＥＥＥ８０２信号を送信及び／若しくは受信するための無線ローカルエリアネットワークカード）を含むことができる。出力デバイス５１０は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、１つ以上のライト、アンテナ又はネットワーク接続（例えば、無線ＩＥＥＥ８０２信号を送信及び／若しくは受信するための無線ローカルエリアネットワークカード）を含むことができる。
【００４５】
入力ドライバ５１２は、計算ノード又はプロセッサ５０２、及び、入力デバイス５０８と通信し、計算ノード又はプロセッサ５０２が、入力デバイス５０８から入力を受信することを可能にする。出力ドライバ５１４は、計算ノード又はプロセッサ５０２、及び、出力デバイス５１０と通信し、プロセッサ５０２が出力デバイス５１０に出力を送信することを可能にする。入力ドライバ５１２及び出力ドライバ５１４は、オプションのコンポーネントであり、デバイス５００は、入力ドライバ５１２及び出力ドライバ５１４が存在しない場合であっても同様に動作することに留意されたい。
【００４６】
本明細書で説明する実施形態を概して及び限定することなく、非一時的なコンピュータ可読記憶媒体は、処理システム内で実行されると、アドレス生成時にロード及びストア割り当て方法を処理システムに実行させる命令を含む。
【００４７】
本明細書における開示に基づいて多くの変形が可能であることを理解されたい。上記では、特徴及び要素が特定の組み合わせで説明されているが、各特徴又は要素は、他の特徴及び要素無しに単独で使用されてもよいし、他の特徴及び要素を伴って又は伴わずに様々な組み合わせで使用されてもよい。
【００４８】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアに関連する１つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、他のタイプの集積回路（ＩＣ）、及び／又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語（ＨＤＬ）命令（このような命令は、コンピュータ可読媒体に記憶することが可能である）の結果及びネットリストを含む他の中間データを用いて製造プロセスを構成することによって製造され得る。このようなプロセスの結果は、実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
【００４９】
本明細書で提供された方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、例えば読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク、リムーバブルディスク等の磁気媒体、光磁気記憶媒体、例えばＣＤ−ＲＯＭディスク及びデジタル多用途ディスク（ＤＶＤ）等の光学媒体が含まれる。
【図１】
2019525355.tif 000003
【図２】
2019525355.tif 000004
【図３】
2019525355.tif 000005
【図４】
2019525355.tif 000006
【図５】
2019525355.tif 000007
【国際調査報告】
2019525355.tif 000008
2019525355.tif 000009