(57)【要約】処理システム（１００）は、メモリアクセス要求に応じてデータを記憶するために割り当てられるキャッシュエントリにおいて、データに対するメモリアクセス要求（１０２）のペンデンシを示す。プロセッサは、命令の実行中、プロセッサに最も近いキャッシュ（１４０）に対してデータ要求を発行する。キャッシュコントローラは、キャッシュミスに応じて、メモリアクセス要求に応じてデータを記憶するためのキャッシュのエントリ（２４５）を識別し、メモリアクセス要求が保留中であるという指標（１４７）を、識別されたキャッシュエントリに記憶する。メモリアクセス要求がメモリ階層の上位レベルで保留中である間にキャッシュコントローラがデータに対する後続のメモリアクセス要求を受信した場合、キャッシュコントローラは、エントリに記憶された指標に基づいて、メモリアクセス要求が保留中であることを識別する。【選択図】図１
2019525327.tif 000002
【特許請求の範囲】
【請求項１】
データに対する第１要求（１０２）のキャッシュ（１４０）でのキャッシュミスに応じて、前記データを記憶するために前記キャッシュのキャッシュエントリ（２４５）を割り当てることと、
前記データが前記キャッシュに取り出されている間に、前記第１要求が前記キャッシュで保留中であるという指標（１４７）を前記キャッシュエントリに記憶することと、を含む、
方法。
【請求項２】
前記データが異なるレベルのメモリ（１５０）から取り出されている間に、前記キャッシュエントリの識別子（１６５）をバッファに記憶することをさらに含む、
請求項１の方法。
【請求項３】
前記データが前記キャッシュに取り出されている間に、前記キャッシュにおいて前記データに対する第２要求（１０４）を受信したことに応じて、前記キャッシュエントリの前記指標を読み取ることと、
前記指標に基づいて、前記第１要求が前記キャッシュで保留中であることを識別したことに応じて、前記データが前記キャッシュに取り出されるまで、前記データに対する第２要求を保留状態にすること（７２２）と、をさらに含む、
請求項２の方法。
【請求項４】
前記キャッシュにおいて前記データを受信したことに応じて、前記データを前記キャッシュの前記キャッシュエントリに記憶することをさらに含む、
請求項２の方法。
【請求項５】
前記キャッシュにおいて前記データを受信したことに応じて、前記バッファにアクセスして、前記データを記憶するための前記キャッシュの前記キャッシュエントリを決定することをさらに含む、
請求項４の方法。
【請求項６】
前記キャッシュエントリに有効なデータが記憶されていることを示すために、前記キャッシュエントリの前記指標を更新することをさらに含む、
請求項４の方法。
【請求項７】
前記識別子は、前記キャッシュエントリのセットの指標（５１２）とウェイ（５１４）とを含む、
請求項２の方法。
【請求項８】
前記識別子は、前記データに対応するメモリアドレスに基づくタグ値を含む、
請求項２の方法。
【請求項９】
キャッシュ（１４０）と、
キャッシュコントローラ（１３０）と、を備え、
前記キャッシュコントローラ（１３０）は、
データに対する第１要求（１０２）の前記キャッシュでのキャッシュミスに応じて、前記データを記憶するために前記キャッシュのキャッシュエントリ（２４５）を割り当てることと、
前記データが前記キャッシュに取り出されている間に、前記第１要求が前記キャッシュで保留中であるという指標（１４７）を前記キャッシュエントリに記憶することと、
を行うように構成されている、
プロセッサ（１００）。
【請求項１０】
前記キャッシュコントローラは、
前記データが異なるレベルのメモリから取り出されている間に、前記キャッシュエントリの識別子（１６５）をバッファ（１３０）に記憶することを行うように構成されている、
請求項９のプロセッサ。
【請求項１１】
前記キャッシュコントローラは、
前記データが前記キャッシュに取り出されている間に、前記キャッシュにおいて前記データに対する第２要求（１０４）を受信したことに応じて、前記キャッシュエントリの前記指標を読み取ることと、
前記指標に基づいて、前記第１要求が前記キャッシュで保留中であることを識別したことに応じて、前記データが前記キャッシュに取り出されるまで、前記データに対する第２要求を保留状態にすること（７２２）と、
を行うように構成されている、
請求項１０のプロセッサ。
【請求項１２】
前記キャッシュコントローラは、
前記データを受信したことに応じて、前記データを前記キャッシュの前記キャッシュエントリに記憶することを行うように構成されている、
請求項１０のプロセッサ。
【請求項１３】
前記キャッシュコントローラは、
前記データを受信したことに応じて、前記バッファにアクセスして、前記データを記憶するための前記キャッシュの前記キャッシュエントリを決定することを行うように構成されている、
請求項１２のプロセッサ。
【請求項１４】
前記キャッシュコントローラは、
前記キャッシュエントリに有効なデータが記憶されていることを示すために、前記指標を更新することを行うように構成されている、
請求項１２のプロセッサ。
【請求項１５】
前記識別子は、前記キャッシュエントリのセットの指標とウェイとを含む、
請求項１０のプロセッサ。
【発明の詳細な説明】
【背景技術】
【０００１】
（関連技術の説明）
処理システムは、プロセッサでの命令の実行をサポートするために、通常、実行する命令によってアクセスされるデータを記憶するためのメモリモジュールから構成されたメモリサブシステムを含む。処理効率を促進するために、メモリサブシステムは、実行する命令によってアクセス可能な全てのデータを記憶するために、最上位のメインメモリと、メインメモリに記憶されるデータのサブセットを記憶するための下位レベルの１つ以上のキャッシュと、を有するメモリ階層で構成することができる。処理効率をさらに向上させるために、処理システムは、１つ以上のキャッシュコントローラを介してメインメモリから１つ以上の下位レベルのメモリへデータをフェッチするのを管理するメモリ管理プロトコルを実装することができる。例えば、プロセッサが必要とするデータがメモリ階層のキャッシュに見つからない場合（「キャッシュミス」と呼ばれる）、キャッシュコントローラは、メモリ階層の異なるレベルから（例えば、異なるキャッシュ又はメインメモリから等）データを取り出すメモリアクセス要求を発行する。
【０００２】
プロセッサリソースを浪費する可能性がある、メモリ階層の所定のレベルからの同じデータに対する複数のメモリアクセス要求の発行を防ぐために、キャッシュコントローラは、保留中のメモリアクセス要求の対象であるデータの各ユニットに対応するメモリアドレスをバッファに記憶する。同じデータに対する後続の要求がキャッシュコントローラに提示された場合、キャッシュコントローラは、そのデータがメモリ階層の対応するレベルに存在しいないと判別すると、通常、バッファに問い合わせて、要求されたデータのメモリアドレスがバッファに記憶されているかどうかを判別する。要求されたデータのメインメモリアドレスがメモリバッファに存在し、データに対する要求が既に保留中であることを示す場合、キャッシュコントローラは、データに対する追加の要求を発行しない。しかしながら、メモリバッファは、比較的大量のスペースを必要とし、比較的大量の電力を消費する場合がある。
【０００３】
添付図面を参照することによって、本開示は当業者により良く理解され、その多数の特徴及び利点が明らかになるであろう。異なる図面での同じ参照記号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、メモリアクセス要求に応じてデータを記憶するキャッシュエントリにメモリアクセス要求のペンデンシ（pendency）の指標を記録する処理システムのブロック図である。
【図２】いくつかの実施形態による、キャッシュエントリにミスタグを記憶し、メモリアクセス要求のペンデンシを示すためにペンデンシミスバッファにキャッシュエントリタグを記憶する図１の処理システムの一例を示すブロック図である。
【図３】いくつかの実施形態による、図１の処理システムが、キャッシュエントリでミスタグを識別したことに基づいて、データに対するメモリアクセス要求のペンデンシを識別したことを受信する図１の処理システムの一例を示すブロック図である。
【図４】いくつかの実施形態による、メインメモリからデータをフェッチし、保留ミスバッファからキャッシュエントリタグによって示されるキャッシュエントリにデータを記憶する図１の処理システムの一例を示すブロック図である。
【図５】いくつかの実施形態による、図１の保留ミスバッファに記憶されたキャッシュエントリタグの一例を示すブロック図である。
【図６】いくつかの実施形態による、図１のプロセッサによって使用されるミスタグの一例を示すブロック図である。
【図７】いくつかの実施形態による、キャッシュエントリでメモリアクセス要求のペンデンシを示す方法のフローチャートである。
【発明を実施するための形態】
【０００５】
図１〜図７は、メモリアクセス要求に応じてデータを記憶するために割り当てられるキャッシュエントリにおいて、データに対するメモリアクセス要求のペンデンシを示すことによって、メモリ管理効率を改善するための技術を示す。処理システムは、プロセッサと、階層の最上位のメインメモリと、メインメモリに記憶されるデータのサブセットを記憶するためのメモリ階層の下位レベルの１つ以上のキャッシュと、を有するメモリ階層と、を含む。プロセッサは、命令の実行中、プロセッサに最も近いキャッシュに対してデータ要求を発行する。キャッシュコントローラは、キャッシュミスに応じて、データに対するメモリアクセス要求を、より高いレベルのメモリ階層に発行する。さらに、キャッシュコントローラは、メモリアクセス要求に応じてデータを記憶するためのキャッシュのエントリを識別し、メモリアクセス要求が保留中であるという指標を、識別されたキャッシュエントリに記憶する。メモリアクセス要求がメモリ階層の上位レベルで保留中である間にキャッシュコントローラがデータに対する後続のメモリアクセス要求を受信した場合、キャッシュコントローラは、エントリに記憶された指標に基づいて、メモリアクセス要求が保留中であることを識別する。メモリアクセス要求のペンデンシの指標を記憶するために、個別のミスアドレスバッファではなく、データを記憶するキャッシュエントリを使用することによって、プロセッサは、回路面積及び電力の両方を節約することができる。
【０００６】
一例として説明すると、プロセッサの１つのキャッシュ（例えば、レベル３（Ｌ３）キャッシュ）は、処理システムのメインメモリの直下のメモリ階層に配置されている。Ｌ３キャッシュでのキャッシュミスの対象であるデータがメインメモリからフェッチされている間に、同じデータに対する後続の要求がＬ３キャッシュに提示される場合がある。プロセッサ性能を向上させなければシステムリソースを消費するであろうデータに対するメモリアクセス要求が保留中である間に、同じデータに対する追加のメモリアクセス要求を生成するのを回避するために、Ｌ３キャッシュのキャッシュコントローラは、データがメインメモリからフェッチされている間に、データを記憶するためのキャッシュエントリを直ちに割り当て、データに対するメモリアクセス要求がメインメモリで保留中であることを示す指標をキャッシュエントリに記憶する。いくつかの実施形態では、指標は、フェッチされているデータのメインメモリアドレスと、当該データが保留中のメモリアクセス要求の対象であることを示すステータス情報と、を含むミスタグである。また、キャッシュコントローラは、データ識別子と、割り当てられたキャッシュエントリの位置情報と、を含むキャッシュエントリタグを、例えばバッファ等のサイド構造に記憶する。
【０００７】
データが依然としてメインメモリからフェッチされている間に同じデータに対する後続の要求がＬ３キャッシュで受信されると、キャッシュコントローラは、キャッシュメモリをチェックして、データが既にキャッシュメモリに記憶されているかどうかを判別し、キャッシュエントリにミスタグ（要求されたデータが既にメモリアクセス要求の対象であることを示す）が記憶されていることを識別する。これに応じて、キャッシュコントローラは、メモリアクセス要求を保留状態にして、キャッシュエントリでのデータの記憶を待つ。
【０００８】
要求されたデータがメインメモリから取り出されると、キャッシュコントローラは、取り出されたデータのデータ識別子についてサイド構造に問い合わせを行い、データ識別子に対応するキャッシュエントリが存在するかどうかを判別する。処理システムは、データに対応するキャッシュエントリを読み取ると、取り出されたデータを、キャッシュエントリタグによって示されたキャッシュエントリに記憶し、データが現在キャッシュに存在することを示すためにステータス情報を有効状態に更新する。また、キャッシュコントローラは、データをターゲットにしている保留中のメモリアクセス要求を満たす。したがって、Ｌ３キャッシュは、個別のバッファではなくキャッシュエントリ自体を使用してメモリアクセス要求のペンデンシの指標を記憶し、これにより、電力及び回路面積の両方を節約する。
【０００９】
図１は、いくつかの実施形態による、メモリアクセス要求に応じてデータを記憶するキャッシュエントリにメモリアクセス要求のペンデンシの指標を記憶するように構成された処理システム１００の一例を示す図である。このように、処理システム１００は、例えば、パーソナルコンピュータ、ワークステーション、スマートフォン等のモバイルデバイス、ビデオゲームコンソール、スマートＴＶ等のいくつかのデバイスのうち何れかのデバイスに使用することができる。本明細書でさらに説明するように、処理システム１００は、プロセッサコア１１０と、１つ以上のレベルのキャッシュメモリ（例えば、キャッシュメモリ１４０）と、キャッシュコントローラ１２０と、保留ミスバッファ１３０と、メインメモリ１５０と、を含む。
【００１０】
プロセッサコア１１０は、コンピュータプログラムの形態で構成された命令を実行するための１つ以上の命令パイプラインを含み、これにより、電子デバイスに代わってタスクを実行する。プロセッサコア１１０は、例えばレジスタの形態で或る程度の量の内蔵メモリを有することができるが、かかるメモリは、通常、記憶容量が限られている。したがって、プロセッサコア１１０は、命令を実行するために、１つ以上のレベルのキャッシュメモリ（本明細書では、単一レベルのキャッシュメモリ１４０として表される）と、メインメモリ１５０と、を含む処理システム１００のメモリ階層に対してデータの記憶及び取り出しを行う。具体的には、プロセッサコア１１０は、命令を実行する過程で、メモリ階層に対してデータを記憶（記憶動作）又はロード（読み出し動作）するために、メモリアクセス要求１０２と呼ばれる動作を生成する。本明細書でさらに説明するように、１つ以上のレベルのキャッシュメモリ１４０及びメインメモリ１５０は、メモリアクセス要求１０２を満たすために協働する。
【００１１】
キャッシュメモリ１４０は、プロセッサコア１１０によるアクセスのためにデータを記憶するメモリモジュールである。少なくとも１つの実施形態では、キャッシュメモリ１４０は、エントリのセットを含み、各エントリは、キャッシュラインと呼ばれる関連するデータのユニットを記憶する。いくつかの実施形態では、１つ以上のレベルのキャッシュメモリ１４０の各々は、セットアソシアティブキャッシュであり、各キャッシュは、いくつかのセットに分割されている。各セットは、いくつかのデータ位置（すなわち、ウェイ）を含み、各ウェイは、キャッシュラインを記憶するキャッシュエントリに対応する。各セットは、メモリアドレスのサブセットに関連するキャッシュラインのみを記憶し、セットに関連するサブセットは、インデックスと呼ばれるメモリアドレスの一部に基づいて、対応するキャッシュコントローラによって識別される。セットアソシアティブを使用することによって、１つ以上のレベルのキャッシュメモリ１４０は、キャッシュミス及びキャッシュヒットの比較的迅速な識別を容易にする。
【００１２】
キャッシュコントローラ１２０は、プロセッサコア１１０からデータに対するメモリアクセス要求１０２を受信し、メモリアクセス要求１０２の対象となるメモリアドレスに関連するキャッシュラインを１つのキャッシュエントリが記憶しているかどうかを判別するために、キャッシュメモリ１４０を検索するように構成されたモジュールである。要求されたキャッシュラインがキャッシュメモリ１４０内で見つかった場合、キャッシュヒットが発生している。キャッシュヒットの場合、キャッシュコントローラ１２０は、読み出し動作の場合には、要求されたキャッシュラインをキャッシュメモリ１４０からプロセッサコア１１０に提供することによってメモリアクセス要求１０２を満たし、書き込み動作の場合には、書き込みデータをキャッシュエントリに記憶することによってメモリアクセス要求１０２を満たす。
【００１３】
要求されたキャッシュラインがキャッシュメモリ１４０内で見つからない場合、キャッシュミスが発生している。キャッシュメモリ１４０でキャッシュミスが発生した場合、キャッシュコントローラ１２０は、メモリアクセス要求１０２をメインメモリ１５０に提供する。メインメモリ１５０は、メモリアクセス要求１０２に応じて、要求１０２が対象とするメインメモリアドレスでキャッシュラインを取り出し、キャッシュラインをキャッシュメモリ１４０に提供して、メモリアクセス要求１０２が満たされる。
【００１４】
いくつかの実施形態では、キャッシュメモリ１４０は、プロセッサコア１１０によって要求されるデータの全てを所定の時点で記憶することができず、それによって上述したようにメモリ階層を介してデータを転送する必要があるようなサイズで構成されている。キャッシュミスが発生し、要求されたキャッシュラインがメインメモリ１５０からフェッチされる必要がある毎に、メインメモリからのキャッシュラインの取り出しは時間を要し、その間に、プロセッサコア１１０が、同じキャッシュラインに対する１つ以上の追加の要求を受信する場合がある。キャッシュラインに対する未処理のアクセス要求が保留されている間に同じキャッシュラインに対する複数のメモリアクセス要求を生成することから生じる非効率を低減するために、処理システム１００は、キャッシュメモリ１４０で未処理のアクセス要求を追跡する。
【００１５】
例示すると、動作中、プロセッサコア１１０は、メモリアクセス要求１０２をキャッシュコントローラ１２０に送信し、キャッシュコントローラ１２０は、要求されたキャッシュラインについてキャッシュメモリ１４０を検索する。要求されたキャッシュラインがキャッシュメモリ１４０内で見つかった場合、要求されたキャッシュラインがプロセッサコア１１０に提供される。要求されたキャッシュラインがキャッシュメモリ１４０内で見つからない場合、キャッシュコントローラ１２０は、メモリアクセス要求１０２をメインメモリ１５０に提供する。
【００１６】
要求されたキャッシュラインが、プロセッサコア１１０によってメインメモリ１５０から取り出される（フェッチされる）間、キャッシュコントローラ１２０は、フェッチされたキャッシュラインにキャッシュエントリを割り当てる。いくつかの実施形態では、キャッシュコントローラ１２０は、キャッシュラインがメインメモリ１５０から取り出されるとキャッシュラインが記憶されるキャッシュセット及びウェイに対応するキャッシュエントリを割り当てる。キャッシュコントローラ１２０は、フェッチされたキャッシュラインのメインメモリアドレスと、キャッシュラインが保留中のキャッシュミスの対象であることを示すステータスビットと、を含むミスタグ１４７をキャッシュエントリに記憶する。また、キャッシュコントローラ１２０は、フェッチされたキャッシュラインに割り当てられたキャッシュエントリに関するデータインデックス及び位置情報を含むキャッシュエントリ（ＣＥ）タグ１６５を、保留ミスバッファ１３０に記憶する。例えば、いくつかの実施形態では、キャッシュコントローラ１２０は、キャッシュメモリ１４０において、フェッチされているキャッシュラインに割り当てられたデータインデックス及びキャッシュウェイを含むキャッシュエントリタグ１６５を、保留ミスバッファ１３０に記憶する。
【００１７】
保留ミスバッファ１３０は、未処理のアクセス要求の対象であるキャッシュラインを記憶するためにキャッシュコントローラ１２０によって割り当てられたキャッシュエントリのデータインデックス及びキャッシュエントリ位置情報を含むキャッシュエントリタグ１６５を記憶するメモリモジュールである。いくつかの実施形態では、保留ミスバッファ１３０は、メインメモリ１５０からフェッチされるキャッシュライン毎に割り当てられたデータインデックス及びキャッシュウェイを含むキャッシュエントリタグを記憶するように構成されている。いくつかの実施形態では、データインデックス及び割り当てられたキャッシュウェイを含む保留ミスバッファ１３０内の各キャッシュエントリタグは、メインメモリ１５０からフェッチされるキャッシュラインのフルメインメモリアドレスよりも小さい（つまり、より少ないビットを必要とする）。
【００１８】
キャッシュラインに対する第１メモリアクセス要求１０２が依然としてメインメモリ１５０から満たされる過程にある間に、キャッシュコントローラ１２０が、キャッシュラインに対する後続のメモリアクセス要求１０４をプロセッサコア１１０から受信した場合、キャッシュコントローラ１２０は、後続のメモリアクセス要求１０４の対象となるメモリアドレスに関連するキャッシュラインを１つのキャッシュエントリが含むかどうかを判別するために、キャッシュメモリ１４０を検索する。この場合、キャッシュコントローラ１２０は、キャッシュエントリにおいて、フェッチされているキャッシュラインのメインメモリアドレスと、当該キャッシュラインが保留中のキャッシュミスの対象であることを示すステータスビットと、を識別する。キャッシュコントローラは、ステータスビットの読み取りに基づいて、要求されたキャッシュラインに対する後続のメモリアクセス要求１０４をメインメモリ１５０に転送せず、代わりに他のタスクを再開する。
【００１９】
メインメモリ１５０が、要求の対象となるメインメモリアドレスでキャッシュラインを取り出し、キャッシュラインをキャッシュメモリ１４０に提供すると、キャッシュコントローラ１２０は、キャッシュラインのデータインデックスを、保留ミスバッファ１３０に記憶されたキャッシュエントリタグ１６５と比較する。キャッシュコントローラは、キャッシュラインのデータインデックスを、記憶されたキャッシュエントリタグと一致させ、キャッシュラインを記憶するために割り当てられたキャッシュメモリ１４０内のキャッシュエントリをキャッシュエントリタグ１６５から読み取る。キャッシュコントローラ１２０は、以前に割り当てられたキャッシュエントリのセット及びウェイにキャッシュラインを記憶し、ステータスビットを、キャッシュラインがキャッシュメモリ１４０に存在することを示す有効な状態に更新する。
【００２０】
図２は、キャッシュミスに応じてミスタグ２４７をキャッシュメモリ２４０内のキャッシュエントリ２４５に記憶し、キャッシュエントリタグ２６５を生成して保留ミスバッファ２３０に記憶するキャッシュコントローラ２２０の一例を示す図である。キャッシュコントローラ２２０は、キャッシュラインに対する要求をプロセッサ（図示省略）から受信し、メモリアクセス要求の対象となるメモリアドレスに関連するキャッシュラインを１つのキャッシュエントリが記憶しているかどうかを判別するためにキャッシュメモリ２４０を検索する。この例では、要求されたキャッシュラインがキャッシュメモリ２４０に存在しないので、キャッシュコントローラ２２０は、メモリアクセス要求をメインメモリ（図示省略）に提供する。キャッシュコントローラ２２０は、メインメモリへのメモリアクセス要求が保留中である間、キャッシュエントリ２４５を、保留中のメモリアクセス要求の対象であるキャッシュラインに割り当て、キャッシュラインのメインメモリアドレスと、キャッシュラインが保留中のメモリアクセス要求の対象であることを示すステータスビットと、を含むミスタグ２４７を生成する。キャッシュコントローラ２２０は、ミスタグ２４７を、キャッシュメモリ２４０内の割り当てられたキャッシュエントリ２４５に記憶する。
【００２１】
また、キャッシュコントローラ２２０は、保留中のメモリアクセス要求の対象であるキャッシュラインのデータインデックスと、キャッシュラインに割り当てたキャッシュエントリ２４５と、を含むキャッシュエントリタグ２６５を生成する。キャッシュコントローラ２２０は、キャッシュエントリタグ２６５を保留ミスバッファ２３０に記憶する。通常、キャッシュエントリは、キャッシュエントリが有効なキャッシュラインで満たされているかどうかを示すステータスビットを有する。この例では、キャッシュエントリ２４５に記憶されたミスタグ２４７は、ミスタグ２４７に記憶されたメインメモリアドレスに関連するデータが、保留中のメモリアクセス要求の対象であること（ミス保留）を示すステータスビットを含む。
【００２２】
図３は、いくつかの実施形態による、保留中のメモリアクセス要求の対象であるキャッシュラインに対する後続の要求３０４をキャッシュコントローラ３２０に発行するプロセッサ３１０の一例を示す図である。キャッシュコントローラ３２０は、後続の要求３０４を受信し、要求されたキャッシュラインについてキャッシュメモリ３４０を検索する。キャッシュコントローラ３２０は、要求されたキャッシュラインのメインメモリアドレスを、キャッシュエントリ３４５に記憶されたミスタグ３４７と一致させる。キャッシュコントローラ３２０は、ミスタグ３４７のステータスビット（図示省略）を読み取り、要求されたキャッシュラインが既に保留中のメモリアクセス要求の対象であると判別する。
【００２３】
キャッシュコントローラ３２０は、要求されたキャッシュラインが既にメインメモリ（図示省略）から取り出されている途中であると判別すると、キャッシュメモリ３４０の検索の結果を、既にプロセッサ（図示省略）にコピーされたキャッシュヒットとして扱い、要求されたキャッシュラインに対するメインメモリへの追加の要求を生成することなく他のタスクを再開する。キャッシュコントローラ３２０は、キャッシュメモリ３４０の検索から、要求されたキャッシュラインが保留ミスの対象であると判別することができるので、要求されたキャッシュラインが保留ミスの対象であるかどうかを判別するために保留ミスバッファ（図示省略）をチェックする必要がなく、これにより電力を節約する。
【００２４】
図４は、メモリアクセス要求４０２をメインメモリ４５０に発行し、要求されたデータ４６０を、データ４６０がメインメモリ４５０に記憶されているメインメモリアドレスからコピーし、データ４６０を、保留ミスバッファ４３０に記憶されたキャッシュエントリタグ４６５によって示されたキャッシュメモリ４４０内のキャッシュエントリ（図示省略）に記憶するキャッシュコントローラ４２０の一例を示す図である。メインメモリ４５０は、メモリアクセス要求４０２に応じて、要求４０２の対象となるメインメモリアドレスでキャッシュラインを取り出し、データ４６０をキャッシュコントローラ４２０に提供する。キャッシュコントローラ４２０は、データ４６０のデータインデックスを、保留ミスバッファ４３０に記憶されたキャッシュエントリタグと比較する。キャッシュコントローラ４２０は、データ４６０のデータインデックスをキャッシュエントリタグ４６５のインデックスと一致させると、キャッシュエントリタグ４６５からキャッシュエントリを読み取る。キャッシュコントローラ４２０は、キャッシュエントリタグ４６５によって示されたキャッシュメモリ４４０内の位置にデータ４６０を記憶する。キャッシュコントローラ４２０は、キャッシュエントリにおけるエントリのステータスビットを、データ４６０がキャッシュメモリ４４０に存在することを示す有効な状態に更新する。
【００２５】
図５は、キャッシュエントリタグ５６５の一例を示す図である。キャッシュエントリタグ５６５は、メモリアクセス要求の対象であるキャッシュラインのデータインデックス５１２と、キャッシュラインに割り当てられたキャッシュエントリ（図示省略）のキャッシュウェイ５１４と、を含む。データインデックス５１２は、キャッシュラインのメインメモリアドレスのサブセットを含み、フルメインメモリアドレスよりも短い。キャッシュウェイ５１４は、メモリアクセス要求の対象であるキャッシュラインに割り当てられ、ミスタグ（図示省略）によって一時的に占有されているキャッシュメモリ内のウェイ（図示省略）を含む。キャッシュエントリタグ５６５は、メモリアクセス要求の対象であるキャッシュラインのフルメインメモリアドレスよりも小さい（より少ない記憶容量を必要とする）。
【００２６】
図６は、ミスタグ６４７の一例を示す図である。フルアソシアティブキャッシュの場合、ミスタグ６４７は、メモリアクセス要求の対象であるキャッシュラインのフルメインメモリアドレス６１６と、メインメモリアドレス６１６に関連するキャッシュラインが保留ミスの対象であることを示すステータスビット６１８と、を含む。セットアソシアティブキャッシュの場合、ミスタグ６４７は、メモリアクセス要求の対象であるキャッシュラインのフルメインメモリアドレスの一部６１６と、メインメモリアドレス６１６に関連するキャッシュラインが保留ミスの対象であることを示すステータスビット６１８と、を含む。
【００２７】
図７は、既に保留中のメモリアクセス要求の対象となっているデータに対する後続のメモリアクセス要求を処理する方法７００を示す図である。ブロック７０２において、キャッシュコントローラは、データに対する要求を受信する。ブロック７０４において、キャッシュコントローラは、要求されたデータについてキャッシュメモリを検索し、データがキャッシュメモリに存在するのか、又は、要求されたデータについてのミスタグがキャッシュメモリに存在するのかを判別する。
【００２８】
要求されたデータも要求されたデータについてのミスタグもキャッシュメモリに存在しない場合には、ブロック７０６において、キャッシュコントローラは、要求されたデータをメインメモリからフェッチするために、メモリアクセス要求をメインメモリに送信する。ブロック７０８において、キャッシュコントローラは、要求されたデータに対してキャッシュエントリを割り当てる。ブロック７１０において、キャッシュコントローラは、要求されたデータのメインメモリドレスと、データがキャッシュミスの対象であることを示すステータスビットと、を含むミスタグを生成し、ミスタグをキャッシュエントリに記憶する。ブロック７１２において、キャッシュコントローラは、要求されたデータのインデックスと、割り当てられたキャッシュエントリと、を含むキャッシュエントリタグを生成し、キャッシュエントリタグをミス保留バッファに記憶する。ブロック７１４において、キャッシュコントローラは、要求されたデータをメインメモリから受信する。ブロック７１６において、キャッシュコントローラは、要求されたデータのデータインデックスと一致するキャッシュエントリタグについてミス保留バッファに問い合わせを行い、キャッシュエントリタグからキャッシュエントリ情報を読み取る。ブロック７１８において、キャッシュコントローラは、要求されたデータを、キャッシュエントリタグで指定されたキャッシュエントリにコピーし、キャッシュエントリのステータスビットを有効状態に更新する。
【００２９】
ブロック７０４に戻り、キャッシュコントローラが、要求されたデータについてキャッシュメモリを検索し、要求されたデータに対応するミスタグをキャッシュメモリが含むか、要求されたデータをキャッシュメモリが含むかの何れかを判別した場合、ブロック７２０において、キャッシュコントローラは、要求されたデータのキャッシュエントリがミスタグであるのか又は要求されたデータであるのかを判別する。キャッシュエントリが要求されたデータのミスタグを含む場合、ブロック７２２において、キャッシュコントローラは、ミスタグを、既にプロセッサにコピーされたキャッシュヒットであるかのように扱い、要求されたデータに対するメモリアクセス要求を待つ間他の命令を実行し続ける。ブロック７２０において、要求されたデータについてのキャッシュエントリが要求されたデータを含むとキャッシュコントローラが判別した場合、ブロック７２４において、キャッシュコントローラは、要求されたデータをプロセッサにコピーする。
【００３０】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００３１】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体、又は、記憶媒体の組み合わせを含むことができる。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステム（例えば、システムＲＡＭ又はＲＯＭ）に内蔵されてもよいし、コンピュータシステム（例えば、磁気ハードドライブ）に固定的に取り付けられてもよいし、コンピュータシステム（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）に着脱可能に取り付けられてもよいし、有線又は無線のネットワークを介してコンピュータシステム（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））に接続されてもよい。
【００３２】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００３３】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2019525327.tif 000003
【図２】
2019525327.tif 000004
【図３】
2019525327.tif 000005
【図４】
2019525327.tif 000006
【図５】
2019525327.tif 000007
【図６】
2019525327.tif 000008
【図７】
2019525327.tif 000009
【国際調査報告】
2019525327.tif 000010
2019525327.tif 000011