IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

<>
  • 特表-キャッシュミス予測器 図1
  • 特表-キャッシュミス予測器 図2
  • 特表-キャッシュミス予測器 図3
  • 特表-キャッシュミス予測器 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-12
(54)【発明の名称】キャッシュミス予測器
(51)【国際特許分類】
   G06F 12/0862 20160101AFI20240905BHJP
【FI】
G06F12/0862 105
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024517402
(86)(22)【出願日】2022-08-26
(85)【翻訳文提出日】2024-04-12
(86)【国際出願番号】 US2022041754
(87)【国際公開番号】W WO2023055510
(87)【国際公開日】2023-04-06
(31)【優先権主張番号】17/490,739
(32)【優先日】2021-09-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】シージー アイゼン
(72)【発明者】
【氏名】ポール ジェイ. モイヤー
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205JJ13
5B205MM03
5B205NN88
5B205NN92
5B205SS12
5B205UU31
(57)【要約】
キャッシュミス予測に基づいて情報を取り出すための方法、デバイス及びシステムが開示される。情報のキャッシュ検索がキャッシュをミスするという予測は、履歴テーブルに基づいて行われる。情報のキャッシュ検索は、要求に基づいて実行される。情報についてのメインメモリフェッチは、情報のキャッシュ検索がキャッシュをミスするという予測に基づいて、キャッシュ検索が完了する前に開始される。いくつかの実施形態では、予測は、履歴テーブルに記憶されたビットの第1のセットを、履歴テーブルに記憶されたビットの第2のセットと比較することを含む。いくつかの実施形態では、予測は、情報の要求のアドレスの少なくとも一部を、履歴テーブルのビットのセットと比較することを含む。
【選択図】図4
【特許請求の範囲】
【請求項1】
キャッシュミス予測に基づいて情報を取り出すための方法であって、
情報の要求を受信することと、
履歴テーブルに基づいて、前記情報のキャッシュ検索がキャッシュをミスするのを予測することと、
前記要求に基づいて前記情報のキャッシュ検索を実行することと、
前記情報のキャッシュ検索がキャッシュをミスするという予測に基づいて、前記キャッシュ検索が完了する前に、前記情報をメインメモリからフェッチすることと、を含む、
方法。
【請求項2】
前記履歴テーブルに基づいて、前記情報のキャッシュ検索がキャッシュをミスするのを予測することは、前記履歴テーブルに記憶されたビットの第1のセットを、前記履歴テーブルに記憶されたビットの第2のセットと比較することを含む、
請求項1の方法。
【請求項3】
前記履歴テーブルのレゾリューションは、キャッシュミスの履歴を追跡するビットの数に対応する、
請求項1の方法。
【請求項4】
利用可能なメモリ帯域幅の量に基づいて前記履歴テーブルのレゾリューションを調整することを含む、
請求項3の方法。
【請求項5】
前記情報のキャッシュ検索がキャッシュにヒットすることに応じて、前記履歴テーブルのレゾリューションを調整することを含む、
請求項3の方法。
【請求項6】
前記情報をメインメモリからフェッチすることは、前記キャッシュ検索が完了した後に完了する、
請求項1の方法。
【請求項7】
前記履歴テーブルに基づいて、前記情報のキャッシュ検索がキャッシュをミスするのを予測することは、前記情報の要求のアドレスの少なくとも一部を、前記履歴テーブルのビットのセットと比較することを含む、
請求項1の方法。
【請求項8】
前記履歴テーブルのレゾリューションは、前記履歴テーブルのビットのセットを含むビットの数に対応する、
請求項7の方法。
【請求項9】
利用可能なメモリ帯域幅の量に基づいて前記履歴テーブルのレゾリューションを調整することを含む、
請求項8の方法。
【請求項10】
前記情報の要求がキャッシュをミスするのを予測すること、及び、前記予測に一致しない対応するキャッシュヒットを検出することに応じて、前記履歴テーブルのレゾリューションを調整することを含む、
請求項8の方法。
【請求項11】
キャッシュミス予測に基づいて情報を取り出すように構成されたプロセッサであって、
情報の要求を受信するように構成された回路と、
履歴テーブルに基づいて、前記情報のキャッシュ検索がキャッシュをミスするのを予測するように構成された回路と、
前記要求に基づいて前記情報のキャッシュ検索を実行するように構成された回路と、
前記情報のキャッシュ検索がキャッシュをミスするという予測に基づいて、前記キャッシュ検索が完了する前に、前記情報をメインメモリからフェッチするように構成された回路と、を備える、
プロセッサ。
【請求項12】
履歴テーブルに基づいて、前記情報のキャッシュ検索がキャッシュをミスするのを予測するように構成された回路は、前記履歴テーブルに記憶されたビットの第1のセットを、前記履歴テーブルに記憶されたビットの第2のセットと比較するように構成された回路を含む、
請求項11のプロセッサ。
【請求項13】
前記履歴テーブルのレゾリューションは、キャッシュミスの履歴を追跡するビットの数に対応する、請求項11に記載のプロセッサ。
【請求項14】
利用可能なメモリ帯域幅の量に基づいて前記履歴テーブルのレゾリューションを調整するように構成された回路を備える、
請求項13のプロセッサ。
【請求項15】
前記情報のキャッシュ検索がキャッシュにヒットすることに応じて、前記履歴テーブルのレゾリューションを調整するように構成された回路を備える、
請求項13のプロセッサ。
【請求項16】
前記情報をメインメモリからフェッチすることは、前記キャッシュ検索が完了した後に完了する、
請求項11のプロセッサ。
【請求項17】
前記履歴テーブルに基づいて、前記情報のキャッシュ検索がキャッシュをミスするのを予測するように構成された回路は、前記情報の要求のアドレスの少なくとも一部を、前記履歴テーブルのビットのセットと比較するように構成された回路を含む、
請求項11のプロセッサ。
【請求項18】
前記履歴テーブルのレゾリューションは、前記履歴テーブルのビットのセットを含むビットの数に対応する、
請求項17のプロセッサ。
【請求項19】
利用可能なメモリ帯域幅の量に基づいて前記履歴テーブルの前記レゾリューションを調整するように構成された回路を備える、
請求項18のプロセッサ。
【請求項20】
前記情報の要求がキャッシュをミスするのを予測すること、及び、前記予測に一致しない対応するキャッシュヒットを検出することに応じて、前記履歴テーブルのレゾリューションを調整するように構成された回路を備える、
請求項18のプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2021年9月30日に出願された米国特許出願第17/490,739号の利益を主張し、その内容は、参照によって、本明細書に完全に記載されているように組み込まれる。
【背景技術】
【0002】
コンピュータシステムは、処理デバイスが使用するための情報を記憶するメモリデバイスを含む。コンピュータシステムは、通常、プロセッサレジスタ、キャッシュメモリ及びメインメモリ等のように、異なる機能を有するいくつかのタイプのメモリを含む。様々なタイプのメモリは、通常、アクセスレイテンシ又は他の好適なメトリックに基づいてメモリ階層に編成される。メモリ階層は、プロセッサレジスタ、キャッシュメモリ及びメインメモリを含んでもよい。ハードディスクドライブ及びテープバックアップドライブ等の他のデバイスも、いくつかの実装においてはメモリ階層に含まれるが、このようなデバイスは、メモリデバイスではなく記憶デバイスと称されることが多い。アクセスレイテンシは、メモリからの情報の要求と、例えば、要求されたデータ又は情報がメモリに記憶されていないという指標が戻ってきたことの何れかによってアクセスが完了するまでの時間を指す。
【0003】
プロセッサレジスタ等のように、メモリ階層の最上位にあるデバイスは、システム内でアクセス時間が最速であり、アクセスするために最も即座にアクセス可能である(例えば、より即座にアクセスするために、電源投入されている及び/又は編成されている)が、一般的には、記憶容量がより小さく、及び/又は、(例えば、電力消費及び/又はダイエリアコストの点では)より高価である。メモリ階層においてより下位にあるデバイスは、アクセス時間がより遅く、及び/又は、即座にアクセス可能ではないが、一般的には、記憶容量がより大きく、及び/又は、より安価である。処理ユニットは、一般的には、メモリ階層の最上位にあるデバイス(例えば、プロセッサレジスタ)にしか直接アクセスしない。
【0004】
より頻繁に使用される情報は、メモリ階層のより上位のレベルに記憶され、より頻繁に使用されない情報は、より下位のレベルに記憶される。プロセッサによる計算に必要な情報がメモリ階層の最上位に存在しない場合、その情報は、階層の次に下位のレベルから取り出され、メモリ階層の最上位に記憶される。例えば、演算に必要な情報がプロセッサレジスタに存在しない場合、その情報は、キャッシュメモリからフェッチされる。情報が階層の次に下位のレベルでも利用可能でない場合、その情報は、更に下位のレベル(例えば、より下位のレベルキャッシュ又はシステムメモリ)からフェッチされる。メモリ階層の特定のレベルで情報が利用可能であるかどうかを判定し、メモリ階層のより下位のレベルからそれを取り出すために使用される時間は、アクセスレイテンシの一因となり、コンピュータシステムのパフォーマンスに影響を与える。
【0005】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0006】
図1】本開示の1つ以上の特徴を実装することができる例示的なデバイスのブロック図である。
図2】利用可能なメモリ帯域幅に基づく履歴追跡レゾリューション(history tracking resolution)の例示的な調整を示すフローチャートである。
図3】フィードバックに基づく履歴追跡レゾリューションの例示的な調整を示すフローチャートである。
図4】メモリシステムの一例を示すブロック図である。
【発明を実施するための形態】
【0007】
いくつかの実施形態では、キャッシュミス予測に基づいて情報を取り出すための方法を提供する。情報のキャッシュ検索(キャッシュルックアップ)がキャッシュをミスするであろうという予測は、履歴テーブルに基づいて行われる。情報のキャッシュ検索は、要求に基づいて実行される。情報に関するメインメモリフェッチは、情報のキャッシュ検索がキャッシュをミスするであろうという予測に基づいて、キャッシュ検索が完了する前に開始される。
【0008】
いくつかの実施形態では、履歴テーブルに基づいて、情報のキャッシュ検索がキャッシュをミスするであろうことを予測することは、履歴テーブルに記憶されたビットの第1のセットを、履歴テーブルに記憶されたビットの第2のセットと比較することを含む。いくつかの実施形態では、履歴テーブルのレゾリューション(resolution)(分解能又は解像度)は、キャッシュミスの履歴を追跡するビット数に対応する。いくつかの実施形態では、履歴テーブルのレゾリューションは、利用可能なメモリ帯域幅の量に基づいて調整される。いくつかの実施形態では、履歴テーブルのレゾリューションは、情報のキャッシュ検索がキャッシュにヒットすることに応じて調整される。いくつかの実施形態では、履歴テーブルは、コアごと、ソースタイプごと又はスレッドごとのキャッシュミスの履歴を追跡する。
【0009】
いくつかの実施形態では、履歴テーブルに基づいて、情報のキャッシュ検索がキャッシュをミスするであろうという予測は、情報の要求のアドレスの少なくとも一部を、履歴テーブルのビットのセットと比較することを含む。いくつかの実施形態では、履歴テーブルのレゾリューションは、履歴テーブルのビットのセットを含むビット数に対応する。いくつかの実施形態では、履歴テーブルのレゾリューションは、利用可能なメモリ帯域幅の量に基づいて調整される。いくつかの実施形態では、履歴テーブルのレゾリューションは、情報の要求がキャッシュをミスするであろうことを予測すること、及び、予測に一致しない対応するキャッシュヒットを検出することに応じて調整される。
【0010】
いくつかの実施形態は、キャッシュミス予測に基づいて情報を取り出すように構成されたプロセッサを提供する。プロセッサは、情報の要求を受信するように構成された回路を含む。また、プロセッサは、履歴テーブルに基づいて、情報のキャッシュ検索がキャッシュをミスするであろうことを予測するように構成された回路を含む。また、プロセッサは、要求に基づいて情報のキャッシュ検索を実行するように構成された回路を含む。また、プロセッサは、情報のキャッシュ検索がキャッシュをミスするであろうという予測に基づいて、キャッシュ検索が完了する前に情報についてメインメモリフェッチを開始するように構成された回路を含む。
【0011】
いくつかの実施形態では、履歴テーブルに基づいて、情報のキャッシュ検索がキャッシュをミスするであろうことを予測するように構成された回路は、履歴テーブルに記憶されたビットの第1のセットを、履歴テーブルに記憶されたビットの第2のセットと比較するように構成された回路を含む。いくつかの実施形態では、履歴テーブルのレゾリューションは、キャッシュミスの履歴を追跡するビット数に対応する。いくつかの実施形態では、プロセッサは、利用可能なメモリ帯域幅の量に基づいて履歴テーブルのレゾリューションを調整するように構成された回路を含む。いくつかの実施形態では、プロセッサは、情報のキャッシュ検索がキャッシュにヒットすることに応じて履歴テーブルのレゾリューションを調整するように構成された回路を含む。いくつかの実施形態では、履歴テーブルは、コアごと、ソースタイプごと又はスレッドごとのキャッシュミスの履歴を追跡する。
【0012】
いくつかの実施形態では、履歴テーブルに基づいて、情報のキャッシュ検索がキャッシュをミスするであろうことを予測するように構成された回路は、情報の要求のアドレスの少なくとも一部を履歴テーブルのビットのセットと比較するように構成された回路を含む。いくつかの実施形態では、履歴テーブルのレゾリューションは、履歴テーブルのビットのセットを含むビット数に対応する。いくつかの実施形態では、プロセッサは、利用可能なメモリ帯域幅に基づいて履歴テーブルのレゾリューションを調整するように構成された回路を含む。いくつかの実施形態では、プロセッサは、情報の要求がキャッシュをミスするであろうことを予測すること、及び、予測に一致しない対応するキャッシュヒットの検出に応じて、履歴テーブルのレゾリューションを調整するように構成された回路を含む。
【0013】
図1は、本開示の1つ以上の特徴を実装することができる例示的なデバイス100のブロック図である。デバイス100は、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、サーバ、タブレットコンピュータ、又は、他のタイプのコンピューティングデバイス等を含むことができる。デバイス100は、プロセッサ102、メモリ104、記憶装置106、1つ以上の入力デバイス108、及び、1つ以上の出力デバイス110を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含み得る。デバイス100は、図1に示されていない追加の構成要素を含むことができることを理解されたい。
【0014】
様々な代替例では、プロセッサ102は、中央処理ユニット(central processing unit、CPU)、グラフィックス処理ユニット(graphics processing unit、GPU)、同じダイ上に位置するCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUとすることができる。様々な代替例では、プロセッサ102は、レジスタ及び1つ以上のレベルのキャッシュメモリを含む。様々な代替例において、プロセッサ102は、メモリ階層を管理するように構成されたメモリコントローラ及び/又は他の回路を含み、メモリ階層は、レジスタ、キャッシュメモリ及びメモリ104を含む。様々な代替例では、メモリ104は、プロセッサ102と同じダイ上に位置するか、又は、プロセッサ102とは別に位置する。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory、RAM)、ダイナミックRAM、キャッシュ)を含む。
【0015】
記憶装置106は、固定又はリムーバブル記憶装置(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。様々な代替例では、記憶装置106もメモリ階層の一部である。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802シグナルの送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802シグナルの送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。
【0016】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、オプションの構成要素であること、並びに、デバイス100は、入力ドライバ112及び出力ドライバ114が存在しない場合に、同じ方式で動作することに留意されたい。出力ドライバ114は、ディスプレイデバイス118に連結された加速処理デバイス(accelerated processing device、「APD」)116を含む。APDは、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れて、それらの計算コマンド及びグラフィックスレンダリングコマンドを処理し、表示のためにピクセル出力をディスプレイデバイス118に提供する。以下で更に詳細に説明するように、APD116は、単一命令複数データ(single-instruction-multiple-data、「SIMD」)パラダイムに従って計算を行う1つ以上の並列処理ユニットを含む。こうして、様々な機能は、本明細書では、APD116によって又はAPD116と併せて行われるものとして説明されているが、様々な代替例では、APD116によって行われるものとして説明される機能は、追加的又は代替的に、ホストプロセッサ(例えば、プロセッサ102)によってドライブされない同様の能力を有する他のコンピューティングデバイスによって行われ、ディスプレイデバイス118にグラフィック出力を提供する。例えば、SIMDパラダイムに従って処理タスクを行う任意の処理システムが、本明細書に説明される機能を行い得ることが企図される。代替的に、SIMDパラダイムに従って処理タスクを行わないコンピューティングシステムが、本明細書に説明される機能を行い得ることが企図される。
【0017】
プロセッサ、メモリコントローラ又は他のハードウェアがメモリ階層のレベルから情報を要求し、その情報がそのレベルで利用可能である場合、要求はヒットと称され得る。情報がそのレベルで利用可能でない場合、要求はミスと称され得る。
【0018】
例示的なコンピューティングシステムでは、プロセッサが命令を実行して特定の情報をプロセッサレジスタにロードする場合、メモリシステムは、最上位レベル又はL0キャッシュ等のメモリ階層の次のレベルにおいて情報が利用可能であるかどうかを判定する。いくつかの実施形態では、この判定は、メモリコントローラ又は他の好適なハードウェアによって行われる。情報が最上位レベルのキャッシュで利用可能でない場合、命令は、最上位レベルのキャッシュをミスしたと言うことができる。この状況では、メモリシステムは、通常、メモリ階層の次に下位のレベル(例えば、L1キャッシュ)で検索を実行することになり、そこで情報が利用可能であるかどうかを判定する。この検索もまたヒット又はミスをし得る。このため、情報が見出され、最終的にプロセッサレジスタにロードされるまで、プロセスは、メモリ階層を下って継続し得る。
【0019】
メモリシステムが、要求された情報を求めてメモリ階層を検索していくにつれて、メモリ階層のより下位レベルでのアクセスレイテンシの増加により、各レベルでの検索は、通常、ますます遅くなる。
【0020】
例えば、メインメモリ(例えば、DRAM)レベルの上位4つのレベルのキャッシュ(L0、L1、L2、L3キャッシュ)を含むメモリ階層では、異なるレベル間でアクセスレイテンシに著しい差があることがある。いくつかの実施形態では、アクセスレイテンシの差は、次の下位レベルキャッシュのサイズが著しくより大きいこと、メインメモリまでのワイヤライン距離がより長いこと及び/又はメインメモリにアクセスする際の複雑さが増大したこと等に起因し得る。
【0021】
メモリ階層内の次に下位レベルのアクセスレイテンシが大きい可能性があり得るので、場合によっては、現在のレベルがヒット又はミスを返す前に次に下位レベルの検索を開始することが有利である。一例では、L2キャッシュミス時に、通常、比較的遅いL3キャッシュ検索を実行することが必要である。L3キャッシュ検索が遅く、メインメモリ(この例ではDRAM)検索(例えば、メインメモリフェッチ)が更に遅いため、いくつかの実施形態では、DRAM検索がL3キャッシュ検索と並行して実行される。いくつかの実施形態では、並列DRAM検索は、L3キャッシュ検索と同時に開始されるか、又は、L3キャッシュ検索の終了前に開始される。L3キャッシュ検索がミスした場合、並列DRAM検索は、メモリシステムがDRAM検索を開始する前にL3ミスを待っていた場合よりも早くその結果を返す。並列DRAM検索は、L3キャッシュがヒットする場合、無視される、終了される、及び/又は、破棄等される。この並列検索は、L1キャッシュミスに応じてL2検索とL3検索の両方を並列に実行すること、又は、L3キャッシュミスに応じてDRAM検索とハードディスク検索の両方を並列に実行すること等のように、メモリ階層の他のレベル間で概念的に可能である。L2キャッシュミスに応じて並列L3、DRAM及びハードディスク検索を実行する等のように、更なる並列処理も概念的に可能である。
【0022】
いくつかの実施形態では、メモリ階層の2つ以上の下位レベルの並列検索を開始することは、通信帯域幅を犠牲にして行われる。例えば、メインメモリは、通常、メモリバスを介してプロセッサ(及びオンチップキャッシュ)と通信する。メモリバスは、共有電気接続である。いくつかの実施形態では、メモリバスは、同じメモリバスを介して、メインメモリの異なるモジュールとは異なるプロセッサとの間で情報を転送する。したがって、L2キャッシュミス時の潜在的に不要なメインメモリフェッチ(例えば、DRAM検索)は、他のプロセッサ、DRAMモジュール等による通信に利用可能なメモリバス帯域幅の量を低減する効果を有し得る。同様の帯域幅コストは、キャッシュメモリとプロセッサレジスタ間、又は、バッキングストアと複数のコンピュータシステム間のオンチップ相互接続等のように、他のメモリ通信にも適用される。したがって、いくつかの実施形態では、メモリ階層の特定のレベルで並列検索を使用するかどうか、及び、何れの並列検索を使用するかは、改善されたアクセスレイテンシ、設計コスト、複雑さ、及び/又は、メモリ帯域幅のバランス等の要因に依存する。
【0023】
いくつかの実施形態では、ミス予測は、並列検索を実行する際のメモリ帯域幅ペナルティを低減、最小化、又は、さもなければ管理するために使用される。例えば、いくつかの実施形態では、所定のL2ミス時にL3がミスするであろうと予測される場合、並列DRAM検索が実行されるが、L3がミスしないであろうと予測される場合、並列DRAM検索は実行されない。
【0024】
いくつかの実施形態は、ヒット及びミスの履歴を追跡することに基づいて、又は、アドレス空間近接性を追跡することによって、キャッシュミス予測を提供する。いくつかの実施形態では、ヒット及びミス履歴又はアドレス空間近接の履歴は、可変数のビットを使用して追跡される。いくつかの実施形態では、ビット数は、フィードバックに基づいて調整される。いくつかの実施形態では、フィードバックは、過去の予測の精度及び/又は利用可能なメモリ帯域幅に関する。いくつかの実施形態では、ビット数は、過去の予測の精度及び/又は利用可能なメモリ帯域幅に基づいて調整される。
【0025】
いくつかの実施形態では、ミス予測は、キャッシュのヒット及びミス履歴を追跡することに基づき、時間予測と称されることがある。例えば、いくつかの実施形態では、時間予測は、キャッシュ検索の過去の履歴に基づく。
【0026】
いくつかの実施形態では、ミス予測は、メモリ領域のヒット及びミス履歴を追跡することに基づき、空間予測と称されることがある。例えば、いくつかの実施形態では、空間予測は、メモリ又はキャッシュメモリの同じ領域(例えば、所定のアドレス範囲内)に記憶されたデータについてヒット又はミスが発生したかどうかを追跡することに基づく。
【0027】
いくつかの実施形態では、予測は、時間予測と空間予測との組み合わせに基づく。予測は、要求がキャッシュ(又は他のメモリ)をミス(又はヒット)するかどうかを予測するように構成された回路によって実行される。
【0028】
いくつかの実施形態では、時間ミス予測回路(本明細書ではミス予測器)は、ヒット又はミス履歴を追跡し、履歴内の反復パターンを判定する。反復パターンが検出された場合、パターンに基づいて次のキャッシュ検索がヒットするであろうか又はミスするであろうかについて予測が行われる。
【0029】
いくつかの実施形態では、時間ミス予測器は、スレッドごとにヒット又はミス履歴を追跡する。そのような実施形態では、キャッシュヒット及びミスの履歴が、特定のスレッドごとに記録される。反復パターンが検出された場合、パターンに基づいて、そのスレッドによる次のキャッシュ検索がヒットするであろうか又はミスするであろうかについて予測が行われる。スレッドごとにキャッシュヒット/ミスを追跡することで、予測を改善することができる。
【0030】
いくつかの実施形態では、時間ミス予測器は、ソースごとにヒット又はミス履歴を追跡する。このコンテキストでは、「ソース」は、ロケーションに記憶された情報の要求又は「検索」のソースである。キャッシュメモリ及び/又は他のメモリは、ソースからの要求に基づいて情報に対して照会される。例えば、キャッシュ検索要求は、異なるソース又はソースのタイプ/クラス(例えば、コード要求、データ要求、変換ルックアサイドバッファ(translation lookaside buffer、TLB検索)、プリフェッチ等)から行われ得る。いくつかの実施形態では、キャッシュヒット及びミスの履歴が特定のソースごとに記録される。ソース、タイプ及び/又はクラスに基づいてキャッシュヒット/ミスを追跡することで、予測を改善することができる。
【0031】
いくつかの実施形態では、時間ミス予測器は、ソースごと及びスレッドごとの両方に基づいてヒット又はミス履歴を追跡する。例えば、各スレッドは、異なるソース又はタイプ/クラスのソース(例えば、コード要求、データ要求、TLB、プリフェッチ等)からキャッシュ検索要求を受信することができる。ソースクラスに基づいて各スレッドについてキャッシュヒット/ミスを追跡することで、予測を改善することができる。
【0032】
いくつかの実施形態では、時間ミス予測器は、コアごと等のように、他のベースでヒット又はミス履歴を追跡する。
【0033】
以下の例では、キャッシュヒット/ミスは8ビット履歴を使用して追跡される。各要求に対して、ヒット又はミスの結果は、履歴のビットが残りのビットにシフトダウンされた後、最上位ビットとして記憶される。最上位4ビットが最下位4ビットと比較されて、それらが一致するかどうかが判定され、反復パターンを示す。次の要求がキャッシュにヒットするであろうか又はミスするであろうかに関する予測は、一致(すなわち、反復パターン)が検出されるか否かに基づいて行われる。いくつかの実施形態では、履歴の2つ以上のグループが、パターンを検出するために比較される。例えば、履歴が9ビット(例えば、8~0)で追跡される場合、最上位3ビット(8~6)は、最下位3ビット(2~0)及びまた中間位ビット(5~3)と比較され、3つのグループ全てが一致するパターンが示される。いくつかの実施形態では、これは、より高い信頼性がある予測をもたらすという利点を有し得る。
【0034】
表1は、単一のソースタイプについて、コアごと及びスレッドごとにヒット又はミス(それぞれH又はMによって示される)履歴を追跡する時間ミス予測器の8ビット履歴を示す。
【0035】
【表1】
【0036】
この例では、コア0上のスレッド0のソースタイプによる最新のキャッシュ検索は、最左列の最上位ビット7のHによって示されるように、ヒットである。最上位4ビットと最下位ビットとを比較すると、反復パターンを示す。この例では、ビット7~4のHMHMパターンは、ビット3~0のHMHMパターンに一致する。いくつかの実施形態では、コア0上のスレッド0に対するソースタイプによる次のキャッシュ検索は、検出された4ビットの反復パターンに基づいて、ミスであると予測される。したがって、いくつかの実施形態では、キャッシュの下位レベル又はDRAMへの並列検索が、ミスするであろうという予測に基づいて実行される。いくつかの実施形態では、この決定は、例えば本明細書で更に説明されるように、利用可能なメモリ帯域幅等の他の要因を含む。
【0037】
表1の2行目に示されるように、コア0上のスレッド1のソースタイプによる最新のキャッシュ検索は、最左列の最上位ビット7のHによって示されるように、ヒットである。最上位4ビットと最下位ビットとを比較することは、ヒット及びミスの反復パターンを示す。この例では、ビット7~4のHHMHパターンは、ビット3~0のHHMHパターンに一致する。いくつかの実施形態では、コア0上のスレッド1に対するソースタイプによる次のキャッシュ検索は、検出された4ビットの反復パターンに基づいて、ヒットであると予測される。したがって、いくつかの実施形態では、キャッシュの下位レベル又はDRAMへの並列検索が、ヒットするであろうという予測に基づいて実行される。いくつかの実施形態では、この決定は、例えば本明細書で更に説明されるように、利用可能なメモリ帯域幅等の他の要因を含む。
【0038】
表1の3行目に示すように、コア1上のスレッド0のソースタイプによる最新のキャッシュ検索は、最左列の最上位ビット7のHによって示されるように、ヒットである。最上位4ビットと最下位ビットとを比較することは、検出された反復パターンがないことを示す。この例では、ビット7~4のHMHHパターンは、ビット3~0のMMMMパターンと一致しない。いくつかの実施形態では、検出された反復パターンがないことに基づいて、コア1上のスレッド0のソースタイプによる次のキャッシュ検索が予測されない。したがって、いくつかの実施形態では、キャッシュの下位レベル又はDRAMへの並列検索が実行されるか否かは、例えば本明細書で更に説明されるように、デフォルト設定、利用可能なメモリ帯域幅及び/又は他の要因等の他の要因に基づく。いくつかの実施形態では、反復パターンが検出されない場合に並列検索を開始するか否かのデフォルトは、(例えば、実装選択又はチューニングパラメータ等として)選択可能である。
【0039】
履歴を追跡するために使用されるビット数又は履歴のレゾリューションは、予測の精度の指標とみなすことができる。例えば、いくつかの実施形態では、履歴を追跡するために使用されるビット数は、予測における信頼性のレベルに関係する。ここで、履歴追跡ビットがより多ければ、レゾリューションの一致がより高くなり、反復パターン(又は反復パターンの不在)に基づくミス予測が正確であるという信頼度がより強まることになる。履歴追跡ビットがより少なければ、レゾリューションの一致がより低くなり、反復パターン(又は反復パターンの不在)に基づくミス予測が正確であるという信頼度がより弱まることになる。したがって、予測の精度、いわゆるミス予測の信頼性は、履歴を記憶するために使用されるビット数に基づいて増加又は緩和することができる。例えば、ヒット及びミス履歴を追跡するために8ビットを使用すると、ヒット及びミス履歴を追跡するために2ビットを使用するよりも、高いレゾリューションや潜在的により正確な予測を生成することになる。
【0040】
いくつかの実施形態では、予測のレゾリューションは、利用可能な帯域幅(例えば、メモリ帯域幅)に基づいて調整可能である。予測レゾリューションは、本明細書の例ではメモリ帯域幅に基づいて調整されるが、いくつかの実施形態では、予測のレゾリューションは、メモリ帯域幅に加えて、又は、メモリ帯域幅の代わりに他の帯域幅(例えば、相互接続帯域幅)に基づいて調整可能であることに留意されたい。例えば、利用可能なメモリ帯域幅が比較的豊富である(例えば、他のメモリトラフィックに影響を与えることなく、又は、他のメモリトラフィックが、閾値量を超えて遅延することなく並列検索を可能にするほど十分に高い)場合、不正確な予測のメモリ帯域幅コストが比較的より低いので、2ビット以内の反復は、状況によっては十分に正確なミス予測を提供する。言い換えれば、ミスを誤って予測することによる(例えば、DRAMの)不必要な並列検索の開始は、並列検索を処理するのに十分な帯域幅があれば、他のメモリトラフィックを遅延させる(又は過度に遅延させる)ことなく、比較的より低いパフォーマンスのペナルティを引き起こす。
【0041】
一方、利用可能なメモリ帯域幅が比較的不足していれば、いくつかの実施形態では、より正確なミス予測を提供するために、ミス予測をより多くのビット数にわたる反復パターンに基づかせることが好ましい。いくつかの実施形態では、ミス予測をより多数の履歴追跡ビットに基づかせることは、不要なDRAM検索を低減又は回避するという利点を有することができる。言い換えれば、検索ミスを誤って予測する可能性を低減することは、トラフィック履歴ビット数を増加することで、他のメモリトラフィックの遅延を低減するという利点を有することができる。
【0042】
いくつかの実施形態では、予測のために使用される履歴ビット数を増加することは、予測精度を高めるという利点を有することができる。いくつかの実施形態では、予測のために使用される履歴ビット数を増加することは、他のパターンと混合されるいくつかのパターンの検出を見逃すという欠点を有し得る。いくつかの実施形態では、予測のために使用される履歴ビット数を増加することで、パターンを検出するためにより長い時間がかかる欠点を有する可能性があり、例えば、履歴バッファは、そのサイズの増加に起因して履歴バッファを充填するためにより長い時間がかかる。
【0043】
図2は、利用可能なメモリ帯域幅に基づく履歴追跡レゾリューションの例示的な調整を示すフローチャートである。
【0044】
ステップ202において、メモリシステムは、キャッシュ検索の要求を受信する。いくつかの実施形態では、メモリシステムは、コード要求、データ要求、TLB、プリフェッチ等の要求をソースから受信する。いくつかの実施形態では、メモリシステムは、要求を受信するメモリコントローラを含む。
【0045】
ステップ204において、メモリシステムは、現在利用可能なメモリ帯域幅と、以前のキャッシュ検索要求に続いて利用可能であったメモリ帯域幅とを比較する。いくつかの実施形態では、比較は、メモリシステム以外の構成要素によって行われる。
【0046】
現在利用可能なメモリ帯域幅が、以前のキャッシュ検索要求に続く利用可能なメモリ帯域幅と同じである(又は閾値量内にある)場合(すなわち、利用可能なメモリ帯域幅に変化がなかったか、又は、変化があっても閾値量内にあるかどうか)、履歴追跡レゾリューション(分解能又は解像度)は、ステップ206において変更されず、フローは、次のキャッシュ検索のためにステップ202に戻る。
【0047】
以前のキャッシュ検索要求に続く利用可能なメモリ帯域幅が、現在利用可能なメモリ帯域幅よりも大きかった(又は閾値量を超えて大きかった)場合(すなわち、利用可能なメモリ帯域幅の減少があったか、又は、閾値量を超えて減少があったかどうか)、履歴追跡レゾリューションは、ステップ208において増加され(例えば、2ビットから8ビットに変更され)、フローは、次のキャッシュ検索のためにステップ202に戻る。
【0048】
以前のキャッシュ検索要求に続く利用可能なメモリ帯域幅が、現在利用可能なメモリ帯域幅よりも小さかった(又は閾値量を超えて小さかった)場合(すなわち、利用可能なメモリ帯域幅の増加があったか、又は、閾値量を超えて増加があったかどうか)、履歴追跡レゾリューションは、ステップ210において減少される(例えば、8ビットから2ビットに変更される)。いくつかの実施形態では、フローは次のキャッシュ検索のためにステップ202に戻るが、この例では、現在の利用可能帯域幅が最大閾値を超えるという条件212では、フローがステップ202に戻る前にステップ214で予測器がオフにされ、現在利用可能帯域幅が最大閾値を超えないという条件212では、フローは直接ステップ202に戻る。そのような実施形態では、他のメモリトラフィックを遅延させる(又は過度に遅延させる)ことなく並列検索を処理するのに十分な帯域幅があるので、メモリ帯域幅が閾値を上回り、並列検索がキャッシュ検索ごとに開始される場合、ミス予測は不要であるとみなされる。
【0049】
いくつかの実施形態では、予測のレゾリューションは、代替的に、フィードバックに基づいて調整可能である。例えば、キャッシュ(又は他のメモリ)検索の要求がメモリシステム(例えば、メモリコントローラ)によって受信された場合、キャッシュ検索がミスするであろうかどうかの予測が、現在の履歴に基づいて行われる。検索が最終的に完了した後、実際の結果が予測と比較される。この比較は、予測履歴へのフィードバックとして使用される。言い換えれば、履歴のレゾリューション(例えば、ビット数)は、いくつかの実施形態では、フィードバックに基づいて調整可能である。例えば、ミス予測が正しくなかった場合、より多くのビットを将来の予測のために使用することができ、逆もまた同様である。
【0050】
図3は、フィードバックに基づく履歴追跡レゾリューションの例示的な調整を示すフローチャートである。
【0051】
ステップ302において、メモリシステムは、キャッシュ又は他のメモリ検索の要求を受信する。いくつかの実施形態では、メモリシステムは、コード要求、データ要求、TLB、プリフェッチ等の検索要求をソースから受信する。いくつかの実施形態では、メモリシステムは、要求を受信するメモリコントローラを含む。
【0052】
ステップ304において、予測回路は、要求がキャッシュをヒットするかミスするかの予測を生成する。予測器が、要求がキャッシュにヒットするかミスするかを誤って予測する(すなわち、予測が実際の結果と一致しない)という条件308では、ステップ310において、追跡履歴レゾリューション(分解能又は解像度)が更新される(例えば、ビット数が増やされる)。予測器が、要求がキャッシュにヒットするかミスするかを正しく予測する(すなわち、予測が実際の結果と一致する)という条件308では、ボックス312で示されるように、追跡履歴レゾリューションが更新されない(例えば、ビット数は同じままである)。何れの場合も、フローは次のキャッシュ検索のためにステップ302に戻る。いくつかの実施形態では、ミスの予測が不正確な閾値回数という条件で、追跡履歴レゾリューションがステップ310において更新される。
【0053】
いくつかの実施形態は、メモリの同じ領域においてヒットしたか又はミスしたかどうかに基づくキャッシュミス予測を提供する。例えば、L2キャッシュ検索の場合、要求されたメモリアドレスは、要求されたメモリアドレスのアドレス範囲内のL3ミスの履歴と比較される。上記の時間予測器と同様に、各L3検索について履歴が維持されるが、追跡は、過去のヒット又はミス結果ではなく、過去のミスアドレスを記憶する。例えば、検索要求が、L3キャッシュをミスしたアドレスと同じメモリページ上のアドレスに対するものであり、履歴に記憶されている場合、要求は、L3キャッシュをミスすると予測され得る。
【0054】
表2は、L3キャッシュをミスしたメモリアドレスを追跡する例示的な空間ミス予測器の履歴の一例を示す。
【0055】
【表2】
【0056】
この例では、履歴もスレッドごと及びソースごとに追跡され、これらの概念を空間予測と組み合わせることができることを示している。ここで、履歴は、最上位32ビット0×FAB12345で始まるメモリアドレスに対する少なくとも1つの検索要求がL3キャッシュをミスしたことを反映する。また、このメモリ要求がスレッド0(スレッド識別子TID(thread identifier)によって示される)に対するものであり、データキャッシュ(data cache、DC)から来たことも示される。同様に、最上位ビット0×CAFEBB8、0×CODEB123(命令キャッシュ(instruction cache、ICC)から)、及び0×DEADBOB(変換索引バッファ(translation lookaside buffer、TLB)から)で始まるメモリアドレスの履歴キャッシュミスも履歴に記録される。
【0057】
いくつかの実施形態では、記録されたミスアドレスの所定の範囲内のメモリアドレスに対するキャッシュ検索は、ミスすると予測される。いくつかの実施形態では、ミスは、同じソースタイプ、又は、同じスレッド、コア等から来るキャッシュ検索に依存する。いくつかの実施形態では、予測レゾリューションは、ビット数によって定義される。例えば、レゾリューションが16ビットとして定義される場合、同じキャッシュをミスした履歴内のアドレスと同じ最上位16ビットを有するアドレスへの検索要求は、キャッシュもミスすると予測される。また、空間予測器は、特定の数のアドレスを記憶する。この数は、予測器の深さと称され得る。
【0058】
空間予測器のレゾリューションは、比較に使用される最上位ビット数を変更することによって調整可能である。例えば、レゾリューションが16ビットから256ビットに変更される場合、予測は、空間予測履歴に記憶された見逃されたアドレスからより小さい範囲のアドレス内のアドレスに対して行われ、いくつかの実施形態では、より厳密又はより正確であると考えられる。空間予測器のレゾリューション及び/又は深さも、上述した時間予測器と同様に動的に調整可能である。例えば、予測は、利用可能なメモリ帯域幅が閾値を下回るか又は減少する場合、より厳密になるように設定されてもよく、逆もまた同様である。
【0059】
いくつかの実施形態では、空間予測器は、スレッドごとにヒット又はミス履歴を追跡する。そのような実施形態では、キャッシュヒット及びミスの履歴が、特定のスレッドごとに記録される。反復パターンが検出された場合、パターンに基づいて、そのスレッドによる次のキャッシュ検索がヒットするであろうか又はミスするであろうかについて予測が行われる。スレッドごとにキャッシュヒット/ミスを追跡することで、予測を改善することができる。
【0060】
いくつかの実施形態では、空間ミス予測器は、ソースごとにヒット又はミス履歴を追跡する。例えば、キャッシュ検索要求は、異なるソース又はタイプ/クラスのソース(例えば、コード要求、データ要求、TLB、プリフェッチ等)から行われ得る。いくつかの実施形態では、キャッシュヒット及びミスの履歴が特定のソースごとに記録される。ソース、タイプ及び/又はクラスに基づいてキャッシュヒット/ミスを追跡することで、予測を改善することができる。
【0061】
いくつかの実施形態では、空間ミス予測器は、ソースごと及びスレッドごとの両方に基づいてヒット又はミス履歴を追跡する。例えば、各スレッドは、異なるソース又はタイプ/クラスのソース(例えば、コード要求、データ要求、TLB、プリフェッチ等)からキャッシュ検索要求を受信することができる。ソースクラスに基づいて各スレッドについてキャッシュヒット/ミスを追跡することで、予測を改善することができる。
【0062】
空間予測器及び時間予測器は組み合わせ可能である。例えば、いくつかの実施形態は、ヒット及びミスの履歴と、ミスしたアドレスの履歴の両方を追跡し、ヒット又はミス予測は、空間予測及び時間予測の両方に基づいて行われる。
【0063】
図4はメモリシステム400の一例を示すブロック図である。メモリシステム400のメモリ階層は、L2キャッシュ402、L3キャッシュ404及びDRAM406を含む。また、メモリシステム400は、ミス予測器408と、ミス履歴バッファ410及び412と、を含む。
【0064】
この例では、L2キャッシュ402への情報要求がミスした場合、L2キャッシュミスがミス履歴バッファ410に記録され、ミス予測器408は、情報の要求がL3キャッシュもミスするであろうかどうかを予測する(又は予測しない)。
【0065】
予測器408がL3キャッシュミスを予測した場合、DRAM406内の情報の並列検索414を開始する。
【0066】
予測器408が、要求がL3キャッシュにヒットするであろうことを予測する場合、又は、予測を行わない場合、DRAM406の並列検索414は起動されない。
【0067】
何れの場合も、要求がL3キャッシュ404をミスした場合、L3キャッシュミスがミス履歴バッファ412に記録され、情報のDRAM検索416がDRAM406に送信される。L3キャッシュミスが予測器408によって予測された場合、その情報(又はDRAMミスの指標)は、先の並列DRAM検索414によって、ミスが予測器408によって予測されなかった場合よりも早く利用可能になることになる。何れの場合も、DRAM406は、情報又はDRAMミス指標をL3キャッシュ404に返す。
【0068】
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。
【0069】
各図に示され及び/又は本明細書に記載された様々な機能ユニット(プロセッサ102、入力ドライバ112、入力デバイス108、出力ドライバ114、出力デバイス110、加速処理デバイス116、スケジューラ136、グラフィックス処理パイプライン134、計算ユニット132及びSIMDユニット138を含むが、これらに限定されない)は、汎用コンピュータ、プロセッサ若しくはプロセッサコアとして、又は、汎用コンピュータ、プロセッサ若しくはプロセッサコアによって実行可能な非一時的なコンピュータ可読記憶媒体若しくは別の記憶媒体に記憶されているプログラム、ソフトウェア若しくはファームウェアとして実装することができる。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実行することができる。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタルシグナルプロセッサ(digital signal processor、DSP)、複数のマイクロプロセッサ、DSPコアと関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)回路、任意の他のタイプの集積回路(integrated circuit、IC)、及び/又は、状態マシンが挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶させることが可能な命令)の結果を使用して製造プロセスを構成することによって製造することができる。そのような処理の結果はマスクワークとすることができ、このマスクワークをその後の半導体製造プロセスにおいて使用して、本開示の特徴を実装するプロセッサを製造する。
【0070】
本明細書に提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実行することができる。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
図1
図2
図3
図4
【国際調査報告】