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

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

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

特許7264806キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法
<>
  • 特許-キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法 図1
  • 特許-キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法 図2
  • 特許-キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法 図3
  • 特許-キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法 図4
  • 特許-キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法 図5
  • 特許-キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法 図6
  • 特許-キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-17
(45)【発行日】2023-04-25
(54)【発明の名称】キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法
(51)【国際特許分類】
   G06F 12/0895 20160101AFI20230418BHJP
【FI】
G06F12/0895 100
【請求項の数】 11
(21)【出願番号】P 2019501927
(86)(22)【出願日】2017-07-13
(65)【公表番号】
(43)【公表日】2019-09-05
(86)【国際出願番号】 US2017041935
(87)【国際公開番号】W WO2018013813
(87)【国際公開日】2018-01-18
【審査請求日】2020-07-10
【審判番号】
【審判請求日】2022-08-12
(31)【優先権主張番号】15/211,547
(32)【優先日】2016-07-15
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ポール ジェームス モイヤー
【合議体】
【審判長】須田 勝巳
【審判官】中村 信也
【審判官】篠原 功一
(56)【参考文献】
【文献】特開2007-286990(JP,A)
【文献】米国特許出願公開第2003/0056066(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/0895
(57)【特許請求の範囲】
【請求項1】
プロセッサが、データに対する第1要求(102)のキャッシュ(140)でのキャッシュミスに応じて、前記データを記憶するために前記キャッシュのキャッシュエントリ(245)を割り当てることと、
前記プロセッサが、前記データが異なるレベルのメモリ(150)から前記キャッシュに取り出されている間に、前記第1要求が前記キャッシュで保留中であるという指標(147)を前記キャッシュエントリに記憶することと、データインデックス及びキャッシュエントリの位置情報を含む識別子(165)をバッファ(130)に記憶することと、
前記プロセッサが、前記データが前記キャッシュに取り出されている間に、前記キャッシュにおいて前記データに対する第2要求(104)を受信したことに応じて、前記キャッシュエントリの前記指標を読み取ることと、
前記プロセッサが、前記指標に基づいて、前記第1要求が前記キャッシュで保留中であることを識別したことに応じて、前記データが前記キャッシュに取り出されるまで、前記データに対する第2要求を保留状態にし、前記第2要求を、既に前記プロセッサにコピーされたキャッシュヒットとして扱う(722)ことと、を含む、
方法。
【請求項2】
前記キャッシュにおいて前記データを受信したことに応じて、前記データを前記キャッシュの前記キャッシュエントリに記憶することをさらに含む、
請求項の方法。
【請求項3】
前記キャッシュにおいて前記データを受信したことに応じて、前記バッファにアクセスして、前記データを記憶するための前記キャッシュの前記キャッシュエントリを決定することをさらに含む、
請求項の方法。
【請求項4】
前記キャッシュエントリに有効なデータが記憶されていることを示すために、前記キャッシュエントリの前記指標を更新することをさらに含む、
請求項の方法。
【請求項5】
前記識別子は、前記キャッシュエントリのセットの指標(512)とウェイ(514)とを含む、
請求項の方法。
【請求項6】
前記識別子は、前記データに対応するメモリアドレスに基づくタグ値を含む、
請求項の方法。
【請求項7】
プロセッサ(100)であって、
キャッシュ(140)と、
キャッシュコントローラ(120)と、を備え、
前記キャッシュコントローラ(120)は、
データに対する第1要求(102)の前記キャッシュでのキャッシュミスに応じて、前記データを記憶するために前記キャッシュのキャッシュエントリ(245)を割り当てることと、
前記データが異なるレベルのメモリ(150)から前記キャッシュに取り出されている間に、前記第1要求が前記キャッシュで保留中であるという指標(147)を前記キャッシュエントリに記憶することと、データインデックス及びキャッシュエントリの位置情報を含む識別子(165)をバッファ(130)に記憶することと、
前記データが前記キャッシュに取り出されている間に、前記キャッシュにおいて前記データに対する第2要求(104)を受信したことに応じて、前記キャッシュエントリの前記指標を読み取ることと、
前記指標に基づいて、前記第1要求が前記キャッシュで保留中であることを識別したことに応じて、前記データが前記キャッシュに取り出されるまで、前記データに対する第2要求を保留状態にし、前記第2要求を、既に前記プロセッサにコピーされたキャッシュヒットとして扱う(722)ことと、
を行うように構成されている、
プロセッサ(100)。
【請求項8】
前記キャッシュコントローラは、
前記データを受信したことに応じて、前記データを前記キャッシュの前記キャッシュエントリに記憶することを行うように構成されている、
請求項のプロセッサ。
【請求項9】
前記キャッシュコントローラは、
前記データを受信したことに応じて、前記バッファにアクセスして、前記データを記憶するための前記キャッシュの前記キャッシュエントリを決定することを行うように構成されている、
請求項のプロセッサ。
【請求項10】
前記キャッシュコントローラは、
前記キャッシュエントリに有効なデータが記憶されていることを示すために、前記指標を更新することを行うように構成されている、
請求項のプロセッサ。
【請求項11】
前記識別子は、前記キャッシュエントリのセットの指標とウェイとを含む、
請求項のプロセッサ。
【発明の詳細な説明】
【背景技術】
【0001】
(関連技術の説明)
処理システムは、プロセッサでの命令の実行をサポートするために、通常、実行する命令によってアクセスされるデータを記憶するためのメモリモジュールから構成されたメモリサブシステムを含む。処理効率を促進するために、メモリサブシステムは、実行する命令によってアクセス可能な全てのデータを記憶するために、最上位のメインメモリと、メインメモリに記憶されるデータのサブセットを記憶するための下位レベルの1つ以上のキャッシュと、を有するメモリ階層で構成することができる。処理効率をさらに向上させるために、処理システムは、1つ以上のキャッシュコントローラを介してメインメモリから1つ以上の下位レベルのメモリへデータをフェッチするのを管理するメモリ管理プロトコルを実装することができる。例えば、プロセッサが必要とするデータがメモリ階層のキャッシュに見つからない場合(「キャッシュミス」と呼ばれる)、キャッシュコントローラは、メモリ階層の異なるレベルから(例えば、異なるキャッシュ又はメインメモリから等)データを取り出すメモリアクセス要求を発行する。
【0002】
プロセッサリソースを浪費する可能性がある、メモリ階層の所定のレベルからの同じデータに対する複数のメモリアクセス要求の発行を防ぐために、キャッシュコントローラは、保留中のメモリアクセス要求の対象であるデータの各ユニットに対応するメモリアドレスをバッファに記憶する。同じデータに対する後続の要求がキャッシュコントローラに提示された場合、キャッシュコントローラは、そのデータがメモリ階層の対応するレベルに存在しいないと判別すると、通常、バッファに問い合わせて、要求されたデータのメモリアドレスがバッファに記憶されているかどうかを判別する。要求されたデータのメインメモリアドレスがメモリバッファに存在し、データに対する要求が既に保留中であることを示す場合、キャッシュコントローラは、データに対する追加の要求を発行しない。しかしながら、メモリバッファは、比較的大量のスペースを必要とし、比較的大量の電力を消費する場合がある。
【0003】
添付図面を参照することによって、本開示は当業者により良く理解され、その多数の特徴及び利点が明らかになるであろう。異なる図面での同じ参照記号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0004】
図1】いくつかの実施形態による、メモリアクセス要求に応じてデータを記憶するキャッシュエントリにメモリアクセス要求のペンデンシ(pendency)の指標を記録する処理システムのブロック図である。
図2】いくつかの実施形態による、キャッシュエントリにミスタグを記憶し、メモリアクセス要求のペンデンシを示すためにペンデンシミスバッファにキャッシュエントリタグを記憶する図1の処理システムの一例を示すブロック図である。
図3】いくつかの実施形態による、図1の処理システムが、キャッシュエントリでミスタグを識別したことに基づいて、データに対するメモリアクセス要求のペンデンシを識別したことを受信する図1の処理システムの一例を示すブロック図である。
図4】いくつかの実施形態による、メインメモリからデータをフェッチし、保留ミスバッファからキャッシュエントリタグによって示されるキャッシュエントリにデータを記憶する図1の処理システムの一例を示すブロック図である。
図5】いくつかの実施形態による、図1の保留ミスバッファに記憶されたキャッシュエントリタグの一例を示すブロック図である。
図6】いくつかの実施形態による、図1のプロセッサによって使用されるミスタグの一例を示すブロック図である。
図7】いくつかの実施形態による、キャッシュエントリでメモリアクセス要求のペンデンシを示す方法のフローチャートである。
【発明を実施するための形態】
【0005】
図1図7は、メモリアクセス要求に応じてデータを記憶するために割り当てられるキャッシュエントリにおいて、データに対するメモリアクセス要求のペンデンシを示すことによって、メモリ管理効率を改善するための技術を示す。処理システムは、プロセッサと、階層の最上位のメインメモリと、メインメモリに記憶されるデータのサブセットを記憶するためのメモリ階層の下位レベルの1つ以上のキャッシュと、を有するメモリ階層と、を含む。プロセッサは、命令の実行中、プロセッサに最も近いキャッシュに対してデータ要求を発行する。キャッシュコントローラは、キャッシュミスに応じて、データに対するメモリアクセス要求を、より高いレベルのメモリ階層に発行する。さらに、キャッシュコントローラは、メモリアクセス要求に応じてデータを記憶するためのキャッシュのエントリを識別し、メモリアクセス要求が保留中であるという指標を、識別されたキャッシュエントリに記憶する。メモリアクセス要求がメモリ階層の上位レベルで保留中である間にキャッシュコントローラがデータに対する後続のメモリアクセス要求を受信した場合、キャッシュコントローラは、エントリに記憶された指標に基づいて、メモリアクセス要求が保留中であることを識別する。メモリアクセス要求のペンデンシの指標を記憶するために、個別のミスアドレスバッファではなく、データを記憶するキャッシュエントリを使用することによって、プロセッサは、回路面積及び電力の両方を節約することができる。
【0006】
一例として説明すると、プロセッサの1つのキャッシュ(例えば、レベル3(L3)キャッシュ)は、処理システムのメインメモリの直下のメモリ階層に配置されている。L3キャッシュでのキャッシュミスの対象であるデータがメインメモリからフェッチされている間に、同じデータに対する後続の要求がL3キャッシュに提示される場合がある。プロセッサ性能を向上させなければシステムリソースを消費するであろうデータに対するメモリアクセス要求が保留中である間に、同じデータに対する追加のメモリアクセス要求を生成するのを回避するために、L3キャッシュのキャッシュコントローラは、データがメインメモリからフェッチされている間に、データを記憶するためのキャッシュエントリを直ちに割り当て、データに対するメモリアクセス要求がメインメモリで保留中であることを示す指標をキャッシュエントリに記憶する。いくつかの実施形態では、指標は、フェッチされているデータのメインメモリアドレスと、当該データが保留中のメモリアクセス要求の対象であることを示すステータス情報と、を含むミスタグである。また、キャッシュコントローラは、データ識別子と、割り当てられたキャッシュエントリの位置情報と、を含むキャッシュエントリタグを、例えばバッファ等のサイド構造に記憶する。
【0007】
データが依然としてメインメモリからフェッチされている間に同じデータに対する後続の要求がL3キャッシュで受信されると、キャッシュコントローラは、キャッシュメモリをチェックして、データが既にキャッシュメモリに記憶されているかどうかを判別し、キャッシュエントリにミスタグ(要求されたデータが既にメモリアクセス要求の対象であることを示す)が記憶されていることを識別する。これに応じて、キャッシュコントローラは、メモリアクセス要求を保留状態にして、キャッシュエントリでのデータの記憶を待つ。
【0008】
要求されたデータがメインメモリから取り出されると、キャッシュコントローラは、取り出されたデータのデータ識別子についてサイド構造に問い合わせを行い、データ識別子に対応するキャッシュエントリが存在するかどうかを判別する。処理システムは、データに対応するキャッシュエントリを読み取ると、取り出されたデータを、キャッシュエントリタグによって示されたキャッシュエントリに記憶し、データが現在キャッシュに存在することを示すためにステータス情報を有効状態に更新する。また、キャッシュコントローラは、データをターゲットにしている保留中のメモリアクセス要求を満たす。したがって、L3キャッシュは、個別のバッファではなくキャッシュエントリ自体を使用してメモリアクセス要求のペンデンシの指標を記憶し、これにより、電力及び回路面積の両方を節約する。
【0009】
図1は、いくつかの実施形態による、メモリアクセス要求に応じてデータを記憶するキャッシュエントリにメモリアクセス要求のペンデンシの指標を記憶するように構成された処理システム100の一例を示す図である。このように、処理システム100は、例えば、パーソナルコンピュータ、ワークステーション、スマートフォン等のモバイルデバイス、ビデオゲームコンソール、スマートTV等のいくつかのデバイスのうち何れかのデバイスに使用することができる。本明細書でさらに説明するように、処理システム100は、プロセッサコア110と、1つ以上のレベルのキャッシュメモリ(例えば、キャッシュメモリ140)と、キャッシュコントローラ120と、保留ミスバッファ130と、メインメモリ150と、を含む。
【0010】
プロセッサコア110は、コンピュータプログラムの形態で構成された命令を実行するための1つ以上の命令パイプラインを含み、これにより、電子デバイスに代わってタスクを実行する。プロセッサコア110は、例えばレジスタの形態で或る程度の量の内蔵メモリを有することができるが、かかるメモリは、通常、記憶容量が限られている。したがって、プロセッサコア110は、命令を実行するために、1つ以上のレベルのキャッシュメモリ(本明細書では、単一レベルのキャッシュメモリ140として表される)と、メインメモリ150と、を含む処理システム100のメモリ階層に対してデータの記憶及び取り出しを行う。具体的には、プロセッサコア110は、命令を実行する過程で、メモリ階層に対してデータを記憶(記憶動作)又はロード(読み出し動作)するために、メモリアクセス要求102と呼ばれる動作を生成する。本明細書でさらに説明するように、1つ以上のレベルのキャッシュメモリ140及びメインメモリ150は、メモリアクセス要求102を満たすために協働する。
【0011】
キャッシュメモリ140は、プロセッサコア110によるアクセスのためにデータを記憶するメモリモジュールである。少なくとも1つの実施形態では、キャッシュメモリ140は、エントリのセットを含み、各エントリは、キャッシュラインと呼ばれる関連するデータのユニットを記憶する。いくつかの実施形態では、1つ以上のレベルのキャッシュメモリ140の各々は、セットアソシアティブキャッシュであり、各キャッシュは、いくつかのセットに分割されている。各セットは、いくつかのデータ位置(すなわち、ウェイ)を含み、各ウェイは、キャッシュラインを記憶するキャッシュエントリに対応する。各セットは、メモリアドレスのサブセットに関連するキャッシュラインのみを記憶し、セットに関連するサブセットは、インデックスと呼ばれるメモリアドレスの一部に基づいて、対応するキャッシュコントローラによって識別される。セットアソシアティブを使用することによって、1つ以上のレベルのキャッシュメモリ140は、キャッシュミス及びキャッシュヒットの比較的迅速な識別を容易にする。
【0012】
キャッシュコントローラ120は、プロセッサコア110からデータに対するメモリアクセス要求102を受信し、メモリアクセス要求102の対象となるメモリアドレスに関連するキャッシュラインを1つのキャッシュエントリが記憶しているかどうかを判別するために、キャッシュメモリ140を検索するように構成されたモジュールである。要求されたキャッシュラインがキャッシュメモリ140内で見つかった場合、キャッシュヒットが発生している。キャッシュヒットの場合、キャッシュコントローラ120は、読み出し動作の場合には、要求されたキャッシュラインをキャッシュメモリ140からプロセッサコア110に提供することによってメモリアクセス要求102を満たし、書き込み動作の場合には、書き込みデータをキャッシュエントリに記憶することによってメモリアクセス要求102を満たす。
【0013】
要求されたキャッシュラインがキャッシュメモリ140内で見つからない場合、キャッシュミスが発生している。キャッシュメモリ140でキャッシュミスが発生した場合、キャッシュコントローラ120は、メモリアクセス要求102をメインメモリ150に提供する。メインメモリ150は、メモリアクセス要求102に応じて、要求102が対象とするメインメモリアドレスでキャッシュラインを取り出し、キャッシュラインをキャッシュメモリ140に提供して、メモリアクセス要求102が満たされる。
【0014】
いくつかの実施形態では、キャッシュメモリ140は、プロセッサコア110によって要求されるデータの全てを所定の時点で記憶することができず、それによって上述したようにメモリ階層を介してデータを転送する必要があるようなサイズで構成されている。キャッシュミスが発生し、要求されたキャッシュラインがメインメモリ150からフェッチされる必要がある毎に、メインメモリからのキャッシュラインの取り出しは時間を要し、その間に、プロセッサコア110が、同じキャッシュラインに対する1つ以上の追加の要求を受信する場合がある。キャッシュラインに対する未処理のアクセス要求が保留されている間に同じキャッシュラインに対する複数のメモリアクセス要求を生成することから生じる非効率を低減するために、処理システム100は、キャッシュメモリ140で未処理のアクセス要求を追跡する。
【0015】
例示すると、動作中、プロセッサコア110は、メモリアクセス要求102をキャッシュコントローラ120に送信し、キャッシュコントローラ120は、要求されたキャッシュラインについてキャッシュメモリ140を検索する。要求されたキャッシュラインがキャッシュメモリ140内で見つかった場合、要求されたキャッシュラインがプロセッサコア110に提供される。要求されたキャッシュラインがキャッシュメモリ140内で見つからない場合、キャッシュコントローラ120は、メモリアクセス要求102をメインメモリ150に提供する。
【0016】
要求されたキャッシュラインが、プロセッサコア110によってメインメモリ150から取り出される(フェッチされる)間、キャッシュコントローラ120は、フェッチされたキャッシュラインにキャッシュエントリを割り当てる。いくつかの実施形態では、キャッシュコントローラ120は、キャッシュラインがメインメモリ150から取り出されるとキャッシュラインが記憶されるキャッシュセット及びウェイに対応するキャッシュエントリを割り当てる。キャッシュコントローラ120は、フェッチされたキャッシュラインのメインメモリアドレスと、キャッシュラインが保留中のキャッシュミスの対象であることを示すステータスビットと、を含むミスタグ147をキャッシュエントリに記憶する。また、キャッシュコントローラ120は、フェッチされたキャッシュラインに割り当てられたキャッシュエントリに関するデータインデックス及び位置情報を含むキャッシュエントリ(CE)タグ165を、保留ミスバッファ130に記憶する。例えば、いくつかの実施形態では、キャッシュコントローラ120は、キャッシュメモリ140において、フェッチされているキャッシュラインに割り当てられたデータインデックス及びキャッシュウェイを含むキャッシュエントリタグ165を、保留ミスバッファ130に記憶する。
【0017】
保留ミスバッファ130は、未処理のアクセス要求の対象であるキャッシュラインを記憶するためにキャッシュコントローラ120によって割り当てられたキャッシュエントリのデータインデックス及びキャッシュエントリ位置情報を含むキャッシュエントリタグ165を記憶するメモリモジュールである。いくつかの実施形態では、保留ミスバッファ130は、メインメモリ150からフェッチされるキャッシュライン毎に割り当てられたデータインデックス及びキャッシュウェイを含むキャッシュエントリタグを記憶するように構成されている。いくつかの実施形態では、データインデックス及び割り当てられたキャッシュウェイを含む保留ミスバッファ130内の各キャッシュエントリタグは、メインメモリ150からフェッチされるキャッシュラインのフルメインメモリアドレスよりも小さい(つまり、より少ないビットを必要とする)。
【0018】
キャッシュラインに対する第1メモリアクセス要求102が依然としてメインメモリ150から満たされる過程にある間に、キャッシュコントローラ120が、キャッシュラインに対する後続のメモリアクセス要求104をプロセッサコア110から受信した場合、キャッシュコントローラ120は、後続のメモリアクセス要求104の対象となるメモリアドレスに関連するキャッシュラインを1つのキャッシュエントリが含むかどうかを判別するために、キャッシュメモリ140を検索する。この場合、キャッシュコントローラ120は、キャッシュエントリにおいて、フェッチされているキャッシュラインのメインメモリアドレスと、当該キャッシュラインが保留中のキャッシュミスの対象であることを示すステータスビットと、を識別する。キャッシュコントローラは、ステータスビットの読み取りに基づいて、要求されたキャッシュラインに対する後続のメモリアクセス要求104をメインメモリ150に転送せず、代わりに他のタスクを再開する。
【0019】
メインメモリ150が、要求の対象となるメインメモリアドレスでキャッシュラインを取り出し、キャッシュラインをキャッシュメモリ140に提供すると、キャッシュコントローラ120は、キャッシュラインのデータインデックスを、保留ミスバッファ130に記憶されたキャッシュエントリタグ165と比較する。キャッシュコントローラは、キャッシュラインのデータインデックスを、記憶されたキャッシュエントリタグと一致させ、キャッシュラインを記憶するために割り当てられたキャッシュメモリ140内のキャッシュエントリをキャッシュエントリタグ165から読み取る。キャッシュコントローラ120は、以前に割り当てられたキャッシュエントリのセット及びウェイにキャッシュラインを記憶し、ステータスビットを、キャッシュラインがキャッシュメモリ140に存在することを示す有効な状態に更新する。
【0020】
図2は、キャッシュミスに応じてミスタグ247をキャッシュメモリ240内のキャッシュエントリ245に記憶し、キャッシュエントリタグ265を生成して保留ミスバッファ230に記憶するキャッシュコントローラ220の一例を示す図である。キャッシュコントローラ220は、キャッシュラインに対する要求をプロセッサ(図示省略)から受信し、メモリアクセス要求の対象となるメモリアドレスに関連するキャッシュラインを1つのキャッシュエントリが記憶しているかどうかを判別するためにキャッシュメモリ240を検索する。この例では、要求されたキャッシュラインがキャッシュメモリ240に存在しないので、キャッシュコントローラ220は、メモリアクセス要求をメインメモリ(図示省略)に提供する。キャッシュコントローラ220は、メインメモリへのメモリアクセス要求が保留中である間、キャッシュエントリ245を、保留中のメモリアクセス要求の対象であるキャッシュラインに割り当て、キャッシュラインのメインメモリアドレスと、キャッシュラインが保留中のメモリアクセス要求の対象であることを示すステータスビットと、を含むミスタグ247を生成する。キャッシュコントローラ220は、ミスタグ247を、キャッシュメモリ240内の割り当てられたキャッシュエントリ245に記憶する。
【0021】
また、キャッシュコントローラ220は、保留中のメモリアクセス要求の対象であるキャッシュラインのデータインデックスと、キャッシュラインに割り当てたキャッシュエントリ245と、を含むキャッシュエントリタグ265を生成する。キャッシュコントローラ220は、キャッシュエントリタグ265を保留ミスバッファ230に記憶する。通常、キャッシュエントリは、キャッシュエントリが有効なキャッシュラインで満たされているかどうかを示すステータスビットを有する。この例では、キャッシュエントリ245に記憶されたミスタグ247は、ミスタグ247に記憶されたメインメモリアドレスに関連するデータが、保留中のメモリアクセス要求の対象であること(ミス保留)を示すステータスビットを含む。
【0022】
図3は、いくつかの実施形態による、保留中のメモリアクセス要求の対象であるキャッシュラインに対する後続の要求304をキャッシュコントローラ320に発行するプロセッサ310の一例を示す図である。キャッシュコントローラ320は、後続の要求304を受信し、要求されたキャッシュラインについてキャッシュメモリ340を検索する。キャッシュコントローラ320は、要求されたキャッシュラインのメインメモリアドレスを、キャッシュエントリ345に記憶されたミスタグ347と一致させる。キャッシュコントローラ320は、ミスタグ347のステータスビット(図示省略)を読み取り、要求されたキャッシュラインが既に保留中のメモリアクセス要求の対象であると判別する。
【0023】
キャッシュコントローラ320は、要求されたキャッシュラインが既にメインメモリ(図示省略)から取り出されている途中であると判別すると、キャッシュメモリ340の検索の結果を、既にプロセッサ(図示省略)にコピーされたキャッシュヒットとして扱い、要求されたキャッシュラインに対するメインメモリへの追加の要求を生成することなく他のタスクを再開する。キャッシュコントローラ320は、キャッシュメモリ340の検索から、要求されたキャッシュラインが保留ミスの対象であると判別することができるので、要求されたキャッシュラインが保留ミスの対象であるかどうかを判別するために保留ミスバッファ(図示省略)をチェックする必要がなく、これにより電力を節約する。
【0024】
図4は、メモリアクセス要求402をメインメモリ450に発行し、要求されたデータ460を、データ460がメインメモリ450に記憶されているメインメモリアドレスからコピーし、データ460を、保留ミスバッファ430に記憶されたキャッシュエントリタグ465によって示されたキャッシュメモリ440内のキャッシュエントリ(図示省略)に記憶するキャッシュコントローラ420の一例を示す図である。メインメモリ450は、メモリアクセス要求402に応じて、要求402の対象となるメインメモリアドレスでキャッシュラインを取り出し、データ460をキャッシュコントローラ420に提供する。キャッシュコントローラ420は、データ460のデータインデックスを、保留ミスバッファ430に記憶されたキャッシュエントリタグと比較する。キャッシュコントローラ420は、データ460のデータインデックスをキャッシュエントリタグ465のインデックスと一致させると、キャッシュエントリタグ465からキャッシュエントリを読み取る。キャッシュコントローラ420は、キャッシュエントリタグ465によって示されたキャッシュメモリ440内の位置にデータ460を記憶する。キャッシュコントローラ420は、キャッシュエントリにおけるエントリのステータスビットを、データ460がキャッシュメモリ440に存在することを示す有効な状態に更新する。
【0025】
図5は、キャッシュエントリタグ565の一例を示す図である。キャッシュエントリタグ565は、メモリアクセス要求の対象であるキャッシュラインのデータインデックス512と、キャッシュラインに割り当てられたキャッシュエントリ(図示省略)のキャッシュウェイ514と、を含む。データインデックス512は、キャッシュラインのメインメモリアドレスのサブセットを含み、フルメインメモリアドレスよりも短い。キャッシュウェイ514は、メモリアクセス要求の対象であるキャッシュラインに割り当てられ、ミスタグ(図示省略)によって一時的に占有されているキャッシュメモリ内のウェイ(図示省略)を含む。キャッシュエントリタグ565は、メモリアクセス要求の対象であるキャッシュラインのフルメインメモリアドレスよりも小さい(より少ない記憶容量を必要とする)。
【0026】
図6は、ミスタグ647の一例を示す図である。フルアソシアティブキャッシュの場合、ミスタグ647は、メモリアクセス要求の対象であるキャッシュラインのフルメインメモリアドレス616と、メインメモリアドレス616に関連するキャッシュラインが保留ミスの対象であることを示すステータスビット618と、を含む。セットアソシアティブキャッシュの場合、ミスタグ647は、メモリアクセス要求の対象であるキャッシュラインのフルメインメモリアドレスの一部616と、メインメモリアドレス616に関連するキャッシュラインが保留ミスの対象であることを示すステータスビット618と、を含む。
【0027】
図7は、既に保留中のメモリアクセス要求の対象となっているデータに対する後続のメモリアクセス要求を処理する方法700を示す図である。ブロック702において、キャッシュコントローラは、データに対する要求を受信する。ブロック704において、キャッシュコントローラは、要求されたデータについてキャッシュメモリを検索し、データがキャッシュメモリに存在するのか、又は、要求されたデータについてのミスタグがキャッシュメモリに存在するのかを判別する。
【0028】
要求されたデータも要求されたデータについてのミスタグもキャッシュメモリに存在しない場合には、ブロック706において、キャッシュコントローラは、要求されたデータをメインメモリからフェッチするために、メモリアクセス要求をメインメモリに送信する。ブロック708において、キャッシュコントローラは、要求されたデータに対してキャッシュエントリを割り当てる。ブロック710において、キャッシュコントローラは、要求されたデータのメインメモリドレスと、データがキャッシュミスの対象であることを示すステータスビットと、を含むミスタグを生成し、ミスタグをキャッシュエントリに記憶する。ブロック712において、キャッシュコントローラは、要求されたデータのインデックスと、割り当てられたキャッシュエントリと、を含むキャッシュエントリタグを生成し、キャッシュエントリタグをミス保留バッファに記憶する。ブロック714において、キャッシュコントローラは、要求されたデータをメインメモリから受信する。ブロック716において、キャッシュコントローラは、要求されたデータのデータインデックスと一致するキャッシュエントリタグについてミス保留バッファに問い合わせを行い、キャッシュエントリタグからキャッシュエントリ情報を読み取る。ブロック718において、キャッシュコントローラは、要求されたデータを、キャッシュエントリタグで指定されたキャッシュエントリにコピーし、キャッシュエントリのステータスビットを有効状態に更新する。
【0029】
ブロック704に戻り、キャッシュコントローラが、要求されたデータについてキャッシュメモリを検索し、要求されたデータに対応するミスタグをキャッシュメモリが含むか、要求されたデータをキャッシュメモリが含むかの何れかを判別した場合、ブロック720において、キャッシュコントローラは、要求されたデータのキャッシュエントリがミスタグであるのか又は要求されたデータであるのかを判別する。キャッシュエントリが要求されたデータのミスタグを含む場合、ブロック722において、キャッシュコントローラは、ミスタグを、既にプロセッサにコピーされたキャッシュヒットであるかのように扱い、要求されたデータに対するメモリアクセス要求を待つ間他の命令を実行し続ける。ブロック720において、要求されたデータについてのキャッシュエントリが要求されたデータを含むとキャッシュコントローラが判別した場合、ブロック724において、キャッシュコントローラは、要求されたデータをプロセッサにコピーする。
【0030】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【0031】
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体、又は、記憶媒体の組み合わせを含むことができる。かかる記憶媒体には、限定されないが、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、キャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステム(例えば、システムRAM又はROM)に内蔵されてもよいし、コンピュータシステム(例えば、磁気ハードドライブ)に固定的に取り付けられてもよいし、コンピュータシステム(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)に着脱可能に取り付けられてもよいし、有線又は無線のネットワークを介してコンピュータシステム(例えば、ネットワークアクセス可能なストレージ(NAS))に接続されてもよい。
【0032】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0033】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
図1
図2
図3
図4
図5
図6
図7