(57)【要約】  装置が、ＣＰＵコア（１０２）、第１のラインサイズを有する第１のメモリキャッシュ（１３０）、及び第１のラインサイズよりも大きな第２のラインサイズを有する第２のメモリキャッシュ（１５５）を含む。第２のメモリキャッシュ（１５５）の各ラインが上半分と下半分を含む。メモリコントローラサブシステム（１０１）が、ＣＰＵコア（１０２）に及び第１及び第２のメモリキャッシュ（１３０、１５５）に結合される。第１のターゲットアドレスに対する第１のメモリキャッシュ（１３０）にミスがあると、メモリコントローラサブシステム（１０１）は、ミスとなった第１のターゲットアドレスが第２のメモリキャッシュ（１５５）におけるラインの下半分にマップすると判定し、第２のメモリキャッシュ（１５５）からライン全体をリトリーブし、第２のメモリキャッシュ（１５５）から第１のメモリキャッシュ（１３０）にライン全体を返す。
2021534496.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
中央処理装置（ＣＰＵ）コア、
前記ＣＰＵコアによる実行のための命令を格納するための第１のメモリキャッシュであって、第１のラインサイズを有する前記第１のメモリキャッシュ、
前記ＣＰＵコアによる実行のための命令を格納するための第２のメモリキャッシュであって、前記第２のメモリキャッシュが第２のラインサイズを有し、前記第２のラインサイズが前記第１のラインサイズよりも大きく、前記第２のメモリキャッシュの各ラインが上半分及び下半分を有する、前記第２のメモリキャッシュ、及び
前記ＣＰＵコア及び第１及び第２のメモリキャッシュに結合されるメモリコントローラサブシステム、
を含み、
前記メモリコントローラサブシステムが、第１のターゲットアドレスについての前記第１のメモリキャッシュにおけるミスの判定の際、前記ミスとなった前記第１のターゲットアドレスが前記第２のメモリキャッシュにおけるラインの前記下半分にマップすると判定し、前記第２のメモリキャッシュからライン全体をリトリーブし、前記ライン全体を前記第２のメモリキャッシュから前記第１のメモリキャッシュに戻すように構成される、
装置。
【請求項２】
請求項１に記載の装置であって、前記第２のラインサイズが前記第１のラインサイズの２倍である、装置。
【請求項３】
請求項１に記載の装置であって、第２のターゲットアドレスについての前記第１のメモリキャッシュにおける第２のミスの判定の際、前記メモリコントローラサブシステムが、前記第２のミスとなった前記第２のターゲットアドレスが、前記第２のメモリキャッシュにおけるラインの前記上半分にマップすると判定し、また、前記第２のメモリキャッシュからの前記ラインの前記下半分ではなく前記第２のメモリキャッシュからの前記ラインの前記上半分を前記第１のメモリキャッシュに戻すように構成される、装置。
【請求項４】
請求項１に記載の装置であって、前記メモリコントローラサブシステムが、
前記ミスとなった前記第１のターゲットアドレスが前記第２のメモリキャッシュにおける前記ラインの前記下半分にマップすると判定し、また、前記第２のメモリキャッシュからの前記ライン全体のための要求を生成するための、第１のメモリコントローラ、及び
前記要求を受けとり、前記第２のメモリキャッシュにアクセスして前記ライン全体をリトリーブするための、第２のメモリコントローラ、
を含む、装置。
【請求項５】
請求項４に記載の装置であって、
前記第１のターゲットアドレスが仮想アドレスであり、
前記第２のメモリキャッシュからの前記ライン全体に対する前記要求が、前記仮想アドレスに基づいて生成される物理アドレスを含み、
前記ライン全体に対する前記要求がさらに、前記第２のメモリキャッシュからの前記ライン全体が前記第２のメモリキャッシュからリトリーブされるべきであることを示すインジケータを含む、
装置。
【請求項６】
請求項１に記載の装置であって、
前記第１のターゲットアドレスで始まるプログラム命令のプリフェッチユニットセットをリトリーブするため、前記第１のターゲットアドレスが、前記ＣＰＵコアによって前記メモリコントローラサブシステムに提供されるべきであり、
前記ＣＰＵコアがさらに、付加的なプリフェッチユニット内のプログラム命令がリトリーブされずに前記ＣＰＵコアに提供されるという信号をメモリコントローラサブシステムにアサートする、
装置。
【請求項７】
請求項１に記載の装置であって、
第２のターゲットアドレスが、前記第２のターゲットアドレスで始まるプログラム命令の第１のプリフェッチユニットセットをリトリーブするために、前記ＣＰＵコアによって前記メモリコントローラサブシステムに提供されるようになっており、
前記ＣＰＵコアがまた、前記メモリコントローラサブシステムにプリフェッチカウントを提供するようになっており、前記プリフェッチカウントが、前記第１のプリフェッチユニットに続くプログラム命令のプリフェッチユニットの数を示す、
装置。
【請求項８】
請求項７に記載の装置であって、前記メモリコントローラサブシステムが、前記プリフェッチカウント及び前記第２のターゲットアドレスに基づいて一連のターゲットアドレスを計算するようになっており、前記第１のターゲットアドレスが、前記一連のターゲットアドレスのうちの最後のターゲットアドレスである、装置。
【請求項９】
請求項１に記載の装置であって、前記ミスとなった前記第１のターゲットアドレスが前記第２のメモリキャッシュにおけるラインの前記下半分にマップするとの前記判定が、前記第１のターゲットアドレスにおける少なくとも１つのビットの論理状態の判定を含む、装置。
【請求項１０】
システムであって、
入力／出力デバイス、及び
前記入力／出力デバイスに結合されるプロセッサであって、中央処理装置（ＣＰＵ）コアと、第１のメモリキャッシュと、第２のメモリキャッシュと、メモリコントローラサブシステムとを含む、前記プロセッサ、
を含み、
前記第１のメモリキャッシュが、第１のラインサイズを有し、前記ＣＰＵコアによる実行のための命令を格納するのものためであり、
前記第２のメモリキャッシュが、前記ＣＰＵコアによる実行のための命令を格納するものであり、前記第１のラインサイズよりも大きい第２のラインサイズを有し、前記第２のメモリキャッシュの各ラインが上半分及び下半分を含み、
前記メモリコントローラサブシステムが、前記ＣＰＵコアに及び第１及び第２のメモリキャッシュに結合されており、
前記メモリコントローラサブシステムが、第１のターゲットアドレスにおける前記第１のメモリキャッシュのミスの際に、前記ミスとなった前記第１のターゲットが前記第２のメモリキャッシュにおけるラインの前記下半分にマップすると判定し、前記第２のメモリキャッシュからライン全体をリトリーブし、前記第２のメモリキャッシュから前記第１のキャッシュに前記ライン全体を返すように構成されている、
システム。
【請求項１１】
請求項１０に記載のシステムであって、前記第２のラインサイズが前記第１のラインサイズの２倍である、システム。
【請求項１２】
請求項１０に記載のシステムであって、第２のターゲットアドレスの前記第１のメモリキャッシュにおける第２のミスの際に、前記メモリコントローラサブシステムが、前記第２のミスとなった前記第２のターゲットアドレスが前記第２のメモリキャッシュにおけるラインの前記上半分にマップすると判定し、前記第２のメモリキャッシュからの前記ラインの前記上半分のみを前記第１のメモリキャッシュに戻すように構成される、システム。
【請求項１３】
請求項１０に記載のシステムであって、前記メモリコントローラサブシステムが、
前記ミスとなった前記第１のターゲットアドレスが前記第２のメモリキャッシュにおける前記ラインの前記下半分にマップすると判定し、前記第２のメモリキャッシュからのライン全体の要求を生成するための、第１のメモリコントローラ、及び
前記要求を受信し、前記第２のメモリキャッシュにアクセスして前記ライン全体をリトリーブするための、第２のメモリコントローラ、
を含む、システム。
【請求項１４】
請求項１０に記載のシステムであって、
前記第１のターゲットアドレスで始まるプログラム命令のプリフェッチユニットセットをリトリーブするために、前記第１のターゲットアドレスが、前記ＣＰＵコアによって前記メモリコントローラサブシステムに提供されるようになっており、
前記ＣＰＵコアがさらに、付加的なプリフェッチユニット内のプログラム命令がリトリーブされずに前記ＣＰＵコアに提供されるという信号をメモリコントローラサブシステムにアサートする、
システム。
【請求項１５】
請求項１０に記載のシステムであって、
第２のターゲットアドレスで始まるプログラム命令の第１のプリフェッチユニットセットをリトリーブするために、前記第２のターゲットアドレスが、前記ＣＰＵコアによって前記メモリコントローラサブシステムに提供されるようになっており、
前記ＣＰＵコアがさらに、前記メモリコントローラサブシステムにプリフェッチカウントを提供するようになっており、前記プリフェッチカウントが、前記第１のプリフェッチユニットに続くプログラム命令のプリフェッチユニットの数を示す、
システム。
【請求項１６】
請求項１４に記載のシステムであって、前記メモリコントローラサブシステムが、前記プリフェッチカウントと前記第２のターゲットアドレスとに基づいて一連のターゲットアドレスを計算するようになっており、前記第１のターゲットアドレスが、前記一連のターゲットアドレスのうちの最後のターゲットアドレスである、システム。
【請求項１７】
装置であって、
中央処理装置（ＣＰＵ）コア、
前記ＣＰＵコアによる実行のための命令を格納するためのＬ１プログラムキャッシュであって、第１ラインサイズを有する前記Ｌ１プログラムキャッシュ、
データと実行可能命令を格納するためのＬ２メモリキャッシュであって、前記Ｌ２メモリキャッシュが、前記第１ラインサイズのサイズの２倍のラインサイズを有しており、前記Ｌ２メモリキャッシュの各ラインが上半分と下半分を含む、前記Ｌ２メモリキャッシュ、及び
前記ＣＰＵコア、前記Ｌ１プログラムキャッシュ、及び前記Ｌ２メモリキャッシュに結合されるメモリコントローラサブシステム、
を含み、
前記メモリコントローラサブシステムが、
前記ＣＰＵコアによって実行されるべき命令のプリフェッチユニットセットに対応する第１のアドレスを前記ＣＰＵコアから受け取り、
命令の付加的なプリフェッチユニットの数を示すプリフェッチカウントを前記ＣＰＵコアから受け取り、
前記プリフェッチカウントが０であり、前記第１のアドレスが前記Ｌ１プログラムキャッシュにおけるミスと判定されることに応答して、前記第１のアドレスが前記Ｌ２メモリキャッシュにおけるラインの前記下半分にマップすると判定し、前記Ｌ２メモリキャッシュからの前記ライン全体を前記Ｌ１プログラムキャッシュに格納する、
装置。
【請求項１８】
請求項１７に記載の装置であって、前記プリフェッチカウントが０より大きいことに応答して、前記メモリコントローラサブシステムが、
前記第１のアドレスと前記プリフェッチカウントとに基づいて、初期のアドレス及び最後のアドレスを含む一連のアドレスを計算し、
前記一連のアドレスにおける前記最後のアドレスが前記Ｌ１プログラムキャッシュにおけるミスであると判定し、前記最後のアドレスが前記Ｌ２メモリキャッシュにおける所与のラインの前記下半分にマップすると判定し、前記一連のアドレスにおける前記最後のアドレスが前記Ｌ１プログラムキャッシュにおけるミスであり、前記最後のアドレスが前記Ｌ２メモリキャッシュにおける前記所与のラインの前記下半分にマップするという判定に応答して、前記Ｌ２メモリキャッシュからの前記所与のライン全体を前記Ｌ１プログラムキャッシュに格納する、
ためのものである、
装置。
【請求項１９】
請求項１７に記載の装置であって、前記メモリコントローラサブシステムが、
前記ＣＰＵコアによって実行されるべき命令のプリフェッチユニットセットに対応する第２のアドレスを前記ＣＰＵコアから受け取り、
命令の付加的なプリフェッチユニットの数を示す第２のプリフェッチカウントを前記ＣＰＵコアから受け取り、
前記第２のプリフェッチカウントが０であり、前記第２のアドレスが、前記Ｌ１プログラムキャッシュにおけるミスであり、前記第２のアドレスが、前記Ｌ２メモリキャッシュにおけるラインの前記上半分にマップすることに応答して、前記Ｌ２メモリキャッシュからの前記ラインの前記下半分ではなく前記上半分を前記Ｌ１プログラムキャッシュに格納する、
ためのものである、
装置。
【請求項２０】
請求項１７に記載の装置であって、前記メモリコントローラサブシステムが、
前記第１のアドレスが前記Ｌ２メモリキャッシュにおける前記ラインの前記下半分にマップすると判定し、前記Ｌ２メモリキャッシュからのライン全体の要求を生成するための、第１のメモリコントローラ、及び
前記第１のメモリコントローラからの前記要求を受信し、前記Ｌ２メモリキャッシュにアクセスして前記ライン全体をリトリーブするための、第２のメモリコントローラ、
を含み、
前記第１のアドレスが仮想アドレスであり、前記Ｌ２メモリキャッシュからの前記ライン全体に対する前記要求が、前記仮想アドレスに基づいて生成される物理アドレスを含み、前記ライン全体に対する前記要求が、前記Ｌ２メモリキャッシュからの前記ライン全体が前記Ｌ２メモリキャッシュからリトリーブされるべきであることを示すインジケータも含む、
装置。
【発明の詳細な説明】
【技術分野】
【０００１】
メモリシステムには、マルチレベルキャッシュシステムを含むものがある。特定のメモリアドレスに対する要求をメモリコントローラによってプロセッサコアから受信すると、メモリコントローラは、そのメモリアドレスに関連するデータが第１のレベルキャッシュ（Ｌ１）に存在するかどうかを判定する。データがＬ１キャッシュに存在する場合、データはＬ１キャッシュから返される。メモリアドレスに関連するデータがＬ１キャッシュに存在しない場合、メモリコントローラは、第２のレベルキャッシュ（Ｌ２）にアクセスする。Ｌ２は、Ｌ１キャッシュよりも大きいため、より多くのアドレスを保持し得る。データがＬ２キャッシュに存在する場合、データはＬ２キャッシュからプロセッサコアに返され、同じデータが再び要求された場合においてコピーもＬ１キャッシュに保存される。付加的なメモリレベルの階層も可能である。
【発明の概要】
【０００２】
少なくとも１つの例において、装置が、中央処理装置（ＣＰＵ）コアと、ＣＰＵコアによる実行のための命令を格納するための第１のメモリキャッシュとを含む。第１のメモリキャッシュは、第１のラインサイズを持つように構成される。第２のメモリキャッシュが、ＣＰＵコアによる実行のための命令を格納する。第２のメモリキャッシュは、第１のラインサイズよりも大きい第２のラインサイズを有し、第２のメモリキャッシュの各ラインが、上半分と下半分を含む。メモリコントローラサブシステムが、ＣＰＵコアに及び第１及び第２メモリキャッシュに結合される。第１のターゲットアドレスに対する第１のメモリキャッシュにおいてミスが発生すると、メモリコントローラサブシステムは、ミスが発生した第１のターゲットアドレスを第２のメモリキャッシュ内のラインの下半分にマップし、第２のメモリキャッシュからライン全体をリトリーブし、第２のメモリキャッシュから第１のメモリキャッシュにライン全体を返す。
【図面の簡単な説明】
【０００３】
【図１】一例に従ったプロセッサを図示する。
【０００４】
【図２】一例に従った、Ｌ１メモリキャッシュアクセスのフルＬ２キャッシュラインアクセスへの昇格を図示する。
【０００５】
【図３】一例に従った性能改善を図示するためのフローチャートである。
【０００６】
【図４】一例に従った別の性能改善を図示するための別のフローチャートである。
【０００７】
【図５】図１のプロセッサを含むシステムを示す。
【発明を実施するための形態】
【０００８】
図１は、階層（hierarchical）キャッシュサブシステムを含むプロセッサ１００の一例を示す。この例におけるプロセッサ１００は、中央処理装置（ＣＰＵ）コア１０２、メモリコントローラサブシステム１０１、Ｌ１データキャッシュ（Ｌ１Ｄ）１１５、Ｌ１プログラムキャッシュ（Ｌ１Ｐ）１３０、及びＬ２メモリキャッシュ１５５を含む。この例では、メモリコントローラサブシステム１０１は、データメモリコントローラ（ＤＭＣ）１１０、プログラムメモリコントローラ（ＰＭＣ）１２０、及び、統合メモリコントローラ（ＵＭＣ）１５０を含む。この例では、Ｌ１キャッシュレベルにおいて、データ及びプログラム命令が別々のキャッシュに分割される。ＣＰＵコア１０２によって実行される命令は、Ｌ１Ｐ  １３０に格納され、その後、実行のためにＣＰＵコア１０２に提供される。一方、データはＬ１Ｄ  １１５に格納される。ＣＰＵコア１０２は、Ｌ１Ｄ  １１５からのデータの読み出し及びＬ１Ｄ  １１５へのデータの書き込みが可能であり、Ｌ１Ｐ  １３０への読み出しアクセスがある（Ｌ１Ｐ  １３０への書き込みアクセスはない）。Ｌ２メモリキャッシュ１５５は、データ及びプログラム命令の両方を格納し得る。
【０００９】
Ｌ１Ｄ  １１５、Ｌ１Ｐ  １３０、及びＬ２メモリキャッシュ１５５のサイズは実装によって異なり得るが、一例において、Ｌ２メモリキャッシュ１５５のサイズは、Ｌ１Ｄ  １１５又はＬ１Ｐ  １３０のいずれかのサイズよりも大きい。例えば、Ｌ１Ｄ  １１５のサイズは３２キロバイトで、Ｌ１Ｐのサイズも３２キロバイトであるが、Ｌ２メモリキャッシュのサイズは６４キロバイト〜４ＭＢとし得る。また、Ｌ１Ｄ  １１５のキャッシュラインサイズは、Ｌ２メモリキャッシュ１５５のキャッシュラインサイズ（例えば１２８バイト）と同じであり、Ｌ１Ｐ  １３０のキャッシュラインサイズは、より小さい（例えば、６４バイト）。
【００１０】
ＣＰＵコア１０２によりデータが必要とされると、ＤＭＣ１１０は、ＣＰＵコア１０２からターゲットデータに対するアクセス要求を受け取る。アクセス要求は、ＣＰＵコア１０２からのアドレス（例えば、仮想アドレス）を含み得る。ＤＭＣ１１０は、ターゲットデータがＬ１Ｄ  １１５に存在するかどうかを判定する。データがＬ１Ｄ  １１５に存在する場合、データはＣＰＵコア１０２に返される。しかしながら、ＣＰＵコア１０２によって要求されたデータがＬ１Ｄ  １１５内に存在しない場合、ＤＭＣ１１０は、ＵＭＣ１５０にアクセス要求を提供する。このアクセス要求は、ＣＰＵコア１０２によって提供される仮想アドレス（ＶＡ）に基づいてＤＭＣ１１０によって生成される物理アドレスを含み得る。ＵＭＣ１５０は、ＤＭＣ１１０によって提供された物理アドレスがＬ２メモリキャッシュ１５５内に存在するかどうかを判定する。データがＬ２メモリキャッシュ１５５に存在する場合、データはＬ２メモリキャッシュ１５５からＣＰＵコア１０２に返され、コピーがＬ１Ｄ  １１５に格納される。キャッシュサブシステムの付加的な階層が存在する可能性もある。例えば、Ｌ３メモリキャッシュ又はシステムメモリがアクセスされるように利用可能であり得る。そのため、ＣＰＵコア１０２によって要求されたデータがＬ１Ｄ  １１５又はＬ２メモリキャッシュ１５５のいずれにも存在しない場合、データは、付加的なキャッシュレベルにおいてアクセスされ得る。
【００１１】
プログラム命令に関して、実行する付加的な命令をＣＰＵコア１０２が必要とするとき、ＣＰＵコア１０２は、ＶＡ１０３をＰＭＣ１２０に提供する。ＰＭＣは、ワークフローを開始して、実行のためにプログラム命令のプリフェッチパケット１０５をＣＰＵ１０２に戻すことにより、ＣＰＵコア１０２によって提供されたＶＡ１０３に応答する。プリフェッチパケットのサイズは実装によって異なるが、一例において、プリフェッチパケットのサイズは、Ｌ１Ｐ  １３０のキャッシュラインのサイズと等しい。Ｌ１Ｐキャッシュラインサイズが例えば６４バイトである場合、ＣＰＵコア１０２に戻されるプリフェッチパケットも６４バイトのプログラム命令を含むことになる。
【００１２】
ＣＰＵコア１０２はまた、プリフェッチカウント１０４をＰＭＣ１２０に提供する。幾つかの実装において、ＣＰＵコア１０２がＶＡ１０３を提供した後、プリフェッチカウント１０４がＰＭＣ１２０に提供される。プリフェッチカウント１０４は、ＶＡ１０３で始まるプリフェッチユニットに続くプログラム命令のプリフェッチユニットの数を示す。例えば、ＣＰＵコア１０２は、２００ｈのＶＡを提供し得る。このＶＡは、仮想アドレス２００ｈで始まる６４バイトのプリフェッチユニットに関連付けられている。ＣＰＵコア１０２が、仮想アドレス２００ｈに関連するプリフェッチユニットに続いて、メモリコントローラサブシステム１０１が実行のための付加的な命令を送信することを望む場合、ＣＰＵコア１０２は、０より大きい値を有するプリフェッチカウントを提示する。０のプリフェッチカウントは、ＣＰＵコア１０２がこれ以上プリフェッチユニットを必要としないことを意味する。例えば、６のプリフェッチカウントは、ＣＰＵコア１０２が、付加的な６プリフェッチユニット分の命令が、取得され、実行のためにＣＰＵコア１０２に送り返されることを要求することを意味する。返されるプリフェッチユニットは、プリフェッチパケット１０５として図１に示されている。
【００１３】
引き続き図１の例を参照すると、ＰＭＣ１２０は、ＴＡＧＲＡＭ１２１、アドレス変換器１２２、及びレジスタ１２３を含む。ＴＡＧＲＡＭ１２１は、その内容（プログラム命令）がＬ１Ｐ  １３０にキャッシュされた仮想アドレスのリストを含む。アドレス変換器１２２は、仮想アドレスを物理アドレス（ＰＡ）に変換する。一例において、アドレス変換器１２２は、仮想アドレスから直に物理アドレスを生成する。例えば、ＶＡの下位１２ビットは、ＰＡの最下位１２ビットとして用いられ得、ＰＡの最上位ビット（下位１２ビットより上）は、プログラムの実行の前にメインメモリにおいて構成される一セットの表に基づいて生成される。この例では、Ｌ２メモリキャッシュ１５５は、仮想アドレスではなく、物理アドレスを用いてアドレス指定可能である。レジスタ１２３は、ＴＡＧＲＡＭ１２１ルックアップからのヒット／ミスインジケータ１２４と、アドレス変換器１２２によって生成された物理アドレス１２５と、対応するヒット／ミスインジケータ１２４及び物理アドレス１２５が有効であるか無効であるかを示すための有効ビット１２６（本明細書では状態ビットとも称する）とを格納する。
【００１４】
ＣＰＵ１０２からＶＡ１０３を受け取ると、ＰＭＣ１２０は、ＴＡＧＲＡＭ１２１ルックアップを実施して、Ｌ１Ｐ  １３０がその仮想アドレスに関連するプログラム命令を含むかどうかを判定する。ＴＡＧＲＡＭルックアップの結果は、ヒット又はミスインジケータ１２４である。ヒットは、ＶＡがＬ１Ｐ  １３０に存在することを意味し、ミスは、ＶＡがＬ１Ｐ  １３０に存在しないことを意味する。Ｌ１Ｐ  １３０ヒットの場合、ターゲットプリフェッチユニットは、ＰＭＣ１２０によってＬ１Ｐ  １３０からリトリーブされ、プリフェッチパケット１０５としてＣＰＵコア１０２へ返される。
【００１５】
Ｌ１Ｐ  １３０ミスの場合、（ＶＡに基づいて生成される）ＰＡは、１４２で示されるように、ＰＭＣ１２０によってＵＭＣ１５０に提供される。バイトカウント１４０も、ＰＭＣ１２０からＵＭＣ１５０に提供される。バイトカウントは、ＰＡ１４２で始まる（存在する場合）リトリーブされるべきＬ２メモリキャッシュ１５５のバイト数を示す。一例において、バイトカウント１４０は、Ｌ２メモリキャッシュ１５５から所望されるバイトの数を符号化するマルチビット信号である。一例において、Ｌ２メモリキャッシュのラインサイズは１２８バイトであり、各ラインは上半分（６４バイト）と下半分（６４バイト）に分割される。そのため、バイトカウント１４０は、数６４（所与のＬ２メモリキャッシュラインから上半分又は下半分の６４バイトのみが必要とされる場合）又は１２８（Ｌ２メモリキャッシュライン全体が必要とされる場合）を符号化し得る。別の例において、バイトカウントは、１つの状態（例えば、１）がＬ２メモリキャッシュライン全体を暗黙的に符号化し、別の状態（例えば、０）がＬ２メモリキャッシュラインの半分を暗黙的に符号化する、単一のビット信号とし得る。
【００１６】
ＵＭＣ１５０はＴＡＧＲＡＭ１５２も含む。ＵＭＣ１５０によってＰＭＣ１２０から受け取られたＰＡ１４２は、ターゲットＰＡがＬ２メモリキャッシュ１５５におけるヒットであるかミスであるかを判定するためにＴＡＧＲＡＭ１５２へのルックアップを実施するために用いられる。Ｌ２メモリキャッシュ１５５内にヒットがある場合、バイトカウント１４０に応じてキャッシュラインの２分の１又はキャッシュライン全体であり得るターゲット情報が、ＣＰＵコア１０２に返され、コピーがＬ１Ｐ  １３０に格納され、そこから、次回、ＣＰＵコア１０２が、同じプログラム命令をフェッチしようと試みる同じプログラム命令がＣＰＵ１０２に提供される。
【００１７】
図１の例において、ＣＰＵコア１０２は、ＶＡ１０３及びプリフェッチカウント１０４をＰＭＣ１２０に提供する。ＰＭＣ１２０は、上記のように、Ｌ１Ｐ  １３０又はＬ２メモリキャッシュ１５５からプリフェッチパケットをリトリーブするためのワークフローを開始する。プリフェッチカウント１０４と元のＶＡ１０３を用いて、ＰＭＣ１２０は、付加的な仮想アドレスを計算し、それらの計算されたＶＡに対応するプリフェッチパケットをＬ１Ｐ  １３０又はＬ２メモリキャッシュ１５５からリトリーブし始める。例えば、プリフェッチカウントが２であり、ＣＰＵコア１０２からのＶＡ１０３が２００ｈである場合、ＣＰＵコア１０２がそうしたそれぞれのＶＡをＰＭＣ１２０に提供するのではなく、ＰＭＣ１２０は次の二つのＶＡを２４０ｈ及び２８０ｈとして計算する。
【００１８】
図２は、最適化によりプロセッサ１００の改善された性能がもたらされる具体的な例を図示する。前述したように、Ｌ２メモリキャッシュ１５５のライン幅はＬ１Ｐのライン幅よりも大きい。一例において、図２に示すように、Ｌ１Ｐの幅は６４バイトであり、Ｌ２メモリキャッシュ１５５のライン幅は１２８バイトである。Ｌ２メモリキャッシュ１５５は、上半分２２０及び下半分２２５として構成される。ＵＭＣ１５０は、Ｌ２メモリキャッシュ１５５から１２８バイトキャッシュライン全体を、又は、Ｌ２メモリキャッシュの半分（上半分２２０又は下半分２２５）のみを読み出すことができる。
【００１９】
所与のＶＡが、Ｌ２メモリキャッシュ１５５に存在する場合に、特定のＰＡに変換し得、この特定のＰＡは、Ｌ２メモリキャッシュの所与のラインの下半分２２５にマップするか又は上半分２２０にマップする。ＶＡ及びＰＡを表すために用いられるアドレス指定方式に基づいて、ＰＭＣ１２０は、所与のＶＡが下半分２２５にマップするか又は上半分２２０にマップするかを判定し得る。例えば、ＶＡ内の特定のビット（例えば、ビット６）を用いて、対応するＰＡがＬ２メモリキャッシュのラインの上半分にマップするか又は下半分にマップするかを判定し得る。例えば、０であるビット６は下半分を示し得、１であるビット６は上半分を示し得る。
【００２０】
参照数字２０２は、ＣＰＵコア１０２によってＰＭＣ１２０に提供される２００ｈのＶＡと、対応するプリフェッチカウント６の例を示す。参照数字２１０は、上述したキャッシュパイプラインを介して実行されるＶＡのリストが、２００ｈ（ＣＰＵコア１０２から受け取られる）と、次の６つの連続する仮想アドレス２４０ｈ、２８０ｈ、２ｃ０ｈ、３００ｈ、３４０ｈ、及び３８０ｈ（ＰＭＣ１２０によって計算される）を含むことを例示している。
【００２１】
２００ｈから３８０ｈまでの各アドレスは上述のように処理される。ＶＡのうちの任意のもの又は全てが、Ｌ１Ｐ  １３０におけるミスであり得る。ＰＭＣ１２０は、Ｌ１Ｐ  １３０においてミスした二つの連続するＶＡを単一のＬ２キャッシュラインアクセス試行にまとめることができる。従って、２００ｈと２４０ｈが両方ともＬ１Ｐ  １３０においてミスしており、２００ｈに対応する物理アドレスが、Ｌ２メモリキャッシュ１５５の特定のキャッシュラインの下半分２２５に対応しており、２４０ｈに対応する物理アドレスがＬ２メモリキャッシュの同じキャッシュラインの上半分２２５に対応している場合、ＰＭＣ１２０はＬ２メモリキャッシュからのキャッシュライン全体を特定するバイトカウント１４０と共に、単一のＰＡ１４２をＵＭＣ１５０に発行し得る。従って、Ｌ１Ｐ  １３０における二つの連続したＶＡミスは、一つのフルラインＬ２メモリキャッシュルックアップに昇格され得る。
【００２２】
ＣＰＵコア１０２によって開始された一連のＶＡの最後のＶＡ（例えば、ＶＡシリーズ２１０のＶＡ３８０ｈ）が、Ｌ２メモリキャッシュ１５５のキャッシュラインの下半分の２２５にマップする場合、記載される例に従って、たとえ下半分の２２５しか必要とされなかった場合でも、Ｌ２メモリキャッシュ１５５のキャッシュライン全体がリトリーブされる。同じ反応は、プリフェッチカウントが０の状態でＣＰＵがＶＡ１０３をＰＭＣ１２０に提供した場合にも生じ、これは、ＣＰＵ１０２が単一のプリフェッチユニットのみを必要としたことを意味する。キャッシュライン全体をリトリーブし、キャッシュライン全体をＬ１Ｐ  １３０に提供するために費やされる付加的なオーバーヘッド、時間、又は電力消費は、あるとしても非常に少ない。プログラム命令はしばしば線形順に実行されるので、上半分２２０におけるプログラム命令が、いずれにせよ下半分２２５における命令の実行に続いて実行される可能性は概して高くなる。そのため、次の命令セットは非常に少ないコストで受け取られ、そのような命令はいずれにせよ必要とされる可能性が高い。
【００２３】
図２は、ＶＡ３８０ｈがＬ２メモリキャッシュ１５５におけるキャッシュライン２６０の下半分２２５にマップすることを、矢印２１３を介して図示する。ＰＭＣ１２０はこのマッピングを、例えば、ＶＡ、又は、アドレス変換器１２２による変換に続くその対応する物理アドレスのビットの一つ又は複数の検査を介して判定する。ＰＭＣ１２０は、キャッシュライン全体を特定するバイトカウント１０４と共にＶＡ３８０ｈに関連するＰＡを提示することにより、ＵＭＣ１５０によってルックアッププロセスをフルキャッシュラインまで昇格させる。その後、（Ｌ２メモリキャッシュ１５５に存在する場合）１２８バイトキャッシュライン全体がリトリーブされ、２６５で示すように、二つの別個の６４バイトキャッシュラインにおいてＬ１Ｐ  １３０に書き込まれる。
【００２４】
しかしながら、一連のＶＡにおける最後のＶＡ（又は、０のプリフェッチカウントに対して１つのＶＡしかない場合）が、Ｌ２メモリキャッシュ１５５のキャッシュラインの上半分２２０にマップする場合は、ＰＭＣ１２０は、ＵＭＣ１５０に、そのＴＡＧＲＡＭ１５２内をルックアップし、キャッシュラインの上半分のみをＣＰＵコア１０２及びＬ１Ｐ  １３０に戻すように要求する。次のＰＡは、Ｌ２メモリキャッシュ１５５の次のキャッシュラインの下半分２２５にあり得、次のキャッシュラインを推測的にリトリーブするために付加的な時間、オーバーヘッド、及び電力が消費され得、ＣＰＵコア１０２がこれらの命令を実行する必要があることは確実ではない。
【００２５】
図３は、上述の方法のためのフローチャート３００の例を示す。オペレーションは、示された順で又は別の順で成され得る。また、オペレーションは連続的に成され得、又は二つ以上のオペレーションを同時に行うこともできる。
【００２６】
３０２において、この方法は、メモリコントローラサブシステム１０１によって、プログラム命令のＮ個のプリフェッチユニットに対するアクセス要求を受け取ることを含む。一実装において、このオペレーションはＣＰＵコア１０２によって行われ、ＰＭＣ１２０にアドレス及びカウント値が提供される。アドレスは仮想アドレス又は物理アドレスであり得、カウント値は、ＣＰＵコア１０２によって必要とされる付加的なプリフェッチユニットの数を示し得る。
【００２７】
３０４において、インデックス値Ｉが値１に初期化される。このインデックス値は、一連の連続した仮想アドレスにおける最後の仮想アドレスがいつＰＭＣ１２０によって処理されるべきかを判定するために用いられる。３０６において、この方法は、プリフェッチユニットＩがＬ１Ｐ  １３０へのヒットであるかミスであるかを判定する。幾つかの例において、この判定は、仮想アドレスがＰＭＣのＴＡＧＲＡＭ１２１内に存在するかどうかを判定することによって成される。判定３０６からは、ヒット又はミスという二つの結果が可能である。
【００２８】
仮想アドレスがＬ１Ｐ  １３０へのヒットである場合、３０８において、所望のプリフェッチユニットを含むＬ１Ｐ  １３０の対応するラインが、Ｌ１Ｐ  １３０から返され、プリフェッチパケット１０５としてＣＰＵコア１０２に提供される。次に、３１０において、インデックスが増分される（Ｉ=Ｉ＋１）。ＩがまだＮ＋１に達していない場合（判定オペレーション３１２で判定される）、プリフェッチユニットのうちの最後のプリフェッチユニットのＶＡは、ヒット／ミス判定についてまだ評価されておらず、Ｌ１Ｐ  １３０におけるヒット又はミスについて次のＩ番目のプリフェッチユニットを評価するために３０６に戻るように制御ループする。ＩがＮ＋１に達した場合、全てのＮ個のプリフェッチユニットが評価されており、対応するプログラム命令がＣＰＵコア１０２に提供されており、プロセスが停止する。
【００２９】
所与のＩ番目のプリフェッチユニットについて、３０６でＰＭＣ１２０がＬ１Ｐ  １３０内にミスがあると判定した場合、３１４において、ＩがＮの値に達したかどうかについて判定が行われる。ＩがＮに等しくない（一連のＶＡにおける最後のＶＡが達していないことを示す）場合、３１６において、この方法は、メモリコントローラサブシステム１０１が、Ｌ２メモリキャッシュ１５５から（そこに存在する場合、又は、存在しない場合は、第３のレベルキャッシュ又はシステムメモリから）プログラム命令を得ることを含む。次に、インデックス値Ｉは３１８で増分され、判定３０６に戻るよう制御ループされる。
【００３０】
３１４でＩがＮに達した（一連のＶＡの最後のＶＡが到達したことを示す）場合、この方法は、３２０において、Ｉ番目のプリフェッチユニットのＶＡがＬ２メモリキャッシュ１５５のキャッシュラインの下半分にマップするか又は上半分にマップするかの判定を含む。この判定がどのようにして成され得るかの例については、上述したとおりである。Ｉ番目のプリフェッチユニットのＶＡが上半分にマップする場合、３２２において、この方法は、Ｌ２メモリキャッシュのキャッシュラインの上半分のみからプログラム命令を得ることを含む。
【００３１】
しかしながら、Ｉ番目のプリフェッチユニットのＶＡが下半分にマップする場合、この方法は、３２４において、Ｌ２メモリキャッシュアクセスをフルキャッシュラインアクセスに昇格させ、３２６において、Ｌ２メモリキャッシュのフルキャッシュラインからプログラム命令を得ることを含む。
【００３２】
図１を再び参照すると、上述したように、ＣＰＵコア１０２からＶＡ１０３のＰＭＣ１２０への提示に続いて、ＣＰＵコア１０２は、ＰＭＣ１２０にプリフェッチカウント１０４を提供することもできる。プリフェッチカウントは０であり得、これは、ＣＰＵコア１０２がＶＡ１０３で始まるプリフェッチユニットに含まれるもの以外の命令をもはや必要としないことを意味する。しかしながら、ＶＡ１０３の受領と後続のプリフェッチカウントとの間に、ＰＭＣ１２０は以下に説明するように何らかの作業を行っている。
【００３３】
ＶＡ１０３を受け取ると、ＰＭＣ１２０は、ＴＡＧＲＡＭ１２１内のルックアップを実施して、（ＣＰＵコア１０２によって提供された）第１のＶＡがＬ１Ｐにおけるヒット又はミスであるかを判定し、さらに、アドレス変換器１２２を用いてＶＡからＰＡへの変換を実施する。ＰＭＣ１２０はまた、プリフェッチカウント１０４を受け取る前に、第２のＶＡ（ＣＰＵコアによって提供されるＶＡに続く次の連続ＶＡ）を計算する。ＰＭＣ１２０は、ＴＡＧＲＡＭ１２１に推論的にアクセスし、アドレス変換器１２２を用いて第２のＶＡのヒット／ミス・ステータスを判定し、レジスタ１２３にヒット／ミスインジケーション１２４及びＰＡ１２５を読み込む（populate）。レジスタ１２３における有効ビット１２６は有効状態に設定され、これにより、上述したように、第２のＶＡのさらなる処理を可能にする（例えば、存在する場合はＬ１Ｐ  １３０から、又は必要に応じてＬ２メモリキャッシュ１５５から、対応するキャッシュラインをリトリーブする）。
【００３４】
しかしながら、第２のＶＡのさらなる処理が発生する前に、ＣＰＵコア１０２がプリフェッチカウント０をＰＭＣ１２０に送ることが可能であり、これは、ＣＰＵコアが元のＶＡ１０３で始まるプリフェッチユニット以外にプリフェッチユニットを必要としないことを意味する。この時点で、ＰＭＣ１２０には、０のプリフェッチカウントが提供され、従って、第２のＶＡに関連するプリフェッチユニットは必要とされない。しかしながら、ＰＭＣはまた、第２のＶＡのヒット／ミス・ステータスを既に判定しており、対応するＰＡを生成している。ヒット／ミスインジケータ１２４とＰＡ１２５の両方は、０プリフェッチカウントがＰＭＣ１２０によって受け取られる時間までにレジスタ１２３に格納されている。ＰＭＣ１２０は有効ビット１２６のステータスを無効状態を示すように変更し、それにより第２のＶＡのさらなる処理を排除する。この状況（無効状態に設定された有効ビット）は「強制終了（kill）」と呼ばれ、そのため、ＰＭＣ１２０は第２のＶＡの処理を強制終了する。
【００３５】
しかしながら、場合によっては、ＣＰＵコア１０２は、前の強制終了にもかかわらず、第２のＶＡに関連するプリフェッチユニットが実際には、上述したようにＬ１Ｐ  １３０又はＬ２メモリキャッシュ１５５からリトリーブされるべきであることを判定し得る。例えば、ＣＰＵコア１０２が次に要求される命令アドレスを知らせるためのさらなる内部予想情報を有していない場合、ＣＰＵコア１０２は、最後に要求されたアドレスから線形に開始するプリフェッチを継続すべきであることをＰＭＣ１２０に知らせる。この状況は、例えば、ＣＰＵコア１０２における分岐予測論理の予測ミスにより起こり得る。こうしてＣＰＵコア１０２は、再開信号１０６をＰＭＣ１２０に発行する。ＰＭＣ１２０は有効ビット１２６を有効状態に戻すことによって再開信号に応答し、それによって、上述したように、メモリサブシステムパイプラインを介する第２のＶＡの継続的な処理を可能にする。このように、ＣＰＵ１０２は、第２のＶＡをＰＭＣ１２０に直に提示する必要はない。その代わりに、ＰＭＣ１２０は、例えば、レジスタ１２３に第２のＶＡを保持し、そのヒット／ミスインジケータ１２４も保持し、それによって、第２のＶＡのヒット／ミス・ステータスを再び判定し、第２のＶＡをＰＡに変換するために費やされる電力消費及び時間を回避する。
【００３６】
図４は、メモリアドレスルックアップを開始し、強制終了し、再開するためのフローチャート４００の一例を示す。オペレーションは、示された順で又は別の順で実施され得る。また、オペレーションは連続的に行うことができ、又は二つ以上のオペレーションを同時に行うことができる。
【００３７】
４０２において、この方法は、メモリコントローラサブシステム１０１によって、第１のＶＡにおけるアクセス要求を受け取ることを含む。一実装において、このオペレーションは、第１のＶＡをＰＭＣ１２０に提供するＣＰＵコア１０２によって実施される。４０４において、この方法は、第１のＶＡがＬ１Ｐ３０におけるヒットであるかミスであるかを判定することを含む。一例において、このオペレーションは、第１のＶＡのヒット／ミス状況を判定するためにＰＭＣのＴＡＧＲＡＭ１２１にアクセスすることによって成される。第１のＶＡは、４０６において、例えば、アドレス変換器１２２を用いることによって第１のＰＡに変換される。
【００３８】
４０８において、この方法は、第１のＶＡに基づいて第２のＶＡを計算することを含む。第２のＶＡは、第１のＶＡに関連するバイトに続く６４バイトであるバイトのアドレスを生成するために、或る値で第１のＶＡを増分することによって計算され得る。この方法は、４１０において、第２のＶＡがＬ１Ｐ３０におけるヒット又はミスであるかを判定することを含む。一例において、このオペレーションは、第２のＶＡのヒット／ミス状況を判定するためにＰＭＣのＴＡＧＲＡＭ１２１にアクセスすることによって成される。第２のＶＡは、４１２において、上述のようにアドレス変換器１２２を用いることによって第２のＰＡに変換される。４１４において、この方法は、ヒット／ミスインジケータ１２４及び第２のＰＡでレジスタ（例えば、レジスタ１２３）を更新することを含む。また、有効ビット１２６は、有効状態となるように構成される。
【００３９】
その後、ＰＭＣ１２０は、４１６でプリフェッチカウントを受け取る。次に、４１８においてプリフェッチカウントがゼロより大きい場合、４２０において、Ｌ１Ｐ  １３０又はＬ２メモリキャッシュ１５５（又は付加的なレベル）からのプログラム命令が上述のようにリトリーブされる。しかしながら、プリフェッチカウントがゼロである場合、４２２において、有効ビット１２６は無効状態に変更される。そのため、ＰＭＣ１２０に０のプリフェッチカウントを提供したにもかかわらず、ＣＰＵコア１０２は、ＰＭＣ１２０に再開インジケーションを提供し得る（４２４）。４２６において、ＰＭＣ１２０は有効ビット１２６を有効状態に戻し、次いでメモリコントローラサブシステム１０１は、第２のＰＡに関連するプログラム命令を、適宜、Ｌ１Ｐ、Ｌ２メモリキャッシュ等から得る（４２８）。
【００４０】
図５は、本明細書で説明されるプロセッサ１００の例示的な使用を示す。この例では、プロセッサ１００は、プロセッサ１００と一つ又はそれ以上の周辺機器ポート又はデバイスとを含む、システムオンチップ（ＳｏＣ）５００の一部である。この例では、周辺機器は、汎用非同期トランスミッタ（ＵＡＲＴ）５０２、ＵＳＢ（ユニバーサルシリアルバス）ポート５０４、及びイーサネットコントローラ５０６を含む。ＳｏＣ５００は、例えば、プロセッサ１００によって実行されるプログラム命令によって実装される様々な機能のうちの任意の機能を実施し得る。複数のプロセッサ１００が設けられてもよく、所与のプロセッサ１００内に、複数のＣＰＵコア１０２が含まれ得る。
【００４１】
本記載では「結合する」という用語は、間接的又は直接的な有線又は無線接続のいずれかを意味する。そのため、第１のデバイスが第２のデバイスに結合する場合、その接続は、直接的接続を介するもの、又は、他のデバイス及び接続を介した間接的接続を介するものであり得る。また、本記載では、「〜に基づく」は、「少なくとも部分的に〜に基づく」ことを意味する。従って、ＸがＹに基づく場合、Ｘは、Ｙ及び任意の数の他の要因の関数とし得る。
【００４２】
本発明の特許請求の範囲内で、説明した例示の実施例に改変が成され得、他の実施例が可能である。
【図１】
2021534496.tif 000003
【図２】
2021534496.tif 000004
【図３】
2021534496.tif 000005
【図４】
2021534496.tif 000006
【図５】
2021534496.tif 000007
【国際調査報告】
2021534496.tif 000008