(57)【要約】  詳細な説明で開示する態様は、プロセッサベースシステム内のロード経路履歴に基づいてアドレス予測テーブルを使用してロードアドレス予測を実現することを含む。一態様では、ロードアドレス予測エンジンは、複数のロードアドレス予測テーブルエントリを含むロードアドレス予測テーブルを提供する。各ロードアドレス予測テーブルエントリは、予測器タグフィールドとロード命令に関するメモリアドレスフィールドとを含む。ロードアドレス予測エンジンは、検出されたロード命令に関する識別子およびロード経路履歴に基づいて、テーブルインデックスおよび予測器タグを生成する。テーブルインデックスは、対応するロードアドレス予測テーブルエントリをルックアップするために使用される。予測器タグがテーブルインデックスに対応するロードアドレス予測テーブルエントリの予測器タグフィールドに整合する場合、ロードアドレス予測テーブルエントリのメモリアドレスフィールドはロード命令に関する予測されるメモリアドレスとして提供される。
2019514110.tif 000002
【特許請求の範囲】
【請求項１】
各々が予測器タグフィールドとメモリアドレスフィールドとを備える、複数のロードアドレス予測テーブルエントリを記憶するように構成されたロードアドレス予測テーブルを備えた、ロードアドレス予測エンジンであって、
ロード命令を受信し、
前記ロード命令に関する識別子およびロード経路履歴インジケータに基づいて、テーブルインデックスおよび予測器タグを生成し、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するかどうかを判定し、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、前記ロード命令に関する予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリのメモリアドレスフィールドからメモリアドレスを提供する
ように構成される、ロードアドレス予測エンジン。
【請求項２】
分岐方向履歴、もしくは分岐経路履歴、またはそれらの組合せに基づいて、前記テーブルインデックスおよび前記予測器タグを生成するようにさらに構成される、請求項1に記載のロードアドレス予測エンジン。
【請求項３】
前記ロード命令に関する前記予測されるメモリアドレスがプロセッサのシステムデータキャッシュ内に存在するかどうかを判定し、
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在するとの判定に応答して、
前記予測されるメモリアドレスに関するデータを前記システムデータキャッシュから検索し、
前記検索したデータを、データ値予測として、前記プロセッサの実行パイプラインのバックエンド命令パイプラインに提供し、
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在しないとの判定に応答して、
前記予測されるメモリアドレスに対応するデータを前記プロセッサのシステムメモリからプリフェッチし、
前記プリフェッチしたデータを前記プロセッサの前記システムデータキャッシュ内に記憶する
ようにさらに構成される、請求項1に記載のロードアドレス予測エンジン。
【請求項４】
前記複数のロードアドレス予測テーブルエントリのうちの各ロードアドレス予測テーブルエントリが、信頼値フィールドをさらに備え、
前記ロードアドレス予測エンジンが、前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが前記ロードアドレス予測エンジンの信頼しきい値フィールドを超えることにさらに応答して、前記ロード命令に関する前記予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリの前記メモリアドレスフィールドの前記メモリアドレスを提供するように構成される
請求項3に記載のロードアドレス予測エンジン。
【請求項５】
前記ロード命令の実行に続いて、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、
前記ロード命令の実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合するかどうかを判定し、
前記ロード命令の前記実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合するとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドを増分し、
前記ロード命令の前記実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合しないとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドをリセットし、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在しないとの判定に応答して、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが非ゼロであるかどうか判定し、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが非ゼロであるとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドを減分し、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドがゼロ(0)であるとの判定に応答して、前記予測器タグおよび前記ロード命令に関する前記実メモリアドレスを用いて、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリを初期化する
ようにさらに構成される、請求項4に記載のロードアドレス予測エンジン。
【請求項６】
前記複数のロードアドレス予測テーブルエントリのうちの各ロードアドレス予測テーブルエントリが、キャッシュウェイフィールドをさらに備え、
前記ロードアドレス予測エンジンが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記キャッシュウェイフィールドに基づいて、前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在するかどうかを判定するように構成される
請求項3に記載のロードアドレス予測エンジン。
【請求項７】
前記ロード命令に関する前記予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリの前記メモリアドレスフィールドの前記メモリアドレスをメモリディスアンビギュエーションのためにプロセッサのバックエンド命令パイプラインに提供するように構成される、請求項1に記載のロードアドレス予測エンジン。
【請求項８】
集積回路(IC)に統合される、請求項1に記載のロードアドレス予測エンジン。
【請求項９】
セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、スマートフォン、タブレット、ファブレット、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、および自動車からなるグループから選択されるデバイスに統合される、請求項1に記載のロードアドレス予測エンジン。
【請求項１０】
プロセッサのロードアドレス予測エンジンであって、
ロード命令を受信するための手段と、
前記ロード命令に関する識別子およびロード経路履歴インジケータに基づいて、テーブルインデックスおよび予測器タグを生成するための手段と、
前記予測器タグが、前記ロードアドレス予測エンジンのロードアドレス予測テーブルの複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するかどうかを判定するための手段と、
前記予測器タグが、前記ロードアドレス予測エンジンの前記ロードアドレス予測テーブルの前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、前記ロード命令に関する予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリのメモリアドレスフィールドからメモリアドレスを提供するための手段と
を備える、ロードアドレス予測エンジン。
【請求項１１】
ロードアドレス予測を提供するための方法であって、
プロセッサのロードアドレス予測エンジンによって、ロード命令を受信するステップと、
前記ロード命令に関する識別子およびロード経路履歴インジケータに基づいて、テーブルインデックスおよび予測器タグを生成するステップと、
前記予測器タグが、前記ロードアドレス予測エンジンのロードアドレス予測テーブルの複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するかどうかを判定するステップと、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、前記ロード命令に関する予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリのメモリアドレスフィールドからメモリアドレスを提供するステップと
を含む、方法。
【請求項１２】
前記テーブルインデックスおよび前記予測器タグを生成するステップが、分岐方向履歴、もしくは分岐経路履歴、またはそれらの組合せにさらに基づく、請求項11に記載の方法。
【請求項１３】
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサのシステムデータキャッシュ内に存在するかどうかを判定するステップと、
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在するとの判定に応答して、
前記予測されるメモリアドレスに関するデータを前記システムデータキャッシュから検索するステップと、
前記検索したデータを、データ値予測として、前記プロセッサの実行パイプラインのバックエンド命令パイプラインに提供するステップと、
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在しないとの判定に応答して、
前記予測されるメモリアドレスに対応するデータを前記プロセッサのシステムメモリからプリフェッチするステップと、
前記プリフェッチしたデータを前記プロセッサの前記システムデータキャッシュ内に記憶するステップと
をさらに含む、請求項11に記載の方法。
【請求項１４】
前記複数のロードアドレス予測テーブルエントリのうちの各ロードアドレス予測テーブルエントリが、信頼値フィールドをさらに備え、
前記ロード命令に関する前記予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリの前記メモリアドレスフィールドの前記メモリアドレスを提供するステップが、前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが前記ロードアドレス予測エンジンの信頼しきい値フィールドを超えることにさらに応答する
請求項13に記載の方法。
【請求項１５】
前記ロード命令の実行に続いて、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、
前記ロード命令の実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合するかどうかを判定するステップと、
前記ロード命令の前記実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合するとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドを増分するステップと、
前記ロード命令の前記実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合しないとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドをリセットするステップと、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在しないとの判定に応答して、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが非ゼロであるかどうか判定するステップと、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが非ゼロであるとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドを減分するステップと、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドがゼロ(0)であるとの判定に応答して、前記ロード命令に関する前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリを初期化するステップと
をさらに含む、請求項14に記載の方法。
【請求項１６】
前記複数のロードアドレス予測テーブルエントリのうちの各ロードアドレス予測テーブルエントリが、キャッシュウェイフィールドをさらに備え、
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在するかどうかを判定するステップが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記キャッシュウェイフィールドに基づく
請求項13に記載の方法。
【請求項１７】
前記ロード命令に関する前記予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリの前記メモリアドレスフィールドの前記メモリアドレスをメモリディスアンビギュエーションのために前記プロセッサのバックエンド命令パイプラインに提供するステップをさらに含む、請求項11に記載の方法。
【請求項１８】
コンピュータ実行可能命令を記憶した非一時的コンピュータ可読記録媒体であって、前記コンピュータ実行可能命令が、プロセッサによって実行されると、前記プロセッサに、
ロード命令を受信させ、
前記ロード命令に関する識別子およびロード経路履歴インジケータに基づいて、テーブルインデックスおよび予測器タグを生成させ、
前記予測器タグが、ロードアドレス予測テーブルの複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するかどうかを判定させ、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、前記ロード命令に関する予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリのメモリアドレスフィールドからメモリアドレスを提供させる、
非一時的コンピュータ可読記録媒体。
【請求項１９】
前記プロセッサによって実行されると、前記プロセッサにさらに、分岐方向履歴、もしくは分岐経路履歴、またはそれらの組合せに基づいて、前記テーブルインデックスおよび前記予測器タグを生成させるコンピュータ実行可能命令を記憶した、請求項18に記載の非一時的コンピュータ可読記録媒体。
【請求項２０】
前記プロセッサによって実行されると、前記プロセッサにさらに、
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサのシステムデータキャッシュ内に存在するかどうかを判定させ、
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在するとの判定に応答して、
前記予測されるメモリアドレスに関するデータを前記システムデータキャッシュから検索させ、
前記検索したデータを、データ値予測として、前記プロセッサの実行パイプラインのバックエンド命令パイプラインに提供させ、
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在しないとの判定に応答して、
前記予測されるメモリアドレスに対応するデータを前記プロセッサのシステムメモリからプリフェッチさせ、
前記プリフェッチしたデータを前記プロセッサの前記システムデータキャッシュ内に記憶させる
コンピュータ実行可能命令を記憶した、請求項18に記載の非一時的コンピュータ可読記録媒体。
【請求項２１】
前記プロセッサによって実行されると、前記プロセッサにさらに、前記ロードアドレス予測テーブルエントリの信頼値フィールドがロードアドレス予測エンジンの信頼しきい値フィールドを超えることに応答して、前記ロード命令に関する前記予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリの前記メモリアドレスフィールドの前記メモリアドレスを提供させる
コンピュータ実行可能命令を記憶した、請求項20に記載の非一時的コンピュータ可読記録媒体。
【請求項２２】
前記プロセッサによって実行されると、前記プロセッサにさらに、前記ロード命令の実行に続いて、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、
前記ロード命令の実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合するかどうかを判定させ、
前記ロード命令の前記実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合するとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドを増分させ、
前記ロード命令の前記実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合しないとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドをリセットさせ、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在しないとの判定に応答して、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが非ゼロであるかどうかを判定させ、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが非ゼロであるとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドを減分させ、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドがゼロ(0)であるとの判定に応答して、前記予測器タグおよび前記ロード命令に関する前記実メモリアドレスを用いて、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリを初期化させる
コンピュータ実行可能命令を記憶した、請求項21に記載の非一時的コンピュータ可読記録媒体。
【請求項２３】
前記プロセッサによって実行されると、前記プロセッサにさらに、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリのキャッシュウェイフィールドに基づいて、前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在するかどうかを判定させる
コンピュータ実行可能命令を記憶した、請求項20に記載の非一時的コンピュータ可読記録媒体。
【請求項２４】
前記プロセッサによって実行されると、前記プロセッサにさらに、前記ロード命令に関する前記予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリの前記メモリアドレスフィールドの前記メモリアドレスをメモリディスアンビギュエーションのために前記プロセッサのバックエンド命令パイプラインに提供させる
コンピュータ実行可能命令を記憶した、請求項18に記載の非一時的コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権出願
本出願は、その全体が参照により本明細書に組み込まれている、2016年3月31日に出願した「PROVIDING LOAD ADDRESS PREDICTIONS USING ADDRESS PREDICTION TABLES BASED ON LOAD PATH HISTORY IN PROCESSOR-BASED SYSTEMS」と題する米国特許出願第15/087,069号の優先権を主張するものである。
【０００２】
本開示の技術は、一般に、プロセッサベースシステムによるコンピュータプログラムの実行中のロード命令の実行レイテンシを改善することに関し、より詳細には、プロセッサ内のロード命令およびロード依存命令の実行を高速化することに関する。
【背景技術】
【０００３】
従来のプロセッサは、すべてのプロセッサクロックサイクル中にいくつかのプログラム命令をフェッチおよび実行することが可能である。プログラム命令の正確な実行を保証するために、プロセッサは、プログラム命令間のアドレス依存性およびデータ依存性を監視し、検出し、それを満たすことを試みる。たとえば、プロセッサは、ロード命令と後続のストア命令との間に製作者/消費者関係が存在することを判定することができ、それにより、ストア命令が実行されるのを許可する前に、ロード命令によって生成された結果が利用可能であることを確実にしようとする場合がある。
【０００４】
データ依存性を確実に満たすことは、ロード命令に関して特に重要であるが、これは、ロード命令は、プロセッサによって実行されるプログラム命令の総数の相当な部分を表し得るためである。しかしながら、ロード命令に対するデータ依存性を満たすことは、そのようなロード命令の実行レイテンシに悪影響を及ぼし得る。ロード命令が実行し得る速度は、多くの場合、求められているデータがプロセッサベースシステムのメモリ階層において(たとえば、非限定的な例として、レベル1(L1)キャッシュ、レベル2(L2)キャッシュ、および/またはシステムメモリにおいて)どこに位置するかに応じて変化し得る。一般原理として、データが記憶されているプロセッサに近ければ近いほど、そのデータを要求するロード命令をより早く実行することができる。結果として、依存ロード命令は前のロード命令が実行されるまで待機しなければならないため、データアクセス時間におけるこの可変性は、依存ロード命令(すなわち、前のロード命令によって生成されたデータ値を消費する命令)の実行レイテンシに悪影響を及ぼし得る。
【０００５】
データアクセスレイテンシの可変性により、従来のプロセッサ最適化は、(たとえば、データプリフェッチによる)ロード命令の実行の高速化および/または(たとえば、データ値予測による)依存ロード命令の実行の高速化に重点を置いていた。データプリフェッチは、ロード命令がよりタイムリーな様式で実行することを可能にするために、ロード命令によって参照されることが予想または予測されるデータ値をより高いキャッシュレベル(たとえば、L1キャッシュ)内に検索することを必要とする。データ値予測は、前のロード命令によって生成されることになるデータ値を予測することによって依存ロード命令の実行の高速化を試み、予測されるデータ値を使用して依存ロード命令が実行することを可能にする技法である。ロード命令の後続の実行時に、予測されるデータ値は有効として確認され得るか、または誤予測として拒絶され(disconfirmed)得る。予測されるデータ値が誤予測と判定された場合、誤予測されたデータ値を使用して命令をフラッシングおよび再実行することを含めて、復元措置が実行される。
【０００６】
データプリフェッチおよび/またはデータ値予測の使用、ならびに他の最適化は、結果として、相当な性能利得をもたらす可能性があるが、そのような最適化の性能をさらに改善する機構を提供することが望ましい場合がある。
【発明の概要】
【課題を解決するための手段】
【０００７】
詳細な説明で開示する態様は、プロセッサベースシステム内のロード経路履歴に基づいてアドレス予測テーブルを使用してロードアドレス予測を実現することを含む。そのようなプロセッサベースシステムは、非限定的な例として、スーパースカラプロセッサベースシステムを含み得る。この点で、1つの例示的な態様では、プロセッサの実行パイプラインのフロントエンド命令パイプライン内で検出されるロード命令のターゲットであり得るメモリアドレスを予測するためのロードアドレス予測エンジンが提供される。ロードアドレス予測エンジンは、複数のロードアドレス予測テーブルエントリを含むロードアドレス予測テーブルを含む。ロードアドレス予測テーブルエントリの各々は、検出されたロード命令に対応し、予測器タグフィールドとメモリアドレスフィールドとを含む。ロード命令の受信時に、ロードアドレス予測エンジンは、ロード命令に関する識別子(プログラムカウンタなど)とロード命令に関するロード経路履歴の両方に基づいて、テーブルインデックスおよび予測器タグを生成する。テーブルインデックスは、ロードアドレス予測テーブル内の対応するロードアドレス予測テーブルエントリをルックアップするために使用される。予測器タグがテーブルインデックスに対応するロードアドレス予測テーブルエントリの予測器タグフィールドに整合する場合、ロードアドレス予測テーブルエントリのメモリアドレスフィールドはロード命令に関する予測されるメモリアドレスとして提供される。
【０００８】
このようにして、ロードアドレス予測エンジンは、ロード命令に関するメモリアドレス予測を提供することによってプロセッサ性能を改善することができる。いくつかの態様では、予測されるメモリアドレスを使用して、システムデータキャッシュにアクセスすることができる。システムデータキャッシュ上でキャッシュヒットが生じる場合、予測されるメモリアドレスに関するデータ値をシステムデータキャッシュから読み取り、データ値予測を実行するために使用することができ、結果として、プロセッサ性能の改善をもたらす。いくつかの態様は、予測されるメモリアドレスをプロセッサの実行パイプラインのバックエンド命令パイプラインに提供して、メモリディスアンビギュエーションを支援することを実現することもできる。したがって、このようにして、ロードアドレス予測エンジンは、従来のプロセッサ最適化の有効性を高めることができる。いくつかの態様は、ロードアドレス予測テーブル内の各ロードアドレス予測テーブルエントリが予測されるメモリアドレスに対応するメモリブロックがシステムデータキャッシュ内に存在することが予想されるキャッシュウェイを表すキャッシュウェイインジケータを含むことを実現することもできる。キャッシュウェイインジケータを提供することによって、システムデータキャッシュ内ですべてのキャッシュウェイにアクセスすることを避ける必要が回避され、それにより、システム電力消費を低減させる。
【０００９】
いくつかの態様では、ロードアドレス予測テーブル内の各ロードアドレス予測テーブルエントリはまた、信頼値フィールドを含み得る。信頼値フィールドは、ロードアドレス予測エンジンによって提供される信頼しきい値フィールドに対して、予測されるメモリアドレスが対応するロード命令に関して正確である信頼のレベルを表し得る。予測されるメモリアドレスがロード命令に関して正確であると確認されるとき、信頼値フィールドは増分され得る。予測されるメモリアドレスがロード命令に関して不正確であると判定された場合、またはロードアドレス予測テーブル上にミスが生じ、ロード命令に関して既存のロードアドレス予測テーブルエントリに関する信頼値が高い場合、信頼値フィールドは減分され得る。
【００１０】
別の態様では、ロードアドレス予測エンジンが提供される。ロードアドレス予測エンジンは、各々が予測器タグフィールドとメモリアドレスフィールドとを備える、複数のロードアドレス予測テーブルエントリを記憶するように構成されたロードアドレス予測テーブルを備える。ロードアドレス予測エンジンは、ロード命令を受信するように構成される。ロードアドレス予測エンジンは、ロード命令に関する識別子およびロード経路履歴インジケータに基づいて、テーブルインデックスおよび予測器タグを生成するようにさらに構成される。ロードアドレス予測エンジンはまた、予測器タグが、複数のロードアドレス予測テーブルエントリのうちの、テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するかどうかを判定するように構成される。ロードアドレス予測エンジンはさらに、予測器タグが、複数のロードアドレス予測テーブルエントリのうちの、テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するとの判定に応答して、ロード命令に関する予測されるメモリアドレスとして、ロードアドレス予測テーブルエントリのメモリアドレスフィールドからメモリアドレスを提供するように構成される。
【００１１】
別の態様では、プロセッサのロードアドレス予測エンジンが提供される。ロードアドレス予測エンジンは、ロード命令を受信するための手段を備える。ロードアドレス予測エンジンは、ロード命令に関する識別子およびロード経路履歴インジケータに基づいて、テーブルインデックスおよび予測器タグを生成するための手段をさらに備える。ロードアドレス予測エンジンはまた、予測器タグが、ロードアドレス予測エンジンのロードアドレス予測テーブルの複数のロードアドレス予測テーブルエントリのうちの、テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するかどうかを判定するための手段を備える。ロードアドレス予測エンジンはさらに、予測器タグが、ロードアドレス予測エンジンのロードアドレス予測テーブルの複数のロードアドレス予測テーブルエントリのうちの、テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するとの判定に応答して、ロード命令に関する予測されるメモリアドレスとして、ロードアドレス予測テーブルエントリのメモリアドレスフィールドからメモリアドレスを提供するための手段を備える。
【００１２】
別の態様では、ロードアドレス予測を提供するための方法が提供される。この方法は、プロセッサのロードアドレス予測エンジンによって、ロード命令を受信するステップを含む。この方法は、ロード命令に関する識別子およびロード経路履歴インジケータに基づいて、テーブルインデックスおよび予測器タグを生成するステップをさらに含む。この方法はまた、予測器タグが、ロードアドレス予測エンジンのロードアドレス予測テーブルの複数のロードアドレス予測テーブルエントリのうちの、テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するかどうかを判定するステップを含む。この方法はさらに、予測器タグが、テーブルインデックスに対応する複数のロードアドレス予測テーブルエントリのうちのロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するとの判定に応答して、ロード命令に関する予測されるメモリアドレスとして、ロードアドレス予測テーブルエントリのメモリアドレスフィールドからメモリアドレスを提供するステップを含む。
【００１３】
別の態様では、コンピュータ実行可能命令を記憶した非一時的コンピュータ可読媒体が提供される。プロセッサによって実行されると、コンピュータ実行可能命令は、プロセッサにロード命令を受信させる。コンピュータ実行可能命令はさらに、プロセッサに、ロード命令に関する識別子およびロード経路履歴インジケータに基づいて、テーブルインデックスおよび予測器タグを生成させる。コンピュータ実行可能命令はまた、プロセッサに、予測器タグが、ロードアドレス予測テーブルの複数のロードアドレス予測テーブルエントリのうちの、テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するかどうかを判定させる。コンピュータ実行可能命令はさらに、プロセッサに、予測器タグが、テーブルインデックスに対応する複数のロードアドレス予測テーブルエントリのうちのロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するとの判定に応答して、ロード命令に関する予測されるメモリアドレスとして、ロードアドレス予測テーブルエントリのメモリアドレスフィールドからメモリアドレスを提供させる。
【図面の簡単な説明】
【００１４】
【図１】ロードアドレス予測を実現するためのロードアドレス予測エンジンを含む例示的なプロセッサのブロック図である。
【図２】図1のロードアドレス予測エンジンの例示的なロードアドレス予測テーブルのコンテンツを示すブロック図である。
【図３Ａ】図1のロードアドレス予測エンジンが、データ値予測、データ値プリフェッチ、および/またはメモリディスアンビギュエーションを可能にするために、入来ロード命令を検出し、ロードアドレス予測を実現するための例示的な通信フローを示す図である。
【図３Ｂ】図1のロードアドレス予測エンジンが、データ値予測、データ値プリフェッチ、および/またはメモリディスアンビギュエーションを可能にするために、入来ロード命令を検出し、ロードアドレス予測を実現するための例示的な通信フローを示す図である。
【図３Ｃ】図1のロードアドレス予測エンジンが、データ値予測、データ値プリフェッチ、および/またはメモリディスアンビギュエーションを可能にするために、入来ロード命令を検出し、ロードアドレス予測を実現するための例示的な通信フローを示す図である。
【図４Ａ】図1のロードアドレス予測エンジンが、入来ロード命令を検出して、ロードアドレス予測を実現するための、かつロードアドレス予測テーブルをトレーニングするための例示的なプロセスを示すフローチャートである。
【図４Ｂ】図1のロードアドレス予測エンジンが、入来ロード命令を検出して、ロードアドレス予測を実現するための、かつロードアドレス予測テーブルをトレーニングするための例示的なプロセスを示すフローチャートである。
【図４Ｃ】図1のロードアドレス予測エンジンが、入来ロード命令を検出して、ロードアドレス予測を実現するための、かつロードアドレス予測テーブルをトレーニングするための例示的なプロセスを示すフローチャートである。
【図５】図1のロードアドレス予測エンジンを含み得る例示的なプロセッサベースシステムのブロック図である。
【発明を実施するための形態】
【００１５】
ここで図面を参照して、本開示のいくつかの例示的な態様について説明する。「例示的」という語は、本明細書では「例、事例、または例示としての働きをすること」を意味するために使用される。本明細書で「例示的」と記載されている任意の態様は、必ずしも他の態様よりも好ましいまたは有利であると解釈されるべきではない。
【００１６】
詳細な説明で開示する態様は、プロセッサベースシステム内のロード経路履歴に基づいてアドレス予測テーブルを使用してロードアドレス予測を実現することを含む。プロセッサの実行パイプラインのフロントエンド命令パイプライン内で検出された所与のロード命令によって参照され得るメモリアドレスを予測するためのロードアドレス予測エンジンが提供される。テーブルインデックスおよび予測器タグは、ロード命令に関する識別子(プログラムカウンタなど)とロード命令に関するロード経路履歴の両方に基づいて、ロードアドレス予測エンジンによって生成される。ロードアドレス予測エンジンは、次いで、ロードアドレス予測テーブル内のテーブルインデックスに対応するロードアドレス予測テーブルエントリが予測器タグを含むかどうかを判定する。そうである場合、ロード命令に関する予測されるメモリアドレスとして、ロードアドレス予測テーブルエントリのメモリアドレスフィールドが提供される。以下でより詳細に論じるように、ロード命令に関する予測されるメモリアドレスを利用して、データ値予測、データ値プリフェッチ、およびメモリディスアンビギュエーションなどのプロセッサ最適化の有効性を高めることができる。いくつかの態様は、ロードアドレス予測テーブルのロードアドレス予測テーブルエントリ内の信頼値フィールドを使用して、さらなる性能最適化を実現することができる。いくつかの態様では、ロードアドレス予測テーブルのロードアドレス予測テーブルエントリ内のオプションのキャッシュウェイフィールドを使用することにより、電力最適化を実現することもできる。
【００１７】
この点で、図1は、本明細書で論じるように、ロードアドレス予測を実現するロードアドレス予測エンジン102を含む例示的なプロセッサ100のブロック図である。プロセッサ100は、それを介してシステムメモリ106にアクセスすることができるメモリインターフェース104を含む。いくつかの態様では、システムメモリ106は、非限定的な例として、ダブルレートダイナミックランダムアクセスメモリ(DRAM)(DDR)を備え得る。プロセッサ100は、命令キャッシュ108とシステムデータキャッシュ110とをさらに含む。システムデータキャッシュ110は、いくつかの態様では、レベル1(L1)データキャッシュを備え得る。プロセッサ100は、数ある素子の中でも、既知のデジタル論理素子、半導体回路、処理コア、および/またはメモリ構造のいずれか1つ、またはその組合せを含む場合がある。本明細書で説明する態様は、要素の任意の特定の構成に限定されず、開示する技法は、半導体ダイまたはパッケージ上の様々な構造およびレイアウトに容易に拡張され得る。
【００１８】
プロセッサ100は、フロントエンド命令パイプライン114およびバックエンド命令パイプライン116に細分割され得る実行パイプライン112をさらに備える。本明細書で使用する「フロントエンド命令パイプライン114」は、従来、実行パイプライン112の「始端」に位置し、フェッチ、復号、および/または命令キュー機能を提供するパイプラインステージを指す場合がある。この点について、図1のフロントエンド命令パイプライン114は、1つまたは複数のフェッチ/復号パイプラインステージ118と、1つまたは複数の命令キューステージ120とを含む。非限定的な例として、1つまたは複数のフェッチ/復号パイプラインステージ118は、F1、F2および/またはF3のフェッチ/復号ステージ(図示せず)を含む場合がある。本明細書では、「バックエンド命令パイプライン116」は、実行のための命令を発行するため、命令の実際の実行を遂行するため、ならびに/あるいは命令実行によって必要とされるかもしくは生成されるデータをロードおよび/もしくは記憶するための、実行パイプライン112の後続のパイプラインステージを指す。図1の例では、バックエンド命令パイプライン116は、リネームステージ122、レジスタアクセスステージ124、予約ステージ126、1つまたは複数のディスパッチステージ128、および1つまたは複数の実行ステージ130を含む。図1に示すフロントエンド命令パイプライン114のステージ118、120およびバックエンド命令パイプライン116のステージ122、124、126、128、130は、説明のためだけに提供されること、およびプロセッサ100の他の態様は、本明細書で示すものに追加の、またはそれより少ないパイプラインステージを含有し得ることを理解されたい。
【００１９】
プロセッサ100は、複数のレジスタ134(0)〜134(X)に対する物理ストレージを提供するレジスタファイル132を追加で含む。いくつかの態様では、レジスタ134(0)〜134(X)は、1つまたは複数の汎用レジスタ(GPR)、プログラムカウンタ(図示せず)、および/またはリンクレジスタ(図示せず)を含む場合がある。プロセッサ100によってコンピュータプログラムを実行する間、レジスタ134(0)〜134(X)は、レジスタマップテーブル138を使用して1つまたは複数のアーキテクチャレジスタ136にマッピングされ得る。
【００２０】
例示的な動作では、実行パイプライン112のフロントエンド命令パイプライン114は、命令キャッシュ108からプログラム命令(図示せず)をフェッチする。プログラム命令は、フロントエンド命令パイプライン114の1つまたは複数のフェッチ/復号パイプラインステージ118によってさらに復号され、バックエンド命令パイプライン116への発行を保留する1つまたは複数の命令キューステージ120に渡されてよい。プログラム命令がバックエンド命令パイプライン116に発行された後、バックエンド命令パイプライン116のステージ(たとえば、実行ステージ130)は、次いで、発行されたプログラム命令を実行し、実行されたプログラム命令をリタイアさせる。
【００２１】
上述のように、プロセッサ100の1つの重要な機能は、プログラム命令、具体的には、ロード命令間のデータ依存の満足度を確実にすることによって、危険を回避することである。ロード命令に関するデータアクセス時間の変化はそのようなロード命令の実行レイテンシに悪影響を及ぼし得るため、従来のプロセッサは、ロード命令の実行を高速化するために、データプリフェッチ、データ値予測、およびメモリディスアンビギュエーションなどの最適化を実現した。しかしながら、これらの最適化をさらに改善し得る追加の機構を提供することが望ましい場合がある。
【００２２】
この点で、プロセッサ100は、ロード命令に関するロードアドレス予測を提供するためのロードアドレス予測エンジン102を含む。明快のために、ロードアドレス予測エンジン102は、フロントエンド命令パイプライン114およびバックエンド命令パイプライン116とは別個の要素として示されているが、ロードアドレス予測エンジン102は、フロントエンド命令パイプライン114のステージ118、120のうちの1つもしくは複数、および/またはバックエンド命令パイプライン116のステージ122、124、126、128、130のうちの1つもしくは複数に統合され得ることを理解されたい。ロードアドレス予測エンジン102は、検出されたロード命令のターゲットであり得る、予測されるメモリアドレスを記憶するための1つまたは複数のロードアドレス予測テーブルエントリ(図示せず)を含むロードアドレス予測テーブル140を備える。矢印142および144によって示すように、ロードアドレス予測エンジン102は、実行パイプライン112のそれぞれフロントエンド命令パイプライン114およびバックエンド命令パイプライン116に通信可能に結合される。同様に、ロードアドレス予測エンジン102は、双方向矢印146によって示すように、システムデータキャッシュ110に通信可能に結合される。
【００２３】
例示的な動作において、ロードアドレス予測エンジン102は、フロントエンド命令パイプライン114から入来ロード命令(図示せず)を受信する。ロードアドレス予測エンジン102は、ロード命令に関する識別子(たとえば、プログラムカウンタ)に基づいて、テーブルインデックス(図示せず)および予測器タグ(図示せず)を生成する。ロード命令に関するテーブルインデックスおよび予測器タグはまた、現在のロード命令をもたらしたロード命令の前のシーケンスを表すロード経路履歴に基づく。ロード経路履歴をロード命令に関するテーブルインデックスおよび予測器タグ内に組み込むことは、ロード命令に関する追加の履歴コンテキストを提供し、これは所与のロード命令に関してより一意の値を生成し得る。非限定的な例として、いくつかの態様では、ロード命令に先行する最近の命令(たとえば、1つまたは複数の最近の分岐命令)のプログラムカウンタの複数のビットとともに、ロード命令自体のプログラムカウンタの複数の低次ビットのハッシュを生成することによって、ロード経路履歴をテーブルインデックスおよび予測器タグ内に組み込むことができる。次いで、テーブルインデックスおよび予測器タグが結果として生じるハッシュ値から導出され得る。
【００２４】
テーブルインデックスは、ロードアドレス予測テーブル140内のロードアクセス予測テーブルエントリにアクセスするためにロードアドレス予測エンジン102によって使用される。ロードアドレス予測エンジン102によって生成される予測器タグは、次いで、テーブルインデックスに対応するロードアドレス予測テーブルエントリの予測器タグ値のコンテンツと比較される。予測器タグがロードアドレス予測テーブルエントリの予測器タグ値に整合する場合、ロード命令に関する予測されるメモリアドレスとして、ロードアドレス予測エンジン102によって、ロードアドレス予測テーブルエントリからメモリアドレス値(図示せず)が読み取られて提供される。次いで、非限定的な例として、予測メモリアドレスを使用して、データ値予測、データプリフェッチ、および/またはメモリディスアンビギュエーションなどのロード命令最適化を円滑にすることができる。ロード命令最適化を円滑にする際のロードアドレス予測エンジン102の例示的な態様の動作について、図3A〜図3Cに関して以下でさらに詳細に論じる。
【００２５】
いくつかの態様において図1のロードアドレス予測テーブル140に対応し得る例示的なロードアドレス予測テーブル200を示すために、図2が提供される。明快のために、図2について説明する際に、図1の要素を参照する。図2で理解されるように、ロードアドレス予測エンジン102は、複数のロードアドレス予測テーブルエントリ202(0)〜202(Y)を含むロードアドレス予測テーブル200を提供する。ロードアドレス予測テーブルエントリ202(0)〜202(Y)の各々は、図1のフロントエンド命令パイプライン114内のロードアドレス予測エンジン102によって検出されるロード命令(図示せず)に関連付けられ得る。いくつかの態様によれば、ロードアドレス予測テーブルエントリ202(0)〜202(Y)に関する何らかのエイリアシング問題を除去または低減するために、ロードアドレス予測テーブル200はダイレクトマップ式タグ付きテーブル(direct-mapped tagged table)を備え得る。
【００２６】
ロードアドレス予測テーブルエントリ202(0)〜202(Y)の各々は、ロードアドレス予測エンジン102によって対応するロード命令に関して生成される予測器タグ(図示せず)を記憶する予測器タグフィールド204を含む。上述のように、各予測器タグフィールド204のコンテンツは、ロード命令に関するロード経路履歴と組み合わせてロード命令に関する識別子(PCなど)に基づいてロードアドレス予測エンジン102によって生成され得る。いくつかの態様では、予測器タグは、対応するロード命令に関するさらなる履歴コンテキストを提供するために、分岐方向(branch direction)履歴(図示せず)および/または分岐経路履歴(図示せず)をさらに組み込むことができる。
【００２７】
各ロードアドレス予測テーブルエントリ202(0)〜202(Y)はまた、メモリアドレスフィールド206を含む。メモリアドレスフィールド206は、ロードアドレス予測テーブル200のトレーニング中にポピュレートされ、ロードアドレス予測テーブルエントリ202(0)〜202(Y)に対応するロード命令によって前に参照されたメモリアドレスを表す。ロードアドレス予測テーブル200内のヒット時に、データ値予測、データ値プリフェッチ、および/またはメモリディスアンビギュエーションの最適化手順に対してロード命令に関する予測されるメモリアドレスとして、メモリアドレスフィールド206のコンテンツがロードアドレス予測エンジン102によって提供され得る。
【００２８】
さらなる性能最適化を実現するために、ロードアドレス予測テーブル200のロードアドレス予測テーブルエントリ202(0)〜202(Y)の各々は、いくつかの態様では、信頼値フィールド208を提供することもできる。ロードアドレス予測エンジン102は、最小信頼しきい値を示すようにプリセットされる信頼しきい値フィールド210をさらに提供することができる。ロードアドレス予測テーブルエントリ202(0)〜202(Y)の各々に関する信頼値フィールド208を信頼しきい値フィールド210と比較して、ロードアドレス予測テーブルエントリ202(0)〜202(Y)がロードアドレス予測に対して十分信頼できると見なされ得るかどうかを判定することができる。このようにして、ロード命令に関する予測されるメモリアドレス内の信頼レベルを示すための飽和カウンタとして、信頼しきい値フィールド210とともに信頼値フィールド208を使用することができる。非限定的な例として、ロードアドレス予測テーブルエントリ202(0)など、ロードアドレス予測テーブルエントリ202(0)〜202(Y)のうちの1つの初期化時に、信頼値フィールド208はゼロ(0)に設定され得る。後続のヒット時に、信頼値フィールド208は増分されてよいが、信頼値フィールド208が信頼しきい値フィールド210を超えるまで、メモリアドレスフィールド206によって示される予測されるメモリアドレスを提供することはできない。反対に、予測されるメモリアドレスがロード命令に関して提供されるが、後で、誤予測であると判定された場合、信頼値フィールド208は減分され得るか、またはゼロ(0)にリセットされ得る。
【００２９】
ロードアドレス予測テーブル200のいくつかの態様は、ロードアドレス予測テーブルエントリ202(0)〜202(Y)の各々の中にオプションのキャッシュウェイフィールド212を含めることによって、追加の電力最適化を実現することができる。キャッシュウェイフィールド212は、メモリアドレスフィールド206に対応するデータが位置するシステムデータキャッシュ110内のウェイを示し得る。メモリアドレスフィールド206から予測されるメモリアドレスがデータ値予測のために使用される場合、システムデータキャッシュ110内で複数のセットを読み取ることを要求するのではなく、システムデータキャッシュ110内の特定のウェイから予測されるメモリアドレスに関するデータをより効率的に検索するためのキャッシュウェイフィールド212が提供され得る。
【００３０】
いくつかの態様は、ロードアドレス予測テーブル200のロードアドレス予測テーブルエントリ202(0)〜202(Y)が、図2に示すフィールド204、206、208、および212に加えて他のフィールドを含み得ることを実現し得ることを理解されたい。さらに、いくつかの態様において、ロードアドレス予測テーブル200は、当技術分野で知られている連想度および置換ポリシー(associativity and replacement policies)に従って構成されるキャッシュとして実装される場合があることを理解されたい。図2の例では、ロードアドレス予測テーブル200は、単一のデータ構造として示されている。しかしながら、いくつかの態様では、ロードアドレス予測テーブル200はまた、1(1)つを超えるデータ構造またはデータキャッシュを含む場合がある。
【００３１】
図1のロードアドレス予測エンジン102が入来ロード命令を検出して、ロードアドレス予測を実現するための例示的な通信フローを示すために、図3A〜図3Cが提供される。図3Aは、ロード命令を検出して、ロード命令に関するテーブルインデックスおよび予測器タグを生成するための例示的な通信フローを示す。図3Bは、図1のロードアドレス予測テーブル140内のルックアップを実行して、ロードアドレス予測テーブル140内のヒットに基づいてデータ値予測を実現するための例示的な通信フローを示す。図3Cは、システムデータキャッシュ110内のミスに基づいてデータ値プリフェッチを実行するため、および/またはメモリディスアンビギュエーションのために予測されるメモリアドレスを提供するための例示的な通信フローを示す。例示のために、図3A〜図3Cのロードアドレス予測テーブル140は、図4Cに関して以下でより詳細に説明するように、すでにトレーニングを受けていると仮定することを理解されたい。明快にするために、図3A〜図3Cについて説明する際に、図1および図2の要素を参照する。
【００３２】
図3Aにおいて、ロードアドレス予測エンジン102は、矢印302によって示すように、フロントエンド命令パイプライン114からロード命令300を受信する。ロード命令300は、非限定的な例として、プログラムカウンタを備え得る識別子304を含む。ロード命令300はまた、命令300がアクセスしようとするアドレスとして計算されるメモリアドレスである「実メモリアドレス306」と呼ばれる基準を含む。実メモリアドレス306は実行パイプライン112内のかなり後になるまで最終的に判定することができないため、ロードアドレス予測エンジン102を使用して、システム性能および電力消費の最適化を試みる際に予測されるメモリアドレス(図示せず)を生成する。
【００３３】
ロード命令300を受信した後、ロードアドレス予測エンジン102は、テーブルインデックス308および予測器タグ310を生成する。ロードアドレス予測エンジン102は、矢印314、316および矢印318、320によって示すように、テーブルインデックス308および予測器タグ310をロード命令300の識別子304およびロード経路履歴312に基づかせる。いくつかの態様では、分岐方向履歴322(矢印324および326によって示される)および/または分岐経路履歴328(矢印330および332によって示される)を使用することによって、追加の履歴コンテキストをテーブルインデックス308および予測器タグ310内に組み込むことができる。テーブルインデックス308および予測器タグ310が生成されると、動作は図3Bを続ける。
【００３４】
図3Bにおいて、ロードアドレス予測エンジン102は、矢印334によって示すように、ロードアドレス予測テーブル140内のインデックスとしてテーブルインデックス308を使用する。この例では、テーブルインデックス308は、ロードアドレス予測テーブルエントリ202(0)に対応する。ロードアドレス予測エンジン102は、次いで、矢印336によって示すように、予測器タグ310をロードアドレス予測テーブルエントリ202(0)の予測器タグフィールド204のコンテンツと比較する。予測器タグ310が予測器タグフィールド204のコンテンツに整合しない(すなわち、ロードアドレス予測テーブル140のミス)場合、ロードアドレス予測テーブル140は、ロード命令300に関する予測されるメモリアドレスを含まず、ロード命令300の処理が通常に進む。図4Cに関して以下で説明するように、ロード命令300の実行後、ロードアドレス予測テーブル140は、ロード命令300の実行の結果に基づいて更新され得る。
【００３５】
予測器タグ310が予測器タグフィールド204のコンテンツに整合する場合、ロードアドレス予測エンジン102は、ロードアドレス予測テーブルエントリ202(0)のメモリアドレスフィールド206を使用して、ロード命令300に関する予測されるメモリアドレス338を提供する。上述のように、ロードアドレス予測テーブル140が信頼しきい値フィールド210とともに信頼値フィールド208を採用する態様では、ロードアドレス予測エンジン102は、信頼値フィールド208が信頼しきい値フィールド210を超える場合のみ、予測されるメモリアドレス338を提供することができる。
【００３６】
いくつかの態様では、予測されるメモリアドレス338は、矢印340によって示すように、予測されるメモリアドレス338に関するデータがシステムデータキャッシュ110内に存在するかどうかを判定するために使用され得る。予測されるメモリアドレス338に関するヒットがシステムデータキャッシュ110上で生じる場合、予測されるメモリアドレス338に対応する検索データ342がシステムデータキャッシュ110から読み取られる。検索データ342は、矢印344によって示すように、データ値予測としてフロントエンド命令パイプライン114に供給される。
【００３７】
図3Cを参照すると、予測されるメモリアドレス338に関してシステムデータキャッシュ110内でミスが生じる場合、ロードアドレス予測エンジン102は、予測されるメモリアドレス338に関するデータ値プリフェッチを円滑にし得る。そうするために、矢印348によって示すように、予測されるメモリアドレス338に対応するプリフェッチデータ346をシステムメモリ106から読み取ることができる。プリフェッチデータ346は、次いで、矢印350および352によって示すように、予測されるメモリアドレス338とともにシステムデータキャッシュ110内に記憶される。このようにして、システムデータキャッシュ110内で予測されるメモリアドレス338上に後でヒットがある場合、プリフェッチデータ346はシステムデータキャッシュ110内で利用可能にされ得る。
【００３８】
いくつかの態様では、予測されるメモリアドレス338はまた、メモリディスアンビギュエーションを改善するための既存の機構とともに使用されるバックエンド命令パイプライン116に提供され得る。メモリディスアンビギュエーションでは、ロード命令300などのロード命令の計算されたアドレスがより古いストア命令(図示せず)の計算されたアドレスに対して検査される。ロード命令300のアドレスが前のストア命令のアドレスと整合する場合、ロード命令300は、システムデータキャッシュ110をプローブする代わりに、ストア命令のデータが使用のために利用可能になるまで待機しなければならない。ロード命令300のアドレスを使用してロードアドレス予測テーブル140がトレーニングされると、ロードアドレス予測テーブル140は、ロードアドレスまたはストアアドレスが計算される前に、ロードアドレスまたはストアアドレスを予測するのを助けるために使用され得る。これは、次に、ロード命令のより効率的な実行を可能にし得る。
【００３９】
図4A〜図4Cは、図1のロードアドレス予測エンジン102が、入来ロード命令を検出して、ロードアドレス予測を実現するための、およびロードアドレス予測テーブル140をトレーニングするための例示的なプロセスを示すフローチャートである。明快のために、図4A〜図4Cについて説明する際に、図1、図2、および図3A〜図3Cの要素を参照する。動作は、図4Aにおいて、プロセッサ100のロードアドレス予測エンジン102がロード命令300を(プロセッサ100の実行パイプライン112のフロントエンド命令パイプライン114から)受信する(ブロック400)ことから始まる。この点で、ロードアドレス予測エンジン102は、本明細書で「ロード命令を受信するための手段」と呼ばれる場合がある。ロードアドレス予測エンジン102は、ロード命令300に関する識別子304およびロード経路履歴312に基づいて、テーブルインデックス308および予測器タグ310を生成する(ブロック402)。したがって、ロードアドレス予測エンジン102は、本明細書で、「ロード命令に関する識別子およびロード経路履歴インジケータに基づいて、テーブルインデックスおよび予測器タグを生成するための手段」と呼ばれる場合がある。いくつかの態様では、テーブルインデックス308および予測器タグ310を生成するためのブロック402の動作は、ロード命令300の分岐方向履歴322および/または分岐経路履歴328にさらに基づき得る(ブロック404)。
【００４０】
ロードアドレス予測エンジン102は、次いで、予測器タグ310が、ロードアドレス予測エンジン102のロードアドレス予測テーブル140の複数のロードアドレス予測テーブルエントリ202(0)〜202(Y)のうちの、テーブルインデックス308に対応する、ロードアドレス予測テーブルエントリ202(0)の予測器タグフィールド204内に存在するかどうかを判定する(ブロック406)。ロードアドレス予測エンジン102は、したがって、本明細書で「予測器タグが、ロードアドレス予測エンジンのロードアドレス予測テーブルの複数のロードアドレス予測テーブルエントリのうちの、テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するかどうかを判定するための手段」と呼ばれる場合がある。予測器タグ310がテーブルインデックス308に対応するロードアドレス予測テーブルエントリ202(0)の予測器タグフィールド204内に存在しない場合、ロード命令300の処理は続く(ブロック408)。次いで、処理は図4Cのブロック410において再開する。
【００４１】
しかしながら、ロードアドレス予測エンジン102が、決定ブロック406において、予測器タグ310がテーブルインデックス308に対応するロードアドレス予測テーブルエントリ202(0)の予測器タグフィールド204内に存在すると判定した場合、ロードアドレス予測エンジン102は、いくつかの態様では、ロードアドレス予測テーブルエントリ202(0)の信頼値フィールド208がロードアドレス予測エンジン102の信頼しきい値フィールド210を超えるかどうかをさらに判定することができる(ブロック412)。そうである場合(または、ロードアドレス予測エンジン102の態様が、信頼値フィールド208および信頼しきい値フィールド210を利用しない場合)、処理は図4Bのブロック414において再開する。ロードアドレス予測エンジン102が、ブロック412において、信頼値フィールド208が信頼しきい値フィールド210を越えないと判定する場合、ロード命令300の処理は続く(ブロック408)。次いで、処理は図4Cのブロック410において再開する。
【００４２】
次に図4Bを参照すると、ロードアドレス予測エンジン102は、ロード命令300に関する予測されるメモリアドレス338として、ロードアドレス予測テーブルエントリ202(0)のメモリアドレスフィールド206から予測されるメモリアドレス338を提供する(ブロック414)。この点で、ロードアドレス予測エンジン102は、本明細書で「予測器タグが、ロードアドレス予測エンジンのロードアドレス予測テーブルの複数のロードアドレス予測テーブルエントリのうちの、テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するとの判定に応答して、ロード命令に関する予測されるメモリアドレスとして、ロードアドレス予測テーブルエントリのメモリアドレスフィールドからメモリアドレスを提供するための手段」と呼ばれる場合がある。いくつかの態様は、ロードアドレス予測エンジン102が次に、ロード命令300に関する予測されるメモリアドレス338がプロセッサ100のシステムデータキャッシュ110内に存在するかどうかを判定することを実現し得る(ブロック416)。ロードアドレス予測テーブルエントリ202(0)がオプションのキャッシュウェイフィールド212を含む態様では、決定ブロック416における判定は、テーブルインデックス308に対応するロードアドレス予測テーブルエントリ202(0)のキャッシュウェイフィールド212に部分的に基づき得る。予測されるメモリアドレス338がシステムデータキャッシュ110内に存在する場合、ロードアドレス予測エンジン102は、予測されるメモリアドレス338に関するデータ342をシステムデータキャッシュ110から検索する(ブロック418)。検索データ342は、次いで、データ値予測として、プロセッサ100の実行パイプライン112のバックエンド命令パイプライン116に提供される(ブロック420)。次いで、処理は図4Bのブロック422において再開する場合がある。
【００４３】
ロードアドレス予測エンジン102が、図4Bの決定ブロック416において、ロード命令300に関する予測されるメモリアドレス338がプロセッサ100のシステムデータキャッシュ110内に存在しないと判定した場合、ロードアドレス予測エンジン102は、予測されるメモリアドレス338に対応するデータ346をプロセッサ100のシステムメモリ106からプリフェッチすることができる(ブロック424)。プリフェッチデータ346は、次いで、プロセッサ100のシステムデータキャッシュ110内に記憶される(ブロック426)。次いで、処理は、図4Bのブロック422において再開する。
【００４４】
図4Bの参照を続けると、ロードアドレス予測エンジン102はまた、いくつかの態様では、ロード命令300に関する予測されるメモリアドレス338として、ロードアドレス予測テーブルエントリ202(0)のメモリアドレスフィールド206のメモリアドレス338をメモリディスアンビギュエーションのためにプロセッサ100の実行パイプライン112のバックエンド命令パイプライン116に提供することができる(ブロック422)。次いで、処理は、図4Cのブロック410で継続する。
【００４５】
次に図4Cを参照すると、ロードアドレス予測エンジン102は、ロード命令300の実行の後で、ロードアドレス予測テーブル140をトレーニングする動作を実行する。ロードアドレス予測エンジン102は、最初に、ロード命令300の実行に続いて、予測器タグ310が、複数のロードアドレス予測テーブルエントリ202(0)〜202(Y)のうちの、テーブルインデックス308に対応する、ロードアドレス予測テーブルエントリ202(0)の予測器タグフィールド204内に存在するかどうかを判定する(ブロック410)。そうである場合、ロードアドレス予測テーブルエントリ202(0)は、ロード命令300に関して存在し、ロード命令300の実行の結果に基づいて更新されるべきである。
【００４６】
したがって、ロードアドレス予測エンジン102は、次に、ロード命令300の実メモリアドレス306(すなわち、計算されたアドレス)がロード命令300に関する予測されるメモリアドレス338に整合するかどうかを判定する(ブロック428)。いくつかの態様では、ロードアドレス予測エンジン102はまた、実メモリアドレス306のウェイをキャッシュウェイフィールド212と比較することができる。実メモリアドレス306が予測されるメモリアドレス338に整合する場合(および、オプションで、キャッシュウェイフィールド212が正確である場合)、ロードアドレス予測エンジン102は、テーブルインデックス308に対応するロードアドレス予測テーブルエントリ202(0)の信頼値フィールド208を増分することができる(ブロック430)。しかしながら、実メモリアドレス306が予測されるメモリアドレス338に整合しない場合、ロードアドレス予測エンジン102は、テーブルインデックス308に対応するロードアドレス予測テーブルエントリ202(0)の信頼値フィールド208をリセットする(ブロック432)。実メモリアドレス306が予測されるメモリアドレス338に整合するが、キャッシュウェイフィールド212が不正確である可能性が低い場合には、ロードアドレス予測エンジン102はキャッシュウェイフィールド212を更新することに留意されたい。
【００４７】
ロードアドレス予測エンジン102が、決定ブロック410において、予測器タグ310が、複数のロードアドレス予測テーブルエントリ202(0)〜202(Y)のうちの、テーブルインデックス308に対応する、ロードアドレス予測テーブルエントリ202(0)の予測器タグフィールド204内に存在しないと判定した場合、ロードアドレス予測テーブルエントリ202(0)はロード命令300に関して存在しないようである。ロードアドレス予測エンジン102は、次に、テーブルインデックス308に対応するロードアドレス予測テーブルエントリ202(0)の信頼値フィールド208が非ゼロであるかどうかを判定する(ブロック434)。そうである場合、予測器タグ310との不整合は過渡状態であり得、したがって、ロードアドレス予測エンジン102は、テーブルインデックス308に対応するロードアドレス予測テーブルエントリ202(0)の信頼値フィールド208を減分する(ブロック436)。ロードアドレス予測エンジン102が、決定ブロック434において、テーブルインデックス308に対応するロードアドレス予測テーブルエントリ202(0)の信頼値フィールド208がゼロ(0)であると判定した場合、ロードアドレス予測エンジン102は、予測器タグ310およびロード命令300に関する実メモリアドレス306を使用して、テーブルインデックス308に対応するロードアドレス予測テーブルエントリ202(0)を初期化する(ブロック438)。
【００４８】
本明細書で開示する態様によるプロセッサベースシステム内のロード経路履歴に基づいてアドレス予測テーブルを使用してロードアドレス予測を実現することは、任意のプロセッサベースデバイス内で提供され得るか、または任意のプロセッサベースデバイスに統合され得る。例は、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、スマートフォン、タブレット、ファブレット、サーバ、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、および自動車を含む。
【００４９】
この点について、図5は、図1のロードアドレス予測エンジン(LAPE)102を採用することができるプロセッサベースシステム500の一例を示す。この例では、プロセッサベースシステム500は、図1のプロセッサ100に対応し得、1つまたは複数のプロセッサ504を各々が含む1つまたは複数のCPU502を含む。CPU502は、一時的に記憶されたデータに迅速にアクセスするために、プロセッサ504に結合されたキャッシュメモリ506を有する場合がある。CPU502は、システムバス508に結合され、プロセッサベースシステム500内に含まれるデバイスを相互結合することができる。よく知られているように、CPU502は、システムバス508を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU502は、スレーブデバイスの一例として、メモリコントローラ510にバストランザクション要求を通信することができる。図5には示していないが、複数のシステムバス508を設けることができる。
【００５０】
他のデバイスもシステムバス508に接続され得る。図5に示すように、これらのデバイスは、例として、メモリシステム512と、1つまたは複数の入力デバイス514と、1つまたは複数の出力デバイス516と、1つまたは複数のネットワークインターフェースデバイス518と、1つまたは複数のディスプレイコントローラ520とを含むことができる。入力デバイス514は、入力キー、スイッチ、音声プロセッサなどを含むが、これらに限定されない、任意のタイプの入力デバイスを含むことができる。出力デバイス516は、限定はしないが、オーディオ、ビデオ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス518は、ネットワーク522との間のデータの交換を可能にするように構成された任意のデバイスであり得る。ネットワーク522は、限定はしないが、ワイヤードネットワークまたはワイヤレスネットワーク、プライベートネットワークまたは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク、ワイヤレスローカルエリアネットワーク、BLUETOOTH(登録商標)(BT)、およびインターネットを含む任意のタイプのネットワークであり得る。ネットワークインターフェースデバイス518は、必要に応じて、任意のタイプの通信プロトコルをサポートするように構成されることが可能である。メモリシステム512は、1つまたは複数のメモリユニット524(0)〜524(N)を含み得る。
【００５１】
CPU502はまた、1つまたは複数のディスプレイ526に送られる情報を制御するために、システムバス508を介してディスプレイコントローラ520にアクセスするように構成され得る。ディスプレイコントローラ520は、1つまたは複数のビデオプロセッサ528を介して表示されるべき情報をディスプレイ526に送り、1つまたは複数のビデオプロセッサ528は、表示されるべき情報をディスプレイ526に適したフォーマットになるように処理する。ディスプレイ526は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含み得る。
【００５２】
本明細書で説明するデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて採用される場合がある。本明細書で開示したメモリは、任意のタイプおよびサイズのメモリである場合があり、所望の任意のタイプの情報を記憶するように構成される場合がある。この互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、概してそれらの機能に関して上記において説明した。そのような機能性がどのように実装されるのかは、特定の適用例、設計選択、および/またはシステム全体に課される設計制約によって決まる。当業者は、特定の応用例ごとに様々な方式で記載の機能を実装してもよいが、そのような実装の決定が、本開示の範囲からの逸脱を引き起こすと解釈されるべきではない。
【００５３】
本明細書で開示した態様に関連して説明した様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。プロセッサは、マイクロプロセッサであってよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPおよびマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装されてもよい。
【００５４】
本明細書の例示的な態様のいずれかで説明した動作ステップが、例示および説明のために記載されていることにも留意されたい。説明した動作は、図示のシーケンス以外の数多くの異なるシーケンスにおいて実行される場合がある。さらに、単一の動作ステップにおいて説明する動作は、実際にはいくつかの異なるステップにおいて実行される場合がある。さらに、例示的な態様で説明した1つまたは複数の動作ステップは、組み合わせられてよい。フローチャート図に示された動作ステップが、当業者には容易に明らかであるような数多くの異なる変更を受けてよいことを理解されたい。情報および信号が様々な異なる技術および技法のいずれかを使用して表されてよいことも当業者は理解されよう。たとえば、上記の説明全体にわたって参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表されてよい。
【００５５】
本開示のこれまでの説明は、任意の当業者が本開示を作製または使用できるようにするために提供される。本開示の様々な変更が当業者に容易に明らかになり、本明細書で定義する一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用されてもよい。したがって、本開示は、本明細書で説明した例および設計に限定されるものでなく、本明細書で開示した原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００５６】
100  プロセッサ
102  ロードアドレス予測エンジン
104  メモリインターフェース1
106  システムメモリ
108  命令キャッシュ
110  システムデータキャッシュ
112  実行パイプライン
114  フロントエンド命令パイプライン
116  バックエンド命令パイプライン
118  フェッチ/復号パイプラインステージ、ステージ
120  命令キューステージ、ステージ
122  リネームステージ、ステージ
124  レジスタアクセスステージ、ステージ
126  予約ステージ、ステージ
128  ディスパッチステージ、ステージ
130  実行ステージ、ステージ
132  レジスタファイル
134(0)〜134(X)  レジスタ
136  アーキテクチャレジスタ
138  レジスタマップテーブル
140  ロードアドレス予測テーブル
142  矢印
144  矢印
146  双方向矢印
200  ロードアドレス予測テーブル
202(0)〜202(Y)  ロードアドレス予測テーブルエントリ
204  予測器タグフィールド、フィールド
206  メモリアドレスフィールド、フィールド
208  信頼値フィールド、フィールド
210  信頼しきい値フィールド、フィールド
212  キャッシュウェイフィールド、フィールド
300  ロード命令
302  矢印
304  識別子
306  実メモリアドレス
308  テーブルインデックス
310  予測器タグ
312  ロード経路経歴
314  矢印
316  矢印
318  矢印
320  矢印
322  分岐方向履歴
324  矢印
326  矢印
328  分岐経路履歴
330  矢印
332  矢印
334  矢印
336  矢印
338  メモリアドレス
340  矢印
342  検索データ
344  矢印
346  プリフェッチデータ
348  矢印
350  矢印
352  矢印
500  プロセッサベースシステム
502  CPU
504  プロセッサ
506  キャッシュメモリ
508  システムバス
510  メモリコントローラ
512  メモリシステム
514  入力デバイス
516  出力デバイス
518  ネットワークインターフェースデバイス
520  ディスプレイコントローラ
522  ネットワーク
524(0)〜524(N)  メモリユニット
526  ディスプレイ
528  ビデオプロセッサ
【図１】
2019514110.tif 000003
【図２】
2019514110.tif 000004
【図３Ａ】
2019514110.tif 000005
【図３Ｂ】
2019514110.tif 000006
【図３Ｃ】
2019514110.tif 000007
【図４Ａ】
2019514110.tif 000008
【図４Ｂ】
2019514110.tif 000009
【図４Ｃ】
2019514110.tif 000010
【図５】
2019514110.tif 000011
【手続補正書】
【提出日】平成30年10月2日(2018.10.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
各々が予測器タグフィールドとメモリアドレスフィールドとを備える、複数のロードアドレス予測テーブルエントリを記憶するように構成されたロードアドレス予測テーブルを備えた、プロセッサのロードアドレス予測エンジンであって、
ロード命令を受信し、
前記ロード命令に関する識別子およびロード経路履歴インジケータに基づいて、テーブルインデックスおよび予測器タグを生成し、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するかどうかを判定し、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、前記ロード命令に関する予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリのメモリアドレスフィールドからメモリアドレスを提供する
ように構成される、ロードアドレス予測エンジン。
【請求項２】
分岐方向履歴、もしくは分岐経路履歴、またはそれらの組合せに基づいて、前記テーブルインデックスおよび前記予測器タグを生成するようにさらに構成される、請求項1に記載のロードアドレス予測エンジン。
【請求項３】
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサのシステムデータキャッシュ内に存在するかどうかを判定し、
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在するとの判定に応答して、
前記予測されるメモリアドレスに関するデータを前記システムデータキャッシュから検索し、
前記検索したデータを、データ値予測として、前記プロセッサの実行パイプラインのバックエンド命令パイプラインに提供し、
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在しないとの判定に応答して、
前記予測されるメモリアドレスに対応するデータを前記プロセッサのシステムメモリからプリフェッチし、
前記プリフェッチしたデータを前記プロセッサの前記システムデータキャッシュ内に記憶する
ようにさらに構成される、請求項1に記載のロードアドレス予測エンジン。
【請求項４】
前記複数のロードアドレス予測テーブルエントリのうちの各ロードアドレス予測テーブルエントリが、信頼値フィールドをさらに備え、
前記ロードアドレス予測エンジンが、前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが前記ロードアドレス予測エンジンの信頼しきい値フィールドを超えることにさらに応答して、前記ロード命令に関する前記予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリの前記メモリアドレスフィールドの前記メモリアドレスを提供するように構成される
請求項3に記載のロードアドレス予測エンジン。
【請求項５】
前記ロード命令の実行に続いて、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、
前記ロード命令の実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合するかどうかを判定し、
前記ロード命令の前記実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合するとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドを増分し、
前記ロード命令の前記実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合しないとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドをリセットし、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在しないとの判定に応答して、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが非ゼロであるかどうか判定し、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが非ゼロであるとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドを減分し、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドがゼロ(0)であるとの判定に応答して、前記予測器タグおよび前記ロード命令に関する前記実メモリアドレスを用いて、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリを初期化する
ようにさらに構成される、請求項4に記載のロードアドレス予測エンジン。
【請求項６】
前記複数のロードアドレス予測テーブルエントリのうちの各ロードアドレス予測テーブルエントリが、キャッシュウェイフィールドをさらに備え、
前記ロードアドレス予測エンジンが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記キャッシュウェイフィールドに基づいて、前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在するかどうかを判定するように構成される
請求項3に記載のロードアドレス予測エンジン。
【請求項７】
前記ロード命令に関する前記予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリの前記メモリアドレスフィールドの前記メモリアドレスをメモリディスアンビギュエーションのために前記プロセッサのバックエンド命令パイプラインに提供するように構成される、請求項1に記載のロードアドレス予測エンジン。
【請求項８】
集積回路(IC)に統合される、請求項1に記載のロードアドレス予測エンジン。
【請求項９】
セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、スマートフォン、タブレット、ファブレット、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、および自動車からなるグループから選択されるデバイスに統合される、請求項1に記載のロードアドレス予測エンジン。
【請求項１０】
プロセッサのロードアドレス予測エンジンであって、
ロード命令を受信するための手段と、
前記ロード命令に関する識別子およびロード経路履歴インジケータに基づいて、テーブルインデックスおよび予測器タグを生成するための手段と、
前記予測器タグが、前記ロードアドレス予測エンジンのロードアドレス予測テーブルの複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するかどうかを判定するための手段と、
前記予測器タグが、前記ロードアドレス予測エンジンの前記ロードアドレス予測テーブルの前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、前記ロード命令に関する予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリのメモリアドレスフィールドからメモリアドレスを提供するための手段と
を備える、ロードアドレス予測エンジン。
【請求項１１】
ロードアドレス予測を提供するための方法であって、
プロセッサのロードアドレス予測エンジンによって、ロード命令を受信するステップと、
前記ロード命令に関する識別子およびロード経路履歴インジケータに基づいて、テーブルインデックスおよび予測器タグを生成するステップと、
前記予測器タグが、前記ロードアドレス予測エンジンのロードアドレス予測テーブルの複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するかどうかを判定するステップと、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、前記ロード命令に関する予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリのメモリアドレスフィールドからメモリアドレスを提供するステップと
を含む、方法。
【請求項１２】
前記テーブルインデックスおよび前記予測器タグを生成するステップが、分岐方向履歴、もしくは分岐経路履歴、またはそれらの組合せにさらに基づく、請求項11に記載の方法。
【請求項１３】
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサのシステムデータキャッシュ内に存在するかどうかを判定するステップと、
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在するとの判定に応答して、
前記予測されるメモリアドレスに関するデータを前記システムデータキャッシュから検索するステップと、
前記検索したデータを、データ値予測として、前記プロセッサの実行パイプラインのバックエンド命令パイプラインに提供するステップと、
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在しないとの判定に応答して、
前記予測されるメモリアドレスに対応するデータを前記プロセッサのシステムメモリからプリフェッチするステップと、
前記プリフェッチしたデータを前記プロセッサの前記システムデータキャッシュ内に記憶するステップと
をさらに含む、請求項11に記載の方法。
【請求項１４】
前記複数のロードアドレス予測テーブルエントリのうちの各ロードアドレス予測テーブルエントリが、信頼値フィールドをさらに備え、
前記ロード命令に関する前記予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリの前記メモリアドレスフィールドの前記メモリアドレスを提供するステップが、前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが前記ロードアドレス予測エンジンの信頼しきい値フィールドを超えることにさらに応答する
請求項13に記載の方法。
【請求項１５】
前記ロード命令の実行に続いて、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、
前記ロード命令の実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合するかどうかを判定するステップと、
前記ロード命令の前記実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合するとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドを増分するステップと、
前記ロード命令の前記実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合しないとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドをリセットするステップと、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在しないとの判定に応答して、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが非ゼロであるかどうか判定するステップと、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが非ゼロであるとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドを減分するステップと、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドがゼロ(0)であるとの判定に応答して、前記ロード命令に関する前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリを初期化するステップと
をさらに含む、請求項14に記載の方法。
【請求項１６】
前記複数のロードアドレス予測テーブルエントリのうちの各ロードアドレス予測テーブルエントリが、キャッシュウェイフィールドをさらに備え、
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在するかどうかを判定するステップが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記キャッシュウェイフィールドに基づく
請求項13に記載の方法。
【請求項１７】
前記ロード命令に関する前記予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリの前記メモリアドレスフィールドの前記メモリアドレスをメモリディスアンビギュエーションのために前記プロセッサのバックエンド命令パイプラインに提供するステップをさらに含む、請求項11に記載の方法。
【請求項１８】
コンピュータ実行可能命令を記憶した非一時的コンピュータ可読記録媒体であって、前記コンピュータ実行可能命令が、プロセッサによって実行されると、前記プロセッサに、
ロード命令を受信させ、
前記ロード命令に関する識別子およびロード経路履歴インジケータに基づいて、テーブルインデックスおよび予測器タグを生成させ、
前記予測器タグが、ロードアドレス予測テーブルの複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するかどうかを判定させ、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、前記ロード命令に関する予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリのメモリアドレスフィールドからメモリアドレスを提供させる、
非一時的コンピュータ可読記録媒体。
【請求項１９】
前記プロセッサによって実行されると、前記プロセッサにさらに、分岐方向履歴、もしくは分岐経路履歴、またはそれらの組合せに基づいて、前記テーブルインデックスおよび前記予測器タグを生成させるコンピュータ実行可能命令を記憶した、請求項18に記載の非一時的コンピュータ可読記録媒体。
【請求項２０】
前記プロセッサによって実行されると、前記プロセッサにさらに、
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサのシステムデータキャッシュ内に存在するかどうかを判定させ、
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在するとの判定に応答して、
前記予測されるメモリアドレスに関するデータを前記システムデータキャッシュから検索させ、
前記検索したデータを、データ値予測として、前記プロセッサの実行パイプラインのバックエンド命令パイプラインに提供させ、
前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在しないとの判定に応答して、
前記予測されるメモリアドレスに対応するデータを前記プロセッサのシステムメモリからプリフェッチさせ、
前記プリフェッチしたデータを前記プロセッサの前記システムデータキャッシュ内に記憶させる
コンピュータ実行可能命令を記憶した、請求項18に記載の非一時的コンピュータ可読記録媒体。
【請求項２１】
前記プロセッサによって実行されると、前記プロセッサにさらに、前記ロードアドレス予測テーブルエントリの信頼値フィールドがロードアドレス予測エンジンの信頼しきい値フィールドを超えることに応答して、前記ロード命令に関する前記予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリの前記メモリアドレスフィールドの前記メモリアドレスを提供させる
コンピュータ実行可能命令を記憶した、請求項20に記載の非一時的コンピュータ可読記録媒体。
【請求項２２】
前記プロセッサによって実行されると、前記プロセッサにさらに、前記ロード命令の実行に続いて、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、
前記ロード命令の実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合するかどうかを判定させ、
前記ロード命令の前記実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合するとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドを増分させ、
前記ロード命令の前記実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合しないとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドをリセットさせ、
前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在しないとの判定に応答して、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが非ゼロであるかどうかを判定させ、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが非ゼロであるとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドを減分させ、
前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドがゼロ(0)であるとの判定に応答して、前記予測器タグおよび前記ロード命令に関する前記実メモリアドレスを用いて、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリを初期化させる
コンピュータ実行可能命令を記憶した、請求項21に記載の非一時的コンピュータ可読記録媒体。
【請求項２３】
前記プロセッサによって実行されると、前記プロセッサにさらに、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリのキャッシュウェイフィールドに基づいて、前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在するかどうかを判定させる
コンピュータ実行可能命令を記憶した、請求項20に記載の非一時的コンピュータ可読記録媒体。
【請求項２４】
前記プロセッサによって実行されると、前記プロセッサにさらに、前記ロード命令に関する前記予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリの前記メモリアドレスフィールドの前記メモリアドレスをメモリディスアンビギュエーションのために前記プロセッサのバックエンド命令パイプラインに提供させる
コンピュータ実行可能命令を記憶した、請求項18に記載の非一時的コンピュータ可読記録媒体。
【国際調査報告】
2019514110.tif 000012
2019514110.tif 000013