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

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

▶ テキサス インスツルメンツ インコーポレイテッドの特許一覧

特開2023-179708命令キャッシュにおけるプリフェッチの強制終了及び再開
<>
  • 特開-命令キャッシュにおけるプリフェッチの強制終了及び再開 図1
  • 特開-命令キャッシュにおけるプリフェッチの強制終了及び再開 図2
  • 特開-命令キャッシュにおけるプリフェッチの強制終了及び再開 図3
  • 特開-命令キャッシュにおけるプリフェッチの強制終了及び再開 図4
  • 特開-命令キャッシュにおけるプリフェッチの強制終了及び再開 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023179708
(43)【公開日】2023-12-19
(54)【発明の名称】命令キャッシュにおけるプリフェッチの強制終了及び再開
(51)【国際特許分類】
   G06F 12/0862 20160101AFI20231212BHJP
   G06F 12/0897 20160101ALI20231212BHJP
   G06F 12/10 20160101ALI20231212BHJP
【FI】
G06F12/0862 100
G06F12/0897 100
G06F12/10
【審査請求】有
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2023178295
(22)【出願日】2023-10-16
(62)【分割の表示】P 2021507837の分割
【原出願日】2019-08-14
(31)【優先権主張番号】16/102,931
(32)【優先日】2018-08-14
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】507107291
【氏名又は名称】テキサス インスツルメンツ インコーポレイテッド
(74)【代理人】
【識別番号】230129078
【弁護士】
【氏名又は名称】佐藤 仁
(72)【発明者】
【氏名】ビピン プラサド ヘレマガルール ラマプラサッド
(72)【発明者】
【氏名】デヴィッド マシュー トンプソン
(72)【発明者】
【氏名】アブヒジート アショク チャチャド
(72)【発明者】
【氏名】ハング オング
(57)【要約】      (修正有)
【課題】メモリキャッシュのプリフェッチを制御する装置及びシステムオンチップ(SoC)を提供する。
【解決手段】プロセッサ100は、CPUコア102、第1、第2のメモリキャッシュ130、155及びメモリコントローラサブシステム101を含む。メモリコントローラサブシステムは、第1のメモリキャッシュ130における仮想アドレスのヒット又はミス状況を推論的に判定し、仮想アドレスを物理アドレスに推論的に変換する。メモリコントローラサブシステムは、ヒット又はミス状況と物理アドレスとに関連して、ステータスを有効状態に構成する。仮想アドレスに関連するプログラム命令が不要であるとのCPUコアからの第1のインジケーションの受領に応答して、ステータスを無効状態に再構成し、仮想アドレスに関連するプログラム命令が必要とされるとのCPUコアからの第2のインジケーションの受領に応答して、ステータスを有効状態に再構成する。
【選択図】図1
【特許請求の範囲】
【請求項1】
装置であって、
中央処理装置(CPU)コア、
前記CPUコアによる実行のための命令を格納する第1のメモリキャッシュ、
前記CPUコアによる実行のための命令を格納するための第2のキャッシュであって、前記第1のメモリキャッシュにおけるミスに応答してアクセス可能な前記第2のキャッシュ、及び
前記CPUコア及び前記第1及び第2のメモリキャッシュに結合されるメモリコントローラサブシステム、
を含み、
前記メモリコントローラサブシステムが、
前記CPUコアから受け取った第1の仮想アドレスの前記第1のメモリキャッシュにおけるミス又はヒットを判別し、
前記第1の仮想アドレスに基づいて第2の仮想アドレスを生成し、
前記第2の仮想アドレスの前記第1のメモリキャッシュにおけるミス又はヒットを判定し、
前記第2の仮想アドレスを物理アドレスに変換し、
前記物理アドレスと前記第2の仮想アドレスのミス又はヒット判定とに関連するステータスビットを有効状態に設定し、
前記CPUコアからゼロのカウント値の受領に応答して、前記ステータスビットを無効状態に変更し、
前記CPUコアからの再開インジケーションの受領に応答して、前記ステータスビットを有効状態に戻す、
ように構成される、装置。
【請求項2】
請求項1に記載の装置であって、
前記メモリコントローラサブシステムが、前記第2の仮想アドレスから変換された前記物理アドレスを用いて、第2のメモリキャッシュからプログラム命令をリトリーブするように構成される、装置。
【請求項3】
請求項1に記載の装置であって、
前記カウント値の受領が、前記第2の仮想アドレスを前記物理アドレスに変換した後に行われる、装置。
【請求項4】
請求項1に記載の装置であって、
前記CPUコアからの前記カウント値の受領が、前記CPUコアから前記再開インジケーションを受け取る前に行われる、装置。
【請求項5】
請求項1に記載の装置であって、
前記物理アドレス及び前記ステータスビットが格納されるレジスタをさらに備える、装置。
【請求項6】
請求項5に記載の装置であって、
前記第1のメモリキャッシュにおける前記第2の仮想アドレスの前記ヒット又はミスのインジケーションが、前記物理アドレス及び前記ステータスビットと共に前記レジスタに格納される、装置。
【請求項7】
請求項1に記載の装置であって、
前記第1のメモリキャッシュが、データではなくプログラム命令を格納するためのものである、装置。
【請求項8】
装置であって、
中央処理装置(CPU)コア、
前記CPUコアによる実行のための命令を格納するための第1のメモリキャッシュ、
前記CPUコアによる実行のための命令を格納するための第2のキャッシュであって、前記第1のメモリキャッシュにおけるミスに応答して命令をリトリーブするための前記第2のメモリキャッシュ、
前記CPUコア及び第1及び第2のメモリキャッシュに結合されるメモリコントローラサブシステム、
を含み、
前記メモリコントローラサブシステムが、
前記第1のメモリキャッシュにおける第1の仮想アドレスのヒット又はミス状況を推論的に判定し、
前記第1の仮想アドレスを物理アドレスに推論的に変換し、
前記ヒット又はミス状況と前記物理アドレスとに関連してステータスを有効状態に設定し、
前記第1の仮想アドレスに関連するプログラム命令が必要とされないとの前記CPUコアからの第1のインジケーションの受領に応答して、前記ステータスを無効状態に再設定し、
前記第1の仮想アドレスに関連するプログラム命令が必要とされるとの前記CPUコアからの第2のインジケーションの受領に応答して、前記ステータスを有効状態に再設定する、
ように構成される、装置。
【請求項9】
請求項8に記載の装置であって、
前記メモリコントローラサブシステムが、前記CPUコアからメモリコントローラサブシステムに送信される第2の仮想アドレスから前記第1の仮想アドレスを推論的に生成するように構成される、装置。
【請求項10】
請求項8に記載の装置であって、
前記第1の仮想アドレスに関連するプログラム命令が必要とされないとの前記CPUコアからの前記第1のインジケーションがカウント値を含み、前記カウント値がゼロの値を有する、装置。
【請求項11】
請求項8に記載の装置であって、
前記第1の仮想アドレスに関連するプログラム命令が必要とされるとの前記CPUコアからの前記第2のインジケーションが、前記第1の仮想アドレスで始まるプログラム命令のリトリーブを継続するように前記メモリコントローラサブシステムに命令する信号を含む、装置。
【請求項12】
請求項11に記載の装置であって、
前記第2のインジケーションを受け取ると、前記メモリコントローラサブシステムが、前記第1のメモリキャッシュにおける前記第1の仮想アドレスの前記ヒット又はミス状況を再び判定することなく、前記第1の仮想アドレスで始まるプログラム命令をリトリーブし続けるように構成される、装置。
【請求項13】
請求項12に記載の装置であって、
前記第2のインジケーションを受け取ると、前記メモリコントローラサブシステムが、前記第1の仮想アドレスを前記物理アドレスに再び変換することもなく、前記第1の仮想アドレスで始まるプログラム命令をリトリーブし続けるように構成される、装置。
【請求項14】
請求項8に記載の装置であって、
前記CPUコアが、前記第1の仮想アドレスを前記メモリコントローラサブシステムに提供することもなく、前記第2のインジケーションを提供するように構成される、装置。
【請求項15】
請求項8に記載の装置であって、
前記第1のインジケーションの受領が、前記ヒット又はミス状況の推論的判定と、前記第1の仮想アドレスの前記物理アドレスへの推論的変換との後に成される、装置。
【請求項16】
システムオンチップ(SoC)であって、
入力/出力デバイス、及び
前記入力/出力デバイスに結合されるプロセッサ、
を含み、
前記プロセッサが、
中央処理装置(CPU)コアと、前記CPUコアによる実行のための命令を格納するための第1のメモリキャッシュと、第2のメモリキャッシュと、前記CPUコア及び前記第1及び第2のメモリキャッシュに結合されるメモリコントローラサブシステムとを含み、前記メモリコントローラサブシステムが、
前記第1のメモリキャッシュにおける第1の仮想アドレスのヒット又はミス状況を推論的に判定し、
前記第1の仮想アドレスを物理アドレスに推論的に変換し、
前記ヒット又はミス状況と前記物理アドレスとに関連して、ステータスを有効状態に設定し、
前記第1の仮想アドレスに関連するプログラム命令が必要とされないとの前記CPUコアからの第1のインジケーションの受領に応答して、前記ステータスを無効状態に再設定し、
前記第1の仮想アドレスに関連するプログラム命令が必要とされるとの前記CPUコアからの第2のインジケーションの受領に応答して、前記ステータスを有効状態に再設定する、
ように構成される、SoC。
【請求項17】
請求項16に記載のSoCであって、
前記メモリコントローラサブシステムが、前記CPUコアから前記メモリコントローラサブシステムに送信される第2の仮想アドレスから前記第1の仮想アドレスを推論的に生成するように構成される、SoC。
【請求項18】
請求項16に記載のSoCであって、
前記第1の仮想アドレスに関連するプログラム命令が必要とされないとの前記CPUコアからの前記第1のインジケーションがカウント値を含み、前記カウント値がゼロの値を有する、SoC。
【請求項19】
請求項16に記載のSoCであって、
前記CPUコアが、前記第1の仮想アドレスを前記メモリコントローラサブシステムに提供することもなく、前記第2のインジケーションを提供するように構成される、装置。
【請求項20】
請求項16に記載のSoCであって、
前記第2のインジケーションを受け取ると、前記メモリコントローラサブシステムが、前記第1のメモリキャッシュにおける前記第1の仮想アドレスの前記ヒット又はミス状況を再び判定することもなく、かつ、前記第1の仮想アドレスを前記物理アドレスに再び変換することもなく、前記第1の仮想アドレスで始まるプログラム命令をリトリーブし続けるように構成される、SoC。
【発明の詳細な説明】
【技術分野】
【0001】
メモリシステムには、マルチレベルキャッシュシステムを含むものがある。特定のメモリのアドレスに対する要求メモリコントローラによってプロセッサコアから受信すると、メモリコントローラは、そのメモリアドレスに関連するデータが第1レベルのキャッシュ(L1)に存在するかどうかを判断する。データがL1キャッシュに存在する場合、データはL1キャッシュから返される。メモリアドレスに関連するデータがL1キャッシュに存在しない場合、メモリコントローラは、第2のレベルキャッシュ(L2)にアクセスする。L2は、L1キャッシュよりも大きいため、より多くのデータを保持し得る。データがL2キャッシュに存在する場合、データはL2キャッシュからプロセッサコアに返され、同じデータが再び要求された場合においてコピーもL1キャッシュに保存される。付加的なメモリレベルの階層も可能である。
【発明の概要】
【0002】
一例において、システムがプロセッサを含み、プロセッサは、CPUコアと、第1及び第2のメモリキャッシュと、メモリコントローラサブシステムとを含む。メモリコントローラサブシステムは、第1のメモリキャッシュにおける仮想アドレスのヒット又はミス状況を推論的に判定し、仮想アドレスを物理アドレスに推論的に変換する。ヒット又はミス状況と物理アドレスとに関連して、メモリコントローラサブシステムは、ステータスを有効状態に構成する。仮想アドレスに関連するプログラム命令が必要とされないとのCPUコアからの第1のインジケーションの受領に応答して、メモリコントローラサブシステムは、ステータスを無効状態に再構成し、第1の仮想アドレスに関連するプログラム命令が必要とされるとのCPUコアからの第2のインジケーションの受領に応答して、メモリコントローラサブシステムは、TAGRAM又はアドレス変換論理への付加的なアクセスなしに、ステータスを有効状態に再構成する。
【図面の簡単な説明】
【0003】
図1】一例に従ったプロセッサを図示する。
【0004】
図2】一例に従った、L1メモリキャッシュアクセスのフルL2キャッシュラインアクセスへの昇格を図示する。
【0005】
図3】一例に従った性能改善を図示するフローチャートである。
【0006】
図4】一例に従った別の性能改善を図示するための別のフローチャートである。
【0007】
図5図1のプロセッサを含むシステムを示す。
【発明を実施するための形態】
【0008】
図1は、階層キャッシュサブシステムを含むプロセッサ100の一例を示す。この例におけるプロセッサ100は、中央処理装置(CPU)コア102、メモリコントローラサブシステム101、L1データキャッシュ(L1D)115、L1プログラムキャッシュ(L1P)130、及びL2メモリキャッシュ155を含む。この例において、メモリコントローラサブシステム101は、データメモリコントローラ(DMC)110、プログラムメモリコントローラ(PMC)120、及び、統合メモリコントローラ(UMC)150を含む。この例では、L1キャッシュレベルにおいて、データ及びプログラム命令が別個のキャッシュに分割される。CPUコア102によって実行される命令は、L1P 130に格納され、その後、実行のためにCPUコア102に提供される。一方、データはL1D 115に格納される。CPUコア102は、L1D 115からのデータの読み出し及びL1D 115へのデータの書き込みをし得、L1P 130への読み出しアクセスがある(L1P 130への書き込みアクセスはなし)。L2メモリキャッシュ155は、データ及びプログラム命令の両方を格納することができる。
【0009】
L1D 115、L1P 130、及びL2メモリキャッシュ155のサイズは実装によって異なり得るが、一例において、L2メモリキャッシュ155のサイズは、L1D 115又はL1P 130のいずれかのサイズより大きい。例えば、L1D 115のサイズが32キロバイトであり、L1Pのサイズも32キロバイトである一方、L2メモリキャッシュのサイズは64キロバイト~4MBとし得る。また、L1D 115のキャッシュラインサイズは、L2メモリキャッシュ155のキャッシュラインサイズ(例えば128)と同じであり、L1P 130のキャッシュラインサイズは一層小さい(例えば64バイト)。
【0010】
CPUコア102によりデータが必要とされると、DMC110は、CPUコア102からターゲットデータに対するアクセス要求を受け取る。アクセス要求は、CPUコア102からのアドレス(例えば、仮想アドレス)を含み得る。DMC110は、ターゲットデータがL1D 115に存在するかどうかを判定する。データがL1D 115に存在する場合、データはCPUコア102に返される。しかしながら、CPUコア102によって要求されたデータがL1D 115内に存在しない場合、DMC110は、UMC150にアクセス要求を提供する。このアクセス要求は、CPUコア102によって提供される仮想アドレス(VA)に基づいてDMC110によって生成される物理アドレスを含み得る。UMC150は、DMC110によって提供された物理アドレスがL2メモリキャッシュ155内に存在するかどうかを判定する。データがL2メモリキャッシュ155に存在する場合、データはL2メモリキャッシュ155からCPUコア102に返され、コピーがL1D 115に格納される。キャッシュサブシステムの付加的な階層が存在する可能性もある。例えば、L3メモリキャッシュ又はシステムメモリがアクセスされるように利用可能であり得る。そのため、CPUコア102によって要求されたデータがL1D 115又はL2メモリキャッシュ155のいずれにも存在しない場合、データは、付加的なキャッシュレベルにおいてアクセスされ得る。
【0011】
プログラム命令に関して、実行する付加的な命令をCPUコア102が必要とするとき、CPUコア102は、VA103をPMC120に提供する。PMCは、ワークフローを開始して、実行のためにプログラム命令のプリフェッチパケット105をCPU102に戻すことにより、CPUコア102によって提供されたVA103に応答する。プリフェッチサイズのパケットは実装によって異なるが、一例において、プリフェッチパケットのサイズは、L1P 130のキャッシュラインのサイズと等しい。L1Pキャッシュラインサイズが例えば64バイトである場合、CPUコア102に戻されるプリフェッチパケットが、64バイトのプログラム命令も含み得る。
【0012】
CPUコア102はまた、プリフェッチカウント104をPMC120に提供する。幾つかの実装において、CPUコア102がVA103を供給した後、プリフェッチカウント104がPMC120に供給される。プリフェッチカウント104は、VA103で始まるプリフェッチユニットに続くプログラム命令のプリフェッチユニットの数を示す。例えば、CPUコア102は、200hのVAを提供し得る。このVAは、仮想アドレス200hで始まる64バイトのプリフェッチユニットに関連付けられている。CPUコア102が、仮想アドレス200hに関連するプリフェッチユニットに続いて、メモリコントローラサブシステム101が実行のための付加的な命令を送信することを望む場合、CPUコア102は、0より大きい値を有するプリフェッチカウントを提示する。0のプリフェッチカウントは、CPUコア102がこれ以上プリフェッチユニットを必要としないことを意味する。例えば、6のプリフェッチカウントは、CPUコア102が、付加的な6プリフェッチユニット分の命令が、取得され、実行のためにCPUコア102に送り返されることを要求する。返されるプリフェッチユニットは、プリフェッチパケット105として図1に示されている。
【0013】
引き続き図1の例を参照すると、PMC120は、TAGRAM121、アドレス変換器122、及びレジスタ123を含む。TAGRAM121は、その内容(プログラム命令)がL1P 130にキャッシュされた仮想アドレスのリストを含む。アドレス変換器122は、仮想アドレスを物理アドレス(PA)に変換する。一例において、アドレス変換器122は、仮想アドレスから直に物理アドレスを生成する。例えば、VAの下位12ビットは、PAの最下位12ビットとして用いられ得、PAの最上位ビット(下位12ビットより上)は、プログラムの実行の前にメインメモリにおいて構成される一セットの表に基づいて生成される。この例では、L2メモリキャッシュ155は、仮想アドレスではなく、物理アドレスを用いてアドレス指定可能である。レジスタ123は、TAGRAM121ルックアップからのヒット/ミスインジケータ124と、アドレス変換器122によって生成された物理アドレス125と、対応するヒット/ミスインジケータ124及び物理アドレス125が有効であるか無効であるかを示す有効ビット126(本明細書ではステータスビットとも呼ばれる)とを格納する。
【0014】
CPU102からVA103を受け取ると、PMC120は、TAGRAM121ルックアップを実施して、L1P 130がその仮想アドレスに関連するプログラム命令を含むかどうかを判定する。TAGRAMルックアップの結果は、ヒット又はミスインジケータ124である。ヒットは、VAがL1P 130に存在することを意味し、ミスは、VAがL1P 130に存在しないことを意味する。L1P 130ヒットの場合、ターゲットプリフェッチユニットは、PMC120によってL1P 130からリトリーブされ、プリフェッチパケット105としてCPUコア102へ返される。
【0015】
L1P 130ミスの場合、(VAに基づいて生成される)PAは、142で示されるように、PMC120によってUMC150に提供される。バイトカウント140も、PMC120からUMC150に提供される。バイトカウントは、PA142で始まる(存在する場合)リトリーブされるべきL2メモリキャッシュ155のバイト数を示す。一例において、バイトカウント140は、L2メモリキャッシュ155から所望されるバイトの数を符号化するマルチビット信号である。一例において、L2メモリキャッシュのラインサイズは128バイトであり、各ラインは上半分(64バイト)と下半分(64バイト)に分割される。そのため、バイトカウント140は、数64(所与のL2メモリキャッシュラインから上半分又は下半分の64バイトのみが必要とされる場合)又は128(L2メモリキャッシュライン全体が必要とされる場合)を符号化し得る。別の例において、バイトカウントは、一つの状態(例えば、1)がL2メモリキャッシュライン全体を暗黙的に符号化し、別の状態(例えば、0)がL2メモリキャッシュラインの半分を暗黙的に符号化する、単一のビット信号とし得る。
【0016】
UMC150はTAGRAM152も含む。UMC150によってPMC120から受け取られたPA142は、ターゲットPAがL2メモリキャッシュ155におけるヒットであるかミスであるかを判定するためにTAGRAM152へのルックアップを実施するために用いられる。L2メモリキャッシュ155内にヒットがある場合、バイトカウント140に応じてキャッシュラインの2分の1又はキャッシュライン全体であり得るターゲット情報が、CPUコア102に返され、コピーがL1P 130に格納され、そこから、次回、CPUコア102が、同じプログラム命令をフェッチしよう試みる同じプログラム命令がCPU102に提供される。
【0017】
図1の例において、CPUコア102は、VA103及びプリフェッチカウント104をPMC120に提供する。PMC120は、上記のように、L1P 130又はL2メモリキャッシュ155からプリフェッチパケットをリトリーブするためのワークフローを開始する。プリフェッチカウント104と元のVA103を用いて、PMC120は、付加的な仮想アドレスを計算し、それらの計算されたVAに対応するプリフェッチパケットをL1P 130又はL2メモリキャッシュ155からリトリーブし始める。例えば、プリフェッチカウントが2であり、CPUコア102からのVA103が200hである場合、CPUコア102がそうしたそれぞれのVAをPMC120に提供するのではなく、PMC120は次の二つのVAを240h及び280hとして計算する。
【0018】
図2は、最適化によりプロセッサ100の改善された性能がもたらされる具体的な例を図示する。前述したように、L2メモリキャッシュ155のライン幅はL1Pのライン幅よりも大きい。一例において、図2に示すように、L1Pの幅は64バイトであり、L2メモリキャッシュ155のライン幅は128バイトである。L2メモリキャッシュ155は、上半分220及び下半分225として構成される。UMC150は、L2メモリキャッシュ155から128バイトキャッシュライン全体を、又は、L2メモリキャッシュの半分(上半分220又は下半分225)のみを読み出し得る。
【0019】
所与のVAが、L2メモリキャッシュ155に存在する場合に、特定のPAに変換し得、この特定のPAは、L2メモリキャッシュの所与のラインの下半分225にマップするか又は上半分220にマップする。VA及びPAを表すために用いられるアドレス指定方式に基づいて、PMC120は、所与のVAが下半分225にマップするか又は上半分220にマップするかを判定し得る。例えば、VA内の特定のビット(例えば、ビット6)を用いて、対応するPAがL2メモリキャッシュのラインの上半分にマップするか又は下半分にマップするかを判定し得る。例えば、0であるビット6は下半分を示し得、1であるビット6は上半分を示し得る。
【0020】
参照符号202は、CPUコア102によってPMC120に提供される200hのVAと、対応するプリフェッチカウント6の例を示す。参照符号210は、上述したキャッシュパイプラインを介して実行されるVAのリストが、200h(CPUコア102から受け取られる)と、次の6つの連続する仮想アドレス240h、280h、2c0h、300h、340h、及び380h(PMC120によって計算される)を含むことを例示している。
【0021】
200hから380hまでの各アドレスは上述のように処理される。VAのうちの任意のもの又は全てが、L1P 130におけるミスであり得る。PMC120は、L1P 130においてミスした二つの連続するVAを単一のL2キャッシュラインアクセス試行にまとめることができる。従って、200hと240hが両方ともL1P 130においてミスしており、200hに対応する物理アドレスが、L2メモリキャッシュ155の特定のキャッシュラインの下半分225に対応しており、240hに対応する物理アドレスがL2メモリキャッシュの同じキャッシュラインの上半分225に対応している場合、PMC120はL2メモリキャッシュからのキャッシュライン全体を特定するバイトカウント140と共に、単一のPA142をUMC150に発行し得る。従って、L1P 130における二つの連続したVAミスが、一つのフルラインL2メモリキャッシュルックアップに昇格され得る。
【0022】
CPUコア102によって開始された一連のVAの最後のVA(例えば、VAシリーズ210のVA380h)が、L2メモリキャッシュ155のキャッシュラインの下半分の225にマップする場合、記載される例に従って、たとえ下半分の225しか必要とされなかった場合でも、L2メモリキャッシュ155のキャッシュライン全体がリトリーブされる。同じ反応は、プリフェッチカウントが0の状態でCPUがVA103をPMC120に提供した場合にも生じ、これは、CPU102が単一のプリフェッチユニットのみを必要としたことを意味する。キャッシュライン全体をリトリーブし、キャッシュライン全体をL1P 130に提供するために費やされる付加的なオーバーヘッド、時間、又は電力消費は、あるとしても非常に少ない。プログラム命令はしばしば線形順で実行されるので、上半分220におけるプログラム命令が、いずれにせよ下半分225における命令の実行に続いて実行される可能性は概して高くなる。そのため、次の命令セットは非常に少ないコストで受け取られ、そのような命令はいずれにしても必要とされる可能性が高い。
【0023】
図2は、VA380hがL2メモリキャッシュ155におけるキャッシュライン260の下半分225にマップすることを、矢印213を介して図示する。PMC120はこのマッピングを、例えば、VA、又は、アドレス変換器122による変換に続くその対応する物理アドレスのビットの一つ又は複数の検査を介して判定する。PMC120は、キャッシュライン全体を特定するバイトカウント104と共にVA380hに関連するPAを提示することにより、UMC150によってルックアッププロセスをフルキャッシュラインまで昇格させる。その後、(L2メモリキャッシュ155に存在する場合)全128バイトキャッシュラインがリトリーブされ、265で示すように、二つの別個の64バイトキャッシュラインにおいてL1P 130に書き込まれる。
【0024】
しかしながら、一連のVAにおける最後のVA(又は、0のプリフェッチカウントに対して一つのVAしかない場合)が、L2メモリキャッシュ155のキャッシュラインの上半分220にマップする場合は、PMC120は、UMC150に、そのTAGRAM152内をルックアップし、キャッシュラインの上半分のみをCPUコア102及びL1P 130に戻すように要求する。次のPAは、L2メモリキャッシュ155の次のキャッシュラインの下半分225にあり得、次のキャッシュラインを推測的にリトリーブするために付加的な時間、オーバーヘッド、及び電力が消費され得、CPUコア102がこれらの命令を実行する必要があることは確実ではない。
【0025】
図3は、上述の方法のためのフローチャート300の例を示す。オペレーションは、示された順で又は別の順で成され得る。また、オペレーションは連続的に成され得、又は二つ以上のオペレーションを同時に行うこともできる。
【0026】
302において、この方法は、メモリコントローラサブシステム101によって、プログラム命令のN個のプリフェッチユニットに対するアクセス要求を受け取ることを含む。一実装において、このオペレーションはCPUコア102によって行われ、PMC120にアドレス及びカウント値が提供される。アドレスは、仮想アドレス又は物理アドレスであり得、カウント値は、CPUコア102によって必要とされる付加的なプリフェッチユニットの数を示し得る。
【0027】
304において、インデックス値Iが値1に初期化される。このインデックス値は、一連の連続した仮想アドレスにおける最後の仮想アドレスがいつPMC120によって処理されるべきかを判定するために用いられる。306において、この方法は、プリフェッチユニットIがL1P 130へのヒットであるかミスであるかを判定する。この判定は、幾つかの例において、仮想アドレスがPMCのTAGRAM121内に存在するかどうかを判定することによって成される。判定306からは、ヒット又はミスという二つの結果が可能である。
【0028】
仮想アドレスがL1P 130へのヒットである場合、308において、所望のプリフェッチユニットを含むL1P 130の対応するラインが、L1P 130から返され、プリフェッチパケット105としてCPUコア102に提供される。次に、310において、インデックスが増分される(I=I+1)。IがまだN+1に達していない場合(判定オペレーション312で判定される)、プリフェッチユニットのうちの最後のプリフェッチユニットのVAは、ヒット/ミス判定についてまだ評価されておらず、L1P 130におけるヒット又はミスについて次のI番目のプリフェッチユニットを評価するために306に戻るよう制御ループする。IがN+1に達すると、全てのN個のプリフェッチユニットが評価されており、対応するプログラム命令がCPUコア102に提供されており、プロセスは停止する。
【0029】
所与のI番目のプリフェッチユニットについて、306でPMC120がL1P 130内にミスがあると判定した場合、314において、IがNの値に達したかどうかについて判定が行われる。IがNに等しくない(一連のVAにおける最後のVAが達していないことを示す)場合、316において、この方法は、メモリコントローラサブシステム101が、L2メモリキャッシュ155から(そこに存在する場合、又は、存在しない場合は、第3のレベルキャッシュ又はシステムメモリから)プログラム命令を得ることを含む。次に、インデックス値Iは、318で増分され、判定306に戻るよう制御ループされる。
【0030】
314でIがNに達した(一連のVAの最後のVAが到達したことを示す)場合、この方法は、320において、I番目のプリフェッチユニットのVAがL2メモリキャッシュ155のキャッシュラインの下半分にマップするか又は上半分にマップするかの判定を含む。この判定がどのようにして成され得るかの例については、上述したとおりである。I番目のプリフェッチユニットのVAが上半分にマップする場合、この方法は、322において、L2メモリキャッシュのキャッシュラインの上半分のみからプログラム命令を得ることを含む。
【0031】
しかしながら、I番目のプリフェッチユニットのVAが下半分にマップする場合、この方法は、324において、L2メモリキャッシュアクセスをフルキャッシュラインアクセスに昇格させ、326において、L2メモリキャッシュのフルキャッシュラインからプログラム命令を得ることを含む。
【0032】
図1を再び参照すると、上述したように、CPUコア102からVA103のPMC120への提示に続いて、CPUコア102は、PMC120にプリフェッチカウント104を提供することもできる。プリフェッチカウントは0であり得、これは、CPUコア102がVA103で始まるプリフェッチユニットに含まれるもの以外の命令をもはや必要としないことを意味する。しかしながら、VA103の受領と後続のプリフェッチカウントとの間に、PMC120は以下に説明するように何らかの作業を行っている。
【0033】
VA103を受け取ると、PMC120は、TAGRAM121内のルックアップを実施して、(CPUコア102によって提供された)第1のVAがL1Pにおけるヒット又はミスであるかを判定し、さらに、アドレス変換器122を用いてVAからPAへの変換を実施する。PMC120はまた、プリフェッチカウント104を受け取る前に、第2のVA(CPUコアによって提供されるVAに続く次の連続VA)を計算する。PMC120は、TAGRAM121に推論的にアクセスし、アドレス変換器122を用いて第2のVAのヒット/ミス・ステータスを判定し、レジスタ123にヒット/ミスインジケーション124及びPA125を読み込む(populate)。レジスタ123における有効ビット126は有効状態に設定され、それにより、上述したような第2のVAのさらなる処理が可能となる(例えば、存在する場合はL1P 130から、又は必要に応じてL2メモリキャッシュ155から、対応するキャッシュラインをリトリーブする)。
【0034】
しかしながら、第2のVAのさらなる処理が発生する前に、CPUコア102がプリフェッチカウント0をPMC120に送ることが可能であり、これは、CPUコアが元のVA103で始まるプリフェッチユニット以外にプリフェッチユニットを必要としないことを意味する。この時点で、PMC120には、0のプリフェッチカウントが提供され、従って、第2のVAに関連するプリフェッチユニットは必要とされない。しかしながら、PMCはまた、第2のVAのヒット/ミス・ステータスを既に判定しており、対応するPAを生成している。ヒット/ミスインジケータ124とPA125の両方は、0プリフェッチカウントがPMC120によって受け取られる時間までにレジスタ123に格納されている。PMC120は有効ビット126のステータスを無効状態を示すように変更し、それにより第2のVAのさらなる処理を排除する。この状況(無効状態に設定された有効ビット)は「強制終了(kill)」と呼ばれ、そのため、PMC120は第2のVAの処理を強制終了する。
【0035】
しかしながら、場合によっては、CPUコア102は、前の強制終了にもかかわらず、第2のVAに関連するプリフェッチユニットが実際には、上述したようにL1P 130又はL2メモリキャッシュ155からリトリーブされるべきであることを判定し得る。例えば、CPUコア102が次に要求された命令アドレスを知らせるためのさらなる内部予想情報を有していない場合、CPUコア102は、最後に要求されたアドレスから線形に開始するプリフェッチを継続すべきであることをPMC120に知らせる。この状況は、例えば、CPUコア102における分岐予測論理の予測ミスにより起こり得る。こうしてCPUコア102は、再開信号106をPMC120に発行する。PMC120は有効ビット126を有効状態に戻すことによって再開信号に応答し、それによって、上述したように、メモリサブシステムパイプラインを介する第2のVAの継続的な処理を可能にする。このように、CPU102は、第2のVAをPMC120に直に提示する必要はない。その代わりに、PMC120は、例えば、レジスタ123に第2のVAを保持し、そのヒット/ミスインジケータ124も保持し、それによって、第2のVAのヒット/ミス・ステータスを再び判定し、第2のVAをPAに変換するために費やされる電力消費及び時間を回避する。
【0036】
図4は、メモリアドレスルックアップを開始し、強制終了し、再開するためのフローチャート400の一例を示す。オペレーションは、示された順で又は別の順で実施され得る。また、オペレーションは連続的に行うことができ、又は二つ以上のオペレーションを同時に行うことができる。
【0037】
402において、この方法は、メモリコントローラサブシステム101によって、第1のVAにおけるアクセス要求を受け取ることを含む。一実装において、このオペレーションは、第1のVAをPMC120に提供するCPUコア102によって実施される。この方法は、404において、第1のVAがL1P30におけるヒットであるかミスであるかを判定することを含む。一例において、このオペレーションは、第1のVAのヒット/ミス状況を判定するためにPMCのTAGRAM121にアクセスすることによって成される。第1のVAは、406において、例えば、アドレス変換器122を用いることによって第1のPAに変換される。
【0038】
408において、この方法は、第1のVAに基づいて第2のVAを計算することを含む。第2のVAは、第1のVAに関連するバイトに続く64バイトであるバイトのアドレスを生成するために、或る値で第1のVAを増分することによって計算され得る。この方法は、410において、第2のVAがL1P30におけるヒット又はミスであるかを判定することを含む。一例において、このオペレーションは、第2のVAのヒット/ミス状況を判定するためにPMCのTAGRAM121にアクセスすることによって成される。第2のVAは、412において、上述のようにアドレス変換器122を用いることによって第2のPAに変換される。414において、この方法は、ヒット/ミスインジケータ124及び第2のPAでレジスタ(例えば、レジスタ123)を更新することを含む。また、有効ビット126は有効状態となるように構成される。
【0039】
その後、PMC120は、416でプリフェッチカウントを受け取る。次に、418においてプリフェッチカウントがゼロより大きい場合、420において、L1P 130又はL2メモリキャッシュ155(又は付加的なレベル)からのプログラム命令が上述のようにリトリーブされる。しかしながら、プリフェッチカウントがゼロである場合、422において、有効ビット126は無効状態に変更される。そのため、PMC120に0のプリフェッチカウントを提供したにもかかわらず、CPUコア102は、PMC120に再開インジケーションを提供し得る(424)。426において、PMC120は有効ビット126を有効状態に戻し、次いでメモリコントローラサブシステム101は、第2のPAに関連するプログラム命令を、適宜、L1P、L2メモリキャッシュ等から得る(428)。
【0040】
図5は、本明細書で説明されるプロセッサ100の例示的な使用を示す。この例では、プロセッサ100は、プロセッサ100と一つ又はそれ以上の周辺機器ポート又はデバイスとを含む、システムオンチップ(SoC)500の一部である。この例では、周辺機器は、汎用非同期トランスミッタ(UART)502、USB(ユニバーサルシリアルバス)ポート504、及びイーサネットコントローラ506を含む。SoC500は、例えば、プロセッサ100によって実行されるプログラム命令によって実装される様々な機能のうちの任意の機能を実施し得る。複数のプロセッサ100が設けられてもよく、所与のプロセッサ100内に、複数のCPUコア102が含まれ得る。
【0041】
本記載では「結合する」という用語は、間接的又は直接的な有線又は無線接続のいずれかを意味する。そのため、第1のデバイスが第2のデバイスに結合する場合、その接続は、直接的接続を介するもの、又は、他のデバイス及び接続を介した間接的接続を介するものであり得る。また、本記載では、「~に基づく」は、「少なくとも部分的に~に基づく」ことを意味する。従って、XがYに基づく場合、Xは、Y及び任意の数の他の要因の関数とし得る。
【0042】
本発明の特許請求の範囲内で、説明した例示の実施例に改変が成され得、他の実施例が可能である。
図1
図2
図3
図4
図5
【手続補正書】
【提出日】2023-11-09
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
システムであって、
第1のメモリ
前記第1のメモリに結合される第1のメモリコントローラであって
第1のアドレスを受信し、
前記第1のアドレスに基づいてアドレスを判し、
前記第2のアドレスのミス又はヒット条件を判定し、
前記第2のアドレスに関連するステータス第1の値に設定し、
プリフェッチカウント値し、
前記プリフェッチカウント値がゼロであるかどうか判定し、
前記プリフェッチカウント値がゼロであることの判定に応答して、前記第2のアドレスに関連するステータス第2の値変更
ように構成される、前記第1のメモリコントローラと、
を含む、システム
【請求項2】
請求項1に記載のシステムであって、
レジスタを含み、
前記第1のメモリコントローラが、前記ステータス値を前記レジスタの第1のフィールドに格納する、ように更に構成される、システム
【請求項3】
請求項に記載のシステムであって、
前記第1のフィールドが、前記レジスタ単一ビットに対応する、システム
【請求項4】
請求項に記載のシステムであって、
前記第1のメモリコントローラが、
前記ミス又はヒット条件を前記レジスタの第2のフィールドに格納し、
前記第2のアドレス変換されたアドレスを前記レジスタのフィールドに格納する
ように更に構成される、システム
【請求項5】
請求項に記載のシステムであって、
前記第2のアドレス仮想アドレスであり、前記変換されたアドレスが前記仮想アドレスの物理アドレスである、システム
【請求項6】
請求項5に記載のシステムであって、
第2のメモリと、
前記第2のメモリに結合される第2のメモリコントローラであって、前記第2のメモリにおける前記変換されたアドレスのミス又はヒット条件を判定するように構成される、前記第2のメモリコントローラと、
を更に含み、
前記第1のメモリコントローラが、前記第2のアドレスのヒット又はミス条件が前記第1のメモリにおける第2のアドレスのミスを示すことの判定に応答して、前記変換されたアドレス前記第1のメモリコントローラ提供する、ように更に構成される、システム
【請求項7】
請求項に記載のシステムであって、
前記第1のメモリがレベル1(L1)キャッシュであり前記第2のメモリがレベル2(L2)キャッシュである、システム
【請求項8】
請求項7に記載のシステムであって、
前記L1キャッシュが第1のライン幅を有し、前記L2キャッシュが前記第1のライン幅よりも大きい第2のライン幅を有する、システム。
【請求項9】
請求項1に記載のシステムであって、
前記第1のメモリコントローラが、前記ステータス値を第1の値に設定することの後に前記プリフェッチカウント値を受信する、ように更に構成される、システム。
【請求項10】
請求項1に記載のシステムであって、
前記第1のメモリコントローラが、
前記第2のアドレスを回復するための指示を表す信号を受信することと、
前記信号を受信することに応答して、前記ステータス値を前記第1の値に戻して変更することと、
を更に含む、システム。
【請求項11】
請求項10に記載のシステムであって、
分岐予測ユニットを更に含み、
前記指示を表す信号が前記分岐予測ユニットによる予測ミスに応答して生成される、システム。
【請求項12】
請求項1に記載のシステムであって、
前記第2のアドレスが前記第1のアドレスに関して近接する、システム。
【請求項13】
方法であって、
第1のアドレスを受信することと、
前記第1のアドレスに基づいて第2のアドレスを判定することと、
前記第2のアドレスに関連するステータス値を第1の値に設定することと、
プリフェッチカウント値を受信することと、
前記プリフェッチカウント値がゼロであることを判定することに応答して、前記ステータス値を第2の値に変更することと、
を含む、方法。
【請求項14】
請求項13に記載の方法であって、
前記第1及び第2のアドレスが仮想アドレスである、方法。
【請求項15】
請求項13に記載の方法であって、
前記プリフェッチカウント値が、前記ステータス値を第1の値に設定することの後に受信される、方法。
【請求項16】
請求項13に記載の方法であって、
前記第2のアドレスが前記第1のアドレスに関して近接する、方法。
【請求項17】
方法であって、
メモリに関連するメモリコントローラによって、前記メモリへのアクセスに対応する第1のアドレスを受信することと、
前記第1のアドレスを受信することに応答して、
前記メモリコントローラによって、第2のアドレスのヒット又はミス条件を判定し、
前記メモリコントローラによって、前記第2のアドレスに関連するステータス指示を有効状態を表す第1の値に設定することと、
前記ステータス指示を第1の値に設定することの後に、
前記メモリコントローラによって、プリフェッチカウント値を受信し、
前記プリフェッチカウント値がゼロに等しいことを判定することに基づいて前記ステータス指示を無効状態を表す第2の値に変更することと、
を含む、方法。
【請求項18】
請求項17に記載の方法であって、
前記第2のアドレスが前記第1のアドレスに基づいて生成される、方法。
【請求項19】
請求項17に記載の方法であって、
前記ステータス指示を第2の値に変更することの後に、
前記第2のアドレスを回復するための指示を表す信号を受信し、
前記信号を受信することに応答して、前記第2のアドレスに関連するステータス指示を前記有効状態を表す第1の値に戻して変更すること、
を更に含む、方法。
【請求項20】
請求項19に記載の方法であって、
前記ステータス指示を第1の値に変更することの後に、前記第2のアドレスに関連するプログラム命令を読み出すことを更に含む、方法。