(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-12
(54)【発明の名称】プロセッサベースのデバイスにおけるメモリブロックアクセス頻度の追跡
(51)【国際特許分類】
G06F 12/0862 20160101AFI20240905BHJP
G06F 12/1027 20160101ALI20240905BHJP
【FI】
G06F12/0862 105
G06F12/1027
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024518970
(86)(22)【出願日】2022-07-22
(85)【翻訳文提出日】2024-03-27
(86)【国際出願番号】 US2022037967
(87)【国際公開番号】W WO2023055463
(87)【国際公開日】2023-04-06
(32)【優先日】2021-09-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100229448
【氏名又は名称】中槇 利明
(72)【発明者】
【氏名】ラッシング,アンドリュー ジョセフ
(72)【発明者】
【氏名】シュパイヤー,トーマス フィリップ
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205JJ13
5B205MM01
5B205MM51
5B205UX05
(57)【要約】
本明細書において、プロセッサベースのデバイスにおけるメモリブロックアクセス頻度の追跡を開示する。ある1つの例示的な実施形態において、プロセッサベースのデバイスは、処理要素(PE)を提供し、その処理要素(PE)は、メモリブロックへのアクセスを追跡するためのアクセス計数テーブルを含むように構成される。アクセス計数テーブルは、複数のアクセス計数値を含むパックテーブルであり、それらの複数のアクセス計数値の各々は、複数のメモリブロックのうちのある1つのメモリブロックに対応する。所定のメモリブロックに向けられるメモリアクセス操作(すなわち、メモリロード操作、メモリ格納操作、アトミック増分操作、及びセット操作等のデータ側操作、或いは、コードフェッチ操作等の命令側操作)を検出すると、PEは、メモリブロックに対応するアクセス計数値を増加させる。その次に、(例えば、PEにおいて実行されるプロセスによって)アクセス計数値にアクセスしてもよく、メモリブロックについてのアクセス頻度を決定するのにアクセス計数値を使用してもよい。
【特許請求の範囲】
【請求項1】
プロセッサベースのデバイスであって、当該プロセッサベースのデバイスは、
アクセス計数テーブルを含む処理要素(PE)であって、前記アクセス計数テーブルは、複数のアクセス計数値を含むパックテーブルであり、前記複数のアクセス計数値の各々は、複数のメモリブロックのうちのメモリブロックに対応し、
前記PEは、
前記複数のメモリブロックのうちのメモリブロックに向けられるメモリアクセス操作を検出し、そして、
前記メモリアクセス操作の検出に応答して、前記複数のアクセス計数値のうちのアクセス計数値を増加させる、ように構成され、前記アクセス計数値は、前記メモリブロックに対応する、処理要素(PE)を含む、
プロセッサベースのデバイス。
【請求項2】
第1のメモリデバイス及び第2のメモリデバイスをさらに含み、
当該プロセッサベースのデバイスは、アカウンティング間隔がトリガされることに応答して、
前記アクセス計数値に基づいて、前記メモリブロックのアクセス頻度を決定し、そして、
前記アクセス頻度に基づいて、前記第1のメモリデバイス及び前記第2のメモリデバイスのうちの1つへと前記メモリブロックを転送する、ように構成される、請求項1に記載のプロセッサベースのデバイス。
【請求項3】
前記PEは、アクセス追跡テーブルをさらに含み、前記アクセス追跡テーブルは、複数のアクセス追跡インジケータを含むパックテーブルであり、前記複数のアクセス追跡インジケータの各々は、前記複数のメモリブロックのうちのメモリブロックに対応し、
前記PEは、前記メモリアクセス操作が、キャッシュミス及び変換索引バッファ(TLB)ミスのうちの少なくとも1つにつながるということを検出するように構成されることによって、前記複数のメモリブロックのうちの前記メモリブロックに向けられる前記メモリアクセス操作を検出するように構成され、
前記PEは、さらに、
キャッシュヒット又はTLBヒットにつながるとともに前記メモリブロックに向けられる前記メモリアクセス操作を検出し、そして、
前記キャッシュヒット又は前記TLBヒットにつながるとともに前記メモリブロックに向けられる前記メモリアクセス操作の検出に応答して、前記メモリブロックに対応するアクセス追跡インジケータを設定する、
ように構成され、
当該プロセッサベースのデバイスは、アカウンティング間隔がトリガされることに応答して、前記メモリブロックに対応する前記アクセス追跡インジケータをクリアするように構成される、請求項1に記載のプロセッサベースのデバイス。
【請求項4】
前記アクセス追跡テーブルは、複数のアクセス追跡インジケータをさらに含み、前記複数のアクセス追跡インジケータの各々は、前記複数のメモリブロックのうちのメモリブロックに対応し、
当該プロセッサベースのデバイスは、さらに、前記アカウンティング間隔がトリガされることに応答して、前記メモリブロックに対応するアクセス追跡インジケータを設定するように構成される、請求項3に記載のプロセッサベースのデバイス。
【請求項5】
前記アクセス追跡テーブルは、複数のアクセスクリアインジケータをさらに含み、前記複数のアクセスクリアインジケータの各々は、前記複数のメモリブロックのうちのメモリブロックに対応し、
当該プロセッサベースのデバイスは、さらに、後続のアカウンティング間隔がトリガされることに応答して、前記メモリブロックに対応するアクセスクリアインジケータをクリアするように構成される、請求項3に記載のプロセッサベースのデバイス。
【請求項6】
第1のメモリデバイス及び第2のメモリデバイスをさらに含み、
当該プロセッサベースのデバイスは、さらに、前記アカウンティング間隔がトリガされることに応答して、
前記アクセス計数値と前記アクセス追跡インジケータ及びアクセスクリアインジケータのうちの1つ又は複数とに基づいて、前記メモリブロックのアクセス頻度を決定し、そして、
前記アクセス頻度に基づいて、前記第1のメモリデバイス及び前記第2のメモリデバイスのうちの1つへと前記メモリブロックを転送する、
ように構成される、請求項3に記載のプロセッサベースのデバイス。
【請求項7】
当該プロセッサベースのデバイスは、
前記アクセス計数値がゼロ(0)に等しいということを決定し、
前記アクセス追跡インジケータが設定されていないということを決定し、そして、
前記アクセス計数値及び前記アクセス追跡インジケータに基づいて、前記メモリブロックの前記アクセス頻度がゼロ(0)であることを決定する、
ように構成されることによって、前記アクセス計数値と前記アクセス追跡インジケータ及び前記アクセスクリアインジケータのうちの1つ又は複数とに基づいて、前記メモリブロックの前記アクセス頻度を決定するように構成される、請求項6に記載のプロセッサベースのデバイス。
【請求項8】
当該プロセッサベースのデバイスは、
前記アクセス計数値がゼロ(0)であるということを決定し、
前記アクセス追跡インジケータが設定されているということを決定し、
前記アクセスクリアインジケータが設定されているということを決定し、そして、
前記アクセス計数値、前記アクセス追跡インジケータ、及び前記アクセスクリアインジケータに基づいて、前記メモリブロックの前記アクセス頻度がゼロ(0)よりも大きいことを決定する、
ように構成されることによって、前記アクセス計数値と前記アクセス追跡インジケータ及び前記アクセスクリアインジケータのうちの1つ又は複数とに基づいて、前記メモリブロックの前記アクセス頻度を決定するように構成される、請求項6に記載のプロセッサベースのデバイス。
【請求項9】
当該プロセッサベースのデバイスは、さらに、アカウンティング間隔がトリガされることに応答して、前記複数のアクセス計数値をリセットするように構成される、請求項1に記載のプロセッサベースのデバイス。
【請求項10】
方法であって、当該方法は、
プロセッサベースのデバイスの処理要素(PE)によって、複数のメモリブロックのうちのメモリブロックに向けられるメモリアクセス操作を検出するステップと、
前記メモリアクセス操作の検出に応答して、アクセス計数テーブルの複数のアクセス計数値のうちのアクセス計数値を増加させるステップであって、前記アクセス計数テーブルは、パックテーブルであり、前記アクセス計数値は、前記メモリブロックに対応する、ステップと、を含む、
方法。
【請求項11】
アカウンティング間隔がトリガされることに応答して、
前記アクセス計数値に基づいて、前記メモリブロックのアクセス頻度を決定するステップと、
前記アクセス頻度に基づいて、第1のメモリデバイス及び第2のメモリデバイスのうちの1つへと前記メモリブロックを転送するステップと、をさらに含む、請求項10に記載の方法。
【請求項12】
キャッシュヒット又は変換索引バッファ(TLB)ヒットにつながるとともに前記メモリブロックに向けられるメモリアクセス操作を検出するステップと、
前記キャッシュヒット又は前記TLBヒットにつながるとともに前記メモリブロックに向けられる前記メモリアクセス操作の検出に応答して、アクセス追跡テーブルの複数のアクセス追跡インジケータのうちのアクセス追跡インジケータを設定するステップであって、前記アクセス追跡テーブルは、パックテーブルであり、前記アクセス追跡インジケータは、前記メモリブロックに対応する、ステップと、
アカウンティング間隔がトリガされることに応答して、前記メモリブロックに対応する前記アクセス追跡インジケータをクリアするステップと、をさらに含み、
前記複数のメモリブロックのうちの前記メモリブロックに向けられる前記メモリアクセス操作を検出するステップは、キャッシュミス及びTLBミスのうちの少なくとも1つにつながるメモリアクセス操作を検出するステップを含む、請求項10に記載の方法。
【請求項13】
前記アカウンティング間隔がトリガされることに応答して、前記アクセス追跡テーブルの複数のアクセスクリアインジケータのうちのアクセスクリアインジケータを設定するステップであって、前記アクセスクリアインジケータは、前記メモリブロックに対応する、ステップをさらに含む、請求項12に記載の方法。
【請求項14】
後続のアカウンティング間隔がトリガされることに応答して、前記アクセス追跡テーブルの複数のアクセスクリアインジケータのうちのアクセスクリアインジケータをクリアするステップであって、前記アクセスクリアインジケータは、前記メモリブロックに対応する、ステップをさらに含む、請求項12に記載の方法。
【請求項15】
前記アカウンティング間隔がトリガされることに応答して、
前記アクセス計数値と前記アクセス追跡インジケータ及びアクセスクリアインジケータのうちの1つ又は複数とに基づいて、前記メモリブロックのアクセス頻度を決定するステップと、
前記アクセス頻度に基づいて、第1のメモリデバイス及び第2のメモリデバイスのうちの1つへと前記メモリブロックを転送するステップと、をさらに含む、請求項12に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の技術は、プロセッサベースのデバイス(processor-based devices)におけるメモリ管理(memory management)に関し、より具体的には、メモリブロックアクセスの頻度(frequency of memory block accesses)の決定に関する。
【背景技術】
【0002】
プロセッサベースのデバイスのうちのメモリデバイスが提供するメモリは、複数のメモリブロックに細分割されてもよい(may be subdivided)。本明細書の中で使用されるときに、"メモリブロック(memory block)"の語は、プロセッサベースのデバイス(processor-based device)のうちのメモリデバイス(memory device)が提供するメモリの任意の連続的な範囲(contiguous range)を指す。複数の実施形態のうちのいくつかにおけるメモリブロックは、メモリページ(memory page)と整列してもよく、そのメモリページは、仮想メモリアドレス(virtual memory address)(又は、中間物理メモリアドレス(intermediate physical memory address))からメモリの連続的な範囲の中の物理アドレスへのアドレス変換(address translation)と関連するメモリの連続的な範囲である。複数の実施形態のうちのいくつかにしたがったメモリブロックは、メモリページ(memory page)の厳密なサブセット(strict subset)を含んでもよく、又は、その逆に、メモリページの厳密なサブセット(strict subset)は、メモリブロックを含んでもよい。
【0003】
待ち時間(latencies)又は帯域幅が異なる複数のヘテロジニアスメモリデバイス(heterogeneous memory devices)を採用するプロセッサベースのデバイスは、いずれのメモリブロックが時間の経過とともにより高い頻度で(more frequently)又はより低い頻度で(less frequently)アクセスされるかを理解することが望ましい状況に遭遇する場合がある。例えば、プロセッサベースのデバイスは、そのメモリを有しているプロセッサベースのデバイスが本来的に(natively)通信することが可能であるダブルデータレート(Double Data Rate (DDR))ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory (DRAM))メモリデバイスの形態の待ち時間が小さな(すなわち、より高速であるメモリアクセス時間を有する)メモリ、及び、計算エクスプレスリンク(Compute Express Link (CXL))等の媒体抽象化インターフェイス(media-abstracted interface)又はトランザクションのインターフェイス(transactional interface)の背後に存在するメモリデバイスの形態の待ち時間が大きな(すなわち、より低速であるメモリアクセス時間を有する)メモリの双方を提供してもよい。ある1つの潜在的な使用事例の場合には、そのようなプロセッサベースのデバイスによって実行されるハイパーバイザ(a hypervisor executing on such a processor-based device)は、ゲスト仮想マシン(VM)メモリページ(guest virtual machine (VM) memory pages)にアクセスする頻度に基づいて、そのゲストVMメモリページを待ち時間が小さなメモリに動的に割り当てるのか又は待ち時間が大きなメモリに動的に割り当てるのかを決定する必要がある場合がある。同様に、メモリが超過アクセスされる(oversubscribed)使用事例の場合には、ソフトウェアは、ソリッドステートデバイス(solid state device (SSD))等のデータ記憶装置(data store)の中のスワップ空間(swap space)に転送される候補として適格である程度に十分に"冷えている(cold)"(すなわち、アクセスされる頻度が低い)遠方のメモリのサブセットを識別する必要がある場合がある。
【0004】
メモリブロックアクセス頻度(memory block access frequency)を決定する従来のアプローチの1つは、ソフトウェアソリューションを使用し、そのソフトウェアソリューションは、仮想アドレスから物理アドレスへのメモリアドレスマッピング(virtual-to-physical memory address mapping)又は中間物理アドレスから物理アドレスへのメモリアドレスマッピング(intermediate-physical-to-physical memory address mapping)のために使用されるページテーブルの各々のページテーブルエントリ(page table entry (PTE))からアクセスインジケータビット(access indicator bit)の値を読み出す(retrieves)。ところが、このアプローチは、アクセス頻度の大まかな指標(coarse indication)(すなわち、アクセスされたているか又はアクセスされていないか)を提供するにすぎず、その大まかな指標は、アクセスインジケータビットが大きな時間ウィンドウにわたって観察されない限り、十分な粒度を提供しない場合がある。このアプローチは、また、通常、マルチバイトの粒度で一貫性を管理するプロセッサハードウェアが、複数のマルチバイトPTEを読み取って、それらの複数のマルチバイトPTEの中で対象となるいくつかの単一のビットにアクセスする必要があり、それにより、このアプローチは、帯域幅及びプロセッササイクルを浪費するとともに、より重いキャッシュ汚染(heavier cache pollution)を発生させる場合がある。他のアプローチは、各々のPTEの中にハードウェアにより増分されるカウントフィールド(hardware-incremented count field)を追加し、そのハードウェアにより増分されるカウントフィールドは、メモリブロックアクセスを計数するときに、ソフトウェアに対する負荷を減少させることが可能である。このアプローチは、一方で、一般的に、各々のPTEのコンテンツの小さなサブセットにアクセスして、アクセス頻度を決定するときに、同様の帯域幅消費及びキャッシュ汚染の問題につながる。さらに別のアプローチは、ホストメモリコントローラーが1つの大きな最終レベルのキャッシュ(large last-level cache (LLC))として管理するDDR媒体の使用等のハードウェアにより管理されるキャッシュソリューション(hardware-managed caching solutions)を伴う。DRAMキャッシュのための従来のハードウェアにより管理されるキャッシュソリューションが直接的にマッピングされている場合に、このアプローチは、そのキャッシュのスラッシングにつながる場合があるので、このアプローチは、理想的ではない。
【0005】
したがって、プロセッサベースのデバイスの中でメモリブロックアクセス頻度を追跡するためのより効率的なメカニズムが望ましい。
【発明の概要】
【0006】
本明細書の中で開示されている複数の例示的な実施形態は、プロセッサベースのデバイスの中でのメモリブロックアクセス頻度を追跡する。この点に関して、ある1つの例示的な実施形態において、プロセッサベースのデバイスは、処理要素(processing element (PE))を提供し、その処理要素は、メモリブロックへのアクセスを追跡するためのアクセス計数テーブル(access count table)を含む。アクセス計数テーブルは、パックテーブル(packed table)であり、そのパックテーブルは、複数のアクセス計数値(a plurality of access count values)を含み、それらの複数のアクセス計数値の各々は、複数のメモリブロックのうちのある1つのメモリブロックに対応する。所定のメモリブロックに対するメモリアクセス操作(memory access operation)(すなわち、メモリロード操作(memory load operation)、メモリ格納操作(memory store operation)、アトミック増分操作(atomic increment operation)、及びセット操作(set operation)等のデータ側メモリアクセス(data-side memory access)、又は、コードフェッチ操作(code fetch operation)等の命令側メモリアクセス(instruction-side memory access))を検出すると、PEは、メモリブロックに対応するアクセス計数値を増加させる。その次に、プロセッサベースのデバイスにおいて実行される第1のプロセスによって、アクセス計数値にアクセスすることが可能であり、メモリブロックのためのアクセス頻度を決定するのにそのアクセス計数値を使用してもよい。
【0007】
PEが実行する増分操作の数を減少させるために、複数の実施形態のうちのいくつかは、変換索引バッファ(translation lookaside buffer (TLB))ミス及び/又はキャッシュミス(cache miss)につながるメモリアクセス操作に対してのみアクセス計数値を増加させてもよい。そのような実施形態において、ゼロ(0)であるアクセス計数値が、対応するメモリブロックに対するアクセス頻度に関してあいまいであり(ambiguous)、そのアクセス計数値が、"非常に熱くなっている(extremely hot)"(すなわち、アクセス頻度が非常に高い)メモリブロック又は"非常に冷えている(extremely cold)"(すなわち、アクセス頻度が非常に低い)メモリブロックのうちのいずれも示す可能性がある状況が生じる場合がある。このことは、非常に熱くなっているメモリブロックへのメモリアクセス操作の場合の変換がTLBを使用して満たされる場合があり、その変換により、メモリブロックについての対応するアクセス計数値が非常に熱くなっているメモリブロックに対しても増加されないことにつながる場合があるためである。
【0008】
したがって、そのような実施形態は、パックテーブルであるアクセス追跡テーブル(access-track table)を提供し、そのアクセス追跡テーブルは、各々が複数のメモリブロックのうちのある1つのメモリブロックに対応する複数のアクセス追跡インジケータ(access-track indicators)及び複数のアクセスクリアインジケータ(access-cleared indicators)を含む。ある1つのメモリブロックに対応するアクセス追跡インジケータは、そのメモリブロックに対するメモリアクセス操作が生起するときに設定され、対応するページテーブルエントリ(page table entry (PTE))アクセスインジケータがクリアされる時点から分離される時点においてクリアされてもよい。アクセス追跡インジケータが、プロセッサベースのデバイスを実行するプロセスによってクリアされるときに、対応するアクセスクリアインジケータは、また、そのプロセスによって設定される。そのプロセスは、その次に、アクセス追跡インジケータ及びアクセスクリアインジケータを採用して、極めて冷えているメモリブロックを示す際に、ゼロ(0)である他の適格である(アクセスクリアインジケータが設定されるときの)アクセス計数値(otherwise qualified access count value)の不適格子(disqualifier)としてアクセス追跡インジケータを使用することによって、ゼロ(0)であるアクセス計数値のあいまいさを取り除いてもよい(may disambiguate)。
【0009】
他の例示的な実施形態において、プロセッサベースのデバイスが開示される。そのプロセッサベースのデバイスは、PEを含み、そのPEは、アクセス計数テーブル(access count table)を含み、そのアクセス計数テーブルは、複数のアクセス計数値(access count values)を含むパックテーブルであり、それらの複数のアクセス計数値の各々は、複数のメモリブロックのうちのある1つのメモリブロックに対応する。PEは、複数のメモリブロックのうちのある1つのメモリブロックに向けられるメモリアクセス操作(memory access operation)を検出するように構成される。PEは、さらに、メモリアクセス操作の検出に応答して、複数のアクセス計数値のうちのある1つのアクセス計数値を増加させるように構成され、そのアクセス計数値は、メモリブロックに対応する。
【0010】
他の例示的な実施形態において、プロセッサベースのデバイスにおけるメモリブロックアクセス頻度を追跡する方法が提供される。その方法は、プロセッサベースのデバイスのPEによって、複数のメモリブロックのうちのある1つのメモリブロックに向けられるメモリアクセス操作を検出するステップを含む。その方法は、メモリアクセス操作の検出に応答して、アクセス計数テーブルの複数のアクセス計数値のうちのある1つのアクセス計数値を増加させるステップをさらに含み、そのアクセス計数テーブルは、パックテーブルであり、そのアクセス計数値は、メモリブロックに対応する。
【0011】
他の例示的な実施形態において、非一時的なコンピュータ読み取り可能な媒体が開示される。そのコンピュータ読み取り可能な媒体は、コンピュータ実行可能な命令を格納し、それらのコンピュータ実行可能な命令は、プロセッサベースのデバイスによって実行されるときに、そのプロセッサベースのデバイスが、複数のメモリブロックのうちのある1つのメモリブロックに向けられるメモリアクセス操作を検出するようにさせる。それらのコンピュータ実行可能な命令は、さらに、プロセッサベースのデバイスに、メモリアクセス操作の検出に応答して、アクセス計数テーブルの複数のアクセス計数値のうちのある1つのアクセス計数値を増加させ、アクセス計数テーブルは、パックテーブルであり、アクセス計数値は、メモリブロックに対応する。
【0012】
当業者は、複数の添付の図面と関連して、複数の好ましい実施形態の以下の詳細な説明を読んだ後に、本開示の範囲を理解し、そして、それらの複数の好ましい実施形態の追加的な実施形態を実現するであろう。
【図面の簡単な説明】
【0013】
本明細書の中に組み込まれ、本明細書の一部を形成するそれらの複数の添付の図面は、本開示の複数の実施形態のうちのいくつかを図示し、説明とともに本開示の原理を説明するのに役立つ。
【0014】
【
図1】ある1つの例示的なプロセッサベースのデバイスの概略的な図であり、そのプロセッサベースのデバイスは、メモリブロックアクセス頻度を追跡するように構成される処理要素(processing element (PE))を含む。
【
図2A】複数の実施形態のうちのいくつかにしたがった
図1のアクセス計数テーブル(access count table)及びアクセス追跡テーブル(access-track table)の例示的な実装を図示しているブロック図である。
【
図2B】複数の実施形態のうちのいくつかにしたがった
図1のアクセス計数テーブル及びアクセス追跡テーブルの例示的な実装を図示しているブロック図である。
【
図3A】複数の実施形態のうちのいくつかにしたがってメモリブロックアクセス頻度を追跡するための複数の例示的な操作を図示しているフローチャートである。
【
図3B】複数の実施形態のうちのいくつかにしたがってメモリブロックアクセス頻度を追跡するための複数の例示的な操作を図示しているフローチャートである。
【
図3C】複数の実施形態のうちのいくつかにしたがってメモリブロックアクセス頻度を追跡するための複数の例示的な操作を図示しているフローチャートである。
【
図4】複数の実施形態のうちのいくつかにしたがって、アクセス計数値(access count value)、アクセス追跡インジケータ(access-track indicator)、及びアクセスクリアインジケータ(access-cleared indicator)に基づいて、メモリブロックについてのアクセス頻度を決定するための複数の例示的な操作を図示しているフローチャートである。
【
図5】メモリブロックアクセス頻度を追跡するように構成される
図1のプロセッサベースのデバイス等のある1つの例示的なプロセッサベースのデバイスのブロック図である。
【発明を実施するための形態】
【0015】
本明細書において開示される複数の例示的な実施形態は、プロセッサベースのデバイスにおけるメモリブロックアクセス頻度を追跡する。この点に関して、ある1つの例示的な実施形態において、プロセッサベースのデバイスは、処理要素(processing element (PE))を提供し、その処理要素は、メモリブロックへのアクセスを追跡するためのアクセス計数テーブル(access count table)を含む。アクセス計数テーブルは、複数のアクセス計数値(access count values)を含むパックテーブル(packed table)であり、それらの複数のアクセス計数値の各々は、複数のメモリブロックのうちのある1つのメモリブロックに対応する。所定のメモリブロックに向けられるメモリアクセス操作(すなわち、メモリロード操作(memory load operation)、メモリ格納操作(memory store operation)、アトミック増分操作(atomic increment operation)、セット操作(set operation)等のデータ側メモリアクセス(data-side memory access)、又は、コードフェッチ操作(code fetch operation)等の命令側メモリアクセス(instruction-side memory access))を検出すると、PEは、そのメモリブロックに対応するアクセス計数値を増加させる。その次に、プロセッサベースのデバイスにおいて実行される第1のプロセスによって、そのアクセス計数値にアクセスしてもよく、メモリブロックについてのアクセス頻度を決定するのにそのアクセス計数値を使用してもよい。
【0016】
PEが実行する増分操作(increment operations)の数を減少させるために、複数の実施形態のうちのいくつかは、変換索引バッファ(translation lookaside buffer (TLB))ミス及び/又はキャッシュミス(cache miss)につながるメモリアクセス操作に対してのみアクセス計数値を増加させてもよい。そのような実施形態において、ゼロ(0)であるアクセス計数値が、対応するメモリブロックに対するアクセス頻度に関してあいまいであり(ambiguous)、そのアクセス計数値が、"非常に熱くなっている(extremely hot)"(すなわち、アクセス頻度が非常に高い)メモリブロック又は"非常に冷えている(extremely cold)"(すなわち、アクセス頻度が非常に低い)メモリブロックのうちのいずれも示す可能性がある状況が生じる場合がある。このことは、非常に熱くなっているメモリブロックへのメモリアクセス操作の場合の変換がTLBを使用して満たされる場合があり、その変換により、メモリブロックについての対応するアクセス計数値が非常に熱くなっているメモリブロックに対しても増加されないことにつながる場合があるためである。
【0017】
したがって、そのような実施形態は、パックテーブル(packed table)であるアクセス追跡テーブル(access-track table)を提供し、そのアクセス追跡テーブルは、各々が複数のメモリブロックのうちのある1つのメモリブロックに対応する複数のアクセス追跡インジケータ(access-track indicators)及び複数のアクセスクリアインジケータ(access-cleared indicators)を含む。ある1つのメモリブロックに対応するアクセス追跡インジケータは、そのメモリブロックに対するメモリアクセス操作が生起するときに設定され、対応するページテーブルエントリ(page table entry (PTE))アクセスインジケータがクリアされる時点から分離される(decoupled from)時点においてクリアされてもよい。アクセス追跡インジケータが、プロセッサベースのデバイスを実行するプロセスによってクリアされるときに、対応するアクセスクリアインジケータは、また、そのプロセスによって設定される。そのプロセスは、その次に、アクセス追跡インジケータ及びアクセスクリアインジケータを採用して、極めて冷えているメモリブロックを示す際に、ゼロ(0)である他の適格である(アクセスクリアインジケータが設定されるときの)アクセス計数値(otherwise qualified access count value)の不適格子(disqualifier)としてアクセス追跡インジケータを使用することによって、ゼロ(0)であるアクセス計数値のあいまいさを取り除いてもよい(may disambiguate)。
【0018】
この点に関して、
図1は、実行可能な命令を処理するためのPE102を提供するある1つの例示的なプロセッサベースのデバイス100を図示している。PE102は、個々のプロセッサコアを含んでもよく、それらの個々のプロセッサコアは、中央処理ユニット(CPU)の論理実行ユニット(logical execution unit)及び関連するキャッシュ(associated caches)及び機能ユニット(functional units)を含む。
図1における例のPE102は、実行パイプライン回路(execution pipeline circuit)104を含み、その実行パイプライン回路104は、コンピュータ実行可能な命令を含む命令ストリーム(instruction stream)を実行するように構成される。
図1には示されていないが、実行パイプライン回路104は、非限定的な例として、実行のために命令を検索する(retrieving)ためのフェッチステージ(fetch stage)、(示されていない)PRFから物理レジスタファイル(physical register file (PRF))レジスタを割り当てる(allocating)ための名前変更ステージ(rename stage)、命令実行のために、複数のフェッチされる命令を複数の制御信号に変換する(translating)ための命令復号化ステージ(instruction decode stage)、実行のために命令を発行する(issuing)ための発送ステージ(dispatch stage)、命令実行を実際に実行するための実行ステージ、及び/又は、命令実行の結果に基づいてPE102のアーキテクチャ状態(architectural state)を不可逆的に更新する(irrevocably updating)ためのコミットステージ(commit stage)を含んでもよい。プロセッサベースのデバイス100の複数の実施形態のうちのいくつかは、
図1の例に示されている単一のPE102ではなく複数のPE102を含んでもよいということを理解するべきであり、さらに、PE102の複数の実施形態のうちのいくつかは、実行パイプライン回路104の中に、上記で説明されているステージよりもより少ないステージ又はより多いステージを含んでもよいということを理解するべきである。
【0019】
図1のPE102は、メモリ管理ユニット(memory management unit (MMU))106をさらに含み、そのメモリ管理ユニット106は、物理メモリアドレス(physical memory addresses)への仮想メモリアドレス(virtual memory addresses)又は中間物理アドレス(intermediate physical addresses)のアドレス変換を実行することによって仮想メモリ機能(virtual memory functionality)を提供する。MMU106は、TLB108を含み、そのTLB108は、以降の再利用のために、物理メモリアドレスへの仮想メモリアドレス又は中間物理アドレスの少し前の変換(recent translations)をキャッシュするためのTLBエントリ110(0)-110(T)を提供する。PE102は、また、メモリを含む第1のメモリデバイス112に通信可能に結合される(communicatively coupled to)とともに、メモリを含む第2のメモリデバイス116に通信可能に結合され、第1のメモリデバイス112のメモリは、複数のメモリブロック114(0)-114(M)に細分割され(subdivided into)、第2のメモリデバイス116のメモリは、複数のメモリブロック118(0)-118(Y)に細分割される。
図1の例においては、メモリブロック114(0)-114(M)及び118(0)-118(Y)の各々は、アドレス変換のために使用されるサイズに対応するサイズを有するメモリページを含んでもよい。一方で、複数の実施形態のうちのいくつかにおいては、メモリブロック114(0)-114(M)及び118(0)-118(Y)が占める全範囲(the total range covered by the memory blocks)は、アドレス変換のために使用されるサイズに対応するサイズよりも大きくてもよく又は小さくてもよいということを理解するべきである。複数の実施形態のうちのいくつかは、メモリブロック114(0)-114(M)及び118(0)-118(Y)が、複数のメモリブロックを含んでもよく、それらの複数のメモリブロックの各々が、他のメモリブロックが占める範囲とは不連続となる(discontiguous from)連続的な範囲(contiguous range)を占める(cover)ということを提供してもよい。
【0020】
図1においては、第1のメモリデバイス112は、第2のメモリデバイス116の待ち時間(latency)よりもより小さな待ち時間(すなわち、メモリアクセス時間)を有する。このようにして、非限定的な例として、第1のメモリデバイス112は、PE102が本来的に通信することが可能である(can natively communicate)ダブルデータレート(Double Data Rate (DDR))ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory (DRAM))メモリデバイスを含んでもよく、一方で、第2のメモリデバイス116は、計算エクスプレスリンク(Compute Express Link (CXL))メモリデバイスを含んでもよい。複数の実施形態のうちのいくつかにおいて、(例えば、非限定的な例として、第1のメモリデバイス112は、高帯域幅メモリ(High Bandwidth Memory (HBM))デバイスを含んでもよく、一方で、第2のメモリデバイス116は、DDR又はCXLメモリデバイスを含んでもよい、といったように)より小さな待ち時間を有する代わりに又はより小さな待ち時間を有するのに加えて、第1のメモリデバイス112は、第2のメモリデバイス116よりもより広い帯域幅(higher bandwidth)を提供してもよい。
図1は、プロセッサベースのデバイス100の一体型の要素として、第1のメモリデバイス112及び第2のメモリデバイス116を示しているが、複数の実施形態のうちのいくつかにおいて、第1のメモリデバイス112及び第2のメモリデバイス116のうちの一方又は双方は、プロセッサベースのデバイス100の外部に存在するとともに、(示されていない)外部インターフェイスを介して通信可能に結合されるメモリデバイスを含んでもよいということを理解するべきである。PE102は、また、キャッシュ120等の1つ又は複数のキャッシュを含み、それらの1つ又は複数のキャッシュは、PE102がより高速なアクセスを行うために、頻繁に使用される命令及び/又はデータを格納することが可能であるメモリを含む。キャッシュ120は、キャッシュ階層(cache hierarchy)のある1つのレベルを表してもよく、そのキャッシュ階層は、レベル1(L1)キャッシュ及びレベル2(L2)キャッシュ等の(示されていない)追加的なキャッシュを含んでもよい。
【0021】
図1の例においては、第1のメモリデバイス112は、(
図1において"PTE"であると見出しを付けられている)複数のページテーブルエントリ124(0)-124(P)を含むページテーブル122を格納し、それらの複数のページテーブルエントリの各々は、第1のメモリデバイス112又は第2のメモリデバイス116の中の仮想メモリアドレス(又は、中間物理アドレス)と対応する物理メモリアドレスとの間のマッピングを格納する。PE102が、仮想メモリアドレス又は中間物理アドレスを物理メモリアドレスへと変換する必要があるときに、PE102は、ページテーブル122にアクセスして、仮想メモリアドレス又は中間物理アドレスと関連するPTE124(0)-124(P)のうちのPTEを見つけ、そして、その次に、そのPTEから対応する物理メモリアドレスを読み取る。少し前にアクセスされているPTE124(0)-124(P)のうちのPTEは、また、以降の再利用のために、PE102によってTLB108の中にキャッシュされて、変換プロセスの繰り返しを回避してもよい。PTE124(0)-124(P)のうちの各々のPTEは、(
図1において"ACC"であると見出しを付けられている)対応するPTEアクセスインジケータ126(0)-126(P)を含み、その対応するPTEアクセスインジケータ126(0)-126(P)は、PTEに対応するメモリページにアクセスするときにPE102が設定するビットインジケータを含んでもよい。PTE124(0)-124(P)は、明確にするために
図1には示されていない他のインジケータ及び/又はデータフィールドを含んでもよいということを理解するべきである。
【0022】
図1のプロセッサベースのデバイス100及びそのプロセッサベースのデバイス100の構成要素は、いくつかある要素のうちで特に、既知のディジタル論理要素、半導体回路、処理コア(processing cores)、及び/又はメモリ構造のうちのいずれか1つ、或いは、それらの組み合わせを含んでもよい。本明細書の中で説明されている複数の実施形態は、複数の要素の任意の特定の配置には限定されず、開示されている技術は、半導体ソケット又はパッケージにおけるさまざまな構造及びレイアウトに容易に拡張されてもよい。プロセッサベースのデバイス100の複数の実施形態のうちのいくつかは、
図1に図示されている要素に加えて複数の要素を含んでもよいということを理解するべきである。例えば、PE102は、1つ又は複数の命令キャッシュ(instruction caches)、統合キャッシュ(unified caches)、メモリコントローラ(memory controllers)、相互接続バス(interconnect buses)、及び/又は、追加的なメモリデバイス(additional memory devices)、キャッシュ(caches)、及び/又はコントローラ回路(controller circuits)をさらに含んでもよい。
【0023】
図1の例においては、PE102は、プロセス128を実行しており、そのプロセス128は、非限定的な例として、仮想化機能を提供するためのハイパーバイザ又はオペレーティングシステム(OS)例外レベルアプリケーション(operating system (OS) exception level application)等のアプリケーションを含んでもよい。1つよりも多くのPEを含む実施形態において、そのプロセス128は、それらのPEのうちのいずれか1つにおいて実行されてもよいということを理解するべきである。実行の過程において、プロセス128は、複数のメモリブロック114(0)-114(M)及び118(0)-118(Y)のうちのある1つのメモリブロックが、第1のメモリデバイス112及び第2のメモリデバイス116のうちのいずれかに配置されるべきであるか否かを決定する必要がある場合がある。例えば、そのプロセス128がハイパーバイザ(hypervisor)である場合に、そのプロセス128は、どの程度の頻度でゲスト仮想マシン(guest virtual machine (VM))メモリページ(guest VM memory page)にアクセスするかに基づいて、待ち時間が小さく及び/又は帯域幅が大きい第1のメモリデバイス112(lower-latency and/or higher-bandwidth first memory device 112)にゲストVMメモリページを割り当てるべきであるか、或いは、待ち時間が大きく及び/又は帯域幅が小さい第2のメモリデバイス116(higher-latency and/or lower-bandwidth second memory device 116)にゲストVMメモリページを割り当てるべきであるかを決定する必要がある場合がある。どの程度の頻度でメモリブロック114(0)-114(M)及び118(0)-118(Y)にアクセスするかを理解することによって、この決定を容易にすることが可能であり、それによって、"熱くなっている(hot)"(すなわち、アクセス頻度が高い(frequently accessed))メモリブロックは、"冷えている(cold)"(すなわち、アクセス頻度が低い(infrequently accessed)又はアクセスされていない(unaccessed))メモリブロックと判別されてもよい。これに対して、上記で説明されているように、メモリブロックアクセス頻度を決定する従来のアプローチは、十分な粒度を提供しない場合があり、及び/又は、帯域幅及びプロセッサの消費(processor consumption)及びより深刻なキャッシュ汚染(heavier cache pollution)の観点から許容可能ではないコストを負う場合がある。
【0024】
この点に関して、PE102は、メモリブロックアクセス頻度を追跡するように構成される。ある1つの例示的な実施形態において、PE102は、アクセス計数テーブル(access count table)130を提供するように構成され、そのアクセス計数テーブル130は、(
図1において"ACC COUNT VAL"であると見出しを付けられている)複数のアクセス計数値(access count values)132(0)-132(C)を含むパックテーブル(packed table)であり、それらの複数のアクセス計数値の各々は、複数のメモリブロック114(0)-114(M)及び118(0)-118(Y)のうちのある1つのメモリブロックに対応する。"パックテーブル"の語及びその派生語は、本明細書においては、あるテーブルデータ構造(table data structure)を指すのに使用され、そのテーブルデータ構造においては、各々のビットは、使用されていないビット又はあらかじめ決定されている長さまでデータフィールドをパディングする(pad data fields)ことを目的とするビットとは反対に、あるデータ値を表すか又はそのデータ値の一部となっている。複数の実施形態のうちのいくつかにおいて、アクセス計数値132(0)-132(C)の各々は、4バイトのサイズとなっていてもよく、それによって、16個のアクセス計数値132(0)-132(C)は、従来の64バイトのキャッシュラインの中に詰め込まれてもよい(may be packed into a conventional 64-byte cache line)。複数の実施形態のうちのいくつかにおいて、アクセス計数テーブル(access count table)130が占めるメモリ範囲(memory range)の開始中間物理アドレス(starting intermediate physical address)又は開始物理アドレス(starting physical address)に対して、アクセス計数テーブル130へのインデックスとして、メモリアクセス操作の中間物理アドレス又は物理アドレスを使用してもよい。
【0025】
例示的な操作において、PE102は、メモリブロック114(0)等のメモリブロックに向けられるメモリアクセス操作(すなわち、メモリロード操作(memory load operation)、メモリ格納操作(memory store operation)、アトミック増分操作(atomic increment operation)、及びセット操作(set operation)等のデータ側メモリアクセス(data-side memory access)、或いは、コードフェッチ操作(code fetch operation)等の命令側メモリアクセス(instruction-side memory access))を検出するように構成される。メモリアクセス操作がデータ側メモリアクセスである
図1等の実施形態において、メモリアクセス操作は、PE102の実行パイプライン回路(execution pipeline circuit)104の中のメモリアクセス命令(memory access instruction)134の実行の時に検出されてもよい。そのメモリアクセス操作の検出に応答して、PE102は、メモリブロック114(0)に対応する(例えば、アクセス計数値132(0)等の)アクセス計数値を増加させる。
【0026】
このように、PE102は、(例えば、プロセス128を実行することによって)メモリブロック114(0)-114(M)及び118(0)-118(Y)のうちの任意の所定のメモリブロックについてのアクセス頻度を決定してもよく、そのアクセス頻度に基づいて、第1のメモリデバイス112又は第2のメモリデバイス116のうちのいずれかにそのメモリブロックを転送してもよい。例えば、ゼロ(0)又は他の指定されているしきい値を超えるアクセス計数値に対応するメモリブロックは、"熱くなっている(hot)"ブロックであると考えられてもよく、したがって、第1のメモリデバイス112に転送されてもよい。反対に、ゼロ(0)であるか又は指定されているしきい値を下回るアクセス計数値に対応するメモリブロックは、"冷えている(cold)"ブロックであると考えられてもよく、第2のメモリデバイス116に転送されてもよい。
【0027】
複数の実施形態のうちのいくつかにおいて、例えば、アクセス計数値132(0)-132(C)のうちの1つ又は複数がアクセス計数しきい値(access count threshold value)136に達することによって生成されるハードウェア割り込み(hardware interrupt)又は例外イベント(exception event)によって、或いは、タイマ138の満了によって、アカウンティング間隔(accounting interval)をトリガしてもよい。アカウンティング間隔の際に、複数の実施形態のうちのいくつかにしたがったプロセス128は、アクセス計数値132(0)-132(C)を検査して(inspect)、複数のメモリブロックについてのアクセス頻度を決定し、(例えば、"近い(near)"(待ち時間が小さく及び/又は帯域幅が大きい)メモリと"遠い(far)"(待ち時間が大きく及び/又は帯域幅が小さい)メモリとの間の)メモリブロックの(例えば、移動(migration)又は再マッピング(remapping)等の)いずれかの必要な転送を実行してもよい。アクセス計数値132(0)-132(C)は、そのアカウンティング間隔の際に、そのような実施形態におけるプロセス128によってゼロ(0)の値にリセットされて、次のアカウンティングサイクルの際に、それらのアクセス計数値132(0)-132(C)を計数するための状態となるようにしてもよい。
【0028】
アクセス計数値132(0)-132(C)は、所定のアカウンティング間隔(given accounting interval)の際のメモリブロック114(0)-114(M)及び118(0)-118(Y)に対するメモリアクセス操作の実際の数を表すので、アクセス計数テーブル130のみに依存して、メモリブロック114(0)-114(M)及び118(0)-118(Y)についてのアクセス頻度を決定するPE102の実施形態は、熱くなっているメモリブロック(hot memory blocks)と冷えているメモリブロック(cold memory blocks)とを正確に判別することが可能である。一方で、あらゆるメモリアクセス操作についてアクセス計数値132(0)-132(C)を増加させることによって生じるオーバーヘッドを減少させることが望ましい場合がある。したがって、複数の実施形態のうちのいくつかは、キャッシュ120及び/又はTLB108におけるミスにつながるメモリアクセス操作の検出のみに応答して、アクセス計数テーブル130のアクセス計数値132(0)-132(C)を増加させてもよい。そのような実施形態は、(例えば、非限定的な例として、プロセス140を実行することによって)PE102によって対応するPTEアクセスインジケータ126(0)-126(P)をクリアする(周波数オフセット及び時間的なオフセットにおける(in frequency and offset in time))時間フレームから、非常に熱くなっているメモリブロック(extremely hot memory blocks)及び非常に冷えているメモリブロック(extremely cold memory blocks)のあいまいさを取り除くこと(disambiguation)を分離することを可能とする。これらの実施形態において、PE102は、アクセス追跡テーブル(access-track table)142を提供してもよく、そのアクセス追跡テーブル142は、(
図1においては"ACC-TRK IND"であると見出しを付けられている)複数のアクセス追跡インジケータ144(0)-144(C)、及び、選択的に、(
図1においては"ACC-CLR IND"であると見出しを付けられている)複数のアクセスクリアインジケータ(access-cleared indicators)146(0)-146(C)を含むパックテーブルである。アクセス追跡インジケータ144(0)-144(C)及び(存在する場合には)アクセスクリアインジケータ146(0)-146(C)の各々は、複数のメモリブロック114(0)-114(M)及び118(0)-118(Y)のうちのある1つのメモリブロックに対応する。複数の実施形態のうちのいくつかによれば、アクセス追跡テーブル142へのインデックスとして、アクセス追跡テーブル142が占める(covered by)メモリ範囲(memory range)の開始中間物理アドレス(starting intermediate physical address)又は開始物理アドレス(starting physical address)に対するメモリアクセス操作の中間物理アドレス又は物理アドレスを使用してもよい。
【0029】
アクセス追跡インジケータ144(0)-144(C)の各々は、複数のメモリブロック114(0)-114(M)のうちの対応するメモリブロックに向けられるメモリアクセス操作を検出するときに、PE102によって設定されてもよい。複数の実施形態のうちのいくつかにおいて、アクセス追跡インジケータ144(0)-144(C)は、あらゆるアカウンティングサイクルの際にクリアされ、その場合には、アクセスクリアインジケータ146(0)-146(C)が複数のアカウンティングサイクルにわたってアクセス追跡インジケータ144(0)-144(C)をクリアすることを追跡しなくてもよい。あらゆるアカウンティングサイクルの際にはアクセス追跡インジケータ144(0)-144(C)をクリアしなくてもよい実施形態において、
図1におけるPE102は、プロセス128を実行してもよく、アクセス追跡インジケータ144(0)-144(C)のうちの1つをクリアすると、そのプロセス128は、また、アクセスクリアインジケータ146(0)-146(C)のうちの対応する1つのアクセスクリアインジケータを設定する。複数の実施形態のうちのいくつかによれば、アクセス追跡インジケータ144(0)-144(C)及びアクセスクリアインジケータ146(0)-146(C)の各々は、単一のビットを含んでもよい。アクセス追跡テーブル142は、
図1に示されているように、独立型のデータ構造(standalone data structure)を含んでもよく、
図2Aを参照して以下でより詳細に説明されるように、一体化されて、アクセス計数テーブル130と同じデータ構造となってもよく、又は、
図2Bを参照して以下でより詳細に説明するように、2つの個別のデータ構造として実装されてもよい。
【0030】
図1の例においては、プロセス128は、アクセス計数テーブル130と併用して、アクセス追跡テーブル142を使用して、非常に熱くなっているメモリブロックと非常に冷えているメモリブロックとの間のあいまいさを取り除くこと(disambiguation)を実行してもよい。特に、メモリブロックに対応するアクセスクリアインジケータ146(0)-146(C)のうちのある1つのアクセスクリアインジケータを設定し、そのメモリブロックについてのアクセス計数値がゼロ(0)となる場合に(又は、アクセス追跡インジケータ144(0)-144(C)が各々のアカウンティングサイクルの際に常にクリアされ、この状況において、メモリブロックが、論理的な真の値(logical true value)を表すアクセスクリアインジケータを有すると考えられてもよい、場合に)、プロセス128は、そのメモリブロックに対応するアクセス追跡インジケータ144(0)-144(C)のうちのある1つのアクセス追跡インジケータを設定するか否かを決定してもよい。アクセス追跡インジケータが設定されていない場合には、プロセス128は、ゼロ(0)であるアクセス計数値がゼロ(0)であるアクセス頻度を示している(すなわち、メモリブロックが非常に冷えている)ということを結論付けてもよい。アクセス追跡インジケータが設定されている場合には、プロセス128は、そのメモリブロックについてのアクセス頻度がゼロ(0)よりも大きい(すなわち、メモリブロックが非常に熱くなっている)と決定してもよい。アクセス計数値132(0)-132(C)、アクセス追跡インジケータ144(0)-144(C)、及びアクセスクリアインジケータ146(0)-146(C)に基づいてメモリブロックアクセス頻度を決定するためのある1つの例示的な論理フローは、
図4を参照して以下でより詳細に説明される。
【0031】
図1のプロセッサベースのデバイス100の複数の実施形態のうちのいくつかは、例えば、各々がアドレスの連続するセットを含む複数のメモリアドレス範囲を追跡する際に使用するために、アクセス計数テーブル130及び/又はアクセス追跡テーブル142の複数の例を提供してもよいということを理解するべきである。そのようなメモリアドレス範囲は、重複するアドレスを有していてもよく又は重複するアドレスを有していなくてもよく、各々の範囲と関連するメモリブロックの粒度(memory block granularity)は、複数の範囲にわたって異なっていてもよい。さらに、
図1は、PE102の中の要素としてアクセス計数テーブル130及びアクセス追跡テーブル142を示しているが、複数の実施形態のうちのいくつかにおいて、それらのアクセス計数テーブル130及びアクセス追跡テーブル142は、第1のメモリデバイス112又は第2のメモリデバイス116等のPE102の外部にあるメモリデバイス(a memory device external to the PE102)のメモリの中に位置していてもよいということを理解するべきである。追加的に、上記で注記されているように、
図1は、個別の要素としてアクセス計数テーブル130及びアクセス追跡テーブル142を示している。これに対して、複数の実施形態のうちのいくつかは、アクセス計数テーブル130及びアクセス追跡テーブル142を組み合わせて、単一のデータ構造としてもよいということを提供してもよい。同様に、複数の実施形態のうちのいくつかは、2つの個別のデータ構造としてアクセス追跡テーブル142を実装するということを提供してもよい。複数の実施形態のうちのいくつかによれば、PE102は、(示されていない)1つ又は複数のメモリレジスタを提供してもよく、それらの1つ又は複数のメモリレジスタの各々は、アクセス計数テーブル130及び/又はアクセス追跡テーブル142が開始する(start)メモリの中の1つ又は複数の基準位置(base locations)を指す(point to)。複数の連続するアドレス範囲がメモリブロック114(0)-114(M)及び118(0)-118(Y)によって占められている(covered by)実施形態において、複数のレジスタの各々が1つ又は複数の基準位置を指す連続するアドレス範囲ごとのレジスタの1つのセットが存在するとともに、各々の範囲についての開始アドレス(a starting address for each range)を構成し、連続するアドレス範囲のサイズ(contiguous address range size)(すなわち、メモリブロックの数)を構成し、及びメモリブロック粒度(memory block granularity)を構成するための連続するアドレス範囲ごとのレジスタの1つのセットが存在してもよい。
【0032】
この点に関して、
図2A及び2Bは、
図1のアクセス計数テーブル130及びアクセス追跡テーブル142の複数の例示的な実装を図示している。
図2Aの例においては、パックテーブル200は、
図1のアクセス計数テーブル130及びアクセス追跡テーブル142の双方の機能に対応する機能を提供する。そのパックテーブル200は、複数のテーブルエントリ(table entries)202(0)-202(C)を含み、それらの複数のテーブルエントリの各々は、
図1の複数のメモリブロック114(0)-114(M)及び118(0)-118(Y)のうちのある1つのメモリブロックに対応する。テーブルエントリ202(0)-202(C)は、(
図2Aにおいては"ACC-TRK IND"であると見出しを付けられている)対応するアクセス追跡インジケータ204(0)-204(C)、(
図2Aにおいては"ACC-CLR IND"であると見出しを付けられている)選択的なアクセスクリアインジケータ206(0)-206(C)、及び(
図2Aにおいては"ACC COUNT VAL"であると見出しを付けられている)アクセス計数値208(0)-208(C)を含む。アクセス追跡インジケータ204(0)-204(C)は、
図1のアクセス追跡インジケータ144(0)-144(C)に機能的に対応し、一方で、アクセスクリアインジケータ206(0)-206(C)は、
図1のアクセスクリアインジケータ146(0)-146(C)に機能的に対応し、アクセス計数値208(0)-208(C)は、
図1のアクセス計数値132(0)-132(C)に機能的に対応する。
図2Aにしたがった複数の実施形態において、"アクセス計数テーブル"の語は、パックテーブル200のアクセス計数値208(0)-208(C)を指し、一方で、"アクセス追跡テーブル"の語は、パックテーブル200のアクセス追跡インジケータ204(0)-204(C)及びアクセスクリアインジケータ206(0)-206(C)を指す。
図2Aは、アクセス計数値208(0)-208(C)を有する単一のデータ構造によって、アクセス追跡インジケータ204(0)-204(C)及びアクセスクリアインジケータ206(0)-206(C)の双方を示しているが、一方で、複数の実施形態のうちのいくつかは、アクセス追跡インジケータ204(0)-204(C)及びアクセスクリアインジケータ206(0)-206(C)の一方のみが、アクセス計数値208(0)-208(C)を有する単一のデータ構造となっており、他のものは、(示されていない)個別のデータ構造によって提供されるということを提供してもよい。さらに、アクセス追跡インジケータ204(0)-204(C)があらゆるアカウンティングサイクルの際にクリアされる実施形態において、アクセスクリアインジケータ206(0)-206(C)を省略してもよいということを理解するべきである。
【0033】
ここで、
図2Bを参照すると、複数の実施形態のうちのいくつかは、アクセス追跡テーブル142が最大2つの個別のデータ構造として実装されるということを提供してもよい。したがって、
図2Bは、2つのパックテーブル210及び212を図示している。パックテーブル210は、複数のテーブルエントリ214(0)-214(C)を含み、それらの複数のテーブルエントリの各々は、
図1の複数のメモリブロック114(0)-114(M)及び118(0)-118(Y)のうちのある1つのメモリブロックに対応する。テーブルエントリ214(0)-214(C)は、(
図2Bにおいては"ACC-TRK IND"であると見出しを付けられている)複数の対応するアクセス追跡インジケータ216(0)-216(C)を含み、それらの複数の対応するアクセス追跡インジケータは、
図1のアクセス追跡インジケータ144(0)-144(C)に機能的に対応する。同様に、選択的なパックテーブル212は、複数のテーブルエントリ218(0)-218(C)を含み、それらの複数のテーブルエントリの各々は、
図1の複数のメモリブロック114(0)-114(M)及び118(0)-118(Y)のうちのある1つのメモリブロックに対応する。テーブルエントリ218(0)-218(C)は、(
図2Bにおいては"ACC-CLR IND"であると見出しを付けられている)複数の対応するアクセスクリアインジケータ220(0)-220(C)を含み、それらの複数の対応するアクセスクリアインジケータは、
図1のアクセスクリアインジケータ146(0)-146(C)に機能的に対応する。
図2Bにしたがった複数の実施形態において、"アクセス追跡テーブル"の語は、パックテーブル210のアクセス追跡インジケータ216(0)-216(C) を集合的に指すとともに、パックテーブル212のアクセスクリアインジケータ220(0)-220(C)を集合的に指す。さらに、アクセス追跡インジケータ214(0)-214(C)があらゆるアカウンティングサイクルの際にクリアされる複数の実施形態において、パックテーブル212を省略してもよいということを理解するべきである。
【0034】
図3A乃至
図3Cは、複数の実施形態のうちのいくつかにしたがって
図1のPE102によってメモリブロックアクセス頻度を追跡するための複数の例示的な操作を図示しているフローチャート300を提供する。明確さのために、
図3A乃至
図3Cを説明する際に
図1の要素を参照する。
図3A乃至
図3Cに図示されている複数の操作のうちのいくつかは、複数の実施形態のうちのいくつかにおいて
図3A乃至
図3Cに図示されている順序とは異なる順序で生起してもよく、及び/又は、複数の実施形態のうちのいくつかにおいて省略されてもよいということを理解するべきである。
図3Aにおいては、複数の実施形態のうちのいくつかにしたがった操作は、PE102が(例えば、
図1の複数のメモリブロック114(0)-114(M)のうちのメモリブロック114(0)等の)ある1つのメモリブロックに向けられるメモリアクセス操作を検出することから開始する(ブロック302)。(例えば、
図1のアクセス追跡テーブル142を使用する実施形態等の)複数の実施形態のうちのいくつかは、メモリアクセス操作を検出するためのブロック302の操作が、キャッシュミス及びTLBミスのうちの少なくとも1つにつながるメモリアクセス操作をPE102が検出することを含んでもよいということを提供してもよい(ブロック304)。メモリアクセス操作の検出に応答して、PE102は、
図1のアクセス計数テーブル130の複数のアクセス計数値132(0)-132(C)のうちのアクセス計数値132(0)等のある1つのアクセス計数値を増加させ、アクセス計数テーブル130はパックテーブルであり、アクセス計数値132(0)はメモリブロック114(0)に対応する(ブロック306)。
【0035】
アクセス追跡テーブル142を含む複数の実施形態のうちのいくつかにおいて、PE102は、キャッシュヒット(cache hit)又はTLBヒット(TLB hit)につながるとともにメモリブロック114(0)に向けられる他のメモリアクセス操作を検出してもよい(ブロック308)。その検出に応答して、PE102は、
図1のアクセス追跡テーブル142の複数のアクセス追跡インジケータ144(0)-144(C)のうちのアクセス追跡インジケータ144(0)等のある1つのアクセス追跡インジケータを設定してもよく、アクセス追跡テーブル142はパックテーブルであり、アクセス追跡インジケータ144(0)はメモリブロック114(0)に対応する(ブロック310)。そのような複数の実施形態のうちのいくつかにおける操作は、その次に、
図3Bのブロック312において継続されてもよい。
【0036】
ここで、
図3Bを参照すると、複数の実施形態のうちのいくつかは、(例えば、アクセス計数値132(0)-132(C)のうちの1つ又は複数がアクセス計数しきい値136に達することによって生じるハードウェア割り込み(hardware interrupt)又は例外イベント(exception event)によって、或いは、タイマ138の終了によって、といったように)アカウンティング間隔がトリガされることに応答して、一連の操作を実行してもよい(ブロック312)。複数の実施形態のうちのいくつかにおいて、PE102は、(例えば、また、本明細書において"第1のプロセス128"と称されるプロセス128を実行することによって)アクセス計数値132(0)に基づいて、メモリブロック114(0)のアクセス頻度を決定してもよい(ブロック314)。
図1のアクセス追跡テーブル142を使用する複数の実施形態は、メモリブロック114(0)のアクセス頻度を決定するためのブロック314の操作が、さらに、アクセス追跡インジケータ144(0)及びアクセスクリアインジケータ146(0)のうちの1つ又は複数に基づいてもよい(ブロック316)ということを提供してもよい。PE102は、その次に、(例えば、第1のプロセス128を実行することによって)アクセス頻度に基づいて、第1のメモリデバイス112及び第2のメモリデバイス116のうちの一方に、メモリブロック114(0)を転送してもよい(ブロック318)。例えば、アクセス頻度が、メモリブロック114(0)が熱くなっているということを示す場合であって、メモリブロック114(0)が第1のメモリデバイス112の中にまだ常駐していないときは、PE102は、第1のメモリデバイス112へとメモリブロック114(0)を転送してもよい。
【0037】
複数の実施形態のうちのいくつかは、さらに、PE102がアカウンティング間隔の際に追加的な操作を実行するということを提供してもよい。複数の実施形態のうちのいくつかにおいて、PE102は、(例えば、第1のプロセス128を実行することによって)複数のアクセス計数値132(0)-132(C)をリセットしてもよい(ブロック320)。(例えば、
図1のアクセス追跡テーブル142を使用する実施形態等の)複数の実施形態のうちのいくつかにしたがったPE102は、(例えば、第1のプロセス128を実行することによって)メモリブロック114(0)に対応するアクセス追跡インジケータ144(0)をクリアしてもよい(ブロック322)。アクセス追跡インジケータ144(0)をクリアした後に、PE102は、(例えば、第1のプロセス128を実行することによって)アクセス追跡テーブル142の複数のアクセスクリアインジケータ146(0)-146(C)のうちのアクセスクリアインジケータ146(0)等のある1つのアクセスクリアインジケータを設定し、アクセスクリアインジケータ146(0)は、メモリブロック114(0)に対応する(ブロック324)。アクセス追跡インジケータ144(0)がアカウンティング間隔の際に常にクリアされる実施形態においては、アクセスクリアインジケータ146(0)をクリアするためのブロック324の操作を省略してもよいということに留意するべきである。複数の実施形態のうちのいくつかにおける操作は、
図3Cのブロック326において継続されてもよい。
【0038】
ここで、
図3Cを参照すると、複数の実施形態のうちのいくつかは、後続のアカウンティング間隔がトリガされること(a subsequent accounting interval being triggered)(すなわち、アカウンティング間隔が
図3Bのブロック312において言及されているアカウンティング間隔の後に続く時点において生起すること(an accounting interval occurring at a time following the accounting interval))に応答して、さらなる操作を実行してもよい(ブロック326)。
図1のアクセス追跡テーブル142を使用する実施形態等の複数の実施形態のうちのいくつかは、PE102が、(例えば、プロセス128等のプロセスを実行することによって)アクセスクリアインジケータ146(0)をクリアするということを提供してもよい(ブロック328)。アクセス追跡インジケータ144(0)がアカウンティング間隔の際に常にクリアされる実施形態においては、アクセスクリアインジケータ146(0)をクリアするためのブロック324の操作を省略してもよいということに留意するべきである。
【0039】
複数の実施形態のうちのいくつかにしたがったPE102は、
図1のアクセス追跡テーブル142を提供して、PTEアクセスインジケータ(PTE-accessed indicators)126(0)-126(P)のうちの1つ又は複数が(例えば、非限定的な例として、プロセス140を実行することによって)PE102によってクリアされる時間フレームから分離される時間フレームの中で(within a timeframe that is decoupled from a timeframe)、非常に熱くなっているメモリブロックと非常に冷えているメモリブロックとの間のあいまいさをとり除くこと(disambiguation)を提供する。
図4は、このようにして、例えば、そのような実施形態においてプロセス128によって使用されてもよいある1つの例示的な論理フローを図示しているフローチャート400を提供する。複数の操作は、プロセス128が最初に(例えば、
図1のメモリブロック114(0)に対応するアクセス計数値132(0)等の)メモリブロックについてのアクセス計数値がゼロ(0)に等しいか否かを決定することから開始する(ブロック402)。メモリブロックについてのアクセス計数値がゼロ(0)に等しくない場合には、プロセス128は、アクセス計数値132(0)の大きさがどの程度かを示して(with the magnitude of the access count value 132(0) indicating to what extent)、メモリブロック114(0)が適度に熱くなっているか又は適度に冷えているかのいずれかのことを結論付けてもよい(ブロック404)。
【0040】
これに対して、プロセス128が、決定ブロック402において、アクセス計数値132(0)がゼロ(0)に等しいということを決定する場合に、プロセス128は、次に、
図1のアクセス追跡インジケータ144(0)等のメモリブロック114(0)に対応するアクセス追跡インジケータが設定されているか否かを決定する(ブロック406)。アクセス追跡インジケータが設定されていない場合には、プロセス128は、メモリブロック114(0)のアクセス頻度がゼロ(0)であると決定してもよい(すなわち、メモリブロック114(0)は、非常に冷えているメモリブロックである)(ブロック408)。アクセス追跡インジケータ144(0)が、決定ブロック406において、設定されていると決定される場合に、プロセス128は、
図1のアクセスクリアインジケータ146(0)等のメモリブロック114(0)に対応するアクセスクリアインジケータが設定されているか否かを決定する(ブロック410)。アクセスクリアインジケータが設定されていない場合には、メモリブロック114(0)が非常に熱くなっているメモリブロックであるか又は非常に冷えているメモリブロックであるかのいずれかである場合があるため、メモリブロック114(0)のアクセス頻度は不確定である(ブロック412)。反対に、プロセス128が、決定ブロック410において、アクセスクリアインジケータ146(0)が設定されているということを決定する場合には、プロセス128は、メモリブロック114(0)のアクセス頻度がゼロ(0)よりも大きいということを決定してもよい(すなわち、メモリブロック114(0)は、非常に熱くなっているメモリブロックである)(ブロック414)。アクセス追跡インジケータ144(0)がアカウンティング間隔の際に常にクリアされる実施形態においては、決定ブロック410の操作を省略してもよく、操作は、ブロック406からブロック414に直接的に進んでもよいということに留意するべきである。
【0041】
図5は、
図1のプロセッサベースのデバイス100等のある1つの例示的なプロセッサベースのデバイス500のブロック図であり、そのプロセッサベースのデバイス500は、メモリブロックアクセス頻度を追跡する。そのプロセッサベースのデバイス500は、プリント回路基板(PCB)、サーバ、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、パーソナルディジタルアシスタント(PDA)、コンピューティングパッド、モバイルデバイス、又は任意の他のデバイス等の電子ボードカードの中に含まれる1つ又は複数の回路であってよく、例えば、サーバ又はユーザのコンピュータを表してもよい。この例においては、プロセッサベースのデバイス500は、プロセッサ502を含む。プロセッサ502は、マイクロプロセッサ又は中央処理ユニット等の1つ又は複数の汎用処理回路を表し、
図1のPE102に対応してもよい。プロセッサ502は、本明細書において説明されている複数の操作及びステップを実行するための命令の中の処理ロジックを実行するように構成される。この例においては、プロセッサ502は、命令の一時的な高速アクセスメモリ記憶のための命令キャッシュ504及び命令処理回路510を含む。システムバス506を介してシステムメモリ508等のメモリからのフェッチ又はプリフェッチされている命令は、命令キャッシュ504の中に格納される。命令処理回路510は、命令キャッシュ504にフェッチされている命令を処理するとともに、実行のために命令を処理するように構成される。
【0042】
プロセッサ502及びシステムメモリ508は、システムバス506に結合され、プロセッサベースのデバイス500の中に含まれる周辺デバイスを相互結合してもよい。よく知られているように、プロセッサ502は、システムバス506を介して、アドレス情報、制御情報、及びデータ情報を交換することによって、それらの他のデバイスと通信する。例えば、プロセッサ502は、周辺デバイスのある1つの例として、システムメモリ508の中のメモリコントローラ512へとバストランザクション要求を通信してもよい。
図5には図示されていないが、複数のシステムバス506を設けることが可能であり、各々のシステムバスは、異なるファブリックを構成する。この例においては、メモリコントローラ512は、システムメモリ508の中のメモリアレイ514にメモリアクセス要求を提供するように構成される。メモリアレイ514は、データを格納するための記憶ビットセルのアレイから構成される。システムメモリ508は、非限定的な例として、読み取り専用メモリ(ROM)、フラッシュメモリ、同期DRAM(SDRAM)等のダイナミックランダムアクセスメモリ(DRAM)、及び(例えば、フラッシュメモリ、静的なランダムアクセスメモリ(SRAM)等の)静的なメモリであってもよい。
【0043】
システムバス506にその他のデバイスを接続してもよい。
図5に図示されているように、それらのデバイスは、例として、システムメモリ508、1つ又は複数の入力デバイス516、1つ又は複数の出力デバイス518、モデム524、及び1つ又は複数のディスプレイコントローラ520を含んでもよい。1つ又は複数の入力デバイス516は、これらには限定されないが、入力キー、スイッチ、音声プロセッサ等を含む任意のタイプの入力デバイスを含んでもよい。1つ又は複数の出力デバイス518は、これらには限定されないが、オーディオ、ビデオ、その他の視覚的なインジケータ等を含む任意のタイプの出力デバイスを含んでもよい。モデム524は、ネットワーク526との間でのデータの交換を可能とするように構成される任意のデバイスであってもよい。ネットワーク526は、これらには限定されないが、有線ネットワーク又は無線ネットワーク、プライベートネットワーク又はパブリックネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスローカルエリアネットワーク(WLAN)、ワイドエリアネットワーク(WAN)、ブルートゥース(BLUETOOTHTM)(登録商標)ネットワーク、及びインターネットを含む任意のタイプのネットワークであってもよい。モデム524は、任意のタイプの望ましい通信プロトコルをサポートするように構成されてもよい。プロセッサ502は、システムバス506を介して1つ又は複数のディスプレイコントローラ520にアクセスして、1つ又は複数のディスプレイ522に送信される情報を制御するように構成されてもよい。1つ又は複数のディスプレイ522は、これらには限定されないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ等を含む任意のタイプのディスプレイを含んでもよい。
【0044】
図5におけるプロセッサベースのデバイス500は、それらの複数の命令にしたがって望ましい任意のアプリケーションのためにプロセッサ502が実行する命令528のセットを含んでもよい。それらの複数の命令528は、非一時的なコンピュータ読み取り可能な媒体530の例としてのシステムメモリ508、プロセッサ502、及び/又は命令キャッシュ504の中に格納されてもよい。それらの複数の命令528は、また、それらの複数の命令の実行の際に、完全に又は少なくとも部分的に、システムメモリ508及び/又はプロセッサ502の中に存在してもよい。命令528は、さらに、ネットワーク526がコンピュータ読み取り可能な媒体530を含むように、モデム524を介してネットワーク526にわたって送信され又は受信されてもよい。
【0045】
コンピュータ読み取り可能な媒体530は、ある1つの例示的な実施形態において、単一の媒体であるように示されているが、"コンピュータ読み取り可能な媒体"の語は、命令528の1つ又は複数のセットを格納する(例えば、集中型のデータベース又は分散型のデータベース、及び/又は、関連するキャッシュ及びサーバ等の)単一の媒体又は複数の媒体を含むと考えられるべきである。"コンピュータ読み取り可能な媒体"の語は、また、処理デバイスによって実行するために命令のセットを格納し、符号化し、又は搬送することが可能であり、且つ、本明細書において開示されている複数の実施形態の複数の方法論のうちの任意の1つ又は複数を処理デバイスに実行させる任意の媒体を含むと考えられるべきである。したがって、"コンピュータ読み取り可能な媒体"の語は、これらには限定されないが、ソリッドステートメモリ、光媒体、及び磁気媒体を含むと考えられるべきである。
【0046】
本明細書において開示されている実施形態は、さまざまなステップを含む。本明細書において開示されている実施形態のステップは、ハードウェア構成要素によって形成されてもよく、又は、機械実行可能な命令の中に具現化されてもよく、それらのハードウェア構成要素又は機械実行可能な命令は、それらの命令によってプログラミングされている汎用のプロセッサ又は特殊目的のプロセッサにそれらのステップを実行させるのに使用されてもよい。代替的に、それらのステップは、ハードウェアプロセス及びソフトウェアプロセスの組み合わせによって実行されてもよい。
【0047】
本明細書において開示されている複数の実施形態は、コンピュータプログラム製品又はソフトウェアプロセスとして提供されてもよく、そのコンピュータプログラム製品又はソフトウェアプロセスは、命令が格納されている機械読み取り可能な媒体(又は、コンピュータ読み取り可能な媒体)を含んでもよく、それらの命令は、コンピュータシステム(又は他の電子デバイス)をプログラミングして、本明細書において開示されているそれらの複数の実施形態にしたがったプロセスを実行するのに使用されてもよい。機械読み取り可能な媒体は、(例えば、コンピュータ等の)機械によって読み取り可能な形態で情報を格納し又は送信するための任意のメカニズムを含む。例えば、機械読み取り可能な媒体は、(例えば、ROM、ランダムアクセスメモリ("RAM")、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス等の)機械読み取り可能な記憶媒体等を含む。
【0048】
特に明記する場合を除き、及び、前の説明から明らかであるように、説明全体を通じて、"処理"、"コンピューティング"、"決定"、又は"表示"等の語を使用する説明は、コンピュータシステム又は同様の電子コンピューティングデバイスの動作及びプロセスを指し、そのコンピュータシステム又は同様の電子コンピューティングデバイスは、コンピュータシステムのレジスタの中で物理的な(電子的な)量として表されるデータ及びメモリを操作し及び変換して、コンピュータシステムのメモリ又はレジスタ又は他のそのような情報記憶装置、送信デバイス、或いは、表示デバイスの中で同様に物理的な量として表される他のデータとするということが理解される。
【0049】
本明細書において提示されているアルゴリズム及び表示は、本質的に、いずれかの特定のコンピュータ又は他の装置に関連しているわけではない。さまざまなシステムは、本明細書における教示にしたがってプログラムと共に使用されてもよく、又は、より専門化されている装置を構築して、要求される方法ステップを実行するのに便利であることが判明するであろう。さまざまなそれらのシステムのための要求される構造は、上記の説明から明らかになるであろう。加えて、本明細書の中で説明されている複数の実施形態は、いずれかの特定のプログラミング言語に関しても説明されているわけではない。さまざまなプログラミング言語は、本明細書の中で説明されている複数の実施形態の教示を実装するのに使用されてもよいということが理解されるであろう。
【0050】
当業者は、さらに、本明細書の中で開示されている複数の実施形態に関連して説明されているさまざまな例示的な論理ブロック、モジュール、回路、及びアルゴリズムが、電子ハードウェア、メモリ又は他のコンピュータ読み取り可能な媒体の中に格納されているとともに、プロセッサ又は他の処理デバイスが実行する命令、或いは、それらの双方の組み合わせとして実装されてもよいということを理解するであろう。本明細書の中で説明されているプロセッサベースのデバイスの構成要素は、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、又はICチップに中で使用されてもよい。本明細書の中で開示されているメモリは、任意のタイプの且つ任意のサイズのメモリであってもよく、また、望ましい任意のタイプの情報を格納するように構成されてもよい。この相互変更可能性を明確に解説するために、それらの機能に関して、さまざまな例示的な構成要素、ブロック、モジュール、回路、及びステップを上記で一般的に説明してきた。どのようにしてそのような機能を実装するかは、特定の用途、設計上の選択、及び/又は全体的なシステムに課される設計上の制約によって決まる。当業者は、各々の特定の用途に対してさまざまな方法でそれらの説明されている機能を実装してもよいが、そのような実装の決定は、それらの実施形態の範囲から逸脱するものと解釈されるべきではない。
【0051】
本明細書の中で開示されている複数の実施形態に関連して説明されているさまざまな例示的な論理ブロック、モジュール、及び回路は、プロセッサ、ディジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、又は他のプログラム可能な論理デバイス、個別のゲート又はトランジスタ論理、個別のハードウェア構成要素、又は本明細書の中で説明されている機能を実行するように設計されるそれらの任意の組み合わせによって実装され又は実行されてもよい。さらに、コントローラは、プロセッサであってもよい。プロセッサは、マイクロプロセッサであってもよいが、代替的に、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、又は状態マシンであってもよい。プロセッサは、また、(例えば、DSP及びマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、DSPコアと関連する1つ又は複数のマイクロプロセッサ、或いは、任意の他のそのような構成等の)コンピューティングデバイスの組み合わせとして実装されてもよい。
【0052】
本明細書の中で開示されている複数の実施形態は、ハードウェア及びハードウェアの中に格納されている命令によって実現されてもよく、例えば、RAM、フラッシュメモリ、ROM、電気的にプログラム可能なROM(EPROM)、電気的に消去可能な且つプログラム可能なROM(EEPROM)、レジスタ、ハードディスク、取り外し可能なディスク、CD-ROM、又は本発明の技術分野において知られている任意の他の形態のコンピュータ読み取り可能な媒体の中に存在してもよい。ある1つの例示的な記憶媒体は、プロセッサに結合され、それによって、そのプロセッサは、その記憶媒体から情報を読み取り、また、その記憶媒体に情報を書き込むことが可能である。代替的に、その記憶媒体は、そのプロセッサと一体化されていてもよい。そのプロセッサ及びその記憶媒体は、ASICの中に存在していてもよい。ASICは、遠隔局に存在していてもよい。代替的に、そのプロセッサ及びその記憶媒体は、遠隔局、基地局、又はサーバの中に個別の構成要素として存在していてもよい。
【0053】
また、本明細書における複数の例示的な実施形態のうちのいずれかの中で説明されている操作ステップは、例及び説明を提供するために説明されているということに留意するべきである。説明されている操作は、図示されている順序以外の数多くの異なる順序で実行されてもよい。さらに、単一の操作ステップの中で説明されている操作は、実際には、複数の異なるステップで実行されてもよい。追加的に、例示的な実施形態の中で説明されている1つ又は複数の操作ステップを組み合わせてもよい。当業者は、また、情報及び信号が、さまざまな技術及び技法のいずれかを使用して表現されてもよいということを理解するであろう。例えば、上記の説明全体を通じて参照されてもよいデータ、命令、コマンド、情報、信号、ビット、シンボル、及びチップは、電圧、電流、電磁波、磁場、又は粒子、光学場又は粒子、或いは、それらの任意の組み合わせによって表現されてもよい。
【0054】
別段の明示的な記載がない限り、本明細書に記載されるいずれの方法も、その方法のステップがある特定の順序で実行されることを要求すると解釈されることを全く意図してはいない。したがって、方法の請求項が、その方法のステップがしたがうべき順序を実際には記載していない場合、又は、その方法のステップがある特定の順序に限定されるべきであることが請求項又は発明の詳細な説明の中に特に記載されていない場合には、いずれかの特定の順序が推定されるべきであるということは全く意図されていない。
【0055】
本発明の趣旨又は範囲から離れることなく、さまざまな修正及び変形を行うことが可能であるということが、当業者にとって明らかとなるであろう。当業者は、本発明の趣旨及び内容を組み込んである複数の開示されている実施形態の修正、組み合わせ、サブコンビネーション、及び変形を思いつくことが可能であるので、本発明は、添付の請求項及びその請求項に記載されている発明の等価な発明の範囲の中のすべてを含むと考えられるべきである。
【国際調査報告】