(57)【要約】プロセッサ（１０２）は、プリフェッチ要求を、ミスアドレスバッファ（ＭＡＢ）（１３０）の占有率に基づき、または、プリフェッチ要求の信頼度に基づき、メモリ階層内で当該要求が対象としたキャッシュ（１０４）から別のキャッシュ（１０５）に転送する。メモリ階層内の各キャッシュは、ＭＡＢでいくつかのスロットが割り当てられる。キャッシュに対するプリフェッチ要求を受信したときに、キャッシュに割り当てられたスロットの占有率が閾値を上回っているという判断（４０４）に応じて、プロセッサは、プリフェッチ要求をメモリ階層内の次の下位レベルのキャッシュに転送する（４１０）。それに応じて、アクセス要求の対象となるデータは、メモリ階層内の次の下位レベルのキャッシュにプリフェッチされ、これにより、そのキャッシュへの後続の提供のために利用可能である。加えて、プロセッサは、プリフェッチ要求の信頼度に基づいて、プリフェッチ要求を下位レベルのキャッシュに転送できる。【選択図】図１
2016509272.tif 000002
【特許請求の範囲】
【請求項１】
第１のキャッシュ（２０４）でのキャッシュミスを示すバッファ（１６５）におけるスロットの第１のセットにアドレスを格納することと、
前記スロットの第１のセットの占有率が第１の閾値を上回っているという判断（４０４）に応じて、前記第１のキャッシュを対象とした第１のプリフェッチ要求を第２のキャッシュ（１０５）に転送すること（４１０）と、
を含む方法。
【請求項２】
前記スロットの第１のセットの占有率を判断することは、保留中のメモリアクセス要求と関連付けられたアドレスを格納する、前記スロットの第１のセットにおけるスロットの数を判断することを含む、請求項１に記載の方法。
【請求項３】
前記スロットの第１のセットの占有率を判断することは、プリフェッチ要求を格納する、前記スロットの第１のセットにおけるスロットの数を判断することを含む、請求項１に記載の方法。
【請求項４】
前記スロットの第１のセットの占有率を判断することは、プリフェッチ要求を格納する前記スロットの第１のセットのスロットの数に対するデマンド要求を格納する前記スロットの第１のセットのスロットの数の比率を判断することを含む、請求項１に記載の方法。
【請求項５】
前記第２のキャッシュでのキャッシュミスに応じて、前記バッファにおけるスロットの第２のセットにアドレスを格納することをさらに含む、請求項１に記載の方法。
【請求項６】
前記第１のプリフェッチ要求を前記第２のキャッシュに転送することは、前記第１のプリフェッチ要求と関連付けられたアドレスを、前記スロットの第２のセットに格納することを含む、請求項５に記載の方法。
【請求項７】
前記スロットの第２のセットの占有率が第２の閾値を上回っているという判断に応じて、前記第１のプリフェッチ要求を第３のキャッシュ（１０６）に転送することをさらに含む、請求項５に記載の方法。
【請求項８】
前記第１の閾値は前記第２の閾値と異なっている、請求項７に記載の方法。
【請求項９】
前記第１のキャッシュを対象とした第２のプリフェッチ要求と関連付けられた信頼度が第２の閾値を下回っているという判断（５０４）に応じて、前記第２のプリフェッチ要求を前記第１のキャッシュから前記第２のキャッシュに転送すること（５１０）をさらに含む、請求項１に記載の方法。
【請求項１０】
アクセス要求を発行するためのプロセッサコア（１１０）と、
第１のキャッシュ（１０４）と、
第２のキャッシュ（１０５）と、
前記第１のキャッシュに対するキャッシュミスに基づいて、前記第１のキャッシュに割り当てられたスロットの第１のセットにアドレスを格納するためのバッファであって、前記キャッシュミスはアクセス要求に起因する、バッファ（１３０）と、
プリフェッチ要求を前記第１のキャッシュに対して発行するためのプリフェッチャ（１１２）と、
前記バッファにおける前記スロットの第１のセットの占有率が第１の閾値を上回っているという判断に応じて、第１のプリフェッチ要求を前記第１のキャッシュから前記第２のキャッシュに転送する（４１０）コントローラ（１１５）と、
を備える、プロセッサ。
【請求項１１】
前記コントローラは、前記スロットの第１のセットのうち利用不可なスロットの数を判断することによって、前記スロットの第１のセットの占有率を判断する、請求項１０に記載のプロセッサ。
【請求項１２】
前記コントローラは、プリフェッチ要求を格納する前記スロットの第１のセットのスロットの数を判断することによって、前記スロットの第１のセットの占有率を判断する、請求項１０に記載のプロセッサ。
【請求項１３】
前記コントローラは、プリフェッチ要求を格納する前記スロットの第１のセットのスロット数に対するデマンド要求を格納する前記スロットの第１のセットのスロットの数の比率を判断することによって、前記スロットの第１のセットの占有率を判断する、請求項１０に記載のプロセッサ。
【請求項１４】
前記バッファは、前記第２のキャッシュでのキャッシュミスの判断に応じて、スロットの第２のセットでアドレスを格納するためのものである、請求項１０に記載のプロセッサ。
【請求項１５】
前記コントローラは、前記第１のプリフェッチ要求を前記スロットの第２のセットに格納することによって、前記第１のプリフェッチ要求を前記第２のキャッシュに転送するためのものである、請求項１４に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してプロセッサに関し、より詳細にはプロセッサにおけるプリフェッチに関する。
【背景技術】
【０００２】
プロセッサアーキテクチャは、通常、メモリ階層を採用しており、メモリ階層では、最下位レベルにおいて外部メモリを有し、各上位レベルにおいてキャッシュを有している。プロセッサアーキテクチャは、メモリ階層の最上位レベルのキャッシュからデータ（命令またはオペランドデータ）を要求するプロセッサコアをさらに採用している。アクセス要求に関する情報がメモリ階層の特定のキャッシュに格納されていないという判断に応じて、キャッシュは、階層内の次の下位レベルにおけるキャッシュからの情報に対するアクセス要求を発行する。いくつかのプロセッサアーキテクチャでは、非ブロッキングキャッシュを採用しており、これにより、キャッシュは、メモリ階層の下位レベルに対する保留中のアクセス要求が満足されるのを待ちながら、アクセス要求に対応することができる。かかるアーキテクチャは、各保留中のアクセス要求に対するアドレスおよび他の情報を格納するために、ミスアドレスバッファ（ＭＡＢ）を使用できる。メモリ階層の各キャッシュには、ＭＡＢのスロットが割り当てられており、キャッシュに割り当てられたスロット数が、当該キャッシュに対する保留中のアクセス要求の最大許容数を決定するようになる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
アクセス要求は、プロセッサによって必要とされることが分かっている命令またはデータの何れかに対するプロセッサコアからの要求を表すデマンド要求と、後の時点で実行されると予測される命令またはデータ参照に応答すると予期される命令またはデータを推論的に要求するプリフェッチ要求と、の少なくとも２つのタイプであり得る。デマンド要求は、通常、ＭＡＢにおける記憶位置の予約に対して、より高い優先度が与えられる。この優先順位付けは、ＭＡＢでの利用可能な記憶位置の不足に起因して、プリフェッチに悪影響を及ぼす場合があり、これによりプロセッサ効率を低下させる。
【０００４】
本開示は、添付の図面を参照することでより良く理解することができ、その多数の特徴および利点が当業者に明らかになり得る。
【図面の簡単な説明】
【０００５】
【図１】いくつかの実施形態による電子装置のブロック図である。
【図２】いくつかの実施形態による図１の電子装置のプロセッサで使用されるプリフェッチ要求情報のブロック図である。
【図３】いくつかの実施形態による図１のプロセッサのメモリ階層におけるプリフェッチ要求の転送を示すタイムラインである。
【図４】いくつかの実施形態による図１のプロセッサのメモリ階層において、ＭＡＢの占有率に基づいてプリフェッチ要求を転送する方法のフロー図である。
【図５】いくつかの実施形態による図１のプロセッサのメモリ階層において、プリフェッチ信頼度に基づいてプリフェッチ要求を転送する方法のフロー図である。
【図６】いくつかの実施形態によるプロセッサの構成要素の少なくとも一部を実装する集積回路デバイスを設計および製造するための方法を示すフロー図である。
【発明を実施するための形態】
【０００６】
異なる図面での同一の符号は、類似または同一の項目を示す。
【０００７】
図１〜図６は、プリフェッチ要求を、ミスアドレスバッファ（ＭＡＢ）の占有率に基づいて、または、プリフェッチ要求の信頼度に基づいて、それらの対象とするキャッシュからメモリ階層の別のキャッシュに転送することにより処理効率を改善するための技術を示す図である。プロセッサは、ＭＡＢにおける各スロットが、メモリ階層のキャッシュに対する保留中のアクセス要求に関連した情報を格納できるように、ＭＡＢを維持する。メモリ階層の各キャッシュには、ＭＡＢにおいてスロットのセットが割り当てられる。キャッシュに対するプリフェッチ要求を受信したときに、キャッシュに割り当てられたスロットのセットの占有率が閾値を上回っているという判断に応じて、プロセッサは、プリフェッチ要求を、メモリ階層の次の下位レベルのキャッシュに転送する。それに応じて、アクセス要求の対象となるデータは、メモリ階層の下位レベルのキャッシュにプリフェッチされ、これにより、後続のデマンド要求の場合には、キャッシュへの提供のために利用可能となる。また、プロセッサは、プリフェッチ要求を、プリフェッチ要求の信頼度に基づいて、下位レベルのキャッシュに転送できる。このことは、低信頼度と関連付けられたプリフェッチ要求が、ＭＡＢにおいて、高信頼度のデマンド要求またはプリフェッチ要求に対して使用され得る上位レベルのキャッシュのスロットを消費しないことを確実にする。
【０００８】
図１は、いくつかの実施形態によるプロセッサ１０２およびメモリ１５０を有する電子装置１００を示す図である。電子装置１００は、プロセッサを採用する任意の装置であってよく、パーソナルコンピュータ、サーバー、携帯電話などの携帯用電子機器、車載装置、ゲーム機などを含む。プロセッサ１０２は、一般に、コンピュータプログラムとして配置された命令であって、メモリ１５０に格納された命令のセットを実行するように構成されている。命令のセットは、コンピュータプログラムに関連付けられたタスクを実行するために、プロセッサ１０２を操作する。
【０００９】
プロセッサ１０２は、命令のセットを実行するプロセッサコア１１０を含む。いくつかの実施形態では、プロセッサコア１１０は、複数のステージを有する命令パイプラインを実装しており、これにより、各ステージは、命令の実行の一部として特定の操作を実行する。例えば、命令パイプラインは、プログラム順で次の命令をフェッチするフェッチステージと、フェッチした命令をマイクロ命令のセットに復号する復号ステージと、マイクロ命令を実行のためにディスパッチするディスパッチステージと、ディスパッチされたマイクロ命令を実行するための複数の実行ユニットを有する実行ステージと、命令のリタイアを管理するリタイアステージと、を含んでもよい。
【００１０】
プロセッサ１０２は、Ｎ（Ｎは整数）個のキャッシュのセットも含む。図示した例では、Ｎ個のキャッシュは、キャッシュ１０４と、キャッシュ１０５と、Ｎ番目のキャッシュ１０６までの追加のキャッシュと、を含む。説明のために、キャッシュ１０４〜１０６は、命令の実行中に、プロセッサ１０２によって操作されるデータを格納すると仮定する。プロセッサ１０２は、プロセッサコア１１０によって実行される命令を格納するキャッシュの別のセットであって、階層内に配置されたキャッシュの別のセットも含んでもよい。いくつかの実施形態では、キャッシュ１０４〜１０６のうち１つ以上が、命令およびデータの両方を格納できる。図１に関して説明する技術は、キャッシュ１０４〜１０６がデータを格納するという仮定の下で説明されているが、その技術は、命令を格納するキャッシュにも適用され得ることが理解されるであろう。
【００１１】
キャッシュ１０４〜１０６およびメモリ１５０は、電子装置１００に対するメモリ階層１４５を一緒に形成する。メモリ１５０は、メモリ階層１４５の最下位レベルに配置されており、キャッシュ１０４〜１０６の各々は、メモリ階層１４５の異なる対応するレベルに配置されている。従って、図１の例では、キャッシュ１０４は、階層の最上位レベルに配置されており、このため、Ｌ１（「レベル１」）キャッシュ１０４と呼ばれる。キャッシュ１０５は、メモリ階層１４５の次の上位レベルに配置されており、Ｌ２（「レベル２」）キャッシュ１０５と呼ばれる。プロセッサ１０２の他のキャッシュは、メモリ階層１４５の他のレベルに配置されており、キャッシュ１０６は、Ｎ番目のレベルであって、ＬＮキャッシュ１０６と呼ばれる。いくつかの実施形態では、メモリ階層１４５の連続した上位レベルが、連続的に小さくなる（データを格納する容量が少なくなる）。従って、例えば、Ｌ１キャッシュ１０４の容量は、Ｌ２キャッシュ１０５の容量よりも少ない。しかし、以下でさらに説明するように、プロセッサ１０２は、通常、Ｌ１キャッシュ１０４を経由してメモリ階層１４５からデータを格納および取得し、メモリ階層１４５の他のレベルからデータを直接格納および取得しない。それに応じて、メモリ階層１４５の下位レベルに配置されたデータは、そのデータがＬ１キャッシュ１０４に達するまでメモリ階層１４５の各レベルをトラバースさせることにより、プロセッサ１０２に提供される。メモリ階層１４５でデータがトラバースする各レベルは、プロセッサ１０２からのアクセス要求に応じて、追加の待ち時間を取り込む。その結果、プロセッサ１０２によって要求されたデータが配置されているメモリ階層１４５のレベルが高いほど、データに対する処理効率が高くなる（かつ、データを受信するプロセッサ１０２に対する待ち時間が短くなる）。
【００１２】
キャッシュ１０４〜１０６の各々は、コントローラおよびストレージアレイを含む。キャッシュ１０４〜１０６の各々に対するストレージアレイは、データを格納するように構成されたビットセルなどの記憶要素のセットである。キャッシュ１０４〜１０６の各々に対するコントローラは、対応するストレージアレイにおいてデータの格納および取得を管理するように構成されている。図示した例では、Ｌ１キャッシュ１０４は、コントローラ１１５およびストレージアレイ１１６を含み、Ｌ２キャッシュ１０５は、コントローラ１２５およびストレージアレイ１２６を含み、ＬＮキャッシュ１０６は、コントローラ１３５およびストレージアレイ１３６を含む。
【００１３】
プロセッサコア１１０は、特定の命令に応じてメモリアクセス要求を生成するためのロード／ストアユニット１１１を含む。詳しく説明すると、いくつかの実施形態では、ロード／ストアユニット１１１は、プロセッサコア１１０の命令パイプラインの実行ステージに配置されている。命令パイプラインの復号ステージは、データをメモリ階層１４５から取得するための操作（ロード操作）、または、データをメモリ階層１４５に格納するための操作（ストア操作）を生成するための特定の命令を復号する。本明細書では、ロードおよびストア操作は、まとめてメモリアクセス要求と呼ばれる。各メモリアクセス要求は、メモリアクセス要求によってアクセスされるデータの位置を識別するメモリアドレスを含む。
【００１４】
メモリアクセス要求に応じて、ロード／ストアユニット１１１は、本明細書においてデマンド要求と呼ばれるメモリ階層１４５に対する要求を生成する。デマンド要求は、Ｌ１キャッシュ１０４に提供される。コントローラ１１５は、デマンド要求に対するメモリアドレスを分析し、そのメモリアドレスと関連付けられたデータをストレージアレイ１１６が格納しているかどうかを判断する。格納している場合には、コントローラ１１５は、デマンド要求がロード操作に対する場合、メモリアドレスと関連付けられたデータをロード／ストアユニット１１１に提供し、デマンド要求がストア操作に対する場合、メモリアドレスに対応する位置に新しいデータを格納することによって、デマンド要求を満足する。コントローラ１１５は、メモリアドレスと関連付けられたデータをストレージアレイ１１６が格納していないと判断した場合には、キャッシュミスを示し、デマンド要求をＬ２キャッシュ１０５に提供する。
【００１５】
デマンド要求に応じて、コントローラ１２５は、デマンド要求に対するメモリアドレスを分析し、メモリアドレスと関連付けられたデータをストレージアレイ１２６が格納しているかどうかを判断する。格納している場合には、コントローラ１２５は、ストレージアレイ１１６における格納のために、データをＬ１キャッシュ１０４に提供する。次に、コントローラ１１５は、ストレージアレイ１１６に格納されたデータを使用して、デマンド要求を満足する。コントローラ１２５は、メモリアドレスと関連付けられたデータをストレージアレイ１２６が格納していないと判断した場合には、キャッシュミスを示し、デマンド要求を、メモリ階層１４５の次の下位レベルのキャッシュに提供する。メモリ階層１４５の他のレベルにおけるコントローラは、対応するストレージアレイがメモリアドレスと関連付けられたデータを格納しているかどうかを判断するために、コントローラ１２５と同様の操作を実行する。格納している場合には、階層の次の上位レベルにおけるキャッシュにデータを提供し、同様に、そのデータを次の上位レベルのキャッシュに提供することを、当該データが、ストレージアレイ１１６での格納のためにコントローラ１１５に提供されるまで同様に続けられる。キャッシュがメモリアドレスと関連付けられたデータを格納していない場合には、キャッシュミスを示し、デマンド要求を、次の上位レベルにおけるキャッシュに提供する。デマンド要求は、このようにして、データがキャッシュにあると判断されるまで、または、デマンド要求がＬＮキャッシュ１０６に達するまで、メモリ階層１４５をトラバースする。コントローラ１３５は、メモリアドレスと関連付けられたデータをストレージアレイ１３６が格納していないと判断した場合には、メモリアドレスをメモリ１５０に提供する。これに応じて、メモリ１５０は、メモリ階層１４５をＬ１キャッシュ１０４まで上方にトラバースするために、データをコントローラ１３５に提供する。
【００１６】
いくつかの実施形態では、キャッシュ１０４〜１０６の各々は、デマンド要求に応じて、次の上位レベルのキャッシュから提供されたデータを格納する。下位レベルのキャッシュは、一般に、上位レベルのキャッシュよりも大容量（例えば、より多くの記憶セル）を有しており、従って、より多くのデータを格納できる。いくつかの実施形態では、キャッシュ１０４〜１０６のコントローラは、異なるポリシーを実装でき、これにより、キャッシュは、そのストレージアレイにデータを格納することなく、次の上位レベルにデータを提供し得る。例えば、各デマンド要求は、優先レベルなどのデマンド要求のタイプを示すフィールドを含んでもよく、キャッシュ１０４〜１０６のコントローラは、デマンド要求の優先レベルに基づいて、どのストレージアレイがデマンド要求に応じてデータを格納すべきかを判断できる。
【００１７】
プロセッサコア１１０は、ロード／ストアユニット１１１によって発行されたデマンド要求を分析し、分析に基づいて、データに対するプリフェッチ要求を発行するプリフェッチャ１１２を含む。プリフェッチ要求は、デマンド要求と類似しているが、後の時点においてプロセッサコア１１０で実行される命令によって要求されると予期されるデータに基づく推論的操作として生成される。本明細書でさらに説明するように、プリフェッチ要求は、プリフェッチ要求の対象となるデータを、メモリ階層１４５の上方へ移動させる。それに応じて、データが予期される通りに要求される場合には、データは、階層内でプロセッサコア１１０に近づけられ、これによりアクセス待ち時間を低減する。
【００１８】
プリフェッチ要求は、Ｌ１キャッシュ１０４に提供され、デマンド要求と同様の方法でメモリ階層１４５によって満足され得る。詳しく説明すると、各プリフェッチ要求は、プリフェッチ要求の対象となるデータのメモリ位置を示すメモリアドレスを含む。プリフェッチ要求は、デマンド要求と同様の方法でメモリ階層１４５をトラバースでき、これにより、プリフェッチ要求の対象となるデータがＬ１キャッシュ１０４に格納されるまで、階層の上方に向かって転送される。以下でさらに説明するように、いくつかのプリフェッチ要求に対して、プリフェッチ要求の対象となるデータは、Ｌ１キャッシュまで転送されるのではなく、Ｌ２キャッシュ１０５などのメモリ階層１４５の下位レベルに転送されるだけである。このことは、本明細書でさらに説明するように、キャッシュ資源が乏しい場合において、プロセッサ１０２が、デマンド要求の満足をより効率的に管理するのを可能にする。
【００１９】
デマンド要求またはプリフェッチ要求は、キャッシュが、階層の次の下位レベルのキャッシュからのデマンド要求またはプリフェッチ要求に対する応答を待っている場合には、そのキャッシュに対して「保留中」と呼ばれる。従って、例えば、Ｌ１キャッシュ１０４が、デマンド要求に応答してデータを提供するためにＬ２キャッシュ１０５を待っている場合には、デマンド要求は、Ｌ１キャッシュにおいて保留中と呼ばれる。所与のデマンド要求またはプリフェッチ要求は、デマンド要求に応答するデータがメモリ階層１４５のどこに配置されているかに応じて、キャッシュ１０４〜１０６のうち２つ以上で保留中になり得ることが理解されるであろう。キャッシュ１０４〜１０６は、キャッシュで保留中のデマンド要求またはプリフェッチ要求がある間に、他のデマンド要求またはプリフェッチ要求への応答を含む他の操作を実行可能な非ブロッキングキャッシュとして構成されている。
【００２０】
キャッシュ１０４〜１０６の非ブロッキング属性を実装するために、プロセッサ１０２は、ミスアドレスバッファ（ＭＡＢ）１３０を含む。ＭＡＢ１３０は、スロット１６５などの複数のスロットを含み、これにより、各スロットは、キャッシュ１０４〜１０６のうち１つで保留中の対応するデマンド要求またはプリフェッチ要求を表す情報を格納できる。プロセッサ１０２は、キャッシュ１０４〜１０６の各々に、ＭＡＢ１３０におけるスロットの対応するセットを割り当てて、キャッシュがその割り当てられたスロットのうち１つで保留中のデマンド要求または保留中のプリフェッチ要求に対する情報のみを格納できるようにする。図１の例では、各スロットは、それが割り当てられている対応するキャッシュを示すラベルが付けられている。
【００２１】
詳しく説明すると、メモリ階層１４５のキャッシュでのキャッシュミスの判断に応じて、キャッシュのコントローラは、キャッシュミスを引き起こしたデマンド要求またはプリフェッチ要求に対する情報を格納するために、その割り当てられたセット内で任意の利用可能なスロットを見つける。スロットは、キャッシュで保留中の別のデマンド要求またはプリフェッチ要求に対する情報を格納していない場合には、利用可能であると判断される。キャッシュコントローラは、キャッシュミスを引き起こしたデマンド要求に対する情報を利用可能なスロットに格納する。ＭＡＢ１３０でキャッシュに対して割り当てられた最後に利用可能なスロットがデマンド要求またはプリフェッチ要求に対する情報で満杯になると、キャッシュは、メモリ階層１４５の次の上位レベルにおけるキャッシュに対して、それが追加のデマンド要求またはプリフェッチ要求を受け入れることができないことを示す。保留中のデマンド要求またはプリフェッチ要求に応答するデータがキャッシュに提供されていることに応じて、キャッシュのコントローラは、ＭＡＢ１３０での対応するスロットを利用可能にして、メモリ階層１４５の次の上位レベルに対して、それが追加のデマンド要求またはプリフェッチ要求を受け入れることができることを示す。
【００２２】
いくつかの場合には、ＭＡＢ１３０においてキャッシュの割り当てられたスロットが、多過ぎる数の保留中のプリフェッチ要求によって使用されるのを可能にすると、プロセッサコア１１０での処理効率を低減し得る。例えば、いくつかの場合には、デマンド要求の満足が、キャッシュ１０４〜１０６において、プリフェッチ要求の満足よりも高い優先度を与えられている場合には、処理効率が向上する。それに応じて、キャッシュ１０４〜１０６は、スロットが、保留中のデマンド要求に対する情報を格納するために利用できる可能性を高めるようにＭＡＢ１３０を管理できる。例えば、いくつかの実施形態では、Ｌ１キャッシュ１０４に対するコントローラ１１５は、キャッシュ１０４に割り当てられたＭＡＢ１３０で利用可能なスロットの占有率を監視する。スロットの占有率が閾値を下回っている場合には、コントローラ１１５は、Ｌ１キャッシュ１０４で受信したプリフェッチ要求がＬ２キャッシュ１０５に転送されるポリシーを実装する。プリフェッチ要求の転送に応じて、コントローラ１１５は、プリフェッチ要求を表す情報を、ＭＡＢ１３０において割り当てられたスロットの１つに格納しない。その結果、より多くの利用可能なスロットが、受信したデマンド要求のために確保されることにより、処理効率が向上する。
【００２３】
本明細書では、バッファにおけるスロットのセットの占有率は、セットに格納されたデマンド要求の数、セットに格納されたプリフェッチ要求の数もしくはそれらの組合せを識別するパラメータ、または、別の方法で表す任意のパラメータを指す。スロットのセットの占有率は、いくつかの方法で判断できる。例えば、占有率は、スロットのセットのうち利用可能なスロット数を、セット内のスロットの総数から引くことにより判断できる。いくつかの実施形態では、占有率は、プリフェッチ要求を表す情報を格納するセットのスロット数に等しいか、またはそれに基づく。いくつかの実施形態では、占有率は、デマンド要求を表す情報を格納するセットのスロット数と、プリフェッチ要求を表す情報を格納するセットのスロット数との間の差に等しいか、またはそれに基づく。いくつかの実施形態では、占有率は、プリフェッチ要求情報を格納するスロットに対するデマンド要求情報を格納するスロットの比率に等しいか、またはそれに基づく。
【００２４】
転送されたプリフェッチ要求の受信に応じて、Ｌ２キャッシュ１０５は、転送されたプリフェッチ要求を、転送されていないプリフェッチ要求と同様に処理する一方で、転送されたプリフェッチ要求に応答するデータをＬ１キャッシュ１０４に提供しない。詳しく説明すると、転送されたプリフェッチ要求の受信に応じて、Ｌ２キャッシュ１０５は、ストレージアレイ１２６が、プリフェッチ要求のメモリアドレスと関連付けられたデータを格納しているかどうかを判断する。格納している場合には、Ｌ２キャッシュ１０５は、データをＬ１キャッシュ１０４に提供せずに、そのデータをストレージアレイ１２６で保持する。ストレージアレイ１２６がプリフェッチ要求のメモリアドレスと関連付けられたデータを格納していない場合には、コントローラ１２５は、プリフェッチ要求を表す情報をＭＡＢ１３０で格納する。加えて、コントローラ１２５は、プリフェッチ要求を階層内の次の下位レベルにおけるキャッシュに提供する。それに応じて、Ｌ２キャッシュ１０５は、最終的に、プリフェッチ要求のメモリアドレスと関連付けられたデータを、メモリ階層１４５内の下位レベルから受信する。コントローラ１２５は、受信したデータをストレージアレイ１２６で格納する一方で、それをＬ１キャッシュ１０４に提供しない。プリフェッチ要求の対象となるデータは、このようにして、メモリ階層１４５内でプロセッサコア１１０に近づけられ、それにより、データが後でデマンド要求の対象となる場合の待ち時間を低減する。しかし、プリフェッチデータは、Ｌ１キャッシュ１０４までは提供されず、デマンド要求の満足のためにＬ１キャッシュ１０４においてより多くのスペースを提供する。
【００２５】
いくつかの実施形態では、プリフェッチ要求は、ＭＡＢ１３０で利用可能なスロットの閾値レベルよりも多くの利用可能なスロットを有するキャッシュに達するまで、継続してメモリ階層１４５の下方に転送され得る。例えば、Ｌ２キャッシュ１０５が、転送されたプリフェッチ要求を受信する場合には、コントローラ１２５は、ＭＡＢ１３０で利用可能なスロットの閾値レベルよりも多くの利用可能なスロットを有するかどうかを判断できる。有していない場合には、コントローラ１２５は、プリフェッチ要求をＬ３キャッシュに転送できる。メモリ階層１４５内の異なるキャッシュは、利用可能なスロットの異なる閾値数に基づき、プリフェッチ要求を転送できる。
【００２６】
いくつかの実施形態では、キャッシュ１０４〜１０６は、プリフェッチ要求の信頼度に基づき、プリフェッチ要求を転送できる。具体的には、各プリフェッチ要求は、プリフェッチ要求の対象となるデータが閾値時間内にプロセッサコア１１０によって要求されるという予測された可能性を示す信頼値を有することができる。プリフェッチ要求に対する信頼度が閾値を下回っていることに応じて、キャッシュは、プリフェッチ要求をメモリ階層１４５内の次の下位レベルのキャッシュに転送できる。これは、あまり要求されそうにないと予測されるプリフェッチされたデータが、メモリ階層１４５の上位レベルでスペースを消費しないことを確実にする。いくつかの実施形態では、キャッシュ１０４〜１０６は、プリフェッチ要求の信頼度と、ＭＡＢ１３０でのキャッシュの対応するスロットの占有率との組合せに基づき、プリフェッチ要求を転送できる。例えば、キャッシュ１０４は、ＭＡＢ１３０においてそのスロットが５０％を超える占有率であることと、プリフェッチ要求の信頼度が４０％未満であることと、に応じて、プリフェッチ要求を転送でき、また、ＭＡＢが３５％を超える占有率であることと、プリフェッチ要求の信頼度が６０％未満であることと、に応じて、プリフェッチ要求を転送できる。
【００２７】
図２は、いくつかの実施形態によるプリフェッチ要求を表すプリフェッチ情報２００のブロック図である。プリフェッチ情報２００は、次レベルプリフェッチ（ＮＬＰ）フィールド２０２と、信頼フィールド２０４と、アドレスフィールド２０６と、を含む。アドレスフィールド２０６は、プリフェッチ情報２００によって表されるプリフェッチ要求の対象となるデータのメモリアドレスを示す。ＮＬＰフィールド２０２は、プリフェッチ要求がメモリ階層１４５（図１）内の異なるキャッシュに転送されるかどうかを示す。ＮＬＰフィールドは、プリフェッチ要求が転送されているかどうかを判断するため、また、プリフェッチ要求に応答するデータを、メモリ階層１４５内の次の上位レベルのキャッシュに転送するかどうかを判断するために、キャッシュコントローラによって使用される。詳しく説明すると、プリフェッチ要求の受信に応じて、Ｌ２キャッシュ１０５のコントローラ１２５（図１）は、プリフェッチ要求のＮＬＰフィールド２０２が、プリフェッチ要求が転送されていることを示しているかどうかを判断する。転送されていない場合には、Ｌ２キャッシュ１０５は、プリフェッチ要求に応答するデータを、（ストレージアレイ１２６から取得したか、または、メモリ階層１４５内の別のキャッシュから受信したかに関わらず）Ｌ１キャッシュ１０４に提供する。ＮＬＰフィールド２０２が、プリフェッチ要求が転送されたプリフェッチ要求を示している場合には、Ｌ２キャッシュ１０５は、プリフェッチ要求に応答するデータをストレージアレイ１２６に格納する一方で、プリフェッチ要求に応答するデータをＬ１キャッシュ１０４に提供しない。プリフェッチ要求のＮＬＰフィールド２０２は、Ｌ１キャッシュ１０４に割り当てられたスロットが閾値占有率を上回っているという判断に応じて、要求がコントローラ１１５による転送であることを示すために設定される。
【００２８】
プリフェッチ情報２００の信頼フィールド２０４は、関連付けられたプリフェッチ要求の信頼度を示す。信頼フィールド２０４の値は、プリフェッチャ１１２がプリフェッチ要求を発行するときにプリフェッチャ１１２によって設定される。プリフェッチャ１１２は、ロード／ストアユニット１１１によって発行されたデマンドアクセスのパターンに基づき、信頼フィールド２０４の値を設定する。詳しく説明すると、いくつかの実施形態では、プリフェッチャ１１２は、特定のパターンに対する信頼度を、そのパターンの最初の検出に応じて、初期値に設定する。プリフェッチャ１１２は、信頼度を、そのパターンを再度検出する度に、最大値になるまで上昇させる。また、プリフェッチャ１１２は、そのパターンの一部を検出するが、パターンの全部が続いていないことを検出する度に、信頼度を低下させる。例えば、プリフェッチャ１１２は、メモリアドレスＡにおけるデータに対するデマンド要求（「デマンド要求Ａ」と呼ぶ）の直後に、メモリアドレスＢにおけるデータに対するデマンド要求（「デマンド要求Ｂ」と呼ぶ）が続くことを検出できる。それに応じて、プリフェッチャ１１２は、アクセスパターン（パターンＡ−Ｂと呼ぶ）に対する信頼度を００１の初期値に設定する。パターンＡ−Ｂの別のインスタンスの検出に応じて、プリフェッチャ１１２は、信頼度を０１０に上昇させる。プリフェッチャ１１２は、パターンＡ−Ｂのさらなるインスタンスの検出に応じて、信頼度の上昇を継続する。しかし、デマンド要求Ａの検出およびデマンド要求Ａの直後にデマンド要求Ｂが続いていないことの検出に応じて、プリフェッチャ１１２は、信頼度を低下させる。
【００２９】
アクセスパターンに対する信頼度が閾値を上回っていることに応じて、プリフェッチャ１１２は、パターン内の次のデマンド要求の対象となるデータに対するプリフェッチ要求を発行する。従って、前述の例では、パターンＡ−Ｂに対する信頼度が閾値レベルを上回ると、プリフェッチャ１１２は、デマンド要求Ａのインスタンスの検出に応じて、メモリアドレスＢにおけるデータに対するプリフェッチ要求を発行する。プリフェッチ要求に対して、プリフェッチャ１１２は、信頼フィールド２０４を、アクセスパターンと関連付けられた現在の信頼度に設定する。従って、パターンＡ−Ｂに対する信頼度が０１１である場合には、プリフェッチャは、信頼フィールド２０４を値０１１に設定する。
【００３０】
メモリ階層１４５のコントローラは、プリフェッチ要求を転送するかどうかを判断するために、信頼フィールド２０４の値を使用できる。詳しく説明すると、Ｌ１キャッシュ１０４におけるコントローラ１１５は、０１１未満の信頼値と関連付けられた何れのプリフェッチ要求もＬ２キャッシュ１０５に転送されるというポリシーを実装できる。その結果、信頼フィールド２０４が０１１未満の値を有するプリフェッチ要求の受信に応じて、コントローラ１１５は、プリフェッチ要求が転送されていることを示すために、プリフェッチ情報２００のＮＬＰフィールド２０２を設定し、そのプリフェッチ要求をＬ２キャッシュ１０５におけるコントローラ１２５に提供する。
【００３１】
図３は、いくつかの実施形態による図１のプロセッサ１０２のメモリ階層１４５におけるプリフェッチ要求の転送を示すタイムライン３００である。タイムライン３００は、イベントのセットおよび結果として生じる、ＭＡＢ１３０においてＬ１キャッシュ１０４に割り当てられたスロットのセット３１５の内容を示す。図１の例のため、Ｌ１キャッシュ１０４のコントローラ１１５は、セット３１５の利用可能なスロット数が２未満である場合にプリフェッチ要求がＬ２キャッシュ１０５に転送されるというポリシーを実装すると仮定する。
【００３２】
時間３０１では、コントローラ１１５は、「デマンド１」と指定されたデマンド要求をロード／ストアユニット１１１から受信する。それに応じて、コントローラ１１５は、キャッシュミスを検出し、これにより、デマンド１を表す情報をＭＡＢ１３０におけるスロットのセット３１５に格納する。時間３０２では、コントローラ１１５は、「プリフェッチ１」と指定されたプリフェッチ要求をプリフェッチャ１１２から受信し、プリフェッチ１がキャッシュミスとなると判断する。キャッシュミスに応じて、コントローラ１１５は、セット３１５のスロット数が２に等しいと判断し、これにより、プリフェッチ１を表す情報をセット３１５で格納する。
【００３３】
時間３０３では、コントローラ１１５は、「プリフェッチ２」と指定されたプリフェッチ要求をプリフェッチャ１１２から受信し、プリフェッチ２がキャッシュミスとなると判断する。キャッシュミスに応じて、コントローラ１１５は、セット３１５のスロット数が２未満であると判断する。それに応じて、コントローラ１１５は、プリフェッチ２に対するＮＬＰフィールド（図２）が転送された要求を示すように設定することにより、プリフェッチ２を転送して、プリフェッチ２をＬ２キャッシュ１０５に提供する。時間３０４では、コントローラ１１５は、「デマンド２」と指定されたデマンド要求をロード／ストアユニット１１１から受信する。それに応じて、コントローラ１１５は、キャッシュミスを検出し、これにより、デマンド２を表す情報をスロットのセット３１５に格納する。このため、プリフェッチ２が転送されていなければ、セット３１５の最後のスロットはプリフェッチ２によって満たされ、これにより、ロード／ストアユニット１１１にデマンド２を停止させるか、または、プリフェッチ要求のプリフェッチ１もしくはプリフェッチ２をキャンセルさせるかの何れかとなるであろう。それに応じて、プリフェッチ２を転送することにより、セット３１５で、デマンド２のためのスペースが利用可能となり、停止を防いで、プリフェッチ２に応答するデータがメモリ階層内でプロセッサ１０２に近づけられる。
【００３４】
時間３０５では、コントローラ１１５は、デマンド１およびプリフェッチ１の要求の対象となるデータがストレージアレイ１１６で格納されているという点において、デマンド１およびプリフェッチ１が満足されていると判断する。それに応じて、コントローラ１１５は、デマンド１およびプリフェッチ１からの情報をスロットのセット３１５から除去して、これらの２つのスロットを、後続のデマンド要求またはプリフェッチ要求に対して利用可能にする。時間３０６では、コントローラ１１５は、「プリフェッチ３」と指定されたプリフェッチ要求をプリフェッチャ１１２から受信して、プリフェッチ３がキャッシュミスとなると判断する。キャッシュミスに応じて、コントローラ１１５は、セット３１５のスロット数が２であると判断し、これにより、プリフェッチ３を表す情報を格納するためにセット３１５で利用可能なスペースが存在する。しかし、コントローラ１１５は、プリフェッチ３に対する信頼度が閾値を下回っていると判断する。その結果、コントローラ１１５は、プリフェッチ３に対するＮＬＰフィールドを、転送された要求を示すように設定することによって、プリフェッチ３を転送し、プリフェッチ２をＬ２キャッシュ１０５に提供する。このため、コントローラ１１５は、セット３１５で利用可能なスロットを、低信頼値を有するプリフェッチ要求で消費しない。したがって、スロットは、後続のデマンド要求またはプリフェッチ要求に対して利用可能であり、このことは、処理効率をさらに向上させると予測される。
【００３５】
図４は、いくつかの実施形態による、ＭＡＢの占有率に基づいて、メモリ階層においてプリフェッチ要求を転送する方法４００のフロー図である。説明を容易にするため、方法４００は、図１の電子装置１００での実施態様例に関して説明される。ブロック４０２では、Ｌ１キャッシュ１０４におけるコントローラ１１５は、プリフェッチ要求を受信する。ブロック４０４では、コントローラ１１５は、ＭＡＢ１３０においてＬ１キャッシュ１０４に割り当てられたスロットの占有率がＬ１キャッシュ１０４に対する閾値を上回っているかどうかを判断する。閾値を上回っていない場合には、方法フローは、ブロック４０６に進み、コントローラ１１５は、プリフェッチ要求を表す情報を、ＭＡＢ１３０で利用可能なスロットに格納する。
【００３６】
ブロック４０４に戻ると、ＭＡＢ１３０においてＬ１キャッシュ１０４に割り当てられたスロットの占有率がＬ１キャッシュ１０４に対する閾値を上回っている場合には、方法フローはブロック４０８に進み、そこで、コントローラ１１５は、メモリ階層１４５内の最下位のキャッシュであるかどうかを判断する。最下位のキャッシュである場合には、方法フローはブロック４１２に進み、コントローラは、プリフェッチャ１１２に対して、プリフェッチ要求が満足できないことを示す。ブロック４０８に戻ると、キャッシュＮまで達していない場合には、方法フローはブロック４１０に進み、コントローラ１１５は、プリフェッチ要求をメモリ階層１４５内の次の下位レベルのキャッシュ（この場合、Ｌ２キャッシュ１０５）に転送する。方法フローはブロック４０４に戻り、メモリ階層内の次の下位レベルのキャッシュは、ＭＡＢ１３０において割り当てられたスロットの占有率が対応する閾値を上回っているかどうかを判断する。
【００３７】
その結果、方法４００では、プリフェッチ要求は、ＭＡＢ１３０において割り当てられたスロットの占有率が対応する閾値を上回らないキャッシュに達するまで、または、ブロック４１２においてプリフェッチ要求が満足できないことを示すまで、継続して下位レベルのキャッシュに転送される。ＭＡＢ１３０において割り当てられたスロットの占有率が対応する閾値を上回らないキャッシュにプリフェッチ要求が達すると、方法４００のフローは、ブロック４０６に到達して、プリフェッチ要求を表す情報が、キャッシュに割り当てられたＭＡＢ１３０のスロットに格納される。加えて、キャッシュのコントローラは、プリフェッチ要求の対象となるデータが対応するストレージアレイに格納されるが、メモリ階層１４５内の次の上位レベルのキャッシュに提供されないことを確実にする。
【００３８】
図５は、いくつかの実施形態による、プリフェッチ信頼度に基づいて、図１のプロセッサのメモリ階層においてプリフェッチ要求を転送する方法５００のフロー図である。説明を容易にするため、方法５００は、図１の電子装置１００での実施態様例に関して説明される。ブロック５０２では、Ｌ１キャッシュ１０４におけるコントローラ１１５は、プリフェッチ要求を受信する。ブロック５０４では、コントローラ１１５は、プリフェッチ要求の信頼度がＬ１キャッシュ１０４に対する閾値を下回っているかどうかを判断する。閾値を下回っていない場合には、方法フローはブロック５０６に進み、コントローラ１１５は、プリフェッチ要求を表す情報を、ＭＡＢ１３０において利用可能なスロットに格納する。
【００３９】
ブロック５０４に戻ると、プリフェッチ要求の信頼度がＬ１キャッシュ１０４に対する閾値より高いとコントローラ１１５が判断した場合には、方法フローはブロック５０８に進み、そこで、コントローラ１１５は、メモリ階層１４５内の最下位のキャッシュであるかどうかを判断する。最下位のキャッシュである場合には、方法フローはブロック５１２に進み、コントローラは、プリフェッチャ１１２に対して、プリフェッチ要求が満足できないことを示す。ブロック５０８に戻り、キャッシュＮまで達していない場合には、方法フローはブロック５１０に進み、コントローラ１１５は、プリフェッチ要求を、メモリ階層１４５内の次の下位レベルのキャッシュ（この場合、Ｌ２キャッシュ１０５）に転送する。方法フローはブロック５０４に戻り、メモリ階層内の次の下位レベルのキャッシュは、プリフェッチ要求の信頼度が対応する閾値より低いかどうかを判断する。
【００４０】
その結果、方法５００では、プリフェッチ要求は、プリフェッチ要求の信頼度が対応する閾値を上回るキャッシュに達するまで、または、方法５００がブロック５１２においてプリフェッチ要求が満足できないことを示すまで、継続して下位レベルのキャッシュに転送される。信頼度が対応する閾値を上回らないキャッシュにプリフェッチ要求が達すると、方法５００のフローはブロック５０６に到達して、プリフェッチ要求を表す情報は、キャッシュに割り当てられたＭＡＢ１３０のスロットに格納される。加えて、キャッシュのコントローラは、プリフェッチ要求の対象となるデータが対応するストレージアレイで格納されるが、メモリ階層１４５内の次の上位レベルのキャッシュに提供されないことを確実にする。図４および図５で示す方法が組み合わされてもよく、いくつかのプリフェッチ要求が、ＭＡＢ１３０においてキャッシュの割り当てられたスロットの占有率に基づいて転送され、他は、それらのプリフェッチ信頼度に基づいて転送されるようになることが理解されるであろう。
【００４１】
いくつかの実施形態では、上述した機能のうち少なくともいくつかが、コンピュータ可読媒体に有形的に格納された１つ以上のソフトウェアプログラムを実行する１つ以上のプロセッサによって実装されてもよく、それにより、１つ以上のソフトウェアプログラムが、実行時に、上述した処理システムの１つ以上の機能を実行するために、１つ以上のプロセッサを操作する命令を含む。さらに、いくつかの実施形態では、上述したシリアルデータインタフェースが、１つ以上の集積回路（ＩＣ）デバイス（集積回路チップとも呼ばれる）で実装される。電子設計自動化（ＥＤＡ）およびコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが、これらのＩＣデバイスの設計および製造において使用され得る。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計または適合するプロセスの少なくとも一部を実行するように、１つ以上のＩＣデバイスの回路を表すコードについて動作するコンピュータシステムを操作するために、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、または、命令とデータの組合せを含み得る。設計ツールまたは製造ツールを表すソフトウェア命令は、通常、コンピュータシステムがアクセス可能なコンピュータ可読記憶媒体内に格納される。同様に、ＩＣデバイスの設計または製造の１つ以上のフェーズを表すコードが、同じコンピュータ可読記憶媒体または異なるコンピュータ可読記憶媒体に格納されて、そこからアクセスされ得る。
【００４２】
コンピュータ可読記憶媒体は、使用中に、命令および／またはデータをコンピュータシステムに提供するために、コンピュータシステムによってアクセス可能な任意の記憶媒体または記憶媒体の組合せを含み得る。かかる記憶媒体は、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）もしくはブルーレイディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープもしくは磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）もしくはキャッシュ）、不揮発性メモリ（例えば、読取り専用メモリ（ＲＯＭ）もしくはフラッシュメモリ）、または、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体を含み得るが、それらに限定されない。コンピュータ可読記憶媒体は、コンピューティングシステムに組み込まれ（例えば、システムＲＡＭもしくはＲＯＭ）、コンピューティングシステムに固定して取り付けられ（例えば、磁気ハードドライブ）、コンピューティングシステムに取り外し可能に取り付けられ（例えば、光ディスクもしくはユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、または、有線もしくは無線ネットワークを経由してコンピュータシステムに結合され得る（例えば、ネットワークアクセス可能記憶（ＮＡＳ））。
【００４３】
図６は、いくつかの実施形態による、１つ以上の態様を実装するＩＣデバイスを設計および製造するための方法例６００を示すフロー図である。上述したように、以下のプロセスの各々に対して生成されたコードが、対応する設計ツールまたは製造ツールによるアクセスおよび使用のためにコンピュータ可読記憶媒体に格納され、または別の方法で具現化される。
【００４４】
ブロック６０２では、ＩＣデバイスの機能仕様が生成される。機能仕様（マイクロアーキテクチャ仕様（ＭＡＳ）と呼ばれることが多い）は、Ｃ、Ｃ＋＋、ＳｙｓｔｅｍＣ、ＳｉｍｕｌｉｎｋもしくはＭＡＴＬＡＢを含む任意の様々なプログラミング言語またはモデリング言語によって表され得る。
【００４５】
ブロック６０４では、ＩＣデバイスのハードウェアを表すハードウェア記述コードを生成するために、機能仕様が使用される。いくつかの実施形態では、ハードウェア記述コードは、少なくとも１つのハードウェア記述言語（ＨＤＬ）を使用して表され、ＨＤＬは、様々なコンピュータ言語、仕様言語、または、ＩＣデバイスの回路の形式記述および設計のためのモデリング言語の何れかを含む。生成されたＨＤＬコードは、通常、ＩＣデバイスの回路の動作、回路の設計および構成、ならびに、シミュレーションを通して、ＩＣデバイスの正常動作を検証するためのテストを表す。ＨＤＬの例は、アナログＨＤＬ（ＡＨＤＬ）、Ｖｅｒｉｌｏｇ  ＨＤＬ、ＳｙｓｔｅｍＶｅｒｉｌｏｇ  ＨＤＬおよびＶＨＤＬを含む。同期デジタル回路を実装するＩＣデバイスに対して、ハードウェア記述子コードは、同期デジタル回路の動作の抽象的表現を提供するために、レジスタ転送レベル（ＲＴＬ）コードを含み得る。他のタイプの回路に対して、ハードウェア記述子コードは、回路の動作の抽象的表現を提供するために、動作レベルコードを含み得る。ハードウェア記述コードで表されたＨＤＬモデルは、通常、設計検証に合格するために、１回以上のラウンドのシミュレーションおよびデバッグを受ける。
【００４６】
ハードウェア記述コードによって表された設計の検証後、ブロック６０６では、ＩＣデバイスの回路の初期の物理的実装を表しまたは定義するコードを生成するハードウェア記述コードを合成するために、合成ツールが使用される。いくつかの実施形態では、合成ツールは、回路装置インスタンス（例えば、ゲート、トランジスタ、抵抗、コンデンサ、インダクタ、ダイオードなど）、および、回路装置インスタンス間のネット（すなわち接続）を含む、１つ以上のネットリストを生成する。代替として、ネットリストの全部または一部は、合成ツールを使用することなく、手動で生成できる。ハードウェア記述コードと同様に、ネットリストは、１つ以上のネットリストの最終セットが生成される前に、１つ以上のテストおよび検証プロセスを受け得る。
【００４７】
代替として、ＩＣデバイスの回路の回路図を描くために回路図エディタツールを使用でき、次いで、結果として生じる回路図をキャプチャして、回路図の構成要素および接続を表す１つ以上のネットリストを（コンピュータ可読媒体上に格納して）生成するために、回路図キャプチャツールを使用し得る。キャプチャされた回路図は、次いで、テストおよび検証のために１回以上のラウンドのシミュレーションを受け得る。
【００４８】
ブロック６０８では、１つ以上のＥＤＡツールは、ブロック６０６で作成されたネットリストを使用して、ＩＣデバイスの回路の物理的な配置を表すコードを生成する。このプロセスは、例えば、ＩＣデバイスの回路の各要素の位置を決定または固定するためにネットリストを使用する配置ツールを含むことができる。さらに、ルーティングツールは、ネットリストに従って回路要素を接続するために必要なワイヤーを追加および配線するために、配置プロセス上に組み立てる。結果として生じるコードは、ＩＣデバイスの３次元モデルを表す。コードは、例えば、Ｇｒａｐｈｉｃ  Ｄａｔａｂａｓｅ  Ｓｙｓｔｅｍ  ＩＩ（ＧＤＳＩＩ）フォーマットなどのデータベースファイルフォーマットで表され得る。このフォーマットのデータは、通常、幾何学形状、テキストラベルおよび階層形態での回路配置に関する他の情報を表す。
【００４９】
ブロック６１０では、物理的配置コード（例えば、ＧＤＳＩＩコード）が製造施設に提供され、製造施設では、ＩＣデバイスを製造するために、その物理的配置コードを使用して（例えば、マスクワークを通して）、製造施設の製造ツールを構成または別の方法で適合する。すなわち、物理的配置コードは、１つ以上のコンピュータシステム内にプログラム化されてもよく、そのコンピュータシステムは、次いで、全体または一部において、製造施設のツールの動作、または、そのツール内で実行される製造作業を制御し得る。
【００５０】
いくつかの実施形態では、上述した技術のある態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装され得る。ソフトウェアは、実行可能命令の１つ以上のセットを含み、それらの実行可能命令は、１つ以上のプロセッサによって実行される場合に、上述した技術の１つ以上の態様を実行するために、１つ以上のプロセッサを操作する。ソフトウェアは、処理システムがアクセス可能なコンピュータ可読記憶媒体上に格納され、または、別の方法で有形的に具現化されて、対応する態様を実行するための、命令および命令の実行中に利用される特定のデータを含むことができる。
【００５１】
本明細書で開示するように、いくつかの実施形態では、方法は、第１のキャッシュでのキャッシュミスを示すバッファにおけるスロットの第１のセットでアドレスを格納することと、スロットの第１のセットの占有率が第１の閾値を上回っているという判断に応じて、第１のキャッシュを対象とした第１のプリフェッチ要求を第２のキャッシュに転送することと、を含む。いくつかの実施態様では、スロットの第１のセットの占有率を判断することは、保留中のメモリアクセス要求と関連付けられたアドレスを格納するスロットの第１のセットでのスロット数を判断することを含む。いくつかの実施態様では、スロットの第１のセットの占有率を判断することは、プリフェッチ要求を格納するスロットの第１のセットのスロット数を判断することを含む。いくつかの実施態様では、スロットの第１のセットの占有率を判断することは、プリフェッチ要求を格納するスロットの第１のセットのスロット数に対する、デマンド要求を格納するスロットの第１のセットのスロット数の比率を判断することを含む。いくつかの実施態様では、方法は、第２のキャッシュでのキャッシュミスに応じてバッファにおけるスロットの第２のセットでアドレスを格納することを含む。いくつかの実施態様では、第１のプリフェッチ要求を第２のキャッシュに転送することは、第１のプリフェッチ要求と関連付けられたアドレスをスロットの第２のセットに格納することを含む。いくつかの実施態様では、方法は、スロットの第２のセットの占有率が第２の閾値を上回っているという判断に応じて、第１のプリフェッチ要求を第３のキャッシュに転送することを含む。いくつかの実施態様では、第１の閾値は第２の閾値と異なる。いくつかの実施態様では、方法は、第１のキャッシュを対象とした第２のプリフェッチ要求と関連付けられた信頼度が第２の閾値を下回っているという判断に応じて、第２のプリフェッチ要求を第１のキャッシュから第２のキャッシュに転送することを含む。
【００５２】
いくつかの実施形態では、方法は、第１のキャッシュを対象とした第１のプリフェッチ要求と関連付けられた第１の信頼度が第１の閾値を下回っているという判断に応じて、第１のプリフェッチ要求を第１のキャッシュから第２のキャッシュに転送することを含む。いくつかの実施態様では、方法は、第１の信頼度が第２の閾値を下回っているという判断に応じて、第１のプリフェッチ要求を第２のキャッシュから第３のキャッシュに転送することを含む。いくつかの実施態様では、第１のプリフェッチ要求を第２のキャッシュに転送することは、第１のプリフェッチ要求を、第１のキャッシュでのキャッシュミスに応じて、および、第２のキャッシュでのキャッシュミスに応じてアドレスを格納するバッファのスロットの第１のセットに格納することを含み、スロットの第１のセットは第２のキャッシュに割り当てられている。いくつかの実施態様では、方法は、バッファのスロットの第２のセットの利用可能なスロット数が第２の閾値を下回っているという判断に応じて、第１のキャッシュを対象とした第２のプリフェッチ要求を第２のキャッシュに転送することを含む。
【００５３】
いくつかの実施態様では、プロセッサは、アクセス要求を発行するためのプロセッサコアと、第１のキャッシュと、第２のキャッシュと、第１のキャッシュに対するキャッシュミスに基づき第１のキャッシュに割り当てられたスロットの第１のセットでアドレスを格納するためのバッファであって、キャッシュミスがアクセス要求に起因するバッファと、プリフェッチ要求を第１のキャッシュに発行するためのプリフェッチャと、バッファにおけるスロットの第１のセットの占有率が第１の閾値を上回っているという判断に応じて、第１のプリフェッチ要求を第１のキャッシュから第２のキャッシュに転送するためのコントローラと、を含む。いくつかの実施態様では、コントローラは、スロットの第１のセットのうち利用不可なスロット数を判断することによって、スロットの第１のセットの占有率を判断する。いくつかの実施態様では、コントローラは、プリフェッチ要求を格納するスロットの第１のセットのスロット数を判断することによって、スロットの第１のセットの占有率を判断する。いくつかの実施態様では、コントローラは、プリフェッチ要求を格納するスロットの第１のセットのスロット数に対するデマンド要求を格納するスロットの第１のセットのスロット数の比率を判断することによって、スロットの第１のセットの占有率を判断する。いくつかの実施態様では、バッファは、第２のキャッシュでのキャッシュミスの判断に応じて、スロットの第２のセットでアドレスを格納するためのものである。いくつかの実施態様では、コントローラは、第１のプリフェッチ要求をスロットの第２のセットに格納することによって、第１のプリフェッチ要求を第２のキャッシュに転送するためのものである。いくつかの実施態様では、プロセッサは第３のキャッシュを含み、コントローラは、スロットの第２のセットの占有率が第２の閾値を上回っているという判断に応じて、第１のプリフェッチ要求を第３のキャッシュに転送するためのものである。いくつかの実施態様では、第１の閾値は第２の閾値と異なる。いくつかの実施態様では、プリフェッチャは、第２のプリフェッチ要求に対する信頼度を判断するためのものであり、コントローラは、信頼度が第２の閾値を下回っているという判断に応じて、第２のプリフェッチ要求を第１のキャッシュから第２のキャッシュに転送するためのものである。
【００５４】
いくつかの実施形態では、コンピュータ可読媒体は、プロセッサの少なくとも一部を製造するためのプロセスの一部を実行するための少なくとも１つのコンピュータシステムを適合するためのコードを格納し、そのプロセッサは、アクセス要求を発行するためのプロセッサコアと、第１のキャッシュと、第２のキャッシュと、アクセス要求に応じて、第１のキャッシュに対するキャッシュミスに基づき第１のキャッシュに割り当てられたスロットの第１のセットでアドレスを格納するためのバッファと、プリフェッチ要求を第１のキャッシュに対して発行するためのプリフェッチャと、バッファにおけるスロットの第１のセットの占有率が第１の閾値を上回っているという判断に応じて、第１のプリフェッチ要求を第１のキャッシュから第２のキャッシュに転送するためのコントローラと、を含む。いくつかの実施態様では、プリフェッチャは、第２のプリフェッチ要求に対する信頼度を判断するためのものであり、コントローラは、信頼度が第２の閾値を下回っているという判断に応じて、第２のプリフェッチ要求を第１のキャッシュから第２のキャッシュに転送するためのものである。いくつかの実施態様では、コントローラは、プリフェッチ要求を格納するスロットの第１のセットのスロット数に対するデマンド要求を格納するスロットの第１のセットのスロット数の比率を判断することによって、スロットの第１のセットの占有率を判断する。
【００５５】
概要説明において上述した作業または要素の全てが必要とされるのではなく、特定の作業または装置の一部は必要でない可能性があり、説明したものに加えて、１つ以上のさらなる作業が実行されてもよいし、要素が含まれてもよいことに留意されたい。さらに、作業がリストされた順序は、必ずしも、それらが実行される順序ではない。
【００５６】
また、概念が特定の実施形態に関して説明されている。しかし、当業者は、様々な修正および変更が、以下の請求項で明記されるように、本開示の範囲から逸脱することなく、行われ得ることを理解する。それに応じて、本明細書および図面は、制限的な意味ではなく、例示と見なされるべきであり、全てのかかる修正は、本開示の範囲に含まれることを意図する。
【００５７】
利益、他の利点および問題に対する解決策が特定の実施形態に関して前述されている。しかし、利益、利点、問題に対する解決策、および、任意の利益、利点もしくは解決策を生じさせ、または、より顕著にさせ得る任意の特徴は、一部または全部の請求項の中で重大、必須または本質的な特徴として解釈されるべきでない。
【図１】
2016509272.tif 000003
【図２】
2016509272.tif 000004
【図３】
2016509272.tif 000005
【図４】
2016509272.tif 000006
【図５】
2016509272.tif 000007
【図６】
2016509272.tif 000008
【国際調査報告】
2016509272.tif 000009
2016509272.tif 000010