JP6744423B2 - プロセッサベースシステム内のロード経路履歴に基づくアドレス予測テーブルを使用したロードアドレス予測の実現 - Google Patents

プロセッサベースシステム内のロード経路履歴に基づくアドレス予測テーブルを使用したロードアドレス予測の実現 Download PDF

Info

Publication number
JP6744423B2
JP6744423B2 JP2018550596A JP2018550596A JP6744423B2 JP 6744423 B2 JP6744423 B2 JP 6744423B2 JP 2018550596 A JP2018550596 A JP 2018550596A JP 2018550596 A JP2018550596 A JP 2018550596A JP 6744423 B2 JP6744423 B2 JP 6744423B2
Authority
JP
Japan
Prior art keywords
load
address prediction
load address
instruction
address
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.)
Expired - Fee Related
Application number
JP2018550596A
Other languages
English (en)
Other versions
JP2019514110A5 (ja
JP2019514110A (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 JP2019514110A publication Critical patent/JP2019514110A/ja
Publication of JP2019514110A5 publication Critical patent/JP2019514110A5/ja
Application granted granted Critical
Publication of JP6744423B2 publication Critical patent/JP6744423B2/ja
Expired - Fee Related 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

優先権出願
本出願は、その全体が参照により本明細書に組み込まれている、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 ビデオプロセッサ

Claims (15)

  1. 各々が予測器タグフィールドとメモリアドレスフィールドとを備える、複数のロードアドレス予測テーブルエントリを記憶するように構成されたロードアドレス予測テーブルを備えた、プロセッサのロードアドレス予測エンジンであって、
    ロード命令を受信し、
    前記ロード命令に関する識別子およびロード経路履歴インジケータに基づいて、テーブルインデックスおよび予測器タグを生成し、
    前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するかどうかを判定し、
    前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、前記ロード命令に関する予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリのメモリアドレスフィールドからメモリアドレスを提供する
    ように構成される、ロードアドレス予測エンジン。
  2. 分岐方向履歴、もしくは分岐経路履歴、またはそれらの組合せに基づいて、前記テーブルインデックスおよび前記予測器タグを生成するようにさらに構成される、請求項1に記載のロードアドレス予測エンジン。
  3. 前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサのシステムデータキャッシュ内に存在するかどうかを判定し、
    前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在するとの判定に応答して、
    前記予測されるメモリアドレスに関するデータを前記システムデータキャッシュから検索し、
    前記検索したデータを、データ値予測として、前記プロセッサの実行パイプラインのバックエンド命令パイプラインに提供し、
    前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在しないとの判定に応答して、
    前記予測されるメモリアドレスに対応するデータを前記プロセッサのシステムメモリからプリフェッチし、
    前記プリフェッチしたデータを前記プロセッサの前記システムデータキャッシュ内に記憶する
    ようにさらに構成される、請求項1に記載のロードアドレス予測エンジン。
  4. 前記複数のロードアドレス予測テーブルエントリのうちの各ロードアドレス予測テーブルエントリが、信頼値フィールドをさらに備え、
    前記ロードアドレス予測エンジンが、前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが前記ロードアドレス予測エンジンの信頼しきい値フィールドを超えることにさらに応答して、前記ロード命令に関する前記予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリの前記メモリアドレスフィールドの前記メモリアドレスを提供するように構成される
    請求項3に記載のロードアドレス予測エンジン。
  5. 前記ロード命令の実行に続いて、
    前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、
    前記ロード命令の実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合するかどうかを判定し、
    前記ロード命令の前記実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合するとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドを増分し、
    前記ロード命令の前記実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合しないとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドをリセットし、
    前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在しないとの判定に応答して、
    前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが非ゼロであるかどうか判定し、
    前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが非ゼロであるとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドを減分し、
    前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドがゼロ(0)であるとの判定に応答して、前記予測器タグおよび前記ロード命令に関する前記実メモリアドレスを用いて、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリを初期化する
    ようにさらに構成される、請求項4に記載のロードアドレス予測エンジン。
  6. 前記複数のロードアドレス予測テーブルエントリのうちの各ロードアドレス予測テーブルエントリが、キャッシュウェイフィールドをさらに備え、
    前記ロードアドレス予測エンジンが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記キャッシュウェイフィールドに基づいて、前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在するかどうかを判定するように構成される
    請求項3に記載のロードアドレス予測エンジン。
  7. 前記ロード命令に関する前記予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリの前記メモリアドレスフィールドの前記メモリアドレスをメモリディスアンビギュエーションのために前記プロセッサのバックエンド命令パイプラインに提供するように構成される、請求項1に記載のロードアドレス予測エンジン。
  8. 集積回路(IC)に統合される、請求項1に記載のロードアドレス予測エンジン。
  9. セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、スマートフォン、タブレット、ファブレット、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、および自動車からなるグループから選択されるデバイスに統合される、請求項1に記載のロードアドレス予測エンジン。
  10. ロードアドレス予測を提供するための方法であって、
    プロセッサのロードアドレス予測エンジンによって、ロード命令を受信するステップと、
    前記ロード命令に関する識別子およびロード経路履歴インジケータに基づいて、テーブルインデックスおよび予測器タグを生成するステップと、
    前記予測器タグが、前記ロードアドレス予測エンジンのロードアドレス予測テーブルの複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するかどうかを判定するステップと、
    前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、前記ロード命令に関する予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリのメモリアドレスフィールドからメモリアドレスを提供するステップと
    を含む、方法。
  11. 前記テーブルインデックスおよび前記予測器タグを生成するステップが、分岐方向履歴、もしくは分岐経路履歴、またはそれらの組合せにさらに基づく、請求項10に記載の方法。
  12. 前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサのシステムデータキャッシュ内に存在するかどうかを判定するステップと、
    前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在するとの判定に応答して、
    前記予測されるメモリアドレスに関するデータを前記システムデータキャッシュから検索するステップと、
    前記検索したデータを、データ値予測として、前記プロセッサの実行パイプラインのバックエンド命令パイプラインに提供するステップと、
    前記ロード命令に関する前記予測されるメモリアドレスが前記プロセッサの前記システムデータキャッシュ内に存在しないとの判定に応答して、
    前記予測されるメモリアドレスに対応するデータを前記プロセッサのシステムメモリからプリフェッチするステップと、
    前記プリフェッチしたデータを前記プロセッサの前記システムデータキャッシュ内に記憶するステップと
    をさらに含む、請求項10に記載の方法。
  13. 前記複数のロードアドレス予測テーブルエントリのうちの各ロードアドレス予測テーブルエントリが、信頼値フィールドをさらに備え、
    前記ロード命令に関する前記予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリの前記メモリアドレスフィールドの前記メモリアドレスを提供するステップが、前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが前記ロードアドレス予測エンジンの信頼しきい値フィールドを超えることにさらに応答する
    請求項12に記載の方法。
  14. 前記ロード命令の実行に続いて、
    前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、
    前記ロード命令の実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合するかどうかを判定するステップと、
    前記ロード命令の前記実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合するとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドを増分するステップと、
    前記ロード命令の前記実メモリアドレスが前記ロード命令に関する前記予測されるメモリアドレスに整合しないとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドをリセットするステップと、
    前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在しないとの判定に応答して、
    前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが非ゼロであるかどうか判定するステップと、
    前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドが非ゼロであるとの判定に応答して、前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドを減分するステップと、
    前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリの前記信頼値フィールドがゼロ(0)であるとの判定に応答して、前記ロード命令に関する前記テーブルインデックスに対応する前記ロードアドレス予測テーブルエントリを初期化するステップと
    をさらに含む、請求項13に記載の方法。
  15. コンピュータ実行可能命令を記憶した非一時的コンピュータ可読記録媒体であって、前記コンピュータ実行可能命令が、プロセッサによって実行されると、前記プロセッサに、
    ロード命令を受信させ、
    前記ロード命令に関する識別子およびロード経路履歴インジケータに基づいて、テーブルインデックスおよび予測器タグを生成させ、
    前記予測器タグが、ロードアドレス予測テーブルの複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、ロードアドレス予測テーブルエントリの予測器タグフィールド内に存在するかどうかを判定させ、
    前記予測器タグが、前記複数のロードアドレス予測テーブルエントリのうちの、前記テーブルインデックスに対応する、前記ロードアドレス予測テーブルエントリの前記予測器タグフィールド内に存在するとの判定に応答して、前記ロード命令に関する予測されるメモリアドレスとして、前記ロードアドレス予測テーブルエントリのメモリアドレスフィールドからメモリアドレスを提供させる、
    非一時的コンピュータ可読記録媒体。
JP2018550596A 2016-03-31 2017-03-02 プロセッサベースシステム内のロード経路履歴に基づくアドレス予測テーブルを使用したロードアドレス予測の実現 Expired - Fee Related JP6744423B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/087,069 US11709679B2 (en) 2016-03-31 2016-03-31 Providing load address predictions using address prediction tables based on load path history in processor-based systems
US15/087,069 2016-03-31
PCT/US2017/020357 WO2017172232A1 (en) 2016-03-31 2017-03-02 Providing load address predictions using address prediction tables based on load path history in processor-based systems

Publications (3)

Publication Number Publication Date
JP2019514110A JP2019514110A (ja) 2019-05-30
JP2019514110A5 JP2019514110A5 (ja) 2020-03-26
JP6744423B2 true JP6744423B2 (ja) 2020-08-19

Family

ID=58358898

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018550596A Expired - Fee Related JP6744423B2 (ja) 2016-03-31 2017-03-02 プロセッサベースシステム内のロード経路履歴に基づくアドレス予測テーブルを使用したロードアドレス予測の実現

Country Status (9)

Country Link
US (1) US11709679B2 (ja)
EP (1) EP3436930B1 (ja)
JP (1) JP6744423B2 (ja)
KR (1) KR20180127379A (ja)
CN (1) CN108780398B (ja)
BR (1) BR112018069818A2 (ja)
CA (1) CA3016029A1 (ja)
TW (1) TW201737068A (ja)
WO (1) WO2017172232A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10235176B2 (en) * 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10936713B2 (en) 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US11281586B2 (en) * 2017-05-09 2022-03-22 Andes Technology Corporation Processor and way prediction method thereof
US10645133B2 (en) * 2017-07-12 2020-05-05 Loon Llc Method and system for delivering content over transient access networks
US10503648B2 (en) * 2017-12-12 2019-12-10 Advanced Micro Devices, Inc. Cache to cache data transfer acceleration techniques
TWI794405B (zh) 2018-02-02 2023-03-01 美商查爾斯塔克德拉普實驗室公司 用於政策執行處理的系統及方法
EP3746921B1 (en) 2018-02-02 2023-12-27 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
US11797398B2 (en) 2018-04-30 2023-10-24 Dover Microsystems, Inc. Systems and methods for checking safety properties
US10838731B2 (en) * 2018-09-19 2020-11-17 Qualcomm Incorporated Branch prediction based on load-path history
EP3877874A1 (en) 2018-11-06 2021-09-15 Dover Microsystems, Inc. Systems and methods for stalling host processor
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US10929142B2 (en) * 2019-03-20 2021-02-23 International Business Machines Corporation Making precise operand-store-compare predictions to avoid false dependencies
US11243774B2 (en) 2019-03-20 2022-02-08 International Business Machines Corporation Dynamic selection of OSC hazard avoidance mechanism
US11829763B2 (en) 2019-08-13 2023-11-28 Apple Inc. Early load execution via constant address and stride prediction
US10896041B1 (en) * 2019-09-25 2021-01-19 Microsoft Technology Licensing, Llc Enabling early execution of move-immediate instructions having variable immediate value sizes in processor-based devices
US11204771B2 (en) * 2019-10-24 2021-12-21 Arm Limited Methods and apparatus for handling processor load instructions
US11194575B2 (en) * 2019-11-07 2021-12-07 International Business Machines Corporation Instruction address based data prediction and prefetching
GB2592661B (en) * 2020-03-05 2022-05-11 Advanced Risc Mach Ltd An apparatus and method for performing branch prediction
TWI768547B (zh) * 2020-11-18 2022-06-21 瑞昱半導體股份有限公司 管線式電腦系統與指令處理方法
US11630670B2 (en) 2021-07-21 2023-04-18 Apple Inc. Multi-table signature prefetch
US20230176973A1 (en) * 2021-12-08 2023-06-08 Arm Limited Replacement control for candidate producer-consumer relationships trained for prefetch generation

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5287467A (en) 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US6108775A (en) 1996-12-30 2000-08-22 Texas Instruments Incorporated Dynamically loadable pattern history tables in a multi-task microprocessor
JPH10260834A (ja) 1997-03-18 1998-09-29 Fujitsu Ltd ロードアドレス予測装置および並列処理装置およびそのロードアドレス予測方法
US5941981A (en) 1997-11-03 1999-08-24 Advanced Micro Devices, Inc. System for using a data history table to select among multiple data prefetch algorithms
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6438673B1 (en) 1999-12-30 2002-08-20 Intel Corporation Correlated address prediction
DE10121792C2 (de) * 2000-05-26 2003-09-25 Ibm Universelle Ladeadresse/Wertevorhersageschema
US6868491B1 (en) 2000-06-22 2005-03-15 International Business Machines Corporation Processor and method of executing load instructions out-of-order having reduced hazard penalty
US7062638B2 (en) 2000-12-29 2006-06-13 Intel Corporation Prediction of issued silent store operations for allowing subsequently issued loads to bypass unexecuted silent stores and confirming the bypass upon execution of the stores
US6907520B2 (en) 2001-01-11 2005-06-14 Sun Microsystems, Inc. Threshold-based load address prediction and new thread identification in a multithreaded microprocessor
JP3594081B2 (ja) 2001-01-23 2004-11-24 日本電気株式会社 情報処理装置
JP4030314B2 (ja) 2002-01-29 2008-01-09 富士通株式会社 演算処理装置
US6976147B1 (en) 2003-01-21 2005-12-13 Advanced Micro Devices, Inc. Stride-based prefetch mechanism using a prediction confidence value
US7430650B1 (en) 2004-06-17 2008-09-30 Richard Ross Generating a set of pre-fetch address candidates based on popular sets of address and data offset counters
US7917731B2 (en) 2006-08-02 2011-03-29 Qualcomm Incorporated Method and apparatus for prefetching non-sequential instruction addresses
US7856548B1 (en) * 2006-12-26 2010-12-21 Oracle America, Inc. Prediction of data values read from memory by a microprocessor using a dynamic confidence threshold
US7640420B2 (en) 2007-04-02 2009-12-29 Intel Corporation Pre-fetch apparatus
US8392651B2 (en) * 2008-08-20 2013-03-05 Mips Technologies, Inc. Data cache way prediction
US8533438B2 (en) 2009-08-12 2013-09-10 Via Technologies, Inc. Store-to-load forwarding based on load/store address computation source information comparisons
US9189432B2 (en) * 2010-11-15 2015-11-17 Arm Limited Apparatus and method for predicting target storage unit
US9146739B2 (en) 2012-06-14 2015-09-29 International Business Machines Corporation Branch prediction preloading
US20140173294A1 (en) 2012-12-14 2014-06-19 Broadcom Corporation Techniques for emulating an eeprom device
US9367468B2 (en) 2013-01-15 2016-06-14 Qualcomm Incorporated Data cache way prediction
GB2511949B (en) 2013-03-13 2015-10-14 Imagination Tech Ltd Indirect branch prediction
US9244827B2 (en) 2013-09-25 2016-01-26 Intel Corporation Store address prediction for memory disambiguation in a processing device
US9606805B1 (en) 2015-10-19 2017-03-28 International Business Machines Corporation Accuracy of operand store compare prediction using confidence counter
US10437595B1 (en) 2016-03-15 2019-10-08 Apple Inc. Load/store dependency predictor optimization for replayed loads
US10353819B2 (en) * 2016-06-24 2019-07-16 Qualcomm Incorporated Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system

Also Published As

Publication number Publication date
EP3436930B1 (en) 2020-05-20
US11709679B2 (en) 2023-07-25
WO2017172232A1 (en) 2017-10-05
JP2019514110A (ja) 2019-05-30
CN108780398B (zh) 2022-06-07
CA3016029A1 (en) 2017-10-05
EP3436930A1 (en) 2019-02-06
TW201737068A (zh) 2017-10-16
CN108780398A (zh) 2018-11-09
US20170286119A1 (en) 2017-10-05
BR112018069818A2 (pt) 2019-01-29
KR20180127379A (ko) 2018-11-28

Similar Documents

Publication Publication Date Title
JP6744423B2 (ja) プロセッサベースシステム内のロード経路履歴に基づくアドレス予測テーブルを使用したロードアドレス予測の実現
US10353819B2 (en) Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system
US9830152B2 (en) Selective storing of previously decoded instructions of frequently-called instruction sequences in an instruction sequence buffer to be executed by a processor
US11068273B2 (en) Swapping and restoring context-specific branch predictor states on context switches in a processor
EP3433728B1 (en) Providing references to previously decoded instructions of recently-provided instructions to be executed by a processor
EP3221784B1 (en) Providing loop-invariant value prediction using a predicted values table, and related apparatuses, methods, and computer-readable media
US9697127B2 (en) Semiconductor device for controlling prefetch operation
JP6271572B2 (ja) 実行パイプラインバブルを低減するためにサブルーチンリターンのための分岐ターゲット命令キャッシュ(btic)エントリを確立すること、ならびに関連するシステム、方法、およびコンピュータ可読媒体
US10614007B2 (en) Providing interrupt service routine (ISR) prefetching in multicore processor-based systems
JP2017537408A (ja) アウトオブオーダー(ooo)プロセッサにおける早期命令実行を提供すること、ならびに関連する装置、方法、およびコンピュータ可読媒体
JP6317339B2 (ja) レジスタ関連優先度に基づく実行パイプラインへの命令の発行、ならびに関係する命令処理回路、プロセッサシステム、方法、およびコンピュータ可読媒体
US20160077836A1 (en) Predicting literal load values using a literal load prediction table, and related circuits, methods, and computer-readable media
US20220043908A1 (en) Mitigation of return stack buffer side channel attacks in a processor
US20190065060A1 (en) Caching instruction block header data in block architecture processor-based systems
JP2018523241A (ja) パント回避テーブル(pat)を使用したコンピュータプロセッサ内のメモリ命令パントの予測
US20160291981A1 (en) Removing invalid literal load values, and related circuits, methods, and computer-readable media
US20210089308A1 (en) Systems and methods for processing instructions having wide immediate operands
US20190294443A1 (en) Providing early pipeline optimization of conditional instructions in processor-based systems

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181002

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200214

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200214

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200605

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200622

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200730

R150 Certificate of patent or registration of utility model

Ref document number: 6744423

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees